diff options
-rw-r--r-- | asm/tv.s | 121 | ||||
-rw-r--r-- | include/tv.h | 17 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/tv.c | 70 |
4 files changed, 80 insertions, 130 deletions
@@ -2718,126 +2718,7 @@ _080C07BC: .4byte gSaveBlock1 _080C07C0: .4byte 0x00002abd thumb_func_end sub_80C0788 - thumb_func_start DoTVShow -DoTVShow: @ 80C07C4 - push {lr} - ldr r2, _080C07F8 @ =gSaveBlock1 - ldr r0, _080C07FC @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - ldr r2, _080C0800 @ =0x00002739 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080C07E0 - b _080C08F8 -_080C07E0: - subs r2, 0x1 - adds r0, r1, r2 - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0x28 - bls _080C07EE - b _080C08F8 -_080C07EE: - lsls r0, 2 - ldr r1, _080C0804 @ =_080C0808 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C07F8: .4byte gSaveBlock1 -_080C07FC: .4byte gSpecialVar_0x8004 -_080C0800: .4byte 0x00002739 -_080C0804: .4byte _080C0808 - .align 2, 0 -_080C0808: - .4byte _080C08AC - .4byte _080C08B2 - .4byte _080C08B8 - .4byte _080C08BE - .4byte _080C08E2 - .4byte _080C08CA - .4byte _080C08D0 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08D6 - .4byte _080C08DC - .4byte _080C08E8 - .4byte _080C08EE - .4byte _080C08F4 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08C4 -_080C08AC: - bl DoTVShowPokemonFanClubLetter - b _080C08F8 -_080C08B2: - bl DoTVShowRecentHappenings - b _080C08F8 -_080C08B8: - bl DoTVShowPokemonFanClubOpinions - b _080C08F8 -_080C08BE: - bl nullsub_22 - b _080C08F8 -_080C08C4: - bl DoTVShowPokemonNewsMassOutbreak - b _080C08F8 -_080C08CA: - bl DoTVShowBravoTrainerPokemonProfile - b _080C08F8 -_080C08D0: - bl DoTVShowBravoTrainerBattleTowerProfile - b _080C08F8 -_080C08D6: - bl DoTVShowPokemonTodaySuccessfulCapture - b _080C08F8 -_080C08DC: - bl DoTVShowTodaysSmartShopper - b _080C08F8 -_080C08E2: - bl DoTVShowTheNameRaterShow - b _080C08F8 -_080C08E8: - bl DoTVShowPokemonTodayFailedCapture - b _080C08F8 -_080C08EE: - bl DoTVShowPokemonAngler - b _080C08F8 -_080C08F4: - bl DoTVShowTheWorldOfMasters -_080C08F8: - pop {r0} - bx r0 - thumb_func_end DoTVShow +.section .dotvshow thumb_func_start TVShowConvertInternationalString TVShowConvertInternationalString: @ 80C08FC diff --git a/include/tv.h b/include/tv.h index c4aafebb5..b1ed61a82 100644 --- a/include/tv.h +++ b/include/tv.h @@ -7,12 +7,17 @@ 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_FISHING_ADVICE = 6, - TVSHOW_WORLD_OF_MASTERS = 7, + TVSHOW_RECENT_HAPPENINGS, + TVSHOW_PKMN_FAN_CLUB_OPINIONS, + TVSHOW_UNKN_SHOWTYPE_04, + TVSHOW_NAME_RATER_SHOW, + TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE, + TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE, + TVSHOW_POKEMON_TODAY_CAUGHT = 21, + TVSHOW_SMART_SHOPPER, + TVSHOW_POKEMON_TODAY_FAILED, + TVSHOW_FISHING_ADVICE, + TVSHOW_WORLD_OF_MASTERS, TVSHOW_MASS_OUTBREAK = 41, }; #endif //POKERUBY_TV_H diff --git a/ld_script.txt b/ld_script.txt index 4f0203800..be5c78907 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -180,6 +180,8 @@ SECTIONS { asm/tv.o(.text); src/tv.o(.text_a); asm/tv.o(.text_80BE8EC); + src/tv.o(.dotvshow); + asm/tv.o(.dotvshow); src/tv.o(.text_c); asm/contest_link_80C2020.o(.text); src/script_pokemon_util_80C4BF0.o(.text); @@ -850,10 +850,10 @@ void sub_80BF2C4(void) case TVSHOW_NAME_RATER_SHOW: sub_80BF478(); break; - case TVSHOW_FISHING_ADVICE: + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: sub_80BF484(); break; - case TVSHOW_WORLD_OF_MASTERS: + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: sub_80BF4BC(); break; } @@ -906,7 +906,7 @@ void sub_80BF478(void) void sub_80BF484(void) { TVShow *show; - sub_80BF25C(TVSHOW_FISHING_ADVICE); + sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); if (gScriptResult == 0) { show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; sub_80EB6FC(show->recentHappenings.var04, 2); // wrong struct ident, fix later @@ -916,7 +916,7 @@ void sub_80BF484(void) void sub_80BF4BC(void) { TVShow *show; - sub_80BF25C(TVSHOW_WORLD_OF_MASTERS); + sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); if (gScriptResult == 0) { show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; sub_80EB6FC(show->fanclubOpinions.var18, 1); // wrong struct ident, fix later @@ -1621,6 +1621,68 @@ _080BFF58:\n\ } #endif +asm(".section .dotvshow\n"); + +void DoTVShowPokemonFanClubLetter(void); +void DoTVShowRecentHappenings(void); +void DoTVShowPokemonFanClubOpinions(void); +void nullsub_22(void); +void DoTVShowPokemonNewsMassOutbreak(void); +void DoTVShowBravoTrainerPokemonProfile(void); +void DoTVShowBravoTrainerBattleTowerProfile(void); +void DoTVShowPokemonTodaySuccessfulCapture(void); +void DoTVShowTodaysSmartShopper(void); +void DoTVShowTheNameRaterShow(void); +void DoTVShowPokemonTodayFailedCapture(void); +void DoTVShowPokemonAngler(void); +void DoTVShowTheWorldOfMasters(void); + +void DoTVShow(void) { + if (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 != 0) { + switch (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var00) { + case TVSHOW_FAN_CLUB_LETTER: + DoTVShowPokemonFanClubLetter(); + break; + case TVSHOW_RECENT_HAPPENINGS: + DoTVShowRecentHappenings(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + DoTVShowPokemonFanClubOpinions(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + nullsub_22(); + break; + case TVSHOW_MASS_OUTBREAK: + DoTVShowPokemonNewsMassOutbreak(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + DoTVShowBravoTrainerPokemonProfile(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + DoTVShowBravoTrainerBattleTowerProfile(); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + DoTVShowPokemonTodaySuccessfulCapture(); + break; + case TVSHOW_SMART_SHOPPER: + DoTVShowTodaysSmartShopper(); + break; + case TVSHOW_NAME_RATER_SHOW: + DoTVShowTheNameRaterShow(); + break; + case TVSHOW_POKEMON_TODAY_FAILED: + DoTVShowPokemonTodayFailedCapture(); + break; + case TVSHOW_FISHING_ADVICE: + DoTVShowPokemonAngler(); + break; + case TVSHOW_WORLD_OF_MASTERS: + DoTVShowTheWorldOfMasters(); + break; + } + } +} + asm(".section .text_c"); void TVShowConvertInternationalString(u8 *, u8 *, u8); |