summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/tv.s119
-rw-r--r--include/vars.h1
-rw-r--r--src/tv.c161
3 files changed, 162 insertions, 119 deletions
diff --git a/asm/tv.s b/asm/tv.s
index 408494562..5af0fb284 100644
--- a/asm/tv.s
+++ b/asm/tv.s
@@ -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
diff --git a/src/tv.c b/src/tv.c
index 2b31cf4d7..3d01b3ddb 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -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)