summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile6
-rw-r--r--asm/watanabe_debug_menu.s369
-rw-r--r--src/debug/watanabe_debug_menu.c100
3 files changed, 99 insertions, 376 deletions
diff --git a/Makefile b/Makefile
index 4853612bc..b9c827af7 100644
--- a/Makefile
+++ b/Makefile
@@ -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