diff options
-rw-r--r-- | asm/tv.s | 59 | ||||
-rw-r--r-- | include/global.h | 12 | ||||
-rw-r--r-- | src/tv.c | 38 |
3 files changed, 47 insertions, 62 deletions
@@ -1613,65 +1613,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - thumb_func_start sub_80BE9D4 -sub_80BE9D4: @ 80BE9D4 - push {r4,r5,lr} - ldr r5, _080BEA3C @ =gSaveBlock1 + 0x2738 - adds r0, r5, 0 - bl sub_80BF74C - ldr r4, _080BEA40 @ =gUnknown_03005D38 - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BEA36 - movs r0, 0x18 - bl sub_80BF1B4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BEA36 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - adds r4, r5 - movs r1, 0 - movs r0, 0x18 - strb r0, [r4] - strb r1, [r4, 0x1] - ldr r1, _080BEA44 @ =gUnknown_020387E2 - ldrh r0, [r1] - strb r0, [r4, 0x2] - ldrh r0, [r1] - lsrs r0, 8 - strb r0, [r4, 0x3] - ldr r0, _080BEA48 @ =gUnknown_020387E0 - ldrh r0, [r0] - strh r0, [r4, 0x4] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, _080BEA4C @ =gSaveBlock2 - bl StringCopy - adds r0, r4, 0 - bl sub_80BE138 - movs r0, GAME_LANGUAGE - strb r0, [r4, 0x6] -_080BEA36: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BEA3C: .4byte gSaveBlock1 + 0x2738 -_080BEA40: .4byte gUnknown_03005D38 -_080BEA44: .4byte gUnknown_020387E2 -_080BEA48: .4byte gUnknown_020387E0 -_080BEA4C: .4byte gSaveBlock2 - thumb_func_end sub_80BE9D4 - thumb_func_start sub_80BEA50 sub_80BEA50: @ 80BEA50 ldr r1, _080BEA58 @ =gUnknown_020387E0 diff --git a/include/global.h b/include/global.h index f08c76bac..4790c4ed2 100644 --- a/include/global.h +++ b/include/global.h @@ -261,6 +261,17 @@ struct TVShowMassOutbreak { u8 pad19[11]; }; +struct TVShowUnknownTVShowType { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 var02; + /*0x03*/ u8 var03; + /*0x04*/ u16 var04; + /*0x06*/ u8 language; + u8 pad07[12]; + /*0x13*/ u8 playerName[8]; +}; + typedef union TVShow { struct TVShowCommon common; struct TVShowFanClubLetter fanclubLetter; @@ -268,6 +279,7 @@ typedef union TVShow { struct TVShowFanclubOpinions fanclubOpinions; struct TVShowNameRaterShow nameRaterShow; struct TVShowMassOutbreak massOutbreak; + struct TVShowUnknownTVShowType unknownTvShowType; } TVShow; struct MailStruct @@ -51,6 +51,7 @@ extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5]; extern void sub_80BEBF4(void); +extern u16 gUnknown_020387E0; extern u16 gUnknown_020387E2; void ClearTVShowData(void) @@ -67,6 +68,8 @@ void ClearTVShowData(void) sub_80BEBF4(); } +extern void sub_80BE138(TVShow *); + asm(".section .text_a"); void sub_80BE478(void) @@ -319,7 +322,7 @@ void UpdateMassOutbreakTimeLeft(u16 arg0) gSaveBlock1.outbreakUnk5 -= arg0; } -void sub_80BE9D4(u8); +void sub_80BE9D4(); void sub_80BE97C(bool8 flag) { @@ -327,7 +330,7 @@ void sub_80BE97C(bool8 flag) if (flag != 0) { var0 = gUnknown_020387E2 >> 8; if (var0 > 4) - sub_80BE9D4(var0); + sub_80BE9D4(); gUnknown_020387E2 &= 0xFF; var1 = gUnknown_020387E2 & 0xFF; if (var1 != 0xFF) @@ -335,7 +338,7 @@ void sub_80BE97C(bool8 flag) } else { var0 = gUnknown_020387E2 & 0xFF; if (var0 > 4) - sub_80BE9D4(var0); + sub_80BE9D4(); gUnknown_020387E2 &= 0xFF00; var1 = gUnknown_020387E2 >> 8; if (var1 != 0xFF) @@ -343,6 +346,35 @@ void sub_80BE97C(bool8 flag) } } +s8 sub_80BF74C(TVShow tvShows[]); +u8 sub_80BF1B4(s8); + +void sub_80BE9D4() +{ + TVShow *show; + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(24) != 1) { + show = &(gSaveBlock1.tvShows[gUnknown_03005D38.var0]); +#ifdef NONMATCHING + show->common.var00 = 24; + show->common.var01 = 0; +#else + asm(".syntax unified\n\ + movs r1, 0\n\ + movs r0, 24\n\ + strb r0, [r4]\n\ + strb r1, [r4, 1]\n\ + .syntax divided\n"); +#endif + show->unknownTvShowType.var02 = gUnknown_020387E2 & 0xFF; + show->unknownTvShowType.var03 = gUnknown_020387E2 >> 8; + show->unknownTvShowType.var04 = gUnknown_020387E0; + StringCopy(show->unknownTvShowType.playerName, gSaveBlock2.playerName); + sub_80BE138(show); + show->unknownTvShowType.language = GAME_LANGUAGE; + } +} + asm(".section .text_b"); u8 sub_80BF4F4(u8 arg0) |