diff options
Diffstat (limited to 'src/debug/nohara_debug_menu.c')
-rw-r--r-- | src/debug/nohara_debug_menu.c | 257 |
1 files changed, 183 insertions, 74 deletions
diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c index 53501a52b..80527ad42 100644 --- a/src/debug/nohara_debug_menu.c +++ b/src/debug/nohara_debug_menu.c @@ -104,8 +104,13 @@ bool8 debug_sub_808F414(void) } } +#if (ENGLISH && REVISION == 0) +const u8 gUnknown_Debug_083C4980[] = _("ひみつがたを すぐみれるように ひだりキーで\n" + "データタイプを へんこうしますか? きりかえ"); +#else const u8 gUnknown_Debug_083C4980[] = _("Want to change data type{CLEAR_TO 143}Press Left\n" "to see secret type now?{CLEAR_TO 143}to switch"); +#endif const u8 gUnknown_Debug_083C49CA[] = _("Choose the TV data you wish to\n" "create to check a transmission。"); @@ -470,6 +475,11 @@ void debug_sub_808FA88(u8 a0, u8 a1) u8 leadMonIndex = GetLeadMonIndex(); u8 channel; +// This is garbage. +#define GF_ACCESS(x) ((struct x*)(&(gSaveBlock1.tvShows[a0]))) +#define TERU_ACCESS(x) show->x +#define DECLARE_TERU_POINTER TVShow * show = gSaveBlock1.tvShows + a0 + gSaveBlock1.tvShows[a0].common.kind = a1; gSaveBlock1.tvShows[a0].common.active = TRUE; for (i = 0; i < 0x22; i++) @@ -480,34 +490,135 @@ void debug_sub_808FA88(u8 a0, u8 a1) { case 2: case 4: - sub_80BE160(gSaveBlock1.tvShows + a0); + sub_80BE160(&gSaveBlock1.tvShows[a0]); break; case 3: - sub_80BE138(gSaveBlock1.tvShows + a0); + sub_80BE138(&gSaveBlock1.tvShows[a0]); break; } +#if (ENGLISH && REVISION == 0) switch (a1) { case TVSHOW_FAN_CLUB_LETTER: case TVSHOW_RECENT_HAPPENINGS: { - TVShow * show = gSaveBlock1.tvShows + a0; + GF_ACCESS(TVShowFanClubLetter)->species = SPECIES_BULBASAUR; + StringCopy(GF_ACCESS(TVShowFanClubLetter)->playerName, gSaveBlock2.playerName); + GF_ACCESS(TVShowFanClubLetter)->language = GAME_LANGUAGE; + break; + } + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + { + GF_ACCESS(TVShowFanclubOpinions)->var02 = 1; + StringCopy(GF_ACCESS(TVShowFanclubOpinions)->playerName, gSaveBlock2.playerName); + GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_NICKNAME, GF_ACCESS(TVShowFanclubOpinions)->var10); + GF_ACCESS(TVShowFanclubOpinions)->language = GAME_LANGUAGE; + GF_ACCESS(TVShowFanclubOpinions)->var0E = GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_LANGUAGE); + break; + } + case TVSHOW_UNKN_SHOWTYPE_04: + { + break; + } + case TVSHOW_NAME_RATER_SHOW: + { + GF_ACCESS(TVShowNameRaterShow)->species = GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_SPECIES); + GF_ACCESS(TVShowNameRaterShow)->var1C = 1; + StringCopy(GF_ACCESS(TVShowNameRaterShow)->trainerName, gSaveBlock2.playerName); + GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_NICKNAME, GF_ACCESS(TVShowNameRaterShow)->pokemonName); + GF_ACCESS(TVShowNameRaterShow)->language = GAME_LANGUAGE; + GF_ACCESS(TVShowNameRaterShow)->pokemonNameLanguage = GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_LANGUAGE); + break; + } + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + { + GF_ACCESS(TVShowBravoTrainerPokemonProfiles)->species = SPECIES_BULBASAUR; + StringCopy(GF_ACCESS(TVShowBravoTrainerPokemonProfiles)->playerName, gSaveBlock2.playerName); + GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_NICKNAME, GF_ACCESS(TVShowBravoTrainerPokemonProfiles)->pokemonNickname); + GF_ACCESS(TVShowBravoTrainerPokemonProfiles)->language = GAME_LANGUAGE; + GF_ACCESS(TVShowBravoTrainerPokemonProfiles)->var1f = GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_LANGUAGE); + break; + } + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + { + GF_ACCESS(TVShowBravoTrainerBattleTowerSpotlight)->species = SPECIES_BULBASAUR; + GF_ACCESS(TVShowBravoTrainerBattleTowerSpotlight)->defeatedSpecies = SPECIES_BULBASAUR; + StringCopy(GF_ACCESS(TVShowBravoTrainerBattleTowerSpotlight)->trainerName, gSaveBlock2.playerName); + StringCopy(GF_ACCESS(TVShowBravoTrainerBattleTowerSpotlight)->enemyTrainerName, gSaveBlock2.playerName); + GF_ACCESS(TVShowBravoTrainerBattleTowerSpotlight)->language = GAME_LANGUAGE; + break; + } + case TVSHOW_MASS_OUTBREAK: + { + GF_ACCESS(TVShowMassOutbreak)->species = SPECIES_BULBASAUR; + GF_ACCESS(TVShowMassOutbreak)->daysLeft = 1; + break; + } + case TVSHOW_POKEMON_TODAY_CAUGHT: + { + GF_ACCESS(TVShowPokemonToday)->species = SPECIES_BULBASAUR; + StringCopy(GF_ACCESS(TVShowPokemonToday)->playerName, gSaveBlock2.playerName); + GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_NICKNAME, GF_ACCESS(TVShowPokemonToday)->nickname); + GF_ACCESS(TVShowPokemonToday)->language = GAME_LANGUAGE; + GF_ACCESS(TVShowPokemonToday)->language2 = GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_LANGUAGE); + break; + } + case TVSHOW_SMART_SHOPPER: + { + StringCopy(GF_ACCESS(TVShowSmartShopper)->playerName, gSaveBlock2.playerName); + GF_ACCESS(TVShowSmartShopper)->language = GAME_LANGUAGE; + break; + } + case TVSHOW_POKEMON_TODAY_FAILED: + { + GF_ACCESS(TVShowPokemonTodayFailed)->species = SPECIES_BULBASAUR; + GF_ACCESS(TVShowPokemonTodayFailed)->species2 = SPECIES_BULBASAUR; + StringCopy(GF_ACCESS(TVShowPokemonTodayFailed)->playerName, gSaveBlock2.playerName); + GF_ACCESS(TVShowPokemonTodayFailed)->language = GAME_LANGUAGE; + break; + } + case TVSHOW_FISHING_ADVICE: + { + GF_ACCESS(TVShowPokemonAngler)->var04 = SPECIES_BULBASAUR; + StringCopy(GF_ACCESS(TVShowPokemonAngler)->playerName, gSaveBlock2.playerName); + GF_ACCESS(TVShowPokemonAngler)->language = GAME_LANGUAGE; + break; + } + case TVSHOW_WORLD_OF_MASTERS: + { + GF_ACCESS(TVShowWorldOfMasters)->var04 = SPECIES_BULBASAUR; + GF_ACCESS(TVShowWorldOfMasters)->var08 = SPECIES_BULBASAUR; + StringCopy(GF_ACCESS(TVShowWorldOfMasters)->playerName, gSaveBlock2.playerName); + GF_ACCESS(TVShowWorldOfMasters)->language = GAME_LANGUAGE; + break; + } + } +#else +// Murakawa must have really hated working with GF code. He devised his own, less complicated +// access method after US rev0. Also, this iteration of the code has his self inserts: TERUKUN, +// TERU, and TERUDA. Who all love Wigglytuff. + switch (a1) + { + case TVSHOW_FAN_CLUB_LETTER: + case TVSHOW_RECENT_HAPPENINGS: + { + DECLARE_TERU_POINTER; - show->fanclubLetter.species = SPECIES_BULBASAUR; - StringCopy(gSaveBlock1.tvShows[a0].fanclubLetter.playerName, gSaveBlock2.playerName); - show->fanclubLetter.language = GAME_LANGUAGE; + GF_ACCESS(TVShowFanClubLetter)->species = SPECIES_BULBASAUR; // Yet he didn't change Game Freak's lines. + StringCopy(GF_ACCESS(TVShowFanClubLetter)->playerName, gSaveBlock2.playerName); + TERU_ACCESS(fanclubLetter).language = GAME_LANGUAGE; break; } case TVSHOW_PKMN_FAN_CLUB_OPINIONS: { - TVShow * show = gSaveBlock1.tvShows + a0; + DECLARE_TERU_POINTER; - show->fanclubOpinions.var02 = 1; - StringCopy(gSaveBlock1.tvShows[a0].fanclubOpinions.playerName, gSaveBlock2.playerName); - GetMonData(gPlayerParty + leadMonIndex, MON_DATA_NICKNAME, gSaveBlock1.tvShows[a0].fanclubOpinions.var10); - show->fanclubOpinions.language = GAME_LANGUAGE; - show->fanclubOpinions.var0E = GetMonData(gPlayerParty + leadMonIndex, MON_DATA_LANGUAGE); + GF_ACCESS(TVShowFanclubOpinions)->var02 = 1; + StringCopy(GF_ACCESS(TVShowFanclubOpinions)->playerName, gSaveBlock2.playerName); + GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_NICKNAME, GF_ACCESS(TVShowFanclubOpinions)->var10); + TERU_ACCESS(fanclubOpinions).language = GAME_LANGUAGE; + TERU_ACCESS(fanclubOpinions).var0E = GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_LANGUAGE); break; } case TVSHOW_UNKN_SHOWTYPE_04: @@ -516,120 +627,118 @@ void debug_sub_808FA88(u8 a0, u8 a1) } case TVSHOW_NAME_RATER_SHOW: { - u16 species = GetMonData(gPlayerParty + leadMonIndex, MON_DATA_SPECIES); - TVShow * show = gSaveBlock1.tvShows + a0; + u16 species = GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_SPECIES); + DECLARE_TERU_POINTER; - show->nameRaterShow.species = species; - show->nameRaterShow.var1C = 1; - StringCopy(gSaveBlock1.tvShows[a0].nameRaterShow.trainerName, gSaveBlock2.playerName); - GetMonData(gPlayerParty + leadMonIndex, MON_DATA_NICKNAME, gSaveBlock1.tvShows[a0].nameRaterShow.pokemonName); - show->nameRaterShow.language = GAME_LANGUAGE; - show->nameRaterShow.pokemonNameLanguage = GetMonData(gPlayerParty + leadMonIndex, MON_DATA_LANGUAGE); + GF_ACCESS(TVShowNameRaterShow)->species = species; + GF_ACCESS(TVShowNameRaterShow)->var1C = 1; + StringCopy(GF_ACCESS(TVShowNameRaterShow)->trainerName, gSaveBlock2.playerName); + GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_NICKNAME, GF_ACCESS(TVShowNameRaterShow)->pokemonName); + TERU_ACCESS(nameRaterShow).language = GAME_LANGUAGE; + TERU_ACCESS(nameRaterShow).pokemonNameLanguage = GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_LANGUAGE); break; } case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: { - TVShow * show = gSaveBlock1.tvShows + a0; + DECLARE_TERU_POINTER; - show->bravoTrainer.species = SPECIES_BULBASAUR; - StringCopy(gSaveBlock1.tvShows[a0].bravoTrainer.playerName, gSaveBlock2.playerName); - GetMonData(gPlayerParty + leadMonIndex, MON_DATA_NICKNAME, gSaveBlock1.tvShows[a0].bravoTrainer.pokemonNickname); - show->bravoTrainer.language = GAME_LANGUAGE; - show->bravoTrainer.var1f = GetMonData(gPlayerParty + leadMonIndex, MON_DATA_LANGUAGE); + GF_ACCESS(TVShowBravoTrainerPokemonProfiles)->species = SPECIES_BULBASAUR; + StringCopy(GF_ACCESS(TVShowBravoTrainerPokemonProfiles)->playerName, gSaveBlock2.playerName); + GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_NICKNAME, GF_ACCESS(TVShowBravoTrainerPokemonProfiles)->pokemonNickname); + TERU_ACCESS(bravoTrainer).language = GAME_LANGUAGE; + TERU_ACCESS(bravoTrainer).var1f = GetMonData(&gPlayerParty[leadMonIndex], MON_DATA_LANGUAGE); break; } case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: { - TVShow * show = gSaveBlock1.tvShows + a0; + DECLARE_TERU_POINTER; - show->bravoTrainerTower.species = SPECIES_BULBASAUR; - show->bravoTrainerTower.defeatedSpecies = SPECIES_BULBASAUR; - StringCopy(gSaveBlock1.tvShows[a0].bravoTrainerTower.trainerName, gSaveBlock2.playerName); - StringCopy(gSaveBlock1.tvShows[a0].bravoTrainerTower.enemyTrainerName, gSaveBlock2.playerName); - show->bravoTrainerTower.language = GAME_LANGUAGE; + GF_ACCESS(TVShowBravoTrainerBattleTowerSpotlight)->species = SPECIES_BULBASAUR; + GF_ACCESS(TVShowBravoTrainerBattleTowerSpotlight)->defeatedSpecies = SPECIES_BULBASAUR; + StringCopy(GF_ACCESS(TVShowBravoTrainerBattleTowerSpotlight)->trainerName, gSaveBlock2.playerName); + StringCopy(GF_ACCESS(TVShowBravoTrainerBattleTowerSpotlight)->enemyTrainerName, gSaveBlock2.playerName); + TERU_ACCESS(bravoTrainerTower).language = GAME_LANGUAGE; break; } case TVSHOW_MASS_OUTBREAK: { - TVShow * show = gSaveBlock1.tvShows + a0; - - show->massOutbreak.species = SPECIES_BULBASAUR; - show->massOutbreak.daysLeft = 1; + GF_ACCESS(TVShowMassOutbreak)->species = SPECIES_BULBASAUR; + GF_ACCESS(TVShowMassOutbreak)->daysLeft = 1; break; } case TVSHOW_POKEMON_TODAY_CAUGHT: { - TVShow * show = gSaveBlock1.tvShows + a0; + DECLARE_TERU_POINTER; u8 gUnknown_Debug_083C4C64[] = _("TERUKUN"); u8 gUnknown_Debug_083C4C6C[] = _("TERUTERUDA"); - show->pokemonToday.var12 = 255; - StringCopy(show->pokemonToday.playerName, gUnknown_Debug_083C4C64); - StringCopy(show->pokemonToday.nickname, gUnknown_Debug_083C4C6C); - show->pokemonToday.ball = ITEM_PREMIER_BALL; - show->pokemonToday.species = SPECIES_WIGGLYTUFF; - show->pokemonToday.language = GAME_LANGUAGE; - show->pokemonToday.language2 = GAME_LANGUAGE; + TERU_ACCESS(pokemonToday).var12 = 255; + StringCopy(TERU_ACCESS(pokemonToday).playerName, gUnknown_Debug_083C4C64); + StringCopy(TERU_ACCESS(pokemonToday).nickname, gUnknown_Debug_083C4C6C); + TERU_ACCESS(pokemonToday).ball = ITEM_PREMIER_BALL; + TERU_ACCESS(pokemonToday).species = SPECIES_WIGGLYTUFF; + TERU_ACCESS(pokemonToday).language = GAME_LANGUAGE; + TERU_ACCESS(pokemonToday).language2 = GAME_LANGUAGE; break; } case TVSHOW_SMART_SHOPPER: { - TVShow * show = gSaveBlock1.tvShows + a0; + DECLARE_TERU_POINTER; u8 gUnknown_Debug_083C4C64[] = _("TERUKUN"); int ii; for (ii = 0; ii < 3; ii++) - show->smartshopperShow.itemAmounts[ii] = 254; - show->smartshopperShow.priceReduced = TRUE; - show->smartshopperShow.shopLocation = 40; + TERU_ACCESS(smartshopperShow).itemAmounts[ii] = 254; + TERU_ACCESS(smartshopperShow).priceReduced = TRUE; + TERU_ACCESS(smartshopperShow).shopLocation = 40; for (ii = 0; ii < 3; ii++) - show->smartshopperShow.itemIds[ii] = ITEM_ENERGY_POWDER; - StringCopy(show->smartshopperShow.playerName, gUnknown_Debug_083C4C64); - show->smartshopperShow.language = GAME_LANGUAGE; + TERU_ACCESS(smartshopperShow).itemIds[ii] = ITEM_ENERGY_POWDER; + StringCopy(TERU_ACCESS(smartshopperShow).playerName, gUnknown_Debug_083C4C64); + TERU_ACCESS(smartshopperShow).language = GAME_LANGUAGE; break; } case TVSHOW_POKEMON_TODAY_FAILED: { - TVShow * show = gSaveBlock1.tvShows + a0; + DECLARE_TERU_POINTER; u8 gUnknown_Debug_083C4C64[] = _("TERUKUN"); - show->pokemonTodayFailed.species = SPECIES_WIGGLYTUFF; - show->pokemonTodayFailed.species2 = SPECIES_WIGGLYTUFF; - show->pokemonTodayFailed.var12 = 3; - show->pokemonTodayFailed.var10 = 0xff; - show->pokemonTodayFailed.var11 = 1; - StringCopy(show->pokemonTodayFailed.playerName, gUnknown_Debug_083C4C64); - show->pokemonTodayFailed.language = GAME_LANGUAGE; + TERU_ACCESS(pokemonTodayFailed).species = SPECIES_WIGGLYTUFF; + TERU_ACCESS(pokemonTodayFailed).species2 = SPECIES_WIGGLYTUFF; + TERU_ACCESS(pokemonTodayFailed).var12 = 3; + TERU_ACCESS(pokemonTodayFailed).var10 = 0xff; + TERU_ACCESS(pokemonTodayFailed).var11 = 1; + StringCopy(TERU_ACCESS(pokemonTodayFailed).playerName, gUnknown_Debug_083C4C64); + TERU_ACCESS(pokemonTodayFailed).language = GAME_LANGUAGE; break; } case TVSHOW_FISHING_ADVICE: { - TVShow * show = gSaveBlock1.tvShows + a0; + DECLARE_TERU_POINTER; u8 gUnknown_Debug_083C4C64[] = _("TERUKUN"); - show->pokemonAngler.var02 = 0xff; - show->pokemonAngler.var03 = 0; - show->pokemonAngler.var04 = 40; - StringCopy(show->pokemonAngler.playerName, gUnknown_Debug_083C4C64); - show->pokemonAngler.language = GAME_LANGUAGE; + TERU_ACCESS(pokemonAngler).var02 = 0xff; + TERU_ACCESS(pokemonAngler).var03 = 0; + TERU_ACCESS(pokemonAngler).var04 = 40; + StringCopy(TERU_ACCESS(pokemonAngler).playerName, gUnknown_Debug_083C4C64); + TERU_ACCESS(pokemonAngler).language = GAME_LANGUAGE; break; } case TVSHOW_WORLD_OF_MASTERS: { - TVShow * show = gSaveBlock1.tvShows + a0; + DECLARE_TERU_POINTER; u8 gUnknown_Debug_083C4C64[] = _("TERUKUN"); - show->worldOfMasters.var02 = 0xffff; - show->worldOfMasters.var06 = 0xffff; - show->worldOfMasters.var04 = 40; - show->worldOfMasters.var08 = 40; - show->worldOfMasters.var0a = 3; - StringCopy(show->worldOfMasters.playerName, gUnknown_Debug_083C4C64); - show->worldOfMasters.language = GAME_LANGUAGE; + TERU_ACCESS(worldOfMasters).var02 = 0xffff; + TERU_ACCESS(worldOfMasters).var06 = 0xffff; + TERU_ACCESS(worldOfMasters).var04 = 40; + TERU_ACCESS(worldOfMasters).var08 = 40; + TERU_ACCESS(worldOfMasters).var0a = 3; + StringCopy(TERU_ACCESS(worldOfMasters).playerName, gUnknown_Debug_083C4C64); + TERU_ACCESS(worldOfMasters).language = GAME_LANGUAGE; break; } - } +#endif } bool8 debug_sub_808FEBC(void) |