diff options
Diffstat (limited to 'src/debug')
-rw-r--r-- | src/debug/ereader_debug_menu.c | 362 | ||||
-rw-r--r-- | src/debug/kagaya_debug_menu.c | 16 | ||||
-rw-r--r-- | src/debug/matsuda_debug_menu.c | 10 | ||||
-rw-r--r-- | src/debug/mori_debug_menu.c | 4 | ||||
-rw-r--r-- | src/debug/nakamura_debug_menu.c | 2386 | ||||
-rw-r--r-- | src/debug/nohara_debug_menu.c | 965 | ||||
-rw-r--r-- | src/debug/sound_check_menu.c | 262 | ||||
-rw-r--r-- | src/debug/start_menu_debug.c | 7810 | ||||
-rw-r--r-- | src/debug/taya_debug_window.c | 1085 | ||||
-rw-r--r-- | src/debug/tomomichi_debug_menu.c | 4497 | ||||
-rw-r--r-- | src/debug/unknown_debug_menu.c | 2 | ||||
-rw-r--r-- | src/debug/watanabe_debug_menu.c | 3749 |
12 files changed, 15237 insertions, 5911 deletions
diff --git a/src/debug/ereader_debug_menu.c b/src/debug/ereader_debug_menu.c new file mode 100644 index 000000000..aaffca383 --- /dev/null +++ b/src/debug/ereader_debug_menu.c @@ -0,0 +1,362 @@ +#include "global.h" +#include "debug.h" +#include "constants/species.h" +#include "constants/items.h" +#include "string_util.h" +#include "new_game.h" +#include "load_save.h" +#include "start_menu.h" +#include "mystery_event_script.h" +#include "berry.h" +#include "mail_data.h" + +const u8 Str_842E238[] = _("タマゴ"); + +#if DEBUG + +extern u8 gUnknown_Debug_845DAE1[]; +extern u8 gUnknown_Debug_845DAE1End[]; + +size_t debug_sub_813C404(u8 * dest) +{ + size_t size = gUnknown_Debug_845DAE1End - gUnknown_Debug_845DAE1; + memcpy(dest, gUnknown_Debug_845DAE1, size); + debug_sub_812620C(dest, gUnknown_Debug_845DAE1); + return size; +} + +extern u8 gUnknown_Debug_845E3E0[]; +extern u8 gUnknown_Debug_845E3E0End[]; + +size_t debug_sub_813C430(u8 * dest) +{ + size_t size = gUnknown_Debug_845E3E0End - gUnknown_Debug_845E3E0; + memcpy(dest, gUnknown_Debug_845E3E0, size); + debug_sub_812620C(dest, gUnknown_Debug_845E3E0); + return size; +} + +extern u8 gUnknown_Debug_845E422[]; +extern u8 gUnknown_Debug_845E422End[]; + +size_t debug_sub_813C45C(u8 * dest) +{ + size_t size = gUnknown_Debug_845E422End - gUnknown_Debug_845E422; + memcpy(dest, gUnknown_Debug_845E422, size); + debug_sub_812620C(dest, gUnknown_Debug_845E422); + return size; +} + +extern u8 gUnknown_Debug_845E402[]; +extern u8 gUnknown_Debug_845E402End[]; + +size_t debug_sub_813C488(u8 * dest) +{ + size_t size = gUnknown_Debug_845E402End - gUnknown_Debug_845E402; + memcpy(dest, gUnknown_Debug_845E402, size); + debug_sub_812620C(dest, gUnknown_Debug_845E402); + return size; +} + +extern u8 gUnknown_Debug_845E606[]; +extern u8 gUnknown_Debug_845E606End[]; + +size_t debug_sub_813C4B4(u8 * dest) +{ + size_t size = gUnknown_Debug_845E606End - gUnknown_Debug_845E606; + memcpy(dest, gUnknown_Debug_845E606, size); + return size; +} + +extern u8 gUnknown_Debug_845E619[]; +extern u8 gUnknown_Debug_845E619End[]; + +size_t debug_sub_813C4D4(u8 * dest) +{ + size_t size = gUnknown_Debug_845E619End - gUnknown_Debug_845E619; + memcpy(dest, gUnknown_Debug_845E619, size); + debug_sub_81261B4(dest, gUnknown_Debug_845E619); + return size; +} + +extern u8 gUnknown_Debug_845E712[]; +extern u8 gUnknown_Debug_845E712End[]; + +size_t debug_sub_813C500(u8 * dest) +{ + size_t size = gUnknown_Debug_845E712End - gUnknown_Debug_845E712; + memcpy(dest, gUnknown_Debug_845E712, size); + debug_sub_812620C(dest, gUnknown_Debug_845E712); + return size; +} + +extern u8 gUnknown_Debug_845E797[]; +extern u8 gUnknown_Debug_845E797End[]; +extern u8 gUnknown_Debug_845E7B5[]; + +size_t debug_sub_813C52C(u8 * dest, u16 itemId) +{ + u8 * ptr; + size_t size = gUnknown_Debug_845E797End - gUnknown_Debug_845E797; + memcpy(dest, gUnknown_Debug_845E797, size); + ptr = gUnknown_Debug_845E7B5 - gUnknown_Debug_845E797 + dest; + ptr += 3; + ptr[0] = itemId; + ptr[1] = itemId >> 8; + debug_sub_812620C(dest, gUnknown_Debug_845E797); + return size; +} + +size_t debug_sub_813C580(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_POTION); +} + +size_t debug_sub_813C58C(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_POKE_BALL); +} + +size_t debug_sub_813C598(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_CHERI_BERRY); +} + +size_t debug_sub_813C5A4(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_TM01_FOCUS_PUNCH); +} + +extern u8 gUnknown_Debug_845DDB2[]; +extern u8 gUnknown_Debug_845DDB2End[]; +extern u8 gUnknown_Debug_845DDD6[]; + +const u8 Str_842E23C[] = _("ガイブ"); + +size_t debug_sub_813C5B4(u8 * dest) +{ + u8 * saveBerry = (u8 *)&gSaveBlock1.enigmaBerry; + u8 * berry = (u8 *)(dest - gUnknown_Debug_845DDB2 + gUnknown_Debug_845DDD6); + size_t size = gUnknown_Debug_845DDB2End - gUnknown_Debug_845DDB2; + int i; + + debug_sub_80C2C18(Str_842E23C, 0, 0); + + for (i = 0; i < 0x1000; i++) + dest[i] = 0; + + for (i = 0; i < size; i++) + dest[i] = gUnknown_Debug_845DDB2[i]; + + for (i = 0; i < sizeof(struct EnigmaBerry); i++) + berry[i] = saveBerry[i]; + + ClearEnigmaBerries(); + debug_sub_81261B4(dest, gUnknown_Debug_845DDB2); + return size; +} + +const u8 Str_842E240[] = _("ENGLISH"); +const u8 Str_842E248[] = _("TOURNAMENT"); + +void debug_sub_813C638(struct Pokemon * mon, u16 species, u8 level, u16 itemId) +{ + u32 _itemId; + ZeroMonData(mon); + CreateMon(mon, species, level, 32, FALSE, 0, TRUE, 9999); + SetMonData(mon, MON_DATA_OT_NAME, Str_842E240); + SetMonData(mon, MON_DATA_NICKNAME, Str_842E248); + _itemId = itemId; + SetMonData(mon, MON_DATA_HELD_ITEM, &_itemId); +} + +void debug_sub_813C6AC(struct Pokemon *mon, struct MailStruct *mail) +{ + u16 itemId; + ClearMailStruct(mail); + itemId = GetMonData(mon, MON_DATA_HELD_ITEM); + if (ItemIsMail(itemId)) + { + u8 * name = mail->playerName; + u8 * id = mail->trainerId; + u8 nameBuf[8]; + int i; + + for (i = 0; i < 9; i++) + mail->words[i] = i + 1; + + GetMonData(mon, MON_DATA_OT_NAME, nameBuf); + StringCopyN(name, nameBuf, OT_NAME_LENGTH + 1); + + write_word_to_mem(GetMonData(mon, MON_DATA_OT_ID), id); + + mail->species = SpeciesToMailSpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_PERSONALITY)); + mail->itemId = itemId; + + } +} + +extern u8 gUnknown_Debug_845E443[]; +extern u8 gUnknown_Debug_845E443End[]; +extern u8 gUnknown_Debug_845E467[]; +extern u8 gUnknown_Debug_845E4CB[]; + +size_t debug_sub_813C740(u8 * dest) +{ + struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; + struct Pokemon *mon = gEnemyParty; + size_t size = end - src; + u8 dataBuffer[11]; + + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_PIKACHU, 5, ITEM_NONE); + dataBuffer[0] = TRUE; + SetMonData(mon, MON_DATA_IS_EGG, dataBuffer); + dataBuffer[0] = 3; + SetMonData(mon, MON_DATA_FRIENDSHIP, dataBuffer); + dataBuffer[0] = 255; + SetMonData(mon, MON_DATA_MET_LOCATION, dataBuffer); + + StringCopyN(dataBuffer, Str_842E238, POKEMON_NAME_LENGTH + 1); + SetMonData(mon, MON_DATA_NICKNAME, dataBuffer); + + dataBuffer[0] = LANGUAGE_JAPANESE; + SetMonData(mon, MON_DATA_LANGUAGE, dataBuffer); + + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); + + return size; +} + +size_t debug_sub_813C810(u8 * dest) +{ + struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; + struct Pokemon *mon = gEnemyParty; + size_t size = end - src; + + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); + debug_sub_813C6AC(mon, &mail); + + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); + + debug_sub_812620C(dest, src); + + return size; +} + +size_t debug_sub_813C888(u8 * dest) +{ + struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; + struct Pokemon *mon = gEnemyParty; + size_t size = end - src; + + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); + debug_sub_813C6AC(mon, &mail); + mon->box.checksum = 0; + + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); + + debug_sub_812620C(dest, src); + + return size; +} + +void debug_sub_813C904(void) +{ + debug_sub_813C638(gPlayerParty + 0, SPECIES_CHARMELEON, 50, ITEM_QUICK_CLAW); + debug_sub_813C638(gPlayerParty + 1, SPECIES_WARTORTLE, 50, ITEM_FOCUS_BAND); + debug_sub_813C638(gPlayerParty + 2, SPECIES_IVYSAUR, 50, ITEM_LUM_BERRY); +} + +extern u8 gUnknown_Debug_845E4EF[]; +extern u8 gUnknown_Debug_845E4EFEnd[]; +extern u8 gUnknown_Debug_845E506[]; + +const u8 Str_842E253[] = _(" そら カードイー"); + +size_t debug_sub_813C93C(u8 * dest) +{ + u8 * src = gUnknown_Debug_845E4EF; + size_t size = gUnknown_Debug_845E4EFEnd - src; + struct BattleTowerEReaderTrainer ereaderTrainer; + + memcpy(dest, src, size); + SavePlayerParty(); + debug_sub_813C904(); + debug_sub_8075DB4(&ereaderTrainer, Str_842E253 + 5, 9999); + LoadPlayerParty(); + + memcpy(gUnknown_Debug_845E506 - src + dest, &ereaderTrainer, sizeof(ereaderTrainer)); + + return size; +} + +const u8 Str_842E25E[] = _("ポケコッコ"); +const u8 Str_842E264[] = _("ticket"); +const u8 Str_842E26B[] = _("{PKMN}"); +const u8 Str_842E26E[] = _("wrong {PKMN}"); +const u8 Str_842E277[] = _("ribbon"); +const u8 Str_842E27E[] = _("DEX"); +const u8 Str_842E282[] = _("message"); +const u8 Str_842E28A[] = _("egg"); +const u8 Str_842E28E[] = _("RAM seed"); +const u8 Str_842E297[] = _("trainer"); +const u8 Str_842E29F[] = _("clock"); +const u8 Str_842E2A5[] = _("item"); +const u8 Str_842E2AA[] = _("goods"); +const u8 Str_842E2B0[] = _("potion"); +const u8 Str_842E2B7[] = _("ball"); +const u8 Str_842E2BC[] = _("cheri berry"); +const u8 Str_842E2C8[] = _("TM01"); + +const struct UnkDebugMenu3Items gUnknown_Debug_842E2D0[] = { + {Str_842E264, debug_sub_813C404}, + {Str_842E26B, debug_sub_813C810}, + {Str_842E26E, debug_sub_813C888}, + {Str_842E277, debug_sub_813C430}, + {Str_842E27E, debug_sub_813C488}, + {Str_842E282, debug_sub_813C45C}, + {Str_842E28A, debug_sub_813C740}, + {Str_842E28E, debug_sub_813C5B4}, + {Str_842E297, debug_sub_813C93C}, + {Str_842E29F, debug_sub_813C4B4}, + {Str_842E2A5, debug_sub_813C4D4}, + {Str_842E2AA, debug_sub_813C500}, + {Str_842E2B0, debug_sub_813C580}, + {Str_842E2B7, debug_sub_813C58C}, + {Str_842E2BC, debug_sub_813C598}, + {Str_842E2C8, debug_sub_813C5A4} +}; + +extern u8 gUnknown_Debug_845E306[]; + +const u8 gUnknown_Debug_842E350 = 16; + +u8 *const gUnknown_Debug_842E354[] = { + gUnknown_Debug_845DAE1, + gUnknown_Debug_845DDB2, + gUnknown_Debug_845E306, + gUnknown_Debug_845E3E0, + gUnknown_Debug_845E3E0, + gUnknown_Debug_845E402, + gUnknown_Debug_845E402, + gUnknown_Debug_845E422, + gUnknown_Debug_845E422, + gUnknown_Debug_845E443 +}; + +#endif // DEBUG diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c index 3cb36ce0c..89a36b2da 100644 --- a/src/debug/kagaya_debug_menu.c +++ b/src/debug/kagaya_debug_menu.c @@ -74,7 +74,7 @@ u8 debug_sub_80B061C(void) u8 KagayaDebugMenu_TrainerCard(void) { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); gMenuCallback = debug_sub_80B068C; return 0; } @@ -83,7 +83,7 @@ u8 debug_sub_80B068C(void) { if (!UpdatePaletteFade()) { - debug_sub_80A0710(sub_805469C); + debug_sub_80A0710(c2_exit_to_overworld_1_sub_8080DEC); CloseMenu(); ScriptContext2_Enable(); return 1; @@ -93,7 +93,7 @@ u8 debug_sub_80B068C(void) u8 KagayaDebugMenu_CardToExchange(void) { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); gMenuCallback = debug_sub_80B06E0; return 0; } @@ -102,7 +102,7 @@ u8 debug_sub_80B06E0(void) { if (!UpdatePaletteFade()) { - debug_sub_80A073C(sub_805469C); + debug_sub_80A073C(c2_exit_to_overworld_1_sub_8080DEC); CloseMenu(); ScriptContext2_Enable(); return 1; @@ -112,7 +112,7 @@ u8 debug_sub_80B06E0(void) u8 KagayaDebugMenu_SlotMachine(void) { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); gMenuCallback = Kagaya_80B0734; return 0; } @@ -121,7 +121,7 @@ u8 Kagaya_80B0734(void) { if (!UpdatePaletteFade()) { - debug_sub_811609C(Random() % 6, sub_805469C); + debug_sub_811609C(Random() % 6, c2_exit_to_overworld_1_sub_8080DEC); CloseMenu(); ScriptContext2_Enable(); return 1; @@ -149,7 +149,7 @@ u8 debug_sub_80B0770(void) u8 debug_sub_80B07B0(void) { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); gMenuCallback = debug_sub_80B07DC; return 0; } @@ -170,7 +170,7 @@ u8 debug_sub_80B0800(void) u8 r2; CloseMenu(); - r2 = sub_8068F18(); + r2 = TrySetDiveWarp(); if (r2 != 0) { gFieldEffectArguments[0] = 0; diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 0dbb491a7..e24868787 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -68,7 +68,7 @@ const struct MenuAction gMatsudaDebugMenuActions[] = {gMatsudaDebugMenu_ActionSetAllArtMuseumText, MatsudaDebugMenu_SetArtMuseumItems}, }; -u8 unref_sub_80A9B28(void) +u8 InitMatsudaDebugMenu(void) { Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 0, 17, 18); @@ -97,7 +97,7 @@ static bool8 sub_80A9B78(void) u8 MatsudaDebugMenu_ContestResults(void) { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); CreateTask(sub_80A9BE4, 0xFF); return 1; } @@ -465,7 +465,7 @@ static void sub_80AA064(void) RunTasks(); UpdatePaletteFade(); if (gMain.newKeys == 4) - SetMainCallback2(sub_805469C); + SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC); } static void sub_80AA090(void) @@ -870,7 +870,7 @@ void sub_80AAD08(struct Sprite *sprite, s8 var2) { eMatsudaDebugVar = sprite->data[3]; SetMainCallback2(sub_80AACC4); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); } } @@ -883,7 +883,7 @@ void sub_80AAD44(struct Sprite *sprite, s8 var2) SetDebugMonForContest(); for (i = 0; i < 4; i++) gUnknown_02038670[i] = sub_80AE770(i, gSpecialVar_ContestCategory); - SetMainCallback2(sub_805469C); + SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC); } } diff --git a/src/debug/mori_debug_menu.c b/src/debug/mori_debug_menu.c index 767f4cda0..4f798ecb3 100644 --- a/src/debug/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c @@ -2,7 +2,7 @@ #include "mori_debug_menu.h" #include "data2.h" #include "daycare.h" -#include "learn_move.h" +#include "move_tutor_menu.h" #include "link.h" #include "main.h" #include "menu.h" @@ -136,7 +136,7 @@ u8 MoriDebugMenu_10000Steps(void) u8 MoriDebugMenu_MoveTutor(void) { - TeachMoveTutorMove(); + DisplayMoveTutorMenu(); CloseMenu(); return 1; } diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index 550ac7bbd..508dc048e 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -1,189 +1,2217 @@ #if DEBUG #include "global.h" +#include "constants/items.h" +#include "constants/species.h" +#include "constants/songs.h" +#include "sound.h" +#include "data2.h" +#include "strings.h" +#include "random.h" +#include "palette.h" +#include "main.h" +#include "string_util.h" +#include "overworld.h" +#include "fieldmap.h" +#include "field_player_avatar.h" +#include "metatile_behavior.h" +#include "start_menu.h" +#include "party_menu.h" +#include "choose_party.h" +#include "secret_base.h" +#include "roamer.h" +#include "decoration_inventory.h" +#include "wild_encounter.h" #include "menu.h" +#include "menu_helpers.h" +#include "pokeblock.h" -EWRAM_DATA u8 _nakamuraData0 = 0; -EWRAM_DATA u8 _nakamuraData1 = 0; -EWRAM_DATA u8 _nakamuraData2 = 0; -EWRAM_DATA u8 _nakamuraData3 = 0; -EWRAM_DATA u8 _nakamuraData4 = 0; -EWRAM_DATA u8 _nakamuraData5 = 0; -EWRAM_DATA u16 _nakamuraData6 = 0; -EWRAM_DATA u16 _nakamuraData8 = 0; -EWRAM_DATA u16 _nakamuraDataA = 0; -EWRAM_DATA u16 _nakamuraDataC = 0; - -__attribute__((unused)) static u8 _nakamuraStatic0[0x18]; -__attribute__((unused)) static u8 _nakamuraStatic18; -__attribute__((unused)) static u8 gDebugFiller3000814[4]; - -asm(".global _nakamuraStatic0"); -asm(".global _nakamuraStatic18"); - -u8 debug_sub_815FC54(); -u8 debug_sub_815F2B4(); -u8 debug_sub_815FC94(); -u8 debug_sub_815FB1C(); -u8 debug_sub_815F2F4(); -u8 debug_sub_815F62C(); -u8 debug_sub_815FBE8(); -u8 debug_sub_815FE1C(); -u8 debug_sub_8160D98(); - -const u8 Str_843E36C[] = _("Berries"); -const u8 Str_843E374[] = _("Goods"); -const u8 Str_843E37A[] = _("{PKMN} list"); -const u8 Str_843E382[] = _("トラップ"); -const u8 Str_843E387[] = _("Move your base"); -const u8 Str_843E396[] = _("Moving {PKMN}"); -const u8 Str_843E3A0[] = _("Fishing points"); -const u8 Str_843E3AF[] = _("Set {POKEBLOCK}"); -const u8 Str_843E3B9[] = _("Make bases(to max)"); -const u8 Str_843E3CC[] = _("Base location"); - -const struct MenuAction _843E3DC[] = { - { Str_843E36C, debug_sub_815FC54 }, - { Str_843E37A, debug_sub_815F2B4 }, - { Str_843E374, debug_sub_815FC94 }, - { Str_843E387, debug_sub_815FB1C }, - { Str_843E3B9, debug_sub_815F2F4 }, - { Str_843E3CC, debug_sub_815F62C }, - { Str_843E396, debug_sub_815FBE8 }, - { Str_843E3A0, debug_sub_815FE1C }, - { Str_843E3AF, debug_sub_8160D98 }, +static bool8 TopMenu_HandleJoypad(void); +static bool8 SwitchToPkmnListMenu(void); +static bool8 MakeBasesToMax(void); +static bool8 BaseLocation(void); +static bool8 MoveYourBase_JoypadAction(void); +static bool8 SwitchToMoveYourBaseSubmenu(void); +static bool8 MovingPKMN(void); +static bool8 Give999OfAllBerries(void); +static bool8 GiveAllDecorations(void); +static bool8 FishingPoints(void); +static void NakaGenderTest_PrintSpeciesName(u8); +static void NakaGenderTest_PrintSpeciesGender(u8); +static void NakaGenderTest_PrintSpeciesLevel(u8); +static void NakaGenderTest_JoypadAction(u8); +static bool8 NakaGenderTest_HandleJoypad(void); +static u8 NakaGenderTest_ForceRerollPokemon(u8); +static bool8 SetPokeblock(void); + +// ======================================================= +// TOP MENU +// ======================================================= + +static const u8 Str_843E36C[] = _("Berries"); +static const u8 Str_843E374[] = _("Goods"); +static const u8 Str_843E37A[] = _("{PKMN} list"); +static const u8 Str_843E382[] = _("トラップ"); +static const u8 Str_843E387[] = _("Move your base"); +static const u8 Str_843E396[] = _("Moving {PKMN}"); +static const u8 Str_843E3A0[] = _("Fishing points"); +static const u8 Str_843E3AF[] = _("Set {POKEBLOCK}"); +static const u8 Str_843E3B9[] = _("Make bases(to max)"); +static const u8 Str_843E3CC[] = _("Base location"); + +static const struct MenuAction sNakamuraTopMenuActions[] = { + { Str_843E36C, Give999OfAllBerries }, + { Str_843E37A, SwitchToPkmnListMenu }, + { Str_843E374, GiveAllDecorations }, + { Str_843E387, SwitchToMoveYourBaseSubmenu }, + { Str_843E3B9, MakeBasesToMax }, + { Str_843E3CC, BaseLocation }, + { Str_843E396, MovingPKMN }, + { Str_843E3A0, FishingPoints }, + { Str_843E3AF, SetPokeblock }, }; -const u8 _843E424[][4] = { - { 1, 118, 47, 14 }, - { 2, 125, 53, 10 }, - { 3, 113, 49, 8 }, - { 0xB, 118, 67, 6 }, - { 0xC, 121, 40, 11 }, - { 0xD, 111, 35, 1 }, - { 0x15, 115, 20, 53 }, - { 0x16, 121, 18, 13 }, - { 0x17, 119, 26, 81 }, - { 0x1F, 127, 59, 67 }, - { 0x20, 125, 55, 11 }, - { 0x21, 111, 27, 27 }, - { 0x29, 114, 9, 47 }, - { 0x2A, 115, 32, 39 }, - { 0x2B, 115, 23, 8 }, - { 0x33, 114, 30, 51 }, - { 0x34, 115, 26, 15 }, - { 0x35, 115, 32, 46 }, - { 0x3D, 114, 11, 62 }, - { 0x3E, 115, 21, 18 }, - { 0x3F, 115, 25, 24 }, - { 0x47, 114, 19, 70 }, - { 0x48, 115, 32, 6 }, - { 0x49, 114, 32, 57 }, - { 0x51, 116, 71, 4 }, - { 0x52, 123, 47, 3 }, - { 0x53, 123, 57, 5 }, - { 0x5B, 116, 79, 11 }, - { 0x5C, 123, 49, 3 }, - { 0x5D, 120, 18, 12 }, - { 0x65, 120, 28, 62 }, - { 0x66, 116, 56, 6 }, - { 0x67, 119, 16, 81 }, - { 0x6F, 120, 30, 62 }, - { 0x70, 116, 55, 15 }, - { 0x71, 119, 16, 28 }, - { 0x79, 111, 33, 34 }, - { 0x7A, 118, 29, 5 }, - { 0x7B, 127, 45, 24 }, - { 0x83, 111, 24, 36 }, - { 0x84, 125, 7, 25 }, - { 0x85, 115, 8, 30 }, - { 0x8D, 111, 34, 50 }, - { 0x8E, 127, 59, 72 }, - { 0x8F, 127, 61, 21 }, - { 0x97, 127, 67, 63 }, - { 0x98, 125, 24, 32 }, - { 0x99, 111, 35, 31 }, - { 0xA1, 111, 13, 19 }, - { 0xA2, 121, 43, 7 }, - { 0xA3, 118, 47, 5 }, - { 0xA4, 111, 14, 19 }, - { 0xAB, 118, 46, 5 }, - { 0xAC, 121, 42, 7 }, - { 0xAD, 119, 19, 76 }, - { 0xAE, 115, 7, 20 }, - { 0xB5, 110, 16, 25 }, - { 0xB6, 114, 11, 27 }, - { 0xB7, 115, 8, 20 }, - { 0xBF, 110, 17, 25 }, - { 0xC0, 114, 12, 27 }, - { 0xC1, 119, 18, 76 }, - { 0xC9, 119, 5, 2 }, - { 0xCA, 119, 4, 89 }, - { 0xCB, 120, 38, 54 }, - { 0xCC, 120, 5, 76 }, - { 0xD3, 119, 5, 15 }, - { 0xD4, 119, 7, 101 }, - { 0xD5, 120, 31, 23 }, - { 0xDD, 119, 34, 24 }, - { 0xDE, 120, 26, 10 }, - { 0xDF, 119, 4, 15 }, - { 0xE7, 119, 31, 73 }, - { 0xE8, 120, 29, 85 }, - { 0xE9, 119, 6, 2 }, +static void DrawNakamuraDebugMenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(14, 0, 29, 19); + Menu_PrintItems(16, 1, ARRAY_COUNT(sNakamuraTopMenuActions), sNakamuraTopMenuActions); + InitMenu(0, 15, 1, ARRAY_COUNT(sNakamuraTopMenuActions), 0, 14); +} + +bool8 InitNakamuraDebugMenu(void) +{ + DrawNakamuraDebugMenu(); + gMenuCallback = TopMenu_HandleJoypad; + return FALSE; +} + +static bool8 TopMenu_HandleJoypad(void) +{ + if (gMain.newKeys & DPAD_UP) + { + Menu_MoveCursor(-1); + } + + if (gMain.newKeys & DPAD_DOWN) + { + Menu_MoveCursor(+1); + } + + if (gMain.newKeys & A_BUTTON) + { + MenuFunc func = sNakamuraTopMenuActions[Menu_GetCursorPos()].func; + Menu_DestroyCursor(); + return func(); + } + + if (gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +// ======================================================= +// PKMN LIST +// ======================================================= + +static void Task_SwitchToPkmnListMenu(u8 taskId) +{ + if (!gPaletteFade.active) + { + Debug_CopyLastThreePartyMonsToMultiPartnerParty(); + OpenPartyMenu(PARTY_MENU_TYPE_LINK_MULTI_BATTLE, 0); + DestroyTask(taskId); + } +} + +static bool8 SwitchToPkmnListMenu(void) +{ + CloseMenu(); + Menu_EraseScreen(); + gMain.savedCallback = c2_exit_to_overworld_1_sub_8080DEC; + CreateTask(Task_SwitchToPkmnListMenu, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); + return TRUE; +} + +// ======================================================= +// MAKE BASES TO MAX and BASE LOCATION +// ======================================================= + +EWRAM_DATA u8 sSecretBaseIdx = 0; + +static const u8 sSecretBaseTemplates[] = { + // ID, Route, X, Y + 0x01, 118, 47, 14 , + 0x02, 125, 53, 10 , + 0x03, 113, 49, 8 , + 0x0B, 118, 67, 6 , + 0x0C, 121, 40, 11 , + 0x0D, 111, 35, 1 , + 0x15, 115, 20, 53 , + 0x16, 121, 18, 13 , + 0x17, 119, 26, 81 , + 0x1F, 127, 59, 67 , + 0x20, 125, 55, 11 , + 0x21, 111, 27, 27 , + 0x29, 114, 9, 47 , + 0x2A, 115, 32, 39 , + 0x2B, 115, 23, 8 , + 0x33, 114, 30, 51 , + 0x34, 115, 26, 15 , + 0x35, 115, 32, 46 , + 0x3D, 114, 11, 62 , + 0x3E, 115, 21, 18 , + 0x3F, 115, 25, 24 , + 0x47, 114, 19, 70 , + 0x48, 115, 32, 6 , + 0x49, 114, 32, 57 , + 0x51, 116, 71, 4 , + 0x52, 123, 47, 3 , + 0x53, 123, 57, 5 , + 0x5B, 116, 79, 11 , + 0x5C, 123, 49, 3 , + 0x5D, 120, 18, 12 , + 0x65, 120, 28, 62 , + 0x66, 116, 56, 6 , + 0x67, 119, 16, 81 , + 0x6F, 120, 30, 62 , + 0x70, 116, 55, 15 , + 0x71, 119, 16, 28 , + 0x79, 111, 33, 34 , + 0x7A, 118, 29, 5 , + 0x7B, 127, 45, 24 , + 0x83, 111, 24, 36 , + 0x84, 125, 7, 25 , + 0x85, 115, 8, 30 , + 0x8D, 111, 34, 50 , + 0x8E, 127, 59, 72 , + 0x8F, 127, 61, 21 , + 0x97, 127, 67, 63 , + 0x98, 125, 24, 32 , + 0x99, 111, 35, 31 , + 0xA1, 111, 13, 19 , + 0xA2, 121, 43, 7 , + 0xA3, 118, 47, 5 , + 0xA4, 111, 14, 19 , + 0xAB, 118, 46, 5 , + 0xAC, 121, 42, 7 , + 0xAD, 119, 19, 76 , + 0xAE, 115, 7, 20 , + 0xB5, 110, 16, 25 , + 0xB6, 114, 11, 27 , + 0xB7, 115, 8, 20 , + 0xBF, 110, 17, 25 , + 0xC0, 114, 12, 27 , + 0xC1, 119, 18, 76 , + 0xC9, 119, 5, 2 , + 0xCA, 119, 4, 89 , + 0xCB, 120, 38, 54 , + 0xCC, 120, 5, 76 , + 0xD3, 119, 5, 15 , + 0xD4, 119, 7, 101 , + 0xD5, 120, 31, 23 , + 0xDD, 119, 34, 24 , + 0xDE, 120, 26, 10 , + 0xDF, 119, 4, 15 , + 0xE7, 119, 31, 73 , + 0xE8, 120, 29, 85 , + 0xE9, 119, 6, 2 , }; -const u8 Str_843E550[] = _("R"); -const u8 Str_843E552[] = _("X"); -const u8 Str_843E554[] = _("Y"); -const u8 Str_843E556[] = _( - "♂1\n" - "♂2\n" - "♂3\n" - "♂4\n" - "♂5\n" - "♀1\n" - "♀2\n" - "♀3\n" - "♀4\n" - "♀5"); -const u8 Str_843E574[] = _("ー"); -const u8 Str_843E576[] = _("あ"); -const u8 Str_843E578[] = _("ア"); -const u8 Str_843E57A[] = _("A"); -const u8 Str_843E57C[] = _("a"); -const u8 Str_843E57E[] = _("0"); -const u8 Str_843E580[] = _( - "ADD\n" - "DEL\n" - "EXIT"); -const u8 Str_843E58D[] = _( - "Fishing location R119\n" - " Y1\n" - " Y2\n" - " Y3\n" - "Encounter location\n" - "\n" - "\n" - "front of you"); -const u8 _843E5D1[] = {0x0F, 0x16, 0x19}; -const u8 Str_843E5D4[] = _( - "Aボタン {ESCAPE}\p" - " Bボタン ー\n" - "START けってい"); -const u8 Str_843E5F0[] = _("?"); -const u8 Str_843E5F2[] = _("HP どりょくち"); -const u8 Str_843E5FB[] = _("こうげき どりょくち"); -const u8 Str_843E606[] = _("ぼうぎょ どりょくち"); -const u8 Str_843E611[] = _("すばやさ どりょくち"); -const u8 Str_843E61C[] = _("とくこう どりょくち"); -const u8 Str_843E627[] = _("とくぼう どりょくち"); -const u8 Str_843E632[] = _("なつきど"); -const u8 Str_843E637[] = _("どりょくち ごうけい"); -const u8 Str_843E642[] = _("ここから"); -const u8 Str_843E647[] = _("ここまで"); -const u8 Str_843E64C[] = _("かいすう"); -const u8 Str_843E651[] = _("けっか"); -const u8 Str_843E655[] = _("かい"); -const u8 Str_843E658[] = _("0"); -const u8 Str_843E65A[] = _("はんい"); +static const u8 Str_843E550[] = _("R"); +static const u8 Str_843E552[] = _("X"); +static const u8 Str_843E554[] = _("Y"); +static const u8 Str_843E556[] = _( + "♂1\n" + "♂2\n" + "♂3\n" + "♂4\n" + "♂5\n" + "♀1\n" + "♀2\n" + "♀3\n" + "♀4\n" + "♀5"); + +static bool8 MakeBasesToMax(void) +{ + u8 i; + CloseMenu(); + + for (i = 1; i < 20; i++) + { + if (gSaveBlock1.secretBases[i].secretBaseId == 0) + { + u8 j; + + for (j = 0; j < 7; j++) + { + gSaveBlock1.secretBases[i].playerName[j] = gSaveBlock2.playerName[j]; + if (gSaveBlock1.secretBases[i].playerName[j] == EOS) + break; + } + + if (j == 7) + gSaveBlock1.secretBases[i].playerName[j - 1] = CHAR_A + i - 1; + else + gSaveBlock1.secretBases[i].playerName[j] = CHAR_A + i - 1; + + do + { + gSaveBlock1.secretBases[i].secretBaseId = sSecretBaseTemplates[(Random() % (ARRAY_COUNT(sSecretBaseTemplates) / 4)) * 4]; + + for (j = 0; j < i; j++) + { + if (gSaveBlock1.secretBases[i].secretBaseId == gSaveBlock1.secretBases[j].secretBaseId) + break; + } + } while (j != i); + + gSaveBlock1.secretBases[i].gender = Random() % 2; + + for (j = 0; j < 4; j++) + { + gSaveBlock1.secretBases[i].trainerId[j] = Random(); + } + + for (j = 0; j < 16; j++) + { + gSaveBlock1.secretBases[i].decorations[j] = 0; + gSaveBlock1.secretBases[i].decorationPos[j] = 0; + } + + unref_sub_80BCD7C(i); + } + } + + return TRUE; +} + +static void BaseLocation_GetCurSecretBaseData(u8 * R, u8 * X, u8 * Y) +{ + u8 i; + u8 sbId = gSaveBlock1.secretBases[sSecretBaseIdx].secretBaseId; + + for (i = 0; i < ARRAY_COUNT(sSecretBaseTemplates) / 4; i++) + { + if (sSecretBaseTemplates[i * 4] == sbId) + { + *R = sSecretBaseTemplates[i * 4 + 1]; + *X = sSecretBaseTemplates[i * 4 + 2]; + *Y = sSecretBaseTemplates[i * 4 + 3]; + break; + } + } +} + +static void BaseLocation_Redraw(void) +{ + Menu_BlankWindowRect(1, 1, 10, 10); + ConvertIntToDecimalStringN(gStringVar1, sSecretBaseIdx, STR_CONV_MODE_LEFT_ALIGN, 2); + Menu_PrintText(gStringVar1, 1, 1); + + if (gSaveBlock1.secretBases[sSecretBaseIdx].secretBaseId != 0) + { + u8 R; + u8 X; + u8 Y; + BaseLocation_GetCurSecretBaseData(&R, &X, &Y); + + sub_80BC190(gStringVar1, sSecretBaseIdx); + Menu_PrintText(gStringVar1, 1, 3); + + Menu_PrintText(Str_843E550, 1, 5); + ConvertIntToDecimalStringN(gStringVar1, R, STR_CONV_MODE_LEFT_ALIGN, 3); + Menu_PrintText(gStringVar1, 2, 5); + + Menu_PrintText(Str_843E552, 1, 7); + ConvertIntToDecimalStringN(gStringVar1, X, STR_CONV_MODE_LEFT_ALIGN, 3); + Menu_PrintText(gStringVar1, 3, 7); + + Menu_PrintText(Str_843E554, 1, 9); + ConvertIntToDecimalStringN(gStringVar1, Y, STR_CONV_MODE_LEFT_ALIGN, 3); + Menu_PrintText(gStringVar1, 3, 9); + } +} + +static bool8 BaseLocation_HandleJoypad(void) +{ + if (gMain.newKeys & DPAD_LEFT) + { + if (sSecretBaseIdx == 0) + sSecretBaseIdx = 19; + else + sSecretBaseIdx--; + BaseLocation_Redraw(); + return FALSE; + } + + if (gMain.newKeys & DPAD_RIGHT) + { + if (sSecretBaseIdx == 19) + sSecretBaseIdx = 0; + else + sSecretBaseIdx++; + BaseLocation_Redraw(); + return FALSE; + } + + if (gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +static bool8 BaseLocation(void) +{ + sSecretBaseIdx = 0; + gMenuCallback = BaseLocation_HandleJoypad; + Menu_EraseWindowRect(0, 0, 29, 19); + Menu_DrawStdWindowFrame(0, 0, 11, 11); + BaseLocation_Redraw(); + return FALSE; +} + +// ======================================================= +// MOVE YOUR BASE +// ======================================================= + +EWRAM_DATA u8 sMoveYourBase_CursorPos = 0; +EWRAM_DATA u8 sMoveYourBase_XCursorPos = 0; +EWRAM_DATA u8 sSecretBaseNameCharGroup = 0; + +static const u8 Str_843E574[] = _("ー"); +static const u8 Str_843E576[][2] = { + _("あ"), + _("ア"), + _("A"), + _("a"), + _("0") +}; + +static void MoveYourBase_PrintSBOwnerID(void) +{ + u8 * otIdPtr = gSaveBlock1.secretBases[sSecretBaseIdx].trainerId; + u32 otId = (otIdPtr[3] << 24) | (otIdPtr[2] << 16) | (otIdPtr[1] << 8) | (otIdPtr[0] << 0); + ConvertIntToDecimalStringN(gStringVar1, otId / 100000, STR_CONV_MODE_LEADING_ZEROS, 5); + Menu_PrintText(gStringVar1, 2, 7); + ConvertIntToDecimalStringN(gStringVar1, otId % 100000, STR_CONV_MODE_LEADING_ZEROS, 5); + Menu_PrintText(gStringVar1, 7, 7); +} + +static void MoveYourBase_PrintSBOwnerName(void) +{ + Menu_BlankWindowRect(2, 3, 11, 4); + *StringCopyN(gStringVar1, gSaveBlock1.secretBases[sSecretBaseIdx].playerName, 7) = EOS; + Menu_PrintText(gStringVar1, 2, 3); +} + +static void MoveYourBase_Redraw(void) +{ + Menu_BlankWindowRect(2, 1, 11, 10); + + ConvertIntToDecimalStringN(gStringVar1, sSecretBaseIdx, STR_CONV_MODE_LEFT_ALIGN, 2); + Menu_PrintText(gStringVar1, 2, 1); + + if (gSaveBlock1.secretBases[sSecretBaseIdx].secretBaseId != 0) + { + MoveYourBase_PrintSBOwnerName(); + MoveYourBase_PrintSBOwnerID(); + } +} + +static void MoveYourBase_UpdateXCursorPosition(void) +{ + Menu_BlankWindowRect(2, 5, 11, 6); + Menu_PrintText(Str_843E574, sMoveYourBase_XCursorPos + 2, 5); +} + +static void MoveYourBase_PrintCharacterSetName(void) +{ + if (sMoveYourBase_CursorPos) + Menu_BlankWindowRect(11, 1, 11, 2); + else + Menu_PrintText(Str_843E576[sSecretBaseNameCharGroup], 11, 1); +} + +static void MoveYourBase_EditOwnerID(s8 direction) +{ + u8 * otIdPtr = gSaveBlock1.secretBases[sSecretBaseIdx].trainerId; + u32 otId = (otIdPtr[3] << 24) | (otIdPtr[2] << 16) | (otIdPtr[1] << 8) | (otIdPtr[0] << 0); + s8 digit; + int r1 = direction; + + for (digit = 9; digit > sMoveYourBase_XCursorPos; digit--) + r1 *= 10; + + otId += r1; + otIdPtr[3] = (otId & 0xFF000000) >> 24; + otIdPtr[2] = (otId & 0x00FF0000) >> 16; + otIdPtr[1] = (otId & 0x0000FF00) >> 8; + otIdPtr[0] = (otId & 0x000000FF) >> 0; + MoveYourBase_PrintSBOwnerID(); +} + +static void MoveYourBase_EditOwnerNameChar(s8 a0) +{ + u8 * namePtr = gSaveBlock1.secretBases[sSecretBaseIdx].playerName; + u8 r2 = 0; + u8 r3 = 0; + u8 i; + + if (a0 == 100) + { + for (i = sMoveYourBase_XCursorPos; i < 7; i++) + { + namePtr[i] = EOS; + } + } + else + { + switch (sSecretBaseNameCharGroup) + { + case 0: // HIRA + r3 = 1; + r2 = 80; + break; + case 1: // KATA + r3 = 81; + r2 = 160; + break; + case 2: // A-Z + r3 = CHAR_A; + r2 = CHAR_Z; + break; + case 3: // a-z + r3 = CHAR_a; + r2 = CHAR_z; + break; + case 4: // 0-9 + r3 = CHAR_0; + r2 = CHAR_0 + 9; + break; + } + + namePtr[sMoveYourBase_XCursorPos] += a0; + if (namePtr[sMoveYourBase_XCursorPos] < r3) + namePtr[sMoveYourBase_XCursorPos] = r2; + if (namePtr[sMoveYourBase_XCursorPos] > r2) + namePtr[sMoveYourBase_XCursorPos] = r3; + } + MoveYourBase_PrintSBOwnerName(); +} + +static bool8 MoveYourBase_HandleJoypad_2(void) +{ + u32 r4 = sMoveYourBase_CursorPos == 0 ? 7 : 10; + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (sMoveYourBase_CursorPos) + MoveYourBase_EditOwnerID(1); + else + MoveYourBase_EditOwnerNameChar(1); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (sMoveYourBase_CursorPos) + MoveYourBase_EditOwnerID(-1); + else + MoveYourBase_EditOwnerNameChar(-1); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (sMoveYourBase_XCursorPos == 0) + sMoveYourBase_XCursorPos = r4 - 1; + else + sMoveYourBase_XCursorPos--; + MoveYourBase_UpdateXCursorPosition(); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (sMoveYourBase_XCursorPos == r4 - 1) + sMoveYourBase_XCursorPos = 0; + else + sMoveYourBase_XCursorPos++; + MoveYourBase_UpdateXCursorPosition(); + return FALSE; + } + + if (gMain.newKeys & SELECT_BUTTON) + { + if (sMoveYourBase_CursorPos == 0) + sSecretBaseNameCharGroup = (sSecretBaseNameCharGroup + 1) % 5; + MoveYourBase_PrintCharacterSetName(); + return FALSE; + } + + if (gMain.newKeys & A_BUTTON) + { + Menu_BlankWindowRect(2, 5, 11, 6); + Menu_BlankWindowRect(11, 1, 11, 2); + gMenuCallback = MoveYourBase_JoypadAction; + return FALSE; + } + + if (gMain.newKeys & B_BUTTON) + { + if (sMoveYourBase_CursorPos == 0) + MoveYourBase_EditOwnerNameChar(100); + return FALSE; + } + + return FALSE; +} + +static bool8 MoveYourBase_JoypadAction(void) +{ + if (gMain.newKeys & DPAD_UP) + { + Menu_MoveCursor(-2); + return FALSE; + } + + if (gMain.newKeys & DPAD_DOWN) + { + Menu_MoveCursor(+2); + return FALSE; + } + + if (gMain.newKeys & DPAD_LEFT) + { + if (sSecretBaseIdx == 0) + sSecretBaseIdx = 19; + else + sSecretBaseIdx--; + MoveYourBase_Redraw(); + return FALSE; + } + + if (gMain.newKeys & DPAD_RIGHT) + { + if (sSecretBaseIdx == 19) + sSecretBaseIdx = 0; + else + sSecretBaseIdx++; + MoveYourBase_Redraw(); + return FALSE; + } + + if (gMain.newKeys & A_BUTTON) + { + if (sSecretBaseIdx != 0 && gSaveBlock1.secretBases[sSecretBaseIdx].secretBaseId != 0) + { + sMoveYourBase_CursorPos = Menu_GetCursorPos(); + sMoveYourBase_XCursorPos = 0; + MoveYourBase_UpdateXCursorPosition(); + MoveYourBase_PrintCharacterSetName(); + gMenuCallback = MoveYourBase_HandleJoypad_2; + } + return FALSE; + } + + if (gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +static bool8 SwitchToMoveYourBaseSubmenu(void) +{ + sSecretBaseIdx = 0; + sSecretBaseNameCharGroup = 0; + gMenuCallback = MoveYourBase_JoypadAction; + Menu_EraseWindowRect(0, 0, 29, 19); + Menu_DrawStdWindowFrame(0, 0, 12, 11); + MoveYourBase_Redraw(); + InitMenu(0, 1, 3, 3, 0, 11); + return FALSE; +} + +// ======================================================= +// MOVING PKMN (aka Roamers) +// ======================================================= + +static const u8 Str_843E580[] = _( + "ADD\n" + "DEL\n" + "EXIT"); + +static bool8 MovingPKMN_HandleJoypad(void) +{ + if (gMain.newKeys & DPAD_UP) + { + Menu_MoveCursor(-1); + return FALSE; + } + + if (gMain.newKeys & DPAD_DOWN) + { + Menu_MoveCursor(+1); + return FALSE; + } + + if (gMain.newKeys & A_BUTTON) + { + CloseMenu(); + switch (Menu_GetCursorPos()) + { + case 0: + Debug_CreateRoamer(); + break; + case 1: + ClearRoamerData(); + ClearRoamerLocationData(); + break; + } + return TRUE; + } + + if (gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +static bool8 MovingPKMN(void) +{ + gMenuCallback = MovingPKMN_HandleJoypad; + Menu_EraseWindowRect(0, 0, 29, 19); + Debug_GetRoamerLocation(gStringVar1); + Menu_DrawStdWindowFrame(0, 0, 11, 9); + Menu_PrintText(gStringVar1, 1, 1); + Menu_PrintText(Str_843E580, 2, 3); + InitMenu(0, 1, 3, 3, 0, 10); + return FALSE; +} + +// ======================================================= +// GIVE ALL BERRIES +// ======================================================= + +static bool8 Give999OfAllBerries(void) +{ + u16 i; + + for (i = 0; i < 43; i++) + { + gSaveBlock1.bagPocket_Berries[i].itemId = ITEM_CHERI_BERRY + i; + gSaveBlock1.bagPocket_Berries[i].quantity = 999; + } + + CloseMenu(); + return TRUE; +} + +// ======================================================= +// GIVE ALL DECORATIONS +// ======================================================= + +static bool8 GiveAllDecorations(void) +{ + ClearDecorationInventories(); + Debug_GiveAllDecorations(); + Menu_EraseWindowRect(0, 0, 29, 19); + CloseMenu(); + return TRUE; +} + +// ======================================================= +// FISHING POINTS (Feebas) +// ======================================================= + +static const u8 Str_843E58D[] = _( + "Fishing location R119\n" + " Y1\n" + " Y2\n" + " Y3\n" + "Encounter location\n" + "\n" + "\n" + "front of you"); + +static u16 FishingPoints_CountFishingTilesInMapThird(u8 a0) +{ + u16 retval = 0; + u16 height = gMapHeader.mapLayout->height / 3; + u16 y; + u16 x; + u16 start = height * a0; + + for (y = start; y < start + height; y++) + { + for (x = 0; x < gMapHeader.mapLayout->width; x++) + { + if (MetatileBehavior_IsFeebasEncounterable(MapGridGetMetatileBehaviorAt(x + 7, y + 7)) == TRUE) + { + retval++; + } + } + } + + return retval; +} + +static u16 FishingPoints_GetIndexOfCurrentFishingSpot(void) +{ + u16 retval = 0; + s16 x; + s16 y; + u16 xx; + u16 yy; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + x -= 7; + y -= 7; + + for (yy = 0; yy < gMapHeader.mapLayout->height; yy++) + { + for (xx = 0; xx < gMapHeader.mapLayout->width; xx++) + { + if (MetatileBehavior_IsFeebasEncounterable(MapGridGetMetatileBehaviorAt(xx + 7, yy + 7)) == TRUE) + { + retval++; + if (x == xx && y == yy) + return retval; + } + } + } + return retval + 1; +} + +static bool8 FishingPoints_HandleJoypad(void) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + Menu_EraseWindowRect(0, 0, 29, 19); + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +static bool8 FishingPoints(void) +{ + u16 nWaterTiles; + u16 nFeebas; + + Menu_EraseWindowRect(0, 0, 29, 19); + Menu_DrawStdWindowFrame(0, 0, 16, 19); + Menu_PrintText(Str_843E58D, 1, 1); + + ConvertIntToDecimalStringN(gStringVar1, FishingPoints_CountFishingTilesInMapThird(0), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 5, 3); + + ConvertIntToDecimalStringN(gStringVar1, FishingPoints_CountFishingTilesInMapThird(1), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 5, 5); + + ConvertIntToDecimalStringN(gStringVar1, FishingPoints_CountFishingTilesInMapThird(2), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 5, 7); + + ConvertIntToDecimalStringN(gStringVar1, FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(0), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 11, 3); + + ConvertIntToDecimalStringN(gStringVar1, FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(1), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 11, 5); + + ConvertIntToDecimalStringN(gStringVar1, FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(2), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 11, 7); + + FeebasSeedRng(gSaveBlock1.easyChatPairs[0].unk2); + nWaterTiles = FishingPoints_CountFishingTilesInMapThird(0) + FishingPoints_CountFishingTilesInMapThird(1) + FishingPoints_CountFishingTilesInMapThird(2); + nFeebas = 0; + + while (nFeebas != 6) + { + u16 randTile = FeebasRandom() % nWaterTiles; + if (randTile == 0) + randTile = nWaterTiles; + if (randTile == 0 || randTile > 3) + { + ConvertIntToDecimalStringN(gStringVar1, randTile, STR_CONV_MODE_RIGHT_ALIGN, 4); + Menu_PrintText(gStringVar1, (nFeebas % 3) * 5 + 2, (nFeebas / 3) * 2 + 11); + nFeebas++; + } + } + + ConvertIntToDecimalStringN(gStringVar1, FishingPoints_GetIndexOfCurrentFishingSpot(), STR_CONV_MODE_RIGHT_ALIGN, 4); + Menu_PrintText(gStringVar1, 2, 17); + + gMenuCallback = FishingPoints_HandleJoypad; + + return FALSE; +} + +// ======================================================= +// GENDER TEST? +// ======================================================= + +static struct { + s16 species; + s8 level; + u8 unk3; +} sNakaGenderTestData[PARTY_SIZE]; + +EWRAM_DATA u8 sNakaGenderTest_CursorPosition = 0; +static const u8 _843E5D1[] = {0x0F, 0x16, 0x19}; +static const u8 Str_843E5D4[] = _( + "Aボタン {ESCAPE}\p" + " Bボタン ー\n" + "START けってい"); + +void NakaGenderTest(void) +{ + u8 i; + + Menu_DrawStdWindowFrame(14, 0, 29, 13); + Menu_DrawStdWindowFrame(0, 14, 29, 19); + Menu_PrintText(Str_843E5D4, 1, 15); + + for (i = 0; i < PARTY_SIZE; i++) + { + sNakaGenderTestData[i].species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES); + if (sNakaGenderTestData[i].species != SPECIES_NONE) + { + sNakaGenderTestData[i].level = GetMonData(gPlayerParty + i, MON_DATA_LEVEL); + NakaGenderTest_PrintSpeciesName(i); + NakaGenderTest_PrintSpeciesGender(i); + NakaGenderTest_PrintSpeciesLevel(i); + } + else + sNakaGenderTestData[i].level = 1; + sNakaGenderTestData[i].unk3 = 0; + } + + sNakaGenderTest_CursorPosition = 0; + PrintTriangleCursorWithPalette(15, 1, 0xFF); + gMenuCallback = NakaGenderTest_HandleJoypad; +} + +static void NakaGenderTest_PrintSpeciesName(u8 i) +{ + Menu_PrintText(gSpeciesNames[sNakaGenderTestData[i].species], 16, 2 * i + 1); +} + +static void NakaGenderTest_PrintSpeciesGender(u8 i) +{ + u8 sp0[] = _("?"); + u8 gender; + + gender = GetMonGender(gPlayerParty + i); + if (gender == MON_MALE) + Menu_PrintText(gOtherText_MaleSymbol2, 23, 2 * i + 1); + else if (gender == MON_FEMALE) + Menu_PrintText(gOtherText_FemaleSymbolAndLv, 23, 2 * i + 1); + else + Menu_PrintText(sp0, 23, 2 * i + 1); +} + +static void NakaGenderTest_PrintSpeciesLevel(u8 i) +{ + ConvertIntToDecimalStringN(gStringVar1, sNakaGenderTestData[i].level, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 26, 2 * i + 1); +} + +static void NakaGenderTest_RedrawCurrent(u8 i) +{ + Menu_BlankWindowRect(16, 2 * i + 1, 28, 2 * i + 2); + if (sNakaGenderTestData[i].species != SPECIES_NONE) + { + NakaGenderTest_PrintSpeciesName(i); + NakaGenderTest_PrintSpeciesGender(i); + NakaGenderTest_PrintSpeciesLevel(i); + } + NakaGenderTest_JoypadAction(5); +} + +static void NakaGenderTest_AdjustSpecies(u8 i, s8 dirn) +{ + if (sNakaGenderTestData[i].species == SPECIES_NONE && sNakaGenderTestData[i].unk3 == 0 && dirn == 1) + sNakaGenderTestData[i].species = SPECIES_TREECKO - 1; + sNakaGenderTestData[i].species += dirn; + if (sNakaGenderTestData[i].species >= SPECIES_CHIMECHO) + sNakaGenderTestData[i].species -= SPECIES_CHIMECHO; + if (sNakaGenderTestData[i].species < 0) + sNakaGenderTestData[i].species += SPECIES_CHIMECHO; + CreateMon(gPlayerParty + i, sNakaGenderTestData[i].species, sNakaGenderTestData[i].level, 0x20, FALSE, 0, FALSE, 0); + sNakaGenderTestData[i].unk3 = 1; +} + +static void NakaGenderTest_RerollPokemon(u8 i) +{ + if (sNakaGenderTestData[i].species != SPECIES_NONE) + NakaGenderTest_ForceRerollPokemon(i); +} + +static void NakaGenderTest_AdjustLevel(u8 i, s8 dirn) +{ + if (sNakaGenderTestData[i].species != SPECIES_NONE) + { + sNakaGenderTestData[i].level += dirn; + if (sNakaGenderTestData[i].level > 100) + sNakaGenderTestData[i].level = 1; + if (sNakaGenderTestData[i].level < 1) + sNakaGenderTestData[i].level = 100; + SetMonData(gPlayerParty + i, MON_DATA_EXP, gExperienceTables[gBaseStats[sNakaGenderTestData[i].species].growthRate] + sNakaGenderTestData[i].level); + Nakamura_NakaGenderTest_RecalcStats(gPlayerParty + i); + } +} + +static void NakaGenderTest_PartyCompactionEnsureAtLeastOne(void) +{ + u8 i; + u8 j; + + Menu_EraseWindowRect(0, 0, 29, 19); + for (i = 0; i < 5; i++) + { + for (j = i + 1; j < 6; j++) + { + if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES, NULL) == SPECIES_NONE) + { + struct Pokemon tmp = gPlayerParty[i]; + gPlayerParty[i] = gPlayerParty[j]; + gPlayerParty[j] = tmp; + } + } + } + CalculatePlayerPartyCount(); + if (gPlayerPartyCount == 0) + { + CreateMon(gPlayerParty + 0, SPECIES_BULBASAUR, 10, 0x20, FALSE, 0, FALSE, 0); + gPlayerPartyCount = 1; + } +} + +static void NakaGenderTest_JoypadAction(u8 i) +{ + u8 q; + u8 r; + PlaySE(SE_SELECT); + q = sNakaGenderTest_CursorPosition / 6; + r = sNakaGenderTest_CursorPosition % 6; + Menu_BlankWindowRect(_843E5D1[q], r * 2 + 1, _843E5D1[q], r * 2 + 2); + + if (i == 0) + { + if (r != 0) + sNakaGenderTest_CursorPosition--; + else + sNakaGenderTest_CursorPosition = q * 6 + 5; + } + + if (i == 1) + { + if (r != 5) + sNakaGenderTest_CursorPosition++; + else + sNakaGenderTest_CursorPosition = q * 6; + } + + if (i == 2) + { + if (q != 0) + sNakaGenderTest_CursorPosition -= 6; + else + sNakaGenderTest_CursorPosition = 12 + r; + } + + if (i == 3) + { + if (q != 2) + sNakaGenderTest_CursorPosition += 6; + else + sNakaGenderTest_CursorPosition = r; + } + + q = sNakaGenderTest_CursorPosition / 6; + r = sNakaGenderTest_CursorPosition % 6; + PrintTriangleCursorWithPalette(_843E5D1[q], r * 2 + 1, 0xFF); +} + +static bool8 NakaGenderTest_HandleJoypad(void) +{ + if (gMain.newKeys & DPAD_UP) + { + NakaGenderTest_JoypadAction(0); + return FALSE; + } + + if (gMain.newKeys & DPAD_DOWN) + { + NakaGenderTest_JoypadAction(1); + return FALSE; + } + + if (gMain.newKeys & DPAD_LEFT) + { + NakaGenderTest_JoypadAction(2); + return FALSE; + } + + if (gMain.newKeys & DPAD_RIGHT) + { + NakaGenderTest_JoypadAction(3); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & A_BUTTON) + { + if (sNakaGenderTest_CursorPosition < 6) + NakaGenderTest_AdjustSpecies(sNakaGenderTest_CursorPosition, +1); + if (sNakaGenderTest_CursorPosition >= 6 && sNakaGenderTest_CursorPosition < 12) + NakaGenderTest_RerollPokemon(sNakaGenderTest_CursorPosition % 6); + if (sNakaGenderTest_CursorPosition >= 12 && sNakaGenderTest_CursorPosition < 18) + NakaGenderTest_AdjustLevel(sNakaGenderTest_CursorPosition % 6, +1); + NakaGenderTest_RedrawCurrent(sNakaGenderTest_CursorPosition % 6); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & B_BUTTON) + { + if (sNakaGenderTest_CursorPosition < 6) + NakaGenderTest_AdjustSpecies(sNakaGenderTest_CursorPosition, -1); + if (sNakaGenderTest_CursorPosition >= 6 && sNakaGenderTest_CursorPosition < 12) + NakaGenderTest_RerollPokemon(sNakaGenderTest_CursorPosition % 6); + if (sNakaGenderTest_CursorPosition >= 12 && sNakaGenderTest_CursorPosition < 18) + NakaGenderTest_AdjustLevel(sNakaGenderTest_CursorPosition % 6, -1); + NakaGenderTest_RedrawCurrent(sNakaGenderTest_CursorPosition % 6); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & R_BUTTON) + { + if (sNakaGenderTest_CursorPosition < 6) + NakaGenderTest_AdjustSpecies(sNakaGenderTest_CursorPosition, +10); + if (sNakaGenderTest_CursorPosition >= 6 && sNakaGenderTest_CursorPosition < 12) + NakaGenderTest_RerollPokemon(sNakaGenderTest_CursorPosition % 6); + if (sNakaGenderTest_CursorPosition >= 12 && sNakaGenderTest_CursorPosition < 18) + NakaGenderTest_AdjustLevel(sNakaGenderTest_CursorPosition % 6, +1); + NakaGenderTest_RedrawCurrent(sNakaGenderTest_CursorPosition % 6); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & L_BUTTON) + { + if (sNakaGenderTest_CursorPosition < 6) + NakaGenderTest_AdjustSpecies(sNakaGenderTest_CursorPosition, -10); + if (sNakaGenderTest_CursorPosition >= 6 && sNakaGenderTest_CursorPosition < 12) + NakaGenderTest_RerollPokemon(sNakaGenderTest_CursorPosition % 6); + if (sNakaGenderTest_CursorPosition >= 12 && sNakaGenderTest_CursorPosition < 18) + NakaGenderTest_AdjustLevel(sNakaGenderTest_CursorPosition % 6, -1); + NakaGenderTest_RedrawCurrent(sNakaGenderTest_CursorPosition % 6); + return FALSE; + } + + if (gMain.newKeys & START_BUTTON) + { + NakaGenderTest_PartyCompactionEnsureAtLeastOne(); + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +static u8 NakaGenderTest_ForceRerollPokemon(u8 i) +{ + u16 species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES); + u8 gender = GetMonGender(gPlayerParty + i); + u8 ratio = gBaseStats[species].genderRatio; + u32 personality; + + if (ratio == MON_MALE || ratio == MON_FEMALE || ratio == MON_GENDERLESS) + return GetMonGender(gPlayerParty + i); + + switch (gender) + { + default: + return MON_MALE; + case MON_MALE: + ratio = MON_FEMALE; + break; + case MON_FEMALE: + ratio = MON_MALE; + break; + } + + do + { + personality = Random(); + personality |= (Random() << 16); + } while (GetGenderFromSpeciesAndPersonality(species, personality) != ratio); + + GetMonData(gPlayerParty + i, MON_DATA_IVS); + CreateMon(gPlayerParty + i, sNakaGenderTestData[i].species, sNakaGenderTestData[i].level, 0x20, TRUE, personality, FALSE, 0); + return ratio; +} + +// ======================================================= +// SET POKEBLOCK +// ======================================================= + +static struct Pokeblock sPokeblock; + +#ifdef NONMATCHING +static u8 SetPokeblock_CalcColor(u8 * dest, struct Pokeblock * pokeblock) +{ + u8 numGoodFlavors = 0; + u8 numBadFlavors = 0; + u8 numNeutralFlavors = 0; + u8 i; + u8 numLowFlavors; + s16 pkblk[6]; + + for (i = 0; i < 6; i++) + { + pkblk[i] = GetPokeblockData(pokeblock, i + PBLOCK_SPICY); + if (i != PBLOCK_FEEL - 1) + { + if (pkblk[i] > 0) + numGoodFlavors++; + if (pkblk[i] < 0) + numBadFlavors++; + if (pkblk[i] == 0) + numNeutralFlavors++; + } + } + + if (pkblk[0] >= 50) + { + StringCopy(dest, ContestStatsText_GoldPokeBlock); + return PBLOCK_CLR_GOLD; + } + + if (pkblk[1] >= 50) + { + StringCopy(dest, ContestStatsText_GoldPokeBlock); + return PBLOCK_CLR_GOLD; + } + + if (pkblk[2] >= 50) + { + StringCopy(dest, ContestStatsText_GoldPokeBlock); + return PBLOCK_CLR_GOLD; + } + + if (pkblk[3] >= 50) + { + StringCopy(dest, ContestStatsText_GoldPokeBlock); + return PBLOCK_CLR_GOLD; + } + + if (pkblk[4] >= 50) + { + StringCopy(dest, ContestStatsText_GoldPokeBlock); + return PBLOCK_CLR_GOLD; + } + + if (numGoodFlavors == 4) + { + StringCopy(dest, ContestStatsText_WhitePokeBlock); + return PBLOCK_CLR_WHITE; + } + + numLowFlavors = 0; + for (i = 0; i < 5; i++) + { + if (pkblk[i] == 2) + numLowFlavors++; + } + if (numLowFlavors == 3 || numNeutralFlavors == 5 || numBadFlavors == 4) + { + StringCopy(dest, ContestStatsText_BlackPokeBlock); + return PBLOCK_CLR_BLACK; + } + + if (numGoodFlavors == 3) + { + StringCopy(dest, ContestStatsText_GrayPokeBlock); + return PBLOCK_CLR_GRAY; + } + + if (numGoodFlavors == 2 || numBadFlavors == 2) + { + u8 firstNonzeroFlavor = 6; + u8 lastNonzeroFlavor = 0; + for (i = 0; i < 5; i++) + { + if (pkblk[i] != 0) + { + if (firstNonzeroFlavor == 6) + firstNonzeroFlavor = i; + else + lastNonzeroFlavor = i; + } + } + if (pkblk[firstNonzeroFlavor] >= pkblk[lastNonzeroFlavor]) + lastNonzeroFlavor = firstNonzeroFlavor; + + if (lastNonzeroFlavor == 0) + { + StringCopy(dest, ContestStatsText_PurplePokeBlock); + return PBLOCK_CLR_PURPLE; + } + + if (lastNonzeroFlavor == 1) + { + StringCopy(dest, ContestStatsText_IndigoPokeBlock); + return PBLOCK_CLR_INDIGO; + } + + if (lastNonzeroFlavor == 2) + { + StringCopy(dest, ContestStatsText_BrownPokeBlock); + return PBLOCK_CLR_BROWN; + } + + if (lastNonzeroFlavor == 3) + { + StringCopy(dest, ContestStatsText_LiteBluePokeBlock); + return PBLOCK_CLR_LITEBLUE; + } + + if (lastNonzeroFlavor == 4) + { + StringCopy(dest, ContestStatsText_OlivePokeBlock); + return PBLOCK_CLR_OLIVE; + } + } + + if (numGoodFlavors == 1 || numBadFlavors == 1) + { + if (pkblk[0] != 0) + { + StringCopy(dest, ContestStatsText_RedPokeBlock); + return PBLOCK_CLR_RED; + } + + if (pkblk[1] != 0) + { + StringCopy(dest, ContestStatsText_BluePokeBlock); + return PBLOCK_CLR_BLUE; + } + + if (pkblk[2] != 0) + { + StringCopy(dest, ContestStatsText_PinkPokeBlock); + return PBLOCK_CLR_PINK; + } + + if (pkblk[3] != 0) + { + StringCopy(dest, ContestStatsText_GreenPokeBlock); + return PBLOCK_CLR_GREEN; + } + + if (pkblk[4] != 0) + { + StringCopy(dest, ContestStatsText_YellowPokeBlock); + return PBLOCK_CLR_YELLOW; + } + } + + StringCopy(dest, gOtherText_FiveQuestions); + return 0; // PBLOCK_CLR_UNKNOWN +} +#else +NAKED +static u8 SetPokeblock_CalcColor(u8 * dest, struct Pokeblock * pokeblock) +{ + asm("\tpush\t{r4, r5, r6, r7, lr}\n" + "\tmov\tr7, r9\n" + "\tmov\tr6, r8\n" + "\tpush\t{r6, r7}\n" + "\tadd\tsp, sp, #0xfffffff0\n" + "\tadd\tr6, r0, #0\n" + "\tmov\tr9, r1\n" + "\tmov\tr7, #0x0\n" + "\tmov\tr0, #0x0\n" + "\tmov\tr8, r0\n" + "\tmov\tr2, #0x0\n" + "\tmov\tr5, #0x0\n" + "._329:\n" + "\tadd\tr4, r5, #1\n" + "\tlsl\tr1, r4, #0x18\n" + "\tlsr\tr1, r1, #0x18\n" + "\tmov\tr0, r9\n" + "\tstr\tr2, [sp, #0xc]\n" + "\tbl\tGetPokeblockData\n" + "\tadd\tr1, r0, #0\n" + "\tlsl\tr0, r5, #0x1\n" + "\tadd r0, r0, sp\n" + "\tstrh\tr1, [r0]\n" + "\tldr\tr2, [sp, #0xc]\n" + "\tcmp\tr5, #0x5\n" + "\tbeq\t._328\t@cond_branch\n" + "\tlsl\tr0, r1, #0x10\n" + "\tasr\tr1, r0, #0x10\n" + "\tcmp\tr1, #0\n" + "\tble\t._326\t@cond_branch\n" + "\tadd\tr0, r7, #1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr7, r0, #0x18\n" + "._326:\n" + "\tcmp\tr1, #0\n" + "\tbge\t._327\t@cond_branch\n" + "\tmov\tr0, r8\n" + "\tadd\tr0, r0, #0x1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr0, r0, #0x18\n" + "\tmov\tr8, r0\n" + "._327:\n" + "\tcmp\tr1, #0\n" + "\tbne\t._328\t@cond_branch\n" + "\tadd\tr0, r2, #1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr2, r0, #0x18\n" + "._328:\n" + "\tlsl\tr0, r4, #0x18\n" + "\tlsr\tr5, r0, #0x18\n" + "\tcmp\tr5, #0x5\n" + "\tbls\t._329\t@cond_branch\n" + "\tmov\tr0, sp\n" + "\tmov\tr1, #0x0\n" + "\tldsh\tr0, [r0, r1]\n" + "\tcmp\tr0, #0x31\n" + "\tbgt\t._333\t@cond_branch\n" + "\tmov\tr0, sp\n" + "\tldrh\tr0, [r0, #0x2]\n" + "\tlsl\tr0, r0, #0x10\n" + "\tasr\tr0, r0, #0x10\n" + "\tcmp\tr0, #0x31\n" + "\tbgt\t._333\t@cond_branch\n" + "\tmov\tr0, sp\n" + "\tmov\tr4, #0x4\n" + "\tldsh\tr0, [r0, r4]\n" + "\tcmp\tr0, #0x31\n" + "\tbgt\t._333\t@cond_branch\n" + "\tmov\tr0, sp\n" + "\tmov\tr1, #0x6\n" + "\tldsh\tr0, [r0, r1]\n" + "\tcmp\tr0, #0x31\n" + "\tbgt\t._333\t@cond_branch\n" + "\tmov\tr0, sp\n" + "\tmov\tr4, #0x8\n" + "\tldsh\tr0, [r0, r4]\n" + "\tcmp\tr0, #0x31\n" + "\tble\t._334\t@cond_branch\n" + "._333:\n" + "\tldr\tr1, ._336 @ ContestStatsText_GoldPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0xe\n" + "\tb\t._400\n" + "._337:\n" + "\t.align\t2, 0\n" + "._336:\n" + "\t.word\tContestStatsText_GoldPokeBlock\n" + "._334:\n" + "\tcmp\tr7, #0x4\n" + "\tbne\t._338\t@cond_branch\n" + "\tldr\tr1, ._340 @ ContestStatsText_WhitePokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0xd\n" + "\tb\t._400\n" + "._341:\n" + "\t.align\t2, 0\n" + "._340:\n" + "\t.word\tContestStatsText_WhitePokeBlock\n" + "._338:\n" + "\tmov\tr3, #0x0\n" + "\tmov\tr5, #0x0\n" + "._343:\n" + "\tlsl\tr0, r5, #0x1\n" + "\tadd r0, r0, sp\n" + "\tmov\tr1, #0x0\n" + "\tldsh\tr0, [r0, r1]\n" + "\tcmp\tr0, #0x2\n" + "\tbne\t._342\t@cond_branch\n" + "\tadd\tr0, r3, #1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr3, r0, #0x18\n" + "._342:\n" + "\tadd\tr0, r5, #1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr5, r0, #0x18\n" + "\tcmp\tr5, #0x4\n" + "\tbls\t._343\t@cond_branch\n" + "\tcmp\tr3, #0x3\n" + "\tbeq\t._345\t@cond_branch\n" + "\tcmp\tr2, #0x5\n" + "\tbeq\t._345\t@cond_branch\n" + "\tmov\tr4, r8\n" + "\tcmp\tr4, #0x4\n" + "\tbne\t._346\t@cond_branch\n" + "._345:\n" + "\tldr\tr1, ._348 @ ContestStatsText_BlackPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0xc\n" + "\tb\t._400\n" + "._349:\n" + "\t.align\t2, 0\n" + "._348:\n" + "\t.word\tContestStatsText_BlackPokeBlock\n" + "._346:\n" + "\tcmp\tr7, #0x3\n" + "\tbne\t._350\t@cond_branch\n" + "\tldr\tr1, ._352 @ ContestStatsText_GrayPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0xb\n" + "\tb\t._400\n" + "._353:\n" + "\t.align\t2, 0\n" + "._352:\n" + "\t.word\tContestStatsText_GrayPokeBlock\n" + "._350:\n" + "\tcmp\tr7, #0x2\n" + "\tbeq\t._354\t@cond_branch\n" + "\tmov\tr0, r8\n" + "\tcmp\tr0, #0x2\n" + "\tbne\t._377\t@cond_branch\n" + "._354:\n" + "\tmov\tr3, #0x6\n" + "\tmov\tr2, #0x0\n" + "\tmov\tr5, #0x0\n" + "._359:\n" + "\tlsl\tr0, r5, #0x1\n" + "\tadd r0, r0, sp\n" + "\tmov\tr1, #0x0\n" + "\tldsh\tr0, [r0, r1]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._358\t@cond_branch\n" + "\tcmp\tr3, #0x6\n" + "\tbne\t._357\t@cond_branch\n" + "\tadd\tr3, r5, #0\n" + "\tb\t._358\n" + "._357:\n" + "\tadd\tr2, r5, #0\n" + "._358:\n" + "\tadd\tr0, r5, #1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr5, r0, #0x18\n" + "\tcmp\tr5, #0x4\n" + "\tbls\t._359\t@cond_branch\n" + "\tlsl\tr0, r3, #0x1\n" + "\tmov\tr4, sp\n" + "\tadd\tr1, r4, r0\n" + "\tlsl\tr0, r2, #0x1\n" + "\tadd r0, r0, sp\n" + "\tmov\tr4, #0x0\n" + "\tldsh\tr1, [r1, r4]\n" + "\tmov\tr4, #0x0\n" + "\tldsh\tr0, [r0, r4]\n" + "\tcmp\tr1, r0\n" + "\tblt\t._360\t@cond_branch\n" + "\tadd\tr2, r3, #0\n" + "._360:\n" + "\tcmp\tr2, #0\n" + "\tbne\t._361\t@cond_branch\n" + "\tldr\tr1, ._363 @ ContestStatsText_PurplePokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x6\n" + "\tb\t._400\n" + "._364:\n" + "\t.align\t2, 0\n" + "._363:\n" + "\t.word\tContestStatsText_PurplePokeBlock\n" + "._361:\n" + "\tcmp\tr2, #0x1\n" + "\tbne\t._365\t@cond_branch\n" + "\tldr\tr1, ._367 @ ContestStatsText_IndigoPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x7\n" + "\tb\t._400\n" + "._368:\n" + "\t.align\t2, 0\n" + "._367:\n" + "\t.word\tContestStatsText_IndigoPokeBlock\n" + "._365:\n" + "\tcmp\tr2, #0x2\n" + "\tbne\t._369\t@cond_branch\n" + "\tldr\tr1, ._371 @ ContestStatsText_BrownPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x8\n" + "\tb\t._400\n" + "._372:\n" + "\t.align\t2, 0\n" + "._371:\n" + "\t.word\tContestStatsText_BrownPokeBlock\n" + "._369:\n" + "\tcmp\tr2, #0x3\n" + "\tbne\t._373\t@cond_branch\n" + "\tldr\tr1, ._375 @ ContestStatsText_LiteBluePokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x9\n" + "\tb\t._400\n" + "._376:\n" + "\t.align\t2, 0\n" + "._375:\n" + "\t.word\tContestStatsText_LiteBluePokeBlock\n" + "._373:\n" + "\tcmp\tr2, #0x4\n" + "\tbne\t._377\t@cond_branch\n" + "\tldr\tr1, ._379 @ ContestStatsText_OlivePokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0xa\n" + "\tb\t._400\n" + "._380:\n" + "\t.align\t2, 0\n" + "._379:\n" + "\t.word\tContestStatsText_OlivePokeBlock\n" + "._377:\n" + "\tcmp\tr7, #0x1\n" + "\tbeq\t._381\t@cond_branch\n" + "\tmov\tr0, r8\n" + "\tcmp\tr0, #0x1\n" + "\tbne\t._399\t@cond_branch\n" + "._381:\n" + "\tmov\tr0, sp\n" + "\tmov\tr1, #0x0\n" + "\tldsh\tr0, [r0, r1]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._383\t@cond_branch\n" + "\tldr\tr1, ._385 @ ContestStatsText_RedPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x1\n" + "\tb\t._400\n" + "._386:\n" + "\t.align\t2, 0\n" + "._385:\n" + "\t.word\tContestStatsText_RedPokeBlock\n" + "._383:\n" + "\tmov\tr0, sp\n" + "\tldrh\tr0, [r0, #0x2]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._387\t@cond_branch\n" + "\tldr\tr1, ._389 @ ContestStatsText_BluePokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x2\n" + "\tb\t._400\n" + "._390:\n" + "\t.align\t2, 0\n" + "._389:\n" + "\t.word\tContestStatsText_BluePokeBlock\n" + "._387:\n" + "\tmov\tr0, sp\n" + "\tmov\tr4, #0x4\n" + "\tldsh\tr0, [r0, r4]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._391\t@cond_branch\n" + "\tldr\tr1, ._393 @ ContestStatsText_PinkPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x3\n" + "\tb\t._400\n" + "._394:\n" + "\t.align\t2, 0\n" + "._393:\n" + "\t.word\tContestStatsText_PinkPokeBlock\n" + "._391:\n" + "\tmov\tr0, sp\n" + "\tmov\tr1, #0x6\n" + "\tldsh\tr0, [r0, r1]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._395\t@cond_branch\n" + "\tldr\tr1, ._397 @ ContestStatsText_GreenPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x4\n" + "\tb\t._400\n" + "._398:\n" + "\t.align\t2, 0\n" + "._397:\n" + "\t.word\tContestStatsText_GreenPokeBlock\n" + "._395:\n" + "\tmov\tr0, sp\n" + "\tmov\tr4, #0x8\n" + "\tldsh\tr0, [r0, r4]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._399\t@cond_branch\n" + "\tldr\tr1, ._401 @ ContestStatsText_YellowPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x5\n" + "\tb\t._400\n" + "._402:\n" + "\t.align\t2, 0\n" + "._401:\n" + "\t.word\tContestStatsText_YellowPokeBlock\n" + "._399:\n" + "\tldr\tr1, ._403 @ gOtherText_FiveQuestions\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x0\n" + "._400:\n" + "\tadd\tsp, sp, #0x10\n" + "\tpop\t{r3, r4}\n" + "\tmov\tr8, r3\n" + "\tmov\tr9, r4\n" + "\tpop\t{r4, r5, r6, r7}\n" + "\tpop\t{r1}\n" + "\tbx\tr1\n" + "._404:\n" + "\t.align\t2, 0\n" + "._403:\n" + "\t.word\tgOtherText_FiveQuestions"); +} +#endif // NONMATCHING + +static void NakaDebug_PrintNum3Chars(u8 * buff, s16 a1) +{ + u8 i; + s16 divisor; + s16 quot; + s16 printZero; + + for (i = 0; i < 4; i++) + buff[i] = CHAR_SPACE; + buff[4] = EOS; + + if (a1 == 0) + buff[3] = CHAR_0; + else if (a1 > 0) + { + divisor = 100; + printZero = FALSE; + for (i = 0; i < 3; i++) + { + quot = a1 / divisor; + if (printZero || i == 2 || quot != 0) + { + buff[i + 1] = CHAR_0 + quot; + printZero = TRUE; + } + a1 %= divisor; + divisor /= 10; + } + } + else if (a1 < 0) + { + a1 = -a1; + divisor = 100; + printZero = FALSE; + for (i = 0; i < 3; i++) + { + quot = a1 / divisor; + if (printZero || i == 2 || quot != 0) + { + buff[i + 1] = CHAR_0 + quot; + if (!printZero) + buff[i] = CHAR_HYPHEN; + printZero = TRUE; + } + a1 %= divisor; + divisor /= 10; + } + } +} + +static void SetPokeblock_PrintFlavorValue(u8 a0) +{ + struct Pokeblock *pkblk = &sPokeblock; + + if (a0 == 0) + { + NakaDebug_PrintNum3Chars(gStringVar1, pkblk->spicy); + Menu_PrintText(gStringVar1, 8, 3); + } + else if (a0 == 1) + { + NakaDebug_PrintNum3Chars(gStringVar1, pkblk->dry); + Menu_PrintText(gStringVar1, 8, 5); + } + else if (a0 == 2) + { + NakaDebug_PrintNum3Chars(gStringVar1, pkblk->sweet); + Menu_PrintText(gStringVar1, 8, 7); + } + else if (a0 == 3) + { + NakaDebug_PrintNum3Chars(gStringVar1, pkblk->bitter); + Menu_PrintText(gStringVar1, 8, 9); + } + else if (a0 == 4) + { + NakaDebug_PrintNum3Chars(gStringVar1, pkblk->sour); + Menu_PrintText(gStringVar1, 8, 11); + } + else if (a0 == 5) + { + NakaDebug_PrintNum3Chars(gStringVar1, pkblk->feel); + Menu_PrintText(gStringVar1, 8, 13); + } +} + +static void SetPokeblock_AdjustFlavor(u8 a0, s8 a1) +{ + struct Pokeblock *pkblk = &sPokeblock; + + if (a0 == 0) + pkblk->spicy += a1; + else if (a0 == 1) + pkblk->dry += a1; + else if (a0 == 2) + pkblk->sweet += a1; + else if (a0 == 3) + pkblk->bitter += a1; + else if (a0 == 4) + pkblk->sour += a1; + else if (a0 == 5) + pkblk->feel += a1; +} + +static void SetPokeblock_RecomputeAndPrintColor(void) +{ + sPokeblock.color = SetPokeblock_CalcColor(gStringVar1, &sPokeblock); + Menu_BlankWindowRect(1, 1, 8, 2); + Menu_PrintText(gStringVar1, 1, 1); +} + +static void SetPokeblock_Init(void) +{ + u8 i; + + Menu_DrawStdWindowFrame(0, 0, 12, 15); + SetPokeblock_RecomputeAndPrintColor(); + Menu_PrintText(gContestStatsText_Spicy, 2, 3); + Menu_PrintText(gContestStatsText_Dry, 2, 5); + Menu_PrintText(gContestStatsText_Sweet, 2, 7); + Menu_PrintText(gContestStatsText_Bitter, 2, 9); + Menu_PrintText(gContestStatsText_Sour, 2, 11); + Menu_PrintText(gContestStatsText_Tasty, 2, 13); + + for (i = 0; i < 6; i++) + SetPokeblock_PrintFlavorValue(i); + + InitMenu(0, 1, 3, 6, 0, 11); +} + +static void SetPokeblock_GivePokeblock(void) +{ + struct Pokeblock * pkblk = &sPokeblock; + u8 rval = 0; + u8 i; + + if (pkblk->color == PBLOCK_CLR_BLACK) + { + if (pkblk->spicy == 2) + rval++; + + if (pkblk->sweet == 2) + rval++; + + if (pkblk->bitter == 2) + rval++; + + if (pkblk->dry == 2) + rval++; + + if (pkblk->sour == 2) + rval++; + + if (rval != 3) + { + pkblk->spicy = 2; + pkblk->sweet = 2; + pkblk->bitter = 2; + } + } + + GivePokeblock(pkblk); + SetPokeblock_RecomputeAndPrintColor(); + + for (i = 0; i < 6; i++) + SetPokeblock_PrintFlavorValue(i); +} + +static bool8 SetPokeblock_HandleJoypad(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + Menu_MoveCursor(-1); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + Menu_MoveCursor(+1); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + SetPokeblock_AdjustFlavor(Menu_GetCursorPos(), -1); + SetPokeblock_PrintFlavorValue(Menu_GetCursorPos()); + SetPokeblock_RecomputeAndPrintColor(); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + SetPokeblock_AdjustFlavor(Menu_GetCursorPos(), +1); + SetPokeblock_PrintFlavorValue(Menu_GetCursorPos()); + SetPokeblock_RecomputeAndPrintColor(); + return FALSE; + } + + if (gMain.newKeys & A_BUTTON) + { + SetPokeblock_GivePokeblock(); + PlaySE(SE_SELECT); + return FALSE; + } + + if (gMain.newKeys & B_BUTTON) + { + Menu_EraseWindowRect(0, 0, 29, 19); + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +static bool8 SetPokeblock(void) +{ + Menu_EraseWindowRect(0, 0, 29, 19); + SetPokeblock_Init(); + gMenuCallback = SetPokeblock_HandleJoypad; + return FALSE; +} + +// ======================================================= +// EFFORT VALUES +// ======================================================= + +EWRAM_DATA u8 sEVTest_CursorPosition = 0; + +static const u8 Str_843E5F2[] = _("HP どりょくち"); +static const u8 Str_843E5FB[] = _("こうげき どりょくち"); +static const u8 Str_843E606[] = _("ぼうぎょ どりょくち"); +static const u8 Str_843E611[] = _("すばやさ どりょくち"); +static const u8 Str_843E61C[] = _("とくこう どりょくち"); +static const u8 Str_843E627[] = _("とくぼう どりょくち"); +static const u8 Str_843E632[] = _("なつきど"); +static const u8 Str_843E637[] = _("どりょくち ごうけい"); + +static void EVTest_Init(void) +{ + Menu_DrawStdWindowFrame(0, 0, 22, 19); + Menu_PrintText(gOtherText_Slash, 11, 1); + Menu_PrintText(Str_843E5F2, 2, 3); + Menu_PrintText(Str_843E5FB, 2, 5); + Menu_PrintText(Str_843E606, 2, 7); + Menu_PrintText(Str_843E611, 2, 9); + Menu_PrintText(Str_843E61C, 2, 11); + Menu_PrintText(Str_843E627, 2, 13); + Menu_PrintText(Str_843E637, 2, 15); + Menu_PrintText(Str_843E632, 2, 17); +} + +static void EVTest_PrintMonData(struct Pokemon *pokemon) +{ + u16 evTotal; + u16 curEv; + + Menu_BlankWindowRect(1, 1, 10, 2); + GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1); + Menu_PrintText(gStringVar1, 1, 1); + + Menu_BlankWindowRect(12, 1, 21, 2); + Menu_PrintText(gSpeciesNames[GetMonData(pokemon, MON_DATA_SPECIES)], 12, 1); + + curEv = GetMonData(pokemon, MON_DATA_HP_EV); + evTotal = curEv; + ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 3, 17, 4); + Menu_PrintText(gStringVar1, 13, 3); + + curEv = GetMonData(pokemon, MON_DATA_ATK_EV); + evTotal += curEv; + ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 5, 17, 6); + Menu_PrintText(gStringVar1, 13, 5); + + curEv = GetMonData(pokemon, MON_DATA_DEF_EV); + evTotal += curEv; + ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 7, 17, 8); + Menu_PrintText(gStringVar1, 13, 7); + + curEv = GetMonData(pokemon, MON_DATA_SPEED_EV); + evTotal += curEv; + ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 9, 17, 10); + Menu_PrintText(gStringVar1, 13, 9); + + curEv = GetMonData(pokemon, MON_DATA_SPATK_EV); + evTotal += curEv; + ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 11, 17, 12); + Menu_PrintText(gStringVar1, 13, 11); + + curEv = GetMonData(pokemon, MON_DATA_SPDEF_EV); + evTotal += curEv; + ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 13, 17, 14); + Menu_PrintText(gStringVar1, 13, 13); + + ConvertIntToDecimalStringN(gStringVar1, evTotal, STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 15, 17, 16); + Menu_PrintText(gStringVar1, 13, 15); + + ConvertIntToDecimalStringN(gStringVar1, GetMonData(pokemon, MON_DATA_FRIENDSHIP), STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 17, 17, 18); + Menu_PrintText(gStringVar1, 13, 17); +} + +static void EVTest_MovePartyCursor(s8 a0) +{ + s16 i; + if (a0 == -1) + { + if (sEVTest_CursorPosition == 0) + { + for (i = 5; i >= 0; i--) + { + if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES) != SPECIES_NONE) + { + sEVTest_CursorPosition = i; + return; + } + } + } + sEVTest_CursorPosition += a0; + return; + } + + if (a0 == 1) + { + sEVTest_CursorPosition += a0; + if (sEVTest_CursorPosition == 6) + sEVTest_CursorPosition = 0; + else if (GetMonData(gPlayerParty + sEVTest_CursorPosition, MON_DATA_SPECIES) == SPECIES_NONE) + sEVTest_CursorPosition = 0; + } +} + +static bool8 EVTest_HandleJoypad(void) +{ + if (gMain.newKeys & DPAD_LEFT) + { + EVTest_MovePartyCursor(-1); + EVTest_PrintMonData(gPlayerParty + sEVTest_CursorPosition); + return FALSE; + } + + if (gMain.newKeys & DPAD_RIGHT) + { + EVTest_MovePartyCursor(+1); + EVTest_PrintMonData(gPlayerParty + sEVTest_CursorPosition); + return FALSE; + } + + if (gMain.newKeys & B_BUTTON) + { + Menu_EraseWindowRect(0, 0, 29, 19); + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +bool8 DebugMenu_EffortValues(void) +{ + Menu_EraseWindowRect(0, 0, 29, 19); + sEVTest_CursorPosition = 0; + EVTest_Init(); + EVTest_PrintMonData(gPlayerParty + 0); + gMenuCallback = EVTest_HandleJoypad; + return FALSE; +} + +// ======================================================= +// RNG Test +// ======================================================= + +EWRAM_DATA u16 sRngLeft = 0; +EWRAM_DATA u16 sRngRight = 0; +EWRAM_DATA u16 sNumSamples = 0; +EWRAM_DATA u16 sRngMax = 0; + +static const u8 Str_843E642[] = _("ここから"); +static const u8 Str_843E647[] = _("ここまで"); +static const u8 Str_843E64C[] = _("かいすう"); +static const u8 Str_843E651[] = _("けっか"); +static const u8 Str_843E655[] = _("かい"); +static const u8 Str_843E658[] = _("0"); +static const u8 Str_843E65A[] = _("はんい"); + +static u16 EVTest_GetDiscreteUniformRandomSamples(void) +{ + u16 sampCount = 0; + u16 left; + u16 right; + u32 i; + + if (sRngLeft <= sRngRight) + { + left = sRngLeft; + right = sRngRight; + } + else + { + left = sRngRight; + right = sRngLeft; + } + + for (i = 0; i < sNumSamples; i++) + { + u16 r0 = Random() % sRngMax; + if (r0 >= left && r0 <= right) + sampCount++; + } + + return sampCount; +} + +static void RNGTest_Init(void) +{ + Menu_DrawStdWindowFrame(0, 0, 15, 11); + Menu_PrintText(Str_843E642, 2, 1); + Menu_PrintText(Str_843E647, 2, 3); + Menu_PrintText(Str_843E65A, 2, 5); + Menu_PrintText(Str_843E64C, 2, 7); + Menu_PrintText(Str_843E651, 2, 9); + Menu_PrintText(Str_843E655, 13, 9); + Menu_PrintText(Str_843E658, 12, 1); + Menu_PrintText(Str_843E658, 12, 3); + Menu_PrintText(Str_843E658, 12, 5); + Menu_PrintText(Str_843E658, 12, 7); + Menu_PrintText(Str_843E658, 12, 9); + InitMenu(0, 1, 1, 4, 0, 14); +} + +static void RNGTest_PrintNum(u16 a0) +{ + ConvertIntToDecimalStringN(gStringVar1, a0, STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 8, 9); +} + +static void RNGTest_AdjustAndPrintNumAtLine(u16 * a0, s8 a1, u8 a2) +{ + *a0 += a1; + ConvertIntToDecimalStringN(gStringVar1, *a0, STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 8, a2); +} + +static bool8 RNGTest_HandleJoypad(void) +{ + s8 r5 = gMain.heldKeys & R_BUTTON ? 100 : 1; + s8 r4; + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + Menu_MoveCursor(-1); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + Menu_MoveCursor(+1); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + r4 = Menu_GetCursorPos(); + if (r4 == 0) + RNGTest_AdjustAndPrintNumAtLine(&sRngLeft, -r5, 1); + if (r4 == 1) + RNGTest_AdjustAndPrintNumAtLine(&sRngRight, -r5, 3); + if (r4 == 2) + RNGTest_AdjustAndPrintNumAtLine(&sRngMax, -r5, 5); + if (r4 == 3) + RNGTest_AdjustAndPrintNumAtLine(&sNumSamples, -r5, 7); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + r4 = Menu_GetCursorPos(); + if (r4 == 0) + RNGTest_AdjustAndPrintNumAtLine(&sRngLeft, r5, 1); + if (r4 == 1) + RNGTest_AdjustAndPrintNumAtLine(&sRngRight, r5, 3); + if (r4 == 2) + RNGTest_AdjustAndPrintNumAtLine(&sRngMax, r5, 5); + if (r4 == 3) + RNGTest_AdjustAndPrintNumAtLine(&sNumSamples, r5, 7); + return FALSE; + } + + if (gMain.newKeys & A_BUTTON) + { + if (sRngMax != 0) + { + PlaySE(SE_SELECT); + RNGTest_PrintNum(EVTest_GetDiscreteUniformRandomSamples()); + } + return FALSE; + } + + if (gMain.newKeys & B_BUTTON) + { + Menu_EraseWindowRect(0, 0, 29, 19); + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +bool8 DebugMenu_RandomNumberTest(void) +{ + sRngLeft = 0; + sRngRight = 0; + sRngMax = 0; + sNumSamples = 0; + Menu_EraseWindowRect(0, 0, 29, 19); + RNGTest_Init(); + gMenuCallback = RNGTest_HandleJoypad; + return FALSE; +} #endif // DEBUG diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c index b3885ff76..349e5111f 100644 --- a/src/debug/nohara_debug_menu.c +++ b/src/debug/nohara_debug_menu.c @@ -1,12 +1,965 @@ #if DEBUG #include "global.h" +#include "constants/flags.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "constants/items.h" +#include "main.h" +#include "menu.h" +#include "start_menu.h" +#include "tv.h" +#include "event_data.h" +#include "string_util.h" +#include "field_specials.h" +#include "sound.h" -__attribute__((unused)) static u8 gDebug_03000724; -__attribute__((unused)) static u8 gDebug_03000725; -__attribute__((unused)) static u8 gDebug_03000726; +static u8 gDebug_03000724; +static u8 gDebug_03000725; +static u8 gDebug_03000726; -asm(".global gDebug_03000724"); -asm(".global gDebug_03000725"); -asm(".global gDebug_03000726"); +bool8 debug_sub_808F414(void); +bool8 NoharaDebugMenu_TV(void); +bool8 debug_sub_808F4AC(void); +void debug_sub_808F4EC(void); +bool8 debug_sub_808F560(void); +bool8 debug_sub_808F594(void); +bool8 debug_sub_808F5D8(void); +bool8 debug_sub_808F648(void); +void debug_sub_808F6BC(void); +void debug_sub_808F7B4(void); +bool8 debug_sub_808F8AC(void); +void debug_sub_808F8CC(void); +bool8 debug_sub_808F93C(void); +void debug_sub_808FA88(u8, u8); +bool8 debug_sub_808FEBC(void); +void debug_sub_808FECC(void); +bool8 debug_sub_808FF3C(void); +void debug_sub_8090080(u8, u8); +bool8 debug_sub_80900AC(void); +bool8 NoharaDebugMenu_Fan(void); +bool8 debug_sub_80901A4(void); +bool8 debug_sub_80901E4(void); +bool8 debug_sub_80901F8(void); +bool8 debug_sub_8090238(void); +bool8 debug_sub_809029C(void); +bool8 debug_sub_80902E4(void); +bool8 debug_sub_80902FC(void); +bool8 debug_sub_8090310(void); +bool8 debug_sub_8090324(void); +bool8 debug_sub_8090338(void); +bool8 debug_sub_8090278(void); +bool8 NoharaDebugMenu_BattleVSDad(void); +bool8 NoharaDebugMenu_DadAfterBattle(void); +bool8 NoharaDebugMenu_SootopolisCity(void); +bool8 NoharaDebugMenu_Embark(void); +bool8 NoharaDebugMenu_Yes9999(void); +bool8 NoharaDebugMenu_LegendsFlagOn(void); +bool8 NoharaDebugMenu_AddNumWinningStreaks(void); + +const u8 gUnknown_Debug_083C48C4[] = _("TV"); +const u8 gUnknown_Debug_083C48C7[] = _("Fan"); +const u8 gUnknown_Debug_083C48CB[] = _("Battle (vs Dad)"); +const u8 gUnknown_Debug_083C48DB[] = _("Dad after battle"); +const u8 gUnknown_Debug_083C48EC[] = _("SOOTOPOLIS CITY"); +const u8 gUnknown_Debug_083C48FC[] = _("Embark"); +const u8 gUnknown_Debug_083C4903[] = _("Yes 9999"); +const u8 gUnknown_Debug_083C490C[] = _("Legends flag ON"); +const u8 gUnknown_Debug_083C491C[] = _("Add num of winning streaks"); + +const struct MenuAction gUnknown_Debug_083C4938[] = { + {gUnknown_Debug_083C48C4, NoharaDebugMenu_TV}, + {gUnknown_Debug_083C48C7, NoharaDebugMenu_Fan}, + {gUnknown_Debug_083C48CB, NoharaDebugMenu_BattleVSDad}, + {gUnknown_Debug_083C48DB, NoharaDebugMenu_DadAfterBattle}, + {gUnknown_Debug_083C48EC, NoharaDebugMenu_SootopolisCity}, + {gUnknown_Debug_083C48FC, NoharaDebugMenu_Embark}, + {gUnknown_Debug_083C4903, NoharaDebugMenu_Yes9999}, + {gUnknown_Debug_083C490C, NoharaDebugMenu_LegendsFlagOn}, + {gUnknown_Debug_083C491C, NoharaDebugMenu_AddNumWinningStreaks} +}; + +bool8 InitNoharaDebugMenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 19, 19); + Menu_PrintItems(1, 1, ARRAY_COUNT(gUnknown_Debug_083C4938), gUnknown_Debug_083C4938); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C4938), 0, 18); + gMenuCallback = debug_sub_808F414; + return FALSE; +} + +bool8 debug_sub_808F414(void) +{ + s8 input = Menu_ProcessInput(); + switch (input) + { + default: + gMenuCallback = gUnknown_Debug_083C4938[input].func; + return FALSE; + case -2: + return FALSE; + case -1: + CloseMenu(); + return TRUE; + } +} + +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"); + +const u8 gUnknown_Debug_083C49CA[] = _("Choose the TV data you wish to\n" + "create to check a transmission。"); + +const u8 gUnknown_Debug_083C4A09[] = _("ほうそうの はっせいりつを セット\n" + "してください ?ぶんの1に なります"); + +const u8 gUnknown_Debug_083C4A2E[] = _("SURVEY"); +const u8 gUnknown_Debug_083C4A35[] = _("RECENT HAPPENINGS"); +const u8 gUnknown_Debug_083C4A47[] = _("POKひMON FAN CLUB"); +const u8 gUnknown_Debug_083C4A58[] = _("ジム"); +const u8 gUnknown_Debug_083C4A5B[] = _("OUTBREAKS"); +const u8 gUnknown_Debug_083C4A65[] = _("NAME RATER"); +const u8 gUnknown_Debug_083C4A70[] = _("CONTEST"); +const u8 gUnknown_Debug_083C4A78[] = _("INTRODUCTION"); +const u8 gUnknown_Debug_083C4A85[] = _("SHOPPING"); +const u8 gUnknown_Debug_083C4A8E[] = _("MISFORTUNE"); +const u8 gUnknown_Debug_083C4A99[] = _("FISHING"); +const u8 gUnknown_Debug_083C4AA1[] = _("MEMORABLE DAY"); +const u8 gUnknown_Debug_083C4AAF[] = _("BRAVO TRAINER"); + +const u8 gUnknown_Debug_083C4ABD[] = { + TVSHOW_FAN_CLUB_LETTER, + TVSHOW_RECENT_HAPPENINGS, + TVSHOW_PKMN_FAN_CLUB_OPINIONS, + TVSHOW_MASS_OUTBREAK, + TVSHOW_NAME_RATER_SHOW, + TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE, + TVSHOW_POKEMON_TODAY_CAUGHT, + TVSHOW_SMART_SHOPPER, + TVSHOW_POKEMON_TODAY_FAILED, + TVSHOW_FISHING_ADVICE, + TVSHOW_WORLD_OF_MASTERS, + TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE +}; + +const u8 *const gUnknown_Debug_083C4ACC[] = { + gUnknown_Debug_083C4A2E, + gUnknown_Debug_083C4A35, + gUnknown_Debug_083C4A47, + gUnknown_Debug_083C4A5B, + gUnknown_Debug_083C4A65, + gUnknown_Debug_083C4A70, + gUnknown_Debug_083C4A78, + gUnknown_Debug_083C4A85, + gUnknown_Debug_083C4A8E, + gUnknown_Debug_083C4A99, + gUnknown_Debug_083C4AA1, + gUnknown_Debug_083C4AAF +}; + +const u8 gDebugText_BigSale[] = _("BIG SALE"); + +const u8 gUnknown_Debug_083C4B05[] = _("SERVICE DAY"); +const u8 gUnknown_Debug_083C4B11[] = _("CLEARーOUT SALE"); +const u8 gUnknown_Debug_083C4B20[] = {1, 2, 3}; + +const u8 *const gUnknown_Debug_083C4B24[] = { + gDebugText_BigSale, + gUnknown_Debug_083C4B05, + gUnknown_Debug_083C4B11 +}; + +const u8 gUnknown_Debug_083C4B30[] = _("Secret type"); +const u8 gUnknown_Debug_083C4B3C[] = _("Start"); +const u8 gUnknown_Debug_083C4B42[] = _("Create TV"); +const u8 gUnknown_Debug_083C4B4C[] = _("All clear"); +const u8 gUnknown_Debug_083C4B56[] = _("All seen"); +const u8 gUnknown_Debug_083C4B5F[] = _("Create CM"); +const u8 gUnknown_Debug_083C4B69[] = _("Not yet seen"); +const u8 gUnknown_Debug_083C4B76[] = _("Hit Table"); +const u8 gUnknown_Debug_083C4B80[] = _("Set full"); + +// Normaly these would be struct MenuAction, but the prototype of +// member .func is not consistent. +const struct { + const u8 * text; + void *func; +} gUnknown_Debug_083C4B8C[] = { + {gUnknown_Debug_083C4B30, debug_sub_808F4EC}, + {gUnknown_Debug_083C4B3C, debug_sub_808F8AC}, + {gUnknown_Debug_083C4B42, debug_sub_808F8CC}, + {gUnknown_Debug_083C4B4C, debug_sub_808FEBC}, + {gUnknown_Debug_083C4B56, debug_sub_808F560}, + {gUnknown_Debug_083C4B5F, debug_sub_808FECC}, + {gUnknown_Debug_083C4B69, debug_sub_808F594}, + {gUnknown_Debug_083C4B76, debug_sub_808F5D8}, + {gUnknown_Debug_083C4B80, debug_sub_80900AC} +}; + +bool8 NoharaDebugMenu_TV(void) +{ + gDebug_03000726 = 0; + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 10, 19); + Menu_PrintItems(1, 1, ARRAY_COUNT(gUnknown_Debug_083C4B8C), gUnknown_Debug_083C4B8C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C4B8C), 0, 9); + gMenuCallback = debug_sub_808F4AC; + return FALSE; +} + +bool8 debug_sub_808F4AC(void) +{ + s8 input = Menu_ProcessInput(); + switch (input) + { + default: + gMenuCallback = (MenuFunc)gUnknown_Debug_083C4B8C[input].func; + return FALSE; + case -2: + return FALSE; + case -1: + CloseMenu(); + return TRUE; + } +} + +void debug_sub_808F4EC(void) +{ + debug_sub_808F6BC(); + sub_8071F40(gUnknown_Debug_083C4980); + DisplayYesNoMenu(3, 3, 1); + gMenuCallback = debug_sub_808F648; +} + +void debug_sub_808F518(void) +{ + u8 i; + + for (i = 0; i < 24; i++) + { + if (gSaveBlock1.tvShows[i].common.kind >= TVSHOW_POKEMON_TODAY_CAUGHT && + gSaveBlock1.tvShows[i].common.kind < TVSHOW_MASS_OUTBREAK && + !gSaveBlock1.tvShows[i].common.active) + gSaveBlock1.tvShows[i].common.active = TRUE; + } +} + +bool8 debug_sub_808F560(void) +{ + u8 i; + + for (i = 0; i < 24; i++) + gSaveBlock1.tvShows[i].common.active = FALSE; + CloseMenu(); + return TRUE; +} + +bool8 debug_sub_808F594(void) +{ + u8 i; + + for (i = 0; i < 24; i++) + { + if (gSaveBlock1.tvShows[i].common.kind != 0) + gSaveBlock1.tvShows[i].common.active = TRUE; + } + CloseMenu(); + return TRUE; +} + +const u8 gUnknown_Debug_083C4BD4[][12] = { + {0x0C, 0x04}, + {0x0C, 0x08}, + {0x0C, 0x0A}, + {0x0E, 0x06}, + {0x0E, 0x08}, + {0x0E, 0x0A}, + {0x10, 0x04}, + {0x10, 0x06}, + {0x10, 0x0A}, + {0x12, 0x04}, + {0x12, 0x06}, + {0x12, 0x0A} +}; + +bool8 debug_sub_808F5D8(void) +{ + u8 i; + + for (i = 0; i < 12; i++) + { + gSpecialVar_0x8004 = i; + ConvertIntToDecimalStringN(gStringVar1, GetSlotMachineId(), STR_CONV_MODE_LEFT_ALIGN, 1); + Menu_PrintText(gStringVar1, gUnknown_Debug_083C4BD4[i][0], gUnknown_Debug_083C4BD4[i][1]); + } + gSpecialVar_0x8004 = 0; + gMenuCallback = debug_sub_8090278; + return FALSE; +} + +bool8 debug_sub_808F648(void) +{ + if (gMain.newKeys & DPAD_LEFT) + { + Menu_EraseWindowRect(10, 0, 29, 13); + gDebug_03000726 ^= 1; + if (gDebug_03000726) + debug_sub_808F7B4(); + else + debug_sub_808F6BC(); + return FALSE; + } + else + { + s8 input = Menu_ProcessInputNoWrap_(); + switch (input) + { + case -2: + return FALSE; + case 0: + debug_sub_808F518(); + // fallthrough + case -1: + default: + CloseMenu(); + return TRUE; + } + } +} + +void debug_sub_808F6BC(void) +{ + u8 i; + + for (i = 0; i < 5; i++) + { + ConvertIntToDecimalStringN(gStringVar1, gSaveBlock1.tvShows[i].common.kind, STR_CONV_MODE_LEFT_ALIGN, 2); + Menu_PrintText(gStringVar1, i * 2 + 10, 0); + } + + for (i = 5; i < 24; i++) + { + ConvertIntToDecimalStringN(gStringVar1, gSaveBlock1.tvShows[i].common.kind, STR_CONV_MODE_LEFT_ALIGN, 2); + if (i < 15) + Menu_PrintText(gStringVar1, i * 2, 3); + else + Menu_PrintText(gStringVar1, i * 2 - 20, 6); + } + + for (i = 0; i < 16; i++) + { + ConvertIntToDecimalStringN(gStringVar1, gSaveBlock1.pokeNews[i].kind, STR_CONV_MODE_LEFT_ALIGN, 2); + if (i < 8) + Menu_PrintText(gStringVar1, i * 2 + 10, 9); + else + Menu_PrintText(gStringVar1, i * 2 - 6, 12); + } +} + +void debug_sub_808F7B4(void) +{ + u8 i; + + for (i = 0; i < 5; i++) + { + ConvertIntToDecimalStringN(gStringVar1, gSaveBlock1.tvShows[i].common.active, STR_CONV_MODE_LEFT_ALIGN, 2); + Menu_PrintText(gStringVar1, i * 2 + 10, 0); + } + + for (i = 5; i < 24; i++) + { + ConvertIntToDecimalStringN(gStringVar1, gSaveBlock1.tvShows[i].common.active, STR_CONV_MODE_LEFT_ALIGN, 2); + if (i < 15) + Menu_PrintText(gStringVar1, i * 2, 3); + else + Menu_PrintText(gStringVar1, i * 2 - 20, 6); + } + + for (i = 0; i < 16; i++) + { + ConvertIntToDecimalStringN(gStringVar1, gSaveBlock1.pokeNews[i].state, STR_CONV_MODE_LEFT_ALIGN, 2); + if (i < 8) + Menu_PrintText(gStringVar1, i * 2 + 10, 9); + else + Menu_PrintText(gStringVar1, i * 2 - 6, 12); + } +} + +bool8 debug_sub_808F8AC(void) +{ + FlagSet(FLAG_SYS_TV_START); + FlagSet(FLAG_VISITED_MAUVILLE_CITY); + CloseMenu(); + return TRUE; +} + +void debug_sub_808F8CC(void) +{ + gDebug_03000724 = 0; + sub_8071F40(gUnknown_Debug_083C49CA); + Menu_BlankWindowRect(13, 6, 26, 8); + Menu_PrintText(gUnknown_Debug_083C4ACC[0], 14, 7); + Menu_BlankWindowRect(22, 1, 24, 2); + ConvertIntToDecimalStringN(gStringVar1, 0, STR_CONV_MODE_LEFT_ALIGN, 2); + Menu_PrintText(gStringVar1, 23, 1); + gMenuCallback = debug_sub_808F93C; +} + +bool8 debug_sub_808F93C(void) +{ + bool8 updateDisplay = FALSE; + if (gMain.newKeys & DPAD_UP) + { + gDebug_03000725++; + if (gDebug_03000725 == 24) + gDebug_03000725 = 0; + PlaySE(SE_SELECT); + updateDisplay = TRUE; + } + if (gMain.newKeys & DPAD_DOWN) + { + if (gDebug_03000725 == 0) + gDebug_03000725 = 24; + gDebug_03000725--; + PlaySE(SE_SELECT); + updateDisplay = TRUE; + } + if (gMain.newKeys & DPAD_RIGHT) + { + gDebug_03000724++; + if (gDebug_03000724 == 12) + gDebug_03000724 = 0; + PlaySE(SE_SELECT); + updateDisplay = TRUE; + } + if (gMain.newKeys & DPAD_LEFT) + { + if (gDebug_03000724 == 0) + gDebug_03000724 = 12; + gDebug_03000724--; + PlaySE(SE_SELECT); + updateDisplay = TRUE; + } + if (updateDisplay) + { + Menu_BlankWindowRect(13, 6, 26, 8); + Menu_PrintText(gUnknown_Debug_083C4ACC[gDebug_03000724], 14, 7); + Menu_BlankWindowRect(22, 1, 24, 2); + ConvertIntToDecimalStringN(gStringVar1, gDebug_03000725, STR_CONV_MODE_LEFT_ALIGN, 2); + Menu_PrintText(gStringVar1, 23, 1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_PIN); + debug_sub_808FA88(gDebug_03000725, gUnknown_Debug_083C4ABD[gDebug_03000724]); + } + if (gMain.newKeys & (B_BUTTON | START_BUTTON)) + { + sub_80BF588(gSaveBlock1.tvShows); + CloseMenu(); + return TRUE; + } + return FALSE; +} + +void debug_sub_808FA88(u8 a0, u8 a1) +{ + u8 i; + u8 leadMonIndex = GetLeadMonIndex(); + u8 channel; + + gSaveBlock1.tvShows[a0].common.kind = a1; + gSaveBlock1.tvShows[a0].common.active = TRUE; + for (i = 0; i < 0x22; i++) + gSaveBlock1.tvShows[a0].common.pad02[i] = 1; + + channel = GetTVChannelByShowType(a1); + switch (channel) + { + case 2: + case 4: + sub_80BE160(gSaveBlock1.tvShows + a0); + break; + case 3: + sub_80BE138(gSaveBlock1.tvShows + a0); + break; + } + + switch (a1) + { + case TVSHOW_FAN_CLUB_LETTER: + case TVSHOW_RECENT_HAPPENINGS: + { + TVShow * show = gSaveBlock1.tvShows + a0; + + show->fanclubLetter.species = SPECIES_BULBASAUR; + StringCopy(gSaveBlock1.tvShows[a0].fanclubLetter.playerName, gSaveBlock2.playerName); + show->fanclubLetter.language = GAME_LANGUAGE; + break; + } + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + { + TVShow * show = gSaveBlock1.tvShows + a0; + + 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); + break; + } + case TVSHOW_UNKN_SHOWTYPE_04: + { + break; + } + case TVSHOW_NAME_RATER_SHOW: + { + u16 species = GetMonData(gPlayerParty + leadMonIndex, MON_DATA_SPECIES); + TVShow * show = gSaveBlock1.tvShows + a0; + + 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); + break; + } + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + { + TVShow * show = gSaveBlock1.tvShows + a0; + + 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); + break; + } + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + { + TVShow * show = gSaveBlock1.tvShows + a0; + + 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; + break; + } + case TVSHOW_MASS_OUTBREAK: + { + TVShow * show = gSaveBlock1.tvShows + a0; + + show->massOutbreak.species = SPECIES_BULBASAUR; + show->massOutbreak.daysLeft = 1; + break; + } + case TVSHOW_POKEMON_TODAY_CAUGHT: + { + TVShow * show = gSaveBlock1.tvShows + a0; + 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; + break; + } + case TVSHOW_SMART_SHOPPER: + { + TVShow * show = gSaveBlock1.tvShows + a0; + 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; + 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; + break; + } + case TVSHOW_POKEMON_TODAY_FAILED: + { + TVShow * show = gSaveBlock1.tvShows + a0; + 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; + break; + } + case TVSHOW_FISHING_ADVICE: + { + TVShow * show = gSaveBlock1.tvShows + a0; + 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; + break; + } + case TVSHOW_WORLD_OF_MASTERS: + { + TVShow * show = gSaveBlock1.tvShows + a0; + 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; + break; + } + + } +} + +bool8 debug_sub_808FEBC(void) +{ + ClearTVShowData(); + CloseMenu(); + return TRUE; +} + +void debug_sub_808FECC(void) +{ + gDebug_03000724 = 0; + sub_8071F40(gUnknown_Debug_083C49CA); + Menu_BlankWindowRect(13, 6, 23, 8); + Menu_PrintText(gUnknown_Debug_083C4B24[0], 14, 7); + Menu_BlankWindowRect(22, 1, 24, 2); + ConvertIntToDecimalStringN(gStringVar1, 0, STR_CONV_MODE_LEFT_ALIGN, 2); + Menu_PrintText(gStringVar1, 23, 1); + gMenuCallback = debug_sub_808FF3C; +} + +bool8 debug_sub_808FF3C(void) +{ + bool8 updateDisplay = FALSE; + + if (gMain.newKeys & DPAD_UP) + { + gDebug_03000725++; + if (gDebug_03000725 == 16) + gDebug_03000725 = 0; + PlaySE(SE_SELECT); + updateDisplay = TRUE; + } + + if (gMain.newKeys & DPAD_DOWN) + { + if (gDebug_03000725 == 0) + gDebug_03000725 = 16; + gDebug_03000725--; + PlaySE(SE_SELECT); + updateDisplay = TRUE; + } + + if (gMain.newKeys & DPAD_RIGHT) + { + gDebug_03000724++; + if (gDebug_03000724 == 3) + gDebug_03000724 = 0; + PlaySE(SE_SELECT); + updateDisplay = TRUE; + } + + if (gMain.newKeys & DPAD_LEFT) + { + if (gDebug_03000724 == 0) + gDebug_03000724 = 3; + gDebug_03000724--; + PlaySE(SE_SELECT); + updateDisplay = TRUE; + } + + if (updateDisplay) + { + Menu_BlankWindowRect(13, 6, 23, 8); + Menu_PrintText(gUnknown_Debug_083C4B24[gDebug_03000724], 14, 7); + Menu_BlankWindowRect(22, 1, 24, 2); + ConvertIntToDecimalStringN(gStringVar1, gDebug_03000725, STR_CONV_MODE_LEFT_ALIGN, 2); + Menu_PrintText(gStringVar1, 23, 1); + } + + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_PIN); + debug_sub_8090080(gDebug_03000725, gUnknown_Debug_083C4B20[gDebug_03000724]); + } + + if (gMain.newKeys & (B_BUTTON | START_BUTTON)) + { + sub_80BEC40(); + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +void debug_sub_8090080(u8 a0, u8 a1) +{ + gSaveBlock1.pokeNews[a0].kind = a1; + gSaveBlock1.pokeNews[a0].state = 1; + gSaveBlock1.pokeNews[a0].days = 4; +} + +bool8 debug_sub_80900AC(void) +{ + u8 i; + u8 j; + + j = 0; + for (i = 0; i < 24; i++) + { + if (gSaveBlock1.tvShows[i].common.kind == 0) + { + if (j == 12) + j = 0; + debug_sub_808FA88(i, gUnknown_Debug_083C4ABD[j]); + gSaveBlock1.tvShows[i].common.active = FALSE; + j++; + } + } + + j = 0; + for (i = 0; i < 16; i++) + { + if (gSaveBlock1.pokeNews[i].kind == 0) + { + if (j == 3) + j = 0; + debug_sub_8090080(i, gUnknown_Debug_083C4B20[j]); + j++; + } + } + + CloseMenu(); + return TRUE; +} + +const u8 gUnknown_Debug_083C4C77[] = _("1 スクル"); +const u8 gUnknown_Debug_083C4C7D[] = _("2 ミドル"); +const u8 gUnknown_Debug_083C4C83[] = _("3 オジヨ"); +const u8 gUnknown_Debug_083C4C89[] = _("4 ボーヤ"); +const u8 gUnknown_Debug_083C4C8F[] = _("5 ボーイ"); +const u8 gUnknown_Debug_083C4C95[] = _("6 ヤング"); +const u8 gUnknown_Debug_083C4C9B[] = _("7 ヲーカ"); +const u8 gUnknown_Debug_083C4CA1[] = _("8 オルド"); + +const u8 *const gUnknown_Debug_083C4CA8[] = { + gUnknown_Debug_083C4C77, + gUnknown_Debug_083C4C7D, + gUnknown_Debug_083C4C83, + gUnknown_Debug_083C4C89, + gUnknown_Debug_083C4C8F, + gUnknown_Debug_083C4C95, + gUnknown_Debug_083C4C9B, + gUnknown_Debug_083C4CA1 +}; + +const u8 gUnknown_Debug_083C4CC8[] = _("Start"); +const u8 gUnknown_Debug_083C4CCE[] = _("Increase"); +const u8 gUnknown_Debug_083C4CD7[] = _("Reduce"); +const u8 gUnknown_Debug_083C4CDE[] = _("Points"); +const u8 gUnknown_Debug_083C4CE5[] = _("Play time 6"); +const u8 gUnknown_Debug_083C4CF1[] = _("P ELITE FOUR"); +const u8 gUnknown_Debug_083C4CFE[] = _("P SECRET BASE"); +const u8 gUnknown_Debug_083C4D0C[] = _("P CONTEST"); +const u8 gUnknown_Debug_083C4D16[] = _("P BATTLE TOWER"); + +const struct MenuAction gUnknown_Debug_083C4D28[] = { + {gUnknown_Debug_083C4CC8, debug_sub_80901E4}, + {gUnknown_Debug_083C4CCE, debug_sub_80901F8}, + {gUnknown_Debug_083C4CD7, debug_sub_8090238}, + {gUnknown_Debug_083C4CDE, debug_sub_809029C}, + {gUnknown_Debug_083C4CE5, debug_sub_80902E4}, + {gUnknown_Debug_083C4CF1, debug_sub_80902FC}, + {gUnknown_Debug_083C4CFE, debug_sub_8090310}, + {gUnknown_Debug_083C4D0C, debug_sub_8090324}, + {gUnknown_Debug_083C4D16, debug_sub_8090338} +}; + +bool8 NoharaDebugMenu_Fan(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 11, 19); + Menu_PrintItems(1, 1, ARRAY_COUNT(gUnknown_Debug_083C4D28), gUnknown_Debug_083C4D28); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C4D28), 0, 10); + gMenuCallback = debug_sub_80901A4; + return FALSE; +} + +bool8 debug_sub_80901A4(void) +{ + s8 input = Menu_ProcessInput(); + switch (input) + { + default: + gMenuCallback = gUnknown_Debug_083C4D28[input].func; + return FALSE; + case -2: + return FALSE; + case -1: + CloseMenu(); + return TRUE; + } +} + +bool8 debug_sub_80901E4(void) +{ + ResetFanClub(); + sub_810FAA0(); + CloseMenu(); + return TRUE; +} + +bool8 debug_sub_80901F8(void) +{ + u8 r0 = sub_810FB9C(); + Menu_PrintText(gUnknown_Debug_083C4CA8[gUnknown_083F8408[r0] - 8], 14, 7); + gMenuCallback = debug_sub_8090278; + return FALSE; +} + +bool8 debug_sub_8090238(void) +{ + u8 r0 = sub_810FC18(); + Menu_PrintText(gUnknown_Debug_083C4CA8[gUnknown_083F8410[r0] - 8], 14, 7); + gMenuCallback = debug_sub_8090278; + return FALSE; +} + +bool8 debug_sub_8090278(void) +{ + if (gMain.newKeys & A_BUTTON) + { + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +bool8 debug_sub_809029C(void) +{ + ConvertIntToDecimalStringN(gStringVar1, gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] & 0x7F, STR_CONV_MODE_LEFT_ALIGN, 2); + Menu_PrintText(gStringVar1, 16, 7); + gMenuCallback = debug_sub_8090278; + return FALSE; +} + +bool8 debug_sub_80902E4(void) +{ + gSaveBlock2.playTimeHours += 6; + CloseMenu(); + return TRUE; +} + +bool8 debug_sub_80902FC(void) +{ + sub_810FB10(0); + CloseMenu(); + return TRUE; +} + +bool8 debug_sub_8090310(void) +{ + sub_810FB10(1); + CloseMenu(); + return TRUE; +} + +bool8 debug_sub_8090324(void) +{ + sub_810FB10(2); + CloseMenu(); + return TRUE; +} + +bool8 debug_sub_8090338(void) +{ + sub_810FB10(3); + CloseMenu(); + return TRUE; +} + +bool8 NoharaDebugMenu_BattleVSDad(void) +{ + VarSet(VAR_PETALBURG_GYM_STATE, 6); + CloseMenu(); + return TRUE; +} + +bool8 NoharaDebugMenu_DadAfterBattle(void) +{ + VarSet(VAR_PETALBURG_GYM_STATE, 7); + CloseMenu(); + return TRUE; +} + +bool8 NoharaDebugMenu_SootopolisCity(void) +{ + FlagSet(FLAG_LEGEND_ESCAPED_SEAFLOOR_CAVERN); + FlagSet(FLAG_LEGENDARY_BATTLE_COMPLETED); + FlagClear(FLAG_HIDE_WALLACE_SOOTOPOLIS_GYM); + CloseMenu(); + return TRUE; +} + +bool8 NoharaDebugMenu_Embark(void) +{ + FlagClear(FLAG_HIDE_MR_BRINEY_ROUTE104_HOUSE); + VarSet(VAR_BRINEY_HOUSE_STATE, 1); + CloseMenu(); + return TRUE; +} + +bool8 NoharaDebugMenu_Yes9999(void) +{ + VarSet(VAR_ASH_GATHER_COUNT, 9999); + CloseMenu(); + return TRUE; +} + +bool8 NoharaDebugMenu_LegendsFlagOn(void) +{ + FlagSet(FLAG_REGI_DOORS_OPENED); + CloseMenu(); + return TRUE; +} + +bool8 NoharaDebugMenu_AddNumWinningStreaks(void) +{ + if (gSaveBlock2.battleTower.bestBattleTowerWinStreak < 50) + gSaveBlock2.battleTower.bestBattleTowerWinStreak = 50; + else if (gSaveBlock2.battleTower.bestBattleTowerWinStreak < 100) + gSaveBlock2.battleTower.bestBattleTowerWinStreak = 100; + else if (gSaveBlock2.battleTower.bestBattleTowerWinStreak < 1000) + gSaveBlock2.battleTower.bestBattleTowerWinStreak = 1000; + else if (gSaveBlock2.battleTower.bestBattleTowerWinStreak < 5000) + gSaveBlock2.battleTower.bestBattleTowerWinStreak = 9990; + else if (gSaveBlock2.battleTower.bestBattleTowerWinStreak < 9990) + gSaveBlock2.battleTower.bestBattleTowerWinStreak = 9999; + CloseMenu(); + return TRUE; +} #endif diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c index 05cbfc8f7..d57c699da 100644 --- a/src/debug/sound_check_menu.c +++ b/src/debug/sound_check_menu.c @@ -19,7 +19,7 @@ // window selections enum { - BGM_WINDOW, + MUS_WINDOW, SE_WINDOW }; @@ -133,8 +133,8 @@ void CB2_StartSoundCheckMenu(void) ResetTasks(); ResetSpriteData(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + InitMenuWindow(&gMenuTextWindowTemplate); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); REG_WIN0H = WIN_RANGE(0, 0); REG_WIN0V = WIN_RANGE(0, 0); REG_WIN1H = WIN_RANGE(0, 0); @@ -151,7 +151,7 @@ void CB2_StartSoundCheckMenu(void) SetMainCallback2(CB2_SoundCheckMenu); REG_DISPCNT = 0x7140; taskId = CreateTask(Task_InitSoundCheckMenu, 0); - gTasks[taskId].tWindowSelected = BGM_WINDOW; + gTasks[taskId].tWindowSelected = MUS_WINDOW; gTasks[taskId].tBgmIndex = 0; gTasks[taskId].tSeIndex = 0; gTasks[taskId].data[3] = 0; @@ -196,7 +196,7 @@ extern const u8 *const gSENames[]; void sub_80BA384(u8 taskId) // Task_HandleDrawingSoundCheckMenuText { HighlightSelectedWindow(gTasks[taskId].tWindowSelected); - PrintSoundNumber(gTasks[taskId].tBgmIndex + BGM_STOP, 7, 8); // print by BGM index + PrintSoundNumber(gTasks[taskId].tBgmIndex + MUS_STOP, 7, 8); // print by BGM index sub_80BA79C(gBGMNames[gTasks[taskId].tBgmIndex], 11, 8); PrintSoundNumber(gTasks[taskId].tSeIndex, 7, 15); sub_80BA79C(gSENames[gTasks[taskId].tSeIndex], 11, 15); @@ -247,19 +247,19 @@ bool8 Task_ProcessSoundCheckMenuInput(u8 taskId) { if (gTasks[taskId].tBgmIndex != 0) { - m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP); - m4aSongNumStart(gTasks[taskId].tBgmIndex + BGM_STOP); + m4aSongNumStop(gTasks[taskId].data[3] + MUS_STOP); + m4aSongNumStart(gTasks[taskId].tBgmIndex + MUS_STOP); gTasks[taskId].data[3] = gTasks[taskId].tBgmIndex; } else { - m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP); + m4aSongNumStop(gTasks[taskId].data[3] + MUS_STOP); gTasks[taskId].data[3] = 0; } } else if (gTasks[taskId].tBgmIndex != 0) { - m4aSongNumStart(gTasks[taskId].tBgmIndex + BGM_STOP); + m4aSongNumStart(gTasks[taskId].tBgmIndex + MUS_STOP); gTasks[taskId].data[3] = gTasks[taskId].tBgmIndex; } } @@ -267,7 +267,7 @@ bool8 Task_ProcessSoundCheckMenuInput(u8 taskId) else if (gMain.newKeys & B_BUTTON) { m4aSongNumStart(SE_SELECT); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); gTasks[taskId].func = sub_80BA68C; } else if (gMain.newAndRepeatedKeys & DPAD_UP) @@ -346,7 +346,7 @@ void HighlightSelectedWindow(u8 windowType) { switch (windowType) { - case BGM_WINDOW: + case MUS_WINDOW: default: REG_WIN1H = WIN_RANGE(17, 223); REG_WIN1V = WIN_RANGE(41, 87); @@ -819,124 +819,124 @@ void sub_80BB1D4(void) } #define SOUND_LIST_BGM \ - X(BGM_STOP, "STOP") \ - X(BGM_TETSUJI, "TETSUJI") \ - X(BGM_FIELD13, "FIELD13") \ - X(BGM_KACHI22, "KACHI22") \ - X(BGM_KACHI2, "KACHI2") \ - X(BGM_KACHI3, "KACHI3") \ - X(BGM_KACHI5, "KACHI5") \ - X(BGM_PCC, "PCC") \ - X(BGM_NIBI, "NIBI") \ - X(BGM_SUIKUN, "SUIKUN") \ - X(BGM_DOORO1, "DOORO1") \ - X(BGM_DOORO_X1, "DOORO-X1") \ - X(BGM_DOORO_X3, "DOORO-X3") \ - X(BGM_MACHI_S2, "MACHI-S2") \ - X(BGM_MACHI_S4, "MACHI-S4") \ - X(BGM_GIM, "GIM") \ - X(BGM_NAMINORI, "NAMINORI") \ - X(BGM_DAN01, "DAN01") \ - X(BGM_FANFA1, "FANFA1") \ - X(BGM_ME_ASA, "ME-ASA") \ - X(BGM_ME_BACHI, "ME-BACHI") \ - X(BGM_FANFA4, "FANFA4") \ - X(BGM_FANFA5, "FANFA5") \ - X(BGM_ME_WAZA, "ME-WAZA") \ - X(BGM_BIJYUTU, "BIJYUTU") \ - X(BGM_DOORO_X4, "DOORO-X4") \ - X(BGM_FUNE_KAN, "FUNE-KAN") \ - X(BGM_ME_SHINKA, "ME-SHINKA") \ - X(BGM_SHINKA, "SHINKA") \ - X(BGM_ME_WASURE, "ME-WASURE") \ - X(BGM_SYOUJOEYE, "SYOUJOEYE") \ - X(BGM_BOYEYE, "BOYEYE") \ - X(BGM_DAN02, "DAN02") \ - X(BGM_MACHI_S3, "MACHI-S3") \ - X(BGM_ODAMAKI, "ODAMAKI") \ - X(BGM_B_TOWER, "B-TOWER") \ - X(BGM_SWIMEYE, "SWIMEYE") \ - X(BGM_DAN03, "DAN03") \ - X(BGM_ME_KINOMI, "ME-KINOMI") \ - X(BGM_ME_TAMA, "ME-TAMA") \ - X(BGM_ME_B_BIG, "ME-B-BIG") \ - X(BGM_ME_B_SMALL, "ME-B-SMALL") \ - X(BGM_ME_ZANNEN, "ME-ZANNEN") \ - X(BGM_BD_TIME, "BD-TIME") \ - X(BGM_TEST1, "TEST1") \ - X(BGM_TEST2, "TEST2") \ - X(BGM_TEST3, "TEST3") \ - X(BGM_TEST4, "TEST4") \ - X(BGM_TEST, "TEST") \ - X(BGM_GOMACHI0, "GOMACHI0") \ - X(BGM_GOTOWN, "GOTOWN") \ - X(BGM_POKECEN, "POKECEN") \ - X(BGM_NEXTROAD, "NEXTROAD") \ - X(BGM_GRANROAD, "GRANROAD") \ - X(BGM_CYCLING, "CYCLING") \ - X(BGM_FRIENDLY, "FRIENDLY") \ - X(BGM_MISHIRO, "MISHIRO") \ - X(BGM_TOZAN, "TOZAN") \ - X(BGM_GIRLEYE, "GIRLEYE") \ - X(BGM_MINAMO, "MINAMO") \ - X(BGM_ASHROAD, "ASHROAD") \ - X(BGM_EVENT0, "EVENT0") \ - X(BGM_DEEPDEEP, "DEEPDEEP") \ - X(BGM_KACHI1, "KACHI1") \ - X(BGM_TITLE3, "TITLE3") \ - X(BGM_DEMO1, "DEMO1") \ - X(BGM_GIRL_SUP, "GIRL-SUP") \ - X(BGM_HAGESHII, "HAGESHII") \ - X(BGM_KAKKOII, "KAKKOII") \ - X(BGM_KAZANBAI, "KAZANBAI") \ - X(BGM_AQA_0, "AQA-0") \ - X(BGM_TSURETEK, "TSURETEK") \ - X(BGM_BOY_SUP, "BOY-SUP") \ - X(BGM_RAINBOW, "RAINBOW") \ - X(BGM_AYASII, "AYASII") \ - X(BGM_KACHI4, "KACHI4") \ - X(BGM_ROPEWAY, "ROPEWAY") \ - X(BGM_CASINO, "CASINO") \ - X(BGM_HIGHTOWN, "HIGHTOWN") \ - X(BGM_SAFARI, "SAFARI") \ - X(BGM_C_ROAD, "C-ROAD") \ - X(BGM_AJITO, "AJITO") \ - X(BGM_M_BOAT, "M-BOAT") \ - X(BGM_M_DUNGON, "M-DUNGON") \ - X(BGM_FINECITY, "FINECITY") \ - X(BGM_MACHUPI, "MACHUPI") \ - X(BGM_P_SCHOOL, "P-SCHOOL") \ - X(BGM_DENDOU, "DENDOU") \ - X(BGM_TONEKUSA, "TONEKUSA") \ - X(BGM_MABOROSI, "MABOROSI") \ - X(BGM_CON_FAN, "CON-FAN") \ - X(BGM_CONTEST0, "CONTEST0") \ - X(BGM_MGM0, "MGM0") \ - X(BGM_T_BATTLE, "T-BATTLE") \ - X(BGM_OOAME, "OOAME") \ - X(BGM_HIDERI, "HIDERI") \ - X(BGM_RUNECITY, "RUNECITY") \ - X(BGM_CON_K, "CON-K") \ - X(BGM_EIKOU_R, "EIKOU-R") \ - X(BGM_KARAKURI, "KARAKURI") \ - X(BGM_HUTAGO, "HUTAGO") \ - X(BGM_SITENNOU, "SITENNOU") \ - X(BGM_YAMA_EYE, "YAMA-EYE") \ - X(BGM_CONLOBBY, "CONLOBBY") \ - X(BGM_INTER_V, "INTER-V") \ - X(BGM_DAIGO, "DAIGO") \ - X(BGM_THANKFOR, "THANKFOR") \ - X(BGM_END, "END") \ - X(BGM_BATTLE27, "BATTLE27") \ - X(BGM_BATTLE31, "BATTLE31") \ - X(BGM_BATTLE20, "BATTLE20") \ - X(BGM_BATTLE32, "BATTLE32") \ - X(BGM_BATTLE33, "BATTLE33") \ - X(BGM_BATTLE36, "BATTLE36") \ - X(BGM_BATTLE34, "BATTLE34") \ - X(BGM_BATTLE35, "BATTLE35") \ - X(BGM_BATTLE38, "BATTLE38") \ - X(BGM_BATTLE30, "BATTLE30") + X(MUS_STOP, "STOP") \ + X(MUS_TETSUJI, "TETSUJI") \ + X(MUS_FIELD13, "FIELD13") \ + X(MUS_KACHI22, "KACHI22") \ + X(MUS_KACHI2, "KACHI2") \ + X(MUS_KACHI3, "KACHI3") \ + X(MUS_KACHI5, "KACHI5") \ + X(MUS_PCC, "PCC") \ + X(MUS_NIBI, "NIBI") \ + X(MUS_SUIKUN, "SUIKUN") \ + X(MUS_DOORO1, "DOORO1") \ + X(MUS_DOORO_X1, "DOORO-X1") \ + X(MUS_DOORO_X3, "DOORO-X3") \ + X(MUS_MACHI_S2, "MACHI-S2") \ + X(MUS_MACHI_S4, "MACHI-S4") \ + X(MUS_GIM, "GIM") \ + X(MUS_NAMINORI, "NAMINORI") \ + X(MUS_DAN01, "DAN01") \ + X(MUS_FANFA1, "FANFA1") \ + X(MUS_ME_ASA, "ME-ASA") \ + X(MUS_ME_BACHI, "ME-BACHI") \ + X(MUS_FANFA4, "FANFA4") \ + X(MUS_FANFA5, "FANFA5") \ + X(MUS_ME_WAZA, "ME-WAZA") \ + X(MUS_BIJYUTU, "BIJYUTU") \ + X(MUS_DOORO_X4, "DOORO-X4") \ + X(MUS_FUNE_KAN, "FUNE-KAN") \ + X(MUS_ME_SHINKA, "ME-SHINKA") \ + X(MUS_SHINKA, "SHINKA") \ + X(MUS_ME_WASURE, "ME-WASURE") \ + X(MUS_SYOUJOEYE, "SYOUJOEYE") \ + X(MUS_BOYEYE, "BOYEYE") \ + X(MUS_DAN02, "DAN02") \ + X(MUS_MACHI_S3, "MACHI-S3") \ + X(MUS_ODAMAKI, "ODAMAKI") \ + X(MUS_B_TOWER, "B-TOWER") \ + X(MUS_SWIMEYE, "SWIMEYE") \ + X(MUS_DAN03, "DAN03") \ + X(MUS_ME_KINOMI, "ME-KINOMI") \ + X(MUS_ME_TAMA, "ME-TAMA") \ + X(MUS_ME_B_BIG, "ME-B-BIG") \ + X(MUS_ME_B_SMALL, "ME-B-SMALL") \ + X(MUS_ME_ZANNEN, "ME-ZANNEN") \ + X(MUS_BD_TIME, "BD-TIME") \ + X(MUS_TEST1, "TEST1") \ + X(MUS_TEST2, "TEST2") \ + X(MUS_TEST3, "TEST3") \ + X(MUS_TEST4, "TEST4") \ + X(MUS_TEST, "TEST") \ + X(MUS_GOMACHI0, "GOMACHI0") \ + X(MUS_GOTOWN, "GOTOWN") \ + X(MUS_POKECEN, "POKECEN") \ + X(MUS_NEXTROAD, "NEXTROAD") \ + X(MUS_GRANROAD, "GRANROAD") \ + X(MUS_CYCLING, "CYCLING") \ + X(MUS_FRIENDLY, "FRIENDLY") \ + X(MUS_MISHIRO, "MISHIRO") \ + X(MUS_TOZAN, "TOZAN") \ + X(MUS_GIRLEYE, "GIRLEYE") \ + X(MUS_MINAMO, "MINAMO") \ + X(MUS_ASHROAD, "ASHROAD") \ + X(MUS_EVENT0, "EVENT0") \ + X(MUS_DEEPDEEP, "DEEPDEEP") \ + X(MUS_KACHI1, "KACHI1") \ + X(MUS_TITLE3, "TITLE3") \ + X(MUS_DEMO1, "DEMO1") \ + X(MUS_GIRL_SUP, "GIRL-SUP") \ + X(MUS_HAGESHII, "HAGESHII") \ + X(MUS_KAKKOII, "KAKKOII") \ + X(MUS_KAZANBAI, "KAZANBAI") \ + X(MUS_AQA_0, "AQA-0") \ + X(MUS_TSURETEK, "TSURETEK") \ + X(MUS_BOY_SUP, "BOY-SUP") \ + X(MUS_RAINBOW, "RAINBOW") \ + X(MUS_AYASII, "AYASII") \ + X(MUS_KACHI4, "KACHI4") \ + X(MUS_ROPEWAY, "ROPEWAY") \ + X(MUS_CASINO, "CASINO") \ + X(MUS_HIGHTOWN, "HIGHTOWN") \ + X(MUS_SAFARI, "SAFARI") \ + X(MUS_C_ROAD, "C-ROAD") \ + X(MUS_AJITO, "AJITO") \ + X(MUS_M_BOAT, "M-BOAT") \ + X(MUS_M_DUNGON, "M-DUNGON") \ + X(MUS_FINECITY, "FINECITY") \ + X(MUS_MACHUPI, "MACHUPI") \ + X(MUS_P_SCHOOL, "P-SCHOOL") \ + X(MUS_DENDOU, "DENDOU") \ + X(MUS_TONEKUSA, "TONEKUSA") \ + X(MUS_MABOROSI, "MABOROSI") \ + X(MUS_CON_FAN, "CON-FAN") \ + X(MUS_CONTEST0, "CONTEST0") \ + X(MUS_MGM0, "MGM0") \ + X(MUS_T_BATTLE, "T-BATTLE") \ + X(MUS_OOAME, "OOAME") \ + X(MUS_HIDERI, "HIDERI") \ + X(MUS_RUNECITY, "RUNECITY") \ + X(MUS_CON_K, "CON-K") \ + X(MUS_EIKOU_R, "EIKOU-R") \ + X(MUS_KARAKURI, "KARAKURI") \ + X(MUS_HUTAGO, "HUTAGO") \ + X(MUS_SITENNOU, "SITENNOU") \ + X(MUS_YAMA_EYE, "YAMA-EYE") \ + X(MUS_CONLOBBY, "CONLOBBY") \ + X(MUS_INTER_V, "INTER-V") \ + X(MUS_DAIGO, "DAIGO") \ + X(MUS_THANKFOR, "THANKFOR") \ + X(MUS_END, "END") \ + X(MUS_BATTLE27, "BATTLE27") \ + X(MUS_BATTLE31, "BATTLE31") \ + X(MUS_BATTLE20, "BATTLE20") \ + X(MUS_BATTLE32, "BATTLE32") \ + X(MUS_BATTLE33, "BATTLE33") \ + X(MUS_BATTLE36, "BATTLE36") \ + X(MUS_BATTLE34, "BATTLE34") \ + X(MUS_BATTLE35, "BATTLE35") \ + X(MUS_BATTLE38, "BATTLE38") \ + X(MUS_BATTLE30, "BATTLE30") #define SOUND_LIST_SE \ X(SE_STOP, "STOP") \ @@ -1218,7 +1218,7 @@ void Task_InitCryTest(u8 taskId) u8 zero; Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); gSoundTestCryNum = 1; ResetSpriteData(); FreeAllSpritePalettes(); @@ -1249,7 +1249,7 @@ void Task_InitCryTest(u8 taskId) Menu_DrawStdWindowFrame(0, 16, 5, 19); PrintCryNumber(); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); REG_BG2HOFS = 0; REG_BG2VOFS = 0; REG_BG2CNT = 0xF01; diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 9b12c1cc1..1f0cb5f60 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -2,6 +2,8 @@ #include "global.h" #include "constants/songs.h" +#include "constants/moves.h" +#include "constants/items.h" #include "battle.h" #include "debug.h" #include "link.h" @@ -16,12 +18,68 @@ #include "task.h" #include "text.h" #include "trade.h" +#include "start_menu.h" +#include "string_util.h" +#include "new_game.h" +#include "script.h" +#include "fieldmap.h" +#include "field_player_avatar.h" +#include "credits.h" +#include "event_data.h" +#include "berry.h" +#include "pokedex.h" +#include "mori_debug_menu.h" +#include "cable_club.h" +#include "field_fadetransition.h" +#include "wild_encounter.h" +#include "battle_setup.h" +#include "safari_zone.h" +#include "fldeff_flash.h" +#include "rom6.h" +#include "fldeff_strength.h" +#include "pokemon_menu.h" +#include "data2.h" +#include "item.h" +#include "reset_rtc_screen.h" +#include "pokeblock.h" +#include "ewram.h" +#include "gba/flash_internal.h" +#include "gba/m4a_internal.h" +#include "berry_blender.h" -// berry_blender.c -extern void unref_sub_80524BC(void); +extern void Debug_SetUpFieldMove_Cut(void); +extern void Debug_SetUpFieldMove_SecretPower(void); void debug_sub_8076BB4(u8); -void debug_sub_8077CF4(); +void debug_sub_8077CF4(u8 x, u8 y); +u8 DebugMenu_807706C(void); +u8 DebugMenu_807709C(void); +void DebugMenu_807719C(void); +void DebugMenu_80771EC(void); +void DebugMenu_8077238(void); +u8 DebugMenu_8077D78(const struct MenuAction *menuActions); +void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 width, u8 itemCount); +u8 DebugMenu_8077C14(void); +bool8 DebugMenu_8077DB4(void); +void DebugMenu_8077EAC(void); +void DebugMenu_8077F40(u8 taskId); +void DebugMenu_8077F7C(u8 taskId); +void DebugMenu_8077FFC(u8 taskId); +void DebugMenu_807806C(u8 taskId); +void DebugMenu_8078A14(u8 taskId); +void DebugMenu_8078AA4(u8 taskId); +void DebugMenu_8078B38(u8 taskId); +bool8 DebugMenu_8078C80(void); +bool8 DebugMenu_8078CA8(void); +bool8 DebugMenu_8078CE4(void); +bool8 DebugMenu_8078D30(void); +bool8 DebugMenu_8078D7C(void); +bool8 DebugMenu_8078DA4(void); +bool8 DebugMenu_8078DF0(void); +bool32 DebugMenu_8078E40(u8 a0, u8 * a1, u32 a2); +void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2); +void DebugMenu_8078F68(u8 taskId); +void DebugMenu_8079020(u8 taskId); u8 DebugMenu_Exit(void); u8 DebugMenu_OpenWatanabe(void); @@ -280,12 +338,12 @@ const u8 Str_839BD7D[] = _("へんかんが しゅうりょう しました extern const u8 Str_839BD2C[]; extern const u8 Str_839BD4C[]; -__attribute__((unused)) static u8 gUnknown_030006B8[4]; -__attribute__((unused)) static u8 gUnknown_030006BC[4]; -__attribute__((unused)) static u8 gUnknown_030006C0; -__attribute__((unused)) static u8 gUnknown_030006C1; -static const u8 *gUnknown_030006C4; -__attribute__((unused)) static u8 gUnknown_030006C8; +static u8 gUnknown_030006B8; +UNUSED static const s32 * gUnknown_030006BC; +static u8 gUnknown_030006C0; +static u8 gUnknown_030006C1; +static const u8 * gUnknown_030006C4; +static u8 gUnknown_030006C8; void debug_sub_8076AC8(u8 a) { @@ -402,7 +460,7 @@ u8 DebugMenu_8076CD4(void) u8 DebugMenu_8076CD8(void) { - SetMainCallback2(unref_sub_80524BC); + SetMainCallback2(debug_sub_80524BC); return 0; } @@ -485,5567 +543,2207 @@ void DebugMenu_8076D6C(u8 taskId) } } -__attribute__((naked)) -u8 DebugMenu_8076E18() -{ - asm( - " push {lr}\n" - " bl debug_sub_8076B4C\n" - " ldr r0, ._67 @ DebugMenu_8076D6C\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._68:\n" - " .align 2, 0\n" - "._67:\n" - " .word DebugMenu_8076D6C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076E30() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " lsl r0, r3, #0x2\n" - " add r0, r0, r3\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._73 @ gTasks\n" - " add r4, r0, r1\n" - " mov r0, #0x0\n" - " ldsh r1, [r4, r0]\n" - " cmp r1, #0x1\n" - " beq ._69 @cond_branch\n" - " cmp r1, #0x1\n" - " bgt ._70 @cond_branch\n" - " cmp r1, #0\n" - " beq ._71 @cond_branch\n" - " b ._86\n" - "._74:\n" - " .align 2, 0\n" - "._73:\n" - " .word gTasks+0x8\n" - "._70:\n" - " cmp r1, #0x2\n" - " beq ._75 @cond_branch\n" - " b ._86\n" - "._71:\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._78 @ Str_839BD5A\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " b ._77\n" - "._79:\n" - " .align 2, 0\n" - "._78:\n" - " .word Str_839BD5A\n" - "._69:\n" - " ldr r0, ._82 @ gMain\n" - " ldrh r2, [r0, #0x2e]\n" - " and r1, r1, r2\n" - " cmp r1, #0\n" - " beq ._80 @cond_branch\n" - " bl Menu_DisplayDialogueFrame\n" - " bl sub_813B79C\n" - " ldr r0, ._82 + 4 @ Str_839BD7D\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - "._77:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._86\n" - "._83:\n" - " .align 2, 0\n" - "._82:\n" - " .word gMain\n" - " .word Str_839BD7D\n" - "._80:\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._86 @cond_branch\n" - " add r0, r3, #0\n" - " bl DestroyTask\n" - " bl DoSoftReset\n" - " b ._86\n" - "._75:\n" - " ldr r0, ._87 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._86 @cond_branch\n" - " add r0, r3, #0\n" - " bl DestroyTask\n" - " bl DoSoftReset\n" - "._86:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._88:\n" - " .align 2, 0\n" - "._87:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_8076EDC() -{ - asm( - " push {lr}\n" - " bl debug_sub_8076B4C\n" - " ldr r0, ._89 @ DebugMenu_8076E30\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._90:\n" - " .align 2, 0\n" - "._89:\n" - " .word DebugMenu_8076E30+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076EF4() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xb\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r4, ._93 @ gUnknown_Debug_839BDC4\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " add r3, r4, #0\n" - " bl Menu_PrintItems\n" - " mov r5, #0x0\n" - " add r4, r4, #0x4\n" - "._92:\n" - " lsl r0, r5, #0x3\n" - " add r0, r0, r4\n" - " ldr r1, [r0]\n" - " mov r0, #0x1\n" - " and r1, r1, r0\n" - " mov r0, #0xb6\n" - " cmp r1, #0\n" - " bne ._91 @cond_branch\n" - " mov r0, #0xb5\n" - "._91:\n" - " lsl r2, r5, #0x1\n" - " add r2, r2, #0x1\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " mov r1, #0xa\n" - " bl sub_8071F60\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x7\n" - " bls ._92 @cond_branch\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x9\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " add sp, sp, #0x8\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._94:\n" - " .align 2, 0\n" - "._93:\n" - " .word gUnknown_Debug_839BDC4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076F60() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._97 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r4, r0\n" - " bne ._96 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl debug_sub_8076B68\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " b ._97\n" - "._96:\n" - " ldr r3, ._100 @ gUnknown_Debug_839BDC4\n" - " lsl r2, r2, #0x18\n" - " asr r2, r2, #0x15\n" - " add r0, r3, #4\n" - " add r0, r2, r0\n" - " ldrb r4, [r0]\n" - " ldr r0, ._100 + 4 @ gSaveBlock2\n" - " mov r1, #0x1\n" - " and r1, r1, r4\n" - " strb r1, [r0, #0x8]\n" - " add r2, r2, r3\n" - " ldr r1, [r2]\n" - " bl StringCopy\n" - " mov r0, #0x80\n" - " and r4, r4, r0\n" - " cmp r4, #0\n" - " bne ._98 @cond_branch\n" - " mov r0, #0x0\n" - " bl debug_sub_8057508\n" - " b ._99\n" - "._101:\n" - " .align 2, 0\n" - "._100:\n" - " .word gUnknown_Debug_839BDC4\n" - " .word gSaveBlock2\n" - "._98:\n" - " mov r0, #0x1\n" - " bl debug_sub_8057508\n" - "._99:\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " ldr r0, ._102 @ debug_sub_8058C00\n" - " bl SetMainCallback2\n" - "._97:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._103:\n" - " .align 2, 0\n" - "._102:\n" - " .word debug_sub_8058C00+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076FEC() -{ - asm( - " push {lr}\n" - " bl DebugMenu_8076EF4\n" - " ldr r0, ._104 @ DebugMenu_8076F60\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._105:\n" - " .align 2, 0\n" - "._104:\n" - " .word DebugMenu_8076F60+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077004() -{ - asm( - " ldr r2, ._106 @ gUnknown_030006C4\n" - " ldr r0, ._106 + 4 @ gUnknown_030006C1\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._106 + 8 @ gUnknown_Debug_839BB64\n" - " add r0, r0, r1\n" - " str r0, [r2]\n" - " bx lr\n" - "._107:\n" - " .align 2, 0\n" - "._106:\n" - " .word gUnknown_030006C4 \n" - " .word gUnknown_030006C1 \n" - " .word gUnknown_Debug_839BB64\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077020() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._109 @ gMenuCallback\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._108 @cond_branch\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - "._108:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._110:\n" - " .align 2, 0\n" - "._109:\n" - " .word gMenuCallback\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077048() -{ - asm( - " push {lr}\n" - " ldr r0, ._111 @ gMenuCallback\n" - " ldr r1, ._111 + 4 @ DebugMenu_807706C\n" - " str r1, [r0]\n" - " bl ScriptContext2_Enable\n" - " ldr r0, ._111 + 8 @ DebugMenu_8077020\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._112:\n" - " .align 2, 0\n" - "._111:\n" - " .word gMenuCallback\n" - " .word DebugMenu_807706C+1\n" - " .word DebugMenu_8077020+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807706C() -{ - asm( - " push {lr}\n" - " ldr r0, ._113 @ gWindowTemplate_81E6CE4\n" - " bl InitMenuWindow\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - " bl DebugMenu_80771EC\n" - " bl DebugMenu_8077238\n" - " ldr r1, ._113 + 4 @ gMenuCallback\n" - " ldr r0, ._113 + 8 @ DebugMenu_807709C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._114:\n" - " .align 2, 0\n" - "._113:\n" - " .word gWindowTemplate_81E6CE4\n" - " .word gMenuCallback\n" - " .word DebugMenu_807709C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807709C() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._120 @ gMain\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._115 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._120 + 4 @ gUnknown_030006C0\n" - " strb r0, [r1]\n" - "._115:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._116 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._120 + 4 @ gUnknown_030006C0\n" - " strb r0, [r1]\n" - "._116:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._117 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._120 + 8 @ gUnknown_030006C1\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._118 @cond_branch\n" - " mov r0, #0x7\n" - " b ._119\n" - "._121:\n" - " .align 2, 0\n" - "._120:\n" - " .word gMain\n" - " .word gUnknown_030006C0 \n" - " .word gUnknown_030006C1 \n" - "._118:\n" - " sub r0, r0, #0x1\n" - "._119:\n" - " strb r0, [r1]\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - "._117:\n" - " ldr r0, ._125 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._122 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._125 + 4 @ gUnknown_030006C1\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x7\n" - " bne ._123 @cond_branch\n" - " mov r0, #0x0\n" - " b ._124\n" - "._126:\n" - " .align 2, 0\n" - "._125:\n" - " .word gMain\n" - " .word gUnknown_030006C1 \n" - "._123:\n" - " add r0, r0, #0x1\n" - "._124:\n" - " strb r0, [r1]\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - "._122:\n" - " ldr r0, ._129 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._127 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._129 + 4 @ gDebug0x839B9BC\n" - " ldr r0, ._129 + 8 @ gUnknown_030006C0\n" - " ldrb r2, [r0]\n" - " ldr r0, ._129 + 12 @ gUnknown_030006C4\n" - " ldr r0, [r0]\n" - " add r0, r0, r2\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r1, r1, #0x4\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " b ._132\n" - "._130:\n" - " .align 2, 0\n" - "._129:\n" - " .word gMain\n" - " .word gDebug0x839B9BC\n" - " .word gUnknown_030006C0 \n" - " .word gUnknown_030006C4 \n" - "._127:\n" - " mov r0, #0xa\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._131 @cond_branch\n" - " mov r0, #0x0\n" - " b ._132\n" - "._131:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._132:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807719C() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xe\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._133 @ gDebug0x839B9BC\n" - " ldr r0, ._133 + 4 @ gUnknown_030006C4\n" - " ldr r0, [r0]\n" - " str r0, [sp]\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " bl Menu_PrintItemsReordered\n" - " ldr r4, ._133 + 8 @ gUnknown_030006C0\n" - " ldrb r0, [r4]\n" - " str r0, [sp]\n" - " mov r0, #0xd\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " strb r0, [r4]\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._134:\n" - " .align 2, 0\n" - "._133:\n" - " .word gDebug0x839B9BC\n" - " .word gUnknown_030006C4 \n" - " .word gUnknown_030006C0 \n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80771EC() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._135 @ gStringVar4\n" - " ldr r1, ._135 + 4 @ Str_839BE04\n" - " bl StringCopy\n" - " ldr r4, ._135 + 8 @ gSaveBlock1\n" - " mov r1, #0x4\n" - " ldsb r1, [r4, r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r1, #0x5\n" - " ldsb r1, [r4, r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0x13\n" - " mov r1, #0xc\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._135 @ gStringVar4\n" - " mov r1, #0x14\n" - " mov r2, #0xd\n" - " bl Menu_PrintText\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._136:\n" - " .align 2, 0\n" - "._135:\n" - " .word gStringVar4\n" - " .word Str_839BE04\n" - " .word gSaveBlock1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077238() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xffffffe8\n" - " ldr r1, ._139 @ Str_839BE07\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " bl memcpy\n" - " add r0, sp, #0x4\n" - " mov r9, r0\n" - " ldr r1, ._139 + 4 @ Str_839BE09\n" - " mov r2, #0x3\n" - " bl memcpy\n" - " add r1, sp, #0x8\n" - " mov sl, r1\n" - " ldr r1, ._139 + 8 @ Str_839BE0C\n" - " mov r0, sl\n" - " mov r2, #0x3\n" - " bl memcpy\n" - " mov r2, #0x0\n" - " str r2, [sp, #0x14]\n" - " add r4, sp, #0x10\n" - " mov r6, sp\n" - " add r6, r6, #0x12\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl PlayerGetDestCoords\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r6, r2]\n" - " bl MapGridGetZCoordAt\n" - " mov r8, r0\n" - " mov r0, r8\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x7\n" - " strh r0, [r4]\n" - " ldrh r0, [r6]\n" - " sub r0, r0, #0x7\n" - " strh r0, [r6]\n" - " ldr r7, ._139 + 12 @ gStringVar4\n" - " add r0, r7, #0\n" - " mov r1, sp\n" - " bl StringCopy\n" - " add r5, sp, #0xc\n" - " mov r2, #0x0\n" - " ldsh r1, [r4, r2]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " add r0, r7, #0\n" - " mov r1, r9\n" - " bl StringAppend\n" - " mov r0, #0x0\n" - " ldsh r1, [r6, r0]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " add r0, r7, #0\n" - " mov r1, sl\n" - " bl StringAppend\n" - " add r0, r5, #0\n" - " mov r1, r8\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " ldrb r0, [r7]\n" - " cmp r0, #0xff\n" - " beq ._137 @cond_branch\n" - " add r1, r7, #0\n" - "._138:\n" - " ldr r0, [sp, #0x14]\n" - " add r0, r0, #0x1\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x14]\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " bne ._138 @cond_branch\n" - "._137:\n" - " mov r0, #0x1c\n" - " ldr r1, [sp, #0x14]\n" - " sub r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x10\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._139 + 12 @ gStringVar4\n" - " mov r1, #0x1d\n" - " ldr r2, [sp, #0x14]\n" - " sub r1, r1, r2\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x18\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._140:\n" - " .align 2, 0\n" - "._139:\n" - " .word Str_839BE07\n" - " .word Str_839BE09\n" - " .word Str_839BE0C\n" - " .word gStringVar4\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_Exit() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenSogabe() -{ - asm( - " push {lr}\n" - " bl unref_sub_814A414\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenTamada() -{ - asm( - " push {lr}\n" - " bl debug_sub_8075C30\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenKagaya() -{ - asm( - " push {lr}\n" - " bl InitKagayaDebugMenu_A\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMatsuda() -{ - asm( - " push {lr}\n" - " bl unref_sub_80A9B28\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenNohara() -{ - asm( - " push {lr}\n" - " bl InitNoharaDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenWatanabe() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._141 @ InitWatanabeDebugMenu\n" - " bl SetMainCallback2\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._142:\n" - " .align 2, 0\n" - "._141:\n" - " .word InitWatanabeDebugMenu+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_EndSequenceDemo() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._143 @ sub_81439D0\n" - " bl SetMainCallback2\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._144:\n" - " .align 2, 0\n" - "._143:\n" - " .word sub_81439D0+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_HallOfFame() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl GameClear\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenSizeComparison() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSizeComparison\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_HoennNationalDex() -{ - asm( - " push {lr}\n" - " bl IsNationalPokedexEnabled\n" - " cmp r0, #0\n" - " beq ._145 @cond_branch\n" - " bl DisableNationalPokedex\n" - " b ._146\n" - "._145:\n" - " bl EnableNationalPokedex\n" - "._146:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_8077434() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x4\n" - " bhi ._165 @cond_branch\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._149 @ \n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._150:\n" - " .align 2, 0\n" - "._149:\n" - " .word ._148\n" - "._148:\n" - " .word ._151\n" - " .word ._152\n" - " .word ._153\n" - " .word ._154\n" - " .word ._155\n" - "._151:\n" - " ldr r0, ._157 @ Str_839BE0F\n" - " mov r1, #0x1\n" - " mov r2, #0x4\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0xff\n" - " mov r3, #0x0\n" - " bl debug_sub_80C2D24\n" - " b ._165\n" - "._158:\n" - " .align 2, 0\n" - "._157:\n" - " .word Str_839BE0F\n" - "._152:\n" - " ldr r0, ._160 @ Str_839BE12\n" - " mov r1, #0x2\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0x0\n" - " b ._159\n" - "._161:\n" - " .align 2, 0\n" - "._160:\n" - " .word Str_839BE12\n" - "._153:\n" - " ldr r0, ._163 @ Str_839BE16\n" - " mov r1, #0x3\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0x0\n" - " b ._162\n" - "._164:\n" - " .align 2, 0\n" - "._163:\n" - " .word Str_839BE16\n" - "._154:\n" - " ldr r0, ._166 @ Str_839BE1A\n" - " mov r1, #0x4\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0xff\n" - "._162:\n" - " mov r2, #0xff\n" - "._159:\n" - " mov r3, #0xff\n" - " bl debug_sub_80C2D24\n" - " b ._165\n" - "._167:\n" - " .align 2, 0\n" - "._166:\n" - " .word Str_839BE1A\n" - "._155:\n" - " ldr r0, ._168 @ Str_839BE1E\n" - " mov r1, #0x4\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0xff\n" - " mov r3, #0xff\n" - " bl debug_sub_80C2D24\n" - "._165:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._169:\n" - " .align 2, 0\n" - "._168:\n" - " .word Str_839BE1E\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_807750C() -{ - asm( - " push {lr}\n" - " ldr r0, ._170 @ gUnknown_Debug_839BE24\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._171:\n" - " .align 2, 0\n" - "._170:\n" - " .word gUnknown_Debug_839BE24\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_SetRamBerry() -{ - asm( - " push {lr}\n" - " ldr r0, ._172 @ gUnknown_Debug_839BE24\n" - " mov r1, #0xc\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._172 + 4 @ gMenuCallback\n" - " ldr r0, ._172 + 8 @ DebugMenu_807750C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._173:\n" - " .align 2, 0\n" - "._172:\n" - " .word gUnknown_Debug_839BE24\n" - " .word gMenuCallback\n" - " .word DebugMenu_807750C+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ToggleBGM() -{ - asm( - " push {lr}\n" - " ldr r2, ._175 @ gDisableMusic\n" - " mov r1, #0x0\n" - " ldrb r0, [r2]\n" - " cmp r0, #0\n" - " bne ._174 @cond_branch\n" - " mov r1, #0x1\n" - "._174:\n" - " strb r1, [r2]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._176:\n" - " .align 2, 0\n" - "._175:\n" - " .word gDisableMusic\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_BattleForDebug() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitBattleForDebug\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_NationalDex() -{ - asm( - " push {r4, r5, lr}\n" - " mov r4, #0x0\n" - " ldr r5, ._178 @ 0x181\n" - "._177:\n" - " add r4, r4, #0x1\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " bl GetSetPokedexFlag\n" - " add r0, r4, #0\n" - " mov r1, #0x3\n" - " bl GetSetPokedexFlag\n" - " cmp r4, r5\n" - " bls ._177 @cond_branch\n" - " ldr r1, ._178 + 4 @ gUnknown_03005CE8\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "._179:\n" - " .align 2, 0\n" - "._178:\n" - " .word 0x181\n" - " .word gUnknown_03005CE8\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_HoennDex() -{ - asm( - " push {r4, r5, lr}\n" - " mov r5, #0x0\n" - "._180:\n" - " add r5, r5, #0x1\n" - " lsl r5, r5, #0x10\n" - " lsr r5, r5, #0x10\n" - " add r0, r5, #0\n" - " bl HoennToNationalOrder\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " bl GetSetPokedexFlag\n" - " add r0, r4, #0\n" - " mov r1, #0x3\n" - " bl GetSetPokedexFlag\n" - " cmp r5, #0xc9\n" - " bls ._180 @cond_branch\n" - " ldr r1, ._181 @ gUnknown_03005CE8\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "._182:\n" - " .align 2, 0\n" - "._181:\n" - " .word gUnknown_03005CE8\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_CreatePKMN() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitCreatePokemon\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ViewPokemonGraphics() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSeePokemonGraphics\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenSeeTrainers() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSeeTrainers\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMori() -{ - asm( - " push {lr}\n" - " bl InitMoriDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenTomomichi() -{ - asm( - " push {lr}\n" - " bl InitTomomichiDebugWindow\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenAoki() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenTaya() -{ - asm( - " push {lr}\n" - " bl InitTayaDebugWindow\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenNakamura() -{ - asm( - " push {lr}\n" - " bl InitNakamuraDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenIwasawa() -{ - asm( - " push {lr}\n" - " bl debug_sub_8138CC4\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_Teleport() -{ - asm( - " push {lr}\n" - " bl Overworld_SetWarpDestToLastHealLoc\n" - " bl sub_8080E88\n" - " bl ScriptContext2_Enable\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_EditPKMN() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl debug_sub_815FFDC\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80776B4() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r1, ._183 @ Str_839BE4C\n" - " mov r0, sp\n" - " mov r2, #0x7\n" - " bl memcpy\n" - " lsl r3, r4, #0x1\n" - " lsl r5, r4, #0x19\n" - " lsr r5, r5, #0x18\n" - " add r3, r3, #0x1\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x19\n" - " add r1, r5, #0\n" - " mov r2, #0x1d\n" - " bl Menu_BlankWindowRect\n" - " ldr r0, ._183 + 4 @ gUnknown_030006C8\n" - " ldrb r0, [r0]\n" - " ASR r0, r4\n" - " mov r1, #0x1\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, sp\n" - " mov r1, #0x19\n" - " add r2, r5, #0\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x8\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._184:\n" - " .align 2, 0\n" - "._183:\n" - " .word Str_839BE4C\n" - " .word gUnknown_030006C8 \n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077704() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xffffffec\n" - " ldr r1, ._185 @ Str_839BE53\n" - " mov r0, sp\n" - " mov r2, #0x11\n" - " bl memcpy\n" - " mov r0, #0x13\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x8\n" - " bl Menu_BlankWindowRect\n" - " mov r0, sp\n" - " mov r1, #0x15\n" - " mov r2, #0x0\n" - " bl Menu_PrintText\n" - " ldr r2, ._185 + 4 @ gUnknown_030006C8\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x13\n" - " ldrh r0, [r0]\n" - " lsr r0, r0, #0x8\n" - " mov r1, #0xf\n" - " and r0, r0, r1\n" - " strb r0, [r2]\n" - " mov r0, #0x0\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x1\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x2\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x3\n" - " bl DebugMenu_80776B4\n" - " add sp, sp, #0x14\n" - " pop {r0}\n" - " bx r0\n" - "._186:\n" - " .align 2, 0\n" - "._185:\n" - " .word Str_839BE53\n" - " .word gUnknown_030006C8 \n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_8077760() -{ - asm( - " push {r4, r5, lr}\n" - " ldr r2, ._190 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " add r5, r2, #0\n" - " cmp r0, #0\n" - " beq ._187 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._190 + 4 @ gUnknown_030006B8\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._188 @cond_branch\n" - " sub r0, r0, #0x1\n" - " b ._189\n" - "._191:\n" - " .align 2, 0\n" - "._190:\n" - " .word gMain\n" - " .word gUnknown_030006B8 \n" - "._188:\n" - " mov r0, #0x3\n" - "._189:\n" - " strb r0, [r1]\n" - "._187:\n" - " ldrh r1, [r5, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._192 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._195 @ gUnknown_030006B8\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x3\n" - " beq ._193 @cond_branch\n" - " add r0, r0, #0x1\n" - " b ._194\n" - "._196:\n" - " .align 2, 0\n" - "._195:\n" - " .word gUnknown_030006B8 \n" - "._193:\n" - " mov r0, #0x0\n" - "._194:\n" - " strb r0, [r1]\n" - "._192:\n" - " ldrh r1, [r5, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._197 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r4, ._201 @ gUnknown_030006C8\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " LSL r1, r0\n" - " ldrb r0, [r4]\n" - " eor r1, r1, r0\n" - " strb r1, [r4]\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_80776B4\n" - "._197:\n" - " ldrh r2, [r5, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " bne ._198 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._199 @cond_branch\n" - "._198:\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x13\n" - " ldrh r0, [r2]\n" - " ldr r1, ._201 + 4 @ 0xf0ff\n" - " and r1, r1, r0\n" - " ldr r0, ._201 @ gUnknown_030006C8\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x8\n" - " add r1, r1, r0\n" - " strh r1, [r2]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._200\n" - "._202:\n" - " .align 2, 0\n" - "._201:\n" - " .word gUnknown_030006C8 \n" - " .word 0xf0ff\n" - "._199:\n" - " mov r0, #0x0\n" - "._200:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_SwitchBG() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " bl DebugMenu_8077704\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x6\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x14\n" - " mov r2, #0x0\n" - " mov r3, #0x4\n" - " bl InitMenu\n" - " ldr r1, ._203 @ gMenuCallback\n" - " ldr r0, ._203 + 4 @ DebugMenu_8077760\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._204:\n" - " .align 2, 0\n" - "._203:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077760+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807786C() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r1, ._205 @ Str_839BE64\n" - " mov r0, sp\n" - " mov r2, #0x7\n" - " bl memcpy\n" - " mov r0, #0x19\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x3\n" - " bl Menu_DrawStdWindowFrame\n" - " lsl r0, r4, #0x1\n" - " add r0, r0, r4\n" - " add r0, r0, sp\n" - " mov r1, #0x1a\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._206:\n" - " .align 2, 0\n" - "._205:\n" - " .word Str_839BE64\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80778A8() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._211 @ gMain\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._207 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r2, ._211 + 4 @ sWildEncountersDisabled\n" - " ldrb r0, [r2]\n" - " mov r1, #0x1\n" - " eor r0, r0, r1\n" - " strb r0, [r2]\n" - " ldrb r0, [r2]\n" - " bl DebugMenu_807786C\n" - "._207:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._208 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._209 @cond_branch\n" - "._208:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._210\n" - "._212:\n" - " .align 2, 0\n" - "._211:\n" - " .word gMain\n" - " .word sWildEncountersDisabled\n" - "._209:\n" - " mov r0, #0x0\n" - "._210:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ControlEncounter() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._213 @ sWildEncountersDisabled\n" - " ldrb r0, [r0]\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._213 + 4 @ gMenuCallback\n" - " ldr r0, ._213 + 8 @ DebugMenu_80778A8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._214:\n" - " .align 2, 0\n" - "._213:\n" - " .word sWildEncountersDisabled\n" - " .word gMenuCallback\n" - " .word DebugMenu_80778A8+1\n" - "\n" - ); -} - -__attribute__((naked)) +u8 DebugMenu_8076E18(void) +{ + debug_sub_8076B4C(); + CreateTask(DebugMenu_8076D6C, 10); + return 0; +} + +void DebugMenu_8076E30(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839BD5A, 2, 15); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + Menu_DisplayDialogueFrame(); + sub_813B79C(); + Menu_PrintText(Str_839BD7D, 2, 15); + PlaySE(SE_PINPON); + data[0]++; + } + else if (gMain.newKeys & B_BUTTON) + { + DestroyTask(taskId); + DoSoftReset(); // noreturn + } + break; + case 2: + if (gMain.newKeys & A_BUTTON) + { + DestroyTask(taskId); + DoSoftReset(); // noreturn + } + break; + } +} + +u8 DebugMenu_8076EDC(void) +{ + debug_sub_8076B4C(); + CreateTask(DebugMenu_8076E30, 10); + return 0; +} + +const u8 Str_839BD90[] = _("ジュンイチ"); +const u8 Str_839BD96[] = _("ダイゴロウ"); +const u8 Str_839BD9C[] = _("テツジ"); +const u8 Str_839BDA0[] = _("バレンシア"); +const u8 Str_839BDA6[] = _("ハルコマチ"); +const u8 Str_839BDAC[] = _("RAYMOND"); +const u8 Str_839BDB4[] = _("TIFFANY"); +const u8 Str_839BDBC[] = _("くまxちえ"); + +const struct { + const u8 * text; + u32 flags; +} gUnknown_Debug_839BDC4[] = { + {Str_839BD90, 0x0}, + {Str_839BD96, 0x0}, + {Str_839BDA0, 0x1}, + {Str_839BDA6, 0x1}, + {Str_839BDAC, 0x80}, + {Str_839BDB4, 0x81}, + {Str_839BD9C, 0x0}, + {Str_839BDBC, 0x1} +}; + +void DebugMenu_8076EF4(void) +{ + u8 i; + + Menu_DrawStdWindowFrame(0, 0, 11, 17); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), gUnknown_Debug_839BDC4); + for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_839BDC4); i++) + { + sub_8071F60((gUnknown_Debug_839BDC4[i].flags & 1) == MALE ? CHAR_MALE : CHAR_FEMALE, 10, 2 * i + 1); + } + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), 0, 9); +} + +void DebugMenu_8076F60(u8 taskId) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + switch (input) + { + case -2: + break; + case -1: + Menu_EraseScreen(); + debug_sub_8076B68(); + DestroyTask(taskId); + break; + default: + { + u8 flags = gUnknown_Debug_839BDC4[cursorPos].flags; + gSaveBlock2.playerGender = flags & 1; + StringCopy(gSaveBlock2.playerName, gUnknown_Debug_839BDC4[cursorPos].text); + if ((flags & 0x80) == 0) + debug_sub_8057508(FALSE); + else + debug_sub_8057508(TRUE); + DestroyTask(taskId); + SetMainCallback2(debug_sub_8058C00); + break; + } + } +} + +void DebugMenu_8076FEC(void) +{ + DebugMenu_8076EF4(); + CreateTask(DebugMenu_8076F60, 10); +} + +void DebugMenu_8077004(void) +{ + gUnknown_030006C4 = gUnknown_Debug_839BB64 + gUnknown_030006C1 * 8; +} + +void DebugMenu_8077020(u8 taskId) +{ + if (gMenuCallback() == TRUE) + DestroyTask(taskId); +} + +void DebugMenu_8077048(void) +{ + gMenuCallback = DebugMenu_807706C; + ScriptContext2_Enable(); + CreateTask(DebugMenu_8077020, 80); +} + +u8 DebugMenu_807706C(void) +{ + InitMenuWindow(&gMenuTextWindowTemplate); + DebugMenu_8077004(); + DebugMenu_807719C(); + DebugMenu_80771EC(); + DebugMenu_8077238(); + gMenuCallback = DebugMenu_807709C; + return FALSE; +} + +u8 DebugMenu_807709C(void) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gUnknown_030006C0 = Menu_MoveCursor(-1); + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gUnknown_030006C0 = Menu_MoveCursor(+1); + } + if (gMain.newKeys & DPAD_LEFT) + { + PlaySE(SE_SELECT); + if (gUnknown_030006C1 == 0) + gUnknown_030006C1 = 7; + else + gUnknown_030006C1--; + DebugMenu_8077004(); + DebugMenu_807719C(); + } + if (gMain.newKeys & DPAD_RIGHT) + { + PlaySE(SE_SELECT); + if (gUnknown_030006C1 == 7) + gUnknown_030006C1 = 0; + else + gUnknown_030006C1++; + DebugMenu_8077004(); + DebugMenu_807719C(); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + return gDebug0x839B9BC[gUnknown_030006C4[gUnknown_030006C0]].func(); + } + if (gMain.newKeys & (B_BUTTON | START_BUTTON)) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +void DebugMenu_807719C(void) +{ + Menu_DrawStdWindowFrame(0, 0, 14, 17); + Menu_PrintItemsReordered(1, 1, 8, gDebug0x839B9BC, gUnknown_030006C4); + gUnknown_030006C0 = InitMenu(0, 1, 1, 8, gUnknown_030006C0, 13); +} + +const u8 Str_839BE04[] = _("ID"); + +void DebugMenu_80771EC(void) +{ + u8 * buf = gStringVar4; + buf = StringCopy(buf, Str_839BE04); + buf = ConvertIntToDecimalStringN(buf, gSaveBlock1.location.mapGroup, STR_CONV_MODE_RIGHT_ALIGN, 3); + buf = ConvertIntToDecimalStringN(buf, gSaveBlock1.location.mapNum, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_DrawStdWindowFrame(19, 12, 29, 15); + Menu_PrintText(gStringVar4, 20, 13); +} + +void DebugMenu_8077238(void) +{ + u8 sp00[] = _("X"); + u8 sp04[] = _(" Y"); + u8 sp08[] = _(" H"); + u8 sp0c[4]; + + s16 x; + s16 y; + u8 z; + u16 sp14 = 0; + + PlayerGetDestCoords(&x, &y); + z = MapGridGetZCoordAt(x, y); + x -= 7; + y -= 7; + + StringCopy(gStringVar4, sp00); + ConvertIntToDecimalStringN(sp0c, x, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, sp0c); + StringAppend(gStringVar4, sp04); + ConvertIntToDecimalStringN(sp0c, y, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, sp0c); + StringAppend(gStringVar4, sp08); + ConvertIntToDecimalStringN(sp0c, z, STR_CONV_MODE_LEFT_ALIGN, 2); + StringAppend(gStringVar4, sp0c); + + for (sp14 = 0; gStringVar4[sp14] != EOS; sp14++) + ; + + Menu_DrawStdWindowFrame(28 - sp14, 16, 29, 19); + Menu_PrintText(gStringVar4, 29 - sp14, 17); +} + +u8 DebugMenu_Exit(void) +{ + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_OpenSogabe(void) +{ + return InitSogabeDebugMenu(); +} + +u8 DebugMenu_OpenTamada(void) +{ + return debug_sub_8075C30(); +} + +u8 DebugMenu_OpenKagaya(void) +{ + return InitKagayaDebugMenu_A(); +} + +u8 DebugMenu_OpenMatsuda(void) +{ + return InitMatsudaDebugMenu(); +} + +u8 DebugMenu_OpenNohara(void) +{ + return InitNoharaDebugMenu(); +} + +u8 DebugMenu_OpenWatanabe(void) +{ + CloseMenu(); + SetMainCallback2(InitWatanabeDebugMenu); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_EndSequenceDemo(void) +{ + CloseMenu(); + SetMainCallback2(sub_81439D0); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_HallOfFame(void) +{ + CloseMenu(); + GameClear(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenSizeComparison(void) +{ + CloseMenu(); + InitSizeComparison(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_HoennNationalDex(void) +{ + if (IsNationalPokedexEnabled()) + DisableNationalPokedex(); + else + EnableNationalPokedex(); + CloseMenu(); + return TRUE; +} + +const u8 Str_839BE0F[] = _("HP"); +const u8 Str_839BE12[] = _("PAR"); +const u8 Str_839BE16[] = _("SLP"); +const u8 Str_839BE1A[] = _("PSN"); +const u8 Str_839BE1E[] = _("ウマイ"); + +u8 DebugMenu_8077434(void) +{ + switch (Menu_GetCursorPos()) + { + case 0: + debug_sub_80C2C18(Str_839BE0F, 1, 4); + debug_sub_80C2D24(0xff, 0xff, 0xff, 0, 0xff, 0xff); + break; + case 1: + debug_sub_80C2C18(Str_839BE12, 2, 0); + debug_sub_80C2D24(0xff, 0xff, 0, 0xff, 0xff, 0xff); + break; + case 2: + debug_sub_80C2C18(Str_839BE16, 3, 0); + debug_sub_80C2D24(0xff, 0, 0xff, 0xff, 0xff, 0xff); + break; + case 3: + debug_sub_80C2C18(Str_839BE1A, 4, 0); + debug_sub_80C2D24(0, 0xff, 0xff, 0xff, 0xff, 0xff); + break; + case 4: + debug_sub_80C2C18(Str_839BE1E, 4, 0); + debug_sub_80C2D24(0xff, 0xff, 0xff, 0xff, 0xff, 0xff); + break; + } + CloseMenu(); + return TRUE; +} + +const struct MenuAction gUnknown_Debug_839BE24[] = { + {Str_839BE0F, DebugMenu_8077434}, + {Str_839BE12, DebugMenu_8077434}, + {Str_839BE16, DebugMenu_8077434}, + {Str_839BE1A, DebugMenu_8077434}, + {Str_839BE1E, DebugMenu_8077434} +}; + +u8 DebugMenu_807750C(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BE24); +} + +u8 DebugMenu_SetRamBerry(void) +{ + DebugMenu_8077D24(gUnknown_Debug_839BE24, 12, ARRAY_COUNT(gUnknown_Debug_839BE24)); + gMenuCallback = DebugMenu_807750C; + return FALSE; +} + +u8 DebugMenu_ToggleBGM(void) +{ + gDisableMusic = gDisableMusic ? FALSE : TRUE; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_BattleForDebug(void) +{ + CloseMenu(); + InitBattleForDebug(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_NationalDex(void) +{ + u16 i; + + for (i = 0; i < 386; i++) + { + GetSetPokedexFlag(i + 1, 2); + GetSetPokedexFlag(i + 1, 3); + } + gUnknown_03005CE8 = TRUE; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_HoennDex(void) +{ + u16 i; + + for (i = 0; i < 202; i++) + { + u16 nati = HoennToNationalOrder(i + 1); + GetSetPokedexFlag(nati, 2); + GetSetPokedexFlag(nati, 3); + } + gUnknown_03005CE8 = TRUE; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_CreatePKMN(void) +{ + CloseMenu(); + InitCreatePokemon(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_ViewPokemonGraphics(void) +{ + CloseMenu(); + InitSeePokemonGraphics(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenSeeTrainers(void) +{ + CloseMenu(); + InitSeeTrainers(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenMori(void) +{ + return InitMoriDebugMenu(); +} + +u8 DebugMenu_OpenTomomichi(void) +{ + return InitTomomichiDebugWindow(); +} + +u8 DebugMenu_OpenAoki(void) +{ + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_OpenTaya(void) +{ + return InitTayaDebugWindow(); +} + +u8 DebugMenu_OpenNakamura(void) +{ + return InitNakamuraDebugMenu(); +} + +u8 DebugMenu_OpenIwasawa(void) +{ + return debug_sub_8138CC4(); +} + +u8 DebugMenu_Teleport(void) +{ + Overworld_SetWarpDestToLastHealLoc(); + sub_8080E88(); + ScriptContext2_Enable(); + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_EditPKMN(void) +{ + Menu_EraseScreen(); + NakaGenderTest(); + return FALSE; +} + +void DebugMenu_80776B4(u8 bgNum) +{ + u8 sp00[] = __("OFF$" + "ON$"); + Menu_BlankWindowRect(25, bgNum * 2, 29, bgNum * 2 + 1); + Menu_PrintText(sp00 + 4 * ((gUnknown_030006C8 >> bgNum) & 1), 25, bgNum * 2); +} + +void DebugMenu_8077704(void) +{ + u8 sp00[] = _("BG0\n" + "BG1\n" + "BG2\n" + "BG3\n"); + Menu_BlankWindowRect(19, 0, 29, 8); + Menu_PrintText(sp00, 21, 0); + gUnknown_030006C8 = (REG_DISPCNT >> 8) & 0x0F; + DebugMenu_80776B4(0); + DebugMenu_80776B4(1); + DebugMenu_80776B4(2); + DebugMenu_80776B4(3); +} + +u8 DebugMenu_8077760(void) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(-1); + if (gUnknown_030006B8 != 0) + gUnknown_030006B8--; + else + gUnknown_030006B8 = 3; + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(+1); + if (gUnknown_030006B8 != 3) + gUnknown_030006B8++; + else + gUnknown_030006B8 = 0; + } + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + gUnknown_030006C8 ^= (1 << Menu_GetCursorPos()); + DebugMenu_80776B4(Menu_GetCursorPos()); + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + REG_DISPCNT = (REG_DISPCNT & 0xF0FF) + (gUnknown_030006C8 << 8); + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_SwitchBG(void) +{ + Menu_EraseScreen(); + DebugMenu_8077704(); + InitMenu(0, 20, 0, 4, 0, 6); + gMenuCallback = DebugMenu_8077760; + return FALSE; +} + +void DebugMenu_807786C(u8 a0) +{ + u8 sp00[] = __("ON$" + "OFF$"); + + Menu_DrawStdWindowFrame(25, 0, 29, 3); + Menu_PrintText(sp00 + 3 * a0, 26, 1); +} + +u8 DebugMenu_80778A8(void) +{ + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + gWildEncountersDisabled ^= 1; + DebugMenu_807786C(gWildEncountersDisabled); + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_ControlEncounter(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(gWildEncountersDisabled); + gMenuCallback = DebugMenu_80778A8; + return FALSE; +} + u8 DebugMenu_UseHM() { - asm( - " ldr r1, ._215 @ gMenuCallback\n" - " ldr r0, ._215 + 4 @ DebugMenu_8077C14\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " bx lr\n" - "._216:\n" - " .align 2, 0\n" - "._215:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077C14+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077934() -{ - asm( - " push {lr}\n" - " mov r1, #0x0\n" - " ldr r3, ._218 @ gSaveBlock1\n" - " mov r2, #0x1\n" - "._217:\n" - " add r0, r1, r3\n" - " strb r2, [r0]\n" - " add r1, r1, #0x1\n" - " cmp r1, #0x63\n" - " bls ._217 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._219:\n" - " .align 2, 0\n" - "._218:\n" - " .word gSaveBlock1+0x97a\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077954() -{ - asm( - " push {lr}\n" - " mov r1, #0x0\n" - " ldr r3, ._222 @ gSaveBlock1\n" - " mov r2, #0x0\n" - "._221:\n" - " add r0, r1, r3\n" - " strb r2, [r0]\n" - " add r1, r1, #0x1\n" - " cmp r1, #0x63\n" - " bls ._221 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._223:\n" - " .align 2, 0\n" - "._222:\n" - " .word gSaveBlock1+0x97a\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077974() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r1, ._226 @ gSaveBlock1\n" - " mov r0, #0x4\n" - " ldsb r0, [r1, r0]\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " ldrb r1, [r1, #0x5]\n" - " lsl r1, r1, #0x18\n" - " asr r1, r1, #0x18\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " bl IsRematchTrainerIn\n" - " cmp r0, #0\n" - " beq ._224 @cond_branch\n" - " ldr r0, ._226 + 4 @ gStringVar1\n" - " ldr r1, ._226 + 8 @ Str_839BE8D\n" - " bl StringCopy\n" - " b ._225\n" - "._227:\n" - " .align 2, 0\n" - "._226:\n" - " .word gSaveBlock1\n" - " .word gStringVar1\n" - " .word Str_839BE8D\n" - "._224:\n" - " ldr r0, ._230 @ gStringVar1\n" - " ldr r1, ._230 + 4 @ Str_839BE90\n" - " bl StringCopy\n" - "._225:\n" - " ldr r1, ._230 + 8 @ gSaveBlock1\n" - " mov r0, #0x4\n" - " ldsb r0, [r1, r0]\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " ldrb r1, [r1, #0x5]\n" - " lsl r1, r1, #0x18\n" - " asr r1, r1, #0x18\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " bl DoesSomeoneWantRematchIn\n" - " cmp r0, #0\n" - " beq ._228 @cond_branch\n" - " ldr r0, ._230 + 12 @ gStringVar2\n" - " ldr r1, ._230 + 16 @ Str_839BE8D\n" - " bl StringCopy\n" - " b ._229\n" - "._231:\n" - " .align 2, 0\n" - "._230:\n" - " .word gStringVar1\n" - " .word Str_839BE90\n" - " .word gSaveBlock1\n" - " .word gStringVar2\n" - " .word Str_839BE8D\n" - "._228:\n" - " ldr r0, ._232 @ gStringVar2\n" - " ldr r1, ._232 + 4 @ Str_839BE90\n" - " bl StringCopy\n" - "._229:\n" - " ldr r0, ._232 + 8 @ Str_839BE6B\n" - " bl sub_8071F40\n" - " ldr r1, ._232 + 12 @ gMenuCallback\n" - " ldr r0, ._232 + 16 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._233:\n" - " .align 2, 0\n" - "._232:\n" - " .word gStringVar2\n" - " .word Str_839BE90\n" - " .word Str_839BE6B\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A20() -{ - asm( - " push {lr}\n" - " ldr r0, ._234 @ gSaveBlock1\n" - " ldr r1, ._234 + 4 @ 0x978\n" - " add r0, r0, r1\n" - " mov r1, #0xff\n" - " strh r1, [r0]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._235:\n" - " .align 2, 0\n" - "._234:\n" - " .word gSaveBlock1\n" - " .word 0x978\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A40() -{ - asm( - " push {lr}\n" - " ldr r0, ._236 @ gSaveBlock1\n" - " ldr r1, ._236 + 4 @ 0x978\n" - " add r0, r0, r1\n" - " mov r1, #0x0\n" - " strh r1, [r0]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._237:\n" - " .align 2, 0\n" - "._236:\n" - " .word gSaveBlock1\n" - " .word 0x978\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A60() -{ - asm( - " push {lr}\n" - " ldr r0, ._238 @ gUnknown_Debug_839BEE4\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._239:\n" - " .align 2, 0\n" - "._238:\n" - " .word gUnknown_Debug_839BEE4\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_RematchTrainers() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._240 @ gUnknown_Debug_839BEE4\n" - " mov r1, #0xd\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._240 + 4 @ gMenuCallback\n" - " ldr r0, ._240 + 8 @ DebugMenu_8077A60\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._241:\n" - " .align 2, 0\n" - "._240:\n" - " .word gUnknown_Debug_839BEE4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077A60+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A9C() -{ - asm( - " push {lr}\n" - " ldr r1, ._242 @ gNumSafariBalls\n" - " mov r0, #0x1e\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._243:\n" - " .align 2, 0\n" - "._242:\n" - " .word gNumSafariBalls\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077AB4() -{ - asm( - " push {lr}\n" - " ldr r1, ._244 @ gNumSafariBalls\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._245:\n" - " .align 2, 0\n" - "._244:\n" - " .word gNumSafariBalls\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077ACC() -{ - asm( - " push {lr}\n" - " ldr r1, ._246 @ gSafariZoneStepCounter\n" - " mov r2, #0xfa\n" - " lsl r2, r2, #0x1\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._247:\n" - " .align 2, 0\n" - "._246:\n" - " .word gSafariZoneStepCounter\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077AE8() -{ - asm( - " push {lr}\n" - " ldr r1, ._248 @ gSafariZoneStepCounter\n" - " mov r0, #0x1\n" - " strh r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._249:\n" - " .align 2, 0\n" - "._248:\n" - " .word gSafariZoneStepCounter\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077B00() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl unref_sub_80C853C\n" - " cmp r0, #0\n" - " beq ._250 @cond_branch\n" - " ldr r0, ._252 @ Str_839BF14\n" - " bl sub_8071F40\n" - " b ._251\n" - "._253:\n" - " .align 2, 0\n" - "._252:\n" - " .word Str_839BF14\n" - "._250:\n" - " ldr r0, ._254 @ Str_839BF1F\n" - " bl sub_8071F40\n" - "._251:\n" - " ldr r1, ._254 + 4 @ gMenuCallback\n" - " ldr r0, ._254 + 8 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._255:\n" - " .align 2, 0\n" - "._254:\n" - " .word Str_839BF1F\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077B3C() -{ - asm( - " push {lr}\n" - " ldr r0, ._256 @ gUnknown_Debug_839BF6C\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._257:\n" - " .align 2, 0\n" - "._256:\n" - " .word gUnknown_Debug_839BF6C\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_Safari() -{ - asm( - " push {lr}\n" - " bl GetSafariZoneFlag\n" - " cmp r0, #0\n" - " beq ._258 @cond_branch\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._260 @ gUnknown_Debug_839BF6C\n" - " mov r1, #0xe\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r0, ._260 + 4 @ gStringVar1\n" - " ldr r1, ._260 + 8 @ gSafariZoneStepCounter\n" - " ldrh r1, [r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._260 + 12 @ Str_839BF0C\n" - " bl sub_8071F40\n" - " ldr r1, ._260 + 16 @ gMenuCallback\n" - " ldr r0, ._260 + 20 @ DebugMenu_8077B3C\n" - " str r0, [r1]\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x0\n" - " b ._259\n" - "._261:\n" - " .align 2, 0\n" - "._260:\n" - " .word gUnknown_Debug_839BF6C\n" - " .word gStringVar1\n" - " .word gSafariZoneStepCounter\n" - " .word Str_839BF0C\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077B3C+1\n" - "._258:\n" - " bl CloseMenu\n" - " mov r0, #0x16\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - "._259:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BB4() -{ - asm( - " push {lr}\n" - " bl debug_sub_80AFEE4\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BC0() -{ - asm( - " push {lr}\n" - " bl debug_sub_8122080\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BCC() -{ - asm( - " push {lr}\n" - " bl debug_sub_8120968\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BD8() -{ - asm( - " push {lr}\n" - " bl debug_sub_8130318\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BE4() -{ - asm( - " push {lr}\n" - " bl debug_sub_80986AC\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BF4() -{ - asm( - " push {lr}\n" - " bl debug_sub_80D93F4\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077C00() -{ - asm( - " push {lr}\n" - " ldr r0, ._262 @ gUnknown_Debug_839BF94\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._263:\n" - " .align 2, 0\n" - "._262:\n" - " .word gUnknown_Debug_839BF94\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077C14() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._264 @ gUnknown_Debug_839BF94\n" - " mov r1, #0xa\n" - " mov r2, #0x9\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._264 + 4 @ gMenuCallback\n" - " ldr r0, ._264 + 8 @ DebugMenu_8077C00\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._265:\n" - " .align 2, 0\n" - "._264:\n" - " .word gUnknown_Debug_839BF94\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077C00+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077C3C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffffc\n" - " mov sl, r0\n" - " add r7, r1, #0\n" - " ldr r0, ._271 @ gUnknown_030006BC\n" - " ldr r1, ._271 + 4 @ gUnknown_Debug_839BFE8\n" - " str r1, [r0]\n" - " mov r1, #0x0\n" - " strb r1, [r7]\n" - " add r7, r7, #0x1\n" - " strb r1, [r7]\n" - " add r7, r7, #0x1\n" - " mov r3, #0x0\n" - " mov r8, r0\n" + gMenuCallback = DebugMenu_8077C14; + return FALSE; +} + +u8 DebugMenu_8077934(void) +{ + int i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.trainerRematches); i++) + gSaveBlock1.trainerRematches[i] = 1; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_8077954(void) +{ + int i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.trainerRematches); i++) + gSaveBlock1.trainerRematches[i] = 0; + CloseMenu(); + return TRUE; +} + +const u8 Str_839BE6B[] = _("さいせんかのうトレーナー:{STR_VAR_1}\n" + "さいせんじょうたいトレーナー:{STR_VAR_2}"); +const u8 Str_839BE8D[] = _("いる"); +const u8 Str_839BE90[] = _("いない"); + +bool8 DebugMenu_8077974(void) +{ + Menu_EraseScreen(); + if (IsRematchTrainerIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)) + StringCopy(gStringVar1, Str_839BE8D); + else + StringCopy(gStringVar1, Str_839BE90); + if (DoesSomeoneWantRematchIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)) + StringCopy(gStringVar2, Str_839BE8D); + else + StringCopy(gStringVar2, Str_839BE90); + sub_8071F40(Str_839BE6B); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; +} + +bool8 DebugMenu_8077A20(void) +{ + gSaveBlock1.trainerRematchStepCounter = 255; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077A40(void) +{ + gSaveBlock1.trainerRematchStepCounter = 0; + CloseMenu(); + return TRUE; +} + +const u8 Str_839BE94[] = _("Max num of steps"); +const u8 Str_839BEA5[] = _("Clear num of steps"); +const u8 Str_839BEB8[] = _("See trainers"); +const u8 Str_839BEC5[] = _("Flag all clear"); +const u8 Str_839BED4[] = _("Flag all set"); + +const struct MenuAction gUnknown_Debug_839BEE4[] = { + {Str_839BEB8, DebugMenu_8077974}, + {Str_839BE94, DebugMenu_8077A20}, + {Str_839BEA5, DebugMenu_8077A40}, + {Str_839BED4, DebugMenu_8077934}, + {Str_839BEC5, DebugMenu_8077954} +}; + +u8 DebugMenu_8077A60(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BEE4); +} + +u8 DebugMenu_RematchTrainers(void) +{ + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BEE4, 13, ARRAY_COUNT(gUnknown_Debug_839BEE4)); + gMenuCallback = DebugMenu_8077A60; + return FALSE; +} + +bool8 DebugMenu_8077A9C(void) +{ + gNumSafariBalls = 30; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077AB4(void) +{ + gNumSafariBalls = 1; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077ACC(void) +{ + gSafariZoneStepCounter = 500; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077AE8(void) +{ + gSafariZoneStepCounter = 1; + CloseMenu(); + return TRUE; +} + +const u8 Str_839BF0C[] = _("のこり {STR_VAR_1}ほ"); +const u8 Str_839BF14[] = _("{STR_VAR_1}\n" + "のこり {STR_VAR_2}ほ"); +const u8 Str_839BF1F[] = _("めのまえには\n" + "キューブが ありません!"); + +bool8 DebugMenu_8077B00(void) +{ + Menu_EraseScreen(); + if (debug_sub_80C853C()) + sub_8071F40(Str_839BF14); + else + sub_8071F40(Str_839BF1F); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; +} + +const u8 Str_839BF33[] = _("ほすうをのこり1にする"); +const u8 Str_839BF3F[] = _("ボールをのこり1にする"); +const u8 Str_839BF4B[] = _("キューブおきば"); +const u8 Str_839BF53[] = _("ボールをのこり30に"); +const u8 Str_839BF5E[] = _("ほすうをのこり500に"); + +const struct MenuAction gUnknown_Debug_839BF6C[] = { + {Str_839BF4B, DebugMenu_8077B00}, + {Str_839BF5E, DebugMenu_8077ACC}, + {Str_839BF33, DebugMenu_8077AE8}, + {Str_839BF53, DebugMenu_8077A9C}, + {Str_839BF3F, DebugMenu_8077AB4} +}; + +bool8 DebugMenu_8077B3C(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BF6C); +} + +u8 DebugMenu_Safari(void) +{ + if (!GetSafariZoneFlag()) + { + CloseMenu(); + PlaySE(SE_BOO); + return TRUE; + } + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BF6C, 14, ARRAY_COUNT(gUnknown_Debug_839BF6C)); + ConvertIntToDecimalStringN(gStringVar1, gSafariZoneStepCounter, STR_CONV_MODE_RIGHT_ALIGN, 3); + sub_8071F40(Str_839BF0C); + gMenuCallback = DebugMenu_8077B3C; + ScriptContext2_Enable(); + return FALSE; +} + +bool8 DebugMenu_8077BB4(void) +{ + Debug_SetUpFieldMove_Cut(); + return TRUE; +} + +bool8 DebugMenu_8077BC0(void) +{ + debug_sub_8122080(); + return TRUE; +} + +bool8 DebugMenu_8077BCC(void) +{ + debug_sub_8120968(); + return TRUE; +} + +bool8 DebugMenu_8077BD8(void) +{ + debug_sub_8130318(); + return TRUE; +} + +bool8 DebugMenu_8077BE4(void) +{ + debug_sub_80986AC(); + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077BF4(void) +{ + Debug_SetUpFieldMove_SecretPower(); + return TRUE; +} + +const struct MenuAction gUnknown_Debug_839BF94[] = { + {gMoveNames[MOVE_CUT], DebugMenu_8077BB4}, + {gMoveNames[MOVE_FLASH], DebugMenu_8077BC0}, + {gMoveNames[MOVE_ROCK_SMASH], DebugMenu_8077BCC}, + {gMoveNames[MOVE_STRENGTH], DebugMenu_8077BD8}, + {gMoveNames[MOVE_SURF], debug_sub_80B0770}, + {gMoveNames[MOVE_FLY], debug_sub_80B07B0}, + {gMoveNames[MOVE_WATERFALL], DebugMenu_8077BE4}, + {gMoveNames[MOVE_DIVE], debug_sub_80B0800}, + {gMoveNames[MOVE_SECRET_POWER], DebugMenu_8077BF4} +}; + +bool8 DebugMenu_8077C00(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BF94); +} + +u8 DebugMenu_8077C14(void) +{ + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BF94, 10, ARRAY_COUNT(gUnknown_Debug_839BF94)); + gMenuCallback = DebugMenu_8077C00; + return FALSE; +} + +const u8 Str_839BFDC[] = _(" じかん ふん びょう"); + +const s32 gUnknown_Debug_839BFE8[] = { + 99, 10, 2, 23, + 99, 10, 2, 26 +}; + +#ifdef NONMATCHING +void DebugMenu_8077C3C(const char * a0, u8 * a1) +{ + // Register allocation swap + // Intended: r7 = a1, r6 = gUnknown_030006BC[2] + // Observed: r6 = a1, r7 = gUnknown_030006BC[2] + + int i; + + gUnknown_030006BC = gUnknown_Debug_839BFE8; + *a1++ = CHAR_SPACE; + *a1++ = CHAR_SPACE; + + for (i = 0; i < 2; i++, gUnknown_030006BC += 4) + { + u32 r5 = 0; + int r2; + int r4; + for (r2 = gUnknown_030006BC[1], r4 = 0; r4 < gUnknown_030006BC[2]; r4++, r2 /= 10) + r5 += (a0[gUnknown_030006BC[3] + r4] - '0') * r2; + if (gUnknown_030006BC[0] < r5) + r5 = gUnknown_030006BC[0]; + a1 = ConvertIntToDecimalStringN(a1, r5, STR_CONV_MODE_LEADING_ZEROS, gUnknown_030006BC[2]); + } + a1[0] = a0[29] - 'A' + CHAR_A; + if (a1[0] > 0xf6) + a1[0] = 0xf6; + a1[1] = EOS; +} +#else +NAKED void DebugMenu_8077C3C(const char * a0, u8 * a1) +{ + asm("\tpush\t{r4, r5, r6, r7, lr}\n" + "\tmov\tr7, sl\n" + "\tmov\tr6, r9\n" + "\tmov\tr5, r8\n" + "\tpush\t{r5, r6, r7}\n" + "\tadd\tsp, sp, #0xfffffffc\n" + "\tmov\tsl, r0\n" + "\tadd\tr7, r1, #0\n" + "\tldr\tr0, ._271 @ gUnknown_030006BC\n" + "\tldr\tr1, ._271 + 4 @ gUnknown_Debug_839BFE8\n" + "\tstr\tr1, [r0]\n" + "\tmov\tr1, #0x0\n" + "\tstrb\tr1, [r7]\n" + "\tadd\tr7, r7, #0x1\n" + "\tstrb\tr1, [r7]\n" + "\tadd\tr7, r7, #0x1\n" + "\tmov\tr3, #0x0\n" + "\tmov\tr8, r0\n" "._269:\n" - " mov r5, #0x0\n" - " ldr r1, ._271 @ gUnknown_030006BC\n" - " ldr r0, [r1]\n" - " ldr r2, [r0, #0x4]\n" - " mov r4, #0x0\n" - " ldr r1, [r0, #0x8]\n" - " add r3, r3, #0x1\n" - " mov r9, r3\n" - " cmp r5, r1\n" - " bge ._266 @cond_branch\n" - " add r3, r0, #0\n" - " add r6, r1, #0\n" + "\tmov\tr5, #0x0\n" + "\tldr\tr1, ._271 @ gUnknown_030006BC\n" + "\tldr\tr0, [r1]\n" + "\tldr\tr2, [r0, #0x4]\n" + "\tmov\tr4, #0x0\n" + "\tldr\tr1, [r0, #0x8]\n" + "\tadd\tr3, r3, #0x1\n" + "\tmov\tr9, r3\n" + "\tcmp\tr5, r1\n" + "\tbge\t._266\t@cond_branch\n" + "\tadd\tr3, r0, #0\n" + "\tadd\tr6, r1, #0\n" "._267:\n" - " ldr r0, [r3, #0xc]\n" - " add r0, r0, r4\n" - " add r0, r0, sl\n" - " ldrb r0, [r0]\n" - " sub r0, r0, #0x30\n" - " mul r0, r0, r2\n" - " add r5, r5, r0\n" - " add r4, r4, #0x1\n" - " add r0, r2, #0\n" - " mov r1, #0xa\n" - " str r3, [sp]\n" - " bl __divsi3\n" - " add r2, r0, #0\n" - " ldr r3, [sp]\n" - " cmp r4, r6\n" - " blt ._267 @cond_branch\n" + "\tldr\tr0, [r3, #0xc]\n" + "\tadd\tr0, r0, r4\n" + "\tadd r0, r0, sl\n" + "\tldrb\tr0, [r0]\n" + "\tsub\tr0, r0, #0x30\n" + "\tmul\tr0, r0, r2\n" + "\tadd\tr5, r5, r0\n" + "\tadd\tr4, r4, #0x1\n" + "\tadd\tr0, r2, #0\n" + "\tmov\tr1, #0xa\n" + "\tstr\tr3, [sp]\n" + "\tbl\t__divsi3\n" + "\tadd\tr2, r0, #0\n" + "\tldr\tr3, [sp]\n" + "\tcmp\tr4, r6\n" + "\tblt\t._267\t@cond_branch\n" "._266:\n" - " mov r0, r8\n" - " ldr r1, [r0]\n" - " ldr r0, [r1]\n" - " cmp r0, r5\n" - " bcs ._268 @cond_branch\n" - " add r5, r0, #0\n" + "\tmov\tr0, r8\n" + "\tldr\tr1, [r0]\n" + "\tldr\tr0, [r1]\n" + "\tcmp\tr0, r5\n" + "\tbcs\t._268\t@cond_branch\n" + "\tadd\tr5, r0, #0\n" "._268:\n" - " ldrb r3, [r1, #0x8]\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " mov r2, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r7, r0, #0\n" - " mov r3, r9\n" - " mov r1, r8\n" - " ldr r0, [r1]\n" - " add r0, r0, #0x10\n" - " str r0, [r1]\n" - " cmp r3, #0x1\n" - " ble ._269 @cond_branch\n" - " mov r1, sl\n" - " ldrb r0, [r1, #0x1d]\n" - " add r0, r0, #0x7a\n" - " strb r0, [r7]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0xf6\n" - " bls ._270 @cond_branch\n" - " mov r0, #0xf6\n" - " strb r0, [r7]\n" + "\tldrb\tr3, [r1, #0x8]\n" + "\tadd\tr0, r7, #0\n" + "\tadd\tr1, r5, #0\n" + "\tmov\tr2, #0x2\n" + "\tbl\tConvertIntToDecimalStringN\n" + "\tadd\tr7, r0, #0\n" + "\tmov\tr3, r9\n" + "\tmov\tr1, r8\n" + "\tldr\tr0, [r1]\n" + "\tadd\tr0, r0, #0x10\n" + "\tstr\tr0, [r1]\n" + "\tcmp\tr3, #0x1\n" + "\tble\t._269\t@cond_branch\n" + "\tmov\tr1, sl\n" + "\tldrb\tr0, [r1, #0x1d]\n" + "\tadd\tr0, r0, #0x7a\n" + "\tstrb\tr0, [r7]\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr0, r0, #0x18\n" + "\tcmp\tr0, #0xf6\n" + "\tbls\t._270\t@cond_branch\n" + "\tmov\tr0, #0xf6\n" + "\tstrb\tr0, [r7]\n" "._270:\n" - " mov r0, #0xff\n" - " strb r0, [r7, #0x1]\n" - " add sp, sp, #0x4\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" + "\tmov\tr0, #0xff\n" + "\tstrb\tr0, [r7, #0x1]\n" + "\tadd\tsp, sp, #0x4\n" + "\tpop\t{r3, r4, r5}\n" + "\tmov\tr8, r3\n" + "\tmov\tr9, r4\n" + "\tmov\tsl, r5\n" + "\tpop\t{r4, r5, r6, r7}\n" + "\tpop\t{r0}\n" + "\tbx\tr0\n" "._272:\n" - " .align 2, 0\n" + "\t.align\t2, 0\n" "._271:\n" - " .word gUnknown_030006BC \n" - " .word gUnknown_Debug_839BFE8\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8077CF4() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " ldr r0, ._273 @ BuildDateTime\n" - " ldr r6, ._273 + 4 @ gStringVar4\n" - " add r1, r6, #0\n" - " bl DebugMenu_8077C3C\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " add r2, r5, #0\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._274:\n" - " .align 2, 0\n" - "._273:\n" - " .word BuildDateTime\n" - " .word gStringVar4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077D24() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r6, r0, #0\n" - " add r4, r1, #0\n" - " add r5, r2, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " bl Menu_EraseScreen\n" - " lsl r3, r5, #0x1\n" - " add r3, r3, #0x1\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " add r2, r4, #0\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " add r2, r5, #0\n" - " add r3, r6, #0\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " sub r4, r4, #0x1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " str r4, [sp, #0x4]\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " add r3, r5, #0\n" - " bl InitMenu\n" - " add sp, sp, #0x8\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077D78() -{ - asm( - " push {r4, r5, lr}\n" - " add r5, r0, #0\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r4, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._275 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r4, r0\n" - " beq ._276 @cond_branch\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._278 @ gMenuCallback\n" - " lsl r1, r4, #0x3\n" - " add r1, r1, r5\n" - " ldr r1, [r1, #0x4]\n" - " str r1, [r0]\n" - "._275:\n" - " mov r0, #0x0\n" - " b ._277\n" - "._279:\n" - " .align 2, 0\n" - "._278:\n" - " .word gMenuCallback\n" - "._276:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._277:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077DB4() -{ - asm( - " push {lr}\n" - " ldr r0, ._282 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._280 @cond_branch\n" - " mov r0, #0x0\n" - " b ._281\n" - "._283:\n" - " .align 2, 0\n" - "._282:\n" - " .word gMain\n" - "._280:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._281:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077DD8() -{ - asm( - " push {r4, r5, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " lsl r3, r3, #0x10\n" - " lsr r3, r3, #0x10\n" - " add r1, r3, #0\n" - " mov r0, #0x80\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._284 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x1\n" - " b ._285\n" - "._284:\n" - " mov r0, #0x40\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._286 @cond_branch\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " b ._287\n" - "._286:\n" - " mov r0, #0x20\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._288 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0xa\n" - "._285:\n" - " strh r0, [r4]\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, r5\n" - " bge ._293 @cond_branch\n" - " strh r2, [r4]\n" - " b ._293\n" - "._288:\n" - " mov r0, #0x10\n" - " and r1, r1, r0\n" - " cmp r1, #0\n" - " bne ._291 @cond_branch\n" - " mov r0, #0x0\n" - " b ._292\n" - "._291:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0xa\n" - "._287:\n" - " strh r0, [r4]\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, r2\n" - " ble ._293 @cond_branch\n" - " strh r5, [r4]\n" - "._293:\n" - " mov r0, #0x1\n" - "._292:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077E40() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " ldr r0, ._297 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._294 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._295 @cond_branch\n" - "._294:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " b ._302\n" - "._298:\n" - " .align 2, 0\n" - "._297:\n" - " .word gMain\n" - "._295:\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._299 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " cmp r4, #0\n" - " beq ._300 @cond_branch\n" - " mov r0, #0x1\n" - " bl DebugMenu_807786C\n" - " mov r0, #0x0\n" - " b ._302\n" - "._300:\n" - " mov r0, #0x0\n" - " bl DebugMenu_807786C\n" - " mov r0, #0x1\n" - " b ._302\n" - "._299:\n" - " add r0, r4, #0\n" - "._302:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) + "\t.word\tgUnknown_030006BC \n" + "\t.word\tgUnknown_Debug_839BFE8\n"); +} +#endif + +void debug_sub_8077CF4(u8 x, u8 y) +{ + DebugMenu_8077C3C(BuildDateTime, gStringVar4); + Menu_PrintText(gStringVar4, x, y); +} + +void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 width, u8 itemCount) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, width, 2 * itemCount + 1); + Menu_PrintItems(1, 1, itemCount, menuAction); + InitMenu(0, 1, 1, itemCount, 0, width - 1); +} + +u8 DebugMenu_8077D78(const struct MenuAction *menuActions) +{ + s8 input = Menu_ProcessInput(); + switch (input) + { + default: + Menu_EraseScreen(); + gMenuCallback = menuActions[input].func; + return FALSE; + case -2: + return FALSE; + case -1: + CloseMenu(); + return TRUE; + } +} + +bool8 DebugMenu_8077DB4(void) +{ + if (gMain.newKeys & A_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +bool32 DebugMenu_8077DD8(s16 * a0, s32 a1, s32 a2, u16 a3) +{ + if (a3 & DPAD_DOWN) + { + *a0 -= 1; + if (*a0 < a1) + *a0 = a2; + } + else if (a3 & DPAD_UP) + { + *a0 += 1; + if (*a0 > a2) + *a0 = a1; + } + else if (a3 & DPAD_LEFT) + { + *a0 -= 10; + if (*a0 < a1) + *a0 = a2; + } + else if (a3 & DPAD_RIGHT) + { + *a0 += 10; + if (*a0 > a2) + *a0 = a1; + } + else + return FALSE; + return TRUE; +} + +int DebugMenu_8077E40(int flag) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return -1; + } + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + if (flag) + { + DebugMenu_807786C(1); + return 0; + } + else + { + DebugMenu_807786C(0); + return 1; + } + } + return flag; +} + u8 DebugMenu_MakeItems() { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl DebugMenu_8077EAC\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077EAC() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._303 @ DebugMenu_8077F40\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " ldr r1, ._303 + 4 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r1, #0x1\n" - " strh r1, [r0, #0xa]\n" - " strh r1, [r0, #0xc]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._304:\n" - " .align 2, 0\n" - "._303:\n" - " .word DebugMenu_8077F40+1\n" - " .word gTasks\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077EE0() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r6, r1, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " lsl r6, r6, #0x10\n" - " lsr r6, r6, #0x10\n" - " mov r0, #0x4\n" - " mov r1, #0x11\n" - " mov r2, #0x16\n" - " mov r3, #0x12\n" - " bl Menu_BlankWindowRect\n" - " ldr r5, ._305 @ gStringVar1\n" - " add r0, r5, #0\n" - " add r1, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r5, #0\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " bl ItemId_GetName\n" - " mov r1, #0x8\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r5, #0\n" - " add r1, r6, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r5, #0\n" - " mov r1, #0x12\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._306:\n" - " .align 2, 0\n" - "._305:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077F40() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r0, ._307 @ gTasks\n" - " add r4, r4, r0\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._307 + 4 @ gDebug0x839C008\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - " ldr r0, ._307 + 8 @ DebugMenu_8077F7C\n" - " str r0, [r4]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._308:\n" - " .align 2, 0\n" - "._307:\n" - " .word gTasks\n" - " .word gDebug0x839C008\n" - " .word DebugMenu_8077F7C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077F7C() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._311 @ gTasks\n" - " add r4, r1, r0\n" - " ldr r3, ._311 + 4 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._309 @cond_branch\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._311 + 8 @ Str_839C014\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - " ldr r0, ._311 + 12 @ DebugMenu_8077FFC\n" - " str r0, [r4]\n" - " b ._317\n" - "._312:\n" - " .align 2, 0\n" - "._311:\n" - " .word gTasks\n" - " .word gMain\n" - " .word Str_839C014\n" - " .word DebugMenu_8077FFC+1\n" - "._309:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._313 @cond_branch\n" - " ldr r0, ._315 @ DebugMenu_807806C\n" - " str r0, [r4]\n" - " b ._317\n" - "._316:\n" - " .align 2, 0\n" - "._315:\n" - " .word DebugMenu_807806C+1\n" - "._313:\n" - " add r0, r4, #0\n" - " add r0, r0, #0xa\n" - " mov r2, #0xae\n" - " lsl r2, r2, #0x1\n" - " ldrh r3, [r3, #0x30]\n" - " mov r1, #0x1\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._317 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - "._317:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077FFC() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._321 @ gTasks\n" - " add r4, r1, r0\n" - " ldr r2, ._321 + 4 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._318 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl AddBagItem\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._320 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " b ._320\n" - "._322:\n" - " .align 2, 0\n" - "._321:\n" - " .word gTasks\n" - " .word gMain\n" - "._318:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._323 @cond_branch\n" - "._320:\n" - " ldr r0, ._325 @ DebugMenu_8077F40\n" - " str r0, [r4]\n" - " b ._327\n" - "._326:\n" - " .align 2, 0\n" - "._325:\n" - " .word DebugMenu_8077F40+1\n" - "._323:\n" - " add r0, r4, #0\n" - " add r0, r0, #0xc\n" - " ldrh r3, [r2, #0x30]\n" - " mov r1, #0x1\n" - " mov r2, #0x63\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._327 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - "._327:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807806C() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " bl DebugMenu_8077048\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807808C() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff4\n" - " add r4, r0, #0\n" - " sub r0, r4, #1\n" - " cmp r0, #0xc\n" - " bls ._328 @cond_branch\n" - " mov r4, #0x1\n" - "._328:\n" - " lsl r1, r4, #0x5\n" - " ldr r0, ._331 @ gSaveBlock1\n" - " add r5, r1, r0\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x13\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._331 + 4 @ Str_839C01E\n" - " mov r1, #0x2\n" - " mov r2, #0x2\n" - " bl Menu_PrintText\n" - " mov r0, sp\n" - " add r1, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0x2\n" - " bl Menu_PrintText\n" - " ldrh r1, [r5, #0x8]\n" - " mov r0, sp\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0x4\n" - " bl Menu_PrintText\n" - " add r4, r5, #0\n" - " add r4, r4, #0xb\n" - " add r0, r4, #0\n" - " bl StringLength\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi ._329 @cond_branch\n" - " add r0, r4, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x6\n" - " bl Menu_PrintText\n" - " b ._330\n" - "._332:\n" - " .align 2, 0\n" - "._331:\n" - " .word gSaveBlock1+0x2ddc\n" - " .word Str_839C01E\n" - "._329:\n" - " ldr r0, ._335 @ Str_839C04D\n" - " mov r1, #0xb\n" - " mov r2, #0x6\n" - " bl Menu_PrintText\n" - "._330:\n" - " add r4, r5, #0\n" - " add r4, r4, #0x16\n" - " add r0, r4, #0\n" - " bl StringLength\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi ._333 @cond_branch\n" - " add r0, r4, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x8\n" - " bl Menu_PrintText\n" - " b ._334\n" - "._336:\n" - " .align 2, 0\n" - "._335:\n" - " .word Str_839C04D\n" - "._333:\n" - " ldr r0, ._337 @ Str_839C04D\n" - " mov r1, #0xb\n" - " mov r2, #0x8\n" - " bl Menu_PrintText\n" - "._334:\n" - " ldrb r1, [r5, #0xa]\n" - " mov r0, sp\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0xa\n" - " bl Menu_PrintText\n" - " ldr r1, [r5]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x8\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0xc\n" - " bl Menu_PrintText\n" - " add sp, sp, #0xc\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._338:\n" - " .align 2, 0\n" - "._337:\n" - " .word Str_839C04D\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807817C() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._340 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._339 @cond_branch\n" - " bl Menu_EraseScreen\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - "._339:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._341:\n" - " .align 2, 0\n" - "._340:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80781A8() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._344 @ gTasks\n" - " add r5, r1, r0\n" - " ldrh r1, [r5, #0x8]\n" - " mov r2, #0x8\n" - " ldsh r0, [r5, r2]\n" - " cmp r0, #0\n" - " bne ._342 @cond_branch\n" - " add r0, r1, #1\n" - " strh r0, [r5, #0x8]\n" - " b ._343\n" - "._345:\n" - " .align 2, 0\n" - "._344:\n" - " .word gTasks\n" - "._342:\n" - " ldr r2, ._348 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._346 @cond_branch\n" - " mov r1, #0x8\n" - " ldsh r0, [r5, r1]\n" - " bl DebugMenu_807808C\n" - " ldr r0, ._348 + 4 @ DebugMenu_807817C\n" - " str r0, [r5]\n" - " b ._350\n" - "._349:\n" - " .align 2, 0\n" - "._348:\n" - " .word gMain\n" - " .word DebugMenu_807817C+1\n" - "._346:\n" - " add r0, r5, #0\n" - " add r0, r0, #0x8\n" - " ldrh r1, [r2, #0x30]\n" - " mov r3, #0xc0\n" - " and r3, r3, r1\n" - " mov r1, #0x1\n" - " mov r2, #0xd\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0\n" - " beq ._350 @cond_branch\n" - "._343:\n" - " mov r0, #0x4\n" - " mov r1, #0x11\n" - " mov r2, #0x16\n" - " mov r3, #0x12\n" - " bl Menu_BlankWindowRect\n" - " ldr r4, ._351 @ gStringVar1\n" - " mov r2, #0x8\n" - " ldsh r1, [r5, r2]\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - "._350:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._352:\n" - " .align 2, 0\n" - "._351:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ViewPortraits() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._353 @ DebugMenu_80781A8\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._354:\n" - " .align 2, 0\n" - "._353:\n" - " .word DebugMenu_80781A8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078254() -{ - asm( - " push {lr}\n" - " bl DebugMenu_807808C\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_AllBadges() -{ - asm( - " push {lr}\n" - " ldr r0, ._355 @ 0x807\n" - " bl FlagSet\n" - " ldr r0, ._355 + 4 @ 0x808\n" - " bl FlagSet\n" - " ldr r0, ._355 + 8 @ 0x809\n" - " bl FlagSet\n" - " ldr r0, ._355 + 12 @ 0x80a\n" - " bl FlagSet\n" - " ldr r0, ._355 + 16 @ 0x80b\n" - " bl FlagSet\n" - " ldr r0, ._355 + 20 @ 0x80c\n" - " bl FlagSet\n" - " ldr r0, ._355 + 24 @ 0x80d\n" - " bl FlagSet\n" - " ldr r0, ._355 + 28 @ 0x80e\n" - " bl FlagSet\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._356:\n" - " .align 2, 0\n" - "._355:\n" - " .word 0x807\n" - " .word 0x808\n" - " .word 0x809\n" - " .word 0x80a\n" - " .word 0x80b\n" - " .word 0x80c\n" - " .word 0x80d\n" - " .word 0x80e\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_TimeRecords() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._357 @ debug_sub_806F9E4\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._358:\n" - " .align 2, 0\n" - "._357:\n" - " .word debug_sub_806F9E4+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_SetTime() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl debug_sub_806F99C\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80782EC() -{ - asm( - " push {lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r0, ._359 @ gStringVar1\n" - " mov r2, #0x0\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._359 + 4 @ Str_839C053\n" - " bl sub_8071F40\n" - " pop {r0}\n" - " bx r0\n" - "._360:\n" - " .align 2, 0\n" - "._359:\n" - " .word gStringVar1\n" - " .word Str_839C053\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078310() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._364 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0\n" - " beq ._361 @cond_branch\n" - " cmp r0, #0x1\n" - " beq ._362 @cond_branch\n" - " b ._375\n" - "._365:\n" - " .align 2, 0\n" - "._364:\n" - " .word gTasks+0x8\n" - "._361:\n" - " ldr r0, ._367 @ 0x4024\n" - " bl VarGet\n" - " strh r0, [r4, #0x2]\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80782EC\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._375\n" - "._368:\n" - " .align 2, 0\n" - "._367:\n" - " .word 0x4024\n" - "._362:\n" - " ldr r3, ._371 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._369 @cond_branch\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " ldr r0, ._371 + 4 @ 0x4024\n" - " bl GetVarPointer\n" - " ldrh r1, [r4, #0x2]\n" - " strh r1, [r0]\n" - " b ._370\n" - "._372:\n" - " .align 2, 0\n" - "._371:\n" - " .word gMain\n" - " .word 0x4024\n" - "._369:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._373 @cond_branch\n" - "._370:\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " b ._375\n" - "._373:\n" - " add r0, r4, #2\n" - " ldr r2, ._376 @ 0xffff\n" - " ldrh r3, [r3, #0x30]\n" - " mov r1, #0x0\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._375 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80782EC\n" - "._375:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._377:\n" - " .align 2, 0\n" - "._376:\n" - " .word 0xffff\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_MiragaIslandRND() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._378 @ DebugMenu_8078310\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._379:\n" - " .align 2, 0\n" - "._378:\n" - " .word DebugMenu_8078310+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80783C8() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._383 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._382 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r4, ._383 + 4 @ 0x804\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._381 @cond_branch\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " mov r0, #0x0\n" - " bl DebugMenu_807786C\n" - " b ._382\n" - "._384:\n" - " .align 2, 0\n" - "._383:\n" - " .word gMain\n" - " .word 0x804\n" - "._381:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - " mov r0, #0x1\n" - " bl DebugMenu_807786C\n" - "._382:\n" - " ldr r0, ._388 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._385 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._386 @cond_branch\n" - "._385:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._387\n" - "._389:\n" - " .align 2, 0\n" - "._388:\n" - " .word gMain\n" - "._386:\n" - " mov r0, #0x0\n" - "._387:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ToggleClearFlag() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._390 @ 0x804\n" - " bl FlagGet\n" - " mov r1, #0x1\n" - " eor r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._390 + 4 @ gMenuCallback\n" - " ldr r0, ._390 + 8 @ DebugMenu_80783C8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._391:\n" - " .align 2, 0\n" - "._390:\n" - " .word 0x804\n" - " .word gMenuCallback\n" - " .word DebugMenu_80783C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078464() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._396 @ 0x82a\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_8077E40\n" - " add r1, r0, #0\n" - " cmp r1, #0\n" - " beq ._392 @cond_branch\n" - " cmp r1, #0\n" - " bgt ._393 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._394 @cond_branch\n" - " b ._401\n" - "._397:\n" - " .align 2, 0\n" - "._396:\n" - " .word 0x82a\n" - "._393:\n" - " cmp r1, #0x1\n" - " beq ._398 @cond_branch\n" - " b ._401\n" - "._392:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - " b ._401\n" - "._398:\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " b ._401\n" - "._394:\n" - " mov r0, #0x1\n" - " b ._402\n" - "._401:\n" - " mov r0, #0x0\n" - "._402:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenWeatherEvents() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._404 @ 0x82a\n" - " bl FlagGet\n" - " mov r1, #0x0\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._403 @cond_branch\n" - " mov r1, #0x1\n" - "._403:\n" - " add r0, r1, #0\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._404 + 4 @ gMenuCallback\n" - " ldr r0, ._404 + 8 @ DebugMenu_8078464\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._405:\n" - " .align 2, 0\n" - "._404:\n" - " .word 0x82a\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078464+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80784E8() -{ - asm( - " push {lr}\n" - " bl IsMysteryGiftEnabled\n" - " bl DebugMenu_8077E40\n" - " add r1, r0, #0\n" - " cmp r1, #0\n" - " beq ._406 @cond_branch\n" - " cmp r1, #0\n" - " bgt ._407 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._408 @cond_branch\n" - " b ._413\n" - "._407:\n" - " cmp r1, #0x1\n" - " beq ._410 @cond_branch\n" - " b ._413\n" - "._406:\n" - " bl DisableMysteryGift\n" - " b ._413\n" - "._410:\n" - " bl EnableMysteryGift\n" - " b ._413\n" - "._408:\n" - " mov r0, #0x1\n" - " b ._414\n" - "._413:\n" - " mov r0, #0x0\n" - "._414:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMysteryEvent() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl IsMysteryGiftEnabled\n" - " mov r1, #0x0\n" - " cmp r0, #0\n" - " bne ._415 @cond_branch\n" - " mov r1, #0x1\n" - "._415:\n" - " add r0, r1, #0\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._416 @ gMenuCallback\n" - " ldr r0, ._416 + 4 @ DebugMenu_80784E8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._417:\n" - " .align 2, 0\n" - "._416:\n" - " .word gMenuCallback\n" - " .word DebugMenu_80784E8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078550() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x10\n" - " lsr r6, r0, #0x10\n" - " lsl r0, r6, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl GetGameStat\n" - " add r7, r0, #0\n" - " ldr r0, ._420 @ gStringVar1\n" - " add r1, r6, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._420 + 4 @ gStringVar2\n" - " ldr r5, ._420 + 8 @ gUnknown_Debug_839C26C\n" - " lsl r4, r6, #0x3\n" - " add r1, r5, #4\n" - " add r1, r4, r1\n" - " ldr r1, [r1]\n" - " bl StringCopy\n" - " add r4, r4, r5\n" - " ldr r0, [r4]\n" - " cmp r0, #0\n" - " bne ._418 @cond_branch\n" - " ldr r0, ._420 + 12 @ gStringVar3\n" - " ldr r1, ._420 + 16 @ Str_839C085\n" - " bl StringCopy\n" - " b ._423\n" - "._421:\n" - " .align 2, 0\n" - "._420:\n" - " .word gStringVar1\n" - " .word gStringVar2\n" - " .word gUnknown_Debug_839C26C\n" - " .word gStringVar3\n" - " .word Str_839C085\n" - "._418:\n" - " cmp r6, #0x1\n" - " beq ._422 @cond_branch\n" - " ldr r0, ._424 @ gStringVar3\n" - " add r1, r7, #0\n" - " mov r2, #0x1\n" - " mov r3, #0xa\n" - " bl ConvertIntToDecimalStringN\n" - " b ._423\n" - "._425:\n" - " .align 2, 0\n" - "._424:\n" - " .word gStringVar3\n" - "._422:\n" - " ldr r4, ._426 @ gStringVar3\n" - " lsr r1, r7, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r6, #0xf0\n" - " strb r6, [r4, #0x3]\n" - " add r0, r4, #4\n" - " lsr r1, r7, #0x8\n" - " mov r5, #0xff\n" - " and r1, r1, r5\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " strb r6, [r4, #0x6]\n" - " add r4, r4, #0x7\n" - " and r7, r7, r5\n" - " add r0, r4, #0\n" - " add r1, r7, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - "._423:\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._426 + 4 @ Str_839C07C\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._427:\n" - " .align 2, 0\n" - "._426:\n" - " .word gStringVar3\n" - " .word Str_839C07C\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807860C() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._432 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._428 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._429 @cond_branch\n" - " cmp r0, #0\n" - " beq ._430 @cond_branch\n" - " b ._447\n" - "._433:\n" - " .align 2, 0\n" - "._432:\n" - " .word gTasks+0x8\n" - "._429:\n" - " cmp r0, #0x2\n" - " beq ._434 @cond_branch\n" - " b ._447\n" - "._430:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078550\n" - "._441:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._447\n" - "._428:\n" - " ldr r3, ._439 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._437 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r4]\n" - " mov r0, #0x1\n" - " b ._438\n" - "._440:\n" - " .align 2, 0\n" - "._439:\n" - " .word gMain\n" - "._437:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " cmp r2, #0\n" - " bne ._441 @cond_branch\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._442 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x2]\n" - " lsl r0, r0, #0x10\n" - " asr r0, r0, #0x10\n" - " cmp r0, #0x32\n" - " bne ._446 @cond_branch\n" - " strh r2, [r4, #0x2]\n" - " b ._446\n" - "._442:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._447 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r4, #0x2]\n" - " lsl r0, r0, #0x10\n" - " cmp r0, #0\n" - " bge ._446 @cond_branch\n" - " mov r0, #0x31\n" - " strh r0, [r4, #0x2]\n" - "._446:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078550\n" - " b ._447\n" - "._434:\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._447:\n" - " mov r0, #0x0\n" - "._438:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80786C0() -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_807860C\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80786D0() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " add r0, r4, #0\n" - " bl DebugMenu_807860C\n" - " cmp r0, #0\n" - " beq ._449 @cond_branch\n" - " ldr r1, ._450 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r2, [r0, #0xa]\n" - " ldr r1, ._450 + 4 @ gUnknown_Debug_839C26C\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._449 @cond_branch\n" - " sub r1, r0, #1\n" - " add r0, r2, #0\n" - " bl SetGameStat\n" - " mov r0, #0x15\n" - " bl PlaySE\n" - "._449:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._451:\n" - " .align 2, 0\n" - "._450:\n" - " .word gTasks\n" - " .word gUnknown_Debug_839C26C\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078714() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " add r0, r4, #0\n" - " bl DebugMenu_807860C\n" - " cmp r0, #0\n" - " beq ._453 @cond_branch\n" - " ldr r1, ._454 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r2, [r0, #0xa]\n" - " ldr r1, ._454 + 4 @ gUnknown_Debug_839C26C\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._453 @cond_branch\n" - " add r0, r2, #0\n" - " mov r1, #0x0\n" - " bl SetGameStat\n" - " mov r0, #0x15\n" - " bl PlaySE\n" - "._453:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._455:\n" - " .align 2, 0\n" - "._454:\n" - " .word gTasks\n" - " .word gUnknown_Debug_839C26C\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078758() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " add r0, r4, #0\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " mov r0, #0x1\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078774() -{ - asm( - " push {lr}\n" - " ldr r0, ._456 @ DebugMenu_80786C0\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._457:\n" - " .align 2, 0\n" - "._456:\n" - " .word DebugMenu_80786C0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078788() -{ - asm( - " push {lr}\n" - " ldr r0, ._458 @ DebugMenu_80786D0\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._459:\n" - " .align 2, 0\n" - "._458:\n" - " .word DebugMenu_80786D0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807879C() -{ - asm( - " push {lr}\n" - " ldr r0, ._460 @ DebugMenu_8078714\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._461:\n" - " .align 2, 0\n" - "._460:\n" - " .word DebugMenu_8078714+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80787B0() -{ - asm( - " push {lr}\n" - " ldr r0, ._462 @ gUnknown_Debug_839C3FC\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._463:\n" - " .align 2, 0\n" - "._462:\n" - " .word gUnknown_Debug_839C3FC\n" - "\n" - ); -} - -__attribute__((naked)) + CloseMenu(); + DebugMenu_8077EAC(); + ScriptContext2_Enable(); + return TRUE; +} + +void DebugMenu_8077EAC(void) +{ + u8 taskId = CreateTask(DebugMenu_8077F40, 80); + Menu_EraseScreen(); + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[2] = 1; +} + +void DebugMenu_8077EE0(u16 itemId, u16 quantity) +{ + Menu_BlankWindowRect(4, 17, 22, 18); + ConvertIntToDecimalStringN(gStringVar1, itemId, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 4, 17); + Menu_PrintText(ItemId_GetName(itemId), 8, 17); + ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 18, 17); +} + +const u8 gDebug0x839C008[] = _("Which item?"); + +void DebugMenu_8077F40(u8 taskId) +{ + struct Task *task = gTasks + taskId; + Menu_DisplayDialogueFrame(); + Menu_PrintText(gDebug0x839C008, 2, 15); + DebugMenu_8077EE0(task->data[1], task->data[2]); + task->func = DebugMenu_8077F7C; +} + +const u8 Str_839C014[] = _("How many?"); + +void DebugMenu_8077F7C(u8 taskId) +{ + struct Task *task = gTasks + taskId; + if (gMain.newKeys & A_BUTTON) + { + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C014, 2, 15); + DebugMenu_8077EE0(task->data[1], task->data[2]); + task->func = DebugMenu_8077FFC; + } + else if (gMain.newKeys & B_BUTTON) + { + task->func = DebugMenu_807806C; + } + else if (DebugMenu_8077DD8(task->data + 1, 1, ITEM_15C, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8077EE0(task->data[1], task->data[2]); + } +} + +void DebugMenu_8077FFC(u8 taskId) +{ + struct Task *task = gTasks + taskId; + if (gMain.newKeys & A_BUTTON) + { + if (AddBagItem(task->data[1], task->data[2]) == TRUE) + PlaySE(SE_SELECT); + task->func = DebugMenu_8077F40; + } + else if (gMain.newKeys & B_BUTTON) + { + task->func = DebugMenu_8077F40; + } + else if (DebugMenu_8077DD8(task->data + 2, 1, 99, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8077EE0(task->data[1], task->data[2]); + } +} + +void DebugMenu_807806C(u8 taskId) +{ + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + DebugMenu_8077048(); +} + +const u8 Str_839C01E[] = _("にがおえ ばんごう\n" + "ポケモンナンバー\n" + "ポケモンめい\n" + "ブリーダーめい\n" + "しゅるい\n" + "こせいらんすう"); +const u8 Str_839C04D[] = _("データなし"); + +void DebugMenu_807808C(u32 a0) +{ + u8 strbuf[11]; + struct ContestWinner *winner; + + if (a0 == 0 || a0 > 13) + a0 = 1; + winner = gSaveBlock1.contestWinners + a0 - 1; + + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 19, 17); + Menu_PrintText(Str_839C01E, 2, 2); + + ConvertIntToDecimalStringN(strbuf, a0, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 2); + + ConvertIntToDecimalStringN(strbuf, winner->species, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 4); + + if (StringLength(winner->nickname) <= 11) + Menu_PrintText(winner->nickname, 11, 6); + else + Menu_PrintText(Str_839C04D, 11, 6); + + if (StringLength(winner->trainerName) <= 11) + Menu_PrintText(winner->trainerName, 11, 8); + else + Menu_PrintText(Str_839C04D, 11, 8); + + ConvertIntToDecimalStringN(strbuf, winner->contestCategory, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 10); + + ConvertIntToHexStringN(strbuf, winner->personality, STR_CONV_MODE_LEADING_ZEROS, 8); + Menu_PrintText(strbuf, 11, 12); +} + +void DebugMenu_807817C(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } +} + +void DebugMenu_80781A8(u8 taskId) +{ + struct Task *task = gTasks + taskId; + + if (task->data[0] == 0) + task->data[0]++; + else if (gMain.newKeys & A_BUTTON) + { + DebugMenu_807808C(task->data[0]); + task->func = DebugMenu_807817C; + return; + } + else if (!DebugMenu_8077DD8(task->data + 0, 1, 13, gMain.newAndRepeatedKeys & (DPAD_UP | DPAD_DOWN))) + return; + Menu_BlankWindowRect(4, 17, 22, 18); + ConvertIntToDecimalStringN(gStringVar1, task->data[0], STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 4, 17); +} + +u8 DebugMenu_ViewPortraits(void) +{ + CloseMenu(); + CreateTask(DebugMenu_80781A8, 80); + ScriptContext2_Enable(); + return TRUE; +} + +void DebugMenu_8078254(u32 a0) +{ + DebugMenu_807808C(a0); +} + +u8 DebugMenu_AllBadges(void) +{ + FlagSet(FLAG_BADGE01_GET); + FlagSet(FLAG_BADGE02_GET); + FlagSet(FLAG_BADGE03_GET); + FlagSet(FLAG_BADGE04_GET); + FlagSet(FLAG_BADGE05_GET); + FlagSet(FLAG_BADGE06_GET); + FlagSet(FLAG_BADGE07_GET); + FlagSet(FLAG_BADGE08_GET); + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_TimeRecords(void) +{ + CloseMenu(); + CreateTask(debug_sub_806F9E4, 80); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_SetTime(void) +{ + CloseMenu(); + debug_sub_806F99C(); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 Str_839C053[] = _("Miracle Island emerged\n" + "Random numbers:{STR_VAR_1}"); + +void DebugMenu_80782EC(u16 rnums) +{ + ConvertIntToHexStringN(gStringVar1, rnums, STR_CONV_MODE_LEFT_ALIGN, 4); + sub_8071F40(Str_839C053); +} + +void DebugMenu_8078310(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + data[1] = VarGet(VAR_MIRAGE_RND_H); + DebugMenu_80782EC(data[1]); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_PINPON); + *GetVarPointer(VAR_MIRAGE_RND_H) = data[1]; + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (gMain.newKeys & B_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (DebugMenu_8077DD8(data + 1, 0, 0xFFFF, gMain.newAndRepeatedKeys) == TRUE) + DebugMenu_80782EC(data[1]); + break; + } +} + +u8 DebugMenu_MiragaIslandRND(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8078310, 80); + ScriptContext2_Enable(); + return TRUE; +} + +bool8 DebugMenu_80783C8(void) +{ + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + if (!FlagGet(FLAG_SYS_GAME_CLEAR)) + { + FlagSet(FLAG_SYS_GAME_CLEAR); + DebugMenu_807786C(0); + } + else + { + FlagClear(FLAG_SYS_GAME_CLEAR); + DebugMenu_807786C(1); + } + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_ToggleClearFlag(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(FlagGet(FLAG_SYS_GAME_CLEAR) ^ 1); + gMenuCallback = DebugMenu_80783C8; + return FALSE; +} + +bool8 DebugMenu_8078464(void) +{ + switch (DebugMenu_8077E40(FlagGet(FLAG_SYS_WEATHER_CTRL))) + { + case 0: + FlagClear(FLAG_SYS_WEATHER_CTRL); + return FALSE; + case 1: + FlagSet(FLAG_SYS_WEATHER_CTRL); + return FALSE; + case -1: + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_OpenWeatherEvents(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(FlagGet(FLAG_SYS_WEATHER_CTRL) ? FALSE : TRUE); + gMenuCallback = DebugMenu_8078464; + return FALSE; +} + +bool8 DebugMenu_80784E8(void) +{ + switch (DebugMenu_8077E40(IsMysteryGiftEnabled())) + { + case 0: + DisableMysteryGift(); + return FALSE; + case 1: + EnableMysteryGift(); + return FALSE; + case -1: + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_OpenMysteryEvent(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(IsMysteryGiftEnabled() ? FALSE : TRUE); + gMenuCallback = DebugMenu_80784E8; + return FALSE; +} + +const u8 Str_839C07C[] = _("{STR_VAR_1}:{STR_VAR_2}\n" + "{STR_VAR_3}"); +const u8 Str_839C085[] = _("みしよう データ"); +const u8 Str_839C08E[] = _("Confirmation"); +const u8 Str_839C09B[] = _("Max-1 set"); +const u8 Str_839C0A5[] = _("Zero clear"); +const u8 Str_839C0B0[] = _("レポート"); +const u8 Str_839C0B5[] = _("クリア じかん"); +const u8 Str_839C0BD[] = _("りゅうこう さくせい"); +const u8 Str_839C0C8[] = _("きのみを うえたかいすう"); +const u8 Str_839C0D5[] = _("じてんしゃこうかん"); +const u8 Str_839C0DF[] = _("ほすう"); +const u8 Str_839C0E3[] = _("インタビュー"); +const u8 Str_839C0EA[] = _("バトル"); +const u8 Str_839C0EE[] = _("やせいバトル"); +const u8 Str_839C0F5[] = _("トレーナーバトル"); +const u8 Str_839C0FE[] = _("でんどういり"); +const u8 Str_839C105[] = _("ポケモンほかく"); +const u8 Str_839C10D[] = _("つった かいすう"); +const u8 Str_839C116[] = _("タマゴかえった"); +const u8 Str_839C11E[] = _("しんかした"); +const u8 Str_839C124[] = _("ポケセン かいふく"); +const u8 Str_839C12E[] = _("じたく かいふく"); +const u8 Str_839C137[] = _("サファリ りよう"); +const u8 Str_839C140[] = _("ひでん:いあいぎり"); +const u8 Str_839C14A[] = _("ひでん:いわくだき"); +const u8 Str_839C154[] = _("きち ひっこし"); +const u8 Str_839C15C[] = _("つうしんこうかん"); +const u8 Str_839C165[] = _("つうしんたいせん"); +const u8 Str_839C16E[] = _("つうしん かち"); +const u8 Str_839C176[] = _("つうしん まけ"); +const u8 Str_839C17E[] = _("つうしん ひきわけ"); +const u8 Str_839C188[] = _("わざ:はねる"); +const u8 Str_839C18F[] = _("わざ:わるあがき"); +const u8 Str_839C198[] = _("スロットおおあたりかいすう"); +const u8 Str_839C1A6[] = _("ルーレット れんしょう"); +const u8 Str_839C1B2[] = _("バトルタワー"); +const u8 Str_839C1B9[] = _("バトルタワーかち"); +const u8 Str_839C1C2[] = _("バトルタワーれんしょう"); +const u8 Str_839C1CE[] = _("ポロックさくせい"); +const u8 Str_839C1D7[] = _("つうしんでポロックつくった"); +const u8 Str_839C1E5[] = _("つうしんコンテストかち"); +const u8 Str_839C1F1[] = _("CPUコンテストさんか"); +const u8 Str_839C1FD[] = _("CPUコンテストかち"); +const u8 Str_839C208[] = _("かいもの"); +const u8 Str_839C20D[] = _("ダウジングマシン"); +const u8 Str_839C216[] = _("あめふり"); +const u8 Str_839C21B[] = _("ずかんをみた"); +const u8 Str_839C222[] = _("リボン もらった"); +const u8 Str_839C22B[] = _("だんさ とびおり"); +const u8 Str_839C234[] = _("TVを みた"); +const u8 Str_839C23B[] = _("とけいを みた"); +const u8 Str_839C243[] = _("くじが あたった"); +const u8 Str_839C24C[] = _("ポケモンあずけた"); +const u8 Str_839C255[] = _("ロープウェイりよう"); +const u8 Str_839C25F[] = _("おんせん はいった"); + +const struct { + u32 maxVal; + const u8 * name; +} gUnknown_Debug_839C26C[] = { + {0xFFFFFF, Str_839C0B0}, + {65485627, Str_839C0B5}, + {0xFFFFFF, Str_839C0BD}, + {0xFFFFFF, Str_839C0C8}, + {0xFFFFFF, Str_839C0D5}, + {0xFFFFFF, Str_839C0DF}, + {0xFFFFFF, Str_839C0E3}, + {0xFFFFFF, Str_839C0EA}, + {0xFFFFFF, Str_839C0EE}, + {0xFFFFFF, Str_839C0F5}, + {999, Str_839C0FE}, + {0xFFFFFF, Str_839C105}, + {0xFFFFFF, Str_839C10D}, + {0xFFFFFF, Str_839C116}, + {0xFFFFFF, Str_839C11E}, + {0xFFFFFF, Str_839C124}, + {0xFFFFFF, Str_839C12E}, + {0xFFFFFF, Str_839C137}, + {0xFFFFFF, Str_839C140}, + {0xFFFFFF, Str_839C14A}, + {0xFFFFFF, Str_839C154}, + {0xFFFFFF, Str_839C15C}, + {0xFFFFFF, Str_839C165}, + {9999, Str_839C16E}, + {9999, Str_839C176}, + {9999, Str_839C17E}, + {0xFFFFFF, Str_839C188}, + {0xFFFFFF, Str_839C18F}, + {0xFFFFFF, Str_839C198}, + {0xFFFFFF, Str_839C1A6}, + {0xFFFFFF, Str_839C1B2}, + {0x0, Str_839C1B9}, + {0x0, Str_839C1C2}, + {0xFFFFFF, Str_839C1CE}, + {0xFFFFFF, Str_839C1D7}, + {0xFFFFFF, Str_839C1E5}, + {0xFFFFFF, Str_839C1F1}, + {0xFFFFFF, Str_839C1FD}, + {0xFFFFFF, Str_839C208}, + {0xFFFFFF, Str_839C20D}, + {0xFFFFFF, Str_839C216}, + {0xFFFFFF, Str_839C21B}, + {0xFFFFFF, Str_839C222}, + {0xFFFFFF, Str_839C22B}, + {0xFFFFFF, Str_839C234}, + {0xFFFFFF, Str_839C23B}, + {0xFFFFFF, Str_839C243}, + {0xFFFFFF, Str_839C24C}, + {0xFFFFFF, Str_839C255}, + {0xFFFFFF, Str_839C25F} +}; + +void DebugMenu_8078550(u16 gameStat) +{ + u32 value = GetGameStat(gameStat); + + ConvertIntToDecimalStringN(gStringVar1, gameStat, STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopy(gStringVar2, gUnknown_Debug_839C26C[gameStat].name); + if (gUnknown_Debug_839C26C[gameStat].maxVal == 0) + StringCopy(gStringVar3, Str_839C085); + else if (gameStat != GAME_STAT_FIRST_HOF_PLAY_TIME) + ConvertIntToDecimalStringN(gStringVar3, value, STR_CONV_MODE_RIGHT_ALIGN, 10); + else + { + ConvertIntToDecimalStringN(gStringVar3, value >> 16, STR_CONV_MODE_RIGHT_ALIGN, 3); + gStringVar3[3] = CHAR_COLON; + ConvertIntToDecimalStringN(gStringVar3 + 4, (value >> 8) & 0xff, STR_CONV_MODE_LEADING_ZEROS, 2); + gStringVar3[6] = CHAR_COLON; + ConvertIntToDecimalStringN(gStringVar3 + 7, value & 0xff, STR_CONV_MODE_LEADING_ZEROS, 2); + } + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C07C, 2, 15); +} + +bool32 DebugMenu_807860C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + DebugMenu_8078550(data[1]); + data[0]++; + return FALSE; + case 1: + if (gMain.newKeys & A_BUTTON) + { + data[0]--; + return TRUE; + } + if (gMain.newKeys & B_BUTTON) + { + data[0]++; + return FALSE; + } + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + data[1]++; + if (data[1] == NUM_GAME_STATS) + data[1] = 0; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + data[1]--; + if (data[1] < 0) + data[1] = NUM_GAME_STATS - 1; + } + else + return FALSE; + DebugMenu_8078550(data[1]); + return FALSE; + case 2: + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + return FALSE; + } + return FALSE; +} + +void DebugMenu_80786C0(u8 taskId) +{ + DebugMenu_807860C(taskId); +} + +void DebugMenu_80786D0(u8 taskId) +{ + if (DebugMenu_807860C(taskId)) + { + u8 gameStat = gTasks[taskId].data[1]; + if (gUnknown_Debug_839C26C[gameStat].maxVal != 0) + { + SetGameStat(gameStat, gUnknown_Debug_839C26C[gameStat].maxVal - 1); + PlaySE(SE_PIN); + } + } +} + +void DebugMenu_8078714(u8 taskId) +{ + if (DebugMenu_807860C(taskId)) + { + u8 gameStat = gTasks[taskId].data[1]; + if (gUnknown_Debug_839C26C[gameStat].maxVal != 0) + { + SetGameStat(gameStat, 0); + PlaySE(SE_PIN); + } + } +} + +bool8 DebugMenu_8078758(TaskFunc func) +{ + CloseMenu(); + ScriptContext2_Enable(); + CreateTask(func, 80); + return TRUE; +} + +bool8 DebugMenu_8078774(void) +{ + return DebugMenu_8078758(DebugMenu_80786C0); +} + +bool8 DebugMenu_8078788(void) +{ + return DebugMenu_8078758(DebugMenu_80786D0); +} + +bool8 DebugMenu_807879C() +{ + return DebugMenu_8078758(DebugMenu_8078714); +} + +const struct MenuAction gUnknown_Debug_839C3FC[] = { + {Str_839C08E, DebugMenu_8078774}, + {Str_839C09B, DebugMenu_8078788}, + {Str_839C0A5, DebugMenu_807879C} +}; + +bool8 DebugMenu_80787B0() +{ + return DebugMenu_8077D78(gUnknown_Debug_839C3FC); +} + u8 DebugMenu_OpenLegendsRecord() { - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._464 @ gUnknown_Debug_839C3FC\n" - " mov r1, #0xc\n" - " mov r2, #0x3\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._464 + 4 @ gMenuCallback\n" - " ldr r0, ._464 + 8 @ DebugMenu_80787B0\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._465:\n" - " .align 2, 0\n" - "._464:\n" - " .word gUnknown_Debug_839C3FC\n" - " .word gMenuCallback\n" - " .word DebugMenu_80787B0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80787EC() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r5, sp\n" - " add r5, r5, #0x2\n" - " mov r0, sp\n" - " add r1, r5, #0\n" - " bl GetXYCoordsOneStepInFrontOfPlayer\n" - " ldr r4, ._466 @ gSpecialVar_Result\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetMetatileBehaviorAt\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 4 @ gStringVar1\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetMetatileIdAt\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 8 @ gStringVar2\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetZCoordAt\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 12 @ gStringVar3\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._466 + 16 @ gStringVar4\n" - " ldr r1, ._466 + 20 @ Str_839C414\n" - " bl StringExpandPlaceholders\n" - " add sp, sp, #0x4\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._467:\n" - " .align 2, 0\n" - "._466:\n" - " .word gSpecialVar_Result\n" - " .word gStringVar1\n" - " .word gStringVar2\n" - " .word gStringVar3\n" - " .word gStringVar4\n" - " .word Str_839C414\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078880() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._472 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r1, #0x8\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._468 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._469 @cond_branch\n" - " cmp r0, #0\n" - " beq ._470 @cond_branch\n" - " b ._480\n" - "._473:\n" - " .align 2, 0\n" - "._472:\n" - " .word gTasks\n" - "._469:\n" - " cmp r0, #0x2\n" - " beq ._474 @cond_branch\n" - " b ._480\n" - "._470:\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._476\n" - "._468:\n" - " ldr r0, ._478 @ gStringVar4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - "._476:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._480\n" - "._479:\n" - " .align 2, 0\n" - "._478:\n" - " .word gStringVar4\n" - "._474:\n" - " ldr r0, ._481 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._480 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._480:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._482:\n" - " .align 2, 0\n" - "._481:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_CellInfo() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._483 @ DebugMenu_8078880\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl DebugMenu_80787EC\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._484:\n" - " .align 2, 0\n" - "._483:\n" - " .word DebugMenu_8078880+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenBerryInfo() -{ - asm( - " push {r4, lr}\n" - " bl DebugOpenBerryInfo\n" - " add r4, r0, #0\n" - " cmp r4, #0\n" - " bne ._485 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._486\n" - "._485:\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x13\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " add r0, r4, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r1, ._487 @ gMenuCallback\n" - " ldr r0, ._487 + 4 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - "._486:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._488:\n" - " .align 2, 0\n" - "._487:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078950() -{ - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._489 @ Str_839C42E\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " pop {r0}\n" - " bx r0\n" - "._490:\n" - " .align 2, 0\n" - "._489:\n" - " .word Str_839C42E\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078968() -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x10\n" - " cmp r0, #0\n" - " bne ._491 @cond_branch\n" - " ldr r0, ._493 @ gStringVar1\n" - " mov r1, #0x32\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " b ._492\n" - "._494:\n" - " .align 2, 0\n" - "._493:\n" - " .word gStringVar1\n" - "._491:\n" - " ldr r0, ._495 @ gStringVar1\n" - " mov r1, #0x64\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - "._492:\n" - " ldr r0, ._495 @ gStringVar1\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r0}\n" - " bx r0\n" - "._496:\n" - " .align 2, 0\n" - "._495:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80789A4() -{ - asm( - " push {r4, lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r4, ._497 @ gStringVar1\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x9\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._498:\n" - " .align 2, 0\n" - "._497:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80789CC() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r6, ._499 @ gTasks\n" - " add r5, r4, r6\n" - " mov r0, #0x0\n" - " strh r0, [r5]\n" - " ldr r0, ._499 + 4 @ gSaveBlock2\n" - " ldr r1, ._499 + 8 @ 0x55c\n" - " add r0, r0, r1\n" - " ldrh r0, [r0]\n" - " strh r0, [r5, #0x2]\n" - " bl DebugMenu_8078950\n" - " ldrh r0, [r5]\n" - " bl DebugMenu_8078968\n" - " sub r6, r6, #0x8\n" - " add r4, r4, r6\n" - " ldr r0, ._499 + 12 @ DebugMenu_8078A14\n" - " str r0, [r4]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._500:\n" - " .align 2, 0\n" - "._499:\n" - " .word gTasks+0x8\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078A14+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078A14() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r4, r1, #0x3\n" - " ldr r5, ._504 @ gTasks\n" - " add r2, r4, r5\n" - " ldr r0, ._504 + 4 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0xc0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._501 @cond_branch\n" - " mov r1, #0x0\n" - " mov r3, #0x0\n" - " ldsh r0, [r2, r3]\n" - " cmp r0, #0\n" - " bne ._502 @cond_branch\n" - " mov r1, #0x1\n" - "._502:\n" - " strh r1, [r2]\n" - " ldrh r0, [r2]\n" - " bl DebugMenu_8078968\n" - " b ._510\n" - "._505:\n" - " .align 2, 0\n" - "._504:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - "._501:\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._506 @cond_branch\n" - " ldr r1, ._508 @ gSaveBlock2\n" - " mov r3, #0x0\n" - " ldsh r0, [r2, r3]\n" - " lsl r0, r0, #0x1\n" - " ldr r3, ._508 + 4 @ 0x55c\n" - " add r1, r1, r3\n" - " add r0, r0, r1\n" - " ldrh r0, [r0]\n" - " strh r0, [r2, #0x2]\n" - " ldrh r0, [r2, #0x2]\n" - " bl DebugMenu_80789A4\n" - " add r0, r5, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r4, r0\n" - " ldr r1, ._508 + 8 @ DebugMenu_8078AA4\n" - " b ._507\n" - "._509:\n" - " .align 2, 0\n" - "._508:\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078AA4+1\n" - "._506:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._510 @cond_branch\n" - " add r0, r5, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r4, r0\n" - " ldr r1, ._511 @ DebugMenu_8078B38\n" - "._507:\n" - " str r1, [r0]\n" - "._510:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._512:\n" - " .align 2, 0\n" - "._511:\n" - " .word DebugMenu_8078B38+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078AA4() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r5, r1, #0x3\n" - " ldr r7, ._515 @ gTasks\n" - " add r4, r5, r7\n" - " add r0, r4, #2\n" - " mov r2, #0xfa\n" - " lsl r2, r2, #0x3\n" - " ldr r6, ._515 + 4 @ gMain\n" - " ldrh r3, [r6, #0x30]\n" - " mov r1, #0x0\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._513 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80789A4\n" - " b ._521\n" - "._516:\n" - " .align 2, 0\n" - "._515:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - "._513:\n" - " ldrh r1, [r6, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._517 @cond_branch\n" - " ldr r1, ._519 @ gSaveBlock2\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " lsl r0, r0, #0x1\n" - " ldr r2, ._519 + 4 @ 0x55c\n" - " add r1, r1, r2\n" - " add r0, r0, r1\n" - " ldrh r1, [r4, #0x2]\n" - " strh r1, [r0]\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " add r0, r7, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._519 + 8 @ DebugMenu_8078B38\n" - " b ._518\n" - "._520:\n" - " .align 2, 0\n" - "._519:\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078B38+1\n" - "._517:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._521 @cond_branch\n" - " bl DebugMenu_8078950\n" - " ldrh r0, [r4]\n" - " bl DebugMenu_8078968\n" - " add r0, r7, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._522 @ DebugMenu_8078A14\n" - "._518:\n" - " str r1, [r0]\n" - "._521:\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._523:\n" - " .align 2, 0\n" - "._522:\n" - " .word DebugMenu_8078A14+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078B38() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_BattleTowerStages() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " ldr r0, ._524 @ DebugMenu_80789CC\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._525:\n" - " .align 2, 0\n" - "._524:\n" - " .word DebugMenu_80789CC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078B70() -{ - asm( - " push {lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r0, ._526 @ gStringVar1\n" - " mov r2, #0x0\n" - " mov r3, #0x1\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._526 + 4 @ Str_839C438\n" - " bl sub_8071F40\n" - " pop {r0}\n" - " bx r0\n" - "._527:\n" - " .align 2, 0\n" - "._526:\n" - " .word gStringVar1\n" - " .word Str_839C438\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078B94() -{ - asm( - " push {r4, r5, lr}\n" - " mov r3, #0x0\n" - " ldr r1, ._531 @ gUnknown_Debug_839C444\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._529 @cond_branch\n" - " ldr r5, ._531 + 4 @ gSaveBlock1\n" - " add r4, r1, #0\n" - "._530:\n" - " lsl r0, r3, #0x3\n" - " add r2, r0, r5\n" - " add r0, r0, r4\n" - " ldr r1, [r0, #0x4]\n" - " ldr r0, [r0]\n" - " str r0, [r2]\n" - " str r1, [r2, #0x4]\n" - " add r0, r3, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " cmp r3, #0x27\n" - " bhi ._529 @cond_branch\n" - " lsl r0, r3, #0x3\n" - " add r0, r0, r4\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " bne ._530 @cond_branch\n" - "._529:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._532:\n" - " .align 2, 0\n" - "._531:\n" - " .word gUnknown_Debug_839C444\n" - " .word gSaveBlock1+0x7f8\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078BD4() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._536 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0\n" - " beq ._533 @cond_branch\n" - " cmp r0, #0x1\n" - " beq ._534 @cond_branch\n" - " b ._545\n" - "._537:\n" - " .align 2, 0\n" - "._536:\n" - " .word gTasks+0x8\n" - "._533:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078B70\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._545\n" - "._534:\n" - " ldr r2, ._541 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._539 @cond_branch\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " bl DebugMenu_8078B94\n" - " b ._545\n" - "._542:\n" - " .align 2, 0\n" - "._541:\n" - " .word gMain\n" - "._539:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._543 @cond_branch\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " b ._545\n" - "._543:\n" - " add r0, r4, #2\n" - " ldrh r3, [r2, #0x30]\n" - " mov r1, #0x0\n" - " mov r2, #0x4\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._545 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078B70\n" - "._545:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839C3FC, 12, ARRAY_COUNT(gUnknown_Debug_839C3FC)); + gMenuCallback = DebugMenu_80787B0; + return FALSE; +} + +const u8 Str_839C414[] = _("ATTR:{STR_VAR_1} HEIGHT:{STR_VAR_3}\n" + "CODE:{STR_VAR_2}"); + +void DebugMenu_80787EC(void) +{ + s16 x; + s16 y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + gSpecialVar_Result = MapGridGetMetatileBehaviorAt(x, y); + ConvertIntToHexStringN(gStringVar1, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + gSpecialVar_Result = MapGridGetMetatileIdAt(x, y); + ConvertIntToHexStringN(gStringVar2, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + gSpecialVar_Result = MapGridGetZCoordAt(x, y); + ConvertIntToHexStringN(gStringVar3, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + StringExpandPlaceholders(gStringVar4, Str_839C414); +} + +void DebugMenu_8078880(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + Menu_PrintText(gStringVar4, 2, 15); + gTasks[taskId].data[0]++; + break; + case 2: + if (gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +u8 DebugMenu_CellInfo(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8078880, 80); + DebugMenu_80787EC(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenBerryInfo(void) +{ + const u8 * berryInfo = DebugOpenBerryInfo(); + if (berryInfo != NULL) + { + Menu_DrawStdWindowFrame(0, 0, 19, 19); + Menu_PrintText(berryInfo, 1, 1); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; + } + CloseMenu(); + return TRUE; +} + +const u8 Str_839C42E[] = _("レベル ステージ"); + +void DebugMenu_8078950(void) +{ + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C42E, 4, 15); +} + +void DebugMenu_8078968(u16 flag) +{ + if (flag == 0) + ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEADING_ZEROS, 3); + else + ConvertIntToDecimalStringN(gStringVar1, 100, STR_CONV_MODE_LEADING_ZEROS, 3); + Menu_PrintText(gStringVar1, 4, 17); +} + +void DebugMenu_80789A4(u16 value) +{ + ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, 4); + Menu_PrintText(gStringVar1, 9, 17); +} + +void DebugMenu_80789CC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + data[0] = 0; + data[1] = gSaveBlock2.battleTower.curStreakChallengesNum[0]; + DebugMenu_8078950(); + DebugMenu_8078968(data[0]); + gTasks[taskId].func = DebugMenu_8078A14; +} + +void DebugMenu_8078A14(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (gMain.newKeys & (DPAD_UP | DPAD_DOWN)) + { + data[0] = data[0] == 0 ? 1 : 0; + DebugMenu_8078968(data[0]); + } + else if (gMain.newKeys & A_BUTTON) + { + data[1] = gSaveBlock2.battleTower.curStreakChallengesNum[data[0]]; + DebugMenu_80789A4(data[1]); + gTasks[taskId].func = DebugMenu_8078AA4; + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = DebugMenu_8078B38; + } +} + +void DebugMenu_8078AA4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (DebugMenu_8077DD8(data + 1, 0, 2000, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_80789A4(data[1]); + } + else if (gMain.newKeys & A_BUTTON) + { + gSaveBlock2.battleTower.curStreakChallengesNum[data[0]] = data[1]; + PlaySE(SE_PINPON); + gTasks[taskId].func = DebugMenu_8078B38; + } + else if (gMain.newKeys & B_BUTTON) + { + DebugMenu_8078950(); + DebugMenu_8078968(data[0]); + gTasks[taskId].func = DebugMenu_8078A14; + } +} + +void DebugMenu_8078B38(u8 taskId) +{ + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +u8 DebugMenu_BattleTowerStages(void) +{ + CloseMenu(); + ScriptContext2_Enable(); + CreateTask(DebugMenu_80789CC, 80); + return TRUE; +} + +const u8 Str_839C438[] = _("ポロック グループ{STR_VAR_1}"); + +void DebugMenu_8078B70(u16 value) +{ + ConvertIntToHexStringN(gStringVar1, value, STR_CONV_MODE_LEFT_ALIGN, 1); + sub_8071F40(Str_839C438); +} + +const struct Pokeblock gUnknown_Debug_839C444[] = { + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {} +}; + +void DebugMenu_8078B94(void) +{ + u8 i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.pokeblocks); i++) + { + if (gUnknown_Debug_839C444[i].color == 0) + break; + gSaveBlock1.pokeblocks[i] = gUnknown_Debug_839C444[i]; + } +} + +void DebugMenu_8078BD4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + DebugMenu_8078B70(data[1]); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_PINPON); + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + DebugMenu_8078B94(); + } + else if (gMain.newKeys & B_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (DebugMenu_8077DD8(data + 1, 0, 4, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8078B70(data[1]); + } + break; + } +} + u8 DebugMenu_CheckPKBLCK() { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._546 @ DebugMenu_8078BD4\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._547:\n" - " .align 2, 0\n" - "._546:\n" - " .word DebugMenu_8078BD4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078C80() -{ - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._548 @ Str_839C5A4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r1, ._548 + 4 @ gMenuCallback\n" - " ldr r0, ._548 + 8 @ DebugMenu_8078CA8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._549:\n" - " .align 2, 0\n" - "._548:\n" - " .word Str_839C5A4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078CA8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078CA8() -{ - asm( - " push {lr}\n" - " ldr r0, ._552 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._550 @cond_branch\n" - " ldr r1, ._552 + 4 @ gMenuCallback\n" - " ldr r0, ._552 + 8 @ DebugMenu_8078CE4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " b ._555\n" - "._553:\n" - " .align 2, 0\n" - "._552:\n" - " .word gMain\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078CE4+1\n" - "._550:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._554 @cond_branch\n" - " mov r0, #0x0\n" - " b ._555\n" - "._554:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._555:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078CE4() -{ - asm( - " push {lr}\n" - " ldr r1, ._558 @ \n" - " mov r2, #0x80\n" - " lsl r2, r2, #0xa\n" - " mov r0, #0x0\n" - " bl DebugMenu_8078E40\n" - " cmp r0, #0x1\n" - " bne ._556 @cond_branch\n" - " ldr r0, ._558 + 4 @ \n" - " ldr r1, ._558 + 8 @ \n" - " bl StringCopy\n" - " b ._557\n" - "._559:\n" - " .align 2, 0\n" - "._558:\n" - " .word +0x2000000\n" - " .word gStringVar4\n" - " .word Str_839C5CC\n" - "._556:\n" - " ldr r0, ._560 @ gStringVar4\n" - " ldr r1, ._560 + 4 @ Str_839C5DF\n" - " bl StringCopy\n" - "._557:\n" - " ldr r1, ._560 + 8 @ gMenuCallback\n" - " ldr r0, ._560 + 12 @ DebugMenu_8078D7C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._561:\n" - " .align 2, 0\n" - "._560:\n" - " .word gStringVar4\n" - " .word Str_839C5DF\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078D7C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078D30() -{ - asm( - " push {r4, r5, r6, lr}\n" - " ldr r5, ._563 @ \n" - " mov r4, #0x0\n" - " mov r6, #0x80\n" - " lsl r6, r6, #0x5\n" - "._562:\n" - " add r0, r4, #0\n" - " add r1, r5, #0\n" - " add r2, r6, #0\n" - " bl DebugMenu_8078E68\n" - " add r5, r5, r6\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x1f\n" - " bls ._562 @cond_branch\n" - " ldr r0, ._563 + 4 @ \n" - " ldr r1, ._563 + 8 @ \n" - " bl StringCopy\n" - " ldr r1, ._563 + 12 @ \n" - " ldr r0, ._563 + 16 @ \n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._564:\n" - " .align 2, 0\n" - "._563:\n" - " .word +0x2000000\n" - " .word gStringVar4\n" - " .word Str_839C5D6\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078D7C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078D7C() -{ - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._565 @ gStringVar4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r1, ._565 + 4 @ gMenuCallback\n" - " ldr r0, ._565 + 8 @ DebugMenu_8078DA4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._566:\n" - " .align 2, 0\n" - "._565:\n" - " .word gStringVar4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078DA4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078DA4() -{ - asm( - " push {lr}\n" - " ldr r0, ._569 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._567 @cond_branch\n" - " mov r0, #0x0\n" - " b ._568\n" - "._570:\n" - " .align 2, 0\n" - "._569:\n" - " .word gMain\n" - "._567:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._568:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_MeTooBackupMan() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._571 @ gUnknown_Debug_839C594\n" - " mov r1, #0xc\n" - " mov r2, #0x2\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._571 + 4 @ gMenuCallback\n" - " ldr r0, ._571 + 8 @ DebugMenu_8078DF0\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._572:\n" - " .align 2, 0\n" - "._571:\n" - " .word gUnknown_Debug_839C594\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078DF0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078DF0() -{ - asm( - " push {lr}\n" - " ldr r0, ._573 @ gUnknown_Debug_839C594\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._574:\n" - " .align 2, 0\n" - "._573:\n" - " .word gUnknown_Debug_839C594\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E04() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r1, #0\n" - " add r5, r2, #0\n" - " b ._575\n" - "._577:\n" - " ldr r0, ._579 @ 0xfffff000\n" - " add r5, r5, r0\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x5\n" - " add r6, r6, r0\n" - " add r0, r4, #1\n" - "._575:\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl ProgramFlashSectorAndVerify\n" - " cmp r0, #0\n" - " bne ._576 @cond_branch\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x5\n" - " cmp r5, r0\n" - " bhi ._577 @cond_branch\n" - " mov r0, #0x1\n" - " b ._578\n" - "._580:\n" - " .align 2, 0\n" - "._579:\n" - " .word 0xfffff000\n" - "._576:\n" - " mov r0, #0x0\n" - "._578:\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E40() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " add r6, r2, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl m4aSoundVSyncOff\n" - " add r0, r4, #0\n" - " add r1, r5, #0\n" - " add r2, r6, #0\n" - " bl DebugMenu_8078E04\n" - " add r4, r0, #0\n" - " bl m4aSoundVSyncOn\n" - " add r0, r4, #0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E68() -{ - asm( - " push {r4, lr}\n" - " add r4, r1, #0\n" - " add r3, r2, #0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x0\n" - " add r2, r4, #0\n" - " bl ReadFlash\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E80() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " mov r0, #0x2\n" - " mov r1, #0xf\n" - " mov r2, #0x16\n" - " mov r3, #0x10\n" - " bl Menu_BlankWindowRect\n" - " ldr r1, ._581 @ gUnknown_Debug_839C5F4\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r1, [r0, #0x4]\n" - " mov r0, #0xd0\n" - " mov r2, #0xf\n" - " bl sub_8071F60\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._582:\n" - " .align 2, 0\n" - "._581:\n" - " .word gUnknown_Debug_839C5F4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078EB0() -{ - asm( - " push {r4, r5, lr}\n" - " add r5, r0, #0\n" - " ldr r4, ._583 @ gStringVar1\n" - " mov r0, #0x2\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, #0xf0\n" - " mov r1, #0x5\n" - " mov r2, #0x11\n" - " bl sub_8071F60\n" - " mov r0, #0x4\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x6\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, #0xf0\n" - " mov r1, #0x8\n" - " mov r2, #0x11\n" - " bl sub_8071F60\n" - " mov r0, #0x6\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x9\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._584:\n" - " .align 2, 0\n" - "._583:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078F1C() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r6, ._585 @ gTasks\n" - " add r5, r4, r6\n" - " mov r0, #0x0\n" - " strh r0, [r5]\n" - " ldr r1, ._585 + 4 @ gSaveBlock2\n" - " ldrh r0, [r1, #0xe]\n" - " strh r0, [r5, #0x2]\n" - " ldrb r0, [r1, #0x10]\n" - " strh r0, [r5, #0x4]\n" - " ldrb r0, [r1, #0x11]\n" - " strh r0, [r5, #0x6]\n" - " bl Menu_DisplayDialogueFrame\n" - " add r0, r5, #0\n" - " bl DebugMenu_8078EB0\n" - " add r0, r5, #0\n" - " bl DebugMenu_8078E80\n" - " sub r6, r6, #0x8\n" - " add r4, r4, r6\n" - " ldr r0, ._585 + 8 @ DebugMenu_8078F68\n" - " str r0, [r4]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._586:\n" - " .align 2, 0\n" - "._585:\n" - " .word gTasks+0x8\n" - " .word gSaveBlock2\n" - " .word DebugMenu_8078F68+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078F68() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r5, r1, #0x3\n" - " ldr r6, ._589 @ gTasks\n" - " add r4, r5, r6\n" - " ldr r3, ._589 + 4 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._587 @cond_branch\n" - " ldr r1, ._589 + 8 @ gSaveBlock2\n" - " ldrh r0, [r4, #0x2]\n" - " strh r0, [r1, #0xe]\n" - " ldrh r0, [r4, #0x4]\n" - " strb r0, [r1, #0x10]\n" - " ldrh r0, [r4, #0x6]\n" - " strb r0, [r1, #0x11]\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " b ._588\n" - "._590:\n" - " .align 2, 0\n" - "._589:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - " .word gSaveBlock2\n" - "._587:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._591 @cond_branch\n" - "._588:\n" - " add r0, r6, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._593 @ DebugMenu_8079020\n" - " str r1, [r0]\n" - " b ._601\n" - "._594:\n" - " .align 2, 0\n" - "._593:\n" - " .word DebugMenu_8079020+1\n" - "._591:\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._595 @cond_branch\n" - " ldrh r1, [r4]\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " cmp r0, #0\n" - " beq ._601 @cond_branch\n" - " sub r0, r1, #1\n" - " b ._597\n" - "._595:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._598 @cond_branch\n" - " ldrh r0, [r4]\n" - " cmp r0, #0x1\n" - " bhi ._601 @cond_branch\n" - " add r0, r0, #0x1\n" - "._597:\n" - " strh r0, [r4]\n" - " add r0, r4, #0\n" - " bl DebugMenu_8078E80\n" - " b ._601\n" - "._598:\n" - " mov r0, #0x0\n" - " ldsh r2, [r4, r0]\n" - " lsl r2, r2, #0x3\n" - " ldr r0, ._602 @ gUnknown_Debug_839C5F4\n" - " add r2, r2, r0\n" - " ldrb r0, [r2, #0x5]\n" - " lsl r0, r0, #0x1\n" - " add r0, r4, r0\n" - " ldrh r1, [r2]\n" - " ldrh r2, [r2, #0x2]\n" - " ldrh r3, [r3, #0x30]\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._601 @cond_branch\n" - " add r0, r4, #0\n" - " bl DebugMenu_8078EB0\n" - "._601:\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._603:\n" - " .align 2, 0\n" - "._602:\n" - " .word gUnknown_Debug_839C5F4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8079020() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_PTime() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._604 @ DebugMenu_8078F1C\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._605:\n" - " .align 2, 0\n" - "._604:\n" - " .word DebugMenu_8078F1C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8079058() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._610 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r0, #0x8\n" - " ldsh r1, [r4, r0]\n" - " cmp r1, #0x1\n" - " beq ._606 @cond_branch\n" - " cmp r1, #0x1\n" - " bgt ._607 @cond_branch\n" - " cmp r1, #0\n" - " beq ._608 @cond_branch\n" - " b ._620\n" - "._611:\n" - " .align 2, 0\n" - "._610:\n" - " .word gTasks\n" - "._607:\n" - " cmp r1, #0x2\n" - " beq ._612 @cond_branch\n" - " b ._620\n" - "._608:\n" - " ldr r0, ._615 @ gUnknown_Debug_03004BD0\n" - " str r1, [r0]\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._614\n" - "._616:\n" - " .align 2, 0\n" - "._615:\n" - " .word gUnknown_Debug_03004BD0\n" - "._606:\n" - " ldr r0, ._618 @ gDebug0x839C60C\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r0, #0x14\n" - " mov r1, #0x8\n" - " mov r2, #0x1\n" - " bl DisplayYesNoMenu\n" - "._614:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._620\n" - "._619:\n" - " .align 2, 0\n" - "._618:\n" - " .word gDebug0x839C60C\n" - "._612:\n" - " bl Menu_ProcessInputNoWrap_\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._620 @cond_branch\n" - " cmp r1, #0\n" - " bne ._621 @cond_branch\n" - " ldr r1, ._623 @ gUnknown_Debug_03004BD0\n" - " mov r0, #0x1\n" - " b ._622\n" - "._624:\n" - " .align 2, 0\n" - "._623:\n" - " .word gUnknown_Debug_03004BD0\n" - "._621:\n" - " ldr r1, ._625 @ gUnknown_Debug_03004BD0\n" - " mov r0, #0x0\n" - "._622:\n" - " str r0, [r1]\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._620:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._626:\n" - " .align 2, 0\n" - "._625:\n" - " .word gUnknown_Debug_03004BD0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMurakawa() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._627 @ DebugMenu_8079058\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._628:\n" - " .align 2, 0\n" - "._627:\n" - " .word DebugMenu_8079058+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8079110() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._633 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r1, #0x8\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._629 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._630 @cond_branch\n" - " cmp r0, #0\n" - " beq ._631 @cond_branch\n" - " b ._642\n" - "._634:\n" - " .align 2, 0\n" - "._633:\n" - " .word gTasks\n" - "._630:\n" - " cmp r0, #0x2\n" - " beq ._635 @cond_branch\n" - " b ._642\n" - "._631:\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._637\n" - "._629:\n" - " ldr r0, ._639 @ Str_839C61A\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl MenuPrintMessage\n" - "._637:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._642\n" - "._640:\n" - " .align 2, 0\n" - "._639:\n" - " .word Str_839C61A\n" - "._635:\n" - " bl Menu_UpdateWindowText\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._642 @cond_branch\n" - " ldr r0, ._643 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._642 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._642:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._644:\n" - " .align 2, 0\n" - "._643:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenKiwa() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._645 @ DebugMenu_8079110\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " pop {r1}\n" - " bx r1\n" - "._646:\n" - " .align 2, 0\n" - "._645:\n" - " .word DebugMenu_8079110+1\n" - "\n" - ); + CloseMenu(); + CreateTask(DebugMenu_8078BD4, 80); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 Str_839C574[] = _("write to flash"); +const u8 Str_839C583[] = _("read from flash"); + +const struct MenuAction gUnknown_Debug_839C594[] = { + {Str_839C574, DebugMenu_8078C80}, + {Str_839C583, DebugMenu_8078D30} +}; + +const u8 Str_839C5A4[] = _("Press A, begin to write\n" + "Press B, cancel"); + +bool8 DebugMenu_8078C80(void) +{ + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C5A4, 2, 15); + gMenuCallback = DebugMenu_8078CA8; + return FALSE; +} + +bool8 DebugMenu_8078CA8(void) +{ + if (gMain.newKeys & A_BUTTON) + { + gMenuCallback = DebugMenu_8078CE4; + return FALSE; + } + if (gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +const u8 Str_839C5CC[] =_("かきこみ せいこう"); +const u8 Str_839C5D6[] =_("よみこみせいこう"); +const u8 Str_839C5DF[] =_("かきこみ しっぱい"); +const u8 Str_839C5E9[] =_("よみこみ しっぱい"); + +bool8 DebugMenu_8078CE4(void) +{ + if (DebugMenu_8078E40(0, gSharedMem, 0x20000) == TRUE) + StringCopy(gStringVar4, Str_839C5CC); + else + StringCopy(gStringVar4, Str_839C5DF); + gMenuCallback = DebugMenu_8078D7C; + return FALSE; +} + +bool8 DebugMenu_8078D30(void) +{ + u8 * data = gSharedMem; + u8 i; + + for (i = 0; i < 32; i++) + { + DebugMenu_8078E68(i, data, 0x1000); + data += 0x1000; + } + StringCopy(gStringVar4, Str_839C5D6); + gMenuCallback = DebugMenu_8078D7C; + return FALSE; +} + +bool8 DebugMenu_8078D7C(void) +{ + Menu_DisplayDialogueFrame(); + Menu_PrintText(gStringVar4, 2, 15); + gMenuCallback = DebugMenu_8078DA4; + return FALSE; +} + +bool8 DebugMenu_8078DA4(void) +{ + if (gMain.newKeys & A_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_MeTooBackupMan(void) +{ + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839C594, 12, ARRAY_COUNT(gUnknown_Debug_839C594)); + gMenuCallback = DebugMenu_8078DF0; + return FALSE; +} + +bool8 DebugMenu_8078DF0() +{ + return DebugMenu_8077D78(gUnknown_Debug_839C594); +} + +bool32 DebugMenu_8078E04(u16 a0, u8 * a1, u32 a2) +{ + while (1) + { + if (ProgramFlashSectorAndVerify(a0, a1)) + return FALSE; + if (a2 <= 0x1000) + break; + a2 -= 0x1000; + a1 += 0x1000; + a0++; + } + return TRUE; +} + +bool32 DebugMenu_8078E40(u8 a0, u8 * a1, u32 a2) +{ + bool32 result; + m4aSoundVSyncOff(); + result = DebugMenu_8078E04(a0, a1, a2); + m4aSoundVSyncOn(); + return result; +} + +void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2) +{ + ReadFlash(a0, 0, a1, a2); +} + +struct GameTimeDebugMenuStruct { + u16 unk0; + u16 unk2; + u8 unk4; + u8 unk5; +}; + +const struct GameTimeDebugMenuStruct gUnknown_Debug_839C5F4[] = { + {0, 999, 2, 1}, + {0, 59, 6, 2}, + {0, 59, 9, 3} +}; + +void DebugMenu_8078E80(s16 * a0) +{ + Menu_BlankWindowRect(2, 15, 22, 16); + sub_8071F60(0xd0, gUnknown_Debug_839C5F4[*a0].unk4, 15); +} + +void DebugMenu_8078EB0(s16 * a0) +{ + ConvertIntToDecimalStringN(gStringVar1, a0[1], STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 2, 17); + sub_8071F60(0xf0, 5, 17); + ConvertIntToDecimalStringN(gStringVar1, a0[2], STR_CONV_MODE_LEADING_ZEROS, 2); + Menu_PrintText(gStringVar1, 6, 17); + sub_8071F60(0xf0, 8, 17); + ConvertIntToDecimalStringN(gStringVar1, a0[3], STR_CONV_MODE_LEADING_ZEROS, 2); + Menu_PrintText(gStringVar1, 9, 17); +} + +void DebugMenu_8078F1C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + data[0] = 0; + data[1] = gSaveBlock2.playTimeHours; + data[2] = gSaveBlock2.playTimeMinutes; + data[3] = gSaveBlock2.playTimeSeconds; + + Menu_DisplayDialogueFrame(); + DebugMenu_8078EB0(data); + DebugMenu_8078E80(data); + gTasks[taskId].func = DebugMenu_8078F68; +} + +void DebugMenu_8078F68(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (gMain.newKeys & A_BUTTON) + { + gSaveBlock2.playTimeHours = data[1]; + gSaveBlock2.playTimeMinutes = data[2]; + gSaveBlock2.playTimeSeconds = data[3]; + PlaySE(SE_PINPON); + gTasks[taskId].func = DebugMenu_8079020; + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = DebugMenu_8079020; + } + else if (gMain.newKeys & DPAD_LEFT) + { + if ((u16)data[0] > 0) + { + data[0]--; + DebugMenu_8078E80(data); + } + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if ((u16)data[0] < 2) + { + data[0]++; + DebugMenu_8078E80(data); + } + } + else + { + const struct GameTimeDebugMenuStruct *r2 = gUnknown_Debug_839C5F4 + data[0]; + if (DebugMenu_8077DD8(data + r2->unk5, r2->unk0, r2->unk2, gMain.newAndRepeatedKeys) == TRUE) + DebugMenu_8078EB0(data); + } +} + +void DebugMenu_8079020(u8 taskId) +{ + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +u8 DebugMenu_PTime(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8078F1C, 80); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 gDebug0x839C60C[] = _("Set FLASH ERR"); + +void DebugMenu_8079058(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + gUnknown_Debug_03004BD0 = 0; + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + Menu_PrintText(gDebug0x839C60C, 4, 15); + DisplayYesNoMenu(20, 8, 1); + gTasks[taskId].data[0]++; + break; + case 2: + switch (Menu_ProcessInputNoWrap_()) + { + case -2: + return; + case 0: + gUnknown_Debug_03004BD0 = 1; + break; + default: + gUnknown_Debug_03004BD0 = 0; + break; + } + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + break; + } +} + +u8 DebugMenu_OpenMurakawa(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8079058, 80); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 Str_839C61A[] = _("abcde; abcde: ABCDE; ABCDE:\p" + "Tableaux des verbes du 2{SUPER_E} groupe.\p" + "La1{SUPER_RE} chose à apprendre c’est de lire.\p" + "Tableaux des verbes du 1{SUPER_ER} groupe.\p" + "“あいうえおかきくけコさしすせそたちつてとな”\n" + "<にぬネのはひふへほマみむめもやゆよらりるれろわャッ>\p" + "をんゃゅょアイウエオカキクケサシスルレロワ,"); + +void DebugMenu_8079110(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + MenuPrintMessage(Str_839C61A, 2, 15); + gTasks[taskId].data[0]++; + break; + case 2: + if (Menu_UpdateWindowText() && gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +u8 DebugMenu_OpenKiwa(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8079110, 80); + ScriptContext2_Enable(); + // return TRUE; } #endif diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c index f7e0e3770..c5f6fc0ec 100644 --- a/src/debug/taya_debug_window.c +++ b/src/debug/taya_debug_window.c @@ -1,6 +1,1087 @@ #if DEBUG #include "global.h" +#include "constants/species.h" +#include "constants/opponents.h" +#include "random.h" +#include "palette.h" +#include "ewram.h" +#include "menu.h" +#include "easy_chat.h" +#include "event_data.h" +#include "string_util.h" +#include "main.h" +#include "start_menu.h" +#include "field_weather.h" +#include "mauville_man.h" +#include "pokemon_storage_system.h" +#include "lottery_corner.h" +#include "battle_setup.h" +#include "region_map.h" +#include "overworld.h" -EWRAM_DATA u8 unk_2030224[4] = { 0 }; +bool8 debug_sub_8090808(void); +bool8 debug_sub_808560C(void); +bool8 TayaDebugMenu_LanettesPC(void); +bool8 TayaDebugMenu_SimpleText(void); +bool8 TayaDebugMenu_OldMan(void); +bool8 TayaDebugMenu_Trend(void); +bool8 TayaDebugMenu_TrendR(void); +bool8 TayaDebugMenu_TownFlags(void); +bool8 TayaDebugMenu_AwardARibbon(void); +bool8 TayaDebugMenu_PKMNLottery(void); +bool8 TayaDebugMenu_Trainer(void); +bool8 TayaDebugMenu_PokenavD(void); +void debug_sub_80915BC(void); +void debug_sub_80916AC(void); -#endif +EWRAM_DATA s8 sTayaTopMenuPage = 0; + +struct TayaLuckyNumberEwramStruct { + u8 digit; + u8 charbuf[7]; + u16 curLuckyId; + s32 tempLuckyId; + u16 digitDeltaMagnitude; +}; + +struct TayaMonDataEwramStruct { + u8 data[6][3]; + u8 charbuf[0x40]; + u8 state; + u8 x; + u8 y; + u8 redraw; + u8 maxVal; +}; + +#define eTayaLuckyNumber (*(struct TayaLuckyNumberEwramStruct *)gSharedMem) +#define eTayaMonData (*(struct TayaMonDataEwramStruct *)gSharedMem) + +const u8 gUnknown_Debug_083C4E54[] = _("Profile"); +const u8 gUnknown_Debug_083C4E5C[] = _("Battle’s start"); +const u8 gUnknown_Debug_083C4E6B[] = _("Good saying"); +const u8 gUnknown_Debug_083C4E77[] = _("Lose a battle"); +const u8 gUnknown_Debug_083C4E85[] = _("MAIL"); +const u8 gUnknown_Debug_083C4E8A[] = _("MAIL salutation"); +const u8 gUnknown_Debug_083C4E9A[] = _("BARD’s song"); +const u8 gUnknown_Debug_083C4EA6[] = _("Interview"); +const u8 gUnknown_Debug_083C4EB0[] = _("InterviewシBTス"); + +const struct { + const u8 * text; + u32 unk4; +} gUnknown_Debug_083C4EC0[] = { + {gUnknown_Debug_083C4E54, 0x0}, + {gUnknown_Debug_083C4E5C, 0x1}, + {gUnknown_Debug_083C4E6B, 0xD}, + {gUnknown_Debug_083C4E77, 0x3}, + {gUnknown_Debug_083C4E85, 0x4}, + {gUnknown_Debug_083C4E8A, 0x5}, + {gUnknown_Debug_083C4E9A, 0x6}, + {gUnknown_Debug_083C4EA6, 0x7}, + {gUnknown_Debug_083C4EB0, 0xC} +}; + +const u16 gUnknown_Debug_083C4F08[] = {0x45b, 0x430, 0x20f}; + +const u8 gUnknown_Debug_083C4F0E[] = _("BARD"); +const u8 gUnknown_Debug_083C4F13[] = _("HIPSTER"); +const u8 gUnknown_Debug_083C4F1B[] = _("RECYCLE"); +const u8 gUnknown_Debug_083C4F23[] = _("STORYTELLER"); +const u8 gUnknown_Debug_083C4F2F[] = _("GIDDY GUY"); +const u8 gUnknown_Debug_083C4F39[] = _("Flag OFF"); +const u8 gUnknown_Debug_083C4F42[] = _("21 letters"); +const u8 gUnknown_Debug_083C4F4D[] = _("ナウくなる"); + +const struct { + const u8 * text; + u8 filler[4]; +} gUnknown_Debug_083C4F54[] = { + {gUnknown_Debug_083C4F0E}, + {gUnknown_Debug_083C4F13}, + {gUnknown_Debug_083C4F1B}, + {gUnknown_Debug_083C4F23}, + {gUnknown_Debug_083C4F2F}, + {gUnknown_Debug_083C4F39}, + {gUnknown_Debug_083C4F42}, + {gUnknown_Debug_083C4F4D} +}; + +const u8 gUnknown_Debug_083C4F94[] = _("しょうしょうおまちください!"); +const u8 gUnknown_Debug_083C4FA3[] = _("Weather"); +const u8 gUnknown_Debug_083C4FAB[] = _("LANETTE’S PC"); +const u8 gUnknown_Debug_083C4FB8[] = _("SimpleText"); +const u8 gUnknown_Debug_083C4FC3[] = _("Old man"); +const u8 gUnknown_Debug_083C4FCB[] = _("Trend"); +const u8 gUnknown_Debug_083C4FD1[] = _("Trend R"); +const u8 gUnknown_Debug_083C4FD9[] = _("Town flag"); +const u8 gUnknown_Debug_083C4FE3[] = _("Award a ribbon"); +const u8 gUnknown_Debug_083C4FF2[] = _("{PKMN}LOTTERY"); +const u8 gUnknown_Debug_083C4FFC[] = _("Trainer"); +const u8 gUnknown_Debug_083C5004[] = _("POKéNAV D"); + +const struct MenuAction gUnknown_Debug_083C5010[] = { + {gUnknown_Debug_083C4FA3, debug_sub_808560C}, + {gUnknown_Debug_083C4FAB, TayaDebugMenu_LanettesPC}, + {gUnknown_Debug_083C4FB8, TayaDebugMenu_SimpleText}, + {gUnknown_Debug_083C4FC3, TayaDebugMenu_OldMan}, + {gUnknown_Debug_083C4FCB, TayaDebugMenu_Trend}, + {gUnknown_Debug_083C4FD1, TayaDebugMenu_TrendR}, + {gUnknown_Debug_083C4FD9, TayaDebugMenu_TownFlags}, + {gUnknown_Debug_083C4FE3, TayaDebugMenu_AwardARibbon}, + {gUnknown_Debug_083C4FF2, TayaDebugMenu_PKMNLottery} +}; + +const struct MenuAction gUnknown_Debug_083C5058[] = { + {gUnknown_Debug_083C4FFC, TayaDebugMenu_Trainer}, + {gUnknown_Debug_083C5004, TayaDebugMenu_PokenavD} +}; + +const struct { + const struct MenuAction *menuActions; + u8 nitems; +} gUnknown_Debug_83C5068[] = { + {gUnknown_Debug_083C5010, 9}, + {gUnknown_Debug_083C5058, 2} +}; + +const u8 gUnknown_Debug_083C5078[] = _("CHANP"); +const u8 gUnknown_Debug_083C507E[] = _("COOL"); +const u8 gUnknown_Debug_083C5083[] = _("BEAUTY"); +const u8 gUnknown_Debug_083C508A[] = _("CUTE"); +const u8 gUnknown_Debug_083C508F[] = _("SMART"); +const u8 gUnknown_Debug_083C5095[] = _("TOUGH"); +const u8 gUnknown_Debug_083C509B[] = _("WIN"); +const u8 gUnknown_Debug_083C509F[] = _("VICTORY"); +const u8 gUnknown_Debug_083C50A7[] = _("BROMIDE"); +const u8 gUnknown_Debug_083C50AF[] = _("ACCESSIT"); +const u8 gUnknown_Debug_083C50B8[] = _("MARINE"); +const u8 gUnknown_Debug_083C50BF[] = _("LAND"); +const u8 gUnknown_Debug_083C50C4[] = _("SKY"); +const u8 gUnknown_Debug_083C50C8[] = _("COUNTRY"); +const u8 gUnknown_Debug_083C50D0[] = _("NATIONAL"); +const u8 gUnknown_Debug_083C50D9[] = _("EARTH"); +const u8 gUnknown_Debug_083C50DF[] = _("WORLD"); +const u8 gUnknown_Debug_083C50E5[] = _(" "); + +const struct { + const u8 * text; + u16 param; +} gUnknown_Debug_083C50EC[][3] = { + { + {gUnknown_Debug_083C5078, MON_DATA_CHAMPION_RIBBON}, + {gUnknown_Debug_083C507E, MON_DATA_COOL_RIBBON}, + {gUnknown_Debug_083C5083, MON_DATA_BEAUTY_RIBBON} + }, { + {gUnknown_Debug_083C508A, MON_DATA_CUTE_RIBBON}, + {gUnknown_Debug_083C508F, MON_DATA_SMART_RIBBON}, + {gUnknown_Debug_083C5095, MON_DATA_TOUGH_RIBBON} + }, { + {gUnknown_Debug_083C509B, MON_DATA_WINNING_RIBBON}, + {gUnknown_Debug_083C509F, MON_DATA_VICTORY_RIBBON}, + {gUnknown_Debug_083C50A7, MON_DATA_ARTIST_RIBBON} + }, { + {gUnknown_Debug_083C50AF, MON_DATA_EFFORT_RIBBON}, + {gUnknown_Debug_083C50B8, MON_DATA_GIFT_RIBBON_1}, + {gUnknown_Debug_083C50BF, MON_DATA_GIFT_RIBBON_2} + }, { + {gUnknown_Debug_083C50C4, MON_DATA_GIFT_RIBBON_3}, + {gUnknown_Debug_083C50C8, MON_DATA_GIFT_RIBBON_4}, + {gUnknown_Debug_083C50D0, MON_DATA_GIFT_RIBBON_5} + }, { + {gUnknown_Debug_083C50D9, MON_DATA_GIFT_RIBBON_6}, + {gUnknown_Debug_083C50DF, MON_DATA_GIFT_RIBBON_7}, + {gUnknown_Debug_083C50E5, 0 /* sentinel */} + } +}; + +const u8 gUnknown_Debug_083C517C[] = _("Select Ribbon"); + +bool8 TayaDebugMenu_Trend(void) +{ + u8 sp00[32]; + u8 sp20[8]; + u16 i; + struct EasyChatPair *pair; + + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 30, 11); + pair = gSaveBlock1.easyChatPairs; + + for (i = 0; i < 5; i++) + { + u8 * r4; + + sp00[0] = pair->unk1_6 ? CHAR_0 + 1 : CHAR_0 + 0; + EasyChat_GetWordText(sp20, pair->words[0]); + r4 = StringCopyPadded(sp00 + 1, sp20, CHAR_SPACE, 7); + EasyChat_GetWordText(sp20, pair->words[1]); + r4 = StringCopyPadded(r4, sp20, CHAR_SPACE, 8); + r4 = ConvertIntToDecimalStringN(r4, pair->unk0_0, STR_CONV_MODE_RIGHT_ALIGN, 3); + *r4++ = CHAR_SPACE; + r4 = ConvertIntToDecimalStringN(r4, pair->unk0_7, STR_CONV_MODE_RIGHT_ALIGN, 3); + *r4++ = CHAR_SPACE; + ConvertIntToDecimalStringN(r4, pair->unk2, STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(sp00, 1, 2 * i + 1); + pair++; + } + gMenuCallback = debug_sub_8090808; + return FALSE; +} + +bool8 debug_sub_8090808(void) +{ + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + Menu_EraseScreen(); + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +bool8 TayaDebugMenu_TrendR(void) +{ + u16 i; + u16 j; + + for (i = 0; i < 5; i++) + { + for (j = 0; j < 2; j++) + { + gSaveBlock1.easyChatPairs[i].words[j] = sub_80EB72C(Random() % 22); + } + } + Menu_EraseScreen(); + CloseMenu(); + return TRUE; +} + +bool8 debug_sub_8090880(void) +{ + if (!UpdatePaletteFade()) + { + sub_80E60D8(); + return TRUE; + } + + return FALSE; +} + +bool8 debug_sub_809089C(void) +{ + s8 input = Menu_ProcessInput(); + + switch (input) + { + case -1: + CloseMenu(); + return TRUE; + case -2: + return FALSE; + default: + gSpecialVar_0x8004 = gUnknown_Debug_083C4EC0[input].unk4; + switch (gSpecialVar_0x8004) + { + case 5: + case 7: + case 8: + case 11: + case 12: + gSpecialVar_0x8005 = 0; + gSpecialVar_0x8006 = 0; + default: + FadeScreen(1, 0); + gMenuCallback = debug_sub_8090880; + break; + } + return FALSE; + } +} + +bool8 TayaDebugMenu_SimpleText(void) +{ + Menu_DrawStdWindowFrame(0, 0, 12, 19); + Menu_PrintItems(1, 1, ARRAY_COUNT(gUnknown_Debug_083C4EC0), gUnknown_Debug_083C4EC0); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C4EC0), 0, 11); + gMenuCallback = debug_sub_809089C; + return FALSE; +} + +bool8 debug_sub_8090984(void) +{ + s8 input = Menu_ProcessInput(); + + switch (input) + { + case -1: + CloseMenu(); + return TRUE; + default: + if (input < 5) + { + debug_sub_810B32C(input); + CloseMenu(); + return TRUE; + } + break; + case -2: + return FALSE; + } + + if (input == 5) + { + sub_80F7F30(); + } + else if (input == 6) + { + u16 i; + + for (i = 0; i < 3; i++) + { + union MauvilleMan *mauvilleMan = &gSaveBlock1.mauvilleMan; + mauvilleMan->bard.songLyrics[i] = gUnknown_Debug_083C4F08[i]; + mauvilleMan->bard.temporaryLyrics[i] = gUnknown_Debug_083C4F08[i]; + gSaveBlock1.easyChats.unk2B28[i] = gUnknown_Debug_083C4F08[i]; + } + } + else if (input == 7) + { + u16 i; + + for (i = 0; i < 33; i++) + { + sub_80EB890(i); + } + } + CloseMenu(); + return TRUE; +} + +bool8 TayaDebugMenu_OldMan(void) +{ + Menu_DrawStdWindowFrame(0, 0, 10, 17); + Menu_PrintItems(1, 1, ARRAY_COUNT(gUnknown_Debug_083C4F54), gUnknown_Debug_083C4F54); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C4F54), GetCurrentMauvilleOldMan(), 9); + gMenuCallback = debug_sub_8090984; + return FALSE; +} + +bool8 TayaDebugMenu_LanettesPC(void) +{ + Menu_EraseScreen(); + ShowPokemonStorageSystem(); + return TRUE; +} + +bool8 TayaDebugMenu_TownFlags(void) +{ + FlagSet(FLAG_VISITED_LITTLEROOT_TOWN); + FlagSet(FLAG_VISITED_OLDALE_TOWN); + FlagSet(FLAG_VISITED_DEWFORD_TOWN); + FlagSet(FLAG_VISITED_LAVARIDGE_TOWN); + FlagSet(FLAG_VISITED_FALLARBOR_TOWN); + FlagSet(FLAG_VISITED_VERDANTURF_TOWN); + FlagSet(FLAG_VISITED_PACIFIDLOG_TOWN); + FlagSet(FLAG_VISITED_PETALBURG_CITY); + FlagSet(FLAG_VISITED_SLATEPORT_CITY); + FlagSet(FLAG_VISITED_MAUVILLE_CITY); + FlagSet(FLAG_VISITED_RUSTBORO_CITY); + FlagSet(FLAG_VISITED_FORTREE_CITY); + FlagSet(FLAG_VISITED_LILYCOVE_CITY); + FlagSet(FLAG_VISITED_MOSSDEEP_CITY); + FlagSet(FLAG_VISITED_SOOTOPOLIS_CITY); + FlagSet(FLAG_VISITED_EVER_GRANDE_CITY); + FlagSet(FLAG_LANDMARK_BATTLE_TOWER); + FlagSet(FLAG_LANDMARK_SOUTHERN_ISLAND); + FlagSet(FLAG_LANDMARK_FIERY_PATH); + FlagSet(FLAG_SYS_POKEMON_LEAGUE_FLY); + FlagSet(FLAG_LANDMARK_ISLAND_CAVE); + FlagSet(FLAG_LANDMARK_DESERT_RUINS); + FlagSet(FLAG_LANDMARK_FOSSIL_MANIACS_HOUSE); + FlagSet(FLAG_LANDMARK_SCORCHED_SLAB); + FlagSet(FLAG_LANDMARK_ANCIENT_TOMB); + FlagSet(FLAG_LANDMARK_TUNNELERS_REST_HOUSE); + FlagSet(FLAG_LANDMARK_HUNTERS_HOUSE); + FlagSet(FLAG_LANDMARK_SEALED_CHAMBER); + FlagSet(FLAG_LANDMARK_FLOWER_SHOP); + FlagSet(FLAG_LANDMARK_MR_BRINEY_HOUSE); + FlagSet(FLAG_LANDMARK_ABANDONED_SHIP); + FlagSet(FLAG_LANDMARK_SEASHORE_HOUSE); + FlagSet(FLAG_LANDMARK_NEW_MAUVILLE); + FlagSet(FLAG_LANDMARK_OLD_LADY_REST_SHOP); + FlagSet(FLAG_LANDMARK_TRICK_HOUSE); + FlagSet(FLAG_LANDMARK_WINSTRATE_FAMILY); + FlagSet(FLAG_LANDMARK_GLASS_WORKSHOP); + FlagSet(FLAG_LANDMARK_LANETTES_HOUSE); + FlagSet(FLAG_LANDMARK_POKEMON_DAYCARE); + FlagSet(FLAG_LANDMARK_SEAFLOOR_CAVERN); + FlagSet(FLAG_SYS_RIBBON_GET); + CloseMenu(); + return TRUE; +} + +bool8 TayaDebugMenu_AwardARibbon(void) +{ + BlendPalettes(0xFFFFFFFF, 16, RGB(0, 0, 0)); + SetMainCallback2(debug_sub_80915BC); + CloseMenu(); + return TRUE; +} + +void debug_sub_8090C44(void) +{ + ConvertIntToDecimalStringN(eTayaLuckyNumber.charbuf, eTayaLuckyNumber.curLuckyId, STR_CONV_MODE_LEADING_ZEROS, 5); + Menu_PrintText(eTayaLuckyNumber.charbuf, 1, 1); + StringFill(eTayaLuckyNumber.charbuf, CHAR_SPACE, 5); + eTayaLuckyNumber.charbuf[eTayaLuckyNumber.digit] = 0x79; + Menu_PrintText(eTayaLuckyNumber.charbuf, 1, 3); +} + +#ifdef NONMATCHING +// mayday mayday +bool8 debug_sub_8090C88(void) +{ + bool8 r8 = TRUE; + + if (gMain.newKeys & DPAD_LEFT && eTayaLuckyNumber.digit != 0) + { + eTayaLuckyNumber.digit--; + } + else if (gMain.newKeys & DPAD_RIGHT && eTayaLuckyNumber.digit < 4) + { + eTayaLuckyNumber.digit++; + } + else + { + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + u8 r4; + + eTayaLuckyNumber.tempLuckyId = eTayaLuckyNumber.curLuckyId; + eTayaLuckyNumber.charbuf0 = 10000; + for (r4 = 0; r4 < eTayaLuckyNumber.digit; r4++) + eTayaLuckyNumber.charbuf0 /= 10; + eTayaLuckyNumber.tempLuckyId += eTayaLuckyNumber.charbuf0; + if (eTayaLuckyNumber.tempLuckyId > 0xFFFF) + eTayaLuckyNumber.tempLuckyId = 0xFFFF; + if (eTayaLuckyNumber.curLuckyId != eTayaLuckyNumber.tempLuckyId) + { + eTayaLuckyNumber.curLuckyId = eTayaLuckyNumber.tempLuckyId; + goto check; + } + } + if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + u8 r4; + + eTayaLuckyNumber.tempLuckyId = eTayaLuckyNumber.curLuckyId; + eTayaLuckyNumber.charbuf0 = 10000; + for (r4 = 0; r4 < eTayaLuckyNumber.digit; r4++) + eTayaLuckyNumber.charbuf0 /= 10; + eTayaLuckyNumber.tempLuckyId -= eTayaLuckyNumber.charbuf0; + if (eTayaLuckyNumber.tempLuckyId < 0) + eTayaLuckyNumber.tempLuckyId = 0; + if (eTayaLuckyNumber.curLuckyId != eTayaLuckyNumber.tempLuckyId) + { + eTayaLuckyNumber.curLuckyId = eTayaLuckyNumber.tempLuckyId; + goto check; + } + } + if (gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + if (gMain.newKeys & A_BUTTON) + { + SetLotteryNumber16_Unused(eTayaLuckyNumber.curLuckyId); + CloseMenu(); + return TRUE; + } + r8 = FALSE; + } + +check: + if (r8) + debug_sub_8090C44(); + return FALSE; +} +#else +NAKED bool8 debug_sub_8090C88(void) +{ + asm("\tpush\t{r4, r5, r6, r7, lr}\n" + "\tmov\tr7, r8\n" + "\tpush\t{r7}\n" + "\tadd\tsp, sp, #0xfffffffc\n" + "\tmov\tr0, #0x1\n" + "\tmov\tr8, r0\n" + "\tldr\tr2, ._59 @ gMain\n" + "\tldrh\tr1, [r2, #0x2e]\n" + "\tmov\tr0, #0x20\n" + "\tand\tr0, r0, r1\n" + "\tadd\tr3, r2, #0\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._57\t@cond_branch\n" + "\tldr\tr1, ._59 + 4 @ gSharedMem\n" + "\tldrb\tr0, [r1]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._57\t@cond_branch\n" + "\tsub\tr0, r0, #0x1\n" + "\tstrb\tr0, [r1]\n" + "\tb\t._62\n" + "._60:\n" + "\t.align\t2, 0\n" + "._59:\n" + "\t.word\tgMain\n" + "\t.word\tgSharedMem\n" + "._67:\n" + "\tadd\tr0, r0, #0x1\n" + "\tstrb\tr0, [r1]\n" + "\tb\t._62\n" + "._77:\n" + "\tstrh\tr1, [r7, #0x8]\n" + "\tb\t._62\n" + "._79:\n" + "\tldr\tr0, ._64 @ gSharedMem\n" + "\tldrh\tr0, [r0, #0x8]\n" + "\tbl\tSetLotteryNumber16_Unused\n" + "._78:\n" + "\tbl\tCloseMenu\n" + "\tmov\tr0, #0x1\n" + "\tb\t._63\n" + "._65:\n" + "\t.align\t2, 0\n" + "._64:\n" + "\t.word\tgSharedMem\n" + "._57:\n" + "\tldrh\tr1, [r3, #0x2e]\n" + "\tmov\tr0, #0x10\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._66\t@cond_branch\n" + "\tldr\tr1, ._81 @ gSharedMem\n" + "\tldrb\tr0, [r1]\n" + "\tcmp\tr0, #0x3\n" + "\tbls\t._67\t@cond_branch\n" + "._66:\n" + "\tldrh\tr1, [r3, #0x30]\n" + "\tmov\tr0, #0x40\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._68\t@cond_branch\n" + "\tldr\tr0, ._81 @ gSharedMem\n" + "\tldrh\tr1, [r0, #0x8]\n" + "\tstr\tr1, [r0, #0xc]\n" + "\tldr\tr1, ._81 + 4 @ 0x2710\n" + "\tstrh\tr1, [r0, #0x10]\n" + "\tmov\tr4, #0x0\n" + "\tldrb\tr1, [r0]\n" + "\tadd\tr7, r0, #0\n" + "\tcmp\tr4, r1\n" + "\tbcs\t._69\t@cond_branch\n" + "\tadd\tr5, r7, #0\n" + "\tadd\tr6, r1, #0\n" + "._70:\n" + "\tldrh\tr0, [r5, #0x10]\n" + "\tmov\tr1, #0xa\n" + "\tstr\tr3, [sp]\n" + "\tbl\t__udivsi3\n" + "\tstrh\tr0, [r5, #0x10]\n" + "\tadd\tr0, r4, #1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr4, r0, #0x18\n" + "\tldr\tr3, [sp]\n" + "\tcmp\tr4, r6\n" + "\tbcc\t._70\t@cond_branch\n" + "._69:\n" + "\tldrh\tr1, [r7, #0x10]\n" + "\tldr\tr0, [r7, #0xc]\n" + "\tadd\tr0, r0, r1\n" + "\tstr\tr0, [r7, #0xc]\n" + "\tldr\tr1, ._81 + 8 @ 0xffff\n" + "\tcmp\tr0, r1\n" + "\tble\t._71\t@cond_branch\n" + "\tstr\tr1, [r7, #0xc]\n" + "._71:\n" + "\tldrh\tr0, [r7, #0x8]\n" + "\tldr\tr1, [r7, #0xc]\n" + "\tcmp\tr0, r1\n" + "\tbne\t._77\t@cond_branch\n" + "._68:\n" + "\tldrh\tr1, [r3, #0x30]\n" + "\tmov\tr0, #0x80\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._73\t@cond_branch\n" + "\tldr\tr0, ._81 @ gSharedMem\n" + "\tldrh\tr1, [r0, #0x8]\n" + "\tstr\tr1, [r0, #0xc]\n" + "\tldr\tr1, ._81 + 4 @ 0x2710\n" + "\tstrh\tr1, [r0, #0x10]\n" + "\tmov\tr4, #0x0\n" + "\tldrb\tr1, [r0]\n" + "\tadd\tr7, r0, #0\n" + "\tcmp\tr4, r1\n" + "\tbcs\t._74\t@cond_branch\n" + "\tadd\tr5, r7, #0\n" + "\tadd\tr6, r1, #0\n" + "._75:\n" + "\tldrh\tr0, [r5, #0x10]\n" + "\tmov\tr1, #0xa\n" + "\tstr\tr3, [sp]\n" + "\tbl\t__udivsi3\n" + "\tstrh\tr0, [r5, #0x10]\n" + "\tadd\tr0, r4, #1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr4, r0, #0x18\n" + "\tldr\tr3, [sp]\n" + "\tcmp\tr4, r6\n" + "\tbcc\t._75\t@cond_branch\n" + "._74:\n" + "\tadd\tr2, r7, #0\n" + "\tldrh\tr1, [r2, #0x10]\n" + "\tldr\tr0, [r2, #0xc]\n" + "\tsub\tr0, r0, r1\n" + "\tstr\tr0, [r2, #0xc]\n" + "\tcmp\tr0, #0\n" + "\tbge\t._76\t@cond_branch\n" + "\tmov\tr0, #0x0\n" + "\tstr\tr0, [r2, #0xc]\n" + "._76:\n" + "\tldrh\tr0, [r2, #0x8]\n" + "\tldr\tr1, [r2, #0xc]\n" + "\tcmp\tr0, r1\n" + "\tbne\t._77\t@cond_branch\n" + "._73:\n" + "\tldrh\tr2, [r3, #0x2e]\n" + "\tmov\tr0, #0x2\n" + "\tand\tr0, r0, r2\n" + "\tcmp\tr0, #0\n" + "\tbne\t._78\t@cond_branch\n" + "\tmov\tr0, #0x1\n" + "\tand\tr0, r0, r2\n" + "\tcmp\tr0, #0\n" + "\tbne\t._79\t@cond_branch\n" + "\tmov\tr0, #0x0\n" + "\tmov\tr8, r0\n" + "._62:\n" + "\tmov\tr0, r8\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._80\t@cond_branch\n" + "\tbl\tdebug_sub_8090C44\n" + "._80:\n" + "\tmov\tr0, #0x0\n" + "._63:\n" + "\tadd\tsp, sp, #0x4\n" + "\tpop\t{r3}\n" + "\tmov\tr8, r3\n" + "\tpop\t{r4, r5, r6, r7}\n" + "\tpop\t{r1}\n" + "\tbx\tr1\n" + "._82:\n" + "\t.align\t2, 0\n" + "._81:\n" + "\t.word\tgSharedMem\n" + "\t.word\t0x2710\n" + "\t.word\t0xffff"); +} +#endif // NONMATCHING + +bool8 TayaDebugMenu_PKMNLottery(void) +{ + Menu_DrawStdWindowFrame(0, 0, 6, 5); + RetrieveLotteryNumber(); + eTayaLuckyNumber.curLuckyId = gSpecialVar_Result; + eTayaLuckyNumber.digit = 0; + debug_sub_8090C44(); + gMenuCallback = debug_sub_8090C88; + return FALSE; +} + +bool8 TayaDebugMenu_Trainer(void) +{ + u16 i; + + for (i = 0; i < ARRAY_COUNT(gTrainerEyeTrainers); i++) + SetTrainerFlag(gTrainerEyeTrainers[i].opponentIDs[0]); + + SetTrainerFlag(OPPONENT_ROXANNE); + SetTrainerFlag(OPPONENT_BRAWLY); + SetTrainerFlag(OPPONENT_WATTSON); + SetTrainerFlag(OPPONENT_FLANNERY); + SetTrainerFlag(OPPONENT_NORMAN); + SetTrainerFlag(OPPONENT_WINONA); + SetTrainerFlag(OPPONENT_TATE_AND_LIZA); + SetTrainerFlag(OPPONENT_WALLACE); + SetTrainerFlag(OPPONENT_SIDNEY); + SetTrainerFlag(OPPONENT_PHOEBE); + SetTrainerFlag(OPPONENT_GLACIA); + SetTrainerFlag(OPPONENT_DRAKE); + SetTrainerFlag(OPPONENT_STEVEN); + CloseMenu(); + return TRUE; +} + +bool8 TayaDebugMenu_PokenavD(void) +{ + u16 i; + u16 j; + + Menu_DisplayDialogueFrame(); + + for (i = 0; i < 14; i++) + { + StringCopy(gSharedMem, gUnknown_Debug_083C4F94); + gSharedMem[i + 1] = EOS; + Menu_PrintText(gSharedMem, 2, 15); + for (j = 0; j < 30; j++) + { + struct BoxPokemon *boxPokemon; + u32 otId = Random() + 1; + u16 level = (Random() % 100) + 1; + u16 species = (Random() % 386) + 1; + if (species >= SPECIES_OLD_UNOWN_B) + { + species += SPECIES_TREECKO - SPECIES_OLD_UNOWN_B; + if (species >= NUM_SPECIES) + species = SPECIES_BULBASAUR; + } + boxPokemon = gPokemonStorage.boxes[i] + j; + CreateBoxMon(boxPokemon, species, level, 32, FALSE, 0, TRUE, otId); + + otId = Random() & 0xff; + SetBoxMonData(boxPokemon, MON_DATA_COOL, &otId); + + otId = Random() & 0xff; + SetBoxMonData(boxPokemon, MON_DATA_BEAUTY, &otId); + + otId = Random() & 0xff; + SetBoxMonData(boxPokemon, MON_DATA_CUTE, &otId); + + otId = Random() & 0xff; + SetBoxMonData(boxPokemon, MON_DATA_SMART, &otId); + + otId = Random() & 0xff; + SetBoxMonData(boxPokemon, MON_DATA_TOUGH, &otId); + + otId = Random() & 0xff; + SetBoxMonData(boxPokemon, MON_DATA_SHEEN, &otId); + + otId = (Random() & 3) + 1; + SetBoxMonData(boxPokemon, MON_DATA_COOL_RIBBON, &otId); + + otId = (Random() & 3) + 1; + SetBoxMonData(boxPokemon, MON_DATA_BEAUTY_RIBBON, &otId); + + otId = (Random() & 3) + 1; + SetBoxMonData(boxPokemon, MON_DATA_CUTE_RIBBON, &otId); + + otId = (Random() & 3) + 1; + SetBoxMonData(boxPokemon, MON_DATA_TOUGH_RIBBON, &otId); + + otId = (Random() & 3) + 1; + SetBoxMonData(boxPokemon, MON_DATA_SMART_RIBBON, &otId); + + otId = Random() & 1; + SetBoxMonData(boxPokemon, MON_DATA_CHAMPION_RIBBON, &otId); + + otId = Random() & 1; + SetBoxMonData(boxPokemon, MON_DATA_WINNING_RIBBON, &otId); + + otId = Random() & 1; + SetBoxMonData(boxPokemon, MON_DATA_VICTORY_RIBBON, &otId); + + otId = Random() & 1; + SetBoxMonData(boxPokemon, MON_DATA_ARTIST_RIBBON, &otId); + + otId = Random() & 1; + SetBoxMonData(boxPokemon, MON_DATA_EFFORT_RIBBON, &otId); + + otId = Random() & 1; + SetBoxMonData(boxPokemon, MON_DATA_GIFT_RIBBON_1, &otId); + + otId = Random() & 1; + SetBoxMonData(boxPokemon, MON_DATA_GIFT_RIBBON_2, &otId); + + otId = Random() & 1; + SetBoxMonData(boxPokemon, MON_DATA_GIFT_RIBBON_3, &otId); + + otId = Random() & 1; + SetBoxMonData(boxPokemon, MON_DATA_GIFT_RIBBON_4, &otId); + + otId = Random() & 1; + SetBoxMonData(boxPokemon, MON_DATA_GIFT_RIBBON_5, &otId); + + otId = Random() & 1; + SetBoxMonData(boxPokemon, MON_DATA_GIFT_RIBBON_6, &otId); + + otId = Random() & 1; + SetBoxMonData(boxPokemon, MON_DATA_GIFT_RIBBON_7, &otId); + } + } + TayaDebugMenu_TownFlags(); + TayaDebugMenu_Trainer(); + CloseMenu(); + return TRUE; +} + +bool8 TayaDebugMenu_8091190(void) +{ + s8 input = Menu_ProcessInput(); + s8 r4; + + switch (input) + { + default: + gMenuCallback = gUnknown_Debug_83C5068[sTayaTopMenuPage].menuActions[input].func; + return FALSE; + case -2: + r4 = sTayaTopMenuPage; + if (gMain.newKeys & DPAD_LEFT) + { + sTayaTopMenuPage--; + if (sTayaTopMenuPage < 0) + sTayaTopMenuPage = 1; + } + + if (gMain.newKeys & DPAD_RIGHT) + { + sTayaTopMenuPage++; + if ((u8)sTayaTopMenuPage > 1) + sTayaTopMenuPage = 0; + } + if (r4 != sTayaTopMenuPage) + { + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 11, 19); + Menu_PrintItems(1, 1, gUnknown_Debug_83C5068[sTayaTopMenuPage].nitems, gUnknown_Debug_83C5068[sTayaTopMenuPage].menuActions); + InitMenu(0, 1, 1, gUnknown_Debug_83C5068[sTayaTopMenuPage].nitems, 0, 10); + } + return FALSE; + case -1: + CloseMenu(); + return TRUE; + } +} + +bool8 InitTayaDebugWindow(void) +{ + sTayaTopMenuPage = 0; + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 11, 19); + Menu_PrintItems(1, 1, 9, gUnknown_Debug_83C5068[0].menuActions); + InitMenu(0, 1, 1, 9, 0, 10); + gMenuCallback = TayaDebugMenu_8091190; + return FALSE; +} + +bool8 debug_sub_80912D8(void) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(debug_sub_8110F28); + return TRUE; + } + return FALSE; +} + +bool8 debug_sub_8091300(void) +{ + FadeScreen(1, 0); + gMenuCallback = debug_sub_80912D8; + return FALSE; +} + +void debug_sub_8091320(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void debug_sub_8091334(void) +{ + AnimateSprites(); + BuildOamBuffer(); + + switch (eTayaMonData.state) + { + case 0: + eTayaMonData.redraw = 0; + if (gMain.newKeys & DPAD_UP) + { + if (eTayaMonData.y != 0) + { + eTayaMonData.y--; + eTayaMonData.redraw = 1; + } + } + if (gMain.newKeys & DPAD_DOWN) + { + if (eTayaMonData.x != 2) + { + if (eTayaMonData.y < 5) + { + eTayaMonData.y++; + eTayaMonData.redraw = 1; + } + } + else + { + if (eTayaMonData.y < 4) + { + eTayaMonData.y++; + eTayaMonData.redraw = 1; + } + } + } + if (gMain.newKeys & DPAD_LEFT) + { + if (eTayaMonData.x != 0) + { + eTayaMonData.x--; + eTayaMonData.redraw = 1; + } + } + if (gMain.newKeys & DPAD_RIGHT) + { + if (eTayaMonData.y != 5) + { + if (eTayaMonData.x < 2) + { + eTayaMonData.x++; + eTayaMonData.redraw = 1; + } + } + else + { + if (eTayaMonData.x < 1) + { + eTayaMonData.x++; + eTayaMonData.redraw = 1; + } + } + } + if (eTayaMonData.redraw) + { + debug_sub_80916AC(); + } + else if (gMain.newKeys & A_BUTTON) + { + u16 param = gUnknown_Debug_083C50EC[eTayaMonData.y][eTayaMonData.x].param; + if (param >= MON_DATA_COOL_RIBBON && param <= MON_DATA_TOUGH_RIBBON) + eTayaMonData.maxVal = 4; + else + eTayaMonData.maxVal = 1; + eTayaMonData.state = 1; + } + else if (gMain.newKeys & B_BUTTON) + { + BlendPalettes(0xFFFFFFFF, 16, RGB(0, 0, 0)); + SetMainCallback2(sub_80546F0); + } + break; + case 1: + eTayaMonData.redraw = 0; + if (gMain.newKeys & DPAD_UP) + { + if (eTayaMonData.data[eTayaMonData.y][eTayaMonData.x] < eTayaMonData.maxVal) + { + eTayaMonData.data[eTayaMonData.y][eTayaMonData.x]++; + eTayaMonData.redraw = 1; + } + } + if (gMain.newKeys & DPAD_DOWN) + { + if (eTayaMonData.data[eTayaMonData.y][eTayaMonData.x] != 0) + { + eTayaMonData.data[eTayaMonData.y][eTayaMonData.x]--; + eTayaMonData.redraw = 1; + } + } + if (eTayaMonData.redraw) + { + debug_sub_80916AC(); + } + else + { + if (gMain.newKeys & B_BUTTON) + { + eTayaMonData.data[eTayaMonData.y][eTayaMonData.x] = GetMonData(gPlayerParty, gUnknown_Debug_083C50EC[eTayaMonData.y][eTayaMonData.x].param); + debug_sub_80916AC(); + eTayaMonData.state = 0; + } + if (gMain.newKeys & A_BUTTON) + { + if (gUnknown_Debug_083C50EC[eTayaMonData.y][eTayaMonData.x].param) + SetMonData(gPlayerParty, gUnknown_Debug_083C50EC[eTayaMonData.y][eTayaMonData.x].param, &eTayaMonData.data[eTayaMonData.y][eTayaMonData.x]); + eTayaMonData.state = 0; + } + } + break; + } +} + +void debug_sub_80915BC(void) +{ + u8 i; + u8 j; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + for (i = 0; i < 6; i++) + { + for (j = 0; j < 3; j++) + { + u16 param = gUnknown_Debug_083C50EC[i][j].param; + if (param) + eTayaMonData.data[i][j] = GetMonData(gPlayerParty, param); + else + eTayaMonData.data[i][j] = 0; + } + } + Text_LoadWindowTemplate(&gWindowTemplate_81E7224); + InitMenuWindow(&gWindowTemplate_81E7224); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 3); + Menu_PrintText(gUnknown_Debug_083C517C, 1, 1); + Menu_DrawStdWindowFrame(0, 4, 29, 17); + Menu_DrawStdWindowFrame(0, 18, 29, 21); + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON; + eTayaMonData.x = 0; + eTayaMonData.y = 0; + eTayaMonData.state = 0; + debug_sub_80916AC(); + SetVBlankCallback(debug_sub_8091320); + SetMainCallback2(debug_sub_8091334); +} + +void debug_sub_80916AC(void) +{ + u8 i; + u8 j; + + for (i = 0; i < 6; i++) + { + u8 * buffer = eTayaMonData.charbuf; + for (j = 0; j < 3 && !(i == 5 && j == 2); j++) + { + if (eTayaMonData.x == j && eTayaMonData.y == i) + *buffer++ = 0xEF; + else + { + *buffer++ = CHAR_SPACE; + *buffer++ = CHAR_SPACE; + } + buffer = StringCopy(buffer, gUnknown_Debug_083C50EC[i][j].text); + *buffer++ = CHAR_SPACE; + buffer = ConvertIntToDecimalStringN(buffer, eTayaMonData.data[i][j], STR_CONV_MODE_LEFT_ALIGN, 1); + *buffer++ = CHAR_SPACE; + } + buffer[-1] = EOS; + Menu_PrintText(eTayaMonData.charbuf, 1, i * 2 + 5); + } +} + +#endif // DEBUG diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index c3616797e..daaca570c 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -1,20 +1,4483 @@ #if DEBUG #include "global.h" +#include "ewram.h" +#include "string_util.h" +#include "palette.h" +#include "data2.h" +#include "event_data.h" +#include "constants/flags.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "overworld.h" +#include "script.h" +#include "menu.h" +#include "start_menu.h" +#include "main.h" +#include "contest_painting.h" +#include "sound.h" -// These should be static, uninitialized once it gets decompiled. -#define BSS_DATA __attribute__((section(".bss"))) -BSS_DATA u8 gDebug_03000700[4] = {0}; -BSS_DATA u8 gDebug_03000704[4] = {0}; -BSS_DATA u8 gDebug_03000708[4] = {0}; -BSS_DATA u8 gDebug_0300070C = 0; -BSS_DATA u8 gDebug_0300070D = 0; -BSS_DATA u8 gDebug_0300070E = 0; -BSS_DATA u8 gDebug_0300070F = 0; -BSS_DATA u8 gDebug_03000710[13] = {0}; -BSS_DATA u8 gDebug_0300071D = 0; -BSS_DATA u8 gDebug_0300071E = 0; -BSS_DATA u8 gDebug_0300071F = 0; -BSS_DATA u8 gDebug_03000720 = 0; -BSS_DATA u8 gDebug_03000721 = 0; - -#endif +static u16 sPicTest_Species; +static u32 sPicTest_OTID; +static u32 sPicTest_Personality; +static u8 sPicTest_ContestType; +static u8 sPicTest_MuseumArtTitleType; +static u8 sPicTest_PreviewType; +static u8 sFlagAndVarTest_WhichSubmenu; +static u8 sPicTest_StringBuffer[13]; +static u8 sTopMenuCursorPos; +static u8 sTrickRelatedMenuCursorPos; +static u8 sControlEventsCursorPos; +static u8 sControlFlagsCursorPos; +static u8 sControlWORKCursorPos; + +static bool8 ArtMusGraphics(void); +static bool8 DummyMenuAction(void); +static bool8 ContestGraphics(void); +static bool8 ContestGraphics_Show(void); +static bool8 ControlEvents(void); +static bool8 ControlFlags(void); +static bool8 ControlWorks(void); +static bool8 MuseumGraphics_Show(void); +static bool8 PreviewData(void); +static bool8 TrickHouse(void); +static bool8 InitDebugWindow(void); +static bool8 TopMenu_HandleInput(void); +static bool8 ContestGraphics_HandleInput(void); +static bool8 ArtMusGraphics_HandleInput(void); +static bool8 PreviewData_HandleInput(void); +static bool8 TrickHouse_HandleInput(void); +static bool8 ControlEvents_HandleInput(void); +static bool8 ControlFlags_HandleInput(void); +static bool8 ControlWorks_HandleInput(void); +static bool8 ControlEvents_InitSubmenu1(void); +static bool8 ControlEvents_InitSubmenu2(void); +static bool8 ControlEvents_Events1_HandleInput(void); +static bool8 ControlEvents_Events2_HandleInput(void); +static bool8 CallScript_DoHallOfFame(void); +static bool8 CallScript_GiveCoinCaseIfNotAlreadyOwned(void); +static bool8 CallScript_SetOldaleStateAfterRoute103Rival(void); +static bool8 CallScript_OpenNewMauville(void); +static bool8 CallScript_GiveSSTicketAndDoHallOfFame(void); +static bool8 CallScript_GiveKyogreEgg(void); +static bool8 CallScript_GiveAllItems(void); +static bool8 CallScript_GiveAllDecorations(void); +static bool8 CallScript_GiveAllCoins(void); +static bool8 CallScript_OpenSootopolisGym(void); +static bool8 CallScript_SetMoneyTo0(void); +static bool8 CallScript_FillPartyWithBarboach(void); +static bool8 CallScript_FillPartyWithShroomish(void); +static bool8 CallScript_GiveBarboachEgg(void); +static bool8 CallScript_GiveShroomishEgg(void); +static bool8 debug_sub_808C280(void); +static bool8 debug_sub_808C2E4(void); +static bool8 ControlFlags_EventFlag_InitSubmenu(void); +static bool8 debug_sub_808C36C(void); +static bool8 debug_sub_808C3B0(void); +static bool8 debug_sub_808C408(void); +static bool8 debug_sub_808C460(void); +static bool8 debug_sub_808C4B8(void); +static bool8 debug_sub_808C510(void); +static bool8 debug_sub_808C568(void); +static bool8 debug_sub_808C5C0(void); +static bool8 debug_sub_808C618(void); +static bool8 debug_sub_808C670(void); +static bool8 debug_sub_808C6C8(void); +static void debug_sub_808C714(u8, u8); +static void debug_sub_808C764(u8); +static bool8 ControlFlags_VanishFlag_InitSubmenu(void); +static bool8 debug_sub_808C818(void); +static bool8 debug_sub_808C85C(void); +static bool8 debug_sub_808C8B4(void); +static bool8 debug_sub_808C90C(void); +static bool8 debug_sub_808C964(void); +static bool8 debug_sub_808C9BC(void); +static bool8 debug_sub_808CA14(void); +static bool8 debug_sub_808CA6C(void); +static bool8 debug_sub_808CAC4(void); +static bool8 debug_sub_808CB1C(void); +static bool8 debug_sub_808CB74(void); +static void debug_sub_808CBC0(u8, u8); +static void debug_sub_808CC10(u8); +static bool8 ControlFlags_TrainerFlag_InitSubmenu(void); +static bool8 debug_sub_808CCC4(void); +static bool8 debug_sub_808CD08(void); +static bool8 debug_sub_808CD60(void); +static bool8 debug_sub_808CDB8(void); +static bool8 debug_sub_808CE10(void); +static void debug_sub_808CE5C(u8, u8); +static void debug_sub_808CEAC(u8); +static bool8 ControlFlags_SysFlag_InitSubmenu(void); +static bool8 debug_sub_808CF60(void); +static bool8 debug_sub_808CFA4(void); +static bool8 debug_sub_808CFFC(void); +static bool8 debug_sub_808D054(void); +static bool8 debug_sub_808D0AC(void); +static bool8 debug_sub_808D104(void); +static bool8 debug_sub_808D15C(void); +static bool8 debug_sub_808D1B4(void); +static bool8 debug_sub_808D20C(void); +static bool8 debug_sub_808D264(void); +static bool8 debug_sub_808D2BC(void); +static void debug_sub_808D308(u8, u8); +static void debug_sub_808D358(u8); +static bool8 ControlFlags_FH_OBJ_InitSubmenu(void); +static bool8 ControlFlags_FH_OBJ_HandleInput(void); +static bool8 ControlFlags_FH_OBJ00_08_InitSubsubmenu(void); +static bool8 ControlFlags_FH_OBJ09_15_InitSubsubmenu(void); +static bool8 ControlFlags_FH_OBJ_Subsubmenu_HandleInput(void); +static void ControlFlags_FH_OBJ_FlagToggle(u8, u8); +static void ControlFlags_FH_OBJ_UpdateDisplay(u8); +static bool8 ControlFlags_FH_InitSubmenu(void); +static bool8 debug_sub_808D650(void); +static bool8 debug_sub_808D694(void); +static bool8 debug_sub_808D6EC(void); +static bool8 debug_sub_808D744(void); +static void debug_sub_808D790(u8, u8); +static void debug_sub_808D7E0(u8); +static bool8 ControlFlags_BallVanishFlag_InitSubmenu(void); +static bool8 debug_sub_808D894(void); +static bool8 debug_sub_808D8D8(void); +static bool8 debug_sub_808D930(void); +static void debug_sub_808D97C(u8, u8); +static void debug_sub_808D9CC(u8); +static bool8 ControlWorks_AnsWork_InitSubmenu(void); +static bool8 ControlWorks_AnsWork_HandleInput(void); +static void ControlWorks_AnsWork_PrintRESULT(void); +static void ControlWorks_AnsWork_AdjustRESULT(void); +static bool8 ControlWorks_SaveWork_InitSubmenu(void); +static bool8 ControlWorks_SaveWork_HandleInput(void); +static bool8 ControlWorks_SaveWork_Town_InitSubsubmenu(void); +static bool8 ControlWorks_SaveWork_City_InitSubsubmenu(void); +static bool8 ControlWorks_SaveWork_Route101To109_InitSubsubmenu(void); +static bool8 ControlWorks_SaveWork_Route110To118_InitSubsubmenu(void); +static bool8 ControlWorks_SaveWork_Route119To127_InitSubsubmenu(void); +static bool8 ControlWorks_SaveWork_Route128To134_InitSubsubmenu(void); +static bool8 ControlWorks_SaveWork_RoomTown_InitSubsubmenu(void); +static bool8 ControlWorks_SaveWork_RoomCity_InitSubsubmenu(void); +static bool8 ControlWorks_SaveWork_Dungeon_InitSubsubmenu(void); +static bool8 ControlWorks_SaveWork_Subsubmenu_HandleInput(void); +static void debug_sub_808DF04(u8); +static void debug_sub_808DF64(u8, u8); +static bool8 ControlWorks_SaveWorkPart2_InitSubmenu(void); +static bool8 ControlWorks_SaveWorkPart2_HandleInput(void); +static bool8 ControlWorks_SaveWorkPart2_SP_InitSubsubmenu(void); +static bool8 ControlWorks_SaveWorkPart2_RoomR110Part1TrickHouse_InitSubsubmenu(void); +static bool8 ControlWorks_SaveWorkPart2_RoomR110Part2_InitSubsubmenu(void); +static bool8 ControlWorks_SaveWorkPart2_RoomLoad_InitSubsubmenu(void); +static bool8 debug_sub_808E1B4(void); +static bool8 debug_sub_808E20C(void); +static bool8 debug_sub_808E264(void); +static void debug_sub_808E2B0(u8); +static void debug_sub_808E310(u8, u8); +static bool8 ControlWorks_SysWork_InitSubmenu(void); +static bool8 debug_sub_808E3BC(void); +static bool8 debug_sub_808E400(void); +static bool8 debug_sub_808E458(void); +static bool8 debug_sub_808E4B0(void); +static bool8 debug_sub_808E508(void); +static bool8 debug_sub_808E560(void); +static bool8 debug_sub_808E5B8(void); +static void debug_sub_808E604(u8, u8); +static void debug_sub_808E660(u8); +static bool8 ControlWorks_LocalWork_InitSubmenu(void); +static bool8 debug_sub_808E710(void); +static bool8 debug_sub_808E754(void); +static bool8 debug_sub_808E7AC(void); +static bool8 debug_sub_808E804(void); +static void debug_sub_808E850(u8, u8); +static void debug_sub_808E8AC(u8); +static bool8 ControlWorks_ObjWork_InitSubmenu(void); +static bool8 debug_sub_808E95C(void); +static bool8 debug_sub_808E9A0(void); +static bool8 debug_sub_808E9F8(void); +static bool8 debug_sub_808EA50(void); +static void debug_sub_808EA9C(u8); +static void debug_sub_808EAFC(u8, u8); +static bool8 TrickRelated_Level_InitSubmenu(void); +static bool8 TrickRelated_TrickMaster_InitSubmenu(void); +static bool8 debug_sub_808EC10(void); +static bool8 debug_sub_808EC5C(void); +static bool8 PreviewGraphics_Show(void); +static bool8 debug_sub_808ECD0(void); +static void PicTest_SelectPokemon(void); +static void PicTest_SelectPersonality(void); +static void ContestPicTest_SelectContestType(void); +static void MuseumArtPicTest_SelectTitleType(void); +static void PreviewPicTest_SelectType(void); +static void PicTest_Redraw(u8 a0); +static void PrepareDebugOverlayBeforeShowingContestPainting(u8 a0); +static void PrintBool(u8, u8, bool8); +static void PrintUnsignedShort(u8, u8, u16); + +extern const u8 DebugScript_081C1CFE[]; +extern const u8 DebugScript_081C1D07[]; +extern const u8 DebugScript_081C1D1E[]; +extern const u8 DebugScript_081C1D24[]; +extern const u8 DebugScript_081C1D2A[]; +extern const u8 DebugScript_081C1D35[]; +extern const u8 DebugScript_081C1D46[]; +extern const u8 DebugScript_081C221F[]; +extern const u8 DebugScript_081C23E2[]; +extern const u8 DebugScript_081C23E6[]; +extern const u8 DebugScript_081C23F6[]; +extern const u8 DebugScript_081C2482[]; +extern const u8 DebugScript_081C23FD[]; +extern const u8 DebugScript_081C2518[]; +extern const u8 DebugScript_081C2507[]; + +static const u8 sString_ContestGraphics[] = _("Contest graphics"); +static const u8 sString_ArtMuseumGraphics[] = _("Art Mus. graphics"); +static const u8 sString_PreviewData[] = _("Preview data"); +static const u8 sString_TrickHouse[] = _("TRICK HOUSE"); +static const u8 sString_ControlEvents[] = _("Control events"); +static const u8 sString_ControlFlags[] = _("Control flags"); +static const u8 sString_ControlWORK[] = _("Control WORK"); + +static const struct MenuAction sMenuActions_TopMenu[] = { + {sString_ContestGraphics, ContestGraphics}, + {sString_ArtMuseumGraphics, ArtMusGraphics}, + {sString_PreviewData, PreviewData}, + {sString_TrickHouse, TrickHouse}, + {sString_ControlEvents, ControlEvents}, + {sString_ControlFlags, ControlFlags}, + {sString_ControlWORK, ControlWorks}, +}; + +static const u8 sString_ContestMenuTitle[] = _("Contest"); + +static const u8 sString_Contest_PokemonNo[] = _("Pokémon No."); +static const u8 sString_Contest_Personality[] = _("ID rnd. digit"); +static const u8 sString_Contest_Type[] = _("Contest Type"); +static const u8 sString_Contest_PokeArt[] = _("Poké Art"); + +static const struct MenuAction sMenuActions_ContestPicTest[] = { + {sString_Contest_PokemonNo, DummyMenuAction}, + {sString_Contest_Personality, DummyMenuAction}, + {sString_Contest_Type, DummyMenuAction}, + {sString_Contest_PokeArt, ContestGraphics_Show} +}; + +static const u8 sString_Contest_ArtMuseumTitle[] = _("Art Mus."); + +static const u8 sString_Contest_ArtMuseum_PokemonNo[] = _("Pokémon No."); +static const u8 sString_Contest_ArtMuseum_Personality[] = _("ID rnd. digit"); +static const u8 sString_Contest_ArtMuseum_Type[] = _("Title Type"); +static const u8 sString_Contest_ArtMuseum_PokeArt[] = _("Poké Art"); + +static const struct MenuAction sMenuActions_ArtMuseumPicTest[] = { + {sString_Contest_ArtMuseum_PokemonNo, DummyMenuAction}, + {sString_Contest_ArtMuseum_Personality, DummyMenuAction}, + {sString_Contest_ArtMuseum_Type, DummyMenuAction}, + {sString_Contest_ArtMuseum_PokeArt, MuseumGraphics_Show} +}; + +static const u8 sString_Contest_PreviewTitle[] = _("Preview"); + +static const u8 sString_Contest_Preview_PokemonNo[] = _("Pokémon No."); +static const u8 sString_Contest_Preview_Personality[] = _("ID rnd. digit"); +static const u8 sString_Contest_Preview_Type[] = _("Type"); +static const u8 sString_Contest_Preview_PokeArt[] = _("Poké Art"); + +static const struct MenuAction sMenuActions_PreviewPicTest[] = { + {sString_Contest_Preview_PokemonNo, DummyMenuAction}, + {sString_Contest_Preview_Personality, DummyMenuAction}, + {sString_Contest_Preview_Type, DummyMenuAction}, + {sString_Contest_Preview_PokeArt, PreviewGraphics_Show} +}; + +static const u8 sString_TrickRelated[] = _("Trick related"); + +static const u8 sString_TrickRelated_Level[] = _("Level"); +static const u8 sString_TrickRelated_TrickMaster[] = _("Trick Master"); + +static const struct MenuAction sMenuActions_TrickRelated[] = { + {sString_TrickRelated_Level, TrickRelated_Level_InitSubmenu}, + {sString_TrickRelated_TrickMaster, TrickRelated_TrickMaster_InitSubmenu} +}; + +static const u8 sString_Event1[] = _("パート1"); +static const u8 sString_Event2[] = _("パート2"); + +static const struct MenuAction sMenuActions_ControlEvents[] = { + {sString_Event1, ControlEvents_InitSubmenu1}, + {sString_Event2, ControlEvents_InitSubmenu2} +}; + +static const u8 sString_EventFlag[] = _("イベントFLAG"); +static const u8 sString_VanishFlag[] = _("バニシュFLAG"); +static const u8 sString_TrainerFlag[] = _("トレーナーFLAG"); +static const u8 sString_SysFlag[] = _("SYSFLAG"); +static const u8 sString_BallVanishFlag[] = _("BALLバニシュFLAG"); +static const u8 sString_FH[] = _("FH"); +static const u8 sString_FH_OBJ[] = _("FH-OBJ"); + +static const struct MenuAction sMenuActions_ControlFlags[] = { + {sString_EventFlag, ControlFlags_EventFlag_InitSubmenu}, + {sString_VanishFlag, ControlFlags_VanishFlag_InitSubmenu}, + {sString_TrainerFlag, ControlFlags_TrainerFlag_InitSubmenu}, + {sString_SysFlag, ControlFlags_SysFlag_InitSubmenu}, + {sString_BallVanishFlag, ControlFlags_BallVanishFlag_InitSubmenu}, + {sString_FH, ControlFlags_FH_InitSubmenu}, + {sString_FH_OBJ, ControlFlags_FH_OBJ_InitSubmenu} +}; + +static const u8 sString_SaveWork[] = _("SAVEWORK"); +static const u8 sString_SysWork[] = _("SYSWORK"); +static const u8 sString_LocalWork[] = _("LOCALWORK"); +static const u8 sString_ObjWork[] = _("OBJWORK"); +static const u8 sString_AnsWork[] = _("ANSWORK"); +static const u8 sString_SaveWorkPart2[] = _("SAVEWORK パート2"); + +static const struct MenuAction sMenuActions_ControlWorks[] = { + {sString_SaveWork, ControlWorks_SaveWork_InitSubmenu}, + {sString_SysWork, ControlWorks_SysWork_InitSubmenu}, + {sString_LocalWork, ControlWorks_LocalWork_InitSubmenu}, + {sString_ObjWork, ControlWorks_ObjWork_InitSubmenu}, + {sString_AnsWork, ControlWorks_AnsWork_InitSubmenu}, + {sString_SaveWorkPart2, ControlWorks_SaveWorkPart2_InitSubmenu} +}; + +static const u8 sString_Clear_go[] = _("クリアご"); +static const u8 sString_Coin_kounyuuka[] = _("コインこうにゅうかのう"); +static const u8 sString_Oldale_supporter_set[] = _("コトキサポーターセット"); +static const u8 sString_New_Mauville_open[] = _("ニューキンセツOPEN"); +static const u8 sString_Renrakusen_ni_noreru[] = _("れんらくせんにのれる"); +static const u8 sString_Egg_tsuika[] = _("タマゴついか"); +static const u8 sString_Item_ippai[] = _("アイテムいっぱい"); +static const u8 sString_Gezzu_ippai[] = _("グッズいっぱい"); +static const u8 sString_Coin_ippai[] = _("COINいっぱい"); + +static const struct MenuAction sMenuActions_ControlEvents_Events1[] = { + {sString_Clear_go, CallScript_DoHallOfFame}, + {sString_Coin_kounyuuka, CallScript_GiveCoinCaseIfNotAlreadyOwned}, + {sString_Oldale_supporter_set, CallScript_SetOldaleStateAfterRoute103Rival}, + {sString_New_Mauville_open, CallScript_OpenNewMauville}, + {sString_Renrakusen_ni_noreru, CallScript_GiveSSTicketAndDoHallOfFame}, + {sString_Egg_tsuika, CallScript_GiveKyogreEgg}, + {sString_Item_ippai, CallScript_GiveAllItems}, + {sString_Gezzu_ippai, CallScript_GiveAllDecorations}, + {sString_Coin_ippai, CallScript_GiveAllCoins} +}; + +static const u8 sString_SootpolisGymOpen[] = _("ムロジムOPEN"); +static const u8 sString_MoneyTo0[] = _("おかねを0へ"); +static const u8 sString_BarboachFull[] = _("ドジョッチ FULL"); +static const u8 sString_ShroomishFull[] = _("キノココ FULL"); +static const u8 sString_BarboachEgg[] = _("ドジョッチ タマゴ"); +static const u8 sString_ShroomishEgg[] = _("キノココ タマゴ"); + +static const struct MenuAction sMenuActions_ControlEvents_Events2[] = { + {sString_SootpolisGymOpen, CallScript_OpenSootopolisGym}, + {sString_MoneyTo0, CallScript_SetMoneyTo0}, + {sString_BarboachFull, CallScript_FillPartyWithBarboach}, + {sString_ShroomishFull, CallScript_FillPartyWithShroomish}, + {sString_BarboachEgg, CallScript_GiveBarboachEgg}, + {sString_ShroomishEgg, CallScript_GiveShroomishEgg} +}; + +static const u8 sString_Answork_Mikansei[] = _("ANSWORK みかんせい"); + +static const struct MenuAction sMenuActions_ControlEvents_AnsWork[] = { + {sString_Answork_Mikansei, DummyMenuAction} +}; + +static const u8 sString_FH_OBJ00_08[] = _("FHーOBJ00ー08"); +static const u8 sString_FH_OBJ09_15[] = _("FHーOBJ09ー15"); + +static const struct MenuAction sMenuActions_ControlFlags_FH_OBJ[] = { + {sString_FH_OBJ00_08, ControlFlags_FH_OBJ00_08_InitSubsubmenu}, + {sString_FH_OBJ09_15, ControlFlags_FH_OBJ09_15_InitSubsubmenu} +}; + +static const u8 sString_FH_OBJ00[] = _("FHーOBJ00"); +static const u8 sString_FH_OBJ01[] = _("FHーOBJ01"); +static const u8 sString_FH_OBJ02[] = _("FHーOBJ02"); +static const u8 sString_FH_OBJ03[] = _("FHーOBJ03"); +static const u8 sString_FH_OBJ04[] = _("FHーOBJ04"); +static const u8 sString_FH_OBJ05[] = _("FHーOBJ05"); +static const u8 sString_FH_OBJ06[] = _("FHーOBJ06"); +static const u8 sString_FH_OBJ07[] = _("FHーOBJ07"); +static const u8 sString_FH_OBJ08[] = _("FHーOBJ08"); + +static const struct MenuAction sMenuActions_ControlFlags_FH_OBJ00_08[] = { + {sString_FH_OBJ00, DummyMenuAction}, + {sString_FH_OBJ01, DummyMenuAction}, + {sString_FH_OBJ02, DummyMenuAction}, + {sString_FH_OBJ03, DummyMenuAction}, + {sString_FH_OBJ04, DummyMenuAction}, + {sString_FH_OBJ05, DummyMenuAction}, + {sString_FH_OBJ06, DummyMenuAction}, + {sString_FH_OBJ07, DummyMenuAction}, + {sString_FH_OBJ08, DummyMenuAction} +}; + +static const u8 sString_FH_OBJ09[] = _("FH-OBJ09"); +static const u8 sString_FH_OBJ10[] = _("FH-OBJ10"); +static const u8 sString_FH_OBJ11[] = _("FH-OBJ11"); +static const u8 sString_FH_OBJ12[] = _("FH-OBJ12"); +static const u8 sString_FH_OBJ13[] = _("FH-OBJ13"); +static const u8 sString_FH_OBJ14[] = _("FH-OBJ14"); +static const u8 sString_FH_OBJ15[] = _("FH-OBJ15"); +static const u8 sString_Blank_083C1147[] = _(""); +static const u8 sString_Blank_083C1148[] = _(""); + +static const struct MenuAction sMenuActions_ControlFlags_FH_OBJ09_15[] = { + {sString_FH_OBJ09, DummyMenuAction}, + {sString_FH_OBJ10, DummyMenuAction}, + {sString_FH_OBJ11, DummyMenuAction}, + {sString_FH_OBJ12, DummyMenuAction}, + {sString_FH_OBJ13, DummyMenuAction}, + {sString_FH_OBJ14, DummyMenuAction}, + {sString_FH_OBJ15, DummyMenuAction}, + {sString_Blank_083C1147, DummyMenuAction}, + {sString_Blank_083C1148, DummyMenuAction} +}; + +static const u8 sControlFlags_FH_OBJ_CountsArray[] = {9, 7}; + +static const u16 sControlFlags_FH_OBJ_FlagsArrays[][9] = { + {0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19}, + {0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20} +}; + +static const u8 gUnknown_Debug_083C11BA[] = _("FH-00-08"); +static const u8 gUnknown_Debug_083C11C3[] = _("FH-09-15"); + +static const struct MenuAction gUnknown_Debug_083C11CC[] = { + {gUnknown_Debug_083C11BA, debug_sub_808D694}, + {gUnknown_Debug_083C11C3, debug_sub_808D6EC} +}; + +static const u8 gUnknown_Debug_083C11DC[] = _("FH-00"); +static const u8 gUnknown_Debug_083C11E2[] = _("FH-01"); +static const u8 gUnknown_Debug_083C11E8[] = _("FH-02"); +static const u8 gUnknown_Debug_083C11EE[] = _("FH-03"); +static const u8 gUnknown_Debug_083C11F4[] = _("FH-04"); +static const u8 gUnknown_Debug_083C11FA[] = _("FH-05"); +static const u8 gUnknown_Debug_083C1200[] = _("FH-06"); +static const u8 gUnknown_Debug_083C1206[] = _("FH-07"); +static const u8 gUnknown_Debug_083C120C[] = _("FH-08"); + +static const struct MenuAction gUnknown_Debug_083C1212[] = { + {gUnknown_Debug_083C11DC, DummyMenuAction}, + {gUnknown_Debug_083C11E2, DummyMenuAction}, + {gUnknown_Debug_083C11E8, DummyMenuAction}, + {gUnknown_Debug_083C11EE, DummyMenuAction}, + {gUnknown_Debug_083C11F4, DummyMenuAction}, + {gUnknown_Debug_083C11FA, DummyMenuAction}, + {gUnknown_Debug_083C1200, DummyMenuAction}, + {gUnknown_Debug_083C1206, DummyMenuAction}, + {gUnknown_Debug_083C120C, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C125C[] = _("FHー09"); +static const u8 gUnknown_Debug_083C1262[] = _("FHー10"); +static const u8 gUnknown_Debug_083C1268[] = _("FHー11"); +static const u8 gUnknown_Debug_083C126E[] = _("FHー12"); +static const u8 gUnknown_Debug_083C1274[] = _("FHー13"); +static const u8 gUnknown_Debug_083C127A[] = _("FHー14"); +static const u8 gUnknown_Debug_083C1280[] = _("FHー15"); +static const u8 gUnknown_Debug_083C1286[] = _(""); +static const u8 gUnknown_Debug_083C1287[] = _(""); + +static const struct MenuAction gUnknown_Debug_083C1288[] = { + {gUnknown_Debug_083C125C, DummyMenuAction}, + {gUnknown_Debug_083C1262, DummyMenuAction}, + {gUnknown_Debug_083C1268, DummyMenuAction}, + {gUnknown_Debug_083C126E, DummyMenuAction}, + {gUnknown_Debug_083C1274, DummyMenuAction}, + {gUnknown_Debug_083C127A, DummyMenuAction}, + {gUnknown_Debug_083C1280, DummyMenuAction}, + {gUnknown_Debug_083C1286, DummyMenuAction}, + {gUnknown_Debug_083C1287, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C12D0[] = {9, 7}; + +static const u16 gUnknown_Debug_083C12D2[][9] = { + {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09}, + {0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10} +}; + +static const u8 gUnknown_Debug_083C12F6[] = _("BATCH"); +static const u8 gUnknown_Debug_083C12FC[] = _("タウンとうちゃく"); +static const u8 gUnknown_Debug_083C1305[] = _("シティとうちゃく"); +static const u8 gUnknown_Debug_083C130E[] = _("GET"); +static const u8 gUnknown_Debug_083C1312[] = _("そのた1"); +static const u8 gUnknown_Debug_083C1317[] = _("そのた2"); +static const u8 gUnknown_Debug_083C131C[] = _("そのた3"); +static const u8 gUnknown_Debug_083C1321[] = _("そのた4"); +static const u8 gUnknown_Debug_083C1326[] = _("そのた とうちゃく"); + +static const struct MenuAction gUnknown_Debug_083C1330[] = { + {gUnknown_Debug_083C12F6, debug_sub_808CFA4}, + {gUnknown_Debug_083C12FC, debug_sub_808CFFC}, + {gUnknown_Debug_083C1305, debug_sub_808D054}, + {gUnknown_Debug_083C130E, debug_sub_808D0AC}, + {gUnknown_Debug_083C1312, debug_sub_808D104}, + {gUnknown_Debug_083C1317, debug_sub_808D15C}, + {gUnknown_Debug_083C131C, debug_sub_808D1B4}, + {gUnknown_Debug_083C1321, debug_sub_808D20C}, + {gUnknown_Debug_083C1326, debug_sub_808D264} +}; + +static const u8 gUnknown_Debug_083C1378[] = _("BATCH01ーGET"); +static const u8 gUnknown_Debug_083C1384[] = _("BATCH02ーGET"); +static const u8 gUnknown_Debug_083C1390[] = _("BATCH03ーGET"); +static const u8 gUnknown_Debug_083C139C[] = _("BATCH04ーGET"); +static const u8 gUnknown_Debug_083C13A8[] = _("BATCH05ーGET"); +static const u8 gUnknown_Debug_083C13B4[] = _("BATCH06ーGET"); +static const u8 gUnknown_Debug_083C13C0[] = _("BATCH07ーGET"); +static const u8 gUnknown_Debug_083C13CC[] = _("BATCH08ーGET"); + +static const struct MenuAction gUnknown_Debug_083C13D8[] = { + {gUnknown_Debug_083C1378, DummyMenuAction}, + {gUnknown_Debug_083C1384, DummyMenuAction}, + {gUnknown_Debug_083C1390, DummyMenuAction}, + {gUnknown_Debug_083C139C, DummyMenuAction}, + {gUnknown_Debug_083C13A8, DummyMenuAction}, + {gUnknown_Debug_083C13B4, DummyMenuAction}, + {gUnknown_Debug_083C13C0, DummyMenuAction}, + {gUnknown_Debug_083C13CC, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C1418[] = _("T101ARRIVE"); +static const u8 gUnknown_Debug_083C1423[] = _("T102ARRIVE"); +static const u8 gUnknown_Debug_083C142E[] = _("T103ARRIVE"); +static const u8 gUnknown_Debug_083C1439[] = _("T104ARRIVE"); +static const u8 gUnknown_Debug_083C1444[] = _("T105ARRIVE"); +static const u8 gUnknown_Debug_083C144F[] = _("T106ARRIVE"); +static const u8 gUnknown_Debug_083C145A[] = _("T107ARRIVE"); + +static const struct MenuAction gUnknown_Debug_083C1465[] = { + {gUnknown_Debug_083C1418, DummyMenuAction}, + {gUnknown_Debug_083C1423, DummyMenuAction}, + {gUnknown_Debug_083C142E, DummyMenuAction}, + {gUnknown_Debug_083C1439, DummyMenuAction}, + {gUnknown_Debug_083C1444, DummyMenuAction}, + {gUnknown_Debug_083C144F, DummyMenuAction}, + {gUnknown_Debug_083C145A, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C14A0[] = _("C101ARRIVE"); +static const u8 gUnknown_Debug_083C14AB[] = _("C102ARRIVE"); +static const u8 gUnknown_Debug_083C14B6[] = _("C103ARRIVE"); +static const u8 gUnknown_Debug_083C14C1[] = _("C104ARRIVE"); +static const u8 gUnknown_Debug_083C14CC[] = _("C105ARRIVE"); +static const u8 gUnknown_Debug_083C14D7[] = _("C106ARRIVE"); +static const u8 gUnknown_Debug_083C14E2[] = _("C107ARRIVE"); +static const u8 gUnknown_Debug_083C14ED[] = _("C108ARRIVE"); +static const u8 gUnknown_Debug_083C14F8[] = _("C109ARRIVE"); + +static const struct MenuAction gUnknown_Debug_083C1503[] = { + {gUnknown_Debug_083C14A0, DummyMenuAction}, + {gUnknown_Debug_083C14AB, DummyMenuAction}, + {gUnknown_Debug_083C14B6, DummyMenuAction}, + {gUnknown_Debug_083C14C1, DummyMenuAction}, + {gUnknown_Debug_083C14CC, DummyMenuAction}, + {gUnknown_Debug_083C14D7, DummyMenuAction}, + {gUnknown_Debug_083C14E2, DummyMenuAction}, + {gUnknown_Debug_083C14ED, DummyMenuAction}, + {gUnknown_Debug_083C14F8, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C154C[] = _("SYSーPOKEMONーGET"); +static const u8 gUnknown_Debug_083C155C[] = _("SYSーZUKANーGET"); +static const u8 gUnknown_Debug_083C156A[] = _("SYSーPOKEGEARーGET"); +static const u8 gUnknown_Debug_083C157B[] = _("SYSーRIBBONーGET"); + +static const struct MenuAction gUnknown_Debug_083C158A[] = { + {gUnknown_Debug_083C154C, DummyMenuAction}, + {gUnknown_Debug_083C155C, DummyMenuAction}, + {gUnknown_Debug_083C156A, DummyMenuAction}, + {gUnknown_Debug_083C157B, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C15AC[] = _("SYSーGAMEーCLEAR"); +static const u8 gUnknown_Debug_083C15BB[] = _("SYSーKAIWAーUSED"); +static const u8 gUnknown_Debug_083C15CA[] = _("SYSーNOWーOYAJIーMEET"); +static const u8 gUnknown_Debug_083C15DD[] = _("SYSーUSEーWAZAーFLASH"); +static const u8 gUnknown_Debug_083C15F0[] = _("SYSーUSEーWAZAーKAIRIKI"); +static const u8 gUnknown_Debug_083C1605[] = _("SYSーWEATHERーCTRL"); +static const u8 gUnknown_Debug_083C1616[] = _("SYSーCYCLINGーROAD"); +static const u8 gUnknown_Debug_083C1627[] = _("SYSーSAFARIーMODE"); +static const u8 gUnknown_Debug_083C1637[] = _("SYSーCRUISEーMODE"); + +static const struct MenuAction gUnknown_Debug_083C1647[] = { + {gUnknown_Debug_083C15AC, DummyMenuAction}, + {gUnknown_Debug_083C15BB, DummyMenuAction}, + {gUnknown_Debug_083C15CA, DummyMenuAction}, + {gUnknown_Debug_083C15DD, DummyMenuAction}, + {gUnknown_Debug_083C15F0, DummyMenuAction}, + {gUnknown_Debug_083C1605, DummyMenuAction}, + {gUnknown_Debug_083C1616, DummyMenuAction}, + {gUnknown_Debug_083C1627, DummyMenuAction}, + {gUnknown_Debug_083C1637, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C1690[] = _("SYSーTVーHOME"); +static const u8 gUnknown_Debug_083C169C[] = _("SYSーTVーWATCH"); +static const u8 gUnknown_Debug_083C16A9[] = _("SYSーTVSTART"); +static const u8 gUnknown_Debug_083C16B5[] = _("SYSーPOPWORDーINPUT"); +static const u8 gUnknown_Debug_083C16C7[] = _("SYSーMIXーRECORD"); +static const u8 gUnknown_Debug_083C16D6[] = _("SYSーCLOCKーSET"); +static const u8 gUnknown_Debug_083C16E4[] = _("SYSーCAVEーSHIP"); +static const u8 gUnknown_Debug_083C16F2[] = _("SYSーCAVEーWONDER"); +static const u8 gUnknown_Debug_083C1702[] = _("SYSーCAVEーBATTLE"); + +static const struct MenuAction gUnknown_Debug_083C1712[] = { + {gUnknown_Debug_083C1690, DummyMenuAction}, + {gUnknown_Debug_083C169C, DummyMenuAction}, + {gUnknown_Debug_083C16A9, DummyMenuAction}, + {gUnknown_Debug_083C16B5, DummyMenuAction}, + {gUnknown_Debug_083C16C7, DummyMenuAction}, + {gUnknown_Debug_083C16D6, DummyMenuAction}, + {gUnknown_Debug_083C16E4, DummyMenuAction}, + {gUnknown_Debug_083C16F2, DummyMenuAction}, + {gUnknown_Debug_083C1702, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C175C[] = _("SYSーSPECIALーZUKAN"); +static const u8 gUnknown_Debug_083C176E[] = _("SYSーASASEーTIDE"); +static const u8 gUnknown_Debug_083C177D[] = _("SYSーRIBBONーGET"); +static const u8 gUnknown_Debug_083C178C[] = _("SYSーPASOーMAYUMI"); +static const u8 gUnknown_Debug_083C179C[] = _("SYSーEXDATAーENABLE"); +static const u8 gUnknown_Debug_083C17AE[] = _("SYSーTENJIーANAWOHORU"); +static const u8 gUnknown_Debug_083C17C2[] = _("SYSーTENJIーKAIRIKI"); +static const u8 gUnknown_Debug_083C17D4[] = _("SYSーTENJIーWAIT"); +static const u8 gUnknown_Debug_083C17E3[] = _("SYSーTENJIーSORAWOTOBU"); + +static const struct MenuAction gUnknown_Debug_083C17F8[] = { + {gUnknown_Debug_083C175C, DummyMenuAction}, + {gUnknown_Debug_083C176E, DummyMenuAction}, + {gUnknown_Debug_083C177D, DummyMenuAction}, + {gUnknown_Debug_083C178C, DummyMenuAction}, + {gUnknown_Debug_083C179C, DummyMenuAction}, + {gUnknown_Debug_083C17AE, DummyMenuAction}, + {gUnknown_Debug_083C17C2, DummyMenuAction}, + {gUnknown_Debug_083C17D4, DummyMenuAction}, + {gUnknown_Debug_083C17E3, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C1840[] = _("SYSーENCーUPーITEM"); +static const u8 gUnknown_Debug_083C1850[] = _("SYSーENEーDOWNーITEM"); +static const u8 gUnknown_Debug_083C1862[] = _("SYSーKOKOROーEVENT"); +static const u8 gUnknown_Debug_083C1873[] = _("SYSーMOVEーPOKEーNEWS"); +static const u8 gUnknown_Debug_083C1886[] = _("SYSーASASEーITEM"); +static const u8 gUnknown_Debug_083C1895[] = _("SYSーBーDASH"); +static const u8 gUnknown_Debug_083C18A0[] = _("SYSーCTRLーOBJーDELETE"); +static const u8 gUnknown_Debug_083C18B4[] = _(""); +static const u8 gUnknown_Debug_083C18B5[] = _(""); + +static const struct MenuAction gUnknown_Debug_083C18B8[] = { + {gUnknown_Debug_083C1840, DummyMenuAction}, + {gUnknown_Debug_083C1850, DummyMenuAction}, + {gUnknown_Debug_083C1862, DummyMenuAction}, + {gUnknown_Debug_083C1873, DummyMenuAction}, + {gUnknown_Debug_083C1886, DummyMenuAction}, + {gUnknown_Debug_083C1895, DummyMenuAction}, + {gUnknown_Debug_083C18A0, DummyMenuAction}, + {gUnknown_Debug_083C18B4, DummyMenuAction}, + {gUnknown_Debug_083C18B5, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C1900[] = _("SYSーARRIVEーSUBMARINECAVE"); +static const u8 gUnknown_Debug_083C1919[] = _("SYSーARRIVEーBATTLETOWER"); +static const u8 gUnknown_Debug_083C1930[] = _("SYSーARRIVEーISLAND"); +static const u8 gUnknown_Debug_083C1942[] = _("SYSーARRIVEーLEAGUE"); +static const u8 gUnknown_Debug_083C1954[] = _("SYSーARRIVEーSORANOHASHIRA"); +static const u8 gUnknown_Debug_083C196D[] = _(""); +static const u8 gUnknown_Debug_083C196E[] = _(""); +static const u8 gUnknown_Debug_083C196F[] = _(""); +static const u8 gUnknown_Debug_083C1970[] = _(""); + +static const struct MenuAction gDebug_0x83C1974[] = { + {gUnknown_Debug_083C1900, DummyMenuAction}, + {gUnknown_Debug_083C1919, DummyMenuAction}, + {gUnknown_Debug_083C1930, DummyMenuAction}, + {gUnknown_Debug_083C1942, DummyMenuAction}, + {gUnknown_Debug_083C1954, DummyMenuAction}, + {gUnknown_Debug_083C196D, DummyMenuAction}, + {gUnknown_Debug_083C196E, DummyMenuAction}, + {gUnknown_Debug_083C196F, DummyMenuAction}, + {gUnknown_Debug_083C1970, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C19BC[] = {8, 7, 9, 4, 9, 9, 9, 7, 5}; + +static const u16 gUnknown_Debug_083C19C6[][9] = { + {FLAG_BADGE01_GET, FLAG_BADGE02_GET, FLAG_BADGE03_GET, FLAG_BADGE04_GET, FLAG_BADGE05_GET, FLAG_BADGE06_GET, FLAG_BADGE07_GET, FLAG_BADGE08_GET}, + {FLAG_VISITED_LITTLEROOT_TOWN, FLAG_VISITED_OLDALE_TOWN, FLAG_VISITED_DEWFORD_TOWN, FLAG_VISITED_LAVARIDGE_TOWN, FLAG_VISITED_FALLARBOR_TOWN, FLAG_VISITED_VERDANTURF_TOWN, FLAG_VISITED_PACIFIDLOG_TOWN}, + {FLAG_VISITED_PETALBURG_CITY, FLAG_VISITED_SLATEPORT_CITY, FLAG_VISITED_MAUVILLE_CITY, FLAG_VISITED_RUSTBORO_CITY, FLAG_VISITED_FORTREE_CITY, FLAG_VISITED_LILYCOVE_CITY, FLAG_VISITED_MOSSDEEP_CITY, FLAG_VISITED_SOOTOPOLIS_CITY, FLAG_VISITED_EVER_GRANDE_CITY}, + {FLAG_SYS_POKEMON_GET, FLAG_SYS_POKEDEX_GET, FLAG_SYS_POKENAV_GET, FLAG_SYS_RIBBON_GET}, + {FLAG_SYS_GAME_CLEAR, FLAG_SYS_CHAT_USED, FLAG_SYS_HIPSTER_MEET, FLAG_SYS_USE_FLASH, FLAG_SYS_USE_STRENGTH, FLAG_SYS_WEATHER_CTRL, FLAG_SYS_CYCLING_ROAD, FLAG_SYS_SAFARI_MODE, FLAG_SYS_CRUISE_MODE}, + {FLAG_SYS_TV_HOME, FLAG_SYS_TV_WATCH, FLAG_SYS_TV_START, FLAG_SYS_POPWORD_INPUT, FLAG_SYS_MIX_RECORD, FLAG_SYS_CLOCK_SET, FLAG_SYS_CAVE_SHIP, FLAG_SYS_CAVE_WONDER, FLAG_SYS_CAVE_BATTLE}, + {FLAG_SYS_NATIONAL_DEX, FLAG_SYS_SHOAL_TIDE, FLAG_SYS_RIBBON_GET, FLAG_SYS_PC_LANETTE, FLAG_SYS_EXDATA_ENABLE, FLAG_SYS_BRAILLE_DIG, FLAG_SYS_BRAILLE_STRENGTH, FLAG_SYS_BRAILLE_WAIT, FLAG_SYS_BRAILLE_FLY}, + {FLAG_SYS_ENC_UP_ITEM, FLAG_SYS_ENC_DOWN_ITEM, FLAG_SYS_HAS_EON_TICKET, FLAG_SYS_TV_LATI, FLAG_SYS_SHOAL_ITEM, FLAG_SYS_B_DASH, FLAG_SYS_CTRL_OBJ_DELETE}, + {FLAG_LANDMARK_SEAFLOOR_CAVERN, FLAG_LANDMARK_BATTLE_TOWER, FLAG_LANDMARK_SOUTHERN_ISLAND, FLAG_SYS_POKEMON_LEAGUE_FLY, FLAG_LANDMARK_SKY_PILLAR} +}; + +static const u8 gDebug_0x83C1A68[] = _("FVーBALL パート1"); + +static const struct MenuAction gUnknown_Debug_083C1A78[] = { + {gDebug_0x83C1A68, debug_sub_808D8D8} +}; + +static const u8 gUnknown_Debug_083C1A80[] = _("FVーBALL1ー78"); +static const u8 gUnknown_Debug_083C1A8C[] = _("FVーBALL1ー133"); + +static const struct MenuAction gUnknown_Debug_083C1A9C[] = { + {gUnknown_Debug_083C1A80, DummyMenuAction}, + {gUnknown_Debug_083C1A8C, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C1AAC[] = {2}; + +static const u16 gUnknown_Debug_083C1AAE[][9] = { + {FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS_2, FLAG_ITEM_MOSSDEEP_STEVENS_HOUSE_1} +}; + +static const u8 gUnknown_Debug_083C1AC0[] = _("ジムリーダー"); +static const u8 gUnknown_Debug_083C1AC7[] = _("してんのう"); +static const u8 gUnknown_Debug_083C1ACD[] = _("みつる/Champロード"); + +static const struct MenuAction gUnknown_Debug_083C1ADC[] = { + {gUnknown_Debug_083C1AC0, debug_sub_808CD08}, + {gUnknown_Debug_083C1AC7, debug_sub_808CD60}, + {gUnknown_Debug_083C1ACD, debug_sub_808CDB8} +}; + +static const u8 gUnknown_Debug_083C1AF4[] = _("FTーGYMー01ーLEADER"); +static const u8 gUnknown_Debug_083C1B05[] = _("FTーGYMー02ーLEADER"); +static const u8 gUnknown_Debug_083C1B16[] = _("FTーGYMー03ーLEADER"); +static const u8 gUnknown_Debug_083C1B27[] = _("FTーGYMー04ーLEADER"); +static const u8 gUnknown_Debug_083C1B38[] = _("FTーGYMー05ーLEADER"); +static const u8 gUnknown_Debug_083C1B49[] = _("FTーGYMー06ーLEADER"); +static const u8 gUnknown_Debug_083C1B5A[] = _("FTーGYMー07ーLEADER"); +static const u8 gUnknown_Debug_083C1B6B[] = _("FTーGYMー08ーLEADER"); + +static const struct MenuAction gUnknown_Debug_083C1B7C[] = { + {gUnknown_Debug_083C1AF4, DummyMenuAction}, + {gUnknown_Debug_083C1B05, DummyMenuAction}, + {gUnknown_Debug_083C1B16, DummyMenuAction}, + {gUnknown_Debug_083C1B27, DummyMenuAction}, + {gUnknown_Debug_083C1B38, DummyMenuAction}, + {gUnknown_Debug_083C1B49, DummyMenuAction}, + {gUnknown_Debug_083C1B5A, DummyMenuAction}, + {gUnknown_Debug_083C1B6B, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C1BBC[] = _("FTーSHITENー01"); +static const u8 gUnknown_Debug_083C1BC9[] = _("FTーSHITENー02"); +static const u8 gUnknown_Debug_083C1BD6[] = _("FTーSHITENー03"); +static const u8 gUnknown_Debug_083C1BE3[] = _("FTーSHITENー04"); + +static const struct MenuAction gUnknown_Debug_083C1BF0[] = { + {gUnknown_Debug_083C1BBC, DummyMenuAction}, + {gUnknown_Debug_083C1BC9, DummyMenuAction}, + {gUnknown_Debug_083C1BD6, DummyMenuAction}, + {gUnknown_Debug_083C1BE3, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C1C10[] = _("FTーMITSURUー01ーCAVEーD1301"); + +static const struct MenuAction gUnknown_Debug_083C1C2C[] = { + {gUnknown_Debug_083C1C10, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C1C34[] = {8, 4, 1}; +static const u16 gUnknown_Debug_083C1C38[][9] = { + {FLAG_DEFEATED_RUSTBORO_GYM, FLAG_DEFEATED_DEWFORD_GYM, FLAG_DEFEATED_MAUVILLE_GYM, FLAG_DEFEATED_LAVARIDGE_GYM, FLAG_DEFEATED_PETALBURG_GYM, FLAG_DEFEATED_FORTREE_GYM, FLAG_DEFEATED_MOSSDEEP_GYM, FLAG_DEFEATED_SOOTOPOLIS_GYM}, + {FLAG_DEFEATED_ELITE_4_SYDNEY, FLAG_DEFEATED_ELITE_4_PHOEBE, FLAG_DEFEATED_ELITE_4_GLACIA, FLAG_DEFEATED_ELITE_4_DRAKE}, + {0x04E1} +}; + +static const u8 gUnknown_Debug_083C1C6E[] = _("120/119ばんどうろカクレオン"); +static const u8 gUnknown_Debug_083C1C80[] = _("そのた1 / SUPPORTM/W"); +static const u8 gUnknown_Debug_083C1C92[] = _("ODAMAKI/FIGHTER1"); +static const u8 gUnknown_Debug_083C1CA3[] = _("MITSURU/TENKI"); +static const u8 gUnknown_Debug_083C1CB1[] = _("そのた2 /DAIGO"); +static const u8 gUnknown_Debug_083C1CBD[] = _("POKE/POKEMON"); +static const u8 gUnknown_Debug_083C1CCA[] = _("MAMA/SUPPORT02"); +static const u8 gUnknown_Debug_083C1CD9[] = _("HAGI"); +static const u8 gUnknown_Debug_083C1CDE[] = _("SUPPORT01"); + +static const struct MenuAction gUnknown_Debug_083C1CE8[] = { + {gUnknown_Debug_083C1C6E, debug_sub_808C85C}, + {gUnknown_Debug_083C1C80, debug_sub_808C8B4}, + {gUnknown_Debug_083C1C92, debug_sub_808C90C}, + {gUnknown_Debug_083C1CA3, debug_sub_808C964}, + {gUnknown_Debug_083C1CB1, debug_sub_808C9BC}, + {gUnknown_Debug_083C1CBD, debug_sub_808CA14}, + {gUnknown_Debug_083C1CCA, debug_sub_808CA6C}, + {gUnknown_Debug_083C1CD9, debug_sub_808CAC4}, + {gUnknown_Debug_083C1CDE, debug_sub_808CB1C} +}; + +static const u8 gUnknown_Debug_083C1D30[] = _("FVーKAKUREONBー01ーFIELDーR120"); +static const u8 gUnknown_Debug_083C1D4B[] = _("FVーKAKUREー01ーFIELDーR120"); +static const u8 gUnknown_Debug_083C1D63[] = _("FVーKAKUREー02ーFIELDーR120"); +static const u8 gUnknown_Debug_083C1D7B[] = _("FVーKAKUREー03ーFIELDーR120"); +static const u8 gUnknown_Debug_083C1D93[] = _("FVーKAKUREー04ーFIELDーR120"); +static const u8 gUnknown_Debug_083C1DAB[] = _("FVーKAKUREー05ーFIELDーR120"); +static const u8 gUnknown_Debug_083C1DC3[] = _("FVーKAKUREー06ーFIELDーR120"); +static const u8 gUnknown_Debug_083C1DDB[] = _("FVーKAKUREー01ーFIELDーR119"); +static const u8 gUnknown_Debug_083C1DF3[] = _("FVーKAKUREー02ーFIELDーR119"); + +static const struct MenuAction gUnknown_Debug_083C1E0C[] = { + {gUnknown_Debug_083C1D30, DummyMenuAction}, + {gUnknown_Debug_083C1D4B, DummyMenuAction}, + {gUnknown_Debug_083C1D63, DummyMenuAction}, + {gUnknown_Debug_083C1D7B, DummyMenuAction}, + {gUnknown_Debug_083C1D93, DummyMenuAction}, + {gUnknown_Debug_083C1DAB, DummyMenuAction}, + {gUnknown_Debug_083C1DC3, DummyMenuAction}, + {gUnknown_Debug_083C1DDB, DummyMenuAction}, + {gUnknown_Debug_083C1DF3, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C1E54[] = _("FVーBALLー01ーC107ーR0501"); +static const u8 gUnknown_Debug_083C1E6A[] = _("FVーWORKERM1ー04ーFIELDーC104"); +static const u8 gUnknown_Debug_083C1E84[] = _("FVーSUBMARINEー06ーCAVEーD1101"); +static const u8 gUnknown_Debug_083C1E9F[] = _("FVーGUESTーALLーC106ーR0102"); +static const u8 gUnknown_Debug_083C1EB7[] = _("FVーHORIDASIー01ーC106ーR1106"); +static const u8 gUnknown_Debug_083C1ED1[] = _("FVーMIDDLEM1ー01ーR110ーR0101"); +static const u8 gUnknown_Debug_083C1EEB[] = _("FVーFUNEー01ーC102ーR0601"); +static const u8 gUnknown_Debug_083C1F01[] = _("FVーSUPPORTWー01ーT101ーR0202"); +static const u8 gUnknown_Debug_083C1F1B[] = _("FVーSUPPORTMー01ーT101ーR0102"); + +static const struct MenuAction gUnknown_Debug_083C1F38[] = { + {gUnknown_Debug_083C1E54, DummyMenuAction}, + {gUnknown_Debug_083C1E6A, DummyMenuAction}, + {gUnknown_Debug_083C1E84, DummyMenuAction}, + {gUnknown_Debug_083C1E9F, DummyMenuAction}, + {gUnknown_Debug_083C1EB7, DummyMenuAction}, + {gUnknown_Debug_083C1ED1, DummyMenuAction}, + {gUnknown_Debug_083C1EEB, DummyMenuAction}, + {gUnknown_Debug_083C1F01, DummyMenuAction}, + {gUnknown_Debug_083C1F1B, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C1F80[] = _("FVーODAMAKIー01ーFIELDーR101"); +static const u8 gUnknown_Debug_083C1F99[] = _("FVーODAMAKIー01ーT101ーR0301"); +static const u8 gUnknown_Debug_083C1FB2[] = _("FVーODAMAKIーHYOKAーT101ーR0301"); +static const u8 gUnknown_Debug_083C1FCE[] = _("FVーODAMAKIーHYOKAーFIELDーR101"); +static const u8 gUnknown_Debug_083C1FEA[] = _("FVーODAMAKIーHYOKAーFIELDーR103"); +static const u8 gUnknown_Debug_083C2006[] = _("FVーODAMAKIー01ーC109ーR0105"); +static const u8 gUnknown_Debug_083C201F[] = _("FVーFIGHTERー01ーCAVEーD0201"); +static const u8 gUnknown_Debug_083C2038[] = _("FVーFIGHTERー01ーT106ーR0201"); +static const u8 gUnknown_Debug_083C2051[] = _("FVーFIGHTERー01ーFIELDーR116"); + +static const struct MenuAction gUnknown_Debug_083C206C[] = { + {gUnknown_Debug_083C1F80, DummyMenuAction}, + {gUnknown_Debug_083C1F99, DummyMenuAction}, + {gUnknown_Debug_083C1FB2, DummyMenuAction}, + {gUnknown_Debug_083C1FCE, DummyMenuAction}, + {gUnknown_Debug_083C1FEA, DummyMenuAction}, + {gUnknown_Debug_083C2006, DummyMenuAction}, + {gUnknown_Debug_083C201F, DummyMenuAction}, + {gUnknown_Debug_083C2038, DummyMenuAction}, + {gUnknown_Debug_083C2051, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C20B4[] = _("FVーMITSURUー01ーFIELDーC101"); +static const u8 gUnknown_Debug_083C20CD[] = _("FVーMITSURUー02ーCAVEーD1301"); +static const u8 gUnknown_Debug_083C20E6[] = _("FVーMITSURUー01ーFIELDーC103"); +static const u8 gUnknown_Debug_083C20FF[] = _("FVーMITSURUー01ーT106ーR0201"); +static const u8 gUnknown_Debug_083C2118[] = _("FVーMITSURUー01ーCAVEーD1301"); +static const u8 gUnknown_Debug_083C2131[] = _("FVーMITSURUー01ーC101ーR0201"); +static const u8 gUnknown_Debug_083C214A[] = _("FVーMITSURUー01ーFIELDーR102"); +static const u8 gUnknown_Debug_083C2163[] = _("FVーTENKIー01ーR119ーR101"); +static const u8 gUnknown_Debug_083C2179[] = _("FVーTENKIー01ーR119ーR102"); + +static const struct MenuAction gUnknown_Debug_083C2190[] = { + {gUnknown_Debug_083C20B4, DummyMenuAction}, + {gUnknown_Debug_083C20CD, DummyMenuAction}, + {gUnknown_Debug_083C20E6, DummyMenuAction}, + {gUnknown_Debug_083C20FF, DummyMenuAction}, + {gUnknown_Debug_083C2118, DummyMenuAction}, + {gUnknown_Debug_083C2131, DummyMenuAction}, + {gUnknown_Debug_083C214A, DummyMenuAction}, + {gUnknown_Debug_083C2163, DummyMenuAction}, + {gUnknown_Debug_083C2179, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C21D8[] = _("FVーDAIGOー01ーCAVEーD0504"); +static const u8 gUnknown_Debug_083C21EF[] = _("FVーDAIGOー01ーFIELDーR128"); +static const u8 gUnknown_Debug_083C2206[] = _("FVーDAIGOー01ーFIELDーR118"); +static const u8 gUnknown_Debug_083C221D[] = _("FVーDAIGOー01ーC107ーR0501"); +static const u8 gUnknown_Debug_083C2234[] = _("FVーDAIGOー01ーFIELDーR120"); +static const u8 gUnknown_Debug_083C224B[] = _("FVーDAIGOー01ーFIELDーR108"); + +static const struct MenuAction gUnknown_Debug_083C2264[] = { + {gUnknown_Debug_083C21D8, DummyMenuAction}, + {gUnknown_Debug_083C21EF, DummyMenuAction}, + {gUnknown_Debug_083C2206, DummyMenuAction}, + {gUnknown_Debug_083C221D, DummyMenuAction}, + {gUnknown_Debug_083C2234, DummyMenuAction}, + {gUnknown_Debug_083C224B, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C2294[] = _("FVーPOKE1ー02ーCAVEーD1111"); +static const u8 gUnknown_Debug_083C22AB[] = _("FVーPOKE1ー01ーCAVEーD0601"); +static const u8 gUnknown_Debug_083C22C2[] = _("FVーPOKE1ー02ーCAVEーD0601"); +static const u8 gUnknown_Debug_083C22D9[] = _("FVーPOKE1ー01ーFIELDーR101"); +static const u8 gUnknown_Debug_083C22F0[] = _("FVーPOKE1ー01ーOPENINGーROOM01"); +static const u8 gUnknown_Debug_083C230B[] = _("FVーPOKE1ー02ーOPENINGーROOM01"); +static const u8 gUnknown_Debug_083C2326[] = _("FVーPOKE1ー01ーCAVEーD2308"); +static const u8 gUnknown_Debug_083C233D[] = _("FVーPOKEMONー01ーCAVEーD0201"); +static const u8 gUnknown_Debug_083C2356[] = _("FVーPOKEMONー01ーR104ーR0101"); + +static const struct MenuAction gUnknown_Debug_083C2370[] = { + {gUnknown_Debug_083C2294, DummyMenuAction}, + {gUnknown_Debug_083C22AB, DummyMenuAction}, + {gUnknown_Debug_083C22C2, DummyMenuAction}, + {gUnknown_Debug_083C22D9, DummyMenuAction}, + {gUnknown_Debug_083C22F0, DummyMenuAction}, + {gUnknown_Debug_083C230B, DummyMenuAction}, + {gUnknown_Debug_083C2326, DummyMenuAction}, + {gUnknown_Debug_083C233D, DummyMenuAction}, + {gUnknown_Debug_083C2356, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C23B8[] = _("FVーMAMAー01ーFIELDーT101"); +static const u8 gUnknown_Debug_083C23CE[] = _("FVーMAMAー01ーOPENINGーROOM02"); +static const u8 gUnknown_Debug_083C23E8[] = _("FVーMAMAー01ーT101ーR0101"); +static const u8 gUnknown_Debug_083C23FE[] = _("FVーMAMAー01ーT101ーR0201"); +static const u8 gUnknown_Debug_083C2414[] = _("FVーMAMAー02ーT101ーR0101"); +static const u8 gUnknown_Debug_083C242A[] = _("FVーMAMAー02ーT101ーR0201"); +static const u8 gUnknown_Debug_083C2440[] = _("FVーSUPPORTー02ーFIELDーR110"); +static const u8 gUnknown_Debug_083C2459[] = _("FVーSUPPORTー02ーFIELDーR119"); +static const u8 gUnknown_Debug_083C2472[] = _("FVーSUPPORTー02ーFIELDーT104"); + +static const struct MenuAction gUnknown_Debug_083C248C[] = { + {gUnknown_Debug_083C23B8, DummyMenuAction}, + {gUnknown_Debug_083C23CE, DummyMenuAction}, + {gUnknown_Debug_083C23E8, DummyMenuAction}, + {gUnknown_Debug_083C23FE, DummyMenuAction}, + {gUnknown_Debug_083C2414, DummyMenuAction}, + {gUnknown_Debug_083C242A, DummyMenuAction}, + {gUnknown_Debug_083C2440, DummyMenuAction}, + {gUnknown_Debug_083C2459, DummyMenuAction}, + {gUnknown_Debug_083C2472, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C24D4[] = _("FVーHAGIー01ーFIELDーR104"); +static const u8 gUnknown_Debug_083C24EA[] = _("FVーHAGIー01ーR104ーR0101"); +static const u8 gUnknown_Debug_083C2500[] = _("FVーHAGIー01ーFIELDーT103"); +static const u8 gUnknown_Debug_083C2516[] = _("FVーHAGIー01ーFIELDーR109"); +static const u8 gUnknown_Debug_083C252C[] = _("FVーHAGIー01ーC102ーR0601"); +static const u8 gUnknown_Debug_083C2542[] = _("FVーHAGIー01ーC102ーR0101"); +static const u8 gUnknown_Debug_083C2558[] = _("FVーHAGIー01ーCAVEーD0201"); +static const u8 gUnknown_Debug_083C256E[] = _("FVーHAGIー01ーFIELDーR116"); +static const u8 gUnknown_Debug_083C2584[] = _("FVーHAGIー01ーSPーSHIP01"); + +static const struct MenuAction gUnknown_Debug_083C259C[] = { + {gUnknown_Debug_083C24D4, DummyMenuAction}, + {gUnknown_Debug_083C24EA, DummyMenuAction}, + {gUnknown_Debug_083C2500, DummyMenuAction}, + {gUnknown_Debug_083C2516, DummyMenuAction}, + {gUnknown_Debug_083C252C, DummyMenuAction}, + {gUnknown_Debug_083C2542, DummyMenuAction}, + {gUnknown_Debug_083C2558, DummyMenuAction}, + {gUnknown_Debug_083C256E, DummyMenuAction}, + {gUnknown_Debug_083C2584, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C25E4[] = _("FVーSUPPORTー01ーT101ーR0301"); +static const u8 gUnknown_Debug_083C25FD[] = _("FVーSUPPORTー01ーC109ーR0105"); +static const u8 gUnknown_Debug_083C2616[] = _("FVーSUPPORTー01ーFIELDーC104"); +static const u8 gUnknown_Debug_083C262F[] = _("FVーSUPPORTー01ーFIELDーC106"); +static const u8 gUnknown_Debug_083C2648[] = _("FVーSUPPORTー01ーFIELDーR103"); +static const u8 gUnknown_Debug_083C2661[] = _("FVーSUPPORTー01ーFIELDーR110"); +static const u8 gUnknown_Debug_083C267A[] = _("FVーSUPPORTー01ーFIELDーR119"); +static const u8 gUnknown_Debug_083C2693[] = _("FVーSUPPORTー01ーFIELDーT104"); +static const u8 gUnknown_Debug_083C26AC[] = _("FVーSUPPORTー01ーFIELDーT102"); + +static const struct MenuAction gUnknown_Debug_083C26C8[] = { + {gUnknown_Debug_083C25E4, DummyMenuAction}, + {gUnknown_Debug_083C25FD, DummyMenuAction}, + {gUnknown_Debug_083C2616, DummyMenuAction}, + {gUnknown_Debug_083C262F, DummyMenuAction}, + {gUnknown_Debug_083C2648, DummyMenuAction}, + {gUnknown_Debug_083C2661, DummyMenuAction}, + {gUnknown_Debug_083C267A, DummyMenuAction}, + {gUnknown_Debug_083C2693, DummyMenuAction}, + {gUnknown_Debug_083C26AC, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C2710[] = {9, 9, 9, 9, 6, 9, 9, 9, 9}; + +static const u16 gUnknown_Debug_083C271A[][9] = { + {FLAG_HIDE_KECLEON_ROUTE120_2, FLAG_HIDE_KECLEON_ROUTE120_1, FLAG_HIDE_KECLEON_ROUTE120_3, FLAG_HIDE_KECLEON_ROUTE120_4, FLAG_HIDE_KECLEON_ROUTE120_5, FLAG_HIDE_KECLEON_ROUTE120_6, FLAG_HIDE_KECLEON_ROUTE120_7, FLAG_HIDE_KECLEON_ROUTE119_1, FLAG_HIDE_KECLEON_ROUTE119_2}, + {FLAG_HIDE_BELDUM_BALL_STEVENS_HOUSE, FLAG_HIDE_DEVON_RUSTBORO, FLAG_HIDE_UNDERWATER_SUBMARINE_INTERACTION, FLAG_HIDE_LILYCOVE_MOTEL_PEOPLE, FLAG_HIDE_ROOFTOP_LADY_LILYCOVE_MART, FLAG_HIDE_TRICKMASTER_ENTRANCE, 0x352, FLAG_HIDE_MAY_UPSTAIRS, FLAG_HIDE_BRENDAN_UPSTAIRS}, + {FLAG_HIDE_BIRCH_BATTLE_POOCHYENA, FLAG_HIDE_BIRCH_IN_LAB, FLAG_UNKNOWN_BIRCH_380, FLAG_HIDE_BIRCH_ROUTE101, FLAG_HIDE_BIRCH_ROUTE103, FLAG_HIDE_BIRCH_CHAMPIONS_ROOM, FLAG_HIDE_BOYFRIEND_RUSTURF_TUNNEL, FLAG_HIDE_BOYFRIEND_WANDAS_HOUSE, FLAG_HIDE_TUNNER_DIGGER_ROUTE116}, + {FLAG_HIDE_WALLY_PETALBURG, FLAG_HIDE_WALLY_DEFEATED_VICTORY_ROAD, FLAG_HIDE_WALLY_MAUVILLE, FLAG_HIDE_WALLY_WANDAS_HOUSE, FLAG_HIDE_WALLY_BATTLE_VICTORY_ROAD, FLAG_HIDE_WALLY_PETALBURG_GYM, FLAG_UNKNOWN_363, FLAG_HIDE_WEATHER_INSTITUTE_WORKERS_1F, FLAG_HIDE_WEATHER_INSTITUTE_WORKERS_2F}, + {FLAG_HIDE_STEVEN_GRANITE_CAVE, FLAG_HIDE_STEVEN_ROUTE128, FLAG_HIDE_STEVEN_ROUTE118, FLAG_HIDE_STEVEN_STEVENS_HOUSE, FLAG_HIDE_STEVEN_ROUTE120, FLAG_HIDE_STEVEN_SOOTOPOLIS}, + {FLAG_HIDE_SLEEPING_MON_SEAFLOOR_CAVERN, FLAG_UNKNOWN_2E1, FLAG_UNKNOWN_2EC, FLAG_HIDE_POOCHYENA_ROUTE101, FLAG_HIDE_MACHOKE_MOVER_1, FLAG_HIDE_MACHOKE_MOVER_2, 0x305, FLAG_HIDE_PEEKO_RUSTURF_TUNNEL, FLAG_HIDE_PEEKO_BRINEY_HOUSE}, + {FLAG_HIDE_MOM_LITTLEROOT, FLAG_HIDE_MOM_UPSTAIRS, FLAG_HIDE_BRENDAN_MOM_DOWNSTAIRS, FLAG_HIDE_MAY_MOM_DOWNSTAIRS, FLAG_UNKNOWN_30E, FLAG_UNKNOWN_30F, FLAG_HIDE_RIVAL_ON_BIKE_ROUTE110, FLAG_HIDE_RIVAL_ROUTE119_ON_BIKE, FLAG_HIDE_RIVAL_LAVARIDGE_2}, + {FLAG_HIDE_MR_BRINEY_ROUTE104, FLAG_HIDE_MR_BRINEY_ROUTE104_HOUSE, FLAG_HIDE_MR_BRINEY_DEWFORD_TOWN, FLAG_HIDE_MR_BRINEY_ROUTE109, FLAG_UNKNOWN_34F, FLAG_HIDE_BRINEY_SLATEPORT_SHIPYARD, FLAG_HIDE_BRINEY_RUSTURF_TUNNEL, FLAG_HIDE_BRINEY_ROUTE116, FLAG_HIDE_BRINEY_AND_PEEKO_SS_TIDAL}, + {FLAG_HIDE_RIVAL_BIRCH_LAB, FLAG_HIDE_RIVAL_CHAMPIONS_ROOM, FLAG_HIDE_RIVAL_RUSTBORO, FLAG_HIDE_RIVAL_LILYCOVE_MART, FLAG_HIDE_RIVAL_ROUTE103, FLAG_HIDE_RIVAL_ROUTE110, FLAG_HIDE_RIVAL_ROUTE119, FLAG_HIDE_RIVAL_LAVARIDGE_1, FLAG_HIDE_RIVAL_OLDALE_TOWN} +}; + +static const u8 gUnknown_Debug_083C27BC[] = _("FEひでんわざ/デボンかんれん"); +static const u8 gUnknown_Debug_083C27CC[] = _("FEだいじなアイテムPART1"); +static const u8 gUnknown_Debug_083C27DC[] = _("そのた1"); +static const u8 gUnknown_Debug_083C27E1[] = _("MITSURU/DOOR"); +static const u8 gUnknown_Debug_083C27EE[] = _("カラクリやしき10のやじるし/GYM07"); +static const u8 gUnknown_Debug_083C2803[] = _("SUPPORT/そのた4"); +static const u8 gUnknown_Debug_083C2810[] = _("DAISUKI/そのた5"); +static const u8 gUnknown_Debug_083C281D[] = _("そのた2"); +static const u8 gUnknown_Debug_083C2822[] = _("そのた6"); + +static const struct MenuAction gUnknown_Debug_083C2828[] = { + {gUnknown_Debug_083C27BC, debug_sub_808C3B0}, + {gUnknown_Debug_083C27CC, debug_sub_808C408}, + {gUnknown_Debug_083C27DC, debug_sub_808C460}, + {gUnknown_Debug_083C27E1, debug_sub_808C4B8}, + {gUnknown_Debug_083C27EE, debug_sub_808C510}, + {gUnknown_Debug_083C2803, debug_sub_808C568}, + {gUnknown_Debug_083C2810, debug_sub_808C5C0}, + {gUnknown_Debug_083C281D, debug_sub_808C618}, + {gUnknown_Debug_083C2822, debug_sub_808C670} +}; + +static const u8 gUnknown_Debug_083C2870[] = _("FEーHWAZA01ーGET"); +static const u8 gUnknown_Debug_083C287F[] = _("FEーHWAZA02ー01ーFIELDR119"); +static const u8 gUnknown_Debug_083C2897[] = _("FEーHWAZA03ーGET"); +static const u8 gUnknown_Debug_083C28A6[] = _("FEーHWAZA04ー01ーT106ーR0201"); +static const u8 gUnknown_Debug_083C28BF[] = _("FEーHWAZA05ー01ーCAVEーD0502"); +static const u8 gUnknown_Debug_083C28D8[] = _("FEーHWAZA04ー01ーC103ーR0301"); +static const u8 gUnknown_Debug_083C28F1[] = _("FEーDEBONーNIMOTSUーRETURN"); +static const u8 gUnknown_Debug_083C2909[] = _("FEーDEBONー01ーFIELDーC104"); +static const u8 gUnknown_Debug_083C2920[] = _("FEーDEBONー02ーFIELDーC104"); + +static const struct MenuAction gUnknown_Debug_083C2938[] = { + {gUnknown_Debug_083C2870, DummyMenuAction}, + {gUnknown_Debug_083C287F, DummyMenuAction}, + {gUnknown_Debug_083C2897, DummyMenuAction}, + {gUnknown_Debug_083C28A6, DummyMenuAction}, + {gUnknown_Debug_083C28BF, DummyMenuAction}, + {gUnknown_Debug_083C28D8, DummyMenuAction}, + {gUnknown_Debug_083C28F1, DummyMenuAction}, + {gUnknown_Debug_083C2909, DummyMenuAction}, + {gUnknown_Debug_083C2920, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C2980[] = _("FEーCYCLEー01ーP01ーP01ーC103ーR0201"); +static const u8 gUnknown_Debug_083C299F[] = _("FEーSCOOPー01ーP01ーFIELDーR115"); +static const u8 gUnknown_Debug_083C29BA[] = _("FEーROPEー01ーP01ーFIELDーR114"); +static const u8 gUnknown_Debug_083C29D4[] = _("FEーKAMAー01ーP01ーFIELDーR119"); +static const u8 gUnknown_Debug_083C29EE[] = _("FEーZYOUROーGET"); +static const u8 gUnknown_Debug_083C29FC[] = _("FEーCUBECASEーGET"); +static const u8 gUnknown_Debug_083C2A0C[] = _("FEーBORONOTURIZAOーGET"); +static const u8 gUnknown_Debug_083C2A21[] = _("FEーIITURIZAOーGET"); +static const u8 gUnknown_Debug_083C2A32[] = _("FEーSUGOITURIZAOーGET"); + +static const struct MenuAction gUnknown_Debug_083C2A48[] = { + {gUnknown_Debug_083C2980, DummyMenuAction}, + {gUnknown_Debug_083C299F, DummyMenuAction}, + {gUnknown_Debug_083C29BA, DummyMenuAction}, + {gUnknown_Debug_083C29D4, DummyMenuAction}, + {gUnknown_Debug_083C29EE, DummyMenuAction}, + {gUnknown_Debug_083C29FC, DummyMenuAction}, + {gUnknown_Debug_083C2A0C, DummyMenuAction}, + {gUnknown_Debug_083C2A21, DummyMenuAction}, + {gUnknown_Debug_083C2A32, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C2A90[] = _("FEーBOSSー01ーCAVEーD0701"); +static const u8 gUnknown_Debug_083C2AA6[] = _("FEーTANTIKIーRETURN"); +static const u8 gUnknown_Debug_083C2AB8[] = _("FEーPOKE1ー01ーCAVEーD1111"); +static const u8 gUnknown_Debug_083C2ACF[] = _("FEーPOKE1ー01ーCAVEーD1206"); +static const u8 gUnknown_Debug_083C2AE6[] = _("FEーSHOPー01ーC104ーFS01"); +static const u8 gUnknown_Debug_083C2AFB[] = _("FEーHUNENOTIKETTーGET"); +static const u8 gUnknown_Debug_083C2B0F[] = _("FEーKAKUREー01ーFIELDーC105"); +static const u8 gUnknown_Debug_083C2B27[] = _("FEーKASEKIーRETURN"); +static const u8 gUnknown_Debug_083C2B38[] = _("FEーWINー01ーSPーSHIP01"); + +static const struct MenuAction gUnknown_Debug_083C2B4C[] = { + {gUnknown_Debug_083C2A90, DummyMenuAction}, + {gUnknown_Debug_083C2AA6, DummyMenuAction}, + {gUnknown_Debug_083C2AB8, DummyMenuAction}, + {gUnknown_Debug_083C2ACF, DummyMenuAction}, + {gUnknown_Debug_083C2AE6, DummyMenuAction}, + {gUnknown_Debug_083C2AFB, DummyMenuAction}, + {gUnknown_Debug_083C2B0F, DummyMenuAction}, + {gUnknown_Debug_083C2B27, DummyMenuAction}, + {gUnknown_Debug_083C2B38, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C2B94[] = _("FEーMITSURUー01ーT106ーR0201"); +static const u8 gUnknown_Debug_083C2BAD[] = _("FEーMITSURUー01ーCAVEーD1301"); +static const u8 gUnknown_Debug_083C2BC6[] = _("FEーMITSURUー02ーFIELDーC103"); +static const u8 gUnknown_Debug_083C2BDF[] = _("FEーMITSURUー02ーT106ーR0201"); +static const u8 gUnknown_Debug_083C2BF8[] = _("FEーMITSURUー01ーFIELDーC103"); +static const u8 gUnknown_Debug_083C2C11[] = _("FEーDOORーOPENー01ーCAVEーD1712"); +static const u8 gUnknown_Debug_083C2C2C[] = _("FEーDOORーOPENー02ーCAVEーD1712"); +static const u8 gUnknown_Debug_083C2C47[] = _("FEーDOORーOPENー04ーCAVEーD1712"); +static const u8 gUnknown_Debug_083C2C62[] = _("FEーDOORーOPENー06ーCAVEーD1712"); + +static const struct MenuAction gUnknown_Debug_083C2C80[] = { + {gUnknown_Debug_083C2B94, DummyMenuAction}, + {gUnknown_Debug_083C2BAD, DummyMenuAction}, + {gUnknown_Debug_083C2BC6, DummyMenuAction}, + {gUnknown_Debug_083C2BDF, DummyMenuAction}, + {gUnknown_Debug_083C2BF8, DummyMenuAction}, + {gUnknown_Debug_083C2C11, DummyMenuAction}, + {gUnknown_Debug_083C2C2C, DummyMenuAction}, + {gUnknown_Debug_083C2C47, DummyMenuAction}, + {gUnknown_Debug_083C2C62, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C2CC8[] = _("FEーKARAKURI10ーSWITCHー01"); +static const u8 gUnknown_Debug_083C2CE0[] = _("FEーKARAKURI10ーSWITCHー02"); +static const u8 gUnknown_Debug_083C2CF8[] = _("FEーKARAKURI10ーSWITCHー03"); +static const u8 gUnknown_Debug_083C2D10[] = _("FEーKARAKURI10ーSWITCHー04"); +static const u8 gUnknown_Debug_083C2D28[] = _("FEーKARAKURI10ーSWITCHー05"); +static const u8 gUnknown_Debug_083C2D40[] = _("FEーGYM07ーSWITCHー01"); +static const u8 gUnknown_Debug_083C2D53[] = _("FEーGYM07ーSWITCHー02"); +static const u8 gUnknown_Debug_083C2D66[] = _("FEーGYM07ーSWITCHー03"); +static const u8 gUnknown_Debug_083C2D79[] = _("FEーGYM07ーSWITCHー04"); + +static const struct MenuAction gUnknown_Debug_083C2D8C[] = { + {gUnknown_Debug_083C2CC8, DummyMenuAction}, + {gUnknown_Debug_083C2CE0, DummyMenuAction}, + {gUnknown_Debug_083C2CF8, DummyMenuAction}, + {gUnknown_Debug_083C2D10, DummyMenuAction}, + {gUnknown_Debug_083C2D28, DummyMenuAction}, + {gUnknown_Debug_083C2D40, DummyMenuAction}, + {gUnknown_Debug_083C2D53, DummyMenuAction}, + {gUnknown_Debug_083C2D66, DummyMenuAction}, + {gUnknown_Debug_083C2D79, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C2DD4[] = _("FEーSUPPORTー01ーFIELDーR103"); +static const u8 gUnknown_Debug_083C2DED[] = _("FEーSUPPORTー01ーFIELDーC106"); +static const u8 gUnknown_Debug_083C2E06[] = _("FEーSUPPORTー01ーFIELDーR104"); +static const u8 gUnknown_Debug_083C2E1F[] = _("FEーSUPPORTー02ーFIELDーC106"); +static const u8 gUnknown_Debug_083C2E38[] = _("FEーSUPPORTー01ーT101ーR0202"); +static const u8 gUnknown_Debug_083C2E51[] = _("FEーMAMAー01ーP01ーT101ーR0101"); +static const u8 gUnknown_Debug_083C2E6B[] = _("FEーCLOCKーSET"); +static const u8 gUnknown_Debug_083C2E78[] = _("FEーODAMAKIー01ーP01ーT101ーR03"); +static const u8 gUnknown_Debug_083C2E93[] = _("FEーPAPAー01ーP01ーC101ーR0201"); + +static const struct MenuAction gUnknown_Debug_083C2EB0[] = { + {gUnknown_Debug_083C2DD4, DummyMenuAction}, + {gUnknown_Debug_083C2DED, DummyMenuAction}, + {gUnknown_Debug_083C2E06, DummyMenuAction}, + {gUnknown_Debug_083C2E1F, DummyMenuAction}, + {gUnknown_Debug_083C2E38, DummyMenuAction}, + {gUnknown_Debug_083C2E51, DummyMenuAction}, + {gUnknown_Debug_083C2E6B, DummyMenuAction}, + {gUnknown_Debug_083C2E78, DummyMenuAction}, + {gUnknown_Debug_083C2E93, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C2EF8[] = _("FEーDAISUKIーGOODSーFLAG01"); +static const u8 gUnknown_Debug_083C2F10[] = _("FEーDAISUKIーGOODSーFLAG02"); +static const u8 gUnknown_Debug_083C2F28[] = _("FEーDAISUKIーGOODSーFLAG03"); +static const u8 gUnknown_Debug_083C2F40[] = _("FEーDAISUKIーGOODSーFLAG04"); +static const u8 gUnknown_Debug_083C2F58[] = _("FEーDAISUKIーGOODSーFLAG05"); +static const u8 gUnknown_Debug_083C2F70[] = _("FEーBASHAー01ーP01ーFIELDーC101ー"); +static const u8 gUnknown_Debug_083C2F8C[] = _("FEーBASHAー01ーP02ーFIELDーC101ー"); +static const u8 gUnknown_Debug_083C2FA8[] = _("FEーBALLー01ーP01ーSPーCONTEST"); +static const u8 gUnknown_Debug_083C2FC2[] = _("FEーWOMAN2ー01ーP01ーT101ーR0201"); + +static const struct MenuAction gUnknown_Debug_083C2FE0[] = { + {gUnknown_Debug_083C2EF8, DummyMenuAction}, + {gUnknown_Debug_083C2F10, DummyMenuAction}, + {gUnknown_Debug_083C2F28, DummyMenuAction}, + {gUnknown_Debug_083C2F40, DummyMenuAction}, + {gUnknown_Debug_083C2F58, DummyMenuAction}, + {gUnknown_Debug_083C2F70, DummyMenuAction}, + {gUnknown_Debug_083C2F8C, DummyMenuAction}, + {gUnknown_Debug_083C2FA8, DummyMenuAction}, + {gUnknown_Debug_083C2FC2, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C3028[] = _("FEーSOUKOーOPENーCAVEーD1704"); +static const u8 gUnknown_Debug_083C3041[] = _("FEーSORAISIー01ーCAVEーD0101"); +static const u8 gUnknown_Debug_083C305A[] = _("FEーMAYUMIー01ーーR114ーR0201"); +static const u8 gUnknown_Debug_083C3073[] = _("FEーKUSUNOKIー01ーC102ーR0601"); +static const u8 gUnknown_Debug_083C308D[] = _("FEーOLDWOMAN1ー01ーCAVEーD0808"); +static const u8 gUnknown_Debug_083C30A8[] = _("FEーTRAINERM1ー01ーC109ーR0206"); +static const u8 gUnknown_Debug_083C30C3[] = _("FEーSOONANOーTAMAGOーGET"); +static const u8 gUnknown_Debug_083C30D9[] = _("FEーDASHーSHOESーGET"); +static const u8 gUnknown_Debug_083C30EB[] = _("FEーDEBONSUKOOPUーGET"); + +static const struct MenuAction gUnknown_Debug_083C3100[] = { + {gUnknown_Debug_083C3028, DummyMenuAction}, + {gUnknown_Debug_083C3041, DummyMenuAction}, + {gUnknown_Debug_083C305A, DummyMenuAction}, + {gUnknown_Debug_083C3073, DummyMenuAction}, + {gUnknown_Debug_083C308D, DummyMenuAction}, + {gUnknown_Debug_083C30A8, DummyMenuAction}, + {gUnknown_Debug_083C30C3, DummyMenuAction}, + {gUnknown_Debug_083C30D9, DummyMenuAction}, + {gUnknown_Debug_083C30EB, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C3148[] = _("FEーSTUDYM1ー01ーP01ーT101R0301"); +static const u8 gUnknown_Debug_083C3164[] = _("FEーWORKERM1ー01ーC103ーR0201"); +static const u8 gUnknown_Debug_083C317E[] = _("FEーHIMITSUーGET"); +static const u8 gUnknown_Debug_083C318D[] = _(""); +static const u8 gUnknown_Debug_083C318E[] = _(""); +static const u8 gUnknown_Debug_083C318F[] = _(""); +static const u8 gUnknown_Debug_083C3190[] = _(""); +static const u8 gUnknown_Debug_083C3191[] = _(""); +static const u8 gUnknown_Debug_083C3192[] = _(""); + +static const struct MenuAction gUnknown_Debug_083C3194[] = { + {gUnknown_Debug_083C3148, DummyMenuAction}, + {gUnknown_Debug_083C3164, DummyMenuAction}, + {gUnknown_Debug_083C317E, DummyMenuAction}, + {gUnknown_Debug_083C318D, DummyMenuAction}, + {gUnknown_Debug_083C318E, DummyMenuAction}, + {gUnknown_Debug_083C318F, DummyMenuAction}, + {gUnknown_Debug_083C3190, DummyMenuAction}, + {gUnknown_Debug_083C3191, DummyMenuAction}, + {gUnknown_Debug_083C3192, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C31DC[] = {9, 9, 9, 9, 9, 9, 9, 9, 3}; + +static const u16 gUnknown_Debug_83C31E6[][9] = { + {FLAG_RECEIVED_HM01, FLAG_RECEIVED_HM02, FLAG_RECEIVED_HM03, FLAG_RECEIVED_HM04, FLAG_RECEIVED_HM05, FLAG_RECEIVED_HM06, FLAG_RETURNED_DEVON_GOODS, FLAG_DEVON_GOODS_STOLEN, FLAG_RECOVERED_DEVON_GOODS}, + {FLAG_RECEIVED_BIKE, 0x05B, 0x05C, 0x05D, FLAG_RECEIVED_WAILMER_PAIL, FLAG_RECEIVED_POKEBLOCK_CASE, FLAG_RECEIVED_OLD_ROD, FLAG_RECEIVED_GOOD_ROD, FLAG_RECEIVED_SUPER_ROD}, + {FLAG_DEFEATED_EVIL_TEAM_MT_CHIMNEY, FLAG_EXCHANGED_SCANNER, FLAG_LEGEND_ESCAPED_SEAFLOOR_CAVERN, FLAG_LEGENDARY_BATTLE_COMPLETED, FLAG_RECEIVED_REPEAT_BALL, FLAG_RECEIVED_SS_TICKET, FLAG_KECLEON_FLED_FORTREE, FLAG_RECEIVED_FOSSIL_MON, FLAG_DEFEATED_SS_TIDAL_TRAINERS}, + {0x06C, FLAG_DEFEATED_WALLY_VICTORY_ROAD, FLAG_DEFEATED_WALLY_MAUVILLE, FLAG_WALLY_SPEECH, FLAG_DECLINED_WALLY_BATTLE_MAUVILLE, FLAG_USED_ROOM_1_KEY, FLAG_USED_ROOM_2_KEY, FLAG_USED_ROOM_4_KEY, FLAG_USED_ROOM_6_KEY}, + {FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_1, FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_2, FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_3, FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_4, FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_5, FLAG_MOSSDEEP_GYM_SWITCH_1, FLAG_MOSSDEEP_GYM_SWITCH_2, FLAG_MOSSDEEP_GYM_SWITCH_3, FLAG_MOSSDEEP_GYM_SWITCH_4}, + {FLAG_DEFEATED_RIVAL_ROUTE103, FLAG_DECLINED_RIVAL_BATTLE_LILYCOVE, FLAG_MET_RIVAL_RUSTBORO, FLAG_MET_RIVAL_LILYCOVE, FLAG_MET_RIVAL_IN_HOUSE_AFTER_LILYCOVE, 0x050, FLAG_SET_WALL_CLOCK, FLAG_RESCUED_BIRCH, 0x055}, + {FLAG_RECEIVED_RED_SCARF, FLAG_RECEIVED_BLUE_SCARF, FLAG_RECEIVED_PINK_SCARF, FLAG_RECEIVED_GREEN_SCARF, FLAG_RECEIVED_YELLOW_SCARF, 0x053, 0x054, FLAG_LINK_CONTEST_ROOM_POKEBALL, FLAG_MET_RIVAL_MOM}, + {FLAG_USED_STORAGE_KEY, FLAG_MET_PROF_COSMO, FLAG_RECEIVED_DOLL_LANETTE, FLAG_EVIL_TEAM_ESCAPED_STERN_SPOKE, FLAG_RETURNED_RED_OR_BLUE_ORB, FLAG_ENTERED_ELITE_FOUR, FLAG_RECEIVED_LAVARIDGE_EGG, FLAG_RECEIVED_RUNNING_SHOES, FLAG_RECEIVED_DEVON_SCOPE}, + {FLAG_BIRCH_AIDE_MET, FLAG_DECLINED_BIKE, FLAG_RECEIVED_SECRET_POWER} +}; + +static const u8 gUnknown_Debug_083C3288[] = _("CYCLEかんれん"); +static const u8 gUnknown_Debug_083C3292[] = _("おおきさくらべ"); +static const u8 gUnknown_Debug_083C329A[] = _("カウンタ"); +static const u8 gUnknown_Debug_083C329F[] = _("そのた1"); +static const u8 gUnknown_Debug_083C32A4[] = _("そのた2"); + +static const struct MenuAction gUnknown_Debug_083C32AC[] = { + {gUnknown_Debug_083C3288, debug_sub_808E400}, + {gUnknown_Debug_083C3292, debug_sub_808E458}, + {gUnknown_Debug_083C329A, debug_sub_808E4B0}, + {gUnknown_Debug_083C329F, debug_sub_808E508}, + {gUnknown_Debug_083C32A4, debug_sub_808E560} +}; + +static const u8 gUnknown_Debug_083C32D4[] = _("WKーCYCLEーROADーHIT"); +static const u8 gUnknown_Debug_083C32E6[] = _("WKーCYCLEーROADーTIMエ1"); +static const u8 gUnknown_Debug_083C32FA[] = _("WKーCYCLEーROADーTIMエ2"); + +static const u8 gUnknown_Debug_083C330E[] = _("WKーSIZEーKINOKOKOーOYAJI"); +static const u8 gUnknown_Debug_083C3325[] = _("WKーSIZEーNAMAZOーOYAJI"); + +static const u8 gUnknown_Debug_083C333A[] = _("WKーSPRAYーCOUNT"); +static const u8 gUnknown_Debug_083C3349[] = _("WKーICEーCOUNT"); +static const u8 gUnknown_Debug_083C3356[] = _("WKーASHーGATHERーCOUNT"); +static const u8 gUnknown_Debug_083C336A[] = _("WKーCRUISEーCOUNT"); +static const u8 gUnknown_Debug_083C337A[] = _("WKーFRIENDLYーSTEPーCOUNT"); +static const u8 gUnknown_Debug_083C3391[] = _("WKーPOISONーSTEPーCOUNT"); + +static const u8 gUnknown_Debug_083C33A6[] = _("WKRECYCLEーGOODS"); +static const u8 gUnknown_Debug_083C33B6[] = _("WKーFIRSTーPOKE"); +static const u8 gUnknown_Debug_083C33C4[] = _("WKーMABOROSIRNDーH"); +static const u8 gUnknown_Debug_083C33D5[] = _("WKーMABOROSIRNDーL"); +static const u8 gUnknown_Debug_083C33E6[] = _("EVーONEーDAYーWORK"); +static const u8 gUnknown_Debug_083C33F6[] = _("EVーFANWORK"); +static const u8 gUnknown_Debug_083C3401[] = _("EVーFANTIME"); +static const u8 gUnknown_Debug_083C340C[] = _("WKーKARAKURIーLEVEL"); +static const u8 gUnknown_Debug_083C341E[] = _("WKーPOKELOTーPRIZE"); + +static const u8 gUnknown_Debug_083C342F[] = _("WKーSPECIALーZUKN"); +static const u8 gUnknown_Debug_083C343F[] = _("WKーHYOUKAーDAYS"); +static const u8 gUnknown_Debug_083C344E[] = _("WKーPOKELOTーRND1"); +static const u8 gUnknown_Debug_083C345E[] = _("WKーPOKELOTーRND2"); +static const u8 gUnknown_Debug_083C346E[] = _("WKーBASEーMAPNO"); + +static const struct MenuAction gUnknown_Debug_083C347C[] = { + {gUnknown_Debug_083C32D4, DummyMenuAction}, + {gUnknown_Debug_083C32E6, DummyMenuAction}, + {gUnknown_Debug_083C32FA, DummyMenuAction} +}; + +static const struct MenuAction gUnknown_Debug_083C3494[] = { + {gUnknown_Debug_083C330E, DummyMenuAction}, + {gUnknown_Debug_083C3325, DummyMenuAction} +}; + +static const struct MenuAction gUnknown_Debug_083C34A4[] = { + {gUnknown_Debug_083C333A, DummyMenuAction}, + {gUnknown_Debug_083C3349, DummyMenuAction}, + {gUnknown_Debug_083C3356, DummyMenuAction}, + {gUnknown_Debug_083C336A, DummyMenuAction}, + {gUnknown_Debug_083C337A, DummyMenuAction}, + {gUnknown_Debug_083C3391, DummyMenuAction} +}; + +static const struct MenuAction gUnknown_Debug_083C34D4[] = { + {gUnknown_Debug_083C33A6, DummyMenuAction}, + {gUnknown_Debug_083C33B6, DummyMenuAction}, + {gUnknown_Debug_083C33C4, DummyMenuAction}, + {gUnknown_Debug_083C33D5, DummyMenuAction}, + {gUnknown_Debug_083C33E6, DummyMenuAction}, + {gUnknown_Debug_083C33F6, DummyMenuAction}, + {gUnknown_Debug_083C3401, DummyMenuAction}, + {gUnknown_Debug_083C340C, DummyMenuAction}, + {gUnknown_Debug_083C341E, DummyMenuAction} +}; + +static const struct MenuAction gUnknown_Debug_083C351C[] = { + {gUnknown_Debug_083C342F, DummyMenuAction}, + {gUnknown_Debug_083C343F, DummyMenuAction}, + {gUnknown_Debug_083C344E, DummyMenuAction}, + {gUnknown_Debug_083C345E, DummyMenuAction}, + {gUnknown_Debug_083C346E, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C3544[] = {3, 2, 6, 9, 5}; + +static const u16 gUnknown_Debug_083C354A[][9] = { + {VAR_CYCLING_ROAD_RECORD_COLLISIONS, VAR_CYCLING_ROAD_RECORD_TIME_L, VAR_CYCLING_ROAD_RECORD_TIME_H}, + {VAR_SHROOMISH_SIZE_RECORD, VAR_BARBOACH_SIZE_RECORD}, + {VAR_REPEL_STEP_COUNT, VAR_ICE_STEP_COUNT, VAR_ASH_GATHER_COUNT, VAR_CRUISE_STEP_COUNT, VAR_HAPPINESS_STEP_COUNTER, VAR_POISON_STEP_COUNTER}, + {VAR_RECYCLE_GOODS, VAR_STARTER_MON, VAR_MIRAGE_RND_H, VAR_MIRAGE_RND_L, VAR_DAYS, VAR_FANCLUB_UNKNOWN_1, VAR_FANCLUB_UNKNOWN_2, VAR_TRICK_HOUSE_ROOMS_COMPLETED, VAR_LOTTERY_PRIZE}, + {VAR_NATIONAL_DEX, VAR_BIRCH_STATE, VAR_LOTTERY_RND_L, VAR_LOTTERY_RND_H, VAR_SECRET_BASE_MAP} +}; + +static const u8 gUnknown_Debug_083C35A4[] = _("OBJCHRWORK0ー8"); +static const u8 gUnknown_Debug_083C35B2[] = _("OBJCHRWORK9ー15"); + +static const struct MenuAction gUnknown_Debug_083C35C4[] = { + {gUnknown_Debug_083C35A4, debug_sub_808E9A0}, + {gUnknown_Debug_083C35B2, debug_sub_808E9F8} +}; + +static const u8 gUnknown_Debug_083C35D4[] = _("OBJCHRWORK1"); +static const u8 gUnknown_Debug_083C35E0[] = _("OBJCHRWORK2"); +static const u8 gUnknown_Debug_083C35EC[] = _("OBJCHRWORK3"); +static const u8 gUnknown_Debug_083C35F8[] = _("OBJCHRWORK4"); +static const u8 gUnknown_Debug_083C3604[] = _("OBJCHRWORK5"); +static const u8 gUnknown_Debug_083C3610[] = _("OBJCHRWORK6"); +static const u8 gUnknown_Debug_083C361C[] = _("OBJCHRWORK7"); +static const u8 gUnknown_Debug_083C3628[] = _("OBJCHRWORK8"); +static const u8 gUnknown_Debug_083C3634[] = _("OBJCHRWORK9"); + +static const u8 gUnknown_Debug_083C3640[] = _("OBJCHRWORK10"); +static const u8 gUnknown_Debug_083C364D[] = _("OBJCHRWORK11"); +static const u8 gUnknown_Debug_083C365A[] = _("OBJCHRWORK12"); +static const u8 gUnknown_Debug_083C3667[] = _("OBJCHRWORK13"); +static const u8 gUnknown_Debug_083C3674[] = _("OBJCHRWORK14"); +static const u8 gUnknown_Debug_083C3681[] = _("OBJCHRWORK15"); +static const u8 gUnknown_Debug_083C368E[] = _("OBJCHRWORK16"); + +static const struct MenuAction gUnknown_Debug_083C369C[] = { + {gUnknown_Debug_083C35D4, DummyMenuAction}, + {gUnknown_Debug_083C35E0, DummyMenuAction}, + {gUnknown_Debug_083C35EC, DummyMenuAction}, + {gUnknown_Debug_083C35F8, DummyMenuAction}, + {gUnknown_Debug_083C3604, DummyMenuAction}, + {gUnknown_Debug_083C3610, DummyMenuAction}, + {gUnknown_Debug_083C361C, DummyMenuAction}, + {gUnknown_Debug_083C3628, DummyMenuAction}, + {gUnknown_Debug_083C3634, DummyMenuAction} +}; + +static const struct MenuAction gUnknown_Debug_083C36E4[] = { + {gUnknown_Debug_083C3640, DummyMenuAction}, + {gUnknown_Debug_083C364D, DummyMenuAction}, + {gUnknown_Debug_083C365A, DummyMenuAction}, + {gUnknown_Debug_083C3667, DummyMenuAction}, + {gUnknown_Debug_083C3674, DummyMenuAction}, + {gUnknown_Debug_083C3681, DummyMenuAction}, + {gUnknown_Debug_083C368E, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C371C[] = {9, 7}; + +static const u16 gUnknown_Debug_083C371E[][9] = { + {VAR_OBJ_GFX_ID_0, VAR_OBJ_GFX_ID_1, VAR_OBJ_GFX_ID_2, VAR_OBJ_GFX_ID_3, VAR_OBJ_GFX_ID_4, VAR_OBJ_GFX_ID_5, VAR_OBJ_GFX_ID_6, VAR_OBJ_GFX_ID_7, VAR_OBJ_GFX_ID_8}, + {VAR_OBJ_GFX_ID_9, VAR_OBJ_GFX_ID_A, VAR_OBJ_GFX_ID_B, VAR_OBJ_GFX_ID_C, VAR_OBJ_GFX_ID_D, VAR_OBJ_GFX_ID_E, VAR_OBJ_GFX_ID_F} +}; + +static const u8 gUnknown_Debug_083C3742[] = _("SP"); +static const u8 gUnknown_Debug_083C3745[] = _("ルーム R110 PART1/カラクリ"); +static const u8 gUnknown_Debug_083C3759[] = _("ルーム R110 PART2"); +static const u8 gUnknown_Debug_083C3768[] = _("ルーム ロード"); +static const u8 gUnknown_Debug_083C3770[] = _("ソノタ1"); +static const u8 gUnknown_Debug_083C3775[] = _("ソノタ2"); + +static const struct MenuAction sMenuActions_ControlWorks_SaveWorkPart2[] = { + {gUnknown_Debug_083C3742, ControlWorks_SaveWorkPart2_SP_InitSubsubmenu}, + {gUnknown_Debug_083C3745, ControlWorks_SaveWorkPart2_RoomR110Part1TrickHouse_InitSubsubmenu}, + {gUnknown_Debug_083C3759, ControlWorks_SaveWorkPart2_RoomR110Part2_InitSubsubmenu}, + {gUnknown_Debug_083C3768, ControlWorks_SaveWorkPart2_RoomLoad_InitSubsubmenu}, + {gUnknown_Debug_083C3770, debug_sub_808E1B4}, + {gUnknown_Debug_083C3775, debug_sub_808E20C} +}; + +static const u8 gUnknown_Debug_083C37AC[] = _("WKーSCENEーSPーCONTEST"); +static const u8 gUnknown_Debug_083C37C0[] = _("WKーSCENEーSPーPC"); +static const u8 gUnknown_Debug_083C37CF[] = _("WKーSCENEーSPーCONTEST03"); +static const u8 gUnknown_Debug_083C37E5[] = _("WKーSCENEーSPーCONTESTITEM"); +static const u8 gUnknown_Debug_083C37FD[] = _("WKーSCENEーSPーOPENING"); +static const u8 gUnknown_Debug_083C3811[] = _("WKーSCENEーSPーSHIP01"); +static const u8 gUnknown_Debug_083C3824[] = _(""); +static const u8 gUnknown_Debug_083C3825[] = _(""); +static const u8 gUnknown_Debug_083C3826[] = _(""); + +static const u8 gUnknown_Debug_083C3827[] = _("WKーSCENEーR110ーR0101"); +static const u8 gUnknown_Debug_083C383B[] = _("WKーSCENEーR110ーR0102"); +static const u8 gUnknown_Debug_083C384F[] = _("WKーSCENEーR110ーR0103"); +static const u8 gUnknown_Debug_083C3863[] = _("WKーKARAKURIーDAIOU"); +static const u8 gUnknown_Debug_083C3875[] = _("WKーSCENEーSHISEN"); +static const u8 gUnknown_Debug_083C3885[] = _(""); +static const u8 gUnknown_Debug_083C3886[] = _(""); +static const u8 gUnknown_Debug_083C3887[] = _(""); +static const u8 gUnknown_Debug_083C3888[] = _(""); + +static const u8 gUnknown_Debug_083C3889[] = _("WKーSCENEーR110ーR0104"); +static const u8 gUnknown_Debug_083C389D[] = _("WKーSCENEーR110ーR0105"); +static const u8 gUnknown_Debug_083C38B1[] = _("WKーSCENEーR110ーR0106"); +static const u8 gUnknown_Debug_083C38C5[] = _("WKーSCENEーR110ーR0107"); +static const u8 gUnknown_Debug_083C38D9[] = _("WKーSCENEーR110ーR0108"); +static const u8 gUnknown_Debug_083C38ED[] = _("WKーSCENEーR110ーR0109"); +static const u8 gUnknown_Debug_083C3901[] = _("WKーSCENEーR110ーR0110"); +static const u8 gUnknown_Debug_083C3915[] = _("WKーSCENEーR110ーR0111"); +static const u8 gUnknown_Debug_083C3929[] = _("WKーSCENEー02ーR110ーR0110"); + +static const u8 gUnknown_Debug_083C3940[] = _("WKーSCENEーR104ーR0101"); +static const u8 gUnknown_Debug_083C3954[] = _("WKーSCENEーR113ーR0101"); +static const u8 gUnknown_Debug_083C3968[] = _(""); +static const u8 gUnknown_Debug_083C3969[] = _(""); +static const u8 gUnknown_Debug_083C396A[] = _(""); +static const u8 gUnknown_Debug_083C396B[] = _(""); +static const u8 gUnknown_Debug_083C396C[] = _(""); +static const u8 gUnknown_Debug_083C396D[] = _(""); +static const u8 gUnknown_Debug_083C396E[] = _(""); + +static const u8 gUnknown_Debug_083C396F[] = _("WKーSCENEーBASEーGDOODS"); +static const u8 gUnknown_Debug_083C3984[] = _("WKーSCENEーHAGIーFUNE"); +static const u8 gUnknown_Debug_083C3997[] = _("WKーSCENEーFUNEーPOS"); +static const u8 gUnknown_Debug_083C39A9[] = _("WKーSCENEーBASEーMAKE"); +static const u8 gUnknown_Debug_083C39BC[] = _("WKーSCENEーARTISTーC106ーR"); +static const u8 gUnknown_Debug_083C39D3[] = _("WKーSCENEーPOKEーLEAGUE"); +static const u8 gUnknown_Debug_083C39E8[] = _("WKーSCENEーROPEWAY"); +static const u8 gUnknown_Debug_083C39F9[] = _("WKーSCENEーSAFARIーZONE"); +static const u8 gUnknown_Debug_083C3A0E[] = _("WKーSCENEーCYCLEーROAD"); + +static const u8 gUnknown_Debug_083C3A22[] = _("WKーSCENEーR119ーTENKI"); +static const u8 gUnknown_Debug_083C3A36[] = _("WKーSCENEー01ーC102ーR0401"); +static const u8 gUnknown_Debug_083C3A4D[] = _("WKーFUTAGOー01ーFIELDーR104"); +static const u8 gUnknown_Debug_083C3A65[] = _("WKーSCENEーBATTLEーTOWER"); +static const u8 gUnknown_Debug_083C3A7B[] = _("WKーSCENEーTRーHOUSE"); +static const u8 gUnknown_Debug_083C3A8D[] = _("WKーKASEKIーTYPE"); +static const u8 gUnknown_Debug_083C3A9C[] = _(""); +static const u8 gUnknown_Debug_083C3A9D[] = _(""); +static const u8 gUnknown_Debug_083C3A9E[] = _(""); + +static const struct MenuAction gUnknown_Debug_083C3AA0[] = { + {gUnknown_Debug_083C37AC, DummyMenuAction}, + {gUnknown_Debug_083C37C0, DummyMenuAction}, + {gUnknown_Debug_083C37CF, DummyMenuAction}, + {gUnknown_Debug_083C37E5, DummyMenuAction}, + {gUnknown_Debug_083C37FD, DummyMenuAction}, + {gUnknown_Debug_083C3811, DummyMenuAction}, + {gUnknown_Debug_083C3824, DummyMenuAction}, + {gUnknown_Debug_083C3825, DummyMenuAction} +}; + +static const struct MenuAction gUnknown_Debug_83C3AE0[] = { + {gUnknown_Debug_083C3827, DummyMenuAction}, + {gUnknown_Debug_083C383B, DummyMenuAction}, + {gUnknown_Debug_083C384F, DummyMenuAction}, + {gUnknown_Debug_083C3863, DummyMenuAction}, + {gUnknown_Debug_083C3875, DummyMenuAction}, + {gUnknown_Debug_083C3885, DummyMenuAction}, + {gUnknown_Debug_083C3886, DummyMenuAction}, + {gUnknown_Debug_083C3887, DummyMenuAction}, + {gUnknown_Debug_083C3888, DummyMenuAction} +}; + +static const struct MenuAction gUnknown_Debug_83C3B28[] = { + {gUnknown_Debug_083C3889, DummyMenuAction}, + {gUnknown_Debug_083C389D, DummyMenuAction}, + {gUnknown_Debug_083C38B1, DummyMenuAction}, + {gUnknown_Debug_083C38C5, DummyMenuAction}, + {gUnknown_Debug_083C38D9, DummyMenuAction}, + {gUnknown_Debug_083C38ED, DummyMenuAction}, + {gUnknown_Debug_083C3901, DummyMenuAction}, + {gUnknown_Debug_083C3915, DummyMenuAction}, + {gUnknown_Debug_083C3929, DummyMenuAction} +}; + +static const struct MenuAction gUnknown_Debug_83C3B70[] = { + {gUnknown_Debug_083C3940, DummyMenuAction}, + {gUnknown_Debug_083C3954, DummyMenuAction}, + {gUnknown_Debug_083C3968, DummyMenuAction}, + {gUnknown_Debug_083C3969, DummyMenuAction}, + {gUnknown_Debug_083C396A, DummyMenuAction}, + {gUnknown_Debug_083C396B, DummyMenuAction}, + {gUnknown_Debug_083C396C, DummyMenuAction}, + {gUnknown_Debug_083C396D, DummyMenuAction}, + {gUnknown_Debug_083C396E, DummyMenuAction} +}; + +static const struct MenuAction gUnknown_Debug_83C3BB8[] = { + {gUnknown_Debug_083C396F, DummyMenuAction}, + {gUnknown_Debug_083C3984, DummyMenuAction}, + {gUnknown_Debug_083C3997, DummyMenuAction}, + {gUnknown_Debug_083C39A9, DummyMenuAction}, + {gUnknown_Debug_083C39BC, DummyMenuAction}, + {gUnknown_Debug_083C39D3, DummyMenuAction}, + {gUnknown_Debug_083C39E8, DummyMenuAction}, + {gUnknown_Debug_083C39F9, DummyMenuAction}, + {gUnknown_Debug_083C3A0E, DummyMenuAction} +}; + +static const struct MenuAction gUnknown_Debug_83C3C00[] = { + {gUnknown_Debug_083C3A22, DummyMenuAction}, + {gUnknown_Debug_083C3A36, DummyMenuAction}, + {gUnknown_Debug_083C3A4D, DummyMenuAction}, + {gUnknown_Debug_083C3A65, DummyMenuAction}, + {gUnknown_Debug_083C3A7B, DummyMenuAction}, + {gUnknown_Debug_083C3A8D, DummyMenuAction}, + {gUnknown_Debug_083C3A9C, DummyMenuAction}, + {gUnknown_Debug_083C3A9D, DummyMenuAction}, + {gUnknown_Debug_083C3A9E, DummyMenuAction} +}; + +static const u8 sControlWorks_SaveWork_CountsArray[] = {6, 5, 9, 2, 9, 6}; + +static const u16 sControlWorks_SaveWork_ItemArrays[][9] = { + {VAR_LINK_CONTEST_ROOM_STATE, VAR_CABLE_CLUB_STATE, VAR_CONTEST_LOCATION, VAR_CONTEST_PRIZE_PICKUP, VAR_LITTLEROOT_INTRO_STATE, VAR_PORTHOLE_STATE}, + {VAR_TRICK_HOUSE_ENTRANCE_STATE_2, VAR_TRICK_HOUSE_PRIZE_PICKUP, VAR_TRICK_HOUSE_STATE, VAR_TRICK_HOUSE_ENTRANCE_STATE_3, VAR_TRICK_HOUSE_ENTRANCE_STATE}, + {VAR_TRICK_HOUSE_PUZZLE_1_STATE, VAR_TRICK_HOUSE_PUZZLE_2_STATE, VAR_TRICK_HOUSE_PUZZLE_3_STATE, VAR_TRICK_HOUSE_PUZZLE_4_STATE, VAR_TRICK_HOUSE_PUZZLE_5_STATE, VAR_TRICK_HOUSE_PUZZLE_6_STATE, VAR_TRICK_HOUSE_PUZZLE_7_STATE, VAR_TRICK_HOUSE_PUZZLE_8_STATE, VAR_TRICK_HOUSE_PUZZLE_7_STATE_2}, + {VAR_BRINEY_HOUSE_STATE, VAR_GLASS_WORKSHOP_STATE}, + {VAR_0x4089, VAR_BOARD_BRINEY_BOAT_ROUTE104_STATE, VAR_BRINEY_LOCATION, VAR_0x4097, VAR_LILYCOVE_CONTEST_LOBBY_STATE, VAR_ELITE_4_STATE, VAR_CABLE_CAR_STATION_STATE, VAR_SAFARI_ZONE_STATE, VAR_CYCLING_CHALLENGE_STATE}, + {VAR_WEATHER_INSTITUTE_STATE, VAR_SLATEPORT_FAN_CLUB_STATE, 0x40BB, VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, VAR_GAME_CORNER_STATE, VAR_WHICH_FOSSIL_REVIVED} +}; + +static const u8 sString_Town[] = _("タウン"); +static const u8 sString_City[] = _("シティ"); +static const u8 sString_Route_101_to_109[] = _("ロード101ー109"); +static const u8 sString_Route_110_to_118[] = _("ロード110ー118"); +static const u8 sString_Route_119_to_127[] = _("ロード119ー127"); +static const u8 sString_Route_128_to_134[] = _("ロード128ー134"); +static const u8 sString_Room_Town[] = _("ルーム タウン"); +static const u8 sString_Room_City[] = _("ルーム シティ"); +static const u8 sString_Dungeon_nai[] = _("ダンジョンない"); + +static const struct MenuAction sMenuAction_ControlWorks_SaveWork[] = { + {sString_Town, ControlWorks_SaveWork_Town_InitSubsubmenu}, + {sString_City, ControlWorks_SaveWork_City_InitSubsubmenu}, + {sString_Route_101_to_109, ControlWorks_SaveWork_Route101To109_InitSubsubmenu}, + {sString_Route_110_to_118, ControlWorks_SaveWork_Route110To118_InitSubsubmenu}, + {sString_Route_119_to_127, ControlWorks_SaveWork_Route119To127_InitSubsubmenu}, + {sString_Route_128_to_134, ControlWorks_SaveWork_Route128To134_InitSubsubmenu}, + {sString_Room_Town, ControlWorks_SaveWork_RoomTown_InitSubsubmenu}, + {sString_Room_City, ControlWorks_SaveWork_RoomCity_InitSubsubmenu}, + {sString_Dungeon_nai, ControlWorks_SaveWork_Dungeon_InitSubsubmenu} +}; + +static const u8 sString_WK_SCENE_FIELD_T101[] = _("WKーSCENEーFIELDーT101"); +static const u8 sString_WK_SCENE_FIELD_T102[] = _("WKーSCENEーFIELDーT102"); +static const u8 sString_WK_SCENE_FIELD_T103[] = _("WKーSCENEーFIELDーT103"); +static const u8 sString_WK_SCENE_FIELD_T104[] = _("WKーSCENEーFIELDーT104"); +static const u8 sString_WK_BASE_POSNO[] = _("WKーBASEーPOSNO"); +static const u8 sString_WK_SCENE_FIELD_T106[] = _("WKーSCENEーFIELDーT106"); +static const u8 sString_WK_SCENE_FIELD_T107[] = _("WKーSCENEーFIELDーT107"); +static const u8 sString_WK_SCENE_2_FIELD_T102[] = _("WKーSCENEー02ーFIELDーT102"); + +static const u8 sString_WK_SCENE_FIELD_C101[] = _("WKーSCENEーFIELDーC101"); +static const u8 sString_WK_SCENE_FIELD_C102[] = _("WKーSCENEーFIELDーC102"); +static const u8 sString_WK_SCENE_FIELD_C103[] = _("WKーSCENEーFIELDーC103"); +static const u8 sString_WK_SCENE_FIELD_C104[] = _("WKーSCENEーFIELDーC104"); +static const u8 sString_WK_SCENE_FIELD_C105[] = _("WKーSCENEーFIELDーC105"); +static const u8 sString_WK_SCENE_FIELD_C106[] = _("WKーSCENEーFIELDーC106"); +static const u8 sString_WK_SCENE_FIELD_C107[] = _("WKーSCENEーFIELDーC107"); +static const u8 sString_WK_SCENE_FIELD_C108[] = _("WKーSCENEーFIELDーC108"); +static const u8 sString_WK_SCENE_FIELD_C109[] = _("WKーSCENEーFIELDーC109"); + +static const u8 sString_WK_SCENE_FIELD_R101[] = _("WKーSCENEーFIELDーR101"); +static const u8 sString_WK_SCENE_FIELD_R102[] = _("WKーSCENEーFIELDーR102"); +static const u8 sString_WK_SCENE_FIELD_R103[] = _("WKーSCENEーFIELDーR103"); +static const u8 sString_WK_SCENE_FIELD_R104[] = _("WKーSCENEーFIELDーR104"); +static const u8 sString_WK_SCENE_FIELD_R105[] = _("WKーSCENEーFIELDーR105"); +static const u8 sString_WK_SCENE_FIELD_R106[] = _("WKーSCENEーFIELDーR106"); +static const u8 sString_WK_SCENE_FIELD_R107[] = _("WKーSCENEーFIELDーR107"); +static const u8 sString_WK_SCENE_FIELD_R108[] = _("WKーSCENEーFIELDーR108"); +static const u8 sString_WK_SCENE_FIELD_R109[] = _("WKーSCENEーFIELDーR109"); + +static const u8 sString_WK_SCENE_FIELD_R110[] = _("WKーSCENEーFIELDーR110"); +static const u8 sString_WK_SCENE_FIELD_R111[] = _("WKーSCENEーFIELDーR111"); +static const u8 sString_WK_SCENE_FIELD_R112[] = _("WKーSCENEーFIELDーR112"); +static const u8 sString_WK_SCENE_FIELD_R113[] = _("WKーSCENEーFIELDーR113"); +static const u8 sString_WK_SCENE_FIELD_R114[] = _("WKーSCENEーFIELDーR114"); +static const u8 sString_WK_SCENE_FIELD_R115[] = _("WKーSCENEーFIELDーR115"); +static const u8 sString_WK_SCENE_FIELD_R116[] = _("WKーSCENEーFIELDーR116"); +static const u8 sString_WK_SCENE_FIELD_R117[] = _("WKーSCENEーFIELDーR117"); +static const u8 sString_WK_SCENE_FIELD_R118[] = _("WKーSCENEーFIELDーR118"); + +static const u8 sString_WK_SCENE_FIELD_R119[] = _("WKーSCENEーFIELDーR119"); +static const u8 sString_WK_SCENE_FIELD_R120[] = _("WKーSCENEーFIELDーR120"); +static const u8 sString_WK_SCENE_FIELD_R121[] = _("WKーSCENEーFIELDーR121"); +static const u8 sString_WK_SCENE_FIELD_R122[] = _("WKーSCENEーFIELDーR122"); +static const u8 sString_WK_SCENE_FIELD_R123[] = _("WKーSCENEーFIELDーR123"); +static const u8 sString_WK_SCENE_FIELD_R124[] = _("WKーSCENEーFIELDーR124"); +static const u8 sString_WK_SCENE_FIELD_R125[] = _("WKーSCENEーFIELDーR125"); +static const u8 sString_WK_SCENE_FIELD_R126[] = _("WKーSCENEーFIELDーR126"); +static const u8 sString_WK_SCENE_FIELD_R127[] = _("WKーSCENEーFIELDーR127"); + +static const u8 sString_WK_SCENE_FIELD_R128[] = _("WKーSCENEーFIELDーR128"); +static const u8 sString_WK_SCENE_FIELD_R129[] = _("WKーSCENEーFIELDーR129"); +static const u8 sString_WK_SCENE_FIELD_R130[] = _("WKーSCENEーFIELDーR130"); +static const u8 sString_WK_SCENE_FIELD_R131[] = _("WKーSCENEーFIELDーR131"); +static const u8 sString_WK_SCENE_FIELD_R132[] = _("WKーSCENEーFIELDーR132"); +static const u8 sString_WK_SCENE_FIELD_R133[] = _("WKーSCENEーFIELDーR133"); +static const u8 sString_WK_SCENE_FIELD_R134[] = _("WKーSCENEーFIELDーR134"); + +static const u8 sString_WK_SCENE_T101_R0101[] = _("WKーSCENEーT101ーR0101"); +static const u8 sString_WK_SCENE_T101_R0102[] = _("WKーSCENEーT101ーR0102"); +static const u8 sString_WK_SCENE_T101_R0301[] = _("WKーSCENEーT101ーR0301"); +static const u8 sString_WK_SCENE_T101_R0201[] = _("WKーSCENEーT101ーR0201"); +static const u8 sString_WK_SCENE_T101_R0202[] = _("WKーSCENEーT101ーR0202"); +static const u8 sString_WK_SCENE_T107_R0201[] = _("WKーSCENEーT107ーR0201"); // unused string + +static const u8 sString_WK_SCENE_C101_R0201[] = _("WKーSCENEーC101ーR0201"); +static const u8 sString_WK_SCENE_C104_R0103[] = _("WKーSCENEーC104ーR0103"); +static const u8 sString_WK_SCENE_C103_R0101[] = _("WKーSCENEーC103ーR0101"); +static const u8 sString_WK_SCENE_C106_R0202[] = _("WKーSCENEーC106ーR0202"); +static const u8 sString_WK_SCENE_C106_R0401[] = _("WKーSCENEーC106ーR0401"); +static const u8 sString_WK_SCENE_C101_R0601[] = _("WKーSCENEーC102ーR0601"); +static const u8 sString_WK_SCENE_C102_R0501[] = _("WKーSCENEーC102ーR0501"); +static const u8 sString_WK_SCENE_C104_R0102[] = _("WKーSCENEーC104ーR0102"); +static const u8 sString_WK_SCENE_C107_R0501[] = _("WKーSCENEーC107ーR0501"); + +static const u8 sString_WK_SCENE_CAVE_D0601[] = _("WKーSCENEーCAVEーD0601"); +static const u8 sString_WK_SCENE_CAVE_D0201[] = _("WKーSCENEーCAVEーD0201"); +static const u8 sString_WK_SCENE_CAVE_D1206[] = _("WKーSCENEーCAVEーD1206"); +static const u8 sString_WK_SCENE_CAVE_D1111[] = _("WKーSCENEーCAVEーD1111"); +static const u8 sString_WK_SCENE_CAVE_D0701[] = _("WKーSCENEーCAVEーD0701"); +static const u8 sString_WK_SCENE_CAVE_D0808[] = _("WKーSCENEーCAVEーD0808"); +static const u8 sString_WK_SCENE_CAVE_D1602[] = _("WKーSCENEーCAVEーD1602"); +static const u8 sString_WK_SCENE_CAVE_D0101[] = _("WKーSCENEーCAVEーD0101"); +static const u8 sString_WK_SCENE_CAVE_D1301[] = _("WKーSCENEーCAVEーD1301"); + +static const struct MenuAction sMenuActions_SaveWork_Town[] = { + {sString_WK_SCENE_FIELD_T101, DummyMenuAction}, + {sString_WK_SCENE_FIELD_T102, DummyMenuAction}, + {sString_WK_SCENE_FIELD_T103, DummyMenuAction}, + {sString_WK_SCENE_FIELD_T104, DummyMenuAction}, + {sString_WK_BASE_POSNO, DummyMenuAction}, + {sString_WK_SCENE_FIELD_T106, DummyMenuAction}, + {sString_WK_SCENE_FIELD_T107, DummyMenuAction}, + {sString_WK_SCENE_2_FIELD_T102, DummyMenuAction} +}; + +static const struct MenuAction sMenuActions_SaveWork_City[] = { + {sString_WK_SCENE_FIELD_C101, DummyMenuAction}, + {sString_WK_SCENE_FIELD_C102, DummyMenuAction}, + {sString_WK_SCENE_FIELD_C103, DummyMenuAction}, + {sString_WK_SCENE_FIELD_C104, DummyMenuAction}, + {sString_WK_SCENE_FIELD_C105, DummyMenuAction}, + {sString_WK_SCENE_FIELD_C106, DummyMenuAction}, + {sString_WK_SCENE_FIELD_C107, DummyMenuAction}, + {sString_WK_SCENE_FIELD_C108, DummyMenuAction}, + {sString_WK_SCENE_FIELD_C109, DummyMenuAction} +}; + +static const struct MenuAction sMenuActions_SaveWork_Route101To109[] = { + {sString_WK_SCENE_FIELD_R101, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R102, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R103, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R104, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R105, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R106, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R107, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R108, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R109, DummyMenuAction} +}; + +static const struct MenuAction sMenuActions_SaveWork_Route110To118[] = { + {sString_WK_SCENE_FIELD_R110, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R111, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R112, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R113, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R114, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R115, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R116, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R117, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R118, DummyMenuAction} +}; + +static const struct MenuAction sMenuActions_SaveWork_Route119To127[] = { + {sString_WK_SCENE_FIELD_R119, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R120, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R121, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R122, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R123, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R124, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R125, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R126, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R127, DummyMenuAction} +}; + +static const struct MenuAction sMenuActions_SaveWork_Route128To134[] = { + {sString_WK_SCENE_FIELD_R128, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R129, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R130, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R131, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R132, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R133, DummyMenuAction}, + {sString_WK_SCENE_FIELD_R134, DummyMenuAction} +}; + +static const struct MenuAction sMenuActions_SaveWork_RoomTown[] = { + {sString_WK_SCENE_T101_R0101, DummyMenuAction}, + {sString_WK_SCENE_T101_R0102, DummyMenuAction}, + {sString_WK_SCENE_T101_R0301, DummyMenuAction}, + {sString_WK_SCENE_T101_R0201, DummyMenuAction}, + {sString_WK_SCENE_T101_R0202, DummyMenuAction} +}; + +static const struct MenuAction sMenuActions_SaveWork_RoomCity[] = { + {sString_WK_SCENE_C101_R0201, DummyMenuAction}, + {sString_WK_SCENE_C104_R0103, DummyMenuAction}, + {sString_WK_SCENE_C103_R0101, DummyMenuAction}, + {sString_WK_SCENE_C106_R0202, DummyMenuAction}, + {sString_WK_SCENE_C106_R0401, DummyMenuAction}, + {sString_WK_SCENE_C101_R0601, DummyMenuAction}, + {sString_WK_SCENE_C102_R0501, DummyMenuAction}, + {sString_WK_SCENE_C104_R0102, DummyMenuAction}, + {sString_WK_SCENE_C107_R0501, DummyMenuAction} +}; + +static const struct MenuAction sMenuActions_SaveWork_Dungeon[] = { + {sString_WK_SCENE_CAVE_D0601, DummyMenuAction}, + {sString_WK_SCENE_CAVE_D0201, DummyMenuAction}, + {sString_WK_SCENE_CAVE_D1206, DummyMenuAction}, + {sString_WK_SCENE_CAVE_D1111, DummyMenuAction}, + {sString_WK_SCENE_CAVE_D0701, DummyMenuAction}, + {sString_WK_SCENE_CAVE_D0808, DummyMenuAction}, + {sString_WK_SCENE_CAVE_D1602, DummyMenuAction}, + {sString_WK_SCENE_CAVE_D0101, DummyMenuAction}, + {sString_WK_SCENE_CAVE_D1301, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C457C[] = {8, 9, 9, 9, 9, 7, 6, 9, 9}; + +static const u16 gUnknown_Debug_083C4586[][9] = { + {VAR_LITTLEROOT_STATE, VAR_ROUTE102_ACCESSIBLE, 0x4052, VAR_LAVARIDGE_RIVAL_STATE, VAR_CURRENT_SECRET_BASE, 0x4055, 0x4056, VAR_OLDALE_STATE}, + {VAR_PETALBURG_STATE, VAR_SLATEPORT_STATE, 0x4059, VAR_RUSTBORO_STATE, 0x405B, 0x405C, 0x405D, VAR_SOOTOPOLIS_STATE, 0x405F}, + {VAR_ROUTE101_STATE, 0x4061, VAR_ROUTE103_STATE, 0x4063, 0x4064, 0x4065, 0x4066, 0x4067, 0x4068}, + {VAR_ROUTE110_STATE, 0x406A, 0x406B, 0x406C, 0x406D, 0x406E, VAR_ROUTE116_STATE, 0x4070, VAR_ROUTE118_STATE}, + {VAR_ROUTE119_STATE, 0x4073, VAR_ROUTE121_STATE, 0x4075, 0x4076, 0x4077, 0x4078, 0x4079, 0x407A}, + {VAR_ROUTE128_STATE, 0x407C, 0x407D, 0x407E, 0x407F, 0x4080, 0x4081}, + {VAR_LITTLEROOT_HOUSES_STATE, 0x4083, VAR_BIRCH_LAB_STATE, VAR_LITTLEROOT_HOUSES_STATE_2, VAR_LITTLEROOT_RIVAL_STATE, VAR_PACIFIDLOG_TM_RECEIVED_DAY}, + {VAR_PETALBURG_GYM_STATE, VAR_DEVON_CORP_3F_STATE, VAR_MAUVILLE_GYM_STATE, VAR_LILYCOVE_MUSEUM_2F_STATE, VAR_LILYCOVE_FAN_CLUB_STATE, VAR_SLATEPORT_HARBOR_STATE, VAR_SLATEPORT_MUSEUM_1F_STATE, VAR_FOSSIL_RESURRECTION_STATE, VAR_STEVENS_HOUSE_STATE}, + {VAR_PETALBURG_WOODS_STATE, VAR_RUSTURF_TUNNEL_STATE, VAR_CAVE_OF_ORIGIN_B4F_STATE, VAR_SEAFLOOR_CAVERN_STATE, 0x40A8, VAR_MT_PYRE_STATE, VAR_NEW_MAUVILLE_STATE, VAR_METEOR_FALLS_STATE, VAR_VICTORY_ROAD_1F_STATE} +}; + +static const u8 gUnknown_Debug_083C4628[] = _("LOCALWORK0ー8"); +static const u8 gUnknown_Debug_083C4635[] = _("LOCALWORK9ー15"); + +static const struct MenuAction gUnknown_Debug_083C4644[] = { + {gUnknown_Debug_083C4628, debug_sub_808E754}, + {gUnknown_Debug_083C4635, debug_sub_808E7AC} +}; + +static const u8 gUnknown_Debug_083C4654[] = _("LOCALWORK0"); +static const u8 gUnknown_Debug_083C465F[] = _("LOCALWORK1"); +static const u8 gUnknown_Debug_083C466A[] = _("LOCALWORK2"); +static const u8 gUnknown_Debug_083C4675[] = _("LOCALWORK3"); +static const u8 gUnknown_Debug_083C4680[] = _("LOCALWORK4"); +static const u8 gUnknown_Debug_083C468B[] = _("LOCALWORK5"); +static const u8 gUnknown_Debug_083C4696[] = _("LOCALWORK6"); +static const u8 gUnknown_Debug_083C46A1[] = _("LOCALWORK7"); +static const u8 gUnknown_Debug_083C46AC[] = _("LOCALWORK8"); + +static const u8 gUnknown_Debug_083C46B7[] = _("LOCALWORK9"); +static const u8 gUnknown_Debug_083C46C2[] = _("LOCALWORK10"); +static const u8 gUnknown_Debug_083C46CE[] = _("LOCALWORK11"); +static const u8 gUnknown_Debug_083C46DA[] = _("LOCALWORK12"); +static const u8 gUnknown_Debug_083C46E6[] = _("LOCALWORK13"); +static const u8 gUnknown_Debug_083C46F2[] = _("LOCALWORK14"); +static const u8 gUnknown_Debug_083C46FE[] = _("LOCALWORK15"); + +static const struct MenuAction gUnknown_Debug_083C470C[] = { + {gUnknown_Debug_083C4654, DummyMenuAction}, + {gUnknown_Debug_083C465F, DummyMenuAction}, + {gUnknown_Debug_083C466A, DummyMenuAction}, + {gUnknown_Debug_083C4675, DummyMenuAction}, + {gUnknown_Debug_083C4680, DummyMenuAction}, + {gUnknown_Debug_083C468B, DummyMenuAction}, + {gUnknown_Debug_083C4696, DummyMenuAction}, + {gUnknown_Debug_083C46A1, DummyMenuAction}, + {gUnknown_Debug_083C46AC, DummyMenuAction} +}; + +static const struct MenuAction gUnknown_Debug_083C4754C[] = { + {gUnknown_Debug_083C46B7, DummyMenuAction}, + {gUnknown_Debug_083C46C2, DummyMenuAction}, + {gUnknown_Debug_083C46CE, DummyMenuAction}, + {gUnknown_Debug_083C46DA, DummyMenuAction}, + {gUnknown_Debug_083C46E6, DummyMenuAction}, + {gUnknown_Debug_083C46F2, DummyMenuAction}, + {gUnknown_Debug_083C46FE, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C478C[] = {9, 7}; + +static const u16 gUnknown_Debug_083C478E[][9] = { + {VAR_TEMP_0, VAR_TEMP_1, VAR_TEMP_2, VAR_TEMP_3, VAR_TEMP_4, VAR_TEMP_5, VAR_TEMP_6, VAR_TEMP_7, VAR_TEMP_8}, + {VAR_TEMP_9, VAR_TEMP_A, VAR_TEMP_B, VAR_TEMP_C, VAR_TEMP_D, VAR_TEMP_E, VAR_TEMP_F} +}; + +static const u8 gUnknown_Debug_083C47B2[] = _("Level"); +static const u8 gUnknown_Debug_083C47B8[] = _("Scene1"); +static const u8 gUnknown_Debug_083C47BF[] = _("Scene2"); +static const u8 gUnknown_Debug_083C47C6[] = _("Scene3"); +static const u8 gUnknown_Debug_083C47CD[] = _("Scene4"); +static const u8 gUnknown_Debug_083C47D4[] = _("Scene5"); +static const u8 gUnknown_Debug_083C47DB[] = _("Scene6"); +static const u8 gUnknown_Debug_083C47E2[] = _("Scene7"); +static const u8 gUnknown_Debug_083C47E9[] = _("Scene8"); + +static const struct MenuAction gUnknown_Debug_083C47F0[] = { + {gUnknown_Debug_083C47B8, DummyMenuAction}, + {gUnknown_Debug_083C47BF, DummyMenuAction}, + {gUnknown_Debug_083C47C6, DummyMenuAction}, + {gUnknown_Debug_083C47CD, DummyMenuAction}, + {gUnknown_Debug_083C47D4, DummyMenuAction}, + {gUnknown_Debug_083C47DB, DummyMenuAction}, + {gUnknown_Debug_083C47E2, DummyMenuAction}, + {gUnknown_Debug_083C47E9, DummyMenuAction} +}; + +static const u8 gUnknown_Debug_083C4830[] = _("Trick Master"); + +static const u8 gUnknown_Debug_083C483D[] = _("Hidden MASTER"); +static const u8 gUnknown_Debug_083C484B[] = _("Inside the HOUSE"); +static const u8 gUnknown_Debug_083C485C[] = _("Pass a reward"); +static const u8 gUnknown_Debug_083C486A[] = _("Rig a trick"); +static const u8 gUnknown_Debug_083C4876[] = _("MASTER is gone"); + +static const struct MenuAction gUnknown_Debug_083C4888[] = { + {gUnknown_Debug_083C483D, DummyMenuAction}, + {gUnknown_Debug_083C484B, DummyMenuAction}, + {gUnknown_Debug_083C485C, DummyMenuAction}, + {gUnknown_Debug_083C486A, DummyMenuAction}, + {gUnknown_Debug_083C4876, DummyMenuAction} +}; + +static const u8 sDummyNickname[] = _("PMNICKNAME"); +static const u8 sDummyTrainerName[] = _("BREEDER"); + +bool8 InitTomomichiDebugWindow(void) +{ + InitDebugWindow(); + return FALSE; +} + +static void debug_sub_808B868(void) +{ + c2_exit_to_overworld_1_continue_scripts_restart_music(); +} + +static bool8 InitDebugWindow(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 13, 15); + Menu_PrintItems(1, 1, ARRAY_COUNT(sMenuActions_TopMenu), sMenuActions_TopMenu); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_TopMenu), sTopMenuCursorPos, 12); + gMenuCallback = TopMenu_HandleInput; + return FALSE; +} + +static bool8 TopMenu_HandleInput(void) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + sTopMenuCursorPos = Menu_MoveCursor(-1); + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + sTopMenuCursorPos = Menu_MoveCursor(+1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + return sMenuActions_TopMenu[sTopMenuCursorPos].func(); + } + if (gMain.newKeys & (B_BUTTON | START_BUTTON)) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static bool8 ContestGraphics(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 20, 11); + Menu_PrintText(sString_ContestMenuTitle, 1, 1); + Menu_PrintItems(2, 3, ARRAY_COUNT(sMenuActions_ContestPicTest), sMenuActions_ContestPicTest); + InitMenu(0, 1, 3, ARRAY_COUNT(sMenuActions_ContestPicTest), 0, 19); + gMenuCallback = ContestGraphics_HandleInput; + sPicTest_Species = SPECIES_BULBASAUR; + sPicTest_OTID = 28467; + sPicTest_Personality = 0; + sPicTest_ContestType = 1; + return FALSE; +} + +static bool8 ArtMusGraphics(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 20, 11); + Menu_PrintText(sString_Contest_ArtMuseumTitle, 1, 1); + Menu_PrintItems(2, 3, ARRAY_COUNT(sMenuActions_ArtMuseumPicTest), sMenuActions_ArtMuseumPicTest); + InitMenu(0, 1, 3, ARRAY_COUNT(sMenuActions_ArtMuseumPicTest), 0, 19); + gMenuCallback = ArtMusGraphics_HandleInput; + sPicTest_Species = SPECIES_BULBASAUR; + sPicTest_OTID = 28467; + sPicTest_Personality = 0; + sPicTest_MuseumArtTitleType = 1; + return FALSE; +} + +static bool8 PreviewData(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 20, 11); + Menu_PrintText(sString_Contest_PreviewTitle, 1, 1); + Menu_PrintItems(2, 3, ARRAY_COUNT(sMenuActions_PreviewPicTest), sMenuActions_PreviewPicTest); + InitMenu(0, 1, 3, ARRAY_COUNT(sMenuActions_PreviewPicTest), 0, 19); + gMenuCallback = PreviewData_HandleInput; + sPicTest_Species = SPECIES_BULBASAUR; + sPicTest_OTID = 28467; + sPicTest_Personality = 0; + sPicTest_PreviewType = 1; + return FALSE; +} + +static bool8 TrickHouse(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 24, 7); + Menu_PrintText(sString_TrickRelated, 1, 1); + Menu_PrintItems(2, 3, ARRAY_COUNT(sMenuActions_TrickRelated), sMenuActions_TrickRelated); + InitMenu(0, 1, 3, ARRAY_COUNT(sMenuActions_TrickRelated), sTrickRelatedMenuCursorPos, 23); + gMenuCallback = TrickHouse_HandleInput; + return FALSE; +} + +static bool8 ControlEvents(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 24, 5); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlEvents), sMenuActions_ControlEvents); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlEvents), sControlEventsCursorPos, 23); + gMenuCallback = ControlEvents_HandleInput; + return FALSE; +} + +static bool8 ControlFlags(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 24, 15); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlFlags), sMenuActions_ControlFlags); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlFlags), sControlFlagsCursorPos, 23); + gMenuCallback = ControlFlags_HandleInput; + return FALSE; +} + +static bool8 ControlWorks(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 24, 13); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlWorks), sMenuActions_ControlWorks); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlWorks), sControlWORKCursorPos, 23); + gMenuCallback = ControlWorks_HandleInput; + return FALSE; +} + +static bool8 ContestGraphics_HandleInput(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + switch (cursorPos) + { + case 0: + PicTest_SelectPokemon(); + break; + case 1: + PicTest_SelectPersonality(); + break; + case 2: + ContestPicTest_SelectContestType(); + break; + } + PicTest_Redraw(0); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + if (input == 3) + { + gMenuCallback = sMenuActions_ContestPicTest[3].func; + return FALSE; + } + return FALSE; +} + +static bool8 ArtMusGraphics_HandleInput(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + switch (cursorPos) + { + case 0: + PicTest_SelectPokemon(); + break; + case 1: + PicTest_SelectPersonality(); + break; + case 2: + MuseumArtPicTest_SelectTitleType(); + break; + } + PicTest_Redraw(1); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + if (input == 3) + { + gMenuCallback = sMenuActions_ArtMuseumPicTest[3].func; + return FALSE; + } + return FALSE; +} + +static bool8 PreviewData_HandleInput(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + switch (cursorPos) + { + case 0: + PicTest_SelectPokemon(); + break; + case 1: + PicTest_SelectPersonality(); + break; + case 2: + PreviewPicTest_SelectType(); + break; + } + PicTest_Redraw(2); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + if (input == 3) + { + gMenuCallback = sMenuActions_PreviewPicTest[3].func; + return FALSE; + } + return FALSE; +} + +static bool8 TrickHouse_HandleInput(void) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + sTrickRelatedMenuCursorPos = Menu_MoveCursor(-1); + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + sTrickRelatedMenuCursorPos = Menu_MoveCursor(+1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + return sMenuActions_TrickRelated[sTrickRelatedMenuCursorPos].func(); + } + if (gMain.newKeys & (B_BUTTON | START_BUTTON)) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static bool8 ControlEvents_HandleInput(void) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + sControlEventsCursorPos = Menu_MoveCursor(-1); + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + sControlEventsCursorPos = Menu_MoveCursor(+1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + return sMenuActions_ControlEvents[sControlEventsCursorPos].func(); + } + if (gMain.newKeys & (B_BUTTON | START_BUTTON)) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static bool8 ControlFlags_HandleInput(void) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + sControlFlagsCursorPos = Menu_MoveCursor(-1); + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + sControlFlagsCursorPos = Menu_MoveCursor(+1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + return sMenuActions_ControlFlags[sControlFlagsCursorPos].func(); + } + if (gMain.newKeys & (B_BUTTON | START_BUTTON)) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static bool8 ControlWorks_HandleInput(void) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + sControlWORKCursorPos = Menu_MoveCursor(-1); + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + sControlWORKCursorPos = Menu_MoveCursor(+1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + return sMenuActions_ControlWorks[sControlWORKCursorPos].func(); + } + if (gMain.newKeys & (B_BUTTON | START_BUTTON)) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static bool8 ControlEvents_InitSubmenu1(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 28, 19); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlEvents_Events1), sMenuActions_ControlEvents_Events1); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlEvents_Events1), 0, 27); + gMenuCallback = ControlEvents_Events1_HandleInput; + return FALSE; +} + +static bool8 ControlEvents_InitSubmenu2(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 28, 13); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlEvents_Events2), sMenuActions_ControlEvents_Events2); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlEvents_Events2), 0, 27); + gMenuCallback = ControlEvents_Events2_HandleInput; + return FALSE; +} + +static bool8 ControlEvents_Events1_HandleInput(void) +{ + s8 input = Menu_ProcessInput(); + + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + gMenuCallback = sMenuActions_ControlEvents_Events1[input].func; + return FALSE; +} + +static bool8 ControlEvents_Events2_HandleInput(void) +{ + s8 input = Menu_ProcessInput(); + + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + gMenuCallback = sMenuActions_ControlEvents_Events2[input].func; + return FALSE; +} + +static bool8 CallScript_DoHallOfFame(void) +{ + ScriptContext1_SetupScript(DebugScript_081C1CFE); + CloseMenu(); + return TRUE; +} + +static bool8 CallScript_GiveCoinCaseIfNotAlreadyOwned(void) +{ + ScriptContext1_SetupScript(DebugScript_081C1D07); + CloseMenu(); + return TRUE; +} + +static bool8 CallScript_SetOldaleStateAfterRoute103Rival(void) +{ + ScriptContext1_SetupScript(DebugScript_081C1D1E); + CloseMenu(); + return TRUE; +} + +static bool8 CallScript_OpenNewMauville(void) +{ + ScriptContext1_SetupScript(DebugScript_081C1D24); + CloseMenu(); + return TRUE; +} + +static bool8 CallScript_GiveSSTicketAndDoHallOfFame(void) +{ + ScriptContext1_SetupScript(DebugScript_081C1D2A); + CloseMenu(); + return TRUE; +} + +static bool8 CallScript_GiveKyogreEgg(void) +{ + ScriptContext1_SetupScript(DebugScript_081C1D35); + CloseMenu(); + return TRUE; +} + +static bool8 CallScript_GiveAllItems(void) +{ + ScriptContext1_SetupScript(DebugScript_081C1D46); + CloseMenu(); + return TRUE; +} + +static bool8 CallScript_GiveAllDecorations(void) +{ + ScriptContext1_SetupScript(DebugScript_081C221F); + CloseMenu(); + return TRUE; +} + +static bool8 CallScript_GiveAllCoins(void) +{ + ScriptContext1_SetupScript(DebugScript_081C23E2); + CloseMenu(); + return TRUE; +} + +static bool8 CallScript_OpenSootopolisGym(void) +{ + ScriptContext1_SetupScript(DebugScript_081C23E6); + CloseMenu(); + return TRUE; +} + +static bool8 CallScript_SetMoneyTo0(void) +{ + ScriptContext1_SetupScript(DebugScript_081C23F6); + CloseMenu(); + return TRUE; +} + +static bool8 CallScript_FillPartyWithBarboach(void) +{ + ScriptContext1_SetupScript(DebugScript_081C2482); + CloseMenu(); + return TRUE; +} + +static bool8 CallScript_FillPartyWithShroomish(void) +{ + ScriptContext1_SetupScript(DebugScript_081C23FD); + CloseMenu(); + return TRUE; +} + +static bool8 CallScript_GiveBarboachEgg(void) +{ + ScriptContext1_SetupScript(DebugScript_081C2518); + CloseMenu(); + return TRUE; +} + +static bool8 CallScript_GiveShroomishEgg(void) +{ + ScriptContext1_SetupScript(DebugScript_081C2507); + CloseMenu(); + return TRUE; +} + +static bool8 ContestGraphics_Show(void) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); + gMenuCallback = debug_sub_808C280; + return FALSE; +} + +static bool8 debug_sub_808C280(void) +{ + if (!UpdatePaletteFade()) + { + CloseMenu(); + PrepareDebugOverlayBeforeShowingContestPainting(0); + SetMainCallback2(CB2_ContestPainting); + gMain.savedCallback = debug_sub_808B868; + return TRUE; + } + return FALSE; +} + +static bool8 MuseumGraphics_Show(void) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); + gMenuCallback = debug_sub_808C2E4; + return FALSE; +} + +static bool8 debug_sub_808C2E4(void) +{ + if (!UpdatePaletteFade()) + { + CloseMenu(); + PrepareDebugOverlayBeforeShowingContestPainting(1); + SetMainCallback2(CB2_ContestPainting); + gMain.savedCallback = debug_sub_808B868; + return TRUE; + } + return FALSE; +} + +static bool8 ControlFlags_EventFlag_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 28, 19); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2828), gUnknown_Debug_083C2828); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2828), 0, 27); + gMenuCallback = debug_sub_808C36C; + return FALSE; +} + +static bool8 debug_sub_808C36C(void) +{ + s8 input = Menu_ProcessInput(); + + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + gMenuCallback = gUnknown_Debug_083C2828[input].func; + return FALSE; +} + +static bool8 debug_sub_808C3B0(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2938) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2938), gUnknown_Debug_083C2938); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2938), 0, 28); + sFlagAndVarTest_WhichSubmenu = 0; + gMenuCallback = debug_sub_808C6C8; + return FALSE; +} + +static bool8 debug_sub_808C408(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2A48) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2A48), gUnknown_Debug_083C2A48); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2A48), 0, 28); + sFlagAndVarTest_WhichSubmenu = 1; + gMenuCallback = debug_sub_808C6C8; + return FALSE; +} + +static bool8 debug_sub_808C460(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2B4C) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2B4C), gUnknown_Debug_083C2B4C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2B4C), 0, 28); + sFlagAndVarTest_WhichSubmenu = 2; + gMenuCallback = debug_sub_808C6C8; + return FALSE; +} + +static bool8 debug_sub_808C4B8(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2C80) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2C80), gUnknown_Debug_083C2C80); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2C80), 0, 28); + sFlagAndVarTest_WhichSubmenu = 3; + gMenuCallback = debug_sub_808C6C8; + return FALSE; +} + +static bool8 debug_sub_808C510(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2D8C) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2D8C), gUnknown_Debug_083C2D8C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2D8C), 0, 28); + sFlagAndVarTest_WhichSubmenu = 4; + gMenuCallback = debug_sub_808C6C8; + return FALSE; +} + +static bool8 debug_sub_808C568(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2EB0) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2EB0), gUnknown_Debug_083C2EB0); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2EB0), 0, 28); + sFlagAndVarTest_WhichSubmenu = 5; + gMenuCallback = debug_sub_808C6C8; + return FALSE; +} + +static bool8 debug_sub_808C5C0(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2FE0) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2FE0), gUnknown_Debug_083C2FE0); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2FE0), 0, 28); + sFlagAndVarTest_WhichSubmenu = 6; + gMenuCallback = debug_sub_808C6C8; + return FALSE; +} + +static bool8 debug_sub_808C618(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C3100) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C3100), gUnknown_Debug_083C3100); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C3100), 0, 28); + sFlagAndVarTest_WhichSubmenu = 7; + gMenuCallback = debug_sub_808C6C8; + return FALSE; +} + +static bool8 debug_sub_808C670(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * 3 + 1); + Menu_PrintItems(2, 1, 3, gUnknown_Debug_083C3194); + InitMenu(0, 1, 1, 3, 0, 28); + sFlagAndVarTest_WhichSubmenu = 8; + gMenuCallback = debug_sub_808C6C8; + return FALSE; +} + +static bool8 debug_sub_808C6C8(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + debug_sub_808C714(sFlagAndVarTest_WhichSubmenu, cursorPos); + debug_sub_808C764(sFlagAndVarTest_WhichSubmenu); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static void debug_sub_808C714(u8 whichMenu, u8 cursorPos) +{ + if (gMain.newKeys & R_BUTTON) + { + if (!FlagGet(gUnknown_Debug_83C31E6[whichMenu][cursorPos])) + FlagSet(gUnknown_Debug_83C31E6[whichMenu][cursorPos]); + else + FlagClear(gUnknown_Debug_83C31E6[whichMenu][cursorPos]); + } +} + +static void debug_sub_808C764(u8 whichMenu) +{ + u8 i; + + for (i = 0; i < gUnknown_Debug_083C31DC[whichMenu]; i++) + { + PrintBool(28, 2 * i + 1, FlagGet(gUnknown_Debug_83C31E6[whichMenu][i]) ? 1 : 0); + } +} + +static bool8 ControlFlags_VanishFlag_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 28, 19); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1CE8), gUnknown_Debug_083C1CE8); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1CE8), 0, 27); + gMenuCallback = debug_sub_808C818; + return FALSE; +} + +static bool8 debug_sub_808C818(void) +{ + s8 input = Menu_ProcessInput(); + + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + gMenuCallback = gUnknown_Debug_083C1CE8[input].func; + return FALSE; +} + +static bool8 debug_sub_808C85C(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1E0C) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1E0C), gUnknown_Debug_083C1E0C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1E0C), 0, 28); + sFlagAndVarTest_WhichSubmenu = 0; + gMenuCallback = debug_sub_808CB74; + return FALSE; +} + +static bool8 debug_sub_808C8B4(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1F38) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1F38), gUnknown_Debug_083C1F38); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1F38), 0, 28); + sFlagAndVarTest_WhichSubmenu = 1; + gMenuCallback = debug_sub_808CB74; + return FALSE; +} + +static bool8 debug_sub_808C90C(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C206C) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C206C), gUnknown_Debug_083C206C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C206C), 0, 28); + sFlagAndVarTest_WhichSubmenu = 2; + gMenuCallback = debug_sub_808CB74; + return FALSE; +} + +static bool8 debug_sub_808C964(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2190) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2190), gUnknown_Debug_083C2190); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2190), 0, 28); + sFlagAndVarTest_WhichSubmenu = 3; + gMenuCallback = debug_sub_808CB74; + return FALSE; +} + +static bool8 debug_sub_808C9BC(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2264) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2264), gUnknown_Debug_083C2264); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2264), 0, 28); + sFlagAndVarTest_WhichSubmenu = 4; + gMenuCallback = debug_sub_808CB74; + return FALSE; +} + +static bool8 debug_sub_808CA14(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2370) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2370), gUnknown_Debug_083C2370); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2370), 0, 28); + sFlagAndVarTest_WhichSubmenu = 5; + gMenuCallback = debug_sub_808CB74; + return FALSE; +} + +static bool8 debug_sub_808CA6C(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C248C) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C248C), gUnknown_Debug_083C248C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C248C), 0, 28); + sFlagAndVarTest_WhichSubmenu = 6; + gMenuCallback = debug_sub_808CB74; + return FALSE; +} + +static bool8 debug_sub_808CAC4(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C259C) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C259C), gUnknown_Debug_083C259C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C259C), 0, 27); + sFlagAndVarTest_WhichSubmenu = 7; + gMenuCallback = debug_sub_808CB74; + return FALSE; +} + +static bool8 debug_sub_808CB1C(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C26C8) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C26C8), gUnknown_Debug_083C26C8); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C26C8), 0, 28); + sFlagAndVarTest_WhichSubmenu = 8; + gMenuCallback = debug_sub_808CB74; + return FALSE; +} + +static bool8 debug_sub_808CB74(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + debug_sub_808CBC0(sFlagAndVarTest_WhichSubmenu, cursorPos); + debug_sub_808CC10(sFlagAndVarTest_WhichSubmenu); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static void debug_sub_808CBC0(u8 whichMenu, u8 cursorPos) +{ + if (gMain.newKeys & R_BUTTON) + { + if (!FlagGet(gUnknown_Debug_083C271A[whichMenu][cursorPos])) + FlagSet(gUnknown_Debug_083C271A[whichMenu][cursorPos]); + else + FlagClear(gUnknown_Debug_083C271A[whichMenu][cursorPos]); + } +} + +static void debug_sub_808CC10(u8 whichMenu) +{ + u8 i; + + for (i = 0; i < gUnknown_Debug_083C2710[whichMenu]; i++) + { + PrintBool(28, 2 * i + 1, FlagGet(gUnknown_Debug_083C271A[whichMenu][i]) ? 1 : 0); + } +} + +static bool8 ControlFlags_TrainerFlag_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 28, 2 * ARRAY_COUNT(gUnknown_Debug_083C1ADC) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1ADC), gUnknown_Debug_083C1ADC); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1ADC), 0, 27); + gMenuCallback = debug_sub_808CCC4; + return FALSE; +} + +static bool8 debug_sub_808CCC4(void) +{ + s8 input = Menu_ProcessInput(); + + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + gMenuCallback = gUnknown_Debug_083C1ADC[input].func; + return FALSE; +} + +static bool8 debug_sub_808CD08(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1B7C) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1B7C), gUnknown_Debug_083C1B7C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1B7C), 0, 28); + sFlagAndVarTest_WhichSubmenu = 0; + gMenuCallback = debug_sub_808CE10; + return FALSE; +} + +static bool8 debug_sub_808CD60(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1BF0) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1BF0), gUnknown_Debug_083C1BF0); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1BF0), 0, 28); + sFlagAndVarTest_WhichSubmenu = 1; + gMenuCallback = debug_sub_808CE10; + return FALSE; +} + +static bool8 debug_sub_808CDB8(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1C2C) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1C2C), gUnknown_Debug_083C1C2C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1C2C), 0, 28); + sFlagAndVarTest_WhichSubmenu = 2; + gMenuCallback = debug_sub_808CE10; + return FALSE; +} + +static bool8 debug_sub_808CE10(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + debug_sub_808CE5C(sFlagAndVarTest_WhichSubmenu, cursorPos); + debug_sub_808CEAC(sFlagAndVarTest_WhichSubmenu); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static void debug_sub_808CE5C(u8 whichMenu, u8 cursorPos) +{ + if (gMain.newKeys & R_BUTTON) + { + if (!FlagGet(gUnknown_Debug_083C1C38[whichMenu][cursorPos])) + FlagSet(gUnknown_Debug_083C1C38[whichMenu][cursorPos]); + else + FlagClear(gUnknown_Debug_083C1C38[whichMenu][cursorPos]); + } +} + +static void debug_sub_808CEAC(u8 whichMenu) +{ + u8 i; + + for (i = 0; i < gUnknown_Debug_083C1C34[whichMenu]; i++) + { + PrintBool(28, 2 * i + 1, FlagGet(gUnknown_Debug_083C1C38[whichMenu][i]) ? 1 : 0); + } +} + +static bool8 ControlFlags_SysFlag_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 28, 2 * ARRAY_COUNT(gUnknown_Debug_083C1330) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1330), gUnknown_Debug_083C1330); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1330), 0, 27); + gMenuCallback = debug_sub_808CF60; + return FALSE; +} + +static bool8 debug_sub_808CF60(void) +{ + s8 input = Menu_ProcessInput(); + + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + gMenuCallback = gUnknown_Debug_083C1330[input].func; + return FALSE; +} + +static bool8 debug_sub_808CFA4(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C13D8) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C13D8), gUnknown_Debug_083C13D8); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C13D8), 0, 28); + sFlagAndVarTest_WhichSubmenu = 0; + gMenuCallback = debug_sub_808D2BC; + return FALSE; +} + +static bool8 debug_sub_808CFFC(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1465) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1465), gUnknown_Debug_083C1465); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1465), 0, 28); + sFlagAndVarTest_WhichSubmenu = 1; + gMenuCallback = debug_sub_808D2BC; + return FALSE; +} + +static bool8 debug_sub_808D054(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1503) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1503), gUnknown_Debug_083C1503); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1503), 0, 28); + sFlagAndVarTest_WhichSubmenu = 2; + gMenuCallback = debug_sub_808D2BC; + return FALSE; +} + +static bool8 debug_sub_808D0AC(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C158A) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C158A), gUnknown_Debug_083C158A); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C158A), 0, 28); + sFlagAndVarTest_WhichSubmenu = 3; + gMenuCallback = debug_sub_808D2BC; + return FALSE; +} + +static bool8 debug_sub_808D104(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1647) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1647), gUnknown_Debug_083C1647); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1647), 0, 28); + sFlagAndVarTest_WhichSubmenu = 4; + gMenuCallback = debug_sub_808D2BC; + return FALSE; +} + +static bool8 debug_sub_808D15C(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1712) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1712), gUnknown_Debug_083C1712); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1712), 0, 28); + sFlagAndVarTest_WhichSubmenu = 5; + gMenuCallback = debug_sub_808D2BC; + return FALSE; +} + +static bool8 debug_sub_808D1B4(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C17F8) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C17F8), gUnknown_Debug_083C17F8); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C17F8), 0, 28); + sFlagAndVarTest_WhichSubmenu = 6; + gMenuCallback = debug_sub_808D2BC; + return FALSE; +} + +static bool8 debug_sub_808D20C(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * 7 + 1); + Menu_PrintItems(2, 1, 7, gUnknown_Debug_083C18B8); + InitMenu(0, 1, 1, 7, 0, 28); + sFlagAndVarTest_WhichSubmenu = 7; + gMenuCallback = debug_sub_808D2BC; + return FALSE; +} + +static bool8 debug_sub_808D264(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * 5 + 1); + Menu_PrintItems(2, 1, 5, gDebug_0x83C1974); + InitMenu(0, 1, 1, 5, 0, 28); + sFlagAndVarTest_WhichSubmenu = 8; + gMenuCallback = debug_sub_808D2BC; + return FALSE; +} + +static bool8 debug_sub_808D2BC(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + debug_sub_808D308(sFlagAndVarTest_WhichSubmenu, cursorPos); + debug_sub_808D358(sFlagAndVarTest_WhichSubmenu); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static void debug_sub_808D308(u8 whichMenu, u8 cursorPos) +{ + if (gMain.newKeys & R_BUTTON) + { + if (!FlagGet(gUnknown_Debug_083C19C6[whichMenu][cursorPos])) + FlagSet(gUnknown_Debug_083C19C6[whichMenu][cursorPos]); + else + FlagClear(gUnknown_Debug_083C19C6[whichMenu][cursorPos]); + } +} + +static void debug_sub_808D358(u8 whichMenu) +{ + u8 i; + + for (i = 0; i < gUnknown_Debug_083C19BC[whichMenu]; i++) + { + PrintBool(28, 2 * i + 1, FlagGet(gUnknown_Debug_083C19C6[whichMenu][i]) ? 1 : 0); + } +} + +static bool8 ControlFlags_FH_OBJ_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 28, 2 * ARRAY_COUNT(sMenuActions_ControlFlags_FH_OBJ) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlFlags_FH_OBJ), sMenuActions_ControlFlags_FH_OBJ); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlFlags_FH_OBJ), 0, 27); + gMenuCallback = ControlFlags_FH_OBJ_HandleInput; + return FALSE; +} + +static bool8 ControlFlags_FH_OBJ_HandleInput(void) +{ + s8 input = Menu_ProcessInput(); + + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + gMenuCallback = sMenuActions_ControlFlags_FH_OBJ[input].func; + return FALSE; +} + +static bool8 ControlFlags_FH_OBJ00_08_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_ControlFlags_FH_OBJ00_08) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlFlags_FH_OBJ00_08), sMenuActions_ControlFlags_FH_OBJ00_08); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlFlags_FH_OBJ00_08), 0, 28); + sFlagAndVarTest_WhichSubmenu = 0; + gMenuCallback = ControlFlags_FH_OBJ_Subsubmenu_HandleInput; + return FALSE; +} + +static bool8 ControlFlags_FH_OBJ09_15_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * 7 + 1); + Menu_PrintItems(2, 1, 7, sMenuActions_ControlFlags_FH_OBJ09_15); + InitMenu(0, 1, 1, 7, 0, 28); + sFlagAndVarTest_WhichSubmenu = 1; + gMenuCallback = ControlFlags_FH_OBJ_Subsubmenu_HandleInput; + return FALSE; +} + +static bool8 ControlFlags_FH_OBJ_Subsubmenu_HandleInput(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + ControlFlags_FH_OBJ_FlagToggle(sFlagAndVarTest_WhichSubmenu, cursorPos); + ControlFlags_FH_OBJ_UpdateDisplay(sFlagAndVarTest_WhichSubmenu); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static void ControlFlags_FH_OBJ_FlagToggle(u8 whichMenu, u8 cursorPos) +{ + if (gMain.newKeys & R_BUTTON) + { + if (!FlagGet(sControlFlags_FH_OBJ_FlagsArrays[whichMenu][cursorPos])) + FlagSet(sControlFlags_FH_OBJ_FlagsArrays[whichMenu][cursorPos]); + else + FlagClear(sControlFlags_FH_OBJ_FlagsArrays[whichMenu][cursorPos]); + } +} + +static void ControlFlags_FH_OBJ_UpdateDisplay(u8 whichMenu) +{ + u8 i; + + for (i = 0; i < sControlFlags_FH_OBJ_CountsArray[whichMenu]; i++) + { + PrintBool(28, 2 * i + 1, FlagGet(sControlFlags_FH_OBJ_FlagsArrays[whichMenu][i]) ? 1 : 0); + } +} + +static bool8 ControlFlags_FH_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 28, 2 * ARRAY_COUNT(gUnknown_Debug_083C11CC) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C11CC), gUnknown_Debug_083C11CC); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C11CC), 0, 27); + gMenuCallback = debug_sub_808D650; + return FALSE; +} + +static bool8 debug_sub_808D650(void) +{ + s8 input = Menu_ProcessInput(); + + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + gMenuCallback = gUnknown_Debug_083C11CC[input].func; + return FALSE; +} + +static bool8 debug_sub_808D694(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1212) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1212), gUnknown_Debug_083C1212); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1212), 0, 28); + sFlagAndVarTest_WhichSubmenu = 0; + gMenuCallback = debug_sub_808D744; + return FALSE; +} + +static bool8 debug_sub_808D6EC(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * 7 + 1); + Menu_PrintItems(2, 1, 7, gUnknown_Debug_083C1288); + InitMenu(0, 1, 1, 7, 0, 28); + sFlagAndVarTest_WhichSubmenu = 1; + gMenuCallback = debug_sub_808D744; + return FALSE; +} + +static bool8 debug_sub_808D744(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + debug_sub_808D790(sFlagAndVarTest_WhichSubmenu, cursorPos); + debug_sub_808D7E0(sFlagAndVarTest_WhichSubmenu); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static void debug_sub_808D790(u8 whichMenu, u8 cursorPos) +{ + if (gMain.newKeys & R_BUTTON) + { + if (!FlagGet(gUnknown_Debug_083C12D2[whichMenu][cursorPos])) + FlagSet(gUnknown_Debug_083C12D2[whichMenu][cursorPos]); + else + FlagClear(gUnknown_Debug_083C12D2[whichMenu][cursorPos]); + } +} + +static void debug_sub_808D7E0(u8 whichMenu) +{ + u8 i; + + for (i = 0; i < gUnknown_Debug_083C12D0[whichMenu]; i++) + { + PrintBool(28, 2 * i + 1, FlagGet(gUnknown_Debug_083C12D2[whichMenu][i]) ? 1 : 0); + } +} + +static bool8 ControlFlags_BallVanishFlag_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 28, 2 * ARRAY_COUNT(gUnknown_Debug_083C1A78) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1A78), gUnknown_Debug_083C1A78); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1A78), 0, 27); + gMenuCallback = debug_sub_808D894; + return FALSE; +} + +static bool8 debug_sub_808D894(void) +{ + s8 input = Menu_ProcessInput(); + + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + gMenuCallback = gUnknown_Debug_083C1A78[input].func; + return FALSE; +} + +static bool8 debug_sub_808D8D8(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1A9C) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1A9C), gUnknown_Debug_083C1A9C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1A9C), 0, 28); + sFlagAndVarTest_WhichSubmenu = 0; + gMenuCallback = debug_sub_808D930; + return FALSE; +} + +static bool8 debug_sub_808D930(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + debug_sub_808D97C(sFlagAndVarTest_WhichSubmenu, cursorPos); + debug_sub_808D9CC(sFlagAndVarTest_WhichSubmenu); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static void debug_sub_808D97C(u8 whichMenu, u8 cursorPos) +{ + if (gMain.newKeys & R_BUTTON) + { + if (!FlagGet(gUnknown_Debug_083C1AAE[whichMenu][cursorPos])) + FlagSet(gUnknown_Debug_083C1AAE[whichMenu][cursorPos]); + else + FlagClear(gUnknown_Debug_083C1AAE[whichMenu][cursorPos]); + } +} + +static void debug_sub_808D9CC(u8 whichMenu) +{ + u8 i; + + for (i = 0; i < gUnknown_Debug_083C1AAC[whichMenu]; i++) + { + PrintBool(28, 2 * i + 1, FlagGet(gUnknown_Debug_083C1AAE[whichMenu][i]) ? 1 : 0); + } +} + +static bool8 ControlWorks_AnsWork_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_ControlEvents_AnsWork) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlEvents_AnsWork), sMenuActions_ControlEvents_AnsWork); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlEvents_AnsWork), 0, 28); + gMenuCallback = ControlWorks_AnsWork_HandleInput; + return FALSE; +} + +static bool8 ControlWorks_AnsWork_HandleInput(void) +{ + s8 input = Menu_ProcessInput(); + /*s8 cursorPos = */Menu_GetCursorPos(); + + ControlWorks_AnsWork_AdjustRESULT(); + ControlWorks_AnsWork_PrintRESULT(); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static void ControlWorks_AnsWork_PrintRESULT(void) +{ + PrintUnsignedShort(24, 1, gSpecialVar_Result); +} + +static void ControlWorks_AnsWork_AdjustRESULT(void) +{ + u16 delta; + + if (gMain.newKeys & R_BUTTON) + { + delta = +1; + } + else if (gMain.newKeys & L_BUTTON) + { + delta = -1; + } + else + return; + gSpecialVar_Result += delta; +} + +static bool8 ControlWorks_SaveWork_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 24, 2 * ARRAY_COUNT(sMenuAction_ControlWorks_SaveWork) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuAction_ControlWorks_SaveWork), sMenuAction_ControlWorks_SaveWork); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuAction_ControlWorks_SaveWork), 0, 23); + gMenuCallback = ControlWorks_SaveWork_HandleInput; + return FALSE; +} + +static bool8 ControlWorks_SaveWork_HandleInput(void) +{ + s8 input = Menu_ProcessInput(); + + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + gMenuCallback = sMenuAction_ControlWorks_SaveWork[input].func; + return FALSE; +} + +static bool8 ControlWorks_SaveWork_Town_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_Town) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_Town), sMenuActions_SaveWork_Town); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_Town), 0, 28); + sFlagAndVarTest_WhichSubmenu = 0; + gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput; + return FALSE; +} + +static bool8 ControlWorks_SaveWork_City_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_City) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_City), sMenuActions_SaveWork_City); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_City), 0, 28); + sFlagAndVarTest_WhichSubmenu = 1; + gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput; + return FALSE; +} + +static bool8 ControlWorks_SaveWork_Route101To109_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_Route101To109) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route101To109), sMenuActions_SaveWork_Route101To109); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route101To109), 0, 28); + sFlagAndVarTest_WhichSubmenu = 2; + gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput; + return FALSE; +} + +static bool8 ControlWorks_SaveWork_Route110To118_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_Route110To118) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route110To118), sMenuActions_SaveWork_Route110To118); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route110To118), 0, 28); + sFlagAndVarTest_WhichSubmenu = 3; + gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput; + return FALSE; +} + +static bool8 ControlWorks_SaveWork_Route119To127_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_Route119To127) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route119To127), sMenuActions_SaveWork_Route119To127); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route119To127), 0, 28); + sFlagAndVarTest_WhichSubmenu = 4; + gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput; + return FALSE; +} + +static bool8 ControlWorks_SaveWork_Route128To134_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_Route128To134) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route128To134), sMenuActions_SaveWork_Route128To134); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route128To134), 0, 28); + sFlagAndVarTest_WhichSubmenu = 5; + gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput; + return FALSE; +} + +static bool8 ControlWorks_SaveWork_RoomTown_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * 6 + 1); + Menu_PrintItems(2, 1, 6, sMenuActions_SaveWork_RoomTown); // overflows into the next menu + InitMenu(0, 1, 1, 6, 0, 28); + sFlagAndVarTest_WhichSubmenu = 6; + gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput; + return FALSE; +} + +static bool8 ControlWorks_SaveWork_RoomCity_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_RoomCity) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_RoomCity), sMenuActions_SaveWork_RoomCity); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_RoomCity), 0, 28); + sFlagAndVarTest_WhichSubmenu = 7; + gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput; + return FALSE; +} + +static bool8 ControlWorks_SaveWork_Dungeon_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_Dungeon) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_Dungeon), sMenuActions_SaveWork_Dungeon); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_Dungeon), 0, 28); + sFlagAndVarTest_WhichSubmenu = 8; + gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput; + return FALSE; +} + +static bool8 ControlWorks_SaveWork_Subsubmenu_HandleInput(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + debug_sub_808DF64(sFlagAndVarTest_WhichSubmenu, cursorPos); + debug_sub_808DF04(sFlagAndVarTest_WhichSubmenu); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static void debug_sub_808DF04(u8 whichMenu) +{ + u8 i; + + for (i = 0; i < gUnknown_Debug_083C457C[whichMenu]; i++) + { + PrintUnsignedShort(24, 2 * i + 1, VarGet(gUnknown_Debug_083C4586[whichMenu][i])); + } +} + +static void debug_sub_808DF64(u8 whichMenu, u8 cursorPos) +{ + u16 delta; + + if (gMain.newKeys & R_BUTTON) + delta = +1; + else if (gMain.newKeys & L_BUTTON) + delta = -1; + else + return; + VarSet(gUnknown_Debug_083C4586[whichMenu][cursorPos], VarGet(gUnknown_Debug_083C4586[whichMenu][cursorPos]) + delta); +} + +static bool8 ControlWorks_SaveWorkPart2_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 24, 2 * ARRAY_COUNT(sMenuActions_ControlWorks_SaveWorkPart2) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlWorks_SaveWorkPart2), sMenuActions_ControlWorks_SaveWorkPart2); + InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlWorks_SaveWorkPart2), 0, 23); + gMenuCallback = ControlWorks_SaveWorkPart2_HandleInput; + return FALSE; +} + +static bool8 ControlWorks_SaveWorkPart2_HandleInput(void) +{ + s8 input = Menu_ProcessInput(); + + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + gMenuCallback = sMenuActions_ControlWorks_SaveWorkPart2[input].func; + return FALSE; +} + +static bool8 ControlWorks_SaveWorkPart2_SP_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * 6 + 1); + Menu_PrintItems(2, 1, 6, gUnknown_Debug_083C3AA0); + InitMenu(0, 1, 1, 6, 0, 28); + sFlagAndVarTest_WhichSubmenu = 0; + gMenuCallback = debug_sub_808E264; + return FALSE; +} + +static bool8 ControlWorks_SaveWorkPart2_RoomR110Part1TrickHouse_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * 5 + 1); + Menu_PrintItems(2, 1, 5, gUnknown_Debug_83C3AE0); + InitMenu(0, 1, 1, 5, 0, 28); + sFlagAndVarTest_WhichSubmenu = 1; + gMenuCallback = debug_sub_808E264; + return FALSE; +} + +static bool8 ControlWorks_SaveWorkPart2_RoomR110Part2_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_83C3B28) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_83C3B28), gUnknown_Debug_83C3B28); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_83C3B28), 0, 28); + sFlagAndVarTest_WhichSubmenu = 2; + gMenuCallback = debug_sub_808E264; + return FALSE; +} + +static bool8 ControlWorks_SaveWorkPart2_RoomLoad_InitSubsubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * 2 + 1); + Menu_PrintItems(2, 1, 2, gUnknown_Debug_83C3B70); + InitMenu(0, 1, 1, 2, 0, 28); + sFlagAndVarTest_WhichSubmenu = 3; + gMenuCallback = debug_sub_808E264; + return FALSE; +} + +static bool8 debug_sub_808E1B4(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_83C3BB8) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_83C3BB8), gUnknown_Debug_83C3BB8); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_83C3BB8), 0, 28); + sFlagAndVarTest_WhichSubmenu = 4; + gMenuCallback = debug_sub_808E264; + return FALSE; +} + +static bool8 debug_sub_808E20C(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * 6 + 1); + Menu_PrintItems(2, 1, 6, gUnknown_Debug_83C3C00); + InitMenu(0, 1, 1, 6, 0, 28); + sFlagAndVarTest_WhichSubmenu = 5; + gMenuCallback = debug_sub_808E264; + return FALSE; +} + +static bool8 debug_sub_808E264(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + debug_sub_808E310(sFlagAndVarTest_WhichSubmenu, cursorPos); + debug_sub_808E2B0(sFlagAndVarTest_WhichSubmenu); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static void debug_sub_808E2B0(u8 whichMenu) +{ + u8 i; + + for (i = 0; i < sControlWorks_SaveWork_CountsArray[whichMenu]; i++) + { + PrintUnsignedShort(24, 2 * i + 1, VarGet(sControlWorks_SaveWork_ItemArrays[whichMenu][i])); + } +} + +static void debug_sub_808E310(u8 whichMenu, u8 cursorPos) +{ + u16 delta; + + if (gMain.newKeys & R_BUTTON) + delta = +1; + else if (gMain.newKeys & L_BUTTON) + delta = -1; + else + return; + VarSet(sControlWorks_SaveWork_ItemArrays[whichMenu][cursorPos], VarGet(sControlWorks_SaveWork_ItemArrays[whichMenu][cursorPos]) + delta); +} + +static bool8 ControlWorks_SysWork_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 24, 2 * ARRAY_COUNT(gUnknown_Debug_083C32AC) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C32AC), gUnknown_Debug_083C32AC); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C32AC), 0, 23); + gMenuCallback = debug_sub_808E3BC; + return FALSE; +} + +static bool8 debug_sub_808E3BC(void) +{ + s8 input = Menu_ProcessInput(); + + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + gMenuCallback = gUnknown_Debug_083C32AC[input].func; + return FALSE; +} + +static bool8 debug_sub_808E400(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C347C) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C347C), gUnknown_Debug_083C347C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C347C), 0, 28); + sFlagAndVarTest_WhichSubmenu = 0; + gMenuCallback = debug_sub_808E5B8; + return FALSE; +} + +static bool8 debug_sub_808E458(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C3494) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C3494), gUnknown_Debug_083C3494); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C3494), 0, 28); + sFlagAndVarTest_WhichSubmenu = 1; + gMenuCallback = debug_sub_808E5B8; + return FALSE; +} + +static bool8 debug_sub_808E4B0(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C34A4) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C34A4), gUnknown_Debug_083C34A4); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C34A4), 0, 28); + sFlagAndVarTest_WhichSubmenu = 2; + gMenuCallback = debug_sub_808E5B8; + return FALSE; +} + +static bool8 debug_sub_808E508(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C34D4) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C34D4), gUnknown_Debug_083C34D4); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C34D4), 0, 28); + sFlagAndVarTest_WhichSubmenu = 3; + gMenuCallback = debug_sub_808E5B8; + return FALSE; +} + +static bool8 debug_sub_808E560(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C351C) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C351C), gUnknown_Debug_083C351C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C351C), 0, 28); + sFlagAndVarTest_WhichSubmenu = 4; + gMenuCallback = debug_sub_808E5B8; + return FALSE; +} + +static bool8 debug_sub_808E5B8(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + debug_sub_808E604(sFlagAndVarTest_WhichSubmenu, cursorPos); + debug_sub_808E660(sFlagAndVarTest_WhichSubmenu); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static void debug_sub_808E604(u8 whichMenu, u8 cursorPos) +{ + u16 delta; + + if (gMain.newAndRepeatedKeys & R_BUTTON) + delta = +1; + else if (gMain.newAndRepeatedKeys & L_BUTTON) + delta = -1; + else + return; + VarSet(gUnknown_Debug_083C354A[whichMenu][cursorPos], VarGet(gUnknown_Debug_083C354A[whichMenu][cursorPos]) + delta); +} + +static void debug_sub_808E660(u8 whichMenu) +{ + u8 i; + + for (i = 0; i < gUnknown_Debug_083C3544[whichMenu]; i++) + { + PrintUnsignedShort(24, 2 * i + 1, VarGet(gUnknown_Debug_083C354A[whichMenu][i])); + } +} + +static bool8 ControlWorks_LocalWork_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 24, 2 * ARRAY_COUNT(gUnknown_Debug_083C4644) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C4644), gUnknown_Debug_083C4644); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C4644), 0, 23); + gMenuCallback = debug_sub_808E710; + return FALSE; +} + +static bool8 debug_sub_808E710(void) +{ + s8 input = Menu_ProcessInput(); + + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + gMenuCallback = gUnknown_Debug_083C4644[input].func; + return FALSE; +} + +static bool8 debug_sub_808E754(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C470C) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C470C), gUnknown_Debug_083C470C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C470C), 0, 28); + sFlagAndVarTest_WhichSubmenu = 0; + gMenuCallback = debug_sub_808E804; + return FALSE; +} + +static bool8 debug_sub_808E7AC(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C4754C) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C4754C), gUnknown_Debug_083C4754C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C4754C), 0, 28); + sFlagAndVarTest_WhichSubmenu = 1; + gMenuCallback = debug_sub_808E804; + return FALSE; +} + +static bool8 debug_sub_808E804(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + debug_sub_808E850(sFlagAndVarTest_WhichSubmenu, cursorPos); + debug_sub_808E8AC(sFlagAndVarTest_WhichSubmenu); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static void debug_sub_808E850(u8 whichMenu, u8 cursorPos) +{ + u16 delta; + + if (gMain.newKeys & R_BUTTON) + delta = +1; + else if (gMain.newKeys & L_BUTTON) + delta = -1; + else + return; + VarSet(gUnknown_Debug_083C478E[whichMenu][cursorPos], VarGet(gUnknown_Debug_083C478E[whichMenu][cursorPos]) + delta); +} + +static void debug_sub_808E8AC(u8 whichMenu) +{ + u8 i; + + for (i = 0; i < gUnknown_Debug_083C478C[whichMenu]; i++) + { + PrintUnsignedShort(24, 2 * i + 1, VarGet(gUnknown_Debug_083C478E[whichMenu][i])); + } +} + +static bool8 ControlWorks_ObjWork_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 24, 2 * ARRAY_COUNT(gUnknown_Debug_083C35C4) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C35C4), gUnknown_Debug_083C35C4); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C35C4), 0, 23); + gMenuCallback = debug_sub_808E95C; + return FALSE; +} + +static bool8 debug_sub_808E95C(void) +{ + s8 input = Menu_ProcessInput(); + + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + gMenuCallback = gUnknown_Debug_083C35C4[input].func; + return FALSE; +} + +static bool8 debug_sub_808E9A0(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C369C) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C369C), gUnknown_Debug_083C369C); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C369C), 0, 28); + sFlagAndVarTest_WhichSubmenu = 0; + gMenuCallback = debug_sub_808EA50; + return FALSE; +} + +static bool8 debug_sub_808E9F8(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C36E4) + 1); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C36E4), gUnknown_Debug_083C36E4); + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C36E4), 0, 28); + sFlagAndVarTest_WhichSubmenu = 1; + gMenuCallback = debug_sub_808EA50; + return FALSE; +} + +static bool8 debug_sub_808EA50(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + debug_sub_808EAFC(sFlagAndVarTest_WhichSubmenu, cursorPos); + debug_sub_808EA9C(sFlagAndVarTest_WhichSubmenu); + if (input == -2) + return FALSE; + if (input == -1) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +static void debug_sub_808EA9C(u8 whichMenu) +{ + u8 i; + + for (i = 0; i < gUnknown_Debug_083C371C[whichMenu]; i++) + { + PrintUnsignedShort(24, 2 * i + 1, VarGet(gUnknown_Debug_083C371E[whichMenu][i])); + } +} + +static void debug_sub_808EAFC(u8 whichMenu, u8 cursorPos) +{ + u16 delta; + + if (gMain.newKeys & R_BUTTON) + delta = +1; + else if (gMain.newKeys & L_BUTTON) + delta = -1; + else + return; + VarSet(gUnknown_Debug_083C371E[whichMenu][cursorPos], VarGet(gUnknown_Debug_083C371E[whichMenu][cursorPos]) + delta); +} + +static bool8 TrickRelated_Level_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 12, 2 * ARRAY_COUNT(gUnknown_Debug_083C47F0) + 3); + Menu_PrintText(gUnknown_Debug_083C47B2, 1, 1); + Menu_PrintItems(2, 3, ARRAY_COUNT(gUnknown_Debug_083C47F0), gUnknown_Debug_083C47F0); + InitMenu(0, 1, 3, ARRAY_COUNT(gUnknown_Debug_083C47F0), 0, 11); + gMenuCallback = debug_sub_808EC10; + return FALSE; +} + +static bool8 TrickRelated_TrickMaster_InitSubmenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 13, 2 * ARRAY_COUNT(gUnknown_Debug_083C4888) + 3); + Menu_PrintText(gUnknown_Debug_083C4830, 1, 1); + Menu_PrintItems(2, 3, ARRAY_COUNT(gUnknown_Debug_083C4888), gUnknown_Debug_083C4888); + InitMenu(0, 1, 3, ARRAY_COUNT(gUnknown_Debug_083C4888), 0, 12); + gMenuCallback = debug_sub_808EC5C; + return FALSE; +} + +static bool8 debug_sub_808EC10(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + if (input == -2) + { + return FALSE; + } + if (input == -1) + { + return FALSE; + } + gSaveBlock1.vars[VAR_TRICK_HOUSE_ROOMS_COMPLETED - VARS_START] = cursorPos; + CloseMenu(); + return TRUE; +} + +static bool8 debug_sub_808EC5C(void) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + if (input == -2) + { + return FALSE; + } + if (input == -1) + { + return FALSE; + } + VarSet(VAR_TRICK_HOUSE_ENTRANCE_STATE_3, cursorPos); + CloseMenu(); + return TRUE; +} + +static bool8 PreviewGraphics_Show(void) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); + gMenuCallback = debug_sub_808ECD0; + return FALSE; +} + +static bool8 debug_sub_808ECD0(void) +{ + if (!UpdatePaletteFade()) + { + CloseMenu(); + PrepareDebugOverlayBeforeShowingContestPainting(2); + SetMainCallback2(CB2_ContestPainting); + gMain.savedCallback = debug_sub_808B868; + return TRUE; + } + return FALSE; +} + +static bool8 DummyMenuAction(void) +{ + return FALSE; +} + +static void PicTest_SelectPokemon(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (sPicTest_Species != SPECIES_BULBASAUR) + sPicTest_Species--; + } + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (sPicTest_Species != SPECIES_CHIMECHO) + sPicTest_Species++; + } + if (gMain.newAndRepeatedKeys & L_BUTTON) + { + if (sPicTest_Species >= SPECIES_BULBASAUR + 10) + sPicTest_Species -= 10; + else + sPicTest_Species = SPECIES_BULBASAUR; + } + if (gMain.newAndRepeatedKeys & R_BUTTON) + { + if (sPicTest_Species <= SPECIES_CHIMECHO - 10) + sPicTest_Species += 10; + else + sPicTest_Species = SPECIES_CHIMECHO; + } +} + +static void PicTest_SelectPersonality(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (sPicTest_Personality != 0) + sPicTest_Personality--; + } + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (sPicTest_Personality != UINT32_MAX) + sPicTest_Personality++; + } + if (gMain.newAndRepeatedKeys & L_BUTTON) + { + if (sPicTest_Personality >= 0x10) + sPicTest_Personality -= 0x10; + else + sPicTest_Personality = 0; + } + if (gMain.newAndRepeatedKeys & R_BUTTON) + { + if (sPicTest_Personality <= UINT32_MAX - 0x10) + sPicTest_Personality += 0x10; + else + sPicTest_Personality = UINT32_MAX; + } + if ((gMain.newKeys & (L_BUTTON | R_BUTTON)) == (L_BUTTON | R_BUTTON)) + { + sPicTest_Personality = UINT32_MAX; + } +} + +static void ContestPicTest_SelectContestType(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (sPicTest_ContestType != CONTEST_COOL + 1) + sPicTest_ContestType--; + } + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (sPicTest_ContestType != CONTEST_TOUGH + 1) + sPicTest_ContestType++; + } + if (gMain.newAndRepeatedKeys & L_BUTTON) + sPicTest_ContestType = CONTEST_COOL + 1; + if (gMain.newAndRepeatedKeys & R_BUTTON) + sPicTest_ContestType = CONTEST_TOUGH + 1; +} + +static void MuseumArtPicTest_SelectTitleType(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (sPicTest_MuseumArtTitleType != 1) + sPicTest_MuseumArtTitleType--; + } + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (sPicTest_MuseumArtTitleType != 15) + sPicTest_MuseumArtTitleType++; + } + if (gMain.newAndRepeatedKeys & L_BUTTON) + { + if (sPicTest_MuseumArtTitleType >= 11) + sPicTest_MuseumArtTitleType -= 10; + else + sPicTest_MuseumArtTitleType = 0; // Causes underflow when pressing left on the dpad shortly thereafter. + } + if (gMain.newAndRepeatedKeys & R_BUTTON) + { + if (sPicTest_MuseumArtTitleType <= 5) + sPicTest_MuseumArtTitleType += 10; + else + sPicTest_MuseumArtTitleType = 15; + } +} + +static void PreviewPicTest_SelectType(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (sPicTest_PreviewType != 1) + sPicTest_PreviewType--; + } + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (sPicTest_PreviewType != 15) + sPicTest_PreviewType++; + } + if (gMain.newAndRepeatedKeys & L_BUTTON) + { + if (sPicTest_PreviewType >= 11) + sPicTest_PreviewType -= 10; + else + sPicTest_PreviewType = 0; // Causes underflow when pressing left on the dpad shortly thereafter. + } + if (gMain.newAndRepeatedKeys & R_BUTTON) + { + if (sPicTest_PreviewType <= 5) + sPicTest_PreviewType += 10; + else + sPicTest_PreviewType = 15; + } +} + +#ifdef NONMATCHING +static void PicTest_Redraw(u8 a0) +{ + u8 i; + u8 digit; + u16 species; + + switch (a0) + { + case 0: + case 1: + case 2: + for (i = 0; i < 8; i++) + { + digit = (sPicTest_Personality >> (4 * (7 - i))) & 0xf; + if (digit < 10) + sPicTest_StringBuffer[i] = digit + CHAR_0; + else + sPicTest_StringBuffer[i] = digit + CHAR_A - 10; + } + sPicTest_StringBuffer[i] = EOS; + Menu_PrintText(sPicTest_StringBuffer, 12, 5); + break; + } + for (i = 0; i < POKEMON_NAME_LENGTH; i++) + { + sPicTest_StringBuffer[i + 1] = CHAR_SPACE; + } + + for (i = 0, species = sPicTest_Species; gSpeciesNames[species][i] != EOS && i < POKEMON_NAME_LENGTH; i++) + { + sPicTest_StringBuffer[i + 1] = gSpeciesNames[species][i]; + } + + sPicTest_StringBuffer[0] = 0xB1; + sPicTest_StringBuffer[POKEMON_NAME_LENGTH + 1] = 0xB2; + sPicTest_StringBuffer[POKEMON_NAME_LENGTH + 2] = EOS; + switch (a0) + { + case 0: + case 1: + case 2: + Menu_PrintText(sPicTest_StringBuffer, 8, 1); + break; + default: + Menu_PrintText(sPicTest_StringBuffer, 12, 1); + break; + } + sPicTest_StringBuffer[3] = EOS; + sPicTest_StringBuffer[0] = sPicTest_Species / 100 + CHAR_0; + sPicTest_StringBuffer[1] = (sPicTest_Species % 100) / 10 + CHAR_0; + sPicTest_StringBuffer[2] = sPicTest_Species % 10 + CHAR_0; + Menu_PrintText(sPicTest_StringBuffer, 12, 3); + + switch (a0) + { + case 0: + sPicTest_StringBuffer[0] = sPicTest_ContestType / 100 + CHAR_0; + sPicTest_StringBuffer[1] = (sPicTest_ContestType % 100) / 10 + CHAR_0; + sPicTest_StringBuffer[2] = sPicTest_ContestType % 10 + CHAR_0; + Menu_PrintText(sPicTest_StringBuffer, 12, 7); + break; + case 1: + sPicTest_StringBuffer[0] = sPicTest_MuseumArtTitleType / 100 + CHAR_0; + sPicTest_StringBuffer[1] = (sPicTest_MuseumArtTitleType % 100) / 10 + CHAR_0; + sPicTest_StringBuffer[2] = sPicTest_MuseumArtTitleType % 10 + CHAR_0; + Menu_PrintText(sPicTest_StringBuffer, 12, 7); + break; + case 2: + sPicTest_StringBuffer[0] = sPicTest_PreviewType / 100 + CHAR_0; + sPicTest_StringBuffer[1] = (sPicTest_PreviewType % 100) / 10 + CHAR_0; + sPicTest_StringBuffer[2] = sPicTest_PreviewType % 10 + CHAR_0; + Menu_PrintText(sPicTest_StringBuffer, 12, 7); + break; + } +} +#else +NAKED void PicTest_Redraw(u8 a0) +{ + asm("\tpush\t{r4, r5, r6, r7, lr}\n" + "\tmov\tr7, r8\n" + "\tpush\t{r7}\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr6, r0, #0x18\n" + "\tcmp\tr6, #0x2\n" + "\tbgt\t._653\t@cond_branch\n" + "\tcmp\tr6, #0\n" + "\tblt\t._653\t@cond_branch\n" + "\tmov\tr3, #0x0\n" + "\tldr\tr0, ._656 @ sPicTest_Personality\n" + "\tmov\tr8, r0\n" + "\tldr\tr4, ._656 + 4 @ sPicTest_StringBuffer\n" + "\tmov\tr7, #0x7\n" + "\tmov\tr5, #0xf\n" + "._658:\n" + "\tsub\tr0, r7, r3\n" + "\tlsl\tr0, r0, #0x2\n" + "\tmov\tr1, r8\n" + "\tldr\tr2, [r1]\n" + "\tLSR\tr2, r0\n" + "\tand\tr2, r2, r5\n" + "\tcmp\tr2, #0x9\n" + "\tbhi\t._654\t@cond_branch\n" + "\tadd\tr1, r3, r4\n" + "\tadd\tr0, r2, #0\n" + "\tadd\tr0, r0, #0xa1\n" + "\tb\t._655\n" + "._657:\n" + "\t.align\t2, 0\n" + "._656:\n" + "\t.word\tsPicTest_Personality\n" + "\t.word\tsPicTest_StringBuffer\n" + "._654:\n" + "\tadd\tr1, r3, r4\n" + "\tadd\tr0, r2, #0\n" + "\tsub\tr0, r0, #0x4f\n" + "._655:\n" + "\tstrb\tr0, [r1]\n" + "\tadd\tr0, r3, #1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr3, r0, #0x18\n" + "\tcmp\tr3, #0x7\n" + "\tbls\t._658\t@cond_branch\n" + "\tldr\tr0, ._666 @ sPicTest_StringBuffer\n" + "\tmov\tr1, #0xff\n" + "\tstrb\tr1, [r0, #0x8]\n" + "\tmov\tr1, #0xc\n" + "\tmov\tr2, #0x5\n" + "\tbl\tMenu_PrintText\n" + "._653:\n" + "\tmov\tr3, #0x0\n" + "\tldr\tr7, ._666 @ sPicTest_StringBuffer\n" + "\tldr\tr5, ._666 + 4 @ sPicTest_Species\n" + "\tldr\tr2, ._666 + 8 @ gSpeciesNames\n" + "\tmov\tr8, r2\n" + "\tadd\tr4, r7, #0\n" + "\tmov\tr2, #0x0\n" + "._659:\n" + "\tadd\tr1, r3, #1\n" + "\tadd\tr0, r1, r4\n" + "\tstrb\tr2, [r0]\n" + "\tlsl\tr1, r1, #0x18\n" + "\tlsr\tr3, r1, #0x18\n" + "\tcmp\tr3, #0x9\n" + "\tbls\t._659\t@cond_branch\n" + "\tmov\tr3, #0x0\n" + "\tldrh\tr2, [r5]\n" + "\tmov\tr0, #0xb\n" + "\tadd\tr1, r2, #0\n" + "\tmul\tr1, r1, r0\n" + "\tmov\tr2, r8\n" + "\tadd\tr0, r1, r2\n" + "\tldrb\tr0, [r0]\n" + "\tcmp\tr0, #0xff\n" + "\tbeq\t._661\t@cond_branch\n" + "\tldr\tr0, ._666 @ sPicTest_StringBuffer\n" + "\tmov\tip, r0\n" + "\tmov\tr5, r8\n" + "\tadd\tr4, r1, #0\n" + "._662:\n" + "\tadd\tr1, r3, #1\n" + "\tmov\tr0, ip\n" + "\tadd\tr2, r1, r0\n" + "\tadd\tr0, r3, r4\n" + "\tadd\tr0, r0, r5\n" + "\tldrb\tr0, [r0]\n" + "\tstrb\tr0, [r2]\n" + "\tlsl\tr1, r1, #0x18\n" + "\tlsr\tr3, r1, #0x18\n" + "\tadd\tr0, r3, r4\n" + "\tadd\tr0, r0, r5\n" + "\tldrb\tr0, [r0]\n" + "\tcmp\tr0, #0xff\n" + "\tbeq\t._661\t@cond_branch\n" + "\tcmp\tr3, #0x9\n" + "\tbls\t._662\t@cond_branch\n" + "._661:\n" + "\tmov\tr0, #0xb1\n" + "\tstrb\tr0, [r7]\n" + "\tmov\tr0, #0xb2\n" + "\tstrb\tr0, [r7, #0xb]\n" + "\tmov\tr0, #0xff\n" + "\tstrb\tr0, [r7, #0xc]\n" + "\tcmp\tr6, #0x2\n" + "\tbgt\t._664\t@cond_branch\n" + "\tcmp\tr6, #0\n" + "\tblt\t._664\t@cond_branch\n" + "\tadd\tr0, r7, #0\n" + "\tmov\tr1, #0x8\n" + "\tmov\tr2, #0x1\n" + "\tbl\tMenu_PrintText\n" + "\tb\t._665\n" + "._667:\n" + "\t.align\t2, 0\n" + "._666:\n" + "\t.word\tsPicTest_StringBuffer\n" + "\t.word\tsPicTest_Species\n" + "\t.word\tgSpeciesNames\n" + "._664:\n" + "\tldr\tr0, ._672 @ sPicTest_StringBuffer\n" + "\tmov\tr1, #0xc\n" + "\tmov\tr2, #0x1\n" + "\tbl\tMenu_PrintText\n" + "._665:\n" + "\tldr\tr5, ._672 @ sPicTest_StringBuffer\n" + "\tmov\tr0, #0xff\n" + "\tstrb\tr0, [r5, #0x3]\n" + "\tldr\tr4, ._672 + 4 @ sPicTest_Species\n" + "\tldrh\tr0, [r4]\n" + "\tmov\tr1, #0x64\n" + "\tbl\t__udivsi3\n" + "\tadd\tr0, r0, #0xa1\n" + "\tstrb\tr0, [r5]\n" + "\tldrh\tr0, [r4]\n" + "\tmov\tr1, #0x64\n" + "\tbl\t__umodsi3\n" + "\tlsl\tr0, r0, #0x10\n" + "\tlsr\tr0, r0, #0x10\n" + "\tmov\tr1, #0xa\n" + "\tbl\t__udivsi3\n" + "\tadd\tr0, r0, #0xa1\n" + "\tstrb\tr0, [r5, #0x1]\n" + "\tldrh\tr0, [r4]\n" + "\tmov\tr1, #0xa\n" + "\tbl\t__umodsi3\n" + "\tadd\tr0, r0, #0xa1\n" + "\tstrb\tr0, [r5, #0x2]\n" + "\tadd\tr0, r5, #0\n" + "\tmov\tr1, #0xc\n" + "\tmov\tr2, #0x3\n" + "\tbl\tMenu_PrintText\n" + "\tcmp\tr6, #0x1\n" + "\tbeq\t._668\t@cond_branch\n" + "\tcmp\tr6, #0x1\n" + "\tbgt\t._669\t@cond_branch\n" + "\tcmp\tr6, #0\n" + "\tbeq\t._670\t@cond_branch\n" + "\tb\t._679\n" + "._673:\n" + "\t.align\t2, 0\n" + "._672:\n" + "\t.word\tsPicTest_StringBuffer\n" + "\t.word\tsPicTest_Species\n" + "._669:\n" + "\tcmp\tr6, #0x2\n" + "\tbeq\t._674\t@cond_branch\n" + "\tb\t._679\n" + "._670:\n" + "\tldr\tr4, ._677 @ sPicTest_ContestType\n" + "\tb\t._676\n" + "._678:\n" + "\t.align\t2, 0\n" + "._677:\n" + "\t.word\tsPicTest_ContestType\n" + "._668:\n" + "\tldr\tr4, ._680 @ sPicTest_MuseumArtTitleType\n" + "._676:\n" + "\tldrb\tr0, [r4]\n" + "\tmov\tr1, #0x64\n" + "\tbl\t__udivsi3\n" + "\tadd\tr0, r0, #0xa1\n" + "\tstrb\tr0, [r5]\n" + "\tldrb\tr0, [r4]\n" + "\tmov\tr1, #0x64\n" + "\tbl\t__umodsi3\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr0, r0, #0x18\n" + "\tmov\tr1, #0xa\n" + "\tbl\t__udivsi3\n" + "\tadd\tr0, r0, #0xa1\n" + "\tstrb\tr0, [r5, #0x1]\n" + "\tldrb\tr0, [r4]\n" + "\tmov\tr1, #0xa\n" + "\tbl\t__umodsi3\n" + "\tadd\tr0, r0, #0xa1\n" + "\tstrb\tr0, [r5, #0x2]\n" + "\tadd\tr0, r5, #0\n" + "\tmov\tr1, #0xc\n" + "\tmov\tr2, #0x7\n" + "\tbl\tMenu_PrintText\n" + "\tb\t._679\n" + "._681:\n" + "\t.align\t2, 0\n" + "._680:\n" + "\t.word\tsPicTest_MuseumArtTitleType\n" + "._674:\n" + "\tldr\tr4, ._682 @ sPicTest_PreviewType\n" + "\tldrb\tr0, [r4]\n" + "\tmov\tr1, #0x64\n" + "\tbl\t__udivsi3\n" + "\tadd\tr0, r0, #0xa1\n" + "\tstrb\tr0, [r5]\n" + "\tldrb\tr0, [r4]\n" + "\tmov\tr1, #0x64\n" + "\tbl\t__umodsi3\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr0, r0, #0x18\n" + "\tmov\tr1, #0xa\n" + "\tbl\t__udivsi3\n" + "\tadd\tr0, r0, #0xa1\n" + "\tstrb\tr0, [r5, #0x1]\n" + "\tldrb\tr0, [r4]\n" + "\tmov\tr1, #0xa\n" + "\tbl\t__umodsi3\n" + "\tadd\tr0, r0, #0xa1\n" + "\tstrb\tr0, [r5, #0x2]\n" + "\tadd\tr0, r5, #0\n" + "\tmov\tr1, #0xc\n" + "\tmov\tr2, #0x7\n" + "\tbl\tMenu_PrintText\n" + "._679:\n" + "\tpop\t{r3}\n" + "\tmov\tr8, r3\n" + "\tpop\t{r4, r5, r6, r7}\n" + "\tpop\t{r0}\n" + "\tbx\tr0\n" + "._683:\n" + "\t.align\t2, 0\n" + "._682:\n" + "\t.word\tsPicTest_PreviewType"); +} +#endif // NONMATCHING + +static void PrepareDebugOverlayBeforeShowingContestPainting(u8 a0) +{ + struct ContestEntry *contestEntry = &ewram15DE0; + contestEntry->species = sPicTest_Species; + contestEntry->otId = sPicTest_OTID; + contestEntry->personality = sPicTest_Personality; + switch (a0) + { + case 0: + ewram15DDF = 0; + ewram15DDE = 0; + contestEntry->contestType = sPicTest_ContestType - 1; + StringCopy(contestEntry->trainer_name, sDummyTrainerName); + StringCopy(contestEntry->pokemon_name, sDummyNickname); + break; + case 1: + ewram15DDF = 0; + ewram15DDE = 8; + contestEntry->contestType = sPicTest_MuseumArtTitleType - 1; + StringCopy(contestEntry->pokemon_name, sDummyNickname); + break; + case 2: + ewram15DDF = 1; + ewram15DDE = 8; + contestEntry->contestType = sPicTest_PreviewType - 1; + break; + case 3: + ewram15DDF = 0; + ewram15DDE = 8; + contestEntry->contestType = 0; + StringCopy(contestEntry->pokemon_name, sDummyNickname); + break; + case 4: + ewram15DDF = 0; + ewram15DDE = 8; + contestEntry->contestType = 3; + StringCopy(contestEntry->pokemon_name, sDummyNickname); + break; + case 5: + ewram15DDF = 0; + ewram15DDE = 8; + contestEntry->contestType = 9; + StringCopy(contestEntry->pokemon_name, sDummyNickname); + break; + } +} + +static void PrintBool(u8 a0, u8 a1, bool8 a2) +{ + if (a2 == FALSE) + sPicTest_StringBuffer[0] = CHAR_0; + else + sPicTest_StringBuffer[0] = CHAR_0 + 1; + sPicTest_StringBuffer[1] = EOS; + Menu_PrintText(sPicTest_StringBuffer, a0, a1); +} + +static void PrintUnsignedShort(u8 a0, u8 a1, u16 a2) +{ + sPicTest_StringBuffer[0] = a2 / 10000 + CHAR_0; + sPicTest_StringBuffer[1] = (a2 % 10000) / 1000 + CHAR_0; + sPicTest_StringBuffer[2] = (a2 % 1000) / 100 + CHAR_0; + sPicTest_StringBuffer[3] = (a2 % 100) / 10 + CHAR_0; + sPicTest_StringBuffer[4] = a2 % 10 + CHAR_0; + sPicTest_StringBuffer[5] = EOS; + Menu_PrintText(sPicTest_StringBuffer, a0, a1); +} + +void debug_nullsub_66(void) +{ +// This function likely serves as the entry point into this file. +} + +#endif // DEBUG diff --git a/src/debug/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c index ef3e0e66c..787e456d2 100644 --- a/src/debug/unknown_debug_menu.c +++ b/src/debug/unknown_debug_menu.c @@ -30,7 +30,7 @@ const struct MenuAction gUnknown_0842C29C[] = { {UnknownString_8thRound, sub_814A4B8} }; -int unref_sub_814A414(void) +int InitSogabeDebugMenu(void) { Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 0, 16, 18); diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index 6c94b0466..ed6a1d18d 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -1,11 +1,3752 @@ #if DEBUG #include "global.h" +#include "decompress.h" +#include "ewram.h" +#include "random.h" +#include "gba/flash_internal.h" +#include "constants/items.h" +#include "constants/species.h" +#include "constants/moves.h" +#include "constants/songs.h" +#include "debug.h" +#include "palette.h" +#include "scanline_effect.h" +#include "main.h" +#include "task.h" +#include "sprite.h" +#include "text.h" +#include "menu.h" +#include "script.h" +#include "overworld.h" +#include "data2.h" +#include "fieldmap.h" +#include "save.h" +#include "sound.h" +#include "pokedex.h" +#include "load_save.h" +#include "pokemon_storage_system.h" +#include "battle.h" +#include "battle_bg.h" +#include "item.h" +#include "pokemon_summary_screen.h" +#include "pokemon_icon.h" +#include "field_effect.h" + +struct WatanabeDebugMenuItemSubstruct { + u32 unk0; + u32 unk4; + u8 unk8; + u8 unk9; +}; + +struct WatanabeDebugMenuItem { + const u8 * text; + union { + u8 type1[2]; + u32 type2; + u8 type3; + const struct WatanabeDebugMenuItemSubstruct *type4; + } data; +}; + +struct WatanabeEwram17000 { + u8 fill0; + u8 unk1_0:4; + u8 unk1_4:1; + u8 unk1_5:3; + u8 unk2; + u8 unk3; + u8 fill4[5]; + u8 unk9; + u8 unkA; + u8 unkB; + u8 unkC; +}; + +struct WatanabeEwram18000 { + struct Pokemon pokemon; + u32 unk64[0x40]; + u32 unk164; + u8 unk168; + u8 unk169; + u8 unk16a; + u8 unk16b[259]; +}; + +struct WatanabeEwram18000_2 { + u16 unk0; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + u8 unk8; + u8 unk9; + u8 unkA; + struct PlttData unkC; + u16 unk10[16]; +}; + +#define eWatanabe17000 (*(struct WatanabeEwram17000 *)(gSharedMem + 0x17000)) +#define eWatanabe18000 (*(struct WatanabeEwram18000 *)(gSharedMem + 0x18000)) +#define eWatanabe18000_2 (*(struct WatanabeEwram18000_2 *)(gSharedMem + 0x18000)) EWRAM_DATA u8 gUnknown_Debug_20389EC[0x20] = { 0 }; EWRAM_DATA u8 gUnknown_Debug_2038A0C[0x10] = { 0 }; -EWRAM_DATA u8 gUnknown_Debug_2038A1C[4] = { 0 }; -EWRAM_DATA u8 gUnknown_Debug_2038A20[4] = { 0 }; +EWRAM_DATA struct WatanabeEwram18000 * gUnknown_Debug_2038A1C = NULL; +EWRAM_DATA struct WatanabeEwram18000_2 * gUnknown_Debug_2038A20 = NULL; + +u32 byte_3005E30; + +extern s8 gBattleTerrain; + +void debug_80C3A50(u8 taskId); +void debug_80C3D2C(u8 taskId); +void debug_80C4214(u8); +void debug_80C42B8(u8 taskId); +void debug_80C4348(u8 taskId); +void debug_80C43A8(u8 taskId); +void debug_80C44EC(u8 taskId); +void debug_80C4550(u8 taskId); +void debug_80C4694(void); +void debug_80C4704(void); +bool8 debug_80C4774(void); +void debug_80C47BC(u8 taskId); +void debug_80C48A0(u8 taskId); +void debug_80C4900(u8 taskId); +void debug_80C4A60(u8 taskId); +void debug_80C4AC4(u8 taskId); +void debug_80C4C44(u8); +void debug_80C4D14(u8 taskId); +void debug_80C4DB8(u8 taskId); +void debug_80C4E18(u8 taskId); +void debug_80C4F00(u8); +void debug_80C4F48(u8 taskId); +void debug_80C5038(u8 taskId); +void debug_80C5098(u8 taskId); +void debug_80C5158(u8 taskId); +void debug_80C5174(u8 taskId); +void debug_80C5190(u8 taskId); +void debug_80C51AC(u8 taskId); +void debug_80C51C8(u8 taskId); +void debug_80C51E4(u8 taskId); +void debug_80C53A4(u8 taskId); +void debug_80C53C0(u8 taskId); +void debug_80C53F0(u8 taskId); +void debug_80C55E4(u8 taskId); +void debug_80C5708(u8 taskId); +void debug_80C5C94(void); +void debug_80C5DEC(void); +void debug_80C5EF4(void); +void debug_80C5FFC(void); +void debug_80C627C(u8); +void debug_80C6384(void); +void debug_80C643C(void); +void debug_80C6544(u8); +void debug_80C689C(u8 *, const u8 *, u8); +void debug_80C6678(u8 *, u32, u8, u8); +void debug_80C68CC(u16, u8, u8, u8); +void debug_80C6B00(u8 taskId); +void debug_80C6CB8(u8 taskId); +void debug_80C6EE8(u8 taskId); +void debug_80C6FA8(u8 taskId); +void debug_80C71FC(u8 taskId); +void debug_80C7294(u8 taskId); +void debug_80C74E4(u8 taskId); +void debug_80C7584(struct Sprite *); +void debug_80C777C(u8 taskId); +void debug_80C7934(u8 taskId); +void debug_80C7A54(u8 taskId); +void debug_80C7B14(u8 taskId); +void debug_80C7D44(u8 taskId); +void debug_80C7DDC(u8 taskId); +void debug_80C802C(u8 taskId); + +#define SPRITETAG_WATANABE 0x1000 + +u8 byte_83F88EC[]; +u16 word_83F888C[]; + +struct SpriteSheet stru_83F8828[] = { + {byte_83F88EC, 0x800, SPRITETAG_WATANABE}, + {} +}; +struct SpritePalette stru_83F8838[] = { + {word_83F888C, SPRITETAG_WATANABE}, + {} +}; + +void debug_69(struct Sprite *sprite) +{ + +} + +void debug_80C35DC(void) +{ + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + REG_BG3CNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); + DmaFill32Defvars(3, 0, OAM, OAM_SIZE); + DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); + ResetPaletteFade(); + ScanlineEffect_Stop(); + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); // I really don't want palette fade here + FreeAllSpritePalettes(); + LoadSpriteSheet(stru_83F8828); + LoadSpritePalette(stru_83F8838); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gMenuTextWindowTemplate); +} + +void debug_80C36F4(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void debug_80C370C(void) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(debug_80C36F4); + } + + else + { + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + } +} + +void debug_80C373C(u8 taskId) +{ + DestroyTask(taskId); + ScriptContext2_Disable(); + SetMainCallback2(sub_80546F0); +} + +void debug_80C3758(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void debug_80C376C(u16 a0, u8 a1, u8 a2) +{ + u8 i; + u8 divresult; + u8 sp00[4]; + bool8 r4; + + for (i = 0; i < 3; i++) + sp00[i] = CHAR_SPACE; + sp00[3] = EOS; + + r4 = FALSE; + divresult = a0 / 100; + if (divresult) + { + sp00[0] = CHAR_0 + divresult; + r4 = TRUE; + } + + divresult = (a0 % 100) / 10; + if (divresult || r4) + { + sp00[1] = CHAR_0 + divresult; + } + + sp00[2] = CHAR_0 + ((a0 % 100) % 10); + + Menu_PrintText(sp00, a1, a2); +} + +void debug_80C3800(u16 a0, u8 a1, u8 a2) +{ + u8 sp00[11]; + u8 i; + + for (i = 0; i < 10; i++) + sp00[i] = CHAR_SPACE; + sp00[i] = EOS; + + for (i = 0; gSpeciesNames[a0][i] != EOS && i < 10; i++) + sp00[i] = gSpeciesNames[a0][i]; + + Menu_PrintText(sp00, a1, a2); +} + +u16 debug_80C3878(u8 a0, u16 a1) +{ + switch (a0) + { + default: + case 0: + if (a1 > SPECIES_BULBASAUR) + a1--; + else + a1 = NUM_SPECIES - 1; + break; + case 1: + if (a1 < NUM_SPECIES - 1) + a1++; + else + a1 = SPECIES_BULBASAUR; + break; + } + return a1; +} + +u16 debug_80C38B4(u8 a0, u16 a1) +{ + switch (a0) + { + default: + case 0: + if (a1) + a1--; + else + a1 = 0x52; + break; + case 1: + if (a1 < 0x52) + a1++; + else + a1 = 0; + break; + } + return a1; +} + +void debug_80C38E4(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4) +{ + u8 sp00[] = _("▶"); + Menu_BlankWindowRect(a1, a2, a1, a3); + if (a4) + Menu_PrintText(sp00, a1, a0); +} + +const u8 gUnknown_Debug_083F7FD6[] = {0x25, 0x20, 0x01, 0x08}; + +void debug_80C393C(void) +{ + ProgramFlashSectorAndVerify(30, (void *)gUnknown_Debug_083F7FD6); +} + +void InitWatanabeDebugMenu(void) +{ + switch (gMain.state) + { + default: + case 0: + save_serialize_map(); + sub_8125E2C(); + gMain.state = 1; + break; + case 1: + if (sub_8125E6C()) + gMain.state++; + break; + case 2: + PlaySE(SE_SAVE); + gMain.state++; + break; + case 3: + if (!IsSEPlaying()) + { + ScriptContext2_Disable(); + SetMainCallback2(sub_80546F0); + } + break; + } +} + +void InitSizeComparison(void) +{ + u8 taskId; + u16 imeBak; + debug_80C35DC(); + gReservedSpritePaletteCount = 1; + LoadPalette(gUnknown_Debug_20389EC, 0x100, 0x20); + + imeBak = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = imeBak; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); + SetVBlankCallback(debug_80C3758); + SetMainCallback2(debug_80C370C); + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON; + taskId = CreateTask(debug_80C3A50, 0); + gTasks[taskId].data[0] = 0xfc; +} + +const u8 gUnknown_Debug_083F7FDA[] = _("ひりつ"); +const u8 gUnknown_Debug_083F7FDE[] = _("たかさ"); +const u8 gUnknown_Debug_083F7FE2[] = _("Lキー▶しゅくしょう"); +const u8 gUnknown_Debug_083F7FED[] = _("Rキー▶かくだい"); +const u8 gUnknown_Debug_083F7FF6[] = _("Uキー▶うえ いどう"); +const u8 gUnknown_Debug_083F8001[] = _("Dキー▶した いどう"); +const u8 gUnknown_Debug_083F800C[] = _("Aボタン▶そうさきりかえ"); +const u8 gUnknown_Debug_083F8019[] = _("Bボタン▶やめる"); +const u8 gUnknown_Debug_083F8022[] = _("スタート:"); +const u8 gUnknown_Debug_083F8028[] = _(":セレクト"); + +#ifdef NONMATCHING +void debug_80C3A50(u8 taskId) +{ + u16 natDexNum = gTasks[taskId].data[0]; + u16 species = NationalPokedexNumToSpecies(natDexNum); + u16 spriteId; + u16 spriteId2; + struct SaveBlock2 *saveBlock2 = &gSaveBlock2; + + Menu_DrawStdWindowFrame(6, 0, 23, 9); + + Menu_DrawStdWindowFrame(0, 0, 5, 9); + Menu_PrintText(gUnknown_Debug_083F7FDA, 1, 1); + Menu_PrintText(gUnknown_Debug_083F7FDE, 1, 5); + + Menu_DrawStdWindowFrame(24, 0, 29, 9); + Menu_PrintText(gUnknown_Debug_083F7FD6, 25, 1); + Menu_PrintText(gUnknown_Debug_083F7FDE, 25, 5); + + Menu_DrawStdWindowFrame(0, 10, 11, 19); + Menu_PrintText(gUnknown_Debug_083F7FE2, 1, 11); + Menu_PrintText(gUnknown_Debug_083F7FED, 1, 13); + Menu_PrintText(gUnknown_Debug_083F7FF6, 1, 15); + Menu_PrintText(gUnknown_Debug_083F8001, 1, 17); + + Menu_DrawStdWindowFrame(12, 10, 29, 15); + Menu_PrintText(gUnknown_Debug_083F800C, 13, 11); + Menu_PrintText(gUnknown_Debug_083F8019, 13, 13); + + Menu_DrawStdWindowFrame(12, 16, 29, 19); + Menu_PrintText(gUnknown_Debug_083F8022, 13, 17); + Menu_PrintText(gUnknown_Debug_083F8028, 24, 17); + + debug_80C3800(species, 18, 17); + + spriteId = sub_8091A4C(saveBlock2->playerGender, 0x98, 0x28, 0); + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 2; + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].oam.paletteNum = 0; + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(0)); + gSprites[spriteId].pos2.y = gPokedexEntries[natDexNum].trainerOffset; + SetOamMatrix(2, gPokedexEntries[natDexNum].trainerScale, 0, 0, gPokedexEntries[natDexNum].trainerScale); + gTasks[taskId].data[3] = spriteId; + gTasks[taskId].data[4] = gPokedexEntries[natDexNum].trainerOffset; + gTasks[taskId].data[6] = gPokedexEntries[natDexNum].trainerScale; + + spriteId2 = sub_80918EC(natDexNum, 0x58, 0x28, 1); + gSprites[spriteId2].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId2].oam.matrixNum = 1; + gSprites[spriteId2].oam.priority = 0; + gSprites[spriteId2].oam.paletteNum = 0; + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(0)); + gSprites[spriteId2].pos2.y = gPokedexEntries[natDexNum].pokemonOffset; + SetOamMatrix(1, gPokedexEntries[natDexNum].pokemonScale, 0, 0, gPokedexEntries[natDexNum].pokemonScale); + gTasks[taskId].data[2] = spriteId2; + gTasks[taskId].data[5] = gPokedexEntries[natDexNum].pokemonOffset; + gTasks[taskId].data[7] = gPokedexEntries[natDexNum].pokemonScale; + gTasks[taskId].data[8] = 0; + gTasks[taskId].data[9] = 0; + + REG_WININ = 0x3F1F; + REG_WINOUT = 0x001F; + REG_WIN0H = ((gTasks[taskId].data[8] * 64 + 0x38) << 8) + (gTasks[taskId].data[8] * 64 + 0x78); + REG_WIN0V = 0x0848; + REG_WIN1H = 0x31BF; + REG_WIN1V = 0x014F; + REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN; + REG_BLDALPHA = 0; + REG_BLDY = 7; + REG_DISPCNT |= DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; + gTasks[taskId].func = debug_80C3D2C; +} +#else +NAKED void debug_80C3A50(u8 taskId) +{ + asm("\tpush\t{r4, r5, r6, r7, lr}\n" + "\tmov\tr7, sl\n" + "\tmov\tr6, r9\n" + "\tmov\tr5, r8\n" + "\tpush\t{r5, r6, r7}\n" + "\tadd\tsp, sp, #0xffffffd8\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr0, r0, #0x18\n" + "\tldr\tr1, ._56 @ gTasks\n" + "\tlsl\tr2, r0, #0x2\n" + "\tadd\tr0, r2, r0\n" + "\tlsl\tr0, r0, #0x3\n" + "\tadd\tr7, r0, r1\n" + "\tldrh\tr0, [r7, #0x8]\n" + "\tstr\tr0, [sp, #0x4]\n" + "\tbl\tNationalPokedexNumToSpecies\n" + "\tmov\tr1, sp\n" + "\tstrh\tr0, [r1, #0x8]\n" + "\tadd\tr2, r0, #0\n" + "\tlsl\tr2, r2, #0x10\n" + "\tstr\tr2, [sp, #0xc]\n" + "\tlsr\tr2, r2, #0x10\n" + "\tmov\tr9, r2\n" + "\tldr\tr3, ._56 + 4 @ gSaveBlock2\n" + "\tmov\tr8, r3\n" + "\tmov\tr0, #0x6\n" + "\tmov\tr1, #0x0\n" + "\tmov\tr2, #0x17\n" + "\tmov\tr3, #0x9\n" + "\tbl\tMenu_DrawStdWindowFrame\n" + "\tmov\tr0, #0x0\n" + "\tmov\tr1, #0x0\n" + "\tmov\tr2, #0x5\n" + "\tmov\tr3, #0x9\n" + "\tbl\tMenu_DrawStdWindowFrame\n" + "\tldr\tr5, ._56 + 8 @ gUnknown_Debug_083F7FD6\n" + "\tadd\tr0, r5, #0\n" + "\tmov\tr1, #0x1\n" + "\tmov\tr2, #0x1\n" + "\tbl\tMenu_PrintText\n" + "\tldr\tr4, ._56 + 12 @ gUnknown_Debug_083F7FDE\n" + "\tadd\tr0, r4, #0\n" + "\tmov\tr1, #0x1\n" + "\tmov\tr2, #0x5\n" + "\tbl\tMenu_PrintText\n" + "\tmov\tr0, #0x18\n" + "\tmov\tr1, #0x0\n" + "\tmov\tr2, #0x1d\n" + "\tmov\tr3, #0x9\n" + "\tbl\tMenu_DrawStdWindowFrame\n" + "\tadd\tr0, r5, #0\n" + "\tmov\tr1, #0x19\n" + "\tmov\tr2, #0x1\n" + "\tbl\tMenu_PrintText\n" + "\tadd\tr0, r4, #0\n" + "\tmov\tr1, #0x19\n" + "\tmov\tr2, #0x5\n" + "\tbl\tMenu_PrintText\n" + "\tmov\tr0, #0x0\n" + "\tmov\tr1, #0xa\n" + "\tmov\tr2, #0xb\n" + "\tmov\tr3, #0x13\n" + "\tbl\tMenu_DrawStdWindowFrame\n" + "\tldr\tr0, ._56 + 16 @ gUnknown_Debug_083F7FE2\n" + "\tmov\tr1, #0x1\n" + "\tmov\tr2, #0xb\n" + "\tbl\tMenu_PrintText\n" + "\tldr\tr0, ._56 + 20 @ gUnknown_Debug_083F7FED\n" + "\tmov\tr1, #0x1\n" + "\tmov\tr2, #0xd\n" + "\tbl\tMenu_PrintText\n" + "\tldr\tr0, ._56 + 24 @ gUnknown_Debug_083F7FF6\n" + "\tmov\tr1, #0x1\n" + "\tmov\tr2, #0xf\n" + "\tbl\tMenu_PrintText\n" + "\tldr\tr0, ._56 + 28 @ gUnknown_Debug_083F8001\n" + "\tmov\tr1, #0x1\n" + "\tmov\tr2, #0x11\n" + "\tbl\tMenu_PrintText\n" + "\tmov\tr0, #0xc\n" + "\tmov\tr1, #0xa\n" + "\tmov\tr2, #0x1d\n" + "\tmov\tr3, #0xf\n" + "\tbl\tMenu_DrawStdWindowFrame\n" + "\tldr\tr0, ._56 + 32 @ gUnknown_Debug_083F800C\n" + "\tmov\tr1, #0xd\n" + "\tmov\tr2, #0xb\n" + "\tbl\tMenu_PrintText\n" + "\tldr\tr0, ._56 + 36 @ gUnknown_Debug_083F8019\n" + "\tmov\tr1, #0xd\n" + "\tmov\tr2, #0xd\n" + "\tbl\tMenu_PrintText\n" + "\tmov\tr0, #0xc\n" + "\tmov\tr1, #0x10\n" + "\tmov\tr2, #0x1d\n" + "\tmov\tr3, #0x13\n" + "\tbl\tMenu_DrawStdWindowFrame\n" + "\tldr\tr0, ._56 + 40 @ gUnknown_Debug_083F8022\n" + "\tmov\tr1, #0xd\n" + "\tmov\tr2, #0x11\n" + "\tbl\tMenu_PrintText\n" + "\tldr\tr0, ._56 + 44 @ gUnknown_Debug_083F8028\n" + "\tmov\tr1, #0x18\n" + "\tmov\tr2, #0x11\n" + "\tbl\tMenu_PrintText\n" + "\tmov\tr0, r9\n" + "\tmov\tr1, #0x12\n" + "\tmov\tr2, #0x11\n" + "\tbl\tdebug_80C3800\n" + "\tmov\tr1, r8\n" + "\tldrb\tr0, [r1, #0x8]\n" + "\tmov\tr1, #0x98\n" + "\tmov\tr2, #0x28\n" + "\tmov\tr3, #0x0\n" + "\tbl\tsub_8091A4C\n" + "\tmov\tr2, sp\n" + "\tstrh\tr0, [r2, #0x10]\n" + "\tadd\tr3, r0, #0\n" + "\tlsl\tr3, r3, #0x10\n" + "\tstr\tr3, [sp, #0x18]\n" + "\tlsr\tr0, r3, #0x10\n" + "\tstr\tr0, [sp, #0x14]\n" + "\tlsl\tr4, r0, #0x4\n" + "\tadd\tr4, r4, r0\n" + "\tlsl\tr4, r4, #0x2\n" + "\tldr\tr1, ._56 + 48 @ gSprites\n" + "\tadd\tr4, r4, r1\n" + "\tldrb\tr1, [r4, #0x1]\n" + "\tmov\tr2, #0x4\n" + "\tneg\tr2, r2\n" + "\tmov\tsl, r2\n" + "\tmov\tr0, sl\n" + "\tand\tr0, r0, r1\n" + "\tmov\tr3, #0x1\n" + "\torr\tr0, r0, r3\n" + "\tstrb\tr0, [r4, #0x1]\n" + "\tldrb\tr1, [r4, #0x3]\n" + "\tmov\tr0, #0x3f\n" + "\tneg\tr0, r0\n" + "\tmov\tr9, r0\n" + "\tand\tr0, r0, r1\n" + "\tmov\tr1, #0x4\n" + "\torr\tr0, r0, r1\n" + "\tstrb\tr0, [r4, #0x3]\n" + "\tldrb\tr1, [r4, #0x5]\n" + "\tsub\tr2, r2, #0x9\n" + "\tmov\tr8, r2\n" + "\tmov\tr0, r8\n" + "\tand\tr0, r0, r1\n" + "\tmov\tr3, #0xf\n" + "\tand\tr0, r0, r3\n" + "\tstrb\tr0, [r4, #0x5]\n" + "\tmov\tr0, #0x0\n" + "\tbl\tGetSpritePaletteTagByPaletteNum\n" + "\tlsl\tr0, r0, #0x10\n" + "\tlsr\tr0, r0, #0x10\n" + "\tbl\tFreeSpritePaletteByTag\n" + "\tldr\tr0, ._56 + 52 @ gPokedexEntries\n" + "\tldr\tr1, [sp, #0x4]\n" + "\tlsl\tr5, r1, #0x3\n" + "\tadd\tr5, r5, r1\n" + "\tlsl\tr5, r5, #0x2\n" + "\tadd\tr5, r5, r0\n" + "\tldrh\tr6, [r5, #0x20]\n" + "\tstrh\tr6, [r4, #0x26]\n" + "\tldrh\tr4, [r5, #0x1e]\n" + "\tstr\tr4, [sp]\n" + "\tmov\tr0, #0x2\n" + "\tadd\tr1, r4, #0\n" + "\tmov\tr2, #0x0\n" + "\tmov\tr3, #0x0\n" + "\tbl\tSetOamMatrix\n" + "\tmov\tr2, sp\n" + "\tldrh\tr2, [r2, #0x14]\n" + "\tstrh\tr2, [r7, #0xe]\n" + "\tstrh\tr6, [r7, #0x10]\n" + "\tstrh\tr4, [r7, #0x14]\n" + "\tldr\tr0, [sp, #0x4]\n" + "\tmov\tr1, #0x58\n" + "\tmov\tr2, #0x28\n" + "\tmov\tr3, #0x1\n" + "\tbl\tsub_80918EC\n" + "\tmov\tr3, sp\n" + "\tstrh\tr0, [r3, #0x1c]\n" + "\tlsl\tr0, r0, #0x10\n" + "\tstr\tr0, [sp, #0x24]\n" + "\tlsr\tr1, r0, #0x10\n" + "\tstr\tr1, [sp, #0x20]\n" + "\tlsl\tr4, r1, #0x4\n" + "\tadd\tr4, r4, r1\n" + "\tlsl\tr4, r4, #0x2\n" + "\tldr\tr2, ._56 + 48 @ gSprites\n" + "\tadd\tr4, r4, r2\n" + "\tldrb\tr0, [r4, #0x1]\n" + "\tmov\tr3, sl\n" + "\tand\tr3, r3, r0\n" + "\tmov\tr0, #0x1\n" + "\torr\tr3, r3, r0\n" + "\tstrb\tr3, [r4, #0x1]\n" + "\tldrb\tr0, [r4, #0x3]\n" + "\tmov\tr1, r9\n" + "\tand\tr1, r1, r0\n" + "\tmov\tr0, #0x2\n" + "\torr\tr1, r1, r0\n" + "\tstrb\tr1, [r4, #0x3]\n" + "\tldrb\tr0, [r4, #0x5]\n" + "\tmov\tr2, r8\n" + "\tand\tr2, r2, r0\n" + "\tmov\tr3, #0xf\n" + "\tand\tr2, r2, r3\n" + "\tstrb\tr2, [r4, #0x5]\n" + "\tmov\tr0, #0x0\n" + "\tbl\tGetSpritePaletteTagByPaletteNum\n" + "\tlsl\tr0, r0, #0x10\n" + "\tlsr\tr0, r0, #0x10\n" + "\tbl\tFreeSpritePaletteByTag\n" + "\tldrh\tr0, [r5, #0x1c]\n" + "\tmov\tr8, r0\n" + "\tstrh\tr0, [r4, #0x26]\n" + "\tldrh\tr4, [r5, #0x1a]\n" + "\tstr\tr4, [sp]\n" + "\tmov\tr0, #0x1\n" + "\tadd\tr1, r4, #0\n" + "\tmov\tr2, #0x0\n" + "\tmov\tr3, #0x0\n" + "\tbl\tSetOamMatrix\n" + "\tmov\tr1, sp\n" + "\tldrh\tr1, [r1, #0x20]\n" + "\tstrh\tr1, [r7, #0xc]\n" + "\tmov\tr2, r8\n" + "\tstrh\tr2, [r7, #0x12]\n" + "\tstrh\tr4, [r7, #0x16]\n" + "\tmov\tr3, #0x0\n" + "\tstrh\tr3, [r7, #0x18]\n" + "\tstrh\tr3, [r7, #0x1a]\n" + "\tldr\tr1, ._56 + 56 @ 0x4000048\n" + "\tldr\tr2, ._56 + 60 @ 0x3f1f\n" + "\tadd\tr0, r2, #0\n" + "\tstrh\tr0, [r1]\n" + "\tadd\tr1, r1, #0x2\n" + "\tmov\tr0, #0x1f\n" + "\tstrh\tr0, [r1]\n" + "\tldr\tr2, ._56 + 64 @ 0x4000040\n" + "\tmov\tr3, #0x18\n" + "\tldsh\tr1, [r7, r3]\n" + "\tlsl\tr1, r1, #0x6\n" + "\tadd\tr0, r1, #0\n" + "\tadd\tr0, r0, #0x38\n" + "\tlsl\tr0, r0, #0x8\n" + "\tadd\tr1, r1, #0x78\n" + "\tadd\tr0, r0, r1\n" + "\tstrh\tr0, [r2]\n" + "\tldr\tr1, ._56 + 68 @ 0x4000044\n" + "\tldr\tr2, ._56 + 72 @ 0x848\n" + "\tadd\tr0, r2, #0\n" + "\tstrh\tr0, [r1]\n" + "\tsub\tr1, r1, #0x2\n" + "\tldr\tr3, ._56 + 76 @ 0x31bf\n" + "\tadd\tr0, r3, #0\n" + "\tstrh\tr0, [r1]\n" + "\tadd\tr1, r1, #0x4\n" + "\tldr\tr2, ._56 + 80 @ 0x14f\n" + "\tadd\tr0, r2, #0\n" + "\tstrh\tr0, [r1]\n" + "\tadd\tr1, r1, #0xa\n" + "\tmov\tr0, #0xe1\n" + "\tstrh\tr0, [r1]\n" + "\tldr\tr0, ._56 + 84 @ 0x4000052\n" + "\tmov\tr3, #0x0\n" + "\tstrh\tr3, [r0]\n" + "\tadd\tr1, r1, #0x4\n" + "\tmov\tr0, #0x7\n" + "\tstrh\tr0, [r1]\n" + "\tmov\tr2, #0x80\n" + "\tlsl\tr2, r2, #0x13\n" + "\tldrh\tr0, [r2]\n" + "\tmov\tr3, #0xc0\n" + "\tlsl\tr3, r3, #0x7\n" + "\tadd\tr1, r3, #0\n" + "\torr\tr0, r0, r1\n" + "\tstrh\tr0, [r2]\n" + "\tldr\tr0, ._56 + 88 @ debug_80C3D2C\n" + "\tstr\tr0, [r7]\n" + "\tadd\tsp, sp, #0x28\n" + "\tpop\t{r3, r4, r5}\n" + "\tmov\tr8, r3\n" + "\tmov\tr9, r4\n" + "\tmov\tsl, r5\n" + "\tpop\t{r4, r5, r6, r7}\n" + "\tpop\t{r0}\n" + "\tbx\tr0\n" + "._57:\n" + "\t.align\t2, 0\n" + "._56:\n" + "\t.word\tgTasks\n" + "\t.word\tgSaveBlock2\n" + "\t.word\tgUnknown_Debug_083F7FD6+0x4\n" + "\t.word\tgUnknown_Debug_083F7FDE\n" + "\t.word\tgUnknown_Debug_083F7FE2\n" + "\t.word\tgUnknown_Debug_083F7FED\n" + "\t.word\tgUnknown_Debug_083F7FF6\n" + "\t.word\tgUnknown_Debug_083F8001\n" + "\t.word\tgUnknown_Debug_083F800C\n" + "\t.word\tgUnknown_Debug_083F8019\n" + "\t.word\tgUnknown_Debug_083F8022\n" + "\t.word\tgUnknown_Debug_083F8028\n" + "\t.word\tgSprites\n" + "\t.word\tgPokedexEntries\n" + "\t.word\t0x4000048\n" + "\t.word\t0x3f1f\n" + "\t.word\t0x4000040\n" + "\t.word\t0x4000044\n" + "\t.word\t0x848\n" + "\t.word\t0x31bf\n" + "\t.word\t0x14f\n" + "\t.word\t0x4000052\n" + "\t.word\tdebug_80C3D2C+1"); +} +#endif // NONMATCHING + +void debug_80C3D2C(u8 taskId) +{ + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); + SetMainCallback2(debug_80C370C); + gTasks[taskId].func = debug_80C373C; + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gTasks[taskId].data[8] ^= 1; + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (gTasks[taskId].data[8]) + { + if (gMain.heldKeys & R_BUTTON) + gTasks[taskId].data[6] += 16; + else + gTasks[taskId].data[6] += 1; + if ((u16)gTasks[taskId].data[6] > 0x8000) + gTasks[taskId].data[6] = 0x8000; + } + else + { + if (gMain.heldKeys & R_BUTTON) + gTasks[taskId].data[7] += 16; + else + gTasks[taskId].data[7] += 1; + if ((u16)gTasks[taskId].data[7] > 0x8000) + gTasks[taskId].data[7] = 0x8000; + } + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (gTasks[taskId].data[8]) + { + if (gMain.heldKeys & R_BUTTON) + gTasks[taskId].data[6] -= 16; + else + gTasks[taskId].data[6] -= 1; + if (gTasks[taskId].data[6] < 0x100) + gTasks[taskId].data[6] = 0x100; + } + else + { + if (gMain.heldKeys & R_BUTTON) + gTasks[taskId].data[7] -= 16; + else + gTasks[taskId].data[7] -= 1; + if (gTasks[taskId].data[7] < 0x100) + gTasks[taskId].data[7] = 0x100; + } + } + else if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (gTasks[taskId].data[8]) + { + gTasks[taskId].data[4]--; + } + else + { + gTasks[taskId].data[5]--; + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (gTasks[taskId].data[8]) + { + gTasks[taskId].data[4]++; + } + else + { + gTasks[taskId].data[5]++; + } + } + else if (gMain.newAndRepeatedKeys & START_BUTTON) + { + if (gTasks[taskId].data[0] < 0x182) + gTasks[taskId].data[0]++; + else + gTasks[taskId].data[0] = 1; + DestroySprite(gSprites + gTasks[taskId].data[2]); + DestroySprite(gSprites + gTasks[taskId].data[3]); + gTasks[taskId].func = debug_80C3A50; + } + else if (gMain.newAndRepeatedKeys & SELECT_BUTTON) + { + if (gTasks[taskId].data[0] > 1) + gTasks[taskId].data[0]--; + else + gTasks[taskId].data[0] = 0x182; + DestroySprite(gSprites + gTasks[taskId].data[2]); + DestroySprite(gSprites + gTasks[taskId].data[3]); + gTasks[taskId].func = debug_80C3A50; + } + else + { + u16 scale = gTasks[taskId].data[7]; + u16 offset = gTasks[taskId].data[5]; + SetOamMatrix(1, scale, 0, 0, scale); + debug_80C68CC(scale, 1, 3, 4); + debug_80C68CC(offset, 1, 7, 4); + gSprites[gTasks[taskId].data[2]].pos2.y = offset; + + scale = gTasks[taskId].data[6]; + offset = gTasks[taskId].data[4]; + SetOamMatrix(2, scale, 0, 0, scale); + debug_80C68CC(scale, 25, 3, 4); + debug_80C68CC(offset, 25, 7, 4); + gSprites[gTasks[taskId].data[3]].pos2.y = offset; + + REG_WIN0H = ((gTasks[taskId].data[8] * 64 + 0x38) << 8) + (gTasks[taskId].data[8] * 64 + 0x78); + } +} + +void debug_80C405C(u8 * dest, u16 species) +{ + u8 i; + + for (i = 0; i < 10; i++) + dest[i] = CHAR_SPACE; + dest[i] = EOS; + + dest[0] = CHAR_HYPHEN; + + if (species != SPECIES_NONE) + { + for (i = 0; gSpeciesNames[species][i] != EOS && i < 10; i++) + dest[i] = gSpeciesNames[species][i]; + } +} + +void debug_80C40C4(bool8 who) +{ + u8 i; + u16 maxHp; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (who) + { + struct Pokemon *pokemon = gEnemyParty + i; + if (GetMonData(pokemon, MON_DATA_SPECIES) != SPECIES_NONE) + { + CalculateMonStats(pokemon); + maxHp = GetMonData(pokemon, MON_DATA_MAX_HP); + SetMonData(pokemon, MON_DATA_HP, &maxHp); + } + } + else + { + struct Pokemon *pokemon = gPlayerParty + i; + if (GetMonData(pokemon, MON_DATA_SPECIES) != SPECIES_NONE) + { + CalculateMonStats(pokemon); + maxHp = GetMonData(pokemon, MON_DATA_MAX_HP); + SetMonData(pokemon, MON_DATA_HP, &maxHp); + } + } + } +} + +void InitBattleForDebug(void) +{ + SavePlayerParty(); + gUnknown_Debug_2038A0C[13] = gSaveBlock2.playerGender; + gUnknown_Debug_2038A0C[0] = 0; + gUnknown_Debug_2038A0C[1] = 0; + gUnknown_Debug_2038A0C[2] = 0; + gUnknown_Debug_2038A0C[3] = 0; + gUnknown_Debug_2038A0C[4] = 0; + gUnknown_Debug_2038A0C[5] = 0; + gUnknown_Debug_2038A0C[6] = 0; + gUnknown_Debug_2038A0C[7] = 0; + gUnknown_Debug_2038A0C[8] = 0; + gUnknown_Debug_2038A0C[12] = 0; + byte_3005E30 = 0; + ZeroPlayerPartyMons(); + ZeroEnemyPartyMons(); + debug_80C4214(0); + CreateTask(debug_80C47BC, 0); +} + +void debug_80C41A8(void) +{ + gUnknown_Debug_2038A0C[1] = 0; + gUnknown_Debug_2038A0C[2] = 0; + ZeroPlayerPartyMons(); + ZeroEnemyPartyMons(); + debug_80C4214(0); + CreateTask(debug_80C47BC, 0); +} + +const u8 gUnknown_Debug_083F802E[] = _("やせいたいせん"); +const u8 gUnknown_Debug_083F8036[] = _("1VS1たいせん"); +const u8 gUnknown_Debug_083F803F[] = _("2VS2たいせん"); +const u8 gUnknown_Debug_083F8048[] = _("{COLOR BLUE}1VS1つうしんたいせん"); +const u8 gUnknown_Debug_083F8058[] = _("{COLOR BLUE}2VS2つうしんたいせん"); + +const struct WatanabeDebugMenuItem gUnknown_Debug_083F8068[] = { + {gUnknown_Debug_083F802E, {.type1 = {0x00, 0x01}}}, + {gUnknown_Debug_083F8036, {.type1 = {0x08, 0x01}}}, + {gUnknown_Debug_083F803F, {.type1 = {0x09, 0x02}}}, + {gUnknown_Debug_083F8048, {.type1 = {0x0A, 0x01}}}, + {gUnknown_Debug_083F8058, {.type1 = {0x0B, 0x02}}} +}; + +const u8 gUnknown_Debug_083F8090[] = _("きほんタイプ"); +const u8 gUnknown_Debug_083F8097[] = _("AIタイプ2"); +const u8 gUnknown_Debug_083F809E[] = _("AIタイプ3"); +const u8 gUnknown_Debug_083F80A5[] = _("AIタイプ4"); +const u8 gUnknown_Debug_083F80AC[] = _("AIタイプ5"); +const u8 gUnknown_Debug_083F80B3[] = _("AIタイプ6"); +const u8 gUnknown_Debug_083F80BA[] = _("AIタイプ7"); +const u8 gUnknown_Debug_083F80C1[] = _("AIタイプ8"); +const u8 gUnknown_Debug_083F80C8[] = _("AIタイプ9"); +const u8 gUnknown_Debug_083F80CF[] = _("AIタイプ10"); + +const struct WatanabeDebugMenuItem gUnknown_Debug_083F80D8[] = { + {gUnknown_Debug_083F8090, {.type2 = 0x1}}, + {gUnknown_Debug_083F8097, {.type2 = 0x2}}, + {gUnknown_Debug_083F809E, {.type2 = 0x4}}, + {gUnknown_Debug_083F80A5, {.type2 = 0x8}}, + {gUnknown_Debug_083F80AC, {.type2 = 0x10}}, + {gUnknown_Debug_083F80B3, {.type2 = 0x20}}, + {gUnknown_Debug_083F80BA, {.type2 = 0x40}}, + {gUnknown_Debug_083F80C1, {.type2 = 0x80}}, + {gUnknown_Debug_083F80C8, {.type2 = 0x100}}, + {gUnknown_Debug_083F80CF, {.type2 = 0x200}} +}; + +const u8 gUnknown_Debug_083F8128[] = _("くさ"); +const u8 gUnknown_Debug_083F812B[] = _("ながい くさ"); +const u8 gUnknown_Debug_083F8132[] = _("すな"); +const u8 gUnknown_Debug_083F8135[] = _("みず"); +const u8 gUnknown_Debug_083F8138[] = _("うみ"); +const u8 gUnknown_Debug_083F813B[] = _("いけ"); +const u8 gUnknown_Debug_083F813E[] = _("いわ"); +const u8 gUnknown_Debug_083F8141[] = _("どうくつ"); +const u8 gUnknown_Debug_083F8146[] = _("そのた"); + +const struct WatanabeDebugMenuItem gUnknown_Debug_083F814C[] = { + {gUnknown_Debug_083F8128, {.type3 = 0x0}}, + {gUnknown_Debug_083F812B, {.type3 = 0x1}}, + {gUnknown_Debug_083F8132, {.type3 = 0x2}}, + {gUnknown_Debug_083F8135, {.type3 = 0x3}}, + {gUnknown_Debug_083F8138, {.type3 = 0x4}}, + {gUnknown_Debug_083F813B, {.type3 = 0x5}}, + {gUnknown_Debug_083F813E, {.type3 = 0x6}}, + {gUnknown_Debug_083F8141, {.type3 = 0x7}}, + {gUnknown_Debug_083F8146, {.type3 = 0x8}} +}; + +void debug_80C41D4(void) +{ + debug_80C40C4(0); + debug_80C4214(0); + CreateTask(debug_80C42B8, 0); +} + +void debug_80C41F4(void) +{ + debug_80C40C4(1); + debug_80C4214(1); + CreateTask(debug_80C42B8, 0); +} + +void debug_80C4214(UNUSED u8 a0) +{ + u16 imeBak; + debug_80C35DC(); + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0x1111; + REG_WINOUT = 0x0031; + REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN; + REG_BLDALPHA = 0; + REG_BLDY = 7; + + imeBak = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = imeBak; + + SetVBlankCallback(debug_80C3758); + SetMainCallback2(debug_80C370C); + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; + REG_WIN0H = 0x01EF; + REG_WIN0V = 0x819F; +} + +void debug_80C42B8(u8 taskId) +{ + u8 sp00[] = _("ポケモンを えらんでね"); + u8 sp0c[] = _("{COLOR RED}START:つぎへ"); + + Menu_DrawStdWindowFrame(0, 16, 29, 19); + Menu_PrintText(sp00, 1, 17); + Menu_PrintText(sp0c, 20, 17); + + debug_80C4694(); + debug_80C4704(); + + if (gUnknown_Debug_2038A0C[0]) + gTasks[taskId].func = debug_80C44EC; + else + gTasks[taskId].func = debug_80C4348; +} + +void debug_80C4348(u8 taskId) +{ + debug_80C38E4(gUnknown_Debug_2038A0C[1] * 2 + 3, 1, 1, 14, 1); + REG_WIN1H = 0x0177; + REG_WIN1V = 0x017F; + gTasks[taskId].func = debug_80C43A8; +} + +void debug_80C43A8(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + debug_sub_80A433C(gPlayerParty + gUnknown_Debug_2038A0C[1], debug_80C41D4); + DestroyTask(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = debug_80C4F48; + } + else if (gMain.newKeys & START_BUTTON) + { + if (debug_80C4774()) + { + PlaySE(SE_SELECT); + CalculatePlayerPartyCount(); + CalculateEnemyPartyCount(); + gTasks[taskId].func = debug_80C4D14; + } + } + else if (gMain.newKeys & (R_BUTTON | DPAD_RIGHT)) + { + debug_80C38E4(0, 1, 1, 14, 0); + gTasks[taskId].func = debug_80C44EC; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A0C[1] != 0) + { + gUnknown_Debug_2038A0C[1]--; + gTasks[taskId].func = debug_80C4348; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[1] < 5 && GetMonData(gPlayerParty + gUnknown_Debug_2038A0C[1], MON_DATA_SPECIES) != SPECIES_NONE) + { + gUnknown_Debug_2038A0C[1]++; + gTasks[taskId].func = debug_80C4348; + } +} + +void debug_80C44EC(u8 taskId) +{ + debug_80C38E4(gUnknown_Debug_2038A0C[2] * 2 + 3, 16, 1, 14, 1); + REG_WIN1H = 0x79EF; + REG_WIN1V = 0x017F; + gTasks[taskId].func = debug_80C4550; +} + +void debug_80C4550(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + debug_sub_80A433C(gEnemyParty + gUnknown_Debug_2038A0C[2], debug_80C41F4); + DestroyTask(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = debug_80C4F48; + } + else if (gMain.newKeys & START_BUTTON) + { + if (debug_80C4774()) + { + PlaySE(SE_SELECT); + CalculatePlayerPartyCount(); + CalculateEnemyPartyCount(); + gTasks[taskId].func = debug_80C4D14; + } + } + else if (gMain.newKeys & (L_BUTTON | DPAD_LEFT)) + { + debug_80C38E4(0, 16, 1, 14, 0); + gTasks[taskId].func = debug_80C4348; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A0C[2] != 0) + { + gUnknown_Debug_2038A0C[2]--; + gTasks[taskId].func = debug_80C44EC; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[2] < 5 && GetMonData(gEnemyParty + gUnknown_Debug_2038A0C[2], MON_DATA_SPECIES) != SPECIES_NONE) + { + gUnknown_Debug_2038A0C[2]++; + gTasks[taskId].func = debug_80C44EC; + } +} + +void debug_80C4694(void) +{ + u8 i; + u8 sp00[] = _("{COLOR RED}じぶんの ポケモン"); + u8 sp10[POKEMON_NAME_LENGTH + 1]; + + Menu_DrawStdWindowFrame(0, 0, 14, 15); + Menu_PrintText(sp00, 2, 1); + for (i = 0; i < PARTY_SIZE; i++) + { + debug_80C405C(sp10, GetMonData(gPlayerParty + i, MON_DATA_SPECIES)); + Menu_PrintText(sp10, 2, 2 * i + 3); + } +} + +void debug_80C4704(void) +{ + u8 i; + u8 sp00[] = _("{COLOR RED}あいての ポケモン"); + u8 sp10[POKEMON_NAME_LENGTH + 1]; + + Menu_DrawStdWindowFrame(15, 0, 29, 15); + Menu_PrintText(sp00, 17, 1); + for (i = 0; i < PARTY_SIZE; i++) + { + debug_80C405C(sp10, GetMonData(gEnemyParty + i, MON_DATA_SPECIES)); + Menu_PrintText(sp10, 17, 2 * i + 3); + } +} + +bool8 debug_80C4774(void) +{ + u8 i = gUnknown_Debug_2038A0C[12] - 1; + if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(gEnemyParty + i, MON_DATA_SPECIES) != SPECIES_NONE) + return TRUE; + return FALSE; +} + +void debug_80C47BC(u8 taskId) +{ + u8 i; + u8 sp00[] = _("たいせんモードを えらんでね"); + u8 sp10[] = _("{COLOR RED}START:つぎへ"); + u8 sp20[] = _("{COLOR RED}バトルモード せんたく"); + u8 sp30[] = _("{COLOR RED}トレーナーAI せんたく"); + + Menu_DrawStdWindowFrame(0, 16, 29, 19); + Menu_PrintText(sp00, 1, 17); + Menu_PrintText(sp10, 20, 17); + + Menu_DrawStdWindowFrame(0, 0, 14, 15); + Menu_PrintText(sp20, 2, 1); + + for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_083F8068); i++) + Menu_PrintText(gUnknown_Debug_083F8068[i].text, 2, 2 * i + 3); + + Menu_DrawStdWindowFrame(15, 0, 29, 15); + Menu_PrintText(sp30, 17, 1); + + debug_80C4C44(gUnknown_Debug_2038A0C[4]); + + gTasks[taskId].func = debug_80C48A0; +} + +void debug_80C48A0(u8 taskId) +{ + debug_80C38E4(2 * gUnknown_Debug_2038A0C[3] + 3, 1, 1, 14, 1); + REG_WIN1H = 0x0177; + REG_WIN1V = 0x017F; + gTasks[taskId].func = debug_80C4900; +} + +void debug_80C4900(u8 taskId) +{ + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); + SetMainCallback2(debug_80C370C); + LoadPlayerParty(); + gSaveBlock2.playerGender = gUnknown_Debug_2038A0C[13]; + gBattleTypeFlags = 0; + gUnknown_02023A14_50 = 0; + gTasks[taskId].func = debug_80C373C; + } + else if (gMain.newKeys & START_BUTTON || gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gBattleTypeFlags = gUnknown_Debug_083F8068[gUnknown_Debug_2038A0C[3]].data.type1[0]; + gUnknown_02023A14_50 = 8; + gUnknown_Debug_2038A0C[12] = gUnknown_Debug_083F8068[gUnknown_Debug_2038A0C[3]].data.type1[1]; + if (gUnknown_Debug_2038A0C[3] == 1 || gUnknown_Debug_2038A0C[3] == 2) + { + debug_80C38E4(0, 1, 1, 14, 0); + gTasks[taskId].func = debug_80C4A60; + } + else + { + gTasks[taskId].func = debug_80C4F48; + } + } + else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A0C[3] > 0) + { + gUnknown_Debug_2038A0C[3]--; + gTasks[taskId].func = debug_80C48A0; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[3] < 2) + { + gUnknown_Debug_2038A0C[3]++; + gTasks[taskId].func = debug_80C48A0; + } +} + +void debug_80C4A60(u8 taskId) +{ + debug_80C38E4(gUnknown_Debug_2038A0C[5] * 2 + 3, 16, 1, 14, 1); + REG_WIN1H = 0x79EF; + REG_WIN1V = 0x017F; + gTasks[taskId].func = debug_80C4AC4; +} + +void debug_80C4AC4(u8 taskId) +{ + u8 r1 = gUnknown_Debug_2038A0C[4] + gUnknown_Debug_2038A0C[5]; + + if (gMain.newKeys & A_BUTTON) + { + u32 mask = gUnknown_Debug_083F80D8[r1].data.type2; + if (byte_3005E30 & mask) + byte_3005E30 &= (mask ^ 0xFFFF); + else + byte_3005E30 |= mask; + debug_80C4C44(gUnknown_Debug_2038A0C[4]); + gTasks[taskId].func = debug_80C4A60; + } + else if (gMain.newKeys & B_BUTTON) + { + debug_80C38E4(0, 16, 1, 14, 0); + gTasks[taskId].func = debug_80C48A0; + } + else if (gMain.newKeys & START_BUTTON) + { + PlaySE(SE_SELECT); + gTrainerBattleOpponent = 0x400; + eWatanabe17000.unk1_4 = 0; + eWatanabe17000.unk2 = 0xAC; + eWatanabe17000.unk3 = 0xFF; + eWatanabe17000.unk9 = 0; + eWatanabe17000.unkA = 0; + eWatanabe17000.unkB = 0; + eWatanabe17000.unkC = 0; + gTasks[taskId].func = debug_80C4F48; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (gUnknown_Debug_2038A0C[5] > 0) + gUnknown_Debug_2038A0C[5]--; + else if (gUnknown_Debug_2038A0C[4] > 0) + { + gUnknown_Debug_2038A0C[4]--; + debug_80C4C44(gUnknown_Debug_2038A0C[4]); + } + gTasks[taskId].func = debug_80C4A60; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[5] < 9) + { + if (gUnknown_Debug_2038A0C[5] < 5) + gUnknown_Debug_2038A0C[5]++; + else if (gUnknown_Debug_2038A0C[4] < 4) + { + gUnknown_Debug_2038A0C[4]++; + debug_80C4C44(gUnknown_Debug_2038A0C[4]); + } + gTasks[taskId].func = debug_80C4A60; + } +} + +void debug_80C4C44(u8 a0) +{ + u8 i; + u8 j; + u8 sp00[15]; + + for (i = 0; i < 6; i++) + { + if (i + a0 < 10) + { + for (j = 0; gUnknown_Debug_083F80D8[i + a0].text[j] != EOS && j < 12; j++) + { + sp00[j + 3] = gUnknown_Debug_083F80D8[i + a0].text[j]; + } + for (; j < 12; j++) + { + sp00[j + 3] = CHAR_SPACE; + } + sp00[14] = EOS; + sp00[0] = EXT_CTRL_CODE_BEGIN; + sp00[1] = 0x01; + if (byte_3005E30 & (1 << (i + a0))) + sp00[2] = 0x03; + else + sp00[2] = 0x01; + Menu_PrintText(sp00, 17, 2 * i + 3); + } + } +} + +void debug_80C4D14(u8 taskId) +{ + u8 sp00[] = _("たいせんモードを えらんでね"); + u8 sp10[] = _("{COLOR RED}START:かいし"); + u8 sp20[] = _("{COLOR RED}バトルちけい せんたく"); + + Menu_DrawStdWindowFrame(0, 16, 29, 19); + Menu_PrintText(sp00, 1, 17); + Menu_PrintText(sp10, 20, 17); + + Menu_DrawStdWindowFrame(0, 0, 14, 15); + Menu_PrintText(sp20, 2, 1); + debug_80C4F00(gUnknown_Debug_2038A0C[6]); + + Menu_DrawStdWindowFrame(15, 0, 29,15); + gTasks[taskId].func = debug_80C4DB8; +} + +void debug_80C4DB8(u8 taskId) +{ + debug_80C38E4(2 * gUnknown_Debug_2038A0C[7] + 3, 1, 1, 14, 1); + REG_WIN1H = 0x0177; + REG_WIN1V = 0x017F; + gTasks[taskId].func = debug_80C4E18; +} + +void debug_80C4E18(u8 taskId) +{ + u8 r6 = gUnknown_Debug_2038A0C[6] + gUnknown_Debug_2038A0C[7]; + if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = debug_80C42B8; + } + else if (gMain.newKeys & START_BUTTON || gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gBattleTerrain = gUnknown_Debug_083F814C[r6].data.type3; + gTasks[taskId].func = debug_80C5158; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (gUnknown_Debug_2038A0C[7] > 0) + gUnknown_Debug_2038A0C[7]--; + else if (gUnknown_Debug_2038A0C[6] > 0) + { + gUnknown_Debug_2038A0C[6]--; + debug_80C4F00(gUnknown_Debug_2038A0C[6]); + } + gTasks[taskId].func = debug_80C4DB8; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[7] < 8) + { + if (gUnknown_Debug_2038A0C[7] < 5) + gUnknown_Debug_2038A0C[7]++; + else if (gUnknown_Debug_2038A0C[6] < 3) + { + gUnknown_Debug_2038A0C[6]++; + debug_80C4F00(gUnknown_Debug_2038A0C[6]); + } + gTasks[taskId].func = debug_80C4DB8; + } +} + +void debug_80C4F00(u8 a0) +{ + u8 i; + Menu_BlankWindowRect(1, 3, 13, 14); + + for (i = 0; i < 6; i++) + { + if (i < 9) + Menu_PrintText(gUnknown_Debug_083F814C[i + a0].text, 2, 2 * i + 3); + } +} + +void debug_80C4F48(u8 taskId) +{ + u8 sp00[] = _("じぶんの せいべつを えらんでね"); + u8 sp14[] = _("{COLOR RED}START:つぎへ"); + u8 sp24[] = _("{COLOR RED}せいべつ せんたく"); + u8 sp34[] = _("おとこ"); + u8 sp38[] = _("おんな"); + + Menu_DrawStdWindowFrame(0, 16, 29, 19); + Menu_PrintText(sp00, 1, 17); + Menu_PrintText(sp14, 20, 17); + + Menu_DrawStdWindowFrame(0, 0, 14, 15); + Menu_PrintText(sp24, 2, 1); + + Menu_BlankWindowRect(1, 3, 13, 14); + Menu_PrintText(sp24, 2, 1); + Menu_PrintText(sp34, 2, 3); + Menu_PrintText(sp38, 2, 5); + + Menu_DrawStdWindowFrame(15, 0, 29, 15); + gTasks[taskId].func = debug_80C5038; +} + +void debug_80C5038(u8 taskId) +{ + debug_80C38E4(gUnknown_Debug_2038A0C[8] * 2 + 3, 1, 1, 14, 1); + REG_WIN1H = 0x0177; + REG_WIN1V = 0x017F; + gTasks[taskId].func = debug_80C5098; +} + +void debug_80C5098(u8 taskId) +{ + if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = debug_80C47BC; + } + else if (gMain.newKeys & START_BUTTON || gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gSaveBlock2.playerGender = gUnknown_Debug_2038A0C[8]; + gTasks[taskId].func = debug_80C42B8; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A0C[8] > 0) + { + gUnknown_Debug_2038A0C[8]--; + gTasks[taskId].func = debug_80C5038; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[8] < 1) + { + gUnknown_Debug_2038A0C[8]++; + gTasks[taskId].func = debug_80C5038; + } +} + +void debug_80C5158(u8 taskId) +{ + gTasks[taskId].func = debug_80C5174; +} + +void debug_80C5174(u8 taskId) +{ + gTasks[taskId].func = debug_80C5190; +} + +void debug_80C5190(u8 taskId) +{ + gTasks[taskId].func = debug_80C51AC; +} + +void debug_80C51AC(u8 taskId) +{ + gTasks[taskId].func = debug_80C51C8; +} + +void debug_80C51C8(u8 taskId) +{ + gTasks[taskId].func = debug_80C51E4; +} + +void debug_80C51E4(u8 taskId) +{ + sub_80408BC(); + gMain.savedCallback = debug_80C41A8; + SetMainCallback2(debug_sub_800D684); +} + +void debug_80C5208(void) +{ + u16 i; + + gUnknown_Debug_2038A1C = &eWatanabe18000; + + for (i = 0; i < 64; i++) + { + gUnknown_Debug_2038A1C->unk64[i] = 0; + } + + gUnknown_Debug_2038A1C->unk64[0] = 0xfc; + gUnknown_Debug_2038A1C->unk64[3] = gSaveBlock2.playerTrainerId[0] | (gSaveBlock2.playerTrainerId[1] << 8) | (gSaveBlock2.playerTrainerId[2] << 16) | (gSaveBlock2.playerTrainerId[3] << 24); + gUnknown_Debug_2038A1C->unk64[4] = (Random() << 16) | Random(); + gUnknown_Debug_2038A1C->unk64[1] = 1; + gUnknown_Debug_2038A1C->unk64[2] = 1; + debug_80C5C94(); +} + +bool8 debug_80C527C(struct Pokemon *pokemon) +{ + u8 i; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES, NULL) == SPECIES_NONE) + { + gPlayerParty[i] = *pokemon; + gPlayerPartyCount = i + 1; + return FALSE; + } + } + SendMonToPC(&gUnknown_Debug_2038A1C->pokemon); + return TRUE; +} + +const u8 Str_83F8237[] = _("Kind"); +const struct WatanabeDebugMenuItemSubstruct _83F823C = {1, 0x00000182, 0x00, 0x03}; + +const u8 Str_83F8248[] = _("Level"); +const struct WatanabeDebugMenuItemSubstruct _83F8250 = {1, 0x00000064, 0x00, 0x03}; + +const u8 Str_83F825C[] = _("EXP Points"); +const struct WatanabeDebugMenuItemSubstruct _83F8268 = {1, 0x001E8480, 0x00, 0x07}; + +const u8 Str_83F8274[] = _("ID"); +const struct WatanabeDebugMenuItemSubstruct _83F8278 = {0, 0xFFFFFFFF, 0x00, 0x0A}; + +const u8 Str_83F8284[] = _("Rnd Numbers"); +const struct WatanabeDebugMenuItemSubstruct _83F8290 = {0, 0xFFFFFFFF, 0x00, 0x0A}; + +const u8 Str_83F829C[] = _("Sex"); +const struct WatanabeDebugMenuItemSubstruct _83F82A0 = {0, 0x00000002, 0x00, 0xFF}; + +const u8 Str_83F82AC[] = _("Character"); +const struct WatanabeDebugMenuItemSubstruct _83F82B8 = {0, 0x00000018, 0x00, 0xFF}; + +const u8 Str_83F82C4[] = _("Move1"); +const struct WatanabeDebugMenuItemSubstruct _83F82CC = {0, 0x00000162, 0x00, 0x03}; + +const u8 Str_83F82D8[] = _("Move2"); +const struct WatanabeDebugMenuItemSubstruct _83F82E0 = {0, 0x00000162, 0x00, 0x03}; + +const u8 Str_83F82EC[] = _("Move3"); +const struct WatanabeDebugMenuItemSubstruct _83F82F4 = {0, 0x00000162, 0x00, 0x03}; + +const u8 Str_83F8300[] = _("Move4"); +const struct WatanabeDebugMenuItemSubstruct _83F8308 = {0, 0x00000162, 0x00, 0x03}; + +const u8 Str_83F8314[] = _("Hold"); +const struct WatanabeDebugMenuItemSubstruct _83F831C = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F8328[] = _("SP. Ability"); +const struct WatanabeDebugMenuItemSubstruct _83F8334 = {0, 0x00000001, 0x00, 0xFF}; + +const u8 Str_83F8340[] = _("HPrnd"); +const struct WatanabeDebugMenuItemSubstruct _83F8348 = {0, 0x0000001F, 0x00, 0x02}; + +const u8 Str_83F8354[] = _("HPexp"); +const struct WatanabeDebugMenuItemSubstruct _83F835C = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F8368[] = _("ATKrnd"); +const struct WatanabeDebugMenuItemSubstruct _83F8370 = {0, 0x0000001F, 0x00, 0x02}; + +const u8 Str_83F837C[] = _("ATKexp"); +const struct WatanabeDebugMenuItemSubstruct _83F8384 = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F8390[] = _("DEFrnd"); +const struct WatanabeDebugMenuItemSubstruct _83F8398 = {0, 0x0000001F, 0x00, 0x02}; + +const u8 Str_83F83A4[] = _("DEFexp"); +const struct WatanabeDebugMenuItemSubstruct _83F83AC = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F83B8[] = _("SPDrnd"); +const struct WatanabeDebugMenuItemSubstruct _83F83C0 = {0, 0x0000001F, 0x00, 0x02}; + +const u8 Str_83F83CC[] = _("SPDexp"); +const struct WatanabeDebugMenuItemSubstruct _83F83D4 = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F83E0[] = _("SP. ATK$rnd"); +const struct WatanabeDebugMenuItemSubstruct _83F83EC = {0, 0x0000001F, 0x00, 0x02}; + +const u8 Str_83F83F8[] = _("SP. ATK$exp"); +const struct WatanabeDebugMenuItemSubstruct _83F8404 = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F8410[] = _("SP. DEF$rnd"); +const struct WatanabeDebugMenuItemSubstruct _83F841C = {0, 0x0000001F, 0x00, 0x02}; + +const u8 Str_83F8428[] = _("SP. DEF$exp"); +const struct WatanabeDebugMenuItemSubstruct _83F8434 = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F8440[] = _("Cool"); +const struct WatanabeDebugMenuItemSubstruct _83F8448 = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F8454[] = _("Beauty"); +const struct WatanabeDebugMenuItemSubstruct _83F845C = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F8468[] = _("Cute"); +const struct WatanabeDebugMenuItemSubstruct _83F8470 = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F847C[] = _("Smart"); +const struct WatanabeDebugMenuItemSubstruct _83F8484 = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F8490[] = _("Tough"); +const struct WatanabeDebugMenuItemSubstruct _83F8498 = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F84A4[] = _("Sheen"); +const struct WatanabeDebugMenuItemSubstruct _83F84AC = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F84B8[] = _("Tameness"); +const struct WatanabeDebugMenuItemSubstruct _83F84C4 = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F84D0[] = _("{PK}RUS"); +const struct WatanabeDebugMenuItemSubstruct _83F84D8 = {0, 0x000000FF, 0x00, 0x03}; + +const u8 Str_83F84E4[] = _("EGG$"); +const struct WatanabeDebugMenuItemSubstruct _83F84EC = {0, 0x00000001, 0x00, 0xFF}; + +const u8 Str_83F84F8[] = _("Status"); +const struct WatanabeDebugMenuItemSubstruct _83F8500 = {0, 0x00000006, 0x00, 0xFF}; + +const u8 gUnknown_Debug_083F850A[] = _("{COLOR RED}HP "); +const u8 gUnknown_Debug_083F8514[] = _("{COLOR RED}ATK "); +const u8 gUnknown_Debug_083F851C[] = _("{COLOR RED}DEF "); +const u8 gUnknown_Debug_083F8524[] = _("{COLOR RED}SPEED"); +const u8 gUnknown_Debug_083F852D[] = _("{COLOR RED}SP。ATK"); +const u8 gUnknown_Debug_083F8537[] = _("{COLOR RED}SP。DEF"); +const u8 gUnknown_Debug_083F8541[] = _("なし"); +const u8 gUnknown_Debug_083F8544[] = _("♂"); +const u8 gUnknown_Debug_083F8546[] = _("♀"); +const u8 gUnknown_Debug_083F8548[] = _("ー"); +const u8 gUnknown_Debug_083F854A[] = _("ON"); +const u8 gUnknown_Debug_083F854D[] = _("OFF"); + +const struct WatanabeDebugMenuItem gUnknown_Debug_083F8554[] = { + {Str_83F8237, {.type4 = &_83F823C}}, + {Str_83F8248, {.type4 = &_83F8250}}, + {Str_83F825C, {.type4 = &_83F8268}}, + {Str_83F8274, {.type4 = &_83F8278}}, + {Str_83F8284, {.type4 = &_83F8290}}, + {Str_83F829C, {.type4 = &_83F82A0}}, + {Str_83F82AC, {.type4 = &_83F82B8}}, + {Str_83F82C4, {.type4 = &_83F82CC}}, + {Str_83F82D8, {.type4 = &_83F82E0}}, + {Str_83F82EC, {.type4 = &_83F82F4}}, + {Str_83F8300, {.type4 = &_83F8308}}, + {Str_83F8314, {.type4 = &_83F831C}}, + {Str_83F8328, {.type4 = &_83F8334}}, + {Str_83F8340, {.type4 = &_83F8348}}, + {Str_83F8354, {.type4 = &_83F835C}}, + {Str_83F8368, {.type4 = &_83F8370}}, + {Str_83F837C, {.type4 = &_83F8384}}, + {Str_83F8390, {.type4 = &_83F8398}}, + {Str_83F83A4, {.type4 = &_83F83AC}}, + {Str_83F83B8, {.type4 = &_83F83C0}}, + {Str_83F83CC, {.type4 = &_83F83D4}}, + {Str_83F83E0, {.type4 = &_83F83EC}}, + {Str_83F83F8, {.type4 = &_83F8404}}, + {Str_83F8410, {.type4 = &_83F841C}}, + {Str_83F8428, {.type4 = &_83F8434}}, + {Str_83F8440, {.type4 = &_83F8448}}, + {Str_83F8454, {.type4 = &_83F845C}}, + {Str_83F8468, {.type4 = &_83F8470}}, + {Str_83F847C, {.type4 = &_83F8484}}, + {Str_83F8490, {.type4 = &_83F8498}}, + {Str_83F84A4, {.type4 = &_83F84AC}}, + {Str_83F84B8, {.type4 = &_83F84C4}}, + {Str_83F84D0, {.type4 = &_83F84D8}}, + {Str_83F84E4, {.type4 = &_83F84EC}}, + {Str_83F84F8, {.type4 = &_83F8500}} +}; + +const u8 gUnknown_Debug_083F866C[] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0xFF +}; + +const u8 gUnknown_Debug_083F8674[] = { + 0x22, 0x1F, 0x20, 0xFF +}; + +const u8 gUnknown_Debug_083F8678[] = { + 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0xFF +}; + +const u8 gUnknown_Debug_083F867F[] = { + 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0xFE, 0xFF +}; + +const u8 gUnknown_Debug_083F8687[] = { + 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0xFD, 0xFF +}; + +const u8 gUnknown_Debug_083F868F[] = { + 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0xFF +}; + +const struct WatanabeDebugMenuItem gUnknown_Debug_083F8698[] = { + {gUnknown_Debug_083F866C, {.type3 = 0x5}}, + {gUnknown_Debug_083F8674, {.type3 = 0x3}}, + {gUnknown_Debug_083F8678, {.type3 = 0x6}}, + {gUnknown_Debug_083F867F, {.type3 = 0x6}}, + {gUnknown_Debug_083F8687, {.type3 = 0x6}}, + {gUnknown_Debug_083F868F, {.type3 = 0x6}} +}; + +const u8 gUnknown_Debug_083F86C8[] = _("ーーー"); +const u8 gUnknown_Debug_083F86CC[] = _("SLP"); +const u8 gUnknown_Debug_083F86D0[] = _("PSN"); +const u8 gUnknown_Debug_083F86D4[] = _("BRN"); +const u8 gUnknown_Debug_083F86D8[] = _("FRZ"); +const u8 gUnknown_Debug_083F86DC[] = _("PAR"); +const u8 gUnknown_Debug_083F86E0[] = _("PSN2"); + +const struct WatanabeDebugMenuItem gUnknown_Debug_083F86E8[] = { + {gUnknown_Debug_083F86C8, {.type3 = 0x0}}, + {gUnknown_Debug_083F86CC, {.type3 = 0x1}}, + {gUnknown_Debug_083F86D0, {.type3 = 0x8}}, + {gUnknown_Debug_083F86D4, {.type3 = 0x10}}, + {gUnknown_Debug_083F86D8, {.type3 = 0x20}}, + {gUnknown_Debug_083F86DC, {.type3 = 0x40}}, + {gUnknown_Debug_083F86E0, {.type3 = 0x80}} +}; + +const u8 gUnknown_Debug_083F8720[] = _("PKMNワLIST"); +const u8 gUnknown_Debug_083F872A[] = _("PKMNワBOX"); +void InitCreatePokemon(void) +{ + u8 sp04[] = _("Create POKひMON LR:Shift START:Add"); + + debug_80C35DC(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); + REG_BLDCNT = 0x0000; + REG_BLDALPHA = 0x0000; + REG_BLDY = 0x0000; + + { + u16 imeBak = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = imeBak; + } + + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + + SetVBlankCallback(debug_80C3758); + SetMainCallback2(debug_80C370C); + + Menu_DrawStdWindowFrame(0, 0, 29, 3); + Menu_PrintText(sp04, 1, 1); + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON; + CreateTask(debug_80C53A4, 0); + debug_80C5208(); + gUnknown_Debug_2038A1C->unk168 = 0; + gUnknown_Debug_2038A1C->unk169 = 0; +} + +void debug_80C53A4(u8 taskId) +{ + gTasks[taskId].func = debug_80C53C0; +} + +void debug_80C53C0(u8 taskId) +{ + debug_80C6384(); + debug_80C627C(0); + gTasks[taskId].func = debug_80C53F0; +} + +void debug_80C53F0(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + gUnknown_Debug_2038A1C->unk164 = gUnknown_Debug_2038A1C->unk64[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]]; + gUnknown_Debug_2038A1C->unk16a = 0; + debug_80C643C(); + gTasks[taskId].func = debug_80C55E4; + } + else if (gMain.newKeys & B_BUTTON) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); + SetMainCallback2(debug_80C370C); + gTasks[taskId].func = debug_80C373C; + } + else if (gMain.newKeys & START_BUTTON) + { + bool8 r4; + PlaySE(SE_SELECT); + debug_80C5FFC(); + r4 = debug_80C527C(&gUnknown_Debug_2038A1C->pokemon); + Menu_DrawStdWindowFrame(3, 8, 26, 11); + if (r4) + Menu_PrintText(gUnknown_Debug_083F872A, 4, 9); + else + Menu_PrintText(gUnknown_Debug_083F8720, 4, 9); + gTasks[taskId].func = debug_80C5708; + } + else if (gMain.newKeys & SELECT_BUTTON) + { + u32 r4 = gUnknown_Debug_2038A1C->unk64[0]; + GetSetPokedexFlag(r4, 2); + GetSetPokedexFlag(r4, 3); + PlaySE(SE_SELECT); + } + else if (gMain.newKeys & DPAD_UP) + { + debug_80C627C(2); + } + else if (gMain.newKeys & DPAD_DOWN) + { + debug_80C627C(1); + } + else if (gMain.newKeys & L_BUTTON && gUnknown_Debug_2038A1C->unk168 > 0) + { + gUnknown_Debug_2038A1C->unk168--; + gUnknown_Debug_2038A1C->unk169 = 0; + gTasks[taskId].func = debug_80C53C0; + } + else if (gMain.newKeys & R_BUTTON && gUnknown_Debug_2038A1C->unk168 < 5) + { + gUnknown_Debug_2038A1C->unk168++; + gUnknown_Debug_2038A1C->unk169 = 0; + gTasks[taskId].func = debug_80C53C0; + } +} + +void debug_80C55E4(u8 taskId) +{ + u8 r7 = gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]; + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].func = debug_80C53C0; + } + else if (gMain.newKeys & B_BUTTON) + { + gUnknown_Debug_2038A1C->unk64[r7] = gUnknown_Debug_2038A1C->unk164; + gTasks[taskId].func = debug_80C53C0; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP) + { + debug_80C6544(1); + debug_80C643C(); + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + debug_80C6544(2); + debug_80C643C(); + } + else if (gUnknown_Debug_083F8554[r7].data.type4->unk9 != 0xFF) + { + if (gMain.newKeys & DPAD_LEFT && gUnknown_Debug_2038A1C->unk16a < gUnknown_Debug_083F8554[r7].data.type4->unk9 - 1) + { + gUnknown_Debug_2038A1C->unk16a++; + debug_80C643C(); + } + else if (gMain.newKeys & DPAD_RIGHT && gUnknown_Debug_2038A1C->unk16a > 0) + { + gUnknown_Debug_2038A1C->unk16a--; + debug_80C643C(); + } + } +} + +void debug_80C5708(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].func = debug_80C53C0; + } +} + +u8 debug_80C5738(u8 * a0, u8 a1, u8 a2) +{ + u16 i; + u8 r5; + u8 r2; + + if (a1 == 0xfe) + { + debug_80C689C(a0, gUnknown_Debug_083F850A, 7); + debug_80C6678(a0 + 7, gUnknown_Debug_2038A1C->unk64[35], 3, 1); + a0[19] = CHAR_SPACE; + a0[20] = CHAR_SPACE; + debug_80C689C(a0 + 21, gUnknown_Debug_083F8514, 7); + debug_80C6678(a0 + 28, gUnknown_Debug_2038A1C->unk64[36], 3, 1); + a0[40] = CHAR_SPACE; + a0[41] = CHAR_SPACE; + debug_80C689C(a0 + 42, gUnknown_Debug_083F851C, 9); + debug_80C6678(a0 + 49, gUnknown_Debug_2038A1C->unk64[37], 3, 1); + return 0; + } + if (a1 == 0xfd) + { + debug_80C689C(a0, gUnknown_Debug_083F8524, 9); + debug_80C6678(a0 + 9, gUnknown_Debug_2038A1C->unk64[38], 3, 1); + a0[21] = CHAR_SPACE; + a0[22] = CHAR_SPACE; + debug_80C689C(a0 + 23, gUnknown_Debug_083F852D, 9); + debug_80C6678(a0 + 32, gUnknown_Debug_2038A1C->unk64[39], 3, 1); + a0[44] = CHAR_SPACE; + a0[45] = CHAR_SPACE; + debug_80C689C(a0 + 46, gUnknown_Debug_083F8537, 9); + debug_80C6678(a0 + 55, gUnknown_Debug_2038A1C->unk64[40], 3, 1); + return 0; + } + for (i = 0; i < 12; i++) + a0[i] = CHAR_SPACE; + debug_80C689C(a0, gUnknown_Debug_083F8554[a1].text, 11); + for (i = 12; i < 256; i++) + a0[i] = EOS; + r2 = gUnknown_Debug_083F8554[a1].data.type4->unk9; + r5 = r2 * 4; + switch (a1) + { + default: + a0[0] = EOS; + break; + case 0: + debug_80C6678(a0 + 10, gUnknown_Debug_2038A1C->unk64[a1], r2, a2); + a0[10 + r5] = CHAR_SPACE; + a0[11 + r5] = EXT_CTRL_CODE_BEGIN; + a0[12 + r5] = 0x01; + a0[13 + r5] = a2; + debug_80C689C(a0 + 14 + r5, gSpeciesNames[NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[a1])], 10); + break; + case 5: + switch (gUnknown_Debug_2038A1C->unk64[a1]) + { + case 0: + debug_80C689C(a0 + 10, gUnknown_Debug_083F8546, 2); + break; + case 1: + debug_80C689C(a0 + 10, gUnknown_Debug_083F8541, 2); + break; + case 2: + debug_80C689C(a0 + 10, gUnknown_Debug_083F8544, 2); + break; + } + break; + case 7 ... 10: + debug_80C6678(a0 + 10, gUnknown_Debug_2038A1C->unk64[a1], r2, a2); + a0[10 + r5] = CHAR_SPACE; + a0[11 + r5] = EXT_CTRL_CODE_BEGIN; + a0[12 + r5] = 0x01; + a0[13 + r5] = a2; + debug_80C689C(a0 + 14 + r5, gMoveNames[gUnknown_Debug_2038A1C->unk64[a1]], 12); + break; + case 11: + debug_80C6678(a0 + 10, gUnknown_Debug_2038A1C->unk64[a1], r2, a2); + a0[10 + r5] = CHAR_SPACE; + a0[11 + r5] = EXT_CTRL_CODE_BEGIN; + a0[12 + r5] = 0x01; + a0[13 + r5] = a2; + if (gUnknown_Debug_2038A1C->unk64[a1] != ITEM_NONE) + debug_80C689C(a0 + 14 + r5, ItemId_GetName(gUnknown_Debug_2038A1C->unk64[a1]), 9); + else + debug_80C689C(a0 + 14 + r5, gUnknown_Debug_083F8541, 9); + break; + case 12: + a0 += 12; + debug_80C689C(a0, gAbilityNames[GetAbilityBySpecies(NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[0]), gUnknown_Debug_2038A1C->unk64[a1])], 12); + break; + case 34: + debug_80C689C(a0 + 10, gUnknown_Debug_083F86E8[gUnknown_Debug_2038A1C->unk64[a1]].text, 4); + break; + case 1 ... 4: + case 13 ... 32: + debug_80C6678(a0 + 12, gUnknown_Debug_2038A1C->unk64[a1], r2, a2); + break; + case 33: + if (gUnknown_Debug_2038A1C->unk64[a1]) + debug_80C689C(a0 + 10, gUnknown_Debug_083F854A, 4); + else + debug_80C689C(a0 + 10, gUnknown_Debug_083F854D, 4); + break; + case 6: + debug_80C689C(a0 + 10, gNatureNames[gUnknown_Debug_2038A1C->unk64[a1]], 5); + break; + } + return 0; +} + +u32 debug_80C5B60(u8 a0) +{ + return gUnknown_Debug_2038A1C->unk64[a0]; +} + +void debug_80C5B74(u32 a0, u8 a1) +{ + switch (a1) + { + default: + gUnknown_Debug_2038A1C->unk64[a1] = a0; + break; + case 0: + case 3: + case 4: + gUnknown_Debug_2038A1C->unk64[a1] = a0; + debug_80C5C94(); + break; + case 1: + gUnknown_Debug_2038A1C->unk64[a1] = a0; + gUnknown_Debug_2038A1C->unk64[2] = gExperienceTables[gBaseStats[NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[0])].growthRate][a0]; + debug_80C5C94(); + break; + case 2: + gUnknown_Debug_2038A1C->unk64[a1] = a0; + debug_80C5DEC(); + break; + case 13 ... 24: + gUnknown_Debug_2038A1C->unk64[a1] = a0; + debug_80C5EF4(); + break; + } +} + +void debug_80C5C94(void) +{ + u32 ivs = gUnknown_Debug_2038A1C->unk64[13] & 0x1f; + ivs |= (gUnknown_Debug_2038A1C->unk64[15] & 0x1f) << 5; + ivs |= (gUnknown_Debug_2038A1C->unk64[17] & 0x1f) << 10; + ivs |= (gUnknown_Debug_2038A1C->unk64[19] & 0x1f) << 15; + ivs |= (gUnknown_Debug_2038A1C->unk64[21] & 0x1f) << 20; + ivs |= (gUnknown_Debug_2038A1C->unk64[23] & 0x1f) << 25; + CreateMon(&gUnknown_Debug_2038A1C->pokemon, NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[0]), gUnknown_Debug_2038A1C->unk64[1], ivs, TRUE, gUnknown_Debug_2038A1C->unk64[4], TRUE, gUnknown_Debug_2038A1C->unk64[3]); + gUnknown_Debug_2038A1C->unk64[5] = (u8)(GetMonGender(&gUnknown_Debug_2038A1C->pokemon) + 2); + gUnknown_Debug_2038A1C->unk64[6] = GetNature(&gUnknown_Debug_2038A1C->pokemon); + gUnknown_Debug_2038A1C->unk64[7] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE1); + gUnknown_Debug_2038A1C->unk64[8] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE2); + gUnknown_Debug_2038A1C->unk64[9] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE3); + gUnknown_Debug_2038A1C->unk64[10] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE4); + gUnknown_Debug_2038A1C->unk64[2] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_EXP); + gUnknown_Debug_2038A1C->unk64[35] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MAX_HP); + gUnknown_Debug_2038A1C->unk64[36] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK); + gUnknown_Debug_2038A1C->unk64[37] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF); + gUnknown_Debug_2038A1C->unk64[38] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED); + gUnknown_Debug_2038A1C->unk64[39] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK); + gUnknown_Debug_2038A1C->unk64[40] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF); +} + +void debug_80C5DEC(void) +{ + u32 zero = 0; + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_EXP, gUnknown_Debug_2038A1C->unk64 + 2); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE1, &zero); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE2, &zero); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE3, &zero); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE4, &zero); + CalculateMonStats(&gUnknown_Debug_2038A1C->pokemon); + GiveMonInitialMoveset(&gUnknown_Debug_2038A1C->pokemon); + gUnknown_Debug_2038A1C->unk64[1] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_LEVEL); + gUnknown_Debug_2038A1C->unk64[7] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE1); + gUnknown_Debug_2038A1C->unk64[8] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE2); + gUnknown_Debug_2038A1C->unk64[9] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE3); + gUnknown_Debug_2038A1C->unk64[10] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE4); + gUnknown_Debug_2038A1C->unk64[35] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MAX_HP); + gUnknown_Debug_2038A1C->unk64[36] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK); + gUnknown_Debug_2038A1C->unk64[37] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF); + gUnknown_Debug_2038A1C->unk64[38] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED); + gUnknown_Debug_2038A1C->unk64[39] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK); + gUnknown_Debug_2038A1C->unk64[40] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF); +} + +void debug_80C5EF4(void) +{ + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HP_IV, gUnknown_Debug_2038A1C->unk64 + 13); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HP_EV, gUnknown_Debug_2038A1C->unk64 + 14); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK_IV, gUnknown_Debug_2038A1C->unk64 + 15); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK_EV, gUnknown_Debug_2038A1C->unk64 + 16); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF_IV, gUnknown_Debug_2038A1C->unk64 + 17); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF_EV, gUnknown_Debug_2038A1C->unk64 + 18); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED_IV, gUnknown_Debug_2038A1C->unk64 + 19); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED_EV, gUnknown_Debug_2038A1C->unk64 + 20); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK_IV, gUnknown_Debug_2038A1C->unk64 + 21); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK_EV, gUnknown_Debug_2038A1C->unk64 + 22); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF_IV, gUnknown_Debug_2038A1C->unk64 + 23); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF_EV, gUnknown_Debug_2038A1C->unk64 + 24); + CalculateMonStats(&gUnknown_Debug_2038A1C->pokemon); + gUnknown_Debug_2038A1C->unk64[35] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MAX_HP); + gUnknown_Debug_2038A1C->unk64[36] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK); + gUnknown_Debug_2038A1C->unk64[37] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF); + gUnknown_Debug_2038A1C->unk64[38] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED); + gUnknown_Debug_2038A1C->unk64[39] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK); + gUnknown_Debug_2038A1C->unk64[40] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF); +} + +void debug_80C5FFC(void) +{ + u32 ivs; + u8 sp10[] = _("たまご"); + u8 sp14[] = _("DebugーG"); + u8 one; + u16 ff; + + ivs = gUnknown_Debug_2038A1C->unk64[13] & 0x1f; + ivs |= (gUnknown_Debug_2038A1C->unk64[15] & 0x1f) << 5; + ivs |= (gUnknown_Debug_2038A1C->unk64[17] & 0x1f) << 10; + ivs |= (gUnknown_Debug_2038A1C->unk64[19] & 0x1f) << 15; + ivs |= (gUnknown_Debug_2038A1C->unk64[21] & 0x1f) << 20; + ivs |= (gUnknown_Debug_2038A1C->unk64[23] & 0x1f) << 25; + + CreateMon(&gUnknown_Debug_2038A1C->pokemon, NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[0]), gUnknown_Debug_2038A1C->unk64[1], ivs, TRUE, gUnknown_Debug_2038A1C->unk64[4], TRUE, gUnknown_Debug_2038A1C->unk64[3]); + + if (gUnknown_Debug_2038A1C->unk64[7] != MOVE_NONE) + SetMonMoveSlot(&gUnknown_Debug_2038A1C->pokemon, gUnknown_Debug_2038A1C->unk64[7], 0); + if (gUnknown_Debug_2038A1C->unk64[8] != MOVE_NONE) + SetMonMoveSlot(&gUnknown_Debug_2038A1C->pokemon, gUnknown_Debug_2038A1C->unk64[8], 1); + if (gUnknown_Debug_2038A1C->unk64[9] != MOVE_NONE) + SetMonMoveSlot(&gUnknown_Debug_2038A1C->pokemon, gUnknown_Debug_2038A1C->unk64[9], 2); + if (gUnknown_Debug_2038A1C->unk64[10] != MOVE_NONE) + SetMonMoveSlot(&gUnknown_Debug_2038A1C->pokemon, gUnknown_Debug_2038A1C->unk64[10], 3); + + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_EXP, gUnknown_Debug_2038A1C->unk64 + 2); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HP_IV, gUnknown_Debug_2038A1C->unk64 + 13); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HP_EV, gUnknown_Debug_2038A1C->unk64 + 14); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK_IV, gUnknown_Debug_2038A1C->unk64 + 15); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK_EV, gUnknown_Debug_2038A1C->unk64 + 16); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF_IV, gUnknown_Debug_2038A1C->unk64 + 17); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF_EV, gUnknown_Debug_2038A1C->unk64 + 18); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED_IV, gUnknown_Debug_2038A1C->unk64 + 19); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED_EV, gUnknown_Debug_2038A1C->unk64 + 20); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK_IV, gUnknown_Debug_2038A1C->unk64 + 21); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK_EV, gUnknown_Debug_2038A1C->unk64 + 22); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF_IV, gUnknown_Debug_2038A1C->unk64 + 23); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF_EV, gUnknown_Debug_2038A1C->unk64 + 24); + + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_COOL, gUnknown_Debug_2038A1C->unk64 + 25); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_BEAUTY, gUnknown_Debug_2038A1C->unk64 + 26); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_CUTE, gUnknown_Debug_2038A1C->unk64 + 27); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SMART, gUnknown_Debug_2038A1C->unk64 + 28); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_TOUGH, gUnknown_Debug_2038A1C->unk64 + 29); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SHEEN, gUnknown_Debug_2038A1C->unk64 + 30); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_FRIENDSHIP, gUnknown_Debug_2038A1C->unk64 + 31); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_POKERUS, gUnknown_Debug_2038A1C->unk64 + 32); + + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HELD_ITEM, gUnknown_Debug_2038A1C->unk64 + 11); + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ALT_ABILITY, gUnknown_Debug_2038A1C->unk64 + 12); + + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_STATUS, &gUnknown_Debug_083F86E8[gUnknown_Debug_2038A1C->unk64[34]].data.type3); + + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_IS_EGG, gUnknown_Debug_2038A1C->unk64 + 33); + if (gUnknown_Debug_2038A1C->unk64[33]) + { + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_NICKNAME, sp10); + one = LANGUAGE_JAPANESE; + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_LANGUAGE, &one); + } + + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_OT_NAME, sp14); + ff = 0xff; + SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MET_LOCATION, &ff); + CalculateMonStats(&gUnknown_Debug_2038A1C->pokemon); +} + +void debug_80C627C(u8 a0) +{ + u8 sp00[] = _("▶"); + u8 sp04[] = _(" "); + + switch (a0) + { + case 0: + Menu_PrintText(sp00, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5); + break; + case 1: + if (gUnknown_Debug_2038A1C->unk169 < gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].data.type3 - 1) + { + Menu_PrintText(sp04, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5); + gUnknown_Debug_2038A1C->unk169++; + Menu_PrintText(sp00, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5); + } + break; + case 2: + if (gUnknown_Debug_2038A1C->unk169 > 0) + { + Menu_PrintText(sp04, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5); + gUnknown_Debug_2038A1C->unk169--; + Menu_PrintText(sp00, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5); + } + break; + } +} + +void debug_80C6384(void) +{ + u16 i; + + Menu_DrawStdWindowFrame(0, 4, 29, 19); + for (i = 0; gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i] != EOS; i++) + { + gUnknown_Debug_2038A1C->unk16b[0] = EXT_CTRL_CODE_BEGIN; + gUnknown_Debug_2038A1C->unk16b[1] = 0x01; + gUnknown_Debug_2038A1C->unk16b[2] = 0x01; + debug_80C5738(gUnknown_Debug_2038A1C->unk16b + 3, gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i], 1); + Menu_PrintText(gUnknown_Debug_2038A1C->unk16b, 2, 2 * i + 5); + } +} + +void debug_80C643C(void) +{ + u16 i; + + Menu_BlankWindowRect(2, 5, 28, 18); + for (i = 0; gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i] != EOS; i++) + { + gUnknown_Debug_2038A1C->unk16b[0] = EXT_CTRL_CODE_BEGIN; + gUnknown_Debug_2038A1C->unk16b[1] = 0x01; + if (i == gUnknown_Debug_2038A1C->unk169) + { + gUnknown_Debug_2038A1C->unk16b[2] = 0x02; + debug_80C5738(gUnknown_Debug_2038A1C->unk16b + 3, gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i], 2); + } + else + { + gUnknown_Debug_2038A1C->unk16b[2] = 0x01; + debug_80C5738(gUnknown_Debug_2038A1C->unk16b + 3, gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i], 1); + } + Menu_PrintText(gUnknown_Debug_2038A1C->unk16b, 2, 2 * i + 5); + } +} + +const u32 gUnknown_Debug_083F8768[] = { + 1, + 10, + 100, + 1000, + 10000, + 100000, + 1000000, + 10000000, + 100000000, + 1000000000 +}; + +void debug_80C6544(u8 a0) +{ + u32 r7 = debug_80C5B60(gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]); + u32 r5 = gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->unk0; + u32 r4 = gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->unk4; + u32 r3 = gUnknown_Debug_083F8768[gUnknown_Debug_2038A1C->unk16a]; + + if (gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->unk8 == 0) + { + switch (a0) + { + case 1: + if (r7 < r4 - r3) + r7 += r3; + else if (r7 < r4) + r7 = r4; + else + r7 = r5; + break; + case 2: + if (r7 > r5 + r3) + r7 -= r3; + else if (r7 > r5) + r7 = r5; + else + r7 = r4; + break; + } + } + debug_80C5B74(r7, gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]); +} + +void debug_80C6630(u8 * a0, u8 a1, u8 a2, u8 a3) +{ + *a0++ = EXT_CTRL_CODE_BEGIN; + *a0++ = 0x01; + if (a2 == 2) + { + if (a3 != gUnknown_Debug_2038A1C->unk16a) + *a0 = 0x02; + else + *a0 = 0x04; + } + else + *a0 = 0x01; + a0[1] = a1 + CHAR_0; +} + +void debug_80C6678(u8 * a0, u32 a1, u8 a2, u8 a3) +{ + u8 r7 = 0; + + switch (a2) + { + default: + case 10: + debug_80C6630(a0 + r7, a1 / 1000000000, a3, 9); + a1 %= 1000000000; + r7 += 4; + case 9: + debug_80C6630(a0 + r7, a1 / 100000000, a3, 8); + a1 %= 100000000; + r7 += 4; + case 8: + debug_80C6630(a0 + r7, a1 / 10000000, a3, 7); + a1 %= 10000000; + r7 += 4; + case 7: + debug_80C6630(a0 + r7, a1 / 1000000, a3, 6); + a1 %= 1000000; + r7 += 4; + case 6: + debug_80C6630(a0 + r7, a1 / 100000, a3, 5); + a1 %= 100000; + r7 += 4; + case 5: + debug_80C6630(a0 + r7, a1 / 10000, a3, 4); + a1 %= 10000; + r7 += 4; + case 4: + debug_80C6630(a0 + r7, a1 / 1000, a3, 3); + a1 %= 1000; + r7 += 4; + case 3: + debug_80C6630(a0 + r7, a1 / 100, a3, 2); + a1 %= 100; + r7 += 4; + case 2: + debug_80C6630(a0 + r7, a1 / 10, a3, 1); + a1 %= 10; + r7 += 4; + case 1: + debug_80C6630(a0 + r7, a1, a3, 0); + break; + } +} + +void debug_80C689C(u8 * a0, const u8 * a1, u8 a2) +{ + u8 i; + + for (i = 0; a1[i] != EOS && i < a2; i++) + a0[i] = a1[i]; +} + +void debug_80C68CC(u16 a0, u8 a1, u8 a2, u8 a3) +{ + u8 sp00[5]; + u8 i; + + for (i = 0; i < 4; i++) + sp00[i] = 0; + sp00[4] = EOS; + + switch (a3) + { + default: + sp00[0] = a0 >> 12; + case 3: + sp00[1] = (a0 & 0x0F00) >> 8; + case 2: + sp00[2] = (a0 & 0x00F0) >> 4; + case 1: + sp00[3] = (a0 & 0x000F); + break; + } + + for (i = 0; i < 4; i++) + { + if (sp00[i] < 10) + sp00[i] += CHAR_0; + else + sp00[i] += CHAR_A - 10; + } + + Menu_PrintText(sp00 + (u8)(4 - a3), a1, a2); +} + +struct OamData gOamData_83F8848 = { + .y = 0xa0 +}; + +union AnimCmd gSpriteAnim_83F8850[] = { + ANIMCMD_FRAME(38, 30), + ANIMCMD_END +}; + +union AnimCmd gSpriteAnim_83F8858[] = { + ANIMCMD_FRAME(39, 30), + ANIMCMD_END +}; + +union AnimCmd gSpriteAnim_83F8860[] = { + ANIMCMD_FRAME(40, 30), + ANIMCMD_END +}; + +const union AnimCmd *gSpriteAnimTable_83F8868[] = { + gSpriteAnim_83F8850, + gSpriteAnim_83F8858, + gSpriteAnim_83F8860 +}; + +struct SpriteTemplate gSpriteTemplate_83F8874 = { + SPRITETAG_WATANABE, + SPRITETAG_WATANABE, + &gOamData_83F8848, + gSpriteAnimTable_83F8868, + NULL, + gDummySpriteAffineAnimTable, + debug_80C7584 +}; + +u16 word_83F888C[] = INCBIN_U16("graphics/debug/sprite_browser.gbapal"); +u8 byte_83F88EC[] = INCBIN_U8("graphics/debug/sprite_browser.4bpp"); + +void InitSeePokemonGraphics(void) +{ + u16 pal; + u8 spriteId; + debug_80C35DC(); + DmaCopy16Defvars(3, byte_83F88EC, BG_SCREEN_ADDR(28), sizeof(byte_83F88EC)); + LoadPalette(word_83F888C, 0x80, sizeof(word_83F888C)); + pal = RGB(31, 31, 31); + LoadPalette(&pal, 0, sizeof(pal)); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0x3F; + REG_WINOUT = 0x1F; + REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN; + REG_BLDALPHA = 0; + REG_BLDY = 0x07; + { + u16 imeBak = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = imeBak; + } + SetVBlankCallback(debug_80C3758); + SetMainCallback2(debug_80C370C); + sub_809D51C(); + REG_BG0CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31); + REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(30); + REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON; + CreateTask(debug_80C6B00, 0); + gUnknown_Debug_2038A20 = &eWatanabe18000_2; + gUnknown_Debug_2038A20->unk0 = 0x115; + gUnknown_Debug_2038A20->unk2 = 0; + gUnknown_Debug_2038A20->unk3 = 0; + gUnknown_Debug_2038A20->unk5 = 0; + gUnknown_Debug_2038A20->unk7 = 0; + gUnknown_Debug_2038A20->unkA = 0; + gUnknown_Debug_2038A20->unk8 = 0; + spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6C, 0x74, 0); + gSprites[spriteId].data[0] = 0; + StartSpriteAnim(gSprites + spriteId, 0); + spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6C, 0x74, 0); + gSprites[spriteId].data[0] = 1; + StartSpriteAnim(gSprites + spriteId, 1); + spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6C, 0x74, 0); + gSprites[spriteId].data[0] = 2; + StartSpriteAnim(gSprites + spriteId, 2); +} + +const u16 gUnknown_Debug_083F8790[] = { + 0x0000, + 0x0002, + 0x0004, + 0x0006, + 0x0008, + 0x000a, + 0x000c, + 0x000e, + 0x0010, + 0x0012, + 0x0014, + 0x0016, + 0x0018, + 0x001a, + 0x001c, + 0x001e, + 0x001f, + 0x001e, + 0x001c, + 0x001a, + 0x0018, + 0x0016, + 0x0014, + 0x0012, + 0x0010, + 0x000e, + 0x000c, + 0x000a, + 0x0008, + 0x0006, + 0x0004, + 0x0002 +}; + +const u8 gUnknown_Debug_083F87D0[] = _("{COLOR RED}L{ESCAPE}ロ"); +const u8 gUnknown_Debug_083F87D8[] = _("{COLOR RED}{ESCAPE}ワR"); +const u8 gUnknown_Debug_083F87E0[] = _("かいはつナンバー"); +const u8 gUnknown_Debug_083F87E9[] = _("グラフィックナンバー"); +const u8 gUnknown_Debug_083F87F4[] = _("{COLOR RED}A:カラーせってい"); +const u8 gUnknown_Debug_083F8801[] = _("{COLOR RED}A:けってい B:キャンセル"); +const u8 gUnknown_Debug_083F8813[] = _(":"); +void debug_80C6B00(u8 taskId) +{ + u8 sp00[] = {0x00, 0x10, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21}; + u8 i; + + Menu_DrawStdWindowFrame(10, 0, 15, 7); + Menu_DrawStdWindowFrame(0, 0, 9, 9); + Menu_DrawStdWindowFrame(0, 10, 9, 19); + Menu_DrawStdWindowFrame(16, 0, 29, 7); + Menu_PrintText(gUnknown_Debug_083F87D0, 17, 1); + Menu_PrintText(gUnknown_Debug_083F87D8, 27, 1); + Menu_PrintText(gUnknown_Debug_083F87E0, 17, 5); + + Menu_DrawStdWindowFrame(10, 8, 29, 12); + for (i = 0; i < 15; i++) + ((u16 *)(VRAM + 0xFA56))[i] = 0xA311 + i; + for (i = 0; i < 15; i++) + ((u16 *)(VRAM + 0xF256))[i] = 0x8301 + i; + + Menu_PrintText(gUnknown_Debug_083F87F4, 20, 10); + Menu_DrawStdWindowFrame(10, 13, 29, 19); + + sp00[0] = 0x23; + for (i = 0; i < 18; i++) + ((u16 *)(VRAM + 0xF396))[i] = 0x9300 + sp00[i]; + sp00[0] = 0x24; + for (i = 0; i < 18; i++) + ((u16 *)(VRAM + 0xF3D6))[i] = 0x9300 + sp00[i]; + sp00[0] = 0x25; + for (i = 0; i < 18; i++) + ((u16 *)(VRAM + 0xF416))[i] = 0x9300 + sp00[i]; + + Menu_PrintText(gUnknown_Debug_083F8801, 15, 17); + + REG_WIN0H = 0x51EF; + REG_WIN0V = 0x699F; + + gTasks[taskId].func = debug_80C6CB8; +} + +void debug_80C6CB8(u8 taskId) +{ + DecompressPicFromTable_2(gMonFrontPicTable + gUnknown_Debug_2038A20->unk0, gMonFrontPicCoords[gUnknown_Debug_2038A20->unk0].coords, gMonFrontPicCoords[gUnknown_Debug_2038A20->unk0].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], gUnknown_Debug_2038A20->unk0); + LoadCompressedObjectPalette(gMonPaletteTable + gUnknown_Debug_2038A20->unk0); + GetMonSpriteTemplate_803C56C(gUnknown_Debug_2038A20->unk0, 1); + gUnknown_Debug_2038A20->unk2 = CreateSprite(&gUnknown_02024E8C, 0x28, 0x28, 0); + gSprites[gUnknown_Debug_2038A20->unk2].callback = debug_69; + gSprites[gUnknown_Debug_2038A20->unk2].oam.priority = 0; + + DecompressPicFromTable_2(gMonBackPicTable + gUnknown_Debug_2038A20->unk0, gMonBackPicCoords[gUnknown_Debug_2038A20->unk0].coords, gMonBackPicCoords[gUnknown_Debug_2038A20->unk0].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[2], gUnknown_Debug_2038A20->unk0); + LoadCompressedObjectPalette(gMonPaletteTable + gUnknown_Debug_2038A20->unk0); + GetMonSpriteTemplate_803C56C(gUnknown_Debug_2038A20->unk0, 2); + gUnknown_Debug_2038A20->unk3 = CreateSprite(&gUnknown_02024E8C, 0x28, 0x78, 0); + gSprites[gUnknown_Debug_2038A20->unk3].callback = debug_69; + gSprites[gUnknown_Debug_2038A20->unk3].oam.priority = 0; + + gUnknown_Debug_2038A20->unk4 = CreateMonIcon(gUnknown_Debug_2038A20->unk0, sub_809D62C, 0x68, 0x2C, 0, 0); + + sub_8091738(SpeciesToNationalPokedexNum(gUnknown_Debug_2038A20->unk0), 2, 0x3fc); + + ((u16 *)(VRAM + 0xF858))[0] = 0xF3FC; + ((u16 *)(VRAM + 0xF858))[1] = 0xF3FD; + ((u16 *)(VRAM + 0xF858))[32] = 0xF3FE; + ((u16 *)(VRAM + 0xF858))[33] = 0xF3FF; + + debug_80C3800(gUnknown_Debug_2038A20->unk0, 17, 3); + debug_80C376C(gUnknown_Debug_2038A20->unk0, 26, 5); + + gUnknown_Debug_2038A20->unk6 = gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum; + CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 0x20); + CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 0x20); + + gTasks[taskId].func = debug_80C6EE8; + + gUnknown_Debug_2038A20->unk9 = 0; + StopCryAndClearCrySongs(); + PlayCry1(gUnknown_Debug_2038A20->unk0, 0); +} + +void debug_80C6EE8(u8 taskId) +{ + u16 hue; + CpuCopy16(gPlttBufferUnfaded + 0x80, gUnknown_Debug_2038A20->unk10, 32); + hue = gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81]; + gUnknown_Debug_2038A20->unkC.r = hue & 0x1f; + gUnknown_Debug_2038A20->unkC.g = (hue & 0x3e0) >> 5; + gUnknown_Debug_2038A20->unkC.b = (hue & 0x7c00) >> 10; + gUnknown_Debug_2038A20->unkC.unused_15 = 0; + debug_80C68CC(gUnknown_Debug_2038A20->unk7 + 1, 11, 10, 2); + Menu_PrintText(gUnknown_Debug_083F8813, 13, 10); + debug_80C68CC(hue, 14, 10, 4); + gTasks[taskId].func = debug_80C6FA8; +} + +#ifdef NONMATCHING +void debug_80C6FA8(u8 taskId) +{ + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); + SetMainCallback2(debug_80C370C); + gTasks[taskId].func = debug_80C373C; + } + else if (gMain.newAndRepeatedKeys & R_BUTTON) + { + gUnknown_Debug_2038A20->unk0 = debug_80C3878(0, gUnknown_Debug_2038A20->unk0); + gTasks[taskId].func = debug_80C71FC; + } + else if (gMain.newAndRepeatedKeys & L_BUTTON) + { + gUnknown_Debug_2038A20->unk0 = debug_80C3878(1, gUnknown_Debug_2038A20->unk0); + gTasks[taskId].func = debug_80C71FC; + } + else if (gMain.newKeys & A_BUTTON) + { + gUnknown_Debug_2038A20->unk5 = 1; + REG_WIN0H = 0x51EF; + REG_WIN0V = 0x4167; + gTasks[taskId].func = debug_80C7294; + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT && gUnknown_Debug_2038A20->unk7 < 14) + { + ((u16 *)PLTT)[0x81 + gUnknown_Debug_2038A20->unk7] = 0; + do; while(0); + gUnknown_Debug_2038A20->unk7++; + gTasks[taskId].func = debug_80C6EE8; + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT && gUnknown_Debug_2038A20->unk7 > 0) + { + ((u16 *)PLTT)[0x81 + gUnknown_Debug_2038A20->unk7] = 0; + do; while(0); + gUnknown_Debug_2038A20->unk7--; + gTasks[taskId].func = debug_80C6EE8; + } + else if (gMain.newKeys & START_BUTTON) + { + gUnknown_Debug_2038A20->unk9 ^= 1; + if (gUnknown_Debug_2038A20->unk9) + LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 0), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20); + else + LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 9), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20); + CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 32); + CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 32); + gTasks[taskId].func = debug_80C6EE8; + } + else + { + if (gMain.newKeys & SELECT_BUTTON) + { + StopCryAndClearCrySongs(); + PlayCry1(gUnknown_Debug_2038A20->unk0, 0); + } + gUnknown_Debug_2038A20->unk8 += 4; + gUnknown_Debug_2038A20->unk8 &= 0x1f; + ((u16 *)PLTT)[0xa1 + gUnknown_Debug_2038A20->unk7] = gUnknown_Debug_083F8790[gUnknown_Debug_2038A20->unk8]; + } +} +#else +NAKED void debug_80C6FA8(u8 taskId) +{ + asm(".equiv PLTT, 0x05000000\n" + "\tpush\t{r4, r5, r6, lr}\n" + "\tadd\tsp, sp, #0xfffffffc\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr6, r0, #0x18\n" + "\tldr\tr1, ._674 @ gMain\n" + "\tldrh\tr2, [r1, #0x2e]\n" + "\tmov\tr0, #0x2\n" + "\tand\tr0, r0, r2\n" + "\tadd\tr4, r1, #0\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._672\t@cond_branch\n" + "\tmov\tr0, #0x5\n" + "\tbl\tPlaySE\n" + "\tmov\tr0, #0x1\n" + "\tneg\tr0, r0\n" + "\tmov\tr1, #0x0\n" + "\tstr\tr1, [sp]\n" + "\tmov\tr2, #0x0\n" + "\tmov\tr3, #0x10\n" + "\tbl\tBeginNormalPaletteFade\n" + "\tldr\tr0, ._674 + 4 @ debug_80C370C\n" + "\tbl\tSetMainCallback2\n" + "\tldr\tr1, ._674 + 8 @ gTasks\n" + "\tlsl\tr0, r6, #0x2\n" + "\tadd\tr0, r0, r6\n" + "\tlsl\tr0, r0, #0x3\n" + "\tadd\tr0, r0, r1\n" + "\tldr\tr1, ._674 + 12 @ debug_80C373C\n" + "\tstr\tr1, [r0]\n" + "\tb\t._703\n" + "._675:\n" + "\t.align\t2, 0\n" + "._674:\n" + "\t.word\tgMain\n" + "\t.word\tdebug_80C370C+1\n" + "\t.word\tgTasks\n" + "\t.word\tdebug_80C373C+1\n" + "._672:\n" + "\tldrh\tr1, [r4, #0x30]\n" + "\tmov\tr0, #0x80\n" + "\tlsl\tr0, r0, #0x1\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._676\t@cond_branch\n" + "\tldr\tr4, ._678 @ gUnknown_Debug_2038A20\n" + "\tldr\tr0, [r4]\n" + "\tldrh\tr1, [r0]\n" + "\tmov\tr0, #0x0\n" + "\tb\t._677\n" + "._679:\n" + "\t.align\t2, 0\n" + "._678:\n" + "\t.word\tgUnknown_Debug_2038A20\n" + "._676:\n" + "\tmov\tr0, #0x80\n" + "\tlsl\tr0, r0, #0x2\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._680\t@cond_branch\n" + "\tldr\tr4, ._682 @ gUnknown_Debug_2038A20\n" + "\tldr\tr0, [r4]\n" + "\tldrh\tr1, [r0]\n" + "\tmov\tr0, #0x1\n" + "._677:\n" + "\tbl\tdebug_80C3878\n" + "\tldr\tr1, [r4]\n" + "\tstrh\tr0, [r1]\n" + "\tldr\tr1, ._682 + 4 @ gTasks\n" + "\tlsl\tr0, r6, #0x2\n" + "\tadd\tr0, r0, r6\n" + "\tlsl\tr0, r0, #0x3\n" + "\tadd\tr0, r0, r1\n" + "\tldr\tr1, ._682 + 8 @ debug_80C71FC\n" + "\tstr\tr1, [r0]\n" + "\tb\t._703\n" + "._683:\n" + "\t.align\t2, 0\n" + "._682:\n" + "\t.word\tgUnknown_Debug_2038A20\n" + "\t.word\tgTasks\n" + "\t.word\tdebug_80C71FC+1\n" + "._680:\n" + "\tmov\tr3, #0x1\n" + "\tand\tr3, r3, r2\n" + "\tcmp\tr3, #0\n" + "\tbeq\t._684\t@cond_branch\n" + "\tldr\tr0, ._686 @ gUnknown_Debug_2038A20\n" + "\tldr\tr1, [r0]\n" + "\tmov\tr0, #0x1\n" + "\tstrb\tr0, [r1, #0x5]\n" + "\tldr\tr1, ._686 + 4 @ 0x4000040\n" + "\tldr\tr2, ._686 + 8 @ 0x51ef\n" + "\tadd\tr0, r2, #0\n" + "\tstrh\tr0, [r1]\n" + "\tadd\tr1, r1, #0x4\n" + "\tldr\tr2, ._686 + 12 @ 0x4167\n" + "\tadd\tr0, r2, #0\n" + "\tstrh\tr0, [r1]\n" + "\tldr\tr1, ._686 + 16 @ gTasks\n" + "\tlsl\tr0, r6, #0x2\n" + "\tadd\tr0, r0, r6\n" + "\tlsl\tr0, r0, #0x3\n" + "\tadd\tr0, r0, r1\n" + "\tldr\tr1, ._686 + 20 @ debug_80C7294\n" + "\tstr\tr1, [r0]\n" + "\tb\t._703\n" + "._687:\n" + "\t.align\t2, 0\n" + "._686:\n" + "\t.word\tgUnknown_Debug_2038A20\n" + "\t.word\t0x4000040\n" + "\t.word\t0x51ef\n" + "\t.word\t0x4167\n" + "\t.word\tgTasks\n" + "\t.word\tdebug_80C7294+1\n" + "._684:\n" + "\tmov\tr0, #0x10\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._689\t@cond_branch\n" + "\tldr\tr1, ._691 @ gUnknown_Debug_2038A20\n" + "\tldr\tr2, [r1]\n" + "\tldrb\tr0, [r2, #0x7]\n" + "\tcmp\tr0, #0xd\n" + "\tbhi\t._689\t@cond_branch\n" + "\tlsl\tr0, r0, #0x1\n" + "\tldr\tr2, ._691 + 4 @ PLTT + 0x102\n" + "\tadd\tr0, r0, r2\n" + "\tstrh\tr3, [r0]\n" + "\tldr\tr1, [r1]\n" + "\tldrb\tr0, [r1, #0x7]\n" + "\tadd\tr0, r0, #0x1\n" + "\tstrb\tr0, [r1, #0x7]\n" + "\tb\t._695\n" + "._692:\n" + "\t.align\t2, 0\n" + "._691:\n" + "\t.word\tgUnknown_Debug_2038A20\n" + "\t.word\tPLTT + 0x102\n" + "._689:\n" + "\tldrh\tr1, [r4, #0x30]\n" + "\tmov\tr0, #0x20\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._694\t@cond_branch\n" + "\tldr\tr2, ._696 @ gUnknown_Debug_2038A20\n" + "\tldr\tr1, [r2]\n" + "\tldrb\tr0, [r1, #0x7]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._694\t@cond_branch\n" + "\tlsl\tr0, r0, #0x1\n" + "\tldr\tr1, ._696 + 4 @ PLTT + 0x102\n" + "\tadd\tr0, r0, r1\n" + "\tmov\tr1, #0x0\n" + "\tstrh\tr1, [r0]\n" + "\tldr\tr1, [r2]\n" + "\tldrb\tr0, [r1, #0x7]\n" + "\tsub\tr0, r0, #0x1\n" + "\tstrb\tr0, [r1, #0x7]\n" + "\tb\t._695\n" + "._697:\n" + "\t.align\t2, 0\n" + "._696:\n" + "\t.word\tgUnknown_Debug_2038A20\n" + "\t.word\tPLTT + 0x102\n" + "._694:\n" + "\tldrh\tr1, [r4, #0x2e]\n" + "\tmov\tr0, #0x8\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._698\t@cond_branch\n" + "\tldr\tr4, ._701 @ gUnknown_Debug_2038A20\n" + "\tldr\tr2, [r4]\n" + "\tldrb\tr0, [r2, #0x9]\n" + "\tmov\tr1, #0x1\n" + "\teor\tr0, r0, r1\n" + "\tstrb\tr0, [r2, #0x9]\n" + "\tldr\tr1, [r4]\n" + "\tldrb\tr0, [r1, #0x9]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._699\t@cond_branch\n" + "\tldrh\tr0, [r1]\n" + "\tmov\tr1, #0x0\n" + "\tmov\tr2, #0x0\n" + "\tbl\tGetMonSpritePalFromOtIdPersonality\n" + "\tldr\tr1, [r4]\n" + "\tldrb\tr1, [r1, #0x6]\n" + "\tlsl\tr1, r1, #0x14\n" + "\tmov\tr2, #0x80\n" + "\tlsl\tr2, r2, #0x11\n" + "\tadd\tr1, r1, r2\n" + "\tlsr\tr1, r1, #0x10\n" + "\tmov\tr2, #0x20\n" + "\tbl\tLoadCompressedPalette\n" + "\tb\t._700\n" + "._702:\n" + "\t.align\t2, 0\n" + "._701:\n" + "\t.word\tgUnknown_Debug_2038A20\n" + "._699:\n" + "\tldrh\tr0, [r1]\n" + "\tmov\tr1, #0x0\n" + "\tmov\tr2, #0x9\n" + "\tbl\tGetMonSpritePalFromOtIdPersonality\n" + "\tldr\tr1, [r4]\n" + "\tldrb\tr1, [r1, #0x6]\n" + "\tlsl\tr1, r1, #0x14\n" + "\tmov\tr2, #0x80\n" + "\tlsl\tr2, r2, #0x11\n" + "\tadd\tr1, r1, r2\n" + "\tlsr\tr1, r1, #0x10\n" + "\tmov\tr2, #0x20\n" + "\tbl\tLoadCompressedPalette\n" + "._700:\n" + "\tldr\tr5, ._704 @ gUnknown_Debug_2038A20\n" + "\tldr\tr0, [r5]\n" + "\tldrb\tr0, [r0, #0x6]\n" + "\tlsl\tr0, r0, #0x5\n" + "\tldr\tr4, ._704 + 4 @ gPlttBufferUnfaded\n" + "\tadd\tr0, r0, r4\n" + "\tldr\tr2, ._704 + 8 @ 0xffffff00\n" + "\tadd\tr1, r4, r2\n" + "\tmov\tr2, #0x10\n" + "\tbl\tCpuSet\n" + "\tldr\tr0, [r5]\n" + "\tldrb\tr0, [r0, #0x6]\n" + "\tlsl\tr0, r0, #0x5\n" + "\tadd\tr0, r0, r4\n" + "\tldr\tr1, ._704 + 12 @ gPlttBufferFaded\n" + "\tmov\tr2, #0x10\n" + "\tbl\tCpuSet\n" + "._695:\n" + "\tldr\tr1, ._704 + 16 @ gTasks\n" + "\tlsl\tr0, r6, #0x2\n" + "\tadd\tr0, r0, r6\n" + "\tlsl\tr0, r0, #0x3\n" + "\tadd\tr0, r0, r1\n" + "\tldr\tr1, ._704 + 20 @ debug_80C6EE8\n" + "\tstr\tr1, [r0]\n" + "\tb\t._703\n" + "._705:\n" + "\t.align\t2, 0\n" + "._704:\n" + "\t.word\tgUnknown_Debug_2038A20\n" + "\t.word\tgPlttBufferUnfaded+0x200\n" + "\t.word\t0xffffff00\n" + "\t.word\tgPlttBufferFaded+0x100\n" + "\t.word\tgTasks\n" + "\t.word\tdebug_80C6EE8+1\n" + "._698:\n" + "\tmov\tr0, #0x4\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._706\t@cond_branch\n" + "\tbl\tStopCryAndClearCrySongs\n" + "\tldr\tr0, ._707 @ gUnknown_Debug_2038A20\n" + "\tldr\tr0, [r0]\n" + "\tldrh\tr0, [r0]\n" + "\tmov\tr1, #0x0\n" + "\tbl\tPlayCry1\n" + "._706:\n" + "\tldr\tr2, ._707 @ gUnknown_Debug_2038A20\n" + "\tldr\tr1, [r2]\n" + "\tldrb\tr0, [r1, #0x8]\n" + "\tadd\tr0, r0, #0x4\n" + "\tstrb\tr0, [r1, #0x8]\n" + "\tldr\tr3, [r2]\n" + "\tldrb\tr1, [r3, #0x8]\n" + "\tmov\tr0, #0x1f\n" + "\tand\tr0, r0, r1\n" + "\tstrb\tr0, [r3, #0x8]\n" + "\tldr\tr0, [r2]\n" + "\tldrb\tr1, [r0, #0x7]\n" + "\tlsl\tr1, r1, #0x1\n" + "\tldr\tr2, ._707 + 4 @ PLTT + 0x142\n" + "\tadd\tr1, r1, r2\n" + "\tldr\tr2, ._707 + 8 @ gUnknown_Debug_083F8790\n" + "\tldrb\tr0, [r0, #0x8]\n" + "\tlsl\tr0, r0, #0x1\n" + "\tadd\tr0, r0, r2\n" + "\tldrh\tr0, [r0]\n" + "\tstrh\tr0, [r1]\n" + "._703:\n" + "\tadd\tsp, sp, #0x4\n" + "\tpop\t{r4, r5, r6}\n" + "\tpop\t{r0}\n" + "\tbx\tr0\n" + "._708:\n" + "\t.align\t2, 0\n" + "._707:\n" + "\t.word\tgUnknown_Debug_2038A20\n" + "\t.word\tPLTT + 0x142\n" + "\t.word\tgUnknown_Debug_083F8790"); +} +#endif // NONMATCHING + +void debug_80C71FC(u8 taskId) +{ + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum)); + DestroySprite(gSprites + gUnknown_Debug_2038A20->unk2); + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk3].oam.paletteNum)); + DestroySprite(gSprites + gUnknown_Debug_2038A20->unk3); + sub_809D510(gSprites + gUnknown_Debug_2038A20->unk4); + gTasks[taskId].func = debug_80C6CB8; +} + +void debug_80C7294(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + gUnknown_Debug_2038A20->unk5 = 0; + REG_WIN0H = 0x51EF; + REG_WIN0V = 0x699F; + gTasks[taskId].func = debug_80C6EE8; + } + else if (gMain.newKeys & B_BUTTON) + { + gUnknown_Debug_2038A20->unk5 = 0; + REG_WIN0H = 0x51EF; + REG_WIN0V = 0x699F; + CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x80, 32); + CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x80, 32); + CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32); + CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32); + gTasks[taskId].func = debug_80C6EE8; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A20->unkA < 2) + { + gUnknown_Debug_2038A20->unkA++; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A20->unkA > 0) + { + gUnknown_Debug_2038A20->unkA--; + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + switch (gUnknown_Debug_2038A20->unkA) + { + case 0: + if (gUnknown_Debug_2038A20->unkC.r < 31) + gUnknown_Debug_2038A20->unkC.r++; + gTasks[taskId].func = debug_80C74E4; + break; + case 1: + if (gUnknown_Debug_2038A20->unkC.g < 31) + gUnknown_Debug_2038A20->unkC.g++; + gTasks[taskId].func = debug_80C74E4; + break; + case 2: + if (gUnknown_Debug_2038A20->unkC.b < 31) + gUnknown_Debug_2038A20->unkC.b++; + gTasks[taskId].func = debug_80C74E4; + break; + } + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + switch (gUnknown_Debug_2038A20->unkA) + { + case 0: + if (gUnknown_Debug_2038A20->unkC.r > 0) + gUnknown_Debug_2038A20->unkC.r--; + gTasks[taskId].func = debug_80C74E4; + break; + case 1: + if (gUnknown_Debug_2038A20->unkC.g > 0) + gUnknown_Debug_2038A20->unkC.g--; + gTasks[taskId].func = debug_80C74E4; + break; + case 2: + if (gUnknown_Debug_2038A20->unkC.b > 0) + gUnknown_Debug_2038A20->unkC.b--; + gTasks[taskId].func = debug_80C74E4; + break; + } + } +} + +void debug_80C74E4(u8 taskId) +{ + u16 pal = (gUnknown_Debug_2038A20->unkC.r & 0x001f) + ((gUnknown_Debug_2038A20->unkC.g << 5) & 0x03e0) + ((gUnknown_Debug_2038A20->unkC.b << 10) & 0x7c00); + gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81] = pal; + gPlttBufferFaded[gUnknown_Debug_2038A20->unk7 + 0x81] = pal; + gPlttBufferUnfaded[0x101 + gUnknown_Debug_2038A20->unk6 * 16 + gUnknown_Debug_2038A20->unk7] = pal; + gPlttBufferFaded[0x101 + gUnknown_Debug_2038A20->unk6 * 16 + gUnknown_Debug_2038A20->unk7] = pal; + debug_80C68CC(pal, 14, 10, 4); + gTasks[taskId].func = debug_80C7294; +} + +void debug_80C7584(struct Sprite *sprite) +{ + if (!gUnknown_Debug_2038A20->unk5) + sprite->invisible = TRUE; + else + { + u8 shade; + switch (sprite->data[0]) + { + default: + case 0: + shade = gUnknown_Debug_2038A20->unkC.r; + break; + case 1: + shade = gUnknown_Debug_2038A20->unkC.g; + break; + case 2: + shade = gUnknown_Debug_2038A20->unkC.b; + break; + } + sprite->pos2.x = 4 * shade; + sprite->pos2.y = 8 * sprite->data[0]; + sprite->data[1]++; + if (sprite->data[0] == gUnknown_Debug_2038A20->unkA && !(sprite->data[1] & 0x08)) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + } +} + +void InitSeeTrainers(void) +{ + u8 spriteId; + u16 imeBak; + debug_80C35DC(); + DmaCopy16Defvars(3, byte_83F88EC, VRAM + 0xe000, 0x800); + LoadPalette(word_83F888C, 0x80, 0x60); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0x3F; + REG_WINOUT = 0x1F; + REG_BLDCNT = 0xF1; + REG_BLDALPHA = 0; + REG_BLDY = 7; + imeBak = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = imeBak; + SetVBlankCallback(debug_80C3758); + SetMainCallback2(debug_80C370C); + REG_BG0CNT = 0x1F0B; + REG_BG1CNT = 0x1E0A; + REG_DISPCNT = 0x3340; + CreateTask(debug_80C777C, 0); + gUnknown_Debug_2038A20 = &eWatanabe18000_2; + gUnknown_Debug_2038A20->unk0 = 0; + gUnknown_Debug_2038A20->unk2 = 0; + gUnknown_Debug_2038A20->unk3 = 0; + gUnknown_Debug_2038A20->unk5 = 0; + gUnknown_Debug_2038A20->unk7 = 0; + gUnknown_Debug_2038A20->unkA = 0; + gUnknown_Debug_2038A20->unk8 = 0; + spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6c, 0x74, 0); + gSprites[spriteId].data[0] = 0; + StartSpriteAnim(gSprites + spriteId, 0); + spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6c, 0x74, 0); + gSprites[spriteId].data[0] = 1; + StartSpriteAnim(gSprites + spriteId, 1); + spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6c, 0x74, 0); + gSprites[spriteId].data[0] = 2; + StartSpriteAnim(gSprites + spriteId, 2); +} + +void debug_80C777C(u8 taskId) +{ + u8 sp00[] = {0x00, 0x10, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21}; + u8 i; + + Menu_DrawStdWindowFrame(9, 0, 14, 7); + Menu_DrawStdWindowFrame(0, 0, 9, 9); + Menu_DrawStdWindowFrame(0, 10, 9, 19); + Menu_DrawStdWindowFrame(14, 0, 29, 7); + Menu_PrintText(gUnknown_Debug_083F87D0, 15, 1); + Menu_PrintText(gUnknown_Debug_083F87D8, 25, 1); + Menu_PrintText(gUnknown_Debug_083F87E0, 15, 5); + + Menu_DrawStdWindowFrame(10, 8, 29, 12); + for (i = 0; i < 15; i++) + ((u16 *)(VRAM + 0xFA56))[i] = 0xA311 + i; + for (i = 0; i < 15; i++) + ((u16 *)(VRAM + 0xF256))[i] = 0x8301 + i; + + Menu_PrintText(gUnknown_Debug_083F87F4, 20, 10); + Menu_DrawStdWindowFrame(10, 13, 29, 19); + + sp00[0] = 0x23; + for (i = 0; i < 18; i++) + ((u16 *)(VRAM + 0xF396))[i] = 0x9300 + sp00[i]; + sp00[0] = 0x24; + for (i = 0; i < 18; i++) + ((u16 *)(VRAM + 0xF3D6))[i] = 0x9300 + sp00[i]; + sp00[0] = 0x25; + for (i = 0; i < 18; i++) + ((u16 *)(VRAM + 0xF416))[i] = 0x9300 + sp00[i]; + + Menu_PrintText(gUnknown_Debug_083F8801, 15, 17); + + REG_WIN0H = 0x51EF; + REG_WIN0V = 0x699F; + + gTasks[taskId].func = debug_80C7934; +} + +void debug_80C7934(u8 taskId) +{ + DecompressPicFromTable_2(gTrainerFrontPicTable + gUnknown_Debug_2038A20->unk0, gTrainerFrontPicCoords[gUnknown_Debug_2038A20->unk0].coords, gTrainerFrontPicCoords[gUnknown_Debug_2038A20->unk0].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], gUnknown_Debug_2038A20->unk0); + LoadCompressedObjectPalette(gTrainerFrontPicPaletteTable + gUnknown_Debug_2038A20->unk0); + GetMonSpriteTemplate_803C5A0(gUnknown_Debug_2038A20->unk0, 1); + gUnknown_Debug_2038A20->unk2 = CreateSprite(&gUnknown_02024E8C, 0x28, 0x28, 0); + gSprites[gUnknown_Debug_2038A20->unk2].callback = debug_69; + gSprites[gUnknown_Debug_2038A20->unk2].oam.priority = 0; + + debug_80C376C(gUnknown_Debug_2038A20->unk0, 26, 5); + + gUnknown_Debug_2038A20->unk6 = gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum; + CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 0x20); + CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 0x20); + + gTasks[taskId].func = debug_80C7A54; + + gUnknown_Debug_2038A20->unk9 = 0; +} + +void debug_80C7A54(u8 taskId) +{ + u16 hue; + CpuCopy16(gPlttBufferUnfaded + 0x80, gUnknown_Debug_2038A20->unk10, 32); + hue = gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81]; + gUnknown_Debug_2038A20->unkC.r = hue & 0x1f; + gUnknown_Debug_2038A20->unkC.g = (hue & 0x3e0) >> 5; + gUnknown_Debug_2038A20->unkC.b = (hue & 0x7c00) >> 10; + gUnknown_Debug_2038A20->unkC.unused_15 = 0; + debug_80C68CC(gUnknown_Debug_2038A20->unk7 + 1, 11, 10, 2); + Menu_PrintText(gUnknown_Debug_083F8813, 13, 10); + debug_80C68CC(hue, 14, 10, 4); + gTasks[taskId].func = debug_80C7B14; +} + +#ifdef NONMATCHING +void debug_80C7B14(u8 taskId) +{ + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); + SetMainCallback2(debug_80C370C); + gTasks[taskId].func = debug_80C373C; + } + else if (gMain.newAndRepeatedKeys & R_BUTTON) + { + gUnknown_Debug_2038A20->unk0 = debug_80C38B4(0, gUnknown_Debug_2038A20->unk0); + gTasks[taskId].func = debug_80C7D44; + } + else if (gMain.newAndRepeatedKeys & L_BUTTON) + { + gUnknown_Debug_2038A20->unk0 = debug_80C38B4(1, gUnknown_Debug_2038A20->unk0); + gTasks[taskId].func = debug_80C7D44; + } + else if (gMain.newKeys & A_BUTTON) + { + gUnknown_Debug_2038A20->unk5 = 1; + REG_WIN0H = 0x51EF; + REG_WIN0V = 0x4167; + gTasks[taskId].func = debug_80C7DDC; + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT && gUnknown_Debug_2038A20->unk7 < 14) + { + ((u16 *)PLTT)[0x81 + gUnknown_Debug_2038A20->unk7] = 0; + do; while (0); // this matches the asm here... + gUnknown_Debug_2038A20->unk7++; + gTasks[taskId].func = debug_80C7A54; + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT && gUnknown_Debug_2038A20->unk7 > 0) + { + ((u16 *)PLTT)[0x81 + gUnknown_Debug_2038A20->unk7] = 0; + do; while (0); // ... but not here + gUnknown_Debug_2038A20->unk7--; + gTasks[taskId].func = debug_80C7A54; + } + else if (gMain.newKeys & START_BUTTON) + { + gUnknown_Debug_2038A20->unk9 ^= 1; + if (gUnknown_Debug_2038A20->unk9) + { + LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 0), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20); + } + else + { + LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 9), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20); + } + CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 32); + CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 32); + gTasks[taskId].func = debug_80C7A54; + } + else + { + gUnknown_Debug_2038A20->unk8 += 4; + gUnknown_Debug_2038A20->unk8 &= 0x1f; + ((u16 *)PLTT)[0xa1 + gUnknown_Debug_2038A20->unk7] = gUnknown_Debug_083F8790[gUnknown_Debug_2038A20->unk8]; + } +} +#else +NAKED void debug_80C7B14(u8 taskId) +{ + asm("\tpush\t{r4, r5, r6, lr}\n" + "\tadd\tsp, sp, #0xfffffffc\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr6, r0, #0x18\n" + "\tldr\tr1, ._792 @ gMain\n" + "\tldrh\tr3, [r1, #0x2e]\n" + "\tmov\tr0, #0x2\n" + "\tand\tr0, r0, r3\n" + "\tadd\tr4, r1, #0\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._790\t@cond_branch\n" + "\tmov\tr0, #0x5\n" + "\tbl\tPlaySE\n" + "\tmov\tr0, #0x1\n" + "\tneg\tr0, r0\n" + "\tmov\tr1, #0x0\n" + "\tstr\tr1, [sp]\n" + "\tmov\tr2, #0x0\n" + "\tmov\tr3, #0x10\n" + "\tbl\tBeginNormalPaletteFade\n" + "\tldr\tr0, ._792 + 4 @ debug_80C370C\n" + "\tbl\tSetMainCallback2\n" + "\tldr\tr1, ._792 + 8 @ gTasks\n" + "\tlsl\tr0, r6, #0x2\n" + "\tadd\tr0, r0, r6\n" + "\tlsl\tr0, r0, #0x3\n" + "\tadd\tr0, r0, r1\n" + "\tldr\tr1, ._792 + 12 @ debug_80C373C\n" + "\tstr\tr1, [r0]\n" + "\tb\t._821\n" + "._793:\n" + "\t.align\t2, 0\n" + "._792:\n" + "\t.word\tgMain\n" + "\t.word\tdebug_80C370C+1\n" + "\t.word\tgTasks\n" + "\t.word\tdebug_80C373C+1\n" + "._790:\n" + "\tldrh\tr1, [r4, #0x30]\n" + "\tmov\tr0, #0x80\n" + "\tlsl\tr0, r0, #0x1\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._794\t@cond_branch\n" + "\tldr\tr4, ._796 @ gUnknown_Debug_2038A20\n" + "\tldr\tr0, [r4]\n" + "\tldrh\tr1, [r0]\n" + "\tmov\tr0, #0x0\n" + "\tb\t._795\n" + "._797:\n" + "\t.align\t2, 0\n" + "._796:\n" + "\t.word\tgUnknown_Debug_2038A20\n" + "._794:\n" + "\tmov\tr0, #0x80\n" + "\tlsl\tr0, r0, #0x2\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._798\t@cond_branch\n" + "\tldr\tr4, ._800 @ gUnknown_Debug_2038A20\n" + "\tldr\tr0, [r4]\n" + "\tldrh\tr1, [r0]\n" + "\tmov\tr0, #0x1\n" + "._795:\n" + "\tbl\tdebug_80C38B4\n" + "\tldr\tr1, [r4]\n" + "\tstrh\tr0, [r1]\n" + "\tldr\tr1, ._800 + 4 @ gTasks\n" + "\tlsl\tr0, r6, #0x2\n" + "\tadd\tr0, r0, r6\n" + "\tlsl\tr0, r0, #0x3\n" + "\tadd\tr0, r0, r1\n" + "\tldr\tr1, ._800 + 8 @ debug_80C7D44\n" + "\tstr\tr1, [r0]\n" + "\tb\t._821\n" + "._801:\n" + "\t.align\t2, 0\n" + "._800:\n" + "\t.word\tgUnknown_Debug_2038A20\n" + "\t.word\tgTasks\n" + "\t.word\tdebug_80C7D44+1\n" + "._798:\n" + "\tmov\tr2, #0x1\n" + "\tand\tr2, r2, r3\n" + "\tcmp\tr2, #0\n" + "\tbeq\t._802\t@cond_branch\n" + "\tldr\tr0, ._804 @ gUnknown_Debug_2038A20\n" + "\tldr\tr1, [r0]\n" + "\tmov\tr0, #0x1\n" + "\tstrb\tr0, [r1, #0x5]\n" + "\tldr\tr1, ._804 + 4 @ 0x4000040\n" + "\tldr\tr2, ._804 + 8 @ 0x51ef\n" + "\tadd\tr0, r2, #0\n" + "\tstrh\tr0, [r1]\n" + "\tadd\tr1, r1, #0x4\n" + "\tldr\tr2, ._804 + 12 @ 0x4167\n" + "\tadd\tr0, r2, #0\n" + "\tstrh\tr0, [r1]\n" + "\tldr\tr1, ._804 + 16 @ gTasks\n" + "\tlsl\tr0, r6, #0x2\n" + "\tadd\tr0, r0, r6\n" + "\tlsl\tr0, r0, #0x3\n" + "\tadd\tr0, r0, r1\n" + "\tldr\tr1, ._804 + 20 @ debug_80C7DDC\n" + "\tstr\tr1, [r0]\n" + "\tb\t._821\n" + "._805:\n" + "\t.align\t2, 0\n" + "._804:\n" + "\t.word\tgUnknown_Debug_2038A20\n" + "\t.word\t0x4000040\n" + "\t.word\t0x51ef\n" + "\t.word\t0x4167\n" + "\t.word\tgTasks\n" + "\t.word\tdebug_80C7DDC+1\n" + "._802:\n" + "\tmov\tr0, #0x10\n" + "\tand\tr0, r0, r1\n" + "\tldr\tr3, ._809 @ gUnknown_Debug_2038A20\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._807\t@cond_branch\n" + "\tldr\tr1, [r3]\n" + "\tldrb\tr0, [r1, #0x7]\n" + "\tcmp\tr0, #0xd\n" + "\tbhi\t._807\t@cond_branch\n" + "\tlsl\tr0, r0, #0x1\n" + "\tldr\tr1, ._809 + 4 @ 0x5000102\n" + "\tadd\tr0, r0, r1\n" + "\tstrh\tr2, [r0]\n" + "\tldr\tr1, [r3]\n" + "\tldrb\tr0, [r1, #0x7]\n" + "\tadd\tr0, r0, #0x1\n" + "\tstrb\tr0, [r1, #0x7]\n" + "\tb\t._813\n" + "._810:\n" + "\t.align\t2, 0\n" + "._809:\n" + "\t.word\tgUnknown_Debug_2038A20\n" + "\t.word\t0x5000102\n" + "._807:\n" + "\tldrh\tr1, [r4, #0x30]\n" + "\tmov\tr0, #0x20\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._812\t@cond_branch\n" + "\tldr\tr1, [r3]\n" + "\tldrb\tr0, [r1, #0x7]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._812\t@cond_branch\n" + "\tlsl\tr0, r0, #0x1\n" + "\tldr\tr2, ._814 @ 0x5000102\n" + "\tadd\tr0, r0, r2\n" + "\tmov\tr1, #0x0\n" + "\tstrh\tr1, [r0]\n" + "\tldr\tr1, [r3]\n" + "\tldrb\tr0, [r1, #0x7]\n" + "\tsub\tr0, r0, #0x1\n" + "\tstrb\tr0, [r1, #0x7]\n" + "\tb\t._813\n" + "._815:\n" + "\t.align\t2, 0\n" + "._814:\n" + "\t.word\t0x5000102\n" + "._812:\n" + "\tldrh\tr1, [r4, #0x2e]\n" + "\tmov\tr0, #0x8\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._816\t@cond_branch\n" + "\tldr\tr4, ._819 @ gUnknown_Debug_2038A20\n" + "\tldr\tr2, [r4]\n" + "\tldrb\tr0, [r2, #0x9]\n" + "\tmov\tr1, #0x1\n" + "\teor\tr0, r0, r1\n" + "\tstrb\tr0, [r2, #0x9]\n" + "\tldr\tr1, [r4]\n" + "\tldrb\tr0, [r1, #0x9]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._817\t@cond_branch\n" + "\tldrh\tr0, [r1]\n" + "\tmov\tr1, #0x0\n" + "\tmov\tr2, #0x0\n" + "\tbl\tGetMonSpritePalFromOtIdPersonality\n" + "\tldr\tr1, [r4]\n" + "\tldrb\tr1, [r1, #0x6]\n" + "\tlsl\tr1, r1, #0x14\n" + "\tmov\tr2, #0x80\n" + "\tlsl\tr2, r2, #0x11\n" + "\tadd\tr1, r1, r2\n" + "\tlsr\tr1, r1, #0x10\n" + "\tmov\tr2, #0x20\n" + "\tbl\tLoadCompressedPalette\n" + "\tb\t._818\n" + "._820:\n" + "\t.align\t2, 0\n" + "._819:\n" + "\t.word\tgUnknown_Debug_2038A20\n" + "._817:\n" + "\tldrh\tr0, [r1]\n" + "\tmov\tr1, #0x0\n" + "\tmov\tr2, #0x9\n" + "\tbl\tGetMonSpritePalFromOtIdPersonality\n" + "\tldr\tr1, [r4]\n" + "\tldrb\tr1, [r1, #0x6]\n" + "\tlsl\tr1, r1, #0x14\n" + "\tmov\tr2, #0x80\n" + "\tlsl\tr2, r2, #0x11\n" + "\tadd\tr1, r1, r2\n" + "\tlsr\tr1, r1, #0x10\n" + "\tmov\tr2, #0x20\n" + "\tbl\tLoadCompressedPalette\n" + "._818:\n" + "\tldr\tr5, ._822 @ gUnknown_Debug_2038A20\n" + "\tldr\tr0, [r5]\n" + "\tldrb\tr0, [r0, #0x6]\n" + "\tlsl\tr0, r0, #0x5\n" + "\tldr\tr4, ._822 + 4 @ gPlttBufferUnfaded\n" + "\tadd\tr0, r0, r4\n" + "\tldr\tr2, ._822 + 8 @ 0xffffff00\n" + "\tadd\tr1, r4, r2\n" + "\tmov\tr2, #0x10\n" + "\tbl\tCpuSet\n" + "\tldr\tr0, [r5]\n" + "\tldrb\tr0, [r0, #0x6]\n" + "\tlsl\tr0, r0, #0x5\n" + "\tadd\tr0, r0, r4\n" + "\tldr\tr1, ._822 + 12 @ gPlttBufferFaded\n" + "\tmov\tr2, #0x10\n" + "\tbl\tCpuSet\n" + "._813:\n" + "\tldr\tr1, ._822 + 16 @ gTasks\n" + "\tlsl\tr0, r6, #0x2\n" + "\tadd\tr0, r0, r6\n" + "\tlsl\tr0, r0, #0x3\n" + "\tadd\tr0, r0, r1\n" + "\tldr\tr1, ._822 + 20 @ debug_80C7A54\n" + "\tstr\tr1, [r0]\n" + "\tb\t._821\n" + "._823:\n" + "\t.align\t2, 0\n" + "._822:\n" + "\t.word\tgUnknown_Debug_2038A20\n" + "\t.word\tgPlttBufferUnfaded+0x200\n" + "\t.word\t0xffffff00\n" + "\t.word\tgPlttBufferFaded+0x100\n" + "\t.word\tgTasks\n" + "\t.word\tdebug_80C7A54+1\n" + "._816:\n" + "\tldr\tr1, [r3]\n" + "\tldrb\tr0, [r1, #0x8]\n" + "\tadd\tr0, r0, #0x4\n" + "\tstrb\tr0, [r1, #0x8]\n" + "\tldr\tr2, [r3]\n" + "\tldrb\tr1, [r2, #0x8]\n" + "\tmov\tr0, #0x1f\n" + "\tand\tr0, r0, r1\n" + "\tstrb\tr0, [r2, #0x8]\n" + "\tldr\tr0, [r3]\n" + "\tldrb\tr1, [r0, #0x7]\n" + "\tlsl\tr1, r1, #0x1\n" + "\tldr\tr2, ._824 @ 0x5000142\n" + "\tadd\tr1, r1, r2\n" + "\tldr\tr2, ._824 + 4 @ gUnknown_Debug_083F8790\n" + "\tldrb\tr0, [r0, #0x8]\n" + "\tlsl\tr0, r0, #0x1\n" + "\tadd\tr0, r0, r2\n" + "\tldrh\tr0, [r0]\n" + "\tstrh\tr0, [r1]\n" + "._821:\n" + "\tadd\tsp, sp, #0x4\n" + "\tpop\t{r4, r5, r6}\n" + "\tpop\t{r0}\n" + "\tbx\tr0\n" + "._825:\n" + "\t.align\t2, 0\n" + "._824:\n" + "\t.word\t0x5000142\n" + "\t.word\tgUnknown_Debug_083F8790"); +} +#endif // NONMATCHING + +void debug_80C7D44(u8 taskId) +{ + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum)); + DestroySprite(gSprites + gUnknown_Debug_2038A20->unk2); + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk3].oam.paletteNum)); + DestroySprite(gSprites + gUnknown_Debug_2038A20->unk3); + sub_809D510(gSprites + gUnknown_Debug_2038A20->unk4); + gTasks[taskId].func = debug_80C7934; +} + +void debug_80C7DDC(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + gUnknown_Debug_2038A20->unk5 = 0; + REG_WIN0H = 0x51EF; + REG_WIN0V = 0x699F; + gTasks[taskId].func = debug_80C7A54; + } + else if (gMain.newKeys & B_BUTTON) + { + gUnknown_Debug_2038A20->unk5 = 0; + REG_WIN0H = 0x51EF; + REG_WIN0V = 0x699F; + CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x80, 32); + CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x80, 32); + CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32); + CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32); + gTasks[taskId].func = debug_80C7A54; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A20->unkA < 2) + { + gUnknown_Debug_2038A20->unkA++; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A20->unkA > 0) + { + gUnknown_Debug_2038A20->unkA--; + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + switch (gUnknown_Debug_2038A20->unkA) + { + case 0: + if (gUnknown_Debug_2038A20->unkC.r < 31) + gUnknown_Debug_2038A20->unkC.r++; + gTasks[taskId].func = debug_80C802C; + break; + case 1: + if (gUnknown_Debug_2038A20->unkC.g < 31) + gUnknown_Debug_2038A20->unkC.g++; + gTasks[taskId].func = debug_80C802C; + break; + case 2: + if (gUnknown_Debug_2038A20->unkC.b < 31) + gUnknown_Debug_2038A20->unkC.b++; + gTasks[taskId].func = debug_80C802C; + break; + } + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + switch (gUnknown_Debug_2038A20->unkA) + { + case 0: + if (gUnknown_Debug_2038A20->unkC.r > 0) + gUnknown_Debug_2038A20->unkC.r--; + gTasks[taskId].func = debug_80C802C; + break; + case 1: + if (gUnknown_Debug_2038A20->unkC.g > 0) + gUnknown_Debug_2038A20->unkC.g--; + gTasks[taskId].func = debug_80C802C; + break; + case 2: + if (gUnknown_Debug_2038A20->unkC.b > 0) + gUnknown_Debug_2038A20->unkC.b--; + gTasks[taskId].func = debug_80C802C; + break; + } + } +} -u8 byte_3005E30[0x20]; +void debug_80C802C(u8 taskId) +{ + u16 pal = (gUnknown_Debug_2038A20->unkC.r & 0x001f) + ((gUnknown_Debug_2038A20->unkC.g << 5) & 0x03e0) + ((gUnknown_Debug_2038A20->unkC.b << 10) & 0x7c00); + gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81] = pal; + gPlttBufferFaded[gUnknown_Debug_2038A20->unk7 + 0x81] = pal; + gPlttBufferUnfaded[0x101 + gUnknown_Debug_2038A20->unk6 * 16 + gUnknown_Debug_2038A20->unk7] = pal; + gPlttBufferFaded[0x101 + gUnknown_Debug_2038A20->unk6 * 16 + gUnknown_Debug_2038A20->unk7] = pal; + debug_80C68CC(pal, 14, 10, 4); + gTasks[taskId].func = debug_80C7DDC; +} -#endif +#endif // DEBUG |