summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/debug/watanabe_debug_menu.c186
1 files changed, 186 insertions, 0 deletions
diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c
index 5ed067651..2b2da4951 100644
--- a/src/debug/watanabe_debug_menu.c
+++ b/src/debug/watanabe_debug_menu.c
@@ -3,6 +3,7 @@
#include "ewram.h"
#include "random.h"
#include "gba/flash_internal.h"
+#include "constants/items.h"
#include "constants/species.h"
#include "constants/songs.h"
#include "debug.h"
@@ -24,6 +25,14 @@
#include "pokemon_storage_system.h"
#include "battle.h"
#include "battle_bg.h"
+#include "item.h"
+#include "pokemon_summary_screen.h"
+
+struct WatanabeDebugMenuItemSubstruct {
+ u32 unk0;
+ u8 fill4[5];
+ u8 unk9;
+};
struct WatanabeDebugMenuItem {
const u8 * text;
@@ -31,6 +40,7 @@ struct WatanabeDebugMenuItem {
u8 type1[2];
u32 type2;
u8 type3;
+ const struct WatanabeDebugMenuItemSubstruct *type4;
} data;
};
@@ -41,6 +51,10 @@ struct WatanabeEwram18000 {
u8 unk168;
u8 unk169;
u8 unk16a;
+ u8 unk16b;
+ u8 unk16c;
+ u8 unk16d;
+ u8 unk16e[256];
};
#define eWatanabe18000 (*(struct WatanabeEwram18000 *)(gSharedMem + 0x18000))
@@ -94,13 +108,18 @@ 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_80C7584(struct Sprite *);
extern const struct WatanabeDebugMenuItem gUnknown_Debug_083F8068[5];
extern const struct WatanabeDebugMenuItem gUnknown_Debug_083F80D8[10];
extern const struct WatanabeDebugMenuItem gUnknown_Debug_083F814C[9];
+extern const struct WatanabeDebugMenuItem gUnknown_Debug_083F8554[35];
extern const struct WatanabeDebugMenuItem gUnknown_Debug_083F8698[6];
+extern const struct WatanabeDebugMenuItem gUnknown_Debug_083F86E8[7];
extern const u8 gUnknown_Debug_083F7FD4[2]; // = _("▶");
extern const u8 gUnknown_Debug_083F7FD6[4]; // = {0x25, 0x20, 0x01, 0x08};
@@ -130,6 +149,17 @@ extern const u8 gUnknown_Debug_083F8233[4]; // = _("おんな");
extern const u8 gUnknown_Debug_083F8720[10];
extern const u8 gUnknown_Debug_083F872A[9];
extern const u8 gUnknown_Debug_083F8733[37]; // = _("Create POKひMON   LR:Shift  START:Add");
+extern const u8 gUnknown_Debug_083F850A[10]; // = _("{COLOR RED}HP  ");
+extern const u8 gUnknown_Debug_083F8514[8]; // = _("{COLOR RED}ATK ");
+extern const u8 gUnknown_Debug_083F851C[8]; // = _("{COLOR RED}DEF ");
+extern const u8 gUnknown_Debug_083F8524[9]; // = _("{COLOR RED}SPEED");
+extern const u8 gUnknown_Debug_083F852D[10]; // = _("{COLOR RED}SP。ATK");
+extern const u8 gUnknown_Debug_083F8537[10]; // = _("{COLOR RED}SP。DEF");
+extern const u8 gUnknown_Debug_083F8541[3]; // = _("なし");
+extern const u8 gUnknown_Debug_083F8544[2]; // = _("♂");
+extern const u8 gUnknown_Debug_083F8546[2]; // = _("♀");
+extern const u8 gUnknown_Debug_083F854A[3]; // = _("ON");
+extern const u8 gUnknown_Debug_083F854D[4]; // = _("OFF");
#define SPRITETAG_WATANABE 0x1000
@@ -1717,6 +1747,162 @@ void debug_80C53F0(u8 taskId)
}
}
+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;
+}
+
u16 word_83F888C[] = INCBIN_U16("graphics/debug/sprite_browser.gbapal");
u8 byte_83F88EC[] = INCBIN_U8("graphics/debug/sprite_browser.4bpp");