summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/debug/nakamura_debug_menu.c2165
1 files changed, 2072 insertions, 93 deletions
diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c
index 550ac7bbd..87c855514 100644
--- a/src/debug/nakamura_debug_menu.c
+++ b/src/debug/nakamura_debug_menu.c
@@ -1,6 +1,31 @@
#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"
+
+typedef bool8 (*MenuFunc)(void);
EWRAM_DATA u8 _nakamuraData0 = 0;
EWRAM_DATA u8 _nakamuraData1 = 0;
@@ -13,22 +38,33 @@ 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];
+static struct {
+ s16 species;
+ s8 level;
+ u8 unk3;
+} _nakamuraStatic0[PARTY_SIZE];
+static struct Pokeblock _nakamuraStatic18;
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();
+bool8 debug_sub_815F214(void);
+bool8 debug_sub_815F2B4(void);
+bool8 debug_sub_815F2F4(void);
+bool8 debug_sub_815F62C(void);
+bool8 debug_sub_815FA38(void);
+bool8 debug_sub_815FB1C(void);
+bool8 debug_sub_815FBE8(void);
+bool8 debug_sub_815FC54(void);
+bool8 debug_sub_815FC94(void);
+bool8 debug_sub_815FE1C(void);
+void debug_sub_816009C(u8);
+void debug_sub_81600D0(u8);
+void debug_sub_816013C(u8);
+void debug_sub_81603B8(u8);
+bool8 debug_sub_8160498(void);
+u8 debug_sub_816062C(u8);
+bool8 debug_sub_8160D98(void);
const u8 Str_843E36C[] = _("Berries");
const u8 Str_843E374[] = _("Goods");
@@ -53,82 +89,82 @@ const struct MenuAction _843E3DC[] = {
{ Str_843E3AF, debug_sub_8160D98 },
};
-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 },
+const u8 _843E424[] = {
+ 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 ,
};
const u8 Str_843E550[] = _("R");
@@ -146,11 +182,13 @@ const u8 Str_843E556[] = _(
"♀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_843E576[][2] = {
+ _("あ"),
+ _("ア"),
+ _("A"),
+ _("a"),
+ _("0")
+};
const u8 Str_843E580[] = _(
"ADD\n"
"DEL\n"
@@ -169,6 +207,7 @@ const u8 Str_843E5D4[] = _(
"Aボタン {ESCAPE}\p"
"  Bボタン ー\n"
"START けってい");
+
const u8 Str_843E5F0[] = _("?");
const u8 Str_843E5F2[] = _("HP どりょくち");
const u8 Str_843E5FB[] = _("こうげき どりょくち");
@@ -186,4 +225,1944 @@ const u8 Str_843E655[] = _("かい");
const u8 Str_843E658[] = _("0");
const u8 Str_843E65A[] = _("はんい");
+void debug_sub_815F1B8(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(14, 0, 29, 19);
+ Menu_PrintItems(16, 1, ARRAY_COUNT(_843E3DC), _843E3DC);
+ InitMenu(0, 15, 1, ARRAY_COUNT(_843E3DC), 0, 14);
+}
+
+bool8 InitNakamuraDebugMenu(void)
+{
+ debug_sub_815F1B8();
+ gMenuCallback = debug_sub_815F214;
+ return FALSE;
+}
+
+bool8 debug_sub_815F214(void)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ Menu_MoveCursor(-1);
+ }
+
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ Menu_MoveCursor(+1);
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ MenuFunc func = _843E3DC[Menu_GetCursorPos()].func;
+ Menu_DestroyCursor();
+ return func();
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void debug_sub_815F284(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ debug_sub_81381B4();
+ OpenPartyMenu(5, 0);
+ DestroyTask(taskId);
+ }
+}
+
+bool8 debug_sub_815F2B4(void)
+{
+ CloseMenu();
+ Menu_EraseScreen();
+ gMain.savedCallback = sub_805469C;
+ CreateTask(debug_sub_815F284, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ return TRUE;
+}
+
+bool8 debug_sub_815F2F4(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 = _843E424[(Random() % (ARRAY_COUNT(_843E424) / 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;
+}
+
+void debug_sub_815F470(u8 * a0, u8 * a1, u8 * a2)
+{
+ u8 i;
+ u8 sbId = gSaveBlock1.secretBases[_nakamuraData0].secretBaseId;
+
+ for (i = 0; i < ARRAY_COUNT(_843E424) / 4; i++)
+ {
+ if (_843E424[i * 4] == sbId)
+ {
+ *a0 = _843E424[i * 4 + 1];
+ *a1 = _843E424[i * 4 + 2];
+ *a2 = _843E424[i * 4 + 3];
+ break;
+ }
+ }
+}
+
+void debug_sub_815F4D8(void)
+{
+ Menu_BlankWindowRect(1, 1, 10, 10);
+ ConvertIntToDecimalStringN(gStringVar1, _nakamuraData0, STR_CONV_MODE_LEFT_ALIGN, 2);
+ Menu_PrintText(gStringVar1, 1, 1);
+
+ if (gSaveBlock1.secretBases[_nakamuraData0].secretBaseId != 0)
+ {
+ u8 a0;
+ u8 a1;
+ u8 a2;
+ debug_sub_815F470(&a0, &a1, &a2);
+
+ sub_80BC190(gStringVar1, _nakamuraData0);
+ Menu_PrintText(gStringVar1, 1, 3);
+
+ Menu_PrintText(Str_843E550, 1, 5);
+ ConvertIntToDecimalStringN(gStringVar1, a0, STR_CONV_MODE_LEFT_ALIGN, 3);
+ Menu_PrintText(gStringVar1, 2, 5);
+
+ Menu_PrintText(Str_843E552, 1, 7);
+ ConvertIntToDecimalStringN(gStringVar1, a1, STR_CONV_MODE_LEFT_ALIGN, 3);
+ Menu_PrintText(gStringVar1, 3, 7);
+
+ Menu_PrintText(Str_843E554, 1, 9);
+ ConvertIntToDecimalStringN(gStringVar1, a2, STR_CONV_MODE_LEFT_ALIGN, 3);
+ Menu_PrintText(gStringVar1, 3, 9);
+ }
+}
+
+bool8 debug_sub_815F5C4(void)
+{
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (_nakamuraData0 == 0)
+ _nakamuraData0 = 19;
+ else
+ _nakamuraData0--;
+ debug_sub_815F4D8();
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (_nakamuraData0 == 19)
+ _nakamuraData0 = 0;
+ else
+ _nakamuraData0++;
+ debug_sub_815F4D8();
+ return FALSE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 debug_sub_815F62C(void)
+{
+ _nakamuraData0 = 0;
+ gMenuCallback = debug_sub_815F5C4;
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ Menu_DrawStdWindowFrame(0, 0, 11, 11);
+ debug_sub_815F4D8();
+ return FALSE;
+}
+
+void debug_sub_815F668(void)
+{
+ u8 * otIdPtr = gSaveBlock1.secretBases[_nakamuraData0].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);
+}
+
+void debug_sub_815F6E4(void)
+{
+ Menu_BlankWindowRect(2, 3, 11, 4);
+ *StringCopyN(gStringVar1, gSaveBlock1.secretBases[_nakamuraData0].playerName, 7) = EOS;
+ Menu_PrintText(gStringVar1, 2, 3);
+}
+
+void debug_sub_815F72C(void)
+{
+ Menu_BlankWindowRect(2, 1, 11, 10);
+
+ ConvertIntToDecimalStringN(gStringVar1, _nakamuraData0, STR_CONV_MODE_LEFT_ALIGN, 2);
+ Menu_PrintText(gStringVar1, 2, 1);
+
+ if (gSaveBlock1.secretBases[_nakamuraData0].secretBaseId != 0)
+ {
+ debug_sub_815F6E4();
+ debug_sub_815F668();
+ }
+}
+
+void debug_sub_815F788(void)
+{
+ Menu_BlankWindowRect(2, 5, 11, 6);
+ Menu_PrintText(Str_843E574, _nakamuraData2 + 2, 5);
+}
+
+void debug_sub_815F7B4(void)
+{
+ if (_nakamuraData1)
+ Menu_BlankWindowRect(11, 1, 11, 2);
+ else
+ Menu_PrintText(Str_843E576[_nakamuraData3], 11, 1);
+}
+
+void debug_sub_815F7F0(s8 a0)
+{
+ u8 * otIdPtr = gSaveBlock1.secretBases[_nakamuraData0].trainerId;
+ u32 otId = (otIdPtr[3] << 24) | (otIdPtr[2] << 16) | (otIdPtr[1] << 8) | (otIdPtr[0] << 0);
+ s8 r4;
+ int r1 = a0;
+
+ for (r4 = 9; r4 > _nakamuraData2; r4--)
+ r1 *= 10;
+
+ otId += r1;
+ otIdPtr[3] = (otId & 0xFF000000) >> 24;
+ otIdPtr[2] = (otId & 0x00FF0000) >> 16;
+ otIdPtr[1] = (otId & 0x0000FF00) >> 8;
+ otIdPtr[0] = (otId & 0x000000FF) >> 0;
+ debug_sub_815F668();
+}
+
+void debug_sub_815F86C(s8 a0)
+{
+ u8 * namePtr = gSaveBlock1.secretBases[_nakamuraData0].playerName;
+ u8 r2 = 0;
+ u8 r3 = 0;
+ u8 i;
+
+ if (a0 == 100)
+ {
+ for (i = _nakamuraData2; i < 7; i++)
+ {
+ namePtr[i] = EOS;
+ }
+ }
+ else
+ {
+ switch (_nakamuraData3)
+ {
+ case 0:
+ r3 = 1;
+ r2 = 80;
+ break;
+ case 1:
+ r3 = 81;
+ r2 = 160;
+ break;
+ case 2:
+ r3 = CHAR_A;
+ r2 = CHAR_Z;
+ break;
+ case 3:
+ r3 = CHAR_a;
+ r2 = CHAR_z;
+ break;
+ case 4:
+ r3 = CHAR_0;
+ r2 = CHAR_0 + 9;
+ break;
+ }
+
+ namePtr[_nakamuraData2] += a0;
+ if (namePtr[_nakamuraData2] < r3)
+ namePtr[_nakamuraData2] = r2;
+ if (namePtr[_nakamuraData2] > r2)
+ namePtr[_nakamuraData2] = r3;
+ }
+ debug_sub_815F6E4();
+}
+
+bool8 debug_sub_815F930(void)
+{
+ u32 r4 = _nakamuraData1 == 0 ? 7 : 10;
+
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ if (_nakamuraData1)
+ debug_sub_815F7F0(1);
+ else
+ debug_sub_815F86C(1);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ if (_nakamuraData1)
+ debug_sub_815F7F0(-1);
+ else
+ debug_sub_815F86C(-1);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ if (_nakamuraData2 == 0)
+ _nakamuraData2 = r4 - 1;
+ else
+ _nakamuraData2--;
+ debug_sub_815F788();
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ if (_nakamuraData2 == r4 - 1)
+ _nakamuraData2 = 0;
+ else
+ _nakamuraData2++;
+ debug_sub_815F788();
+ return FALSE;
+ }
+
+ if (gMain.newKeys & SELECT_BUTTON)
+ {
+ if (_nakamuraData1 == 0)
+ _nakamuraData3 = (_nakamuraData3 + 1) % 5;
+ debug_sub_815F7B4();
+ return FALSE;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ Menu_BlankWindowRect(2, 5, 11, 6);
+ Menu_BlankWindowRect(11, 1, 11, 2);
+ gMenuCallback = debug_sub_815FA38;
+ return FALSE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ if (_nakamuraData1 == 0)
+ debug_sub_815F86C(100);
+ return FALSE;
+ }
+
+ return FALSE;
+}
+
+bool8 debug_sub_815FA38(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 (_nakamuraData0 == 0)
+ _nakamuraData0 = 19;
+ else
+ _nakamuraData0--;
+ debug_sub_815F72C();
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (_nakamuraData0 == 19)
+ _nakamuraData0 = 0;
+ else
+ _nakamuraData0++;
+ debug_sub_815F72C();
+ return FALSE;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (_nakamuraData0 != 0 && gSaveBlock1.secretBases[_nakamuraData0].secretBaseId != 0)
+ {
+ _nakamuraData1 = Menu_GetCursorPos();
+ _nakamuraData2 = 0;
+ debug_sub_815F788();
+ debug_sub_815F7B4();
+ gMenuCallback = debug_sub_815F930;
+ }
+ return FALSE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 debug_sub_815FB1C(void)
+{
+ _nakamuraData0 = 0;
+ _nakamuraData3 = 0;
+ gMenuCallback = debug_sub_815FA38;
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ Menu_DrawStdWindowFrame(0, 0, 12, 11);
+ debug_sub_815F72C();
+ InitMenu(0, 1, 3, 3, 0, 11);
+ return FALSE;
+}
+
+bool8 debug_sub_815FB78(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_sub_814A714();
+ break;
+ case 1:
+ ClearRoamerData();
+ ClearRoamerLocationData();
+ break;
+ }
+ return TRUE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 debug_sub_815FBE8(void)
+{
+ gMenuCallback = debug_sub_815FB78;
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ debug_sub_814A73C(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;
+}
+
+bool8 debug_sub_815FC54(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;
+}
+
+bool8 debug_sub_815FC94(void)
+{
+ ClearDecorationInventories();
+ debug_sub_814A3A8();
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ CloseMenu();
+ return TRUE;
+}
+
+u16 debug_sub_815FCB4(u8 a0)
+{
+ u16 retval = 0;
+ u16 height = gMapHeader.mapData->height / 3;
+ u16 r6;
+ u16 r4;
+ u16 start = height * a0;
+
+ for (r6 = start; r6 < start + height; r6++)
+ {
+ for (r4 = 0; r4 < gMapHeader.mapData->width; r4++)
+ {
+ if (sub_805759C(MapGridGetMetatileBehaviorAt(r4 + 7, r6 + 7)) == TRUE)
+ {
+ retval++;
+ }
+ }
+ }
+
+ return retval;
+}
+
+u16 debug_sub_815FD40(void)
+{
+ u16 retval = 0;
+ s16 x;
+ s16 y;
+ u16 xx;
+ u16 yy;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ x -= 7;
+ y -= 7;
+
+ for (yy = 0; yy < gMapHeader.mapData->height; yy++)
+ {
+ for (xx = 0; xx < gMapHeader.mapData->width; xx++)
+ {
+ if (sub_805759C(MapGridGetMetatileBehaviorAt(xx + 7, yy + 7)) == TRUE)
+ {
+ retval++;
+ if (x == xx && y == yy)
+ return retval;
+ }
+ }
+ }
+ return retval + 1;
+}
+
+bool8 debug_sub_815FDE4(void)
+{
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ {
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 debug_sub_815FE1C(void)
+{
+ u16 r7;
+ u16 r5;
+
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ Menu_DrawStdWindowFrame(0, 0, 16, 19);
+ Menu_PrintText(Str_843E58D, 1, 1);
+
+ ConvertIntToDecimalStringN(gStringVar1, debug_sub_815FCB4(0), STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 5, 3);
+
+ ConvertIntToDecimalStringN(gStringVar1, debug_sub_815FCB4(1), STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 5, 5);
+
+ ConvertIntToDecimalStringN(gStringVar1, debug_sub_815FCB4(2), STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 5, 7);
+
+ ConvertIntToDecimalStringN(gStringVar1, debug_sub_8092344(0), STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 11, 3);
+
+ ConvertIntToDecimalStringN(gStringVar1, debug_sub_8092344(1), STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 11, 5);
+
+ ConvertIntToDecimalStringN(gStringVar1, debug_sub_8092344(2), STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 11, 7);
+
+ FeebasSeedRng(gSaveBlock1.easyChatPairs[0].unk2);
+ r7 = debug_sub_815FCB4(0) + debug_sub_815FCB4(1) + debug_sub_815FCB4(2);
+ r5 = 0;
+
+ while (r5 != 6)
+ {
+ u16 r1 = FeebasRandom() % r7;
+ if (r1 == 0)
+ r1 = r7;
+ if (r1 == 0 || r1 > 3)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, r1, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ Menu_PrintText(gStringVar1, (r5 % 3) * 5 + 2, (r5 / 3) * 2 + 11);
+ r5++;
+ }
+ }
+
+ ConvertIntToDecimalStringN(gStringVar1, debug_sub_815FD40(), STR_CONV_MODE_RIGHT_ALIGN, 4);
+ Menu_PrintText(gStringVar1, 2, 17);
+
+ gMenuCallback = debug_sub_815FDE4;
+
+ return FALSE;
+}
+
+void debug_sub_815FFDC(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++)
+ {
+ _nakamuraStatic0[i].species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES);
+ if (_nakamuraStatic0[i].species != SPECIES_NONE)
+ {
+ _nakamuraStatic0[i].level = GetMonData(gPlayerParty + i, MON_DATA_LEVEL);
+ debug_sub_816009C(i);
+ debug_sub_81600D0(i);
+ debug_sub_816013C(i);
+ }
+ else
+ _nakamuraStatic0[i].level = 1;
+ _nakamuraStatic0[i].unk3 = 0;
+ }
+
+ _nakamuraData4 = 0;
+ PrintTriangleCursorWithPalette(15, 1, 0xFF);
+ gMenuCallback = debug_sub_8160498;
+}
+
+void debug_sub_816009C(u8 i)
+{
+ Menu_PrintText(gSpeciesNames[_nakamuraStatic0[i].species], 16, 2 * i + 1);
+}
+
+void debug_sub_81600D0(u8 i)
+{
+ // u8 sp0[] = _("?");
+
+ u8 sp0[2];
+ u8 gender;
+
+ memcpy(sp0, Str_843E5F0, sizeof Str_843E5F0);
+ 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);
+}
+
+void debug_sub_816013C(u8 i)
+{
+ ConvertIntToDecimalStringN(gStringVar1, _nakamuraStatic0[i].level, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ Menu_PrintText(gStringVar1, 26, 2 * i + 1);
+}
+
+void debug_sub_816017C(u8 i)
+{
+ Menu_BlankWindowRect(16, 2 * i + 1, 28, 2 * i + 2);
+ if (_nakamuraStatic0[i].species != SPECIES_NONE)
+ {
+ debug_sub_816009C(i);
+ debug_sub_81600D0(i);
+ debug_sub_816013C(i);
+ }
+ debug_sub_81603B8(5);
+}
+
+void debug_sub_81601C8(u8 i, s8 dirn)
+{
+ if (_nakamuraStatic0[i].species == SPECIES_NONE && _nakamuraStatic0[i].unk3 == 0 && dirn == 1)
+ _nakamuraStatic0[i].species = SPECIES_TREECKO - 1;
+ _nakamuraStatic0[i].species += dirn;
+ if (_nakamuraStatic0[i].species >= SPECIES_CHIMECHO)
+ _nakamuraStatic0[i].species -= SPECIES_CHIMECHO;
+ if (_nakamuraStatic0[i].species < 0)
+ _nakamuraStatic0[i].species += SPECIES_CHIMECHO;
+ CreateMon(gPlayerParty + i, _nakamuraStatic0[i].species, _nakamuraStatic0[i].level, 0x20, FALSE, 0, FALSE, 0);
+ _nakamuraStatic0[i].unk3 = 1;
+}
+
+void debug_sub_8160258(u8 i)
+{
+ if (_nakamuraStatic0[i].species != SPECIES_NONE)
+ debug_sub_816062C(i);
+}
+
+void debug_sub_816027C(u8 i, s8 dirn)
+{
+ if (_nakamuraStatic0[i].species != SPECIES_NONE)
+ {
+ _nakamuraStatic0[i].level += dirn;
+ if (_nakamuraStatic0[i].level > 100)
+ _nakamuraStatic0[i].level = 1;
+ if (_nakamuraStatic0[i].level < 1)
+ _nakamuraStatic0[i].level = 100;
+ SetMonData(gPlayerParty + i, MON_DATA_EXP, gExperienceTables[gBaseStats[_nakamuraStatic0[i].species].growthRate] + _nakamuraStatic0[i].level);
+ debug_sub_803F55C(gPlayerParty + i);
+ }
+}
+
+void debug_sub_8160308(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;
+ }
+}
+
+void debug_sub_81603B8(u8 i)
+{
+ u8 q;
+ u8 r;
+ PlaySE(SE_SELECT);
+ q = _nakamuraData4 / 6;
+ r = _nakamuraData4 % 6;
+ Menu_BlankWindowRect(_843E5D1[q], r * 2 + 1, _843E5D1[q], r * 2 + 2);
+
+ if (i == 0)
+ {
+ if (r != 0)
+ _nakamuraData4--;
+ else
+ _nakamuraData4 = q * 6 + 5;
+ }
+
+ if (i == 1)
+ {
+ if (r != 5)
+ _nakamuraData4++;
+ else
+ _nakamuraData4 = q * 6;
+ }
+
+ if (i == 2)
+ {
+ if (q != 0)
+ _nakamuraData4 -= 6;
+ else
+ _nakamuraData4 = 12 + r;
+ }
+
+ if (i == 3)
+ {
+ if (q != 2)
+ _nakamuraData4 += 6;
+ else
+ _nakamuraData4 = r;
+ }
+
+ q = _nakamuraData4 / 6;
+ r = _nakamuraData4 % 6;
+ PrintTriangleCursorWithPalette(_843E5D1[q], r * 2 + 1, 0xFF);
+}
+
+bool8 debug_sub_8160498(void)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ debug_sub_81603B8(0);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ debug_sub_81603B8(1);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ debug_sub_81603B8(2);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ debug_sub_81603B8(3);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & A_BUTTON)
+ {
+ if (_nakamuraData4 < 6)
+ debug_sub_81601C8(_nakamuraData4, +1);
+ if (_nakamuraData4 >= 6 && _nakamuraData4 < 12)
+ debug_sub_8160258(_nakamuraData4 % 6);
+ if (_nakamuraData4 >= 12 && _nakamuraData4 < 18)
+ debug_sub_816027C(_nakamuraData4 % 6, +1);
+ debug_sub_816017C(_nakamuraData4 % 6);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & B_BUTTON)
+ {
+ if (_nakamuraData4 < 6)
+ debug_sub_81601C8(_nakamuraData4, -1);
+ if (_nakamuraData4 >= 6 && _nakamuraData4 < 12)
+ debug_sub_8160258(_nakamuraData4 % 6);
+ if (_nakamuraData4 >= 12 && _nakamuraData4 < 18)
+ debug_sub_816027C(_nakamuraData4 % 6, -1);
+ debug_sub_816017C(_nakamuraData4 % 6);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & R_BUTTON)
+ {
+ if (_nakamuraData4 < 6)
+ debug_sub_81601C8(_nakamuraData4, +10);
+ if (_nakamuraData4 >= 6 && _nakamuraData4 < 12)
+ debug_sub_8160258(_nakamuraData4 % 6);
+ if (_nakamuraData4 >= 12 && _nakamuraData4 < 18)
+ debug_sub_816027C(_nakamuraData4 % 6, +1);
+ debug_sub_816017C(_nakamuraData4 % 6);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & L_BUTTON)
+ {
+ if (_nakamuraData4 < 6)
+ debug_sub_81601C8(_nakamuraData4, -10);
+ if (_nakamuraData4 >= 6 && _nakamuraData4 < 12)
+ debug_sub_8160258(_nakamuraData4 % 6);
+ if (_nakamuraData4 >= 12 && _nakamuraData4 < 18)
+ debug_sub_816027C(_nakamuraData4 % 6, -1);
+ debug_sub_816017C(_nakamuraData4 % 6);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & START_BUTTON)
+ {
+ debug_sub_8160308();
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+u8 debug_sub_816062C(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, _nakamuraStatic0[i].species, _nakamuraStatic0[i].level, 0x20, TRUE, personality, FALSE, 0);
+ return ratio;
+}
+
+#ifdef NONMATCHING
+u8 debug_sub_8160714(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
+__attribute__((naked))
+u8 debug_sub_8160714(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
+
+void debug_sub_816097C(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;
+ }
+ }
+}
+
+void debug_sub_8160A80(u8 a0)
+{
+ struct Pokeblock *pkblk = &_nakamuraStatic18;
+
+ if (a0 == 0)
+ {
+ debug_sub_816097C(gStringVar1, pkblk->spicy);
+ Menu_PrintText(gStringVar1, 8, 3);
+ }
+ else if (a0 == 1)
+ {
+ debug_sub_816097C(gStringVar1, pkblk->dry);
+ Menu_PrintText(gStringVar1, 8, 5);
+ }
+ else if (a0 == 2)
+ {
+ debug_sub_816097C(gStringVar1, pkblk->sweet);
+ Menu_PrintText(gStringVar1, 8, 7);
+ }
+ else if (a0 == 3)
+ {
+ debug_sub_816097C(gStringVar1, pkblk->bitter);
+ Menu_PrintText(gStringVar1, 8, 9);
+ }
+ else if (a0 == 4)
+ {
+ debug_sub_816097C(gStringVar1, pkblk->sour);
+ Menu_PrintText(gStringVar1, 8, 11);
+ }
+ else if (a0 == 5)
+ {
+ debug_sub_816097C(gStringVar1, pkblk->feel);
+ Menu_PrintText(gStringVar1, 8, 13);
+ }
+}
+
+void debug_sub_8160B50(u8 a0, s8 a1)
+{
+ struct Pokeblock *pkblk = &_nakamuraStatic18;
+
+ 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;
+}
+
+void debug_sub_8160BB0(void)
+{
+ _nakamuraStatic18.color = debug_sub_8160714(gStringVar1, &_nakamuraStatic18);
+ Menu_BlankWindowRect(1, 1, 8, 2);
+ Menu_PrintText(gStringVar1, 1, 1);
+}
+
+void debug_sub_8160BE4(void)
+{
+ u8 i;
+
+ Menu_DrawStdWindowFrame(0, 0, 12, 15);
+ debug_sub_8160BB0();
+ 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++)
+ debug_sub_8160A80(i);
+
+ InitMenu(0, 1, 3, 6, 0, 11);
+}
+
+void debug_sub_8160C7C(void)
+{
+ struct Pokeblock * pkblk = &_nakamuraStatic18;
+ 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;
+ }
+ }
+
+ sub_810CA34(pkblk);
+ debug_sub_8160BB0();
+
+ for (i = 0; i < 6; i++)
+ debug_sub_8160A80(i);
+}
+
+bool8 debug_sub_8160CF4(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)
+ {
+ debug_sub_8160B50(Menu_GetCursorPos(), -1);
+ debug_sub_8160A80(Menu_GetCursorPos());
+ debug_sub_8160BB0();
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ debug_sub_8160B50(Menu_GetCursorPos(), +1);
+ debug_sub_8160A80(Menu_GetCursorPos());
+ debug_sub_8160BB0();
+ return FALSE;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ debug_sub_8160C7C();
+ PlaySE(SE_SELECT);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 debug_sub_8160D98(void)
+{
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ debug_sub_8160BE4();
+ gMenuCallback = debug_sub_8160CF4;
+ return FALSE;
+}
+
+void debug_sub_8160DC0(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);
+}
+
+void debug_sub_8160E50(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);
+}
+
+void debug_sub_8161028(s8 a0)
+{
+ s16 i;
+ if (a0 == -1)
+ {
+ if (_nakamuraData5 == 0)
+ {
+ for (i = 5; i >= 0; i--)
+ {
+ if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ _nakamuraData5 = i;
+ return;
+ }
+ }
+ }
+ _nakamuraData5 += a0;
+ return;
+ }
+
+ if (a0 == 1)
+ {
+ _nakamuraData5 += a0;
+ if (_nakamuraData5 == 6)
+ _nakamuraData5 = 0;
+ else if (GetMonData(gPlayerParty + _nakamuraData5, MON_DATA_SPECIES) == SPECIES_NONE)
+ _nakamuraData5 = 0;
+ }
+}
+
+bool8 debug_sub_81610BC(void)
+{
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ debug_sub_8161028(-1);
+ debug_sub_8160E50(gPlayerParty + _nakamuraData5);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ debug_sub_8161028(+1);
+ debug_sub_8160E50(gPlayerParty + _nakamuraData5);
+ 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);
+ _nakamuraData5 = 0;
+ debug_sub_8160DC0();
+ debug_sub_8160E50(gPlayerParty + 0);
+ gMenuCallback = debug_sub_81610BC;
+ return FALSE;
+}
+
+u16 debug_sub_8161160(void)
+{
+ u16 r7 = 0;
+ u16 r6;
+ u16 r5;
+ u32 i;
+
+ if (_nakamuraData6 <= _nakamuraData8)
+ {
+ r6 = _nakamuraData6;
+ r5 = _nakamuraData8;
+ }
+ else
+ {
+ r6 = _nakamuraData8;
+ r5 = _nakamuraData6;
+ }
+
+ for (i = 0; i < _nakamuraDataA; i++)
+ {
+ u16 r0 = Random() % _nakamuraDataC;
+ if (r0 >= r6 && r0 <= r5)
+ r7++;
+ }
+
+ return r7;
+}
+
+void debug_sub_81611D8(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);
+}
+
+void debug_sub_8161290(u16 a0)
+{
+ ConvertIntToDecimalStringN(gStringVar1, a0, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 8, 9);
+}
+
+void debug_sub_81612B8(u16 * a0, s8 a1, u8 a2)
+{
+ *a0 += a1;
+ ConvertIntToDecimalStringN(gStringVar1, *a0, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 8, a2);
+}
+
+bool8 debug_sub_81612EC(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)
+ debug_sub_81612B8(&_nakamuraData6, -r5, 1);
+ if (r4 == 1)
+ debug_sub_81612B8(&_nakamuraData8, -r5, 3);
+ if (r4 == 2)
+ debug_sub_81612B8(&_nakamuraDataC, -r5, 5);
+ if (r4 == 3)
+ debug_sub_81612B8(&_nakamuraDataA, -r5, 7);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ r4 = Menu_GetCursorPos();
+ if (r4 == 0)
+ debug_sub_81612B8(&_nakamuraData6, r5, 1);
+ if (r4 == 1)
+ debug_sub_81612B8(&_nakamuraData8, r5, 3);
+ if (r4 == 2)
+ debug_sub_81612B8(&_nakamuraDataC, r5, 5);
+ if (r4 == 3)
+ debug_sub_81612B8(&_nakamuraDataA, r5, 7);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (_nakamuraDataC != 0)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8161290(debug_sub_8161160());
+ }
+ return FALSE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 DebugMenu_RandomNumberTest(void)
+{
+ _nakamuraData6 = 0;
+ _nakamuraData8 = 0;
+ _nakamuraDataC = 0;
+ _nakamuraDataA = 0;
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ debug_sub_81611D8();
+ gMenuCallback = debug_sub_81612EC;
+ return FALSE;
+}
+
#endif // DEBUG