summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/tomomichi_debug_menu.s194
-rw-r--r--data/debug_menu_tomomichi.s53
-rw-r--r--ld_script.txt1
-rw-r--r--src/debug/tomomichi_debug_menu.c118
4 files changed, 117 insertions, 249 deletions
diff --git a/asm/tomomichi_debug_menu.s b/asm/tomomichi_debug_menu.s
index c0dfe38e0..644708022 100644
--- a/asm/tomomichi_debug_menu.s
+++ b/asm/tomomichi_debug_menu.s
@@ -3,198 +3,6 @@
.include "constants/gba_constants.inc"
.include "include/macros.inc"
- thumb_func_start InitTomomichiDebugWindow
-InitTomomichiDebugWindow:
- push {lr}
- bl debug_sub_808B874
- mov r0, #0x0
- pop {r1}
- bx r1
-
- thumb_func_end InitTomomichiDebugWindow
-
- thumb_func_start debug_sub_808B868
-debug_sub_808B868:
- push {lr}
- bl c2_exit_to_overworld_1_continue_scripts_restart_music
- pop {r0}
- bx r0
-
- thumb_func_end debug_sub_808B868
-
- thumb_func_start debug_sub_808B874
-debug_sub_808B874:
- push {lr}
- add sp, sp, #0xfffffff8
- bl Menu_EraseScreen
- mov r0, #0x0
- mov r1, #0x0
- mov r2, #0xd
- mov r3, #0xf
- bl Menu_DrawStdWindowFrame
- ldr r3, ._1 @ gUnknown_Debug_083C0CBA
- mov r0, #0x1
- mov r1, #0x1
- mov r2, #0x7
- bl Menu_PrintItems
- ldr r0, ._1 + 4 @ gDebug_0300071D
- ldrb r0, [r0]
- str r0, [sp]
- mov r0, #0xc
- str r0, [sp, #0x4]
- mov r0, #0x0
- mov r1, #0x1
- mov r2, #0x1
- mov r3, #0x7
- bl InitMenu
- ldr r1, ._1 + 8 @ gMenuCallback
- ldr r0, ._1 + 12 @ debug_sub_808B8C8
- str r0, [r1]
- mov r0, #0x0
- add sp, sp, #0x8
- pop {r1}
- bx r1
-._2:
- .align 2, 0
-._1:
- .word gUnknown_Debug_083C0CBA
- .word gDebug_0300071D
- .word gMenuCallback
- .word debug_sub_808B8C8+1
-
- thumb_func_end debug_sub_808B874
-
- thumb_func_start debug_sub_808B8C8
-debug_sub_808B8C8:
- push {r4, lr}
- ldr r4, ._7 @ gMain
- ldrh r1, [r4, #0x2e]
- mov r0, #0x40
- and r0, r0, r1
- cmp r0, #0
- beq ._3 @cond_branch
- mov r0, #0x5
- bl PlaySE
- mov r0, #0x1
- neg r0, r0
- bl Menu_MoveCursor
- ldr r1, ._7 + 4 @ gDebug_0300071D
- strb r0, [r1]
-._3:
- ldrh r1, [r4, #0x2e]
- mov r0, #0x80
- and r0, r0, r1
- cmp r0, #0
- beq ._4 @cond_branch
- mov r0, #0x5
- bl PlaySE
- mov r0, #0x1
- bl Menu_MoveCursor
- ldr r1, ._7 + 4 @ gDebug_0300071D
- strb r0, [r1]
-._4:
- ldrh r1, [r4, #0x2e]
- mov r0, #0x1
- and r0, r0, r1
- cmp r0, #0
- beq ._5 @cond_branch
- mov r0, #0x5
- bl PlaySE
- ldr r1, ._7 + 8 @ gUnknown_Debug_083C0CBA
- ldr r0, ._7 + 4 @ gDebug_0300071D
- ldrb r0, [r0]
- lsl r0, r0, #0x3
- add r1, r1, #0x4
- add r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- b ._10
-._8:
- .align 2, 0
-._7:
- .word gMain
- .word gDebug_0300071D
- .word gUnknown_Debug_083C0CBA
-._5:
- mov r0, #0xa
- and r0, r0, r1
- cmp r0, #0
- bne ._9 @cond_branch
- mov r0, #0x0
- b ._10
-._9:
- bl CloseMenu
- mov r0, #0x1
-._10:
- pop {r4}
- pop {r1}
- bx r1
-
- thumb_func_end debug_sub_808B8C8
-
- thumb_func_start TomomichiDebugMenu_ContestGraphics
-TomomichiDebugMenu_ContestGraphics:
- push {r4, lr}
- add sp, sp, #0xfffffff8
- bl Menu_EraseScreen
- mov r0, #0x0
- mov r1, #0x0
- mov r2, #0x14
- mov r3, #0xb
- bl Menu_DrawStdWindowFrame
- ldr r0, ._11 @ gUnknown_Debug_083C0CF4
- mov r1, #0x1
- mov r2, #0x1
- bl Menu_PrintText
- ldr r3, ._11 + 4 @ gUnknown_Debug_083C0D2C
- mov r0, #0x2
- mov r1, #0x3
- mov r2, #0x4
- bl Menu_PrintItems
- mov r4, #0x0
- str r4, [sp]
- mov r0, #0x13
- str r0, [sp, #0x4]
- mov r0, #0x0
- mov r1, #0x1
- mov r2, #0x3
- mov r3, #0x4
- bl InitMenu
- ldr r1, ._11 + 8 @ gMenuCallback
- ldr r0, ._11 + 12 @ debug_sub_808BC48
- str r0, [r1]
- ldr r0, ._11 + 16 @ gDebug_03000700
- mov r2, #0x1
- strh r2, [r0]
- ldr r1, ._11 + 20 @ gDebug_03000704
- ldr r0, ._11 + 24 @ 0x6f33
- str r0, [r1]
- ldr r0, ._11 + 28 @ gDebug_03000708
- str r4, [r0]
- ldr r0, ._11 + 32 @ gDebug_0300070C
- strb r2, [r0]
- mov r0, #0x0
- add sp, sp, #0x8
- pop {r4}
- pop {r1}
- bx r1
-._12:
- .align 2, 0
-._11:
- .word gUnknown_Debug_083C0CF4
- .word gUnknown_Debug_083C0D2C
- .word gMenuCallback
- .word debug_sub_808BC48+1
- .word gDebug_03000700
- .word gDebug_03000704
- .word 0x6f33
- .word gDebug_03000708
- .word gDebug_0300070C
-
- thumb_func_end TomomichiDebugMenu_ContestGraphics
-
thumb_func_start TomomichiDebugMenu_ArtMusGraphics
TomomichiDebugMenu_ArtMusGraphics:
push {r4, lr}
@@ -229,7 +37,7 @@ TomomichiDebugMenu_ArtMusGraphics:
ldr r0, ._13 + 16 @ gDebug_03000700
mov r2, #0x1
strh r2, [r0]
- ldr r1, ._13 + 20 @ gDebug_03000704
+ ldr r1, ._13 + 20 @ `
ldr r0, ._13 + 24 @ 0x6f33
str r0, [r1]
ldr r0, ._13 + 28 @ gDebug_03000708
diff --git a/data/debug_menu_tomomichi.s b/data/debug_menu_tomomichi.s
index 19401bb85..a01d6adb1 100644
--- a/data/debug_menu_tomomichi.s
+++ b/data/debug_menu_tomomichi.s
@@ -5,59 +5,6 @@
.if DEBUG
-gUnknown_Debug_083C0C54:: @ 0x83C0C54
- .string "Contest graphics$"
-
-gUnknown_Debug_083C0C65:: @ 0x83C0C65
- .string "Art Mus. graphics$"
-
-gUnknown_Debug_083C0C77:: @ 0x83C0C77
- .string "Preview data$"
-
-gUnknown_Debug_083C0C84:: @ 0x83C0C84
- .string "TRICK HOUSE$"
-
-gUnknown_Debug_083C0C90:: @ 0x83C0C90
- .string "Control events$"
-
-gUnknown_Debug_083C0C9F:: @ 0x83C0C9F
- .string "Control flags$"
-
-gUnknown_Debug_083C0CAD:: @ 0x83C0CAD
- .string "Control WORK$"
-
- .align 2
-gUnknown_Debug_083C0CBA:: @ 0x83C0CBA
- .4byte gUnknown_Debug_083C0C54, TomomichiDebugMenu_ContestGraphics+1
- .4byte gUnknown_Debug_083C0C65, TomomichiDebugMenu_ArtMusGraphics+1
- .4byte gUnknown_Debug_083C0C77, TomomichiDebugMenu_PreviewData+1
- .4byte gUnknown_Debug_083C0C84, TomomichiDebugMenu_TrickHouse+1
- .4byte gUnknown_Debug_083C0C90, TomomichiDebugMenu_ControlEvents+1
- .4byte gUnknown_Debug_083C0C9F, TomomichiDebugMenu_ControlFlags+1
- .4byte gUnknown_Debug_083C0CAD, TomomichiDebugMenu_ControlWorks+1
-
-gUnknown_Debug_083C0CF4:: @ 0x83C0CF4
- .string "Contest$"
-
-gUnknown_Debug_083C0CFC:: @ 0x83C0CFC
- .string "Pokémon No.$"
-
-gUnknown_Debug_083C0D08:: @ 0x83C0D08
- .string "ID rnd. digit$"
-
-gUnknown_Debug_083C0D16:: @ 0x83C0D16
- .string "Contest Type$"
-
-gUnknown_Debug_083C0D23:: @ 0x83C0D23
- .string "Poké Art$"
-
- .align 2
-gUnknown_Debug_083C0D2C:: @ 0x83C0D2C
- .4byte gUnknown_Debug_083C0CFC, TomomichiDebugMenu_Config+1
- .4byte gUnknown_Debug_083C0D08, TomomichiDebugMenu_Config+1
- .4byte gUnknown_Debug_083C0D16, TomomichiDebugMenu_Config+1
- .4byte gUnknown_Debug_083C0D23, TomomichiDebugMenu_ContestGraphics_Show+1
-
gUnknown_Debug_083C0D4C:: @ 0x83C0D4C
.string "Art Mus.$"
diff --git a/ld_script.txt b/ld_script.txt
index d66631d62..3887d59e7 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -560,6 +560,7 @@ SECTIONS {
src/field/field_screen_effect.o(.rodata);
src/battle/battle_setup.o(.rodata);
src/engine/cable_club.o(.rodata);
+ src/debug/tomomichi_debug_menu.o(.rodata);
data/debug_menu_tomomichi.o(.rodata);
data/debug_menu_nohara.o(.rodata);
src/debug/mori_debug_menu.o(.rodata);
diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c
index c3616797e..143989c66 100644
--- a/src/debug/tomomichi_debug_menu.c
+++ b/src/debug/tomomichi_debug_menu.c
@@ -1,11 +1,17 @@
#if DEBUG
#include "global.h"
+#include "constants/songs.h"
+#include "overworld.h"
+#include "menu.h"
+#include "start_menu.h"
+#include "main.h"
+#include "sound.h"
// These should be static, uninitialized once it gets decompiled.
#define BSS_DATA __attribute__((section(".bss")))
-BSS_DATA u8 gDebug_03000700[4] = {0};
-BSS_DATA u8 gDebug_03000704[4] = {0};
-BSS_DATA u8 gDebug_03000708[4] = {0};
+BSS_DATA u16 gDebug_03000700 = 0;
+BSS_DATA u32 gDebug_03000704 = 0;
+BSS_DATA u32 gDebug_03000708 = 0;
BSS_DATA u8 gDebug_0300070C = 0;
BSS_DATA u8 gDebug_0300070D = 0;
BSS_DATA u8 gDebug_0300070E = 0;
@@ -17,4 +23,110 @@ BSS_DATA u8 gDebug_0300071F = 0;
BSS_DATA u8 gDebug_03000720 = 0;
BSS_DATA u8 gDebug_03000721 = 0;
+bool8 debug_sub_808B874(void);
+bool8 debug_sub_808B8C8(void);
+bool8 TomomichiDebugMenu_ContestGraphics(void);
+bool8 TomomichiDebugMenu_ArtMusGraphics(void);
+bool8 TomomichiDebugMenu_PreviewData(void);
+bool8 TomomichiDebugMenu_TrickHouse(void);
+bool8 TomomichiDebugMenu_ControlEvents(void);
+bool8 TomomichiDebugMenu_ControlFlags(void);
+bool8 TomomichiDebugMenu_ControlWorks(void);
+bool8 TomomichiDebugMenu_Config(void);
+bool8 TomomichiDebugMenu_ContestGraphics_Show(void);
+bool8 debug_sub_808BC48(void);
+
+const u8 gUnknown_Debug_083C0C54[] = _("Contest graphics");
+const u8 gUnknown_Debug_083C0C65[] = _("Art Mus. graphics");
+const u8 gUnknown_Debug_083C0C77[] = _("Preview data");
+const u8 gUnknown_Debug_083C0C84[] = _("TRICK HOUSE");
+const u8 gUnknown_Debug_083C0C90[] = _("Control events");
+const u8 gUnknown_Debug_083C0C9F[] = _("Control flags");
+const u8 gUnknown_Debug_083C0CAD[] = _("Control WORK");
+
+const struct MenuAction gUnknown_Debug_083C0CBA[] = {
+ {gUnknown_Debug_083C0C54, TomomichiDebugMenu_ContestGraphics},
+ {gUnknown_Debug_083C0C65, TomomichiDebugMenu_ArtMusGraphics},
+ {gUnknown_Debug_083C0C77, TomomichiDebugMenu_PreviewData},
+ {gUnknown_Debug_083C0C84, TomomichiDebugMenu_TrickHouse},
+ {gUnknown_Debug_083C0C90, TomomichiDebugMenu_ControlEvents},
+ {gUnknown_Debug_083C0C9F, TomomichiDebugMenu_ControlFlags},
+ {gUnknown_Debug_083C0CAD, TomomichiDebugMenu_ControlWorks},
+};
+
+const u8 gUnknown_Debug_083C0CF4[] = _("Contest");
+
+const u8 gUnknown_Debug_083C0CFC[] = _("Pokémon No.");
+const u8 gUnknown_Debug_083C0D08[] = _("ID rnd. digit");
+const u8 gUnknown_Debug_083C0D16[] = _("Contest Type");
+const u8 gUnknown_Debug_083C0D23[] = _("Poké Art");
+
+const struct MenuAction gUnknown_Debug_083C0D2C[] = {
+ {gUnknown_Debug_083C0CFC, TomomichiDebugMenu_Config},
+ {gUnknown_Debug_083C0D08, TomomichiDebugMenu_Config},
+ {gUnknown_Debug_083C0D16, TomomichiDebugMenu_Config},
+ {gUnknown_Debug_083C0D23, TomomichiDebugMenu_ContestGraphics_Show}
+};
+
+bool8 InitTomomichiDebugWindow(void)
+{
+ debug_sub_808B874();
+ return FALSE;
+}
+
+void debug_sub_808B868(void)
+{
+ c2_exit_to_overworld_1_continue_scripts_restart_music();
+}
+
+bool8 debug_sub_808B874(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 13, 15);
+ Menu_PrintItems(1, 1, 7, gUnknown_Debug_083C0CBA);
+ InitMenu(0, 1, 1, 7, gDebug_0300071D, 12);
+ gMenuCallback = debug_sub_808B8C8;
+ return FALSE;
+}
+
+bool8 debug_sub_808B8C8(void)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ gDebug_0300071D = Menu_MoveCursor(-1);
+ }
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ gDebug_0300071D = Menu_MoveCursor(+1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return gUnknown_Debug_083C0CBA[gDebug_0300071D].func();
+ }
+ if (gMain.newKeys & (B_BUTTON | START_BUTTON))
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 TomomichiDebugMenu_ContestGraphics(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 20, 11);
+ Menu_PrintText(gUnknown_Debug_083C0CF4, 1, 1);
+ Menu_PrintItems(2, 3, 4, gUnknown_Debug_083C0D2C);
+ InitMenu(0, 1, 3, 4, 0, 19);
+ gMenuCallback = debug_sub_808BC48;
+ gDebug_03000700 = 1;
+ gDebug_03000704 = 0x6f33;
+ gDebug_03000708 = 0;
+ gDebug_0300070C = 1;
+ return FALSE;
+}
+
#endif