diff options
-rw-r--r-- | asm/watanabe_debug_menu.s | 431 | ||||
-rw-r--r-- | data/debug_menu_watanabe.s | 21 | ||||
-rw-r--r-- | include/battle.h | 4 | ||||
-rw-r--r-- | src/debug/watanabe_debug_menu.c | 138 |
4 files changed, 155 insertions, 439 deletions
diff --git a/asm/watanabe_debug_menu.s b/asm/watanabe_debug_menu.s index f02f6f702..7260c0bc4 100644 --- a/asm/watanabe_debug_menu.s +++ b/asm/watanabe_debug_menu.s @@ -5,437 +5,6 @@ .text - thumb_func_start debug_80C4900 -debug_80C4900: - push {r4, r5, lr} - add sp, sp, #0xfffffffc - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - ldr r1, ._230 @ gMain - ldrh r2, [r1, #0x2e] - mov r0, #0x2 - and r0, r0, r2 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r3, r1, #0 - cmp r4, #0 - beq ._228 @cond_branch - mov r0, #0x5 - bl PlaySE - mov r0, #0x1 - neg r0, r0 - mov r4, #0x0 - str r4, [sp] - mov r1, #0x0 - mov r2, #0x0 - mov r3, #0x10 - bl BeginNormalPaletteFade - ldr r0, ._230 + 4 @ debug_80C370C - bl SetMainCallback2 - bl LoadPlayerParty - ldr r1, ._230 + 8 @ gSaveBlock2 - ldr r0, ._230 + 12 @ gUnknown_Debug_2038A0C - ldrb r0, [r0, #0xd] - strb r0, [r1, #0x8] - ldr r0, ._230 + 16 @ gBattleTypeFlags - mov r1, #0x0 - strh r4, [r0] - ldr r0, ._230 + 20 @ gUnknown_02023A14_50 - strb r1, [r0] - ldr r1, ._230 + 24 @ gTasks - lsl r0, r5, #0x2 - add r0, r0, r5 - lsl r0, r0, #0x3 - add r0, r0, r1 - ldr r1, ._230 + 28 @ debug_80C373C - b ._229 -._231: - .align 2, 0 -._230: - .word gMain - .word debug_80C370C+1 - .word gSaveBlock2 - .word gUnknown_Debug_2038A0C - .word gBattleTypeFlags - .word gUnknown_02023A14_50 - .word gTasks - .word debug_80C373C+1 -._228: - mov r0, #0x8 - and r0, r0, r2 - cmp r0, #0 - bne ._232 @cond_branch - mov r0, #0x1 - and r0, r0, r2 - cmp r0, #0 - beq ._233 @cond_branch -._232: - mov r0, #0x5 - bl PlaySE - ldr r1, ._236 @ gBattleTypeFlags - ldr r3, ._236 + 4 @ gUnknown_Debug_083F8068 - ldr r2, ._236 + 8 @ gUnknown_Debug_2038A0C - ldrb r0, [r2, #0x3] - lsl r0, r0, #0x3 - add r0, r0, r3 - ldrb r0, [r0, #0x4] - strh r0, [r1] - ldr r1, ._236 + 12 @ gUnknown_02023A14_50 - mov r0, #0x8 - strb r0, [r1] - ldrb r0, [r2, #0x3] - lsl r0, r0, #0x3 - add r0, r0, r3 - ldrb r0, [r0, #0x5] - strb r0, [r2, #0xc] - ldrb r0, [r2, #0x3] - sub r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x1 - bhi ._234 @cond_branch - str r4, [sp] - mov r0, #0x0 - mov r1, #0x1 - mov r2, #0x1 - mov r3, #0xe - bl debug_80C38E4 - ldr r0, ._236 + 16 @ gTasks - lsl r1, r5, #0x2 - add r1, r1, r5 - lsl r1, r1, #0x3 - add r1, r1, r0 - ldr r0, ._236 + 20 @ debug_80C4A60 - str r0, [r1] - b ._247 -._237: - .align 2, 0 -._236: - .word gBattleTypeFlags - .word gUnknown_Debug_083F8068 - .word gUnknown_Debug_2038A0C - .word gUnknown_02023A14_50 - .word gTasks - .word debug_80C4A60+1 -._234: - ldr r0, ._239 @ gTasks - lsl r1, r5, #0x2 - add r1, r1, r5 - lsl r1, r1, #0x3 - add r1, r1, r0 - ldr r0, ._239 + 4 @ debug_80C4F48 - str r0, [r1] - b ._247 -._240: - .align 2, 0 -._239: - .word gTasks - .word debug_80C4F48+1 -._233: - ldrh r1, [r3, #0x30] - mov r0, #0x40 - and r0, r0, r1 - cmp r0, #0 - beq ._242 @cond_branch - ldr r1, ._244 @ gUnknown_Debug_2038A0C - ldrb r0, [r1, #0x3] - cmp r0, #0 - beq ._242 @cond_branch - sub r0, r0, #0x1 - b ._243 -._245: - .align 2, 0 -._244: - .word gUnknown_Debug_2038A0C -._242: - ldrh r1, [r3, #0x30] - mov r0, #0x80 - and r0, r0, r1 - cmp r0, #0 - beq ._247 @cond_branch - ldr r1, ._248 @ gUnknown_Debug_2038A0C - ldrb r0, [r1, #0x3] - cmp r0, #0x1 - bhi ._247 @cond_branch - add r0, r0, #0x1 -._243: - strb r0, [r1, #0x3] - ldr r1, ._248 + 4 @ gTasks - lsl r0, r5, #0x2 - add r0, r0, r5 - lsl r0, r0, #0x3 - add r0, r0, r1 - ldr r1, ._248 + 8 @ debug_80C48A0 -._229: - str r1, [r0] -._247: - add sp, sp, #0x4 - pop {r4, r5} - pop {r0} - bx r0 -._249: - .align 2, 0 -._248: - .word gUnknown_Debug_2038A0C - .word gTasks - .word debug_80C48A0+1 - - thumb_func_end debug_80C4900 - - thumb_func_start debug_80C4A60 -debug_80C4A60: - push {r4, lr} - add sp, sp, #0xfffffffc - add r4, r0, #0 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - ldr r0, ._250 @ gUnknown_Debug_2038A0C - ldrb r0, [r0, #0x5] - 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, ._250 + 4 @ 0x4000042 - ldr r2, ._250 + 8 @ 0x79ef - add r0, r2, #0 - strh r0, [r1] - add r1, r1, #0x4 - ldr r2, ._250 + 12 @ 0x17f - add r0, r2, #0 - strh r0, [r1] - ldr r1, ._250 + 16 @ gTasks - lsl r0, r4, #0x2 - add r0, r0, r4 - lsl r0, r0, #0x3 - add r0, r0, r1 - ldr r1, ._250 + 20 @ debug_80C4AC4 - str r1, [r0] - add sp, sp, #0x4 - pop {r4} - pop {r0} - bx r0 -._251: - .align 2, 0 -._250: - .word gUnknown_Debug_2038A0C - .word 0x4000042 - .word 0x79ef - .word 0x17f - .word gTasks - .word debug_80C4AC4+1 - - thumb_func_end debug_80C4A60 - - thumb_func_start debug_80C4AC4 -debug_80C4AC4: - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - add sp, sp, #0xfffffffc - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - ldr r7, ._255 @ gUnknown_Debug_2038A0C - ldrb r0, [r7, #0x4] - mov ip, r0 - ldrb r5, [r7, #0x5] - mov r1, ip - add r0, r1, r5 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - ldr r2, ._255 + 4 @ gMain - mov r8, r2 - ldrh r2, [r2, #0x2e] - mov r3, #0x1 - and r3, r3, r2 - add r4, r7, #0 - cmp r3, #0 - beq ._252 @cond_branch - ldr r0, ._255 + 8 @ gUnknown_Debug_083F80D8 - lsl r1, r1, #0x3 - add r0, r0, #0x4 - add r1, r1, r0 - ldr r1, [r1] - ldr r3, ._255 + 12 @ byte_3005E30 - ldr r2, [r3] - add r0, r2, #0 - and r0, r0, r1 - cmp r0, #0 - beq ._253 @cond_branch - ldr r0, ._255 + 16 @ 0xffff - eor r1, r1, r0 - and r2, r2, r1 - b ._254 -._256: - .align 2, 0 -._255: - .word gUnknown_Debug_2038A0C - .word gMain - .word gUnknown_Debug_083F80D8 - .word byte_3005E30 - .word 0xffff -._253: - orr r2, r2, r1 -._254: - str r2, [r3] - ldrb r0, [r4, #0x4] - bl debug_80C4C44 - ldr r1, ._258 @ gTasks - lsl r0, r6, #0x2 - add r0, r0, r6 - lsl r0, r0, #0x3 - add r0, r0, r1 - ldr r1, ._258 + 4 @ debug_80C4A60 - str r1, [r0] - b ._274 -._259: - .align 2, 0 -._258: - .word gTasks - .word debug_80C4A60+1 -._252: - mov r0, #0x2 - and r0, r0, r2 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - cmp r4, #0 - beq ._260 @cond_branch - str r3, [sp] - mov r0, #0x0 - mov r1, #0x10 - mov r2, #0x1 - mov r3, #0xe - bl debug_80C38E4 - ldr r0, ._262 @ gTasks - lsl r1, r6, #0x2 - add r1, r1, r6 - lsl r1, r1, #0x3 - add r1, r1, r0 - ldr r0, ._262 + 4 @ debug_80C48A0 - b ._261 -._263: - .align 2, 0 -._262: - .word gTasks - .word debug_80C48A0+1 -._260: - mov r0, #0x8 - and r0, r0, r2 - cmp r0, #0 - beq ._264 @cond_branch - mov r0, #0x5 - bl PlaySE - ldr r1, ._266 @ gTrainerBattleOpponent - mov r2, #0x80 - lsl r2, r2, #0x3 - add r0, r2, #0 - strh r0, [r1] - ldr r1, ._266 + 4 @ 0x2017000 - ldrb r2, [r1, #0x1] - mov r0, #0x11 - neg r0, r0 - and r0, r0, r2 - strb r0, [r1, #0x1] - mov r0, #0xac - strb r0, [r1, #0x2] - mov r0, #0xff - strb r0, [r1, #0x3] - strb r4, [r1, #0x9] - strb r4, [r1, #0xa] - strb r4, [r1, #0xb] - strb r4, [r1, #0xc] - ldr r1, ._266 + 8 @ gTasks - lsl r0, r6, #0x2 - add r0, r0, r6 - lsl r0, r0, #0x3 - add r0, r0, r1 - ldr r1, ._266 + 12 @ debug_80C4F48 - str r1, [r0] - b ._274 -._267: - .align 2, 0 -._266: - .word gTrainerBattleOpponent - .word 0x2017000 - .word gTasks - .word debug_80C4F48+1 -._264: - mov r0, r8 - ldrh r1, [r0, #0x30] - mov r0, #0x40 - and r0, r0, r1 - cmp r0, #0 - beq ._268 @cond_branch - lsl r0, r5, #0x18 - cmp r0, #0 - beq ._269 @cond_branch - sub r0, r5, #1 - strb r0, [r7, #0x5] - b ._277 -._269: - mov r1, ip - lsl r0, r1, #0x18 - cmp r0, #0 - beq ._277 @cond_branch - mov r0, ip - sub r0, r0, #0x1 - b ._272 -._268: - mov r0, #0x80 - and r0, r0, r1 - cmp r0, #0 - beq ._274 @cond_branch - lsl r0, r5, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x8 - bhi ._274 @cond_branch - cmp r0, #0x4 - bhi ._275 @cond_branch - add r0, r5, #1 - strb r0, [r7, #0x5] - b ._277 -._275: - mov r2, ip - lsl r0, r2, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x3 - bhi ._277 @cond_branch - mov r0, ip - add r0, r0, #0x1 -._272: - strb r0, [r7, #0x4] - ldrb r0, [r7, #0x4] - bl debug_80C4C44 -._277: - ldr r0, ._278 @ gTasks - lsl r1, r6, #0x2 - add r1, r1, r6 - lsl r1, r1, #0x3 - add r1, r1, r0 - ldr r0, ._278 + 4 @ debug_80C4A60 -._261: - str r0, [r1] -._274: - add sp, sp, #0x4 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 -._279: - .align 2, 0 -._278: - .word gTasks - .word debug_80C4A60+1 - - thumb_func_end debug_80C4AC4 - thumb_func_start debug_80C4C44 debug_80C4C44: push {r4, r5, r6, r7, lr} diff --git a/data/debug_menu_watanabe.s b/data/debug_menu_watanabe.s index 8717196ef..5b99533da 100644 --- a/data/debug_menu_watanabe.s +++ b/data/debug_menu_watanabe.s @@ -56,12 +56,23 @@ gUnknown_Debug_083F8048:: @ 0x83F8048 gUnknown_Debug_083F8058:: @ 0x83F8058 .string "{COLOR BLUE}2VS2つうしんたいせん$" + .align 2 gUnknown_Debug_083F8068:: @ 0x83F8068 - .4byte gUnknown_Debug_083F802E, 0x100 - .4byte gUnknown_Debug_083F8036, 0x108 - .4byte gUnknown_Debug_083F803F, 0x209 - .4byte gUnknown_Debug_083F8048, 0x10A - .4byte gUnknown_Debug_083F8058, 0x20B + .4byte gUnknown_Debug_083F802E + .byte 0x00, 0x01 + .align 2 + .4byte gUnknown_Debug_083F8036 + .byte 0x08, 0x01 + .align 2 + .4byte gUnknown_Debug_083F803F + .byte 0x09, 0x02 + .align 2 + .4byte gUnknown_Debug_083F8048 + .byte 0x0A, 0x01 + .align 2 + .4byte gUnknown_Debug_083F8058 + .byte 0x0B, 0x02 + .align 2 gUnknown_Debug_083F8090:: @ 0x83F8090 .string "きほんタイプ$" diff --git a/include/battle.h b/include/battle.h index 02e02ca83..e63560421 100644 --- a/include/battle.h +++ b/include/battle.h @@ -721,6 +721,10 @@ void MarkBufferBankForExecution(u8 bank); extern u8 gBattleTextBuff1[]; +extern u16 gBattleTypeFlags; +extern u8 gUnknown_02023A14_50; +extern u16 gTrainerBattleOpponent; + // src/battle_bg.o void sub_800D6D4(); void ApplyPlayerChosenFrameToBattleMenu(); diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index 112fd7e13..dcb74b870 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -1,5 +1,6 @@ #if DEBUG #include "global.h" +#include "ewram.h" #include "gba/flash_internal.h" #include "constants/species.h" #include "constants/songs.h" @@ -20,15 +21,22 @@ #include "pokedex.h" #include "load_save.h" #include "pokemon_storage_system.h" +#include "battle.h" EWRAM_DATA u8 gUnknown_Debug_20389EC[0x20] = { 0 }; EWRAM_DATA u8 gUnknown_Debug_2038A0C[0x10] = { 0 }; EWRAM_DATA u8 gUnknown_Debug_2038A1C[4] = { 0 }; EWRAM_DATA u8 gUnknown_Debug_2038A20[4] = { 0 }; -struct WatanabeDebugMenuItem { +struct WatanabeDebugMenuItem1 { const u8 * text; - u32 value; + u8 battleTypeFlags; + u8 unk5; +}; + +struct WatanabeDebugMenuItem2 { + const u8 * text; + u32 mask; }; u32 byte_3005E30; @@ -47,12 +55,15 @@ bool8 debug_80C4774(void); void debug_80C47BC(u8 taskId); void debug_80C48A0(u8 taskId); void debug_80C4900(u8 taskId); +void debug_80C4A60(u8 taskId); +void debug_80C4AC4(u8 taskId); void debug_80C4C44(u8); void debug_80C4D14(u8 taskId); void debug_80C4F48(u8 taskId); void debug_80C68CC(u16, u8, u8, u8); -extern const struct WatanabeDebugMenuItem gUnknown_Debug_083F8068[5]; +extern const struct WatanabeDebugMenuItem1 gUnknown_Debug_083F8068[5]; +extern const struct WatanabeDebugMenuItem2 gUnknown_Debug_083F80D8[10]; extern const u8 gUnknown_Debug_083F7FD4[2]; // = _("▶"); extern const u8 gUnknown_Debug_083F7FD6[4]; // = {0x25, 0x20, 0x01, 0x08}; @@ -1141,4 +1152,125 @@ void debug_80C48A0(u8 taskId) gTasks[taskId].func = debug_80C4900; } +void debug_80C4900(u8 taskId) +{ + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + SetMainCallback2(debug_80C370C); + LoadPlayerParty(); + gSaveBlock2.playerGender = gUnknown_Debug_2038A0C[13]; + gBattleTypeFlags = 0; + gUnknown_02023A14_50 = 0; + gTasks[taskId].func = debug_80C373C; + } + else if (gMain.newKeys & START_BUTTON || gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gBattleTypeFlags = gUnknown_Debug_083F8068[gUnknown_Debug_2038A0C[3]].battleTypeFlags; + gUnknown_02023A14_50 = 8; + gUnknown_Debug_2038A0C[12] = gUnknown_Debug_083F8068[gUnknown_Debug_2038A0C[3]].unk5; + if (gUnknown_Debug_2038A0C[3] == 1 || gUnknown_Debug_2038A0C[3] == 2) + { + debug_80C38E4(0, 1, 1, 14, 0); + gTasks[taskId].func = debug_80C4A60; + } + else + { + gTasks[taskId].func = debug_80C4F48; + } + } + else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A0C[3] > 0) + { + gUnknown_Debug_2038A0C[3]--; + gTasks[taskId].func = debug_80C48A0; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[3] < 2) + { + gUnknown_Debug_2038A0C[3]++; + gTasks[taskId].func = debug_80C48A0; + } +} + +void debug_80C4A60(u8 taskId) +{ + debug_80C38E4(gUnknown_Debug_2038A0C[5] * 2 + 3, 16, 1, 14, 1); + REG_WIN1H = 0x79EF; + REG_WIN1V = 0x017F; + gTasks[taskId].func = debug_80C4AC4; +} + +struct WatanabeEwram17000 { + u8 fill0; + u8 unk1_0:4; + u8 unk1_4:1; + u8 unk1_5:3; + u8 unk2; + u8 unk3; + u8 fill4[5]; + u8 unk9; + u8 unkA; + u8 unkB; + u8 unkC; +}; + +#define eWatanabe17000 (*(struct WatanabeEwram17000 *)(gSharedMem + 0x17000)) + +void debug_80C4AC4(u8 taskId) +{ + u8 r1 = gUnknown_Debug_2038A0C[4] + gUnknown_Debug_2038A0C[5]; + + if (gMain.newKeys & A_BUTTON) + { + u32 mask = gUnknown_Debug_083F80D8[r1].mask; + if (byte_3005E30 & mask) + byte_3005E30 &= (mask ^ 0xFFFF); + else + byte_3005E30 |= mask; + debug_80C4C44(gUnknown_Debug_2038A0C[4]); + gTasks[taskId].func = debug_80C4A60; + } + else if (gMain.newKeys & B_BUTTON) + { + debug_80C38E4(0, 16, 1, 14, 0); + gTasks[taskId].func = debug_80C48A0; + } + else if (gMain.newKeys & START_BUTTON) + { + PlaySE(SE_SELECT); + gTrainerBattleOpponent = 0x400; + eWatanabe17000.unk1_4 = 0; + eWatanabe17000.unk2 = 0xAC; + eWatanabe17000.unk3 = 0xFF; + eWatanabe17000.unk9 = 0; + eWatanabe17000.unkA = 0; + eWatanabe17000.unkB = 0; + eWatanabe17000.unkC = 0; + gTasks[taskId].func = debug_80C4F48; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (gUnknown_Debug_2038A0C[5] > 0) + gUnknown_Debug_2038A0C[5]--; + else if (gUnknown_Debug_2038A0C[4] > 0) + { + gUnknown_Debug_2038A0C[4]--; + debug_80C4C44(gUnknown_Debug_2038A0C[4]); + } + gTasks[taskId].func = debug_80C4A60; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[5] < 9) + { + if (gUnknown_Debug_2038A0C[5] < 5) + gUnknown_Debug_2038A0C[5]++; + else if (gUnknown_Debug_2038A0C[4] < 4) + { + gUnknown_Debug_2038A0C[4]++; + debug_80C4C44(gUnknown_Debug_2038A0C[4]); + } + gTasks[taskId].func = debug_80C4A60; + } +} + #endif // DEBUG |