diff options
-rw-r--r-- | asm/nakamura_debug_menu.s | 260 | ||||
-rw-r--r-- | src/debug/nakamura_debug_menu.c | 269 |
2 files changed, 266 insertions, 263 deletions
diff --git a/asm/nakamura_debug_menu.s b/asm/nakamura_debug_menu.s index e9072f6dd..408fa7a4e 100644 --- a/asm/nakamura_debug_menu.s +++ b/asm/nakamura_debug_menu.s @@ -5,266 +5,6 @@ .text - thumb_func_start debug_sub_815F86C -debug_sub_815F86C: - push {r4, r5, r6, lr} - lsl r0, r0, #0x18 - ldr r1, ._84 @ _nakamuraData0 - ldrb r2, [r1] - lsl r1, r2, #0x2 - add r1, r1, r2 - lsl r1, r1, #0x5 - ldr r2, ._84 + 4 @ gSaveBlock1 - add r5, r1, r2 - mov r2, #0x0 - mov r3, #0x0 - lsr r6, r0, #0x18 - asr r0, r0, #0x18 - cmp r0, #0x64 - bne ._80 @cond_branch - ldr r0, ._84 + 8 @ _nakamuraData2 - ldrb r1, [r0] - cmp r1, #0x6 - bhi ._100 @cond_branch - mov r2, #0xff -._82: - add r0, r5, r1 - strb r2, [r0] - add r0, r1, #1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - cmp r1, #0x6 - bls ._82 @cond_branch - b ._100 -._85: - .align 2, 0 -._84: - .word _nakamuraData0 - .word gSaveBlock1+0x1a0a - .word _nakamuraData2 -._80: - ldr r0, ._87 @ _nakamuraData3 - ldrb r0, [r0] - cmp r0, #0x4 - bhi ._98 @cond_branch - lsl r0, r0, #0x2 - ldr r1, ._87 + 4 @ - add r0, r0, r1 - ldr r0, [r0] - mov pc, r0 -._88: - .align 2, 0 -._87: - .word _nakamuraData3 - .word ._89 -._89: - .word ._90 - .word ._91 - .word ._92 - .word ._93 - .word ._94 -._90: - mov r3, #0x1 - mov r2, #0x50 - b ._98 -._91: - mov r3, #0x51 - mov r2, #0xa0 - b ._98 -._92: - mov r3, #0xbb - mov r2, #0xd4 - b ._98 -._93: - mov r3, #0xd5 - mov r2, #0xee - b ._98 -._94: - mov r3, #0xa1 - mov r2, #0xaa -._98: - ldr r4, ._101 @ _nakamuraData2 - ldrb r1, [r4] - add r1, r5, r1 - ldrb r0, [r1] - add r0, r0, r6 - strb r0, [r1] - ldrb r0, [r4] - add r1, r5, r0 - ldrb r0, [r1] - cmp r0, r3 - bcs ._99 @cond_branch - strb r2, [r1] -._99: - ldrb r0, [r4] - add r1, r5, r0 - ldrb r0, [r1] - cmp r0, r2 - bls ._100 @cond_branch - strb r3, [r1] -._100: - bl debug_sub_815F6E4 - pop {r4, r5, r6} - pop {r0} - bx r0 -._102: - .align 2, 0 -._101: - .word _nakamuraData2 - - thumb_func_end debug_sub_815F86C - - thumb_func_start debug_sub_815F930 -debug_sub_815F930: - push {r4, r5, lr} - ldr r0, ._107 @ _nakamuraData1 - ldrb r2, [r0] - mov r4, #0xa - cmp r2, #0 - bne ._103 @cond_branch - mov r4, #0x7 -._103: - ldr r5, ._107 + 4 @ gMain - ldrh r1, [r5, #0x30] - mov r0, #0x40 - and r0, r0, r1 - cmp r0, #0 - beq ._104 @cond_branch - cmp r2, #0 - beq ._105 @cond_branch - mov r0, #0x1 - bl debug_sub_815F7F0 - b ._136 -._108: - .align 2, 0 -._107: - .word _nakamuraData1 - .word gMain -._105: - mov r0, #0x1 - b ._113 -._104: - mov r0, #0x80 - and r0, r0, r1 - cmp r0, #0 - beq ._110 @cond_branch - cmp r2, #0 - beq ._111 @cond_branch - mov r0, #0x1 - neg r0, r0 - bl debug_sub_815F7F0 - b ._136 -._111: - mov r0, #0x1 - neg r0, r0 - b ._113 -._110: - mov r0, #0x20 - and r0, r0, r1 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - cmp r3, #0 - beq ._114 @cond_branch - ldr r1, ._117 @ _nakamuraData2 - ldrb r0, [r1] - cmp r0, #0 - bne ._115 @cond_branch - sub r0, r4, #1 - b ._116 -._118: - .align 2, 0 -._117: - .word _nakamuraData2 -._115: - sub r0, r0, #0x1 -._116: - strb r0, [r1] -._125: - bl debug_sub_815F788 - b ._136 -._114: - mov r0, #0x10 - and r0, r0, r1 - cmp r0, #0 - beq ._120 @cond_branch - ldr r2, ._123 @ _nakamuraData2 - ldrb r1, [r2] - sub r0, r4, #1 - cmp r1, r0 - bne ._121 @cond_branch - strb r3, [r2] - b ._125 -._124: - .align 2, 0 -._123: - .word _nakamuraData2 -._121: - add r0, r1, #1 - strb r0, [r2] - b ._125 -._120: - ldrh r1, [r5, #0x2e] - mov r0, #0x4 - and r0, r0, r1 - cmp r0, #0 - beq ._126 @cond_branch - cmp r2, #0 - bne ._127 @cond_branch - ldr r4, ._129 @ _nakamuraData3 - ldrb r0, [r4] - add r0, r0, #0x1 - mov r1, #0x5 - bl __modsi3 - strb r0, [r4] -._127: - bl debug_sub_815F7B4 - b ._136 -._130: - .align 2, 0 -._129: - .word _nakamuraData3 -._126: - mov r0, #0x1 - and r0, r0, r1 - cmp r0, #0 - beq ._131 @cond_branch - mov r0, #0x2 - mov r1, #0x5 - mov r2, #0xb - mov r3, #0x6 - bl Menu_BlankWindowRect - mov r0, #0xb - mov r1, #0x1 - mov r2, #0xb - mov r3, #0x2 - bl Menu_BlankWindowRect - ldr r1, ._133 @ gMenuCallback - ldr r0, ._133 + 4 @ debug_sub_815FA38 - str r0, [r1] - b ._136 -._134: - .align 2, 0 -._133: - .word gMenuCallback - .word debug_sub_815FA38+1 -._131: - mov r0, #0x2 - and r0, r0, r1 - cmp r0, #0 - beq ._136 @cond_branch - cmp r2, #0 - bne ._136 @cond_branch - mov r0, #0x64 -._113: - bl debug_sub_815F86C -._136: - mov r0, #0x0 - pop {r4, r5} - pop {r1} - bx r1 - - thumb_func_end debug_sub_815F930 - thumb_func_start debug_sub_815FA38 debug_sub_815FA38: push {r4, lr} diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index 38026b546..959b9eae3 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -32,13 +32,14 @@ asm(".global _nakamuraStatic0"); asm(".global _nakamuraStatic18"); bool8 debug_sub_815F214(void); -bool8 debug_sub_815FC54(void); bool8 debug_sub_815F2B4(void); -bool8 debug_sub_815FC94(void); -bool8 debug_sub_815FB1C(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); bool8 debug_sub_8160D98(void); @@ -468,4 +469,266 @@ void debug_sub_815F7F0(s8 a0) 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(); +} + +#ifdef NONMATCHING +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); + } + + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (_nakamuraData1) + debug_sub_815F7F0(-1); + else + debug_sub_815F86C(-1); + } + + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (_nakamuraData2 == 0) + _nakamuraData2 = r4 - 1; + else + _nakamuraData2--; + debug_sub_815F788(); + } + + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (_nakamuraData2 == r4 - 1) + _nakamuraData2 = 0; + else + _nakamuraData2++; + debug_sub_815F788(); + } + + else if (gMain.newKeys & SELECT_BUTTON) + { + if (_nakamuraData1 == 0) + _nakamuraData3 = (_nakamuraData3 + 1) % 5; + debug_sub_815F7B4(); + } + + else if (gMain.newKeys & A_BUTTON) + { + Menu_BlankWindowRect(2, 5, 11, 6); + Menu_BlankWindowRect(11, 1, 11, 2); + gMenuCallback = debug_sub_815FA38; + } + + else if (gMain.newKeys & B_BUTTON) + { + if (_nakamuraData1 == 0) + debug_sub_815F86C(100); + } + + return FALSE; +} +#else +__attribute__((naked)) bool8 debug_sub_815F930(void) +{ + asm("\tpush\t{r4, r5, lr}\n" + "\tldr\tr0, ._107 @ _nakamuraData1\n" + "\tldrb\tr2, [r0]\n" + "\tmov\tr4, #0xa\n" + "\tcmp\tr2, #0\n" + "\tbne\t._103\t@cond_branch\n" + "\tmov\tr4, #0x7\n" + "._103:\n" + "\tldr\tr5, ._107 + 4 @ gMain\n" + "\tldrh\tr1, [r5, #0x30]\n" + "\tmov\tr0, #0x40\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._104\t@cond_branch\n" + "\tcmp\tr2, #0\n" + "\tbeq\t._105\t@cond_branch\n" + "\tmov\tr0, #0x1\n" + "\tbl\tdebug_sub_815F7F0\n" + "\tb\t._136\n" + "._108:\n" + "\t.align\t2, 0\n" + "._107:\n" + "\t.word\t_nakamuraData1\n" + "\t.word\tgMain\n" + "._105:\n" + "\tmov\tr0, #0x1\n" + "\tb\t._113\n" + "._104:\n" + "\tmov\tr0, #0x80\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._110\t@cond_branch\n" + "\tcmp\tr2, #0\n" + "\tbeq\t._111\t@cond_branch\n" + "\tmov\tr0, #0x1\n" + "\tneg\tr0, r0\n" + "\tbl\tdebug_sub_815F7F0\n" + "\tb\t._136\n" + "._111:\n" + "\tmov\tr0, #0x1\n" + "\tneg\tr0, r0\n" + "\tb\t._113\n" + "._110:\n" + "\tmov\tr0, #0x20\n" + "\tand\tr0, r0, r1\n" + "\tlsl\tr0, r0, #0x10\n" + "\tlsr\tr3, r0, #0x10\n" + "\tcmp\tr3, #0\n" + "\tbeq\t._114\t@cond_branch\n" + "\tldr\tr1, ._117 @ _nakamuraData2\n" + "\tldrb\tr0, [r1]\n" + "\tcmp\tr0, #0\n" + "\tbne\t._115\t@cond_branch\n" + "\tsub\tr0, r4, #1\n" + "\tb\t._116\n" + "._118:\n" + "\t.align\t2, 0\n" + "._117:\n" + "\t.word\t_nakamuraData2\n" + "._115:\n" + "\tsub\tr0, r0, #0x1\n" + "._116:\n" + "\tstrb\tr0, [r1]\n" + "._125:\n" + "\tbl\tdebug_sub_815F788\n" + "\tb\t._136\n" + "._114:\n" + "\tmov\tr0, #0x10\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._120\t@cond_branch\n" + "\tldr\tr2, ._123 @ _nakamuraData2\n" + "\tldrb\tr1, [r2]\n" + "\tsub\tr0, r4, #1\n" + "\tcmp\tr1, r0\n" + "\tbne\t._121\t@cond_branch\n" + "\tstrb\tr3, [r2]\n" + "\tb\t._125\n" + "._124:\n" + "\t.align\t2, 0\n" + "._123:\n" + "\t.word\t_nakamuraData2\n" + "._121:\n" + "\tadd\tr0, r1, #1\n" + "\tstrb\tr0, [r2]\n" + "\tb\t._125\n" + "._120:\n" + "\tldrh\tr1, [r5, #0x2e]\n" + "\tmov\tr0, #0x4\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._126\t@cond_branch\n" + "\tcmp\tr2, #0\n" + "\tbne\t._127\t@cond_branch\n" + "\tldr\tr4, ._129 @ _nakamuraData3\n" + "\tldrb\tr0, [r4]\n" + "\tadd\tr0, r0, #0x1\n" + "\tmov\tr1, #0x5\n" + "\tbl\t__modsi3\n" + "\tstrb\tr0, [r4]\n" + "._127:\n" + "\tbl\tdebug_sub_815F7B4\n" + "\tb\t._136\n" + "._130:\n" + "\t.align\t2, 0\n" + "._129:\n" + "\t.word\t_nakamuraData3\n" + "._126:\n" + "\tmov\tr0, #0x1\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._131\t@cond_branch\n" + "\tmov\tr0, #0x2\n" + "\tmov\tr1, #0x5\n" + "\tmov\tr2, #0xb\n" + "\tmov\tr3, #0x6\n" + "\tbl\tMenu_BlankWindowRect\n" + "\tmov\tr0, #0xb\n" + "\tmov\tr1, #0x1\n" + "\tmov\tr2, #0xb\n" + "\tmov\tr3, #0x2\n" + "\tbl\tMenu_BlankWindowRect\n" + "\tldr\tr1, ._133 @ gMenuCallback\n" + "\tldr\tr0, ._133 + 4 @ debug_sub_815FA38\n" + "\tstr\tr0, [r1]\n" + "\tb\t._136\n" + "._134:\n" + "\t.align\t2, 0\n" + "._133:\n" + "\t.word\tgMenuCallback\n" + "\t.word\tdebug_sub_815FA38+1\n" + "._131:\n" + "\tmov\tr0, #0x2\n" + "\tand\tr0, r0, r1\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._136\t@cond_branch\n" + "\tcmp\tr2, #0\n" + "\tbne\t._136\t@cond_branch\n" + "\tmov\tr0, #0x64\n" + "._113:\n" + "\tbl\tdebug_sub_815F86C\n" + "._136:\n" + "\tmov\tr0, #0x0\n" + "\tpop\t{r4, r5}\n" + "\tpop\t{r1}\n" + "\tbx\tr1"); +} +#endif // NONMATCHING + #endif // DEBUG |