summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/tomomichi_debug_menu.s496
-rw-r--r--src/debug/tomomichi_debug_menu.c142
2 files changed, 142 insertions, 496 deletions
diff --git a/asm/tomomichi_debug_menu.s b/asm/tomomichi_debug_menu.s
index 5a1cef98f..ad10cb696 100644
--- a/asm/tomomichi_debug_menu.s
+++ b/asm/tomomichi_debug_menu.s
@@ -3,502 +3,6 @@
.include "constants/gba_constants.inc"
.include "include/macros.inc"
- thumb_func_start debug_sub_808CB74
-debug_sub_808CB74:
- push {r4, r5, lr}
- bl Menu_ProcessInput
- add r4, r0, #0
- lsl r4, r4, #0x18
- lsr r4, r4, #0x18
- bl Menu_GetCursorPos
- add r1, r0, #0
- ldr r5, ._226 @ gDebug_0300070F
- ldrb r0, [r5]
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bl debug_sub_808CBC0
- ldrb r0, [r5]
- bl debug_sub_808CC10
- lsl r4, r4, #0x18
- asr r4, r4, #0x18
- mov r0, #0x2
- neg r0, r0
- cmp r4, r0
- beq ._223 @cond_branch
- mov r0, #0x1
- neg r0, r0
- cmp r4, r0
- beq ._224 @cond_branch
-._223:
- mov r0, #0x0
- b ._225
-._227:
- .align 2, 0
-._226:
- .word gDebug_0300070F
-._224:
- bl CloseMenu
- mov r0, #0x1
-._225:
- pop {r4, r5}
- pop {r1}
- bx r1
-
- thumb_func_end debug_sub_808CB74
-
- thumb_func_start debug_sub_808CBC0
-debug_sub_808CBC0:
- push {r4, lr}
- lsl r0, r0, #0x18
- lsr r2, r0, #0x18
- lsl r1, r1, #0x18
- lsr r3, r1, #0x18
- ldr r0, ._231 @ gMain
- ldrh r1, [r0, #0x2e]
- mov r0, #0x80
- lsl r0, r0, #0x1
- and r0, r0, r1
- cmp r0, #0
- beq ._230 @cond_branch
- ldr r0, ._231 + 4 @ gUnknown_Debug_083C271A
- lsl r1, r2, #0x3
- add r1, r1, r2
- add r1, r1, r3
- lsl r1, r1, #0x1
- add r1, r1, r0
- ldrh r4, [r1]
- add r0, r4, #0
- bl FlagGet
- lsl r0, r0, #0x18
- cmp r0, #0
- bne ._229 @cond_branch
- add r0, r4, #0
- bl FlagSet
- b ._230
-._232:
- .align 2, 0
-._231:
- .word gMain
- .word gUnknown_Debug_083C271A
-._229:
- add r0, r4, #0
- bl FlagClear
-._230:
- pop {r4}
- pop {r0}
- bx r0
-
- thumb_func_end debug_sub_808CBC0
-
- thumb_func_start debug_sub_808CC10
-debug_sub_808CC10:
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- lsl r0, r0, #0x18
- lsr r1, r0, #0x18
- mov r5, #0x0
- ldr r0, ._235 @ gUnknown_Debug_083C2710
- add r0, r1, r0
- ldrb r2, [r0]
- cmp r5, r2
- bcs ._233 @cond_branch
- ldr r0, ._235 + 4 @ gUnknown_Debug_083C271A
- mov r8, r0
- lsl r0, r1, #0x3
- add r0, r0, r1
- lsl r7, r0, #0x1
- add r6, r2, #0
-._234:
- lsl r0, r5, #0x1
- add r4, r0, #1
- lsl r4, r4, #0x18
- lsr r4, r4, #0x18
- add r0, r0, r7
- add r0, r0, r8
- ldrh r0, [r0]
- bl FlagGet
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- neg r2, r0
- orr r2, r2, r0
- lsr r2, r2, #0x1f
- mov r0, #0x1c
- add r1, r4, #0
- bl debug_sub_808F2E0
- add r0, r5, #1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, r6
- bcc ._234 @cond_branch
-._233:
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7}
- pop {r0}
- bx r0
-._236:
- .align 2, 0
-._235:
- .word gUnknown_Debug_083C2710
- .word gUnknown_Debug_083C271A
-
- thumb_func_end debug_sub_808CC10
-
- thumb_func_start debug_sub_808CC74
-debug_sub_808CC74:
- push {lr}
- add sp, sp, #0xfffffff8
- bl Menu_EraseScreen
- mov r0, #0x0
- mov r1, #0x0
- mov r2, #0x1c
- mov r3, #0x7
- bl Menu_DrawStdWindowFrame
- ldr r3, ._237 @ gUnknown_Debug_083C1ADC
- mov r0, #0x2
- mov r1, #0x1
- mov r2, #0x3
- bl Menu_PrintItems
- mov r0, #0x0
- str r0, [sp]
- mov r0, #0x1b
- str r0, [sp, #0x4]
- mov r0, #0x0
- mov r1, #0x1
- mov r2, #0x1
- mov r3, #0x3
- bl InitMenu
- ldr r1, ._237 + 4 @ gMenuCallback
- ldr r0, ._237 + 8 @ debug_sub_808CCC4
- str r0, [r1]
- mov r0, #0x0
- add sp, sp, #0x8
- pop {r1}
- bx r1
-._238:
- .align 2, 0
-._237:
- .word gUnknown_Debug_083C1ADC
- .word gMenuCallback
- .word debug_sub_808CCC4+1
-
- thumb_func_end debug_sub_808CC74
-
- thumb_func_start debug_sub_808CCC4
-debug_sub_808CCC4:
- push {lr}
- bl Menu_ProcessInput
- lsl r0, r0, #0x18
- asr r1, r0, #0x18
- mov r0, #0x2
- neg r0, r0
- cmp r1, r0
- bne ._239 @cond_branch
- mov r0, #0x0
- b ._242
-._239:
- mov r0, #0x1
- neg r0, r0
- cmp r1, r0
- beq ._241 @cond_branch
- ldr r2, ._243 @ gMenuCallback
- ldr r0, ._243 + 4 @ gUnknown_Debug_083C1ADC
- lsl r1, r1, #0x3
- add r0, r0, #0x4
- add r1, r1, r0
- ldr r0, [r1]
- str r0, [r2]
- mov r0, #0x0
- b ._242
-._244:
- .align 2, 0
-._243:
- .word gMenuCallback
- .word gUnknown_Debug_083C1ADC
-._241:
- bl CloseMenu
- mov r0, #0x1
-._242:
- pop {r1}
- bx r1
-
- thumb_func_end debug_sub_808CCC4
-
- thumb_func_start debug_sub_808CD08
-debug_sub_808CD08:
- push {r4, lr}
- add sp, sp, #0xfffffff8
- bl Menu_EraseScreen
- mov r0, #0x0
- mov r1, #0x0
- mov r2, #0x1d
- mov r3, #0x11
- bl Menu_DrawStdWindowFrame
- ldr r3, ._245 @ gUnknown_Debug_083C1B7C
- mov r0, #0x2
- mov r1, #0x1
- mov r2, #0x8
- bl Menu_PrintItems
- mov r4, #0x0
- str r4, [sp]
- mov r0, #0x1c
- str r0, [sp, #0x4]
- mov r0, #0x0
- mov r1, #0x1
- mov r2, #0x1
- mov r3, #0x8
- bl InitMenu
- ldr r0, ._245 + 4 @ gDebug_0300070F
- strb r4, [r0]
- ldr r1, ._245 + 8 @ gMenuCallback
- ldr r0, ._245 + 12 @ debug_sub_808CE10
- str r0, [r1]
- mov r0, #0x0
- add sp, sp, #0x8
- pop {r4}
- pop {r1}
- bx r1
-._246:
- .align 2, 0
-._245:
- .word gUnknown_Debug_083C1B7C
- .word gDebug_0300070F
- .word gMenuCallback
- .word debug_sub_808CE10+1
-
- thumb_func_end debug_sub_808CD08
-
- thumb_func_start debug_sub_808CD60
-debug_sub_808CD60:
- push {lr}
- add sp, sp, #0xfffffff8
- bl Menu_EraseScreen
- mov r0, #0x0
- mov r1, #0x0
- mov r2, #0x1d
- mov r3, #0x9
- bl Menu_DrawStdWindowFrame
- ldr r3, ._247 @ gUnknown_Debug_083C1BF0
- mov r0, #0x2
- mov r1, #0x1
- mov r2, #0x4
- bl Menu_PrintItems
- mov r0, #0x0
- str r0, [sp]
- mov r0, #0x1c
- str r0, [sp, #0x4]
- mov r0, #0x0
- mov r1, #0x1
- mov r2, #0x1
- mov r3, #0x4
- bl InitMenu
- ldr r1, ._247 + 4 @ gDebug_0300070F
- mov r0, #0x1
- strb r0, [r1]
- ldr r1, ._247 + 8 @ gMenuCallback
- ldr r0, ._247 + 12 @ debug_sub_808CE10
- str r0, [r1]
- mov r0, #0x0
- add sp, sp, #0x8
- pop {r1}
- bx r1
-._248:
- .align 2, 0
-._247:
- .word gUnknown_Debug_083C1BF0
- .word gDebug_0300070F
- .word gMenuCallback
- .word debug_sub_808CE10+1
-
- thumb_func_end debug_sub_808CD60
-
- thumb_func_start debug_sub_808CDB8
-debug_sub_808CDB8:
- push {lr}
- add sp, sp, #0xfffffff8
- bl Menu_EraseScreen
- mov r0, #0x0
- mov r1, #0x0
- mov r2, #0x1d
- mov r3, #0x3
- bl Menu_DrawStdWindowFrame
- ldr r3, ._249 @ gUnknown_Debug_083C1C2C
- mov r0, #0x2
- mov r1, #0x1
- mov r2, #0x1
- bl Menu_PrintItems
- mov r0, #0x0
- str r0, [sp]
- mov r0, #0x1c
- str r0, [sp, #0x4]
- mov r0, #0x0
- mov r1, #0x1
- mov r2, #0x1
- mov r3, #0x1
- bl InitMenu
- ldr r1, ._249 + 4 @ gDebug_0300070F
- mov r0, #0x2
- strb r0, [r1]
- ldr r1, ._249 + 8 @ gMenuCallback
- ldr r0, ._249 + 12 @ debug_sub_808CE10
- str r0, [r1]
- mov r0, #0x0
- add sp, sp, #0x8
- pop {r1}
- bx r1
-._250:
- .align 2, 0
-._249:
- .word gUnknown_Debug_083C1C2C
- .word gDebug_0300070F
- .word gMenuCallback
- .word debug_sub_808CE10+1
-
- thumb_func_end debug_sub_808CDB8
-
- thumb_func_start debug_sub_808CE10
-debug_sub_808CE10:
- push {r4, r5, lr}
- bl Menu_ProcessInput
- add r4, r0, #0
- lsl r4, r4, #0x18
- lsr r4, r4, #0x18
- bl Menu_GetCursorPos
- add r1, r0, #0
- ldr r5, ._254 @ gDebug_0300070F
- ldrb r0, [r5]
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bl debug_sub_808CE5C
- ldrb r0, [r5]
- bl debug_sub_808CEAC
- lsl r4, r4, #0x18
- asr r4, r4, #0x18
- mov r0, #0x2
- neg r0, r0
- cmp r4, r0
- beq ._251 @cond_branch
- mov r0, #0x1
- neg r0, r0
- cmp r4, r0
- beq ._252 @cond_branch
-._251:
- mov r0, #0x0
- b ._253
-._255:
- .align 2, 0
-._254:
- .word gDebug_0300070F
-._252:
- bl CloseMenu
- mov r0, #0x1
-._253:
- pop {r4, r5}
- pop {r1}
- bx r1
-
- thumb_func_end debug_sub_808CE10
-
- thumb_func_start debug_sub_808CE5C
-debug_sub_808CE5C:
- push {r4, lr}
- lsl r0, r0, #0x18
- lsr r2, r0, #0x18
- lsl r1, r1, #0x18
- lsr r3, r1, #0x18
- ldr r0, ._259 @ gMain
- ldrh r1, [r0, #0x2e]
- mov r0, #0x80
- lsl r0, r0, #0x1
- and r0, r0, r1
- cmp r0, #0
- beq ._258 @cond_branch
- ldr r0, ._259 + 4 @ gUnknown_Debug_083C1C38
- lsl r1, r2, #0x3
- add r1, r1, r2
- add r1, r1, r3
- lsl r1, r1, #0x1
- add r1, r1, r0
- ldrh r4, [r1]
- add r0, r4, #0
- bl FlagGet
- lsl r0, r0, #0x18
- cmp r0, #0
- bne ._257 @cond_branch
- add r0, r4, #0
- bl FlagSet
- b ._258
-._260:
- .align 2, 0
-._259:
- .word gMain
- .word gUnknown_Debug_083C1C38
-._257:
- add r0, r4, #0
- bl FlagClear
-._258:
- pop {r4}
- pop {r0}
- bx r0
-
- thumb_func_end debug_sub_808CE5C
-
- thumb_func_start debug_sub_808CEAC
-debug_sub_808CEAC:
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- lsl r0, r0, #0x18
- lsr r1, r0, #0x18
- mov r5, #0x0
- ldr r0, ._263 @ gUnknown_Debug_083C1C34
- add r0, r1, r0
- ldrb r2, [r0]
- cmp r5, r2
- bcs ._261 @cond_branch
- ldr r0, ._263 + 4 @ gUnknown_Debug_083C1C38
- mov r8, r0
- lsl r0, r1, #0x3
- add r0, r0, r1
- lsl r7, r0, #0x1
- add r6, r2, #0
-._262:
- lsl r0, r5, #0x1
- add r4, r0, #1
- lsl r4, r4, #0x18
- lsr r4, r4, #0x18
- add r0, r0, r7
- add r0, r0, r8
- ldrh r0, [r0]
- bl FlagGet
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- neg r2, r0
- orr r2, r2, r0
- lsr r2, r2, #0x1f
- mov r0, #0x1c
- add r1, r4, #0
- bl debug_sub_808F2E0
- add r0, r5, #1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, r6
- bcc ._262 @cond_branch
-._261:
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7}
- pop {r0}
- bx r0
-._264:
- .align 2, 0
-._263:
- .word gUnknown_Debug_083C1C34
- .word gUnknown_Debug_083C1C38
-
- thumb_func_end debug_sub_808CEAC
-
thumb_func_start debug_sub_808CF10
debug_sub_808CF10:
push {lr}
diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c
index bc626262f..f572862c3 100644
--- a/src/debug/tomomichi_debug_menu.c
+++ b/src/debug/tomomichi_debug_menu.c
@@ -157,6 +157,12 @@ bool8 debug_sub_808DE08(void);
bool8 debug_sub_808DE60(void);
bool8 debug_sub_808E754(void);
bool8 debug_sub_808E7AC(void);
+void debug_sub_808CBC0(u8, u8);
+bool8 debug_sub_808CCC4(void);
+bool8 debug_sub_808CE10(void);
+void debug_sub_808CC10(u8);
+void debug_sub_808CE5C(u8, u8);
+void debug_sub_808CEAC(u8);
extern const u8 DebugScript_081C1CFE[];
extern const u8 DebugScript_081C1D07[];
@@ -2638,4 +2644,140 @@ bool8 debug_sub_808CB1C(void)
return FALSE;
}
+bool8 debug_sub_808CB74(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ debug_sub_808CBC0(gDebug_0300070F, cursorPos);
+ debug_sub_808CC10(gDebug_0300070F);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void debug_sub_808CBC0(u8 whichMenu, u8 cursorPos)
+{
+ if (gMain.newKeys & R_BUTTON)
+ {
+ u16 flag = gUnknown_Debug_083C271A[whichMenu][cursorPos];
+ if (!FlagGet(flag))
+ FlagSet(flag);
+ else
+ FlagClear(flag);
+ }
+}
+
+void debug_sub_808CC10(u8 whichMenu)
+{
+ u8 i;
+
+ for (i = 0; i < gUnknown_Debug_083C2710[whichMenu]; i++)
+ {
+ debug_sub_808F2E0(28, 2 * i + 1, FlagGet(gUnknown_Debug_083C271A[whichMenu][i]) ? TRUE : FALSE);
+ }
+}
+
+bool8 debug_sub_808CC74(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;
+}
+
+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;
+}
+
+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);
+ gDebug_0300070F = 0;
+ gMenuCallback = debug_sub_808CE10;
+ return FALSE;
+}
+
+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);
+ gDebug_0300070F = 1;
+ gMenuCallback = debug_sub_808CE10;
+ return FALSE;
+}
+
+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);
+ gDebug_0300070F = 2;
+ gMenuCallback = debug_sub_808CE10;
+ return FALSE;
+}
+
+bool8 debug_sub_808CE10(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ debug_sub_808CE5C(gDebug_0300070F, cursorPos);
+ debug_sub_808CEAC(gDebug_0300070F);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void debug_sub_808CE5C(u8 whichMenu, u8 cursorPos)
+{
+ if (gMain.newKeys & R_BUTTON)
+ {
+ u16 flag = gUnknown_Debug_083C1C38[whichMenu][cursorPos];
+ if (!FlagGet(flag))
+ FlagSet(flag);
+ else
+ FlagClear(flag);
+ }
+}
+
+void debug_sub_808CEAC(u8 whichMenu)
+{
+ u8 i;
+
+ for (i = 0; i < gUnknown_Debug_083C1C34[whichMenu]; i++)
+ {
+ debug_sub_808F2E0(28, 2 * i + 1, FlagGet(gUnknown_Debug_083C1C38[whichMenu][i]) ? TRUE : FALSE);
+ }
+}
+
#endif