diff options
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | asm/watanabe_debug_menu.s | 369 | ||||
-rw-r--r-- | src/debug/watanabe_debug_menu.c | 100 |
3 files changed, 99 insertions, 376 deletions
@@ -54,9 +54,9 @@ LD_SCRIPT := $(BUILD_DIR)/ld_script.ld %src/libs/agb_flash.o: CC1FLAGS := -O1 -mthumb-interwork %src/libs/agb_flash_1m.o: CC1FLAGS := -O1 -mthumb-interwork %src/libs/agb_flash_mx.o: CC1FLAGS := -O1 -mthumb-interwork -%src/libs/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc -%src/libs/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc -%src/libs/libisagbprn.o: CC1 := tools/agbcc/bin/old_agbcc +%src/libs/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE) +%src/libs/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE) +%src/libs/libisagbprn.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE) %src/libs/libisagbprn.o: CC1FLAGS := -mthumb-interwork diff --git a/asm/watanabe_debug_menu.s b/asm/watanabe_debug_menu.s index b552678bc..8580cc3d1 100644 --- a/asm/watanabe_debug_menu.s +++ b/asm/watanabe_debug_menu.s @@ -5,375 +5,6 @@ .text - thumb_func_start debug_80C44EC -debug_80C44EC: - push {r4, lr} - add sp, sp, #0xfffffffc - add r4, r0, #0 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - ldr r0, ._183 @ gUnknown_Debug_2038A0C - ldrb r0, [r0, #0x2] - lsl r0, r0, #0x19 - mov r1, #0xc0 - lsl r1, r1, #0x12 - add r0, r0, r1 - lsr r0, r0, #0x18 - mov r1, #0x1 - str r1, [sp] - mov r1, #0x10 - mov r2, #0x1 - mov r3, #0xe - bl debug_80C38E4 - ldr r1, ._183 + 4 @ 0x4000042 - ldr r2, ._183 + 8 @ 0x79ef - add r0, r2, #0 - strh r0, [r1] - add r1, r1, #0x4 - ldr r2, ._183 + 12 @ 0x17f - add r0, r2, #0 - strh r0, [r1] - ldr r1, ._183 + 16 @ gTasks - lsl r0, r4, #0x2 - add r0, r0, r4 - lsl r0, r0, #0x3 - add r0, r0, r1 - ldr r1, ._183 + 20 @ debug_80C4550 - str r1, [r0] - add sp, sp, #0x4 - pop {r4} - pop {r0} - bx r0 -._184: - .align 2, 0 -._183: - .word gUnknown_Debug_2038A0C - .word 0x4000042 - .word 0x79ef - .word 0x17f - .word gTasks - .word debug_80C4550+1 - - thumb_func_end debug_80C44EC - - thumb_func_start debug_80C4550 -debug_80C4550: - push {r4, r5, lr} - add sp, sp, #0xfffffffc - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - ldr r1, ._187 @ gMain - ldrh r2, [r1, #0x2e] - mov r0, #0x1 - and r0, r0, r2 - add r3, r1, #0 - cmp r0, #0 - beq ._185 @cond_branch - mov r0, #0x5 - bl PlaySE - ldr r0, ._187 + 4 @ gUnknown_Debug_2038A0C - ldrb r1, [r0, #0x2] - mov r0, #0x64 - mul r0, r0, r1 - ldr r1, ._187 + 8 @ gEnemyParty - add r0, r0, r1 - ldr r1, ._187 + 12 @ debug_80C41F4 - bl debug_sub_80A433C - add r0, r4, #0 - bl DestroyTask - b ._209 -._188: - .align 2, 0 -._187: - .word gMain - .word gUnknown_Debug_2038A0C - .word gEnemyParty - .word debug_80C41F4+1 -._185: - mov r0, #0x2 - and r0, r0, r2 - cmp r0, #0 - beq ._189 @cond_branch - ldr r0, ._191 @ gTasks - lsl r1, r4, #0x2 - add r1, r1, r4 - lsl r1, r1, #0x3 - add r1, r1, r0 - ldr r0, ._191 + 4 @ debug_80C4F48 - str r0, [r1] - b ._209 -._192: - .align 2, 0 -._191: - .word gTasks - .word debug_80C4F48+1 -._189: - mov r0, #0x8 - and r0, r0, r2 - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - cmp r1, #0 - beq ._193 @cond_branch - bl debug_80C4774 - lsl r0, r0, #0x18 - cmp r0, #0 - beq ._209 @cond_branch - mov r0, #0x5 - bl PlaySE - bl CalculatePlayerPartyCount - bl CalculateEnemyPartyCount - ldr r0, ._196 @ gTasks - lsl r1, r4, #0x2 - add r1, r1, r4 - lsl r1, r1, #0x3 - add r1, r1, r0 - ldr r0, ._196 + 4 @ debug_80C4D14 - str r0, [r1] - b ._209 -._197: - .align 2, 0 -._196: - .word gTasks - .word debug_80C4D14+1 -._193: - mov r0, #0x88 - lsl r0, r0, #0x2 - and r0, r0, r2 - cmp r0, #0 - beq ._198 @cond_branch - str r1, [sp] - mov r0, #0x0 - mov r1, #0x10 - mov r2, #0x1 - mov r3, #0xe - bl debug_80C38E4 - ldr r0, ._200 @ gTasks - lsl r1, r4, #0x2 - add r1, r1, r4 - lsl r1, r1, #0x3 - add r1, r1, r0 - ldr r0, ._200 + 4 @ debug_80C4348 - str r0, [r1] - b ._209 -._201: - .align 2, 0 -._200: - .word gTasks - .word debug_80C4348+1 -._198: - ldrh r1, [r3, #0x30] - mov r0, #0x40 - and r0, r0, r1 - cmp r0, #0 - beq ._203 @cond_branch - ldr r1, ._205 @ gUnknown_Debug_2038A0C - ldrb r0, [r1, #0x2] - cmp r0, #0 - beq ._203 @cond_branch - sub r0, r0, #0x1 - strb r0, [r1, #0x2] - b ._204 -._206: - .align 2, 0 -._205: - .word gUnknown_Debug_2038A0C -._203: - ldrh r1, [r3, #0x30] - mov r0, #0x80 - and r0, r0, r1 - cmp r0, #0 - beq ._209 @cond_branch - ldr r5, ._210 @ gUnknown_Debug_2038A0C - ldrb r0, [r5, #0x2] - cmp r0, #0x4 - bhi ._209 @cond_branch - add r1, r0, #0 - mov r0, #0x64 - mul r0, r0, r1 - ldr r1, ._210 + 4 @ gEnemyParty - add r0, r0, r1 - mov r1, #0xb - bl GetMonData - cmp r0, #0 - beq ._209 @cond_branch - ldrb r0, [r5, #0x2] - add r0, r0, #0x1 - strb r0, [r5, #0x2] -._204: - ldr r1, ._210 + 8 @ gTasks - lsl r0, r4, #0x2 - add r0, r0, r4 - lsl r0, r0, #0x3 - add r0, r0, r1 - ldr r1, ._210 + 12 @ debug_80C44EC - str r1, [r0] -._209: - add sp, sp, #0x4 - pop {r4, r5} - pop {r0} - bx r0 -._211: - .align 2, 0 -._210: - .word gUnknown_Debug_2038A0C - .word gEnemyParty - .word gTasks - .word debug_80C44EC+1 - - thumb_func_end debug_80C4550 - - thumb_func_start debug_80C4694 -debug_80C4694: - push {r4, r5, lr} - add sp, sp, #0xffffffe4 - ldr r1, ._213 @ gUnknown_Debug_083F81AD - mov r0, sp - mov r2, #0xd - bl memcpy - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0xe - mov r3, #0xf - bl Menu_DrawStdWindowFrame - mov r0, sp - mov r1, #0x2 - mov r2, #0x1 - bl Menu_PrintText - mov r4, #0x0 - add r5, sp, #0x10 -._212: - mov r0, #0x64 - mul r0, r0, r4 - ldr r1, ._213 + 4 @ gPlayerParty - add r0, r0, r1 - mov r1, #0xb - bl GetMonData - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r5, #0 - bl debug_80C405C - lsl r2, r4, #0x19 - mov r0, #0xc0 - lsl r0, r0, #0x12 - add r2, r2, r0 - lsr r2, r2, #0x18 - add r0, r5, #0 - mov r1, #0x2 - bl Menu_PrintText - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0x5 - bls ._212 @cond_branch - add sp, sp, #0x1c - pop {r4, r5} - pop {r0} - bx r0 -._214: - .align 2, 0 -._213: - .word gUnknown_Debug_083F81AD - .word gPlayerParty - - thumb_func_end debug_80C4694 - - thumb_func_start debug_80C4704 -debug_80C4704: - push {r4, r5, lr} - add sp, sp, #0xffffffe4 - ldr r1, ._216 @ gUnknown_Debug_083F81BA - mov r0, sp - mov r2, #0xd - bl memcpy - mov r0, #0xf - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0xf - bl Menu_DrawStdWindowFrame - mov r0, sp - mov r1, #0x11 - mov r2, #0x1 - bl Menu_PrintText - mov r4, #0x0 - add r5, sp, #0x10 -._215: - mov r0, #0x64 - mul r0, r0, r4 - ldr r1, ._216 + 4 @ gEnemyParty - add r0, r0, r1 - mov r1, #0xb - bl GetMonData - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r5, #0 - bl debug_80C405C - lsl r2, r4, #0x19 - mov r0, #0xc0 - lsl r0, r0, #0x12 - add r2, r2, r0 - lsr r2, r2, #0x18 - add r0, r5, #0 - mov r1, #0x11 - bl Menu_PrintText - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0x5 - bls ._215 @cond_branch - add sp, sp, #0x1c - pop {r4, r5} - pop {r0} - bx r0 -._217: - .align 2, 0 -._216: - .word gUnknown_Debug_083F81BA - .word gEnemyParty - - thumb_func_end debug_80C4704 - - thumb_func_start debug_80C4774 -debug_80C4774: - push {r4, lr} - ldr r0, ._221 @ gUnknown_Debug_2038A0C - ldrb r0, [r0, #0xc] - sub r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r1, #0x64 - add r4, r0, #0 - mul r4, r4, r1 - ldr r0, ._221 + 4 @ gPlayerParty - add r0, r4, r0 - mov r1, #0xb - bl GetMonData - cmp r0, #0 - beq ._219 @cond_branch - ldr r0, ._221 + 8 @ gEnemyParty - add r0, r4, r0 - mov r1, #0xb - bl GetMonData - cmp r0, #0 - beq ._219 @cond_branch - mov r0, #0x1 - b ._220 -._222: - .align 2, 0 -._221: - .word gUnknown_Debug_2038A0C - .word gPlayerParty - .word gEnemyParty -._219: - mov r0, #0x0 -._220: - pop {r4} - pop {r1} - bx r1 - - thumb_func_end debug_80C4774 - thumb_func_start debug_80C47BC debug_80C47BC: push {r4, r5, r6, r7, lr} diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index 672b28e71..dbb086469 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -35,6 +35,7 @@ void debug_80C42B8(u8 taskId); void debug_80C4348(u8 taskId); void debug_80C43A8(u8 taskId); void debug_80C44EC(u8 taskId); +void debug_80C4550(u8 taskId); void debug_80C4694(void); void debug_80C4704(void); bool8 debug_80C4774(void); @@ -57,6 +58,8 @@ extern const u8 gUnknown_Debug_083F8022[6]; // = _("スタート:"); extern const u8 gUnknown_Debug_083F8028[6]; // = _(":セレクト"); extern const u8 gUnknown_Debug_083F8194[12]; // = _("ポケモンを えらんでね"); extern const u8 gUnknown_Debug_083F81A0[13]; // = _("{COLOR RED}START:つぎへ"); +extern const u8 gUnknown_Debug_083F81AD[13]; // = _("{COLOR RED}じぶんの ポケモン"); +extern const u8 gUnknown_Debug_083F81BA[13]; // = _("{COLOR RED}あいての ポケモン"); extern const struct SpriteSheet stru_83F8828[2]; extern const struct SpritePalette stru_83F8838[2]; @@ -224,9 +227,9 @@ u16 debug_80C38B4(u8 a0, u16 a1) void debug_80C38E4(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4) { // u8 sp00[] = _("▶"); - u8 sp00[sizeof(gUnknown_Debug_083F7FD4)]; + u8 sp00[ARRAY_COUNT(gUnknown_Debug_083F7FD4)]; - memcpy(sp00, gUnknown_Debug_083F7FD4, ARRAY_COUNT(gUnknown_Debug_083F7FD4)); + memcpy(sp00, gUnknown_Debug_083F7FD4, sizeof(gUnknown_Debug_083F7FD4)); Menu_BlankWindowRect(a1, a2, a1, a3); if (a4) Menu_PrintText(sp00, a1, a0); @@ -922,8 +925,8 @@ void debug_80C4214(UNUSED u8 a0) void debug_80C42B8(u8 taskId) { - u8 sp00[sizeof(gUnknown_Debug_083F8194)]; - u8 sp0c[sizeof(gUnknown_Debug_083F81A0)]; + u8 sp00[ARRAY_COUNT(gUnknown_Debug_083F8194)]; + u8 sp0c[ARRAY_COUNT(gUnknown_Debug_083F81A0)]; memcpy(sp00, gUnknown_Debug_083F8194, sizeof(gUnknown_Debug_083F8194)); memcpy(sp0c, gUnknown_Debug_083F81A0, sizeof(gUnknown_Debug_083F81A0)); @@ -991,4 +994,93 @@ void debug_80C43A8(u8 taskId) } } +void debug_80C44EC(u8 taskId) +{ + debug_80C38E4(gUnknown_Debug_2038A0C[2] * 2 + 3, 16, 1, 14, 1); + REG_WIN1H = 0x79EF; + REG_WIN1V = 0x017F; + gTasks[taskId].func = debug_80C4550; +} + +void debug_80C4550(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + debug_sub_80A433C(gEnemyParty + gUnknown_Debug_2038A0C[2], debug_80C41F4); + DestroyTask(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = debug_80C4F48; + } + else if (gMain.newKeys & START_BUTTON) + { + if (debug_80C4774()) + { + PlaySE(SE_SELECT); + CalculatePlayerPartyCount(); + CalculateEnemyPartyCount(); + gTasks[taskId].func = debug_80C4D14; + } + } + else if (gMain.newKeys & (L_BUTTON | DPAD_LEFT)) + { + debug_80C38E4(0, 16, 1, 14, 0); + gTasks[taskId].func = debug_80C4348; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A0C[2] != 0) + { + gUnknown_Debug_2038A0C[2]--; + gTasks[taskId].func = debug_80C44EC; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[2] < 5 && GetMonData(gEnemyParty + gUnknown_Debug_2038A0C[2], MON_DATA_SPECIES) != SPECIES_NONE) + { + gUnknown_Debug_2038A0C[2]++; + gTasks[taskId].func = debug_80C44EC; + } +} + +void debug_80C4694(void) +{ + u8 i; + // u8 sp00[] = _("{COLOR RED}じぶんの ポケモン"); + u8 sp00[ARRAY_COUNT(gUnknown_Debug_083F81AD)]; + u8 sp10[POKEMON_NAME_LENGTH + 1]; + memcpy(sp00, gUnknown_Debug_083F81AD, sizeof(gUnknown_Debug_083F81AD)); + + Menu_DrawStdWindowFrame(0, 0, 14, 15); + Menu_PrintText(sp00, 2, 1); + for (i = 0; i < PARTY_SIZE; i++) + { + debug_80C405C(sp10, GetMonData(gPlayerParty + i, MON_DATA_SPECIES)); + Menu_PrintText(sp10, 2, 2 * i + 3); + } +} + +void debug_80C4704(void) +{ + u8 i; + // u8 sp00[] = _("{COLOR RED}あいての ポケモン"); + u8 sp00[ARRAY_COUNT(gUnknown_Debug_083F81BA)]; + u8 sp10[POKEMON_NAME_LENGTH + 1]; + memcpy(sp00, gUnknown_Debug_083F81BA, sizeof(gUnknown_Debug_083F81BA)); + + Menu_DrawStdWindowFrame(15, 0, 29, 15); + Menu_PrintText(sp00, 17, 1); + for (i = 0; i < PARTY_SIZE; i++) + { + debug_80C405C(sp10, GetMonData(gEnemyParty + i, MON_DATA_SPECIES)); + Menu_PrintText(sp10, 17, 2 * i + 3); + } +} + +bool8 debug_80C4774(void) +{ + u8 i = gUnknown_Debug_2038A0C[12] - 1; + if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(gEnemyParty + i, MON_DATA_SPECIES) != SPECIES_NONE) + return TRUE; + return FALSE; +} + #endif // DEBUG |