summaryrefslogtreecommitdiff
path: root/src/debug
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-06-25 17:50:27 -0500
committerMarcus Huderle <huderlem@gmail.com>2018-06-25 17:50:27 -0500
commit605f8ac1141daf66d3428923e004f82f5a5e1594 (patch)
treea3e5fae5d271175c7f10b6b455fcdc7f0fdd553e /src/debug
parente88e39d5fda1644f77e41fd652d4310612da7532 (diff)
parent659437f07a44b6f560bb58d6c12d141ed8ba7643 (diff)
Merge branch 'master' into contest_link_80C2020
Diffstat (limited to 'src/debug')
-rw-r--r--src/debug/ereader_debug_menu.c362
-rw-r--r--src/debug/kagaya_debug_menu.c16
-rw-r--r--src/debug/matsuda_debug_menu.c10
-rw-r--r--src/debug/mori_debug_menu.c4
-rw-r--r--src/debug/nakamura_debug_menu.c2386
-rw-r--r--src/debug/nohara_debug_menu.c965
-rw-r--r--src/debug/sound_check_menu.c262
-rw-r--r--src/debug/start_menu_debug.c7810
-rw-r--r--src/debug/taya_debug_window.c1085
-rw-r--r--src/debug/tomomichi_debug_menu.c4497
-rw-r--r--src/debug/unknown_debug_menu.c2
-rw-r--r--src/debug/watanabe_debug_menu.c3749
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