diff options
-rw-r--r-- | asm/watanabe_debug_menu.s | 466 | ||||
-rw-r--r-- | src/debug/watanabe_debug_menu.c | 97 |
2 files changed, 96 insertions, 467 deletions
diff --git a/asm/watanabe_debug_menu.s b/asm/watanabe_debug_menu.s index 47832a6a9..f78a2ff77 100644 --- a/asm/watanabe_debug_menu.s +++ b/asm/watanabe_debug_menu.s @@ -5,472 +5,6 @@ .text - thumb_func_start debug_80C71FC -debug_80C71FC: - push {r4, r5, r6, lr} - add r5, r0, #0 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - ldr r6, ._709 @ gSprites - ldr r4, ._709 + 4 @ gUnknown_Debug_2038A20 - ldr r0, [r4] - ldrb r1, [r0, #0x2] - lsl r0, r1, #0x4 - add r0, r0, r1 - lsl r0, r0, #0x2 - add r0, r0, r6 - ldrb r0, [r0, #0x5] - lsr r0, r0, #0x4 - bl GetSpritePaletteTagByPaletteNum - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FreeSpritePaletteByTag - ldr r0, [r4] - ldrb r1, [r0, #0x2] - lsl r0, r1, #0x4 - add r0, r0, r1 - lsl r0, r0, #0x2 - add r0, r0, r6 - bl DestroySprite - ldr r0, [r4] - ldrb r1, [r0, #0x3] - lsl r0, r1, #0x4 - add r0, r0, r1 - lsl r0, r0, #0x2 - add r0, r0, r6 - ldrb r0, [r0, #0x5] - lsr r0, r0, #0x4 - bl GetSpritePaletteTagByPaletteNum - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FreeSpritePaletteByTag - ldr r0, [r4] - ldrb r1, [r0, #0x3] - lsl r0, r1, #0x4 - add r0, r0, r1 - lsl r0, r0, #0x2 - add r0, r0, r6 - bl DestroySprite - ldr r0, [r4] - ldrb r1, [r0, #0x4] - lsl r0, r1, #0x4 - add r0, r0, r1 - lsl r0, r0, #0x2 - add r0, r0, r6 - bl sub_809D510 - ldr r1, ._709 + 8 @ gTasks - lsl r0, r5, #0x2 - add r0, r0, r5 - lsl r0, r0, #0x3 - add r0, r0, r1 - ldr r1, ._709 + 12 @ debug_80C6CB8 - str r1, [r0] - pop {r4, r5, r6} - pop {r0} - bx r0 -._710: - .align 2, 0 -._709: - .word gSprites - .word gUnknown_Debug_2038A20 - .word gTasks - .word debug_80C6CB8+1 - - thumb_func_end debug_80C71FC - - thumb_func_start debug_80C7294 -debug_80C7294: - push {r4, r5, r6, r7, lr} - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - ldr r0, ._713 @ gMain - ldrh r2, [r0, #0x2e] - mov r1, #0x1 - and r1, r1, r2 - add r3, r0, #0 - cmp r1, #0 - beq ._711 @cond_branch - ldr r0, ._713 + 4 @ gUnknown_Debug_2038A20 - ldr r1, [r0] - mov r0, #0x0 - strb r0, [r1, #0x5] - ldr r1, ._713 + 8 @ 0x4000040 - ldr r2, ._713 + 12 @ 0x51ef - add r0, r2, #0 - strh r0, [r1] - add r1, r1, #0x4 - ldr r2, ._713 + 16 @ 0x699f - add r0, r2, #0 - strh r0, [r1] - b ._712 -._714: - .align 2, 0 -._713: - .word gMain - .word gUnknown_Debug_2038A20 - .word 0x4000040 - .word 0x51ef - .word 0x699f -._711: - mov r0, #0x2 - and r0, r0, r2 - cmp r0, #0 - beq ._715 @cond_branch - ldr r6, ._717 @ gUnknown_Debug_2038A20 - ldr r0, [r6] - strb r1, [r0, #0x5] - ldr r1, ._717 + 4 @ 0x4000040 - ldr r2, ._717 + 8 @ 0x51ef - add r0, r2, #0 - strh r0, [r1] - add r1, r1, #0x4 - ldr r2, ._717 + 12 @ 0x699f - add r0, r2, #0 - strh r0, [r1] - ldr r0, [r6] - add r0, r0, #0x10 - ldr r4, ._717 + 16 @ gPlttBufferUnfaded - add r1, r4, #0 - mov r2, #0x10 - bl CpuSet - ldr r0, [r6] - add r0, r0, #0x10 - ldr r5, ._717 + 20 @ gPlttBufferFaded - add r1, r5, #0 - mov r2, #0x10 - bl CpuSet - ldr r1, [r6] - add r0, r1, #0 - add r0, r0, #0x10 - ldrb r1, [r1, #0x6] - lsl r1, r1, #0x5 - mov r2, #0x80 - lsl r2, r2, #0x1 - add r4, r4, r2 - add r1, r1, r4 - mov r2, #0x10 - bl CpuSet - ldr r1, [r6] - add r0, r1, #0 - add r0, r0, #0x10 - ldrb r1, [r1, #0x6] - lsl r1, r1, #0x5 - mov r2, #0x80 - lsl r2, r2, #0x1 - add r5, r5, r2 - add r1, r1, r5 - mov r2, #0x10 - bl CpuSet -._712: - ldr r1, ._717 + 24 @ gTasks - lsl r0, r7, #0x2 - add r0, r0, r7 - lsl r0, r0, #0x3 - add r0, r0, r1 - ldr r1, ._717 + 28 @ debug_80C6EE8 - str r1, [r0] - b ._754 -._718: - .align 2, 0 -._717: - .word gUnknown_Debug_2038A20 - .word 0x4000040 - .word 0x51ef - .word 0x699f - .word gPlttBufferUnfaded+0x100 - .word gPlttBufferFaded+0x100 - .word gTasks - .word debug_80C6EE8+1 -._715: - ldrh r1, [r3, #0x30] - mov r0, #0x80 - and r0, r0, r1 - cmp r0, #0 - beq ._720 @cond_branch - ldr r0, ._722 @ gUnknown_Debug_2038A20 - ldr r1, [r0] - ldrb r0, [r1, #0xa] - cmp r0, #0x1 - bhi ._720 @cond_branch - add r0, r0, #0x1 - strb r0, [r1, #0xa] - b ._754 -._723: - .align 2, 0 -._722: - .word gUnknown_Debug_2038A20 -._720: - ldrh r1, [r3, #0x30] - mov r0, #0x40 - and r0, r0, r1 - cmp r0, #0 - beq ._725 @cond_branch - ldr r0, ._727 @ gUnknown_Debug_2038A20 - ldr r1, [r0] - ldrb r0, [r1, #0xa] - cmp r0, #0 - beq ._725 @cond_branch - sub r0, r0, #0x1 - strb r0, [r1, #0xa] - b ._754 -._728: - .align 2, 0 -._727: - .word gUnknown_Debug_2038A20 -._725: - ldrh r1, [r3, #0x30] - mov r0, #0x10 - and r0, r0, r1 - cmp r0, #0 - beq ._729 @cond_branch - ldr r0, ._734 @ gUnknown_Debug_2038A20 - ldr r2, [r0] - ldrb r0, [r2, #0xa] - cmp r0, #0x1 - beq ._730 @cond_branch - cmp r0, #0x1 - bgt ._731 @cond_branch - cmp r0, #0 - beq ._732 @cond_branch - b ._754 -._735: - .align 2, 0 -._734: - .word gUnknown_Debug_2038A20 -._731: - cmp r0, #0x2 - beq ._736 @cond_branch - b ._754 -._732: - ldrb r3, [r2, #0xc] - lsl r1, r3, #0x1b - lsr r0, r1, #0x1b - cmp r0, #0x1e - bhi ._761 @cond_branch - add r0, r0, #0x1 - mov r1, #0x1f - and r0, r0, r1 - mov r1, #0x20 - neg r1, r1 - and r1, r1, r3 - orr r1, r1, r0 - strb r1, [r2, #0xc] - b ._761 -._730: - ldrh r3, [r2, #0xc] - lsl r1, r3, #0x16 - lsr r0, r1, #0x1b - cmp r0, #0x1e - bhi ._761 @cond_branch - add r0, r0, #0x1 - mov r1, #0x1f - and r0, r0, r1 - lsl r0, r0, #0x5 - ldr r1, ._742 @ 0xfffffc1f - and r1, r1, r3 - orr r1, r1, r0 - strh r1, [r2, #0xc] - b ._761 -._743: - .align 2, 0 -._742: - .word 0xfffffc1f -._736: - ldrb r3, [r2, #0xd] - lsl r1, r3, #0x19 - lsr r0, r1, #0x1b - cmp r0, #0x1e - bhi ._761 @cond_branch - add r0, r0, #0x1 - mov r1, #0x1f - and r0, r0, r1 - lsl r0, r0, #0x2 - mov r1, #0x7d - neg r1, r1 - and r1, r1, r3 - orr r1, r1, r0 - strb r1, [r2, #0xd] - b ._761 -._729: - mov r0, #0x20 - and r0, r0, r1 - cmp r0, #0 - beq ._754 @cond_branch - ldr r0, ._751 @ gUnknown_Debug_2038A20 - ldr r3, [r0] - ldrb r0, [r3, #0xa] - cmp r0, #0x1 - beq ._747 @cond_branch - cmp r0, #0x1 - bgt ._748 @cond_branch - cmp r0, #0 - beq ._749 @cond_branch - b ._754 -._752: - .align 2, 0 -._751: - .word gUnknown_Debug_2038A20 -._748: - cmp r0, #0x2 - beq ._753 @cond_branch - b ._754 -._749: - ldrb r2, [r3, #0xc] - mov r0, #0x1f - and r0, r0, r2 - cmp r0, #0 - beq ._761 @cond_branch - lsl r0, r2, #0x1b - lsr r0, r0, #0x1b - sub r0, r0, #0x1 - mov r1, #0x1f - and r0, r0, r1 - mov r1, #0x20 - neg r1, r1 - and r1, r1, r2 - orr r1, r1, r0 - strb r1, [r3, #0xc] - b ._761 -._747: - ldrh r2, [r3, #0xc] - mov r0, #0xf8 - lsl r0, r0, #0x2 - and r0, r0, r2 - cmp r0, #0 - beq ._761 @cond_branch - lsl r0, r2, #0x16 - lsr r0, r0, #0x1b - sub r0, r0, #0x1 - mov r1, #0x1f - and r0, r0, r1 - lsl r0, r0, #0x5 - ldr r1, ._759 @ 0xfffffc1f - and r1, r1, r2 - orr r1, r1, r0 - strh r1, [r3, #0xc] - b ._761 -._760: - .align 2, 0 -._759: - .word 0xfffffc1f -._753: - ldrb r2, [r3, #0xd] - mov r0, #0x7c - and r0, r0, r2 - cmp r0, #0 - beq ._761 @cond_branch - lsl r0, r2, #0x19 - lsr r0, r0, #0x1b - sub r0, r0, #0x1 - mov r1, #0x1f - and r0, r0, r1 - lsl r0, r0, #0x2 - mov r1, #0x7d - neg r1, r1 - and r1, r1, r2 - orr r1, r1, r0 - strb r1, [r3, #0xd] -._761: - ldr r0, ._762 @ gTasks - lsl r1, r7, #0x2 - add r1, r1, r7 - lsl r1, r1, #0x3 - add r1, r1, r0 - ldr r0, ._762 + 4 @ debug_80C74E4 - str r0, [r1] -._754: - pop {r4, r5, r6, r7} - pop {r0} - bx r0 -._763: - .align 2, 0 -._762: - .word gTasks - .word debug_80C74E4+1 - - thumb_func_end debug_80C7294 - - thumb_func_start debug_80C74E4 -debug_80C74E4: - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - add r5, r0, #0 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - ldr r0, ._764 @ gUnknown_Debug_2038A20 - ldr r3, [r0] - ldrb r0, [r3, #0xc] - lsl r0, r0, #0x1b - lsr r0, r0, #0x1b - ldrh r2, [r3, #0xc] - mov r1, #0xf8 - lsl r1, r1, #0x2 - and r1, r1, r2 - add r0, r0, r1 - ldrb r1, [r3, #0xd] - lsl r1, r1, #0x19 - lsr r1, r1, #0x1b - lsl r1, r1, #0xa - add r0, r0, r1 - ldr r6, ._764 + 4 @ gPlttBufferUnfaded - ldrb r1, [r3, #0x7] - add r1, r1, #0x81 - lsl r1, r1, #0x1 - add r1, r1, r6 - strh r0, [r1] - ldr r1, ._764 + 8 @ gPlttBufferFaded - mov r8, r1 - ldrb r1, [r3, #0x7] - add r1, r1, #0x81 - lsl r1, r1, #0x1 - add r1, r1, r8 - strh r0, [r1] - ldrb r1, [r3, #0x6] - lsl r1, r1, #0x4 - ldrb r2, [r3, #0x7] - ldr r4, ._764 + 12 @ 0x101 - add r2, r2, r4 - add r1, r1, r2 - lsl r1, r1, #0x1 - add r1, r1, r6 - strh r0, [r1] - ldrb r1, [r3, #0x6] - lsl r1, r1, #0x4 - ldrb r2, [r3, #0x7] - add r2, r2, r4 - add r1, r1, r2 - lsl r1, r1, #0x1 - add r1, r1, r8 - strh r0, [r1] - mov r1, #0xe - mov r2, #0xa - mov r3, #0x4 - bl debug_80C68CC - ldr r1, ._764 + 16 @ gTasks - lsl r0, r5, #0x2 - add r0, r0, r5 - lsl r0, r0, #0x3 - add r0, r0, r1 - ldr r1, ._764 + 20 @ debug_80C7294 - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r0} - bx r0 -._765: - .align 2, 0 -._764: - .word gUnknown_Debug_2038A20 - .word gPlttBufferUnfaded - .word gPlttBufferFaded - .word 0x101 - .word gTasks - .word debug_80C7294+1 - - thumb_func_end debug_80C74E4 - thumb_func_start debug_80C7584 debug_80C7584: push {r4, lr} diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index 02f6054de..697f97c4e 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -138,6 +138,7 @@ void debug_80C6EE8(u8 taskId); void debug_80C6FA8(u8 taskId); void debug_80C71FC(u8 taskId); void debug_80C7294(u8 taskId); +void debug_80C74E4(u8 taskId); void debug_80C7584(struct Sprite *); extern const struct WatanabeDebugMenuItem gUnknown_Debug_083F8068[5]; @@ -2843,5 +2844,99 @@ NAKED void debug_80C6FA8(u8 taskId) "\t.word\tPLTT + 0x142\n" "\t.word\tgUnknown_Debug_083F8790"); } -#endif +#endif // NONMATCHING + +void debug_80C71FC(u8 taskId) +{ + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum)); + DestroySprite(gSprites + gUnknown_Debug_2038A20->unk2); + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk3].oam.paletteNum)); + DestroySprite(gSprites + gUnknown_Debug_2038A20->unk3); + sub_809D510(gSprites + gUnknown_Debug_2038A20->unk4); + gTasks[taskId].func = debug_80C6CB8; +} + +void debug_80C7294(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + gUnknown_Debug_2038A20->unk5 = 0; + REG_WIN0H = 0x51EF; + REG_WIN0V = 0x699F; + gTasks[taskId].func = debug_80C6EE8; + } + else if (gMain.newKeys & B_BUTTON) + { + gUnknown_Debug_2038A20->unk5 = 0; + REG_WIN0H = 0x51EF; + REG_WIN0V = 0x699F; + CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x80, 32); + CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x80, 32); + CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32); + CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32); + gTasks[taskId].func = debug_80C6EE8; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A20->unkA < 2) + { + gUnknown_Debug_2038A20->unkA++; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A20->unkA > 0) + { + gUnknown_Debug_2038A20->unkA--; + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + switch (gUnknown_Debug_2038A20->unkA) + { + case 0: + if (gUnknown_Debug_2038A20->unkC.r < 31) + gUnknown_Debug_2038A20->unkC.r++; + gTasks[taskId].func = debug_80C74E4; + break; + case 1: + if (gUnknown_Debug_2038A20->unkC.g < 31) + gUnknown_Debug_2038A20->unkC.g++; + gTasks[taskId].func = debug_80C74E4; + break; + case 2: + if (gUnknown_Debug_2038A20->unkC.b < 31) + gUnknown_Debug_2038A20->unkC.b++; + gTasks[taskId].func = debug_80C74E4; + break; + } + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + switch (gUnknown_Debug_2038A20->unkA) + { + case 0: + if (gUnknown_Debug_2038A20->unkC.r > 0) + gUnknown_Debug_2038A20->unkC.r--; + gTasks[taskId].func = debug_80C74E4; + break; + case 1: + if (gUnknown_Debug_2038A20->unkC.g > 0) + gUnknown_Debug_2038A20->unkC.g--; + gTasks[taskId].func = debug_80C74E4; + break; + case 2: + if (gUnknown_Debug_2038A20->unkC.b > 0) + gUnknown_Debug_2038A20->unkC.b--; + gTasks[taskId].func = debug_80C74E4; + break; + } + } +} + +void debug_80C74E4(u8 taskId) +{ + u16 pal = (gUnknown_Debug_2038A20->unkC.r & 0x001f) + ((gUnknown_Debug_2038A20->unkC.g << 5) & 0x03e0) + ((gUnknown_Debug_2038A20->unkC.b << 10) & 0x7c00); + gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81] = pal; + gPlttBufferFaded[gUnknown_Debug_2038A20->unk7 + 0x81] = pal; + gPlttBufferUnfaded[0x101 + gUnknown_Debug_2038A20->unk6 * 16 + gUnknown_Debug_2038A20->unk7] = pal; + gPlttBufferFaded[0x101 + gUnknown_Debug_2038A20->unk6 * 16 + gUnknown_Debug_2038A20->unk7] = pal; + debug_80C68CC(pal, 14, 10, 4); + gTasks[taskId].func = debug_80C7294; +} + #endif // DEBUG |