diff options
-rw-r--r-- | asm/tv.s | 119 | ||||
-rw-r--r-- | include/vars.h | 1 | ||||
-rw-r--r-- | src/tv.c | 161 |
3 files changed, 162 insertions, 119 deletions
@@ -3121,125 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start GetMomOrDadStringForTVMessage -GetMomOrDadStringForTVMessage: @ 80BFC10 - push {r4,lr} - ldr r1, _080BFC40 @ =gSaveBlock1 - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0x1 - bne _080BFC6C - ldr r0, _080BFC44 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _080BFC54 - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0 - bne _080BFC6C - ldr r0, _080BFC48 @ =gStringVar1 - ldr r1, _080BFC4C @ =gOtherText_Mom - bl StringCopy - ldr r0, _080BFC50 @ =0x00004003 - movs r1, 0x1 - bl VarSet - b _080BFC6C - .align 2, 0 -_080BFC40: .4byte gSaveBlock1 -_080BFC44: .4byte gSaveBlock2 -_080BFC48: .4byte gStringVar1 -_080BFC4C: .4byte gOtherText_Mom -_080BFC50: .4byte 0x00004003 -_080BFC54: - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0x2 - bne _080BFC6C - ldr r0, _080BFCB4 @ =gStringVar1 - ldr r1, _080BFCB8 @ =gOtherText_Mom - bl StringCopy - ldr r0, _080BFCBC @ =0x00004003 - movs r1, 0x1 - bl VarSet -_080BFC6C: - ldr r4, _080BFCBC @ =0x00004003 - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _080BFCAA - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - beq _080BFCC0 - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bls _080BFCD4 - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080BFCC0 -_080BFCAA: - ldr r0, _080BFCB4 @ =gStringVar1 - ldr r1, _080BFCB8 @ =gOtherText_Mom - bl StringCopy - b _080BFD10 - .align 2, 0 -_080BFCB4: .4byte gStringVar1 -_080BFCB8: .4byte gOtherText_Mom -_080BFCBC: .4byte 0x00004003 -_080BFCC0: - ldr r0, _080BFCCC @ =gStringVar1 - ldr r1, _080BFCD0 @ =gOtherText_Dad - bl StringCopy - b _080BFD10 - .align 2, 0 -_080BFCCC: .4byte gStringVar1 -_080BFCD0: .4byte gOtherText_Dad -_080BFCD4: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080BFD00 - ldr r0, _080BFCF8 @ =gStringVar1 - ldr r1, _080BFCFC @ =gOtherText_Mom - bl StringCopy - adds r0, r4, 0 - movs r1, 0x1 - bl VarSet - b _080BFD10 - .align 2, 0 -_080BFCF8: .4byte gStringVar1 -_080BFCFC: .4byte gOtherText_Mom -_080BFD00: - ldr r0, _080BFD18 @ =gStringVar1 - ldr r1, _080BFD1C @ =gOtherText_Dad - bl StringCopy - adds r0, r4, 0 - movs r1, 0x2 - bl VarSet -_080BFD10: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BFD18: .4byte gStringVar1 -_080BFD1C: .4byte gOtherText_Dad - thumb_func_end GetMomOrDadStringForTVMessage - thumb_func_start sub_80BFD20 sub_80BFD20: @ 80BFD20 push {lr} diff --git a/include/vars.h b/include/vars.h index 9a90a9468..0322e38d3 100644 --- a/include/vars.h +++ b/include/vars.h @@ -1,6 +1,7 @@ #ifndef GUARD_VARS_H #define GUARD_VARS_H +#define VAR_0x4003 0x4003 #define VAR_0x401F 0x401F #define VAR_RECYCLE_GOODS 0x4020 #define VAR_REPEL_STEP_COUNT 0x4021 @@ -11,6 +11,7 @@ #include "naming_screen.h" #include "rom4.h" #include "map_constants.h" +#include "strings.h" enum { @@ -610,6 +611,166 @@ u8 CheckForBigMovieOrEmergencyNewsOnTV(void) return 1; } +#ifdef NONMATCHING +void GetMomOrDadStringForTVMessage(void) +{ + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) { + if (gSaveBlock2.playerGender == MALE) { + if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) { + StringCopy(gStringVar1, gOtherText_Mom); + VarSet(VAR_0x4003, 1); + } + } else { + if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) { + StringCopy(gStringVar1, gOtherText_Mom); + VarSet(VAR_0x4003, 1); + } + } + } + if (VarGet(VAR_0x4003) == 1) { + StringCopy(gStringVar1, gOtherText_Mom); + } else if (VarGet(VAR_0x4003) == 2) { + StringCopy(gStringVar1, gOtherText_Dad); + } else if (VarGet(VAR_0x4003) > 2) { + if ((u16)(VarGet(VAR_0x4003) & 1) == 0) { + StringCopy(gStringVar1, gOtherText_Mom); + } else { + StringCopy(gStringVar1, gOtherText_Dad); + } + } else { + if ((u16)(Random() & 1) != 0) { + StringCopy(gStringVar1, gOtherText_Mom); + VarSet(VAR_0x4003, 1); + } else { + StringCopy(gStringVar1, gOtherText_Dad); + VarSet(VAR_0x4003, 2); + } + } +} +#else +__attribute__((naked)) +void GetMomOrDadStringForTVMessage(void) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + ldr r1, _080BFC40 @ =gSaveBlock1\n\ + movs r0, 0x4\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0x1\n\ + bne _080BFC6C\n\ + ldr r0, _080BFC44 @ =gSaveBlock2\n\ + ldrb r0, [r0, 0x8]\n\ + cmp r0, 0\n\ + bne _080BFC54\n\ + movs r0, 0x5\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0\n\ + bne _080BFC6C\n\ + ldr r0, _080BFC48 @ =gStringVar1\n\ + ldr r1, _080BFC4C @ =gOtherText_Mom\n\ + bl StringCopy\n\ + ldr r0, _080BFC50 @ =0x00004003\n\ + movs r1, 0x1\n\ + bl VarSet\n\ + b _080BFC6C\n\ + .align 2, 0\n\ +_080BFC40: .4byte gSaveBlock1\n\ +_080BFC44: .4byte gSaveBlock2\n\ +_080BFC48: .4byte gStringVar1\n\ +_080BFC4C: .4byte gOtherText_Mom\n\ +_080BFC50: .4byte 0x00004003\n\ +_080BFC54:\n\ + movs r0, 0x5\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0x2\n\ + bne _080BFC6C\n\ + ldr r0, _080BFCB4 @ =gStringVar1\n\ + ldr r1, _080BFCB8 @ =gOtherText_Mom\n\ + bl StringCopy\n\ + ldr r0, _080BFCBC @ =0x00004003\n\ + movs r1, 0x1\n\ + bl VarSet\n\ +_080BFC6C:\n\ + ldr r4, _080BFCBC @ =0x00004003\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + beq _080BFCAA\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x2\n\ + beq _080BFCC0\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x2\n\ + bls _080BFCD4\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080BFCC0\n\ +_080BFCAA:\n\ + ldr r0, _080BFCB4 @ =gStringVar1\n\ + ldr r1, _080BFCB8 @ =gOtherText_Mom\n\ + bl StringCopy\n\ + b _080BFD10\n\ + .align 2, 0\n\ +_080BFCB4: .4byte gStringVar1\n\ +_080BFCB8: .4byte gOtherText_Mom\n\ +_080BFCBC: .4byte 0x00004003\n\ +_080BFCC0:\n\ + ldr r0, _080BFCCC @ =gStringVar1\n\ + ldr r1, _080BFCD0 @ =gOtherText_Dad\n\ + bl StringCopy\n\ + b _080BFD10\n\ + .align 2, 0\n\ +_080BFCCC: .4byte gStringVar1\n\ +_080BFCD0: .4byte gOtherText_Dad\n\ +_080BFCD4:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BFD00\n\ + ldr r0, _080BFCF8 @ =gStringVar1\n\ + ldr r1, _080BFCFC @ =gOtherText_Mom\n\ + bl StringCopy\n\ + adds r0, r4, 0\n\ + movs r1, 0x1\n\ + bl VarSet\n\ + b _080BFD10\n\ + .align 2, 0\n\ +_080BFCF8: .4byte gStringVar1\n\ +_080BFCFC: .4byte gOtherText_Mom\n\ +_080BFD00:\n\ + ldr r0, _080BFD18 @ =gStringVar1\n\ + ldr r1, _080BFD1C @ =gOtherText_Dad\n\ + bl StringCopy\n\ + adds r0, r4, 0\n\ + movs r1, 0x2\n\ + bl VarSet\n\ +_080BFD10:\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080BFD18: .4byte gStringVar1\n\ +_080BFD1C: .4byte gOtherText_Dad\n\ +.syntax divided\n"); +} +#endif + asm(".section .text_c"); void DoTVShowPokemonNewsMassOutbreak(void) |