diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-03-11 21:13:19 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-03-11 21:13:19 -0400 |
commit | 593a22679d127c880ef729354ce400dab17ee7fc (patch) | |
tree | ca246999bb1a17f744c1694bb20d69354c9c07a4 | |
parent | 79df78752440b70646399fc2a02901d8c3d4eff9 (diff) |
through debug_sub_808CEAC
-rw-r--r-- | asm/tomomichi_debug_menu.s | 496 | ||||
-rw-r--r-- | src/debug/tomomichi_debug_menu.c | 142 |
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 |