summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/tomomichi_debug_menu.s246
-rw-r--r--src/debug/tomomichi_debug_menu.c328
2 files changed, 326 insertions, 248 deletions
diff --git a/asm/tomomichi_debug_menu.s b/asm/tomomichi_debug_menu.s
index 9ee4d88c3..51b9393b8 100644
--- a/asm/tomomichi_debug_menu.s
+++ b/asm/tomomichi_debug_menu.s
@@ -3,252 +3,6 @@
.include "constants/gba_constants.inc"
.include "include/macros.inc"
- thumb_func_start debug_sub_808EF8C
-debug_sub_808EF8C:
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- cmp r6, #0x2
- bgt ._653 @cond_branch
- cmp r6, #0
- blt ._653 @cond_branch
- mov r3, #0x0
- ldr r0, ._656 @ gDebug_03000708
- mov r8, r0
- ldr r4, ._656 + 4 @ gDebug_03000710
- mov r7, #0x7
- mov r5, #0xf
-._658:
- sub r0, r7, r3
- lsl r0, r0, #0x2
- mov r1, r8
- ldr r2, [r1]
- LSR r2, r0
- and r2, r2, r5
- cmp r2, #0x9
- bhi ._654 @cond_branch
- add r1, r3, r4
- add r0, r2, #0
- add r0, r0, #0xa1
- b ._655
-._657:
- .align 2, 0
-._656:
- .word gDebug_03000708
- .word gDebug_03000710
-._654:
- add r1, r3, r4
- add r0, r2, #0
- sub r0, r0, #0x4f
-._655:
- strb r0, [r1]
- add r0, r3, #1
- lsl r0, r0, #0x18
- lsr r3, r0, #0x18
- cmp r3, #0x7
- bls ._658 @cond_branch
- ldr r0, ._666 @ gDebug_03000710
- mov r1, #0xff
- strb r1, [r0, #0x8]
- mov r1, #0xc
- mov r2, #0x5
- bl Menu_PrintText
-._653:
- mov r3, #0x0
- ldr r7, ._666 @ gDebug_03000710
- ldr r5, ._666 + 4 @ gDebug_03000700
- ldr r2, ._666 + 8 @ gSpeciesNames
- mov r8, r2
- add r4, r7, #0
- mov r2, #0x0
-._659:
- add r1, r3, #1
- add r0, r1, r4
- strb r2, [r0]
- lsl r1, r1, #0x18
- lsr r3, r1, #0x18
- cmp r3, #0x9
- bls ._659 @cond_branch
- mov r3, #0x0
- ldrh r2, [r5]
- mov r0, #0xb
- add r1, r2, #0
- mul r1, r1, r0
- mov r2, r8
- add r0, r1, r2
- ldrb r0, [r0]
- cmp r0, #0xff
- beq ._661 @cond_branch
- ldr r0, ._666 @ gDebug_03000710
- mov ip, r0
- mov r5, r8
- add r4, r1, #0
-._662:
- add r1, r3, #1
- mov r0, ip
- add r2, r1, r0
- add r0, r3, r4
- add r0, r0, r5
- ldrb r0, [r0]
- strb r0, [r2]
- lsl r1, r1, #0x18
- lsr r3, r1, #0x18
- add r0, r3, r4
- add r0, r0, r5
- ldrb r0, [r0]
- cmp r0, #0xff
- beq ._661 @cond_branch
- cmp r3, #0x9
- bls ._662 @cond_branch
-._661:
- mov r0, #0xb1
- strb r0, [r7]
- mov r0, #0xb2
- strb r0, [r7, #0xb]
- mov r0, #0xff
- strb r0, [r7, #0xc]
- cmp r6, #0x2
- bgt ._664 @cond_branch
- cmp r6, #0
- blt ._664 @cond_branch
- add r0, r7, #0
- mov r1, #0x8
- mov r2, #0x1
- bl Menu_PrintText
- b ._665
-._667:
- .align 2, 0
-._666:
- .word gDebug_03000710
- .word gDebug_03000700
- .word gSpeciesNames
-._664:
- ldr r0, ._672 @ gDebug_03000710
- mov r1, #0xc
- mov r2, #0x1
- bl Menu_PrintText
-._665:
- ldr r5, ._672 @ gDebug_03000710
- mov r0, #0xff
- strb r0, [r5, #0x3]
- ldr r4, ._672 + 4 @ gDebug_03000700
- ldrh r0, [r4]
- mov r1, #0x64
- bl __udivsi3
- add r0, r0, #0xa1
- strb r0, [r5]
- ldrh r0, [r4]
- mov r1, #0x64
- bl __umodsi3
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- mov r1, #0xa
- bl __udivsi3
- add r0, r0, #0xa1
- strb r0, [r5, #0x1]
- ldrh r0, [r4]
- mov r1, #0xa
- bl __umodsi3
- add r0, r0, #0xa1
- strb r0, [r5, #0x2]
- add r0, r5, #0
- mov r1, #0xc
- mov r2, #0x3
- bl Menu_PrintText
- cmp r6, #0x1
- beq ._668 @cond_branch
- cmp r6, #0x1
- bgt ._669 @cond_branch
- cmp r6, #0
- beq ._670 @cond_branch
- b ._679
-._673:
- .align 2, 0
-._672:
- .word gDebug_03000710
- .word gDebug_03000700
-._669:
- cmp r6, #0x2
- beq ._674 @cond_branch
- b ._679
-._670:
- ldr r4, ._677 @ gDebug_0300070C
- b ._676
-._678:
- .align 2, 0
-._677:
- .word gDebug_0300070C
-._668:
- ldr r4, ._680 @ gDebug_0300070D
-._676:
- ldrb r0, [r4]
- mov r1, #0x64
- bl __udivsi3
- add r0, r0, #0xa1
- strb r0, [r5]
- ldrb r0, [r4]
- mov r1, #0x64
- bl __umodsi3
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- mov r1, #0xa
- bl __udivsi3
- add r0, r0, #0xa1
- strb r0, [r5, #0x1]
- ldrb r0, [r4]
- mov r1, #0xa
- bl __umodsi3
- add r0, r0, #0xa1
- strb r0, [r5, #0x2]
- add r0, r5, #0
- mov r1, #0xc
- mov r2, #0x7
- bl Menu_PrintText
- b ._679
-._681:
- .align 2, 0
-._680:
- .word gDebug_0300070D
-._674:
- ldr r4, ._682 @ gDebug_0300070E
- ldrb r0, [r4]
- mov r1, #0x64
- bl __udivsi3
- add r0, r0, #0xa1
- strb r0, [r5]
- ldrb r0, [r4]
- mov r1, #0x64
- bl __umodsi3
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- mov r1, #0xa
- bl __udivsi3
- add r0, r0, #0xa1
- strb r0, [r5, #0x1]
- ldrb r0, [r4]
- mov r1, #0xa
- bl __umodsi3
- add r0, r0, #0xa1
- strb r0, [r5, #0x2]
- add r0, r5, #0
- mov r1, #0xc
- mov r2, #0x7
- bl Menu_PrintText
-._679:
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7}
- pop {r0}
- bx r0
-._683:
- .align 2, 0
-._682:
- .word gDebug_0300070E
-
- thumb_func_end debug_sub_808EF8C
-
thumb_func_start debug_sub_808F168
debug_sub_808F168:
push {r4, lr}
diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c
index 68fdc9bd1..2ce2329d3 100644
--- a/src/debug/tomomichi_debug_menu.c
+++ b/src/debug/tomomichi_debug_menu.c
@@ -1,6 +1,7 @@
#if DEBUG
#include "global.h"
#include "palette.h"
+#include "data2.h"
#include "event_data.h"
#include "constants/flags.h"
#include "constants/songs.h"
@@ -71,7 +72,7 @@ void debug_sub_808ED9C(void);
void debug_sub_808EE3C(void);
void debug_sub_808EE9C(void);
void debug_sub_808EF14(void);
-void debug_sub_808EF8C(u32 a0);
+void debug_sub_808EF8C(u8 a0);
bool8 debug_sub_808C064(void);
bool8 debug_sub_808C0EC(void);
bool8 debug_sub_808C104(void);
@@ -4082,4 +4083,327 @@ void debug_sub_808EF14(void)
}
}
-#endif
+#ifdef NONMATCHING
+void debug_sub_808EF8C(u8 a0)
+{
+ u8 i;
+ u8 digit;
+ u16 species;
+
+ switch (a0)
+ {
+ case 0:
+ case 1:
+ case 2:
+ for (i = 0; i < 8; i++)
+ {
+ digit = (gDebug_03000708 >> (4 * (7 - i))) & 0xf;
+ if (digit < 10)
+ gDebug_03000710[i] = digit + CHAR_0;
+ else
+ gDebug_03000710[i] = digit + CHAR_A - 10;
+ }
+ gDebug_03000710[i] = EOS;
+ Menu_PrintText(gDebug_03000710, 12, 5);
+ break;
+ }
+ for (i = 0; i < POKEMON_NAME_LENGTH; i++)
+ {
+ gDebug_03000710[i + 1] = CHAR_SPACE;
+ }
+
+ for (i = 0, species = gDebug_03000700; gSpeciesNames[species][i] != EOS && i < POKEMON_NAME_LENGTH; i++)
+ {
+ gDebug_03000710[i + 1] = gSpeciesNames[species][i];
+ }
+
+ gDebug_03000710[0] = 0xB1;
+ gDebug_03000710[POKEMON_NAME_LENGTH + 1] = 0xB2;
+ gDebug_03000710[POKEMON_NAME_LENGTH + 2] = EOS;
+ switch (a0)
+ {
+ case 0:
+ case 1:
+ case 2:
+ Menu_PrintText(gDebug_03000710, 8, 1);
+ break;
+ default:
+ Menu_PrintText(gDebug_03000710, 12, 1);
+ break;
+ }
+ gDebug_03000710[3] = EOS;
+ gDebug_03000710[0] = gDebug_03000700 / 100 + CHAR_0;
+ gDebug_03000710[1] = (gDebug_03000700 % 100) / 10 + CHAR_0;
+ gDebug_03000710[2] = gDebug_03000700 % 10 + CHAR_0;
+ Menu_PrintText(gDebug_03000710, 12, 3);
+
+ switch (a0)
+ {
+ case 0:
+ gDebug_03000710[0] = gDebug_0300070C / 100 + CHAR_0;
+ gDebug_03000710[1] = (gDebug_0300070C % 100) / 10 + CHAR_0;
+ gDebug_03000710[2] = gDebug_0300070C % 10 + CHAR_0;
+ Menu_PrintText(gDebug_03000710, 12, 7);
+ break;
+ case 1:
+ gDebug_03000710[0] = gDebug_0300070D / 100 + CHAR_0;
+ gDebug_03000710[1] = (gDebug_0300070D % 100) / 10 + CHAR_0;
+ gDebug_03000710[2] = gDebug_0300070D % 10 + CHAR_0;
+ Menu_PrintText(gDebug_03000710, 12, 7);
+ break;
+ case 2:
+ gDebug_03000710[0] = gDebug_0300070E / 100 + CHAR_0;
+ gDebug_03000710[1] = (gDebug_0300070E % 100) / 10 + CHAR_0;
+ gDebug_03000710[2] = gDebug_0300070E % 10 + CHAR_0;
+ Menu_PrintText(gDebug_03000710, 12, 7);
+ break;
+ }
+}
+#else
+__attribute__((naked)) void debug_sub_808EF8C(u8 a0)
+{
+ asm("\tpush\t{r4, r5, r6, r7, lr}\n"
+ "\tmov\tr7, r8\n"
+ "\tpush\t{r7}\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr6, r0, #0x18\n"
+ "\tcmp\tr6, #0x2\n"
+ "\tbgt\t._653\t@cond_branch\n"
+ "\tcmp\tr6, #0\n"
+ "\tblt\t._653\t@cond_branch\n"
+ "\tmov\tr3, #0x0\n"
+ "\tldr\tr0, ._656 @ gDebug_03000708\n"
+ "\tmov\tr8, r0\n"
+ "\tldr\tr4, ._656 + 4 @ gDebug_03000710\n"
+ "\tmov\tr7, #0x7\n"
+ "\tmov\tr5, #0xf\n"
+ "._658:\n"
+ "\tsub\tr0, r7, r3\n"
+ "\tlsl\tr0, r0, #0x2\n"
+ "\tmov\tr1, r8\n"
+ "\tldr\tr2, [r1]\n"
+ "\tLSR\tr2, r0\n"
+ "\tand\tr2, r2, r5\n"
+ "\tcmp\tr2, #0x9\n"
+ "\tbhi\t._654\t@cond_branch\n"
+ "\tadd\tr1, r3, r4\n"
+ "\tadd\tr0, r2, #0\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tb\t._655\n"
+ "._657:\n"
+ "\t.align\t2, 0\n"
+ "._656:\n"
+ "\t.word\tgDebug_03000708\n"
+ "\t.word\tgDebug_03000710\n"
+ "._654:\n"
+ "\tadd\tr1, r3, r4\n"
+ "\tadd\tr0, r2, #0\n"
+ "\tsub\tr0, r0, #0x4f\n"
+ "._655:\n"
+ "\tstrb\tr0, [r1]\n"
+ "\tadd\tr0, r3, #1\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr3, r0, #0x18\n"
+ "\tcmp\tr3, #0x7\n"
+ "\tbls\t._658\t@cond_branch\n"
+ "\tldr\tr0, ._666 @ gDebug_03000710\n"
+ "\tmov\tr1, #0xff\n"
+ "\tstrb\tr1, [r0, #0x8]\n"
+ "\tmov\tr1, #0xc\n"
+ "\tmov\tr2, #0x5\n"
+ "\tbl\tMenu_PrintText\n"
+ "._653:\n"
+ "\tmov\tr3, #0x0\n"
+ "\tldr\tr7, ._666 @ gDebug_03000710\n"
+ "\tldr\tr5, ._666 + 4 @ gDebug_03000700\n"
+ "\tldr\tr2, ._666 + 8 @ gSpeciesNames\n"
+ "\tmov\tr8, r2\n"
+ "\tadd\tr4, r7, #0\n"
+ "\tmov\tr2, #0x0\n"
+ "._659:\n"
+ "\tadd\tr1, r3, #1\n"
+ "\tadd\tr0, r1, r4\n"
+ "\tstrb\tr2, [r0]\n"
+ "\tlsl\tr1, r1, #0x18\n"
+ "\tlsr\tr3, r1, #0x18\n"
+ "\tcmp\tr3, #0x9\n"
+ "\tbls\t._659\t@cond_branch\n"
+ "\tmov\tr3, #0x0\n"
+ "\tldrh\tr2, [r5]\n"
+ "\tmov\tr0, #0xb\n"
+ "\tadd\tr1, r2, #0\n"
+ "\tmul\tr1, r1, r0\n"
+ "\tmov\tr2, r8\n"
+ "\tadd\tr0, r1, r2\n"
+ "\tldrb\tr0, [r0]\n"
+ "\tcmp\tr0, #0xff\n"
+ "\tbeq\t._661\t@cond_branch\n"
+ "\tldr\tr0, ._666 @ gDebug_03000710\n"
+ "\tmov\tip, r0\n"
+ "\tmov\tr5, r8\n"
+ "\tadd\tr4, r1, #0\n"
+ "._662:\n"
+ "\tadd\tr1, r3, #1\n"
+ "\tmov\tr0, ip\n"
+ "\tadd\tr2, r1, r0\n"
+ "\tadd\tr0, r3, r4\n"
+ "\tadd\tr0, r0, r5\n"
+ "\tldrb\tr0, [r0]\n"
+ "\tstrb\tr0, [r2]\n"
+ "\tlsl\tr1, r1, #0x18\n"
+ "\tlsr\tr3, r1, #0x18\n"
+ "\tadd\tr0, r3, r4\n"
+ "\tadd\tr0, r0, r5\n"
+ "\tldrb\tr0, [r0]\n"
+ "\tcmp\tr0, #0xff\n"
+ "\tbeq\t._661\t@cond_branch\n"
+ "\tcmp\tr3, #0x9\n"
+ "\tbls\t._662\t@cond_branch\n"
+ "._661:\n"
+ "\tmov\tr0, #0xb1\n"
+ "\tstrb\tr0, [r7]\n"
+ "\tmov\tr0, #0xb2\n"
+ "\tstrb\tr0, [r7, #0xb]\n"
+ "\tmov\tr0, #0xff\n"
+ "\tstrb\tr0, [r7, #0xc]\n"
+ "\tcmp\tr6, #0x2\n"
+ "\tbgt\t._664\t@cond_branch\n"
+ "\tcmp\tr6, #0\n"
+ "\tblt\t._664\t@cond_branch\n"
+ "\tadd\tr0, r7, #0\n"
+ "\tmov\tr1, #0x8\n"
+ "\tmov\tr2, #0x1\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tb\t._665\n"
+ "._667:\n"
+ "\t.align\t2, 0\n"
+ "._666:\n"
+ "\t.word\tgDebug_03000710\n"
+ "\t.word\tgDebug_03000700\n"
+ "\t.word\tgSpeciesNames\n"
+ "._664:\n"
+ "\tldr\tr0, ._672 @ gDebug_03000710\n"
+ "\tmov\tr1, #0xc\n"
+ "\tmov\tr2, #0x1\n"
+ "\tbl\tMenu_PrintText\n"
+ "._665:\n"
+ "\tldr\tr5, ._672 @ gDebug_03000710\n"
+ "\tmov\tr0, #0xff\n"
+ "\tstrb\tr0, [r5, #0x3]\n"
+ "\tldr\tr4, ._672 + 4 @ gDebug_03000700\n"
+ "\tldrh\tr0, [r4]\n"
+ "\tmov\tr1, #0x64\n"
+ "\tbl\t__udivsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5]\n"
+ "\tldrh\tr0, [r4]\n"
+ "\tmov\tr1, #0x64\n"
+ "\tbl\t__umodsi3\n"
+ "\tlsl\tr0, r0, #0x10\n"
+ "\tlsr\tr0, r0, #0x10\n"
+ "\tmov\tr1, #0xa\n"
+ "\tbl\t__udivsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5, #0x1]\n"
+ "\tldrh\tr0, [r4]\n"
+ "\tmov\tr1, #0xa\n"
+ "\tbl\t__umodsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5, #0x2]\n"
+ "\tadd\tr0, r5, #0\n"
+ "\tmov\tr1, #0xc\n"
+ "\tmov\tr2, #0x3\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tcmp\tr6, #0x1\n"
+ "\tbeq\t._668\t@cond_branch\n"
+ "\tcmp\tr6, #0x1\n"
+ "\tbgt\t._669\t@cond_branch\n"
+ "\tcmp\tr6, #0\n"
+ "\tbeq\t._670\t@cond_branch\n"
+ "\tb\t._679\n"
+ "._673:\n"
+ "\t.align\t2, 0\n"
+ "._672:\n"
+ "\t.word\tgDebug_03000710\n"
+ "\t.word\tgDebug_03000700\n"
+ "._669:\n"
+ "\tcmp\tr6, #0x2\n"
+ "\tbeq\t._674\t@cond_branch\n"
+ "\tb\t._679\n"
+ "._670:\n"
+ "\tldr\tr4, ._677 @ gDebug_0300070C\n"
+ "\tb\t._676\n"
+ "._678:\n"
+ "\t.align\t2, 0\n"
+ "._677:\n"
+ "\t.word\tgDebug_0300070C\n"
+ "._668:\n"
+ "\tldr\tr4, ._680 @ gDebug_0300070D\n"
+ "._676:\n"
+ "\tldrb\tr0, [r4]\n"
+ "\tmov\tr1, #0x64\n"
+ "\tbl\t__udivsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5]\n"
+ "\tldrb\tr0, [r4]\n"
+ "\tmov\tr1, #0x64\n"
+ "\tbl\t__umodsi3\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr0, r0, #0x18\n"
+ "\tmov\tr1, #0xa\n"
+ "\tbl\t__udivsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5, #0x1]\n"
+ "\tldrb\tr0, [r4]\n"
+ "\tmov\tr1, #0xa\n"
+ "\tbl\t__umodsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5, #0x2]\n"
+ "\tadd\tr0, r5, #0\n"
+ "\tmov\tr1, #0xc\n"
+ "\tmov\tr2, #0x7\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tb\t._679\n"
+ "._681:\n"
+ "\t.align\t2, 0\n"
+ "._680:\n"
+ "\t.word\tgDebug_0300070D\n"
+ "._674:\n"
+ "\tldr\tr4, ._682 @ gDebug_0300070E\n"
+ "\tldrb\tr0, [r4]\n"
+ "\tmov\tr1, #0x64\n"
+ "\tbl\t__udivsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5]\n"
+ "\tldrb\tr0, [r4]\n"
+ "\tmov\tr1, #0x64\n"
+ "\tbl\t__umodsi3\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr0, r0, #0x18\n"
+ "\tmov\tr1, #0xa\n"
+ "\tbl\t__udivsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5, #0x1]\n"
+ "\tldrb\tr0, [r4]\n"
+ "\tmov\tr1, #0xa\n"
+ "\tbl\t__umodsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5, #0x2]\n"
+ "\tadd\tr0, r5, #0\n"
+ "\tmov\tr1, #0xc\n"
+ "\tmov\tr2, #0x7\n"
+ "\tbl\tMenu_PrintText\n"
+ "._679:\n"
+ "\tpop\t{r3}\n"
+ "\tmov\tr8, r3\n"
+ "\tpop\t{r4, r5, r6, r7}\n"
+ "\tpop\t{r0}\n"
+ "\tbx\tr0\n"
+ "._683:\n"
+ "\t.align\t2, 0\n"
+ "._682:\n"
+ "\t.word\tgDebug_0300070E");
+}
+#endif // NONMATCHING
+
+#endif // DEBUG