diff options
-rw-r--r-- | asm/tv.s | 156 | ||||
-rw-r--r-- | include/global.h | 2 | ||||
-rw-r--r-- | include/tv.h | 1 | ||||
-rw-r--r-- | src/tv.c | 83 |
4 files changed, 79 insertions, 163 deletions
@@ -2583,162 +2583,6 @@ _080BF248: _080BF258: .4byte gUnknown_02038724 thumb_func_end sub_80BF20C - thumb_func_start sub_80BF25C -sub_80BF25C: @ 80BF25C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0 - ldr r3, _080BF28C @ =gSaveBlock1 - ldr r0, _080BF290 @ =0x00002738 - adds r4, r3, r0 -_080BF26A: - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r3 - ldr r6, _080BF290 @ =0x00002738 - adds r0, r2, r6 - ldrb r0, [r0] - cmp r0, r5 - bne _080BF2AE - ldr r3, _080BF294 @ =0x00002739 - adds r0, r2, r3 - ldrb r2, [r0] - cmp r2, 0x1 - bne _080BF29C - ldr r0, _080BF298 @ =gScriptResult - strh r2, [r0] - b _080BF2BC - .align 2, 0 -_080BF28C: .4byte gSaveBlock1 -_080BF290: .4byte 0x00002738 -_080BF294: .4byte 0x00002739 -_080BF298: .4byte gScriptResult -_080BF29C: - adds r0, r4, 0 - bl sub_80BF55C - adds r0, r4, 0 - bl sub_80BF588 - bl sub_80BF6D8 - b _080BF2BC -_080BF2AE: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080BF26A - bl sub_80BF6D8 -_080BF2BC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80BF25C - - thumb_func_start sub_80BF2C4 -sub_80BF2C4: @ 80BF2C4 - push {lr} - ldr r1, _080BF2E0 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080BF2E4 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - subs r0, 0x1 - cmp r0, 0x6 - bhi _080BF330 - lsls r0, 2 - ldr r1, _080BF2E8 @ =_080BF2EC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BF2E0: .4byte gScriptResult -_080BF2E4: .4byte gSpecialVar_0x8005 -_080BF2E8: .4byte _080BF2EC - .align 2, 0 -_080BF2EC: - .4byte _080BF308 - .4byte _080BF30E - .4byte _080BF314 - .4byte _080BF31A - .4byte _080BF320 - .4byte _080BF326 - .4byte _080BF32C -_080BF308: - bl sub_80BF334 - b _080BF330 -_080BF30E: - bl sub_80BF3A4 - b _080BF330 -_080BF314: - bl sub_80BF3DC - b _080BF330 -_080BF31A: - bl sub_80BF46C - b _080BF330 -_080BF320: - bl sub_80BF478 - b _080BF330 -_080BF326: - bl sub_80BF484 - b _080BF330 -_080BF32C: - bl sub_80BF4BC -_080BF330: - pop {r0} - bx r0 - thumb_func_end sub_80BF2C4 - - thumb_func_start sub_80BF334 -sub_80BF334: @ 80BF334 - push {r4,lr} - movs r0, 0x1 - bl sub_80BF25C - ldr r0, _080BF38C @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080BF384 - ldr r4, _080BF390 @ =gStringVar1 - bl GetLeadMonIndex - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _080BF394 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - movs r2, 0 - bl GetMonData - movs r1, 0xB - muls r1, r0 - ldr r0, _080BF398 @ =gSpeciesNames - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r0, _080BF39C @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BF3A0 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - adds r0, 0x4 - movs r1, 0x6 - bl sub_80EB6FC -_080BF384: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BF38C: .4byte gScriptResult -_080BF390: .4byte gStringVar1 -_080BF394: .4byte gPlayerParty -_080BF398: .4byte gSpeciesNames -_080BF39C: .4byte gUnknown_03005D38 -_080BF3A0: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80BF334 - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/include/global.h b/include/global.h index 5ea13f7cc..4a82972b5 100644 --- a/include/global.h +++ b/include/global.h @@ -201,7 +201,7 @@ struct TVShowFanClubLetter { /*0x00*/ u8 var00; /*0x01*/ u8 var01; /*0x02*/ u16 species; - u8 pad04[12]; + /*0x04*/ u16 pad04[6]; /*0x10*/ u8 playerName[8]; /*0x18*/ u8 var18; }; diff --git a/include/tv.h b/include/tv.h index e7186b05b..f6dd7a007 100644 --- a/include/tv.h +++ b/include/tv.h @@ -9,6 +9,7 @@ enum TVSHOW_FAN_CLUB_LETTER = 1, TVSHOW_RECENT_HAPPENINGS = 2, TVSHOW_PKMN_FAN_CLUB_OPINIONS = 3, + TVSHOW_UNKN_SHOWTYPE_04 = 4, TVSHOW_NAME_RATER_SHOW = 5, TVSHOW_UNK_SHOWTYPE_06 = 6, TVSHOW_UNK_SHOWTYPE_07 = 7, @@ -32,6 +32,7 @@ struct OutbreakPokemon extern u8 *gUnknown_083D1464[3]; extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; extern u16 gSpecialVar_0x8006; extern u8 gSpecialVar_0x8007; extern u16 gScriptResult; @@ -446,7 +447,77 @@ void sub_80BEA88(void) asm(".section .text_b"); -void sub_80BF25C(u8); +void sub_80BF6D8(void); +void sub_80BF588(TVShow tvShows[]); + +void sub_80BF25C(u8 showType) +{ + u8 i; + for (i=0; i<5; i++) + { + if (gSaveBlock1.tvShows.shows[i].common.var00 == showType) { + if(gSaveBlock1.tvShows.shows[i].common.var01 == 1) + { + gScriptResult = 1; + } + else + { + sub_80BF55C(gSaveBlock1.tvShows.shows, i); + sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80BF6D8(); + } + return; + } + } + sub_80BF6D8(); +} + +void sub_80BF334(void); +void sub_80BF3A4(void); +void sub_80BF3DC(void); +void sub_80BF46C(void); +void sub_80BF478(void); +void sub_80BF484(void); +void sub_80BF4BC(void); + +void sub_80BF2C4(void) +{ + gScriptResult = 0; + switch (gSpecialVar_0x8005) { + case TVSHOW_FAN_CLUB_LETTER: + sub_80BF334(); + break; + case TVSHOW_RECENT_HAPPENINGS: + sub_80BF3A4(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80BF3DC(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + sub_80BF46C(); + break; + case TVSHOW_NAME_RATER_SHOW: + sub_80BF478(); + break; + case TVSHOW_UNK_SHOWTYPE_06: + sub_80BF484(); + break; + case TVSHOW_UNK_SHOWTYPE_07: + sub_80BF4BC(); + break; + } +} + +void sub_80BF334(void) +{ + TVShow *show; + sub_80BF25C(TVSHOW_FAN_CLUB_LETTER); + if (gScriptResult == 0) { + StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + sub_80EB6FC(show->fanclubLetter.pad04, 6); + } +} void sub_80BF3A4(void) { @@ -623,7 +694,7 @@ bool8 sub_80BF77C(u16 value) return TRUE; } -void sub_80BF79C(struct TVShowRecentHappenings *arg0) // TVShowFanClubLetter? +void sub_80BF79C(struct TVShowRecentHappenings *arg0) { u8 i = Random() % 6; while (1) { @@ -636,13 +707,13 @@ void sub_80BF79C(struct TVShowRecentHappenings *arg0) // TVShowFanClubLetter? sub_80EB3FC(gStringVar3, arg0->var04[i]); } -u8 sub_80BF7E8(struct TVShowFanClubLetter *arg0) // TVShowRecentHappenings? +u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0) { u16 flagsum = 0; u8 i = 0; - if (arg0->pad04[0] != 0xFF) { - while (i < 11 && arg0->pad04[i] != 0xFF) { - flagsum += arg0->pad04[i]; + if (arg0->pokemonName[0] != 0xFF) { + while (i < 11 && arg0->pokemonName[i] != 0xFF) { + flagsum += arg0->pokemonName[i]; i++; } } |