diff options
Diffstat (limited to 'src/debug/start_menu_debug.c')
-rw-r--r-- | src/debug/start_menu_debug.c | 7805 |
1 files changed, 2252 insertions, 5553 deletions
diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 340ef2f17..c1f508ebc 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -2,6 +2,8 @@ #include "global.h" #include "constants/songs.h" +#include "constants/moves.h" +#include "constants/items.h" #include "battle.h" #include "debug.h" #include "link.h" @@ -16,12 +18,69 @@ #include "task.h" #include "text.h" #include "trade.h" +#include "start_menu.h" +#include "string_util.h" +#include "new_game.h" +#include "script.h" +#include "fieldmap.h" +#include "field_player_avatar.h" +#include "credits.h" +#include "event_data.h" +#include "berry.h" +#include "pokedex.h" +#include "mori_debug_menu.h" +#include "cable_club.h" +#include "field_fadetransition.h" +#include "wild_encounter.h" +#include "battle_setup.h" +#include "safari_zone.h" +#include "fldeff_cut.h" +#include "fldeff_flash.h" +#include "rom6.h" +#include "fldeff_strength.h" +#include "pokemon_menu.h" +#include "fldeff_secretpower.h" +#include "data2.h" +#include "item.h" +#include "reset_rtc_screen.h" +#include "pokeblock.h" +#include "ewram.h" +#include "gba/flash_internal.h" +#include "gba/m4a_internal.h" // berry_blender.c extern void unref_sub_80524BC(void); void debug_sub_8076BB4(u8); -void debug_sub_8077CF4(); +void debug_sub_8077CF4(u8 x, u8 y); +u8 DebugMenu_807706C(void); +u8 DebugMenu_807709C(void); +void DebugMenu_807719C(void); +void DebugMenu_80771EC(void); +void DebugMenu_8077238(void); +u8 DebugMenu_8077D78(const struct MenuAction *menuActions); +void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 width, u8 itemCount); +u8 DebugMenu_8077C14(void); +bool8 DebugMenu_8077DB4(void); +void DebugMenu_8077EAC(void); +void DebugMenu_8077F40(u8 taskId); +void DebugMenu_8077F7C(u8 taskId); +void DebugMenu_8077FFC(u8 taskId); +void DebugMenu_807806C(u8 taskId); +void DebugMenu_8078A14(u8 taskId); +void DebugMenu_8078AA4(u8 taskId); +void DebugMenu_8078B38(u8 taskId); +bool8 DebugMenu_8078C80(void); +bool8 DebugMenu_8078CA8(void); +bool8 DebugMenu_8078CE4(void); +bool8 DebugMenu_8078D30(void); +bool8 DebugMenu_8078D7C(void); +bool8 DebugMenu_8078DA4(void); +bool8 DebugMenu_8078DF0(void); +bool32 DebugMenu_8078E40(u8 a0, u8 * a1, u32 a2); +void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2); +void DebugMenu_8078F68(u8 taskId); +void DebugMenu_8079020(u8 taskId); u8 DebugMenu_Exit(void); u8 DebugMenu_OpenWatanabe(void); @@ -280,12 +339,12 @@ const u8 Str_839BD7D[] = _("へんかんが しゅうりょう しました extern const u8 Str_839BD2C[]; extern const u8 Str_839BD4C[]; -__attribute__((unused)) static u8 gUnknown_030006B8[4]; -__attribute__((unused)) static u8 gUnknown_030006BC[4]; -__attribute__((unused)) static u8 gUnknown_030006C0; -__attribute__((unused)) static u8 gUnknown_030006C1; -static const u8 *gUnknown_030006C4; -__attribute__((unused)) static u8 gUnknown_030006C8; +static u8 gUnknown_030006B8; +UNUSED static const s32 * gUnknown_030006BC; +static u8 gUnknown_030006C0; +static u8 gUnknown_030006C1; +static const u8 * gUnknown_030006C4; +static u8 gUnknown_030006C8; void debug_sub_8076AC8(u8 a) { @@ -485,5567 +544,2207 @@ void DebugMenu_8076D6C(u8 taskId) } } -__attribute__((naked)) -u8 DebugMenu_8076E18() -{ - asm( - " push {lr}\n" - " bl debug_sub_8076B4C\n" - " ldr r0, ._67 @ DebugMenu_8076D6C\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._68:\n" - " .align 2, 0\n" - "._67:\n" - " .word DebugMenu_8076D6C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076E30() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " lsl r0, r3, #0x2\n" - " add r0, r0, r3\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._73 @ gTasks\n" - " add r4, r0, r1\n" - " mov r0, #0x0\n" - " ldsh r1, [r4, r0]\n" - " cmp r1, #0x1\n" - " beq ._69 @cond_branch\n" - " cmp r1, #0x1\n" - " bgt ._70 @cond_branch\n" - " cmp r1, #0\n" - " beq ._71 @cond_branch\n" - " b ._86\n" - "._74:\n" - " .align 2, 0\n" - "._73:\n" - " .word gTasks+0x8\n" - "._70:\n" - " cmp r1, #0x2\n" - " beq ._75 @cond_branch\n" - " b ._86\n" - "._71:\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._78 @ Str_839BD5A\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " b ._77\n" - "._79:\n" - " .align 2, 0\n" - "._78:\n" - " .word Str_839BD5A\n" - "._69:\n" - " ldr r0, ._82 @ gMain\n" - " ldrh r2, [r0, #0x2e]\n" - " and r1, r1, r2\n" - " cmp r1, #0\n" - " beq ._80 @cond_branch\n" - " bl Menu_DisplayDialogueFrame\n" - " bl sub_813B79C\n" - " ldr r0, ._82 + 4 @ Str_839BD7D\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - "._77:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._86\n" - "._83:\n" - " .align 2, 0\n" - "._82:\n" - " .word gMain\n" - " .word Str_839BD7D\n" - "._80:\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._86 @cond_branch\n" - " add r0, r3, #0\n" - " bl DestroyTask\n" - " bl DoSoftReset\n" - " b ._86\n" - "._75:\n" - " ldr r0, ._87 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._86 @cond_branch\n" - " add r0, r3, #0\n" - " bl DestroyTask\n" - " bl DoSoftReset\n" - "._86:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._88:\n" - " .align 2, 0\n" - "._87:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_8076EDC() -{ - asm( - " push {lr}\n" - " bl debug_sub_8076B4C\n" - " ldr r0, ._89 @ DebugMenu_8076E30\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._90:\n" - " .align 2, 0\n" - "._89:\n" - " .word DebugMenu_8076E30+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076EF4() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xb\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r4, ._93 @ gUnknown_Debug_839BDC4\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " add r3, r4, #0\n" - " bl Menu_PrintItems\n" - " mov r5, #0x0\n" - " add r4, r4, #0x4\n" - "._92:\n" - " lsl r0, r5, #0x3\n" - " add r0, r0, r4\n" - " ldr r1, [r0]\n" - " mov r0, #0x1\n" - " and r1, r1, r0\n" - " mov r0, #0xb6\n" - " cmp r1, #0\n" - " bne ._91 @cond_branch\n" - " mov r0, #0xb5\n" - "._91:\n" - " lsl r2, r5, #0x1\n" - " add r2, r2, #0x1\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " mov r1, #0xa\n" - " bl sub_8071F60\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x7\n" - " bls ._92 @cond_branch\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x9\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " add sp, sp, #0x8\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._94:\n" - " .align 2, 0\n" - "._93:\n" - " .word gUnknown_Debug_839BDC4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076F60() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._97 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r4, r0\n" - " bne ._96 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl debug_sub_8076B68\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " b ._97\n" - "._96:\n" - " ldr r3, ._100 @ gUnknown_Debug_839BDC4\n" - " lsl r2, r2, #0x18\n" - " asr r2, r2, #0x15\n" - " add r0, r3, #4\n" - " add r0, r2, r0\n" - " ldrb r4, [r0]\n" - " ldr r0, ._100 + 4 @ gSaveBlock2\n" - " mov r1, #0x1\n" - " and r1, r1, r4\n" - " strb r1, [r0, #0x8]\n" - " add r2, r2, r3\n" - " ldr r1, [r2]\n" - " bl StringCopy\n" - " mov r0, #0x80\n" - " and r4, r4, r0\n" - " cmp r4, #0\n" - " bne ._98 @cond_branch\n" - " mov r0, #0x0\n" - " bl debug_sub_8057508\n" - " b ._99\n" - "._101:\n" - " .align 2, 0\n" - "._100:\n" - " .word gUnknown_Debug_839BDC4\n" - " .word gSaveBlock2\n" - "._98:\n" - " mov r0, #0x1\n" - " bl debug_sub_8057508\n" - "._99:\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " ldr r0, ._102 @ debug_sub_8058C00\n" - " bl SetMainCallback2\n" - "._97:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._103:\n" - " .align 2, 0\n" - "._102:\n" - " .word debug_sub_8058C00+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076FEC() -{ - asm( - " push {lr}\n" - " bl DebugMenu_8076EF4\n" - " ldr r0, ._104 @ DebugMenu_8076F60\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._105:\n" - " .align 2, 0\n" - "._104:\n" - " .word DebugMenu_8076F60+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077004() -{ - asm( - " ldr r2, ._106 @ gUnknown_030006C4\n" - " ldr r0, ._106 + 4 @ gUnknown_030006C1\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._106 + 8 @ gUnknown_Debug_839BB64\n" - " add r0, r0, r1\n" - " str r0, [r2]\n" - " bx lr\n" - "._107:\n" - " .align 2, 0\n" - "._106:\n" - " .word gUnknown_030006C4 \n" - " .word gUnknown_030006C1 \n" - " .word gUnknown_Debug_839BB64\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077020() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._109 @ gMenuCallback\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._108 @cond_branch\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - "._108:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._110:\n" - " .align 2, 0\n" - "._109:\n" - " .word gMenuCallback\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077048() -{ - asm( - " push {lr}\n" - " ldr r0, ._111 @ gMenuCallback\n" - " ldr r1, ._111 + 4 @ DebugMenu_807706C\n" - " str r1, [r0]\n" - " bl ScriptContext2_Enable\n" - " ldr r0, ._111 + 8 @ DebugMenu_8077020\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._112:\n" - " .align 2, 0\n" - "._111:\n" - " .word gMenuCallback\n" - " .word DebugMenu_807706C+1\n" - " .word DebugMenu_8077020+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807706C() -{ - asm( - " push {lr}\n" - " ldr r0, ._113 @ gWindowTemplate_81E6CE4\n" - " bl InitMenuWindow\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - " bl DebugMenu_80771EC\n" - " bl DebugMenu_8077238\n" - " ldr r1, ._113 + 4 @ gMenuCallback\n" - " ldr r0, ._113 + 8 @ DebugMenu_807709C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._114:\n" - " .align 2, 0\n" - "._113:\n" - " .word gWindowTemplate_81E6CE4\n" - " .word gMenuCallback\n" - " .word DebugMenu_807709C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807709C() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._120 @ gMain\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._115 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._120 + 4 @ gUnknown_030006C0\n" - " strb r0, [r1]\n" - "._115:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._116 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._120 + 4 @ gUnknown_030006C0\n" - " strb r0, [r1]\n" - "._116:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._117 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._120 + 8 @ gUnknown_030006C1\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._118 @cond_branch\n" - " mov r0, #0x7\n" - " b ._119\n" - "._121:\n" - " .align 2, 0\n" - "._120:\n" - " .word gMain\n" - " .word gUnknown_030006C0 \n" - " .word gUnknown_030006C1 \n" - "._118:\n" - " sub r0, r0, #0x1\n" - "._119:\n" - " strb r0, [r1]\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - "._117:\n" - " ldr r0, ._125 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._122 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._125 + 4 @ gUnknown_030006C1\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x7\n" - " bne ._123 @cond_branch\n" - " mov r0, #0x0\n" - " b ._124\n" - "._126:\n" - " .align 2, 0\n" - "._125:\n" - " .word gMain\n" - " .word gUnknown_030006C1 \n" - "._123:\n" - " add r0, r0, #0x1\n" - "._124:\n" - " strb r0, [r1]\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - "._122:\n" - " ldr r0, ._129 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._127 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._129 + 4 @ gDebug0x839B9BC\n" - " ldr r0, ._129 + 8 @ gUnknown_030006C0\n" - " ldrb r2, [r0]\n" - " ldr r0, ._129 + 12 @ gUnknown_030006C4\n" - " ldr r0, [r0]\n" - " add r0, r0, r2\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r1, r1, #0x4\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " b ._132\n" - "._130:\n" - " .align 2, 0\n" - "._129:\n" - " .word gMain\n" - " .word gDebug0x839B9BC\n" - " .word gUnknown_030006C0 \n" - " .word gUnknown_030006C4 \n" - "._127:\n" - " mov r0, #0xa\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._131 @cond_branch\n" - " mov r0, #0x0\n" - " b ._132\n" - "._131:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._132:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807719C() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xe\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._133 @ gDebug0x839B9BC\n" - " ldr r0, ._133 + 4 @ gUnknown_030006C4\n" - " ldr r0, [r0]\n" - " str r0, [sp]\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " bl Menu_PrintItemsReordered\n" - " ldr r4, ._133 + 8 @ gUnknown_030006C0\n" - " ldrb r0, [r4]\n" - " str r0, [sp]\n" - " mov r0, #0xd\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " strb r0, [r4]\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._134:\n" - " .align 2, 0\n" - "._133:\n" - " .word gDebug0x839B9BC\n" - " .word gUnknown_030006C4 \n" - " .word gUnknown_030006C0 \n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80771EC() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._135 @ gStringVar4\n" - " ldr r1, ._135 + 4 @ Str_839BE04\n" - " bl StringCopy\n" - " ldr r4, ._135 + 8 @ gSaveBlock1\n" - " mov r1, #0x4\n" - " ldsb r1, [r4, r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r1, #0x5\n" - " ldsb r1, [r4, r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0x13\n" - " mov r1, #0xc\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._135 @ gStringVar4\n" - " mov r1, #0x14\n" - " mov r2, #0xd\n" - " bl Menu_PrintText\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._136:\n" - " .align 2, 0\n" - "._135:\n" - " .word gStringVar4\n" - " .word Str_839BE04\n" - " .word gSaveBlock1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077238() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xffffffe8\n" - " ldr r1, ._139 @ Str_839BE07\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " bl memcpy\n" - " add r0, sp, #0x4\n" - " mov r9, r0\n" - " ldr r1, ._139 + 4 @ Str_839BE09\n" - " mov r2, #0x3\n" - " bl memcpy\n" - " add r1, sp, #0x8\n" - " mov sl, r1\n" - " ldr r1, ._139 + 8 @ Str_839BE0C\n" - " mov r0, sl\n" - " mov r2, #0x3\n" - " bl memcpy\n" - " mov r2, #0x0\n" - " str r2, [sp, #0x14]\n" - " add r4, sp, #0x10\n" - " mov r6, sp\n" - " add r6, r6, #0x12\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl PlayerGetDestCoords\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r6, r2]\n" - " bl MapGridGetZCoordAt\n" - " mov r8, r0\n" - " mov r0, r8\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x7\n" - " strh r0, [r4]\n" - " ldrh r0, [r6]\n" - " sub r0, r0, #0x7\n" - " strh r0, [r6]\n" - " ldr r7, ._139 + 12 @ gStringVar4\n" - " add r0, r7, #0\n" - " mov r1, sp\n" - " bl StringCopy\n" - " add r5, sp, #0xc\n" - " mov r2, #0x0\n" - " ldsh r1, [r4, r2]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " add r0, r7, #0\n" - " mov r1, r9\n" - " bl StringAppend\n" - " mov r0, #0x0\n" - " ldsh r1, [r6, r0]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " add r0, r7, #0\n" - " mov r1, sl\n" - " bl StringAppend\n" - " add r0, r5, #0\n" - " mov r1, r8\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " ldrb r0, [r7]\n" - " cmp r0, #0xff\n" - " beq ._137 @cond_branch\n" - " add r1, r7, #0\n" - "._138:\n" - " ldr r0, [sp, #0x14]\n" - " add r0, r0, #0x1\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x14]\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " bne ._138 @cond_branch\n" - "._137:\n" - " mov r0, #0x1c\n" - " ldr r1, [sp, #0x14]\n" - " sub r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x10\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._139 + 12 @ gStringVar4\n" - " mov r1, #0x1d\n" - " ldr r2, [sp, #0x14]\n" - " sub r1, r1, r2\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x18\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._140:\n" - " .align 2, 0\n" - "._139:\n" - " .word Str_839BE07\n" - " .word Str_839BE09\n" - " .word Str_839BE0C\n" - " .word gStringVar4\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_Exit() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenSogabe() -{ - asm( - " push {lr}\n" - " bl unref_sub_814A414\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenTamada() -{ - asm( - " push {lr}\n" - " bl debug_sub_8075C30\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenKagaya() -{ - asm( - " push {lr}\n" - " bl InitKagayaDebugMenu_A\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMatsuda() -{ - asm( - " push {lr}\n" - " bl unref_sub_80A9B28\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenNohara() -{ - asm( - " push {lr}\n" - " bl InitNoharaDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenWatanabe() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._141 @ InitWatanabeDebugMenu\n" - " bl SetMainCallback2\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._142:\n" - " .align 2, 0\n" - "._141:\n" - " .word InitWatanabeDebugMenu+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_EndSequenceDemo() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._143 @ sub_81439D0\n" - " bl SetMainCallback2\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._144:\n" - " .align 2, 0\n" - "._143:\n" - " .word sub_81439D0+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_HallOfFame() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl GameClear\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenSizeComparison() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSizeComparison\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_HoennNationalDex() -{ - asm( - " push {lr}\n" - " bl IsNationalPokedexEnabled\n" - " cmp r0, #0\n" - " beq ._145 @cond_branch\n" - " bl DisableNationalPokedex\n" - " b ._146\n" - "._145:\n" - " bl EnableNationalPokedex\n" - "._146:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_8077434() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x4\n" - " bhi ._165 @cond_branch\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._149 @ \n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._150:\n" - " .align 2, 0\n" - "._149:\n" - " .word ._148\n" - "._148:\n" - " .word ._151\n" - " .word ._152\n" - " .word ._153\n" - " .word ._154\n" - " .word ._155\n" - "._151:\n" - " ldr r0, ._157 @ Str_839BE0F\n" - " mov r1, #0x1\n" - " mov r2, #0x4\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0xff\n" - " mov r3, #0x0\n" - " bl debug_sub_80C2D24\n" - " b ._165\n" - "._158:\n" - " .align 2, 0\n" - "._157:\n" - " .word Str_839BE0F\n" - "._152:\n" - " ldr r0, ._160 @ Str_839BE12\n" - " mov r1, #0x2\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0x0\n" - " b ._159\n" - "._161:\n" - " .align 2, 0\n" - "._160:\n" - " .word Str_839BE12\n" - "._153:\n" - " ldr r0, ._163 @ Str_839BE16\n" - " mov r1, #0x3\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0x0\n" - " b ._162\n" - "._164:\n" - " .align 2, 0\n" - "._163:\n" - " .word Str_839BE16\n" - "._154:\n" - " ldr r0, ._166 @ Str_839BE1A\n" - " mov r1, #0x4\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0xff\n" - "._162:\n" - " mov r2, #0xff\n" - "._159:\n" - " mov r3, #0xff\n" - " bl debug_sub_80C2D24\n" - " b ._165\n" - "._167:\n" - " .align 2, 0\n" - "._166:\n" - " .word Str_839BE1A\n" - "._155:\n" - " ldr r0, ._168 @ Str_839BE1E\n" - " mov r1, #0x4\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0xff\n" - " mov r3, #0xff\n" - " bl debug_sub_80C2D24\n" - "._165:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._169:\n" - " .align 2, 0\n" - "._168:\n" - " .word Str_839BE1E\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_807750C() -{ - asm( - " push {lr}\n" - " ldr r0, ._170 @ gUnknown_Debug_839BE24\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._171:\n" - " .align 2, 0\n" - "._170:\n" - " .word gUnknown_Debug_839BE24\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_SetRamBerry() -{ - asm( - " push {lr}\n" - " ldr r0, ._172 @ gUnknown_Debug_839BE24\n" - " mov r1, #0xc\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._172 + 4 @ gMenuCallback\n" - " ldr r0, ._172 + 8 @ DebugMenu_807750C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._173:\n" - " .align 2, 0\n" - "._172:\n" - " .word gUnknown_Debug_839BE24\n" - " .word gMenuCallback\n" - " .word DebugMenu_807750C+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ToggleBGM() -{ - asm( - " push {lr}\n" - " ldr r2, ._175 @ gDisableMusic\n" - " mov r1, #0x0\n" - " ldrb r0, [r2]\n" - " cmp r0, #0\n" - " bne ._174 @cond_branch\n" - " mov r1, #0x1\n" - "._174:\n" - " strb r1, [r2]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._176:\n" - " .align 2, 0\n" - "._175:\n" - " .word gDisableMusic\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_BattleForDebug() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitBattleForDebug\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_NationalDex() -{ - asm( - " push {r4, r5, lr}\n" - " mov r4, #0x0\n" - " ldr r5, ._178 @ 0x181\n" - "._177:\n" - " add r4, r4, #0x1\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " bl GetSetPokedexFlag\n" - " add r0, r4, #0\n" - " mov r1, #0x3\n" - " bl GetSetPokedexFlag\n" - " cmp r4, r5\n" - " bls ._177 @cond_branch\n" - " ldr r1, ._178 + 4 @ gUnknown_03005CE8\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "._179:\n" - " .align 2, 0\n" - "._178:\n" - " .word 0x181\n" - " .word gUnknown_03005CE8\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_HoennDex() -{ - asm( - " push {r4, r5, lr}\n" - " mov r5, #0x0\n" - "._180:\n" - " add r5, r5, #0x1\n" - " lsl r5, r5, #0x10\n" - " lsr r5, r5, #0x10\n" - " add r0, r5, #0\n" - " bl HoennToNationalOrder\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " bl GetSetPokedexFlag\n" - " add r0, r4, #0\n" - " mov r1, #0x3\n" - " bl GetSetPokedexFlag\n" - " cmp r5, #0xc9\n" - " bls ._180 @cond_branch\n" - " ldr r1, ._181 @ gUnknown_03005CE8\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "._182:\n" - " .align 2, 0\n" - "._181:\n" - " .word gUnknown_03005CE8\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_CreatePKMN() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitCreatePokemon\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ViewPokemonGraphics() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSeePokemonGraphics\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenSeeTrainers() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSeeTrainers\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMori() -{ - asm( - " push {lr}\n" - " bl InitMoriDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenTomomichi() -{ - asm( - " push {lr}\n" - " bl InitTomomichiDebugWindow\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenAoki() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenTaya() -{ - asm( - " push {lr}\n" - " bl InitTayaDebugWindow\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenNakamura() -{ - asm( - " push {lr}\n" - " bl InitNakamuraDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenIwasawa() -{ - asm( - " push {lr}\n" - " bl debug_sub_8138CC4\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_Teleport() -{ - asm( - " push {lr}\n" - " bl Overworld_SetWarpDestToLastHealLoc\n" - " bl sub_8080E88\n" - " bl ScriptContext2_Enable\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_EditPKMN() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl NakaGenderTest\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80776B4() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r1, ._183 @ Str_839BE4C\n" - " mov r0, sp\n" - " mov r2, #0x7\n" - " bl memcpy\n" - " lsl r3, r4, #0x1\n" - " lsl r5, r4, #0x19\n" - " lsr r5, r5, #0x18\n" - " add r3, r3, #0x1\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x19\n" - " add r1, r5, #0\n" - " mov r2, #0x1d\n" - " bl Menu_BlankWindowRect\n" - " ldr r0, ._183 + 4 @ gUnknown_030006C8\n" - " ldrb r0, [r0]\n" - " ASR r0, r4\n" - " mov r1, #0x1\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, sp\n" - " mov r1, #0x19\n" - " add r2, r5, #0\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x8\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._184:\n" - " .align 2, 0\n" - "._183:\n" - " .word Str_839BE4C\n" - " .word gUnknown_030006C8 \n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077704() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xffffffec\n" - " ldr r1, ._185 @ Str_839BE53\n" - " mov r0, sp\n" - " mov r2, #0x11\n" - " bl memcpy\n" - " mov r0, #0x13\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x8\n" - " bl Menu_BlankWindowRect\n" - " mov r0, sp\n" - " mov r1, #0x15\n" - " mov r2, #0x0\n" - " bl Menu_PrintText\n" - " ldr r2, ._185 + 4 @ gUnknown_030006C8\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x13\n" - " ldrh r0, [r0]\n" - " lsr r0, r0, #0x8\n" - " mov r1, #0xf\n" - " and r0, r0, r1\n" - " strb r0, [r2]\n" - " mov r0, #0x0\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x1\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x2\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x3\n" - " bl DebugMenu_80776B4\n" - " add sp, sp, #0x14\n" - " pop {r0}\n" - " bx r0\n" - "._186:\n" - " .align 2, 0\n" - "._185:\n" - " .word Str_839BE53\n" - " .word gUnknown_030006C8 \n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_8077760() -{ - asm( - " push {r4, r5, lr}\n" - " ldr r2, ._190 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " add r5, r2, #0\n" - " cmp r0, #0\n" - " beq ._187 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._190 + 4 @ gUnknown_030006B8\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._188 @cond_branch\n" - " sub r0, r0, #0x1\n" - " b ._189\n" - "._191:\n" - " .align 2, 0\n" - "._190:\n" - " .word gMain\n" - " .word gUnknown_030006B8 \n" - "._188:\n" - " mov r0, #0x3\n" - "._189:\n" - " strb r0, [r1]\n" - "._187:\n" - " ldrh r1, [r5, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._192 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._195 @ gUnknown_030006B8\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x3\n" - " beq ._193 @cond_branch\n" - " add r0, r0, #0x1\n" - " b ._194\n" - "._196:\n" - " .align 2, 0\n" - "._195:\n" - " .word gUnknown_030006B8 \n" - "._193:\n" - " mov r0, #0x0\n" - "._194:\n" - " strb r0, [r1]\n" - "._192:\n" - " ldrh r1, [r5, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._197 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r4, ._201 @ gUnknown_030006C8\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " LSL r1, r0\n" - " ldrb r0, [r4]\n" - " eor r1, r1, r0\n" - " strb r1, [r4]\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_80776B4\n" - "._197:\n" - " ldrh r2, [r5, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " bne ._198 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._199 @cond_branch\n" - "._198:\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x13\n" - " ldrh r0, [r2]\n" - " ldr r1, ._201 + 4 @ 0xf0ff\n" - " and r1, r1, r0\n" - " ldr r0, ._201 @ gUnknown_030006C8\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x8\n" - " add r1, r1, r0\n" - " strh r1, [r2]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._200\n" - "._202:\n" - " .align 2, 0\n" - "._201:\n" - " .word gUnknown_030006C8 \n" - " .word 0xf0ff\n" - "._199:\n" - " mov r0, #0x0\n" - "._200:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_SwitchBG() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " bl DebugMenu_8077704\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x6\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x14\n" - " mov r2, #0x0\n" - " mov r3, #0x4\n" - " bl InitMenu\n" - " ldr r1, ._203 @ gMenuCallback\n" - " ldr r0, ._203 + 4 @ DebugMenu_8077760\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._204:\n" - " .align 2, 0\n" - "._203:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077760+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807786C() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r1, ._205 @ Str_839BE64\n" - " mov r0, sp\n" - " mov r2, #0x7\n" - " bl memcpy\n" - " mov r0, #0x19\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x3\n" - " bl Menu_DrawStdWindowFrame\n" - " lsl r0, r4, #0x1\n" - " add r0, r0, r4\n" - " add r0, r0, sp\n" - " mov r1, #0x1a\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._206:\n" - " .align 2, 0\n" - "._205:\n" - " .word Str_839BE64\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80778A8() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._211 @ gMain\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._207 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r2, ._211 + 4 @ sWildEncountersDisabled\n" - " ldrb r0, [r2]\n" - " mov r1, #0x1\n" - " eor r0, r0, r1\n" - " strb r0, [r2]\n" - " ldrb r0, [r2]\n" - " bl DebugMenu_807786C\n" - "._207:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._208 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._209 @cond_branch\n" - "._208:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._210\n" - "._212:\n" - " .align 2, 0\n" - "._211:\n" - " .word gMain\n" - " .word sWildEncountersDisabled\n" - "._209:\n" - " mov r0, #0x0\n" - "._210:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ControlEncounter() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._213 @ sWildEncountersDisabled\n" - " ldrb r0, [r0]\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._213 + 4 @ gMenuCallback\n" - " ldr r0, ._213 + 8 @ DebugMenu_80778A8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._214:\n" - " .align 2, 0\n" - "._213:\n" - " .word sWildEncountersDisabled\n" - " .word gMenuCallback\n" - " .word DebugMenu_80778A8+1\n" - "\n" - ); -} - -__attribute__((naked)) +u8 DebugMenu_8076E18(void) +{ + debug_sub_8076B4C(); + CreateTask(DebugMenu_8076D6C, 10); + return 0; +} + +void DebugMenu_8076E30(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839BD5A, 2, 15); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + Menu_DisplayDialogueFrame(); + sub_813B79C(); + Menu_PrintText(Str_839BD7D, 2, 15); + PlaySE(SE_PINPON); + data[0]++; + } + else if (gMain.newKeys & B_BUTTON) + { + DestroyTask(taskId); + DoSoftReset(); // noreturn + } + break; + case 2: + if (gMain.newKeys & A_BUTTON) + { + DestroyTask(taskId); + DoSoftReset(); // noreturn + } + break; + } +} + +u8 DebugMenu_8076EDC(void) +{ + debug_sub_8076B4C(); + CreateTask(DebugMenu_8076E30, 10); + return 0; +} + +const u8 Str_839BD90[] = _("ジュンイチ"); +const u8 Str_839BD96[] = _("ダイゴロウ"); +const u8 Str_839BD9C[] = _("テツジ"); +const u8 Str_839BDA0[] = _("バレンシア"); +const u8 Str_839BDA6[] = _("ハルコマチ"); +const u8 Str_839BDAC[] = _("RAYMOND"); +const u8 Str_839BDB4[] = _("TIFFANY"); +const u8 Str_839BDBC[] = _("くまxちえ"); + +const struct { + const u8 * text; + u32 flags; +} gUnknown_Debug_839BDC4[] = { + {Str_839BD90, 0x0}, + {Str_839BD96, 0x0}, + {Str_839BDA0, 0x1}, + {Str_839BDA6, 0x1}, + {Str_839BDAC, 0x80}, + {Str_839BDB4, 0x81}, + {Str_839BD9C, 0x0}, + {Str_839BDBC, 0x1} +}; + +void DebugMenu_8076EF4(void) +{ + u8 i; + + Menu_DrawStdWindowFrame(0, 0, 11, 17); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), gUnknown_Debug_839BDC4); + for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_839BDC4); i++) + { + sub_8071F60((gUnknown_Debug_839BDC4[i].flags & 1) == MALE ? CHAR_MALE : CHAR_FEMALE, 10, 2 * i + 1); + } + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), 0, 9); +} + +void DebugMenu_8076F60(u8 taskId) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + switch (input) + { + case -2: + break; + case -1: + Menu_EraseScreen(); + debug_sub_8076B68(); + DestroyTask(taskId); + break; + default: + { + u8 flags = gUnknown_Debug_839BDC4[cursorPos].flags; + gSaveBlock2.playerGender = flags & 1; + StringCopy(gSaveBlock2.playerName, gUnknown_Debug_839BDC4[cursorPos].text); + if ((flags & 0x80) == 0) + debug_sub_8057508(FALSE); + else + debug_sub_8057508(TRUE); + DestroyTask(taskId); + SetMainCallback2(debug_sub_8058C00); + break; + } + } +} + +void DebugMenu_8076FEC(void) +{ + DebugMenu_8076EF4(); + CreateTask(DebugMenu_8076F60, 10); +} + +void DebugMenu_8077004(void) +{ + gUnknown_030006C4 = gUnknown_Debug_839BB64 + gUnknown_030006C1 * 8; +} + +void DebugMenu_8077020(u8 taskId) +{ + if (gMenuCallback() == TRUE) + DestroyTask(taskId); +} + +void DebugMenu_8077048(void) +{ + gMenuCallback = DebugMenu_807706C; + ScriptContext2_Enable(); + CreateTask(DebugMenu_8077020, 80); +} + +u8 DebugMenu_807706C(void) +{ + InitMenuWindow(&gWindowTemplate_81E6CE4); + DebugMenu_8077004(); + DebugMenu_807719C(); + DebugMenu_80771EC(); + DebugMenu_8077238(); + gMenuCallback = DebugMenu_807709C; + return FALSE; +} + +u8 DebugMenu_807709C(void) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gUnknown_030006C0 = Menu_MoveCursor(-1); + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gUnknown_030006C0 = Menu_MoveCursor(+1); + } + if (gMain.newKeys & DPAD_LEFT) + { + PlaySE(SE_SELECT); + if (gUnknown_030006C1 == 0) + gUnknown_030006C1 = 7; + else + gUnknown_030006C1--; + DebugMenu_8077004(); + DebugMenu_807719C(); + } + if (gMain.newKeys & DPAD_RIGHT) + { + PlaySE(SE_SELECT); + if (gUnknown_030006C1 == 7) + gUnknown_030006C1 = 0; + else + gUnknown_030006C1++; + DebugMenu_8077004(); + DebugMenu_807719C(); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + return gDebug0x839B9BC[gUnknown_030006C4[gUnknown_030006C0]].func(); + } + if (gMain.newKeys & (B_BUTTON | START_BUTTON)) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +void DebugMenu_807719C(void) +{ + Menu_DrawStdWindowFrame(0, 0, 14, 17); + Menu_PrintItemsReordered(1, 1, 8, gDebug0x839B9BC, gUnknown_030006C4); + gUnknown_030006C0 = InitMenu(0, 1, 1, 8, gUnknown_030006C0, 13); +} + +const u8 Str_839BE04[] = _("ID"); + +void DebugMenu_80771EC(void) +{ + u8 * buf = gStringVar4; + buf = StringCopy(buf, Str_839BE04); + buf = ConvertIntToDecimalStringN(buf, gSaveBlock1.location.mapGroup, STR_CONV_MODE_RIGHT_ALIGN, 3); + buf = ConvertIntToDecimalStringN(buf, gSaveBlock1.location.mapNum, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_DrawStdWindowFrame(19, 12, 29, 15); + Menu_PrintText(gStringVar4, 20, 13); +} + +void DebugMenu_8077238(void) +{ + u8 sp00[] = _("X"); + u8 sp04[] = _(" Y"); + u8 sp08[] = _(" H"); + u8 sp0c[4]; + + s16 x; + s16 y; + u8 z; + u16 sp14 = 0; + + PlayerGetDestCoords(&x, &y); + z = MapGridGetZCoordAt(x, y); + x -= 7; + y -= 7; + + StringCopy(gStringVar4, sp00); + ConvertIntToDecimalStringN(sp0c, x, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, sp0c); + StringAppend(gStringVar4, sp04); + ConvertIntToDecimalStringN(sp0c, y, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, sp0c); + StringAppend(gStringVar4, sp08); + ConvertIntToDecimalStringN(sp0c, z, STR_CONV_MODE_LEFT_ALIGN, 2); + StringAppend(gStringVar4, sp0c); + + for (sp14 = 0; gStringVar4[sp14] != EOS; sp14++) + ; + + Menu_DrawStdWindowFrame(28 - sp14, 16, 29, 19); + Menu_PrintText(gStringVar4, 29 - sp14, 17); +} + +u8 DebugMenu_Exit(void) +{ + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_OpenSogabe(void) +{ + return unref_sub_814A414(); +} + +u8 DebugMenu_OpenTamada(void) +{ + return debug_sub_8075C30(); +} + +u8 DebugMenu_OpenKagaya(void) +{ + return InitKagayaDebugMenu_A(); +} + +u8 DebugMenu_OpenMatsuda(void) +{ + return unref_sub_80A9B28(); +} + +u8 DebugMenu_OpenNohara(void) +{ + return InitNoharaDebugMenu(); +} + +u8 DebugMenu_OpenWatanabe(void) +{ + CloseMenu(); + SetMainCallback2(InitWatanabeDebugMenu); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_EndSequenceDemo(void) +{ + CloseMenu(); + SetMainCallback2(sub_81439D0); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_HallOfFame(void) +{ + CloseMenu(); + GameClear(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenSizeComparison(void) +{ + CloseMenu(); + InitSizeComparison(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_HoennNationalDex(void) +{ + if (IsNationalPokedexEnabled()) + DisableNationalPokedex(); + else + EnableNationalPokedex(); + CloseMenu(); + return TRUE; +} + +const u8 Str_839BE0F[] = _("HP"); +const u8 Str_839BE12[] = _("PAR"); +const u8 Str_839BE16[] = _("SLP"); +const u8 Str_839BE1A[] = _("PSN"); +const u8 Str_839BE1E[] = _("ウマイ"); + +u8 DebugMenu_8077434(void) +{ + switch (Menu_GetCursorPos()) + { + case 0: + debug_sub_80C2C18(Str_839BE0F, 1, 4); + debug_sub_80C2D24(0xff, 0xff, 0xff, 0, 0xff, 0xff); + break; + case 1: + debug_sub_80C2C18(Str_839BE12, 2, 0); + debug_sub_80C2D24(0xff, 0xff, 0, 0xff, 0xff, 0xff); + break; + case 2: + debug_sub_80C2C18(Str_839BE16, 3, 0); + debug_sub_80C2D24(0xff, 0, 0xff, 0xff, 0xff, 0xff); + break; + case 3: + debug_sub_80C2C18(Str_839BE1A, 4, 0); + debug_sub_80C2D24(0, 0xff, 0xff, 0xff, 0xff, 0xff); + break; + case 4: + debug_sub_80C2C18(Str_839BE1E, 4, 0); + debug_sub_80C2D24(0xff, 0xff, 0xff, 0xff, 0xff, 0xff); + break; + } + CloseMenu(); + return TRUE; +} + +const struct MenuAction gUnknown_Debug_839BE24[] = { + {Str_839BE0F, DebugMenu_8077434}, + {Str_839BE12, DebugMenu_8077434}, + {Str_839BE16, DebugMenu_8077434}, + {Str_839BE1A, DebugMenu_8077434}, + {Str_839BE1E, DebugMenu_8077434} +}; + +u8 DebugMenu_807750C(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BE24); +} + +u8 DebugMenu_SetRamBerry(void) +{ + DebugMenu_8077D24(gUnknown_Debug_839BE24, 12, ARRAY_COUNT(gUnknown_Debug_839BE24)); + gMenuCallback = DebugMenu_807750C; + return FALSE; +} + +u8 DebugMenu_ToggleBGM(void) +{ + gDisableMusic = gDisableMusic ? FALSE : TRUE; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_BattleForDebug(void) +{ + CloseMenu(); + InitBattleForDebug(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_NationalDex(void) +{ + u16 i; + + for (i = 0; i < 386; i++) + { + GetSetPokedexFlag(i + 1, 2); + GetSetPokedexFlag(i + 1, 3); + } + gUnknown_03005CE8 = TRUE; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_HoennDex(void) +{ + u16 i; + + for (i = 0; i < 202; i++) + { + u16 nati = HoennToNationalOrder(i + 1); + GetSetPokedexFlag(nati, 2); + GetSetPokedexFlag(nati, 3); + } + gUnknown_03005CE8 = TRUE; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_CreatePKMN(void) +{ + CloseMenu(); + InitCreatePokemon(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_ViewPokemonGraphics(void) +{ + CloseMenu(); + InitSeePokemonGraphics(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenSeeTrainers(void) +{ + CloseMenu(); + InitSeeTrainers(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenMori(void) +{ + return InitMoriDebugMenu(); +} + +u8 DebugMenu_OpenTomomichi(void) +{ + return InitTomomichiDebugWindow(); +} + +u8 DebugMenu_OpenAoki(void) +{ + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_OpenTaya(void) +{ + return InitTayaDebugWindow(); +} + +u8 DebugMenu_OpenNakamura(void) +{ + return InitNakamuraDebugMenu(); +} + +u8 DebugMenu_OpenIwasawa(void) +{ + return debug_sub_8138CC4(); +} + +u8 DebugMenu_Teleport(void) +{ + Overworld_SetWarpDestToLastHealLoc(); + sub_8080E88(); + ScriptContext2_Enable(); + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_EditPKMN(void) +{ + Menu_EraseScreen(); + NakaGenderTest(); + return FALSE; +} + +void DebugMenu_80776B4(u8 bgNum) +{ + u8 sp00[] = __("OFF$" + "ON$"); + Menu_BlankWindowRect(25, bgNum * 2, 29, bgNum * 2 + 1); + Menu_PrintText(sp00 + 4 * ((gUnknown_030006C8 >> bgNum) & 1), 25, bgNum * 2); +} + +void DebugMenu_8077704(void) +{ + u8 sp00[] = _("BG0\n" + "BG1\n" + "BG2\n" + "BG3\n"); + Menu_BlankWindowRect(19, 0, 29, 8); + Menu_PrintText(sp00, 21, 0); + gUnknown_030006C8 = (REG_DISPCNT >> 8) & 0x0F; + DebugMenu_80776B4(0); + DebugMenu_80776B4(1); + DebugMenu_80776B4(2); + DebugMenu_80776B4(3); +} + +u8 DebugMenu_8077760(void) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(-1); + if (gUnknown_030006B8 != 0) + gUnknown_030006B8--; + else + gUnknown_030006B8 = 3; + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(+1); + if (gUnknown_030006B8 != 3) + gUnknown_030006B8++; + else + gUnknown_030006B8 = 0; + } + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + gUnknown_030006C8 ^= (1 << Menu_GetCursorPos()); + DebugMenu_80776B4(Menu_GetCursorPos()); + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + REG_DISPCNT = (REG_DISPCNT & 0xF0FF) + (gUnknown_030006C8 << 8); + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_SwitchBG(void) +{ + Menu_EraseScreen(); + DebugMenu_8077704(); + InitMenu(0, 20, 0, 4, 0, 6); + gMenuCallback = DebugMenu_8077760; + return FALSE; +} + +void DebugMenu_807786C(u8 a0) +{ + u8 sp00[] = __("ON$" + "OFF$"); + + Menu_DrawStdWindowFrame(25, 0, 29, 3); + Menu_PrintText(sp00 + 3 * a0, 26, 1); +} + +u8 DebugMenu_80778A8(void) +{ + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + gWildEncountersDisabled ^= 1; + DebugMenu_807786C(gWildEncountersDisabled); + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_ControlEncounter(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(gWildEncountersDisabled); + gMenuCallback = DebugMenu_80778A8; + return FALSE; +} + u8 DebugMenu_UseHM() { - asm( - " ldr r1, ._215 @ gMenuCallback\n" - " ldr r0, ._215 + 4 @ DebugMenu_8077C14\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " bx lr\n" - "._216:\n" - " .align 2, 0\n" - "._215:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077C14+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077934() -{ - asm( - " push {lr}\n" - " mov r1, #0x0\n" - " ldr r3, ._218 @ gSaveBlock1\n" - " mov r2, #0x1\n" - "._217:\n" - " add r0, r1, r3\n" - " strb r2, [r0]\n" - " add r1, r1, #0x1\n" - " cmp r1, #0x63\n" - " bls ._217 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._219:\n" - " .align 2, 0\n" - "._218:\n" - " .word gSaveBlock1+0x97a\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077954() -{ - asm( - " push {lr}\n" - " mov r1, #0x0\n" - " ldr r3, ._222 @ gSaveBlock1\n" - " mov r2, #0x0\n" - "._221:\n" - " add r0, r1, r3\n" - " strb r2, [r0]\n" - " add r1, r1, #0x1\n" - " cmp r1, #0x63\n" - " bls ._221 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._223:\n" - " .align 2, 0\n" - "._222:\n" - " .word gSaveBlock1+0x97a\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077974() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r1, ._226 @ gSaveBlock1\n" - " mov r0, #0x4\n" - " ldsb r0, [r1, r0]\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " ldrb r1, [r1, #0x5]\n" - " lsl r1, r1, #0x18\n" - " asr r1, r1, #0x18\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " bl IsRematchTrainerIn\n" - " cmp r0, #0\n" - " beq ._224 @cond_branch\n" - " ldr r0, ._226 + 4 @ gStringVar1\n" - " ldr r1, ._226 + 8 @ Str_839BE8D\n" - " bl StringCopy\n" - " b ._225\n" - "._227:\n" - " .align 2, 0\n" - "._226:\n" - " .word gSaveBlock1\n" - " .word gStringVar1\n" - " .word Str_839BE8D\n" - "._224:\n" - " ldr r0, ._230 @ gStringVar1\n" - " ldr r1, ._230 + 4 @ Str_839BE90\n" - " bl StringCopy\n" - "._225:\n" - " ldr r1, ._230 + 8 @ gSaveBlock1\n" - " mov r0, #0x4\n" - " ldsb r0, [r1, r0]\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " ldrb r1, [r1, #0x5]\n" - " lsl r1, r1, #0x18\n" - " asr r1, r1, #0x18\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " bl DoesSomeoneWantRematchIn\n" - " cmp r0, #0\n" - " beq ._228 @cond_branch\n" - " ldr r0, ._230 + 12 @ gStringVar2\n" - " ldr r1, ._230 + 16 @ Str_839BE8D\n" - " bl StringCopy\n" - " b ._229\n" - "._231:\n" - " .align 2, 0\n" - "._230:\n" - " .word gStringVar1\n" - " .word Str_839BE90\n" - " .word gSaveBlock1\n" - " .word gStringVar2\n" - " .word Str_839BE8D\n" - "._228:\n" - " ldr r0, ._232 @ gStringVar2\n" - " ldr r1, ._232 + 4 @ Str_839BE90\n" - " bl StringCopy\n" - "._229:\n" - " ldr r0, ._232 + 8 @ Str_839BE6B\n" - " bl sub_8071F40\n" - " ldr r1, ._232 + 12 @ gMenuCallback\n" - " ldr r0, ._232 + 16 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._233:\n" - " .align 2, 0\n" - "._232:\n" - " .word gStringVar2\n" - " .word Str_839BE90\n" - " .word Str_839BE6B\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A20() -{ - asm( - " push {lr}\n" - " ldr r0, ._234 @ gSaveBlock1\n" - " ldr r1, ._234 + 4 @ 0x978\n" - " add r0, r0, r1\n" - " mov r1, #0xff\n" - " strh r1, [r0]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._235:\n" - " .align 2, 0\n" - "._234:\n" - " .word gSaveBlock1\n" - " .word 0x978\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A40() -{ - asm( - " push {lr}\n" - " ldr r0, ._236 @ gSaveBlock1\n" - " ldr r1, ._236 + 4 @ 0x978\n" - " add r0, r0, r1\n" - " mov r1, #0x0\n" - " strh r1, [r0]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._237:\n" - " .align 2, 0\n" - "._236:\n" - " .word gSaveBlock1\n" - " .word 0x978\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A60() -{ - asm( - " push {lr}\n" - " ldr r0, ._238 @ gUnknown_Debug_839BEE4\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._239:\n" - " .align 2, 0\n" - "._238:\n" - " .word gUnknown_Debug_839BEE4\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_RematchTrainers() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._240 @ gUnknown_Debug_839BEE4\n" - " mov r1, #0xd\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._240 + 4 @ gMenuCallback\n" - " ldr r0, ._240 + 8 @ DebugMenu_8077A60\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._241:\n" - " .align 2, 0\n" - "._240:\n" - " .word gUnknown_Debug_839BEE4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077A60+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A9C() -{ - asm( - " push {lr}\n" - " ldr r1, ._242 @ gNumSafariBalls\n" - " mov r0, #0x1e\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._243:\n" - " .align 2, 0\n" - "._242:\n" - " .word gNumSafariBalls\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077AB4() -{ - asm( - " push {lr}\n" - " ldr r1, ._244 @ gNumSafariBalls\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._245:\n" - " .align 2, 0\n" - "._244:\n" - " .word gNumSafariBalls\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077ACC() -{ - asm( - " push {lr}\n" - " ldr r1, ._246 @ gSafariZoneStepCounter\n" - " mov r2, #0xfa\n" - " lsl r2, r2, #0x1\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._247:\n" - " .align 2, 0\n" - "._246:\n" - " .word gSafariZoneStepCounter\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077AE8() -{ - asm( - " push {lr}\n" - " ldr r1, ._248 @ gSafariZoneStepCounter\n" - " mov r0, #0x1\n" - " strh r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._249:\n" - " .align 2, 0\n" - "._248:\n" - " .word gSafariZoneStepCounter\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077B00() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl unref_sub_80C853C\n" - " cmp r0, #0\n" - " beq ._250 @cond_branch\n" - " ldr r0, ._252 @ Str_839BF14\n" - " bl sub_8071F40\n" - " b ._251\n" - "._253:\n" - " .align 2, 0\n" - "._252:\n" - " .word Str_839BF14\n" - "._250:\n" - " ldr r0, ._254 @ Str_839BF1F\n" - " bl sub_8071F40\n" - "._251:\n" - " ldr r1, ._254 + 4 @ gMenuCallback\n" - " ldr r0, ._254 + 8 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._255:\n" - " .align 2, 0\n" - "._254:\n" - " .word Str_839BF1F\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077B3C() -{ - asm( - " push {lr}\n" - " ldr r0, ._256 @ gUnknown_Debug_839BF6C\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._257:\n" - " .align 2, 0\n" - "._256:\n" - " .word gUnknown_Debug_839BF6C\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_Safari() -{ - asm( - " push {lr}\n" - " bl GetSafariZoneFlag\n" - " cmp r0, #0\n" - " beq ._258 @cond_branch\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._260 @ gUnknown_Debug_839BF6C\n" - " mov r1, #0xe\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r0, ._260 + 4 @ gStringVar1\n" - " ldr r1, ._260 + 8 @ gSafariZoneStepCounter\n" - " ldrh r1, [r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._260 + 12 @ Str_839BF0C\n" - " bl sub_8071F40\n" - " ldr r1, ._260 + 16 @ gMenuCallback\n" - " ldr r0, ._260 + 20 @ DebugMenu_8077B3C\n" - " str r0, [r1]\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x0\n" - " b ._259\n" - "._261:\n" - " .align 2, 0\n" - "._260:\n" - " .word gUnknown_Debug_839BF6C\n" - " .word gStringVar1\n" - " .word gSafariZoneStepCounter\n" - " .word Str_839BF0C\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077B3C+1\n" - "._258:\n" - " bl CloseMenu\n" - " mov r0, #0x16\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - "._259:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BB4() -{ - asm( - " push {lr}\n" - " bl debug_sub_80AFEE4\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BC0() -{ - asm( - " push {lr}\n" - " bl debug_sub_8122080\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BCC() -{ - asm( - " push {lr}\n" - " bl debug_sub_8120968\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BD8() -{ - asm( - " push {lr}\n" - " bl debug_sub_8130318\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BE4() -{ - asm( - " push {lr}\n" - " bl debug_sub_80986AC\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BF4() -{ - asm( - " push {lr}\n" - " bl debug_sub_80D93F4\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077C00() -{ - asm( - " push {lr}\n" - " ldr r0, ._262 @ gUnknown_Debug_839BF94\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._263:\n" - " .align 2, 0\n" - "._262:\n" - " .word gUnknown_Debug_839BF94\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077C14() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._264 @ gUnknown_Debug_839BF94\n" - " mov r1, #0xa\n" - " mov r2, #0x9\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._264 + 4 @ gMenuCallback\n" - " ldr r0, ._264 + 8 @ DebugMenu_8077C00\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._265:\n" - " .align 2, 0\n" - "._264:\n" - " .word gUnknown_Debug_839BF94\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077C00+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077C3C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffffc\n" - " mov sl, r0\n" - " add r7, r1, #0\n" - " ldr r0, ._271 @ gUnknown_030006BC\n" - " ldr r1, ._271 + 4 @ gUnknown_Debug_839BFE8\n" - " str r1, [r0]\n" - " mov r1, #0x0\n" - " strb r1, [r7]\n" - " add r7, r7, #0x1\n" - " strb r1, [r7]\n" - " add r7, r7, #0x1\n" - " mov r3, #0x0\n" - " mov r8, r0\n" + gMenuCallback = DebugMenu_8077C14; + return FALSE; +} + +u8 DebugMenu_8077934(void) +{ + int i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.trainerRematches); i++) + gSaveBlock1.trainerRematches[i] = 1; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_8077954(void) +{ + int i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.trainerRematches); i++) + gSaveBlock1.trainerRematches[i] = 0; + CloseMenu(); + return TRUE; +} + +const u8 Str_839BE6B[] = _("さいせんかのうトレーナー:{STR_VAR_1}\n" + "さいせんじょうたいトレーナー:{STR_VAR_2}"); +const u8 Str_839BE8D[] = _("いる"); +const u8 Str_839BE90[] = _("いない"); + +bool8 DebugMenu_8077974(void) +{ + Menu_EraseScreen(); + if (IsRematchTrainerIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)) + StringCopy(gStringVar1, Str_839BE8D); + else + StringCopy(gStringVar1, Str_839BE90); + if (DoesSomeoneWantRematchIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)) + StringCopy(gStringVar2, Str_839BE8D); + else + StringCopy(gStringVar2, Str_839BE90); + sub_8071F40(Str_839BE6B); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; +} + +bool8 DebugMenu_8077A20(void) +{ + gSaveBlock1.trainerRematchStepCounter = 255; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077A40(void) +{ + gSaveBlock1.trainerRematchStepCounter = 0; + CloseMenu(); + return TRUE; +} + +const u8 Str_839BE94[] = _("Max num of steps"); +const u8 Str_839BEA5[] = _("Clear num of steps"); +const u8 Str_839BEB8[] = _("See trainers"); +const u8 Str_839BEC5[] = _("Flag all clear"); +const u8 Str_839BED4[] = _("Flag all set"); + +const struct MenuAction gUnknown_Debug_839BEE4[] = { + {Str_839BEB8, DebugMenu_8077974}, + {Str_839BE94, DebugMenu_8077A20}, + {Str_839BEA5, DebugMenu_8077A40}, + {Str_839BED4, DebugMenu_8077934}, + {Str_839BEC5, DebugMenu_8077954} +}; + +u8 DebugMenu_8077A60(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BEE4); +} + +u8 DebugMenu_RematchTrainers(void) +{ + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BEE4, 13, ARRAY_COUNT(gUnknown_Debug_839BEE4)); + gMenuCallback = DebugMenu_8077A60; + return FALSE; +} + +bool8 DebugMenu_8077A9C(void) +{ + gNumSafariBalls = 30; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077AB4(void) +{ + gNumSafariBalls = 1; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077ACC(void) +{ + gSafariZoneStepCounter = 500; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077AE8(void) +{ + gSafariZoneStepCounter = 1; + CloseMenu(); + return TRUE; +} + +const u8 Str_839BF0C[] = _("のこり {STR_VAR_1}ほ"); +const u8 Str_839BF14[] = _("{STR_VAR_1}\n" + "のこり {STR_VAR_2}ほ"); +const u8 Str_839BF1F[] = _("めのまえには\n" + "キューブが ありません!"); + +bool8 DebugMenu_8077B00(void) +{ + Menu_EraseScreen(); + if (unref_sub_80C853C()) + sub_8071F40(Str_839BF14); + else + sub_8071F40(Str_839BF1F); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; +} + +const u8 Str_839BF33[] = _("ほすうをのこり1にする"); +const u8 Str_839BF3F[] = _("ボールをのこり1にする"); +const u8 Str_839BF4B[] = _("キューブおきば"); +const u8 Str_839BF53[] = _("ボールをのこり30に"); +const u8 Str_839BF5E[] = _("ほすうをのこり500に"); + +const struct MenuAction gUnknown_Debug_839BF6C[] = { + {Str_839BF4B, DebugMenu_8077B00}, + {Str_839BF5E, DebugMenu_8077ACC}, + {Str_839BF33, DebugMenu_8077AE8}, + {Str_839BF53, DebugMenu_8077A9C}, + {Str_839BF3F, DebugMenu_8077AB4} +}; + +bool8 DebugMenu_8077B3C(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BF6C); +} + +u8 DebugMenu_Safari(void) +{ + if (!GetSafariZoneFlag()) + { + CloseMenu(); + PlaySE(SE_BOO); + return TRUE; + } + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BF6C, 14, ARRAY_COUNT(gUnknown_Debug_839BF6C)); + ConvertIntToDecimalStringN(gStringVar1, gSafariZoneStepCounter, STR_CONV_MODE_RIGHT_ALIGN, 3); + sub_8071F40(Str_839BF0C); + gMenuCallback = DebugMenu_8077B3C; + ScriptContext2_Enable(); + return FALSE; +} + +bool8 DebugMenu_8077BB4(void) +{ + debug_sub_80AFEE4(); + return TRUE; +} + +bool8 DebugMenu_8077BC0(void) +{ + debug_sub_8122080(); + return TRUE; +} + +bool8 DebugMenu_8077BCC(void) +{ + debug_sub_8120968(); + return TRUE; +} + +bool8 DebugMenu_8077BD8(void) +{ + debug_sub_8130318(); + return TRUE; +} + +bool8 DebugMenu_8077BE4(void) +{ + debug_sub_80986AC(); + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077BF4(void) +{ + debug_sub_80D93F4(); + return TRUE; +} + +const struct MenuAction gUnknown_Debug_839BF94[] = { + {gMoveNames[MOVE_CUT], DebugMenu_8077BB4}, + {gMoveNames[MOVE_FLASH], DebugMenu_8077BC0}, + {gMoveNames[MOVE_ROCK_SMASH], DebugMenu_8077BCC}, + {gMoveNames[MOVE_STRENGTH], DebugMenu_8077BD8}, + {gMoveNames[MOVE_SURF], debug_sub_80B0770}, + {gMoveNames[MOVE_FLY], debug_sub_80B07B0}, + {gMoveNames[MOVE_WATERFALL], DebugMenu_8077BE4}, + {gMoveNames[MOVE_DIVE], debug_sub_80B0800}, + {gMoveNames[MOVE_SECRET_POWER], DebugMenu_8077BF4} +}; + +bool8 DebugMenu_8077C00(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BF94); +} + +u8 DebugMenu_8077C14(void) +{ + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BF94, 10, ARRAY_COUNT(gUnknown_Debug_839BF94)); + gMenuCallback = DebugMenu_8077C00; + return FALSE; +} + +const u8 Str_839BFDC[] = _(" じかん ふん びょう"); + +const s32 gUnknown_Debug_839BFE8[] = { + 99, 10, 2, 23, + 99, 10, 2, 26 +}; + +#ifdef NONMATCHING +void DebugMenu_8077C3C(const char * a0, u8 * a1) +{ + // Register allocation swap + // Intended: r7 = a1, r6 = gUnknown_030006BC[2] + // Observed: r6 = a1, r7 = gUnknown_030006BC[2] + + int i; + + gUnknown_030006BC = gUnknown_Debug_839BFE8; + *a1++ = CHAR_SPACE; + *a1++ = CHAR_SPACE; + + for (i = 0; i < 2; i++, gUnknown_030006BC += 4) + { + u32 r5 = 0; + int r2; + int r4; + for (r2 = gUnknown_030006BC[1], r4 = 0; r4 < gUnknown_030006BC[2]; r4++, r2 /= 10) + r5 += (a0[gUnknown_030006BC[3] + r4] - '0') * r2; + if (gUnknown_030006BC[0] < r5) + r5 = gUnknown_030006BC[0]; + a1 = ConvertIntToDecimalStringN(a1, r5, STR_CONV_MODE_LEADING_ZEROS, gUnknown_030006BC[2]); + } + a1[0] = a0[29] - 'A' + CHAR_A; + if (a1[0] > 0xf6) + a1[0] = 0xf6; + a1[1] = EOS; +} +#else +NAKED void DebugMenu_8077C3C(const char * a0, u8 * a1) +{ + asm("\tpush\t{r4, r5, r6, r7, lr}\n" + "\tmov\tr7, sl\n" + "\tmov\tr6, r9\n" + "\tmov\tr5, r8\n" + "\tpush\t{r5, r6, r7}\n" + "\tadd\tsp, sp, #0xfffffffc\n" + "\tmov\tsl, r0\n" + "\tadd\tr7, r1, #0\n" + "\tldr\tr0, ._271 @ gUnknown_030006BC\n" + "\tldr\tr1, ._271 + 4 @ gUnknown_Debug_839BFE8\n" + "\tstr\tr1, [r0]\n" + "\tmov\tr1, #0x0\n" + "\tstrb\tr1, [r7]\n" + "\tadd\tr7, r7, #0x1\n" + "\tstrb\tr1, [r7]\n" + "\tadd\tr7, r7, #0x1\n" + "\tmov\tr3, #0x0\n" + "\tmov\tr8, r0\n" "._269:\n" - " mov r5, #0x0\n" - " ldr r1, ._271 @ gUnknown_030006BC\n" - " ldr r0, [r1]\n" - " ldr r2, [r0, #0x4]\n" - " mov r4, #0x0\n" - " ldr r1, [r0, #0x8]\n" - " add r3, r3, #0x1\n" - " mov r9, r3\n" - " cmp r5, r1\n" - " bge ._266 @cond_branch\n" - " add r3, r0, #0\n" - " add r6, r1, #0\n" + "\tmov\tr5, #0x0\n" + "\tldr\tr1, ._271 @ gUnknown_030006BC\n" + "\tldr\tr0, [r1]\n" + "\tldr\tr2, [r0, #0x4]\n" + "\tmov\tr4, #0x0\n" + "\tldr\tr1, [r0, #0x8]\n" + "\tadd\tr3, r3, #0x1\n" + "\tmov\tr9, r3\n" + "\tcmp\tr5, r1\n" + "\tbge\t._266\t@cond_branch\n" + "\tadd\tr3, r0, #0\n" + "\tadd\tr6, r1, #0\n" "._267:\n" - " ldr r0, [r3, #0xc]\n" - " add r0, r0, r4\n" - " add r0, r0, sl\n" - " ldrb r0, [r0]\n" - " sub r0, r0, #0x30\n" - " mul r0, r0, r2\n" - " add r5, r5, r0\n" - " add r4, r4, #0x1\n" - " add r0, r2, #0\n" - " mov r1, #0xa\n" - " str r3, [sp]\n" - " bl __divsi3\n" - " add r2, r0, #0\n" - " ldr r3, [sp]\n" - " cmp r4, r6\n" - " blt ._267 @cond_branch\n" + "\tldr\tr0, [r3, #0xc]\n" + "\tadd\tr0, r0, r4\n" + "\tadd r0, r0, sl\n" + "\tldrb\tr0, [r0]\n" + "\tsub\tr0, r0, #0x30\n" + "\tmul\tr0, r0, r2\n" + "\tadd\tr5, r5, r0\n" + "\tadd\tr4, r4, #0x1\n" + "\tadd\tr0, r2, #0\n" + "\tmov\tr1, #0xa\n" + "\tstr\tr3, [sp]\n" + "\tbl\t__divsi3\n" + "\tadd\tr2, r0, #0\n" + "\tldr\tr3, [sp]\n" + "\tcmp\tr4, r6\n" + "\tblt\t._267\t@cond_branch\n" "._266:\n" - " mov r0, r8\n" - " ldr r1, [r0]\n" - " ldr r0, [r1]\n" - " cmp r0, r5\n" - " bcs ._268 @cond_branch\n" - " add r5, r0, #0\n" + "\tmov\tr0, r8\n" + "\tldr\tr1, [r0]\n" + "\tldr\tr0, [r1]\n" + "\tcmp\tr0, r5\n" + "\tbcs\t._268\t@cond_branch\n" + "\tadd\tr5, r0, #0\n" "._268:\n" - " ldrb r3, [r1, #0x8]\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " mov r2, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r7, r0, #0\n" - " mov r3, r9\n" - " mov r1, r8\n" - " ldr r0, [r1]\n" - " add r0, r0, #0x10\n" - " str r0, [r1]\n" - " cmp r3, #0x1\n" - " ble ._269 @cond_branch\n" - " mov r1, sl\n" - " ldrb r0, [r1, #0x1d]\n" - " add r0, r0, #0x7a\n" - " strb r0, [r7]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0xf6\n" - " bls ._270 @cond_branch\n" - " mov r0, #0xf6\n" - " strb r0, [r7]\n" + "\tldrb\tr3, [r1, #0x8]\n" + "\tadd\tr0, r7, #0\n" + "\tadd\tr1, r5, #0\n" + "\tmov\tr2, #0x2\n" + "\tbl\tConvertIntToDecimalStringN\n" + "\tadd\tr7, r0, #0\n" + "\tmov\tr3, r9\n" + "\tmov\tr1, r8\n" + "\tldr\tr0, [r1]\n" + "\tadd\tr0, r0, #0x10\n" + "\tstr\tr0, [r1]\n" + "\tcmp\tr3, #0x1\n" + "\tble\t._269\t@cond_branch\n" + "\tmov\tr1, sl\n" + "\tldrb\tr0, [r1, #0x1d]\n" + "\tadd\tr0, r0, #0x7a\n" + "\tstrb\tr0, [r7]\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr0, r0, #0x18\n" + "\tcmp\tr0, #0xf6\n" + "\tbls\t._270\t@cond_branch\n" + "\tmov\tr0, #0xf6\n" + "\tstrb\tr0, [r7]\n" "._270:\n" - " mov r0, #0xff\n" - " strb r0, [r7, #0x1]\n" - " add sp, sp, #0x4\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" + "\tmov\tr0, #0xff\n" + "\tstrb\tr0, [r7, #0x1]\n" + "\tadd\tsp, sp, #0x4\n" + "\tpop\t{r3, r4, r5}\n" + "\tmov\tr8, r3\n" + "\tmov\tr9, r4\n" + "\tmov\tsl, r5\n" + "\tpop\t{r4, r5, r6, r7}\n" + "\tpop\t{r0}\n" + "\tbx\tr0\n" "._272:\n" - " .align 2, 0\n" + "\t.align\t2, 0\n" "._271:\n" - " .word gUnknown_030006BC \n" - " .word gUnknown_Debug_839BFE8\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8077CF4() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " ldr r0, ._273 @ BuildDateTime\n" - " ldr r6, ._273 + 4 @ gStringVar4\n" - " add r1, r6, #0\n" - " bl DebugMenu_8077C3C\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " add r2, r5, #0\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._274:\n" - " .align 2, 0\n" - "._273:\n" - " .word BuildDateTime\n" - " .word gStringVar4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077D24() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r6, r0, #0\n" - " add r4, r1, #0\n" - " add r5, r2, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " bl Menu_EraseScreen\n" - " lsl r3, r5, #0x1\n" - " add r3, r3, #0x1\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " add r2, r4, #0\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " add r2, r5, #0\n" - " add r3, r6, #0\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " sub r4, r4, #0x1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " str r4, [sp, #0x4]\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " add r3, r5, #0\n" - " bl InitMenu\n" - " add sp, sp, #0x8\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077D78() -{ - asm( - " push {r4, r5, lr}\n" - " add r5, r0, #0\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r4, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._275 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r4, r0\n" - " beq ._276 @cond_branch\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._278 @ gMenuCallback\n" - " lsl r1, r4, #0x3\n" - " add r1, r1, r5\n" - " ldr r1, [r1, #0x4]\n" - " str r1, [r0]\n" - "._275:\n" - " mov r0, #0x0\n" - " b ._277\n" - "._279:\n" - " .align 2, 0\n" - "._278:\n" - " .word gMenuCallback\n" - "._276:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._277:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077DB4() -{ - asm( - " push {lr}\n" - " ldr r0, ._282 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._280 @cond_branch\n" - " mov r0, #0x0\n" - " b ._281\n" - "._283:\n" - " .align 2, 0\n" - "._282:\n" - " .word gMain\n" - "._280:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._281:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077DD8() -{ - asm( - " push {r4, r5, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " lsl r3, r3, #0x10\n" - " lsr r3, r3, #0x10\n" - " add r1, r3, #0\n" - " mov r0, #0x80\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._284 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x1\n" - " b ._285\n" - "._284:\n" - " mov r0, #0x40\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._286 @cond_branch\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " b ._287\n" - "._286:\n" - " mov r0, #0x20\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._288 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0xa\n" - "._285:\n" - " strh r0, [r4]\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, r5\n" - " bge ._293 @cond_branch\n" - " strh r2, [r4]\n" - " b ._293\n" - "._288:\n" - " mov r0, #0x10\n" - " and r1, r1, r0\n" - " cmp r1, #0\n" - " bne ._291 @cond_branch\n" - " mov r0, #0x0\n" - " b ._292\n" - "._291:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0xa\n" - "._287:\n" - " strh r0, [r4]\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, r2\n" - " ble ._293 @cond_branch\n" - " strh r5, [r4]\n" - "._293:\n" - " mov r0, #0x1\n" - "._292:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077E40() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " ldr r0, ._297 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._294 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._295 @cond_branch\n" - "._294:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " b ._302\n" - "._298:\n" - " .align 2, 0\n" - "._297:\n" - " .word gMain\n" - "._295:\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._299 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " cmp r4, #0\n" - " beq ._300 @cond_branch\n" - " mov r0, #0x1\n" - " bl DebugMenu_807786C\n" - " mov r0, #0x0\n" - " b ._302\n" - "._300:\n" - " mov r0, #0x0\n" - " bl DebugMenu_807786C\n" - " mov r0, #0x1\n" - " b ._302\n" - "._299:\n" - " add r0, r4, #0\n" - "._302:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) + "\t.word\tgUnknown_030006BC \n" + "\t.word\tgUnknown_Debug_839BFE8\n"); +} +#endif + +void debug_sub_8077CF4(u8 x, u8 y) +{ + DebugMenu_8077C3C(BuildDateTime, gStringVar4); + Menu_PrintText(gStringVar4, x, y); +} + +void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 width, u8 itemCount) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, width, 2 * itemCount + 1); + Menu_PrintItems(1, 1, itemCount, menuAction); + InitMenu(0, 1, 1, itemCount, 0, width - 1); +} + +u8 DebugMenu_8077D78(const struct MenuAction *menuActions) +{ + s8 input = Menu_ProcessInput(); + switch (input) + { + default: + Menu_EraseScreen(); + gMenuCallback = menuActions[input].func; + return FALSE; + case -2: + return FALSE; + case -1: + CloseMenu(); + return TRUE; + } +} + +bool8 DebugMenu_8077DB4(void) +{ + if (gMain.newKeys & A_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +bool32 DebugMenu_8077DD8(s16 * a0, s32 a1, s32 a2, u16 a3) +{ + if (a3 & DPAD_DOWN) + { + *a0 -= 1; + if (*a0 < a1) + *a0 = a2; + } + else if (a3 & DPAD_UP) + { + *a0 += 1; + if (*a0 > a2) + *a0 = a1; + } + else if (a3 & DPAD_LEFT) + { + *a0 -= 10; + if (*a0 < a1) + *a0 = a2; + } + else if (a3 & DPAD_RIGHT) + { + *a0 += 10; + if (*a0 > a2) + *a0 = a1; + } + else + return FALSE; + return TRUE; +} + +int DebugMenu_8077E40(int flag) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return -1; + } + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + if (flag) + { + DebugMenu_807786C(1); + return 0; + } + else + { + DebugMenu_807786C(0); + return 1; + } + } + return flag; +} + u8 DebugMenu_MakeItems() { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl DebugMenu_8077EAC\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077EAC() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._303 @ DebugMenu_8077F40\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " ldr r1, ._303 + 4 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r1, #0x1\n" - " strh r1, [r0, #0xa]\n" - " strh r1, [r0, #0xc]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._304:\n" - " .align 2, 0\n" - "._303:\n" - " .word DebugMenu_8077F40+1\n" - " .word gTasks\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077EE0() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r6, r1, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " lsl r6, r6, #0x10\n" - " lsr r6, r6, #0x10\n" - " mov r0, #0x4\n" - " mov r1, #0x11\n" - " mov r2, #0x16\n" - " mov r3, #0x12\n" - " bl Menu_BlankWindowRect\n" - " ldr r5, ._305 @ gStringVar1\n" - " add r0, r5, #0\n" - " add r1, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r5, #0\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " bl ItemId_GetName\n" - " mov r1, #0x8\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r5, #0\n" - " add r1, r6, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r5, #0\n" - " mov r1, #0x12\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._306:\n" - " .align 2, 0\n" - "._305:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077F40() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r0, ._307 @ gTasks\n" - " add r4, r4, r0\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._307 + 4 @ gDebug0x839C008\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - " ldr r0, ._307 + 8 @ DebugMenu_8077F7C\n" - " str r0, [r4]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._308:\n" - " .align 2, 0\n" - "._307:\n" - " .word gTasks\n" - " .word gDebug0x839C008\n" - " .word DebugMenu_8077F7C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077F7C() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._311 @ gTasks\n" - " add r4, r1, r0\n" - " ldr r3, ._311 + 4 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._309 @cond_branch\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._311 + 8 @ Str_839C014\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - " ldr r0, ._311 + 12 @ DebugMenu_8077FFC\n" - " str r0, [r4]\n" - " b ._317\n" - "._312:\n" - " .align 2, 0\n" - "._311:\n" - " .word gTasks\n" - " .word gMain\n" - " .word Str_839C014\n" - " .word DebugMenu_8077FFC+1\n" - "._309:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._313 @cond_branch\n" - " ldr r0, ._315 @ DebugMenu_807806C\n" - " str r0, [r4]\n" - " b ._317\n" - "._316:\n" - " .align 2, 0\n" - "._315:\n" - " .word DebugMenu_807806C+1\n" - "._313:\n" - " add r0, r4, #0\n" - " add r0, r0, #0xa\n" - " mov r2, #0xae\n" - " lsl r2, r2, #0x1\n" - " ldrh r3, [r3, #0x30]\n" - " mov r1, #0x1\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._317 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - "._317:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077FFC() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._321 @ gTasks\n" - " add r4, r1, r0\n" - " ldr r2, ._321 + 4 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._318 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl AddBagItem\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._320 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " b ._320\n" - "._322:\n" - " .align 2, 0\n" - "._321:\n" - " .word gTasks\n" - " .word gMain\n" - "._318:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._323 @cond_branch\n" - "._320:\n" - " ldr r0, ._325 @ DebugMenu_8077F40\n" - " str r0, [r4]\n" - " b ._327\n" - "._326:\n" - " .align 2, 0\n" - "._325:\n" - " .word DebugMenu_8077F40+1\n" - "._323:\n" - " add r0, r4, #0\n" - " add r0, r0, #0xc\n" - " ldrh r3, [r2, #0x30]\n" - " mov r1, #0x1\n" - " mov r2, #0x63\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._327 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - "._327:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807806C() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " bl DebugMenu_8077048\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807808C() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff4\n" - " add r4, r0, #0\n" - " sub r0, r4, #1\n" - " cmp r0, #0xc\n" - " bls ._328 @cond_branch\n" - " mov r4, #0x1\n" - "._328:\n" - " lsl r1, r4, #0x5\n" - " ldr r0, ._331 @ gSaveBlock1\n" - " add r5, r1, r0\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x13\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._331 + 4 @ Str_839C01E\n" - " mov r1, #0x2\n" - " mov r2, #0x2\n" - " bl Menu_PrintText\n" - " mov r0, sp\n" - " add r1, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0x2\n" - " bl Menu_PrintText\n" - " ldrh r1, [r5, #0x8]\n" - " mov r0, sp\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0x4\n" - " bl Menu_PrintText\n" - " add r4, r5, #0\n" - " add r4, r4, #0xb\n" - " add r0, r4, #0\n" - " bl StringLength\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi ._329 @cond_branch\n" - " add r0, r4, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x6\n" - " bl Menu_PrintText\n" - " b ._330\n" - "._332:\n" - " .align 2, 0\n" - "._331:\n" - " .word gSaveBlock1+0x2ddc\n" - " .word Str_839C01E\n" - "._329:\n" - " ldr r0, ._335 @ Str_839C04D\n" - " mov r1, #0xb\n" - " mov r2, #0x6\n" - " bl Menu_PrintText\n" - "._330:\n" - " add r4, r5, #0\n" - " add r4, r4, #0x16\n" - " add r0, r4, #0\n" - " bl StringLength\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi ._333 @cond_branch\n" - " add r0, r4, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x8\n" - " bl Menu_PrintText\n" - " b ._334\n" - "._336:\n" - " .align 2, 0\n" - "._335:\n" - " .word Str_839C04D\n" - "._333:\n" - " ldr r0, ._337 @ Str_839C04D\n" - " mov r1, #0xb\n" - " mov r2, #0x8\n" - " bl Menu_PrintText\n" - "._334:\n" - " ldrb r1, [r5, #0xa]\n" - " mov r0, sp\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0xa\n" - " bl Menu_PrintText\n" - " ldr r1, [r5]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x8\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0xc\n" - " bl Menu_PrintText\n" - " add sp, sp, #0xc\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._338:\n" - " .align 2, 0\n" - "._337:\n" - " .word Str_839C04D\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807817C() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._340 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._339 @cond_branch\n" - " bl Menu_EraseScreen\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - "._339:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._341:\n" - " .align 2, 0\n" - "._340:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80781A8() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._344 @ gTasks\n" - " add r5, r1, r0\n" - " ldrh r1, [r5, #0x8]\n" - " mov r2, #0x8\n" - " ldsh r0, [r5, r2]\n" - " cmp r0, #0\n" - " bne ._342 @cond_branch\n" - " add r0, r1, #1\n" - " strh r0, [r5, #0x8]\n" - " b ._343\n" - "._345:\n" - " .align 2, 0\n" - "._344:\n" - " .word gTasks\n" - "._342:\n" - " ldr r2, ._348 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._346 @cond_branch\n" - " mov r1, #0x8\n" - " ldsh r0, [r5, r1]\n" - " bl DebugMenu_807808C\n" - " ldr r0, ._348 + 4 @ DebugMenu_807817C\n" - " str r0, [r5]\n" - " b ._350\n" - "._349:\n" - " .align 2, 0\n" - "._348:\n" - " .word gMain\n" - " .word DebugMenu_807817C+1\n" - "._346:\n" - " add r0, r5, #0\n" - " add r0, r0, #0x8\n" - " ldrh r1, [r2, #0x30]\n" - " mov r3, #0xc0\n" - " and r3, r3, r1\n" - " mov r1, #0x1\n" - " mov r2, #0xd\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0\n" - " beq ._350 @cond_branch\n" - "._343:\n" - " mov r0, #0x4\n" - " mov r1, #0x11\n" - " mov r2, #0x16\n" - " mov r3, #0x12\n" - " bl Menu_BlankWindowRect\n" - " ldr r4, ._351 @ gStringVar1\n" - " mov r2, #0x8\n" - " ldsh r1, [r5, r2]\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - "._350:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._352:\n" - " .align 2, 0\n" - "._351:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ViewPortraits() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._353 @ DebugMenu_80781A8\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._354:\n" - " .align 2, 0\n" - "._353:\n" - " .word DebugMenu_80781A8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078254() -{ - asm( - " push {lr}\n" - " bl DebugMenu_807808C\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_AllBadges() -{ - asm( - " push {lr}\n" - " ldr r0, ._355 @ 0x807\n" - " bl FlagSet\n" - " ldr r0, ._355 + 4 @ 0x808\n" - " bl FlagSet\n" - " ldr r0, ._355 + 8 @ 0x809\n" - " bl FlagSet\n" - " ldr r0, ._355 + 12 @ 0x80a\n" - " bl FlagSet\n" - " ldr r0, ._355 + 16 @ 0x80b\n" - " bl FlagSet\n" - " ldr r0, ._355 + 20 @ 0x80c\n" - " bl FlagSet\n" - " ldr r0, ._355 + 24 @ 0x80d\n" - " bl FlagSet\n" - " ldr r0, ._355 + 28 @ 0x80e\n" - " bl FlagSet\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._356:\n" - " .align 2, 0\n" - "._355:\n" - " .word 0x807\n" - " .word 0x808\n" - " .word 0x809\n" - " .word 0x80a\n" - " .word 0x80b\n" - " .word 0x80c\n" - " .word 0x80d\n" - " .word 0x80e\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_TimeRecords() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._357 @ debug_sub_806F9E4\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._358:\n" - " .align 2, 0\n" - "._357:\n" - " .word debug_sub_806F9E4+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_SetTime() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl debug_sub_806F99C\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80782EC() -{ - asm( - " push {lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r0, ._359 @ gStringVar1\n" - " mov r2, #0x0\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._359 + 4 @ Str_839C053\n" - " bl sub_8071F40\n" - " pop {r0}\n" - " bx r0\n" - "._360:\n" - " .align 2, 0\n" - "._359:\n" - " .word gStringVar1\n" - " .word Str_839C053\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078310() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._364 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0\n" - " beq ._361 @cond_branch\n" - " cmp r0, #0x1\n" - " beq ._362 @cond_branch\n" - " b ._375\n" - "._365:\n" - " .align 2, 0\n" - "._364:\n" - " .word gTasks+0x8\n" - "._361:\n" - " ldr r0, ._367 @ 0x4024\n" - " bl VarGet\n" - " strh r0, [r4, #0x2]\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80782EC\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._375\n" - "._368:\n" - " .align 2, 0\n" - "._367:\n" - " .word 0x4024\n" - "._362:\n" - " ldr r3, ._371 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._369 @cond_branch\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " ldr r0, ._371 + 4 @ 0x4024\n" - " bl GetVarPointer\n" - " ldrh r1, [r4, #0x2]\n" - " strh r1, [r0]\n" - " b ._370\n" - "._372:\n" - " .align 2, 0\n" - "._371:\n" - " .word gMain\n" - " .word 0x4024\n" - "._369:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._373 @cond_branch\n" - "._370:\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " b ._375\n" - "._373:\n" - " add r0, r4, #2\n" - " ldr r2, ._376 @ 0xffff\n" - " ldrh r3, [r3, #0x30]\n" - " mov r1, #0x0\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._375 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80782EC\n" - "._375:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._377:\n" - " .align 2, 0\n" - "._376:\n" - " .word 0xffff\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_MiragaIslandRND() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._378 @ DebugMenu_8078310\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._379:\n" - " .align 2, 0\n" - "._378:\n" - " .word DebugMenu_8078310+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80783C8() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._383 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._382 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r4, ._383 + 4 @ 0x804\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._381 @cond_branch\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " mov r0, #0x0\n" - " bl DebugMenu_807786C\n" - " b ._382\n" - "._384:\n" - " .align 2, 0\n" - "._383:\n" - " .word gMain\n" - " .word 0x804\n" - "._381:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - " mov r0, #0x1\n" - " bl DebugMenu_807786C\n" - "._382:\n" - " ldr r0, ._388 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._385 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._386 @cond_branch\n" - "._385:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._387\n" - "._389:\n" - " .align 2, 0\n" - "._388:\n" - " .word gMain\n" - "._386:\n" - " mov r0, #0x0\n" - "._387:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ToggleClearFlag() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._390 @ 0x804\n" - " bl FlagGet\n" - " mov r1, #0x1\n" - " eor r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._390 + 4 @ gMenuCallback\n" - " ldr r0, ._390 + 8 @ DebugMenu_80783C8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._391:\n" - " .align 2, 0\n" - "._390:\n" - " .word 0x804\n" - " .word gMenuCallback\n" - " .word DebugMenu_80783C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078464() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._396 @ 0x82a\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_8077E40\n" - " add r1, r0, #0\n" - " cmp r1, #0\n" - " beq ._392 @cond_branch\n" - " cmp r1, #0\n" - " bgt ._393 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._394 @cond_branch\n" - " b ._401\n" - "._397:\n" - " .align 2, 0\n" - "._396:\n" - " .word 0x82a\n" - "._393:\n" - " cmp r1, #0x1\n" - " beq ._398 @cond_branch\n" - " b ._401\n" - "._392:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - " b ._401\n" - "._398:\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " b ._401\n" - "._394:\n" - " mov r0, #0x1\n" - " b ._402\n" - "._401:\n" - " mov r0, #0x0\n" - "._402:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenWeatherEvents() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._404 @ 0x82a\n" - " bl FlagGet\n" - " mov r1, #0x0\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._403 @cond_branch\n" - " mov r1, #0x1\n" - "._403:\n" - " add r0, r1, #0\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._404 + 4 @ gMenuCallback\n" - " ldr r0, ._404 + 8 @ DebugMenu_8078464\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._405:\n" - " .align 2, 0\n" - "._404:\n" - " .word 0x82a\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078464+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80784E8() -{ - asm( - " push {lr}\n" - " bl IsMysteryGiftEnabled\n" - " bl DebugMenu_8077E40\n" - " add r1, r0, #0\n" - " cmp r1, #0\n" - " beq ._406 @cond_branch\n" - " cmp r1, #0\n" - " bgt ._407 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._408 @cond_branch\n" - " b ._413\n" - "._407:\n" - " cmp r1, #0x1\n" - " beq ._410 @cond_branch\n" - " b ._413\n" - "._406:\n" - " bl DisableMysteryGift\n" - " b ._413\n" - "._410:\n" - " bl EnableMysteryGift\n" - " b ._413\n" - "._408:\n" - " mov r0, #0x1\n" - " b ._414\n" - "._413:\n" - " mov r0, #0x0\n" - "._414:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMysteryEvent() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl IsMysteryGiftEnabled\n" - " mov r1, #0x0\n" - " cmp r0, #0\n" - " bne ._415 @cond_branch\n" - " mov r1, #0x1\n" - "._415:\n" - " add r0, r1, #0\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._416 @ gMenuCallback\n" - " ldr r0, ._416 + 4 @ DebugMenu_80784E8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._417:\n" - " .align 2, 0\n" - "._416:\n" - " .word gMenuCallback\n" - " .word DebugMenu_80784E8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078550() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x10\n" - " lsr r6, r0, #0x10\n" - " lsl r0, r6, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl GetGameStat\n" - " add r7, r0, #0\n" - " ldr r0, ._420 @ gStringVar1\n" - " add r1, r6, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._420 + 4 @ gStringVar2\n" - " ldr r5, ._420 + 8 @ gUnknown_Debug_839C26C\n" - " lsl r4, r6, #0x3\n" - " add r1, r5, #4\n" - " add r1, r4, r1\n" - " ldr r1, [r1]\n" - " bl StringCopy\n" - " add r4, r4, r5\n" - " ldr r0, [r4]\n" - " cmp r0, #0\n" - " bne ._418 @cond_branch\n" - " ldr r0, ._420 + 12 @ gStringVar3\n" - " ldr r1, ._420 + 16 @ Str_839C085\n" - " bl StringCopy\n" - " b ._423\n" - "._421:\n" - " .align 2, 0\n" - "._420:\n" - " .word gStringVar1\n" - " .word gStringVar2\n" - " .word gUnknown_Debug_839C26C\n" - " .word gStringVar3\n" - " .word Str_839C085\n" - "._418:\n" - " cmp r6, #0x1\n" - " beq ._422 @cond_branch\n" - " ldr r0, ._424 @ gStringVar3\n" - " add r1, r7, #0\n" - " mov r2, #0x1\n" - " mov r3, #0xa\n" - " bl ConvertIntToDecimalStringN\n" - " b ._423\n" - "._425:\n" - " .align 2, 0\n" - "._424:\n" - " .word gStringVar3\n" - "._422:\n" - " ldr r4, ._426 @ gStringVar3\n" - " lsr r1, r7, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r6, #0xf0\n" - " strb r6, [r4, #0x3]\n" - " add r0, r4, #4\n" - " lsr r1, r7, #0x8\n" - " mov r5, #0xff\n" - " and r1, r1, r5\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " strb r6, [r4, #0x6]\n" - " add r4, r4, #0x7\n" - " and r7, r7, r5\n" - " add r0, r4, #0\n" - " add r1, r7, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - "._423:\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._426 + 4 @ Str_839C07C\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._427:\n" - " .align 2, 0\n" - "._426:\n" - " .word gStringVar3\n" - " .word Str_839C07C\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807860C() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._432 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._428 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._429 @cond_branch\n" - " cmp r0, #0\n" - " beq ._430 @cond_branch\n" - " b ._447\n" - "._433:\n" - " .align 2, 0\n" - "._432:\n" - " .word gTasks+0x8\n" - "._429:\n" - " cmp r0, #0x2\n" - " beq ._434 @cond_branch\n" - " b ._447\n" - "._430:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078550\n" - "._441:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._447\n" - "._428:\n" - " ldr r3, ._439 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._437 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r4]\n" - " mov r0, #0x1\n" - " b ._438\n" - "._440:\n" - " .align 2, 0\n" - "._439:\n" - " .word gMain\n" - "._437:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " cmp r2, #0\n" - " bne ._441 @cond_branch\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._442 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x2]\n" - " lsl r0, r0, #0x10\n" - " asr r0, r0, #0x10\n" - " cmp r0, #0x32\n" - " bne ._446 @cond_branch\n" - " strh r2, [r4, #0x2]\n" - " b ._446\n" - "._442:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._447 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r4, #0x2]\n" - " lsl r0, r0, #0x10\n" - " cmp r0, #0\n" - " bge ._446 @cond_branch\n" - " mov r0, #0x31\n" - " strh r0, [r4, #0x2]\n" - "._446:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078550\n" - " b ._447\n" - "._434:\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._447:\n" - " mov r0, #0x0\n" - "._438:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80786C0() -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_807860C\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80786D0() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " add r0, r4, #0\n" - " bl DebugMenu_807860C\n" - " cmp r0, #0\n" - " beq ._449 @cond_branch\n" - " ldr r1, ._450 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r2, [r0, #0xa]\n" - " ldr r1, ._450 + 4 @ gUnknown_Debug_839C26C\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._449 @cond_branch\n" - " sub r1, r0, #1\n" - " add r0, r2, #0\n" - " bl SetGameStat\n" - " mov r0, #0x15\n" - " bl PlaySE\n" - "._449:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._451:\n" - " .align 2, 0\n" - "._450:\n" - " .word gTasks\n" - " .word gUnknown_Debug_839C26C\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078714() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " add r0, r4, #0\n" - " bl DebugMenu_807860C\n" - " cmp r0, #0\n" - " beq ._453 @cond_branch\n" - " ldr r1, ._454 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r2, [r0, #0xa]\n" - " ldr r1, ._454 + 4 @ gUnknown_Debug_839C26C\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._453 @cond_branch\n" - " add r0, r2, #0\n" - " mov r1, #0x0\n" - " bl SetGameStat\n" - " mov r0, #0x15\n" - " bl PlaySE\n" - "._453:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._455:\n" - " .align 2, 0\n" - "._454:\n" - " .word gTasks\n" - " .word gUnknown_Debug_839C26C\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078758() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " add r0, r4, #0\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " mov r0, #0x1\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078774() -{ - asm( - " push {lr}\n" - " ldr r0, ._456 @ DebugMenu_80786C0\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._457:\n" - " .align 2, 0\n" - "._456:\n" - " .word DebugMenu_80786C0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078788() -{ - asm( - " push {lr}\n" - " ldr r0, ._458 @ DebugMenu_80786D0\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._459:\n" - " .align 2, 0\n" - "._458:\n" - " .word DebugMenu_80786D0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807879C() -{ - asm( - " push {lr}\n" - " ldr r0, ._460 @ DebugMenu_8078714\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._461:\n" - " .align 2, 0\n" - "._460:\n" - " .word DebugMenu_8078714+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80787B0() -{ - asm( - " push {lr}\n" - " ldr r0, ._462 @ gUnknown_Debug_839C3FC\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._463:\n" - " .align 2, 0\n" - "._462:\n" - " .word gUnknown_Debug_839C3FC\n" - "\n" - ); -} - -__attribute__((naked)) + CloseMenu(); + DebugMenu_8077EAC(); + ScriptContext2_Enable(); + return TRUE; +} + +void DebugMenu_8077EAC(void) +{ + u8 taskId = CreateTask(DebugMenu_8077F40, 80); + Menu_EraseScreen(); + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[2] = 1; +} + +void DebugMenu_8077EE0(u16 itemId, u16 quantity) +{ + Menu_BlankWindowRect(4, 17, 22, 18); + ConvertIntToDecimalStringN(gStringVar1, itemId, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 4, 17); + Menu_PrintText(ItemId_GetName(itemId), 8, 17); + ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 18, 17); +} + +const u8 gDebug0x839C008[] = _("Which item?"); + +void DebugMenu_8077F40(u8 taskId) +{ + struct Task *task = gTasks + taskId; + Menu_DisplayDialogueFrame(); + Menu_PrintText(gDebug0x839C008, 2, 15); + DebugMenu_8077EE0(task->data[1], task->data[2]); + task->func = DebugMenu_8077F7C; +} + +const u8 Str_839C014[] = _("How many?"); + +void DebugMenu_8077F7C(u8 taskId) +{ + struct Task *task = gTasks + taskId; + if (gMain.newKeys & A_BUTTON) + { + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C014, 2, 15); + DebugMenu_8077EE0(task->data[1], task->data[2]); + task->func = DebugMenu_8077FFC; + } + else if (gMain.newKeys & B_BUTTON) + { + task->func = DebugMenu_807806C; + } + else if (DebugMenu_8077DD8(task->data + 1, 1, ITEM_15C, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8077EE0(task->data[1], task->data[2]); + } +} + +void DebugMenu_8077FFC(u8 taskId) +{ + struct Task *task = gTasks + taskId; + if (gMain.newKeys & A_BUTTON) + { + if (AddBagItem(task->data[1], task->data[2]) == TRUE) + PlaySE(SE_SELECT); + task->func = DebugMenu_8077F40; + } + else if (gMain.newKeys & B_BUTTON) + { + task->func = DebugMenu_8077F40; + } + else if (DebugMenu_8077DD8(task->data + 2, 1, 99, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8077EE0(task->data[1], task->data[2]); + } +} + +void DebugMenu_807806C(u8 taskId) +{ + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + DebugMenu_8077048(); +} + +const u8 Str_839C01E[] = _("にがおえ ばんごう\n" + "ポケモンナンバー\n" + "ポケモンめい\n" + "ブリーダーめい\n" + "しゅるい\n" + "こせいらんすう"); +const u8 Str_839C04D[] = _("データなし"); + +void DebugMenu_807808C(u32 a0) +{ + u8 strbuf[11]; + struct ContestWinner *winner; + + if (a0 == 0 || a0 > 13) + a0 = 1; + winner = gSaveBlock1.contestWinners + a0 - 1; + + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 19, 17); + Menu_PrintText(Str_839C01E, 2, 2); + + ConvertIntToDecimalStringN(strbuf, a0, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 2); + + ConvertIntToDecimalStringN(strbuf, winner->species, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 4); + + if (StringLength(winner->nickname) <= 11) + Menu_PrintText(winner->nickname, 11, 6); + else + Menu_PrintText(Str_839C04D, 11, 6); + + if (StringLength(winner->trainerName) <= 11) + Menu_PrintText(winner->trainerName, 11, 8); + else + Menu_PrintText(Str_839C04D, 11, 8); + + ConvertIntToDecimalStringN(strbuf, winner->contestCategory, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 10); + + ConvertIntToHexStringN(strbuf, winner->personality, STR_CONV_MODE_LEADING_ZEROS, 8); + Menu_PrintText(strbuf, 11, 12); +} + +void DebugMenu_807817C(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } +} + +void DebugMenu_80781A8(u8 taskId) +{ + struct Task *task = gTasks + taskId; + + if (task->data[0] == 0) + task->data[0]++; + else if (gMain.newKeys & A_BUTTON) + { + DebugMenu_807808C(task->data[0]); + task->func = DebugMenu_807817C; + return; + } + else if (!DebugMenu_8077DD8(task->data + 0, 1, 13, gMain.newAndRepeatedKeys & (DPAD_UP | DPAD_DOWN))) + return; + Menu_BlankWindowRect(4, 17, 22, 18); + ConvertIntToDecimalStringN(gStringVar1, task->data[0], STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 4, 17); +} + +u8 DebugMenu_ViewPortraits(void) +{ + CloseMenu(); + CreateTask(DebugMenu_80781A8, 80); + ScriptContext2_Enable(); + return TRUE; +} + +void DebugMenu_8078254(u32 a0) +{ + DebugMenu_807808C(a0); +} + +u8 DebugMenu_AllBadges(void) +{ + FlagSet(FLAG_BADGE01_GET); + FlagSet(FLAG_BADGE02_GET); + FlagSet(FLAG_BADGE03_GET); + FlagSet(FLAG_BADGE04_GET); + FlagSet(FLAG_BADGE05_GET); + FlagSet(FLAG_BADGE06_GET); + FlagSet(FLAG_BADGE07_GET); + FlagSet(FLAG_BADGE08_GET); + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_TimeRecords(void) +{ + CloseMenu(); + CreateTask(debug_sub_806F9E4, 80); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_SetTime(void) +{ + CloseMenu(); + debug_sub_806F99C(); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 Str_839C053[] = _("Miracle Island emerged\n" + "Random numbers:{STR_VAR_1}"); + +void DebugMenu_80782EC(u16 rnums) +{ + ConvertIntToHexStringN(gStringVar1, rnums, STR_CONV_MODE_LEFT_ALIGN, 4); + sub_8071F40(Str_839C053); +} + +void DebugMenu_8078310(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + data[1] = VarGet(VAR_MIRAGE_RND_H); + DebugMenu_80782EC(data[1]); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_PINPON); + *GetVarPointer(VAR_MIRAGE_RND_H) = data[1]; + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (gMain.newKeys & B_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (DebugMenu_8077DD8(data + 1, 0, 0xFFFF, gMain.newAndRepeatedKeys) == TRUE) + DebugMenu_80782EC(data[1]); + break; + } +} + +u8 DebugMenu_MiragaIslandRND(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8078310, 80); + ScriptContext2_Enable(); + return TRUE; +} + +bool8 DebugMenu_80783C8(void) +{ + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + if (!FlagGet(FLAG_SYS_GAME_CLEAR)) + { + FlagSet(FLAG_SYS_GAME_CLEAR); + DebugMenu_807786C(0); + } + else + { + FlagClear(FLAG_SYS_GAME_CLEAR); + DebugMenu_807786C(1); + } + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_ToggleClearFlag(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(FlagGet(FLAG_SYS_GAME_CLEAR) ^ 1); + gMenuCallback = DebugMenu_80783C8; + return FALSE; +} + +bool8 DebugMenu_8078464(void) +{ + switch (DebugMenu_8077E40(FlagGet(FLAG_SYS_WEATHER_CTRL))) + { + case 0: + FlagClear(FLAG_SYS_WEATHER_CTRL); + return FALSE; + case 1: + FlagSet(FLAG_SYS_WEATHER_CTRL); + return FALSE; + case -1: + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_OpenWeatherEvents(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(FlagGet(FLAG_SYS_WEATHER_CTRL) ? FALSE : TRUE); + gMenuCallback = DebugMenu_8078464; + return FALSE; +} + +bool8 DebugMenu_80784E8(void) +{ + switch (DebugMenu_8077E40(IsMysteryGiftEnabled())) + { + case 0: + DisableMysteryGift(); + return FALSE; + case 1: + EnableMysteryGift(); + return FALSE; + case -1: + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_OpenMysteryEvent(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(IsMysteryGiftEnabled() ? FALSE : TRUE); + gMenuCallback = DebugMenu_80784E8; + return FALSE; +} + +const u8 Str_839C07C[] = _("{STR_VAR_1}:{STR_VAR_2}\n" + "{STR_VAR_3}"); +const u8 Str_839C085[] = _("みしよう データ"); +const u8 Str_839C08E[] = _("Confirmation"); +const u8 Str_839C09B[] = _("Max-1 set"); +const u8 Str_839C0A5[] = _("Zero clear"); +const u8 Str_839C0B0[] = _("レポート"); +const u8 Str_839C0B5[] = _("クリア じかん"); +const u8 Str_839C0BD[] = _("りゅうこう さくせい"); +const u8 Str_839C0C8[] = _("きのみを うえたかいすう"); +const u8 Str_839C0D5[] = _("じてんしゃこうかん"); +const u8 Str_839C0DF[] = _("ほすう"); +const u8 Str_839C0E3[] = _("インタビュー"); +const u8 Str_839C0EA[] = _("バトル"); +const u8 Str_839C0EE[] = _("やせいバトル"); +const u8 Str_839C0F5[] = _("トレーナーバトル"); +const u8 Str_839C0FE[] = _("でんどういり"); +const u8 Str_839C105[] = _("ポケモンほかく"); +const u8 Str_839C10D[] = _("つった かいすう"); +const u8 Str_839C116[] = _("タマゴかえった"); +const u8 Str_839C11E[] = _("しんかした"); +const u8 Str_839C124[] = _("ポケセン かいふく"); +const u8 Str_839C12E[] = _("じたく かいふく"); +const u8 Str_839C137[] = _("サファリ りよう"); +const u8 Str_839C140[] = _("ひでん:いあいぎり"); +const u8 Str_839C14A[] = _("ひでん:いわくだき"); +const u8 Str_839C154[] = _("きち ひっこし"); +const u8 Str_839C15C[] = _("つうしんこうかん"); +const u8 Str_839C165[] = _("つうしんたいせん"); +const u8 Str_839C16E[] = _("つうしん かち"); +const u8 Str_839C176[] = _("つうしん まけ"); +const u8 Str_839C17E[] = _("つうしん ひきわけ"); +const u8 Str_839C188[] = _("わざ:はねる"); +const u8 Str_839C18F[] = _("わざ:わるあがき"); +const u8 Str_839C198[] = _("スロットおおあたりかいすう"); +const u8 Str_839C1A6[] = _("ルーレット れんしょう"); +const u8 Str_839C1B2[] = _("バトルタワー"); +const u8 Str_839C1B9[] = _("バトルタワーかち"); +const u8 Str_839C1C2[] = _("バトルタワーれんしょう"); +const u8 Str_839C1CE[] = _("ポロックさくせい"); +const u8 Str_839C1D7[] = _("つうしんでポロックつくった"); +const u8 Str_839C1E5[] = _("つうしんコンテストかち"); +const u8 Str_839C1F1[] = _("CPUコンテストさんか"); +const u8 Str_839C1FD[] = _("CPUコンテストかち"); +const u8 Str_839C208[] = _("かいもの"); +const u8 Str_839C20D[] = _("ダウジングマシン"); +const u8 Str_839C216[] = _("あめふり"); +const u8 Str_839C21B[] = _("ずかんをみた"); +const u8 Str_839C222[] = _("リボン もらった"); +const u8 Str_839C22B[] = _("だんさ とびおり"); +const u8 Str_839C234[] = _("TVを みた"); +const u8 Str_839C23B[] = _("とけいを みた"); +const u8 Str_839C243[] = _("くじが あたった"); +const u8 Str_839C24C[] = _("ポケモンあずけた"); +const u8 Str_839C255[] = _("ロープウェイりよう"); +const u8 Str_839C25F[] = _("おんせん はいった"); + +const struct { + u32 maxVal; + const u8 * name; +} gUnknown_Debug_839C26C[] = { + {0xFFFFFF, Str_839C0B0}, + {65485627, Str_839C0B5}, + {0xFFFFFF, Str_839C0BD}, + {0xFFFFFF, Str_839C0C8}, + {0xFFFFFF, Str_839C0D5}, + {0xFFFFFF, Str_839C0DF}, + {0xFFFFFF, Str_839C0E3}, + {0xFFFFFF, Str_839C0EA}, + {0xFFFFFF, Str_839C0EE}, + {0xFFFFFF, Str_839C0F5}, + {999, Str_839C0FE}, + {0xFFFFFF, Str_839C105}, + {0xFFFFFF, Str_839C10D}, + {0xFFFFFF, Str_839C116}, + {0xFFFFFF, Str_839C11E}, + {0xFFFFFF, Str_839C124}, + {0xFFFFFF, Str_839C12E}, + {0xFFFFFF, Str_839C137}, + {0xFFFFFF, Str_839C140}, + {0xFFFFFF, Str_839C14A}, + {0xFFFFFF, Str_839C154}, + {0xFFFFFF, Str_839C15C}, + {0xFFFFFF, Str_839C165}, + {9999, Str_839C16E}, + {9999, Str_839C176}, + {9999, Str_839C17E}, + {0xFFFFFF, Str_839C188}, + {0xFFFFFF, Str_839C18F}, + {0xFFFFFF, Str_839C198}, + {0xFFFFFF, Str_839C1A6}, + {0xFFFFFF, Str_839C1B2}, + {0x0, Str_839C1B9}, + {0x0, Str_839C1C2}, + {0xFFFFFF, Str_839C1CE}, + {0xFFFFFF, Str_839C1D7}, + {0xFFFFFF, Str_839C1E5}, + {0xFFFFFF, Str_839C1F1}, + {0xFFFFFF, Str_839C1FD}, + {0xFFFFFF, Str_839C208}, + {0xFFFFFF, Str_839C20D}, + {0xFFFFFF, Str_839C216}, + {0xFFFFFF, Str_839C21B}, + {0xFFFFFF, Str_839C222}, + {0xFFFFFF, Str_839C22B}, + {0xFFFFFF, Str_839C234}, + {0xFFFFFF, Str_839C23B}, + {0xFFFFFF, Str_839C243}, + {0xFFFFFF, Str_839C24C}, + {0xFFFFFF, Str_839C255}, + {0xFFFFFF, Str_839C25F} +}; + +void DebugMenu_8078550(u16 gameStat) +{ + u32 value = GetGameStat(gameStat); + + ConvertIntToDecimalStringN(gStringVar1, gameStat, STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopy(gStringVar2, gUnknown_Debug_839C26C[gameStat].name); + if (gUnknown_Debug_839C26C[gameStat].maxVal == 0) + StringCopy(gStringVar3, Str_839C085); + else if (gameStat != GAME_STAT_FIRST_HOF_PLAY_TIME) + ConvertIntToDecimalStringN(gStringVar3, value, STR_CONV_MODE_RIGHT_ALIGN, 10); + else + { + ConvertIntToDecimalStringN(gStringVar3, value >> 16, STR_CONV_MODE_RIGHT_ALIGN, 3); + gStringVar3[3] = CHAR_COLON; + ConvertIntToDecimalStringN(gStringVar3 + 4, (value >> 8) & 0xff, STR_CONV_MODE_LEADING_ZEROS, 2); + gStringVar3[6] = CHAR_COLON; + ConvertIntToDecimalStringN(gStringVar3 + 7, value & 0xff, STR_CONV_MODE_LEADING_ZEROS, 2); + } + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C07C, 2, 15); +} + +bool32 DebugMenu_807860C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + DebugMenu_8078550(data[1]); + data[0]++; + return FALSE; + case 1: + if (gMain.newKeys & A_BUTTON) + { + data[0]--; + return TRUE; + } + if (gMain.newKeys & B_BUTTON) + { + data[0]++; + return FALSE; + } + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + data[1]++; + if (data[1] == NUM_GAME_STATS) + data[1] = 0; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + data[1]--; + if (data[1] < 0) + data[1] = NUM_GAME_STATS - 1; + } + else + return FALSE; + DebugMenu_8078550(data[1]); + return FALSE; + case 2: + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + return FALSE; + } + return FALSE; +} + +void DebugMenu_80786C0(u8 taskId) +{ + DebugMenu_807860C(taskId); +} + +void DebugMenu_80786D0(u8 taskId) +{ + if (DebugMenu_807860C(taskId)) + { + u8 gameStat = gTasks[taskId].data[1]; + if (gUnknown_Debug_839C26C[gameStat].maxVal != 0) + { + SetGameStat(gameStat, gUnknown_Debug_839C26C[gameStat].maxVal - 1); + PlaySE(SE_PIN); + } + } +} + +void DebugMenu_8078714(u8 taskId) +{ + if (DebugMenu_807860C(taskId)) + { + u8 gameStat = gTasks[taskId].data[1]; + if (gUnknown_Debug_839C26C[gameStat].maxVal != 0) + { + SetGameStat(gameStat, 0); + PlaySE(SE_PIN); + } + } +} + +bool8 DebugMenu_8078758(TaskFunc func) +{ + CloseMenu(); + ScriptContext2_Enable(); + CreateTask(func, 80); + return TRUE; +} + +bool8 DebugMenu_8078774(void) +{ + return DebugMenu_8078758(DebugMenu_80786C0); +} + +bool8 DebugMenu_8078788(void) +{ + return DebugMenu_8078758(DebugMenu_80786D0); +} + +bool8 DebugMenu_807879C() +{ + return DebugMenu_8078758(DebugMenu_8078714); +} + +const struct MenuAction gUnknown_Debug_839C3FC[] = { + {Str_839C08E, DebugMenu_8078774}, + {Str_839C09B, DebugMenu_8078788}, + {Str_839C0A5, DebugMenu_807879C} +}; + +bool8 DebugMenu_80787B0() +{ + return DebugMenu_8077D78(gUnknown_Debug_839C3FC); +} + u8 DebugMenu_OpenLegendsRecord() { - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._464 @ gUnknown_Debug_839C3FC\n" - " mov r1, #0xc\n" - " mov r2, #0x3\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._464 + 4 @ gMenuCallback\n" - " ldr r0, ._464 + 8 @ DebugMenu_80787B0\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._465:\n" - " .align 2, 0\n" - "._464:\n" - " .word gUnknown_Debug_839C3FC\n" - " .word gMenuCallback\n" - " .word DebugMenu_80787B0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80787EC() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r5, sp\n" - " add r5, r5, #0x2\n" - " mov r0, sp\n" - " add r1, r5, #0\n" - " bl GetXYCoordsOneStepInFrontOfPlayer\n" - " ldr r4, ._466 @ gSpecialVar_Result\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetMetatileBehaviorAt\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 4 @ gStringVar1\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetMetatileIdAt\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 8 @ gStringVar2\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetZCoordAt\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 12 @ gStringVar3\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._466 + 16 @ gStringVar4\n" - " ldr r1, ._466 + 20 @ Str_839C414\n" - " bl StringExpandPlaceholders\n" - " add sp, sp, #0x4\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._467:\n" - " .align 2, 0\n" - "._466:\n" - " .word gSpecialVar_Result\n" - " .word gStringVar1\n" - " .word gStringVar2\n" - " .word gStringVar3\n" - " .word gStringVar4\n" - " .word Str_839C414\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078880() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._472 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r1, #0x8\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._468 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._469 @cond_branch\n" - " cmp r0, #0\n" - " beq ._470 @cond_branch\n" - " b ._480\n" - "._473:\n" - " .align 2, 0\n" - "._472:\n" - " .word gTasks\n" - "._469:\n" - " cmp r0, #0x2\n" - " beq ._474 @cond_branch\n" - " b ._480\n" - "._470:\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._476\n" - "._468:\n" - " ldr r0, ._478 @ gStringVar4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - "._476:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._480\n" - "._479:\n" - " .align 2, 0\n" - "._478:\n" - " .word gStringVar4\n" - "._474:\n" - " ldr r0, ._481 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._480 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._480:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._482:\n" - " .align 2, 0\n" - "._481:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_CellInfo() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._483 @ DebugMenu_8078880\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl DebugMenu_80787EC\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._484:\n" - " .align 2, 0\n" - "._483:\n" - " .word DebugMenu_8078880+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenBerryInfo() -{ - asm( - " push {r4, lr}\n" - " bl DebugOpenBerryInfo\n" - " add r4, r0, #0\n" - " cmp r4, #0\n" - " bne ._485 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._486\n" - "._485:\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x13\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " add r0, r4, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r1, ._487 @ gMenuCallback\n" - " ldr r0, ._487 + 4 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - "._486:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._488:\n" - " .align 2, 0\n" - "._487:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078950() -{ - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._489 @ Str_839C42E\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " pop {r0}\n" - " bx r0\n" - "._490:\n" - " .align 2, 0\n" - "._489:\n" - " .word Str_839C42E\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078968() -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x10\n" - " cmp r0, #0\n" - " bne ._491 @cond_branch\n" - " ldr r0, ._493 @ gStringVar1\n" - " mov r1, #0x32\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " b ._492\n" - "._494:\n" - " .align 2, 0\n" - "._493:\n" - " .word gStringVar1\n" - "._491:\n" - " ldr r0, ._495 @ gStringVar1\n" - " mov r1, #0x64\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - "._492:\n" - " ldr r0, ._495 @ gStringVar1\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r0}\n" - " bx r0\n" - "._496:\n" - " .align 2, 0\n" - "._495:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80789A4() -{ - asm( - " push {r4, lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r4, ._497 @ gStringVar1\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x9\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._498:\n" - " .align 2, 0\n" - "._497:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80789CC() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r6, ._499 @ gTasks\n" - " add r5, r4, r6\n" - " mov r0, #0x0\n" - " strh r0, [r5]\n" - " ldr r0, ._499 + 4 @ gSaveBlock2\n" - " ldr r1, ._499 + 8 @ 0x55c\n" - " add r0, r0, r1\n" - " ldrh r0, [r0]\n" - " strh r0, [r5, #0x2]\n" - " bl DebugMenu_8078950\n" - " ldrh r0, [r5]\n" - " bl DebugMenu_8078968\n" - " sub r6, r6, #0x8\n" - " add r4, r4, r6\n" - " ldr r0, ._499 + 12 @ DebugMenu_8078A14\n" - " str r0, [r4]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._500:\n" - " .align 2, 0\n" - "._499:\n" - " .word gTasks+0x8\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078A14+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078A14() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r4, r1, #0x3\n" - " ldr r5, ._504 @ gTasks\n" - " add r2, r4, r5\n" - " ldr r0, ._504 + 4 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0xc0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._501 @cond_branch\n" - " mov r1, #0x0\n" - " mov r3, #0x0\n" - " ldsh r0, [r2, r3]\n" - " cmp r0, #0\n" - " bne ._502 @cond_branch\n" - " mov r1, #0x1\n" - "._502:\n" - " strh r1, [r2]\n" - " ldrh r0, [r2]\n" - " bl DebugMenu_8078968\n" - " b ._510\n" - "._505:\n" - " .align 2, 0\n" - "._504:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - "._501:\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._506 @cond_branch\n" - " ldr r1, ._508 @ gSaveBlock2\n" - " mov r3, #0x0\n" - " ldsh r0, [r2, r3]\n" - " lsl r0, r0, #0x1\n" - " ldr r3, ._508 + 4 @ 0x55c\n" - " add r1, r1, r3\n" - " add r0, r0, r1\n" - " ldrh r0, [r0]\n" - " strh r0, [r2, #0x2]\n" - " ldrh r0, [r2, #0x2]\n" - " bl DebugMenu_80789A4\n" - " add r0, r5, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r4, r0\n" - " ldr r1, ._508 + 8 @ DebugMenu_8078AA4\n" - " b ._507\n" - "._509:\n" - " .align 2, 0\n" - "._508:\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078AA4+1\n" - "._506:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._510 @cond_branch\n" - " add r0, r5, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r4, r0\n" - " ldr r1, ._511 @ DebugMenu_8078B38\n" - "._507:\n" - " str r1, [r0]\n" - "._510:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._512:\n" - " .align 2, 0\n" - "._511:\n" - " .word DebugMenu_8078B38+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078AA4() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r5, r1, #0x3\n" - " ldr r7, ._515 @ gTasks\n" - " add r4, r5, r7\n" - " add r0, r4, #2\n" - " mov r2, #0xfa\n" - " lsl r2, r2, #0x3\n" - " ldr r6, ._515 + 4 @ gMain\n" - " ldrh r3, [r6, #0x30]\n" - " mov r1, #0x0\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._513 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80789A4\n" - " b ._521\n" - "._516:\n" - " .align 2, 0\n" - "._515:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - "._513:\n" - " ldrh r1, [r6, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._517 @cond_branch\n" - " ldr r1, ._519 @ gSaveBlock2\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " lsl r0, r0, #0x1\n" - " ldr r2, ._519 + 4 @ 0x55c\n" - " add r1, r1, r2\n" - " add r0, r0, r1\n" - " ldrh r1, [r4, #0x2]\n" - " strh r1, [r0]\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " add r0, r7, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._519 + 8 @ DebugMenu_8078B38\n" - " b ._518\n" - "._520:\n" - " .align 2, 0\n" - "._519:\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078B38+1\n" - "._517:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._521 @cond_branch\n" - " bl DebugMenu_8078950\n" - " ldrh r0, [r4]\n" - " bl DebugMenu_8078968\n" - " add r0, r7, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._522 @ DebugMenu_8078A14\n" - "._518:\n" - " str r1, [r0]\n" - "._521:\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._523:\n" - " .align 2, 0\n" - "._522:\n" - " .word DebugMenu_8078A14+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078B38() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_BattleTowerStages() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " ldr r0, ._524 @ DebugMenu_80789CC\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._525:\n" - " .align 2, 0\n" - "._524:\n" - " .word DebugMenu_80789CC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078B70() -{ - asm( - " push {lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r0, ._526 @ gStringVar1\n" - " mov r2, #0x0\n" - " mov r3, #0x1\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._526 + 4 @ Str_839C438\n" - " bl sub_8071F40\n" - " pop {r0}\n" - " bx r0\n" - "._527:\n" - " .align 2, 0\n" - "._526:\n" - " .word gStringVar1\n" - " .word Str_839C438\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078B94() -{ - asm( - " push {r4, r5, lr}\n" - " mov r3, #0x0\n" - " ldr r1, ._531 @ gUnknown_Debug_839C444\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._529 @cond_branch\n" - " ldr r5, ._531 + 4 @ gSaveBlock1\n" - " add r4, r1, #0\n" - "._530:\n" - " lsl r0, r3, #0x3\n" - " add r2, r0, r5\n" - " add r0, r0, r4\n" - " ldr r1, [r0, #0x4]\n" - " ldr r0, [r0]\n" - " str r0, [r2]\n" - " str r1, [r2, #0x4]\n" - " add r0, r3, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " cmp r3, #0x27\n" - " bhi ._529 @cond_branch\n" - " lsl r0, r3, #0x3\n" - " add r0, r0, r4\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " bne ._530 @cond_branch\n" - "._529:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._532:\n" - " .align 2, 0\n" - "._531:\n" - " .word gUnknown_Debug_839C444\n" - " .word gSaveBlock1+0x7f8\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078BD4() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._536 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0\n" - " beq ._533 @cond_branch\n" - " cmp r0, #0x1\n" - " beq ._534 @cond_branch\n" - " b ._545\n" - "._537:\n" - " .align 2, 0\n" - "._536:\n" - " .word gTasks+0x8\n" - "._533:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078B70\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._545\n" - "._534:\n" - " ldr r2, ._541 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._539 @cond_branch\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " bl DebugMenu_8078B94\n" - " b ._545\n" - "._542:\n" - " .align 2, 0\n" - "._541:\n" - " .word gMain\n" - "._539:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._543 @cond_branch\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " b ._545\n" - "._543:\n" - " add r0, r4, #2\n" - " ldrh r3, [r2, #0x30]\n" - " mov r1, #0x0\n" - " mov r2, #0x4\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._545 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078B70\n" - "._545:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839C3FC, 12, ARRAY_COUNT(gUnknown_Debug_839C3FC)); + gMenuCallback = DebugMenu_80787B0; + return FALSE; +} + +const u8 Str_839C414[] = _("ATTR:{STR_VAR_1} HEIGHT:{STR_VAR_3}\n" + "CODE:{STR_VAR_2}"); + +void DebugMenu_80787EC(void) +{ + s16 x; + s16 y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + gSpecialVar_Result = MapGridGetMetatileBehaviorAt(x, y); + ConvertIntToHexStringN(gStringVar1, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + gSpecialVar_Result = MapGridGetMetatileIdAt(x, y); + ConvertIntToHexStringN(gStringVar2, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + gSpecialVar_Result = MapGridGetZCoordAt(x, y); + ConvertIntToHexStringN(gStringVar3, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + StringExpandPlaceholders(gStringVar4, Str_839C414); +} + +void DebugMenu_8078880(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + Menu_PrintText(gStringVar4, 2, 15); + gTasks[taskId].data[0]++; + break; + case 2: + if (gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +u8 DebugMenu_CellInfo(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8078880, 80); + DebugMenu_80787EC(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenBerryInfo(void) +{ + const u8 * berryInfo = DebugOpenBerryInfo(); + if (berryInfo != NULL) + { + Menu_DrawStdWindowFrame(0, 0, 19, 19); + Menu_PrintText(berryInfo, 1, 1); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; + } + CloseMenu(); + return TRUE; +} + +const u8 Str_839C42E[] = _("レベル ステージ"); + +void DebugMenu_8078950(void) +{ + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C42E, 4, 15); +} + +void DebugMenu_8078968(u16 flag) +{ + if (flag == 0) + ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEADING_ZEROS, 3); + else + ConvertIntToDecimalStringN(gStringVar1, 100, STR_CONV_MODE_LEADING_ZEROS, 3); + Menu_PrintText(gStringVar1, 4, 17); +} + +void DebugMenu_80789A4(u16 value) +{ + ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, 4); + Menu_PrintText(gStringVar1, 9, 17); +} + +void DebugMenu_80789CC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + data[0] = 0; + data[1] = gSaveBlock2.battleTower.curStreakChallengesNum[0]; + DebugMenu_8078950(); + DebugMenu_8078968(data[0]); + gTasks[taskId].func = DebugMenu_8078A14; +} + +void DebugMenu_8078A14(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (gMain.newKeys & (DPAD_UP | DPAD_DOWN)) + { + data[0] = data[0] == 0 ? 1 : 0; + DebugMenu_8078968(data[0]); + } + else if (gMain.newKeys & A_BUTTON) + { + data[1] = gSaveBlock2.battleTower.curStreakChallengesNum[data[0]]; + DebugMenu_80789A4(data[1]); + gTasks[taskId].func = DebugMenu_8078AA4; + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = DebugMenu_8078B38; + } +} + +void DebugMenu_8078AA4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (DebugMenu_8077DD8(data + 1, 0, 2000, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_80789A4(data[1]); + } + else if (gMain.newKeys & A_BUTTON) + { + gSaveBlock2.battleTower.curStreakChallengesNum[data[0]] = data[1]; + PlaySE(SE_PINPON); + gTasks[taskId].func = DebugMenu_8078B38; + } + else if (gMain.newKeys & B_BUTTON) + { + DebugMenu_8078950(); + DebugMenu_8078968(data[0]); + gTasks[taskId].func = DebugMenu_8078A14; + } +} + +void DebugMenu_8078B38(u8 taskId) +{ + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +u8 DebugMenu_BattleTowerStages(void) +{ + CloseMenu(); + ScriptContext2_Enable(); + CreateTask(DebugMenu_80789CC, 80); + return TRUE; +} + +const u8 Str_839C438[] = _("ポロック グループ{STR_VAR_1}"); + +void DebugMenu_8078B70(u16 value) +{ + ConvertIntToHexStringN(gStringVar1, value, STR_CONV_MODE_LEFT_ALIGN, 1); + sub_8071F40(Str_839C438); +} + +const struct Pokeblock gUnknown_Debug_839C444[] = { + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {} +}; + +void DebugMenu_8078B94(void) +{ + u8 i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.pokeblocks); i++) + { + if (gUnknown_Debug_839C444[i].color == 0) + break; + gSaveBlock1.pokeblocks[i] = gUnknown_Debug_839C444[i]; + } +} + +void DebugMenu_8078BD4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + DebugMenu_8078B70(data[1]); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_PINPON); + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + DebugMenu_8078B94(); + } + else if (gMain.newKeys & B_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (DebugMenu_8077DD8(data + 1, 0, 4, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8078B70(data[1]); + } + break; + } +} + u8 DebugMenu_CheckPKBLCK() { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._546 @ DebugMenu_8078BD4\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._547:\n" - " .align 2, 0\n" - "._546:\n" - " .word DebugMenu_8078BD4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078C80() -{ - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._548 @ Str_839C5A4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r1, ._548 + 4 @ gMenuCallback\n" - " ldr r0, ._548 + 8 @ DebugMenu_8078CA8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._549:\n" - " .align 2, 0\n" - "._548:\n" - " .word Str_839C5A4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078CA8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078CA8() -{ - asm( - " push {lr}\n" - " ldr r0, ._552 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._550 @cond_branch\n" - " ldr r1, ._552 + 4 @ gMenuCallback\n" - " ldr r0, ._552 + 8 @ DebugMenu_8078CE4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " b ._555\n" - "._553:\n" - " .align 2, 0\n" - "._552:\n" - " .word gMain\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078CE4+1\n" - "._550:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._554 @cond_branch\n" - " mov r0, #0x0\n" - " b ._555\n" - "._554:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._555:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078CE4() -{ - asm( - " push {lr}\n" - " ldr r1, ._558 @ \n" - " mov r2, #0x80\n" - " lsl r2, r2, #0xa\n" - " mov r0, #0x0\n" - " bl DebugMenu_8078E40\n" - " cmp r0, #0x1\n" - " bne ._556 @cond_branch\n" - " ldr r0, ._558 + 4 @ \n" - " ldr r1, ._558 + 8 @ \n" - " bl StringCopy\n" - " b ._557\n" - "._559:\n" - " .align 2, 0\n" - "._558:\n" - " .word +0x2000000\n" - " .word gStringVar4\n" - " .word Str_839C5CC\n" - "._556:\n" - " ldr r0, ._560 @ gStringVar4\n" - " ldr r1, ._560 + 4 @ Str_839C5DF\n" - " bl StringCopy\n" - "._557:\n" - " ldr r1, ._560 + 8 @ gMenuCallback\n" - " ldr r0, ._560 + 12 @ DebugMenu_8078D7C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._561:\n" - " .align 2, 0\n" - "._560:\n" - " .word gStringVar4\n" - " .word Str_839C5DF\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078D7C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078D30() -{ - asm( - " push {r4, r5, r6, lr}\n" - " ldr r5, ._563 @ \n" - " mov r4, #0x0\n" - " mov r6, #0x80\n" - " lsl r6, r6, #0x5\n" - "._562:\n" - " add r0, r4, #0\n" - " add r1, r5, #0\n" - " add r2, r6, #0\n" - " bl DebugMenu_8078E68\n" - " add r5, r5, r6\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x1f\n" - " bls ._562 @cond_branch\n" - " ldr r0, ._563 + 4 @ \n" - " ldr r1, ._563 + 8 @ \n" - " bl StringCopy\n" - " ldr r1, ._563 + 12 @ \n" - " ldr r0, ._563 + 16 @ \n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._564:\n" - " .align 2, 0\n" - "._563:\n" - " .word +0x2000000\n" - " .word gStringVar4\n" - " .word Str_839C5D6\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078D7C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078D7C() -{ - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._565 @ gStringVar4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r1, ._565 + 4 @ gMenuCallback\n" - " ldr r0, ._565 + 8 @ DebugMenu_8078DA4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._566:\n" - " .align 2, 0\n" - "._565:\n" - " .word gStringVar4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078DA4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078DA4() -{ - asm( - " push {lr}\n" - " ldr r0, ._569 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._567 @cond_branch\n" - " mov r0, #0x0\n" - " b ._568\n" - "._570:\n" - " .align 2, 0\n" - "._569:\n" - " .word gMain\n" - "._567:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._568:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_MeTooBackupMan() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._571 @ gUnknown_Debug_839C594\n" - " mov r1, #0xc\n" - " mov r2, #0x2\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._571 + 4 @ gMenuCallback\n" - " ldr r0, ._571 + 8 @ DebugMenu_8078DF0\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._572:\n" - " .align 2, 0\n" - "._571:\n" - " .word gUnknown_Debug_839C594\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078DF0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078DF0() -{ - asm( - " push {lr}\n" - " ldr r0, ._573 @ gUnknown_Debug_839C594\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._574:\n" - " .align 2, 0\n" - "._573:\n" - " .word gUnknown_Debug_839C594\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E04() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r1, #0\n" - " add r5, r2, #0\n" - " b ._575\n" - "._577:\n" - " ldr r0, ._579 @ 0xfffff000\n" - " add r5, r5, r0\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x5\n" - " add r6, r6, r0\n" - " add r0, r4, #1\n" - "._575:\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl ProgramFlashSectorAndVerify\n" - " cmp r0, #0\n" - " bne ._576 @cond_branch\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x5\n" - " cmp r5, r0\n" - " bhi ._577 @cond_branch\n" - " mov r0, #0x1\n" - " b ._578\n" - "._580:\n" - " .align 2, 0\n" - "._579:\n" - " .word 0xfffff000\n" - "._576:\n" - " mov r0, #0x0\n" - "._578:\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E40() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " add r6, r2, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl m4aSoundVSyncOff\n" - " add r0, r4, #0\n" - " add r1, r5, #0\n" - " add r2, r6, #0\n" - " bl DebugMenu_8078E04\n" - " add r4, r0, #0\n" - " bl m4aSoundVSyncOn\n" - " add r0, r4, #0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E68() -{ - asm( - " push {r4, lr}\n" - " add r4, r1, #0\n" - " add r3, r2, #0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x0\n" - " add r2, r4, #0\n" - " bl ReadFlash\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E80() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " mov r0, #0x2\n" - " mov r1, #0xf\n" - " mov r2, #0x16\n" - " mov r3, #0x10\n" - " bl Menu_BlankWindowRect\n" - " ldr r1, ._581 @ gUnknown_Debug_839C5F4\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r1, [r0, #0x4]\n" - " mov r0, #0xd0\n" - " mov r2, #0xf\n" - " bl sub_8071F60\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._582:\n" - " .align 2, 0\n" - "._581:\n" - " .word gUnknown_Debug_839C5F4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078EB0() -{ - asm( - " push {r4, r5, lr}\n" - " add r5, r0, #0\n" - " ldr r4, ._583 @ gStringVar1\n" - " mov r0, #0x2\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, #0xf0\n" - " mov r1, #0x5\n" - " mov r2, #0x11\n" - " bl sub_8071F60\n" - " mov r0, #0x4\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x6\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, #0xf0\n" - " mov r1, #0x8\n" - " mov r2, #0x11\n" - " bl sub_8071F60\n" - " mov r0, #0x6\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x9\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._584:\n" - " .align 2, 0\n" - "._583:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078F1C() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r6, ._585 @ gTasks\n" - " add r5, r4, r6\n" - " mov r0, #0x0\n" - " strh r0, [r5]\n" - " ldr r1, ._585 + 4 @ gSaveBlock2\n" - " ldrh r0, [r1, #0xe]\n" - " strh r0, [r5, #0x2]\n" - " ldrb r0, [r1, #0x10]\n" - " strh r0, [r5, #0x4]\n" - " ldrb r0, [r1, #0x11]\n" - " strh r0, [r5, #0x6]\n" - " bl Menu_DisplayDialogueFrame\n" - " add r0, r5, #0\n" - " bl DebugMenu_8078EB0\n" - " add r0, r5, #0\n" - " bl DebugMenu_8078E80\n" - " sub r6, r6, #0x8\n" - " add r4, r4, r6\n" - " ldr r0, ._585 + 8 @ DebugMenu_8078F68\n" - " str r0, [r4]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._586:\n" - " .align 2, 0\n" - "._585:\n" - " .word gTasks+0x8\n" - " .word gSaveBlock2\n" - " .word DebugMenu_8078F68+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078F68() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r5, r1, #0x3\n" - " ldr r6, ._589 @ gTasks\n" - " add r4, r5, r6\n" - " ldr r3, ._589 + 4 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._587 @cond_branch\n" - " ldr r1, ._589 + 8 @ gSaveBlock2\n" - " ldrh r0, [r4, #0x2]\n" - " strh r0, [r1, #0xe]\n" - " ldrh r0, [r4, #0x4]\n" - " strb r0, [r1, #0x10]\n" - " ldrh r0, [r4, #0x6]\n" - " strb r0, [r1, #0x11]\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " b ._588\n" - "._590:\n" - " .align 2, 0\n" - "._589:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - " .word gSaveBlock2\n" - "._587:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._591 @cond_branch\n" - "._588:\n" - " add r0, r6, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._593 @ DebugMenu_8079020\n" - " str r1, [r0]\n" - " b ._601\n" - "._594:\n" - " .align 2, 0\n" - "._593:\n" - " .word DebugMenu_8079020+1\n" - "._591:\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._595 @cond_branch\n" - " ldrh r1, [r4]\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " cmp r0, #0\n" - " beq ._601 @cond_branch\n" - " sub r0, r1, #1\n" - " b ._597\n" - "._595:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._598 @cond_branch\n" - " ldrh r0, [r4]\n" - " cmp r0, #0x1\n" - " bhi ._601 @cond_branch\n" - " add r0, r0, #0x1\n" - "._597:\n" - " strh r0, [r4]\n" - " add r0, r4, #0\n" - " bl DebugMenu_8078E80\n" - " b ._601\n" - "._598:\n" - " mov r0, #0x0\n" - " ldsh r2, [r4, r0]\n" - " lsl r2, r2, #0x3\n" - " ldr r0, ._602 @ gUnknown_Debug_839C5F4\n" - " add r2, r2, r0\n" - " ldrb r0, [r2, #0x5]\n" - " lsl r0, r0, #0x1\n" - " add r0, r4, r0\n" - " ldrh r1, [r2]\n" - " ldrh r2, [r2, #0x2]\n" - " ldrh r3, [r3, #0x30]\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._601 @cond_branch\n" - " add r0, r4, #0\n" - " bl DebugMenu_8078EB0\n" - "._601:\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._603:\n" - " .align 2, 0\n" - "._602:\n" - " .word gUnknown_Debug_839C5F4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8079020() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_PTime() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._604 @ DebugMenu_8078F1C\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._605:\n" - " .align 2, 0\n" - "._604:\n" - " .word DebugMenu_8078F1C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8079058() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._610 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r0, #0x8\n" - " ldsh r1, [r4, r0]\n" - " cmp r1, #0x1\n" - " beq ._606 @cond_branch\n" - " cmp r1, #0x1\n" - " bgt ._607 @cond_branch\n" - " cmp r1, #0\n" - " beq ._608 @cond_branch\n" - " b ._620\n" - "._611:\n" - " .align 2, 0\n" - "._610:\n" - " .word gTasks\n" - "._607:\n" - " cmp r1, #0x2\n" - " beq ._612 @cond_branch\n" - " b ._620\n" - "._608:\n" - " ldr r0, ._615 @ gUnknown_Debug_03004BD0\n" - " str r1, [r0]\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._614\n" - "._616:\n" - " .align 2, 0\n" - "._615:\n" - " .word gUnknown_Debug_03004BD0\n" - "._606:\n" - " ldr r0, ._618 @ gDebug0x839C60C\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r0, #0x14\n" - " mov r1, #0x8\n" - " mov r2, #0x1\n" - " bl DisplayYesNoMenu\n" - "._614:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._620\n" - "._619:\n" - " .align 2, 0\n" - "._618:\n" - " .word gDebug0x839C60C\n" - "._612:\n" - " bl Menu_ProcessInputNoWrap_\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._620 @cond_branch\n" - " cmp r1, #0\n" - " bne ._621 @cond_branch\n" - " ldr r1, ._623 @ gUnknown_Debug_03004BD0\n" - " mov r0, #0x1\n" - " b ._622\n" - "._624:\n" - " .align 2, 0\n" - "._623:\n" - " .word gUnknown_Debug_03004BD0\n" - "._621:\n" - " ldr r1, ._625 @ gUnknown_Debug_03004BD0\n" - " mov r0, #0x0\n" - "._622:\n" - " str r0, [r1]\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._620:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._626:\n" - " .align 2, 0\n" - "._625:\n" - " .word gUnknown_Debug_03004BD0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMurakawa() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._627 @ DebugMenu_8079058\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._628:\n" - " .align 2, 0\n" - "._627:\n" - " .word DebugMenu_8079058+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8079110() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._633 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r1, #0x8\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._629 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._630 @cond_branch\n" - " cmp r0, #0\n" - " beq ._631 @cond_branch\n" - " b ._642\n" - "._634:\n" - " .align 2, 0\n" - "._633:\n" - " .word gTasks\n" - "._630:\n" - " cmp r0, #0x2\n" - " beq ._635 @cond_branch\n" - " b ._642\n" - "._631:\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._637\n" - "._629:\n" - " ldr r0, ._639 @ Str_839C61A\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl MenuPrintMessage\n" - "._637:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._642\n" - "._640:\n" - " .align 2, 0\n" - "._639:\n" - " .word Str_839C61A\n" - "._635:\n" - " bl Menu_UpdateWindowText\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._642 @cond_branch\n" - " ldr r0, ._643 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._642 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._642:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._644:\n" - " .align 2, 0\n" - "._643:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenKiwa() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._645 @ DebugMenu_8079110\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " pop {r1}\n" - " bx r1\n" - "._646:\n" - " .align 2, 0\n" - "._645:\n" - " .word DebugMenu_8079110+1\n" - "\n" - ); + CloseMenu(); + CreateTask(DebugMenu_8078BD4, 80); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 Str_839C574[] = _("write to flash"); +const u8 Str_839C583[] = _("read from flash"); + +const struct MenuAction gUnknown_Debug_839C594[] = { + {Str_839C574, DebugMenu_8078C80}, + {Str_839C583, DebugMenu_8078D30} +}; + +const u8 Str_839C5A4[] = _("Press A, begin to write\n" + "Press B, cancel"); + +bool8 DebugMenu_8078C80(void) +{ + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C5A4, 2, 15); + gMenuCallback = DebugMenu_8078CA8; + return FALSE; +} + +bool8 DebugMenu_8078CA8(void) +{ + if (gMain.newKeys & A_BUTTON) + { + gMenuCallback = DebugMenu_8078CE4; + return FALSE; + } + if (gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +const u8 Str_839C5CC[] =_("かきこみ せいこう"); +const u8 Str_839C5D6[] =_("よみこみせいこう"); +const u8 Str_839C5DF[] =_("かきこみ しっぱい"); +const u8 Str_839C5E9[] =_("よみこみ しっぱい"); + +bool8 DebugMenu_8078CE4(void) +{ + if (DebugMenu_8078E40(0, gSharedMem, 0x20000) == TRUE) + StringCopy(gStringVar4, Str_839C5CC); + else + StringCopy(gStringVar4, Str_839C5DF); + gMenuCallback = DebugMenu_8078D7C; + return FALSE; +} + +bool8 DebugMenu_8078D30(void) +{ + u8 * data = gSharedMem; + u8 i; + + for (i = 0; i < 32; i++) + { + DebugMenu_8078E68(i, data, 0x1000); + data += 0x1000; + } + StringCopy(gStringVar4, Str_839C5D6); + gMenuCallback = DebugMenu_8078D7C; + return FALSE; +} + +bool8 DebugMenu_8078D7C(void) +{ + Menu_DisplayDialogueFrame(); + Menu_PrintText(gStringVar4, 2, 15); + gMenuCallback = DebugMenu_8078DA4; + return FALSE; +} + +bool8 DebugMenu_8078DA4(void) +{ + if (gMain.newKeys & A_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_MeTooBackupMan(void) +{ + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839C594, 12, ARRAY_COUNT(gUnknown_Debug_839C594)); + gMenuCallback = DebugMenu_8078DF0; + return FALSE; +} + +bool8 DebugMenu_8078DF0() +{ + return DebugMenu_8077D78(gUnknown_Debug_839C594); +} + +bool32 DebugMenu_8078E04(u16 a0, u8 * a1, u32 a2) +{ + while (1) + { + if (ProgramFlashSectorAndVerify(a0, a1)) + return FALSE; + if (a2 <= 0x1000) + break; + a2 -= 0x1000; + a1 += 0x1000; + a0++; + } + return TRUE; +} + +bool32 DebugMenu_8078E40(u8 a0, u8 * a1, u32 a2) +{ + bool32 result; + m4aSoundVSyncOff(); + result = DebugMenu_8078E04(a0, a1, a2); + m4aSoundVSyncOn(); + return result; +} + +void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2) +{ + ReadFlash(a0, 0, a1, a2); +} + +struct GameTimeDebugMenuStruct { + u16 unk0; + u16 unk2; + u8 unk4; + u8 unk5; +}; + +const struct GameTimeDebugMenuStruct gUnknown_Debug_839C5F4[] = { + {0, 999, 2, 1}, + {0, 59, 6, 2}, + {0, 59, 9, 3} +}; + +void DebugMenu_8078E80(s16 * a0) +{ + Menu_BlankWindowRect(2, 15, 22, 16); + sub_8071F60(0xd0, gUnknown_Debug_839C5F4[*a0].unk4, 15); +} + +void DebugMenu_8078EB0(s16 * a0) +{ + ConvertIntToDecimalStringN(gStringVar1, a0[1], STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 2, 17); + sub_8071F60(0xf0, 5, 17); + ConvertIntToDecimalStringN(gStringVar1, a0[2], STR_CONV_MODE_LEADING_ZEROS, 2); + Menu_PrintText(gStringVar1, 6, 17); + sub_8071F60(0xf0, 8, 17); + ConvertIntToDecimalStringN(gStringVar1, a0[3], STR_CONV_MODE_LEADING_ZEROS, 2); + Menu_PrintText(gStringVar1, 9, 17); +} + +void DebugMenu_8078F1C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + data[0] = 0; + data[1] = gSaveBlock2.playTimeHours; + data[2] = gSaveBlock2.playTimeMinutes; + data[3] = gSaveBlock2.playTimeSeconds; + + Menu_DisplayDialogueFrame(); + DebugMenu_8078EB0(data); + DebugMenu_8078E80(data); + gTasks[taskId].func = DebugMenu_8078F68; +} + +void DebugMenu_8078F68(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (gMain.newKeys & A_BUTTON) + { + gSaveBlock2.playTimeHours = data[1]; + gSaveBlock2.playTimeMinutes = data[2]; + gSaveBlock2.playTimeSeconds = data[3]; + PlaySE(SE_PINPON); + gTasks[taskId].func = DebugMenu_8079020; + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = DebugMenu_8079020; + } + else if (gMain.newKeys & DPAD_LEFT) + { + if ((u16)data[0] > 0) + { + data[0]--; + DebugMenu_8078E80(data); + } + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if ((u16)data[0] < 2) + { + data[0]++; + DebugMenu_8078E80(data); + } + } + else + { + const struct GameTimeDebugMenuStruct *r2 = gUnknown_Debug_839C5F4 + data[0]; + if (DebugMenu_8077DD8(data + r2->unk5, r2->unk0, r2->unk2, gMain.newAndRepeatedKeys) == TRUE) + DebugMenu_8078EB0(data); + } +} + +void DebugMenu_8079020(u8 taskId) +{ + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +u8 DebugMenu_PTime(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8078F1C, 80); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 gDebug0x839C60C[] = _("Set FLASH ERR"); + +void DebugMenu_8079058(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + gUnknown_Debug_03004BD0 = 0; + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + Menu_PrintText(gDebug0x839C60C, 4, 15); + DisplayYesNoMenu(20, 8, 1); + gTasks[taskId].data[0]++; + break; + case 2: + switch (Menu_ProcessInputNoWrap_()) + { + case -2: + return; + case 0: + gUnknown_Debug_03004BD0 = 1; + break; + default: + gUnknown_Debug_03004BD0 = 0; + break; + } + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + break; + } +} + +u8 DebugMenu_OpenMurakawa(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8079058, 80); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 Str_839C61A[] = _("abcde; abcde: ABCDE; ABCDE:\p" + "Tableaux des verbes du 2{SUPER_E} groupe.\p" + "La1{SUPER_RE} chose à apprendre c’est de lire.\p" + "Tableaux des verbes du 1{SUPER_ER} groupe.\p" + "“あいうえおかきくけコさしすせそたちつてとな”\n" + "<にぬネのはひふへほマみむめもやゆよらりるれろわャッ>\p" + "をんゃゅょアイウエオカキクケサシスルレロワ,"); + +void DebugMenu_8079110(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + MenuPrintMessage(Str_839C61A, 2, 15); + gTasks[taskId].data[0]++; + break; + case 2: + if (Menu_UpdateWindowText() && gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +u8 DebugMenu_OpenKiwa(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8079110, 80); + ScriptContext2_Enable(); + // return TRUE; } #endif |