summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-05-30 10:01:24 -0400
committerscnorton <scnorton@biociphers.org>2017-05-30 10:01:24 -0400
commitf2e369d6835a4405644f1a1c9936a06d7cb52775 (patch)
treea46d0063f1525e48ce720d47a1064a0749ce7cd4
parent2cd382d3c65c19dbd9812ce977d6cfcc2aef8dff (diff)
GabbyAndTyBeforeInterview
-rwxr-xr-xasm/tv.s133
-rw-r--r--include/global.h34
-rwxr-xr-xsrc/tv.c58
3 files changed, 72 insertions, 153 deletions
diff --git a/asm/tv.s b/asm/tv.s
index 55b4f898a..808754ba3 100755
--- a/asm/tv.s
+++ b/asm/tv.s
@@ -7,139 +7,6 @@
.text
- thumb_func_start GabbyAndTyBeforeInterview
-GabbyAndTyBeforeInterview: @ 80BDB14
- push {r4,r5,lr}
- ldr r2, _080BDB68 @ =gSaveBlock1
- ldr r3, _080BDB6C @ =gUnknown_030042E0
- ldrh r1, [r3, 0x6]
- ldr r4, _080BDB70 @ =0x00002b10
- adds r0, r2, r4
- strh r1, [r0]
- ldrh r1, [r3, 0x26]
- adds r4, 0x2
- adds r0, r2, r4
- strh r1, [r0]
- ldrh r1, [r3, 0x22]
- adds r4, 0x2
- adds r0, r2, r4
- strh r1, [r0]
- ldr r0, _080BDB74 @ =0x00002b19
- adds r4, r2, r0
- ldrb r1, [r4]
- adds r0, r1, 0
- adds r5, r2, 0
- cmp r0, 0xFF
- beq _080BDB44
- adds r0, r1, 0x1
- strb r0, [r4]
-_080BDB44:
- ldrb r0, [r3, 0x5]
- lsls r0, 31
- ldr r1, _080BDB78 @ =0x00002b1a
- adds r4, r5, r1
- lsrs r0, 31
- ldrb r1, [r4]
- movs r2, 0x2
- negs r2, r2
- ands r2, r1
- orrs r2, r0
- strb r2, [r4]
- ldrb r0, [r3]
- cmp r0, 0
- beq _080BDB7C
- movs r0, 0x2
- orrs r2, r0
- b _080BDB82
- .align 2, 0
-_080BDB68: .4byte gSaveBlock1
-_080BDB6C: .4byte gUnknown_030042E0
-_080BDB70: .4byte 0x00002b10
-_080BDB74: .4byte 0x00002b19
-_080BDB78: .4byte 0x00002b1a
-_080BDB7C:
- movs r0, 0x3
- negs r0, r0
- ands r2, r0
-_080BDB82:
- strb r2, [r4]
- ldrb r0, [r3, 0x3]
- cmp r0, 0
- beq _080BDB9C
- ldr r4, _080BDB98 @ =0x00002b1a
- adds r0, r5, r4
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _080BDBAA
- .align 2, 0
-_080BDB98: .4byte 0x00002b1a
-_080BDB9C:
- ldr r0, _080BDBDC @ =0x00002b1a
- adds r2, r5, r0
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080BDBAA:
- ldrb r1, [r3, 0x5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080BDBE0
- movs r1, 0
- adds r0, r3, 0
- adds r0, 0x36
- ldrb r0, [r0]
- cmp r0, 0
- bne _080BDBE0
-_080BDBC0:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xA
- bhi _080BDBEC
- adds r0, r3, 0
- adds r0, 0x36
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0
- beq _080BDBC0
- ldr r4, _080BDBDC @ =0x00002b1a
- adds r0, r5, r4
- b _080BDBE4
- .align 2, 0
-_080BDBDC: .4byte 0x00002b1a
-_080BDBE0:
- ldr r1, _080BDC08 @ =0x00002b1a
- adds r0, r5, r1
-_080BDBE4:
- ldrb r1, [r0]
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0]
-_080BDBEC:
- bl TakeTVShowInSearchOfTrainersOffTheAir
- ldr r0, _080BDC0C @ =gSaveBlock1
- ldr r4, _080BDC10 @ =0x00002b14
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0
- bne _080BDC02
- movs r0, 0x1
- bl FlagSet
-_080BDC02:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BDC08: .4byte 0x00002b1a
-_080BDC0C: .4byte gSaveBlock1
-_080BDC10: .4byte 0x00002b14
- thumb_func_end GabbyAndTyBeforeInterview
-
thumb_func_start sub_80BDC14
sub_80BDC14: @ 80BDC14
push {r4-r6,lr}
diff --git a/include/global.h b/include/global.h
index 8db05ba9f..def6708c3 100644
--- a/include/global.h
+++ b/include/global.h
@@ -94,7 +94,7 @@ struct UCoords16
struct SecretBaseRecord
{
- /*ID?*/ /*0x1A08*/ u8 sbr_field_0;
+ /*ID?*/ /*0x1A08*/ u8 sbr_field_0;
/*0x1A09*/ u8 sbr_field_1_0:4;
/*0x1A09*/ u8 gender:1;
/*0x1A09*/ u8 sbr_field_1_5:1;
@@ -445,18 +445,18 @@ struct UnknownSaveStruct2ABC {
};
struct GabbyAndTyData {
- /*2b10*/ u16 mon1;
- /*2b12*/ u16 mon2;
- /*2b14*/ u16 move1;
- /*2b16*/ u16 move2;
- /*2b18*/ u8 mapnum;
- /*2b19*/ u8 val9;
- /*2b1a*/ u8 valA_0:1;
- /*2b1a*/ u8 valA_1:1;
- /*2b1a*/ u8 valA_2:1;
- /*2b1a*/ u8 valA_3:1;
- /*2b1a*/ u8 valA_4:4;
- /*2b1b*/ u8 valB;
+ /*2b10*/ u16 mon1;
+ /*2b12*/ u16 mon2;
+ /*2b14*/ u16 move1;
+ /*2b16*/ u16 move2;
+ /*2b18*/ u8 mapnum;
+ /*2b19*/ u8 val9; // counter?
+ /*2b1a*/ u8 valA_0:1;
+ /*2b1a*/ u8 valA_1:1;
+ /*2b1a*/ u8 valA_2:1;
+ /*2b1a*/ u8 valA_3:1;
+ /*2b1a*/ u8 valA_4:4;
+ /*2b1b*/ u8 valB;
};
struct RecordMixing_UnknownStruct {
@@ -607,11 +607,11 @@ struct SaveBlock2 /* 0x02024EA4 */
/*0x10*/ u8 playTimeMinutes;
/*0x11*/ u8 playTimeSeconds;
/*0x12*/ u8 playTimeVBlanks;
- /*OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A]*/ /*0x13*/ u8 optionsButtonMode;
- /*OPTIONS_TEXT_SPEED_[SLOW/MID/FAST]*/ /*0x14*/ u16 optionsTextSpeed:3;
+ /*OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A]*/ /*0x13*/ u8 optionsButtonMode;
+ /*OPTIONS_TEXT_SPEED_[SLOW/MID/FAST]*/ /*0x14*/ u16 optionsTextSpeed:3;
u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes
- /*OPTIONS_SOUND_[MONO/STEREO]*/ u16 optionsSound:1;
- /*OPTIONS_BATTLE_STYLE_[SHIFT/SET]*/ u16 optionsBattleStyle:1;
+ /*OPTIONS_SOUND_[MONO/STEREO]*/ u16 optionsSound:1;
+ /*OPTIONS_BATTLE_STYLE_[SHIFT/SET]*/ u16 optionsBattleStyle:1;
u16 optionsBattleSceneOff:1; // whether battle animations are disabled
u16 regionMapZoom:1; // whether the map is zoomed in
/*0x18*/ struct Pokedex pokedex;
diff --git a/src/tv.c b/src/tv.c
index 521bbcb74..33fad5da2 100755
--- a/src/tv.c
+++ b/src/tv.c
@@ -29,15 +29,20 @@ struct UnkTvStruct
};
struct UnkBattleStruct {
- u16 var00;
- u8 var02[3];
+ u8 var00;
+ u8 var01;
+ u8 var02;
+ u8 var03;
+ u8 var04;
u8 var05_0:1;
u8 var05_1:1;
u8 var05_pad2:6;
u16 var06;
u8 pad08[24];
u16 var20;
- u8 pad22[6];
+ u16 var22;
+ u16 var24;
+ u16 var26;
u16 var28;
u8 var2a[11];
u8 var35;
@@ -443,6 +448,53 @@ void ResetGabbyAndTy(void)
}
#endif
+void TakeTVShowInSearchOfTrainersOffTheAir(void);
+
+void GabbyAndTyBeforeInterview(void)
+{
+ u8 i;
+ gSaveBlock1.gabbyAndTyData.mon1 = gUnknown_030042E0.var06;
+ gSaveBlock1.gabbyAndTyData.mon2 = gUnknown_030042E0.var26;
+ gSaveBlock1.gabbyAndTyData.move1 = gUnknown_030042E0.var22;
+ if (gSaveBlock1.gabbyAndTyData.val9 != 0xff)
+ {
+ gSaveBlock1.gabbyAndTyData.val9 ++;
+ }
+ gSaveBlock1.gabbyAndTyData.valA_0 = gUnknown_030042E0.var05_0;
+ if (gUnknown_030042E0.var00)
+ {
+ gSaveBlock1.gabbyAndTyData.valA_1 = 1;
+ } else
+ {
+ gSaveBlock1.gabbyAndTyData.valA_1 = 0;
+ }
+ if (gUnknown_030042E0.var03)
+ {
+ gSaveBlock1.gabbyAndTyData.valA_2 = 1;
+ } else
+ {
+ gSaveBlock1.gabbyAndTyData.valA_2 = 0;
+ }
+ if (!gUnknown_030042E0.var05_1)
+ {
+ for (i=0; i < 11; i++)
+ {
+ if (gUnknown_030042E0.var36[i] != 0)
+ {
+ gSaveBlock1.gabbyAndTyData.valA_3 = 1;
+ break;
+ }
+ }
+ } else
+ {
+ gSaveBlock1.gabbyAndTyData.valA_3 = 1;
+ }
+ TakeTVShowInSearchOfTrainersOffTheAir();
+ if (gSaveBlock1.gabbyAndTyData.move1 == 0)
+ {
+ FlagSet(1);
+ }
+}
asm(".section .text_a");
s8 sub_80BF74C(TVShow tvShow[]);