diff options
author | Cameron Hall <cameronghall@cox.net> | 2018-01-16 22:25:35 -0600 |
---|---|---|
committer | Cameron Hall <cameronghall@cox.net> | 2018-01-16 22:25:35 -0600 |
commit | 91cfb6a564f73f02eb57792f8a0f4aa82e1867d1 (patch) | |
tree | 16c7a1de365dabdd85dcc3621ea366fb79a5282c /src | |
parent | 6b5a7d8611103ab2ee0210dc6d87bd42f4e3317f (diff) |
add debug ifdefs
Diffstat (limited to 'src')
41 files changed, 43665 insertions, 63 deletions
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 990535b4e..5212f5bdc 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -203,6 +203,231 @@ void sub_800E7C4(void) } } +#if DEBUG +__attribute__((naked)) +void InitBattle(void) +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x0\n" + " bl SetHBlankCallback\n" + " mov r0, #0x0\n" + " bl SetVBlankCallback\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x13\n" + " ldr r2, ._10\n" + " mov r0, sp\n" + " bl gScriptFuncs_End+0x3cb4\n" + " ldr r0, ._10 + 4\n" + " strh r4, [r0]\n" + " sub r0, r0, #0xc\n" + " mov r2, #0xf0\n" + " strh r2, [r0]\n" + " add r0, r0, #0x4\n" + " ldr r3, ._10 + 8\n" + " add r1, r3, #0\n" + " strh r1, [r0]\n" + " add r0, r0, #0x4\n" + " strh r4, [r0]\n" + " add r0, r0, #0x2\n" + " strh r4, [r0]\n" + " ldr r0, ._10 + 12\n" + " strh r2, [r0]\n" + " ldr r0, ._10 + 16\n" + " strh r1, [r0]\n" + " bl dp12_8087EA4\n" + " ldr r0, ._10 + 20\n" + " mov r3, #0xf0\n" + " mov r5, #0xf0\n" + " lsl r5, r5, #0x3\n" + " add r2, r0, r5\n" + " mov r1, #0x4f\n" + "._5:\n" + " strh r3, [r0]\n" + " strh r3, [r2]\n" + " add r2, r2, #0x2\n" + " add r0, r0, #0x2\n" + " sub r1, r1, #0x1\n" + " cmp r1, #0\n" + " bge ._5 @cond_branch\n" + " mov r1, #0x50\n" + " ldr r4, ._10 + 24\n" + " ldr r0, ._10 + 20\n" + " ldr r3, ._10 + 28\n" + " mov r5, #0x82\n" + " lsl r5, r5, #0x4\n" + " add r2, r0, r5\n" + " add r0, r0, #0xa0\n" + "._6:\n" + " strh r3, [r0]\n" + " strh r3, [r2]\n" + " add r2, r2, #0x2\n" + " add r0, r0, #0x2\n" + " add r1, r1, #0x1\n" + " cmp r1, #0x9f\n" + " ble ._6 @cond_branch\n" + " ldr r0, [r4]\n" + " ldr r1, [r4, #0x4]\n" + " ldr r2, [r4, #0x8]\n" + " bl sub_80895F8\n" + " ldr r4, ._10 + 32\n" + " add r0, r4, #0\n" + " bl SetUpWindowConfig\n" + " bl ResetPaletteFade\n" + " ldr r0, ._10 + 36\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 40\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 44\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 48\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 52\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 56\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 60\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 64\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 68\n" + " ldrb r1, [r0]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._7 @cond_branch\n" + " bl GetBattleTerrain\n" + " ldr r1, ._10 + 72\n" + " strb r0, [r1]\n" + "._7:\n" + " ldr r0, ._10 + 76\n" + " add r1, r4, #0\n" + " bl InitWindowFromConfig\n" + " ldr r0, ._10 + 80\n" + " ldr r1, ._10 + 84\n" + " bl InitWindowFromConfig\n" + " ldr r0, ._10 + 88\n" + " ldr r1, ._10 + 92\n" + " bl InitWindowFromConfig\n" + " bl sub_800D6D4\n" + " bl sub_800DAB8\n" + " bl ResetSpriteData\n" + " bl ResetTasks\n" + " bl sub_800E23C\n" + " bl FreeAllSpritePalettes\n" + " ldr r1, ._10 + 96\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r0, ._10 + 100\n" + " bl SetVBlankCallback\n" + " bl setup_poochyena_battle\n" + " ldr r0, ._10 + 104\n" + " ldrh r1, [r0]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._8 @cond_branch\n" + " ldr r0, ._10 + 108\n" + " bl SetMainCallback2\n" + " b ._9\n" + "._11:\n" + " .align 2, 0\n" + "._10:\n" + " .word 0x5006000\n" + " .word 0x400004c\n" + " .word 0x5051\n" + " .word gUnknown_030042C4\n" + " .word gUnknown_03004240\n" + " .word gUnknown_03004DE0\n" + " .word gUnknown_081F9674\n" + " .word 0xff10\n" + " .word gWindowConfig_81E6C58\n" + " .word gUnknown_030042A4\n" + " .word gUnknown_030042A0\n" + " .word gUnknown_030042C0\n" + " .word gUnknown_030041B4\n" + " .word gUnknown_03004288\n" + " .word gUnknown_03004280\n" + " .word gUnknown_030041B0\n" + " .word gUnknown_030041B8\n" + " .word gUnknown_02023A14+0x50\n" + " .word gBattleTerrain\n" + " .word gUnknown_03004210\n" + " .word gUnknown_030041D0\n" + " .word gWindowConfig_81E71D0\n" + " .word gUnknown_03004250\n" + " .word gWindowConfig_81E71EC\n" + " .word gReservedSpritePaletteCount\n" + " .word sub_800FCFC+1\n" + " .word gBattleTypeFlags\n" + " .word sub_800F298+1\n" + "._8:\n" + " ldr r0, ._15\n" + " bl SetMainCallback2\n" + "._9:\n" + " ldr r0, ._15 + 4\n" + " ldrh r1, [r0]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._13 @cond_branch\n" + " ldr r0, ._15 + 8\n" + " ldrb r1, [r0]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._13 @cond_branch\n" + " ldr r0, ._15 + 12\n" + " ldr r1, ._15 + 16\n" + " ldrh r1, [r1]\n" + " bl CreateNPCTrainerParty\n" + " bl SetWildMonHeldItem\n" + "._13:\n" + " ldr r0, ._15 + 20\n" + " ldr r1, ._15 + 24\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " mov r2, #0x2\n" + " orr r1, r1, r2\n" + " strb r1, [r0]\n" + " ldr r4, ._15 + 28\n" + " mov r3, #0xfa\n" + " lsl r3, r3, #0x1\n" + " add r5, r4, r3\n" + "._14:\n" + " add r0, r4, #0\n" + " mov r1, #0x3\n" + " bl AdjustFriendship\n" + " add r4, r4, #0x64\n" + " cmp r4, r5\n" + " ble ._14 @cond_branch\n" + " mov r1, #0x0\n" + " ldr r0, ._15 + 32\n" + " strb r1, [r0]\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._16:\n" + " .align 2, 0\n" + "._15:\n" + " .word sub_800EC9C+1\n" + " .word gBattleTypeFlags\n" + " .word gUnknown_02023A14+0x50\n" + " .word gEnemyParty\n" + " .word gTrainerBattleOpponent\n" + " .word gMain\n" + " .word 0x43d\n" + " .word gPlayerParty\n" + " .word gBattleCommunication\n" + "\n" + ); +} +#else void InitBattle(void) { s32 i; @@ -271,6 +496,7 @@ void InitBattle(void) AdjustFriendship(&gPlayerParty[i], 3); gBattleCommunication[0] = 0; } +#endif void sub_800E9EC(void) { @@ -379,6 +605,476 @@ void shedinja_something(struct Pokemon *pkmn) } } +#if DEBUG +__attribute__((naked)) +void sub_800EC9C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " bl RunTasks\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " bl GetMultiplayerId\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r0, ._55\n" + " ldr r1, ._55 + 4\n" + " add r0, r0, r1\n" + " strb r4, [r0]\n" + " mov r0, #0x1\n" + " add r5, r4, #0\n" + " eor r5, r5, r0\n" + " ldr r0, ._55 + 8\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x9\n" + " bls ._53 @cond_branch\n" + " b ._140\n" + "._53:\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._55 + 12\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._56:\n" + " .align 2, 0\n" + "._55:\n" + " .word +0x2000000\n" + " .word 0x160cb\n" + " .word gBattleCommunication\n" + " .word ._57\n" + "._57:\n" + " .word ._58\n" + " .word ._59\n" + " .word ._60\n" + " .word ._61\n" + " .word ._62\n" + " .word ._63\n" + " .word ._64\n" + " .word ._65\n" + " .word ._66\n" + " .word ._67\n" + "._58:\n" + " ldr r2, ._76\n" + " ldrh r1, [r2]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._68 @cond_branch\n" + " ldr r0, ._76 + 4\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._69 @cond_branch\n" + " b ._140\n" + "._69:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._71 @cond_branch\n" + " b ._140\n" + "._71:\n" + " ldr r1, ._76 + 8\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " strb r0, [r1, #0x1]\n" + " bl sub_800E9EC\n" + " bl sub_800EAAC\n" + " ldr r0, ._76 + 12\n" + " ldrb r1, [r0]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._73 @cond_branch\n" + " mov r3, #0x0\n" + " ldr r1, ._76 + 16\n" + " ldr r0, ._76 + 20\n" + "._74:\n" + " strh r3, [r0, #0x18]\n" + " str r1, [r0, #0x14]\n" + " add r0, r0, #0x1c\n" + " add r3, r3, #0x1\n" + " cmp r3, #0x1\n" + " ble ._74 @cond_branch\n" + "._73:\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._76 + 8\n" + " mov r2, #0x20\n" + " bl SendBlock\n" + " ldr r1, ._76 + 24\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " b ._140\n" + "._77:\n" + " .align 2, 0\n" + "._76:\n" + " .word gBattleTypeFlags\n" + " .word gReceivedRemoteLinkPlayers\n" + " .word +0x2000000\n" + " .word gUnknown_02023A14+0x50\n" + " .word 0x2211\n" + " .word gLinkPlayers\n" + " .word gBattleCommunication\n" + "._68:\n" + " mov r0, #0x4\n" + " orr r0, r0, r1\n" + " strh r0, [r2]\n" + " ldr r1, ._79\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " bl sub_800EB08\n" + " b ._140\n" + "._80:\n" + " .align 2, 0\n" + "._79:\n" + " .word gBattleCommunication\n" + "._59:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0x3\n" + " and r1, r1, r0\n" + " cmp r1, #0x3\n" + " beq ._81 @cond_branch\n" + " b ._140\n" + "._81:\n" + " bl ResetBlockReceivedFlags\n" + " mov r3, #0x0\n" + " ldr r0, ._86\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._83 @cond_branch\n" + " cmp r4, #0\n" + " bne ._84 @cond_branch\n" + " ldr r0, ._86 + 4\n" + " ldrh r1, [r0]\n" + " mov r2, #0xc\n" + " b ._85\n" + "._87:\n" + " .align 2, 0\n" + "._86:\n" + " .word gBlockRecvBuffer\n" + " .word gBattleTypeFlags\n" + "._84:\n" + " ldr r0, ._92\n" + " ldrh r1, [r0]\n" + " mov r2, #0x8\n" + "._85:\n" + " orr r1, r1, r2\n" + " strh r1, [r0]\n" + " add r3, r3, #0x1\n" + "._83:\n" + " lsl r7, r5, #0x8\n" + " cmp r3, #0\n" + " bne ._94 @cond_branch\n" + " ldr r0, ._92 + 4\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x1\n" + " add r2, r0, r1\n" + " ldrh r1, [r0]\n" + " add r6, r0, #0\n" + " ldrh r2, [r2]\n" + " cmp r1, r2\n" + " bne ._89 @cond_branch\n" + " cmp r4, #0\n" + " bne ._90 @cond_branch\n" + " ldr r0, ._92\n" + " ldrh r1, [r0]\n" + " mov r2, #0xc\n" + " b ._91\n" + "._93:\n" + " .align 2, 0\n" + "._92:\n" + " .word gBattleTypeFlags\n" + " .word gBlockRecvBuffer\n" + "._90:\n" + " ldr r0, ._96\n" + " ldrh r1, [r0]\n" + " mov r2, #0x8\n" + "._91:\n" + " orr r1, r1, r2\n" + " strh r1, [r0]\n" + " add r3, r3, #0x1\n" + "._89:\n" + " lsl r7, r5, #0x8\n" + " cmp r3, #0\n" + " bne ._94 @cond_branch\n" + " ldrh r1, [r6]\n" + " ldr r0, ._96 + 4\n" + " ldr r2, ._96\n" + " b ._95\n" + "._97:\n" + " .align 2, 0\n" + "._96:\n" + " .word gBattleTypeFlags\n" + " .word 0x101\n" + "._100:\n" + " add r3, r3, #0x1\n" + " cmp r3, #0x1\n" + " bgt ._98 @cond_branch\n" + " lsl r0, r3, #0x8\n" + " add r0, r0, r6\n" + " ldrh r1, [r0]\n" + " ldr r0, ._103\n" + "._95:\n" + " cmp r1, r0\n" + " bls ._100 @cond_branch\n" + " cmp r3, r4\n" + " beq ._100 @cond_branch\n" + "._98:\n" + " cmp r3, #0x2\n" + " bne ._101 @cond_branch\n" + " ldrh r0, [r2]\n" + " mov r1, #0xc\n" + " b ._102\n" + "._104:\n" + " .align 2, 0\n" + "._103:\n" + " .word 0x101\n" + "._101:\n" + " ldrh r0, [r2]\n" + " mov r1, #0x8\n" + "._102:\n" + " orr r0, r0, r1\n" + " strh r0, [r2]\n" + "._94:\n" + " bl sub_800EB08\n" + " ldr r0, ._106\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._106 + 4\n" + " lsl r2, r0, #0x2\n" + " add r2, r2, r0\n" + " lsl r2, r2, #0x3\n" + " add r2, r2, r1\n" + " mov r1, #0x0\n" + " mov r0, #0x87\n" + " lsl r0, r0, #0x1\n" + " strh r0, [r2, #0xa]\n" + " mov r0, #0x5a\n" + " strh r0, [r2, #0xc]\n" + " strh r1, [r2, #0x12]\n" + " ldr r0, ._106 + 8\n" + " ldrb r1, [r0, #0x2]\n" + " ldrb r0, [r0, #0x3]\n" + " lsl r0, r0, #0x8\n" + " orr r1, r1, r0\n" + " strh r1, [r2, #0xe]\n" + " ldr r0, ._106 + 12\n" + " add r0, r0, #0x2\n" + " add r0, r7, r0\n" + " ldrh r0, [r0]\n" + " strh r0, [r2, #0x10]\n" + " b ._129\n" + "._107:\n" + " .align 2, 0\n" + "._106:\n" + " .word sub_800DE30+1\n" + " .word gTasks\n" + " .word +0x2000000\n" + " .word gBlockRecvBuffer\n" + "._60:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._108 @cond_branch\n" + " b ._140\n" + "._108:\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._111\n" + " mov r2, #0xc8\n" + " bl SendBlock\n" + " b ._129\n" + "._112:\n" + " .align 2, 0\n" + "._111:\n" + " .word gPlayerParty\n" + "._61:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0x3\n" + " and r1, r1, r0\n" + " cmp r1, #0x3\n" + " beq ._113 @cond_branch\n" + " b ._140\n" + "._113:\n" + " bl ResetBlockReceivedFlags\n" + " ldr r0, ._116\n" + " lsl r1, r5, #0x8\n" + " ldr r2, ._116 + 4\n" + " add r1, r1, r2\n" + " mov r2, #0xc8\n" + " bl gScriptFuncs_End+0x5bc4\n" + " b ._129\n" + "._117:\n" + " .align 2, 0\n" + "._116:\n" + " .word gEnemyParty\n" + " .word gBlockRecvBuffer\n" + "._62:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._118 @cond_branch\n" + " b ._140\n" + "._118:\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._121\n" + " mov r2, #0xc8\n" + " bl SendBlock\n" + " b ._129\n" + "._122:\n" + " .align 2, 0\n" + "._121:\n" + " .word gPlayerParty+0xc8\n" + "._63:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0x3\n" + " and r1, r1, r0\n" + " cmp r1, #0x3\n" + " beq ._123 @cond_branch\n" + " b ._140\n" + "._123:\n" + " bl ResetBlockReceivedFlags\n" + " ldr r0, ._126\n" + " lsl r1, r5, #0x8\n" + " ldr r2, ._126 + 4\n" + " add r1, r1, r2\n" + " mov r2, #0xc8\n" + " bl gScriptFuncs_End+0x5bc4\n" + " b ._129\n" + "._127:\n" + " .align 2, 0\n" + "._126:\n" + " .word gEnemyParty+0xc8\n" + " .word gBlockRecvBuffer\n" + "._64:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._140 @cond_branch\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._130\n" + " mov r2, #0xc8\n" + " bl SendBlock\n" + " b ._129\n" + "._131:\n" + " .align 2, 0\n" + "._130:\n" + " .word gPlayerParty+0x190\n" + "._65:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0x3\n" + " and r1, r1, r0\n" + " cmp r1, #0x3\n" + " bne ._140 @cond_branch\n" + " bl ResetBlockReceivedFlags\n" + " ldr r4, ._134\n" + " lsl r1, r5, #0x8\n" + " ldr r0, ._134 + 4\n" + " add r1, r1, r0\n" + " add r0, r4, #0\n" + " mov r2, #0xc8\n" + " bl gScriptFuncs_End+0x5bc4\n" + " ldr r1, ._134 + 8\n" + " add r0, r4, r1\n" + " bl shedinja_something\n" + " ldr r1, ._134 + 12\n" + " add r0, r4, r1\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " sub r0, r0, #0xc8\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " sub r0, r0, #0x64\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " add r0, r0, #0x64\n" + " bl shedinja_something\n" + "._129:\n" + " ldr r1, ._134 + 16\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._140\n" + "._135:\n" + " .align 2, 0\n" + "._134:\n" + " .word gEnemyParty+0x190\n" + " .word gBlockRecvBuffer\n" + " .word 0xfffffe70\n" + " .word 0xfffffed4\n" + " .word gBattleCommunication\n" + "._66:\n" + " bl sub_800B950\n" + " ldr r0, ._137\n" + " ldrb r1, [r0]\n" + " add r1, r1, #0x1\n" + " mov r2, #0x0\n" + " strb r1, [r0]\n" + " strb r2, [r0, #0x1]\n" + " strb r2, [r0, #0x2]\n" + " b ._140\n" + "._138:\n" + " .align 2, 0\n" + "._137:\n" + " .word gBattleCommunication\n" + "._67:\n" + " ldr r0, ._141\n" + " add r1, r0, #1\n" + " bl battle_load_something\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._140 @cond_branch\n" + " ldr r2, ._141 + 4\n" + " ldr r1, ._141 + 8\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " ldr r0, ._141 + 12\n" + " str r0, [r1]\n" + " ldr r0, ._141 + 16\n" + " bl SetMainCallback2\n" + " ldr r3, ._141 + 20\n" + " ldrh r2, [r3]\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._140 @cond_branch\n" + " ldr r1, ._141 + 24\n" + " mov r4, #0x80\n" + " lsl r4, r4, #0x4\n" + " add r0, r4, #0\n" + " strh r0, [r1]\n" + " mov r0, #0x20\n" + " orr r0, r0, r2\n" + " strh r0, [r3]\n" + "._140:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._142:\n" + " .align 2, 0\n" + "._141:\n" + " .word gUnknown_02024D1F\n" + " .word gPreBattleCallback1\n" + " .word gMain\n" + " .word debug_sub_80139E4+1\n" + " .word sub_800F808+1\n" + " .word gBattleTypeFlags\n" + " .word gTrainerBattleOpponent\n" + "\n" + ); +} +#else void sub_800EC9C(void) { u8 playerId; @@ -535,6 +1231,7 @@ void sub_800EC9C(void) break; } } +#endif void sub_800F02C(void) { @@ -561,6 +1258,236 @@ void sub_800F02C(void) memcpy(gSharedMem, gUnknown_02023A00, 0x60); } +#ifdef DEBUG +__attribute__((naked)) +void sub_800F104() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " bl GetMultiplayerId\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " ldr r0, ._151\n" + " ldr r2, ._151 + 4\n" + " add r1, r0, r2\n" + " strb r6, [r1]\n" + " ldr r1, ._151 + 8\n" + " add r1, r1, r0\n" + " mov r9, r1\n" + " sub r2, r2, #0x9\n" + " add r2, r2, r0\n" + " mov r8, r2\n" + " bl RunTasks\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " ldr r2, ._151 + 12\n" + " ldrb r0, [r2]\n" + " cmp r0, #0x1\n" + " beq ._147 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._148 @cond_branch\n" + " cmp r0, #0\n" + " beq ._149 @cond_branch\n" + " b ._183\n" + "._152:\n" + " .align 2, 0\n" + "._151:\n" + " .word +0x2000000\n" + " .word 0x160cb\n" + " .word 0x160c4\n" + " .word gBattleCommunication\n" + "._148:\n" + " cmp r0, #0x2\n" + " bne ._153 @cond_branch\n" + " b ._154\n" + "._153:\n" + " cmp r0, #0x3\n" + " bne ._155 @cond_branch\n" + " b ._156\n" + "._155:\n" + " b ._183\n" + "._149:\n" + " ldr r0, ._165\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._158 @cond_branch\n" + " b ._183\n" + "._158:\n" + " ldr r0, ._165 + 4\n" + " ldrb r1, [r0]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._160 @cond_branch\n" + " mov r4, #0x0\n" + " ldr r1, ._165 + 8\n" + " ldr r0, ._165 + 12\n" + "._161:\n" + " strh r4, [r0, #0x18]\n" + " str r1, [r0, #0x14]\n" + " add r0, r0, #0x1c\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x3\n" + " ble ._161 @cond_branch\n" + "._160:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._162 @cond_branch\n" + " b ._183\n" + "._162:\n" + " bl sub_800F02C\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._165 + 16\n" + " mov r2, #0x60\n" + " bl SendBlock\n" + " ldr r1, ._165 + 20\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._183\n" + "._166:\n" + " .align 2, 0\n" + "._165:\n" + " .word gReceivedRemoteLinkPlayers\n" + " .word gUnknown_02023A14+0x50\n" + " .word 0x2211\n" + " .word gLinkPlayers\n" + " .word +0x2000000\n" + " .word gBattleCommunication\n" + "._147:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0xf\n" + " and r1, r1, r0\n" + " cmp r1, #0xf\n" + " bne ._183 @cond_branch\n" + " bl ResetBlockReceivedFlags\n" + " mov r4, #0x0\n" + " lsl r0, r6, #0x3\n" + " sub r0, r0, r6\n" + " lsl r5, r0, #0x2\n" + " mov r7, #0x0\n" + "._175:\n" + " cmp r4, r6\n" + " beq ._174 @cond_branch\n" + " ldr r2, ._172\n" + " add r0, r7, r2\n" + " ldrh r1, [r0, #0x18]\n" + " mov r3, #0x1\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._169 @cond_branch\n" + " add r0, r5, r2\n" + " ldrh r1, [r0, #0x18]\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._170 @cond_branch\n" + " b ._174\n" + "._173:\n" + " .align 2, 0\n" + "._172:\n" + " .word gLinkPlayers\n" + "._169:\n" + " add r0, r5, r2\n" + " ldrh r1, [r0, #0x18]\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._174 @cond_branch\n" + "._170:\n" + " lsl r1, r4, #0x8\n" + " ldr r0, ._177\n" + " add r1, r1, r0\n" + " ldr r0, ._177 + 4\n" + " mov r2, #0x60\n" + " bl gScriptFuncs_End+0x5bc4\n" + "._174:\n" + " add r7, r7, #0x1c\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x3\n" + " ble ._175 @cond_branch\n" + " ldr r1, ._177 + 8\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._177 + 12\n" + " ldr r0, [r1, #0x8]\n" + " mov r2, r9\n" + " str r0, [r2]\n" + " ldr r0, ._177 + 16\n" + " ldrh r0, [r0]\n" + " mov r2, r8\n" + " strh r0, [r2]\n" + " ldr r0, ._177 + 20\n" + " str r0, [r1, #0x8]\n" + " mov r0, #0x5\n" + " mov r1, #0x0\n" + " bl OpenPartyMenu\n" + " b ._183\n" + "._178:\n" + " .align 2, 0\n" + "._177:\n" + " .word gBlockRecvBuffer\n" + " .word gUnknown_02023A00\n" + " .word gBattleCommunication\n" + " .word gMain\n" + " .word gBattleTypeFlags\n" + " .word sub_800F104+1\n" + "._154:\n" + " ldr r0, ._181\n" + " ldrb r1, [r0, #0x7]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._183 @cond_branch\n" + " mov r0, #0x3\n" + " strb r0, [r2]\n" + " bl sub_800832C\n" + " b ._183\n" + "._182:\n" + " .align 2, 0\n" + "._181:\n" + " .word gPaletteFade\n" + "._156:\n" + " ldr r0, ._184\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._183 @cond_branch\n" + " ldr r1, ._184 + 4\n" + " mov r2, r8\n" + " ldrh r0, [r2]\n" + " strh r0, [r1]\n" + " ldr r1, ._184 + 8\n" + " mov r2, r9\n" + " ldr r0, [r2]\n" + " str r0, [r1, #0x8]\n" + " ldr r0, ._184 + 12\n" + " bl SetMainCallback2\n" + "._183:\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._185:\n" + " .align 2, 0\n" + "._184:\n" + " .word gReceivedRemoteLinkPlayers\n" + " .word gBattleTypeFlags\n" + " .word gMain\n" + " .word InitBattle+1\n" + "\n" + ); +} +#else void sub_800F104(void) { u8 playerId; @@ -625,7 +1552,774 @@ void sub_800F104(void) break; } } +#endif +#ifdef DEBUG +__attribute__((naked)) +void sub_800F298() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " bl GetMultiplayerId\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " ldr r0, ._188\n" + " ldr r1, ._188 + 4\n" + " add r0, r0, r1\n" + " strb r6, [r0]\n" + " bl RunTasks\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " ldr r0, ._188 + 8\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x7\n" + " bls ._186 @cond_branch\n" + " b ._352\n" + "._186:\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._188 + 12\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._189:\n" + " .align 2, 0\n" + "._188:\n" + " .word +0x2000000\n" + " .word 0x160cb\n" + " .word gBattleCommunication\n" + " .word ._190\n" + "._190:\n" + " .word ._191\n" + " .word ._192\n" + " .word ._193\n" + " .word ._194\n" + " .word ._195\n" + " .word ._196\n" + " .word ._197\n" + " .word ._198\n" + "._191:\n" + " ldr r0, ._206\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._199 @cond_branch\n" + " b ._352\n" + "._199:\n" + " ldr r0, ._206 + 4\n" + " ldrb r1, [r0]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._201 @cond_branch\n" + " mov r4, #0x0\n" + " ldr r1, ._206 + 8\n" + " ldr r0, ._206 + 12\n" + "._202:\n" + " strh r4, [r0, #0x18]\n" + " str r1, [r0, #0x14]\n" + " add r0, r0, #0x1c\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x3\n" + " ble ._202 @cond_branch\n" + "._201:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._203 @cond_branch\n" + " b ._352\n" + "._203:\n" + " ldr r4, ._206 + 16\n" + " mov r0, #0x1\n" + " strb r0, [r4]\n" + " strb r0, [r4, #0x1]\n" + " bl sub_800E9EC\n" + " bl sub_800EAAC\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r1, r4, #0\n" + " mov r2, #0x20\n" + " bl SendBlock\n" + " b ._300\n" + "._207:\n" + " .align 2, 0\n" + "._206:\n" + " .word gReceivedRemoteLinkPlayers\n" + " .word gUnknown_02023A14+0x50\n" + " .word 0x2211\n" + " .word gLinkPlayers\n" + " .word +0x2000000\n" + "._192:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0xf\n" + " and r1, r1, r0\n" + " cmp r1, #0xf\n" + " beq ._208 @cond_branch\n" + " b ._352\n" + "._208:\n" + " bl ResetBlockReceivedFlags\n" + " mov r4, #0x0\n" + " ldr r0, ._213\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._210 @cond_branch\n" + " cmp r6, #0\n" + " bne ._211 @cond_branch\n" + " ldr r0, ._213 + 4\n" + " ldrh r1, [r0]\n" + " mov r2, #0xc\n" + " b ._212\n" + "._214:\n" + " .align 2, 0\n" + "._213:\n" + " .word gBlockRecvBuffer\n" + " .word gBattleTypeFlags\n" + "._211:\n" + " ldr r0, ._221\n" + " ldrh r1, [r0]\n" + " mov r2, #0x8\n" + "._212:\n" + " orr r1, r1, r2\n" + " strh r1, [r0]\n" + " add r4, r4, #0x1\n" + "._210:\n" + " cmp r4, #0\n" + " bne ._223 @cond_branch\n" + " mov r2, #0x0\n" + " ldr r1, ._221 + 4\n" + " add r5, r1, #0\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x1\n" + "._217:\n" + " add r1, r1, r3\n" + " add r2, r2, #0x1\n" + " cmp r2, #0x3\n" + " bgt ._216 @cond_branch\n" + " ldrh r0, [r5]\n" + " ldrh r7, [r1]\n" + " cmp r0, r7\n" + " beq ._217 @cond_branch\n" + "._216:\n" + " cmp r2, #0x4\n" + " bne ._218 @cond_branch\n" + " cmp r6, #0\n" + " bne ._219 @cond_branch\n" + " ldr r0, ._221\n" + " ldrh r1, [r0]\n" + " mov r2, #0xc\n" + " b ._220\n" + "._222:\n" + " .align 2, 0\n" + "._221:\n" + " .word gBattleTypeFlags\n" + " .word gBlockRecvBuffer\n" + "._219:\n" + " ldr r0, ._233\n" + " ldrh r1, [r0]\n" + " mov r2, #0x8\n" + "._220:\n" + " orr r1, r1, r2\n" + " strh r1, [r0]\n" + " add r4, r4, #0x1\n" + "._218:\n" + " cmp r4, #0\n" + " bne ._223 @cond_branch\n" + " ldr r0, ._233 + 4\n" + " ldrh r2, [r0]\n" + " ldr r1, ._233 + 8\n" + " add r3, r0, #0\n" + " ldr r5, ._233\n" + " cmp r2, r1\n" + " beq ._224 @cond_branch\n" + "._230:\n" + " lsl r0, r4, #0x8\n" + " add r0, r0, r3\n" + " ldrh r0, [r0]\n" + " ldr r1, ._233 + 8\n" + " cmp r0, r1\n" + " bls ._225 @cond_branch\n" + " cmp r4, r6\n" + " bne ._227 @cond_branch\n" + "._225:\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x3\n" + " bgt ._227 @cond_branch\n" + " lsl r0, r4, #0x8\n" + " add r0, r0, r3\n" + " ldrh r0, [r0]\n" + " cmp r0, r1\n" + " bne ._230 @cond_branch\n" + "._224:\n" + " cmp r4, r6\n" + " beq ._230 @cond_branch\n" + " cmp r4, r6\n" + " bge ._230 @cond_branch\n" + "._227:\n" + " cmp r4, #0x4\n" + " bne ._231 @cond_branch\n" + " ldrh r0, [r5]\n" + " mov r1, #0xc\n" + " b ._232\n" + "._234:\n" + " .align 2, 0\n" + "._233:\n" + " .word gBattleTypeFlags\n" + " .word gBlockRecvBuffer\n" + " .word 0x101\n" + "._231:\n" + " ldrh r0, [r5]\n" + " mov r1, #0x8\n" + "._232:\n" + " orr r0, r0, r1\n" + " strh r0, [r5]\n" + "._223:\n" + " bl sub_800EB08\n" + " ldr r0, ._239\n" + " ldr r1, ._239 + 4\n" + " mov r2, #0x96\n" + " lsl r2, r2, #0x1\n" + " bl gScriptFuncs_End+0x5bc4\n" + " ldr r0, ._239 + 8\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._239 + 12\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " mov r2, #0x0\n" + " mov r0, #0x87\n" + " lsl r0, r0, #0x1\n" + " strh r0, [r1, #0xa]\n" + " mov r0, #0x5a\n" + " strh r0, [r1, #0xc]\n" + " strh r2, [r1, #0x12]\n" + " strh r2, [r1, #0xe]\n" + " strh r2, [r1, #0x10]\n" + " add r2, r1, #0\n" + " ldr r0, ._239 + 16\n" + " add r3, r0, #2\n" + " ldr r6, ._239 + 20\n" + " mov r5, #0x3f\n" + " mov r7, #0x80\n" + " lsl r7, r7, #0x1\n" + " mov r4, #0x3\n" + "._247:\n" + " ldrh r0, [r6, #0x18]\n" + " cmp r0, #0x1\n" + " beq ._235 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._236 @cond_branch\n" + " cmp r0, #0\n" + " beq ._237 @cond_branch\n" + " b ._246\n" + "._240:\n" + " .align 2, 0\n" + "._239:\n" + " .word +0x201d000\n" + " .word gPlayerParty\n" + " .word sub_800DE30+1\n" + " .word gTasks\n" + " .word gBlockRecvBuffer\n" + " .word gLinkPlayers\n" + "._236:\n" + " cmp r0, #0x2\n" + " beq ._241 @cond_branch\n" + " cmp r0, #0x3\n" + " beq ._242 @cond_branch\n" + " b ._246\n" + "._237:\n" + " ldrh r0, [r3]\n" + " add r1, r5, #0\n" + " and r1, r1, r0\n" + " b ._244\n" + "._235:\n" + " ldrh r0, [r3]\n" + " add r1, r5, #0\n" + " and r1, r1, r0\n" + " b ._245\n" + "._241:\n" + " ldrh r0, [r3]\n" + " add r1, r5, #0\n" + " and r1, r1, r0\n" + " lsl r1, r1, #0x6\n" + "._244:\n" + " ldrh r0, [r2, #0xe]\n" + " orr r1, r1, r0\n" + " strh r1, [r2, #0xe]\n" + " b ._246\n" + "._242:\n" + " ldrh r0, [r3]\n" + " add r1, r5, #0\n" + " and r1, r1, r0\n" + " lsl r1, r1, #0x6\n" + "._245:\n" + " ldrh r0, [r2, #0x10]\n" + " orr r1, r1, r0\n" + " strh r1, [r2, #0x10]\n" + "._246:\n" + " add r3, r3, r7\n" + " add r6, r6, #0x1c\n" + " sub r4, r4, #0x1\n" + " cmp r4, #0\n" + " bge ._247 @cond_branch\n" + " bl ZeroPlayerPartyMons\n" + " bl ZeroEnemyPartyMons\n" + " ldr r1, ._251\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._193:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._248 @cond_branch\n" + " b ._352\n" + "._248:\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._251 + 4\n" + " mov r2, #0xc8\n" + " bl SendBlock\n" + " b ._300\n" + "._252:\n" + " .align 2, 0\n" + "._251:\n" + " .word gBattleCommunication\n" + " .word +0x201d000\n" + "._194:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0xf\n" + " and r1, r1, r0\n" + " cmp r1, #0xf\n" + " beq ._253 @cond_branch\n" + " b ._352\n" + "._253:\n" + " bl ResetBlockReceivedFlags\n" + " mov r4, #0x0\n" + " lsl r0, r6, #0x3\n" + " sub r0, r0, r6\n" + " lsl r0, r0, #0x2\n" + " mov r8, r0\n" + " ldr r5, ._260\n" + " mov r7, #0x0\n" + "._294:\n" + " cmp r4, r6\n" + " bne ._255 @cond_branch\n" + " ldr r0, ._260 + 4\n" + " add r0, r7, r0\n" + " ldrh r0, [r0, #0x18]\n" + " cmp r0, #0x2\n" + " bgt ._256 @cond_branch\n" + " cmp r0, #0x1\n" + " bge ._257 @cond_branch\n" + " cmp r0, #0\n" + " beq ._258 @cond_branch\n" + " b ._291\n" + "._261:\n" + " .align 2, 0\n" + "._260:\n" + " .word gBlockRecvBuffer\n" + " .word gLinkPlayers\n" + "._256:\n" + " cmp r0, #0x3\n" + " bne ._291 @cond_branch\n" + "._258:\n" + " ldr r0, ._264\n" + " b ._283\n" + "._265:\n" + " .align 2, 0\n" + "._264:\n" + " .word gPlayerParty\n" + "._257:\n" + " ldr r0, ._267\n" + " b ._283\n" + "._268:\n" + " .align 2, 0\n" + "._267:\n" + " .word gPlayerParty+0x12c\n" + "._255:\n" + " ldr r2, ._272\n" + " add r0, r7, r2\n" + " ldrh r1, [r0, #0x18]\n" + " mov r3, #0x1\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._269 @cond_branch\n" + " mov r1, r8\n" + " add r0, r1, r2\n" + " ldrh r1, [r0, #0x18]\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._270 @cond_branch\n" + " b ._274\n" + "._273:\n" + " .align 2, 0\n" + "._272:\n" + " .word gLinkPlayers\n" + "._269:\n" + " mov r1, r8\n" + " add r0, r1, r2\n" + " ldrh r1, [r0, #0x18]\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._274 @cond_branch\n" + "._270:\n" + " add r0, r7, r2\n" + " ldrh r2, [r0, #0x18]\n" + " cmp r2, #0x2\n" + " bgt ._275 @cond_branch\n" + " cmp r2, #0x1\n" + " bge ._276 @cond_branch\n" + " cmp r2, #0\n" + " beq ._277 @cond_branch\n" + " b ._291\n" + "._275:\n" + " cmp r2, #0x3\n" + " bne ._291 @cond_branch\n" + "._277:\n" + " ldr r0, ._281\n" + " b ._283\n" + "._282:\n" + " .align 2, 0\n" + "._281:\n" + " .word gPlayerParty\n" + "._276:\n" + " ldr r0, ._284\n" + " b ._283\n" + "._285:\n" + " .align 2, 0\n" + "._284:\n" + " .word gPlayerParty+0x12c\n" + "._274:\n" + " add r0, r7, r2\n" + " ldrh r2, [r0, #0x18]\n" + " cmp r2, #0x2\n" + " bgt ._286 @cond_branch\n" + " cmp r2, #0x1\n" + " bge ._287 @cond_branch\n" + " cmp r2, #0\n" + " beq ._288 @cond_branch\n" + " b ._291\n" + "._286:\n" + " cmp r2, #0x3\n" + " bne ._291 @cond_branch\n" + "._288:\n" + " ldr r0, ._292\n" + "._283:\n" + " add r1, r5, #0\n" + " mov r2, #0xc8\n" + " bl gScriptFuncs_End+0x5bc4\n" + " b ._291\n" + "._293:\n" + " .align 2, 0\n" + "._292:\n" + " .word gEnemyParty\n" + "._287:\n" + " ldr r0, ._296\n" + " add r1, r5, #0\n" + " mov r2, #0xc8\n" + " bl gScriptFuncs_End+0x5bc4\n" + "._291:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " add r5, r5, r0\n" + " add r7, r7, #0x1c\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x3\n" + " ble ._294 @cond_branch\n" + " b ._300\n" + "._297:\n" + " .align 2, 0\n" + "._296:\n" + " .word gEnemyParty+0x12c\n" + "._195:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._298 @cond_branch\n" + " b ._352\n" + "._298:\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._301\n" + " mov r2, #0x64\n" + " bl SendBlock\n" + " b ._300\n" + "._302:\n" + " .align 2, 0\n" + "._301:\n" + " .word +0x201d0c8\n" + "._196:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0xf\n" + " and r1, r1, r0\n" + " cmp r1, #0xf\n" + " beq ._303 @cond_branch\n" + " b ._352\n" + "._303:\n" + " bl ResetBlockReceivedFlags\n" + " mov r4, #0x0\n" + " lsl r0, r6, #0x3\n" + " sub r0, r0, r6\n" + " lsl r0, r0, #0x2\n" + " mov r8, r0\n" + " ldr r5, ._310\n" + " mov r7, #0x0\n" + "._344:\n" + " cmp r4, r6\n" + " bne ._305 @cond_branch\n" + " ldr r0, ._310 + 4\n" + " add r0, r7, r0\n" + " ldrh r0, [r0, #0x18]\n" + " cmp r0, #0x2\n" + " bgt ._306 @cond_branch\n" + " cmp r0, #0x1\n" + " bge ._307 @cond_branch\n" + " cmp r0, #0\n" + " beq ._308 @cond_branch\n" + " b ._341\n" + "._311:\n" + " .align 2, 0\n" + "._310:\n" + " .word gBlockRecvBuffer\n" + " .word gLinkPlayers\n" + "._306:\n" + " cmp r0, #0x3\n" + " bne ._341 @cond_branch\n" + "._308:\n" + " ldr r0, ._314\n" + " b ._333\n" + "._315:\n" + " .align 2, 0\n" + "._314:\n" + " .word gPlayerParty+0xc8\n" + "._307:\n" + " ldr r0, ._317\n" + " b ._333\n" + "._318:\n" + " .align 2, 0\n" + "._317:\n" + " .word gPlayerParty+0x1f4\n" + "._305:\n" + " ldr r2, ._322\n" + " add r0, r7, r2\n" + " ldrh r1, [r0, #0x18]\n" + " mov r3, #0x1\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._319 @cond_branch\n" + " mov r1, r8\n" + " add r0, r1, r2\n" + " ldrh r1, [r0, #0x18]\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._320 @cond_branch\n" + " b ._324\n" + "._323:\n" + " .align 2, 0\n" + "._322:\n" + " .word gLinkPlayers\n" + "._319:\n" + " mov r1, r8\n" + " add r0, r1, r2\n" + " ldrh r1, [r0, #0x18]\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._324 @cond_branch\n" + "._320:\n" + " add r0, r7, r2\n" + " ldrh r2, [r0, #0x18]\n" + " cmp r2, #0x2\n" + " bgt ._325 @cond_branch\n" + " cmp r2, #0x1\n" + " bge ._326 @cond_branch\n" + " cmp r2, #0\n" + " beq ._327 @cond_branch\n" + " b ._341\n" + "._325:\n" + " cmp r2, #0x3\n" + " bne ._341 @cond_branch\n" + "._327:\n" + " ldr r0, ._331\n" + " b ._333\n" + "._332:\n" + " .align 2, 0\n" + "._331:\n" + " .word gPlayerParty+0xc8\n" + "._326:\n" + " ldr r0, ._334\n" + " b ._333\n" + "._335:\n" + " .align 2, 0\n" + "._334:\n" + " .word gPlayerParty+0x1f4\n" + "._324:\n" + " add r0, r7, r2\n" + " ldrh r2, [r0, #0x18]\n" + " cmp r2, #0x2\n" + " bgt ._336 @cond_branch\n" + " cmp r2, #0x1\n" + " bge ._337 @cond_branch\n" + " cmp r2, #0\n" + " beq ._338 @cond_branch\n" + " b ._341\n" + "._336:\n" + " cmp r2, #0x3\n" + " bne ._341 @cond_branch\n" + "._338:\n" + " ldr r0, ._342\n" + "._333:\n" + " add r1, r5, #0\n" + " mov r2, #0x64\n" + " bl gScriptFuncs_End+0x5bc4\n" + " b ._341\n" + "._343:\n" + " .align 2, 0\n" + "._342:\n" + " .word gEnemyParty+0xc8\n" + "._337:\n" + " ldr r0, ._346\n" + " add r1, r5, #0\n" + " mov r2, #0x64\n" + " bl gScriptFuncs_End+0x5bc4\n" + "._341:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " add r5, r5, r0\n" + " add r7, r7, #0x1c\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x3\n" + " ble ._344 @cond_branch\n" + " ldr r4, ._346 + 4\n" + " add r0, r4, #0\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " add r0, r0, #0x64\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " add r0, r0, #0xc8\n" + " bl shedinja_something\n" + " mov r1, #0x96\n" + " lsl r1, r1, #0x1\n" + " add r0, r4, r1\n" + " bl shedinja_something\n" + " mov r7, #0xc8\n" + " lsl r7, r7, #0x1\n" + " add r0, r4, r7\n" + " bl shedinja_something\n" + " mov r1, #0xfa\n" + " lsl r1, r1, #0x1\n" + " add r0, r4, r1\n" + " bl shedinja_something\n" + " ldr r4, ._346 + 8\n" + " add r0, r4, #0\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " add r0, r0, #0x64\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " add r0, r0, #0xc8\n" + " bl shedinja_something\n" + " sub r7, r7, #0x64\n" + " add r0, r4, r7\n" + " bl shedinja_something\n" + " mov r1, #0xc8\n" + " lsl r1, r1, #0x1\n" + " add r0, r4, r1\n" + " bl shedinja_something\n" + " add r7, r7, #0xc8\n" + " add r0, r4, r7\n" + " bl shedinja_something\n" + "._300:\n" + " ldr r1, ._346 + 12\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._352\n" + "._347:\n" + " .align 2, 0\n" + "._346:\n" + " .word gEnemyParty+0x1f4\n" + " .word gPlayerParty\n" + " .word gEnemyParty\n" + " .word gBattleCommunication\n" + "._197:\n" + " bl sub_800B950\n" + " ldr r0, ._349\n" + " ldrb r1, [r0]\n" + " add r1, r1, #0x1\n" + " mov r2, #0x0\n" + " strb r1, [r0]\n" + " strb r2, [r0, #0x1]\n" + " strb r2, [r0, #0x2]\n" + " b ._352\n" + "._350:\n" + " .align 2, 0\n" + "._349:\n" + " .word gBattleCommunication\n" + "._198:\n" + " ldr r0, ._353\n" + " add r1, r0, #1\n" + " bl battle_load_something\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._352 @cond_branch\n" + " ldr r2, ._353 + 4\n" + " ldr r1, ._353 + 8\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " ldr r0, ._353 + 12\n" + " str r0, [r1]\n" + " ldr r0, ._353 + 16\n" + " bl SetMainCallback2\n" + " ldr r3, ._353 + 20\n" + " ldrh r2, [r3]\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._352 @cond_branch\n" + " ldr r1, ._353 + 24\n" + " mov r4, #0x80\n" + " lsl r4, r4, #0x4\n" + " add r0, r4, #0\n" + " strh r0, [r1]\n" + " mov r0, #0x20\n" + " orr r0, r0, r2\n" + " strh r0, [r3]\n" + "._352:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._354:\n" + " .align 2, 0\n" + "._353:\n" + " .word gUnknown_02024D1F\n" + " .word gPreBattleCallback1\n" + " .word gMain\n" + " .word debug_sub_80139E4+1\n" + " .word sub_800F808+1\n" + " .word gBattleTypeFlags\n" + " .word gTrainerBattleOpponent\n" + "\n" + ); +} +#else void sub_800F298(void) { u8 playerId; @@ -893,7 +2587,119 @@ void sub_800F298(void) break; } } +#endif +#if DEBUG +__attribute__((naked)) +void BattleMainCB2(void) +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " ldr r4, ._358\n" + " ldrh r2, [r4, #0x2c]\n" + " mov r1, #0x82\n" + " lsl r1, r1, #0x1\n" + " add r0, r1, #0\n" + " and r0, r0, r2\n" + " cmp r0, r1\n" + " bne ._357 @cond_branch\n" + " ldr r2, ._358 + 4\n" + " ldr r1, ._358 + 8\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x1\n" + " strh r0, [r2]\n" + " ldr r0, ._358 + 12\n" + " add r2, r4, r0\n" + " ldrb r1, [r2]\n" + " mov r0, #0x3\n" + " neg r0, r0\n" + " and r0, r0, r1\n" + " strb r0, [r2]\n" + " ldr r1, ._358 + 16\n" + " mov r0, #0x3\n" + " strb r0, [r1, #0x15]\n" + " ldr r0, ._358 + 20\n" + " ldr r0, [r0]\n" + " str r0, [r4]\n" + " bl ZeroEnemyPartyMons\n" + " mov r0, #0x5a\n" + " bl gScriptFuncs_End+0x148c\n" + " ldr r0, ._358 + 24\n" + " ldrh r1, [r0]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._356 @cond_branch\n" + " ldr r0, ._358 + 28\n" + " bl SetMainCallback2\n" + " b ._357\n" + "._359:\n" + " .align 2, 0\n" + "._358:\n" + " .word gMain\n" + " .word gScriptResult\n" + " .word gBattleOutcome\n" + " .word 0x43d\n" + " .word gUnknown_03004DC0\n" + " .word gPreBattleCallback1\n" + " .word gBattleTypeFlags\n" + " .word sub_805465C+1\n" + "._356:\n" + " ldr r0, [r4, #0x8]\n" + " bl SetMainCallback2\n" + "._357:\n" + " ldr r5, ._361\n" + " ldrh r1, [r5]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._360 @cond_branch\n" + " lsr r0, r1, #0x2\n" + " mov r4, #0x1\n" + " and r0, r0, r4\n" + " str r4, [sp]\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl debug_sub_8008264\n" + " ldrh r0, [r5]\n" + " lsr r0, r0, #0x2\n" + " and r0, r0, r4\n" + " str r4, [sp]\n" + " mov r1, #0x1\n" + " mov r2, #0x15\n" + " mov r3, #0x1\n" + " bl debug_sub_8008264\n" + " ldrh r0, [r5]\n" + " lsr r0, r0, #0x2\n" + " and r0, r0, r4\n" + " str r4, [sp]\n" + " mov r1, #0x1\n" + " mov r2, #0x29\n" + " mov r3, #0x1\n" + " bl debug_sub_8008264\n" + "._360:\n" + " ldr r0, ._361 + 4\n" + " bl sub_800374C\n" + " bl UpdatePaletteFade\n" + " bl RunTasks\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._362:\n" + " .align 2, 0\n" + "._361:\n" + " .word gBattleTypeFlags\n" + " .word gUnknown_03004210\n" + "\n" + ); +} +#else void BattleMainCB2(void) { AnimateSprites(); @@ -902,6 +2708,7 @@ void BattleMainCB2(void) UpdatePaletteFade(); RunTasks(); } +#endif void sub_800F828(struct Sprite *sprite) { @@ -1275,6 +3082,5525 @@ void c2_081284E0(void) } } +// A LOT of debug code! +#if DEBUG +__attribute__((naked)) +void debug_sub_8010800() +{ + asm( + " push {lr}\n" + " bl debug_sub_8010818\n" + " bl debug_sub_80108B8\n" + " ldr r1, ._496\n" + " mov r0, #0x0\n" + " str r0, [r1]\n" + " pop {r0}\n" + " bx r0\n" + "._497:\n" + " .align 2, 0\n" + "._496:\n" + " .word gBattleBuffersTransferData+0x100\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8010818() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " ldr r1, ._501\n" + " ldr r0, ._501 + 4\n" + " strh r0, [r1]\n" + " add r2, r1, #0\n" + " add r2, r2, #0x46\n" + " strh r0, [r2]\n" + " ldr r0, ._501 + 8\n" + " add r4, r1, #0\n" + " add r4, r4, #0x48\n" + " add r3, r0, #0\n" + " add r3, r3, #0x12\n" + " add r2, r1, #2\n" + " mov r1, #0x1d\n" + "._498:\n" + " ldrh r0, [r3]\n" + " strh r0, [r2]\n" + " strh r0, [r4]\n" + " add r4, r4, #0x2\n" + " add r3, r3, #0xa\n" + " add r2, r2, #0x2\n" + " sub r1, r1, #0x1\n" + " cmp r1, #0\n" + " bge ._498 @cond_branch\n" + " mov r1, #0x0\n" + " ldr r4, ._501 + 12\n" + " ldr r7, ._501 + 16\n" + " ldr r6, ._501 + 20\n" + " mov r0, #0x30\n" + " add r0, r0, r7\n" + " mov ip, r0\n" + "._500:\n" + " mov r0, #0x0\n" + " strb r0, [r4]\n" + " add r5, r1, #1\n" + " lsl r3, r1, #0x3\n" + "._499:\n" + " ldrb r2, [r4]\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r3\n" + " add r1, r1, r7\n" + " lsl r0, r2, #0x2\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r6\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " ldrb r2, [r4]\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r3\n" + " add r1, r1, ip\n" + " lsl r0, r2, #0x2\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r6\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " strb r0, [r4]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x3\n" + " bls ._499 @cond_branch\n" + " add r1, r5, #0\n" + " cmp r1, #0x5\n" + " ble ._500 @cond_branch\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._502:\n" + " .align 2, 0\n" + "._501:\n" + " .word gUnknown_02023A14+0x52\n" + " .word 0x115\n" + " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_030043A8\n" + " .word gUnknown_02023A14+0xde\n" + " .word UnkDebug0+0x1b4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80108B8() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " bl gScriptFuncs_End+0x19f4\n" + " mov r0, #0x0\n" + " bl SetHBlankCallback\n" + " mov r0, #0x0\n" + " bl SetVBlankCallback\n" + " mov r3, #0x0\n" + " str r3, [sp]\n" + " ldr r2, ._507\n" + " mov r0, sp\n" + " str r0, [r2]\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x13\n" + " str r1, [r2, #0x4]\n" + " ldr r0, ._507 + 4\n" + " str r0, [r2, #0x8]\n" + " ldr r0, [r2, #0x8]\n" + " ldr r2, ._507 + 8\n" + " mov r0, #0x1\n" + " strh r0, [r2]\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x13\n" + " mov r4, #0x9a\n" + " lsl r4, r4, #0x5\n" + " add r0, r4, #0\n" + " strh r0, [r2]\n" + " ldr r0, ._507 + 12\n" + " mov r5, #0x0\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 16\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 20\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 24\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 28\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 32\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 36\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 40\n" + " strh r3, [r0]\n" + " add r2, r2, #0x8\n" + " ldr r4, ._507 + 44\n" + " add r0, r4, #0\n" + " strh r0, [r2]\n" + " add r2, r2, #0x2\n" + " ldr r4, ._507 + 48\n" + " add r0, r4, #0\n" + " strh r0, [r2]\n" + " ldr r0, ._507 + 52\n" + " strh r3, [r0]\n" + " add r0, r0, #0x4\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 56\n" + " bl LZDecompressVram\n" + " ldr r0, ._507 + 60\n" + " ldr r1, ._507 + 64\n" + " bl sub_800D238\n" + " ldr r4, ._507 + 68\n" + " mov r1, #0xa0\n" + " lsl r1, r1, #0x13\n" + " add r0, r4, #0\n" + " bl LZDecompressVram\n" + " ldr r1, ._507 + 72\n" + " add r0, r4, #0\n" + " bl LZDecompressVram\n" + " bl gScriptFuncs_End+0x1a70\n" + " ldr r0, ._507 + 76\n" + " bl SetVBlankCallback\n" + " ldr r0, ._507 + 80\n" + " bl SetMainCallback2\n" + " bl ResetTasks\n" + " bl ResetSpriteData\n" + " bl remove_some_task\n" + " ldr r4, ._507 + 84\n" + " add r0, r4, #0\n" + " bl SetUpWindowConfig\n" + " ldr r0, ._507 + 88\n" + " add r1, r4, #0\n" + " bl InitWindowFromConfig\n" + " ldr r0, ._507 + 92\n" + " strb r5, [r0]\n" + " ldr r0, ._507 + 96\n" + " strb r5, [r0]\n" + " ldr r0, ._507 + 100\n" + " strb r5, [r0]\n" + " mov r4, #0x0\n" + "._503:\n" + " lsl r0, r4, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x1e\n" + " ble ._503 @cond_branch\n" + " ldr r1, ._507 + 104\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " add r4, r1, #0\n" + "._504:\n" + " bl debug_sub_8012294\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " strb r0, [r4]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x3\n" + " bls ._504 @cond_branch\n" + " ldr r0, ._507 + 100\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + " bl debug_sub_8012540\n" + " bl debug_nullsub_3\n" + " ldr r1, ._507 + 104\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " bl debug_sub_80125A0\n" + " ldr r0, ._507 + 108\n" + " add r0, r0, #0x44\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x8\n" + " bne ._505 @cond_branch\n" + " bl debug_sub_801174C\n" + " b ._506\n" + "._508:\n" + " .align 2, 0\n" + "._507:\n" + " .word 0x40000d4\n" + " .word 0x85006000\n" + " .word 0x4000200\n" + " .word gUnknown_030042A4\n" + " .word gUnknown_030042A0\n" + " .word gUnknown_030042C0\n" + " .word gUnknown_030041B4\n" + " .word gUnknown_03004288\n" + " .word gUnknown_03004280\n" + " .word gUnknown_030041B0\n" + " .word gUnknown_030041B8\n" + " .word 0x1f09\n" + " .word 0x4801\n" + " .word 0x4000050\n" + " .word gMonShinyPalette_CircledQuestionMark+0x18\n" + " .word gMonShinyPalette_CircledQuestionMark+0x834\n" + " .word +0x2000000\n" + " .word gMonShinyPalette_CircledQuestionMark+0xa8c\n" + " .word 0x50001e0\n" + " .word debug_sub_8011D40+1\n" + " .word debug_sub_8010CAC+1\n" + " .word gWindowConfig_81E6C3C\n" + " .word gUnknown_Debug_03004370\n" + " .word gUnknown_Debug_03004360\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_030043A8\n" + " .word gUnknown_02023A14+0x52\n" + "._505:\n" + " ldr r0, ._510\n" + " mov r1, #0x0\n" + " mov r4, #0x7\n" + " ldr r2, ._510 + 4\n" + " add r0, r0, r2\n" + "._509:\n" + " strb r1, [r0]\n" + " sub r0, r0, #0x1\n" + " sub r4, r4, #0x1\n" + " cmp r4, #0\n" + " bge ._509 @cond_branch\n" + "._506:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._511:\n" + " .align 2, 0\n" + "._510:\n" + " .word +0x2000000\n" + " .word 0x160bb\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8010A7C() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r2, r1, #0x18\n" + " mov r1, #0x0\n" + " ldr r5, ._514\n" + " cmp r1, r2\n" + " bge ._512 @cond_branch\n" + " add r3, r5, #0\n" + "._513:\n" + " add r0, r1, r3\n" + " strb r4, [r0]\n" + " add r1, r1, #0x1\n" + " cmp r1, r2\n" + " blt ._513 @cond_branch\n" + "._512:\n" + " add r1, r1, r5\n" + " mov r0, #0xff\n" + " strb r0, [r1]\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._515:\n" + " .align 2, 0\n" + "._514:\n" + " .word gBattleTextBuff1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8010AAC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov ip, r0\n" + " ldr r6, ._520\n" + " ldr r4, ._520 + 4\n" + " ldr r5, ._520 + 8\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x2\n" + " add r7, r0, r1\n" + " lsl r1, r7, #0x1\n" + " ldr r3, ._520 + 12\n" + " ldrb r2, [r3]\n" + " mov r0, #0x46\n" + " mul r2, r2, r0\n" + " add r1, r1, r2\n" + " add r1, r1, r4\n" + " mov r0, #0x0\n" + " ldsh r1, [r1, r0]\n" + " lsl r0, r1, #0x3\n" + " sub r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldrb r0, [r0, #0x10]\n" + " add r6, r3, #0\n" + " cmp r0, #0xfe\n" + " beq ._516 @cond_branch\n" + " cmp r0, #0xfe\n" + " bgt ._517 @cond_branch\n" + " cmp r0, #0\n" + " beq ._518 @cond_branch\n" + " b ._523\n" + "._521:\n" + " .align 2, 0\n" + "._520:\n" + " .word gBaseStats\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_03004360\n" + "._517:\n" + " cmp r0, #0xff\n" + " beq ._522 @cond_branch\n" + " b ._523\n" + "._518:\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r2\n" + " add r0, r0, r4\n" + " mov r1, #0x2\n" + " b ._528\n" + "._516:\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r2\n" + " add r0, r0, r4\n" + " mov r1, #0x3\n" + " b ._528\n" + "._522:\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r2\n" + " add r0, r0, r4\n" + " mov r1, #0x4\n" + " b ._528\n" + "._523:\n" + " ldrb r0, [r5]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " add r1, r1, #0x4\n" + " lsl r1, r1, #0x1\n" + " ldrb r0, [r6]\n" + " mov r3, #0x46\n" + " mul r0, r0, r3\n" + " add r1, r1, r0\n" + " add r1, r1, r4\n" + " ldrh r2, [r1]\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " strh r0, [r1]\n" + " mov r1, ip\n" + " cmp r1, #0\n" + " beq ._527 @cond_branch\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r0, #0x4\n" + " lsl r0, r0, #0x1\n" + " ldrb r1, [r6]\n" + " mul r1, r1, r3\n" + " add r0, r0, r1\n" + " add r0, r0, r4\n" + " ldrh r1, [r0]\n" + " mov r2, #0x1\n" + " eor r1, r1, r2\n" + " b ._528\n" + "._527:\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r0, #0x4\n" + " lsl r0, r0, #0x1\n" + " ldrb r1, [r6]\n" + " mul r1, r1, r3\n" + " add r0, r0, r1\n" + " add r0, r0, r4\n" + " mov r1, ip\n" + "._528:\n" + " strh r1, [r0]\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8010B80() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " mov r0, #0x0\n" + " mov ip, r0\n" + " ldr r4, ._534\n" + " ldr r1, ._534 + 4\n" + " mov r8, r1\n" + " ldr r5, ._534 + 8\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " mov r2, r8\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x1\n" + " ldr r3, ._534 + 12\n" + " ldrb r2, [r3]\n" + " mov r1, #0x46\n" + " mul r1, r1, r2\n" + " add r0, r0, r1\n" + " add r0, r0, r4\n" + " ldrb r7, [r0]\n" + " lsl r1, r7, #0x18\n" + " asr r0, r1, #0x18\n" + " mov r9, r4\n" + " add r2, r5, #0\n" + " add r4, r3, #0\n" + " cmp r0, #0x9\n" + " ble ._529 @cond_branch\n" + "._530:\n" + " mov r3, #0xf6\n" + " lsl r3, r3, #0x18\n" + " add r0, r1, r3\n" + " lsr r7, r0, #0x18\n" + " mov r1, ip\n" + " lsl r0, r1, #0x18\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x11\n" + " add r0, r0, r3\n" + " lsr r0, r0, #0x18\n" + " mov ip, r0\n" + " lsl r1, r7, #0x18\n" + " asr r0, r1, #0x18\n" + " cmp r0, #0x9\n" + " bgt ._530 @cond_branch\n" + "._529:\n" + " mov r0, #0x2\n" + " and r0, r0, r6\n" + " cmp r0, #0\n" + " beq ._531 @cond_branch\n" + " mov r0, #0x1\n" + " and r0, r0, r6\n" + " cmp r0, #0\n" + " beq ._532 @cond_branch\n" + " mov r1, ip\n" + " lsl r0, r1, #0x18\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x11\n" + " b ._533\n" + "._535:\n" + " .align 2, 0\n" + "._534:\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_03004360\n" + "._532:\n" + " mov r1, ip\n" + " lsl r0, r1, #0x18\n" + " mov r3, #0xff\n" + " lsl r3, r3, #0x18\n" + "._533:\n" + " add r0, r0, r3\n" + " lsr r0, r0, #0x18\n" + " mov ip, r0\n" + " mov r1, ip\n" + " lsl r0, r1, #0x18\n" + " cmp r0, #0\n" + " bge ._536 @cond_branch\n" + " mov r3, #0x9\n" + " mov ip, r3\n" + "._536:\n" + " mov r1, ip\n" + " lsl r0, r1, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, #0x9\n" + " ble ._542 @cond_branch\n" + " mov r3, #0x0\n" + " mov ip, r3\n" + " b ._542\n" + "._531:\n" + " mov r0, #0x1\n" + " and r0, r0, r6\n" + " cmp r0, #0\n" + " beq ._539 @cond_branch\n" + " lsl r0, r7, #0x18\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x11\n" + " add r0, r0, r1\n" + " b ._540\n" + "._539:\n" + " lsl r0, r7, #0x18\n" + " mov r3, #0xff\n" + " lsl r3, r3, #0x18\n" + " add r0, r0, r3\n" + "._540:\n" + " lsr r7, r0, #0x18\n" + " lsl r0, r7, #0x18\n" + " cmp r0, #0\n" + " bgt ._541 @cond_branch\n" + " mov r7, #0x9\n" + "._541:\n" + " lsl r0, r7, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, #0x9\n" + " ble ._542 @cond_branch\n" + " mov r7, #0x1\n" + "._542:\n" + " ldrb r0, [r2]\n" + " lsl r2, r0, #0x2\n" + " add r2, r2, r0\n" + " mov r0, r8\n" + " ldrb r0, [r0]\n" + " add r2, r2, r0\n" + " lsl r2, r2, #0x1\n" + " ldrb r1, [r4]\n" + " mov r0, #0x1\n" + " eor r0, r0, r1\n" + " mov r1, #0x46\n" + " add r3, r0, #0\n" + " mul r3, r3, r1\n" + " add r3, r2, r3\n" + " add r3, r3, r9\n" + " ldrb r0, [r4]\n" + " mul r0, r0, r1\n" + " add r2, r2, r0\n" + " add r2, r2, r9\n" + " mov r1, ip\n" + " lsl r0, r1, #0x18\n" + " asr r0, r0, #0x18\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x1\n" + " lsl r0, r7, #0x18\n" + " asr r0, r0, #0x18\n" + " add r0, r0, r1\n" + " strh r0, [r2]\n" + " strh r0, [r3]\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8010CAC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffff0\n" + " ldr r4, ._553\n" + " ldrh r1, [r4, #0x28]\n" + " mov r0, #0x81\n" + " lsl r0, r0, #0x2\n" + " cmp r1, r0\n" + " bne ._543 @cond_branch\n" + " bl DoSoftReset\n" + "._543:\n" + " ldrh r0, [r4, #0x2a]\n" + " cmp r0, #0x4\n" + " beq ._544 @cond_branch\n" + " b ._559\n" + "._544:\n" + " ldr r0, ._553 + 4\n" + " ldrb r1, [r0]\n" + " mov r8, r0\n" + " cmp r1, #0x5\n" + " bhi ._546 @cond_branch\n" + " ldr r0, ._553 + 8\n" + " mov r1, #0x0\n" + " strb r1, [r0]\n" + " bl debug_sub_8012628\n" + " ldr r0, ._553 + 12\n" + " bl SetMainCallback2\n" + "._546:\n" + " ldr r0, ._553 + 16\n" + " ldrb r3, [r0]\n" + " cmp r3, #0\n" + " bne ._555 @cond_branch\n" + " mov r1, r8\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x6\n" + " bne ._555 @cond_branch\n" + " ldr r0, ._553 + 20\n" + " str r0, [r4, #0x8]\n" + " ldr r4, ._553 + 24\n" + " ldr r0, ._553 + 28\n" + " ldrh r1, [r0]\n" + " ldrb r2, [r0, #0x2]\n" + " str r3, [sp]\n" + " str r3, [sp, #0x4]\n" + " str r3, [sp, #0x8]\n" + " str r3, [sp, #0xc]\n" + " add r0, r4, #0\n" + " mov r3, #0x20\n" + " bl CreateMon\n" + " mov r5, #0x0\n" + " add r6, r4, #0\n" + "._549:\n" + " add r1, r5, #0\n" + " add r1, r1, #0xd\n" + " lsl r4, r5, #0x1\n" + " ldr r0, ._553 + 32\n" + " add r4, r4, r0\n" + " add r0, r6, #0\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " add r1, r5, #0\n" + " add r1, r1, #0x11\n" + " mov r2, #0x0\n" + " ldsh r0, [r4, r2]\n" + " lsl r2, r0, #0x1\n" + " add r2, r2, r0\n" + " lsl r2, r2, #0x2\n" + " ldr r0, ._553 + 36\n" + " add r2, r2, r0\n" + " add r0, r6, #0\n" + " bl SetMonData\n" + " add r5, r5, #0x1\n" + " cmp r5, #0x3\n" + " ble ._549 @cond_branch\n" + " ldr r2, ._553 + 28\n" + " mov r4, #0x3c\n" + " ldsh r0, [r2, r4]\n" + " cmp r0, #0x1\n" + " beq ._550 @cond_branch\n" + " cmp r0, #0x2\n" + " beq ._551 @cond_branch\n" + " b ._555\n" + "._554:\n" + " .align 2, 0\n" + "._553:\n" + " .word gMain\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_030043A8\n" + " .word debug_sub_8011498+1\n" + " .word gUnknown_Debug_030043A0\n" + " .word debug_sub_80108B8+1\n" + " .word gPlayerParty\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_02023A14+0xde\n" + " .word gBattleMoves+0x4\n" + "._550:\n" + " ldr r1, ._556\n" + " ldr r0, ._556 + 4\n" + " str r0, [r1]\n" + " ldr r0, ._556 + 8\n" + " ldrh r1, [r2, #0xa]\n" + " mov r2, #0x1\n" + " mov r3, #0x0\n" + " bl EvolutionScene\n" + " b ._555\n" + "._557:\n" + " .align 2, 0\n" + "._556:\n" + " .word gUnknown_03005E94\n" + " .word debug_sub_80108B8+1\n" + " .word gPlayerParty\n" + "._551:\n" + " bl debug_sub_8012688\n" + "._555:\n" + " ldr r0, ._565\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x1\n" + " bne ._559 @cond_branch\n" + " ldr r0, ._565 + 4\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x6\n" + " bne ._559 @cond_branch\n" + " ldr r3, ._565 + 8\n" + " ldrb r2, [r3, #0x15]\n" + " lsl r0, r2, #0x1d\n" + " lsr r5, r0, #0x1f\n" + " lsl r0, r2, #0x1f\n" + " lsr r0, r0, #0x1f\n" + " lsl r0, r0, #0x1\n" + " orr r5, r5, r0\n" + " add r5, r5, #0x1\n" + " cmp r5, #0x4\n" + " bne ._560 @cond_branch\n" + " mov r5, #0x0\n" + "._560:\n" + " mov r0, #0x1\n" + " add r1, r5, #0\n" + " and r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " mov r0, #0x5\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " mov r1, #0x2\n" + " and r5, r5, r1\n" + " lsr r2, r5, #0x1\n" + " sub r1, r1, #0x4\n" + " and r0, r0, r1\n" + " orr r0, r0, r2\n" + " strb r0, [r3, #0x15]\n" + " lsl r0, r0, #0x1f\n" + " lsr r0, r0, #0x1f\n" + " bl gScriptFuncs_End+0x2aa0\n" + " bl debug_nullsub_3\n" + "._559:\n" + " ldr r4, ._565 + 12\n" + " ldrh r0, [r4, #0x2a]\n" + " cmp r0, #0x8\n" + " bne ._561 @cond_branch\n" + " bl debug_sub_801174C\n" + "._561:\n" + " ldrh r0, [r4, #0x2a]\n" + " cmp r0, #0x40\n" + " bne ._562 @cond_branch\n" + " bl debug_sub_80125E4\n" + " ldr r1, ._565 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._563 @cond_branch\n" + " sub r0, r0, #0x1\n" + " b ._564\n" + "._566:\n" + " .align 2, 0\n" + "._565:\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gSaveBlock2\n" + " .word gMain\n" + "._563:\n" + " mov r0, #0x6\n" + "._564:\n" + " strb r0, [r1]\n" + " bl debug_sub_8011E74\n" + " ldr r0, ._570\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + " bl debug_sub_80125A0\n" + "._562:\n" + " ldr r0, ._570 + 4\n" + " ldrh r0, [r0, #0x2a]\n" + " cmp r0, #0x80\n" + " bne ._567 @cond_branch\n" + " bl debug_sub_80125E4\n" + " ldr r1, ._570\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x6\n" + " bne ._568 @cond_branch\n" + " mov r0, #0x0\n" + " b ._569\n" + "._571:\n" + " .align 2, 0\n" + "._570:\n" + " .word gUnknown_Debug_030043A4\n" + " .word gMain\n" + "._568:\n" + " add r0, r0, #0x1\n" + "._569:\n" + " strb r0, [r1]\n" + " bl debug_sub_8011E74\n" + " ldr r0, ._575\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + " bl debug_sub_80125A0\n" + "._567:\n" + " ldr r0, ._575 + 4\n" + " ldrh r0, [r0, #0x2a]\n" + " cmp r0, #0x20\n" + " bne ._572 @cond_branch\n" + " bl debug_sub_80125E4\n" + " ldr r2, ._575 + 8\n" + " ldrb r0, [r2]\n" + " add r1, r0, #0\n" + " cmp r1, #0\n" + " beq ._573 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r2]\n" + " b ._577\n" + "._576:\n" + " .align 2, 0\n" + "._575:\n" + " .word gUnknown_Debug_030043A4\n" + " .word gMain\n" + " .word gUnknown_Debug_030043A0\n" + "._573:\n" + " ldr r3, ._581\n" + " ldrb r0, [r3]\n" + " cmp r0, #0\n" + " beq ._577 @cond_branch\n" + " strb r1, [r3]\n" + " mov r0, #0x4\n" + " strb r0, [r2]\n" + " ldr r0, ._581 + 4\n" + " strh r1, [r0]\n" + " bl debug_sub_8011E5C\n" + " bl debug_sub_8011E74\n" + " ldr r0, ._581 + 8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + "._577:\n" + " bl debug_sub_80125A0\n" + "._572:\n" + " ldr r0, ._581 + 12\n" + " ldrh r0, [r0, #0x2a]\n" + " cmp r0, #0x10\n" + " bne ._578 @cond_branch\n" + " bl debug_sub_80125E4\n" + " ldr r2, ._581 + 16\n" + " ldrb r0, [r2]\n" + " cmp r0, #0x4\n" + " beq ._579 @cond_branch\n" + " add r0, r0, #0x1\n" + " strb r0, [r2]\n" + " b ._583\n" + "._582:\n" + " .align 2, 0\n" + "._581:\n" + " .word gUnknown_Debug_03004360\n" + " .word gUnknown_030042C0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gMain\n" + " .word gUnknown_Debug_030043A0\n" + "._579:\n" + " ldr r3, ._587\n" + " ldrb r1, [r3]\n" + " cmp r1, #0\n" + " bne ._583 @cond_branch\n" + " mov r0, #0x1\n" + " strb r0, [r3]\n" + " strb r1, [r2]\n" + " ldr r1, ._587 + 4\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " bl debug_sub_8011E5C\n" + " bl debug_sub_8011E74\n" + " ldr r0, ._587 + 8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + "._583:\n" + " bl debug_sub_80125A0\n" + "._578:\n" + " ldr r0, ._587 + 12\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._584 @cond_branch\n" + " b ._607\n" + "._584:\n" + " ldr r0, ._587 + 16\n" + " ldrb r2, [r0]\n" + " ldr r0, ._587 + 8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r2, r0\n" + " sub r0, r0, #0x1e\n" + " cmp r0, #0x4\n" + " bhi ._586 @cond_branch\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._587 + 20\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._588:\n" + " .align 2, 0\n" + "._587:\n" + " .word gUnknown_Debug_03004360\n" + " .word gUnknown_030042C0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gMain\n" + " .word gUnknown_Debug_030043A0\n" + " .word ._589\n" + "._589:\n" + " .word ._590\n" + " .word ._591\n" + " .word ._592\n" + " .word ._593\n" + " .word ._594\n" + "._591:\n" + " bl debug_sub_8010818\n" + " b ._595\n" + "._592:\n" + " ldr r1, ._597\n" + " mov r0, #0x1f\n" + " mov r2, #0xec\n" + " bl debug_sub_80132C8\n" + "._595:\n" + " bl debug_sub_8011E5C\n" + " bl debug_sub_8011E74\n" + " bl debug_sub_8012540\n" + " bl debug_nullsub_3\n" + " ldr r0, ._597 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + " b ._607\n" + "._598:\n" + " .align 2, 0\n" + "._597:\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_030043A4\n" + "._593:\n" + " ldr r1, ._600\n" + " mov r0, #0x1f\n" + " mov r2, #0xec\n" + " bl debug_sub_8013294\n" + " b ._607\n" + "._601:\n" + " .align 2, 0\n" + "._600:\n" + " .word gUnknown_02023A14+0x52\n" + "._594:\n" + " ldr r3, ._604\n" + " add r2, r3, #0\n" + " add r2, r2, #0x44\n" + " ldrh r1, [r2]\n" + " mov r4, #0x0\n" + " ldsh r0, [r2, r4]\n" + " cmp r0, #0\n" + " beq ._602 @cond_branch\n" + " sub r0, r1, #1\n" + " strh r0, [r2]\n" + " add r1, r3, #0\n" + " add r1, r1, #0x8a\n" + " ldrh r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strh r0, [r1]\n" + " b ._603\n" + "._605:\n" + " .align 2, 0\n" + "._604:\n" + " .word gUnknown_02023A14+0x52\n" + "._602:\n" + " mov r1, #0x8\n" + " strh r1, [r2]\n" + " add r0, r3, #0\n" + " add r0, r0, #0x8a\n" + " strh r1, [r0]\n" + "._603:\n" + " bl debug_sub_8012540\n" + " b ._607\n" + "._590:\n" + " mov r0, #0x0\n" + " bl debug_sub_8010B80\n" + " ldr r2, ._608\n" + " ldr r0, ._608 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " b ._607\n" + "._609:\n" + " .align 2, 0\n" + "._608:\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + "._586:\n" + " cmp r2, #0x4\n" + " bne ._611 @cond_branch\n" + " cmp r1, #0x5\n" + " bhi ._611 @cond_branch\n" + " mov r0, #0x1\n" + " bl debug_sub_8010AAC\n" + " b ._613\n" + "._611:\n" + " ldr r6, ._618\n" + " ldr r5, ._618 + 4\n" + " ldr r4, ._618 + 8\n" + " ldrb r0, [r4]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " ldrb r0, [r5]\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x1\n" + " ldr r2, ._618 + 12\n" + " ldrb r0, [r2]\n" + " mov r3, #0x46\n" + " mul r0, r0, r3\n" + " add r1, r1, r0\n" + " add r1, r1, r6\n" + " ldrh r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strh r0, [r1]\n" + " ldrb r0, [r4]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " ldrb r5, [r5]\n" + " add r1, r1, r5\n" + " lsl r0, r1, #0x1\n" + " ldrb r2, [r2]\n" + " mul r2, r2, r3\n" + " add r0, r0, r2\n" + " add r3, r0, r6\n" + " mov r4, #0x0\n" + " ldsh r2, [r3, r4]\n" + " ldr r4, ._618 + 16\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r1, r0, #0x1\n" + " add r0, r4, #0\n" + " add r0, r0, #0x8\n" + " add r0, r1, r0\n" + " ldrh r0, [r0]\n" + " cmp r2, r0\n" + " bge ._613 @cond_branch\n" + " add r0, r4, #6\n" + " add r0, r1, r0\n" + " ldrh r0, [r0]\n" + " strh r0, [r3]\n" + "._613:\n" + " ldr r5, ._618 + 4\n" + " ldrb r0, [r5]\n" + " cmp r0, #0\n" + " bne ._614 @cond_branch\n" + " mov r0, #0x0\n" + " bl debug_sub_8010AAC\n" + " ldr r0, ._618 + 8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r0, #0x4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + "._614:\n" + " ldr r4, ._618 + 8\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r5, [r5]\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + "._607:\n" + " ldr r0, ._618 + 20\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._615 @cond_branch\n" + " b ._638\n" + "._615:\n" + " ldr r0, ._618 + 4\n" + " ldrb r2, [r0]\n" + " ldr r0, ._618 + 8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r2, r0\n" + " sub r0, r0, #0x1e\n" + " cmp r0, #0x4\n" + " bhi ._617 @cond_branch\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._618 + 24\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._619:\n" + " .align 2, 0\n" + "._618:\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_03004360\n" + " .word UnkDebug0+0x6c\n" + " .word gMain\n" + " .word ._620\n" + "._620:\n" + " .word ._621\n" + " .word ._622\n" + " .word ._623\n" + " .word ._624\n" + " .word ._625\n" + "._622:\n" + " bl debug_sub_8010818\n" + " b ._626\n" + "._623:\n" + " ldr r1, ._628\n" + " mov r0, #0x1f\n" + " mov r2, #0xec\n" + " bl debug_sub_80132C8\n" + "._626:\n" + " bl debug_sub_8011E5C\n" + " bl debug_sub_8011E74\n" + " bl debug_sub_8012540\n" + " bl debug_nullsub_3\n" + " ldr r0, ._628 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + " b ._638\n" + "._629:\n" + " .align 2, 0\n" + "._628:\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_030043A4\n" + "._624:\n" + " ldr r1, ._631\n" + " mov r0, #0x1f\n" + " mov r2, #0xec\n" + " bl debug_sub_8013294\n" + " b ._638\n" + "._632:\n" + " .align 2, 0\n" + "._631:\n" + " .word gUnknown_02023A14+0x52\n" + "._625:\n" + " ldr r3, ._635\n" + " add r2, r3, #0\n" + " add r2, r2, #0x44\n" + " ldrh r1, [r2]\n" + " mov r4, #0x0\n" + " ldsh r0, [r2, r4]\n" + " cmp r0, #0x7\n" + " bgt ._633 @cond_branch\n" + " add r0, r1, #1\n" + " strh r0, [r2]\n" + " add r1, r3, #0\n" + " add r1, r1, #0x8a\n" + " ldrh r0, [r1]\n" + " add r0, r0, #0x1\n" + " strh r0, [r1]\n" + " b ._634\n" + "._636:\n" + " .align 2, 0\n" + "._635:\n" + " .word gUnknown_02023A14+0x52\n" + "._633:\n" + " mov r1, #0x0\n" + " strh r1, [r2]\n" + " add r0, r3, #0\n" + " add r0, r0, #0x8a\n" + " strh r1, [r0]\n" + "._634:\n" + " bl debug_sub_8012540\n" + " b ._638\n" + "._621:\n" + " mov r0, #0x1\n" + " bl debug_sub_8010B80\n" + " ldr r2, ._639\n" + " ldr r0, ._639 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " b ._638\n" + "._640:\n" + " .align 2, 0\n" + "._639:\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + "._617:\n" + " cmp r2, #0x4\n" + " bne ._642 @cond_branch\n" + " cmp r1, #0x5\n" + " bhi ._642 @cond_branch\n" + " mov r0, #0x1\n" + " bl debug_sub_8010AAC\n" + " b ._644\n" + "._642:\n" + " ldr r6, ._650\n" + " ldr r5, ._650 + 4\n" + " ldr r4, ._650 + 8\n" + " ldrb r0, [r4]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " ldrb r0, [r5]\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x1\n" + " ldr r2, ._650 + 12\n" + " ldrb r0, [r2]\n" + " mov r3, #0x46\n" + " mul r0, r0, r3\n" + " add r1, r1, r0\n" + " add r1, r1, r6\n" + " ldrh r0, [r1]\n" + " add r0, r0, #0x1\n" + " strh r0, [r1]\n" + " ldrb r0, [r4]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " ldrb r5, [r5]\n" + " add r1, r1, r5\n" + " lsl r0, r1, #0x1\n" + " ldrb r2, [r2]\n" + " mul r2, r2, r3\n" + " add r0, r0, r2\n" + " add r3, r0, r6\n" + " mov r4, #0x0\n" + " ldsh r2, [r3, r4]\n" + " ldr r4, ._650 + 16\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r1, r0, #0x1\n" + " add r0, r4, #6\n" + " add r0, r1, r0\n" + " ldrh r0, [r0]\n" + " cmp r2, r0\n" + " ble ._644 @cond_branch\n" + " add r0, r4, #0\n" + " add r0, r0, #0x8\n" + " add r0, r1, r0\n" + " ldrh r0, [r0]\n" + " strh r0, [r3]\n" + "._644:\n" + " ldr r5, ._650 + 4\n" + " ldrb r0, [r5]\n" + " cmp r0, #0\n" + " bne ._645 @cond_branch\n" + " mov r0, #0x0\n" + " bl debug_sub_8010AAC\n" + " ldr r0, ._650 + 8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r0, #0x4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + "._645:\n" + " ldr r4, ._650 + 8\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r5, [r5]\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + "._638:\n" + " ldr r0, ._650 + 20\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._646 @cond_branch\n" + " ldr r0, ._650 + 4\n" + " ldrb r1, [r0]\n" + " ldr r2, ._650 + 8\n" + " mov r8, r2\n" + " add r7, r0, #0\n" + " cmp r1, #0x4\n" + " bne ._648 @cond_branch\n" + " ldrb r0, [r2]\n" + " cmp r0, #0x5\n" + " bhi ._648 @cond_branch\n" + " mov r0, #0x1\n" + " bl debug_sub_8010AAC\n" + " b ._653\n" + "._651:\n" + " .align 2, 0\n" + "._650:\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_03004360\n" + " .word UnkDebug0+0x6c\n" + " .word gMain\n" + "._648:\n" + " mov r4, r8\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r1, [r7]\n" + " add r0, r0, r1\n" + " cmp r0, #0x1e\n" + " bne ._652 @cond_branch\n" + " mov r0, #0x2\n" + " bl debug_sub_8010B80\n" + " b ._653\n" + "._652:\n" + " ldr r4, ._655\n" + " lsl r1, r0, #0x1\n" + " ldr r3, ._655 + 4\n" + " ldrb r2, [r3]\n" + " mov r0, #0x46\n" + " mul r0, r0, r2\n" + " add r1, r1, r0\n" + " add r1, r1, r4\n" + " ldrh r0, [r1]\n" + " sub r0, r0, #0xa\n" + " strh r0, [r1]\n" + " add r6, r3, #0\n" + " ldr r5, ._655 + 8\n" + " b ._654\n" + "._656:\n" + " .align 2, 0\n" + "._655:\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_03004360\n" + " .word UnkDebug0+0x6c\n" + "._657:\n" + " add r0, r5, #6\n" + " add r0, r1, r0\n" + " ldrh r0, [r0]\n" + " ldrh r2, [r3]\n" + " add r0, r0, r2\n" + " strh r0, [r3]\n" + "._654:\n" + " mov r1, r8\n" + " ldrb r0, [r1]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " ldrb r2, [r7]\n" + " add r1, r1, r2\n" + " lsl r2, r1, #0x1\n" + " ldrb r3, [r6]\n" + " mov r0, #0x46\n" + " mul r0, r0, r3\n" + " add r2, r2, r0\n" + " add r3, r2, r4\n" + " mov r0, #0x0\n" + " ldsh r2, [r3, r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r1, r0, #0x1\n" + " add r0, r5, #0\n" + " add r0, r0, #0x8\n" + " add r0, r1, r0\n" + " ldrh r0, [r0]\n" + " cmp r2, r0\n" + " blt ._657 @cond_branch\n" + "._653:\n" + " ldr r5, ._663\n" + " ldrb r0, [r5]\n" + " cmp r0, #0\n" + " bne ._658 @cond_branch\n" + " mov r0, #0x0\n" + " bl debug_sub_8010AAC\n" + " ldr r0, ._663 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r0, #0x4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + "._658:\n" + " ldr r4, ._663 + 4\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r5, [r5]\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + "._646:\n" + " ldr r0, ._663 + 8\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._659 @cond_branch\n" + " ldr r0, ._663\n" + " ldrb r1, [r0]\n" + " ldr r2, ._663 + 4\n" + " mov r8, r2\n" + " add r7, r0, #0\n" + " cmp r1, #0x4\n" + " bne ._661 @cond_branch\n" + " ldrb r0, [r2]\n" + " cmp r0, #0x5\n" + " bhi ._661 @cond_branch\n" + " mov r0, #0x1\n" + " bl debug_sub_8010AAC\n" + " b ._666\n" + "._664:\n" + " .align 2, 0\n" + "._663:\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gMain\n" + "._661:\n" + " mov r4, r8\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r1, [r7]\n" + " add r0, r0, r1\n" + " cmp r0, #0x1e\n" + " bne ._665 @cond_branch\n" + " mov r0, #0x3\n" + " bl debug_sub_8010B80\n" + " b ._666\n" + "._665:\n" + " ldr r4, ._668\n" + " lsl r1, r0, #0x1\n" + " ldr r3, ._668 + 4\n" + " ldrb r2, [r3]\n" + " mov r0, #0x46\n" + " mul r0, r0, r2\n" + " add r1, r1, r0\n" + " add r1, r1, r4\n" + " ldrh r0, [r1]\n" + " add r0, r0, #0xa\n" + " strh r0, [r1]\n" + " add r6, r3, #0\n" + " ldr r5, ._668 + 8\n" + " b ._667\n" + "._669:\n" + " .align 2, 0\n" + "._668:\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_03004360\n" + " .word UnkDebug0+0x6c\n" + "._670:\n" + " ldrh r0, [r3]\n" + " sub r0, r0, r1\n" + " strh r0, [r3]\n" + "._667:\n" + " mov r2, r8\n" + " ldrb r0, [r2]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " ldrb r0, [r7]\n" + " add r1, r1, r0\n" + " lsl r2, r1, #0x1\n" + " ldrb r3, [r6]\n" + " mov r0, #0x46\n" + " mul r0, r0, r3\n" + " add r2, r2, r0\n" + " add r3, r2, r4\n" + " mov r0, #0x0\n" + " ldsh r2, [r3, r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x1\n" + " add r1, r5, #6\n" + " add r0, r0, r1\n" + " ldrh r1, [r0]\n" + " cmp r2, r1\n" + " bgt ._670 @cond_branch\n" + "._666:\n" + " ldr r5, ._672\n" + " ldrb r0, [r5]\n" + " cmp r0, #0\n" + " bne ._671 @cond_branch\n" + " mov r0, #0x0\n" + " bl debug_sub_8010AAC\n" + " ldr r0, ._672 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r0, #0x4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + "._671:\n" + " ldr r4, ._672 + 4\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r5, [r5]\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + "._659:\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " add sp, sp, #0x10\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._673:\n" + " .align 2, 0\n" + "._672:\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8011498() +{ + 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" + " ldr r2, ._687\n" + " ldr r0, ._687 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r9, r0\n" + " ldr r4, ._687 + 8\n" + " ldrh r1, [r4, #0x28]\n" + " mov r0, #0x81\n" + " lsl r0, r0, #0x2\n" + " cmp r1, r0\n" + " bne ._674 @cond_branch\n" + " bl DoSoftReset\n" + "._674:\n" + " ldrh r0, [r4, #0x2a]\n" + " cmp r0, #0x4\n" + " bne ._675 @cond_branch\n" + " bl debug_sub_8012658\n" + " ldr r0, ._687 + 12\n" + " bl SetMainCallback2\n" + "._675:\n" + " ldrh r0, [r4, #0x2a]\n" + " cmp r0, #0x8\n" + " bne ._676 @cond_branch\n" + " bl debug_sub_801174C\n" + "._676:\n" + " ldrh r0, [r4, #0x2a]\n" + " cmp r0, #0x40\n" + " beq ._677 @cond_branch\n" + " cmp r0, #0x80\n" + " bne ._678 @cond_branch\n" + "._677:\n" + " bl debug_sub_8012658\n" + " ldr r0, ._687 + 16\n" + " ldrb r1, [r0]\n" + " mov r2, #0x2\n" + " eor r1, r1, r2\n" + " strb r1, [r0]\n" + " bl debug_sub_8012628\n" + "._678:\n" + " ldr r0, ._687 + 8\n" + " ldrh r0, [r0, #0x2a]\n" + " cmp r0, #0x20\n" + " beq ._679 @cond_branch\n" + " cmp r0, #0x10\n" + " bne ._680 @cond_branch\n" + "._679:\n" + " bl debug_sub_8012658\n" + " ldr r0, ._687 + 16\n" + " ldrb r1, [r0]\n" + " mov r2, #0x1\n" + " eor r1, r1, r2\n" + " strb r1, [r0]\n" + " bl debug_sub_8012628\n" + "._680:\n" + " ldr r0, ._687 + 8\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._681 @cond_branch\n" + " ldr r0, ._687 + 20\n" + " mov r8, r0\n" + " ldr r6, ._687 + 16\n" + " ldrb r4, [r6]\n" + " lsl r4, r4, #0x1\n" + " mov r0, r9\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x4358\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x15\n" + " add r4, r4, r0\n" + " ldr r5, ._687 + 24\n" + " ldrb r2, [r5]\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x4\n" + " add r4, r4, r1\n" + " add r4, r4, r8\n" + " ldrh r1, [r4]\n" + " sub r1, r1, #0x1\n" + " strh r1, [r4]\n" + " ldrb r3, [r6]\n" + " lsl r1, r3, #0x1\n" + " add r1, r1, r0\n" + " ldrb r2, [r5]\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x4\n" + " add r1, r1, r0\n" + " mov r0, r8\n" + " add r4, r1, r0\n" + " mov r0, #0x0\n" + " ldsh r1, [r4, r0]\n" + " ldr r5, ._687 + 28\n" + " lsl r0, r3, #0x2\n" + " add r0, r0, r3\n" + " lsl r2, r0, #0x1\n" + " add r0, r5, #0\n" + " add r0, r0, #0x8\n" + " add r0, r2, r0\n" + " ldrh r0, [r0]\n" + " cmp r1, r0\n" + " bge ._682 @cond_branch\n" + " add r0, r5, #6\n" + " add r0, r2, r0\n" + " ldrh r0, [r0]\n" + " strh r0, [r4]\n" + "._682:\n" + " bl debug_sub_8012294\n" + "._681:\n" + " ldr r0, ._687 + 8\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._683 @cond_branch\n" + " ldr r1, ._687 + 20\n" + " mov r8, r1\n" + " ldr r6, ._687 + 16\n" + " ldrb r4, [r6]\n" + " lsl r4, r4, #0x1\n" + " mov r0, r9\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x4358\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x15\n" + " add r4, r4, r0\n" + " ldr r5, ._687 + 24\n" + " ldrb r2, [r5]\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x4\n" + " add r4, r4, r1\n" + " add r4, r4, r8\n" + " ldrh r1, [r4]\n" + " add r1, r1, #0x1\n" + " strh r1, [r4]\n" + " ldrb r3, [r6]\n" + " lsl r1, r3, #0x1\n" + " add r1, r1, r0\n" + " ldrb r2, [r5]\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x4\n" + " add r1, r1, r0\n" + " mov r0, r8\n" + " add r4, r1, r0\n" + " mov r0, #0x0\n" + " ldsh r1, [r4, r0]\n" + " ldr r5, ._687 + 28\n" + " lsl r0, r3, #0x2\n" + " add r0, r0, r3\n" + " lsl r2, r0, #0x1\n" + " add r0, r5, #6\n" + " add r0, r2, r0\n" + " ldrh r0, [r0]\n" + " cmp r1, r0\n" + " ble ._684 @cond_branch\n" + " add r0, r5, #0\n" + " add r0, r0, #0x8\n" + " add r0, r2, r0\n" + " ldrh r0, [r0]\n" + " strh r0, [r4]\n" + "._684:\n" + " bl debug_sub_8012294\n" + "._683:\n" + " ldr r0, ._687 + 8\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._685 @cond_branch\n" + " ldr r6, ._687 + 20\n" + " ldr r5, ._687 + 16\n" + " ldrb r4, [r5]\n" + " lsl r4, r4, #0x1\n" + " mov r0, r9\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x4358\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x15\n" + " add r4, r4, r0\n" + " ldr r2, ._687 + 24\n" + " ldrb r1, [r2]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x4\n" + " add r4, r4, r0\n" + " add r4, r4, r6\n" + " ldrh r0, [r4]\n" + " sub r0, r0, #0xa\n" + " strh r0, [r4]\n" + " mov sl, r5\n" + " mov r8, r6\n" + " add r7, r2, #0\n" + " ldr r6, ._687 + 28\n" + " b ._686\n" + "._688:\n" + " .align 2, 0\n" + "._687:\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gMain\n" + " .word debug_sub_8010CAC+1\n" + " .word gUnknown_Debug_030043A8\n" + " .word gUnknown_02023A14+0xde\n" + " .word gUnknown_Debug_03004360\n" + " .word UnkDebug0+0x1ac\n" + "._689:\n" + " add r0, r6, #6\n" + " add r0, r2, r0\n" + " ldrh r0, [r0]\n" + " ldrh r1, [r4]\n" + " add r0, r0, r1\n" + " strh r0, [r4]\n" + "._686:\n" + " mov r0, sl\n" + " ldrb r5, [r0]\n" + " lsl r4, r5, #0x1\n" + " mov r0, r9\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x4358\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x15\n" + " add r4, r4, r0\n" + " ldrb r1, [r7]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x4\n" + " add r4, r4, r0\n" + " add r4, r4, r8\n" + " mov r0, #0x0\n" + " ldsh r1, [r4, r0]\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r2, r0, #0x1\n" + " add r0, r6, #0\n" + " add r0, r0, #0x8\n" + " add r0, r2, r0\n" + " ldrh r0, [r0]\n" + " cmp r1, r0\n" + " blt ._689 @cond_branch\n" + " bl debug_sub_8012294\n" + "._685:\n" + " ldr r0, ._692\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._690 @cond_branch\n" + " ldr r6, ._692 + 4\n" + " ldr r5, ._692 + 8\n" + " ldrb r4, [r5]\n" + " lsl r4, r4, #0x1\n" + " mov r0, r9\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x4358\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x15\n" + " add r4, r4, r0\n" + " ldr r2, ._692 + 12\n" + " ldrb r1, [r2]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x4\n" + " add r4, r4, r0\n" + " add r4, r4, r6\n" + " ldrh r0, [r4]\n" + " add r0, r0, #0xa\n" + " strh r0, [r4]\n" + " mov sl, r5\n" + " mov r8, r6\n" + " add r7, r2, #0\n" + " ldr r6, ._692 + 16\n" + " b ._691\n" + "._693:\n" + " .align 2, 0\n" + "._692:\n" + " .word gMain\n" + " .word gUnknown_02023A14+0xde\n" + " .word gUnknown_Debug_030043A8\n" + " .word gUnknown_Debug_03004360\n" + " .word UnkDebug0+0x1ac\n" + "._694:\n" + " ldrh r0, [r4]\n" + " sub r0, r0, r1\n" + " strh r0, [r4]\n" + "._691:\n" + " mov r1, sl\n" + " ldrb r5, [r1]\n" + " lsl r4, r5, #0x1\n" + " mov r0, r9\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x4358\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x15\n" + " add r4, r4, r0\n" + " ldrb r1, [r7]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x4\n" + " add r4, r4, r0\n" + " add r4, r4, r8\n" + " mov r0, #0x0\n" + " ldsh r2, [r4, r0]\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x1\n" + " add r1, r6, #6\n" + " add r0, r0, r1\n" + " ldrh r1, [r0]\n" + " cmp r2, r1\n" + " bgt ._694 @cond_branch\n" + " bl debug_sub_8012294\n" + "._690:\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\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" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_801174C() +{ + 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" + " mov r0, #0x0\n" + " mov r9, r0\n" + " ldr r1, ._704\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " bl Random\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " mov r0, #0x3\n" + " and r4, r4, r0\n" + " lsl r4, r4, #0x18\n" + " lsr r6, r4, #0x18\n" + " ldr r5, ._704 + 4\n" + " lsl r1, r6, #0x1\n" + " add r1, r1, r6\n" + " lsl r1, r1, #0x1\n" + " ldr r0, ._704 + 8\n" + " add r1, r1, r0\n" + " add r0, r5, #0\n" + " bl StringCopy\n" + " lsr r4, r4, #0x19\n" + " strb r4, [r5, #0x8]\n" + " bl ZeroPlayerPartyMons\n" + " bl ZeroEnemyPartyMons\n" + " ldr r0, ._704 + 12\n" + " mov r1, #0x3c\n" + " ldsh r7, [r0, r1]\n" + " mov r2, r9\n" + " str r2, [sp, #0xc]\n" + " cmp r7, #0x9\n" + " ble ._695 @cond_branch\n" + " mov r0, #0x0\n" + "._696:\n" + " sub r7, r7, #0xa\n" + " add r0, r0, #0x1\n" + " cmp r7, #0x9\n" + " bgt ._696 @cond_branch\n" + " str r0, [sp, #0xc]\n" + "._695:\n" + " ldr r2, ._704 + 16\n" + " ldr r1, ._704 + 20\n" + " sub r0, r7, #1\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " ldrh r3, [r0]\n" + " strh r3, [r2]\n" + " ldr r1, ._704 + 24\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldr r1, ._704 + 28\n" + " add r0, sp, #0xc\n" + " ldrb r0, [r0]\n" + " strb r0, [r1]\n" + " mov r0, #0x80\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._697 @cond_branch\n" + " bl EnterSafariMode\n" + "._697:\n" + " ldr r5, ._704 + 12\n" + " ldrh r0, [r5, #0x3c]\n" + " sub r0, r0, #0x2\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0x2\n" + " bhi ._698 @cond_branch\n" + " ldr r4, ._704 + 32\n" + " bl Random\n" + " mov r1, #0x7\n" + " and r1, r1, r0\n" + " add r1, r1, #0x1\n" + " strh r1, [r4]\n" + "._698:\n" + " ldr r1, ._704 + 36\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " mov r7, #0x0\n" + "._745:\n" + " lsl r0, r7, #0x1\n" + " ldr r3, ._704 + 12\n" + " add r1, r0, r3\n" + " mov r2, #0x0\n" + " ldsh r1, [r1, r2]\n" + " add r2, r3, #0\n" + " mov r8, r0\n" + " add r3, r7, #5\n" + " mov sl, r3\n" + " cmp r1, #0\n" + " beq ._699 @cond_branch\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x1\n" + " add r1, r2, #0\n" + " add r0, r0, r1\n" + " mov r3, #0x0\n" + " ldsh r0, [r0, r3]\n" + " cmp r0, #0x1\n" + " beq ._707 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._701 @cond_branch\n" + " cmp r0, #0\n" + " beq ._706 @cond_branch\n" + " b ._708\n" + "._705:\n" + " .align 2, 0\n" + "._704:\n" + " .word gUnknown_020297ED\n" + " .word gSaveBlock2\n" + " .word UnkDebug0+0x279\n" + " .word gUnknown_02023A14+0x52\n" + " .word gBattleTypeFlags\n" + " .word UnkDebug0+0x1e0\n" + " .word gUnknown_02023A14+0x50\n" + " .word gBattleTerrain\n" + " .word gTrainerBattleOpponent\n" + " .word gPlayerPartyCount\n" + "._701:\n" + " cmp r0, #0x2\n" + " beq ._706 @cond_branch\n" + " cmp r0, #0x3\n" + " beq ._707 @cond_branch\n" + " b ._708\n" + "._706:\n" + " mov r6, #0x0\n" + " b ._710\n" + "._707:\n" + " mov r6, #0xfe\n" + " b ._710\n" + "._708:\n" + " mov r6, #0xff\n" + "._710:\n" + " mov r1, r8\n" + " add r0, r1, r2\n" + " mov r3, #0x0\n" + " ldsh r0, [r0, r3]\n" + " add r1, r7, #5\n" + " mov sl, r1\n" + " cmp r0, #0xc9\n" + " bne ._712 @cond_branch\n" + " cmp r1, #0x1d\n" + " bgt ._712 @cond_branch\n" + " add r0, r7, #7\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r2\n" + " ldrb r0, [r0]\n" + " mov r9, r0\n" + " b ._713\n" + "._712:\n" + " mov r2, #0x0\n" + " mov r9, r2\n" + "._713:\n" + " add r0, r7, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x3d30\n" + " mov r3, #0x64\n" + " mul r0, r0, r3\n" + " ldr r1, ._719\n" + " add r0, r0, r1\n" + " ldr r1, ._719 + 4\n" + " add r1, r1, r8\n" + " ldrh r1, [r1]\n" + " add r2, r7, #1\n" + " lsl r2, r2, #0x1\n" + " ldr r3, ._719 + 4\n" + " add r2, r2, r3\n" + " ldrb r2, [r2]\n" + " str r6, [sp]\n" + " mov r3, #0x0\n" + " str r3, [sp, #0x4]\n" + " mov r3, r9\n" + " str r3, [sp, #0x8]\n" + " mov r3, #0x0\n" + " bl CreateMonWithGenderNatureLetter\n" + "._699:\n" + " add r0, r7, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x3d30\n" + " mov r2, #0x64\n" + " add r1, r0, #0\n" + " mul r1, r1, r2\n" + " ldr r0, ._719\n" + " add r5, r1, r0\n" + " ldr r4, ._719 + 8\n" + " mov r3, r8\n" + " add r6, r3, r4\n" + " add r0, r5, #0\n" + " mov r1, #0xc\n" + " add r2, r6, #0\n" + " bl SetMonData\n" + " sub r4, r4, #0x4\n" + " add r1, r7, #2\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r4\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x1\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " str r1, [sp, #0x10]\n" + " cmp r0, #0xb\n" + " bhi ._714 @cond_branch\n" + " add r0, r5, #0\n" + " mov r1, #0x26\n" + " add r2, r6, #0\n" + " bl SetMonData\n" + "._714:\n" + " add r1, r7, #3\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r4\n" + " mov r3, #0x0\n" + " ldsh r2, [r0, r3]\n" + " str r1, [sp, #0x14]\n" + " cmp r2, #0\n" + " beq ._716 @cond_branch\n" + " cmp r2, #0x3\n" + " beq ._716 @cond_branch\n" + " cmp r2, #0x2\n" + " bgt ._717 @cond_branch\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " sub r0, r0, #0x1\n" + " b ._718\n" + "._720:\n" + " .align 2, 0\n" + "._719:\n" + " .word gEnemyParty\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_02023A14+0x56\n" + "._717:\n" + " mov r2, #0x0\n" + " ldsh r0, [r0, r2]\n" + " sub r0, r0, #0x4\n" + "._718:\n" + " str r0, [sp, #0xc]\n" + " add r0, r7, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x3d30\n" + " mov r3, #0x64\n" + " mul r0, r0, r3\n" + " ldr r1, ._726\n" + " add r0, r0, r1\n" + " mov r1, #0x2e\n" + " add r2, sp, #0xc\n" + " bl SetMonData\n" + "._716:\n" + " ldr r1, ._726 + 4\n" + " add r1, r1, #0x46\n" + " mov r2, r8\n" + " add r0, r2, r1\n" + " mov r3, #0x0\n" + " ldsh r0, [r0, r3]\n" + " ldr r2, ._726 + 4\n" + " cmp r0, #0\n" + " beq ._721 @cond_branch\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x1\n" + " beq ._729 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._723 @cond_branch\n" + " cmp r0, #0\n" + " beq ._728 @cond_branch\n" + " b ._730\n" + "._727:\n" + " .align 2, 0\n" + "._726:\n" + " .word gEnemyParty\n" + " .word gUnknown_02023A14+0x52\n" + "._723:\n" + " cmp r0, #0x2\n" + " beq ._728 @cond_branch\n" + " cmp r0, #0x3\n" + " beq ._729 @cond_branch\n" + " b ._730\n" + "._728:\n" + " mov r6, #0x0\n" + " b ._732\n" + "._729:\n" + " mov r6, #0xfe\n" + " b ._732\n" + "._730:\n" + " mov r6, #0xff\n" + "._732:\n" + " add r1, r2, #0\n" + " add r1, r1, #0x46\n" + " mov r2, r8\n" + " add r0, r2, r1\n" + " mov r3, #0x0\n" + " ldsh r0, [r0, r3]\n" + " cmp r0, #0xc9\n" + " bne ._734 @cond_branch\n" + " mov r0, sl\n" + " cmp r0, #0x1d\n" + " bgt ._734 @cond_branch\n" + " add r0, r7, #7\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " mov r9, r0\n" + " b ._735\n" + "._734:\n" + " mov r1, #0x0\n" + " mov r9, r1\n" + "._735:\n" + " add r0, r7, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x3d30\n" + " mov r2, #0x64\n" + " mul r0, r0, r2\n" + " ldr r1, ._741\n" + " add r0, r0, r1\n" + " ldr r1, ._741 + 4\n" + " add r1, r1, r8\n" + " ldrh r1, [r1]\n" + " add r2, r7, #1\n" + " lsl r2, r2, #0x1\n" + " ldr r3, ._741 + 4\n" + " add r2, r2, r3\n" + " ldrb r2, [r2]\n" + " str r6, [sp]\n" + " mov r3, #0x0\n" + " str r3, [sp, #0x4]\n" + " mov r3, r9\n" + " str r3, [sp, #0x8]\n" + " mov r3, #0x0\n" + " bl CreateMonWithGenderNatureLetter\n" + " ldr r1, ._741 + 8\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._721:\n" + " add r0, r7, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x3d30\n" + " mov r2, #0x64\n" + " add r1, r0, #0\n" + " mul r1, r1, r2\n" + " ldr r0, ._741\n" + " add r4, r1, r0\n" + " ldr r0, ._741 + 12\n" + " mov r3, r8\n" + " add r5, r3, r0\n" + " add r0, r4, #0\n" + " mov r1, #0xc\n" + " add r2, r5, #0\n" + " bl SetMonData\n" + " ldr r1, [sp, #0x10]\n" + " lsl r0, r1, #0x1\n" + " ldr r2, ._741 + 16\n" + " add r0, r0, r2\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x1\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0xb\n" + " bhi ._736 @cond_branch\n" + " add r0, r4, #0\n" + " mov r1, #0x26\n" + " add r2, r5, #0\n" + " bl SetMonData\n" + "._736:\n" + " ldr r3, [sp, #0x14]\n" + " lsl r0, r3, #0x1\n" + " ldr r1, ._741 + 4\n" + " add r0, r0, r1\n" + " mov r2, #0x0\n" + " ldsh r1, [r0, r2]\n" + " cmp r1, #0\n" + " beq ._738 @cond_branch\n" + " cmp r1, #0x3\n" + " beq ._738 @cond_branch\n" + " cmp r1, #0x2\n" + " bgt ._739 @cond_branch\n" + " add r0, r1, #0\n" + " sub r0, r0, #0x1\n" + " b ._740\n" + "._742:\n" + " .align 2, 0\n" + "._741:\n" + " .word gPlayerParty\n" + " .word gUnknown_02023A14+0x98\n" + " .word gPlayerPartyCount\n" + " .word gUnknown_02023A14+0x9c\n" + " .word gUnknown_02023A14+0x52\n" + "._739:\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " sub r0, r0, #0x4\n" + "._740:\n" + " str r0, [sp, #0xc]\n" + " add r0, r7, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x3d30\n" + " mov r2, #0x64\n" + " mul r0, r0, r2\n" + " ldr r1, ._750\n" + " add r0, r0, r1\n" + " mov r1, #0x2e\n" + " add r2, sp, #0xc\n" + " bl SetMonData\n" + "._738:\n" + " ldr r3, [sp, #0x14]\n" + " lsl r0, r3, #0x1\n" + " ldr r1, ._750 + 4\n" + " add r0, r0, r1\n" + " mov r2, #0x0\n" + " ldsh r0, [r0, r2]\n" + " cmp r0, #0x2\n" + " ble ._743 @cond_branch\n" + " add r0, r7, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x3d30\n" + " mov r3, #0x64\n" + " mul r0, r0, r3\n" + " ldr r1, ._750\n" + " add r0, r0, r1\n" + " mov r1, #0x7\n" + " ldr r2, ._750 + 8\n" + " bl SetMonData\n" + " ldr r2, ._750 + 12\n" + " ldrb r0, [r2]\n" + " mov r1, #0x40\n" + " orr r0, r0, r1\n" + " strb r0, [r2]\n" + "._743:\n" + " mov r7, sl\n" + " cmp r7, #0x1d\n" + " bgt ._744 @cond_branch\n" + " b ._745\n" + "._744:\n" + " mov r0, #0x0\n" + " str r0, [sp, #0xc]\n" + " mov r0, #0x64\n" + " mov r8, r0\n" + " ldr r1, ._750 + 16\n" + " mov r9, r1\n" + " ldr r2, ._750\n" + " mov sl, r2\n" + "._747:\n" + " mov r7, #0x0\n" + "._746:\n" + " ldr r2, [sp, #0xc]\n" + " mov r0, r8\n" + " mul r0, r0, r2\n" + " ldr r3, ._750 + 20\n" + " add r0, r0, r3\n" + " add r5, r7, #0\n" + " add r5, r5, #0xd\n" + " lsl r2, r2, #0x3\n" + " lsl r4, r7, #0x1\n" + " mov r3, r9\n" + " add r1, r4, r3\n" + " add r2, r2, r1\n" + " add r1, r5, #0\n" + " bl SetMonData\n" + " ldr r1, [sp, #0xc]\n" + " mov r0, r8\n" + " mul r0, r0, r1\n" + " ldr r2, ._750 + 20\n" + " add r0, r0, r2\n" + " add r6, r7, #0\n" + " add r6, r6, #0x11\n" + " lsl r1, r1, #0x3\n" + " add r1, r4, r1\n" + " add r1, r1, r9\n" + " mov r3, #0x0\n" + " ldsh r1, [r1, r3]\n" + " lsl r2, r1, #0x1\n" + " add r2, r2, r1\n" + " lsl r2, r2, #0x2\n" + " ldr r1, ._750 + 24\n" + " add r2, r2, r1\n" + " add r1, r6, #0\n" + " bl SetMonData\n" + " ldr r2, [sp, #0xc]\n" + " mov r0, r8\n" + " mul r0, r0, r2\n" + " add r0, r0, sl\n" + " lsl r2, r2, #0x3\n" + " ldr r3, ._750 + 28\n" + " add r1, r4, r3\n" + " add r2, r2, r1\n" + " add r1, r5, #0\n" + " bl SetMonData\n" + " ldr r1, [sp, #0xc]\n" + " mov r0, r8\n" + " mul r0, r0, r1\n" + " add r0, r0, sl\n" + " lsl r1, r1, #0x3\n" + " add r4, r4, r1\n" + " ldr r1, ._750 + 28\n" + " add r4, r4, r1\n" + " mov r2, #0x0\n" + " ldsh r1, [r4, r2]\n" + " lsl r2, r1, #0x1\n" + " add r2, r2, r1\n" + " lsl r2, r2, #0x2\n" + " ldr r3, ._750 + 24\n" + " add r2, r2, r3\n" + " add r1, r6, #0\n" + " bl SetMonData\n" + " add r7, r7, #0x1\n" + " cmp r7, #0x3\n" + " ble ._746 @cond_branch\n" + " ldr r0, [sp, #0xc]\n" + " add r0, r0, #0x1\n" + " str r0, [sp, #0xc]\n" + " cmp r0, #0x5\n" + " ble ._747 @cond_branch\n" + " ldr r3, ._750 + 32\n" + " add r4, r3, #0\n" + " add r4, r4, #0x44\n" + " ldrh r1, [r4]\n" + " mov r2, #0x0\n" + " ldsh r0, [r4, r2]\n" + " cmp r0, #0x8\n" + " bne ._748 @cond_branch\n" + " ldr r0, ._750 + 12\n" + " ldrb r1, [r0]\n" + " mov r2, #0x80\n" + " b ._753\n" + "._751:\n" + " .align 2, 0\n" + "._750:\n" + " .word gPlayerParty\n" + " .word gUnknown_02023A14+0x98\n" + " .word UnkDebug0+0x291\n" + " .word gUnknown_02023A14+0x50\n" + " .word gUnknown_02023A14+0xde\n" + " .word gEnemyParty\n" + " .word gBattleMoves+0x4\n" + " .word gUnknown_02023A14+0x10e\n" + " .word gUnknown_02023A14+0x52\n" + "._748:\n" + " cmp r0, #0x7\n" + " bne ._752 @cond_branch\n" + " ldr r0, ._754\n" + " ldrb r1, [r0]\n" + " mov r2, #0x20\n" + " b ._753\n" + "._755:\n" + " .align 2, 0\n" + "._754:\n" + " .word gUnknown_02023A14+0x50\n" + "._752:\n" + " cmp r0, #0x6\n" + " bne ._756 @cond_branch\n" + " ldr r2, ._759\n" + " ldrb r0, [r2]\n" + " mov r1, #0x10\n" + " orr r0, r0, r1\n" + " strb r0, [r2]\n" + " ldrh r1, [r3, #0x4]\n" + " mov r2, #0x4\n" + " ldsh r0, [r3, r2]\n" + " cmp r0, #0x5\n" + " ble ._757 @cond_branch\n" + " ldr r0, ._759 + 4\n" + " sub r1, r1, #0x2\n" + " ldr r3, ._759 + 8\n" + " add r0, r0, r3\n" + " b ._761\n" + "._760:\n" + " .align 2, 0\n" + "._759:\n" + " .word gUnknown_02023A14+0x50\n" + " .word +0x2000000\n" + " .word 0x160a3\n" + "._757:\n" + " ldr r0, ._762\n" + " ldr r2, ._762 + 4\n" + " add r0, r0, r2\n" + " b ._761\n" + "._763:\n" + " .align 2, 0\n" + "._762:\n" + " .word +0x2000000\n" + " .word 0x160a3\n" + "._756:\n" + " cmp r0, #0x5\n" + " bne ._764 @cond_branch\n" + " ldr r0, ._766\n" + " ldrb r1, [r0]\n" + " mov r2, #0x21\n" + "._753:\n" + " orr r1, r1, r2\n" + "._761:\n" + " strb r1, [r0]\n" + " bl sub_80408BC\n" + " b ._770\n" + "._767:\n" + " .align 2, 0\n" + "._766:\n" + " .word gUnknown_02023A14+0x50\n" + "._764:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._768 @cond_branch\n" + " bl sub_80408BC\n" + "._768:\n" + " ldrh r3, [r4]\n" + " mov r0, #0x2\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._769 @cond_branch\n" + " ldr r0, ._772\n" + " ldrb r1, [r0]\n" + " mov r2, #0x4\n" + " orr r1, r1, r2\n" + " strb r1, [r0]\n" + "._769:\n" + " mov r0, #0x4\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._770 @cond_branch\n" + " ldr r0, ._772\n" + " ldrb r1, [r0]\n" + " mov r2, #0x6\n" + " orr r1, r1, r2\n" + " strb r1, [r0]\n" + "._770:\n" + " ldr r0, ._772 + 4\n" + " ldr r1, ._772 + 8\n" + " str r1, [r0, #0x8]\n" + " ldr r0, ._772 + 12\n" + " bl SetMainCallback2\n" + " bl ClearBag\n" + " mov r0, #0x1\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x2\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x3\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x4\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x5\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x6\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x7\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x8\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x9\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0xa\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0xb\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0xc\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x13\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x14\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x19\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x22\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x23\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x25\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x49\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x4a\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x4b\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x4c\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x4d\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x4e\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x50\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " ldr r4, ._772 + 16\n" + " mov r7, #0xe\n" + "._771:\n" + " add r0, r4, #0\n" + " bl sub_810CA34\n" + " add r4, r4, #0x8\n" + " sub r7, r7, #0x1\n" + " cmp r7, #0\n" + " bge ._771 @cond_branch\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" + "._773:\n" + " .align 2, 0\n" + "._772:\n" + " .word gUnknown_02023A14+0x50\n" + " .word gMain\n" + " .word debug_sub_80108B8+1\n" + " .word unref_sub_800D684+1\n" + " .word UnkDebug0+0x1f4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8011D40() +{ + asm( + " push {lr}\n" + " ldr r1, ._774\n" + " ldr r0, ._774 + 4\n" + " str r0, [r1]\n" + " ldr r0, ._774 + 8\n" + " str r0, [r1, #0x4]\n" + " ldr r0, ._774 + 12\n" + " str r0, [r1, #0x8]\n" + " ldr r0, [r1, #0x8]\n" + " sub r1, r1, #0xc4\n" + " ldr r0, ._774 + 16\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._774 + 20\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._774 + 24\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._774 + 28\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._774 + 32\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._774 + 36\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._774 + 40\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._774 + 44\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " bl LoadOam\n" + " bl ProcessSpriteCopyRequests\n" + " pop {r0}\n" + " bx r0\n" + "._775:\n" + " .align 2, 0\n" + "._774:\n" + " .word 0x40000d4\n" + " .word +0x2000000\n" + " .word 0x6004000\n" + " .word 0x80000800\n" + " .word gUnknown_030042A4\n" + " .word gUnknown_030042A0\n" + " .word gUnknown_030042C0\n" + " .word gUnknown_030041B4\n" + " .word gUnknown_03004288\n" + " .word gUnknown_03004280\n" + " .word gUnknown_030041B0\n" + " .word gUnknown_030041B8\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_nullsub_45() +{ + asm( + " bx lr\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8011DD4() +{ + asm( + " push {lr}\n" + " ldr r1, ._776\n" + " ldr r2, ._776 + 4\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x8\n" + " ldr r0, ._776 + 8\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._776 + 12\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._776 + 16\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._776 + 20\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._776 + 24\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._776 + 28\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._776 + 32\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._776 + 36\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " bl LoadOam\n" + " bl ProcessSpriteCopyRequests\n" + " bl TransferPlttBuffer\n" + " bl sub_8089668\n" + " pop {r0}\n" + " bx r0\n" + "._777:\n" + " .align 2, 0\n" + "._776:\n" + " .word 0x4000008\n" + " .word 0x9803\n" + " .word gUnknown_030042A4\n" + " .word gUnknown_030042A0\n" + " .word gUnknown_030042C0\n" + " .word gUnknown_030041B4\n" + " .word gUnknown_03004288\n" + " .word gUnknown_03004280\n" + " .word gUnknown_030041B0\n" + " .word gUnknown_030041B8\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8011E5C() +{ + asm( + " push {r4, lr}\n" + " mov r4, #0x0\n" + "._778:\n" + " lsl r0, r4, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x1e\n" + " ble ._778 @cond_branch\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8011E74() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r0, ._780\n" + " ldrb r5, [r0]\n" + " mov r1, #0x0\n" + " strb r1, [r0]\n" + " add r4, r0, #0\n" + "._779:\n" + " bl debug_sub_8012294\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " strb r0, [r4]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x3\n" + " bls ._779 @cond_branch\n" + " ldr r0, ._780\n" + " strb r5, [r0]\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._781:\n" + " .align 2, 0\n" + "._780:\n" + " .word gUnknown_Debug_030043A8\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8011EA0() +{ + 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, #0xfffffff4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " cmp r7, #0x22\n" + " bls ._782 @cond_branch\n" + " b ._815\n" + "._782:\n" + " lsl r0, r7, #0x2\n" + " ldr r1, ._785\n" + " add r1, r0, r1\n" + " ldr r1, [r1]\n" + " str r0, [sp, #0x8]\n" + " mov pc, r1\n" + "._786:\n" + " .align 2, 0\n" + "._785:\n" + " .word ._784\n" + "._784:\n" + " .word ._812\n" + " .word ._817\n" + " .word ._814\n" + " .word ._815\n" + " .word ._816\n" + " .word ._812\n" + " .word ._817\n" + " .word ._814\n" + " .word ._815\n" + " .word ._816\n" + " .word ._812\n" + " .word ._817\n" + " .word ._814\n" + " .word ._815\n" + " .word ._816\n" + " .word ._812\n" + " .word ._817\n" + " .word ._814\n" + " .word ._815\n" + " .word ._816\n" + " .word ._812\n" + " .word ._817\n" + " .word ._814\n" + " .word ._815\n" + " .word ._816\n" + " .word ._812\n" + " .word ._817\n" + " .word ._814\n" + " .word ._815\n" + " .word ._816\n" + " .word ._817\n" + " .word ._848\n" + " .word ._848\n" + " .word ._848\n" + " .word ._848\n" + "._812:\n" + " mov r0, #0x0\n" + " mov r1, #0x14\n" + " bl debug_sub_8010A7C\n" + " ldr r6, ._823\n" + " ldr r2, ._823 + 4\n" + " ldr r0, [sp, #0x8]\n" + " add r1, r0, r7\n" + " lsl r1, r1, #0x1\n" + " add r0, r1, r2\n" + " ldrh r0, [r0]\n" + " str r0, [sp, #0x4]\n" + " add r0, r2, #2\n" + " add r0, r1, r0\n" + " ldrb r0, [r0]\n" + " mov r8, r0\n" + " add r2, r2, #0x4\n" + " add r1, r1, r2\n" + " ldrb r1, [r1]\n" + " mov r9, r1\n" + " str r1, [sp]\n" + " ldr r0, ._823 + 8\n" + " add r1, r6, #0\n" + " ldr r2, [sp, #0x4]\n" + " mov r3, r8\n" + " bl InitWindow\n" + " ldr r0, ._823 + 8\n" + " bl sub_8002F44\n" + " ldr r1, ._823 + 12\n" + " mov sl, r1\n" + " lsl r4, r7, #0x1\n" + " ldr r5, ._823 + 16\n" + " ldrb r0, [r5]\n" + " mov r7, #0x46\n" + " mul r0, r0, r7\n" + " add r0, r4, r0\n" + " add r0, r0, sl\n" + " mov r2, #0x0\n" + " ldsh r1, [r0, r2]\n" + " add r0, r6, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r2, #0xd3\n" + " lsl r2, r2, #0x1\n" + " ldrb r3, [r5]\n" + " lsl r3, r3, #0x5\n" + " add r3, r3, #0x19\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " ldr r0, ._823 + 8\n" + " add r1, r6, #0\n" + " bl InitWindow\n" + " ldr r0, ._823 + 8\n" + " bl sub_8002F44\n" + " mov r0, #0xff\n" + " strb r0, [r6]\n" + " ldrb r0, [r5]\n" + " mul r0, r0, r7\n" + " add r4, r4, r0\n" + " add r4, r4, sl\n" + " mov r0, #0x0\n" + " ldsh r1, [r4, r0]\n" + " mov r0, #0xb\n" + " mul r1, r1, r0\n" + " ldr r0, ._823 + 20\n" + " add r1, r1, r0\n" + " add r0, r6, #0\n" + " bl StringAppend\n" + " mov r1, r9\n" + " str r1, [sp]\n" + " ldr r0, ._823 + 8\n" + " add r1, r6, #0\n" + " ldr r2, [sp, #0x4]\n" + " mov r3, r8\n" + " bl InitWindow\n" + " ldr r0, ._823 + 8\n" + " bl sub_8002F44\n" + " b ._848\n" + "._824:\n" + " .align 2, 0\n" + "._823:\n" + " .word gBattleTextBuff1\n" + " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_03004370\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_03004360\n" + " .word gSpeciesNames\n" + "._817:\n" + " ldr r6, ._826\n" + " ldr r3, ._826 + 4\n" + " lsl r1, r7, #0x1\n" + " ldr r0, ._826 + 8\n" + " ldrb r2, [r0]\n" + " mov r0, #0x46\n" + " mul r0, r0, r2\n" + " add r1, r1, r0\n" + " add r1, r1, r3\n" + " mov r2, #0x0\n" + " ldsh r1, [r1, r2]\n" + " add r0, r6, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " b ._825\n" + "._827:\n" + " .align 2, 0\n" + "._826:\n" + " .word gBattleTextBuff1\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_03004360\n" + "._814:\n" + " mov r0, #0x0\n" + " mov r1, #0x18\n" + " bl debug_sub_8010A7C\n" + " ldr r6, ._830\n" + " ldr r1, ._830 + 4\n" + " mov sl, r1\n" + " ldr r4, ._830 + 8\n" + " ldr r2, [sp, #0x8]\n" + " add r1, r2, r7\n" + " lsl r1, r1, #0x1\n" + " add r0, r1, r4\n" + " ldrh r2, [r0]\n" + " add r0, r4, #2\n" + " add r0, r1, r0\n" + " ldrb r3, [r0]\n" + " add r4, r4, #0x4\n" + " add r1, r1, r4\n" + " ldrb r0, [r1]\n" + " str r0, [sp]\n" + " add r0, r6, #0\n" + " mov r1, sl\n" + " bl InitWindow\n" + " add r0, r6, #0\n" + " bl sub_8002F44\n" + " lsl r4, r7, #0x1\n" + " ldr r5, ._830 + 12\n" + " ldrb r0, [r5]\n" + " mov r1, #0x46\n" + " mul r0, r0, r1\n" + " add r0, r4, r0\n" + " ldr r2, ._830 + 16\n" + " add r0, r0, r2\n" + " mov r2, #0x0\n" + " ldsh r1, [r0, r2]\n" + " mov r0, sl\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r2, #0xd3\n" + " lsl r2, r2, #0x1\n" + " ldrb r3, [r5]\n" + " lsl r3, r3, #0x5\n" + " add r3, r3, #0x19\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " add r0, r6, #0\n" + " mov r1, sl\n" + " bl InitWindow\n" + " add r0, r6, #0\n" + " bl sub_8002F44\n" + " mov r0, #0xff\n" + " mov r1, sl\n" + " strb r0, [r1]\n" + " ldrb r0, [r5]\n" + " mov r2, #0x46\n" + " mul r0, r0, r2\n" + " add r4, r4, r0\n" + " ldr r0, ._830 + 16\n" + " add r4, r4, r0\n" + " mov r1, #0x0\n" + " ldsh r0, [r4, r1]\n" + " cmp r0, #0\n" + " beq ._828 @cond_branch\n" + " ldrh r0, [r4]\n" + " bl ItemId_GetItem\n" + " add r1, r0, #0\n" + " mov r0, sl\n" + " bl StringAppend\n" + " b ._829\n" + "._831:\n" + " .align 2, 0\n" + "._830:\n" + " .word gUnknown_Debug_03004370\n" + " .word gBattleTextBuff1\n" + " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_03004360\n" + " .word gUnknown_02023A14+0x52\n" + "._828:\n" + " ldr r1, ._833\n" + " mov r0, sl\n" + " bl StringAppend\n" + "._829:\n" + " ldr r6, ._833 + 4\n" + " ldr r1, ._833 + 8\n" + " ldr r5, ._833 + 12\n" + " ldr r2, [sp, #0x8]\n" + " add r4, r2, r7\n" + " lsl r4, r4, #0x1\n" + " add r0, r4, r5\n" + " ldrh r2, [r0]\n" + " add r0, r5, #2\n" + " add r0, r4, r0\n" + " ldrb r3, [r0]\n" + " add r5, r5, #0x4\n" + " add r4, r4, r5\n" + " ldrb r0, [r4]\n" + " str r0, [sp]\n" + " add r0, r6, #0\n" + " bl InitWindow\n" + " add r0, r6, #0\n" + " bl sub_8002F44\n" + " b ._848\n" + "._834:\n" + " .align 2, 0\n" + "._833:\n" + " .word UnkDebug0+0x26c\n" + " .word gUnknown_Debug_03004370\n" + " .word gBattleTextBuff1\n" + " .word UnkDebug0+0x6c\n" + "._816:\n" + " mov r0, #0x0\n" + " mov r1, #0x4\n" + " bl debug_sub_8010A7C\n" + " ldr r5, ._839\n" + " ldr r6, ._839 + 4\n" + " ldr r4, ._839 + 8\n" + " ldr r0, [sp, #0x8]\n" + " add r1, r0, r7\n" + " lsl r1, r1, #0x1\n" + " add r0, r1, r4\n" + " ldrh r2, [r0]\n" + " add r0, r4, #2\n" + " add r0, r1, r0\n" + " ldrb r3, [r0]\n" + " add r4, r4, #0x4\n" + " add r1, r1, r4\n" + " ldrb r0, [r1]\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " add r1, r6, #0\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + " mov r4, #0x0\n" + " ldr r3, ._839 + 12\n" + " lsl r1, r7, #0x1\n" + " ldr r0, ._839 + 16\n" + " ldrb r2, [r0]\n" + " mov r0, #0x46\n" + " mul r0, r0, r2\n" + " add r1, r1, r0\n" + " add r1, r1, r3\n" + " mov r2, #0x0\n" + " ldsh r0, [r1, r2]\n" + " cmp r0, #0x1\n" + " beq ._835 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._836 @cond_branch\n" + " cmp r0, #0\n" + " beq ._837 @cond_branch\n" + " b ._843\n" + "._840:\n" + " .align 2, 0\n" + "._839:\n" + " .word gUnknown_Debug_03004370\n" + " .word gBattleTextBuff1\n" + " .word UnkDebug0+0x6c\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_03004360\n" + "._836:\n" + " cmp r0, #0x2\n" + " beq ._841 @cond_branch\n" + " cmp r0, #0x3\n" + " beq ._842 @cond_branch\n" + " b ._843\n" + "._837:\n" + " mov r0, #0xb5\n" + " b ._844\n" + "._835:\n" + " mov r0, #0xb6\n" + "._844:\n" + " strb r0, [r6]\n" + " mov r4, #0x1\n" + " b ._847\n" + "._841:\n" + " mov r0, #0xb5\n" + " b ._846\n" + "._842:\n" + " mov r0, #0xb6\n" + "._846:\n" + " strb r0, [r6]\n" + " strb r0, [r6, #0x1]\n" + " mov r4, #0x2\n" + " b ._847\n" + "._843:\n" + " ldr r2, ._849\n" + " add r1, r4, r2\n" + " mov r0, #0xac\n" + " strb r0, [r1]\n" + " add r4, r4, #0x1\n" + " add r6, r2, #0\n" + "._847:\n" + " add r1, r4, r6\n" + " mov r0, #0xff\n" + " strb r0, [r1]\n" + "._825:\n" + " ldr r5, ._849 + 4\n" + " ldr r4, ._849 + 8\n" + " ldr r0, [sp, #0x8]\n" + " add r1, r0, r7\n" + " lsl r1, r1, #0x1\n" + " add r0, r1, r4\n" + " ldrh r2, [r0]\n" + " add r0, r4, #2\n" + " add r0, r1, r0\n" + " ldrb r3, [r0]\n" + " add r4, r4, #0x4\n" + " add r1, r1, r4\n" + " ldrb r0, [r1]\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " add r1, r6, #0\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + " b ._848\n" + "._850:\n" + " .align 2, 0\n" + "._849:\n" + " .word gBattleTextBuff1\n" + " .word gUnknown_Debug_03004370\n" + " .word UnkDebug0+0x6c\n" + "._815:\n" + " ldr r6, ._851\n" + " ldr r3, ._851 + 4\n" + " lsl r1, r7, #0x1\n" + " ldr r0, ._851 + 8\n" + " ldrb r2, [r0]\n" + " mov r0, #0x46\n" + " mul r0, r0, r2\n" + " add r1, r1, r0\n" + " add r1, r1, r3\n" + " mov r2, #0x0\n" + " ldsh r1, [r1, r2]\n" + " add r0, r6, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r5, ._851 + 12\n" + " ldr r4, ._851 + 16\n" + " lsl r1, r7, #0x2\n" + " add r1, r1, r7\n" + " lsl r1, r1, #0x1\n" + " add r0, r1, r4\n" + " ldrh r2, [r0]\n" + " add r0, r4, #2\n" + " add r0, r1, r0\n" + " ldrb r3, [r0]\n" + " add r4, r4, #0x4\n" + " add r1, r1, r4\n" + " ldrb r0, [r1]\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " add r1, r6, #0\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + "._848:\n" + " add sp, sp, #0xc\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" + "._852:\n" + " .align 2, 0\n" + "._851:\n" + " .word gBattleTextBuff1\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_03004360\n" + " .word gUnknown_Debug_03004370\n" + " .word UnkDebug0+0x6c\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012294() +{ + 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" + " ldr r2, ._854\n" + " ldr r0, ._854 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x1d\n" + " bhi ._853 @cond_branch\n" + " mov r0, #0x0\n" + " mov r1, #0x18\n" + " bl debug_sub_8010A7C\n" + " ldr r0, ._854 + 8\n" + " mov sl, r0\n" + " ldr r1, ._854 + 12\n" + " mov r9, r1\n" + " ldr r2, ._854 + 16\n" + " mov r8, r2\n" + " ldr r7, ._854 + 20\n" + " ldrb r1, [r7]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x1\n" + " add r1, r0, r2\n" + " ldrh r2, [r1]\n" + " ldr r3, ._854 + 24\n" + " add r1, r0, r3\n" + " ldrb r3, [r1]\n" + " ldr r1, ._854 + 28\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r9\n" + " bl InitWindow\n" + " mov r0, sl\n" + " bl sub_8002F44\n" + " ldrb r4, [r7]\n" + " lsl r4, r4, #0x1\n" + " add r0, r5, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x4358\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x15\n" + " add r4, r4, r5\n" + " ldr r6, ._854 + 32\n" + " ldrb r1, [r6]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x4\n" + " add r4, r4, r0\n" + " ldr r2, ._854 + 36\n" + " add r4, r4, r2\n" + " mov r3, #0x0\n" + " ldsh r1, [r4, r3]\n" + " mov r0, r9\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r2, #0xd3\n" + " lsl r2, r2, #0x1\n" + " ldrb r3, [r6]\n" + " lsl r3, r3, #0x5\n" + " add r3, r3, #0x19\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r9\n" + " bl InitWindow\n" + " mov r0, sl\n" + " bl sub_8002F44\n" + " mov r0, #0xff\n" + " mov r1, r9\n" + " strb r0, [r1]\n" + " ldrb r1, [r7]\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r5\n" + " ldrb r2, [r6]\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r2, ._854 + 36\n" + " add r1, r1, r2\n" + " mov r3, #0x0\n" + " ldsh r1, [r1, r3]\n" + " mov r0, #0xd\n" + " mul r1, r1, r0\n" + " ldr r0, ._854 + 40\n" + " add r1, r1, r0\n" + " mov r0, r9\n" + " bl StringAppend\n" + " ldrb r1, [r7]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x1\n" + " add r8, r8, r0\n" + " mov r1, r8\n" + " ldrh r2, [r1]\n" + " ldr r3, ._854 + 24\n" + " add r1, r0, r3\n" + " ldrb r3, [r1]\n" + " ldr r1, ._854 + 28\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r9\n" + " bl InitWindow\n" + " mov r0, sl\n" + " bl sub_8002F44\n" + "._853:\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" + "._855:\n" + " .align 2, 0\n" + "._854:\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_03004370\n" + " .word gBattleTextBuff1\n" + " .word UnkDebug0+0x1ac\n" + " .word gUnknown_Debug_030043A8\n" + " .word UnkDebug0+0x1ae\n" + " .word UnkDebug0+0x1b0\n" + " .word gUnknown_Debug_03004360\n" + " .word gUnknown_02023A14+0xde\n" + " .word gMoveNames\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80123D8() +{ + 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" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x1d\n" + " bhi ._856 @cond_branch\n" + " mov r0, #0x0\n" + " mov r1, #0x12\n" + " bl debug_sub_8010A7C\n" + " ldr r4, ._858\n" + " ldr r0, ._858 + 4\n" + " mov r8, r0\n" + " ldr r6, ._858 + 8\n" + " ldrh r1, [r6]\n" + " mov sl, r1\n" + " ldrb r7, [r6, #0x2]\n" + " ldrb r2, [r6, #0x4]\n" + " mov r9, r2\n" + " str r2, [sp]\n" + " add r0, r4, #0\n" + " mov r1, r8\n" + " mov r2, sl\n" + " add r3, r7, #0\n" + " bl InitWindow\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " lsl r5, r5, #0x1\n" + " ldr r1, ._858 + 12\n" + " ldrb r0, [r1]\n" + " mov r2, #0x46\n" + " mul r0, r0, r2\n" + " add r0, r5, r0\n" + " ldr r1, ._858 + 16\n" + " add r0, r0, r1\n" + " mov r2, #0x0\n" + " ldsh r1, [r0, r2]\n" + " lsl r0, r1, #0x3\n" + " sub r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._858 + 20\n" + " add r0, r0, r1\n" + " ldrb r0, [r0, #0x16]\n" + " mov r2, #0xd\n" + " add r1, r0, #0\n" + " mul r1, r1, r2\n" + " ldr r0, ._858 + 24\n" + " add r1, r1, r0\n" + " mov r0, r8\n" + " bl StringCopy\n" + " mov r1, r9\n" + " str r1, [sp]\n" + " add r0, r4, #0\n" + " mov r1, r8\n" + " mov r2, sl\n" + " add r3, r7, #0\n" + " bl InitWindow\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " mov r0, #0x0\n" + " mov r1, #0x12\n" + " bl debug_sub_8010A7C\n" + " ldrh r2, [r6, #0x6]\n" + " mov r9, r2\n" + " ldrb r0, [r6, #0x8]\n" + " mov sl, r0\n" + " ldrb r6, [r6, #0xa]\n" + " str r6, [sp]\n" + " add r0, r4, #0\n" + " mov r1, r8\n" + " mov r3, sl\n" + " bl InitWindow\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " ldr r1, ._858 + 12\n" + " ldrb r0, [r1]\n" + " mov r2, #0x46\n" + " mul r0, r0, r2\n" + " add r5, r5, r0\n" + " ldr r0, ._858 + 16\n" + " add r5, r5, r0\n" + " mov r2, #0x0\n" + " ldsh r1, [r5, r2]\n" + " lsl r0, r1, #0x3\n" + " sub r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._858 + 20\n" + " add r0, r0, r1\n" + " ldrb r0, [r0, #0x17]\n" + " mov r2, #0xd\n" + " add r1, r0, #0\n" + " mul r1, r1, r2\n" + " ldr r0, ._858 + 24\n" + " add r1, r1, r0\n" + " mov r0, r8\n" + " bl StringCopy\n" + " str r6, [sp]\n" + " add r0, r4, #0\n" + " mov r1, r8\n" + " mov r2, r9\n" + " mov r3, sl\n" + " bl InitWindow\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " b ._857\n" + "._859:\n" + " .align 2, 0\n" + "._858:\n" + " .word gUnknown_Debug_03004370\n" + " .word gBattleTextBuff1\n" + " .word UnkDebug0+0x1d4\n" + " .word gUnknown_Debug_03004360\n" + " .word gUnknown_02023A14+0x52\n" + " .word gBaseStats\n" + " .word gAbilityNames\n" + "._856:\n" + " ldr r6, ._860\n" + " ldr r1, ._860 + 4\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " ldr r5, ._860 + 8\n" + " ldr r4, ._860 + 12\n" + " ldrh r2, [r4]\n" + " ldrb r3, [r4, #0x2]\n" + " ldrb r0, [r4, #0x4]\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " add r1, r6, #0\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + " ldrh r2, [r4, #0x6]\n" + " ldrb r3, [r4, #0x8]\n" + " ldrb r0, [r4, #0xa]\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " add r1, r6, #0\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + "._857:\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" + "._861:\n" + " .align 2, 0\n" + "._860:\n" + " .word gBattleTextBuff1\n" + " .word gAbilityNames\n" + " .word gUnknown_Debug_03004370\n" + " .word UnkDebug0+0x1d4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012540() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " ldr r5, ._862\n" + " ldr r0, ._862 + 4\n" + " add r0, r0, #0x44\n" + " mov r2, #0x0\n" + " ldsh r1, [r0, r2]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r4, ._862 + 8\n" + " ldr r1, ._862 + 12\n" + " mov r3, #0x9b\n" + " lsl r3, r3, #0x1\n" + " add r0, r1, r3\n" + " ldrh r2, [r0]\n" + " mov r6, #0x9c\n" + " lsl r6, r6, #0x1\n" + " add r0, r1, r6\n" + " ldrb r3, [r0]\n" + " add r6, r6, #0x2\n" + " add r0, r1, r6\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " add r0, r4, #0\n" + " add r1, r5, #0\n" + " bl InitWindow\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._863:\n" + " .align 2, 0\n" + "._862:\n" + " .word gBattleTextBuff1\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_03004370\n" + " .word UnkDebug0+0x6c\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_nullsub_3() +{ + asm( + " bx lr\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80125A0() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._864\n" + " ldr r3, ._864 + 4\n" + " ldr r2, ._864 + 8\n" + " ldr r0, ._864 + 12\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._864 + 16\n" + " ldrb r2, [r1]\n" + " mov r1, #0x8c\n" + " mul r1, r1, r2\n" + " add r0, r0, r1\n" + " add r0, r0, r3\n" + " ldr r0, [r0]\n" + " add r0, r0, r4\n" + " mov r1, #0x6d\n" + " strb r1, [r0]\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._865:\n" + " .align 2, 0\n" + "._864:\n" + " .word +0x2000000\n" + " .word UnkDebug0+0x2c8\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_03004360\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80125E4() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._866\n" + " ldr r3, ._866 + 4\n" + " ldr r2, ._866 + 8\n" + " ldr r0, ._866 + 12\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._866 + 16\n" + " ldrb r2, [r1]\n" + " mov r1, #0x8c\n" + " mul r1, r1, r2\n" + " add r0, r0, r1\n" + " add r0, r0, r3\n" + " ldr r0, [r0]\n" + " add r0, r0, r4\n" + " mov r1, #0x81\n" + " strb r1, [r0]\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._867:\n" + " .align 2, 0\n" + "._866:\n" + " .word +0x2000000\n" + " .word UnkDebug0+0x2c8\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_03004360\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012628() +{ + asm( + " ldr r3, ._868\n" + " ldr r2, ._868 + 4\n" + " ldr r0, ._868 + 8\n" + " ldrb r1, [r0]\n" + " lsl r1, r1, #0x2\n" + " ldr r0, ._868 + 12\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x4\n" + " add r1, r1, r0\n" + " add r1, r1, r2\n" + " ldr r0, [r1]\n" + " add r0, r0, r3\n" + " mov r1, #0x6d\n" + " strb r1, [r0]\n" + " bx lr\n" + "._869:\n" + " .align 2, 0\n" + "._868:\n" + " .word +0x2000000\n" + " .word UnkDebug0+0x3e0\n" + " .word gUnknown_Debug_030043A8\n" + " .word gUnknown_Debug_03004360\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012658() +{ + asm( + " ldr r3, ._870\n" + " ldr r2, ._870 + 4\n" + " ldr r0, ._870 + 8\n" + " ldrb r1, [r0]\n" + " lsl r1, r1, #0x2\n" + " ldr r0, ._870 + 12\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x4\n" + " add r1, r1, r0\n" + " add r1, r1, r2\n" + " ldr r0, [r1]\n" + " add r0, r0, r3\n" + " mov r1, #0x81\n" + " strb r1, [r0]\n" + " bx lr\n" + "._871:\n" + " .align 2, 0\n" + "._870:\n" + " .word +0x2000000\n" + " .word UnkDebug0+0x3e0\n" + " .word gUnknown_Debug_030043A8\n" + " .word gUnknown_Debug_03004360\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012688() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add sp, sp, #0xfffffff4\n" + " mov r1, #0x0\n" + " mov r4, #0xcd\n" + " lsl r4, r4, #0x1\n" + " ldr r3, ._873\n" + " mov r2, #0x0\n" + "._872:\n" + " add r0, r1, r3\n" + " strb r2, [r0]\n" + " add r1, r1, #0x1\n" + " cmp r1, r4\n" + " ble ._872 @cond_branch\n" + " mov r0, #0x0\n" + " bl SetHBlankCallback\n" + " mov r0, #0x0\n" + " bl SetVBlankCallback\n" + " mov r5, #0x0\n" + " str r5, [sp, #0x8]\n" + " ldr r1, ._873 + 4\n" + " add r0, sp, #0x8\n" + " str r0, [r1]\n" + " mov r0, #0xc0\n" + " lsl r0, r0, #0x13\n" + " str r0, [r1, #0x4]\n" + " ldr r0, ._873 + 8\n" + " str r0, [r1, #0x8]\n" + " ldr r0, [r1, #0x8]\n" + " ldr r0, ._873 + 12\n" + " strh r5, [r0]\n" + " sub r0, r0, #0xc\n" + " strh r5, [r0]\n" + " add r0, r0, #0x4\n" + " strh r5, [r0]\n" + " sub r0, r0, #0x2\n" + " strh r5, [r0]\n" + " add r0, r0, #0x4\n" + " strh r5, [r0]\n" + " add r0, r0, #0x2\n" + " strh r5, [r0]\n" + " add r0, r0, #0x2\n" + " strh r5, [r0]\n" + " ldr r4, ._873 + 16\n" + " add r0, r4, #0\n" + " bl SetUpWindowConfig\n" + " bl ResetPaletteFade\n" + " ldr r0, ._873 + 20\n" + " strh r5, [r0]\n" + " ldr r1, ._873 + 24\n" + " mov r0, #0xa0\n" + " strh r0, [r1]\n" + " ldr r0, ._873 + 28\n" + " strh r5, [r0]\n" + " ldr r0, ._873 + 32\n" + " strh r5, [r0]\n" + " ldr r0, ._873 + 36\n" + " strh r5, [r0]\n" + " ldr r0, ._873 + 40\n" + " strh r5, [r0]\n" + " ldr r0, ._873 + 44\n" + " strh r5, [r0]\n" + " ldr r0, ._873 + 48\n" + " strh r5, [r0]\n" + " ldr r1, ._873 + 52\n" + " mov r0, #0x9\n" + " strb r0, [r1]\n" + " bl sub_800D6D4\n" + " bl sub_800DAB8\n" + " bl ResetSpriteData\n" + " bl ResetTasks\n" + " bl FreeAllSpritePalettes\n" + " ldr r1, ._873 + 56\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r6, ._873 + 60\n" + " mov r0, #0x1\n" + " strh r0, [r6]\n" + " ldr r0, ._873 + 64\n" + " add r1, r4, #0\n" + " bl InitWindowFromConfig\n" + " ldrh r2, [r6]\n" + " lsl r0, r2, #0x3\n" + " ldr r1, ._873 + 68\n" + " add r0, r0, r1\n" + " ldr r1, ._873 + 72\n" + " mov r8, r1\n" + " lsl r2, r2, #0x2\n" + " add r2, r2, r8\n" + " ldrb r1, [r2]\n" + " ldrb r2, [r2, #0x1]\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x12\n" + " ldr r4, ._873 + 76\n" + " ldr r4, [r4, #0x4]\n" + " str r4, [sp]\n" + " ldrh r4, [r6]\n" + " str r4, [sp, #0x4]\n" + " bl DecompressPicFromTable_2\n" + " ldr r1, ._873 + 80\n" + " ldrh r0, [r6]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0x88\n" + " lsl r1, r1, #0x1\n" + " mov r2, #0x20\n" + " bl LoadCompressedPalette\n" + " ldrh r0, [r6]\n" + " mov r1, #0x1\n" + " bl GetMonSpriteTemplate_803C56C\n" + " ldr r0, ._873 + 84\n" + " ldrh r1, [r6]\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r8\n" + " ldrb r2, [r1, #0x1]\n" + " add r2, r2, #0x28\n" + " mov r1, #0xb0\n" + " mov r3, #0x28\n" + " bl CreateSprite\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r3, ._873 + 88\n" + " lsl r1, r4, #0x4\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x2\n" + " add r0, r3, #0\n" + " add r0, r0, #0x1c\n" + " add r0, r1, r0\n" + " ldr r2, ._873 + 92\n" + " str r2, [r0]\n" + " add r1, r1, r3\n" + " ldrb r2, [r1, #0x5]\n" + " mov r0, #0xf\n" + " and r0, r0, r2\n" + " mov r2, #0x10\n" + " orr r0, r0, r2\n" + " strb r0, [r1, #0x5]\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x13\n" + " mov r2, #0xfa\n" + " lsl r2, r2, #0x5\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, ._873 + 96\n" + " bl SetHBlankCallback\n" + " ldr r0, ._873 + 100\n" + " bl SetVBlankCallback\n" + " bl gScriptFuncs_End+0x14f4\n" + " ldr r0, ._873 + 104\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._873 + 108\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " strh r5, [r1, #0x8]\n" + " strh r4, [r1, #0xa]\n" + " ldr r0, ._873 + 112\n" + " bl SetMainCallback2\n" + " add sp, sp, #0xc\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._874:\n" + " .align 2, 0\n" + "._873:\n" + " .word gUnknown_02023A14+0x13e\n" + " .word 0x40000d4\n" + " .word 0x85006000\n" + " .word 0x400004c\n" + " .word gWindowConfig_81E6C58\n" + " .word gUnknown_030042A4\n" + " .word gUnknown_030042A0\n" + " .word gUnknown_030042C0\n" + " .word gUnknown_030041B4\n" + " .word gUnknown_03004288\n" + " .word gUnknown_03004280\n" + " .word gUnknown_030041B0\n" + " .word gUnknown_030041B8\n" + " .word gBattleTerrain\n" + " .word gReservedSpritePaletteCount\n" + " .word gCurrentMove\n" + " .word gUnknown_03004210\n" + " .word gMonFrontPicTable\n" + " .word gMonFrontPicCoords\n" + " .word gUnknown_081FAF4C\n" + " .word gMonPaletteTable\n" + " .word gUnknown_02024E8C\n" + " .word gSprites\n" + " .word nullsub_37+1\n" + " .word debug_nullsub_45+1\n" + " .word debug_sub_8011DD4+1\n" + " .word debug_sub_8012D10+1\n" + " .word gTasks\n" + " .word debug_sub_8012878+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012878() +{ + asm( + " push {lr}\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " ldr r0, ._876\n" + " bl sub_800374C\n" + " bl UpdatePaletteFade\n" + " bl RunTasks\n" + " ldr r0, ._876 + 4\n" + " ldrh r1, [r0, #0x2c]\n" + " mov r0, #0x82\n" + " lsl r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._875 @cond_branch\n" + " ldr r0, ._876 + 8\n" + " bl SetMainCallback2\n" + "._875:\n" + " pop {r0}\n" + " bx r0\n" + "._877:\n" + " .align 2, 0\n" + "._876:\n" + " .word gUnknown_03004210\n" + " .word gMain\n" + " .word debug_sub_80108B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80128B4() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x0\n" + " mov r1, #0x9\n" + " bl debug_sub_8010A7C\n" + " ldr r5, ._878\n" + " ldr r4, ._878 + 4\n" + " mov r0, #0x23\n" + " mov r8, r0\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " mov r2, #0x90\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + " ldr r6, ._878 + 8\n" + " ldrh r1, [r6]\n" + " add r0, r4, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0x0\n" + " strb r0, [r4, #0x3]\n" + " mov r0, #0xff\n" + " strb r0, [r4, #0x4]\n" + " ldrh r1, [r6]\n" + " mov r0, #0xb\n" + " mul r1, r1, r0\n" + " ldr r0, ._878 + 12\n" + " add r1, r1, r0\n" + " add r0, r4, #0\n" + " bl StringAppend\n" + " mov r0, r8\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " mov r2, #0x90\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + " add sp, sp, #0x4\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._879:\n" + " .align 2, 0\n" + "._878:\n" + " .word gUnknown_03004210\n" + " .word gBattleTextBuff1\n" + " .word gCurrentMove\n" + " .word gSpeciesNames\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012938() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, sl\n" + " mov r5, r9\n" + " mov r4, r8\n" + " push {r4, r5, r6}\n" + " add sp, sp, #0xfffffffc\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " mov r0, #0x0\n" + " mov r1, #0x7\n" + " bl debug_sub_8010A7C\n" + " ldr r6, ._880\n" + " ldr r4, ._880 + 4\n" + " mov r0, #0x25\n" + " mov r8, r0\n" + " str r0, [sp]\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " mov r2, #0xa2\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + " add r0, r6, #0\n" + " bl sub_8002F44\n" + " ldr r1, ._880 + 8\n" + " add r0, r4, #0\n" + " bl StringCopy\n" + " add r0, r4, #4\n" + " ldr r1, ._880 + 12\n" + " mov sl, r1\n" + " ldr r2, ._880 + 16\n" + " mov r9, r2\n" + " ldrh r1, [r2]\n" + " sub r1, r1, #0x1\n" + " add r1, r1, sl\n" + " ldrb r1, [r1]\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, r8\n" + " str r0, [sp]\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " mov r2, #0xa2\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + " add r0, r6, #0\n" + " bl sub_8002F44\n" + " ldr r2, ._880 + 20\n" + " ldr r1, ._880 + 24\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0xa\n" + " ldsh r0, [r0, r1]\n" + " lsl r1, r0, #0x4\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r2\n" + " mov r2, r9\n" + " ldrh r0, [r2]\n" + " sub r0, r0, #0x1\n" + " add r0, r0, sl\n" + " ldrb r0, [r0]\n" + " neg r0, r0\n" + " strh r0, [r1, #0x26]\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}\n" + " pop {r0}\n" + " bx r0\n" + "._881:\n" + " .align 2, 0\n" + "._880:\n" + " .word gUnknown_03004210\n" + " .word gBattleTextBuff1\n" + " .word UnkDebug0+0x400\n" + " .word gUnknown_02023A14+0x13e\n" + " .word gCurrentMove\n" + " .word gSprites\n" + " .word gTasks\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80129F8() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add sp, sp, #0xfffffff8\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " ldr r6, ._882\n" + " ldrh r2, [r6]\n" + " lsl r0, r2, #0x3\n" + " ldr r1, ._882 + 4\n" + " add r0, r0, r1\n" + " ldr r1, ._882 + 8\n" + " mov r8, r1\n" + " lsl r2, r2, #0x2\n" + " add r2, r2, r8\n" + " ldrb r1, [r2]\n" + " ldrb r2, [r2, #0x1]\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x12\n" + " ldr r4, ._882 + 12\n" + " ldr r4, [r4, #0x4]\n" + " str r4, [sp]\n" + " ldrh r4, [r6]\n" + " str r4, [sp, #0x4]\n" + " bl DecompressPicFromTable_2\n" + " ldr r1, ._882 + 16\n" + " ldrh r0, [r6]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0x88\n" + " lsl r1, r1, #0x1\n" + " mov r2, #0x20\n" + " bl LoadCompressedPalette\n" + " ldr r4, ._882 + 20\n" + " ldr r0, ._882 + 24\n" + " lsl r2, r5, #0x2\n" + " add r2, r2, r5\n" + " lsl r2, r2, #0x3\n" + " add r2, r2, r0\n" + " mov r1, #0xa\n" + " ldsh r0, [r2, r1]\n" + " lsl r1, r0, #0x4\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r4\n" + " ldrh r0, [r6]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r8\n" + " ldrb r0, [r0, #0x1]\n" + " add r0, r0, #0x28\n" + " strh r0, [r1, #0x22]\n" + " mov r1, #0xa\n" + " ldsh r0, [r2, r1]\n" + " lsl r1, r0, #0x4\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r4\n" + " ldr r3, ._882 + 28\n" + " ldrh r0, [r6]\n" + " sub r0, r0, #0x1\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " neg r0, r0\n" + " strh r0, [r1, #0x26]\n" + " mov r0, #0xa\n" + " ldsh r1, [r2, r0]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r4\n" + " mov r1, #0x0\n" + " bl StartSpriteAnim\n" + " add sp, sp, #0x8\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._883:\n" + " .align 2, 0\n" + "._882:\n" + " .word gCurrentMove\n" + " .word gMonFrontPicTable\n" + " .word gMonFrontPicCoords\n" + " .word gUnknown_081FAF4C\n" + " .word gMonPaletteTable\n" + " .word gSprites\n" + " .word gTasks\n" + " .word gUnknown_02023A14+0x13e\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012AC0() +{ + asm( + " push {r4, r5, r6, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r6, r1, #0x18\n" + " ldr r3, ._885\n" + " ldr r4, ._885 + 4\n" + " b ._884\n" + "._886:\n" + " .align 2, 0\n" + "._885:\n" + " .word gCurrentMove\n" + " .word gBaseStats\n" + "._890:\n" + " ldrb r0, [r1, #0x7]\n" + " cmp r0, #0x2\n" + " beq ._887 @cond_branch\n" + "._884:\n" + " add r2, r3, #0\n" + " lsl r0, r5, #0x18\n" + " asr r0, r0, #0x18\n" + " ldrh r1, [r2]\n" + " add r0, r0, r1\n" + " strh r0, [r2]\n" + " lsl r0, r0, #0x10\n" + " cmp r0, #0\n" + " bne ._888 @cond_branch\n" + " ldr r1, ._891\n" + " add r0, r1, #0\n" + " strh r0, [r2]\n" + "._888:\n" + " ldrh r1, [r2]\n" + " ldr r0, ._891\n" + " cmp r1, r0\n" + " bne ._889 @cond_branch\n" + " mov r0, #0x1\n" + " strh r0, [r2]\n" + "._889:\n" + " ldrh r0, [r3]\n" + " lsl r1, r0, #0x3\n" + " sub r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r4\n" + " ldrb r0, [r1, #0x6]\n" + " cmp r0, #0x2\n" + " bne ._890 @cond_branch\n" + "._887:\n" + " bl debug_sub_80128B4\n" + " add r0, r6, #0\n" + " bl debug_sub_8012938\n" + " add r0, r6, #0\n" + " bl debug_sub_80129F8\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._892:\n" + " .align 2, 0\n" + "._891:\n" + " .word 0x19b\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012B2C() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x11\n" + " ldr r1, ._893\n" + " add r2, r0, r1\n" + " mov r1, #0x1\n" + " strh r1, [r2]\n" + " ldr r1, ._893 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0x2\n" + " strh r1, [r0]\n" + " bx lr\n" + "._894:\n" + " .align 2, 0\n" + "._893:\n" + " .word 0x600c772\n" + " .word 0x600c7b2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012B4C() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x11\n" + " ldr r2, ._895\n" + " add r1, r0, r2\n" + " ldr r3, ._895 + 4\n" + " add r2, r3, #0\n" + " strh r2, [r1]\n" + " ldr r1, ._895 + 8\n" + " add r0, r0, r1\n" + " strh r2, [r0]\n" + " bx lr\n" + "._896:\n" + " .align 2, 0\n" + "._895:\n" + " .word 0x600c772\n" + " .word 0x1016\n" + " .word 0x600c7b2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012B70() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r6, r1, #0x18\n" + " cmp r6, #0\n" + " beq ._897 @cond_branch\n" + " mov r4, #0x1\n" + " str r4, [sp]\n" + " mov r0, #0x18\n" + " mov r1, #0x1c\n" + " mov r2, #0x1d\n" + " mov r3, #0x21\n" + " bl sub_802BBD4\n" + " bl debug_sub_80128B4\n" + " add r0, r5, #0\n" + " bl debug_sub_8012938\n" + " add r0, r5, #0\n" + " bl debug_sub_80129F8\n" + " ldr r1, ._899\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " strh r4, [r0, #0x8]\n" + " b ._898\n" + "._900:\n" + " .align 2, 0\n" + "._899:\n" + " .word gTasks\n" + "._897:\n" + " str r6, [sp]\n" + " mov r0, #0x18\n" + " mov r1, #0x1c\n" + " mov r2, #0x1d\n" + " mov r3, #0x21\n" + " bl sub_802BBD4\n" + " ldr r0, ._901\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " mov r0, #0x2\n" + " strh r0, [r4, #0x8]\n" + " ldr r5, ._901 + 4\n" + " ldr r1, ._901 + 8\n" + " mov r2, #0xa4\n" + " lsl r2, r2, #0x2\n" + " mov r0, #0x1d\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " mov r3, #0x1a\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + " strh r6, [r4, #0xe]\n" + " mov r0, #0x0\n" + " bl debug_sub_8012B2C\n" + "._898:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._902:\n" + " .align 2, 0\n" + "._901:\n" + " .word gTasks\n" + " .word gUnknown_03004210\n" + " .word UnkDebug0+0x422\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012C08() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r1, #0\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " mov r0, #0x0\n" + " mov r1, #0x9\n" + " bl debug_sub_8010A7C\n" + " ldr r7, ._905\n" + " ldr r5, ._905 + 4\n" + " mov r0, #0x23\n" + " mov r8, r0\n" + " str r0, [sp]\n" + " add r0, r7, #0\n" + " add r1, r5, #0\n" + " mov r2, #0x90\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + " add r0, r7, #0\n" + " bl sub_8002F44\n" + " mov r0, #0x0\n" + " mov r1, #0x7\n" + " bl debug_sub_8010A7C\n" + " mov r0, #0x25\n" + " str r0, [sp]\n" + " add r0, r7, #0\n" + " add r1, r5, #0\n" + " mov r2, #0xa2\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + " add r0, r7, #0\n" + " bl sub_8002F44\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x18\n" + " mov r1, #0x1c\n" + " mov r2, #0x1d\n" + " mov r3, #0x21\n" + " bl sub_802BBD4\n" + " cmp r4, #0\n" + " beq ._903 @cond_branch\n" + " ldr r1, ._905 + 8\n" + " lsl r4, r6, #0x2\n" + " add r0, r4, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0x4\n" + " strh r1, [r0, #0x8]\n" + " ldr r1, ._905 + 12\n" + " mov r0, r8\n" + " str r0, [sp]\n" + " add r0, r7, #0\n" + " mov r2, #0x90\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + " b ._904\n" + "._906:\n" + " .align 2, 0\n" + "._905:\n" + " .word gUnknown_03004210\n" + " .word gBattleTextBuff1\n" + " .word gTasks\n" + " .word gUnknown_Debug_821F7F3\n" + "._903:\n" + " ldr r1, ._907\n" + " lsl r4, r6, #0x2\n" + " add r0, r4, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0x3\n" + " strh r1, [r0, #0x8]\n" + " ldr r1, ._907 + 4\n" + " mov r0, r8\n" + " str r0, [sp]\n" + " add r0, r7, #0\n" + " mov r2, #0x90\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + "._904:\n" + " add r5, r4, #0\n" + " ldr r4, ._907 + 8\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " ldr r1, ._907 + 12\n" + " mov r2, #0xa4\n" + " lsl r2, r2, #0x2\n" + " mov r0, #0x1d\n" + " str r0, [sp]\n" + " add r0, r4, #0\n" + " mov r3, #0x1a\n" + " bl InitWindow\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " ldr r1, ._907\n" + " add r0, r5, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0x1\n" + " strh r1, [r0, #0xe]\n" + " mov r0, #0x1\n" + " bl debug_sub_8012B2C\n" + " add sp, sp, #0x4\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._908:\n" + " .align 2, 0\n" + "._907:\n" + " .word gTasks\n" + " .word UnkDebug0+0x432\n" + " .word gUnknown_03004210\n" + " .word gUnknown_08400D7A\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012D10() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " ldr r1, ._911\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0x8\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x4\n" + " bls ._909 @cond_branch\n" + " b ._1067\n" + "._909:\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._911 + 4\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._912:\n" + " .align 2, 0\n" + "._911:\n" + " .word gTasks\n" + " .word ._913\n" + "._913:\n" + " .word ._914\n" + " .word ._915\n" + " .word ._916\n" + " .word ._917\n" + " .word ._918\n" + "._914:\n" + " bl debug_sub_80128B4\n" + " add r0, r5, #0\n" + " bl debug_sub_8012938\n" + " ldr r4, ._920\n" + " ldr r1, ._920 + 4\n" + " mov r2, #0xc8\n" + " lsl r2, r2, #0x1\n" + " mov r0, #0x23\n" + " str r0, [sp]\n" + " add r0, r4, #0\n" + " mov r3, #0x13\n" + " bl InitWindow\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " ldr r1, ._920 + 8\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldrh r1, [r0, #0x8]\n" + " add r1, r1, #0x1\n" + " strh r1, [r0, #0x8]\n" + " ldrb r0, [r0, #0xc]\n" + " b ._919\n" + "._921:\n" + " .align 2, 0\n" + "._920:\n" + " .word gUnknown_03004210\n" + " .word UnkDebug0+0x405\n" + " .word gTasks\n" + "._915:\n" + " ldr r2, ._924\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._922 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._924 + 4\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xc]\n" + " bl nullsub_8\n" + " ldrh r1, [r4, #0xc]\n" + " mov r0, #0x3\n" + " neg r0, r0\n" + " and r0, r0, r1\n" + " b ._931\n" + "._925:\n" + " .align 2, 0\n" + "._924:\n" + " .word gMain\n" + " .word gTasks\n" + "._922:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._926 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._928\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xc]\n" + " bl nullsub_8\n" + " ldrh r1, [r4, #0xc]\n" + " mov r0, #0x2\n" + " b ._927\n" + "._929:\n" + " .align 2, 0\n" + "._928:\n" + " .word gTasks\n" + "._926:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._930 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._932\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xc]\n" + " bl nullsub_8\n" + " ldrh r1, [r4, #0xc]\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " and r0, r0, r1\n" + " b ._931\n" + "._933:\n" + " .align 2, 0\n" + "._932:\n" + " .word gTasks\n" + "._930:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._934 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._936\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xc]\n" + " bl nullsub_8\n" + " ldrh r1, [r4, #0xc]\n" + " mov r0, #0x1\n" + "._927:\n" + " orr r0, r0, r1\n" + "._931:\n" + " strh r0, [r4, #0xc]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + "._919:\n" + " mov r1, #0x0\n" + " bl sub_802E3E4\n" + " b ._1067\n" + "._937:\n" + " .align 2, 0\n" + "._936:\n" + " .word gTasks\n" + "._934:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r4, #0x1\n" + " add r0, r4, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._938 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._943\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r2, #0xc\n" + " ldsh r0, [r0, r2]\n" + " cmp r0, #0x1\n" + " beq ._939 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._940 @cond_branch\n" + " cmp r0, #0\n" + " beq ._941 @cond_branch\n" + " b ._1067\n" + "._944:\n" + " .align 2, 0\n" + "._943:\n" + " .word gTasks\n" + "._940:\n" + " cmp r0, #0x2\n" + " beq ._945 @cond_branch\n" + "._990:\n" + " cmp r0, #0x3\n" + " bne ._946 @cond_branch\n" + " b ._1014\n" + "._946:\n" + " b ._1067\n" + "._941:\n" + " ldr r1, ._952\n" + " ldr r0, ._952 + 4\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x1\n" + " add r1, r0, r1\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x3f\n" + " bls ._949 @cond_branch\n" + " b ._1067\n" + "._949:\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._1019\n" + "._953:\n" + " .align 2, 0\n" + "._952:\n" + " .word gUnknown_02023A14+0x13e\n" + " .word gCurrentMove\n" + "._939:\n" + " mov r0, #0x1\n" + " b ._997\n" + "._945:\n" + " ldr r1, ._957\n" + " ldrh r2, [r1]\n" + " mov r0, #0xcd\n" + " lsl r0, r0, #0x1\n" + " cmp r2, r0\n" + " bhi ._955 @cond_branch\n" + " add r0, r2, #1\n" + "._979:\n" + " strh r0, [r1]\n" + " b ._1025\n" + "._958:\n" + " .align 2, 0\n" + "._957:\n" + " .word gCurrentMove\n" + "._955:\n" + " strh r4, [r1]\n" + " b ._1025\n" + "._938:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._960 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._966\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0xc\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x1\n" + " bne ._961 @cond_branch\n" + " b ._1007\n" + "._961:\n" + " cmp r0, #0x1\n" + " bgt ._963 @cond_branch\n" + " cmp r0, #0\n" + " beq ._964 @cond_branch\n" + " b ._1067\n" + "._967:\n" + " .align 2, 0\n" + "._966:\n" + " .word gTasks\n" + "._963:\n" + " cmp r0, #0x2\n" + " beq ._968 @cond_branch\n" + " b ._990\n" + "._964:\n" + " ldr r1, ._973\n" + " ldr r0, ._973 + 4\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x1\n" + " add r1, r0, r1\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._970 @cond_branch\n" + " b ._1067\n" + "._970:\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._1019\n" + "._974:\n" + " .align 2, 0\n" + "._973:\n" + " .word gUnknown_02023A14+0x13e\n" + " .word gCurrentMove\n" + "._968:\n" + " ldr r1, ._977\n" + " ldrh r0, [r1]\n" + " cmp r0, #0x1\n" + " bls ._975 @cond_branch\n" + " sub r0, r0, #0x1\n" + " b ._979\n" + "._978:\n" + " .align 2, 0\n" + "._977:\n" + " .word gCurrentMove\n" + "._975:\n" + " ldr r2, ._980\n" + " add r0, r2, #0\n" + " b ._979\n" + "._981:\n" + " .align 2, 0\n" + "._980:\n" + " .word 0x19b\n" + "._960:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._982 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._987\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0xc\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x1\n" + " beq ._983 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._984 @cond_branch\n" + " cmp r0, #0\n" + " beq ._985 @cond_branch\n" + " b ._1067\n" + "._988:\n" + " .align 2, 0\n" + "._987:\n" + " .word gTasks\n" + "._984:\n" + " cmp r0, #0x2\n" + " beq ._989 @cond_branch\n" + " b ._990\n" + "._985:\n" + " ldr r3, ._995\n" + " ldr r2, ._995 + 4\n" + " ldrh r0, [r2]\n" + " sub r0, r0, #0x1\n" + " add r1, r0, r3\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x3f\n" + " bls ._991 @cond_branch\n" + " b ._1067\n" + "._991:\n" + " add r0, r0, #0x8\n" + " strb r0, [r1]\n" + " ldrh r0, [r2]\n" + " sub r0, r0, #0x1\n" + " add r1, r0, r3\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x40\n" + " bls ._1019 @cond_branch\n" + " mov r0, #0x40\n" + " strb r0, [r1]\n" + " b ._1019\n" + "._996:\n" + " .align 2, 0\n" + "._995:\n" + " .word gUnknown_02023A14+0x13e\n" + " .word gCurrentMove\n" + "._983:\n" + " mov r0, #0x1\n" + " b ._997\n" + "._989:\n" + " ldr r3, ._1000\n" + " ldrh r2, [r3]\n" + " add r1, r2, #0\n" + " add r1, r1, #0xa\n" + " ldr r0, ._1000 + 4\n" + " cmp r1, r0\n" + " bgt ._998 @cond_branch\n" + " strh r1, [r3]\n" + " b ._1025\n" + "._1001:\n" + " .align 2, 0\n" + "._1000:\n" + " .word gCurrentMove\n" + " .word 0x19b\n" + "._998:\n" + " ldr r1, ._1003\n" + " add r0, r2, r1\n" + " strh r0, [r3]\n" + " b ._1025\n" + "._1004:\n" + " .align 2, 0\n" + "._1003:\n" + " .word 0xfffffe70\n" + "._982:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._1005 @cond_branch\n" + " b ._1067\n" + "._1005:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._1011\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r2, #0xc\n" + " ldsh r3, [r0, r2]\n" + " cmp r3, #0x1\n" + " beq ._1007 @cond_branch\n" + " cmp r3, #0x1\n" + " bgt ._1008 @cond_branch\n" + " cmp r3, #0\n" + " beq ._1009 @cond_branch\n" + " b ._1067\n" + "._1012:\n" + " .align 2, 0\n" + "._1011:\n" + " .word gTasks\n" + "._1008:\n" + " cmp r3, #0x2\n" + " beq ._1013 @cond_branch\n" + " cmp r3, #0x3\n" + " beq ._1014 @cond_branch\n" + " b ._1067\n" + "._1009:\n" + " ldr r1, ._1020\n" + " ldr r0, ._1020 + 4\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x1\n" + " add r2, r0, r1\n" + " ldrb r0, [r2]\n" + " add r1, r0, #0\n" + " cmp r1, #0\n" + " bne ._1016 @cond_branch\n" + " b ._1067\n" + "._1016:\n" + " cmp r1, #0x8\n" + " bls ._1018 @cond_branch\n" + " sub r0, r0, #0x8\n" + " strb r0, [r2]\n" + " b ._1019\n" + "._1021:\n" + " .align 2, 0\n" + "._1020:\n" + " .word gUnknown_02023A14+0x13e\n" + " .word gCurrentMove\n" + "._1018:\n" + " strb r3, [r2]\n" + "._1019:\n" + " add r0, r5, #0\n" + " bl debug_sub_8012938\n" + " b ._1067\n" + "._1007:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + "._997:\n" + " add r1, r5, #0\n" + " bl debug_sub_8012AC0\n" + " b ._1067\n" + "._1013:\n" + " ldr r2, ._1026\n" + " ldrh r0, [r2]\n" + " add r1, r0, #0\n" + " sub r1, r1, #0xa\n" + " cmp r1, #0x1\n" + " ble ._1024 @cond_branch\n" + " strh r1, [r2]\n" + " b ._1025\n" + "._1027:\n" + " .align 2, 0\n" + "._1026:\n" + " .word gCurrentMove\n" + "._1024:\n" + " mov r1, #0xc8\n" + " lsl r1, r1, #0x1\n" + " add r0, r0, r1\n" + " strh r0, [r2]\n" + "._1025:\n" + " bl debug_sub_80128B4\n" + " add r0, r5, #0\n" + " bl debug_sub_8012938\n" + " add r0, r5, #0\n" + " bl debug_sub_80129F8\n" + " b ._1067\n" + "._1014:\n" + " add r0, r5, #0\n" + " mov r1, #0x0\n" + " bl debug_sub_8012B70\n" + " b ._1067\n" + "._916:\n" + " ldr r0, ._1032\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1030 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._1032 + 4\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xe]\n" + " bl debug_sub_8012B4C\n" + " mov r0, #0x0\n" + " b ._1055\n" + "._1033:\n" + " .align 2, 0\n" + "._1032:\n" + " .word gMain\n" + " .word gTasks\n" + "._1030:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._1046 @cond_branch\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1035 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._1037\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldrb r1, [r1, #0xe]\n" + " add r0, r5, #0\n" + " bl debug_sub_8012C08\n" + " b ._1067\n" + "._1038:\n" + " .align 2, 0\n" + "._1037:\n" + " .word gTasks\n" + "._1035:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._1039 @cond_branch\n" + " b ._1067\n" + "._1039:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " b ._1063\n" + "._917:\n" + " ldr r0, ._1044\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1042 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._1044 + 4\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xe]\n" + " bl debug_sub_8012B4C\n" + " mov r0, #0x0\n" + " b ._1055\n" + "._1045:\n" + " .align 2, 0\n" + "._1044:\n" + " .word gMain\n" + " .word gTasks\n" + "._1042:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._1046 @cond_branch\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1047 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._1050\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " mov r2, #0xe\n" + " ldsh r0, [r1, r2]\n" + " cmp r0, #0\n" + " bne ._1063 @cond_branch\n" + " ldr r1, ._1050 + 4\n" + " ldr r2, ._1050 + 8\n" + " mov r0, #0x1f\n" + " bl debug_sub_80132C8\n" + " b ._1063\n" + "._1051:\n" + " .align 2, 0\n" + "._1050:\n" + " .word gTasks\n" + " .word gUnknown_02023A14+0x13e\n" + " .word 0x19b\n" + "._1047:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1067 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " b ._1063\n" + "._918:\n" + " ldr r0, ._1056\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1054 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._1056 + 4\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xe]\n" + " bl debug_sub_8012B4C\n" + " mov r0, #0x0\n" + " b ._1055\n" + "._1057:\n" + " .align 2, 0\n" + "._1056:\n" + " .word gMain\n" + " .word gTasks\n" + "._1054:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1058 @cond_branch\n" + "._1046:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._1060\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xe]\n" + " bl debug_sub_8012B4C\n" + " mov r0, #0x1\n" + "._1055:\n" + " strh r0, [r4, #0xe]\n" + " bl debug_sub_8012B2C\n" + " b ._1067\n" + "._1061:\n" + " .align 2, 0\n" + "._1060:\n" + " .word gTasks\n" + "._1058:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1062 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._1065\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " mov r2, #0xe\n" + " ldsh r0, [r1, r2]\n" + " cmp r0, #0\n" + " bne ._1063 @cond_branch\n" + " ldr r1, ._1065 + 4\n" + " ldr r2, ._1065 + 8\n" + " mov r0, #0x1f\n" + " bl debug_sub_8013294\n" + "._1063:\n" + " add r0, r5, #0\n" + " mov r1, #0x1\n" + " bl debug_sub_8012B70\n" + " b ._1067\n" + "._1066:\n" + " .align 2, 0\n" + "._1065:\n" + " .word gTasks\n" + " .word gUnknown_02023A14+0x13e\n" + " .word 0x19b\n" + "._1062:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1067 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " add r0, r5, #0\n" + " mov r1, #0x1\n" + " bl debug_sub_8012B70\n" + "._1067:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8013240() +{ + asm( + " push {lr}\n" + " bl gScriptFuncs_End+0x2fec\n" + " lsl r0, r0, #0x10\n" + " cmp r0, #0\n" + " beq ._1068 @cond_branch\n" + " mov r0, #0x1\n" + " b ._1069\n" + "._1068:\n" + " mov r0, #0x0\n" + "._1069:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8013258() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r1, #0\n" + " add r5, r2, #0\n" + " b ._1070\n" + "._1072:\n" + " ldr r0, ._1074\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" + "._1070:\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl gScriptFuncs_End+0x2f60\n" + " cmp r0, #0\n" + " bne ._1071 @cond_branch\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x5\n" + " cmp r5, r0\n" + " bhi ._1072 @cond_branch\n" + " mov r0, #0x1\n" + " b ._1073\n" + "._1075:\n" + " .align 2, 0\n" + "._1074:\n" + " .word 0xfffff000\n" + "._1071:\n" + " mov r0, #0x0\n" + "._1073:\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8013294() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r5, r1, #0\n" + " add r6, r2, #0\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " bl debug_sub_8013240\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._1076 @cond_branch\n" + " bl gScriptFuncs_End+0x19f4\n" + " add r0, r4, #0\n" + " add r1, r5, #0\n" + " add r2, r6, #0\n" + " bl debug_sub_8013258\n" + " add r4, r0, #0\n" + " bl gScriptFuncs_End+0x1a70\n" + " add r0, r4, #0\n" + " b ._1077\n" + "._1076:\n" + " mov r0, #0x0\n" + "._1077:\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80132C8() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r5, r1, #0\n" + " add r6, r2, #0\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " bl debug_sub_8013240\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._1078 @cond_branch\n" + " add r0, r4, #0\n" + " mov r1, #0x0\n" + " add r2, r5, #0\n" + " add r3, r6, #0\n" + " bl gScriptFuncs_End+0x2d64\n" + "._1078:\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} +#endif + void oac_poke_opponent(struct Sprite *sprite) { sprite->callback = sub_8010278; @@ -1554,6 +8880,269 @@ void sub_8010800(void) gBattleMainFunc = bc_8012FAC; } +#if DEBUG +__attribute__((naked)) +void debug_sub_80138CC() +{ + asm( + " push {lr}\n" + " ldr r0, ._1167\n" + " ldrb r0, [r0]\n" + " bl GetBankSide\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._1163 @cond_branch\n" + " b ._1186\n" + "._1163:\n" + " ldr r1, ._1167 + 4\n" + " ldr r2, ._1167 + 8\n" + " add r0, r1, r2\n" + " ldrb r0, [r0]\n" + " add r2, r1, #0\n" + " cmp r0, #0x4\n" + " bls ._1165 @cond_branch\n" + " b ._1186\n" + "._1165:\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._1167 + 12\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._1168:\n" + " .align 2, 0\n" + "._1167:\n" + " .word gActiveBank\n" + " .word +0x2000000\n" + " .word 0x160fd\n" + " .word ._1169\n" + "._1169:\n" + " .word ._1170\n" + " .word ._1171\n" + " .word ._1172\n" + " .word ._1173\n" + " .word ._1174\n" + "._1170:\n" + " ldr r1, ._1177\n" + " ldr r0, ._1177 + 4\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r1, [r0]\n" + " ldr r0, ._1177 + 8\n" + " cmp r1, r0\n" + " bne ._1186 @cond_branch\n" + " ldr r0, ._1177 + 12\n" + " add r1, r2, r0\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " b ._1187\n" + "._1178:\n" + " .align 2, 0\n" + "._1177:\n" + " .word gBattleBankFunc\n" + " .word gActiveBank\n" + " .word sub_802C098+1\n" + " .word 0x160fd\n" + "._1171:\n" + " ldr r1, ._1180\n" + " mov r0, #0x1\n" + " strh r0, [r1, #0x2c]\n" + " strh r0, [r1, #0x2e]\n" + " ldr r0, ._1180 + 4\n" + " add r1, r2, r0\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r0, ._1180 + 8\n" + " add r1, r2, r0\n" + " mov r0, #0x80\n" + " b ._1187\n" + "._1181:\n" + " .align 2, 0\n" + "._1180:\n" + " .word gMain\n" + " .word 0x160fd\n" + " .word 0x160fe\n" + "._1172:\n" + " ldr r0, ._1184\n" + " add r3, r2, r0\n" + " ldrb r0, [r3]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r3]\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._1186 @cond_branch\n" + " ldr r1, ._1184 + 4\n" + " mov r0, #0x1\n" + " strh r0, [r1, #0x2c]\n" + " strh r0, [r1, #0x2e]\n" + " ldr r0, ._1184 + 8\n" + " add r1, r2, r0\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x80\n" + " strb r0, [r3]\n" + " b ._1186\n" + "._1185:\n" + " .align 2, 0\n" + "._1184:\n" + " .word 0x160fe\n" + " .word gMain\n" + " .word 0x160fd\n" + "._1173:\n" + " ldr r0, ._1188\n" + " add r1, r2, r0\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._1186 @cond_branch\n" + " ldr r1, ._1188 + 4\n" + " mov r0, #0x1\n" + " strh r0, [r1, #0x2c]\n" + " strh r0, [r1, #0x2e]\n" + " ldr r0, ._1188 + 8\n" + " add r1, r2, r0\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " b ._1187\n" + "._1189:\n" + " .align 2, 0\n" + "._1188:\n" + " .word 0x160fe\n" + " .word gMain\n" + " .word 0x160fd\n" + "._1174:\n" + " ldr r0, ._1190\n" + " add r1, r2, r0\n" + " mov r0, #0x0\n" + "._1187:\n" + " strb r0, [r1]\n" + "._1186:\n" + " pop {r0}\n" + " bx r0\n" + "._1191:\n" + " .align 2, 0\n" + "._1190:\n" + " .word 0x160fd\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80139E4() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r0, ._1198\n" + " ldrb r1, [r0]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0\n" + " beq ._1192 @cond_branch\n" + " ldr r2, ._1198 + 4\n" + " mov r0, #0x0\n" + " strb r0, [r2]\n" + " ldr r1, ._1198 + 8\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._1193 @cond_branch\n" + " add r4, r2, #0\n" + " add r5, r1, #0\n" + "._1194:\n" + " bl debug_sub_80138CC\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " strb r0, [r4]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldrb r1, [r5]\n" + " cmp r0, r1\n" + " bcc ._1194 @cond_branch\n" + "._1193:\n" + " ldr r0, ._1198 + 12\n" + " ldr r0, [r0]\n" + " bl gScriptFuncs_End+0x3cf4\n" + " ldr r1, ._1198 + 4\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " ldr r0, ._1198 + 8\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._1200 @cond_branch\n" + " ldr r5, ._1198 + 16\n" + " add r4, r1, #0\n" + "._1196:\n" + " ldrb r0, [r4]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r5\n" + " ldr r0, [r0]\n" + " bl gScriptFuncs_End+0x3cf4\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " strb r0, [r4]\n" + " ldr r1, ._1198 + 8\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldrb r1, [r1]\n" + " cmp r0, r1\n" + " bcc ._1196 @cond_branch\n" + " b ._1200\n" + "._1199:\n" + " .align 2, 0\n" + "._1198:\n" + " .word gUnknown_02023A14+0x50\n" + " .word gActiveBank\n" + " .word gNoOfAllBanks\n" + " .word gBattleMainFunc\n" + " .word gBattleBankFunc\n" + "._1192:\n" + " ldr r0, ._1202\n" + " ldr r0, [r0]\n" + " bl gScriptFuncs_End+0x3cf4\n" + " ldr r1, ._1202 + 4\n" + " strb r4, [r1]\n" + " ldr r0, ._1202 + 8\n" + " ldrb r0, [r0]\n" + " cmp r4, r0\n" + " bcs ._1200 @cond_branch\n" + " ldr r5, ._1202 + 12\n" + " add r4, r1, #0\n" + "._1201:\n" + " ldrb r0, [r4]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r5\n" + " ldr r0, [r0]\n" + " bl gScriptFuncs_End+0x3cf4\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " strb r0, [r4]\n" + " ldr r1, ._1202 + 8\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldrb r1, [r1]\n" + " cmp r0, r1\n" + " bcc ._1201 @cond_branch\n" + "._1200:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._1203:\n" + " .align 2, 0\n" + "._1202:\n" + " .word gBattleMainFunc\n" + " .word gActiveBank\n" + " .word gNoOfAllBanks\n" + " .word gBattleBankFunc\n" + "\n" + ); +} +#endif + void sub_8010824(void) { gBattleMainFunc(); @@ -1562,6 +9151,380 @@ void sub_8010824(void) gBattleBankFunc[gActiveBank](); } +#if DEBUG +__attribute__((naked)) +void sub_8010874() +{ + 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" + " mov r0, #0x0\n" + " bl TurnValuesCleanUp\n" + " bl SpecialStatusesClear\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " ldr r0, ._1215\n" + " mov sl, r0\n" + " ldr r1, ._1215 + 4\n" + " mov r9, r1\n" + " ldr r4, ._1215 + 8\n" + " mov r8, r4\n" + " ldr r0, ._1215 + 12\n" + " mov ip, r0\n" + " ldr r4, ._1215 + 16\n" + " mov r5, #0x0\n" + " ldr r7, ._1215 + 20\n" + " ldr r6, ._1215 + 24\n" + "._1205:\n" + " ldr r0, ._1215 + 28\n" + " add r0, r5, r0\n" + " str r3, [r0]\n" + " mov r1, #0x0\n" + "._1204:\n" + " add r0, r4, r1\n" + " strb r3, [r0]\n" + " add r1, r1, #0x1\n" + " cmp r1, #0x1b\n" + " bls ._1204 @cond_branch\n" + " mov r0, #0x2\n" + " strb r0, [r4, #0x16]\n" + " ldr r1, ._1215 + 32\n" + " add r0, r2, r1\n" + " strb r3, [r0]\n" + " mov r0, ip\n" + " strh r3, [r0]\n" + " mov r1, r8\n" + " strh r3, [r1]\n" + " mov r0, r9\n" + " strh r3, [r0]\n" + " mov r1, sl\n" + " strh r3, [r1]\n" + " ldr r0, ._1215 + 36\n" + " add r1, r2, r0\n" + " mov r0, #0xff\n" + " strb r0, [r1]\n" + " strh r3, [r6]\n" + " strh r3, [r7]\n" + " ldr r1, ._1215 + 40\n" + " add r0, r5, r1\n" + " str r3, [r0]\n" + " mov r0, #0x2\n" + " add sl, sl, r0\n" + " add r9, r9, r0\n" + " add r8, r8, r0\n" + " add ip, ip, r0\n" + " add r4, r4, #0x1c\n" + " add r5, r5, #0x4\n" + " add r7, r7, #0x2\n" + " add r6, r6, #0x2\n" + " add r2, r2, #0x1\n" + " cmp r2, #0x3\n" + " ble ._1205 @cond_branch\n" + " mov r5, #0x0\n" + " ldr r3, ._1215 + 44\n" + " ldr r4, ._1215 + 48\n" + " mov r2, #0x1\n" + "._1207:\n" + " strh r5, [r4]\n" + " mov r1, #0x0\n" + "._1206:\n" + " add r0, r3, r1\n" + " strb r5, [r0]\n" + " add r1, r1, #0x1\n" + " cmp r1, #0xb\n" + " bls ._1206 @cond_branch\n" + " add r3, r3, #0xc\n" + " add r4, r4, #0x2\n" + " sub r2, r2, #0x1\n" + " cmp r2, #0\n" + " bge ._1207 @cond_branch\n" + " mov r1, #0x0\n" + " ldr r2, ._1215 + 52\n" + " strb r1, [r2]\n" + " ldr r3, ._1215 + 56\n" + " strb r1, [r3]\n" + " ldr r4, ._1215 + 60\n" + " strh r1, [r4]\n" + " ldr r1, ._1215 + 64\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + "._1208:\n" + " add r0, r1, r2\n" + " strb r3, [r0]\n" + " add r2, r2, #0x1\n" + " cmp r2, #0x2b\n" + " bls ._1208 @cond_branch\n" + " mov r0, #0x0\n" + " ldr r1, ._1215 + 68\n" + " str r0, [r1]\n" + " ldr r2, ._1215 + 72\n" + " ldrh r1, [r2]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._1210 @cond_branch\n" + " ldr r3, ._1215 + 76\n" + " ldrb r1, [r3, #0x15]\n" + " mov r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1210 @cond_branch\n" + " mov r0, #0x80\n" + " ldr r4, ._1215 + 68\n" + " str r0, [r4]\n" + "._1210:\n" + " ldr r1, ._1215 + 76\n" + " ldrb r0, [r1, #0x15]\n" + " lsl r0, r0, #0x1e\n" + " lsr r0, r0, #0x1f\n" + " ldr r3, ._1215 + 80\n" + " ldr r4, ._1215 + 84\n" + " add r2, r3, r4\n" + " mov r1, #0x0\n" + " strb r0, [r2]\n" + " ldr r0, ._1215 + 88\n" + " strb r1, [r0]\n" + " ldr r2, ._1215 + 92\n" + " strb r1, [r2]\n" + " ldr r3, ._1215 + 96\n" + " str r1, [r3]\n" + " mov r2, #0x0\n" + " ldr r4, ._1215 + 100\n" + " strh r1, [r4]\n" + " ldr r1, ._1215 + 80\n" + " ldr r3, ._1215 + 104\n" + " add r0, r1, r3\n" + " strb r2, [r0]\n" + " ldr r4, ._1215 + 108\n" + " add r0, r1, r4\n" + " strb r2, [r0]\n" + " ldr r1, ._1215 + 112\n" + " mov r2, #0x0\n" + " add r0, r1, #7\n" + "._1211:\n" + " strb r2, [r0]\n" + " sub r0, r0, #0x1\n" + " cmp r0, r1\n" + " bge ._1211 @cond_branch\n" + " mov r5, #0x0\n" + " ldr r0, ._1215 + 116\n" + " strh r5, [r0]\n" + " mov r0, #0x0\n" + " ldr r1, ._1215 + 120\n" + " str r0, [r1]\n" + " ldr r2, ._1215 + 124\n" + " strh r0, [r2]\n" + " ldr r4, ._1215 + 80\n" + " ldr r3, ._1215 + 128\n" + " add r0, r4, r3\n" + " strb r5, [r0]\n" + " ldr r1, ._1215 + 132\n" + " add r0, r4, r1\n" + " strb r5, [r0]\n" + " ldr r2, ._1215 + 136\n" + " strb r5, [r2]\n" + " ldr r3, ._1215 + 140\n" + " strb r5, [r3]\n" + " sub r1, r1, #0x29\n" + " add r0, r4, r1\n" + " strb r5, [r0]\n" + " ldr r2, ._1215 + 144\n" + " add r0, r4, r2\n" + " strb r5, [r0]\n" + " ldr r3, ._1215 + 148\n" + " add r0, r4, r3\n" + " strb r5, [r0]\n" + " ldr r0, ._1215 + 152\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " ldr r2, ._1215 + 156\n" + " lsl r1, r0, #0x3\n" + " sub r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r2\n" + " ldrb r1, [r1, #0x8]\n" + " mov r0, #0x64\n" + " mul r0, r0, r1\n" + " ldr r1, ._1215 + 160\n" + " bl gScriptFuncs_End+0x3d30\n" + " ldr r2, ._1215 + 164\n" + " add r1, r4, r2\n" + " strb r0, [r1]\n" + " ldr r3, ._1215 + 168\n" + " add r1, r4, r3\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + " ldr r1, ._1215 + 172\n" + " add r0, r4, r1\n" + " strb r5, [r0]\n" + " sub r2, r2, #0x33\n" + " add r1, r4, r2\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " mov r2, #0x0\n" + " mov r1, #0x0\n" + "._1212:\n" + " ldr r3, ._1215 + 176\n" + " add r0, r2, r3\n" + " add r0, r0, r4\n" + " strb r1, [r0]\n" + " add r3, r3, #0x20\n" + " add r0, r2, r3\n" + " add r0, r0, r4\n" + " strb r1, [r0]\n" + " add r3, r3, #0x1c\n" + " add r0, r2, r3\n" + " add r0, r0, r4\n" + " strb r1, [r0]\n" + " add r3, r3, #0x8\n" + " add r0, r2, r3\n" + " add r0, r0, r4\n" + " strb r1, [r0]\n" + " add r3, r3, #0x10\n" + " add r0, r2, r3\n" + " add r0, r0, r4\n" + " strb r1, [r0]\n" + " add r3, r3, #0x8\n" + " add r0, r2, r3\n" + " add r0, r0, r4\n" + " strb r1, [r0]\n" + " add r2, r2, #0x1\n" + " cmp r2, #0x7\n" + " ble ._1212 @cond_branch\n" + " ldr r4, ._1215 + 80\n" + " ldr r1, ._1215 + 180\n" + " add r0, r4, r1\n" + " mov r2, #0x0\n" + " mov r1, #0x6\n" + " strb r1, [r0]\n" + " sub r3, r3, #0x3f\n" + " add r0, r4, r3\n" + " strb r1, [r0]\n" + " ldr r1, ._1215 + 184\n" + " add r0, r4, r1\n" + " strb r2, [r0]\n" + " ldr r3, ._1215 + 188\n" + " mov r1, #0x0\n" + " mov r2, #0xa\n" + " add r0, r3, #0\n" + " add r0, r0, #0x40\n" + "._1213:\n" + " strb r1, [r0]\n" + " sub r0, r0, #0x1\n" + " sub r2, r2, #0x1\n" + " cmp r2, #0\n" + " bge ._1213 @cond_branch\n" + " mov r1, #0x0\n" + " strb r1, [r3, #0x13]\n" + " strb r1, [r3]\n" + " strb r1, [r3, #0x1]\n" + " strb r1, [r3, #0x2]\n" + " strb r1, [r3, #0x3]\n" + " strb r1, [r3, #0x4]\n" + " ldrb r2, [r3, #0x5]\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " mov r2, #0x3\n" + " neg r2, r2\n" + " and r0, r0, r2\n" + " strb r0, [r3, #0x5]\n" + " strh r1, [r3, #0x20]\n" + " strh r1, [r3, #0x22]\n" + " strh r1, [r3, #0x24]\n" + " strh r1, [r3, #0x6]\n" + " strh r1, [r3, #0x26]\n" + " strh r1, [r3, #0x28]\n" + " mov r2, #0x0\n" + " add r5, r3, #0\n" + " add r5, r5, #0x8\n" + " mov r4, #0x0\n" + " add r1, r3, #0\n" + " add r1, r1, #0x14\n" + "._1214:\n" + " add r0, r2, r5\n" + " strb r4, [r0]\n" + " strb r4, [r1]\n" + " strb r4, [r1, #0x16]\n" + " add r1, r1, #0x1\n" + " add r2, r2, #0x1\n" + " cmp r2, #0x9\n" + " ble ._1214 @cond_branch\n" + " ldr r2, ._1215 + 80\n" + " ldr r3, ._1215 + 192\n" + " add r0, r2, r3\n" + " mov r1, #0x0\n" + " strb r1, [r0]\n" + " ldr r4, ._1215 + 196\n" + " add r0, r2, r4\n" + " strb r1, [r0]\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" + "._1216:\n" + " .align 2, 0\n" + "._1215:\n" + " .word gUnknown_02024C4C\n" + " .word gUnknown_02024C44\n" + " .word gMoveHitWith\n" + " .word gLastUsedMove\n" + " .word gDisableStructs\n" + " .word gUnknown_02024C2C\n" + " .word gLockedMove\n" + " .word gStatuses3\n" + " .word gUnknown_02024C70\n" + " .word gUnknown_02024C5C\n" + " .word +0x2017100\n" + " .word gSideTimer\n" + " .word gSideAffecting\n" + " .word gBankAttacker\n" + " .word gBankTarget\n" + " .word gBattleWeather\n" + " .word gWishFutureKnock\n" + " .word gHitMarker\n" + " .word gBattleTypeFlags\n" + " .word gSaveBlock2\n" + " .word +0x2000000\n" + " .word 0x16084\n" + " .word gMultiHitCounter\n" + " .word gBattleOutcome\n" + " .word gBattleExecBuffer\n" + " .word gPaydayMoney\n" + " .word 0x17130\n" + " .word 0x17160\n" + " .word gBattleCommunication\n" + " .word gPauseCounterBattle\n" + " .word gBattleMoveDamage\n" + " .word gUnknown_02024DE8\n" + " .word 0x16002\n" + " .word 0x160a1\n" + " .word gLeveledUpInBattle\n" + " .word gAbsentBankFlags\n" + " .word 0x16086\n" + " .word 0x16087\n" + " .word gEnemyParty\n" + " .word gBaseStats\n" + " .word 0x4fb\n" + " .word 0x16089\n" + " .word 0x16088\n" + " .word 0x1601b\n" + " .word 0x160ac\n" + " .word 0x160c8\n" + " .word 0x16113\n" + " .word gBattleResults\n" + " .word 0x1609e\n" + " .word 0x1609f\n" + "\n" + ); +} +#else void sub_8010874(void) { s32 i; @@ -1663,6 +9626,7 @@ void sub_8010874(void) gBattleResults.caughtNick[i] = 0; } } +#endif void SwitchInClearStructs(void) { diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c index 977e91f5c..613f2ebe0 100644 --- a/src/battle/battle_ai.c +++ b/src/battle/battle_ai.c @@ -289,6 +289,214 @@ void BattleAI_HandleItemUseBeforeAISetup(void) BattleAI_SetupAIData(); } +#if DEBUG +__attribute__((naked)) +void BattleAI_SetupAIData() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " ldr r2, ._16\n" + " mov r4, #0x0\n" + " ldr r3, ._16 + 4\n" + " mov r1, #0x0\n" + "._9:\n" + " add r0, r2, r4\n" + " strb r1, [r0]\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x1b\n" + " bls ._9 @cond_branch\n" + " ldr r0, ._16\n" + " mov r1, #0x64\n" + " mov r4, #0x3\n" + " add r0, r0, #0x7\n" + "._10:\n" + " strb r1, [r0]\n" + " sub r0, r0, #0x1\n" + " sub r4, r4, #0x1\n" + " cmp r4, #0\n" + " bge ._10 @cond_branch\n" + " ldrb r0, [r3]\n" + " mov r1, #0x0\n" + " mov r2, #0xff\n" + " bl sub_8015A98\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " mov r4, #0x0\n" + " ldr r0, ._16\n" + " add r5, r0, #4\n" + " ldr r6, ._16 + 8\n" + "._12:\n" + " ldr r0, [r6]\n" + " and r0, r0, r7\n" + " cmp r0, #0\n" + " beq ._11 @cond_branch\n" + " mov r0, #0x0\n" + " strb r0, [r5]\n" + "._11:\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0xf\n" + " and r0, r0, r1\n" + " mov r1, #0x64\n" + " sub r1, r1, r0\n" + " strb r1, [r5, #0x14]\n" + " add r5, r5, #0x1\n" + " add r6, r6, #0x4\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x3\n" + " ble ._12 @cond_branch\n" + " ldr r0, ._16 + 12\n" + " add r0, r0, #0x20\n" + " mov r1, #0x0\n" + " strb r1, [r0]\n" + " ldr r1, ._16 + 16\n" + " ldr r0, ._16 + 4\n" + " ldrb r2, [r0]\n" + " strb r2, [r1]\n" + " ldr r0, ._16 + 20\n" + " ldrh r1, [r0]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._13 @cond_branch\n" + " ldr r4, ._16 + 24\n" + " bl Random\n" + " mov r5, #0x2\n" + " and r0, r0, r5\n" + " strb r0, [r4]\n" + " ldr r0, ._16 + 28\n" + " ldrb r1, [r0]\n" + " ldr r2, ._16 + 8\n" + " ldrb r3, [r4]\n" + " lsl r0, r3, #0x2\n" + " add r0, r0, r2\n" + " ldr r0, [r0]\n" + " and r1, r1, r0\n" + " cmp r1, #0\n" + " beq ._15 @cond_branch\n" + " eor r3, r3, r5\n" + " strb r3, [r4]\n" + " b ._15\n" + "._17:\n" + " .align 2, 0\n" + "._16:\n" + " .word +0x2016800\n" + " .word gActiveBank\n" + " .word gBitTable\n" + " .word +0x2016c00\n" + " .word gBankAttacker\n" + " .word gBattleTypeFlags\n" + " .word gBankTarget\n" + " .word gAbsentBankFlags\n" + "._13:\n" + " ldr r0, ._20\n" + " mov r1, #0x1\n" + " eor r1, r1, r2\n" + " strb r1, [r0]\n" + "._15:\n" + " ldr r0, ._20 + 4\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._18 @cond_branch\n" + " ldr r1, ._20 + 8\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x17\n" + " b ._27\n" + "._21:\n" + " .align 2, 0\n" + "._20:\n" + " .word gBankTarget\n" + " .word gBattleTypeFlags\n" + " .word +0x2016800\n" + "._18:\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x3\n" + " add r0, r2, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._22 @cond_branch\n" + " ldr r1, ._24\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x16\n" + " b ._27\n" + "._25:\n" + " .align 2, 0\n" + "._24:\n" + " .word +0x2016800\n" + "._22:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._26 @cond_branch\n" + " ldr r1, ._28\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x18\n" + " b ._27\n" + "._29:\n" + " .align 2, 0\n" + "._28:\n" + " .word +0x2016800\n" + "._26:\n" + " mov r0, #0x90\n" + " lsl r0, r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._30 @cond_branch\n" + " ldr r1, ._33\n" + " ldrh r0, [r1]\n" + " cmp r0, r2\n" + " bne ._31 @cond_branch\n" + "._30:\n" + " ldr r1, ._33 + 4\n" + " mov r0, #0x7\n" + "._27:\n" + " str r0, [r1, #0xc]\n" + " add r3, r1, #0\n" + " b ._32\n" + "._34:\n" + " .align 2, 0\n" + "._33:\n" + " .word gTrainerBattleOpponent\n" + " .word +0x2016800\n" + "._31:\n" + " ldr r3, ._36\n" + " ldr r2, ._36 + 4\n" + " ldrh r1, [r1]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x3\n" + " add r2, r2, #0x1c\n" + " add r0, r0, r2\n" + " ldr r0, [r0]\n" + " str r0, [r3, #0xc]\n" + "._32:\n" + " ldr r0, ._36 + 8\n" + " ldrb r1, [r0]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._35 @cond_branch\n" + " ldr r0, ._36 + 12\n" + " ldr r0, [r0]\n" + " str r0, [r3, #0xc]\n" + "._35:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._37:\n" + " .align 2, 0\n" + "._36:\n" + " .word +0x2016800\n" + " .word gTrainers\n" + " .word gUnknown_02023A14+0x50\n" + " .word gUnknown_02023A14+0x4c\n" + "\n" + ); +} +#else void BattleAI_SetupAIData(void) { s32 i; @@ -342,6 +550,7 @@ void BattleAI_SetupAIData(void) else // otherwise, just set aiFlags to whatever flags the trainer has set in their data. AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent].aiFlags; } +#endif u8 BattleAI_GetAIActionToUse(void) { diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index 97568d254..f7734301c 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -79,8 +79,8 @@ extern const u16 gBattleInterfaceStatusIcons_DynPal[]; static void sub_8043D5C(struct Sprite *); static const void *sub_8043CDC(u8); -static void sub_8044210(u8, s16, u8); -static void draw_status_ailment_maybe(u8); +/*static*/ void sub_8044210(u8, s16, u8); +/*static*/ void draw_status_ailment_maybe(u8); extern void sub_8045180(struct Sprite *); static void sub_8045110(struct Sprite *); static void sub_8045048(struct Sprite *); @@ -651,7 +651,7 @@ void sub_8043F44(u8 a) #define CHAR_LV_SEPARATOR CHAR_PERIOD #endif -static void sub_8043FC0(u8 a, u8 b) +/*static*/ void sub_8043FC0(u8 a, u8 b) { u8 str[30]; void *const *r7; @@ -905,7 +905,7 @@ _0804420C: .4byte 0x04000008\n\ } #endif -static void sub_8044210(u8 a, s16 b, u8 c) +/*static*/ void sub_8044210(u8 a, s16 b, u8 c) { u8 str[0x14]; u8 *ptr; @@ -1277,6 +1277,353 @@ _08044548: .4byte 0x04000008\n\ } #endif +#if DEBUG +__attribute__((naked)) +void sub_804454C() +{ + 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 r0, #0x0\n" + " mov r8, r0\n" + " ldr r0, ._150\n" + " ldrb r0, [r0]\n" + " cmp r8, r0\n" + " blt ._133 @cond_branch\n" + " b ._164\n" + "._133:\n" + " ldr r1, ._150 + 4\n" + " mov r9, r1\n" + " mov r2, #0x64\n" + " mov sl, r2\n" + " ldr r7, ._150 + 8\n" + "._165:\n" + " ldr r0, ._150 + 12\n" + " mov r6, r8\n" + " add r5, r6, r0\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " mov r1, r9\n" + " add r1, r1, #0x1c\n" + " add r0, r0, r1\n" + " ldr r1, [r0]\n" + " ldr r0, ._150 + 16\n" + " cmp r1, r0\n" + " beq ._135 @cond_branch\n" + " b ._147\n" + "._135:\n" + " ldr r0, ._150 + 20\n" + " ldrb r0, [r0]\n" + " lsl r4, r6, #0x18\n" + " cmp r0, #0\n" + " bne ._138 @cond_branch\n" + " lsr r0, r4, #0x18\n" + " bl GetBankSide\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._138 @cond_branch\n" + " b ._147\n" + "._138:\n" + " bl IsDoubleBattle\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._141 @cond_branch\n" + " lsr r0, r4, #0x18\n" + " bl GetBankSide\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._141 @cond_branch\n" + " b ._147\n" + "._141:\n" + " mov r0, r8\n" + " lsl r3, r0, #0x2\n" + " ldr r0, ._150 + 24\n" + " add r3, r3, r0\n" + " ldr r0, [r3]\n" + " lsl r0, r0, #0x1b\n" + " lsr r0, r0, #0x1f\n" + " mov r2, #0x1\n" + " eor r2, r2, r0\n" + " lsl r2, r2, #0x4\n" + " ldrb r0, [r3]\n" + " mov r6, #0x11\n" + " neg r6, r6\n" + " add r1, r6, #0\n" + " and r0, r0, r1\n" + " orr r0, r0, r2\n" + " strb r0, [r3]\n" + " ldr r0, [r3]\n" + " lsl r0, r0, #0x1b\n" + " lsr r6, r0, #0x1f\n" + " lsr r0, r4, #0x18\n" + " bl GetBankSide\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._143 @cond_branch\n" + " bl IsDoubleBattle\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._144 @cond_branch\n" + " b ._147\n" + "._144:\n" + " ldr r0, ._150 + 28\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " cmp r2, #0\n" + " beq ._146 @cond_branch\n" + " b ._147\n" + "._146:\n" + " cmp r6, #0x1\n" + " bne ._148 @cond_branch\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r0, [r0, #0x38]\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " str r2, [sp]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r1, [r0, #0x4]\n" + " lsl r1, r1, #0x16\n" + " lsr r1, r1, #0x11\n" + " ldr r0, ._150 + 32\n" + " add r1, r1, r0\n" + " mov r0, sp\n" + " ldr r2, ._150 + 36\n" + " bl gScriptFuncs_End+0x3cb4\n" + " ldrb r4, [r5]\n" + " ldrh r0, [r7]\n" + " mov r1, sl\n" + " mul r1, r1, r0\n" + " add r0, r1, #0\n" + " ldr r2, ._150 + 40\n" + " add r0, r0, r2\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x0\n" + " bl sub_8044210\n" + " ldrb r4, [r5]\n" + " ldrh r0, [r7]\n" + " mov r6, sl\n" + " mul r6, r6, r0\n" + " add r0, r6, #0\n" + " ldr r1, ._150 + 40\n" + " b ._149\n" + "._151:\n" + " .align 2, 0\n" + "._150:\n" + " .word gNoOfAllBanks\n" + " .word gSprites\n" + " .word gBattlePartyID\n" + " .word gHealthboxIDs\n" + " .word SpriteCallbackDummy+1\n" + " .word gUnknown_020297ED\n" + " .word +0x2017800\n" + " .word gBattleTypeFlags\n" + " .word 0x6010000\n" + " .word 0x5000040\n" + " .word gPlayerParty\n" + "._148:\n" + " ldrb r0, [r5]\n" + " bl draw_status_ailment_maybe\n" + " ldrb r0, [r5]\n" + " ldrh r1, [r7]\n" + " mov r2, sl\n" + " mul r2, r2, r1\n" + " add r1, r2, #0\n" + " ldr r6, ._153\n" + " add r1, r1, r6\n" + " mov r2, #0x5\n" + " bl sub_8045A5C\n" + " mov r0, #0x75\n" + " bl sub_8043CDC\n" + " ldrb r2, [r5]\n" + " lsl r1, r2, #0x4\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r9\n" + " ldrh r1, [r1, #0x4]\n" + " lsl r1, r1, #0x16\n" + " lsr r1, r1, #0x11\n" + " ldr r2, ._153 + 4\n" + " add r1, r1, r2\n" + " ldr r2, ._153 + 8\n" + " bl gScriptFuncs_End+0x3cb4\n" + " b ._163\n" + "._154:\n" + " .align 2, 0\n" + "._153:\n" + " .word gPlayerParty\n" + " .word 0x6010680\n" + " .word 0x4000008\n" + "._143:\n" + " cmp r6, #0x1\n" + " bne ._155 @cond_branch\n" + " ldr r0, ._158\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " cmp r2, #0\n" + " beq ._156 @cond_branch\n" + " ldrb r0, [r5]\n" + " ldrh r1, [r7]\n" + " mov r6, sl\n" + " mul r6, r6, r1\n" + " add r1, r6, #0\n" + " ldr r2, ._158 + 4\n" + " add r1, r1, r2\n" + " bl sub_8044338\n" + " b ._163\n" + "._159:\n" + " .align 2, 0\n" + "._158:\n" + " .word gBattleTypeFlags\n" + " .word gEnemyParty\n" + "._156:\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r0, [r0, #0x38]\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " str r2, [sp]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r1, [r0, #0x4]\n" + " lsl r1, r1, #0x16\n" + " lsr r1, r1, #0x11\n" + " ldr r6, ._161\n" + " add r1, r1, r6\n" + " mov r0, sp\n" + " ldr r2, ._161 + 4\n" + " bl gScriptFuncs_End+0x3cb4\n" + " ldrb r4, [r5]\n" + " ldrh r0, [r7]\n" + " mov r1, sl\n" + " mul r1, r1, r0\n" + " add r0, r1, #0\n" + " ldr r2, ._161 + 8\n" + " add r0, r0, r2\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x0\n" + " bl sub_8044210\n" + " ldrb r4, [r5]\n" + " ldrh r0, [r7]\n" + " mov r6, sl\n" + " mul r6, r6, r0\n" + " add r0, r6, #0\n" + " ldr r1, ._161 + 8\n" + "._149:\n" + " add r0, r0, r1\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " bl sub_8044210\n" + " b ._163\n" + "._162:\n" + " .align 2, 0\n" + "._161:\n" + " .word 0x6010000\n" + " .word 0x5000040\n" + " .word gEnemyParty\n" + "._155:\n" + " ldrb r0, [r5]\n" + " bl draw_status_ailment_maybe\n" + " ldrb r0, [r5]\n" + " ldrh r1, [r7]\n" + " mov r6, #0x64\n" + " mul r1, r1, r6\n" + " ldr r4, ._166\n" + " add r1, r1, r4\n" + " mov r2, #0x5\n" + " bl sub_8045A5C\n" + " ldr r0, ._166 + 4\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._163 @cond_branch\n" + " ldrb r0, [r5]\n" + " ldrh r1, [r7]\n" + " mul r1, r1, r6\n" + " add r1, r1, r4\n" + " mov r2, #0x4\n" + " bl sub_8045A5C\n" + "._163:\n" + " ldr r0, ._166 + 8\n" + " add r0, r0, r8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r1, [r0, #0x3c]\n" + " mov r2, #0x1\n" + " eor r1, r1, r2\n" + " strh r1, [r0, #0x3c]\n" + "._147:\n" + " add r7, r7, #0x2\n" + " mov r2, #0x1\n" + " add r8, r8, r2\n" + " ldr r0, ._166 + 12\n" + " ldrb r0, [r0]\n" + " cmp r8, r0\n" + " bge ._164 @cond_branch\n" + " b ._165\n" + "._164:\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" + "._167:\n" + " .align 2, 0\n" + "._166:\n" + " .word gEnemyParty\n" + " .word gBattleTypeFlags\n" + " .word gHealthboxIDs\n" + " .word gNoOfAllBanks\n" + "\n" + ); +} +#else void sub_804454C(void) { s32 i; @@ -1344,6 +1691,7 @@ void sub_804454C(void) } } } +#endif // This function almost matches except for just two instructions around 0x08044B52 that are swapped. #ifdef NONMATCHING @@ -2359,7 +2707,7 @@ void sub_8045180(struct Sprite *sprite) sprite->pos2.y = gSprites[spriteId].pos2.y; } -static void sub_80451A0(u8 a, struct Pokemon *pkmn) +/*static*/ void sub_80451A0(u8 a, struct Pokemon *pkmn) { u8 nickname[POKEMON_NAME_LENGTH]; u8 gender; @@ -2507,7 +2855,7 @@ static void sub_8045458(u8 a, u8 b) } } -static void draw_status_ailment_maybe(u8 a) +/*static*/ void draw_status_ailment_maybe(u8 a) { s32 r4; s32 r4_2; @@ -2649,7 +2997,7 @@ static u8 sub_80457E8(u8 a, u8 b) return ret; } -static void sub_80458B0(u8 a) +/*static*/ void sub_80458B0(u8 a) { u8 *r6; u8 r8; @@ -2675,7 +3023,7 @@ static void sub_80458B0(u8 a) } -static void sub_8045998(u8 a) +/*static*/ void sub_8045998(u8 a) { u8 *r7; u8 status; @@ -2697,6 +3045,310 @@ static void sub_8045998(u8 a) } } +#ifdef DEBUG +__attribute__((naked)) +void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) +{ + 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, #0xfffffff8\n" + " mov r9, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " lsl r2, r2, #0x18\n" + " lsr r7, r2, #0x18\n" + " ldr r1, ._429\n" + " lsl r0, r0, #0x4\n" + " add r0, r0, r8\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldrh r0, [r0, #0x3a]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov sl, r0\n" + " bl GetBankSide\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._410 @cond_branch\n" + " b ._411\n" + "._410:\n" + " cmp r7, #0x3\n" + " beq ._412 @cond_branch\n" + " cmp r7, #0\n" + " bne ._413 @cond_branch\n" + "._412:\n" + " mov r0, r9\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r0, r8\n" + " bl sub_8043FC0\n" + "._413:\n" + " cmp r7, #0x1\n" + " bhi ._414 @cond_branch\n" + " mov r0, r9\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " mov r0, r8\n" + " mov r2, #0x0\n" + " bl sub_80440EC\n" + "._414:\n" + " cmp r7, #0x2\n" + " beq ._415 @cond_branch\n" + " cmp r7, #0\n" + " bne ._416 @cond_branch\n" + "._415:\n" + " mov r0, r9\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " mov r0, r8\n" + " mov r2, #0x1\n" + " bl sub_80440EC\n" + "._416:\n" + " cmp r7, #0x5\n" + " beq ._417 @cond_branch\n" + " cmp r7, #0\n" + " bne ._418 @cond_branch\n" + "._417:\n" + " mov r0, #0x0\n" + " bl load_gfxc_health_bar\n" + " mov r0, r9\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r4, r0, #0\n" + " mov r0, r9\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r3, r0, #0\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r8\n" + " add r2, r4, #0\n" + " bl sub_8043D84\n" + " mov r0, sl\n" + " mov r1, r8\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl sub_8045C78\n" + "._418:\n" + " bl IsDoubleBattle\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " str r0, [sp, #0x4]\n" + " cmp r0, #0\n" + " bne ._421 @cond_branch\n" + " cmp r7, #0x6\n" + " beq ._420 @cond_branch\n" + " cmp r7, #0\n" + " bne ._421 @cond_branch\n" + "._420:\n" + " mov r0, #0x3\n" + " bl load_gfxc_health_bar\n" + " mov r0, r9\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x10\n" + " lsr r5, r5, #0x10\n" + " mov r0, r9\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " mov r0, r9\n" + " mov r1, #0x19\n" + " bl GetMonData\n" + " add r3, r0, #0\n" + " ldr r6, ._429 + 4\n" + " lsl r1, r4, #0x2\n" + " ldr r2, ._429 + 8\n" + " lsl r0, r5, #0x3\n" + " sub r0, r0, r5\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldrb r2, [r0, #0x13]\n" + " mov r0, #0xca\n" + " lsl r0, r0, #0x1\n" + " mul r0, r0, r2\n" + " add r1, r1, r0\n" + " add r1, r1, r6\n" + " ldr r1, [r1]\n" + " sub r3, r3, r1\n" + " add r4, r4, #0x1\n" + " lsl r4, r4, #0x2\n" + " add r4, r4, r0\n" + " add r4, r4, r6\n" + " ldr r2, [r4]\n" + " sub r2, r2, r1\n" + " ldr r0, [sp, #0x4]\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r8\n" + " bl sub_8043D84\n" + " mov r0, sl\n" + " mov r1, r8\n" + " mov r2, #0x1\n" + " mov r3, #0x0\n" + " bl sub_8045C78\n" + "._421:\n" + " cmp r7, #0x4\n" + " beq ._422 @cond_branch\n" + " cmp r7, #0\n" + " bne ._423 @cond_branch\n" + "._422:\n" + " mov r0, r8\n" + " mov r1, r9\n" + " bl sub_80451A0\n" + "._423:\n" + " cmp r7, #0x9\n" + " beq ._424 @cond_branch\n" + " cmp r7, #0\n" + " bne ._425 @cond_branch\n" + "._424:\n" + " mov r0, r8\n" + " bl draw_status_ailment_maybe\n" + "._425:\n" + " cmp r7, #0xa\n" + " bne ._426 @cond_branch\n" + " mov r0, r8\n" + " bl sub_80458B0\n" + "._426:\n" + " add r0, r7, #0\n" + " sub r0, r0, #0xa\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bhi ._442 @cond_branch\n" + " mov r0, r8\n" + " bl sub_8045998\n" + " b ._442\n" + "._430:\n" + " .align 2, 0\n" + "._429:\n" + " .word gSprites\n" + " .word gExperienceTables\n" + " .word gBaseStats\n" + "._411:\n" + " cmp r7, #0x3\n" + " beq ._431 @cond_branch\n" + " cmp r7, #0\n" + " bne ._432 @cond_branch\n" + "._431:\n" + " mov r0, r9\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r0, r8\n" + " bl sub_8043FC0\n" + "._432:\n" + " ldr r0, ._443\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x1\n" + " bne ._436 @cond_branch\n" + " cmp r7, #0x1\n" + " bhi ._434 @cond_branch\n" + " mov r0, r9\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " mov r0, r8\n" + " mov r2, #0x0\n" + " bl sub_80440EC\n" + "._434:\n" + " cmp r7, #0x2\n" + " beq ._435 @cond_branch\n" + " cmp r7, #0\n" + " bne ._436 @cond_branch\n" + "._435:\n" + " mov r0, r9\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " mov r0, r8\n" + " mov r2, #0x1\n" + " bl sub_80440EC\n" + "._436:\n" + " cmp r7, #0x5\n" + " beq ._437 @cond_branch\n" + " cmp r7, #0\n" + " bne ._438 @cond_branch\n" + "._437:\n" + " mov r0, #0x0\n" + " bl load_gfxc_health_bar\n" + " mov r0, r9\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r4, r0, #0\n" + " mov r0, r9\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r3, r0, #0\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r8\n" + " add r2, r4, #0\n" + " bl sub_8043D84\n" + " mov r0, sl\n" + " mov r1, r8\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl sub_8045C78\n" + "._438:\n" + " cmp r7, #0x4\n" + " beq ._439 @cond_branch\n" + " cmp r7, #0\n" + " bne ._440 @cond_branch\n" + "._439:\n" + " mov r0, r8\n" + " mov r1, r9\n" + " bl sub_80451A0\n" + "._440:\n" + " cmp r7, #0x9\n" + " beq ._441 @cond_branch\n" + " cmp r7, #0\n" + " bne ._442 @cond_branch\n" + "._441:\n" + " mov r0, r8\n" + " bl draw_status_ailment_maybe\n" + "._442:\n" + " add sp, sp, #0x8\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" + "._444:\n" + " .align 2, 0\n" + "._443:\n" + " .word gUnknown_020297ED\n" + "\n" + ); +} +#else void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) { u8 r10; @@ -2766,6 +3418,7 @@ void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) draw_status_ailment_maybe(a); } } +#endif s32 sub_8045C78(u8 a, u8 unused1, u8 c, u8 unused2) { diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c index 4979760d7..a03a215fd 100644 --- a/src/battle/battle_records.c +++ b/src/battle/battle_records.c @@ -8,9 +8,35 @@ #include "strings2.h" #include "trainer_card.h" +struct DebugStruct1 +{ + u16 var0; + u8 var1[10]; +}; + extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; extern u8 gBattleOutcome; +#ifdef DEBUG +const struct DebugStruct1 gUnknown_Debug_4245CC[] = +{ + { 1, _("NUMBER1") }, + { 2, _("ナンバー2") }, + { 3, _("ナンバー3") }, + { 4, _("ナンバー4") }, + { 5, _("ナンバー5") }, + { 6, _("ナンバー6") }, + { 7, _("ナンバー7") }, +}; + +const u8 gUnknown_Debug_8424620[][4] = +{ + { 1, 1, 0, 0 }, + { 2, 1, 0, 0 }, + { 3, 1, 0, 0 }, +}; +#endif + static void InitLinkBattleRecord(struct LinkBattleRecord *record) { CpuFill16(0, record, sizeof(struct LinkBattleRecord)); @@ -240,7 +266,8 @@ static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y) } } -void ShowLinkBattleRecords(void) { +void ShowLinkBattleRecords(void) +{ s32 i; Menu_DrawStdWindowFrame(1, 0, 28, 18); sub_8072BD8(gOtherText_BattleResults, 0, 1, 240); diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c new file mode 100644 index 000000000..6f2734b08 --- /dev/null +++ b/src/debug/kagaya_debug_menu.c @@ -0,0 +1,420 @@ +#ifdef DEBUG +#include "global.h" +#include "menu.h" + +u8 KagayaDebugMenu_TrainerCard(); +u8 KagayaDebugMenu_CardToExchange(); +u8 KagayaDebugMenu_SlotMachine(); + +const u8 Str_83EBB34[] = _("Trainer’s card"); +const u8 Str_83EBB43[] = _("Card to exchange"); +const u8 Str_83EBB54[] = _("Slot machine"); + +const struct MenuAction _83EBB64[] = { + { Str_83EBB34, KagayaDebugMenu_TrainerCard }, + { Str_83EBB43, KagayaDebugMenu_CardToExchange }, + { Str_83EBB54, KagayaDebugMenu_SlotMachine }, +}; + +__attribute__((naked)) +void InitKagayaDebugMenu_A() +{ + asm( + " push {lr}\n" + " bl InitKagayaDebugMenu_B\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void InitKagayaDebugMenu_B() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xe\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._1\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\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, #0x3\n" + " bl InitMenu\n" + " ldr r1, ._1 + 4\n" + " ldr r0, ._1 + 8\n" + " str r0, [r1]\n" + " add sp, sp, #0x8\n" + " pop {r0}\n" + " bx r0\n" + "._2:\n" + " .align 2, 0\n" + "._1:\n" + " .word _83EBB64\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_80B061C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80B061C() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._3 @cond_branch\n" + " mov r0, #0x0\n" + " b ._6\n" + "._3:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._5 @cond_branch\n" + " ldr r2, ._7\n" + " ldr r0, ._7 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._6\n" + "._8:\n" + " .align 2, 0\n" + "._7:\n" + " .word gCallback_03004AE8\n" + " .word _83EBB64\n" + "._5:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._6:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 KagayaDebugMenu_TrainerCard() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._9\n" + " ldr r0, ._9 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._10:\n" + " .align 2, 0\n" + "._9:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_80B068C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80B068C() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._11 @cond_branch\n" + " mov r0, #0x0\n" + " b ._12\n" + "._11:\n" + " ldr r0, ._13\n" + " bl debug_sub_80A0710\n" + " bl CloseMenu\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + "._12:\n" + " pop {r1}\n" + " bx r1\n" + "._14:\n" + " .align 2, 0\n" + "._13:\n" + " .word sub_805469C+1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 KagayaDebugMenu_CardToExchange() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._15\n" + " ldr r0, ._15 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._16:\n" + " .align 2, 0\n" + "._15:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_80B06E0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80B06E0() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._17 @cond_branch\n" + " mov r0, #0x0\n" + " b ._18\n" + "._17:\n" + " ldr r0, ._19\n" + " bl debug_sub_80A073C\n" + " bl CloseMenu\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + "._18:\n" + " pop {r1}\n" + " bx r1\n" + "._20:\n" + " .align 2, 0\n" + "._19:\n" + " .word sub_805469C+1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 KagayaDebugMenu_SlotMachine() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._21\n" + " ldr r0, ._21 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._22:\n" + " .align 2, 0\n" + "._21:\n" + " .word gCallback_03004AE8\n" + " .word Kagaya_80B0734+1\n" + "\n" + ); +} + +__attribute__((naked)) +void Kagaya_80B0734() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._23 @cond_branch\n" + " mov r0, #0x0\n" + " b ._24\n" + "._23:\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._25\n" + " bl debug_sub_811609C\n" + " bl CloseMenu\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + "._24:\n" + " pop {r1}\n" + " bx r1\n" + "._26:\n" + " .align 2, 0\n" + "._25:\n" + " .word sub_805469C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80B0770() +{ + asm( + " push {r4, lr}\n" + " ldr r0, ._30\n" + " ldrb r1, [r0]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0\n" + " bne ._27 @cond_branch\n" + " bl CloseMenu\n" + " bl IsPlayerFacingSurfableFishableWater\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._29 @cond_branch\n" + " ldr r0, ._30 + 4\n" + " str r4, [r0]\n" + " mov r0, #0x9\n" + " bl FieldEffectStart\n" + " b ._29\n" + "._31:\n" + " .align 2, 0\n" + "._30:\n" + " .word gPlayerAvatar\n" + " .word gUnknown_0202FF84\n" + "._27:\n" + " bl CloseMenu\n" + "._29:\n" + " mov r0, #0x1\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80B07B0() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._32\n" + " ldr r0, ._32 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._33:\n" + " .align 2, 0\n" + "._32:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_80B07DC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80B07DC() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._34 @cond_branch\n" + " mov r0, #0x0\n" + " b ._35\n" + "._34:\n" + " bl CloseMenu\n" + " ldr r0, ._36\n" + " bl SetMainCallback2\n" + " mov r0, #0x1\n" + "._35:\n" + " pop {r1}\n" + " bx r1\n" + "._37:\n" + " .align 2, 0\n" + "._36:\n" + " .word sub_80FC074+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80B0800() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl sub_8068F18\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0\n" + " beq ._38 @cond_branch\n" + " ldr r0, ._39\n" + " mov r1, #0x0\n" + " str r1, [r0]\n" + " sub r1, r2, #1\n" + " str r1, [r0, #0x4]\n" + " mov r0, #0x2c\n" + " bl FieldEffectStart\n" + "._38:\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._40:\n" + " .align 2, 0\n" + "._39:\n" + " .word gUnknown_0202FF84\n" + "\n" + ); +} + +#endif // DEBUG diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c new file mode 100644 index 000000000..48b6d91b8 --- /dev/null +++ b/src/debug/nakamura_debug_menu.c @@ -0,0 +1,5031 @@ +#ifdef DEBUG +#include "global.h" +#include "menu.h" + +EWRAM_DATA u8 _nakamuraData[0x10] = {0}; + +static u8 _nakamuraStatic[32] __attribute__((unused)); + +u8 debug_sub_815FC54(); +u8 debug_sub_815F2B4(); +u8 debug_sub_815FC94(); +u8 debug_sub_815FB1C(); +u8 debug_sub_815F2F4(); +u8 debug_sub_815F62C(); +u8 debug_sub_815FBE8(); +u8 debug_sub_815FE1C(); +u8 debug_sub_8160D98(); + +const u8 Str_843E36C[] = _("Berries"); +const u8 Str_843E374[] = _("Goods"); +const u8 Str_843E37A[] = _("{PKMN} list"); +const u8 Str_843E382[] = _("トラップ"); +const u8 Str_843E387[] = _("Move your base"); +const u8 Str_843E396[] = _("Moving {PKMN}"); +const u8 Str_843E3A0[] = _("Fishing points"); +const u8 Str_843E3AF[] = _("Set {POKEBLOCK}"); +const u8 Str_843E3B9[] = _("Make bases(to max)"); +const u8 Str_843E3CC[] = _("Base location"); + +const struct MenuAction _843E3DC[] = { + { Str_843E36C, debug_sub_815FC54 }, + { Str_843E37A, debug_sub_815F2B4 }, + { Str_843E374, debug_sub_815FC94 }, + { Str_843E387, debug_sub_815FB1C }, + { Str_843E3B9, debug_sub_815F2F4 }, + { Str_843E3CC, debug_sub_815F62C }, + { Str_843E396, debug_sub_815FBE8 }, + { Str_843E3A0, debug_sub_815FE1C }, + { Str_843E3AF, debug_sub_8160D98 }, +}; + +const u8 _843E424[][4] = { + { 1, 118, 47, 14 }, + { 2, 125, 53, 10 }, + { 3, 113, 49, 8 }, + { 0xB, 118, 67, 6 }, + { 0xC, 121, 40, 11 }, + { 0xD, 111, 35, 1 }, + { 0x15, 115, 20, 53 }, + { 0x16, 121, 18, 13 }, + { 0x17, 119, 26, 81 }, + { 0x1F, 127, 59, 67 }, + { 0x20, 125, 55, 11 }, + { 0x21, 111, 27, 27 }, + { 0x29, 114, 9, 47 }, + { 0x2A, 115, 32, 39 }, + { 0x2B, 115, 23, 8 }, + { 0x33, 114, 30, 51 }, + { 0x34, 115, 26, 15 }, + { 0x35, 115, 32, 46 }, + { 0x3D, 114, 11, 62 }, + { 0x3E, 115, 21, 18 }, + { 0x3F, 115, 25, 24 }, + { 0x47, 114, 19, 70 }, + { 0x48, 115, 32, 6 }, + { 0x49, 114, 32, 57 }, + { 0x51, 116, 71, 4 }, + { 0x52, 123, 47, 3 }, + { 0x53, 123, 57, 5 }, + { 0x5B, 116, 79, 11 }, + { 0x5C, 123, 49, 3 }, + { 0x5D, 120, 18, 12 }, + { 0x65, 120, 28, 62 }, + { 0x66, 116, 56, 6 }, + { 0x67, 119, 16, 81 }, + { 0x6F, 120, 30, 62 }, + { 0x70, 116, 55, 15 }, + { 0x71, 119, 16, 28 }, + { 0x79, 111, 33, 34 }, + { 0x7A, 118, 29, 5 }, + { 0x7B, 127, 45, 24 }, + { 0x83, 111, 24, 36 }, + { 0x84, 125, 7, 25 }, + { 0x85, 115, 8, 30 }, + { 0x8D, 111, 34, 50 }, + { 0x8E, 127, 59, 72 }, + { 0x8F, 127, 61, 21 }, + { 0x97, 127, 67, 63 }, + { 0x98, 125, 24, 32 }, + { 0x99, 111, 35, 31 }, + { 0xA1, 111, 13, 19 }, + { 0xA2, 121, 43, 7 }, + { 0xA3, 118, 47, 5 }, + { 0xA4, 111, 14, 19 }, + { 0xAB, 118, 46, 5 }, + { 0xAC, 121, 42, 7 }, + { 0xAD, 119, 19, 76 }, + { 0xAE, 115, 7, 20 }, + { 0xB5, 110, 16, 25 }, + { 0xB6, 114, 11, 27 }, + { 0xB7, 115, 8, 20 }, + { 0xBF, 110, 17, 25 }, + { 0xC0, 114, 12, 27 }, + { 0xC1, 119, 18, 76 }, + { 0xC9, 119, 5, 2 }, + { 0xCA, 119, 4, 89 }, + { 0xCB, 120, 38, 54 }, + { 0xCC, 120, 5, 76 }, + { 0xD3, 119, 5, 15 }, + { 0xD4, 119, 7, 101 }, + { 0xD5, 120, 31, 23 }, + { 0xDD, 119, 34, 24 }, + { 0xDE, 120, 26, 10 }, + { 0xDF, 119, 4, 15 }, + { 0xE7, 119, 31, 73 }, + { 0xE8, 120, 29, 85 }, + { 0xE9, 119, 6, 2 }, +}; + +const u8 Str_843E550[] = _("R"); +const u8 Str_843E552[] = _("X"); +const u8 Str_843E554[] = _("Y"); +const u8 Str_843E556[] = _( + "♂1\n" + "♂2\n" + "♂3\n" + "♂4\n" + "♂5\n" + "♀1\n" + "♀2\n" + "♀3\n" + "♀4\n" + "♀5"); +const u8 Str_843E574[] = _("ー"); +const u8 Str_843E576[] = _("あ"); +const u8 Str_843E578[] = _("ア"); +const u8 Str_843E57A[] = _("A"); +const u8 Str_843E57C[] = _("a"); +const u8 Str_843E57E[] = _("0"); +const u8 Str_843E580[] = _( + "ADD\n" + "DEL\n" + "EXIT"); +const u8 Str_843E58D[] = _( + "Fishing location R119\n" + " Y1\n" + " Y2\n" + " Y3\n" + "Encounter location\n" + "\n" + "\n" + "front of you"); +const u8 _843E5D1[] = {0x0F, 0x16, 0x19}; +const u8 Str_843E5D4[] = _( + "Aボタン {ESCAPE}\p" + " Bボタン ー\n" + "START けってい"); +const u8 Str_843E5F0[] = _("?"); +const u8 Str_843E5F2[] = _("HP どりょくち"); +const u8 Str_843E5FB[] = _("こうげき どりょくち"); +const u8 Str_843E606[] = _("ぼうぎょ どりょくち"); +const u8 Str_843E611[] = _("すばやさ どりょくち"); +const u8 Str_843E61C[] = _("とくこう どりょくち"); +const u8 Str_843E627[] = _("とくぼう どりょくち"); +const u8 Str_843E632[] = _("なつきど"); +const u8 Str_843E637[] = _("どりょくち ごうけい"); +const u8 Str_843E642[] = _("ここから"); +const u8 Str_843E647[] = _("ここまで"); +const u8 Str_843E64C[] = _("かいすう"); +const u8 Str_843E651[] = _("けっか"); +const u8 Str_843E655[] = _("かい"); +const u8 Str_843E658[] = _("0"); +const u8 Str_843E65A[] = _("はんい"); + +__attribute__((naked)) +void debug_sub_815F1B8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0xe\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._1\n" + " mov r0, #0x10\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xe\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0xf\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " add sp, sp, #0x8\n" + " pop {r0}\n" + " bx r0\n" + "._2:\n" + " .align 2, 0\n" + "._1:\n" + " .word _843E3DC\n" + "\n" + ); +} + +__attribute__((naked)) +void InitNakamuraDebugMenu() +{ + asm( + " push {lr}\n" + " bl debug_sub_815F1B8\n" + " ldr r1, ._3\n" + " ldr r0, ._3 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._4:\n" + " .align 2, 0\n" + "._3:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_815F214+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F214() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._9\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._5 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl MoveMenuCursor\n" + "._5:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._6 @cond_branch\n" + " mov r0, #0x1\n" + " bl MoveMenuCursor\n" + "._6:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._7 @cond_branch\n" + " ldr r4, ._9 + 4\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x15\n" + " add r4, r4, #0x4\n" + " add r0, r0, r4\n" + " ldr r4, [r0]\n" + " bl HandleDestroyMenuCursors\n" + " bl _call_via_r4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " b ._12\n" + "._10:\n" + " .align 2, 0\n" + "._9:\n" + " .word gMain\n" + " .word _843E3DC\n" + "._7:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._11 @cond_branch\n" + " mov r0, #0x0\n" + " b ._12\n" + "._11:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._12:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F284() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r0, ._14\n" + " ldrb r1, [r0, #0x7]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._13 @cond_branch\n" + " bl debug_sub_81381B4\n" + " mov r0, #0x5\n" + " mov r1, #0x0\n" + " bl OpenPartyMenu\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + "._13:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._15:\n" + " .align 2, 0\n" + "._14:\n" + " .word gPaletteFade\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815F2B4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " bl CloseMenu\n" + " bl MenuZeroFillScreen\n" + " ldr r1, ._16\n" + " ldr r0, ._16 + 4\n" + " str r0, [r1, #0x8]\n" + " ldr r0, ._16 + 8\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " mov r0, #0x1\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._17:\n" + " .align 2, 0\n" + "._16:\n" + " .word gMain\n" + " .word sub_805469C+1\n" + " .word debug_sub_815F284+1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815F2F4() +{ + 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" + " bl CloseMenu\n" + " mov r7, #0x1\n" + "._34:\n" + " lsl r1, r7, #0x2\n" + " add r0, r1, r7\n" + " lsl r2, r0, #0x5\n" + " ldr r3, ._24\n" + " add r0, r2, r3\n" + " ldr r5, ._24 + 4\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " mov r9, r1\n" + " add r1, r7, #1\n" + " str r1, [sp]\n" + " cmp r0, #0\n" + " beq ._18 @cond_branch\n" + " b ._19\n" + "._18:\n" + " mov r5, #0x0\n" + " ldr r6, ._24 + 8\n" + " add r4, r7, #0\n" + " sub r4, r4, #0x46\n" + " ldr r3, ._24 + 12\n" + "._21:\n" + " add r1, r5, r2\n" + " add r1, r1, r3\n" + " add r0, r5, r6\n" + " ldrb r0, [r0]\n" + " strb r0, [r1]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0xff\n" + " beq ._20 @cond_branch\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x6\n" + " bls ._21 @cond_branch\n" + "._20:\n" + " cmp r5, #0x7\n" + " bne ._22 @cond_branch\n" + " add r0, r2, #6\n" + " b ._23\n" + "._25:\n" + " .align 2, 0\n" + "._24:\n" + " .word gSaveBlock1\n" + " .word 0x1a08\n" + " .word gSaveBlock2\n" + " .word gSaveBlock1+0x1a0a\n" + "._22:\n" + " add r0, r5, r2\n" + "._23:\n" + " add r0, r0, r3\n" + " strb r4, [r0]\n" + " ldr r1, ._35\n" + " ldr r2, ._35 + 4\n" + " add r2, r2, r1\n" + " mov sl, r2\n" + " mov r3, r9\n" + " add r0, r3, r7\n" + " lsl r6, r0, #0x5\n" + " add r1, r6, r1\n" + " ldr r5, ._35 + 4\n" + " add r5, r5, r1\n" + " mov r8, r5\n" + "._30:\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0x4b\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0xe\n" + " ldr r1, ._35 + 8\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " mov r2, r8\n" + " strb r0, [r2]\n" + " mov r5, #0x0\n" + " cmp r5, r7\n" + " bcs ._28 @cond_branch\n" + " mov r3, sl\n" + " ldrb r3, [r3]\n" + " cmp r0, r3\n" + " beq ._28 @cond_branch\n" + " ldr r4, ._35\n" + " add r0, r6, r4\n" + " ldr r2, ._35 + 4\n" + " add r3, r0, r2\n" + "._29:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r7\n" + " bcs ._28 @cond_branch\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r4\n" + " add r0, r0, r2\n" + " ldrb r1, [r3]\n" + " ldrb r0, [r0]\n" + " cmp r1, r0\n" + " bne ._29 @cond_branch\n" + "._28:\n" + " cmp r5, r7\n" + " bne ._30 @cond_branch\n" + " bl Random\n" + " mov r5, r9\n" + " add r4, r5, r7\n" + " lsl r4, r4, #0x5\n" + " ldr r1, ._35\n" + " add r3, r4, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0x1\n" + " ldr r2, ._35 + 12\n" + " add r3, r3, r2\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x4\n" + " ldrb r1, [r3]\n" + " mov r5, #0x11\n" + " neg r5, r5\n" + " add r2, r5, #0\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strb r1, [r3]\n" + " mov r5, #0x0\n" + " ldr r6, ._35 + 16\n" + "._31:\n" + " bl Random\n" + " add r1, r5, r4\n" + " add r1, r1, r6\n" + " strb r0, [r1]\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x3\n" + " bls ._31 @cond_branch\n" + " mov r5, #0x0\n" + " mov r1, r9\n" + " add r0, r1, r7\n" + " lsl r4, r0, #0x5\n" + " ldr r3, ._35 + 20\n" + " mov r2, #0x0\n" + " add r6, r3, #0\n" + " add r6, r6, #0x10\n" + "._32:\n" + " add r1, r5, r4\n" + " add r0, r1, r3\n" + " strb r2, [r0]\n" + " add r1, r1, r6\n" + " strb r2, [r1]\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0xf\n" + " bls ._32 @cond_branch\n" + " add r0, r7, #0\n" + " bl unref_sub_80BCD7C\n" + "._19:\n" + " ldr r2, [sp]\n" + " lsl r0, r2, #0x18\n" + " lsr r7, r0, #0x18\n" + " cmp r7, #0x13\n" + " bhi ._33 @cond_branch\n" + " b ._34\n" + "._33:\n" + " mov r0, #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 {r1}\n" + " bx r1\n" + "._36:\n" + " .align 2, 0\n" + "._35:\n" + " .word gSaveBlock1\n" + " .word 0x1a08\n" + " .word _843E424\n" + " .word 0x1a09\n" + " .word gSaveBlock1+0x1a11\n" + " .word gSaveBlock1+0x1a1a\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F470() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add r6, r0, #0\n" + " add r7, r1, #0\n" + " mov ip, r2\n" + " ldr r2, ._39\n" + " ldr r0, ._39 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r2\n" + " ldr r1, ._39 + 8\n" + " add r0, r0, r1\n" + " ldrb r4, [r0]\n" + " mov r2, #0x0\n" + " ldr r3, ._39 + 12\n" + " add r5, r3, #0\n" + "._41:\n" + " lsl r1, r2, #0x2\n" + " add r0, r1, r5\n" + " ldrb r0, [r0]\n" + " cmp r0, r4\n" + " bne ._37 @cond_branch\n" + " add r0, r1, #1\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " strb r0, [r6]\n" + " add r0, r1, #2\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " strb r0, [r7]\n" + " add r0, r1, #3\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " mov r1, ip\n" + " strb r0, [r1]\n" + " b ._38\n" + "._40:\n" + " .align 2, 0\n" + "._39:\n" + " .word gSaveBlock1\n" + " .word _nakamuraData\n" + " .word 0x1a08\n" + " .word _843E424\n" + "._37:\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x4a\n" + " bls ._41 @cond_branch\n" + "._38:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F4D8() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0xa\n" + " mov r3, #0xa\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r6, ._43\n" + " ldr r7, ._43 + 4\n" + " ldrb r1, [r7]\n" + " add r0, r6, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r2, ._43 + 8\n" + " ldrb r1, [r7]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r2\n" + " ldr r1, ._43 + 12\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._42 @cond_branch\n" + " mov r4, sp\n" + " add r4, r4, #0x1\n" + " mov r5, sp\n" + " add r5, r5, #0x2\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " add r2, r5, #0\n" + " bl debug_sub_815F470\n" + " ldrb r1, [r7]\n" + " add r0, r6, #0\n" + " bl sub_80BC190\n" + " add r0, r6, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r0, ._43 + 16\n" + " mov r1, #0x1\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, sp\n" + " ldrb r1, [r0]\n" + " add r0, r6, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldr r0, ._43 + 20\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldrb r1, [r4]\n" + " add r0, r6, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0x3\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r0, ._43 + 24\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " ldrb r1, [r5]\n" + " add r0, r6, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0x3\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + "._42:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._44:\n" + " .align 2, 0\n" + "._43:\n" + " .word gStringVar1\n" + " .word _nakamuraData\n" + " .word gSaveBlock1\n" + " .word 0x1a08\n" + " .word Str_843E550\n" + " .word Str_843E552\n" + " .word Str_843E554\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F5C4() +{ + asm( + " push {lr}\n" + " ldr r0, ._48\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " cmp r2, #0\n" + " beq ._45 @cond_branch\n" + " ldr r1, ._48 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._46 @cond_branch\n" + " mov r0, #0x13\n" + " b ._50\n" + "._49:\n" + " .align 2, 0\n" + "._48:\n" + " .word gMain\n" + " .word _nakamuraData\n" + "._46:\n" + " sub r0, r0, #0x1\n" + " b ._50\n" + "._45:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._51 @cond_branch\n" + " ldr r1, ._54\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x13\n" + " bne ._52 @cond_branch\n" + " strb r2, [r1]\n" + " b ._53\n" + "._55:\n" + " .align 2, 0\n" + "._54:\n" + " .word _nakamuraData\n" + "._52:\n" + " add r0, r0, #0x1\n" + "._50:\n" + " strb r0, [r1]\n" + "._53:\n" + " bl debug_sub_815F4D8\n" + " mov r0, #0x0\n" + " b ._58\n" + "._51:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._57 @cond_branch\n" + " mov r0, #0x0\n" + " b ._58\n" + "._57:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._58:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815F62C() +{ + asm( + " push {lr}\n" + " ldr r1, ._59\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " ldr r1, ._59 + 4\n" + " ldr r0, ._59 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xb\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " bl debug_sub_815F4D8\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._60:\n" + " .align 2, 0\n" + "._59:\n" + " .word _nakamuraData\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_815F5C4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F668() +{ + asm( + " push {r4, r5, r6, lr}\n" + " ldr r0, ._61\n" + " ldrb r0, [r0]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x5\n" + " ldr r0, ._61 + 4\n" + " add r1, r1, r0\n" + " ldrb r4, [r1, #0x3]\n" + " lsl r4, r4, #0x18\n" + " ldrb r0, [r1, #0x2]\n" + " lsl r0, r0, #0x10\n" + " orr r4, r4, r0\n" + " ldrb r0, [r1, #0x1]\n" + " lsl r0, r0, #0x8\n" + " orr r4, r4, r0\n" + " ldrb r0, [r1]\n" + " orr r4, r4, r0\n" + " ldr r5, ._61 + 8\n" + " ldr r6, ._61 + 12\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " add r0, r5, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl __umodsi3\n" + " add r1, r0, #0\n" + " add r0, r5, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r5, #0\n" + " mov r1, #0x7\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._62:\n" + " .align 2, 0\n" + "._61:\n" + " .word _nakamuraData\n" + " .word gSaveBlock1+0x1a11\n" + " .word gStringVar1\n" + " .word 0x186a0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F6E4() +{ + asm( + " push {r4, lr}\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0xb\n" + " mov r3, #0x4\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r4, ._63\n" + " ldr r0, ._63 + 4\n" + " ldrb r0, [r0]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x5\n" + " ldr r0, ._63 + 8\n" + " add r1, r1, r0\n" + " add r0, r4, #0\n" + " mov r2, #0x7\n" + " bl StringCopyN\n" + " mov r1, #0xff\n" + " strb r1, [r0]\n" + " add r0, r4, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._64:\n" + " .align 2, 0\n" + "._63:\n" + " .word gStringVar1\n" + " .word _nakamuraData\n" + " .word gSaveBlock1+0x1a0a\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F72C() +{ + asm( + " push {r4, r5, lr}\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0xb\n" + " mov r3, #0xa\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r4, ._66\n" + " ldr r5, ._66 + 4\n" + " ldrb r1, [r5]\n" + " add r0, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r2, ._66 + 8\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r2\n" + " ldr r1, ._66 + 12\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._65 @cond_branch\n" + " bl debug_sub_815F6E4\n" + " bl debug_sub_815F668\n" + "._65:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._67:\n" + " .align 2, 0\n" + "._66:\n" + " .word gStringVar1\n" + " .word _nakamuraData\n" + " .word gSaveBlock1\n" + " .word 0x1a08\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F788() +{ + asm( + " push {lr}\n" + " mov r0, #0x2\n" + " mov r1, #0x5\n" + " mov r2, #0xb\n" + " mov r3, #0x6\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r0, ._68\n" + " ldr r1, ._68 + 4\n" + " ldrb r1, [r1]\n" + " add r1, r1, #0x2\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " pop {r0}\n" + " bx r0\n" + "._69:\n" + " .align 2, 0\n" + "._68:\n" + " .word Str_843E574\n" + " .word _nakamuraData+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F7B4() +{ + asm( + " push {lr}\n" + " ldr r0, ._72\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._70 @cond_branch\n" + " mov r0, #0xb\n" + " mov r1, #0x1\n" + " mov r2, #0xb\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " b ._71\n" + "._73:\n" + " .align 2, 0\n" + "._72:\n" + " .word _nakamuraData+0x1\n" + "._70:\n" + " ldr r0, ._74\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x1\n" + " ldr r1, ._74 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xb\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + "._71:\n" + " pop {r0}\n" + " bx r0\n" + "._75:\n" + " .align 2, 0\n" + "._74:\n" + " .word _nakamuraData+0x3\n" + " .word Str_843E576\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F7F0() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r1, ._78\n" + " ldrb r2, [r1]\n" + " lsl r1, r2, #0x2\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x5\n" + " ldr r2, ._78 + 4\n" + " add r3, r1, r2\n" + " ldrb r1, [r3, #0x3]\n" + " lsl r2, r1, #0x18\n" + " ldrb r1, [r3, #0x2]\n" + " lsl r1, r1, #0x10\n" + " orr r2, r2, r1\n" + " ldrb r1, [r3, #0x1]\n" + " lsl r1, r1, #0x8\n" + " orr r2, r2, r1\n" + " ldrb r1, [r3]\n" + " orr r2, r2, r1\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r4, #0x9\n" + " ldr r0, ._78 + 8\n" + " ldrb r0, [r0]\n" + " cmp r4, r0\n" + " ble ._76 @cond_branch\n" + " add r5, r0, #0\n" + "._77:\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r1, r0, #0x1\n" + " lsl r0, r4, #0x18\n" + " mov r4, #0xff\n" + " lsl r4, r4, #0x18\n" + " add r0, r0, r4\n" + " lsr r4, r0, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, r5\n" + " bgt ._77 @cond_branch\n" + "._76:\n" + " add r2, r2, r1\n" + " lsr r0, r2, #0x18\n" + " strb r0, [r3, #0x3]\n" + " mov r0, #0xff\n" + " lsl r0, r0, #0x10\n" + " and r0, r0, r2\n" + " lsr r0, r0, #0x10\n" + " strb r0, [r3, #0x2]\n" + " mov r0, #0xff\n" + " lsl r0, r0, #0x8\n" + " and r0, r0, r2\n" + " lsr r0, r0, #0x8\n" + " strb r0, [r3, #0x1]\n" + " strb r2, [r3]\n" + " bl debug_sub_815F668\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._79:\n" + " .align 2, 0\n" + "._78:\n" + " .word _nakamuraData\n" + " .word gSaveBlock1+0x1a11\n" + " .word _nakamuraData+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F86C() +{ + asm( + " push {r4, r5, r6, lr}\n" + " lsl r0, r0, #0x18\n" + " ldr r1, ._84\n" + " ldrb r2, [r1]\n" + " lsl r1, r2, #0x2\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x5\n" + " ldr r2, ._84 + 4\n" + " add r5, r1, r2\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " lsr r6, r0, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, #0x64\n" + " bne ._80 @cond_branch\n" + " ldr r0, ._84 + 8\n" + " ldrb r1, [r0]\n" + " cmp r1, #0x6\n" + " bhi ._100 @cond_branch\n" + " mov r2, #0xff\n" + "._82:\n" + " add r0, r5, r1\n" + " strb r2, [r0]\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " cmp r1, #0x6\n" + " bls ._82 @cond_branch\n" + " b ._100\n" + "._85:\n" + " .align 2, 0\n" + "._84:\n" + " .word _nakamuraData\n" + " .word gSaveBlock1+0x1a0a\n" + " .word _nakamuraData+0x2\n" + "._80:\n" + " ldr r0, ._87\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x4\n" + " bhi ._98 @cond_branch\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._87 + 4\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._88:\n" + " .align 2, 0\n" + "._87:\n" + " .word _nakamuraData+0x3\n" + " .word ._89\n" + "._89:\n" + " .word ._90\n" + " .word ._91\n" + " .word ._92\n" + " .word ._93\n" + " .word ._94\n" + "._90:\n" + " mov r3, #0x1\n" + " mov r2, #0x50\n" + " b ._98\n" + "._91:\n" + " mov r3, #0x51\n" + " mov r2, #0xa0\n" + " b ._98\n" + "._92:\n" + " mov r3, #0xbb\n" + " mov r2, #0xd4\n" + " b ._98\n" + "._93:\n" + " mov r3, #0xd5\n" + " mov r2, #0xee\n" + " b ._98\n" + "._94:\n" + " mov r3, #0xa1\n" + " mov r2, #0xaa\n" + "._98:\n" + " ldr r4, ._101\n" + " ldrb r1, [r4]\n" + " add r1, r5, r1\n" + " ldrb r0, [r1]\n" + " add r0, r0, r6\n" + " strb r0, [r1]\n" + " ldrb r0, [r4]\n" + " add r1, r5, r0\n" + " ldrb r0, [r1]\n" + " cmp r0, r3\n" + " bcs ._99 @cond_branch\n" + " strb r2, [r1]\n" + "._99:\n" + " ldrb r0, [r4]\n" + " add r1, r5, r0\n" + " ldrb r0, [r1]\n" + " cmp r0, r2\n" + " bls ._100 @cond_branch\n" + " strb r3, [r1]\n" + "._100:\n" + " bl debug_sub_815F6E4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._102:\n" + " .align 2, 0\n" + "._101:\n" + " .word _nakamuraData+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F930() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r0, ._107\n" + " ldrb r2, [r0]\n" + " mov r4, #0xa\n" + " cmp r2, #0\n" + " bne ._103 @cond_branch\n" + " mov r4, #0x7\n" + "._103:\n" + " ldr r5, ._107 + 4\n" + " ldrh r1, [r5, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._104 @cond_branch\n" + " cmp r2, #0\n" + " beq ._105 @cond_branch\n" + " mov r0, #0x1\n" + " bl debug_sub_815F7F0\n" + " b ._136\n" + "._108:\n" + " .align 2, 0\n" + "._107:\n" + " .word _nakamuraData+0x1\n" + " .word gMain\n" + "._105:\n" + " mov r0, #0x1\n" + " b ._113\n" + "._104:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._110 @cond_branch\n" + " cmp r2, #0\n" + " beq ._111 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl debug_sub_815F7F0\n" + " b ._136\n" + "._111:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " b ._113\n" + "._110:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r3, r0, #0x10\n" + " cmp r3, #0\n" + " beq ._114 @cond_branch\n" + " ldr r1, ._117\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._115 @cond_branch\n" + " sub r0, r4, #1\n" + " b ._116\n" + "._118:\n" + " .align 2, 0\n" + "._117:\n" + " .word _nakamuraData+0x2\n" + "._115:\n" + " sub r0, r0, #0x1\n" + "._116:\n" + " strb r0, [r1]\n" + "._125:\n" + " bl debug_sub_815F788\n" + " b ._136\n" + "._114:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._120 @cond_branch\n" + " ldr r2, ._123\n" + " ldrb r1, [r2]\n" + " sub r0, r4, #1\n" + " cmp r1, r0\n" + " bne ._121 @cond_branch\n" + " strb r3, [r2]\n" + " b ._125\n" + "._124:\n" + " .align 2, 0\n" + "._123:\n" + " .word _nakamuraData+0x2\n" + "._121:\n" + " add r0, r1, #1\n" + " strb r0, [r2]\n" + " b ._125\n" + "._120:\n" + " ldrh r1, [r5, #0x2e]\n" + " mov r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._126 @cond_branch\n" + " cmp r2, #0\n" + " bne ._127 @cond_branch\n" + " ldr r4, ._129\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " mov r1, #0x5\n" + " bl __modsi3\n" + " strb r0, [r4]\n" + "._127:\n" + " bl debug_sub_815F7B4\n" + " b ._136\n" + "._130:\n" + " .align 2, 0\n" + "._129:\n" + " .word _nakamuraData+0x3\n" + "._126:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._131 @cond_branch\n" + " mov r0, #0x2\n" + " mov r1, #0x5\n" + " mov r2, #0xb\n" + " mov r3, #0x6\n" + " bl MenuFillWindowRectWithBlankTile\n" + " mov r0, #0xb\n" + " mov r1, #0x1\n" + " mov r2, #0xb\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r1, ._133\n" + " ldr r0, ._133 + 4\n" + " str r0, [r1]\n" + " b ._136\n" + "._134:\n" + " .align 2, 0\n" + "._133:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_815FA38+1\n" + "._131:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._136 @cond_branch\n" + " cmp r2, #0\n" + " bne ._136 @cond_branch\n" + " mov r0, #0x64\n" + "._113:\n" + " bl debug_sub_815F86C\n" + "._136:\n" + " mov r0, #0x0\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815FA38() +{ + asm( + " push {r4, lr}\n" + " ldr r0, ._139\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._137 @cond_branch\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " b ._138\n" + "._140:\n" + " .align 2, 0\n" + "._139:\n" + " .word gMain\n" + "._137:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._141 @cond_branch\n" + " mov r0, #0x2\n" + "._138:\n" + " bl MoveMenuCursor\n" + "._161:\n" + " mov r0, #0x0\n" + " b ._142\n" + "._141:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " cmp r2, #0\n" + " beq ._143 @cond_branch\n" + " ldr r1, ._146\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._144 @cond_branch\n" + " mov r0, #0x13\n" + " b ._148\n" + "._147:\n" + " .align 2, 0\n" + "._146:\n" + " .word _nakamuraData\n" + "._144:\n" + " sub r0, r0, #0x1\n" + " b ._148\n" + "._143:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " cmp r4, #0\n" + " beq ._149 @cond_branch\n" + " ldr r1, ._152\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x13\n" + " bne ._150 @cond_branch\n" + " strb r2, [r1]\n" + " b ._151\n" + "._153:\n" + " .align 2, 0\n" + "._152:\n" + " .word _nakamuraData\n" + "._150:\n" + " add r0, r0, #0x1\n" + "._148:\n" + " strb r0, [r1]\n" + "._151:\n" + " bl debug_sub_815F72C\n" + " b ._161\n" + "._149:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._155 @cond_branch\n" + " ldr r1, ._159\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._161 @cond_branch\n" + " ldr r2, ._159 + 4\n" + " add r1, r0, #0\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r2\n" + " ldr r1, ._159 + 8\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._161 @cond_branch\n" + " bl GetMenuCursorPos\n" + " ldr r1, ._159 + 12\n" + " strb r0, [r1]\n" + " ldr r0, ._159 + 16\n" + " strb r4, [r0]\n" + " bl debug_sub_815F788\n" + " bl debug_sub_815F7B4\n" + " ldr r1, ._159 + 20\n" + " ldr r0, ._159 + 24\n" + " str r0, [r1]\n" + " b ._161\n" + "._160:\n" + " .align 2, 0\n" + "._159:\n" + " .word _nakamuraData\n" + " .word gSaveBlock1\n" + " .word 0x1a08\n" + " .word _nakamuraData+0x1\n" + " .word _nakamuraData+0x2\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_815F930+1\n" + "._155:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._161 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._142:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815FB1C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " ldr r0, ._162\n" + " mov r1, #0x0\n" + " strb r1, [r0]\n" + " ldr r0, ._162 + 4\n" + " strb r1, [r0]\n" + " ldr r1, ._162 + 8\n" + " ldr r0, ._162 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xc\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " bl debug_sub_815F72C\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xb\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x3\n" + " bl InitMenu\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._163:\n" + " .align 2, 0\n" + "._162:\n" + " .word _nakamuraData\n" + " .word _nakamuraData+0x3\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_815FA38+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815FB78() +{ + asm( + " push {lr}\n" + " ldr r0, ._166\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._164 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " b ._165\n" + "._167:\n" + " .align 2, 0\n" + "._166:\n" + " .word gMain\n" + "._164:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._168 @cond_branch\n" + " mov r0, #0x1\n" + "._165:\n" + " bl MoveMenuCursor\n" + " mov r0, #0x0\n" + " b ._177\n" + "._168:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._170 @cond_branch\n" + " bl CloseMenu\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._171 @cond_branch\n" + " cmp r0, #0x1\n" + " beq ._172 @cond_branch\n" + " b ._175\n" + "._171:\n" + " bl debug_sub_814A714\n" + " b ._175\n" + "._172:\n" + " bl ClearRoamerData\n" + " bl ClearRoamerLocationData\n" + " b ._175\n" + "._170:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._176 @cond_branch\n" + " mov r0, #0x0\n" + " b ._177\n" + "._176:\n" + " bl CloseMenu\n" + "._175:\n" + " mov r0, #0x1\n" + "._177:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815FBE8() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " ldr r1, ._178\n" + " ldr r0, ._178 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " ldr r4, ._178 + 8\n" + " add r0, r4, #0\n" + " bl debug_sub_814A73C\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xb\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " add r0, r4, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._178 + 12\n" + " mov r1, #0x2\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xa\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x3\n" + " bl InitMenu\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._179:\n" + " .align 2, 0\n" + "._178:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_815FB78+1\n" + " .word gStringVar1\n" + " .word Str_843E580\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815FC54() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r3, #0x0\n" + " ldr r7, ._181\n" + " mov r6, #0xe8\n" + " lsl r6, r6, #0x3\n" + " ldr r5, ._181 + 4\n" + " ldr r4, ._181 + 8\n" + "._180:\n" + " lsl r1, r3, #0x2\n" + " add r1, r1, r7\n" + " add r2, r3, #0\n" + " add r2, r2, #0x85\n" + " add r0, r1, r6\n" + " strh r2, [r0]\n" + " add r1, r1, r4\n" + " strh r5, [r1]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r3, r0, #0x10\n" + " cmp r3, #0x2a\n" + " bls ._180 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._182:\n" + " .align 2, 0\n" + "._181:\n" + " .word gSaveBlock1\n" + " .word 0x3e7\n" + " .word 0x742\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815FC94() +{ + asm( + " push {lr}\n" + " bl ClearDecorationInventories\n" + " bl debug_sub_814A3A8\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815FCB4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " mov r7, #0x0\n" + " ldr r5, ._188\n" + " ldr r0, [r5]\n" + " ldr r0, [r0, #0x4]\n" + " mov r1, #0x3\n" + " bl __divsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " add r1, r0, #0\n" + " mul r1, r1, r4\n" + " lsl r1, r1, #0x10\n" + " lsr r6, r1, #0x10\n" + " add r0, r6, r0\n" + " mov r9, r5\n" + " cmp r6, r0\n" + " bge ._183 @cond_branch\n" + " mov r8, r0\n" + "._187:\n" + " mov r4, #0x0\n" + " mov r1, r9\n" + " ldr r0, [r1]\n" + " ldr r0, [r0]\n" + " add r5, r6, #1\n" + " cmp r4, r0\n" + " bge ._184 @cond_branch\n" + " ldr r0, ._188\n" + " mov r9, r0\n" + "._186:\n" + " add r0, r4, #7\n" + " add r1, r6, #7\n" + " bl MapGridGetMetatileBehaviorAt\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl sub_805759C\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._185 @cond_branch\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r7, r0, #0x10\n" + "._185:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " ldr r0, ._188\n" + " ldr r0, [r0]\n" + " ldr r0, [r0]\n" + " cmp r4, r0\n" + " blt ._186 @cond_branch\n" + "._184:\n" + " lsl r0, r5, #0x10\n" + " lsr r6, r0, #0x10\n" + " cmp r6, r8\n" + " blt ._187 @cond_branch\n" + "._183:\n" + " add r0, r7, #0\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._189:\n" + " .align 2, 0\n" + "._188:\n" + " .word gMapHeader\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815FD40() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r6, #0x0\n" + " mov r4, sp\n" + " add r4, r4, #0x2\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " bl GetXYCoordsOneStepInFrontOfPlayer\n" + " mov r1, sp\n" + " mov r0, sp\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x7\n" + " strh r0, [r1]\n" + " ldrh r0, [r4]\n" + " sub r0, r0, #0x7\n" + " strh r0, [r4]\n" + " mov r5, #0x0\n" + " ldr r1, ._192\n" + " ldr r0, [r1]\n" + " ldr r0, [r0, #0x4]\n" + " add r7, r4, #0\n" + " cmp r6, r0\n" + " bge ._190 @cond_branch\n" + "._199:\n" + " mov r4, #0x0\n" + " ldr r0, [r1]\n" + " b ._191\n" + "._193:\n" + " .align 2, 0\n" + "._192:\n" + " .word gMapHeader\n" + "._198:\n" + " add r0, r4, #7\n" + " add r1, r5, #7\n" + " bl MapGridGetMetatileBehaviorAt\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl sub_805759C\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._196 @cond_branch\n" + " add r0, r6, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r6, r0, #0x10\n" + " mov r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, r4\n" + " bne ._196 @cond_branch\n" + " mov r1, #0x0\n" + " ldsh r0, [r7, r1]\n" + " cmp r0, r5\n" + " bne ._196 @cond_branch\n" + " add r0, r6, #0\n" + " b ._197\n" + "._196:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " ldr r0, ._200\n" + " ldr r0, [r0]\n" + "._191:\n" + " ldr r0, [r0]\n" + " cmp r4, r0\n" + " blt ._198 @cond_branch\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " ldr r1, ._200\n" + " ldr r0, [r1]\n" + " ldr r0, [r0, #0x4]\n" + " cmp r5, r0\n" + " blt ._199 @cond_branch\n" + "._190:\n" + " add r0, r6, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + "._197:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._201:\n" + " .align 2, 0\n" + "._200:\n" + " .word gMapHeader\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815FDE4() +{ + asm( + " push {lr}\n" + " ldr r0, ._205\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._202 @cond_branch\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._203 @cond_branch\n" + "._202:\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._204\n" + "._206:\n" + " .align 2, 0\n" + "._205:\n" + " .word gMain\n" + "._203:\n" + " mov r0, #0x0\n" + "._204:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815FE1C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x10\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._210\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r6, ._210 + 4\n" + " mov r0, #0x0\n" + " bl debug_sub_815FCB4\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0x5\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " mov r0, #0x1\n" + " bl debug_sub_815FCB4\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0x5\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0x2\n" + " bl debug_sub_815FCB4\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0x5\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " bl debug_sub_8092344\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0xb\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " mov r0, #0x1\n" + " bl debug_sub_8092344\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0xb\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0x2\n" + " bl debug_sub_8092344\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0xb\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r0, ._210 + 8\n" + " ldr r1, ._210 + 12\n" + " add r0, r0, r1\n" + " ldrh r0, [r0]\n" + " bl FeebasSeedRng\n" + " mov r0, #0x0\n" + " bl debug_sub_815FCB4\n" + " add r4, r0, #0\n" + " mov r0, #0x1\n" + " bl debug_sub_815FCB4\n" + " add r5, r0, #0\n" + " mov r0, #0x2\n" + " bl debug_sub_815FCB4\n" + " add r4, r4, r5\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x10\n" + " lsr r7, r0, #0x10\n" + " mov r5, #0x0\n" + "._209:\n" + " bl FeebasRandom\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " add r1, r7, #0\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r1, r0, #0x10\n" + " cmp r1, #0\n" + " bne ._207 @cond_branch\n" + " add r1, r7, #0\n" + "._207:\n" + " sub r0, r1, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0x2\n" + " bls ._208 @cond_branch\n" + " add r0, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r5, #0\n" + " mov r1, #0x3\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " lsl r4, r0, #0x2\n" + " add r4, r4, r0\n" + " add r4, r4, #0x2\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r5, #0\n" + " mov r1, #0x3\n" + " bl __udivsi3\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x19\n" + " mov r0, #0xb0\n" + " lsl r0, r0, #0x14\n" + " add r2, r2, r0\n" + " lsr r2, r2, #0x18\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " bl MenuPrint\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + "._208:\n" + " cmp r5, #0x6\n" + " bne ._209 @cond_branch\n" + " ldr r4, ._210 + 4\n" + " bl debug_sub_815FD40\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " ldr r1, ._210 + 16\n" + " ldr r0, ._210 + 20\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._211:\n" + " .align 2, 0\n" + "._210:\n" + " .word Str_843E58D\n" + " .word gStringVar1\n" + " .word gSaveBlock1\n" + " .word 0x2dd6\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_815FDE4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815FFDC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " mov r0, #0xe\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x0\n" + " mov r1, #0xe\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._214\n" + " mov r1, #0x1\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " mov r5, #0x0\n" + " ldr r0, ._214 + 4\n" + " mov r8, r0\n" + "._216:\n" + " mov r0, #0x64\n" + " add r1, r5, #0\n" + " mul r1, r1, r0\n" + " ldr r0, ._214 + 8\n" + " add r6, r1, r0\n" + " add r0, r6, #0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " lsl r1, r5, #0x2\n" + " mov r2, r8\n" + " add r4, r1, r2\n" + " strh r0, [r4]\n" + " lsl r0, r0, #0x10\n" + " add r7, r1, #0\n" + " cmp r0, #0\n" + " beq ._212 @cond_branch\n" + " add r0, r6, #0\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " strb r0, [r4, #0x2]\n" + " add r0, r5, #0\n" + " bl debug_sub_816009C\n" + " add r0, r5, #0\n" + " bl debug_sub_81600D0\n" + " add r0, r5, #0\n" + " bl debug_sub_816013C\n" + " b ._213\n" + "._215:\n" + " .align 2, 0\n" + "._214:\n" + " .word Str_843E5D4\n" + " .word _nakamuraStatic\n" + " .word gPlayerParty\n" + "._212:\n" + " mov r0, #0x1\n" + " strb r0, [r4, #0x2]\n" + "._213:\n" + " mov r0, r8\n" + " add r1, r7, r0\n" + " mov r0, #0x0\n" + " strb r0, [r1, #0x3]\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x5\n" + " bls ._216 @cond_branch\n" + " ldr r1, ._217\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " mov r0, #0xf\n" + " mov r1, #0x1\n" + " mov r2, #0xff\n" + " bl unref_sub_80F924C\n" + " ldr r1, ._217 + 4\n" + " ldr r0, ._217 + 8\n" + " str r0, [r1]\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._218:\n" + " .align 2, 0\n" + "._217:\n" + " .word _nakamuraData+0x4\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8160498+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_816009C() +{ + asm( + " push {lr}\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " ldr r1, ._219\n" + " lsl r0, r2, #0x2\n" + " add r0, r0, r1\n" + " mov r3, #0x0\n" + " ldsh r1, [r0, r3]\n" + " mov r0, #0xb\n" + " mul r0, r0, r1\n" + " ldr r1, ._219 + 4\n" + " add r0, r0, r1\n" + " lsl r2, r2, #0x1\n" + " add r2, r2, #0x1\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r1, #0x10\n" + " bl MenuPrint\n" + " pop {r0}\n" + " bx r0\n" + "._220:\n" + " .align 2, 0\n" + "._219:\n" + " .word _nakamuraStatic\n" + " .word gSpeciesNames\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_81600D0() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " add r5, r4, #0\n" + " ldr r1, ._223\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " bl memcpy\n" + " mov r0, #0x64\n" + " mul r0, r0, r4\n" + " ldr r1, ._223 + 4\n" + " add r0, r0, r1\n" + " bl GetMonGender\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._221 @cond_branch\n" + " ldr r0, ._223 + 8\n" + " b ._222\n" + "._224:\n" + " .align 2, 0\n" + "._223:\n" + " .word Str_843E5F0\n" + " .word gPlayerParty\n" + " .word gOtherText_MaleSymbol2\n" + "._221:\n" + " cmp r0, #0xfe\n" + " bne ._225 @cond_branch\n" + " ldr r0, ._227\n" + "._222:\n" + " lsl r2, r4, #0x1\n" + " add r2, r2, #0x1\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r1, #0x17\n" + " bl MenuPrint\n" + " b ._226\n" + "._228:\n" + " .align 2, 0\n" + "._227:\n" + " .word gOtherText_FemaleSymbolAndLv\n" + "._225:\n" + " lsl r2, r5, #0x1\n" + " add r2, r2, #0x1\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r0, sp\n" + " mov r1, #0x17\n" + " bl MenuPrint\n" + "._226:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_816013C() +{ + asm( + " push {r4, r5, lr}\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r5, ._229\n" + " ldr r1, ._229 + 4\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r1\n" + " mov r1, #0x2\n" + " ldrsb r1, [r0, r1]\n" + " add r0, r5, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " lsl r4, r4, #0x1\n" + " add r4, r4, #0x1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r5, #0\n" + " mov r1, #0x1a\n" + " add r2, r4, #0\n" + " bl MenuPrint\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._230:\n" + " .align 2, 0\n" + "._229:\n" + " .word gStringVar1\n" + " .word _nakamuraStatic\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_816017C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " lsl r3, r4, #0x1\n" + " add r1, r3, #1\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r3, r3, #0x2\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r0, #0x10\n" + " mov r2, #0x1c\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r1, ._232\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r1\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0\n" + " beq ._231 @cond_branch\n" + " add r0, r4, #0\n" + " bl debug_sub_816009C\n" + " add r0, r4, #0\n" + " bl debug_sub_81600D0\n" + " add r0, r4, #0\n" + " bl debug_sub_816013C\n" + "._231:\n" + " mov r0, #0x5\n" + " bl debug_sub_81603B8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._233:\n" + " .align 2, 0\n" + "._232:\n" + " .word _nakamuraStatic\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_81601C8() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffff0\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r1, ._239\n" + " lsl r0, r5, #0x2\n" + " add r2, r0, r1\n" + " mov r4, #0x0\n" + " ldsh r0, [r2, r4]\n" + " cmp r0, #0\n" + " bne ._236 @cond_branch\n" + " ldrb r0, [r2, #0x3]\n" + " cmp r0, #0\n" + " bne ._236 @cond_branch\n" + " cmp r3, #0x1\n" + " bne ._236 @cond_branch\n" + " mov r0, #0x8a\n" + " lsl r0, r0, #0x1\n" + " strh r0, [r2]\n" + "._236:\n" + " lsl r0, r5, #0x2\n" + " add r4, r0, r1\n" + " lsl r0, r3, #0x18\n" + " asr r0, r0, #0x18\n" + " ldrh r1, [r4]\n" + " add r2, r0, r1\n" + " mov r3, #0x0\n" + " strh r2, [r4]\n" + " lsl r1, r2, #0x10\n" + " mov r0, #0xcd\n" + " lsl r0, r0, #0x11\n" + " cmp r1, r0\n" + " ble ._237 @cond_branch\n" + " ldr r1, ._239 + 4\n" + " add r0, r2, r1\n" + " strh r0, [r4]\n" + "._237:\n" + " ldrh r1, [r4]\n" + " mov r2, #0x0\n" + " ldsh r0, [r4, r2]\n" + " cmp r0, #0\n" + " bge ._238 @cond_branch\n" + " ldr r2, ._239 + 8\n" + " add r0, r1, r2\n" + " strh r0, [r4]\n" + "._238:\n" + " mov r0, #0x64\n" + " mul r0, r0, r5\n" + " ldr r1, ._239 + 12\n" + " add r0, r0, r1\n" + " ldrh r1, [r4]\n" + " ldrb r2, [r4, #0x2]\n" + " str r3, [sp]\n" + " str r3, [sp, #0x4]\n" + " str r3, [sp, #0x8]\n" + " str r3, [sp, #0xc]\n" + " mov r3, #0x20\n" + " bl CreateMon\n" + " mov r0, #0x1\n" + " strb r0, [r4, #0x3]\n" + " add sp, sp, #0x10\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._240:\n" + " .align 2, 0\n" + "._239:\n" + " .word _nakamuraStatic\n" + " .word 0xfffffe65\n" + " .word 0x19b\n" + " .word gPlayerParty\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160258() +{ + asm( + " push {lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " ldr r1, ._242\n" + " lsl r0, r2, #0x2\n" + " add r0, r0, r1\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0\n" + " beq ._241 @cond_branch\n" + " add r0, r2, #0\n" + " bl debug_sub_816062C\n" + "._241:\n" + " pop {r0}\n" + " bx r0\n" + "._243:\n" + " .align 2, 0\n" + "._242:\n" + " .word _nakamuraStatic\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_816027C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r4, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r2, r1, #0x18\n" + " ldr r1, ._247\n" + " lsl r0, r4, #0x2\n" + " add r3, r0, r1\n" + " mov r1, #0x0\n" + " ldsh r0, [r3, r1]\n" + " cmp r0, #0\n" + " beq ._244 @cond_branch\n" + " lsl r0, r2, #0x18\n" + " asr r0, r0, #0x18\n" + " ldrb r1, [r3, #0x2]\n" + " add r0, r0, r1\n" + " strb r0, [r3, #0x2]\n" + " lsl r0, r0, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, #0x64\n" + " ble ._245 @cond_branch\n" + " mov r0, #0x1\n" + " strb r0, [r3, #0x2]\n" + "._245:\n" + " mov r0, #0x2\n" + " ldrsb r0, [r3, r0]\n" + " cmp r0, #0\n" + " bgt ._246 @cond_branch\n" + " mov r0, #0x64\n" + " strb r0, [r3, #0x2]\n" + "._246:\n" + " mov r0, #0x64\n" + " mul r4, r4, r0\n" + " ldr r0, ._247 + 4\n" + " add r4, r4, r0\n" + " ldr r2, ._247 + 8\n" + " mov r0, #0x0\n" + " ldsh r1, [r3, r0]\n" + " lsl r0, r1, #0x3\n" + " sub r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldrb r1, [r0, #0x13]\n" + " mov r0, #0xca\n" + " lsl r0, r0, #0x1\n" + " add r2, r1, #0\n" + " mul r2, r2, r0\n" + " mov r0, #0x2\n" + " ldrsb r0, [r3, r0]\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._247 + 12\n" + " add r0, r0, r1\n" + " add r2, r2, r0\n" + " add r0, r4, #0\n" + " mov r1, #0x19\n" + " bl SetMonData\n" + " add r0, r4, #0\n" + " bl debug_sub_803F55C\n" + "._244:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._248:\n" + " .align 2, 0\n" + "._247:\n" + " .word _nakamuraStatic\n" + " .word gPlayerParty\n" + " .word gBaseStats\n" + " .word gExperienceTables\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160308() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add sp, sp, #0xffffff8c\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " mov r2, #0x0\n" + "._252:\n" + " add r1, r2, #1\n" + " lsl r0, r1, #0x18\n" + " lsr r5, r0, #0x18\n" + " mov r8, r1\n" + " cmp r5, #0x5\n" + " bhi ._249 @cond_branch\n" + " mov r0, #0x64\n" + " mov r9, r0\n" + " mov r0, r9\n" + " mul r0, r0, r2\n" + " ldr r7, ._254\n" + " add r6, r0, r7\n" + "._251:\n" + " add r0, r6, #0\n" + " mov r1, #0xb\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " bne ._250 @cond_branch\n" + " add r0, sp, #0x10\n" + " add r1, r6, #0\n" + " mov r2, #0x64\n" + " bl memcpy\n" + " mov r4, r9\n" + " mul r4, r4, r5\n" + " add r4, r4, r7\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " mov r2, #0x64\n" + " bl memcpy\n" + " add r0, r4, #0\n" + " add r1, sp, #0x10\n" + " mov r2, #0x64\n" + " bl memcpy\n" + "._250:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x5\n" + " bls ._251 @cond_branch\n" + "._249:\n" + " mov r1, r8\n" + " lsl r0, r1, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x4\n" + " bls ._252 @cond_branch\n" + " bl CalculatePlayerPartyCount\n" + " ldr r4, ._254 + 4\n" + " ldrb r1, [r4]\n" + " cmp r1, #0\n" + " bne ._253 @cond_branch\n" + " ldr r0, ._254\n" + " str r1, [sp]\n" + " str r1, [sp, #0x4]\n" + " str r1, [sp, #0x8]\n" + " str r1, [sp, #0xc]\n" + " mov r1, #0x1\n" + " mov r2, #0xa\n" + " mov r3, #0x20\n" + " bl CreateMon\n" + " mov r0, #0x1\n" + " strb r0, [r4]\n" + "._253:\n" + " add sp, sp, #0x74\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._255:\n" + " .align 2, 0\n" + "._254:\n" + " .word gPlayerParty\n" + " .word gPlayerPartyCount\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_81603B8() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r7, ._259\n" + " ldrb r4, [r7]\n" + " add r0, r4, #0\n" + " mov r1, #0x6\n" + " bl __udivsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " add r0, r4, #0\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r0, ._259 + 4\n" + " add r0, r5, r0\n" + " ldrb r2, [r0]\n" + " lsl r3, r4, #0x1\n" + " add r1, r3, #1\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r3, r3, #0x2\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " add r0, r2, #0\n" + " bl MenuFillWindowRectWithBlankTile\n" + " cmp r6, #0\n" + " bne ._256 @cond_branch\n" + " cmp r4, #0\n" + " beq ._257 @cond_branch\n" + " ldrb r0, [r7]\n" + " sub r0, r0, #0x1\n" + " b ._258\n" + "._260:\n" + " .align 2, 0\n" + "._259:\n" + " .word _nakamuraData+0x4\n" + " .word _843E5D1\n" + "._257:\n" + " lsl r0, r5, #0x1\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, #0x5\n" + "._258:\n" + " strb r0, [r7]\n" + "._256:\n" + " ldr r1, ._264\n" + " cmp r6, #0x1\n" + " bne ._261 @cond_branch\n" + " cmp r4, #0x5\n" + " beq ._262 @cond_branch\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " b ._263\n" + "._265:\n" + " .align 2, 0\n" + "._264:\n" + " .word _nakamuraData+0x4\n" + "._262:\n" + " lsl r0, r5, #0x1\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x1\n" + "._263:\n" + " strb r0, [r1]\n" + "._261:\n" + " cmp r6, #0x2\n" + " bne ._266 @cond_branch\n" + " cmp r5, #0\n" + " beq ._267 @cond_branch\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x6\n" + " b ._268\n" + "._267:\n" + " add r0, r4, #0\n" + " add r0, r0, #0xc\n" + "._268:\n" + " strb r0, [r1]\n" + "._266:\n" + " cmp r6, #0x3\n" + " bne ._271 @cond_branch\n" + " cmp r5, #0x2\n" + " beq ._270 @cond_branch\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x6\n" + " strb r0, [r1]\n" + " b ._271\n" + "._270:\n" + " strb r4, [r1]\n" + "._271:\n" + " ldrb r4, [r1]\n" + " add r0, r4, #0\n" + " mov r1, #0x6\n" + " bl __udivsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " add r0, r4, #0\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " ldr r0, ._272\n" + " add r0, r5, r0\n" + " ldrb r0, [r0]\n" + " lsr r1, r1, #0x17\n" + " add r1, r1, #0x1\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r2, #0xff\n" + " bl unref_sub_80F924C\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._273:\n" + " .align 2, 0\n" + "._272:\n" + " .word _843E5D1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160498() +{ + asm( + " push {r4, lr}\n" + " ldr r1, ._276\n" + " ldrh r2, [r1, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._274 @cond_branch\n" + " mov r0, #0x0\n" + " b ._281\n" + "._277:\n" + " .align 2, 0\n" + "._276:\n" + " .word gMain\n" + "._274:\n" + " mov r0, #0x80\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._278 @cond_branch\n" + " mov r0, #0x1\n" + " b ._281\n" + "._278:\n" + " mov r0, #0x20\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._280 @cond_branch\n" + " mov r0, #0x2\n" + " b ._281\n" + "._280:\n" + " mov r0, #0x10\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._282 @cond_branch\n" + " mov r0, #0x3\n" + "._281:\n" + " bl debug_sub_81603B8\n" + " mov r0, #0x0\n" + " b ._311\n" + "._282:\n" + " ldrh r1, [r1, #0x30]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._284 @cond_branch\n" + " ldr r4, ._289\n" + " ldrb r0, [r4]\n" + " cmp r0, #0x5\n" + " bhi ._285 @cond_branch\n" + " mov r1, #0x1\n" + " bl debug_sub_81601C8\n" + "._285:\n" + " ldrb r0, [r4]\n" + " sub r0, r0, #0x6\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x5\n" + " bhi ._286 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8160258\n" + "._286:\n" + " ldrb r0, [r4]\n" + " sub r0, r0, #0xc\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x5\n" + " bhi ._306 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " b ._300\n" + "._290:\n" + " .align 2, 0\n" + "._289:\n" + " .word _nakamuraData+0x4\n" + "._284:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._291 @cond_branch\n" + " ldr r4, ._294\n" + " ldrb r0, [r4]\n" + " cmp r0, #0x5\n" + " bhi ._304 @cond_branch\n" + " mov r1, #0x1\n" + " neg r1, r1\n" + " b ._293\n" + "._295:\n" + " .align 2, 0\n" + "._294:\n" + " .word _nakamuraData+0x4\n" + "._291:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._296 @cond_branch\n" + " ldr r4, ._301\n" + " ldrb r0, [r4]\n" + " cmp r0, #0x5\n" + " bhi ._297 @cond_branch\n" + " mov r1, #0xa\n" + " bl debug_sub_81601C8\n" + "._297:\n" + " ldrb r0, [r4]\n" + " sub r0, r0, #0x6\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x5\n" + " bhi ._298 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8160258\n" + "._298:\n" + " ldrb r0, [r4]\n" + " sub r0, r0, #0xc\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x5\n" + " bhi ._306 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " b ._300\n" + "._302:\n" + " .align 2, 0\n" + "._301:\n" + " .word _nakamuraData+0x4\n" + "._296:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._303 @cond_branch\n" + " ldr r4, ._308\n" + " ldrb r0, [r4]\n" + " cmp r0, #0x5\n" + " bhi ._304 @cond_branch\n" + " mov r1, #0xa\n" + " neg r1, r1\n" + "._293:\n" + " bl debug_sub_81601C8\n" + "._304:\n" + " ldrb r0, [r4]\n" + " sub r0, r0, #0x6\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x5\n" + " bhi ._305 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8160258\n" + "._305:\n" + " ldrb r0, [r4]\n" + " sub r0, r0, #0xc\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x5\n" + " bhi ._306 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " neg r1, r1\n" + "._300:\n" + " bl debug_sub_816027C\n" + "._306:\n" + " ldrb r0, [r4]\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_816017C\n" + " mov r0, #0x0\n" + " b ._311\n" + "._309:\n" + " .align 2, 0\n" + "._308:\n" + " .word _nakamuraData+0x4\n" + "._303:\n" + " mov r0, #0x8\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._310 @cond_branch\n" + " mov r0, #0x0\n" + " b ._311\n" + "._310:\n" + " bl debug_sub_8160308\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._311:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_816062C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add sp, sp, #0xfffffff0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " mov r0, #0x64\n" + " mov r4, r8\n" + " mul r4, r4, r0\n" + " ldr r0, ._316\n" + " add r4, r4, r0\n" + " add r0, r4, #0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " lsl r0, r0, #0x10\n" + " lsr r7, r0, #0x10\n" + " add r0, r4, #0\n" + " bl GetMonGender\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " ldr r1, ._316 + 4\n" + " lsl r0, r7, #0x3\n" + " sub r0, r0, r7\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldrb r6, [r0, #0x10]\n" + " cmp r6, #0\n" + " beq ._313 @cond_branch\n" + " cmp r6, #0xfe\n" + " beq ._313 @cond_branch\n" + " cmp r6, #0xff\n" + " bne ._314 @cond_branch\n" + "._313:\n" + " mov r0, #0x64\n" + " mov r1, r8\n" + " mul r1, r1, r0\n" + " add r0, r1, #0\n" + " ldr r1, ._316\n" + " add r0, r0, r1\n" + " bl GetMonGender\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " b ._320\n" + "._317:\n" + " .align 2, 0\n" + "._316:\n" + " .word gPlayerParty\n" + " .word gBaseStats\n" + "._314:\n" + " cmp r2, #0\n" + " beq ._318 @cond_branch\n" + " cmp r2, #0xfe\n" + " beq ._319 @cond_branch\n" + " mov r0, #0x0\n" + " b ._320\n" + "._318:\n" + " mov r6, #0xfe\n" + " b ._321\n" + "._319:\n" + " mov r6, #0x0\n" + "._321:\n" + " mov r0, r8\n" + " lsl r0, r0, #0x2\n" + " mov r9, r0\n" + "._322:\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " orr r5, r5, r0\n" + " add r0, r7, #0\n" + " add r1, r5, #0\n" + " bl GetGenderFromSpeciesAndPersonality\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, r6\n" + " bne ._322 @cond_branch\n" + " mov r0, #0x64\n" + " mov r4, r8\n" + " mul r4, r4, r0\n" + " ldr r0, ._323\n" + " add r4, r4, r0\n" + " add r0, r4, #0\n" + " mov r1, #0x42\n" + " bl GetMonData\n" + " ldr r0, ._323 + 4\n" + " add r0, r0, r9\n" + " ldrh r1, [r0]\n" + " ldrb r2, [r0, #0x2]\n" + " mov r0, #0x1\n" + " str r0, [sp]\n" + " str r5, [sp, #0x4]\n" + " mov r0, #0x0\n" + " str r0, [sp, #0x8]\n" + " str r0, [sp, #0xc]\n" + " add r0, r4, #0\n" + " mov r3, #0x20\n" + " bl CreateMon\n" + " add r0, r6, #0\n" + "._320:\n" + " add sp, sp, #0x10\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._324:\n" + " .align 2, 0\n" + "._323:\n" + " .word gPlayerParty\n" + " .word _nakamuraStatic\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160714() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add sp, sp, #0xfffffff0\n" + " add r6, r0, #0\n" + " mov r9, r1\n" + " mov r7, #0x0\n" + " mov r0, #0x0\n" + " mov r8, r0\n" + " mov r2, #0x0\n" + " mov r5, #0x0\n" + "._329:\n" + " add r4, r5, #1\n" + " lsl r1, r4, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r0, r9\n" + " str r2, [sp, #0xc]\n" + " bl sub_810CA9C\n" + " add r1, r0, #0\n" + " lsl r0, r5, #0x1\n" + " add r0, r0, sp\n" + " strh r1, [r0]\n" + " ldr r2, [sp, #0xc]\n" + " cmp r5, #0x5\n" + " beq ._328 @cond_branch\n" + " lsl r0, r1, #0x10\n" + " asr r1, r0, #0x10\n" + " cmp r1, #0\n" + " ble ._326 @cond_branch\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._326:\n" + " cmp r1, #0\n" + " bge ._327 @cond_branch\n" + " mov r0, r8\n" + " add r0, r0, #0x1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + "._327:\n" + " cmp r1, #0\n" + " bne ._328 @cond_branch\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + "._328:\n" + " lsl r0, r4, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x5\n" + " bls ._329 @cond_branch\n" + " mov r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x31\n" + " bgt ._333 @cond_branch\n" + " mov r0, sp\n" + " ldrh r0, [r0, #0x2]\n" + " lsl r0, r0, #0x10\n" + " asr r0, r0, #0x10\n" + " cmp r0, #0x31\n" + " bgt ._333 @cond_branch\n" + " mov r0, sp\n" + " mov r4, #0x4\n" + " ldsh r0, [r0, r4]\n" + " cmp r0, #0x31\n" + " bgt ._333 @cond_branch\n" + " mov r0, sp\n" + " mov r1, #0x6\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x31\n" + " bgt ._333 @cond_branch\n" + " mov r0, sp\n" + " mov r4, #0x8\n" + " ldsh r0, [r0, r4]\n" + " cmp r0, #0x31\n" + " ble ._334 @cond_branch\n" + "._333:\n" + " ldr r1, ._336\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0xe\n" + " b ._400\n" + "._337:\n" + " .align 2, 0\n" + "._336:\n" + " .word ContestStatsText_GoldPokeBlock\n" + "._334:\n" + " cmp r7, #0x4\n" + " bne ._338 @cond_branch\n" + " ldr r1, ._340\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0xd\n" + " b ._400\n" + "._341:\n" + " .align 2, 0\n" + "._340:\n" + " .word ContestStatsText_WhitePokeBlock\n" + "._338:\n" + " mov r3, #0x0\n" + " mov r5, #0x0\n" + "._343:\n" + " lsl r0, r5, #0x1\n" + " add r0, r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x2\n" + " bne ._342 @cond_branch\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + "._342:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x4\n" + " bls ._343 @cond_branch\n" + " cmp r3, #0x3\n" + " beq ._345 @cond_branch\n" + " cmp r2, #0x5\n" + " beq ._345 @cond_branch\n" + " mov r4, r8\n" + " cmp r4, #0x4\n" + " bne ._346 @cond_branch\n" + "._345:\n" + " ldr r1, ._348\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0xc\n" + " b ._400\n" + "._349:\n" + " .align 2, 0\n" + "._348:\n" + " .word ContestStatsText_BlackPokeBlock\n" + "._346:\n" + " cmp r7, #0x3\n" + " bne ._350 @cond_branch\n" + " ldr r1, ._352\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0xb\n" + " b ._400\n" + "._353:\n" + " .align 2, 0\n" + "._352:\n" + " .word ContestStatsText_GrayPokeBlock\n" + "._350:\n" + " cmp r7, #0x2\n" + " beq ._354 @cond_branch\n" + " mov r0, r8\n" + " cmp r0, #0x2\n" + " bne ._377 @cond_branch\n" + "._354:\n" + " mov r3, #0x6\n" + " mov r2, #0x0\n" + " mov r5, #0x0\n" + "._359:\n" + " lsl r0, r5, #0x1\n" + " add r0, r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0\n" + " beq ._358 @cond_branch\n" + " cmp r3, #0x6\n" + " bne ._357 @cond_branch\n" + " add r3, r5, #0\n" + " b ._358\n" + "._357:\n" + " add r2, r5, #0\n" + "._358:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x4\n" + " bls ._359 @cond_branch\n" + " lsl r0, r3, #0x1\n" + " mov r4, sp\n" + " add r1, r4, r0\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, sp\n" + " mov r4, #0x0\n" + " ldsh r1, [r1, r4]\n" + " mov r4, #0x0\n" + " ldsh r0, [r0, r4]\n" + " cmp r1, r0\n" + " blt ._360 @cond_branch\n" + " add r2, r3, #0\n" + "._360:\n" + " cmp r2, #0\n" + " bne ._361 @cond_branch\n" + " ldr r1, ._363\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x6\n" + " b ._400\n" + "._364:\n" + " .align 2, 0\n" + "._363:\n" + " .word ContestStatsText_PurplePokeBlock\n" + "._361:\n" + " cmp r2, #0x1\n" + " bne ._365 @cond_branch\n" + " ldr r1, ._367\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x7\n" + " b ._400\n" + "._368:\n" + " .align 2, 0\n" + "._367:\n" + " .word ContestStatsText_IndigoPokeBlock\n" + "._365:\n" + " cmp r2, #0x2\n" + " bne ._369 @cond_branch\n" + " ldr r1, ._371\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x8\n" + " b ._400\n" + "._372:\n" + " .align 2, 0\n" + "._371:\n" + " .word ContestStatsText_BrownPokeBlock\n" + "._369:\n" + " cmp r2, #0x3\n" + " bne ._373 @cond_branch\n" + " ldr r1, ._375\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x9\n" + " b ._400\n" + "._376:\n" + " .align 2, 0\n" + "._375:\n" + " .word ContestStatsText_LiteBluePokeBlock\n" + "._373:\n" + " cmp r2, #0x4\n" + " bne ._377 @cond_branch\n" + " ldr r1, ._379\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0xa\n" + " b ._400\n" + "._380:\n" + " .align 2, 0\n" + "._379:\n" + " .word ContestStatsText_OlivePokeBlock\n" + "._377:\n" + " cmp r7, #0x1\n" + " beq ._381 @cond_branch\n" + " mov r0, r8\n" + " cmp r0, #0x1\n" + " bne ._399 @cond_branch\n" + "._381:\n" + " mov r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0\n" + " beq ._383 @cond_branch\n" + " ldr r1, ._385\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x1\n" + " b ._400\n" + "._386:\n" + " .align 2, 0\n" + "._385:\n" + " .word ContestStatsText_RedPokeBlock\n" + "._383:\n" + " mov r0, sp\n" + " ldrh r0, [r0, #0x2]\n" + " cmp r0, #0\n" + " beq ._387 @cond_branch\n" + " ldr r1, ._389\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x2\n" + " b ._400\n" + "._390:\n" + " .align 2, 0\n" + "._389:\n" + " .word ContestStatsText_BluePokeBlock\n" + "._387:\n" + " mov r0, sp\n" + " mov r4, #0x4\n" + " ldsh r0, [r0, r4]\n" + " cmp r0, #0\n" + " beq ._391 @cond_branch\n" + " ldr r1, ._393\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x3\n" + " b ._400\n" + "._394:\n" + " .align 2, 0\n" + "._393:\n" + " .word ContestStatsText_PinkPokeBlock\n" + "._391:\n" + " mov r0, sp\n" + " mov r1, #0x6\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0\n" + " beq ._395 @cond_branch\n" + " ldr r1, ._397\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x4\n" + " b ._400\n" + "._398:\n" + " .align 2, 0\n" + "._397:\n" + " .word ContestStatsText_GreenPokeBlock\n" + "._395:\n" + " mov r0, sp\n" + " mov r4, #0x8\n" + " ldsh r0, [r0, r4]\n" + " cmp r0, #0\n" + " beq ._399 @cond_branch\n" + " ldr r1, ._401\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x5\n" + " b ._400\n" + "._402:\n" + " .align 2, 0\n" + "._401:\n" + " .word ContestStatsText_YellowPokeBlock\n" + "._399:\n" + " ldr r1, ._403\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x0\n" + "._400:\n" + " add sp, sp, #0x10\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._404:\n" + " .align 2, 0\n" + "._403:\n" + " .word gOtherText_FiveQuestions\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_816097C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add r7, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r5, r1, #0x10\n" + " mov r6, #0x0\n" + " mov r1, #0x0\n" + "._405:\n" + " add r0, r7, r6\n" + " strb r1, [r0]\n" + " add r0, r6, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " cmp r6, #0x3\n" + " bls ._405 @cond_branch\n" + " mov r0, #0xff\n" + " strb r0, [r7, #0x4]\n" + " lsl r0, r5, #0x10\n" + " asr r0, r0, #0x10\n" + " cmp r0, #0\n" + " bne ._406 @cond_branch\n" + " mov r0, #0xa1\n" + " strb r0, [r7, #0x3]\n" + " b ._414\n" + "._406:\n" + " cmp r0, #0\n" + " ble ._408 @cond_branch\n" + " mov r4, #0x64\n" + " mov r0, #0x0\n" + " mov r8, r0\n" + " mov r6, #0x0\n" + "._412:\n" + " lsl r5, r5, #0x10\n" + " asr r0, r5, #0x10\n" + " lsl r4, r4, #0x10\n" + " asr r1, r4, #0x10\n" + " bl __divsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " mov r1, r8\n" + " cmp r1, #0\n" + " bne ._410 @cond_branch\n" + " cmp r6, #0x2\n" + " beq ._410 @cond_branch\n" + " cmp r2, #0\n" + " beq ._411 @cond_branch\n" + "._410:\n" + " add r1, r6, r7\n" + " add r0, r2, #0\n" + " sub r0, r0, #0x5f\n" + " strb r0, [r1, #0x1]\n" + " mov r0, #0x1\n" + " mov r8, r0\n" + "._411:\n" + " asr r0, r5, #0x10\n" + " asr r4, r4, #0x10\n" + " add r1, r4, #0\n" + " bl __modsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " add r0, r4, #0\n" + " mov r1, #0xa\n" + " bl __divsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " add r0, r6, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " cmp r6, #0x2\n" + " bls ._412 @cond_branch\n" + " b ._414\n" + "._408:\n" + " cmp r0, #0\n" + " bge ._414 @cond_branch\n" + " neg r0, r0\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " mov r4, #0x64\n" + " mov r1, #0x0\n" + " mov r8, r1\n" + " mov r6, #0x0\n" + "._419:\n" + " lsl r5, r5, #0x10\n" + " asr r0, r5, #0x10\n" + " lsl r4, r4, #0x10\n" + " asr r1, r4, #0x10\n" + " bl __divsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " mov r1, r8\n" + " lsl r0, r1, #0x10\n" + " add r3, r0, #0\n" + " cmp r3, #0\n" + " bne ._416 @cond_branch\n" + " cmp r6, #0x2\n" + " beq ._416 @cond_branch\n" + " cmp r2, #0\n" + " beq ._417 @cond_branch\n" + "._416:\n" + " add r1, r6, r7\n" + " add r0, r2, #0\n" + " sub r0, r0, #0x5f\n" + " strb r0, [r1, #0x1]\n" + " cmp r3, #0\n" + " bne ._418 @cond_branch\n" + " mov r0, #0xae\n" + " strb r0, [r1]\n" + "._418:\n" + " mov r0, #0x1\n" + " mov r8, r0\n" + "._417:\n" + " asr r0, r5, #0x10\n" + " asr r4, r4, #0x10\n" + " add r1, r4, #0\n" + " bl __modsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " add r0, r4, #0\n" + " mov r1, #0xa\n" + " bl __divsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " add r0, r6, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " cmp r6, #0x2\n" + " bls ._419 @cond_branch\n" + "._414:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160A80() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r2, r0, #0\n" + " ldr r1, ._422\n" + " cmp r0, #0\n" + " bne ._420 @cond_branch\n" + " ldr r4, ._422 + 4\n" + " ldrb r1, [r1, #0x1]\n" + " add r0, r4, #0\n" + " bl debug_sub_816097C\n" + " add r0, r4, #0\n" + " mov r1, #0x8\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " b ._440\n" + "._423:\n" + " .align 2, 0\n" + "._422:\n" + " .word _nakamuraStatic+0x18\n" + " .word gStringVar1\n" + "._420:\n" + " cmp r0, #0x1\n" + " bne ._424 @cond_branch\n" + " ldr r4, ._426\n" + " ldrb r1, [r1, #0x2]\n" + " add r0, r4, #0\n" + " bl debug_sub_816097C\n" + " add r0, r4, #0\n" + " mov r1, #0x8\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " b ._440\n" + "._427:\n" + " .align 2, 0\n" + "._426:\n" + " .word gStringVar1\n" + "._424:\n" + " cmp r0, #0x2\n" + " bne ._428 @cond_branch\n" + " ldr r4, ._430\n" + " ldrb r1, [r1, #0x3]\n" + " add r0, r4, #0\n" + " bl debug_sub_816097C\n" + " add r0, r4, #0\n" + " mov r1, #0x8\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " b ._440\n" + "._431:\n" + " .align 2, 0\n" + "._430:\n" + " .word gStringVar1\n" + "._428:\n" + " cmp r0, #0x3\n" + " bne ._432 @cond_branch\n" + " ldr r4, ._434\n" + " ldrb r1, [r1, #0x4]\n" + " add r0, r4, #0\n" + " bl debug_sub_816097C\n" + " add r0, r4, #0\n" + " mov r1, #0x8\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " b ._440\n" + "._435:\n" + " .align 2, 0\n" + "._434:\n" + " .word gStringVar1\n" + "._432:\n" + " cmp r0, #0x4\n" + " bne ._436 @cond_branch\n" + " ldr r4, ._438\n" + " ldrb r1, [r1, #0x5]\n" + " add r0, r4, #0\n" + " bl debug_sub_816097C\n" + " add r0, r4, #0\n" + " mov r1, #0x8\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " b ._440\n" + "._439:\n" + " .align 2, 0\n" + "._438:\n" + " .word gStringVar1\n" + "._436:\n" + " cmp r2, #0x5\n" + " bne ._440 @cond_branch\n" + " ldr r4, ._441\n" + " ldrb r1, [r1, #0x6]\n" + " add r0, r4, #0\n" + " bl debug_sub_816097C\n" + " add r0, r4, #0\n" + " mov r1, #0x8\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + "._440:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._442:\n" + " .align 2, 0\n" + "._441:\n" + " .word gStringVar1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160B50() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r3, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r4, r1, #0\n" + " ldr r2, ._445\n" + " cmp r0, #0\n" + " bne ._443 @cond_branch\n" + " ldrb r0, [r2, #0x1]\n" + " add r0, r0, r1\n" + " strb r0, [r2, #0x1]\n" + " b ._455\n" + "._446:\n" + " .align 2, 0\n" + "._445:\n" + " .word _nakamuraStatic+0x18\n" + "._443:\n" + " cmp r0, #0x1\n" + " bne ._447 @cond_branch\n" + " ldrb r0, [r2, #0x2]\n" + " add r0, r0, r1\n" + " strb r0, [r2, #0x2]\n" + " b ._455\n" + "._447:\n" + " cmp r0, #0x2\n" + " bne ._449 @cond_branch\n" + " ldrb r0, [r2, #0x3]\n" + " add r0, r0, r1\n" + " strb r0, [r2, #0x3]\n" + " b ._455\n" + "._449:\n" + " cmp r0, #0x3\n" + " bne ._451 @cond_branch\n" + " ldrb r0, [r2, #0x4]\n" + " add r0, r0, r1\n" + " strb r0, [r2, #0x4]\n" + " b ._455\n" + "._451:\n" + " cmp r0, #0x4\n" + " bne ._453 @cond_branch\n" + " ldrb r0, [r2, #0x5]\n" + " add r0, r0, r1\n" + " strb r0, [r2, #0x5]\n" + " b ._455\n" + "._453:\n" + " cmp r3, #0x5\n" + " bne ._455 @cond_branch\n" + " ldrb r0, [r2, #0x6]\n" + " add r0, r0, r4\n" + " strb r0, [r2, #0x6]\n" + "._455:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160BB0() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r5, ._456\n" + " ldr r4, ._456 + 4\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " bl debug_sub_8160714\n" + " strb r0, [r4]\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x8\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._457:\n" + " .align 2, 0\n" + "._456:\n" + " .word gStringVar1\n" + " .word _nakamuraStatic+0x18\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160BE4() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xc\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " bl debug_sub_8160BB0\n" + " ldr r0, ._459\n" + " mov r1, #0x2\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r0, ._459 + 4\n" + " mov r1, #0x2\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldr r0, ._459 + 8\n" + " mov r1, #0x2\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r0, ._459 + 12\n" + " mov r1, #0x2\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " ldr r0, ._459 + 16\n" + " mov r1, #0x2\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " ldr r0, ._459 + 20\n" + " mov r1, #0x2\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " mov r4, #0x0\n" + "._458:\n" + " add r0, r4, #0\n" + " bl debug_sub_8160A80\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x5\n" + " bls ._458 @cond_branch\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xb\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._460:\n" + " .align 2, 0\n" + "._459:\n" + " .word gContestStatsText_Spicy\n" + " .word gContestStatsText_Dry\n" + " .word gContestStatsText_Sweet\n" + " .word gContestStatsText_Bitter\n" + " .word gContestStatsText_Sour\n" + " .word gContestStatsText_Tasty\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160C7C() +{ + asm( + " push {r4, lr}\n" + " ldr r2, ._469\n" + " mov r1, #0x0\n" + " ldrb r0, [r2]\n" + " cmp r0, #0xc\n" + " bne ._467 @cond_branch\n" + " ldrb r0, [r2, #0x1]\n" + " cmp r0, #0x2\n" + " bne ._462 @cond_branch\n" + " mov r1, #0x1\n" + "._462:\n" + " ldrb r0, [r2, #0x3]\n" + " cmp r0, #0x2\n" + " bne ._463 @cond_branch\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + "._463:\n" + " ldrb r0, [r2, #0x4]\n" + " cmp r0, #0x2\n" + " bne ._464 @cond_branch\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + "._464:\n" + " ldrb r0, [r2, #0x2]\n" + " cmp r0, #0x2\n" + " bne ._465 @cond_branch\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + "._465:\n" + " ldrb r0, [r2, #0x5]\n" + " cmp r0, #0x2\n" + " bne ._466 @cond_branch\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + "._466:\n" + " cmp r1, #0x3\n" + " beq ._467 @cond_branch\n" + " mov r0, #0x2\n" + " strb r0, [r2, #0x1]\n" + " strb r0, [r2, #0x3]\n" + " strb r0, [r2, #0x4]\n" + "._467:\n" + " add r0, r2, #0\n" + " bl sub_810CA34\n" + " bl debug_sub_8160BB0\n" + " mov r4, #0x0\n" + "._468:\n" + " add r0, r4, #0\n" + " bl debug_sub_8160A80\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x5\n" + " bls ._468 @cond_branch\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._470:\n" + " .align 2, 0\n" + "._469:\n" + " .word _nakamuraStatic+0x18\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160CF4() +{ + asm( + " push {lr}\n" + " ldr r2, ._473\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._471 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " b ._472\n" + "._474:\n" + " .align 2, 0\n" + "._473:\n" + " .word gMain\n" + "._471:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._475 @cond_branch\n" + " mov r0, #0x1\n" + "._472:\n" + " bl MoveMenuCursor\n" + " mov r0, #0x0\n" + " b ._484\n" + "._475:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._477 @cond_branch\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " neg r1, r1\n" + " b ._478\n" + "._477:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._479 @cond_branch\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + "._478:\n" + " bl debug_sub_8160B50\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8160A80\n" + " bl debug_sub_8160BB0\n" + " mov r0, #0x0\n" + " b ._484\n" + "._479:\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._481 @cond_branch\n" + " bl debug_sub_8160C7C\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x0\n" + " b ._484\n" + "._481:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._483 @cond_branch\n" + " mov r0, #0x0\n" + " b ._484\n" + "._483:\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._484:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_8160D98() +{ + asm( + " push {lr}\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " bl debug_sub_8160BE4\n" + " ldr r1, ._485\n" + " ldr r0, ._485 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._486:\n" + " .align 2, 0\n" + "._485:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8160CF4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160DC0() +{ + asm( + " push {lr}\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x16\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._487\n" + " mov r1, #0xb\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 4\n" + " mov r1, #0x2\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 8\n" + " mov r1, #0x2\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 12\n" + " mov r1, #0x2\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 16\n" + " mov r1, #0x2\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 20\n" + " mov r1, #0x2\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 24\n" + " mov r1, #0x2\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 28\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 32\n" + " mov r1, #0x2\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " pop {r0}\n" + " bx r0\n" + "._488:\n" + " .align 2, 0\n" + "._487:\n" + " .word gOtherText_Slash\n" + " .word Str_843E5F2\n" + " .word Str_843E5FB\n" + " .word Str_843E606\n" + " .word Str_843E611\n" + " .word Str_843E61C\n" + " .word Str_843E627\n" + " .word Str_843E637\n" + " .word Str_843E632\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160E50() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0xa\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r5, ._489\n" + " add r0, r6, #0\n" + " mov r1, #0x2\n" + " add r2, r5, #0\n" + " bl GetMonData\n" + " add r0, r5, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r0, #0xc\n" + " mov r1, #0x1\n" + " mov r2, #0x15\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r6, #0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " mov r1, #0xb\n" + " mul r0, r0, r1\n" + " ldr r1, ._489 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xc\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x1a\n" + " bl GetMonData\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0x3\n" + " mov r2, #0x11\n" + " mov r3, #0x4\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x1b\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r4, r4, r1\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0x5\n" + " mov r2, #0x11\n" + " mov r3, #0x6\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x1c\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r4, r4, r1\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0x7\n" + " mov r2, #0x11\n" + " mov r3, #0x8\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x1d\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r4, r4, r1\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0x9\n" + " mov r2, #0x11\n" + " mov r3, #0xa\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x1e\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r4, r4, r1\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0xb\n" + " mov r2, #0x11\n" + " mov r3, #0xc\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x1f\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r4, r4, r1\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0xd\n" + " mov r2, #0x11\n" + " mov r3, #0xe\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0xf\n" + " mov r2, #0x11\n" + " mov r3, #0x10\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x20\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0x11\n" + " mov r2, #0x11\n" + " mov r3, #0x12\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._490:\n" + " .align 2, 0\n" + "._489:\n" + " .word gStringVar1\n" + " .word gSpeciesNames\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8161028() +{ + asm( + " push {r4, r5, r6, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._491 @cond_branch\n" + " ldr r0, ._496\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._492 @cond_branch\n" + " mov r5, #0x5\n" + "._494:\n" + " lsl r0, r5, #0x10\n" + " asr r4, r0, #0x10\n" + " mov r0, #0x64\n" + " mul r0, r0, r4\n" + " ldr r1, ._496 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " bne ._493 @cond_branch\n" + " sub r0, r4, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " cmp r0, #0\n" + " bge ._494 @cond_branch\n" + "._492:\n" + " ldr r1, ._496\n" + " ldrb r0, [r1]\n" + " add r0, r0, r6\n" + " strb r0, [r1]\n" + " b ._506\n" + "._497:\n" + " .align 2, 0\n" + "._496:\n" + " .word _nakamuraData+0x5\n" + " .word gPlayerParty\n" + "._491:\n" + " cmp r1, #0x1\n" + " bne ._506 @cond_branch\n" + " ldr r4, ._501\n" + " ldrb r0, [r4]\n" + " add r0, r0, r6\n" + " strb r0, [r4]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x6\n" + " bne ._499 @cond_branch\n" + " mov r0, #0x0\n" + " b ._500\n" + "._502:\n" + " .align 2, 0\n" + "._501:\n" + " .word _nakamuraData+0x5\n" + "._493:\n" + " ldr r0, ._504\n" + " strb r5, [r0]\n" + " b ._506\n" + "._505:\n" + " .align 2, 0\n" + "._504:\n" + " .word _nakamuraData+0x5\n" + "._499:\n" + " ldrb r1, [r4]\n" + " mov r0, #0x64\n" + " mul r0, r0, r1\n" + " ldr r1, ._507\n" + " add r0, r0, r1\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " bne ._506 @cond_branch\n" + "._500:\n" + " strb r0, [r4]\n" + "._506:\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._508:\n" + " .align 2, 0\n" + "._507:\n" + " .word gPlayerParty\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_81610BC() +{ + asm( + " push {lr}\n" + " ldr r0, ._511\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._509 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " b ._510\n" + "._512:\n" + " .align 2, 0\n" + "._511:\n" + " .word gMain\n" + "._509:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._513 @cond_branch\n" + " mov r0, #0x1\n" + "._510:\n" + " bl debug_sub_8161028\n" + " ldr r0, ._515\n" + " ldrb r1, [r0]\n" + " mov r0, #0x64\n" + " mul r0, r0, r1\n" + " ldr r1, ._515 + 4\n" + " add r0, r0, r1\n" + " bl debug_sub_8160E50\n" + " mov r0, #0x0\n" + " b ._518\n" + "._516:\n" + " .align 2, 0\n" + "._515:\n" + " .word _nakamuraData+0x5\n" + " .word gPlayerParty\n" + "._513:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._517 @cond_branch\n" + " mov r0, #0x0\n" + " b ._518\n" + "._517:\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._518:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_EffortValues() +{ + asm( + " push {lr}\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " ldr r1, ._519\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " bl debug_sub_8160DC0\n" + " ldr r0, ._519 + 4\n" + " bl debug_sub_8160E50\n" + " ldr r1, ._519 + 8\n" + " ldr r0, ._519 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._520:\n" + " .align 2, 0\n" + "._519:\n" + " .word _nakamuraData+0x5\n" + " .word gPlayerParty\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_81610BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8161160() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " mov r7, #0x0\n" + " ldr r2, ._523\n" + " ldr r1, ._523 + 4\n" + " ldrh r0, [r2]\n" + " ldrh r3, [r1]\n" + " cmp r0, r3\n" + " bhi ._521 @cond_branch\n" + " add r6, r0, #0\n" + " ldrh r5, [r1]\n" + " b ._522\n" + "._524:\n" + " .align 2, 0\n" + "._523:\n" + " .word _nakamuraData+0x6\n" + " .word _nakamuraData+0x8\n" + "._521:\n" + " ldrh r6, [r1]\n" + " ldrh r5, [r2]\n" + "._522:\n" + " mov r4, #0x0\n" + " ldr r0, ._529\n" + " ldrh r0, [r0]\n" + " cmp r4, r0\n" + " bcs ._525 @cond_branch\n" + " ldr r0, ._529 + 4\n" + " mov r8, r0\n" + "._528:\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r2, r8\n" + " ldrh r1, [r2]\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, r6\n" + " bcc ._527 @cond_branch\n" + " cmp r0, r5\n" + " bhi ._527 @cond_branch\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r7, r0, #0x10\n" + "._527:\n" + " add r4, r4, #0x1\n" + " ldr r0, ._529\n" + " ldrh r0, [r0]\n" + " cmp r4, r0\n" + " bcc ._528 @cond_branch\n" + "._525:\n" + " add r0, r7, #0\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._530:\n" + " .align 2, 0\n" + "._529:\n" + " .word _nakamuraData+0xa\n" + " .word _nakamuraData+0xc\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_81611D8() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xf\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._531\n" + " mov r1, #0x2\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._531 + 4\n" + " mov r1, #0x2\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r0, ._531 + 8\n" + " mov r1, #0x2\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldr r0, ._531 + 12\n" + " mov r1, #0x2\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r0, ._531 + 16\n" + " mov r1, #0x2\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " ldr r0, ._531 + 20\n" + " mov r1, #0xd\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " ldr r4, ._531 + 24\n" + " add r0, r4, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xe\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._532:\n" + " .align 2, 0\n" + "._531:\n" + " .word Str_843E642\n" + " .word Str_843E647\n" + " .word Str_843E65A\n" + " .word Str_843E64C\n" + " .word Str_843E651\n" + " .word Str_843E655\n" + " .word Str_843E658\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8161290() +{ + asm( + " push {r4, lr}\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " ldr r4, ._533\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x8\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._534:\n" + " .align 2, 0\n" + "._533:\n" + " .word gStringVar1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_81612B8() +{ + asm( + " push {r4, r5, lr}\n" + " add r4, r2, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " lsl r1, r1, #0x18\n" + " asr r1, r1, #0x18\n" + " ldrh r2, [r0]\n" + " add r1, r1, r2\n" + " strh r1, [r0]\n" + " ldr r5, ._535\n" + " ldrh r1, [r0]\n" + " add r0, r5, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r5, #0\n" + " mov r1, #0x8\n" + " add r2, r4, #0\n" + " bl MenuPrint\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._536:\n" + " .align 2, 0\n" + "._535:\n" + " .word gStringVar1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_81612EC() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r2, ._540\n" + " ldrh r1, [r2, #0x2c]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " mov r5, #0x1\n" + " cmp r0, #0\n" + " beq ._537 @cond_branch\n" + " mov r5, #0x64\n" + "._537:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._538 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " b ._539\n" + "._541:\n" + " .align 2, 0\n" + "._540:\n" + " .word gMain\n" + "._538:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._542 @cond_branch\n" + " mov r0, #0x1\n" + "._539:\n" + " bl MoveMenuCursor\n" + "._565:\n" + " mov r0, #0x0\n" + " b ._543\n" + "._542:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._544 @cond_branch\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " asr r4, r0, #0x18\n" + " cmp r4, #0\n" + " bne ._545 @cond_branch\n" + " ldr r0, ._550\n" + " neg r1, r5\n" + " mov r2, #0x1\n" + " bl debug_sub_81612B8\n" + "._545:\n" + " cmp r4, #0x1\n" + " bne ._546 @cond_branch\n" + " ldr r0, ._550 + 4\n" + " neg r1, r5\n" + " mov r2, #0x3\n" + " bl debug_sub_81612B8\n" + "._546:\n" + " cmp r4, #0x2\n" + " bne ._547 @cond_branch\n" + " ldr r0, ._550 + 8\n" + " neg r1, r5\n" + " mov r2, #0x5\n" + " bl debug_sub_81612B8\n" + "._547:\n" + " cmp r4, #0x3\n" + " bne ._565 @cond_branch\n" + " ldr r0, ._550 + 12\n" + " neg r1, r5\n" + " mov r2, #0x7\n" + " bl debug_sub_81612B8\n" + " b ._565\n" + "._551:\n" + " .align 2, 0\n" + "._550:\n" + " .word _nakamuraData+0x6\n" + " .word _nakamuraData+0x8\n" + " .word _nakamuraData+0xc\n" + " .word _nakamuraData+0xa\n" + "._544:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._552 @cond_branch\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " asr r4, r0, #0x18\n" + " cmp r4, #0\n" + " bne ._553 @cond_branch\n" + " ldr r0, ._558\n" + " add r1, r5, #0\n" + " mov r2, #0x1\n" + " bl debug_sub_81612B8\n" + "._553:\n" + " cmp r4, #0x1\n" + " bne ._554 @cond_branch\n" + " ldr r0, ._558 + 4\n" + " add r1, r5, #0\n" + " mov r2, #0x3\n" + " bl debug_sub_81612B8\n" + "._554:\n" + " cmp r4, #0x2\n" + " bne ._555 @cond_branch\n" + " ldr r0, ._558 + 8\n" + " add r1, r5, #0\n" + " mov r2, #0x5\n" + " bl debug_sub_81612B8\n" + "._555:\n" + " cmp r4, #0x3\n" + " bne ._565 @cond_branch\n" + " ldr r0, ._558 + 12\n" + " add r1, r5, #0\n" + " mov r2, #0x7\n" + " bl debug_sub_81612B8\n" + " b ._565\n" + "._559:\n" + " .align 2, 0\n" + "._558:\n" + " .word _nakamuraData+0x6\n" + " .word _nakamuraData+0x8\n" + " .word _nakamuraData+0xc\n" + " .word _nakamuraData+0xa\n" + "._552:\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._560 @cond_branch\n" + " ldr r0, ._563\n" + " ldrh r0, [r0]\n" + " cmp r0, #0\n" + " beq ._565 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " bl debug_sub_8161160\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl debug_sub_8161290\n" + " b ._565\n" + "._564:\n" + " .align 2, 0\n" + "._563:\n" + " .word _nakamuraData+0xc\n" + "._560:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._565 @cond_branch\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._543:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_RandomNumberTest() +{ + asm( + " push {lr}\n" + " ldr r0, ._566\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " ldr r0, ._566 + 4\n" + " strh r1, [r0]\n" + " ldr r0, ._566 + 8\n" + " strh r1, [r0]\n" + " ldr r0, ._566 + 12\n" + " strh r1, [r0]\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " bl debug_sub_81611D8\n" + " ldr r1, ._566 + 16\n" + " ldr r0, ._566 + 20\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._567:\n" + " .align 2, 0\n" + "._566:\n" + " .word _nakamuraData+0x6\n" + " .word _nakamuraData+0x8\n" + " .word _nakamuraData+0xc\n" + " .word _nakamuraData+0xa\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_81612EC+1\n" + "\n" + ); +} + +#endif // DEBUG diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c new file mode 100644 index 000000000..b7e62481b --- /dev/null +++ b/src/debug/nohara_debug_menu.c @@ -0,0 +1,2316 @@ +#ifdef DEBUG +#include "global.h" + +#define BSS_DATA __attribute__((section(".bss"))) + +BSS_DATA u8 gDebug_03000724[4] = { 0 }; + +__attribute__((naked)) +void InitNoharaDebugMenu() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x13\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._1\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x12\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._1 + 4\n" + " ldr r0, ._1 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._2:\n" + " .align 2, 0\n" + "._1:\n" + " .word gUnknown_Debug_083C4938\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808F414+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F414() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._3 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " beq ._4 @cond_branch\n" + " ldr r2, ._6\n" + " ldr r0, ._6 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + "._3:\n" + " mov r0, #0x0\n" + " b ._5\n" + "._7:\n" + " .align 2, 0\n" + "._6:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C4938\n" + "._4:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._5:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_TV() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " ldr r1, ._8\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xa\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._8 + 4\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\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, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._8 + 8\n" + " ldr r0, ._8 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._9:\n" + " .align 2, 0\n" + "._8:\n" + " .word gDebug_03000724+0x2\n" + " .word gUnknown_Debug_083C4B8C\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808F4AC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F4AC() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._10 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " beq ._11 @cond_branch\n" + " ldr r2, ._13\n" + " ldr r0, ._13 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + "._10:\n" + " mov r0, #0x0\n" + " b ._12\n" + "._14:\n" + " .align 2, 0\n" + "._13:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C4B8C\n" + "._11:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._12:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F4EC() +{ + asm( + " push {lr}\n" + " bl debug_sub_808F6BC\n" + " ldr r0, ._15\n" + " bl sub_8071F40\n" + " mov r0, #0x3\n" + " mov r1, #0x3\n" + " mov r2, #0x1\n" + " bl DisplayYesNoMenu\n" + " ldr r1, ._15 + 4\n" + " ldr r0, ._15 + 8\n" + " str r0, [r1]\n" + " pop {r0}\n" + " bx r0\n" + "._16:\n" + " .align 2, 0\n" + "._15:\n" + " .word gUnknown_Debug_083C4980\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808F648+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F518() +{ + asm( + " push {r4, lr}\n" + " mov r2, #0x0\n" + " ldr r4, ._20\n" + " ldr r3, ._20 + 4\n" + "._19:\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x2\n" + " add r1, r0, r4\n" + " add r0, r1, r3\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x15\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x13\n" + " bhi ._18 @cond_branch\n" + " ldr r0, ._20 + 8\n" + " add r1, r1, r0\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._18 @cond_branch\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + "._18:\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x17\n" + " bls ._19 @cond_branch\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._21:\n" + " .align 2, 0\n" + "._20:\n" + " .word gSaveBlock1\n" + " .word 0x2738\n" + " .word 0x2739\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F560() +{ + asm( + " push {r4, lr}\n" + " mov r1, #0x0\n" + " ldr r4, ._23\n" + " ldr r3, ._23 + 4\n" + " mov r2, #0x0\n" + "._22:\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r4\n" + " add r0, r0, r3\n" + " strb r2, [r0]\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " cmp r1, #0x17\n" + " bls ._22 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._24:\n" + " .align 2, 0\n" + "._23:\n" + " .word gSaveBlock1\n" + " .word 0x2739\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F594() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r2, #0x0\n" + " ldr r6, ._27\n" + " ldr r5, ._27 + 4\n" + " ldr r4, ._27 + 8\n" + " mov r3, #0x1\n" + "._26:\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x2\n" + " add r1, r0, r6\n" + " add r0, r1, r5\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._25 @cond_branch\n" + " add r0, r1, r4\n" + " strb r3, [r0]\n" + "._25:\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x17\n" + " bls ._26 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "._28:\n" + " .align 2, 0\n" + "._27:\n" + " .word gSaveBlock1\n" + " .word 0x2738\n" + " .word 0x2739\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F5D8() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " mov r4, #0x0\n" + " ldr r6, ._30\n" + " ldr r7, ._30 + 4\n" + " add r0, r7, #1\n" + " mov r8, r0\n" + "._29:\n" + " ldr r5, ._30 + 8\n" + " strh r4, [r5]\n" + " bl sub_810F424\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r6, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " lsl r0, r4, #0x1\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x2\n" + " add r1, r0, r7\n" + " ldrb r1, [r1]\n" + " add r0, r0, r8\n" + " ldrb r2, [r0]\n" + " add r0, r6, #0\n" + " bl MenuPrint\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0xb\n" + " bls ._29 @cond_branch\n" + " mov r0, #0x0\n" + " strh r0, [r5]\n" + " ldr r1, ._30 + 12\n" + " ldr r0, ._30 + 16\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._31:\n" + " .align 2, 0\n" + "._30:\n" + " .word gStringVar1\n" + " .word gUnknown_Debug_083C4BD4\n" + " .word gSpecialVar_0x8004\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090278+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F648() +{ + asm( + " push {lr}\n" + " ldr r0, ._35\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._32 @cond_branch\n" + " mov r0, #0xa\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xd\n" + " bl MenuZeroFillWindowRect\n" + " ldr r0, ._35 + 4\n" + " ldrb r1, [r0]\n" + " mov r2, #0x1\n" + " eor r1, r1, r2\n" + " strb r1, [r0]\n" + " cmp r1, #0\n" + " beq ._33 @cond_branch\n" + " bl debug_sub_808F7B4\n" + " b ._40\n" + "._36:\n" + " .align 2, 0\n" + "._35:\n" + " .word gMain\n" + " .word gDebug_03000724+0x2\n" + "._33:\n" + " bl debug_sub_808F6BC\n" + " b ._40\n" + "._32:\n" + " bl ProcessMenuInputNoWrap_\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._43 @cond_branch\n" + " cmp r1, r0\n" + " bgt ._39 @cond_branch\n" + " sub r0, r0, #0x1\n" + " cmp r1, r0\n" + " beq ._40 @cond_branch\n" + " b ._43\n" + "._39:\n" + " cmp r1, #0\n" + " beq ._42 @cond_branch\n" + " b ._43\n" + "._40:\n" + " mov r0, #0x0\n" + " b ._44\n" + "._42:\n" + " bl debug_sub_808F518\n" + "._43:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._44:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F6BC() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r4, #0x0\n" + " ldr r5, ._48\n" + " ldr r6, ._48 + 4\n" + "._45:\n" + " lsl r0, r4, #0x3\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldr r1, ._48 + 8\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xa0\n" + " lsl r0, r0, #0x14\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " bl MenuPrint\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x4\n" + " bls ._45 @cond_branch\n" + " mov r4, #0x5\n" + " ldr r5, ._48\n" + " ldr r6, ._48 + 4\n" + "._50:\n" + " lsl r0, r4, #0x3\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldr r1, ._48 + 8\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " cmp r4, #0xe\n" + " bhi ._46 @cond_branch\n" + " lsl r1, r4, #0x19\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " b ._47\n" + "._49:\n" + " .align 2, 0\n" + "._48:\n" + " .word gStringVar1\n" + " .word gSaveBlock1\n" + " .word 0x2738\n" + "._46:\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xec\n" + " lsl r0, r0, #0x18\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x6\n" + " bl MenuPrint\n" + "._47:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x17\n" + " bls ._50 @cond_branch\n" + " mov r4, #0x0\n" + " ldr r5, ._53\n" + "._55:\n" + " ldr r0, ._53 + 4\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r0\n" + " ldr r0, ._53 + 8\n" + " add r1, r1, r0\n" + " ldrb r1, [r1]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " cmp r4, #0x7\n" + " bhi ._51 @cond_branch\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xa0\n" + " lsl r0, r0, #0x14\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " b ._52\n" + "._54:\n" + " .align 2, 0\n" + "._53:\n" + " .word gStringVar1\n" + " .word gSaveBlock1\n" + " .word 0x2abc\n" + "._51:\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xfa\n" + " lsl r0, r0, #0x18\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0xc\n" + " bl MenuPrint\n" + "._52:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0xf\n" + " bls ._55 @cond_branch\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F7B4() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r4, #0x0\n" + " ldr r5, ._59\n" + " ldr r6, ._59 + 4\n" + "._56:\n" + " lsl r0, r4, #0x3\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldr r1, ._59 + 8\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xa0\n" + " lsl r0, r0, #0x14\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " bl MenuPrint\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x4\n" + " bls ._56 @cond_branch\n" + " mov r4, #0x5\n" + " ldr r5, ._59\n" + " ldr r6, ._59 + 4\n" + "._61:\n" + " lsl r0, r4, #0x3\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldr r1, ._59 + 8\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " cmp r4, #0xe\n" + " bhi ._57 @cond_branch\n" + " lsl r1, r4, #0x19\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " b ._58\n" + "._60:\n" + " .align 2, 0\n" + "._59:\n" + " .word gStringVar1\n" + " .word gSaveBlock1\n" + " .word 0x2739\n" + "._57:\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xec\n" + " lsl r0, r0, #0x18\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x6\n" + " bl MenuPrint\n" + "._58:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x17\n" + " bls ._61 @cond_branch\n" + " mov r4, #0x0\n" + " ldr r5, ._64\n" + "._66:\n" + " ldr r0, ._64 + 4\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r0\n" + " ldr r0, ._64 + 8\n" + " add r1, r1, r0\n" + " ldrb r1, [r1]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " cmp r4, #0x7\n" + " bhi ._62 @cond_branch\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xa0\n" + " lsl r0, r0, #0x14\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " b ._63\n" + "._65:\n" + " .align 2, 0\n" + "._64:\n" + " .word gStringVar1\n" + " .word gSaveBlock1\n" + " .word 0x2abd\n" + "._62:\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xfa\n" + " lsl r0, r0, #0x18\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0xc\n" + " bl MenuPrint\n" + "._63:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0xf\n" + " bls ._66 @cond_branch\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F8AC() +{ + asm( + " push {lr}\n" + " ldr r0, ._67\n" + " bl FlagSet\n" + " ldr r0, ._67 + 4\n" + " bl FlagSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._68:\n" + " .align 2, 0\n" + "._67:\n" + " .word 0x832\n" + " .word 0x818\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F8CC() +{ + asm( + " push {r4, lr}\n" + " ldr r1, ._69\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " ldr r0, ._69 + 4\n" + " bl sub_8071F40\n" + " mov r0, #0xd\n" + " mov r1, #0x6\n" + " mov r2, #0x1a\n" + " mov r3, #0x8\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r0, ._69 + 8\n" + " ldr r0, [r0]\n" + " mov r1, #0xe\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " mov r0, #0x16\n" + " mov r1, #0x1\n" + " mov r2, #0x18\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r4, ._69 + 12\n" + " add r0, r4, #0\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x17\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r1, ._69 + 16\n" + " ldr r0, ._69 + 20\n" + " str r0, [r1]\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._70:\n" + " .align 2, 0\n" + "._69:\n" + " .word gDebug_03000724\n" + " .word gUnknown_Debug_083C49CA\n" + " .word gUnknown_Debug_083C4ABD+0xf\n" + " .word gStringVar1\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808F93C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F93C() +{ + asm( + " push {r4, lr}\n" + " mov r2, #0x0\n" + " ldr r0, ._83\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._71 @cond_branch\n" + " ldr r1, ._83 + 4\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x18\n" + " bne ._72 @cond_branch\n" + " strb r2, [r1]\n" + "._72:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._71:\n" + " ldr r0, ._83\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._73 @cond_branch\n" + " ldr r1, ._83 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._74 @cond_branch\n" + " mov r0, #0x18\n" + " strb r0, [r1]\n" + "._74:\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._73:\n" + " ldr r0, ._83\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._75 @cond_branch\n" + " ldr r1, ._83 + 8\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0xc\n" + " bne ._76 @cond_branch\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + "._76:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._75:\n" + " ldr r0, ._83\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._77 @cond_branch\n" + " ldr r1, ._83 + 8\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._78 @cond_branch\n" + " mov r0, #0xc\n" + " strb r0, [r1]\n" + "._78:\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._77:\n" + " cmp r2, #0\n" + " beq ._79 @cond_branch\n" + " mov r0, #0xd\n" + " mov r1, #0x6\n" + " mov r2, #0x1a\n" + " mov r3, #0x8\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r1, ._83 + 12\n" + " ldr r0, ._83 + 8\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0xe\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " mov r0, #0x16\n" + " mov r1, #0x1\n" + " mov r2, #0x18\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r4, ._83 + 16\n" + " ldr r0, ._83 + 4\n" + " ldrb r1, [r0]\n" + " add r0, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x17\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + "._79:\n" + " ldr r4, ._83\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._80 @cond_branch\n" + " mov r0, #0x15\n" + " bl PlaySE\n" + " ldr r0, ._83 + 4\n" + " ldrb r0, [r0]\n" + " ldr r2, ._83 + 20\n" + " ldr r1, ._83 + 8\n" + " ldrb r1, [r1]\n" + " add r1, r1, r2\n" + " ldrb r1, [r1]\n" + " bl debug_sub_808FA88\n" + "._80:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._81 @cond_branch\n" + " mov r0, #0x0\n" + " b ._82\n" + "._84:\n" + " .align 2, 0\n" + "._83:\n" + " .word gMain\n" + " .word gDebug_03000724+0x1\n" + " .word gDebug_03000724\n" + " .word gUnknown_Debug_083C4ABD+0xf\n" + " .word gStringVar1\n" + " .word gUnknown_Debug_083C4ABD\n" + "._81:\n" + " ldr r0, ._85\n" + " bl sub_80BF588\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._82:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._86:\n" + " .align 2, 0\n" + "._85:\n" + " .word gSaveBlock1+0x2738\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808FA88() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add sp, sp, #0xffffffcc\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r7, r1, #0x18\n" + " bl GetLeadMonIndex\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r9, r0\n" + " ldr r3, ._92\n" + " lsl r4, r6, #0x3\n" + " add r2, r4, r6\n" + " lsl r2, r2, #0x2\n" + " add r0, r2, r3\n" + " ldr r5, ._92 + 4\n" + " add r1, r0, r5\n" + " strb r7, [r1]\n" + " ldr r1, ._92 + 8\n" + " add r0, r0, r1\n" + " mov r1, #0x1\n" + " strb r1, [r0]\n" + " mov r1, #0x0\n" + " ldr r0, ._92 + 12\n" + " add r5, r3, r0\n" + " mov r3, #0x1\n" + "._87:\n" + " add r0, r1, r2\n" + " add r0, r0, r5\n" + " strb r3, [r0]\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " cmp r1, #0x21\n" + " bls ._87 @cond_branch\n" + " add r0, r7, #0\n" + " bl sub_80BFB54\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r1, r0, #0\n" + " cmp r0, #0x3\n" + " beq ._88 @cond_branch\n" + " cmp r0, #0x3\n" + " bgt ._89 @cond_branch\n" + " cmp r0, #0x2\n" + " beq ._90 @cond_branch\n" + " b ._95\n" + "._93:\n" + " .align 2, 0\n" + "._92:\n" + " .word gSaveBlock1\n" + " .word 0x2738\n" + " .word 0x2739\n" + " .word 0x273a\n" + "._89:\n" + " cmp r1, #0x4\n" + " bne ._95 @cond_branch\n" + "._90:\n" + " add r0, r4, r6\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._96\n" + " add r0, r0, r1\n" + " bl sub_80BE160\n" + " b ._95\n" + "._97:\n" + " .align 2, 0\n" + "._96:\n" + " .word gSaveBlock1+0x2738\n" + "._88:\n" + " add r0, r4, r6\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._100\n" + " add r0, r0, r1\n" + " bl sub_80BE138\n" + "._95:\n" + " sub r0, r7, #1\n" + " cmp r0, #0x28\n" + " bls ._98 @cond_branch\n" + " b ._173\n" + "._98:\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._100 + 4\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._101:\n" + " .align 2, 0\n" + "._100:\n" + " .word gSaveBlock1+0x2738\n" + " .word ._102\n" + "._102:\n" + " .word ._104\n" + " .word ._104\n" + " .word ._105\n" + " .word ._173\n" + " .word ._107\n" + " .word ._108\n" + " .word ._109\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._123\n" + " .word ._124\n" + " .word ._125\n" + " .word ._126\n" + " .word ._127\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._143\n" + "._104:\n" + " add r0, r4, r6\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._145\n" + " add r4, r0, r1\n" + " mov r2, #0x1\n" + " strh r2, [r4, #0x2]\n" + " add r1, r1, #0x10\n" + " add r0, r0, r1\n" + " ldr r1, ._145 + 4\n" + " bl StringCopy\n" + " mov r0, #0x5\n" + " strb r0, [r4, #0x18]\n" + " b ._173\n" + "._146:\n" + " .align 2, 0\n" + "._145:\n" + " .word gSaveBlock1+0x2738\n" + " .word gSaveBlock2\n" + "._105:\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r6, ._148\n" + " add r1, r4, r6\n" + " mov r8, r1\n" + " mov r0, #0x1\n" + " strh r0, [r1, #0x2]\n" + " add r0, r6, #5\n" + " add r0, r4, r0\n" + " ldr r1, ._148 + 4\n" + " bl StringCopy\n" + " mov r0, #0x64\n" + " mov r5, r9\n" + " mul r5, r5, r0\n" + " ldr r0, ._148 + 8\n" + " add r5, r5, r0\n" + " add r6, r6, #0x10\n" + " add r4, r4, r6\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " add r2, r4, #0\n" + " bl GetMonData\n" + " mov r0, #0x5\n" + " mov r1, r8\n" + " strb r0, [r1, #0xd]\n" + " add r0, r5, #0\n" + " mov r1, #0x3\n" + " bl GetMonData\n" + " mov r5, r8\n" + " strb r0, [r5, #0xe]\n" + " b ._173\n" + "._149:\n" + " .align 2, 0\n" + "._148:\n" + " .word gSaveBlock1+0x2738\n" + " .word gSaveBlock2\n" + " .word gPlayerParty\n" + "._107:\n" + " mov r0, #0x64\n" + " mov r1, r9\n" + " mul r1, r1, r0\n" + " mov r8, r1\n" + " ldr r0, ._151\n" + " add r8, r8, r0\n" + " mov r0, r8\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r5, ._151 + 4\n" + " add r6, r4, r5\n" + " strh r0, [r6, #0x2]\n" + " mov r0, #0x1\n" + " strh r0, [r6, #0x1c]\n" + " add r0, r5, #0\n" + " add r0, r0, #0xf\n" + " add r0, r4, r0\n" + " ldr r1, ._151 + 8\n" + " bl StringCopy\n" + " add r5, r5, #0x4\n" + " add r4, r4, r5\n" + " mov r0, r8\n" + " mov r1, #0x2\n" + " add r2, r4, #0\n" + " bl GetMonData\n" + " mov r0, #0x5\n" + " strb r0, [r6, #0x1e]\n" + " mov r0, r8\n" + " mov r1, #0x3\n" + " bl GetMonData\n" + " strb r0, [r6, #0x1f]\n" + " b ._173\n" + "._152:\n" + " .align 2, 0\n" + "._151:\n" + " .word gPlayerParty\n" + " .word gSaveBlock1+0x2738\n" + " .word gSaveBlock2\n" + "._108:\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r6, ._154\n" + " add r5, r4, r6\n" + " mov r8, r5\n" + " mov r0, #0x1\n" + " strh r0, [r5, #0x2]\n" + " add r0, r6, #0\n" + " add r0, r0, #0x16\n" + " add r0, r4, r0\n" + " ldr r1, ._154 + 4\n" + " bl StringCopy\n" + " mov r0, #0x64\n" + " mov r5, r9\n" + " mul r5, r5, r0\n" + " ldr r0, ._154 + 8\n" + " add r5, r5, r0\n" + " add r6, r6, #0x8\n" + " add r4, r4, r6\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " add r2, r4, #0\n" + " bl GetMonData\n" + " mov r0, #0x5\n" + " mov r1, r8\n" + " strb r0, [r1, #0x1e]\n" + " add r0, r5, #0\n" + " mov r1, #0x3\n" + " bl GetMonData\n" + " mov r5, r8\n" + " strb r0, [r5, #0x1f]\n" + " b ._173\n" + "._155:\n" + " .align 2, 0\n" + "._154:\n" + " .word gSaveBlock1+0x2738\n" + " .word gSaveBlock2\n" + " .word gPlayerParty\n" + "._109:\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r5, ._157\n" + " add r6, r4, r5\n" + " mov r0, #0x1\n" + " strh r0, [r6, #0xa]\n" + " strh r0, [r6, #0x14]\n" + " add r0, r5, #2\n" + " add r0, r4, r0\n" + " ldr r1, ._157 + 4\n" + " mov r8, r1\n" + " bl StringCopy\n" + " add r5, r5, #0xc\n" + " add r4, r4, r5\n" + " add r0, r4, #0\n" + " mov r1, r8\n" + " bl StringCopy\n" + " mov r0, #0x5\n" + " strb r0, [r6, #0x1d]\n" + " b ._173\n" + "._158:\n" + " .align 2, 0\n" + "._157:\n" + " .word gSaveBlock1+0x2738\n" + " .word gSaveBlock2\n" + "._143:\n" + " add r0, r4, r6\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._160\n" + " add r0, r0, r1\n" + " mov r1, #0x1\n" + " strh r1, [r0, #0xc]\n" + " strh r1, [r0, #0x16]\n" + " b ._173\n" + "._161:\n" + " .align 2, 0\n" + "._160:\n" + " .word gSaveBlock1+0x2738\n" + "._123:\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r0, ._163\n" + " add r4, r4, r0\n" + " ldr r1, ._163 + 4\n" + " mov r0, sp\n" + " mov r2, #0x8\n" + " bl memcpy\n" + " add r5, sp, #0x8\n" + " ldr r1, ._163 + 8\n" + " add r0, r5, #0\n" + " mov r2, #0xb\n" + " bl memcpy\n" + " mov r0, #0xff\n" + " strb r0, [r4, #0x12]\n" + " add r0, r4, #0\n" + " add r0, r0, #0x13\n" + " mov r1, sp\n" + " bl StringCopy\n" + " add r0, r4, #4\n" + " add r1, r5, #0\n" + " bl StringCopy\n" + " mov r0, #0xc\n" + " strb r0, [r4, #0xf]\n" + " mov r0, #0x28\n" + " strh r0, [r4, #0x10]\n" + " mov r0, #0x5\n" + " strb r0, [r4, #0x2]\n" + " strb r0, [r4, #0x3]\n" + " b ._173\n" + "._164:\n" + " .align 2, 0\n" + "._163:\n" + " .word gSaveBlock1+0x2738\n" + " .word gUnknown_Debug_083C4C64\n" + " .word gUnknown_Debug_083C4C6C\n" + "._124:\n" + " add r0, r4, r6\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._168\n" + " add r5, r0, r1\n" + " add r4, sp, #0x14\n" + " ldr r1, ._168 + 4\n" + " add r0, r4, #0\n" + " mov r2, #0x8\n" + " bl memcpy\n" + " add r1, r4, #0\n" + " mov r3, #0xfe\n" + " mov r2, #0x2\n" + " add r0, r5, #0\n" + " add r0, r0, #0x10\n" + "._165:\n" + " strh r3, [r0]\n" + " sub r0, r0, #0x2\n" + " sub r2, r2, #0x1\n" + " cmp r2, #0\n" + " bge ._165 @cond_branch\n" + " mov r0, #0x1\n" + " strb r0, [r5, #0x2]\n" + " mov r0, #0x28\n" + " strb r0, [r5, #0x12]\n" + " add r0, r5, #0\n" + " add r0, r0, #0x13\n" + " add r3, r5, #6\n" + " mov r6, #0x1e\n" + " add r2, r5, #0\n" + " add r2, r2, #0xa\n" + "._166:\n" + " strh r6, [r2]\n" + " sub r2, r2, #0x2\n" + " cmp r2, r3\n" + " bge ._166 @cond_branch\n" + " bl StringCopy\n" + " mov r0, #0x5\n" + " strb r0, [r5, #0x3]\n" + " b ._173\n" + "._169:\n" + " .align 2, 0\n" + "._168:\n" + " .word gSaveBlock1+0x2738\n" + " .word gUnknown_Debug_083C4C64\n" + "._125:\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r0, ._171\n" + " add r4, r4, r0\n" + " add r5, sp, #0x1c\n" + " ldr r1, ._171 + 4\n" + " add r0, r5, #0\n" + " mov r2, #0x8\n" + " bl memcpy\n" + " mov r0, #0x28\n" + " strh r0, [r4, #0xc]\n" + " strh r0, [r4, #0xe]\n" + " mov r0, #0x3\n" + " strb r0, [r4, #0x12]\n" + " mov r0, #0xff\n" + " strb r0, [r4, #0x10]\n" + " mov r0, #0x1\n" + " strb r0, [r4, #0x11]\n" + " add r0, r4, #0\n" + " add r0, r0, #0x13\n" + " add r1, r5, #0\n" + " bl StringCopy\n" + " mov r0, #0x5\n" + " strb r0, [r4, #0x2]\n" + " b ._173\n" + "._172:\n" + " .align 2, 0\n" + "._171:\n" + " .word gSaveBlock1+0x2738\n" + " .word gUnknown_Debug_083C4C64\n" + "._126:\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r0, ._174\n" + " add r4, r4, r0\n" + " add r5, sp, #0x24\n" + " ldr r1, ._174 + 4\n" + " add r0, r5, #0\n" + " mov r2, #0x8\n" + " bl memcpy\n" + " mov r0, #0xff\n" + " strb r0, [r4, #0x2]\n" + " mov r0, #0x0\n" + " strb r0, [r4, #0x3]\n" + " mov r0, #0x28\n" + " strh r0, [r4, #0x4]\n" + " add r0, r4, #0\n" + " add r0, r0, #0x13\n" + " add r1, r5, #0\n" + " bl StringCopy\n" + " mov r0, #0x5\n" + " strb r0, [r4, #0x6]\n" + " b ._173\n" + "._175:\n" + " .align 2, 0\n" + "._174:\n" + " .word gSaveBlock1+0x2738\n" + " .word gUnknown_Debug_083C4C64\n" + "._127:\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r0, ._176\n" + " add r4, r4, r0\n" + " add r5, sp, #0x2c\n" + " ldr r1, ._176 + 4\n" + " add r0, r5, #0\n" + " mov r2, #0x8\n" + " bl memcpy\n" + " ldr r0, ._176 + 8\n" + " strh r0, [r4, #0x2]\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " strh r0, [r4, #0x6]\n" + " mov r0, #0x28\n" + " strh r0, [r4, #0x4]\n" + " strh r0, [r4, #0x8]\n" + " mov r0, #0x3\n" + " strb r0, [r4, #0xa]\n" + " add r0, r4, #0\n" + " add r0, r0, #0x13\n" + " add r1, r5, #0\n" + " bl StringCopy\n" + " mov r0, #0x5\n" + " strb r0, [r4, #0xb]\n" + "._173:\n" + " add sp, sp, #0x34\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._177:\n" + " .align 2, 0\n" + "._176:\n" + " .word gSaveBlock1+0x2738\n" + " .word gUnknown_Debug_083C4C64\n" + " .word 0xffff\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808FEBC() +{ + asm( + " push {lr}\n" + " bl ClearTVShowData\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808FECC() +{ + asm( + " push {r4, lr}\n" + " ldr r1, ._178\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " ldr r0, ._178 + 4\n" + " bl sub_8071F40\n" + " mov r0, #0xd\n" + " mov r1, #0x6\n" + " mov r2, #0x17\n" + " mov r3, #0x8\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r0, ._178 + 8\n" + " ldr r0, [r0]\n" + " mov r1, #0xe\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " mov r0, #0x16\n" + " mov r1, #0x1\n" + " mov r2, #0x18\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r4, ._178 + 12\n" + " add r0, r4, #0\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x17\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r1, ._178 + 16\n" + " ldr r0, ._178 + 20\n" + " str r0, [r1]\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._179:\n" + " .align 2, 0\n" + "._178:\n" + " .word gDebug_03000724\n" + " .word gUnknown_Debug_083C49CA\n" + " .word gUnknown_Debug_083C4B20+0x4\n" + " .word gStringVar1\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808FF3C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808FF3C() +{ + asm( + " push {r4, lr}\n" + " mov r2, #0x0\n" + " ldr r0, ._192\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._180 @cond_branch\n" + " ldr r1, ._192 + 4\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x10\n" + " bne ._181 @cond_branch\n" + " strb r2, [r1]\n" + "._181:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._180:\n" + " ldr r0, ._192\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._182 @cond_branch\n" + " ldr r1, ._192 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._183 @cond_branch\n" + " mov r0, #0x10\n" + " strb r0, [r1]\n" + "._183:\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._182:\n" + " ldr r0, ._192\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._184 @cond_branch\n" + " ldr r1, ._192 + 8\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x3\n" + " bne ._185 @cond_branch\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + "._185:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._184:\n" + " ldr r0, ._192\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._186 @cond_branch\n" + " ldr r1, ._192 + 8\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._187 @cond_branch\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + "._187:\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._186:\n" + " cmp r2, #0\n" + " beq ._188 @cond_branch\n" + " mov r0, #0xd\n" + " mov r1, #0x6\n" + " mov r2, #0x17\n" + " mov r3, #0x8\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r1, ._192 + 12\n" + " ldr r0, ._192 + 8\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0xe\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " mov r0, #0x16\n" + " mov r1, #0x1\n" + " mov r2, #0x18\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r4, ._192 + 16\n" + " ldr r0, ._192 + 4\n" + " ldrb r1, [r0]\n" + " add r0, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x17\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + "._188:\n" + " ldr r4, ._192\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._189 @cond_branch\n" + " mov r0, #0x15\n" + " bl PlaySE\n" + " ldr r0, ._192 + 4\n" + " ldrb r0, [r0]\n" + " ldr r2, ._192 + 20\n" + " ldr r1, ._192 + 8\n" + " ldrb r1, [r1]\n" + " add r1, r1, r2\n" + " ldrb r1, [r1]\n" + " bl debug_sub_8090080\n" + "._189:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._190 @cond_branch\n" + " mov r0, #0x0\n" + " b ._191\n" + "._193:\n" + " .align 2, 0\n" + "._192:\n" + " .word gMain\n" + " .word gDebug_03000724+0x1\n" + " .word gDebug_03000724\n" + " .word gUnknown_Debug_083C4B20+0x4\n" + " .word gStringVar1\n" + " .word gUnknown_Debug_083C4B20\n" + "._190:\n" + " bl sub_80BEC40\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._191:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090080() +{ + asm( + " lsl r0, r0, #0x18\n" + " ldr r2, ._194\n" + " lsr r0, r0, #0x16\n" + " add r0, r0, r2\n" + " ldr r3, ._194 + 4\n" + " add r2, r0, r3\n" + " strb r1, [r2]\n" + " ldr r1, ._194 + 8\n" + " add r2, r0, r1\n" + " mov r1, #0x1\n" + " strb r1, [r2]\n" + " add r3, r3, #0x2\n" + " add r0, r0, r3\n" + " mov r1, #0x4\n" + " strh r1, [r0]\n" + " bx lr\n" + "._195:\n" + " .align 2, 0\n" + "._194:\n" + " .word gSaveBlock1\n" + " .word 0x2abc\n" + " .word 0x2abd\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80900AC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " mov r7, #0x0\n" + " mov r5, #0x0\n" + " ldr r0, ._202\n" + " mov r8, r0\n" + "._198:\n" + " lsl r0, r5, #0x3\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x2\n" + " mov r1, r8\n" + " add r6, r0, r1\n" + " ldr r1, ._202 + 4\n" + " add r0, r6, r1\n" + " ldrb r4, [r0]\n" + " cmp r4, #0\n" + " bne ._196 @cond_branch\n" + " cmp r7, #0xc\n" + " bne ._197 @cond_branch\n" + " mov r7, #0x0\n" + "._197:\n" + " ldr r0, ._202 + 8\n" + " add r0, r7, r0\n" + " ldrb r1, [r0]\n" + " add r0, r5, #0\n" + " bl debug_sub_808FA88\n" + " ldr r1, ._202 + 12\n" + " add r0, r6, r1\n" + " strb r4, [r0]\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._196:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x17\n" + " bls ._198 @cond_branch\n" + " mov r7, #0x0\n" + " mov r5, #0x0\n" + "._201:\n" + " ldr r0, ._202\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r0\n" + " ldr r0, ._202 + 16\n" + " add r1, r1, r0\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._199 @cond_branch\n" + " cmp r7, #0x3\n" + " bne ._200 @cond_branch\n" + " mov r7, #0x0\n" + "._200:\n" + " ldr r0, ._202 + 20\n" + " add r0, r7, r0\n" + " ldrb r1, [r0]\n" + " add r0, r5, #0\n" + " bl debug_sub_8090080\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._199:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0xf\n" + " bls ._201 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._203:\n" + " .align 2, 0\n" + "._202:\n" + " .word gSaveBlock1\n" + " .word 0x2738\n" + " .word gUnknown_Debug_083C4ABD\n" + " .word 0x2739\n" + " .word 0x2abc\n" + " .word gUnknown_Debug_083C4B20\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_Fan() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xb\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._204\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xa\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._204 + 4\n" + " ldr r0, ._204 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._205:\n" + " .align 2, 0\n" + "._204:\n" + " .word gUnknown_Debug_083C4D28\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_80901A4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80901A4() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._206 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " beq ._207 @cond_branch\n" + " ldr r2, ._209\n" + " ldr r0, ._209 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + "._206:\n" + " mov r0, #0x0\n" + " b ._208\n" + "._210:\n" + " .align 2, 0\n" + "._209:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C4D28\n" + "._207:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._208:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80901E4() +{ + asm( + " push {lr}\n" + " bl ResetFanClub\n" + " bl sub_810FAA0\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80901F8() +{ + asm( + " push {lr}\n" + " bl sub_810FB9C\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._211\n" + " ldr r1, ._211 + 4\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x8\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldr r0, [r0]\n" + " mov r1, #0xe\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r1, ._211 + 8\n" + " ldr r0, ._211 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._212:\n" + " .align 2, 0\n" + "._211:\n" + " .word gUnknown_Debug_083C4CA8\n" + " .word gUnknown_083F8408\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090278+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090238() +{ + asm( + " push {lr}\n" + " bl sub_810FC18\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._213\n" + " ldr r1, ._213 + 4\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x8\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldr r0, [r0]\n" + " mov r1, #0xe\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r1, ._213 + 8\n" + " ldr r0, ._213 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._214:\n" + " .align 2, 0\n" + "._213:\n" + " .word gUnknown_Debug_083C4CA8\n" + " .word gUnknown_083F8410\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090278+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090278() +{ + asm( + " push {lr}\n" + " ldr r0, ._217\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._215 @cond_branch\n" + " mov r0, #0x0\n" + " b ._216\n" + "._218:\n" + " .align 2, 0\n" + "._217:\n" + " .word gMain\n" + "._215:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._216:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_809029C() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._219\n" + " ldr r0, ._219 + 4\n" + " ldr r1, ._219 + 8\n" + " add r0, r0, r1\n" + " ldrh r0, [r0]\n" + " mov r1, #0x7f\n" + " and r1, r1, r0\n" + " add r0, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x10\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r1, ._219 + 12\n" + " ldr r0, ._219 + 16\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._220:\n" + " .align 2, 0\n" + "._219:\n" + " .word gStringVar1\n" + " .word gSaveBlock1\n" + " .word 0x13c2\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090278+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80902E4() +{ + asm( + " push {lr}\n" + " ldr r1, ._221\n" + " ldrh r0, [r1, #0xe]\n" + " add r0, r0, #0x6\n" + " strh r0, [r1, #0xe]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._222:\n" + " .align 2, 0\n" + "._221:\n" + " .word gSaveBlock2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80902FC() +{ + asm( + " push {lr}\n" + " mov r0, #0x0\n" + " bl sub_810FB10\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090310() +{ + asm( + " push {lr}\n" + " mov r0, #0x1\n" + " bl sub_810FB10\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090324() +{ + asm( + " push {lr}\n" + " mov r0, #0x2\n" + " bl sub_810FB10\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090338() +{ + asm( + " push {lr}\n" + " mov r0, #0x3\n" + " bl sub_810FB10\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_BattleVSDad() +{ + asm( + " push {lr}\n" + " ldr r0, ._223\n" + " mov r1, #0x6\n" + " bl VarSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._224:\n" + " .align 2, 0\n" + "._223:\n" + " .word 0x4085\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_DadAfterBattle() +{ + asm( + " push {lr}\n" + " ldr r0, ._225\n" + " mov r1, #0x7\n" + " bl VarSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._226:\n" + " .align 2, 0\n" + "._225:\n" + " .word 0x4085\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_SootopolisCity() +{ + asm( + " push {lr}\n" + " mov r0, #0x81\n" + " bl FlagSet\n" + " mov r0, #0x71\n" + " bl FlagSet\n" + " ldr r0, ._227\n" + " bl FlagReset\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._228:\n" + " .align 2, 0\n" + "._227:\n" + " .word 0x32f\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_Embark() +{ + asm( + " push {lr}\n" + " ldr r0, ._229\n" + " bl FlagReset\n" + " ldr r0, ._229 + 4\n" + " mov r1, #0x1\n" + " bl VarSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._230:\n" + " .align 2, 0\n" + "._229:\n" + " .word 0x2e3\n" + " .word 0x4090\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_Yes9999() +{ + asm( + " push {lr}\n" + " ldr r0, ._231\n" + " ldr r1, ._231 + 4\n" + " bl VarSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._232:\n" + " .align 2, 0\n" + "._231:\n" + " .word 0x4048\n" + " .word 0x270f\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_LegendsFlagOn() +{ + asm( + " push {lr}\n" + " mov r0, #0xe4\n" + " bl FlagSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_AddNumWinningStreaks() +{ + asm( + " push {lr}\n" + " ldr r0, ._235\n" + " ldr r1, ._235 + 4\n" + " add r2, r0, r1\n" + " ldrh r1, [r2]\n" + " cmp r1, #0x31\n" + " bhi ._233 @cond_branch\n" + " mov r0, #0x32\n" + " b ._244\n" + "._236:\n" + " .align 2, 0\n" + "._235:\n" + " .word gSaveBlock2\n" + " .word 0x572\n" + "._233:\n" + " cmp r1, #0x63\n" + " bhi ._237 @cond_branch\n" + " mov r0, #0x64\n" + " b ._244\n" + "._237:\n" + " ldr r0, ._241\n" + " cmp r1, r0\n" + " bhi ._239 @cond_branch\n" + " add r0, r0, #0x1\n" + " b ._244\n" + "._242:\n" + " .align 2, 0\n" + "._241:\n" + " .word 0x3e7\n" + "._239:\n" + " ldr r0, ._245\n" + " cmp r1, r0\n" + " bhi ._243 @cond_branch\n" + " ldr r0, ._245 + 4\n" + " b ._244\n" + "._246:\n" + " .align 2, 0\n" + "._245:\n" + " .word 0x1387\n" + " .word 0x2706\n" + "._243:\n" + " ldr r0, ._248\n" + " cmp r1, r0\n" + " bhi ._247 @cond_branch\n" + " add r0, r0, #0xa\n" + "._244:\n" + " strh r0, [r2]\n" + "._247:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._249:\n" + " .align 2, 0\n" + "._248:\n" + " .word 0x2705\n" + "\n" + ); +} + +#endif diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c new file mode 100644 index 000000000..4f9b588d8 --- /dev/null +++ b/src/debug/taya_debug_window.c @@ -0,0 +1,2122 @@ +#ifdef DEBUG +#include "global.h" + +EWRAM_DATA u8 unk_2030224[4] = { 0 }; + +__attribute__((naked)) +void TayaDebugMenu_Trend() +{ + 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, #0xffffffd8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1e\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r5, ._3\n" + " mov r7, #0x0\n" + " mov r0, #0x1\n" + " add r0, r0, sp\n" + " mov sl, r0\n" + " mov r9, sp\n" + " mov r0, #0x0\n" + " mov r8, r0\n" + " add r6, sp, #0x20\n" + "._2:\n" + " ldrb r1, [r5, #0x1]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " mov r1, #0xa1\n" + " cmp r0, #0\n" + " beq ._1 @cond_branch\n" + " mov r1, #0xa2\n" + "._1:\n" + " mov r0, r9\n" + " strb r1, [r0]\n" + " ldrh r1, [r5, #0x4]\n" + " add r0, r6, #0\n" + " bl sub_80EB3FC\n" + " mov r0, sl\n" + " add r1, r6, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x7\n" + " bl StringCopyPadded\n" + " add r4, r0, #0\n" + " ldrh r1, [r5, #0x6]\n" + " add r0, r6, #0\n" + " bl sub_80EB3FC\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x8\n" + " bl StringCopyPadded\n" + " add r4, r0, #0\n" + " ldrb r1, [r5]\n" + " lsl r1, r1, #0x19\n" + " lsr r1, r1, #0x19\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r4, r0, #0\n" + " mov r0, r8\n" + " strb r0, [r4]\n" + " add r4, r4, #0x1\n" + " ldrh r1, [r5]\n" + " lsl r1, r1, #0x12\n" + " lsr r1, r1, #0x19\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r4, r0, #0\n" + " mov r0, r8\n" + " strb r0, [r4]\n" + " add r4, r4, #0x1\n" + " ldrh r1, [r5, #0x2]\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " lsl r2, r7, #0x1\n" + " add r2, r2, #0x1\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r0, sp\n" + " mov r1, #0x1\n" + " bl MenuPrint\n" + " add r5, r5, #0x8\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r7, r0, #0x10\n" + " cmp r7, #0x4\n" + " bls ._2 @cond_branch\n" + " ldr r1, ._3 + 4\n" + " ldr r0, ._3 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x28\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 {r1}\n" + " bx r1\n" + "._4:\n" + " .align 2, 0\n" + "._3:\n" + " .word gSaveBlock1+0x2dd4\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090808+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090808() +{ + asm( + " push {lr}\n" + " ldr r0, ._7\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x3\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._5 @cond_branch\n" + " mov r0, #0x0\n" + " b ._6\n" + "._8:\n" + " .align 2, 0\n" + "._7:\n" + " .word gMain\n" + "._5:\n" + " bl MenuZeroFillScreen\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._6:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_TrendR() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r0, #0x0\n" + " ldr r7, ._11\n" + "._10:\n" + " mov r4, #0x0\n" + " lsl r5, r0, #0x3\n" + " add r6, r0, #1\n" + "._9:\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0x16\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl sub_80EB72C\n" + " lsl r1, r4, #0x1\n" + " add r1, r1, r5\n" + " add r1, r1, r7\n" + " strh r0, [r1]\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " cmp r4, #0x1\n" + " bls ._9 @cond_branch\n" + " lsl r0, r6, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0x4\n" + " bls ._10 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._12:\n" + " .align 2, 0\n" + "._11:\n" + " .word gSaveBlock1+0x2dd8\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090880() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._13 @cond_branch\n" + " mov r0, #0x0\n" + " b ._14\n" + "._13:\n" + " bl sub_80E60D8\n" + " mov r0, #0x1\n" + "._14:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_809089C() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._15 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._16 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._17\n" + "._16:\n" + " ldr r2, ._19\n" + " ldr r0, ._19 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " strh r0, [r2]\n" + " ldrh r0, [r2]\n" + " sub r0, r0, #0x5\n" + " cmp r0, #0x7\n" + " bhi ._27 @cond_branch\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._19 + 8\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._20:\n" + " .align 2, 0\n" + "._19:\n" + " .word gSpecialVar_0x8004\n" + " .word gUnknown_Debug_083C4EC0\n" + " .word ._21\n" + "._21:\n" + " .word ._29\n" + " .word ._27\n" + " .word ._29\n" + " .word ._29\n" + " .word ._27\n" + " .word ._27\n" + " .word ._29\n" + " .word ._29\n" + "._29:\n" + " ldr r0, ._30\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " ldr r0, ._30 + 4\n" + " strh r1, [r0]\n" + "._27:\n" + " mov r0, #0x1\n" + " mov r1, #0x0\n" + " bl fade_screen\n" + " ldr r1, ._30 + 8\n" + " ldr r0, ._30 + 12\n" + " str r0, [r1]\n" + "._15:\n" + " mov r0, #0x0\n" + "._17:\n" + " pop {r1}\n" + " bx r1\n" + "._31:\n" + " .align 2, 0\n" + "._30:\n" + " .word gSpecialVar_0x8005\n" + " .word gSpecialVar_0x8006\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090880+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_SimpleText() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xc\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._32\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xb\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._32 + 4\n" + " ldr r0, ._32 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._33:\n" + " .align 2, 0\n" + "._32:\n" + " .word gUnknown_Debug_083C4EC0\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_809089C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090984() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " bl ProcessMenuInput\n" + " lsl r2, r0, #0x18\n" + " asr r1, r2, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._34 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " beq ._46 @cond_branch\n" + " cmp r1, #0x4\n" + " bgt ._36 @cond_branch\n" + " lsr r0, r2, #0x18\n" + " bl debug_sub_810B32C\n" + " b ._46\n" + "._34:\n" + " mov r0, #0x0\n" + " b ._38\n" + "._36:\n" + " cmp r1, #0x5\n" + " bne ._39 @cond_branch\n" + " bl sub_80F7F30\n" + " b ._46\n" + "._39:\n" + " cmp r1, #0x6\n" + " bne ._41 @cond_branch\n" + " mov r4, #0x0\n" + " ldr r0, ._44\n" + " add r1, r0, #2\n" + " mov ip, r1\n" + " ldr r7, ._44 + 4\n" + " ldr r1, ._44 + 8\n" + " add r6, r0, r1\n" + " add r5, r0, #0\n" + " add r5, r5, #0xe\n" + "._42:\n" + " lsl r1, r4, #0x1\n" + " mov r0, ip\n" + " add r3, r1, r0\n" + " add r0, r1, r7\n" + " ldrh r2, [r0]\n" + " strh r2, [r3]\n" + " add r0, r1, r5\n" + " strh r2, [r0]\n" + " add r1, r6, r1\n" + " strh r2, [r1]\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " cmp r4, #0x2\n" + " bls ._42 @cond_branch\n" + " b ._46\n" + "._45:\n" + " .align 2, 0\n" + "._44:\n" + " .word gSaveBlock1+0x2d94\n" + " .word gUnknown_Debug_083C4F08\n" + " .word 0xfffffd94\n" + "._41:\n" + " cmp r1, #0x7\n" + " bne ._46 @cond_branch\n" + " mov r4, #0x0\n" + "._47:\n" + " lsl r0, r4, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl sub_80EB890\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " cmp r4, #0x20\n" + " bls ._47 @cond_branch\n" + "._46:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._38:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_OldMan() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xa\n" + " mov r3, #0x11\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._48\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x8\n" + " bl PrintMenuItems\n" + " bl GetCurrentMauvilleOldMan\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\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" + " ldr r1, ._48 + 4\n" + " ldr r0, ._48 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._49:\n" + " .align 2, 0\n" + "._48:\n" + " .word gUnknown_Debug_083C4F54\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090984+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_LanettesPC() +{ + asm( + " push {lr}\n" + " bl MenuZeroFillScreen\n" + " bl ShowPokemonStorageSystem\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_TownFlags() +{ + asm( + " push {lr}\n" + " ldr r0, ._50\n" + " bl FlagSet\n" + " mov r0, #0x81\n" + " lsl r0, r0, #0x4\n" + " bl FlagSet\n" + " ldr r0, ._50 + 4\n" + " bl FlagSet\n" + " ldr r0, ._50 + 8\n" + " bl FlagSet\n" + " ldr r0, ._50 + 12\n" + " bl FlagSet\n" + " ldr r0, ._50 + 16\n" + " bl FlagSet\n" + " ldr r0, ._50 + 20\n" + " bl FlagSet\n" + " ldr r0, ._50 + 24\n" + " bl FlagSet\n" + " ldr r0, ._50 + 28\n" + " bl FlagSet\n" + " ldr r0, ._50 + 32\n" + " bl FlagSet\n" + " ldr r0, ._50 + 36\n" + " bl FlagSet\n" + " ldr r0, ._50 + 40\n" + " bl FlagSet\n" + " ldr r0, ._50 + 44\n" + " bl FlagSet\n" + " ldr r0, ._50 + 48\n" + " bl FlagSet\n" + " ldr r0, ._50 + 52\n" + " bl FlagSet\n" + " ldr r0, ._50 + 56\n" + " bl FlagSet\n" + " ldr r0, ._50 + 60\n" + " bl FlagSet\n" + " ldr r0, ._50 + 64\n" + " bl FlagSet\n" + " ldr r0, ._50 + 68\n" + " bl FlagSet\n" + " ldr r0, ._50 + 72\n" + " bl FlagSet\n" + " ldr r0, ._50 + 76\n" + " bl FlagSet\n" + " ldr r0, ._50 + 80\n" + " bl FlagSet\n" + " ldr r0, ._50 + 84\n" + " bl FlagSet\n" + " ldr r0, ._50 + 88\n" + " bl FlagSet\n" + " ldr r0, ._50 + 92\n" + " bl FlagSet\n" + " ldr r0, ._50 + 96\n" + " bl FlagSet\n" + " ldr r0, ._50 + 100\n" + " bl FlagSet\n" + " ldr r0, ._50 + 104\n" + " bl FlagSet\n" + " ldr r0, ._50 + 108\n" + " bl FlagSet\n" + " ldr r0, ._50 + 112\n" + " bl FlagSet\n" + " ldr r0, ._50 + 116\n" + " bl FlagSet\n" + " ldr r0, ._50 + 120\n" + " bl FlagSet\n" + " mov r0, #0x84\n" + " lsl r0, r0, #0x4\n" + " bl FlagSet\n" + " ldr r0, ._50 + 124\n" + " bl FlagSet\n" + " ldr r0, ._50 + 128\n" + " bl FlagSet\n" + " ldr r0, ._50 + 132\n" + " bl FlagSet\n" + " ldr r0, ._50 + 136\n" + " bl FlagSet\n" + " ldr r0, ._50 + 140\n" + " bl FlagSet\n" + " ldr r0, ._50 + 144\n" + " bl FlagSet\n" + " ldr r0, ._50 + 148\n" + " bl FlagSet\n" + " ldr r0, ._50 + 152\n" + " bl FlagSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._51:\n" + " .align 2, 0\n" + "._50:\n" + " .word 0x80f\n" + " .word 0x811\n" + " .word 0x812\n" + " .word 0x813\n" + " .word 0x814\n" + " .word 0x815\n" + " .word 0x816\n" + " .word 0x817\n" + " .word 0x818\n" + " .word 0x819\n" + " .word 0x81a\n" + " .word 0x81b\n" + " .word 0x81c\n" + " .word 0x81d\n" + " .word 0x81e\n" + " .word 0x848\n" + " .word 0x849\n" + " .word 0x84a\n" + " .word 0x854\n" + " .word 0x855\n" + " .word 0x856\n" + " .word 0x857\n" + " .word 0x858\n" + " .word 0x859\n" + " .word 0x85a\n" + " .word 0x85b\n" + " .word 0x85c\n" + " .word 0x83c\n" + " .word 0x83d\n" + " .word 0x83e\n" + " .word 0x83f\n" + " .word 0x841\n" + " .word 0x842\n" + " .word 0x843\n" + " .word 0x844\n" + " .word 0x845\n" + " .word 0x846\n" + " .word 0x847\n" + " .word 0x83b\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_AwardARibbon() +{ + asm( + " push {lr}\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x10\n" + " mov r2, #0x0\n" + " bl BlendPalettes\n" + " ldr r0, ._52\n" + " bl SetMainCallback2\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._53:\n" + " .align 2, 0\n" + "._52:\n" + " .word debug_sub_80915BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090C44() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r4, ._54\n" + " sub r5, r4, #1\n" + " ldrh r1, [r5, #0x8]\n" + " add r0, r4, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0x0\n" + " mov r2, #0x5\n" + " bl StringFill\n" + " ldrb r0, [r5]\n" + " add r0, r0, r4\n" + " mov r1, #0x79\n" + " strb r1, [r0]\n" + " add r0, r4, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._55:\n" + " .align 2, 0\n" + "._54:\n" + " .word +0x2000001\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090C88() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " mov r8, r0\n" + " ldr r2, ._59\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " add r3, r2, #0\n" + " cmp r0, #0\n" + " beq ._57 @cond_branch\n" + " ldr r1, ._59 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._57 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._62\n" + "._60:\n" + " .align 2, 0\n" + "._59:\n" + " .word gMain\n" + " .word +0x2000000\n" + "._67:\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._62\n" + "._77:\n" + " strh r1, [r7, #0x8]\n" + " b ._62\n" + "._79:\n" + " ldr r0, ._64\n" + " ldrh r0, [r0, #0x8]\n" + " bl SetLotteryNumber16_Unused\n" + "._78:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._63\n" + "._65:\n" + " .align 2, 0\n" + "._64:\n" + " .word +0x2000000\n" + "._57:\n" + " ldrh r1, [r3, #0x2e]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._66 @cond_branch\n" + " ldr r1, ._81\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x3\n" + " bls ._67 @cond_branch\n" + "._66:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._68 @cond_branch\n" + " ldr r0, ._81\n" + " ldrh r1, [r0, #0x8]\n" + " str r1, [r0, #0xc]\n" + " ldr r1, ._81 + 4\n" + " strh r1, [r0, #0x10]\n" + " mov r4, #0x0\n" + " ldrb r1, [r0]\n" + " add r7, r0, #0\n" + " cmp r4, r1\n" + " bcs ._69 @cond_branch\n" + " add r5, r7, #0\n" + " add r6, r1, #0\n" + "._70:\n" + " ldrh r0, [r5, #0x10]\n" + " mov r1, #0xa\n" + " str r3, [sp]\n" + " bl __udivsi3\n" + " strh r0, [r5, #0x10]\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r3, [sp]\n" + " cmp r4, r6\n" + " bcc ._70 @cond_branch\n" + "._69:\n" + " ldrh r1, [r7, #0x10]\n" + " ldr r0, [r7, #0xc]\n" + " add r0, r0, r1\n" + " str r0, [r7, #0xc]\n" + " ldr r1, ._81 + 8\n" + " cmp r0, r1\n" + " ble ._71 @cond_branch\n" + " str r1, [r7, #0xc]\n" + "._71:\n" + " ldrh r0, [r7, #0x8]\n" + " ldr r1, [r7, #0xc]\n" + " cmp r0, r1\n" + " bne ._77 @cond_branch\n" + "._68:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._73 @cond_branch\n" + " ldr r0, ._81\n" + " ldrh r1, [r0, #0x8]\n" + " str r1, [r0, #0xc]\n" + " ldr r1, ._81 + 4\n" + " strh r1, [r0, #0x10]\n" + " mov r4, #0x0\n" + " ldrb r1, [r0]\n" + " add r7, r0, #0\n" + " cmp r4, r1\n" + " bcs ._74 @cond_branch\n" + " add r5, r7, #0\n" + " add r6, r1, #0\n" + "._75:\n" + " ldrh r0, [r5, #0x10]\n" + " mov r1, #0xa\n" + " str r3, [sp]\n" + " bl __udivsi3\n" + " strh r0, [r5, #0x10]\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r3, [sp]\n" + " cmp r4, r6\n" + " bcc ._75 @cond_branch\n" + "._74:\n" + " add r2, r7, #0\n" + " ldrh r1, [r2, #0x10]\n" + " ldr r0, [r2, #0xc]\n" + " sub r0, r0, r1\n" + " str r0, [r2, #0xc]\n" + " cmp r0, #0\n" + " bge ._76 @cond_branch\n" + " mov r0, #0x0\n" + " str r0, [r2, #0xc]\n" + "._76:\n" + " ldrh r0, [r2, #0x8]\n" + " ldr r1, [r2, #0xc]\n" + " cmp r0, r1\n" + " bne ._77 @cond_branch\n" + "._73:\n" + " ldrh r2, [r3, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._78 @cond_branch\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._79 @cond_branch\n" + " mov r0, #0x0\n" + " mov r8, r0\n" + "._62:\n" + " mov r0, r8\n" + " cmp r0, #0\n" + " beq ._80 @cond_branch\n" + " bl debug_sub_8090C44\n" + "._80:\n" + " mov r0, #0x0\n" + "._63:\n" + " add sp, sp, #0x4\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._82:\n" + " .align 2, 0\n" + "._81:\n" + " .word +0x2000000\n" + " .word 0x2710\n" + " .word 0xffff\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_PKMNLottery() +{ + asm( + " push {lr}\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x6\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " bl RetrieveLotteryNumber\n" + " ldr r2, ._83\n" + " ldr r0, ._83 + 4\n" + " ldrh r0, [r0]\n" + " mov r1, #0x0\n" + " strh r0, [r2, #0x8]\n" + " strb r1, [r2]\n" + " bl debug_sub_8090C44\n" + " ldr r1, ._83 + 8\n" + " ldr r0, ._83 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._84:\n" + " .align 2, 0\n" + "._83:\n" + " .word +0x2000000\n" + " .word gScriptResult\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090C88+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_Trainer() +{ + asm( + " push {r4, r5, lr}\n" + " mov r4, #0x0\n" + " ldr r5, ._86\n" + "._85:\n" + " lsl r0, r4, #0x4\n" + " add r0, r0, r5\n" + " ldrh r0, [r0]\n" + " bl trainer_flag_set\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " cmp r4, #0x37\n" + " bls ._85 @cond_branch\n" + " ldr r0, ._86 + 4\n" + " bl trainer_flag_set\n" + " mov r0, #0x85\n" + " lsl r0, r0, #0x1\n" + " bl trainer_flag_set\n" + " ldr r0, ._86 + 8\n" + " bl trainer_flag_set\n" + " mov r0, #0x86\n" + " lsl r0, r0, #0x1\n" + " bl trainer_flag_set\n" + " ldr r0, ._86 + 12\n" + " bl trainer_flag_set\n" + " mov r0, #0x87\n" + " lsl r0, r0, #0x1\n" + " bl trainer_flag_set\n" + " ldr r0, ._86 + 16\n" + " bl trainer_flag_set\n" + " mov r0, #0x88\n" + " lsl r0, r0, #0x1\n" + " bl trainer_flag_set\n" + " ldr r0, ._86 + 20\n" + " bl trainer_flag_set\n" + " mov r0, #0x83\n" + " lsl r0, r0, #0x1\n" + " bl trainer_flag_set\n" + " ldr r0, ._86 + 24\n" + " bl trainer_flag_set\n" + " mov r0, #0x84\n" + " lsl r0, r0, #0x1\n" + " bl trainer_flag_set\n" + " ldr r0, ._86 + 28\n" + " bl trainer_flag_set\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "._87:\n" + " .align 2, 0\n" + "._86:\n" + " .word gTrainerEyeTrainers\n" + " .word 0x109\n" + " .word 0x10b\n" + " .word 0x10d\n" + " .word 0x10f\n" + " .word 0x105\n" + " .word 0x107\n" + " .word 0x14f\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_PokenavD() +{ + 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, #0xffffffe4\n" + " bl MenuDisplayMessageBox\n" + " mov r0, #0x0\n" + " mov sl, r0\n" + " mov r6, #0x1\n" + " mov r7, #0xff\n" + " mov r1, #0x3\n" + " mov r9, r1\n" + "._93:\n" + " ldr r4, ._94\n" + " add r0, r4, #0\n" + " ldr r1, ._94 + 4\n" + " bl StringCopy\n" + " mov r5, sl\n" + " add r5, r5, #0x1\n" + " add r1, r5, r4\n" + " mov r0, #0xff\n" + " strb r0, [r1]\n" + " add r0, r4, #0\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " mov r8, r0\n" + " str r5, [sp, #0x14]\n" + " mov r1, sl\n" + " lsl r1, r1, #0x2\n" + " str r1, [sp, #0x18]\n" + "._91:\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " add r0, r0, #0x1\n" + " str r0, [sp, #0x10]\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " add r0, r0, #0x1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0xc1\n" + " lsl r1, r1, #0x1\n" + " bl __umodsi3\n" + " add r0, r0, #0x1\n" + " lsl r0, r0, #0x10\n" + " lsr r3, r0, #0x10\n" + " cmp r3, #0xfb\n" + " bls ._89 @cond_branch\n" + " add r0, r3, #0\n" + " add r0, r0, #0x19\n" + " lsl r0, r0, #0x10\n" + " lsr r3, r0, #0x10\n" + " ldr r0, ._94 + 8\n" + " cmp r3, r0\n" + " bls ._89 @cond_branch\n" + " mov r3, #0x1\n" + "._89:\n" + " ldr r0, [sp, #0x18]\n" + " add r0, r0, sl\n" + " lsl r4, r0, #0x4\n" + " sub r4, r4, r0\n" + " lsl r4, r4, #0x5\n" + " mov r1, r8\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r8\n" + " lsl r0, r0, #0x4\n" + " ldr r1, ._94 + 12\n" + " add r0, r0, r1\n" + " add r4, r4, r0\n" + " lsl r2, r5, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " str r0, [sp, #0x4]\n" + " str r6, [sp, #0x8]\n" + " ldr r0, [sp, #0x10]\n" + " str r0, [sp, #0xc]\n" + " add r0, r4, #0\n" + " add r1, r3, #0\n" + " mov r3, #0x20\n" + " bl CreateBoxMon\n" + " bl Random\n" + " add r1, r7, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x16\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r7, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x17\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r7, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x18\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r7, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x21\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r7, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x2f\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r7, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x30\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " mov r1, r9\n" + " and r1, r1, r0\n" + " add r1, r1, #0x1\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x32\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " mov r1, r9\n" + " and r1, r1, r0\n" + " add r1, r1, #0x1\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x33\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " mov r1, r9\n" + " and r1, r1, r0\n" + " add r1, r1, #0x1\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x34\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " mov r1, r9\n" + " and r1, r1, r0\n" + " add r1, r1, #0x1\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x36\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " mov r1, r9\n" + " and r1, r1, r0\n" + " add r1, r1, #0x1\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x35\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x43\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x44\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x45\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x46\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x47\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x48\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x49\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x4a\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x4b\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x4c\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x4d\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x4e\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " mov r0, r8\n" + " add r0, r0, #0x1\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r8, r0\n" + " cmp r0, #0x1d\n" + " bhi ._90 @cond_branch\n" + " b ._91\n" + "._90:\n" + " ldr r1, [sp, #0x14]\n" + " lsl r0, r1, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov sl, r0\n" + " cmp r0, #0xd\n" + " bhi ._92 @cond_branch\n" + " b ._93\n" + "._92:\n" + " bl TayaDebugMenu_TownFlags\n" + " bl TayaDebugMenu_Trainer\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " add sp, sp, #0x1c\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 {r1}\n" + " bx r1\n" + "._95:\n" + " .align 2, 0\n" + "._94:\n" + " .word +0x2000000\n" + " .word gUnknown_Debug_083C4F94\n" + " .word 0x19b\n" + " .word gPokemonStorage+0x4\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_8091190() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r3, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r3, r0\n" + " beq ._96 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r3, r0\n" + " beq ._97 @cond_branch\n" + " ldr r2, ._99\n" + " ldr r1, ._99 + 4\n" + " ldr r0, ._99 + 8\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x18\n" + " asr r0, r0, #0x18\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, [r0]\n" + " lsl r0, r3, #0x3\n" + " add r0, r0, r1\n" + " ldr r0, [r0, #0x4]\n" + " str r0, [r2]\n" + "._106:\n" + " mov r0, #0x0\n" + " b ._98\n" + "._100:\n" + " .align 2, 0\n" + "._99:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_83C5068\n" + " .word unk_2030224\n" + "._96:\n" + " ldr r3, ._107\n" + " ldrb r4, [r3]\n" + " ldr r2, ._107 + 4\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " add r5, r3, #0\n" + " cmp r0, #0\n" + " beq ._102 @cond_branch\n" + " sub r0, r4, #1\n" + " strb r0, [r5]\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bge ._102 @cond_branch\n" + " mov r0, #0x1\n" + " strb r0, [r5]\n" + "._102:\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._104 @cond_branch\n" + " ldrb r0, [r5]\n" + " add r0, r0, #0x1\n" + " strb r0, [r5]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bls ._104 @cond_branch\n" + " mov r0, #0x0\n" + " strb r0, [r5]\n" + "._104:\n" + " lsl r0, r4, #0x18\n" + " asr r0, r0, #0x18\n" + " mov r1, #0x0\n" + " ldrsb r1, [r5, r1]\n" + " cmp r0, r1\n" + " beq ._106 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xb\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r4, ._107 + 8\n" + " mov r0, #0x0\n" + " ldrsb r0, [r5, r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r4\n" + " ldrb r2, [r0, #0x4]\n" + " ldr r3, [r0]\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " ldrsb r0, [r5, r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r4\n" + " ldrb r3, [r0, #0x4]\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xa\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl InitMenu\n" + " b ._106\n" + "._108:\n" + " .align 2, 0\n" + "._107:\n" + " .word unk_2030224\n" + " .word gMain\n" + " .word gUnknown_Debug_83C5068\n" + "._97:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._98:\n" + " add sp, sp, #0x8\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void InitTayaDebugWindow() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " ldr r1, ._109\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xb\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._109 + 4\n" + " ldr r3, [r0]\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xa\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._109 + 8\n" + " ldr r0, ._109 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._110:\n" + " .align 2, 0\n" + "._109:\n" + " .word unk_2030224\n" + " .word gUnknown_Debug_83C5068\n" + " .word gCallback_03004AE8\n" + " .word TayaDebugMenu_8091190+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80912D8() +{ + asm( + " push {lr}\n" + " ldr r0, ._113\n" + " ldrb r1, [r0, #0x7]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._111 @cond_branch\n" + " mov r0, #0x0\n" + " b ._112\n" + "._114:\n" + " .align 2, 0\n" + "._113:\n" + " .word gPaletteFade\n" + "._111:\n" + " ldr r0, ._115\n" + " bl SetMainCallback2\n" + " mov r0, #0x1\n" + "._112:\n" + " pop {r1}\n" + " bx r1\n" + "._116:\n" + " .align 2, 0\n" + "._115:\n" + " .word debug_sub_8110F28+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8091300() +{ + asm( + " push {lr}\n" + " mov r0, #0x1\n" + " mov r1, #0x0\n" + " bl fade_screen\n" + " ldr r1, ._117\n" + " ldr r0, ._117 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._118:\n" + " .align 2, 0\n" + "._117:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_80912D8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8091320() +{ + asm( + " push {lr}\n" + " bl LoadOam\n" + " bl ProcessSpriteCopyRequests\n" + " bl TransferPlttBuffer\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8091334() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " ldr r3, ._123\n" + " add r0, r3, #0\n" + " add r0, r0, #0x52\n" + " ldrb r4, [r0]\n" + " cmp r4, #0\n" + " beq ._119 @cond_branch\n" + " cmp r4, #0x1\n" + " bne ._120 @cond_branch\n" + " b ._121\n" + "._120:\n" + " b ._162\n" + "._124:\n" + " .align 2, 0\n" + "._123:\n" + " .word +0x2000000\n" + "._119:\n" + " add r5, r3, #0\n" + " add r5, r5, #0x55\n" + " strb r4, [r5]\n" + " ldr r2, ._131\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " mov r9, r2\n" + " cmp r0, #0\n" + " beq ._126 @cond_branch\n" + " add r1, r3, #0\n" + " add r1, r1, #0x54\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._126 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x1\n" + " strb r0, [r5]\n" + "._126:\n" + " mov r0, r9\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " ldr r5, ._131 + 4\n" + " cmp r0, #0\n" + " beq ._133 @cond_branch\n" + " add r0, r5, #0\n" + " add r0, r0, #0x53\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x2\n" + " beq ._128 @cond_branch\n" + " add r1, r5, #0\n" + " add r1, r1, #0x54\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x4\n" + " bhi ._133 @cond_branch\n" + " b ._130\n" + "._132:\n" + " .align 2, 0\n" + "._131:\n" + " .word gMain\n" + " .word +0x2000000\n" + "._128:\n" + " add r1, r5, #0\n" + " add r1, r1, #0x54\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x3\n" + " bhi ._133 @cond_branch\n" + "._130:\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " add r1, r1, #0x1\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + "._133:\n" + " mov r2, r9\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._135 @cond_branch\n" + " add r1, r5, #0\n" + " add r1, r1, #0x53\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._135 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " add r1, r1, #0x2\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + "._135:\n" + " mov r3, r9\n" + " ldrh r1, [r3, #0x2e]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._140 @cond_branch\n" + " add r0, r5, #0\n" + " add r0, r0, #0x54\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x5\n" + " beq ._137 @cond_branch\n" + " add r1, r5, #0\n" + " add r1, r1, #0x53\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x1\n" + " bhi ._140 @cond_branch\n" + " b ._139\n" + "._137:\n" + " add r1, r5, #0\n" + " add r1, r1, #0x53\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._140 @cond_branch\n" + "._139:\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " add r1, r1, #0x2\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + "._140:\n" + " add r0, r5, #0\n" + " add r0, r0, #0x55\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._141 @cond_branch\n" + " mov r0, r9\n" + " ldrh r2, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._142 @cond_branch\n" + " ldr r2, ._145\n" + " add r3, r5, #0\n" + " add r3, r3, #0x53\n" + " add r0, r5, #0\n" + " add r0, r0, #0x54\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " ldrb r3, [r3]\n" + " add r0, r0, r3\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r2\n" + " ldrh r0, [r0, #0x4]\n" + " sub r0, r0, #0x32\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0x4\n" + " bhi ._143 @cond_branch\n" + " add r1, r5, #0\n" + " add r1, r1, #0x56\n" + " mov r0, #0x4\n" + " b ._144\n" + "._146:\n" + " .align 2, 0\n" + "._145:\n" + " .word gUnknown_Debug_083C50EC\n" + "._143:\n" + " add r1, r5, #0\n" + " add r1, r1, #0x56\n" + " mov r0, #0x1\n" + "._144:\n" + " strb r0, [r1]\n" + " add r1, r5, #0\n" + " add r1, r1, #0x52\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " b ._162\n" + "._142:\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._148 @cond_branch\n" + " b ._162\n" + "._148:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x10\n" + " mov r2, #0x0\n" + " bl BlendPalettes\n" + " ldr r0, ._151\n" + " bl SetMainCallback2\n" + " b ._162\n" + "._152:\n" + " .align 2, 0\n" + "._151:\n" + " .word sub_80546F0+1\n" + "._121:\n" + " add r5, r3, #0\n" + " add r5, r5, #0x55\n" + " mov r0, #0x0\n" + " strb r0, [r5]\n" + " ldr r2, ._159\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " mov r9, r2\n" + " cmp r0, #0\n" + " beq ._154 @cond_branch\n" + " add r2, r3, #0\n" + " add r2, r2, #0x53\n" + " add r0, r3, #0\n" + " add r0, r0, #0x54\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " add r2, r0, r3\n" + " add r0, r3, #0\n" + " add r0, r0, #0x56\n" + " ldrb r1, [r2]\n" + " ldrb r0, [r0]\n" + " cmp r1, r0\n" + " bcs ._154 @cond_branch\n" + " add r0, r1, #1\n" + " strb r0, [r2]\n" + " strb r4, [r5]\n" + "._154:\n" + " mov r2, r9\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " ldr r5, ._159 + 4\n" + " cmp r0, #0\n" + " beq ._156 @cond_branch\n" + " add r2, r5, #0\n" + " add r2, r2, #0x53\n" + " add r0, r5, #0\n" + " add r0, r0, #0x54\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " add r1, r0, r5\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._156 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " add r1, r5, #0\n" + " add r1, r1, #0x55\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + "._156:\n" + " add r6, r5, #0\n" + " add r0, r6, #0\n" + " add r0, r0, #0x55\n" + " ldrb r7, [r0]\n" + " cmp r7, #0\n" + " beq ._157 @cond_branch\n" + "._141:\n" + " bl debug_sub_80916AC\n" + " b ._162\n" + "._160:\n" + " .align 2, 0\n" + "._159:\n" + " .word gMain\n" + " .word +0x2000000\n" + "._157:\n" + " mov r3, r9\n" + " ldrh r1, [r3, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._161 @cond_branch\n" + " ldr r0, ._164\n" + " ldr r1, ._164 + 4\n" + " mov ip, r1\n" + " mov r2, #0x53\n" + " add r2, r2, r6\n" + " mov r8, r2\n" + " add r4, r6, #0\n" + " add r4, r4, #0x54\n" + " ldrb r2, [r4]\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r2\n" + " mov r3, r8\n" + " ldrb r3, [r3]\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, ip\n" + " ldrh r1, [r1, #0x4]\n" + " bl GetMonData\n" + " ldrb r2, [r4]\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r2\n" + " mov r2, r8\n" + " ldrb r2, [r2]\n" + " add r1, r1, r2\n" + " add r1, r1, r6\n" + " strb r0, [r1]\n" + " bl debug_sub_80916AC\n" + " add r0, r6, #0\n" + " add r0, r0, #0x52\n" + " strb r7, [r0]\n" + "._161:\n" + " mov r3, r9\n" + " ldrh r1, [r3, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._162 @cond_branch\n" + " ldr r2, ._164 + 4\n" + " add r0, r6, #0\n" + " add r0, r0, #0x53\n" + " ldrb r4, [r0]\n" + " add r0, r0, #0x1\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x1\n" + " add r3, r0, r1\n" + " add r0, r3, r4\n" + " lsl r0, r0, #0x3\n" + " add r1, r0, r2\n" + " ldrh r0, [r1, #0x4]\n" + " cmp r0, #0\n" + " beq ._163 @cond_branch\n" + " ldr r0, ._164\n" + " ldrh r1, [r1, #0x4]\n" + " add r2, r4, r6\n" + " add r2, r3, r2\n" + " bl SetMonData\n" + "._163:\n" + " add r0, r5, #0\n" + " add r0, r0, #0x52\n" + " strb r7, [r0]\n" + "._162:\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._165:\n" + " .align 2, 0\n" + "._164:\n" + " .word gPlayerParty\n" + " .word gUnknown_Debug_083C50EC\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80915BC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " ldr r0, ._168\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " mov r1, #0x0\n" + " ldr r0, ._168 + 4\n" + " mov r8, r0\n" + " ldr r7, ._168 + 8\n" + "._171:\n" + " mov r4, #0x0\n" + " lsl r0, r1, #0x1\n" + " add r6, r1, #1\n" + " add r5, r0, r1\n" + "._170:\n" + " add r0, r5, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r8\n" + " ldrh r1, [r0, #0x4]\n" + " cmp r1, #0\n" + " beq ._166 @cond_branch\n" + " ldr r0, ._168 + 12\n" + " bl GetMonData\n" + " add r1, r4, r5\n" + " add r1, r1, r7\n" + " strb r0, [r1]\n" + " b ._167\n" + "._169:\n" + " .align 2, 0\n" + "._168:\n" + " .word 0x4000010\n" + " .word gUnknown_Debug_083C50EC\n" + " .word +0x2000000\n" + " .word gPlayerParty\n" + "._166:\n" + " add r0, r4, r5\n" + " add r0, r0, r7\n" + " strb r1, [r0]\n" + "._167:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x2\n" + " bls ._170 @cond_branch\n" + " lsl r0, r6, #0x18\n" + " lsr r1, r0, #0x18\n" + " cmp r1, #0x5\n" + " bls ._171 @cond_branch\n" + " ldr r4, ._172\n" + " add r0, r4, #0\n" + " bl SetUpWindowConfig\n" + " add r0, r4, #0\n" + " bl InitMenuWindow\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x3\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._172 + 4\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " mov r1, #0x4\n" + " mov r2, #0x1d\n" + " mov r3, #0x11\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x0\n" + " mov r1, #0x12\n" + " mov r2, #0x1d\n" + " mov r3, #0x15\n" + " bl MenuDrawTextWindow\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x13\n" + " mov r2, #0x8a\n" + " lsl r2, r2, #0x5\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r2, ._172 + 8\n" + " add r0, r2, #0\n" + " add r0, r0, #0x53\n" + " mov r1, #0x0\n" + " strb r1, [r0]\n" + " add r0, r0, #0x1\n" + " strb r1, [r0]\n" + " sub r0, r0, #0x2\n" + " strb r1, [r0]\n" + " bl debug_sub_80916AC\n" + " ldr r0, ._172 + 12\n" + " bl SetVBlankCallback\n" + " ldr r0, ._172 + 16\n" + " bl SetMainCallback2\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._173:\n" + " .align 2, 0\n" + "._172:\n" + " .word gWindowConfig_81E7224\n" + " .word gUnknown_Debug_083C517C\n" + " .word +0x2000000\n" + " .word debug_sub_8091320+1\n" + " .word debug_sub_8091334+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80916AC() +{ + 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 r6, #0x0\n" + " ldr r0, ._177\n" + " mov sl, r0\n" + " mov r1, #0x0\n" + " mov r8, r1\n" + "._182:\n" + " ldr r2, ._177 + 4\n" + " mov r5, #0x0\n" + " lsl r0, r6, #0x1\n" + " mov r9, r0\n" + " add r1, r6, #1\n" + " str r1, [sp]\n" + "._181:\n" + " mov r0, sl\n" + " add r0, r0, #0x53\n" + " ldrb r0, [r0]\n" + " cmp r0, r5\n" + " bne ._175 @cond_branch\n" + " ldr r1, ._177 + 8\n" + " ldrb r0, [r1]\n" + " cmp r0, r6\n" + " bne ._175 @cond_branch\n" + " mov r0, #0xef\n" + " b ._176\n" + "._178:\n" + " .align 2, 0\n" + "._177:\n" + " .word +0x2000000\n" + " .word +0x2000012\n" + " .word +0x2000054\n" + "._175:\n" + " mov r0, r8\n" + " strb r0, [r2]\n" + " add r2, r2, #0x1\n" + "._176:\n" + " strb r0, [r2]\n" + " add r2, r2, #0x1\n" + " mov r1, r9\n" + " add r4, r1, r6\n" + " add r0, r4, r5\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._183\n" + " add r0, r0, r1\n" + " ldr r1, [r0]\n" + " add r0, r2, #0\n" + " bl StringCopy\n" + " add r2, r0, #0\n" + " mov r0, r8\n" + " strb r0, [r2]\n" + " add r2, r2, #0x1\n" + " ldr r7, ._183 + 4\n" + " add r4, r5, r4\n" + " add r4, r4, r7\n" + " ldrb r1, [r4]\n" + " add r0, r2, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " add r2, r0, #0\n" + " mov r1, r8\n" + " strb r1, [r2]\n" + " add r2, r2, #0x1\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x2\n" + " bhi ._179 @cond_branch\n" + " cmp r6, #0x5\n" + " bne ._181 @cond_branch\n" + " cmp r5, #0x2\n" + " bne ._181 @cond_branch\n" + "._179:\n" + " sub r1, r2, #1\n" + " mov r0, #0xff\n" + " strb r0, [r1]\n" + " mov r2, r9\n" + " add r2, r2, #0x5\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " add r0, r7, #0\n" + " add r0, r0, #0x12\n" + " mov r1, #0x1\n" + " bl MenuPrint\n" + " ldr r1, [sp]\n" + " lsl r0, r1, #0x18\n" + " lsr r6, r0, #0x18\n" + " cmp r6, #0x5\n" + " bls ._182 @cond_branch\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" + "._184:\n" + " .align 2, 0\n" + "._183:\n" + " .word gUnknown_Debug_083C50EC\n" + " .word +0x2000000\n" + "\n" + ); +} + +#endif diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c new file mode 100644 index 000000000..f745f2993 --- /dev/null +++ b/src/debug/tomomichi_debug_menu.c @@ -0,0 +1,8643 @@ +#ifdef DEBUG +#include "global.h" + +#define BSS_DATA __attribute__((section(".bss"))) + +BSS_DATA u8 gDebug_03000700[0x24] = { 0 }; + +__attribute__((naked)) +void InitTomomichiDebugWindow() +{ + asm( + " push {lr}\n" + " bl debug_sub_808B874\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808B868() +{ + asm( + " push {lr}\n" + " bl c2_exit_to_overworld_1_continue_scripts_restart_music\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808B874() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xd\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._1\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " ldr r0, ._1 + 4\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, #0xc\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._1 + 8\n" + " ldr r0, ._1 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._2:\n" + " .align 2, 0\n" + "._1:\n" + " .word gUnknown_Debug_083C0CBA\n" + " .word gDebug_03000700+0x1d\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808B8C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808B8C8() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._7\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._3 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl MoveMenuCursor\n" + " ldr r1, ._7 + 4\n" + " strb r0, [r1]\n" + "._3:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._4 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " bl MoveMenuCursor\n" + " ldr r1, ._7 + 4\n" + " strb r0, [r1]\n" + "._4:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._5 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._7 + 8\n" + " ldr r0, ._7 + 4\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 ._10\n" + "._8:\n" + " .align 2, 0\n" + "._7:\n" + " .word gMain\n" + " .word gDebug_03000700+0x1d\n" + " .word gUnknown_Debug_083C0CBA\n" + "._5:\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._9 @cond_branch\n" + " mov r0, #0x0\n" + " b ._10\n" + "._9:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._10:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_ContestGraphics() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x14\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._11\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r3, ._11 + 4\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0x4\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x13\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " ldr r1, ._11 + 8\n" + " ldr r0, ._11 + 12\n" + " str r0, [r1]\n" + " ldr r0, ._11 + 16\n" + " mov r2, #0x1\n" + " strh r2, [r0]\n" + " ldr r1, ._11 + 20\n" + " ldr r0, ._11 + 24\n" + " str r0, [r1]\n" + " ldr r0, ._11 + 28\n" + " str r4, [r0]\n" + " ldr r0, ._11 + 32\n" + " strb r2, [r0]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._12:\n" + " .align 2, 0\n" + "._11:\n" + " .word gUnknown_Debug_083C0CF4\n" + " .word gUnknown_Debug_083C0D2C\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808BC48+1\n" + " .word gDebug_03000700\n" + " .word gDebug_03000700+0x4\n" + " .word 0x6f33\n" + " .word gDebug_03000700+0x8\n" + " .word gDebug_03000700+0xc\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_ArtMusGraphics() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x14\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._13\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r3, ._13 + 4\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0x4\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x13\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " ldr r1, ._13 + 8\n" + " ldr r0, ._13 + 12\n" + " str r0, [r1]\n" + " ldr r0, ._13 + 16\n" + " mov r2, #0x1\n" + " strh r2, [r0]\n" + " ldr r1, ._13 + 20\n" + " ldr r0, ._13 + 24\n" + " str r0, [r1]\n" + " ldr r0, ._13 + 28\n" + " str r4, [r0]\n" + " ldr r0, ._13 + 32\n" + " strb r2, [r0]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._14:\n" + " .align 2, 0\n" + "._13:\n" + " .word gUnknown_Debug_083C0D4C\n" + " .word gUnknown_Debug_083C0D83\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808BCBC+1\n" + " .word gDebug_03000700\n" + " .word gDebug_03000700+0x4\n" + " .word 0x6f33\n" + " .word gDebug_03000700+0x8\n" + " .word gDebug_03000700+0xd\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_PreviewData() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x14\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._15\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r3, ._15 + 4\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0x4\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x13\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " ldr r1, ._15 + 8\n" + " ldr r0, ._15 + 12\n" + " str r0, [r1]\n" + " ldr r0, ._15 + 16\n" + " mov r2, #0x1\n" + " strh r2, [r0]\n" + " ldr r1, ._15 + 20\n" + " ldr r0, ._15 + 24\n" + " str r0, [r1]\n" + " ldr r0, ._15 + 28\n" + " str r4, [r0]\n" + " ldr r0, ._15 + 32\n" + " strb r2, [r0]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._16:\n" + " .align 2, 0\n" + "._15:\n" + " .word gUnknown_Debug_083C0DA4\n" + " .word gUnknown_Debug_083C0DD4\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808BD30+1\n" + " .word gDebug_03000700\n" + " .word gDebug_03000700+0x4\n" + " .word 0x6f33\n" + " .word gDebug_03000700+0x8\n" + " .word gDebug_03000700+0xe\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_TrickHouse() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._17\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r3, ._17 + 4\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " ldr r0, ._17 + 8\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._17 + 12\n" + " ldr r0, ._17 + 16\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._18:\n" + " .align 2, 0\n" + "._17:\n" + " .word gUnknown_Debug_083C0DF4\n" + " .word gUnknown_Debug_083C0E15\n" + " .word gDebug_03000700+0x1e\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808BDA4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_ControlEvents() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._19\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " ldr r0, ._19 + 4\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._19 + 8\n" + " ldr r0, ._19 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._20:\n" + " .align 2, 0\n" + "._19:\n" + " .word gUnknown_Debug_083C0E32\n" + " .word gDebug_03000700+0x1f\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808BE2C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_ControlFlags() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._21\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " ldr r0, ._21 + 4\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._21 + 8\n" + " ldr r0, ._21 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._22:\n" + " .align 2, 0\n" + "._21:\n" + " .word gUnknown_Debug_083C0E7F\n" + " .word gDebug_03000700+0x20\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808BEB4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_ControlWorks() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._23\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " ldr r0, ._23 + 4\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r1, ._23 + 8\n" + " ldr r0, ._23 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._24:\n" + " .align 2, 0\n" + "._23:\n" + " .word gUnknown_Debug_083C0EF1\n" + " .word gDebug_03000700+0x21\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808BF3C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BC48() +{ + asm( + " push {r4, lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._25 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._26 @cond_branch\n" + " cmp r0, #0\n" + " beq ._27 @cond_branch\n" + " b ._32\n" + "._26:\n" + " cmp r0, #0x2\n" + " beq ._29 @cond_branch\n" + " b ._32\n" + "._27:\n" + " bl debug_sub_808ED0C\n" + " b ._32\n" + "._25:\n" + " bl debug_sub_808ED9C\n" + " b ._32\n" + "._29:\n" + " bl debug_sub_808EE3C\n" + "._32:\n" + " mov r0, #0x0\n" + " bl debug_sub_808EF8C\n" + " lsl r0, r4, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._36 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._34 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._35\n" + "._34:\n" + " cmp r1, #0x3\n" + " bne ._36 @cond_branch\n" + " ldr r0, ._37\n" + " ldr r1, ._37 + 4\n" + " ldr r1, [r1, #0x1c]\n" + " str r1, [r0]\n" + "._36:\n" + " mov r0, #0x0\n" + "._35:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._38:\n" + " .align 2, 0\n" + "._37:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C0D2C\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BCBC() +{ + asm( + " push {r4, lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._39 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._40 @cond_branch\n" + " cmp r0, #0\n" + " beq ._41 @cond_branch\n" + " b ._46\n" + "._40:\n" + " cmp r0, #0x2\n" + " beq ._43 @cond_branch\n" + " b ._46\n" + "._41:\n" + " bl debug_sub_808ED0C\n" + " b ._46\n" + "._39:\n" + " bl debug_sub_808ED9C\n" + " b ._46\n" + "._43:\n" + " bl debug_sub_808EE9C\n" + "._46:\n" + " mov r0, #0x1\n" + " bl debug_sub_808EF8C\n" + " lsl r0, r4, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._50 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._48 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._49\n" + "._48:\n" + " cmp r1, #0x3\n" + " bne ._50 @cond_branch\n" + " ldr r0, ._51\n" + " ldr r1, ._51 + 4\n" + " ldr r1, [r1, #0x1c]\n" + " str r1, [r0]\n" + "._50:\n" + " mov r0, #0x0\n" + "._49:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._52:\n" + " .align 2, 0\n" + "._51:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C0D83\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BD30() +{ + asm( + " push {r4, lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._53 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._54 @cond_branch\n" + " cmp r0, #0\n" + " beq ._55 @cond_branch\n" + " b ._60\n" + "._54:\n" + " cmp r0, #0x2\n" + " beq ._57 @cond_branch\n" + " b ._60\n" + "._55:\n" + " bl debug_sub_808ED0C\n" + " b ._60\n" + "._53:\n" + " bl debug_sub_808ED9C\n" + " b ._60\n" + "._57:\n" + " bl debug_sub_808EF14\n" + "._60:\n" + " mov r0, #0x2\n" + " bl debug_sub_808EF8C\n" + " lsl r0, r4, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._64 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._62 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._63\n" + "._62:\n" + " cmp r1, #0x3\n" + " bne ._64 @cond_branch\n" + " ldr r0, ._65\n" + " ldr r1, ._65 + 4\n" + " ldr r1, [r1, #0x1c]\n" + " str r1, [r0]\n" + "._64:\n" + " mov r0, #0x0\n" + "._63:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._66:\n" + " .align 2, 0\n" + "._65:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C0DD4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BDA4() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._71\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._67 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl MoveMenuCursor\n" + " ldr r1, ._71 + 4\n" + " strb r0, [r1]\n" + "._67:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._68 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " bl MoveMenuCursor\n" + " ldr r1, ._71 + 4\n" + " strb r0, [r1]\n" + "._68:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._69 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._71 + 8\n" + " ldr r0, ._71 + 4\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 ._74\n" + "._72:\n" + " .align 2, 0\n" + "._71:\n" + " .word gMain\n" + " .word gDebug_03000700+0x1e\n" + " .word gUnknown_Debug_083C0E15\n" + "._69:\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._73 @cond_branch\n" + " mov r0, #0x0\n" + " b ._74\n" + "._73:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._74:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BE2C() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._79\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._75 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl MoveMenuCursor\n" + " ldr r1, ._79 + 4\n" + " strb r0, [r1]\n" + "._75:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._76 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " bl MoveMenuCursor\n" + " ldr r1, ._79 + 4\n" + " strb r0, [r1]\n" + "._76:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._77 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._79 + 8\n" + " ldr r0, ._79 + 4\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 ._82\n" + "._80:\n" + " .align 2, 0\n" + "._79:\n" + " .word gMain\n" + " .word gDebug_03000700+0x1f\n" + " .word gUnknown_Debug_083C0E32\n" + "._77:\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._81 @cond_branch\n" + " mov r0, #0x0\n" + " b ._82\n" + "._81:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._82:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BEB4() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._87\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._83 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl MoveMenuCursor\n" + " ldr r1, ._87 + 4\n" + " strb r0, [r1]\n" + "._83:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._84 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " bl MoveMenuCursor\n" + " ldr r1, ._87 + 4\n" + " strb r0, [r1]\n" + "._84:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._85 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._87 + 8\n" + " ldr r0, ._87 + 4\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 ._90\n" + "._88:\n" + " .align 2, 0\n" + "._87:\n" + " .word gMain\n" + " .word gDebug_03000700+0x20\n" + " .word gUnknown_Debug_083C0E7F\n" + "._85:\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._89 @cond_branch\n" + " mov r0, #0x0\n" + " b ._90\n" + "._89:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._90:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BF3C() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._95\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._91 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl MoveMenuCursor\n" + " ldr r1, ._95 + 4\n" + " strb r0, [r1]\n" + "._91:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._92 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " bl MoveMenuCursor\n" + " ldr r1, ._95 + 4\n" + " strb r0, [r1]\n" + "._92:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._93 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._95 + 8\n" + " ldr r0, ._95 + 4\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 ._98\n" + "._96:\n" + " .align 2, 0\n" + "._95:\n" + " .word gMain\n" + " .word gDebug_03000700+0x21\n" + " .word gUnknown_Debug_083C0EF1\n" + "._93:\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._97 @cond_branch\n" + " mov r0, #0x0\n" + " b ._98\n" + "._97:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._98:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BFC4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._99\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._99 + 4\n" + " ldr r0, ._99 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._100:\n" + " .align 2, 0\n" + "._99:\n" + " .word gUnknown_Debug_083C0F79\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C064+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C014() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._101\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r1, ._101 + 4\n" + " ldr r0, ._101 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._102:\n" + " .align 2, 0\n" + "._101:\n" + " .word gUnknown_Debug_083C0FFC\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C0A8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C064() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._103 @cond_branch\n" + " mov r0, #0x0\n" + " b ._106\n" + "._103:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._105 @cond_branch\n" + " ldr r2, ._107\n" + " ldr r0, ._107 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._106\n" + "._108:\n" + " .align 2, 0\n" + "._107:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C0F79\n" + "._105:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._106:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C0A8() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._109 @cond_branch\n" + " mov r0, #0x0\n" + " b ._112\n" + "._109:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._111 @cond_branch\n" + " ldr r2, ._113\n" + " ldr r0, ._113 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._112\n" + "._114:\n" + " .align 2, 0\n" + "._113:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C0FFC\n" + "._111:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._112:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C0EC() +{ + asm( + " push {lr}\n" + " ldr r0, ._115\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._116:\n" + " .align 2, 0\n" + "._115:\n" + " .word DebugScript_081C1CFE\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C104() +{ + asm( + " push {lr}\n" + " ldr r0, ._117\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._118:\n" + " .align 2, 0\n" + "._117:\n" + " .word DebugScript_081C1D07\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C11C() +{ + asm( + " push {lr}\n" + " ldr r0, ._119\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._120:\n" + " .align 2, 0\n" + "._119:\n" + " .word DebugScript_081C1D1E\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C134() +{ + asm( + " push {lr}\n" + " ldr r0, ._121\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._122:\n" + " .align 2, 0\n" + "._121:\n" + " .word DebugScript_081C1D24\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C14C() +{ + asm( + " push {lr}\n" + " ldr r0, ._123\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._124:\n" + " .align 2, 0\n" + "._123:\n" + " .word DebugScript_081C1D2A\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C164() +{ + asm( + " push {lr}\n" + " ldr r0, ._125\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._126:\n" + " .align 2, 0\n" + "._125:\n" + " .word DebugScript_081C1D35\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C17C() +{ + asm( + " push {lr}\n" + " ldr r0, ._127\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._128:\n" + " .align 2, 0\n" + "._127:\n" + " .word DebugScript_081C1D46\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C194() +{ + asm( + " push {lr}\n" + " ldr r0, ._129\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._130:\n" + " .align 2, 0\n" + "._129:\n" + " .word DebugScript_081C221F\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C1AC() +{ + asm( + " push {lr}\n" + " ldr r0, ._131\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._132:\n" + " .align 2, 0\n" + "._131:\n" + " .word DebugScript_081C23E2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C1C4() +{ + asm( + " push {lr}\n" + " ldr r0, ._133\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._134:\n" + " .align 2, 0\n" + "._133:\n" + " .word DebugScript_081C23E6\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C1DC() +{ + asm( + " push {lr}\n" + " ldr r0, ._135\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._136:\n" + " .align 2, 0\n" + "._135:\n" + " .word DebugScript_081C23F6\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C1F4() +{ + asm( + " push {lr}\n" + " ldr r0, ._137\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._138:\n" + " .align 2, 0\n" + "._137:\n" + " .word DebugScript_081C2482\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C20C() +{ + asm( + " push {lr}\n" + " ldr r0, ._139\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._140:\n" + " .align 2, 0\n" + "._139:\n" + " .word DebugScript_081C23FD\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C224() +{ + asm( + " push {lr}\n" + " ldr r0, ._141\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._142:\n" + " .align 2, 0\n" + "._141:\n" + " .word DebugScript_081C2518\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C23C() +{ + asm( + " push {lr}\n" + " ldr r0, ._143\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._144:\n" + " .align 2, 0\n" + "._143:\n" + " .word DebugScript_081C2507\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_ContestGraphics_Show() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._145\n" + " ldr r0, ._145 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._146:\n" + " .align 2, 0\n" + "._145:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C280+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C280() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._147 @cond_branch\n" + " mov r0, #0x0\n" + " b ._148\n" + "._147:\n" + " bl CloseMenu\n" + " mov r0, #0x0\n" + " bl debug_sub_808F168\n" + " ldr r0, ._149\n" + " bl SetMainCallback2\n" + " ldr r1, ._149 + 4\n" + " ldr r0, ._149 + 8\n" + " str r0, [r1, #0x8]\n" + " mov r0, #0x1\n" + "._148:\n" + " pop {r1}\n" + " bx r1\n" + "._150:\n" + " .align 2, 0\n" + "._149:\n" + " .word CB2_ContestPainting+1\n" + " .word gMain\n" + " .word debug_sub_808B868+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_MuseumGraphics_Show() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._151\n" + " ldr r0, ._151 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._152:\n" + " .align 2, 0\n" + "._151:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C2E4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C2E4() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._153 @cond_branch\n" + " mov r0, #0x0\n" + " b ._154\n" + "._153:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " bl debug_sub_808F168\n" + " ldr r0, ._155\n" + " bl SetMainCallback2\n" + " ldr r1, ._155 + 4\n" + " ldr r0, ._155 + 8\n" + " str r0, [r1, #0x8]\n" + " mov r0, #0x1\n" + "._154:\n" + " pop {r1}\n" + " bx r1\n" + "._156:\n" + " .align 2, 0\n" + "._155:\n" + " .word CB2_ContestPainting+1\n" + " .word gMain\n" + " .word debug_sub_808B868+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C31C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._157\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._157 + 4\n" + " ldr r0, ._157 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._158:\n" + " .align 2, 0\n" + "._157:\n" + " .word gUnknown_Debug_083C2828\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C36C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C36C() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._159 @cond_branch\n" + " mov r0, #0x0\n" + " b ._162\n" + "._159:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._161 @cond_branch\n" + " ldr r2, ._163\n" + " ldr r0, ._163 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._162\n" + "._164:\n" + " .align 2, 0\n" + "._163:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C2828\n" + "._161:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._162:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C3B0() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._165\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r0, ._165 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._165 + 8\n" + " ldr r0, ._165 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._166:\n" + " .align 2, 0\n" + "._165:\n" + " .word gUnknown_Debug_083C2938\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C408() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._167\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._167 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._167 + 8\n" + " ldr r0, ._167 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._168:\n" + " .align 2, 0\n" + "._167:\n" + " .word gUnknown_Debug_083C2A48\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C460() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._169\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._169 + 4\n" + " mov r0, #0x2\n" + " strb r0, [r1]\n" + " ldr r1, ._169 + 8\n" + " ldr r0, ._169 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._170:\n" + " .align 2, 0\n" + "._169:\n" + " .word gUnknown_Debug_083C2B4C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C4B8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._171\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._171 + 4\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + " ldr r1, ._171 + 8\n" + " ldr r0, ._171 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._172:\n" + " .align 2, 0\n" + "._171:\n" + " .word gUnknown_Debug_083C2C80\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C510() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._173\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._173 + 4\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r1, ._173 + 8\n" + " ldr r0, ._173 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._174:\n" + " .align 2, 0\n" + "._173:\n" + " .word gUnknown_Debug_083C2D8C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C568() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._175\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._175 + 4\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " ldr r1, ._175 + 8\n" + " ldr r0, ._175 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._176:\n" + " .align 2, 0\n" + "._175:\n" + " .word gUnknown_Debug_083C2EB0\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C5C0() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._177\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._177 + 4\n" + " mov r0, #0x6\n" + " strb r0, [r1]\n" + " ldr r1, ._177 + 8\n" + " ldr r0, ._177 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._178:\n" + " .align 2, 0\n" + "._177:\n" + " .word gUnknown_Debug_083C2FE0\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C618() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._179\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._179 + 4\n" + " mov r0, #0x7\n" + " strb r0, [r1]\n" + " ldr r1, ._179 + 8\n" + " ldr r0, ._179 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._180:\n" + " .align 2, 0\n" + "._179:\n" + " .word gUnknown_Debug_083C3100\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C670() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._181\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl InitMenu\n" + " ldr r1, ._181 + 4\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldr r1, ._181 + 8\n" + " ldr r0, ._181 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._182:\n" + " .align 2, 0\n" + "._181:\n" + " .word gUnknown_Debug_083C3194\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C6C8() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._186\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808C714\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808C764\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._183 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._184 @cond_branch\n" + "._183:\n" + " mov r0, #0x0\n" + " b ._185\n" + "._187:\n" + " .align 2, 0\n" + "._186:\n" + " .word gDebug_03000700+0xf\n" + "._184:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._185:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C714() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._191\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._190 @cond_branch\n" + " ldr r0, ._191 + 4\n" + " lsl r1, r2, #0x3\n" + " add r1, r1, r2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r0\n" + " ldrh r4, [r1]\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._189 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._190\n" + "._192:\n" + " .align 2, 0\n" + "._191:\n" + " .word gMain\n" + " .word gUnknown_Debug_083C31DC+0xa\n" + "._189:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + "._190:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C764() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._195\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._193 @cond_branch\n" + " ldr r0, ._195 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._194:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " neg r2, r0\n" + " orr r2, r2, r0\n" + " lsr r2, r2, #0x1f\n" + " mov r0, #0x1c\n" + " add r1, r4, #0\n" + " bl debug_sub_808F2E0\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._194 @cond_branch\n" + "._193:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._196:\n" + " .align 2, 0\n" + "._195:\n" + " .word gUnknown_Debug_083C31DC\n" + " .word gUnknown_Debug_083C31DC+0xa\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C7C8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._197\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._197 + 4\n" + " ldr r0, ._197 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._198:\n" + " .align 2, 0\n" + "._197:\n" + " .word gUnknown_Debug_083C1CE8\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C818+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C818() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._199 @cond_branch\n" + " mov r0, #0x0\n" + " b ._202\n" + "._199:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._201 @cond_branch\n" + " ldr r2, ._203\n" + " ldr r0, ._203 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._202\n" + "._204:\n" + " .align 2, 0\n" + "._203:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C1CE8\n" + "._201:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._202:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C85C() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._205\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r0, ._205 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._205 + 8\n" + " ldr r0, ._205 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._206:\n" + " .align 2, 0\n" + "._205:\n" + " .word gUnknown_Debug_083C1E0C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C8B4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._207\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._207 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._207 + 8\n" + " ldr r0, ._207 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._208:\n" + " .align 2, 0\n" + "._207:\n" + " .word gUnknown_Debug_083C1F38\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C90C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._209\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._209 + 4\n" + " mov r0, #0x2\n" + " strb r0, [r1]\n" + " ldr r1, ._209 + 8\n" + " ldr r0, ._209 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._210:\n" + " .align 2, 0\n" + "._209:\n" + " .word gUnknown_Debug_083C206C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C964() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._211\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._211 + 4\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + " ldr r1, ._211 + 8\n" + " ldr r0, ._211 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._212:\n" + " .align 2, 0\n" + "._211:\n" + " .word gUnknown_Debug_083C2190\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C9BC() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._213\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r1, ._213 + 4\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r1, ._213 + 8\n" + " ldr r0, ._213 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._214:\n" + " .align 2, 0\n" + "._213:\n" + " .word gUnknown_Debug_083C2264\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CA14() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._215\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._215 + 4\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " ldr r1, ._215 + 8\n" + " ldr r0, ._215 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._216:\n" + " .align 2, 0\n" + "._215:\n" + " .word gUnknown_Debug_083C2370\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CA6C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._217\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._217 + 4\n" + " mov r0, #0x6\n" + " strb r0, [r1]\n" + " ldr r1, ._217 + 8\n" + " ldr r0, ._217 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._218:\n" + " .align 2, 0\n" + "._217:\n" + " .word gUnknown_Debug_083C248C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CAC4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._219\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._219 + 4\n" + " mov r0, #0x7\n" + " strb r0, [r1]\n" + " ldr r1, ._219 + 8\n" + " ldr r0, ._219 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._220:\n" + " .align 2, 0\n" + "._219:\n" + " .word gUnknown_Debug_083C259C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CB1C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._221\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._221 + 4\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldr r1, ._221 + 8\n" + " ldr r0, ._221 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._222:\n" + " .align 2, 0\n" + "._221:\n" + " .word gUnknown_Debug_083C26C8\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CB74() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._226\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808CBC0\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808CC10\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._223 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._224 @cond_branch\n" + "._223:\n" + " mov r0, #0x0\n" + " b ._225\n" + "._227:\n" + " .align 2, 0\n" + "._226:\n" + " .word gDebug_03000700+0xf\n" + "._224:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._225:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CBC0() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._231\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._230 @cond_branch\n" + " ldr r0, ._231 + 4\n" + " lsl r1, r2, #0x3\n" + " add r1, r1, r2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r0\n" + " ldrh r4, [r1]\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._229 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._230\n" + "._232:\n" + " .align 2, 0\n" + "._231:\n" + " .word gMain\n" + " .word gUnknown_Debug_083C2710+0xa\n" + "._229:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + "._230:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CC10() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._235\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._233 @cond_branch\n" + " ldr r0, ._235 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._234:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " neg r2, r0\n" + " orr r2, r2, r0\n" + " lsr r2, r2, #0x1f\n" + " mov r0, #0x1c\n" + " add r1, r4, #0\n" + " bl debug_sub_808F2E0\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._234 @cond_branch\n" + "._233:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._236:\n" + " .align 2, 0\n" + "._235:\n" + " .word gUnknown_Debug_083C2710\n" + " .word gUnknown_Debug_083C2710+0xa\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CC74() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._237\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl InitMenu\n" + " ldr r1, ._237 + 4\n" + " ldr r0, ._237 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._238:\n" + " .align 2, 0\n" + "._237:\n" + " .word gUnknown_Debug_083C1ADC\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CCC4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CCC4() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._239 @cond_branch\n" + " mov r0, #0x0\n" + " b ._242\n" + "._239:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._241 @cond_branch\n" + " ldr r2, ._243\n" + " ldr r0, ._243 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._242\n" + "._244:\n" + " .align 2, 0\n" + "._243:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C1ADC\n" + "._241:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._242:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CD08() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x11\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._245\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x8\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\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" + " ldr r0, ._245 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._245 + 8\n" + " ldr r0, ._245 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._246:\n" + " .align 2, 0\n" + "._245:\n" + " .word gUnknown_Debug_083C1B7C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CE10+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CD60() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._247\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x4\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " ldr r1, ._247 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._247 + 8\n" + " ldr r0, ._247 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._248:\n" + " .align 2, 0\n" + "._247:\n" + " .word gUnknown_Debug_083C1BF0\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CE10+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CDB8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x3\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._249\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl InitMenu\n" + " ldr r1, ._249 + 4\n" + " mov r0, #0x2\n" + " strb r0, [r1]\n" + " ldr r1, ._249 + 8\n" + " ldr r0, ._249 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._250:\n" + " .align 2, 0\n" + "._249:\n" + " .word gUnknown_Debug_083C1C2C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CE10+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CE10() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._254\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808CE5C\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808CEAC\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._251 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._252 @cond_branch\n" + "._251:\n" + " mov r0, #0x0\n" + " b ._253\n" + "._255:\n" + " .align 2, 0\n" + "._254:\n" + " .word gDebug_03000700+0xf\n" + "._252:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._253:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CE5C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._259\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._258 @cond_branch\n" + " ldr r0, ._259 + 4\n" + " lsl r1, r2, #0x3\n" + " add r1, r1, r2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r0\n" + " ldrh r4, [r1]\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._257 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._258\n" + "._260:\n" + " .align 2, 0\n" + "._259:\n" + " .word gMain\n" + " .word gUnknown_Debug_083C1C34+0x4\n" + "._257:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + "._258:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CEAC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._263\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._261 @cond_branch\n" + " ldr r0, ._263 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._262:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " neg r2, r0\n" + " orr r2, r2, r0\n" + " lsr r2, r2, #0x1f\n" + " mov r0, #0x1c\n" + " add r1, r4, #0\n" + " bl debug_sub_808F2E0\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._262 @cond_branch\n" + "._261:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._264:\n" + " .align 2, 0\n" + "._263:\n" + " .word gUnknown_Debug_083C1C34\n" + " .word gUnknown_Debug_083C1C34+0x4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CF10() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._265\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._265 + 4\n" + " ldr r0, ._265 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._266:\n" + " .align 2, 0\n" + "._265:\n" + " .word gUnknown_Debug_083C1330\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CF60+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CF60() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._267 @cond_branch\n" + " mov r0, #0x0\n" + " b ._270\n" + "._267:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._269 @cond_branch\n" + " ldr r2, ._271\n" + " ldr r0, ._271 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._270\n" + "._272:\n" + " .align 2, 0\n" + "._271:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C1330\n" + "._269:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._270:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CFA4() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x11\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._273\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x8\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\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" + " ldr r0, ._273 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._273 + 8\n" + " ldr r0, ._273 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._274:\n" + " .align 2, 0\n" + "._273:\n" + " .word gUnknown_Debug_083C13D8\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CFFC() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._275\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._275 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._275 + 8\n" + " ldr r0, ._275 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._276:\n" + " .align 2, 0\n" + "._275:\n" + " .word gUnknown_Debug_083C1465\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D054() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._277\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._277 + 4\n" + " mov r0, #0x2\n" + " strb r0, [r1]\n" + " ldr r1, ._277 + 8\n" + " ldr r0, ._277 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._278:\n" + " .align 2, 0\n" + "._277:\n" + " .word gUnknown_Debug_083C1503\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D0AC() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._279\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x4\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " ldr r1, ._279 + 4\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + " ldr r1, ._279 + 8\n" + " ldr r0, ._279 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._280:\n" + " .align 2, 0\n" + "._279:\n" + " .word gUnknown_Debug_083C158A\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D104() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._281\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._281 + 4\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r1, ._281 + 8\n" + " ldr r0, ._281 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._282:\n" + " .align 2, 0\n" + "._281:\n" + " .word gUnknown_Debug_083C1647\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D15C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._283\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._283 + 4\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " ldr r1, ._283 + 8\n" + " ldr r0, ._283 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._284:\n" + " .align 2, 0\n" + "._283:\n" + " .word gUnknown_Debug_083C1712\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D1B4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._285\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._285 + 4\n" + " mov r0, #0x6\n" + " strb r0, [r1]\n" + " ldr r1, ._285 + 8\n" + " ldr r0, ._285 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._286:\n" + " .align 2, 0\n" + "._285:\n" + " .word gUnknown_Debug_083C17F8\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D20C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._287\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._287 + 4\n" + " mov r0, #0x7\n" + " strb r0, [r1]\n" + " ldr r1, ._287 + 8\n" + " ldr r0, ._287 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._288:\n" + " .align 2, 0\n" + "._287:\n" + " .word gUnknown_Debug_083C18B8\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D264() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._289\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x5\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl InitMenu\n" + " ldr r1, ._289 + 4\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldr r1, ._289 + 8\n" + " ldr r0, ._289 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._290:\n" + " .align 2, 0\n" + "._289:\n" + " .word gDebug_0x83C1974\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D2BC() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._294\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808D308\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808D358\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._291 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._292 @cond_branch\n" + "._291:\n" + " mov r0, #0x0\n" + " b ._293\n" + "._295:\n" + " .align 2, 0\n" + "._294:\n" + " .word gDebug_03000700+0xf\n" + "._292:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._293:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D308() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._299\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._298 @cond_branch\n" + " ldr r0, ._299 + 4\n" + " lsl r1, r2, #0x3\n" + " add r1, r1, r2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r0\n" + " ldrh r4, [r1]\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._297 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._298\n" + "._300:\n" + " .align 2, 0\n" + "._299:\n" + " .word gMain\n" + " .word gUnknown_Debug_083C19C6\n" + "._297:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + "._298:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D358() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._303\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._301 @cond_branch\n" + " ldr r0, ._303 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._302:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " neg r2, r0\n" + " orr r2, r2, r0\n" + " lsr r2, r2, #0x1f\n" + " mov r0, #0x1c\n" + " add r1, r4, #0\n" + " bl debug_sub_808F2E0\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._302 @cond_branch\n" + "._301:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._304:\n" + " .align 2, 0\n" + "._303:\n" + " .word gUnknown_Debug_083C19BC\n" + " .word gUnknown_Debug_083C19C6\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D3BC() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._305\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._305 + 4\n" + " ldr r0, ._305 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._306:\n" + " .align 2, 0\n" + "._305:\n" + " .word gUnknown_Debug_083C105C\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D40C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D40C() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._307 @cond_branch\n" + " mov r0, #0x0\n" + " b ._310\n" + "._307:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._309 @cond_branch\n" + " ldr r2, ._311\n" + " ldr r0, ._311 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._310\n" + "._312:\n" + " .align 2, 0\n" + "._311:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C105C\n" + "._309:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._310:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D450() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._313\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r0, ._313 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._313 + 8\n" + " ldr r0, ._313 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._314:\n" + " .align 2, 0\n" + "._313:\n" + " .word gUnknown_Debug_083C10BD\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D500+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D4A8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._315\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._315 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._315 + 8\n" + " ldr r0, ._315 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._316:\n" + " .align 2, 0\n" + "._315:\n" + " .word gUnknown_Debug_083C1149\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D500+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D500() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._320\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808D54C\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808D59C\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._317 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._318 @cond_branch\n" + "._317:\n" + " mov r0, #0x0\n" + " b ._319\n" + "._321:\n" + " .align 2, 0\n" + "._320:\n" + " .word gDebug_03000700+0xf\n" + "._318:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._319:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D54C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._325\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._324 @cond_branch\n" + " ldr r0, ._325 + 4\n" + " lsl r1, r2, #0x3\n" + " add r1, r1, r2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r0\n" + " ldrh r4, [r1]\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._323 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._324\n" + "._326:\n" + " .align 2, 0\n" + "._325:\n" + " .word gMain\n" + " .word gUnknown_Debug_083C1194+0x2\n" + "._323:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + "._324:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D59C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._329\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._327 @cond_branch\n" + " ldr r0, ._329 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._328:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " neg r2, r0\n" + " orr r2, r2, r0\n" + " lsr r2, r2, #0x1f\n" + " mov r0, #0x1c\n" + " add r1, r4, #0\n" + " bl debug_sub_808F2E0\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._328 @cond_branch\n" + "._327:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._330:\n" + " .align 2, 0\n" + "._329:\n" + " .word gUnknown_Debug_083C1194\n" + " .word gUnknown_Debug_083C1194+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D600() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._331\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._331 + 4\n" + " ldr r0, ._331 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._332:\n" + " .align 2, 0\n" + "._331:\n" + " .word gUnknown_Debug_083C11CC\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D650+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D650() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._333 @cond_branch\n" + " mov r0, #0x0\n" + " b ._336\n" + "._333:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._335 @cond_branch\n" + " ldr r2, ._337\n" + " ldr r0, ._337 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._336\n" + "._338:\n" + " .align 2, 0\n" + "._337:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C11CC\n" + "._335:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._336:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D694() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._339\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r0, ._339 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._339 + 8\n" + " ldr r0, ._339 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._340:\n" + " .align 2, 0\n" + "._339:\n" + " .word gUnknown_Debug_083C1212\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D744+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D6EC() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._341\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._341 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._341 + 8\n" + " ldr r0, ._341 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._342:\n" + " .align 2, 0\n" + "._341:\n" + " .word gUnknown_Debug_083C1288\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D744+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D744() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._346\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808D790\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808D7E0\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._343 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._344 @cond_branch\n" + "._343:\n" + " mov r0, #0x0\n" + " b ._345\n" + "._347:\n" + " .align 2, 0\n" + "._346:\n" + " .word gDebug_03000700+0xf\n" + "._344:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._345:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D790() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._351\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._350 @cond_branch\n" + " ldr r0, ._351 + 4\n" + " lsl r1, r2, #0x3\n" + " add r1, r1, r2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r0\n" + " ldrh r4, [r1]\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._349 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._350\n" + "._352:\n" + " .align 2, 0\n" + "._351:\n" + " .word gMain\n" + " .word gUnknown_Debug_083C12D0+0x2\n" + "._349:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + "._350:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D7E0() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._355\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._353 @cond_branch\n" + " ldr r0, ._355 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._354:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " neg r2, r0\n" + " orr r2, r2, r0\n" + " lsr r2, r2, #0x1f\n" + " mov r0, #0x1c\n" + " add r1, r4, #0\n" + " bl debug_sub_808F2E0\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._354 @cond_branch\n" + "._353:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._356:\n" + " .align 2, 0\n" + "._355:\n" + " .word gUnknown_Debug_083C12D0\n" + " .word gUnknown_Debug_083C12D0+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D844() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x3\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._357\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl InitMenu\n" + " ldr r1, ._357 + 4\n" + " ldr r0, ._357 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._358:\n" + " .align 2, 0\n" + "._357:\n" + " .word gUnknown_Debug_083C1A78\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D894+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D894() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r3, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r3, r0\n" + " bne ._359 @cond_branch\n" + " mov r0, #0x0\n" + " b ._362\n" + "._359:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r3, r0\n" + " beq ._361 @cond_branch\n" + " ldr r2, ._363\n" + " ldr r1, ._363 + 4\n" + " lsl r0, r3, #0x3\n" + " add r0, r0, r1\n" + " ldr r0, [r0, #0x4]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._362\n" + "._364:\n" + " .align 2, 0\n" + "._363:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C1A78\n" + "._361:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._362:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D8D8() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._365\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r0, ._365 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._365 + 8\n" + " ldr r0, ._365 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._366:\n" + " .align 2, 0\n" + "._365:\n" + " .word gUnknown_Debug_083C1A9C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D930+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D930() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._370\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808D97C\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808D9CC\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._367 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._368 @cond_branch\n" + "._367:\n" + " mov r0, #0x0\n" + " b ._369\n" + "._371:\n" + " .align 2, 0\n" + "._370:\n" + " .word gDebug_03000700+0xf\n" + "._368:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._369:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D97C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._375\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._374 @cond_branch\n" + " ldr r0, ._375 + 4\n" + " lsl r1, r2, #0x3\n" + " add r1, r1, r2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r0\n" + " ldrh r4, [r1]\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._373 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._374\n" + "._376:\n" + " .align 2, 0\n" + "._375:\n" + " .word gMain\n" + " .word gUnknown_Debug_083C1AAC+0x2\n" + "._373:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + "._374:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D9CC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._379\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._377 @cond_branch\n" + " ldr r0, ._379 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._378:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " neg r2, r0\n" + " orr r2, r2, r0\n" + " lsr r2, r2, #0x1f\n" + " mov r0, #0x1c\n" + " add r1, r4, #0\n" + " bl debug_sub_808F2E0\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._378 @cond_branch\n" + "._377:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._380:\n" + " .align 2, 0\n" + "._379:\n" + " .word gUnknown_Debug_083C1AAC\n" + " .word gUnknown_Debug_083C1AAC+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DA30() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x3\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._381\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl InitMenu\n" + " ldr r1, ._381 + 4\n" + " ldr r0, ._381 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._382:\n" + " .align 2, 0\n" + "._381:\n" + " .word gUnknown_Debug_083C103A\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DA80+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DA80() +{ + asm( + " push {r4, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " bl debug_sub_808DAD4\n" + " bl debug_sub_808DABC\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._383 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._384 @cond_branch\n" + "._383:\n" + " mov r0, #0x0\n" + " b ._385\n" + "._384:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._385:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DABC() +{ + asm( + " push {lr}\n" + " ldr r0, ._386\n" + " ldrh r2, [r0]\n" + " mov r0, #0x18\n" + " mov r1, #0x1\n" + " bl debug_sub_808F31C\n" + " pop {r0}\n" + " bx r0\n" + "._387:\n" + " .align 2, 0\n" + "._386:\n" + " .word gScriptResult\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DAD4() +{ + asm( + " push {lr}\n" + " ldr r0, ._390\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._388 @cond_branch\n" + " mov r2, #0x1\n" + " b ._389\n" + "._391:\n" + " .align 2, 0\n" + "._390:\n" + " .word gMain\n" + "._388:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._392 @cond_branch\n" + " ldr r2, ._393\n" + "._389:\n" + " ldr r1, ._393 + 4\n" + " ldrh r0, [r1]\n" + " add r0, r2, r0\n" + " strh r0, [r1]\n" + "._392:\n" + " pop {r0}\n" + " bx r0\n" + "._394:\n" + " .align 2, 0\n" + "._393:\n" + " .word 0xffff\n" + " .word gScriptResult\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DB0C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._395\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._395 + 4\n" + " ldr r0, ._395 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._396:\n" + " .align 2, 0\n" + "._395:\n" + " .word gUnknown_Debug_083C3D08\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DB5C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DB5C() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._397 @cond_branch\n" + " mov r0, #0x0\n" + " b ._400\n" + "._397:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._399 @cond_branch\n" + " ldr r2, ._401\n" + " ldr r0, ._401 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._400\n" + "._402:\n" + " .align 2, 0\n" + "._401:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C3D08\n" + "._399:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._400:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DBA0() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x11\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._403\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x8\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\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" + " ldr r0, ._403 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._403 + 8\n" + " ldr r0, ._403 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._404:\n" + " .align 2, 0\n" + "._403:\n" + " .word gUnknown_Debug_083C432C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DBF8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._405\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._405 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._405 + 8\n" + " ldr r0, ._405 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._406:\n" + " .align 2, 0\n" + "._405:\n" + " .word gUnknown_Debug_083C436C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DC50() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._407\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._407 + 4\n" + " mov r0, #0x2\n" + " strb r0, [r1]\n" + " ldr r1, ._407 + 8\n" + " ldr r0, ._407 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._408:\n" + " .align 2, 0\n" + "._407:\n" + " .word gUnknown_Debug_083C43B4\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DCA8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._409\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._409 + 4\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + " ldr r1, ._409 + 8\n" + " ldr r0, ._409 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._410:\n" + " .align 2, 0\n" + "._409:\n" + " .word gUnknown_Debug_083C43FC\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DD00() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._411\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._411 + 4\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r1, ._411 + 8\n" + " ldr r0, ._411 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._412:\n" + " .align 2, 0\n" + "._411:\n" + " .word gUnknown_Debug_083C4444\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DD58() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._413\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._413 + 4\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " ldr r1, ._413 + 8\n" + " ldr r0, ._413 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._414:\n" + " .align 2, 0\n" + "._413:\n" + " .word gUnknown_Debug_083C448C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DDB0() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._415\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r1, ._415 + 4\n" + " mov r0, #0x6\n" + " strb r0, [r1]\n" + " ldr r1, ._415 + 8\n" + " ldr r0, ._415 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._416:\n" + " .align 2, 0\n" + "._415:\n" + " .word gUnknown_Debug_83C44C4\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DE08() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._417\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._417 + 4\n" + " mov r0, #0x7\n" + " strb r0, [r1]\n" + " ldr r1, ._417 + 8\n" + " ldr r0, ._417 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._418:\n" + " .align 2, 0\n" + "._417:\n" + " .word gUnknown_Debug_83C44EC\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DE60() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._419\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._419 + 4\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldr r1, ._419 + 8\n" + " ldr r0, ._419 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._420:\n" + " .align 2, 0\n" + "._419:\n" + " .word gUnknown_Debug_083C4534\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DEB8() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._424\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808DF64\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808DF04\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._421 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._422 @cond_branch\n" + "._421:\n" + " mov r0, #0x0\n" + " b ._423\n" + "._425:\n" + " .align 2, 0\n" + "._424:\n" + " .word gDebug_03000700+0xf\n" + "._422:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._423:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DF04() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._428\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._426 @cond_branch\n" + " ldr r0, ._428 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._427:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl VarGet\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x10\n" + " lsr r2, r2, #0x10\n" + " mov r0, #0x18\n" + " add r1, r4, #0\n" + " bl debug_sub_808F31C\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._427 @cond_branch\n" + "._426:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._429:\n" + " .align 2, 0\n" + "._428:\n" + " .word gUnknown_Debug_083C457C\n" + " .word gUnknown_Debug_083C457C+0xa\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DF64() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._432\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._430 @cond_branch\n" + " mov r5, #0x1\n" + " b ._431\n" + "._433:\n" + " .align 2, 0\n" + "._432:\n" + " .word gMain\n" + "._430:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._434 @cond_branch\n" + " ldr r5, ._435\n" + "._431:\n" + " ldr r1, ._435 + 4\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " add r0, r0, r3\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " ldrh r4, [r0]\n" + " add r0, r4, #0\n" + " bl VarGet\n" + " add r1, r0, #0\n" + " add r1, r5, r1\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " bl VarSet\n" + "._434:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._436:\n" + " .align 2, 0\n" + "._435:\n" + " .word 0xffff\n" + " .word gUnknown_Debug_083C457C+0xa\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DFC0() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._437\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r1, ._437 + 4\n" + " ldr r0, ._437 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._438:\n" + " .align 2, 0\n" + "._437:\n" + " .word gUnknown_Debug_083C377C\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E010+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E010() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._439 @cond_branch\n" + " mov r0, #0x0\n" + " b ._442\n" + "._439:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._441 @cond_branch\n" + " ldr r2, ._443\n" + " ldr r0, ._443 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._442\n" + "._444:\n" + " .align 2, 0\n" + "._443:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C377C\n" + "._441:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._442:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E054() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._445\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r0, ._445 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._445 + 8\n" + " ldr r0, ._445 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._446:\n" + " .align 2, 0\n" + "._445:\n" + " .word gUnknown_Debug_083C3AA0\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E264+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E0AC() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._447\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x5\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl InitMenu\n" + " ldr r1, ._447 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._447 + 8\n" + " ldr r0, ._447 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._448:\n" + " .align 2, 0\n" + "._447:\n" + " .word gUnknown_Debug_83C3AE0\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E264+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E104() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._449\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._449 + 4\n" + " mov r0, #0x2\n" + " strb r0, [r1]\n" + " ldr r1, ._449 + 8\n" + " ldr r0, ._449 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._450:\n" + " .align 2, 0\n" + "._449:\n" + " .word gUnknown_Debug_83C3B28\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E264+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E15C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._451\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._451 + 4\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + " ldr r1, ._451 + 8\n" + " ldr r0, ._451 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._452:\n" + " .align 2, 0\n" + "._451:\n" + " .word gUnknown_Debug_83C3B70\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E264+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E1B4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._453\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._453 + 4\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r1, ._453 + 8\n" + " ldr r0, ._453 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._454:\n" + " .align 2, 0\n" + "._453:\n" + " .word gUnknown_Debug_83C3BB8\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E264+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E20C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._455\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r1, ._455 + 4\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " ldr r1, ._455 + 8\n" + " ldr r0, ._455 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._456:\n" + " .align 2, 0\n" + "._455:\n" + " .word gUnknown_Debug_83C3C00\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E264+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E264() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._460\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808E310\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808E2B0\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._457 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._458 @cond_branch\n" + "._457:\n" + " mov r0, #0x0\n" + " b ._459\n" + "._461:\n" + " .align 2, 0\n" + "._460:\n" + " .word gDebug_03000700+0xf\n" + "._458:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._459:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E2B0() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._464\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._462 @cond_branch\n" + " ldr r0, ._464 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._463:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl VarGet\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x10\n" + " lsr r2, r2, #0x10\n" + " mov r0, #0x18\n" + " add r1, r4, #0\n" + " bl debug_sub_808F31C\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._463 @cond_branch\n" + "._462:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._465:\n" + " .align 2, 0\n" + "._464:\n" + " .word gUnknown_Debug_083C3C48\n" + " .word gUnknown_Debug_083C3C48+0x6\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E310() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._468\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._466 @cond_branch\n" + " mov r5, #0x1\n" + " b ._467\n" + "._469:\n" + " .align 2, 0\n" + "._468:\n" + " .word gMain\n" + "._466:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._470 @cond_branch\n" + " ldr r5, ._471\n" + "._467:\n" + " ldr r1, ._471 + 4\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " add r0, r0, r3\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " ldrh r4, [r0]\n" + " add r0, r4, #0\n" + " bl VarGet\n" + " add r1, r0, #0\n" + " add r1, r5, r1\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " bl VarSet\n" + "._470:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._472:\n" + " .align 2, 0\n" + "._471:\n" + " .word 0xffff\n" + " .word gUnknown_Debug_083C3C48+0x6\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E36C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._473\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x5\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl InitMenu\n" + " ldr r1, ._473 + 4\n" + " ldr r0, ._473 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._474:\n" + " .align 2, 0\n" + "._473:\n" + " .word gUnknown_Debug_083C32AC\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E3BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E3BC() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._475 @cond_branch\n" + " mov r0, #0x0\n" + " b ._478\n" + "._475:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._477 @cond_branch\n" + " ldr r2, ._479\n" + " ldr r0, ._479 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._478\n" + "._480:\n" + " .align 2, 0\n" + "._479:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C32AC\n" + "._477:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._478:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E400() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._481\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl InitMenu\n" + " ldr r0, ._481 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._481 + 8\n" + " ldr r0, ._481 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._482:\n" + " .align 2, 0\n" + "._481:\n" + " .word gUnknown_Debug_083C347C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E5B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E458() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._483\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._483 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._483 + 8\n" + " ldr r0, ._483 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._484:\n" + " .align 2, 0\n" + "._483:\n" + " .word gUnknown_Debug_083C3494\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E5B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E4B0() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._485\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r1, ._485 + 4\n" + " mov r0, #0x2\n" + " strb r0, [r1]\n" + " ldr r1, ._485 + 8\n" + " ldr r0, ._485 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._486:\n" + " .align 2, 0\n" + "._485:\n" + " .word gUnknown_Debug_083C34A4\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E5B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E508() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._487\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._487 + 4\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + " ldr r1, ._487 + 8\n" + " ldr r0, ._487 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._488:\n" + " .align 2, 0\n" + "._487:\n" + " .word gUnknown_Debug_083C34D4\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E5B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E560() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._489\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x5\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl InitMenu\n" + " ldr r1, ._489 + 4\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r1, ._489 + 8\n" + " ldr r0, ._489 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._490:\n" + " .align 2, 0\n" + "._489:\n" + " .word gUnknown_Debug_083C351C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E5B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E5B8() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._494\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808E604\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808E660\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._491 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._492 @cond_branch\n" + "._491:\n" + " mov r0, #0x0\n" + " b ._493\n" + "._495:\n" + " .align 2, 0\n" + "._494:\n" + " .word gDebug_03000700+0xf\n" + "._492:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._493:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E604() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._498\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._496 @cond_branch\n" + " mov r5, #0x1\n" + " b ._497\n" + "._499:\n" + " .align 2, 0\n" + "._498:\n" + " .word gMain\n" + "._496:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._500 @cond_branch\n" + " ldr r5, ._501\n" + "._497:\n" + " ldr r1, ._501 + 4\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " add r0, r0, r3\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " ldrh r4, [r0]\n" + " add r0, r4, #0\n" + " bl VarGet\n" + " add r1, r0, #0\n" + " add r1, r5, r1\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " bl VarSet\n" + "._500:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._502:\n" + " .align 2, 0\n" + "._501:\n" + " .word 0xffff\n" + " .word gUnknown_Debug_083C3544+0x6\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E660() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._505\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._503 @cond_branch\n" + " ldr r0, ._505 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._504:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl VarGet\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x10\n" + " lsr r2, r2, #0x10\n" + " mov r0, #0x18\n" + " add r1, r4, #0\n" + " bl debug_sub_808F31C\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._504 @cond_branch\n" + "._503:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._506:\n" + " .align 2, 0\n" + "._505:\n" + " .word gUnknown_Debug_083C3544\n" + " .word gUnknown_Debug_083C3544+0x6\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E6C0() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._507\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._507 + 4\n" + " ldr r0, ._507 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._508:\n" + " .align 2, 0\n" + "._507:\n" + " .word gUnknown_Debug_083C4644\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E710+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E710() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._509 @cond_branch\n" + " mov r0, #0x0\n" + " b ._512\n" + "._509:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._511 @cond_branch\n" + " ldr r2, ._513\n" + " ldr r0, ._513 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._512\n" + "._514:\n" + " .align 2, 0\n" + "._513:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C4644\n" + "._511:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._512:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E754() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._515\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r0, ._515 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._515 + 8\n" + " ldr r0, ._515 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._516:\n" + " .align 2, 0\n" + "._515:\n" + " .word gUnknown_Debug_083C470C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E804+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E7AC() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._517\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._517 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._517 + 8\n" + " ldr r0, ._517 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._518:\n" + " .align 2, 0\n" + "._517:\n" + " .word gUnknown_Debug_083C4754C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E804+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E804() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._522\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808E850\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808E8AC\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._519 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._520 @cond_branch\n" + "._519:\n" + " mov r0, #0x0\n" + " b ._521\n" + "._523:\n" + " .align 2, 0\n" + "._522:\n" + " .word gDebug_03000700+0xf\n" + "._520:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._521:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E850() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._526\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._524 @cond_branch\n" + " mov r5, #0x1\n" + " b ._525\n" + "._527:\n" + " .align 2, 0\n" + "._526:\n" + " .word gMain\n" + "._524:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._528 @cond_branch\n" + " ldr r5, ._529\n" + "._525:\n" + " ldr r1, ._529 + 4\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " add r0, r0, r3\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " ldrh r4, [r0]\n" + " add r0, r4, #0\n" + " bl VarGet\n" + " add r1, r0, #0\n" + " add r1, r5, r1\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " bl VarSet\n" + "._528:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._530:\n" + " .align 2, 0\n" + "._529:\n" + " .word 0xffff\n" + " .word gUnknown_Debug_083C478C+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E8AC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._533\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._531 @cond_branch\n" + " ldr r0, ._533 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._532:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl VarGet\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x10\n" + " lsr r2, r2, #0x10\n" + " mov r0, #0x18\n" + " add r1, r4, #0\n" + " bl debug_sub_808F31C\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._532 @cond_branch\n" + "._531:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._534:\n" + " .align 2, 0\n" + "._533:\n" + " .word gUnknown_Debug_083C478C\n" + " .word gUnknown_Debug_083C478C+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E90C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._535\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._535 + 4\n" + " ldr r0, ._535 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._536:\n" + " .align 2, 0\n" + "._535:\n" + " .word gUnknown_Debug_083C35C4\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E95C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E95C() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._537 @cond_branch\n" + " mov r0, #0x0\n" + " b ._540\n" + "._537:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._539 @cond_branch\n" + " ldr r2, ._541\n" + " ldr r0, ._541 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._540\n" + "._542:\n" + " .align 2, 0\n" + "._541:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C35C4\n" + "._539:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._540:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E9A0() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._543\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r0, ._543 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._543 + 8\n" + " ldr r0, ._543 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._544:\n" + " .align 2, 0\n" + "._543:\n" + " .word gUnknown_Debug_083C369C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808EA50+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E9F8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._545\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._545 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._545 + 8\n" + " ldr r0, ._545 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._546:\n" + " .align 2, 0\n" + "._545:\n" + " .word gUnknown_Debug_083C36E4\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808EA50+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EA50() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._550\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808EAFC\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808EA9C\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._547 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._548 @cond_branch\n" + "._547:\n" + " mov r0, #0x0\n" + " b ._549\n" + "._551:\n" + " .align 2, 0\n" + "._550:\n" + " .word gDebug_03000700+0xf\n" + "._548:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._549:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EA9C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._554\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._552 @cond_branch\n" + " ldr r0, ._554 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._553:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl VarGet\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x10\n" + " lsr r2, r2, #0x10\n" + " mov r0, #0x18\n" + " add r1, r4, #0\n" + " bl debug_sub_808F31C\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._553 @cond_branch\n" + "._552:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._555:\n" + " .align 2, 0\n" + "._554:\n" + " .word gUnknown_Debug_083C371C\n" + " .word gUnknown_Debug_083C371C+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EAFC() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._558\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._556 @cond_branch\n" + " mov r5, #0x1\n" + " b ._557\n" + "._559:\n" + " .align 2, 0\n" + "._558:\n" + " .word gMain\n" + "._556:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._560 @cond_branch\n" + " ldr r5, ._561\n" + "._557:\n" + " ldr r1, ._561 + 4\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " add r0, r0, r3\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " ldrh r4, [r0]\n" + " add r0, r4, #0\n" + " bl VarGet\n" + " add r1, r0, #0\n" + " add r1, r5, r1\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " bl VarSet\n" + "._560:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._562:\n" + " .align 2, 0\n" + "._561:\n" + " .word 0xffff\n" + " .word gUnknown_Debug_083C371C+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EB58() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xc\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._563\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r3, ._563 + 4\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0x8\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xb\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x8\n" + " bl InitMenu\n" + " ldr r1, ._563 + 8\n" + " ldr r0, ._563 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._564:\n" + " .align 2, 0\n" + "._563:\n" + " .word gUnknown_Debug_083C47B2\n" + " .word gUnknown_Debug_083C47F0\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808EC10+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EBB4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xd\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._565\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r3, ._565 + 4\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0x5\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xc\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x5\n" + " bl InitMenu\n" + " ldr r1, ._565 + 8\n" + " ldr r0, ._565 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._566:\n" + " .align 2, 0\n" + "._565:\n" + " .word gUnknown_Debug_083C4830\n" + " .word gUnknown_Debug_083C4888\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808EC5C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EC10() +{ + asm( + " push {r4, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\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 ._568 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._568 @cond_branch\n" + " ldr r1, ._570\n" + " lsl r0, r2, #0x18\n" + " asr r0, r0, #0x18\n" + " ldr r2, ._570 + 4\n" + " add r1, r1, r2\n" + " strh r0, [r1]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._569\n" + "._571:\n" + " .align 2, 0\n" + "._570:\n" + " .word gSaveBlock1\n" + " .word 0x13c8\n" + "._568:\n" + " mov r0, #0x0\n" + "._569:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EC5C() +{ + asm( + " push {r4, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r1, 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 ._573 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._573 @cond_branch\n" + " ldr r0, ._575\n" + " lsl r1, r1, #0x18\n" + " asr r1, r1, #0x8\n" + " lsr r1, r1, #0x10\n" + " bl VarSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._574\n" + "._576:\n" + " .align 2, 0\n" + "._575:\n" + " .word 0x40a7\n" + "._573:\n" + " mov r0, #0x0\n" + "._574:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808ECA4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._577\n" + " ldr r0, ._577 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._578:\n" + " .align 2, 0\n" + "._577:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808ECD0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808ECD0() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._579 @cond_branch\n" + " mov r0, #0x0\n" + " b ._580\n" + "._579:\n" + " bl CloseMenu\n" + " mov r0, #0x2\n" + " bl debug_sub_808F168\n" + " ldr r0, ._581\n" + " bl SetMainCallback2\n" + " ldr r1, ._581 + 4\n" + " ldr r0, ._581 + 8\n" + " str r0, [r1, #0x8]\n" + " mov r0, #0x1\n" + "._580:\n" + " pop {r1}\n" + " bx r1\n" + "._582:\n" + " .align 2, 0\n" + "._581:\n" + " .word CB2_ContestPainting+1\n" + " .word gMain\n" + " .word debug_sub_808B868+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_Config() +{ + asm( + " mov r0, #0x0\n" + " bx lr\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808ED0C() +{ + asm( + " push {lr}\n" + " ldr r2, ._590\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._584 @cond_branch\n" + " ldr r1, ._590 + 4\n" + " ldrh r0, [r1]\n" + " cmp r0, #0x1\n" + " beq ._584 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strh r0, [r1]\n" + "._584:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._586 @cond_branch\n" + " ldr r3, ._590 + 4\n" + " ldrh r1, [r3]\n" + " ldr r0, ._590 + 8\n" + " cmp r1, r0\n" + " beq ._586 @cond_branch\n" + " add r0, r1, #1\n" + " strh r0, [r3]\n" + "._586:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._587 @cond_branch\n" + " ldr r1, ._590 + 4\n" + " ldrh r0, [r1]\n" + " cmp r0, #0xa\n" + " bls ._588 @cond_branch\n" + " sub r0, r0, #0xa\n" + " b ._589\n" + "._591:\n" + " .align 2, 0\n" + "._590:\n" + " .word gMain\n" + " .word gDebug_03000700\n" + " .word 0x19b\n" + "._588:\n" + " mov r0, #0x1\n" + "._589:\n" + " strh r0, [r1]\n" + "._587:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._592 @cond_branch\n" + " ldr r2, ._595\n" + " ldrh r1, [r2]\n" + " ldr r0, ._595 + 4\n" + " cmp r1, r0\n" + " bhi ._593 @cond_branch\n" + " add r0, r1, #0\n" + " add r0, r0, #0xa\n" + " b ._594\n" + "._596:\n" + " .align 2, 0\n" + "._595:\n" + " .word gDebug_03000700\n" + " .word 0x191\n" + "._593:\n" + " ldr r1, ._597\n" + " add r0, r1, #0\n" + "._594:\n" + " strh r0, [r2]\n" + "._592:\n" + " pop {r0}\n" + " bx r0\n" + "._598:\n" + " .align 2, 0\n" + "._597:\n" + " .word 0x19b\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808ED9C() +{ + asm( + " push {lr}\n" + " ldr r2, ._606\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._600 @cond_branch\n" + " ldr r1, ._606 + 4\n" + " ldr r0, [r1]\n" + " cmp r0, #0\n" + " beq ._600 @cond_branch\n" + " sub r0, r0, #0x1\n" + " str r0, [r1]\n" + "._600:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._602 @cond_branch\n" + " ldr r3, ._606 + 4\n" + " ldr r1, [r3]\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._602 @cond_branch\n" + " add r0, r1, #1\n" + " str r0, [r3]\n" + "._602:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._603 @cond_branch\n" + " ldr r1, ._606 + 4\n" + " ldr r0, [r1]\n" + " cmp r0, #0xf\n" + " bls ._604 @cond_branch\n" + " sub r0, r0, #0x10\n" + " b ._605\n" + "._607:\n" + " .align 2, 0\n" + "._606:\n" + " .word gMain\n" + " .word gDebug_03000700+0x8\n" + "._604:\n" + " mov r0, #0x0\n" + "._605:\n" + " str r0, [r1]\n" + "._603:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._608 @cond_branch\n" + " ldr r3, ._611\n" + " ldr r1, [r3]\n" + " mov r0, #0x11\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bhi ._609 @cond_branch\n" + " add r0, r1, #0\n" + " add r0, r0, #0x10\n" + " b ._610\n" + "._612:\n" + " .align 2, 0\n" + "._611:\n" + " .word gDebug_03000700+0x8\n" + "._609:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + "._610:\n" + " str r0, [r3]\n" + "._608:\n" + " ldrh r2, [r2, #0x2e]\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x2\n" + " add r0, r1, #0\n" + " and r0, r0, r2\n" + " cmp r0, r1\n" + " bne ._613 @cond_branch\n" + " ldr r1, ._614\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " str r0, [r1]\n" + "._613:\n" + " pop {r0}\n" + " bx r0\n" + "._615:\n" + " .align 2, 0\n" + "._614:\n" + " .word gDebug_03000700+0x8\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EE3C() +{ + asm( + " push {lr}\n" + " ldr r2, ._622\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._617 @cond_branch\n" + " ldr r1, ._622 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x1\n" + " beq ._617 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._617:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._619 @cond_branch\n" + " ldr r1, ._622 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x5\n" + " beq ._619 @cond_branch\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._619:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._620 @cond_branch\n" + " ldr r1, ._622 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + "._620:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._621 @cond_branch\n" + " ldr r1, ._622 + 4\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + "._621:\n" + " pop {r0}\n" + " bx r0\n" + "._623:\n" + " .align 2, 0\n" + "._622:\n" + " .word gMain\n" + " .word gDebug_03000700+0xc\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EE9C() +{ + asm( + " push {lr}\n" + " ldr r2, ._631\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._625 @cond_branch\n" + " ldr r1, ._631 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x1\n" + " beq ._625 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._625:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._627 @cond_branch\n" + " ldr r1, ._631 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0xf\n" + " beq ._627 @cond_branch\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._627:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._628 @cond_branch\n" + " ldr r1, ._631 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0xa\n" + " bls ._629 @cond_branch\n" + " sub r0, r0, #0xa\n" + " b ._630\n" + "._632:\n" + " .align 2, 0\n" + "._631:\n" + " .word gMain\n" + " .word gDebug_03000700+0xd\n" + "._629:\n" + " mov r0, #0x0\n" + "._630:\n" + " strb r0, [r1]\n" + "._628:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._633 @cond_branch\n" + " ldr r1, ._636\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x5\n" + " bhi ._634 @cond_branch\n" + " add r0, r0, #0xa\n" + " b ._635\n" + "._637:\n" + " .align 2, 0\n" + "._636:\n" + " .word gDebug_03000700+0xd\n" + "._634:\n" + " mov r0, #0xf\n" + "._635:\n" + " strb r0, [r1]\n" + "._633:\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EF14() +{ + asm( + " push {lr}\n" + " ldr r2, ._645\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._639 @cond_branch\n" + " ldr r1, ._645 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x1\n" + " beq ._639 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._639:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._641 @cond_branch\n" + " ldr r1, ._645 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0xf\n" + " beq ._641 @cond_branch\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._641:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._642 @cond_branch\n" + " ldr r1, ._645 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0xa\n" + " bls ._643 @cond_branch\n" + " sub r0, r0, #0xa\n" + " b ._644\n" + "._646:\n" + " .align 2, 0\n" + "._645:\n" + " .word gMain\n" + " .word gDebug_03000700+0xe\n" + "._643:\n" + " mov r0, #0x0\n" + "._644:\n" + " strb r0, [r1]\n" + "._642:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._647 @cond_branch\n" + " ldr r1, ._650\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x5\n" + " bhi ._648 @cond_branch\n" + " add r0, r0, #0xa\n" + " b ._649\n" + "._651:\n" + " .align 2, 0\n" + "._650:\n" + " .word gDebug_03000700+0xe\n" + "._648:\n" + " mov r0, #0xf\n" + "._649:\n" + " strb r0, [r1]\n" + "._647:\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EF8C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " cmp r6, #0x2\n" + " bgt ._653 @cond_branch\n" + " cmp r6, #0\n" + " blt ._653 @cond_branch\n" + " mov r3, #0x0\n" + " ldr r0, ._656\n" + " mov r8, r0\n" + " ldr r4, ._656 + 4\n" + " mov r7, #0x7\n" + " mov r5, #0xf\n" + "._658:\n" + " sub r0, r7, r3\n" + " lsl r0, r0, #0x2\n" + " mov r1, r8\n" + " ldr r2, [r1]\n" + " LSR r2, r0\n" + " and r2, r2, r5\n" + " cmp r2, #0x9\n" + " bhi ._654 @cond_branch\n" + " add r1, r3, r4\n" + " add r0, r2, #0\n" + " add r0, r0, #0xa1\n" + " b ._655\n" + "._657:\n" + " .align 2, 0\n" + "._656:\n" + " .word gDebug_03000700+0x8\n" + " .word gDebug_03000700+0x10\n" + "._654:\n" + " add r1, r3, r4\n" + " add r0, r2, #0\n" + " sub r0, r0, #0x4f\n" + "._655:\n" + " strb r0, [r1]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " cmp r3, #0x7\n" + " bls ._658 @cond_branch\n" + " ldr r0, ._666\n" + " mov r1, #0xff\n" + " strb r1, [r0, #0x8]\n" + " mov r1, #0xc\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + "._653:\n" + " mov r3, #0x0\n" + " ldr r7, ._666\n" + " ldr r5, ._666 + 4\n" + " ldr r2, ._666 + 8\n" + " mov r8, r2\n" + " add r4, r7, #0\n" + " mov r2, #0x0\n" + "._659:\n" + " add r1, r3, #1\n" + " add r0, r1, r4\n" + " strb r2, [r0]\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " cmp r3, #0x9\n" + " bls ._659 @cond_branch\n" + " mov r3, #0x0\n" + " ldrh r2, [r5]\n" + " mov r0, #0xb\n" + " add r1, r2, #0\n" + " mul r1, r1, r0\n" + " mov r2, r8\n" + " add r0, r1, r2\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._661 @cond_branch\n" + " ldr r0, ._666\n" + " mov ip, r0\n" + " mov r5, r8\n" + " add r4, r1, #0\n" + "._662:\n" + " add r1, r3, #1\n" + " mov r0, ip\n" + " add r2, r1, r0\n" + " add r0, r3, r4\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " strb r0, [r2]\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " add r0, r3, r4\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._661 @cond_branch\n" + " cmp r3, #0x9\n" + " bls ._662 @cond_branch\n" + "._661:\n" + " mov r0, #0xb1\n" + " strb r0, [r7]\n" + " mov r0, #0xb2\n" + " strb r0, [r7, #0xb]\n" + " mov r0, #0xff\n" + " strb r0, [r7, #0xc]\n" + " cmp r6, #0x2\n" + " bgt ._664 @cond_branch\n" + " cmp r6, #0\n" + " blt ._664 @cond_branch\n" + " add r0, r7, #0\n" + " mov r1, #0x8\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " b ._665\n" + "._667:\n" + " .align 2, 0\n" + "._666:\n" + " .word gDebug_03000700+0x10\n" + " .word gDebug_03000700\n" + " .word gSpeciesNames\n" + "._664:\n" + " ldr r0, ._672\n" + " mov r1, #0xc\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + "._665:\n" + " ldr r5, ._672\n" + " mov r0, #0xff\n" + " strb r0, [r5, #0x3]\n" + " ldr r4, ._672 + 4\n" + " ldrh r0, [r4]\n" + " mov r1, #0x64\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5]\n" + " ldrh r0, [r4]\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0xa\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x1]\n" + " ldrh r0, [r4]\n" + " mov r1, #0xa\n" + " bl __umodsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x2]\n" + " add r0, r5, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " cmp r6, #0x1\n" + " beq ._668 @cond_branch\n" + " cmp r6, #0x1\n" + " bgt ._669 @cond_branch\n" + " cmp r6, #0\n" + " beq ._670 @cond_branch\n" + " b ._679\n" + "._673:\n" + " .align 2, 0\n" + "._672:\n" + " .word gDebug_03000700+0x10\n" + " .word gDebug_03000700\n" + "._669:\n" + " cmp r6, #0x2\n" + " beq ._674 @cond_branch\n" + " b ._679\n" + "._670:\n" + " ldr r4, ._677\n" + " b ._676\n" + "._678:\n" + " .align 2, 0\n" + "._677:\n" + " .word gDebug_03000700+0xc\n" + "._668:\n" + " ldr r4, ._680\n" + "._676:\n" + " ldrb r0, [r4]\n" + " mov r1, #0x64\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5]\n" + " ldrb r0, [r4]\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0xa\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x1]\n" + " ldrb r0, [r4]\n" + " mov r1, #0xa\n" + " bl __umodsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x2]\n" + " add r0, r5, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " b ._679\n" + "._681:\n" + " .align 2, 0\n" + "._680:\n" + " .word gDebug_03000700+0xd\n" + "._674:\n" + " ldr r4, ._682\n" + " ldrb r0, [r4]\n" + " mov r1, #0x64\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5]\n" + " ldrb r0, [r4]\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0xa\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x1]\n" + " ldrb r0, [r4]\n" + " mov r1, #0xa\n" + " bl __umodsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x2]\n" + " add r0, r5, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + "._679:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._683:\n" + " .align 2, 0\n" + "._682:\n" + " .word gDebug_03000700+0xe\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F168() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " ldr r4, ._686\n" + " ldr r0, ._686 + 4\n" + " ldrh r0, [r0]\n" + " strh r0, [r4, #0x8]\n" + " ldr r0, ._686 + 8\n" + " ldr r0, [r0]\n" + " str r0, [r4, #0x4]\n" + " ldr r0, ._686 + 12\n" + " ldr r0, [r0]\n" + " str r0, [r4]\n" + " cmp r1, #0x5\n" + " bls ._684 @cond_branch\n" + " b ._707\n" + "._684:\n" + " lsl r0, r1, #0x2\n" + " ldr r1, ._686 + 16\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._687:\n" + " .align 2, 0\n" + "._686:\n" + " .word +0x2015de0\n" + " .word gDebug_03000700\n" + " .word gDebug_03000700+0x4\n" + " .word gDebug_03000700+0x8\n" + " .word ._688\n" + "._688:\n" + " .word ._689\n" + " .word ._690\n" + " .word ._691\n" + " .word ._692\n" + " .word ._693\n" + " .word ._694\n" + "._689:\n" + " ldr r0, ._696\n" + " ldr r2, ._696 + 4\n" + " add r1, r0, r2\n" + " mov r2, #0x0\n" + " strb r2, [r1]\n" + " ldr r1, ._696 + 8\n" + " add r0, r0, r1\n" + " strb r2, [r0]\n" + " ldr r0, ._696 + 12\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r4, #0xa]\n" + " add r0, r4, #0\n" + " add r0, r0, #0x16\n" + " ldr r1, ._696 + 16\n" + " bl StringCopy\n" + " b ._704\n" + "._697:\n" + " .align 2, 0\n" + "._696:\n" + " .word +0x2000000\n" + " .word 0x15ddf\n" + " .word 0x15dde\n" + " .word gDebug_03000700+0xc\n" + " .word gUnknown_Debug_083C48BB\n" + "._690:\n" + " ldr r1, ._699\n" + " ldr r0, ._699 + 4\n" + " add r2, r1, r0\n" + " mov r0, #0x0\n" + " strb r0, [r2]\n" + " ldr r2, ._699 + 8\n" + " add r1, r1, r2\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldr r0, ._699 + 12\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x1\n" + " b ._698\n" + "._700:\n" + " .align 2, 0\n" + "._699:\n" + " .word +0x2000000\n" + " .word 0x15ddf\n" + " .word 0x15dde\n" + " .word gDebug_03000700+0xd\n" + "._691:\n" + " ldr r1, ._702\n" + " ldr r0, ._702 + 4\n" + " add r2, r1, r0\n" + " mov r0, #0x1\n" + " strb r0, [r2]\n" + " ldr r2, ._702 + 8\n" + " add r1, r1, r2\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldr r0, ._702 + 12\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r4, #0xa]\n" + " b ._707\n" + "._703:\n" + " .align 2, 0\n" + "._702:\n" + " .word +0x2000000\n" + " .word 0x15ddf\n" + " .word 0x15dde\n" + " .word gDebug_03000700+0xe\n" + "._692:\n" + " ldr r1, ._705\n" + " ldr r2, ._705 + 4\n" + " add r0, r1, r2\n" + " mov r2, #0x0\n" + " strb r2, [r0]\n" + " ldr r0, ._705 + 8\n" + " add r1, r1, r0\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " strb r2, [r4, #0xa]\n" + " b ._704\n" + "._706:\n" + " .align 2, 0\n" + "._705:\n" + " .word +0x2000000\n" + " .word 0x15ddf\n" + " .word 0x15dde\n" + "._693:\n" + " ldr r1, ._708\n" + " ldr r0, ._708 + 4\n" + " add r2, r1, r0\n" + " mov r0, #0x0\n" + " strb r0, [r2]\n" + " ldr r2, ._708 + 8\n" + " add r1, r1, r2\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " mov r0, #0x3\n" + "._698:\n" + " strb r0, [r4, #0xa]\n" + "._704:\n" + " add r0, r4, #0\n" + " add r0, r0, #0xb\n" + " ldr r1, ._708 + 12\n" + " bl StringCopy\n" + " b ._707\n" + "._709:\n" + " .align 2, 0\n" + "._708:\n" + " .word +0x2000000\n" + " .word 0x15ddf\n" + " .word 0x15dde\n" + " .word gUnknown_Debug_083C48B0\n" + "._694:\n" + " ldr r1, ._710\n" + " ldr r0, ._710 + 4\n" + " add r2, r1, r0\n" + " mov r0, #0x0\n" + " strb r0, [r2]\n" + " ldr r2, ._710 + 8\n" + " add r1, r1, r2\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " mov r0, #0x9\n" + " strb r0, [r4, #0xa]\n" + " add r0, r4, #0\n" + " add r0, r0, #0xb\n" + " ldr r1, ._710 + 12\n" + " bl StringCopy\n" + "._707:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._711:\n" + " .align 2, 0\n" + "._710:\n" + " .word +0x2000000\n" + " .word 0x15ddf\n" + " .word 0x15dde\n" + " .word gUnknown_Debug_083C48B0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F2E0() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " cmp r2, #0\n" + " bne ._712 @cond_branch\n" + " ldr r1, ._714\n" + " mov r0, #0xa1\n" + " b ._713\n" + "._715:\n" + " .align 2, 0\n" + "._714:\n" + " .word gDebug_03000700+0x10\n" + "._712:\n" + " ldr r1, ._716\n" + " mov r0, #0xa2\n" + "._713:\n" + " strb r0, [r1]\n" + " mov r0, #0xff\n" + " strb r0, [r1, #0x1]\n" + " add r0, r1, #0\n" + " add r1, r4, #0\n" + " add r2, r3, #0\n" + " bl MenuPrint\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._717:\n" + " .align 2, 0\n" + "._716:\n" + " .word gDebug_03000700+0x10\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F31C() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6}\n" + " mov r8, r0\n" + " mov r9, r1\n" + " add r4, r2, #0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " mov r0, r9\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r9, r0\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " ldr r5, ._718\n" + " ldr r6, ._718 + 4\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5]\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r6, #0xfa\n" + " lsl r6, r6, #0x2\n" + " add r1, r6, #0\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x1]\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0x64\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x2]\n" + " add r0, r4, #0\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0xa\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x3]\n" + " add r0, r4, #0\n" + " mov r1, #0xa\n" + " bl __umodsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x4]\n" + " mov r0, #0xff\n" + " strb r0, [r5, #0x5]\n" + " add r0, r5, #0\n" + " mov r1, r8\n" + " mov r2, r9\n" + " bl MenuPrint\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._719:\n" + " .align 2, 0\n" + "._718:\n" + " .word gDebug_03000700+0x10\n" + " .word 0x2710\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_nullsub_66() +{ + asm( + " bx lr\n" + "\n" + ); +} + +#endif diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c new file mode 100644 index 000000000..fed5b4e52 --- /dev/null +++ b/src/debug/watanabe_debug_menu.c @@ -0,0 +1,9846 @@ +#ifdef DEBUG +#include "global.h" + +EWRAM_DATA u8 unk_debug_ewram_0[56] = { 0 }; + +u8 byte_3005E30[0x20]; + +__attribute__((naked)) +void debug_69() +{ + asm( + " bx lr\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C35DC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffff8\n" + " mov r0, #0x0\n" + " bl SetVBlankCallback\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x13\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " add r0, r0, #0xe\n" + " strh r1, [r0]\n" + " sub r0, r0, #0x2\n" + " strh r1, [r0]\n" + " sub r0, r0, #0x2\n" + " strh r1, [r0]\n" + " sub r0, r0, #0x2\n" + " strh r1, [r0]\n" + " add r0, r0, #0x14\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " sub r0, r0, #0x6\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " sub r0, r0, #0x6\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " sub r0, r0, #0x6\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " mov r3, #0xc0\n" + " lsl r3, r3, #0x13\n" + " mov r4, #0xc0\n" + " lsl r4, r4, #0x9\n" + " add r0, sp, #0x4\n" + " mov r8, r0\n" + " mov r2, sp\n" + " mov r6, #0x0\n" + " ldr r1, ._2\n" + " mov r5, #0x80\n" + " lsl r5, r5, #0x5\n" + " ldr r7, ._2 + 4\n" + " mov r0, #0x81\n" + " lsl r0, r0, #0x18\n" + " mov ip, r0\n" + "._1:\n" + " strh r6, [r2]\n" + " mov r0, sp\n" + " str r0, [r1]\n" + " str r3, [r1, #0x4]\n" + " str r7, [r1, #0x8]\n" + " ldr r0, [r1, #0x8]\n" + " add r3, r3, r5\n" + " sub r4, r4, r5\n" + " cmp r4, r5\n" + " bhi ._1 @cond_branch\n" + " strh r6, [r2]\n" + " mov r2, sp\n" + " str r2, [r1]\n" + " str r3, [r1, #0x4]\n" + " lsr r0, r4, #0x1\n" + " mov r2, ip\n" + " orr r0, r0, r2\n" + " str r0, [r1, #0x8]\n" + " ldr r0, [r1, #0x8]\n" + " mov r0, #0xe0\n" + " lsl r0, r0, #0x13\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x3\n" + " mov r4, #0x0\n" + " str r4, [sp, #0x4]\n" + " ldr r2, ._2\n" + " mov r1, r8\n" + " str r1, [r2]\n" + " str r0, [r2, #0x4]\n" + " lsr r0, r3, #0x2\n" + " mov r1, #0x85\n" + " lsl r1, r1, #0x18\n" + " orr r0, r0, r1\n" + " str r0, [r2, #0x8]\n" + " ldr r0, [r2, #0x8]\n" + " mov r1, #0xa0\n" + " lsl r1, r1, #0x13\n" + " mov r0, sp\n" + " strh r4, [r0]\n" + " str r0, [r2]\n" + " str r1, [r2, #0x4]\n" + " lsr r3, r3, #0x1\n" + " mov r0, #0x81\n" + " lsl r0, r0, #0x18\n" + " orr r3, r3, r0\n" + " str r3, [r2, #0x8]\n" + " ldr r0, [r2, #0x8]\n" + " bl ResetPaletteFade\n" + " bl remove_some_task\n" + " bl ResetTasks\n" + " bl ResetSpriteData\n" + " bl ResetPaletteFade\n" + " bl FreeAllSpritePalettes\n" + " ldr r0, ._2 + 8\n" + " bl LoadSpriteSheet\n" + " ldr r0, ._2 + 12\n" + " bl LoadSpritePalette\n" + " ldr r0, ._2 + 16\n" + " bl SetUpWindowConfig\n" + " ldr r0, ._2 + 20\n" + " bl InitMenuWindow\n" + " add sp, sp, #0x8\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._3:\n" + " .align 2, 0\n" + "._2:\n" + " .word 0x40000d4\n" + " .word 0x81000800\n" + " .word stru_83F8828\n" + " .word stru_83F8838\n" + " .word gWindowConfig_81E6C3C\n" + " .word gWindowConfig_81E6CE4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C36F4() +{ + asm( + " push {lr}\n" + " bl RunTasks\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " bl UpdatePaletteFade\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C370C() +{ + asm( + " push {lr}\n" + " ldr r0, ._6\n" + " ldrb r1, [r0, #0x7]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._4 @cond_branch\n" + " ldr r0, ._6 + 4\n" + " bl SetMainCallback2\n" + " b ._5\n" + "._7:\n" + " .align 2, 0\n" + "._6:\n" + " .word gPaletteFade\n" + " .word debug_80C36F4+1\n" + "._4:\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " bl UpdatePaletteFade\n" + "._5:\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C373C() +{ + asm( + " push {lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl DestroyTask\n" + " bl ScriptContext2_Disable\n" + " ldr r0, ._8\n" + " bl SetMainCallback2\n" + " pop {r0}\n" + " bx r0\n" + "._9:\n" + " .align 2, 0\n" + "._8:\n" + " .word sub_80546F0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C3758() +{ + asm( + " push {lr}\n" + " bl LoadOam\n" + " bl ProcessSpriteCopyRequests\n" + " bl TransferPlttBuffer\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C376C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " lsl r1, r1, #0x18\n" + " lsr r7, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " lsr r6, r2, #0x18\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + "._10:\n" + " mov r3, sp\n" + " add r0, r3, r1\n" + " strb r2, [r0]\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " cmp r1, #0x2\n" + " bls ._10 @cond_branch\n" + " mov r1, sp\n" + " mov r0, #0xff\n" + " strb r0, [r1, #0x3]\n" + " mov r4, #0x0\n" + " add r0, r5, #0\n" + " mov r1, #0x64\n" + " bl __udivsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._11 @cond_branch\n" + " mov r1, sp\n" + " add r0, r0, #0xa1\n" + " strb r0, [r1]\n" + " mov r4, #0x1\n" + "._11:\n" + " add r0, r5, #0\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0xa\n" + " bl __udivsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._12 @cond_branch\n" + " cmp r4, #0\n" + " beq ._13 @cond_branch\n" + "._12:\n" + " mov r1, sp\n" + " add r0, r0, #0xa1\n" + " strb r0, [r1, #0x1]\n" + "._13:\n" + " mov r4, sp\n" + " add r0, r5, #0\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0xa\n" + " bl __umodsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r4, #0x2]\n" + " mov r0, sp\n" + " add r1, r7, #0\n" + " add r2, r6, #0\n" + " bl MenuPrint\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C3800() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffff4\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " lsl r1, r1, #0x18\n" + " lsr r6, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " lsr r5, r2, #0x18\n" + " mov r3, #0x0\n" + " ldr r2, ._18\n" + " mov r1, #0x0\n" + "._14:\n" + " mov r7, sp\n" + " add r0, r7, r3\n" + " strb r1, [r0]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " cmp r3, #0x9\n" + " bls ._14 @cond_branch\n" + " add r1, r7, r3\n" + " mov r0, #0xff\n" + " strb r0, [r1]\n" + " mov r3, #0x0\n" + " mov r0, #0xb\n" + " add r1, r4, #0\n" + " mul r1, r1, r0\n" + " add r0, r1, r2\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._16 @cond_branch\n" + " add r4, r2, #0\n" + " add r2, r1, #0\n" + "._17:\n" + " mov r0, sp\n" + " add r1, r0, r3\n" + " add r0, r3, r2\n" + " add r0, r0, r4\n" + " ldrb r0, [r0]\n" + " strb r0, [r1]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " add r0, r3, r2\n" + " add r0, r0, r4\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._16 @cond_branch\n" + " cmp r3, #0x9\n" + " bls ._17 @cond_branch\n" + "._16:\n" + " mov r0, sp\n" + " add r1, r6, #0\n" + " add r2, r5, #0\n" + " bl MenuPrint\n" + " add sp, sp, #0xc\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._19:\n" + " .align 2, 0\n" + "._18:\n" + " .word gSpeciesNames\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C3878() +{ + asm( + " push {lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " cmp r0, #0\n" + " beq ._20 @cond_branch\n" + " cmp r0, #0x1\n" + " beq ._21 @cond_branch\n" + "._20:\n" + " cmp r1, #0x1\n" + " bls ._22 @cond_branch\n" + " sub r0, r1, #1\n" + " b ._23\n" + "._22:\n" + " ldr r1, ._25\n" + " b ._28\n" + "._26:\n" + " .align 2, 0\n" + "._25:\n" + " .word 0x19b\n" + "._21:\n" + " mov r0, #0xcd\n" + " lsl r0, r0, #0x1\n" + " cmp r1, r0\n" + " bhi ._27 @cond_branch\n" + " add r0, r1, #1\n" + "._23:\n" + " lsl r0, r0, #0x10\n" + " lsr r1, r0, #0x10\n" + " b ._28\n" + "._27:\n" + " mov r1, #0x1\n" + "._28:\n" + " add r0, r1, #0\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C38B4() +{ + asm( + " push {lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x10\n" + " lsr r0, r1, #0x10\n" + " cmp r2, #0\n" + " beq ._29 @cond_branch\n" + " cmp r2, #0x1\n" + " beq ._30 @cond_branch\n" + "._29:\n" + " cmp r0, #0\n" + " beq ._31 @cond_branch\n" + " sub r0, r0, #0x1\n" + " b ._32\n" + "._31:\n" + " mov r0, #0x52\n" + " b ._35\n" + "._30:\n" + " cmp r0, #0x51\n" + " bhi ._34 @cond_branch\n" + " add r0, r0, #0x1\n" + "._32:\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " b ._35\n" + "._34:\n" + " mov r0, #0x0\n" + "._35:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C38E4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r2, #0\n" + " add r5, r3, #0\n" + " ldr r6, [sp, #0x1c]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " lsl r1, r1, #0x18\n" + " lsr r7, r1, #0x18\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " lsl r6, r6, #0x18\n" + " lsr r6, r6, #0x18\n" + " ldr r1, ._37\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " bl memcpy\n" + " add r0, r7, #0\n" + " add r1, r4, #0\n" + " add r2, r7, #0\n" + " add r3, r5, #0\n" + " bl MenuFillWindowRectWithBlankTile\n" + " cmp r6, #0\n" + " beq ._36 @cond_branch\n" + " mov r0, sp\n" + " add r1, r7, #0\n" + " mov r2, r8\n" + " bl MenuPrint\n" + "._36:\n" + " add sp, sp, #0x4\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._38:\n" + " .align 2, 0\n" + "._37:\n" + " .word gUnknown_Debug_083F7FD4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C393C() +{ + asm( + " push {lr}\n" + " ldr r1, ._39\n" + " mov r0, #0x1e\n" + " bl ProgramFlashSectorAndVerify\n" + " pop {r0}\n" + " bx r0\n" + "._40:\n" + " .align 2, 0\n" + "._39:\n" + " .word gUnknown_Debug_083F7FD6\n" + "\n" + ); +} + +__attribute__((naked)) +void InitWatanabeDebugMenu() +{ + asm( + " push {r4, lr}\n" + " ldr r0, ._46\n" + " ldr r1, ._46 + 4\n" + " add r4, r0, r1\n" + " ldrb r0, [r4]\n" + " cmp r0, #0x1\n" + " beq ._41 @cond_branch\n" + " cmp r0, #0x1\n" + " ble ._42 @cond_branch\n" + " cmp r0, #0x2\n" + " beq ._43 @cond_branch\n" + " cmp r0, #0x3\n" + " beq ._44 @cond_branch\n" + "._42:\n" + " bl save_serialize_map\n" + " bl sub_8125E2C\n" + " mov r0, #0x1\n" + " strb r0, [r4]\n" + " b ._51\n" + "._47:\n" + " .align 2, 0\n" + "._46:\n" + " .word gMain\n" + " .word 0x43c\n" + "._41:\n" + " bl sub_8125E6C\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._51 @cond_branch\n" + " b ._49\n" + "._43:\n" + " mov r0, #0x37\n" + " bl PlaySE\n" + "._49:\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " strb r0, [r4]\n" + " b ._51\n" + "._44:\n" + " bl IsSEPlaying\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._51 @cond_branch\n" + " bl ScriptContext2_Disable\n" + " ldr r0, ._52\n" + " bl SetMainCallback2\n" + "._51:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._53:\n" + " .align 2, 0\n" + "._52:\n" + " .word sub_80546F0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void InitSizeComparison() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " bl debug_80C35DC\n" + " ldr r1, ._54\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r0, ._54 + 4\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x1\n" + " mov r2, #0x20\n" + " bl LoadPalette\n" + " ldr r3, ._54 + 8\n" + " ldrh r2, [r3]\n" + " mov r0, #0x0\n" + " strh r0, [r3]\n" + " ldr r4, ._54 + 12\n" + " ldrh r0, [r4]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " strh r0, [r4]\n" + " strh r2, [r3]\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x10\n" + " mov r3, #0x0\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._54 + 16\n" + " bl SetVBlankCallback\n" + " ldr r0, ._54 + 20\n" + " bl SetMainCallback2\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x13\n" + " mov r2, #0x8a\n" + " lsl r2, r2, #0x5\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, ._54 + 24\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._54 + 28\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " mov r0, #0xfc\n" + " strh r0, [r1, #0x8]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._55:\n" + " .align 2, 0\n" + "._54:\n" + " .word gReservedSpritePaletteCount\n" + " .word unk_debug_ewram_0\n" + " .word 0x4000208\n" + " .word 0x4000200\n" + " .word debug_80C3758+1\n" + " .word debug_80C370C+1\n" + " .word debug_80C3A50+1\n" + " .word gTasks\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C3A50() +{ + 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, #0xffffffd8\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._56\n" + " lsl r2, r0, #0x2\n" + " add r0, r2, r0\n" + " lsl r0, r0, #0x3\n" + " add r7, r0, r1\n" + " ldrh r0, [r7, #0x8]\n" + " str r0, [sp, #0x4]\n" + " bl NationalPokedexNumToSpecies\n" + " mov r1, sp\n" + " strh r0, [r1, #0x8]\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x10\n" + " str r2, [sp, #0xc]\n" + " lsr r2, r2, #0x10\n" + " mov r9, r2\n" + " ldr r3, ._56 + 4\n" + " mov r8, r3\n" + " mov r0, #0x6\n" + " mov r1, #0x0\n" + " mov r2, #0x17\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x5\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " ldr r5, ._56 + 8\n" + " add r0, r5, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r4, ._56 + 12\n" + " add r0, r4, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0x18\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " add r0, r5, #0\n" + " mov r1, #0x19\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0x19\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " mov r1, #0xa\n" + " mov r2, #0xb\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._56 + 16\n" + " mov r1, #0x1\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " ldr r0, ._56 + 20\n" + " mov r1, #0x1\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " ldr r0, ._56 + 24\n" + " mov r1, #0x1\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldr r0, ._56 + 28\n" + " mov r1, #0x1\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " mov r0, #0xc\n" + " mov r1, #0xa\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._56 + 32\n" + " mov r1, #0xd\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " ldr r0, ._56 + 36\n" + " mov r1, #0xd\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " mov r0, #0xc\n" + " mov r1, #0x10\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._56 + 40\n" + " mov r1, #0xd\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " ldr r0, ._56 + 44\n" + " mov r1, #0x18\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " mov r0, r9\n" + " mov r1, #0x12\n" + " mov r2, #0x11\n" + " bl debug_80C3800\n" + " mov r1, r8\n" + " ldrb r0, [r1, #0x8]\n" + " mov r1, #0x98\n" + " mov r2, #0x28\n" + " mov r3, #0x0\n" + " bl sub_8091A4C\n" + " mov r2, sp\n" + " strh r0, [r2, #0x10]\n" + " add r3, r0, #0\n" + " lsl r3, r3, #0x10\n" + " str r3, [sp, #0x18]\n" + " lsr r0, r3, #0x10\n" + " str r0, [sp, #0x14]\n" + " lsl r4, r0, #0x4\n" + " add r4, r4, r0\n" + " lsl r4, r4, #0x2\n" + " ldr r1, ._56 + 48\n" + " add r4, r4, r1\n" + " ldrb r1, [r4, #0x1]\n" + " mov r2, #0x4\n" + " neg r2, r2\n" + " mov sl, r2\n" + " mov r0, sl\n" + " and r0, r0, r1\n" + " mov r3, #0x1\n" + " orr r0, r0, r3\n" + " strb r0, [r4, #0x1]\n" + " ldrb r1, [r4, #0x3]\n" + " mov r0, #0x3f\n" + " neg r0, r0\n" + " mov r9, r0\n" + " and r0, r0, r1\n" + " mov r1, #0x4\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0x3]\n" + " ldrb r1, [r4, #0x5]\n" + " sub r2, r2, #0x9\n" + " mov r8, r2\n" + " mov r0, r8\n" + " and r0, r0, r1\n" + " mov r3, #0xf\n" + " and r0, r0, r3\n" + " strb r0, [r4, #0x5]\n" + " mov r0, #0x0\n" + " bl GetSpritePaletteTagByPaletteNum\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl FreeSpritePaletteByTag\n" + " ldr r0, ._56 + 52\n" + " ldr r1, [sp, #0x4]\n" + " lsl r5, r1, #0x3\n" + " add r5, r5, r1\n" + " lsl r5, r5, #0x2\n" + " add r5, r5, r0\n" + " ldrh r6, [r5, #0x20]\n" + " strh r6, [r4, #0x26]\n" + " ldrh r4, [r5, #0x1e]\n" + " str r4, [sp]\n" + " mov r0, #0x2\n" + " add r1, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl SetOamMatrix\n" + " mov r2, sp\n" + " ldrh r2, [r2, #0x14]\n" + " strh r2, [r7, #0xe]\n" + " strh r6, [r7, #0x10]\n" + " strh r4, [r7, #0x14]\n" + " ldr r0, [sp, #0x4]\n" + " mov r1, #0x58\n" + " mov r2, #0x28\n" + " mov r3, #0x1\n" + " bl sub_80918EC\n" + " mov r3, sp\n" + " strh r0, [r3, #0x1c]\n" + " lsl r0, r0, #0x10\n" + " str r0, [sp, #0x24]\n" + " lsr r1, r0, #0x10\n" + " str r1, [sp, #0x20]\n" + " lsl r4, r1, #0x4\n" + " add r4, r4, r1\n" + " lsl r4, r4, #0x2\n" + " ldr r2, ._56 + 48\n" + " add r4, r4, r2\n" + " ldrb r0, [r4, #0x1]\n" + " mov r3, sl\n" + " and r3, r3, r0\n" + " mov r0, #0x1\n" + " orr r3, r3, r0\n" + " strb r3, [r4, #0x1]\n" + " ldrb r0, [r4, #0x3]\n" + " mov r1, r9\n" + " and r1, r1, r0\n" + " mov r0, #0x2\n" + " orr r1, r1, r0\n" + " strb r1, [r4, #0x3]\n" + " ldrb r0, [r4, #0x5]\n" + " mov r2, r8\n" + " and r2, r2, r0\n" + " mov r3, #0xf\n" + " and r2, r2, r3\n" + " strb r2, [r4, #0x5]\n" + " mov r0, #0x0\n" + " bl GetSpritePaletteTagByPaletteNum\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl FreeSpritePaletteByTag\n" + " ldrh r0, [r5, #0x1c]\n" + " mov r8, r0\n" + " strh r0, [r4, #0x26]\n" + " ldrh r4, [r5, #0x1a]\n" + " str r4, [sp]\n" + " mov r0, #0x1\n" + " add r1, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl SetOamMatrix\n" + " mov r1, sp\n" + " ldrh r1, [r1, #0x20]\n" + " strh r1, [r7, #0xc]\n" + " mov r2, r8\n" + " strh r2, [r7, #0x12]\n" + " strh r4, [r7, #0x16]\n" + " mov r3, #0x0\n" + " strh r3, [r7, #0x18]\n" + " strh r3, [r7, #0x1a]\n" + " ldr r1, ._56 + 56\n" + " ldr r2, ._56 + 60\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " mov r0, #0x1f\n" + " strh r0, [r1]\n" + " ldr r2, ._56 + 64\n" + " mov r3, #0x18\n" + " ldsh r1, [r7, r3]\n" + " lsl r1, r1, #0x6\n" + " add r0, r1, #0\n" + " add r0, r0, #0x38\n" + " lsl r0, r0, #0x8\n" + " add r1, r1, #0x78\n" + " add r0, r0, r1\n" + " strh r0, [r2]\n" + " ldr r1, ._56 + 68\n" + " ldr r2, ._56 + 72\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " sub r1, r1, #0x2\n" + " ldr r3, ._56 + 76\n" + " add r0, r3, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._56 + 80\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0xa\n" + " mov r0, #0xe1\n" + " strh r0, [r1]\n" + " ldr r0, ._56 + 84\n" + " mov r3, #0x0\n" + " strh r3, [r0]\n" + " add r1, r1, #0x4\n" + " mov r0, #0x7\n" + " strh r0, [r1]\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x13\n" + " ldrh r0, [r2]\n" + " mov r3, #0xc0\n" + " lsl r3, r3, #0x7\n" + " add r1, r3, #0\n" + " orr r0, r0, r1\n" + " strh r0, [r2]\n" + " ldr r0, ._56 + 88\n" + " str r0, [r7]\n" + " add sp, sp, #0x28\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" + "._57:\n" + " .align 2, 0\n" + "._56:\n" + " .word gTasks\n" + " .word gSaveBlock2\n" + " .word gUnknown_Debug_083F7FD6+0x4\n" + " .word gUnknown_Debug_083F7FDE\n" + " .word gUnknown_Debug_083F7FE2\n" + " .word gUnknown_Debug_083F7FED\n" + " .word gUnknown_Debug_083F7FF6\n" + " .word gUnknown_Debug_083F8001\n" + " .word gUnknown_Debug_083F800C\n" + " .word gUnknown_Debug_083F8019\n" + " .word gUnknown_Debug_083F8022\n" + " .word gUnknown_Debug_083F8028\n" + " .word gSprites\n" + " .word gPokedexEntries\n" + " .word 0x4000048\n" + " .word 0x3f1f\n" + " .word 0x4000040\n" + " .word 0x4000044\n" + " .word 0x848\n" + " .word 0x31bf\n" + " .word 0x14f\n" + " .word 0x4000052\n" + " .word debug_80C3D2C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C3D2C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " add r7, r6, #0\n" + " ldr r4, ._60\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._58 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._60 + 4\n" + " bl SetMainCallback2\n" + " ldr r1, ._60 + 8\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._60 + 12\n" + " str r1, [r0]\n" + " b ._117\n" + "._61:\n" + " .align 2, 0\n" + "._60:\n" + " .word gMain\n" + " .word debug_80C370C+1\n" + " .word gTasks\n" + " .word debug_80C373C+1\n" + "._58:\n" + " mov r5, #0x1\n" + " add r0, r5, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._62 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._64\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldrh r1, [r0, #0x18]\n" + " mov r2, #0x1\n" + " eor r1, r1, r2\n" + " strh r1, [r0, #0x18]\n" + " b ._117\n" + "._65:\n" + " .align 2, 0\n" + "._64:\n" + " .word gTasks\n" + "._62:\n" + " ldrh r1, [r4, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._66 @cond_branch\n" + " ldr r1, ._70\n" + " lsl r2, r6, #0x2\n" + " add r0, r2, r6\n" + " lsl r0, r0, #0x3\n" + " add r3, r0, r1\n" + " mov r5, #0x18\n" + " ldsh r0, [r3, r5]\n" + " mov r8, r1\n" + " cmp r0, #0\n" + " beq ._67 @cond_branch\n" + " ldrh r1, [r4, #0x2c]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._68 @cond_branch\n" + " ldrh r0, [r3, #0x14]\n" + " add r0, r0, #0x10\n" + " b ._69\n" + "._71:\n" + " .align 2, 0\n" + "._70:\n" + " .word gTasks\n" + "._68:\n" + " ldrh r0, [r3, #0x14]\n" + " add r0, r0, #0x1\n" + "._69:\n" + " strh r0, [r3, #0x14]\n" + " add r0, r2, r7\n" + " lsl r0, r0, #0x3\n" + " mov r2, r8\n" + " add r1, r0, r2\n" + " ldrh r0, [r1, #0x14]\n" + " mov r6, #0x80\n" + " lsl r6, r6, #0x8\n" + " cmp r0, r6\n" + " bhi ._72 @cond_branch\n" + " b ._117\n" + "._72:\n" + " strh r6, [r1, #0x14]\n" + " b ._117\n" + "._67:\n" + " ldrh r1, [r4, #0x2c]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._75 @cond_branch\n" + " ldrh r0, [r3, #0x16]\n" + " add r0, r0, #0x10\n" + " b ._76\n" + "._75:\n" + " ldrh r0, [r3, #0x16]\n" + " add r0, r0, #0x1\n" + "._76:\n" + " strh r0, [r3, #0x16]\n" + " add r0, r2, r7\n" + " lsl r0, r0, #0x3\n" + " mov r4, r8\n" + " add r1, r0, r4\n" + " ldrh r0, [r1, #0x16]\n" + " mov r6, #0x80\n" + " lsl r6, r6, #0x8\n" + " cmp r0, r6\n" + " bhi ._77 @cond_branch\n" + " b ._117\n" + "._77:\n" + " strh r6, [r1, #0x16]\n" + " b ._117\n" + "._66:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._80 @cond_branch\n" + " ldr r1, ._84\n" + " lsl r2, r6, #0x2\n" + " add r0, r2, r6\n" + " lsl r0, r0, #0x3\n" + " add r3, r0, r1\n" + " mov r5, #0x18\n" + " ldsh r0, [r3, r5]\n" + " mov r8, r1\n" + " cmp r0, #0\n" + " beq ._81 @cond_branch\n" + " ldrh r1, [r4, #0x2c]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._82 @cond_branch\n" + " ldrh r0, [r3, #0x14]\n" + " sub r0, r0, #0x10\n" + " b ._83\n" + "._85:\n" + " .align 2, 0\n" + "._84:\n" + " .word gTasks\n" + "._82:\n" + " ldrh r0, [r3, #0x14]\n" + " sub r0, r0, #0x1\n" + "._83:\n" + " strh r0, [r3, #0x14]\n" + " add r0, r2, r7\n" + " lsl r0, r0, #0x3\n" + " mov r2, r8\n" + " add r1, r0, r2\n" + " mov r4, #0x14\n" + " ldsh r0, [r1, r4]\n" + " cmp r0, #0xff\n" + " ble ._86 @cond_branch\n" + " b ._117\n" + "._86:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " strh r0, [r1, #0x14]\n" + " b ._117\n" + "._81:\n" + " ldrh r1, [r4, #0x2c]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._89 @cond_branch\n" + " ldrh r0, [r3, #0x16]\n" + " sub r0, r0, #0x10\n" + " b ._90\n" + "._89:\n" + " ldrh r0, [r3, #0x16]\n" + " sub r0, r0, #0x1\n" + "._90:\n" + " strh r0, [r3, #0x16]\n" + " add r0, r2, r7\n" + " lsl r0, r0, #0x3\n" + " mov r5, r8\n" + " add r1, r0, r5\n" + " mov r2, #0x16\n" + " ldsh r0, [r1, r2]\n" + " cmp r0, #0xff\n" + " ble ._91 @cond_branch\n" + " b ._117\n" + "._91:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " strh r0, [r1, #0x16]\n" + " b ._117\n" + "._80:\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._94 @cond_branch\n" + " ldr r0, ._97\n" + " lsl r1, r6, #0x2\n" + " add r1, r1, r6\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " mov r4, #0x18\n" + " ldsh r0, [r1, r4]\n" + " cmp r0, #0\n" + " beq ._95 @cond_branch\n" + " ldrh r0, [r1, #0x10]\n" + " sub r0, r0, #0x1\n" + " strh r0, [r1, #0x10]\n" + " b ._117\n" + "._98:\n" + " .align 2, 0\n" + "._97:\n" + " .word gTasks\n" + "._95:\n" + " ldrh r0, [r1, #0x12]\n" + " sub r0, r0, #0x1\n" + " strh r0, [r1, #0x12]\n" + " b ._117\n" + "._94:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._100 @cond_branch\n" + " ldr r0, ._103\n" + " lsl r1, r6, #0x2\n" + " add r1, r1, r6\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " mov r5, #0x18\n" + " ldsh r0, [r1, r5]\n" + " cmp r0, #0\n" + " beq ._101 @cond_branch\n" + " ldrh r0, [r1, #0x10]\n" + " add r0, r0, #0x1\n" + " strh r0, [r1, #0x10]\n" + " b ._117\n" + "._104:\n" + " .align 2, 0\n" + "._103:\n" + " .word gTasks\n" + "._101:\n" + " ldrh r0, [r1, #0x12]\n" + " add r0, r0, #0x1\n" + " strh r0, [r1, #0x12]\n" + " b ._117\n" + "._100:\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._106 @cond_branch\n" + " ldr r2, ._109\n" + " lsl r3, r6, #0x2\n" + " add r0, r3, r6\n" + " lsl r0, r0, #0x3\n" + " add r6, r0, r2\n" + " ldrh r4, [r6, #0x8]\n" + " mov r0, #0x8\n" + " ldsh r1, [r6, r0]\n" + " ldr r0, ._109 + 4\n" + " mov r8, r2\n" + " add r2, r3, #0\n" + " cmp r1, r0\n" + " bgt ._107 @cond_branch\n" + " add r0, r4, #1\n" + " strh r0, [r6, #0x8]\n" + " b ._108\n" + "._110:\n" + " .align 2, 0\n" + "._109:\n" + " .word gTasks\n" + " .word 0x181\n" + "._107:\n" + " strh r5, [r6, #0x8]\n" + "._108:\n" + " add r4, r2, r7\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r8\n" + " mov r2, #0xc\n" + " ldsh r1, [r4, r2]\n" + " b ._111\n" + "._106:\n" + " mov r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._112 @cond_branch\n" + " ldr r1, ._115\n" + " lsl r2, r6, #0x2\n" + " add r0, r2, r6\n" + " lsl r0, r0, #0x3\n" + " add r3, r0, r1\n" + " ldrh r6, [r3, #0x8]\n" + " mov r4, #0x8\n" + " ldsh r0, [r3, r4]\n" + " mov r8, r1\n" + " cmp r0, #0x1\n" + " ble ._113 @cond_branch\n" + " sub r0, r6, #1\n" + " b ._114\n" + "._116:\n" + " .align 2, 0\n" + "._115:\n" + " .word gTasks\n" + "._113:\n" + " mov r0, #0xc1\n" + " lsl r0, r0, #0x1\n" + "._114:\n" + " strh r0, [r3, #0x8]\n" + " add r4, r2, r7\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r8\n" + " mov r5, #0xc\n" + " ldsh r1, [r4, r5]\n" + "._111:\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r5, ._118\n" + " add r0, r0, r5\n" + " bl DestroySprite\n" + " mov r0, #0xe\n" + " ldsh r1, [r4, r0]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r5\n" + " bl DestroySprite\n" + " ldr r0, ._118 + 4\n" + " str r0, [r4]\n" + " b ._117\n" + "._119:\n" + " .align 2, 0\n" + "._118:\n" + " .word gSprites\n" + " .word debug_80C3A50+1\n" + "._112:\n" + " ldr r0, ._120\n" + " lsl r5, r7, #0x2\n" + " add r5, r5, r7\n" + " lsl r5, r5, #0x3\n" + " add r5, r5, r0\n" + " ldrh r4, [r5, #0x16]\n" + " ldrh r6, [r5, #0x12]\n" + " str r4, [sp]\n" + " mov r0, #0x1\n" + " add r1, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl SetOamMatrix\n" + " add r0, r4, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " add r0, r6, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " ldr r2, ._120 + 4\n" + " mov r8, r2\n" + " mov r4, #0xc\n" + " ldsh r1, [r5, r4]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r8\n" + " strh r6, [r0, #0x26]\n" + " ldrh r4, [r5, #0x14]\n" + " ldrh r6, [r5, #0x10]\n" + " str r4, [sp]\n" + " mov r0, #0x2\n" + " add r1, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl SetOamMatrix\n" + " add r0, r4, #0\n" + " mov r1, #0x19\n" + " mov r2, #0x3\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " add r0, r6, #0\n" + " mov r1, #0x19\n" + " mov r2, #0x7\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " mov r0, #0xe\n" + " ldsh r1, [r5, r0]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r8\n" + " strh r6, [r0, #0x26]\n" + " ldr r2, ._120 + 8\n" + " mov r4, #0x18\n" + " ldsh r1, [r5, r4]\n" + " lsl r1, r1, #0x6\n" + " add r0, r1, #0\n" + " add r0, r0, #0x38\n" + " lsl r0, r0, #0x8\n" + " add r1, r1, #0x78\n" + " add r0, r0, r1\n" + " strh r0, [r2]\n" + "._117:\n" + " add sp, sp, #0x4\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._121:\n" + " .align 2, 0\n" + "._120:\n" + " .word gTasks\n" + " .word gSprites\n" + " .word 0x4000040\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C405C() +{ + asm( + " push {r4, r5, lr}\n" + " add r4, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r5, r1, #0x10\n" + " mov r2, #0x0\n" + " mov r1, #0x0\n" + "._122:\n" + " add r0, r4, r2\n" + " strb r1, [r0]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x9\n" + " bls ._122 @cond_branch\n" + " add r0, r4, r2\n" + " mov r1, #0xff\n" + " strb r1, [r0]\n" + " mov r0, #0xae\n" + " strb r0, [r4]\n" + " cmp r5, #0\n" + " beq ._125 @cond_branch\n" + " mov r2, #0x0\n" + " ldr r3, ._127\n" + " mov r0, #0xb\n" + " add r1, r5, #0\n" + " mul r1, r1, r0\n" + " add r0, r1, r3\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._125 @cond_branch\n" + " add r5, r3, #0\n" + " add r3, r1, #0\n" + "._126:\n" + " add r1, r4, r2\n" + " add r0, r2, r3\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " strb r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " add r0, r2, r3\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._125 @cond_branch\n" + " cmp r2, #0x9\n" + " bls ._126 @cond_branch\n" + "._125:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._128:\n" + " .align 2, 0\n" + "._127:\n" + " .word gSpeciesNames\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C40C4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " mov r5, #0x0\n" + " mov r6, sp\n" + "._135:\n" + " cmp r7, #0\n" + " beq ._129 @cond_branch\n" + " mov r0, #0x64\n" + " add r1, r5, #0\n" + " mul r1, r1, r0\n" + " ldr r0, ._132\n" + " add r4, r1, r0\n" + " add r0, r4, #0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " beq ._134 @cond_branch\n" + " add r0, r4, #0\n" + " bl CalculateMonStats\n" + " add r0, r4, #0\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " strh r0, [r6]\n" + " add r0, r4, #0\n" + " mov r1, #0x39\n" + " mov r2, sp\n" + " bl SetMonData\n" + " b ._134\n" + "._133:\n" + " .align 2, 0\n" + "._132:\n" + " .word gEnemyParty\n" + "._129:\n" + " mov r0, #0x64\n" + " add r1, r5, #0\n" + " mul r1, r1, r0\n" + " ldr r0, ._136\n" + " add r4, r1, r0\n" + " add r0, r4, #0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " beq ._134 @cond_branch\n" + " add r0, r4, #0\n" + " bl CalculateMonStats\n" + " add r0, r4, #0\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " strh r0, [r6]\n" + " add r0, r4, #0\n" + " mov r1, #0x39\n" + " mov r2, sp\n" + " bl SetMonData\n" + "._134:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x5\n" + " bls ._135 @cond_branch\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._137:\n" + " .align 2, 0\n" + "._136:\n" + " .word gPlayerParty\n" + "\n" + ); +} + +__attribute__((naked)) +void InitBattleForDebug() +{ + asm( + " push {lr}\n" + " bl SavePlayerParty\n" + " ldr r1, ._138\n" + " ldr r0, ._138 + 4\n" + " ldrb r2, [r0, #0x8]\n" + " mov r0, #0x0\n" + " strb r2, [r1, #0xd]\n" + " strb r0, [r1]\n" + " strb r0, [r1, #0x1]\n" + " strb r0, [r1, #0x2]\n" + " strb r0, [r1, #0x3]\n" + " strb r0, [r1, #0x4]\n" + " strb r0, [r1, #0x5]\n" + " strb r0, [r1, #0x6]\n" + " strb r0, [r1, #0x7]\n" + " strb r0, [r1, #0x8]\n" + " strb r0, [r1, #0xc]\n" + " ldr r1, ._138 + 8\n" + " str r0, [r1]\n" + " bl ZeroPlayerPartyMons\n" + " bl ZeroEnemyPartyMons\n" + " mov r0, #0x0\n" + " bl debug_80C4214\n" + " ldr r0, ._138 + 12\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " pop {r0}\n" + " bx r0\n" + "._139:\n" + " .align 2, 0\n" + "._138:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gSaveBlock2\n" + " .word byte_3005E30\n" + " .word debug_80C47BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C41A8() +{ + asm( + " push {lr}\n" + " ldr r1, ._140\n" + " mov r0, #0x0\n" + " strb r0, [r1, #0x1]\n" + " strb r0, [r1, #0x2]\n" + " bl ZeroPlayerPartyMons\n" + " bl ZeroEnemyPartyMons\n" + " mov r0, #0x0\n" + " bl debug_80C4214\n" + " ldr r0, ._140 + 4\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " pop {r0}\n" + " bx r0\n" + "._141:\n" + " .align 2, 0\n" + "._140:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word debug_80C47BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C41D4() +{ + asm( + " push {lr}\n" + " mov r0, #0x0\n" + " bl debug_80C40C4\n" + " mov r0, #0x0\n" + " bl debug_80C4214\n" + " ldr r0, ._142\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " pop {r0}\n" + " bx r0\n" + "._143:\n" + " .align 2, 0\n" + "._142:\n" + " .word debug_80C42B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C41F4() +{ + asm( + " push {lr}\n" + " mov r0, #0x1\n" + " bl debug_80C40C4\n" + " mov r0, #0x1\n" + " bl debug_80C4214\n" + " ldr r0, ._144\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " pop {r0}\n" + " bx r0\n" + "._145:\n" + " .align 2, 0\n" + "._144:\n" + " .word debug_80C42B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4214() +{ + asm( + " push {r4, r5, r6, lr}\n" + " bl debug_80C35DC\n" + " ldr r6, ._146\n" + " mov r4, #0x0\n" + " strh r4, [r6]\n" + " ldr r5, ._146 + 4\n" + " strh r4, [r5]\n" + " ldr r0, ._146 + 8\n" + " strh r4, [r0]\n" + " add r0, r0, #0x4\n" + " strh r4, [r0]\n" + " ldr r1, ._146 + 12\n" + " ldr r2, ._146 + 16\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " mov r0, #0x31\n" + " strh r0, [r1]\n" + " add r1, r1, #0x6\n" + " mov r0, #0xe1\n" + " strh r0, [r1]\n" + " ldr r0, ._146 + 20\n" + " strh r4, [r0]\n" + " add r1, r1, #0x4\n" + " mov r0, #0x7\n" + " strh r0, [r1]\n" + " ldr r3, ._146 + 24\n" + " ldrh r2, [r3]\n" + " strh r4, [r3]\n" + " ldr r4, ._146 + 28\n" + " ldrh r0, [r4]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " strh r0, [r4]\n" + " strh r2, [r3]\n" + " ldr r0, ._146 + 32\n" + " bl SetVBlankCallback\n" + " ldr r0, ._146 + 36\n" + " bl SetMainCallback2\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x13\n" + " ldr r2, ._146 + 40\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._146 + 44\n" + " add r0, r1, #0\n" + " strh r0, [r6]\n" + " ldr r2, ._146 + 48\n" + " add r0, r2, #0\n" + " strh r0, [r5]\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._147:\n" + " .align 2, 0\n" + "._146:\n" + " .word 0x4000040\n" + " .word 0x4000044\n" + " .word 0x4000042\n" + " .word 0x4000048\n" + " .word 0x1111\n" + " .word 0x4000052\n" + " .word 0x4000208\n" + " .word 0x4000200\n" + " .word debug_80C3758+1\n" + " .word debug_80C370C+1\n" + " .word 0x7140\n" + " .word 0x1ef\n" + " .word 0x819f\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C42B8() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xffffffe4\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " ldr r1, ._150\n" + " mov r0, sp\n" + " mov r2, #0xc\n" + " bl memcpy\n" + " add r4, sp, #0xc\n" + " ldr r1, ._150 + 4\n" + " add r0, r4, #0\n" + " mov r2, #0xd\n" + " bl memcpy\n" + " mov r0, #0x0\n" + " mov r1, #0x10\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r0, sp\n" + " mov r1, #0x1\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0x14\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " bl debug_80C4694\n" + " bl debug_80C4704\n" + " ldr r0, ._150 + 8\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._148 @cond_branch\n" + " ldr r0, ._150 + 12\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._150 + 16\n" + " b ._149\n" + "._151:\n" + " .align 2, 0\n" + "._150:\n" + " .word gUnknown_Debug_083F8194\n" + " .word gUnknown_Debug_083F81A0\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gTasks\n" + " .word debug_80C44EC+1\n" + "._148:\n" + " ldr r0, ._152\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._152 + 4\n" + "._149:\n" + " str r0, [r1]\n" + " add sp, sp, #0x1c\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._153:\n" + " .align 2, 0\n" + "._152:\n" + " .word gTasks\n" + " .word debug_80C4348+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4348() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r0, ._154\n" + " ldrb r0, [r0, #0x1]\n" + " lsl r0, r0, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r0, r0, r1\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " str r1, [sp]\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r1, ._154 + 4\n" + " ldr r2, ._154 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " add r2, r2, #0x8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._154 + 12\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._154 + 16\n" + " str r1, [r0]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._155:\n" + " .align 2, 0\n" + "._154:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word 0x4000042\n" + " .word 0x177\n" + " .word gTasks\n" + " .word debug_80C43A8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C43A8() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r1, ._158\n" + " ldrh r2, [r1, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " add r3, r1, #0\n" + " cmp r0, #0\n" + " beq ._156 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._158 + 4\n" + " ldrb r1, [r0, #0x1]\n" + " mov r0, #0x64\n" + " mul r0, r0, r1\n" + " ldr r1, ._158 + 8\n" + " add r0, r0, r1\n" + " ldr r1, ._158 + 12\n" + " bl debug_sub_80A433C\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + " b ._180\n" + "._159:\n" + " .align 2, 0\n" + "._158:\n" + " .word gMain\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gPlayerParty\n" + " .word debug_80C41D4+1\n" + "._156:\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._160 @cond_branch\n" + " ldr r0, ._162\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._162 + 4\n" + " str r0, [r1]\n" + " b ._180\n" + "._163:\n" + " .align 2, 0\n" + "._162:\n" + " .word gTasks\n" + " .word debug_80C4F48+1\n" + "._160:\n" + " mov r0, #0x8\n" + " and r0, r0, r2\n" + " lsl r0, r0, #0x10\n" + " lsr r1, r0, #0x10\n" + " cmp r1, #0\n" + " beq ._164 @cond_branch\n" + " bl debug_80C4774\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._180 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " bl CalculatePlayerPartyCount\n" + " bl CalculateEnemyPartyCount\n" + " ldr r0, ._167\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._167 + 4\n" + " str r0, [r1]\n" + " b ._180\n" + "._168:\n" + " .align 2, 0\n" + "._167:\n" + " .word gTasks\n" + " .word debug_80C4D14+1\n" + "._164:\n" + " mov r0, #0x88\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._169 @cond_branch\n" + " str r1, [sp]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r0, ._171\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._171 + 4\n" + " str r0, [r1]\n" + " b ._180\n" + "._172:\n" + " .align 2, 0\n" + "._171:\n" + " .word gTasks\n" + " .word debug_80C44EC+1\n" + "._169:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._174 @cond_branch\n" + " ldr r1, ._176\n" + " ldrb r0, [r1, #0x1]\n" + " cmp r0, #0\n" + " beq ._174 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1, #0x1]\n" + " b ._175\n" + "._177:\n" + " .align 2, 0\n" + "._176:\n" + " .word unk_debug_ewram_0+0x20\n" + "._174:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._180 @cond_branch\n" + " ldr r5, ._181\n" + " ldrb r0, [r5, #0x1]\n" + " cmp r0, #0x4\n" + " bhi ._180 @cond_branch\n" + " add r1, r0, #0\n" + " mov r0, #0x64\n" + " mul r0, r0, r1\n" + " ldr r1, ._181 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " beq ._180 @cond_branch\n" + " ldrb r0, [r5, #0x1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r5, #0x1]\n" + "._175:\n" + " ldr r1, ._181 + 8\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._181 + 12\n" + " str r1, [r0]\n" + "._180:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._182:\n" + " .align 2, 0\n" + "._181:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gPlayerParty\n" + " .word gTasks\n" + " .word debug_80C4348+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C44EC() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r0, ._183\n" + " ldrb r0, [r0, #0x2]\n" + " lsl r0, r0, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r0, r0, r1\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " str r1, [sp]\n" + " mov r1, #0x10\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r1, ._183 + 4\n" + " ldr r2, ._183 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._183 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._183 + 16\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._183 + 20\n" + " str r1, [r0]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._184:\n" + " .align 2, 0\n" + "._183:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word 0x4000042\n" + " .word 0x79ef\n" + " .word 0x17f\n" + " .word gTasks\n" + " .word debug_80C4550+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4550() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r1, ._187\n" + " ldrh r2, [r1, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " add r3, r1, #0\n" + " cmp r0, #0\n" + " beq ._185 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._187 + 4\n" + " ldrb r1, [r0, #0x2]\n" + " mov r0, #0x64\n" + " mul r0, r0, r1\n" + " ldr r1, ._187 + 8\n" + " add r0, r0, r1\n" + " ldr r1, ._187 + 12\n" + " bl debug_sub_80A433C\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + " b ._209\n" + "._188:\n" + " .align 2, 0\n" + "._187:\n" + " .word gMain\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gEnemyParty\n" + " .word debug_80C41F4+1\n" + "._185:\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._189 @cond_branch\n" + " ldr r0, ._191\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._191 + 4\n" + " str r0, [r1]\n" + " b ._209\n" + "._192:\n" + " .align 2, 0\n" + "._191:\n" + " .word gTasks\n" + " .word debug_80C4F48+1\n" + "._189:\n" + " mov r0, #0x8\n" + " and r0, r0, r2\n" + " lsl r0, r0, #0x10\n" + " lsr r1, r0, #0x10\n" + " cmp r1, #0\n" + " beq ._193 @cond_branch\n" + " bl debug_80C4774\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._209 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " bl CalculatePlayerPartyCount\n" + " bl CalculateEnemyPartyCount\n" + " ldr r0, ._196\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._196 + 4\n" + " str r0, [r1]\n" + " b ._209\n" + "._197:\n" + " .align 2, 0\n" + "._196:\n" + " .word gTasks\n" + " .word debug_80C4D14+1\n" + "._193:\n" + " mov r0, #0x88\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._198 @cond_branch\n" + " str r1, [sp]\n" + " mov r0, #0x0\n" + " mov r1, #0x10\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r0, ._200\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._200 + 4\n" + " str r0, [r1]\n" + " b ._209\n" + "._201:\n" + " .align 2, 0\n" + "._200:\n" + " .word gTasks\n" + " .word debug_80C4348+1\n" + "._198:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._203 @cond_branch\n" + " ldr r1, ._205\n" + " ldrb r0, [r1, #0x2]\n" + " cmp r0, #0\n" + " beq ._203 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1, #0x2]\n" + " b ._204\n" + "._206:\n" + " .align 2, 0\n" + "._205:\n" + " .word unk_debug_ewram_0+0x20\n" + "._203:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._209 @cond_branch\n" + " ldr r5, ._210\n" + " ldrb r0, [r5, #0x2]\n" + " cmp r0, #0x4\n" + " bhi ._209 @cond_branch\n" + " add r1, r0, #0\n" + " mov r0, #0x64\n" + " mul r0, r0, r1\n" + " ldr r1, ._210 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " beq ._209 @cond_branch\n" + " ldrb r0, [r5, #0x2]\n" + " add r0, r0, #0x1\n" + " strb r0, [r5, #0x2]\n" + "._204:\n" + " ldr r1, ._210 + 8\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._210 + 12\n" + " str r1, [r0]\n" + "._209:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._211:\n" + " .align 2, 0\n" + "._210:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gEnemyParty\n" + " .word gTasks\n" + " .word debug_80C44EC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4694() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xffffffe4\n" + " ldr r1, ._213\n" + " mov r0, sp\n" + " mov r2, #0xd\n" + " bl memcpy\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xe\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " mov r0, sp\n" + " mov r1, #0x2\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r4, #0x0\n" + " add r5, sp, #0x10\n" + "._212:\n" + " mov r0, #0x64\n" + " mul r0, r0, r4\n" + " ldr r1, ._213 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r5, #0\n" + " bl debug_80C405C\n" + " lsl r2, r4, #0x19\n" + " mov r0, #0xc0\n" + " lsl r0, r0, #0x12\n" + " add r2, r2, r0\n" + " lsr r2, r2, #0x18\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " bl MenuPrint\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x5\n" + " bls ._212 @cond_branch\n" + " add sp, sp, #0x1c\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._214:\n" + " .align 2, 0\n" + "._213:\n" + " .word gUnknown_Debug_083F81AD\n" + " .word gPlayerParty\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4704() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xffffffe4\n" + " ldr r1, ._216\n" + " mov r0, sp\n" + " mov r2, #0xd\n" + " bl memcpy\n" + " mov r0, #0xf\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " mov r0, sp\n" + " mov r1, #0x11\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r4, #0x0\n" + " add r5, sp, #0x10\n" + "._215:\n" + " mov r0, #0x64\n" + " mul r0, r0, r4\n" + " ldr r1, ._216 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r5, #0\n" + " bl debug_80C405C\n" + " lsl r2, r4, #0x19\n" + " mov r0, #0xc0\n" + " lsl r0, r0, #0x12\n" + " add r2, r2, r0\n" + " lsr r2, r2, #0x18\n" + " add r0, r5, #0\n" + " mov r1, #0x11\n" + " bl MenuPrint\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x5\n" + " bls ._215 @cond_branch\n" + " add sp, sp, #0x1c\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._217:\n" + " .align 2, 0\n" + "._216:\n" + " .word gUnknown_Debug_083F81BA\n" + " .word gEnemyParty\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4774() +{ + asm( + " push {r4, lr}\n" + " ldr r0, ._221\n" + " ldrb r0, [r0, #0xc]\n" + " sub r0, r0, #0x1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x64\n" + " add r4, r0, #0\n" + " mul r4, r4, r1\n" + " ldr r0, ._221 + 4\n" + " add r0, r4, r0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " beq ._219 @cond_branch\n" + " ldr r0, ._221 + 8\n" + " add r0, r4, r0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " beq ._219 @cond_branch\n" + " mov r0, #0x1\n" + " b ._220\n" + "._222:\n" + " .align 2, 0\n" + "._221:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gPlayerParty\n" + " .word gEnemyParty\n" + "._219:\n" + " mov r0, #0x0\n" + "._220:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C47BC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xffffffc0\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " ldr r1, ._224\n" + " mov r0, sp\n" + " mov r2, #0xf\n" + " bl memcpy\n" + " add r4, sp, #0x10\n" + " ldr r1, ._224 + 4\n" + " add r0, r4, #0\n" + " mov r2, #0xd\n" + " bl memcpy\n" + " add r6, sp, #0x20\n" + " ldr r1, ._224 + 8\n" + " add r0, r6, #0\n" + " mov r2, #0xf\n" + " bl memcpy\n" + " add r5, sp, #0x30\n" + " ldr r1, ._224 + 12\n" + " add r0, r5, #0\n" + " mov r2, #0x10\n" + " bl memcpy\n" + " mov r0, #0x0\n" + " mov r1, #0x10\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r0, sp\n" + " mov r1, #0x1\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0x14\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xe\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " add r0, r6, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r4, #0x0\n" + " ldr r6, ._224 + 16\n" + "._223:\n" + " lsl r0, r4, #0x3\n" + " add r0, r0, r6\n" + " ldr r0, [r0]\n" + " lsl r2, r4, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r2, r2, r1\n" + " lsr r2, r2, #0x18\n" + " mov r1, #0x2\n" + " bl MenuPrint\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x4\n" + " bls ._223 @cond_branch\n" + " mov r0, #0xf\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " add r0, r5, #0\n" + " mov r1, #0x11\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._224 + 20\n" + " ldrb r0, [r0, #0x4]\n" + " bl debug_80C4C44\n" + " ldr r1, ._224 + 24\n" + " lsl r0, r7, #0x2\n" + " add r0, r0, r7\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._224 + 28\n" + " str r1, [r0]\n" + " add sp, sp, #0x40\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._225:\n" + " .align 2, 0\n" + "._224:\n" + " .word gUnknown_Debug_083F81C7\n" + " .word gUnknown_Debug_083F81A0\n" + " .word gUnknown_Debug_083F81D6\n" + " .word gUnknown_Debug_083F81E5\n" + " .word gUnknown_Debug_083F8068\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gTasks\n" + " .word debug_80C48A0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C48A0() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r0, ._226\n" + " ldrb r0, [r0, #0x3]\n" + " lsl r0, r0, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r0, r0, r1\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " str r1, [sp]\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r1, ._226 + 4\n" + " ldr r2, ._226 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " add r2, r2, #0x8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._226 + 12\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._226 + 16\n" + " str r1, [r0]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._227:\n" + " .align 2, 0\n" + "._226:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word 0x4000042\n" + " .word 0x177\n" + " .word gTasks\n" + " .word debug_80C4900+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4900() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " ldr r1, ._230\n" + " ldrh r2, [r1, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " add r3, r1, #0\n" + " cmp r4, #0\n" + " beq ._228 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._230 + 4\n" + " bl SetMainCallback2\n" + " bl LoadPlayerParty\n" + " ldr r1, ._230 + 8\n" + " ldr r0, ._230 + 12\n" + " ldrb r0, [r0, #0xd]\n" + " strb r0, [r1, #0x8]\n" + " ldr r0, ._230 + 16\n" + " mov r1, #0x0\n" + " strh r4, [r0]\n" + " ldr r0, ._230 + 20\n" + " strb r1, [r0]\n" + " ldr r1, ._230 + 24\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._230 + 28\n" + " b ._229\n" + "._231:\n" + " .align 2, 0\n" + "._230:\n" + " .word gMain\n" + " .word debug_80C370C+1\n" + " .word gSaveBlock2\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gBattleTypeFlags\n" + " .word gUnknown_02023A14_50\n" + " .word gTasks\n" + " .word debug_80C373C+1\n" + "._228:\n" + " mov r0, #0x8\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._232 @cond_branch\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._233 @cond_branch\n" + "._232:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._236\n" + " ldr r3, ._236 + 4\n" + " ldr r2, ._236 + 8\n" + " ldrb r0, [r2, #0x3]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r3\n" + " ldrb r0, [r0, #0x4]\n" + " strh r0, [r1]\n" + " ldr r1, ._236 + 12\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldrb r0, [r2, #0x3]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r3\n" + " ldrb r0, [r0, #0x5]\n" + " strb r0, [r2, #0xc]\n" + " ldrb r0, [r2, #0x3]\n" + " sub r0, r0, #0x1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bhi ._234 @cond_branch\n" + " str r4, [sp]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r0, ._236 + 16\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._236 + 20\n" + " str r0, [r1]\n" + " b ._247\n" + "._237:\n" + " .align 2, 0\n" + "._236:\n" + " .word gBattleTypeFlags\n" + " .word gUnknown_Debug_083F8068\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_02023A14_50\n" + " .word gTasks\n" + " .word debug_80C4A60+1\n" + "._234:\n" + " ldr r0, ._239\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._239 + 4\n" + " str r0, [r1]\n" + " b ._247\n" + "._240:\n" + " .align 2, 0\n" + "._239:\n" + " .word gTasks\n" + " .word debug_80C4F48+1\n" + "._233:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._242 @cond_branch\n" + " ldr r1, ._244\n" + " ldrb r0, [r1, #0x3]\n" + " cmp r0, #0\n" + " beq ._242 @cond_branch\n" + " sub r0, r0, #0x1\n" + " b ._243\n" + "._245:\n" + " .align 2, 0\n" + "._244:\n" + " .word unk_debug_ewram_0+0x20\n" + "._242:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._247 @cond_branch\n" + " ldr r1, ._248\n" + " ldrb r0, [r1, #0x3]\n" + " cmp r0, #0x1\n" + " bhi ._247 @cond_branch\n" + " add r0, r0, #0x1\n" + "._243:\n" + " strb r0, [r1, #0x3]\n" + " ldr r1, ._248 + 4\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._248 + 8\n" + "._229:\n" + " str r1, [r0]\n" + "._247:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._249:\n" + " .align 2, 0\n" + "._248:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gTasks\n" + " .word debug_80C48A0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4A60() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r0, ._250\n" + " ldrb r0, [r0, #0x5]\n" + " lsl r0, r0, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r0, r0, r1\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " str r1, [sp]\n" + " mov r1, #0x10\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r1, ._250 + 4\n" + " ldr r2, ._250 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._250 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._250 + 16\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._250 + 20\n" + " str r1, [r0]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._251:\n" + " .align 2, 0\n" + "._250:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word 0x4000042\n" + " .word 0x79ef\n" + " .word 0x17f\n" + " .word gTasks\n" + " .word debug_80C4AC4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4AC4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " ldr r7, ._255\n" + " ldrb r0, [r7, #0x4]\n" + " mov ip, r0\n" + " ldrb r5, [r7, #0x5]\n" + " mov r1, ip\n" + " add r0, r1, r5\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " ldr r2, ._255 + 4\n" + " mov r8, r2\n" + " ldrh r2, [r2, #0x2e]\n" + " mov r3, #0x1\n" + " and r3, r3, r2\n" + " add r4, r7, #0\n" + " cmp r3, #0\n" + " beq ._252 @cond_branch\n" + " ldr r0, ._255 + 8\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r1, [r1]\n" + " ldr r3, ._255 + 12\n" + " ldr r2, [r3]\n" + " add r0, r2, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._253 @cond_branch\n" + " ldr r0, ._255 + 16\n" + " eor r1, r1, r0\n" + " and r2, r2, r1\n" + " b ._254\n" + "._256:\n" + " .align 2, 0\n" + "._255:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gMain\n" + " .word gUnknown_Debug_083F80D8\n" + " .word byte_3005E30\n" + " .word 0xffff\n" + "._253:\n" + " orr r2, r2, r1\n" + "._254:\n" + " str r2, [r3]\n" + " ldrb r0, [r4, #0x4]\n" + " bl debug_80C4C44\n" + " ldr r1, ._258\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._258 + 4\n" + " str r1, [r0]\n" + " b ._274\n" + "._259:\n" + " .align 2, 0\n" + "._258:\n" + " .word gTasks\n" + " .word debug_80C4A60+1\n" + "._252:\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " cmp r4, #0\n" + " beq ._260 @cond_branch\n" + " str r3, [sp]\n" + " mov r0, #0x0\n" + " mov r1, #0x10\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r0, ._262\n" + " lsl r1, r6, #0x2\n" + " add r1, r1, r6\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._262 + 4\n" + " b ._261\n" + "._263:\n" + " .align 2, 0\n" + "._262:\n" + " .word gTasks\n" + " .word debug_80C48A0+1\n" + "._260:\n" + " mov r0, #0x8\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._264 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._266\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x3\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._266 + 4\n" + " ldrb r2, [r1, #0x1]\n" + " mov r0, #0x11\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " strb r0, [r1, #0x1]\n" + " mov r0, #0xac\n" + " strb r0, [r1, #0x2]\n" + " mov r0, #0xff\n" + " strb r0, [r1, #0x3]\n" + " strb r4, [r1, #0x9]\n" + " strb r4, [r1, #0xa]\n" + " strb r4, [r1, #0xb]\n" + " strb r4, [r1, #0xc]\n" + " ldr r1, ._266 + 8\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._266 + 12\n" + " str r1, [r0]\n" + " b ._274\n" + "._267:\n" + " .align 2, 0\n" + "._266:\n" + " .word gTrainerBattleOpponent\n" + " .word +0x2017000\n" + " .word gTasks\n" + " .word debug_80C4F48+1\n" + "._264:\n" + " mov r0, r8\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._268 @cond_branch\n" + " lsl r0, r5, #0x18\n" + " cmp r0, #0\n" + " beq ._269 @cond_branch\n" + " sub r0, r5, #1\n" + " strb r0, [r7, #0x5]\n" + " b ._277\n" + "._269:\n" + " mov r1, ip\n" + " lsl r0, r1, #0x18\n" + " cmp r0, #0\n" + " beq ._277 @cond_branch\n" + " mov r0, ip\n" + " sub r0, r0, #0x1\n" + " b ._272\n" + "._268:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._274 @cond_branch\n" + " lsl r0, r5, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x8\n" + " bhi ._274 @cond_branch\n" + " cmp r0, #0x4\n" + " bhi ._275 @cond_branch\n" + " add r0, r5, #1\n" + " strb r0, [r7, #0x5]\n" + " b ._277\n" + "._275:\n" + " mov r2, ip\n" + " lsl r0, r2, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x3\n" + " bhi ._277 @cond_branch\n" + " mov r0, ip\n" + " add r0, r0, #0x1\n" + "._272:\n" + " strb r0, [r7, #0x4]\n" + " ldrb r0, [r7, #0x4]\n" + " bl debug_80C4C44\n" + "._277:\n" + " ldr r0, ._278\n" + " lsl r1, r6, #0x2\n" + " add r1, r1, r6\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._278 + 4\n" + "._261:\n" + " str r0, [r1]\n" + "._274:\n" + " add sp, sp, #0x4\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._279:\n" + " .align 2, 0\n" + "._278:\n" + " .word gTasks\n" + " .word debug_80C4A60+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4C44() +{ + 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, #0xfffffff0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov sl, r0\n" + " mov r2, #0x0\n" + " mov r5, sp\n" + "._290:\n" + " mov r0, sl\n" + " add r6, r2, r0\n" + " add r4, r6, #0\n" + " add r1, r2, #1\n" + " mov r8, r1\n" + " cmp r4, #0x9\n" + " bgt ._280 @cond_branch\n" + " mov r3, #0x0\n" + " ldr r1, ._288\n" + " lsl r0, r4, #0x3\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " ldrb r0, [r0]\n" + " ldr r7, ._288 + 4\n" + " mov r9, r7\n" + " lsl r2, r2, #0x1\n" + " mov ip, r2\n" + " cmp r0, #0xff\n" + " beq ._282 @cond_branch\n" + " add r7, r1, #0\n" + "._283:\n" + " add r0, r3, #3\n" + " mov r1, sp\n" + " add r2, r1, r0\n" + " lsl r1, r6, #0x3\n" + " add r1, r1, r7\n" + " ldr r0, [r1]\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " strb r0, [r2]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " ldr r0, [r1]\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._282 @cond_branch\n" + " cmp r3, #0xb\n" + " bls ._283 @cond_branch\n" + "._282:\n" + " cmp r3, #0xb\n" + " bhi ._284 @cond_branch\n" + " mov r1, #0x0\n" + "._285:\n" + " add r0, r3, #3\n" + " add r0, r0, sp\n" + " strb r1, [r0]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " cmp r3, #0xb\n" + " bls ._285 @cond_branch\n" + "._284:\n" + " mov r0, #0xff\n" + " strb r0, [r5, #0xe]\n" + " mov r0, #0xfc\n" + " strb r0, [r5]\n" + " mov r2, #0x1\n" + " strb r2, [r5, #0x1]\n" + " add r1, r2, #0\n" + " LSL r1, r4\n" + " mov r3, r9\n" + " ldr r0, [r3]\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._286 @cond_branch\n" + " mov r0, #0x3\n" + " strb r0, [r5, #0x2]\n" + " b ._287\n" + "._289:\n" + " .align 2, 0\n" + "._288:\n" + " .word gUnknown_Debug_083F80D8\n" + " .word byte_3005E30\n" + "._286:\n" + " strb r2, [r5, #0x2]\n" + "._287:\n" + " mov r2, ip\n" + " add r2, r2, #0x3\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r0, sp\n" + " mov r1, #0x11\n" + " bl MenuPrint\n" + "._280:\n" + " mov r7, r8\n" + " lsl r0, r7, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x5\n" + " bls ._290 @cond_branch\n" + " add sp, sp, #0x10\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" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4D14() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xffffffd0\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r1, ._291\n" + " mov r0, sp\n" + " mov r2, #0xf\n" + " bl memcpy\n" + " add r5, sp, #0x10\n" + " ldr r1, ._291 + 4\n" + " add r0, r5, #0\n" + " mov r2, #0xd\n" + " bl memcpy\n" + " add r6, sp, #0x20\n" + " ldr r1, ._291 + 8\n" + " add r0, r6, #0\n" + " mov r2, #0xf\n" + " bl memcpy\n" + " mov r0, #0x0\n" + " mov r1, #0x10\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r0, sp\n" + " mov r1, #0x1\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " add r0, r5, #0\n" + " mov r1, #0x14\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xe\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " add r0, r6, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._291 + 12\n" + " ldrb r0, [r0, #0x6]\n" + " bl debug_80C4F00\n" + " mov r0, #0xf\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r1, ._291 + 16\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._291 + 20\n" + " str r1, [r0]\n" + " add sp, sp, #0x30\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._292:\n" + " .align 2, 0\n" + "._291:\n" + " .word gUnknown_Debug_083F81C7\n" + " .word gUnknown_Debug_083F81F5\n" + " .word gUnknown_Debug_083F8202\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gTasks\n" + " .word debug_80C4DB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4DB8() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r0, ._293\n" + " ldrb r0, [r0, #0x7]\n" + " lsl r0, r0, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r0, r0, r1\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " str r1, [sp]\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r1, ._293 + 4\n" + " ldr r2, ._293 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " add r2, r2, #0x8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._293 + 12\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._293 + 16\n" + " str r1, [r0]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._294:\n" + " .align 2, 0\n" + "._293:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word 0x4000042\n" + " .word 0x177\n" + " .word gTasks\n" + " .word debug_80C4E18+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4E18() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r5, ._297\n" + " ldrb r3, [r5, #0x6]\n" + " ldrb r2, [r5, #0x7]\n" + " add r0, r3, r2\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " ldr r7, ._297 + 4\n" + " ldrh r1, [r7, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._295 @cond_branch\n" + " ldr r0, ._297 + 8\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._297 + 12\n" + " b ._296\n" + "._298:\n" + " .align 2, 0\n" + "._297:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gMain\n" + " .word gTasks\n" + " .word debug_80C42B8+1\n" + "._295:\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._299 @cond_branch\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._300 @cond_branch\n" + "._299:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r2, ._302\n" + " ldr r1, ._302 + 4\n" + " lsl r0, r6, #0x3\n" + " add r0, r0, r1\n" + " ldrb r0, [r0, #0x4]\n" + " strb r0, [r2]\n" + " ldr r1, ._302 + 8\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._302 + 12\n" + " str r1, [r0]\n" + " b ._310\n" + "._303:\n" + " .align 2, 0\n" + "._302:\n" + " .word gBattleTerrain\n" + " .word gUnknown_Debug_083F814C\n" + " .word gTasks\n" + " .word debug_80C5158+1\n" + "._300:\n" + " ldrh r1, [r7, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._304 @cond_branch\n" + " lsl r0, r2, #0x18\n" + " cmp r0, #0\n" + " beq ._305 @cond_branch\n" + " sub r0, r2, #1\n" + " strb r0, [r5, #0x7]\n" + " b ._313\n" + "._305:\n" + " lsl r0, r3, #0x18\n" + " cmp r0, #0\n" + " beq ._313 @cond_branch\n" + " sub r0, r3, #1\n" + " b ._308\n" + "._304:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._310 @cond_branch\n" + " lsl r0, r2, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x7\n" + " bhi ._310 @cond_branch\n" + " cmp r0, #0x4\n" + " bhi ._311 @cond_branch\n" + " add r0, r2, #1\n" + " strb r0, [r5, #0x7]\n" + " b ._313\n" + "._311:\n" + " lsl r0, r3, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x2\n" + " bhi ._313 @cond_branch\n" + " add r0, r3, #1\n" + "._308:\n" + " strb r0, [r5, #0x6]\n" + " ldrb r0, [r5, #0x6]\n" + " bl debug_80C4F00\n" + "._313:\n" + " ldr r0, ._314\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._314 + 4\n" + "._296:\n" + " str r0, [r1]\n" + "._310:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._315:\n" + " .align 2, 0\n" + "._314:\n" + " .word gTasks\n" + " .word debug_80C4DB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4F00() +{ + asm( + " push {r4, r5, r6, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " mov r0, #0x1\n" + " mov r1, #0x3\n" + " mov r2, #0xd\n" + " mov r3, #0xe\n" + " bl MenuFillWindowRectWithBlankTile\n" + " mov r4, #0x0\n" + " ldr r6, ._318\n" + "._317:\n" + " cmp r4, #0x8\n" + " bhi ._316 @cond_branch\n" + " add r0, r4, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r6\n" + " ldr r0, [r0]\n" + " lsl r2, r4, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r2, r2, r1\n" + " lsr r2, r2, #0x18\n" + " mov r1, #0x2\n" + " bl MenuPrint\n" + "._316:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x5\n" + " bls ._317 @cond_branch\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._319:\n" + " .align 2, 0\n" + "._318:\n" + " .word gUnknown_Debug_083F814C\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4F48() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6}\n" + " add sp, sp, #0xffffffc4\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r1, ._320\n" + " mov r0, sp\n" + " mov r2, #0x11\n" + " bl memcpy\n" + " add r6, sp, #0x14\n" + " ldr r1, ._320 + 4\n" + " add r0, r6, #0\n" + " mov r2, #0xd\n" + " bl memcpy\n" + " add r5, sp, #0x24\n" + " ldr r1, ._320 + 8\n" + " add r0, r5, #0\n" + " mov r2, #0xd\n" + " bl memcpy\n" + " add r0, sp, #0x34\n" + " mov r9, r0\n" + " ldr r1, ._320 + 12\n" + " mov r2, #0x4\n" + " bl memcpy\n" + " add r0, sp, #0x38\n" + " mov r8, r0\n" + " ldr r1, ._320 + 16\n" + " mov r2, #0x4\n" + " bl memcpy\n" + " mov r0, #0x0\n" + " mov r1, #0x10\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r0, sp\n" + " mov r1, #0x1\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x14\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xe\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r0, #0x1\n" + " mov r1, #0x3\n" + " mov r2, #0xd\n" + " mov r3, #0xe\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r0, r9\n" + " mov r1, #0x2\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " mov r0, r8\n" + " mov r1, #0x2\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0xf\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r1, ._320 + 20\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._320 + 24\n" + " str r1, [r0]\n" + " add sp, sp, #0x3c\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._321:\n" + " .align 2, 0\n" + "._320:\n" + " .word gUnknown_Debug_083F8211\n" + " .word gUnknown_Debug_083F81A0\n" + " .word gUnknown_Debug_083F8222\n" + " .word gUnknown_Debug_083F822F\n" + " .word gUnknown_Debug_083F8233\n" + " .word gTasks\n" + " .word debug_80C5038+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5038() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r0, ._322\n" + " ldrb r0, [r0, #0x8]\n" + " lsl r0, r0, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r0, r0, r1\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " str r1, [sp]\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r1, ._322 + 4\n" + " ldr r2, ._322 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " add r2, r2, #0x8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._322 + 12\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._322 + 16\n" + " str r1, [r0]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._323:\n" + " .align 2, 0\n" + "._322:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word 0x4000042\n" + " .word 0x177\n" + " .word gTasks\n" + " .word debug_80C5098+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5098() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r1, ._326\n" + " ldrh r2, [r1, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " add r3, r1, #0\n" + " cmp r0, #0\n" + " beq ._324 @cond_branch\n" + " ldr r0, ._326 + 4\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._326 + 8\n" + " str r0, [r1]\n" + " b ._339\n" + "._327:\n" + " .align 2, 0\n" + "._326:\n" + " .word gMain\n" + " .word gTasks\n" + " .word debug_80C47BC+1\n" + "._324:\n" + " mov r0, #0x8\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._328 @cond_branch\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._329 @cond_branch\n" + "._328:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._331\n" + " ldr r0, ._331 + 4\n" + " ldrb r0, [r0, #0x8]\n" + " strb r0, [r1, #0x8]\n" + " ldr r1, ._331 + 8\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._331 + 12\n" + " b ._330\n" + "._332:\n" + " .align 2, 0\n" + "._331:\n" + " .word gSaveBlock2\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gTasks\n" + " .word debug_80C42B8+1\n" + "._329:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._334 @cond_branch\n" + " ldr r1, ._336\n" + " ldrb r0, [r1, #0x8]\n" + " cmp r0, #0\n" + " beq ._334 @cond_branch\n" + " sub r0, r0, #0x1\n" + " b ._335\n" + "._337:\n" + " .align 2, 0\n" + "._336:\n" + " .word unk_debug_ewram_0+0x20\n" + "._334:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._339 @cond_branch\n" + " ldr r1, ._340\n" + " ldrb r0, [r1, #0x8]\n" + " cmp r0, #0\n" + " bne ._339 @cond_branch\n" + " add r0, r0, #0x1\n" + "._335:\n" + " strb r0, [r1, #0x8]\n" + " ldr r1, ._340 + 4\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._340 + 8\n" + "._330:\n" + " str r1, [r0]\n" + "._339:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._341:\n" + " .align 2, 0\n" + "._340:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gTasks\n" + " .word debug_80C5038+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5158() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._342\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r0, ._342 + 4\n" + " str r0, [r1]\n" + " bx lr\n" + "._343:\n" + " .align 2, 0\n" + "._342:\n" + " .word gTasks\n" + " .word debug_80C5174+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5174() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._344\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r0, ._344 + 4\n" + " str r0, [r1]\n" + " bx lr\n" + "._345:\n" + " .align 2, 0\n" + "._344:\n" + " .word gTasks\n" + " .word debug_80C5190+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5190() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._346\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r0, ._346 + 4\n" + " str r0, [r1]\n" + " bx lr\n" + "._347:\n" + " .align 2, 0\n" + "._346:\n" + " .word gTasks\n" + " .word debug_80C51AC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C51AC() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._348\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r0, ._348 + 4\n" + " str r0, [r1]\n" + " bx lr\n" + "._349:\n" + " .align 2, 0\n" + "._348:\n" + " .word gTasks\n" + " .word debug_80C51C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C51C8() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._350\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r0, ._350 + 4\n" + " str r0, [r1]\n" + " bx lr\n" + "._351:\n" + " .align 2, 0\n" + "._350:\n" + " .word gTasks\n" + " .word debug_80C51E4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C51E4() +{ + asm( + " push {lr}\n" + " bl sub_80408BC\n" + " ldr r0, ._352\n" + " ldr r1, ._352 + 4\n" + " str r1, [r0, #0x8]\n" + " ldr r0, ._352 + 8\n" + " bl SetMainCallback2\n" + " pop {r0}\n" + " bx r0\n" + "._353:\n" + " .align 2, 0\n" + "._352:\n" + " .word gMain\n" + " .word debug_80C41A8+1\n" + " .word unref_sub_800D684+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5208() +{ + asm( + " push {r4, r5, r6, lr}\n" + " ldr r1, ._355\n" + " ldr r0, ._355 + 4\n" + " str r0, [r1]\n" + " mov r3, #0x0\n" + " add r6, r1, #0\n" + " ldr r4, ._355 + 8\n" + " add r5, r6, #0\n" + " mov r2, #0x0\n" + "._354:\n" + " ldr r0, [r5]\n" + " lsl r1, r3, #0x2\n" + " add r0, r0, #0x64\n" + " add r0, r0, r1\n" + " str r2, [r0]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r3, r0, #0x10\n" + " cmp r3, #0x3f\n" + " bls ._354 @cond_branch\n" + " ldr r2, [r6]\n" + " mov r0, #0xfc\n" + " str r0, [r2, #0x64]\n" + " ldrb r1, [r4, #0xa]\n" + " ldrb r0, [r4, #0xb]\n" + " lsl r0, r0, #0x8\n" + " orr r1, r1, r0\n" + " ldrb r0, [r4, #0xc]\n" + " lsl r0, r0, #0x10\n" + " orr r1, r1, r0\n" + " ldrb r0, [r4, #0xd]\n" + " lsl r0, r0, #0x18\n" + " orr r1, r1, r0\n" + " str r1, [r2, #0x70]\n" + " bl Random\n" + " add r4, r0, #0\n" + " bl Random\n" + " ldr r1, [r6]\n" + " lsl r4, r4, #0x10\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " orr r4, r4, r0\n" + " str r4, [r1, #0x74]\n" + " mov r0, #0x1\n" + " str r0, [r1, #0x68]\n" + " str r0, [r1, #0x6c]\n" + " bl debug_80C5C94\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._356:\n" + " .align 2, 0\n" + "._355:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word +0x2018000\n" + " .word gSaveBlock2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C527C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add r6, r0, #0\n" + " mov r5, #0x0\n" + " ldr r7, ._359\n" + "._361:\n" + " mov r0, #0x64\n" + " add r1, r5, #0\n" + " mul r1, r1, r0\n" + " ldr r0, ._359 + 4\n" + " add r4, r1, r0\n" + " add r0, r4, #0\n" + " mov r1, #0xb\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " bne ._357 @cond_branch\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " mov r2, #0x64\n" + " bl memcpy\n" + " add r0, r5, #1\n" + " strb r0, [r7]\n" + " mov r0, #0x0\n" + " b ._358\n" + "._360:\n" + " .align 2, 0\n" + "._359:\n" + " .word gPlayerPartyCount\n" + " .word gPlayerParty\n" + "._357:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x5\n" + " bls ._361 @cond_branch\n" + " ldr r0, ._362\n" + " ldr r0, [r0]\n" + " bl SendMonToPC\n" + " mov r0, #0x1\n" + "._358:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._363:\n" + " .align 2, 0\n" + "._362:\n" + " .word unk_debug_ewram_0+0x30\n" + "\n" + ); +} + +__attribute__((naked)) +void InitCreatePokemon() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xffffffd4\n" + " ldr r1, ._364\n" + " add r0, sp, #0x4\n" + " mov r2, #0x25\n" + " bl memcpy\n" + " bl debug_80C35DC\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r1, #0x0\n" + " mov r2, #0x10\n" + " mov r3, #0x0\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._364 + 4\n" + " mov r5, #0x0\n" + " strh r4, [r0]\n" + " add r0, r0, #0x2\n" + " strh r4, [r0]\n" + " add r0, r0, #0x2\n" + " strh r4, [r0]\n" + " ldr r3, ._364 + 8\n" + " ldrh r2, [r3]\n" + " strh r4, [r3]\n" + " ldr r4, ._364 + 12\n" + " ldrh r0, [r4]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " strh r0, [r4]\n" + " strh r2, [r3]\n" + " ldr r2, ._364 + 16\n" + " ldrh r0, [r2]\n" + " mov r1, #0x8\n" + " orr r0, r0, r1\n" + " strh r0, [r2]\n" + " ldr r0, ._364 + 20\n" + " bl SetVBlankCallback\n" + " ldr r0, ._364 + 24\n" + " bl SetMainCallback2\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x3\n" + " bl MenuDrawTextWindow\n" + " add r0, sp, #0x4\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x13\n" + " mov r2, #0x8a\n" + " lsl r2, r2, #0x5\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, ._364 + 28\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " bl debug_80C5208\n" + " ldr r1, ._364 + 32\n" + " ldr r0, [r1]\n" + " mov r2, #0xb4\n" + " lsl r2, r2, #0x1\n" + " add r0, r0, r2\n" + " strb r5, [r0]\n" + " ldr r0, [r1]\n" + " ldr r1, ._364 + 36\n" + " add r0, r0, r1\n" + " strb r5, [r0]\n" + " add sp, sp, #0x2c\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._365:\n" + " .align 2, 0\n" + "._364:\n" + " .word gUnknown_Debug_083F8733\n" + " .word 0x4000050\n" + " .word 0x4000208\n" + " .word 0x4000200\n" + " .word 0x4000004\n" + " .word debug_80C3758+1\n" + " .word debug_80C370C+1\n" + " .word debug_80C53A4+1\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C53A4() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._366\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r0, ._366 + 4\n" + " str r0, [r1]\n" + " bx lr\n" + "._367:\n" + " .align 2, 0\n" + "._366:\n" + " .word gTasks\n" + " .word debug_80C53C0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C53C0() +{ + asm( + " push {r4, lr}\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl debug_80C6384\n" + " mov r0, #0x0\n" + " bl debug_80C627C\n" + " ldr r1, ._368\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._368 + 4\n" + " str r1, [r0]\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._369:\n" + " .align 2, 0\n" + "._368:\n" + " .word gTasks\n" + " .word debug_80C53F0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C53F0() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " ldr r0, ._372\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r2, #0x1\n" + " and r2, r2, r1\n" + " add r4, r0, #0\n" + " cmp r2, #0\n" + " beq ._370 @cond_branch\n" + " ldr r0, ._372 + 4\n" + " ldr r3, [r0]\n" + " mov r0, #0xb2\n" + " lsl r0, r0, #0x1\n" + " add r2, r3, r0\n" + " ldr r1, ._372 + 8\n" + " mov r4, #0xb4\n" + " lsl r4, r4, #0x1\n" + " add r0, r3, r4\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r6, ._372 + 12\n" + " add r1, r3, r6\n" + " ldrb r1, [r1]\n" + " ldr r0, [r0]\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " lsl r1, r1, #0x2\n" + " add r0, r3, #0\n" + " add r0, r0, #0x64\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " str r0, [r2]\n" + " mov r0, #0xb5\n" + " lsl r0, r0, #0x1\n" + " add r1, r3, r0\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " bl debug_80C643C\n" + " ldr r1, ._372 + 16\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._372 + 20\n" + " b ._375\n" + "._373:\n" + " .align 2, 0\n" + "._372:\n" + " .word gMain\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_083F8698\n" + " .word 0x169\n" + " .word gTasks\n" + " .word debug_80C55E4+1\n" + "._370:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._374 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " str r2, [sp]\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._376\n" + " bl SetMainCallback2\n" + " ldr r1, ._376 + 4\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._376 + 8\n" + " b ._375\n" + "._377:\n" + " .align 2, 0\n" + "._376:\n" + " .word debug_80C370C+1\n" + " .word gTasks\n" + " .word debug_80C373C+1\n" + "._374:\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._378 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " bl debug_80C5FFC\n" + " ldr r0, ._381\n" + " ldr r0, [r0]\n" + " bl debug_80C527C\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " mov r0, #0x3\n" + " mov r1, #0x8\n" + " mov r2, #0x1a\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " cmp r4, #0\n" + " beq ._379 @cond_branch\n" + " ldr r0, ._381 + 4\n" + " mov r1, #0x4\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " b ._380\n" + "._382:\n" + " .align 2, 0\n" + "._381:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_083F872A\n" + "._379:\n" + " ldr r0, ._384\n" + " mov r1, #0x4\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + "._380:\n" + " ldr r0, ._384 + 4\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._384 + 8\n" + " str r0, [r1]\n" + " b ._400\n" + "._385:\n" + " .align 2, 0\n" + "._384:\n" + " .word gUnknown_Debug_083F8720\n" + " .word gTasks\n" + " .word debug_80C5708+1\n" + "._378:\n" + " mov r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._386 @cond_branch\n" + " ldr r0, ._388\n" + " ldr r0, [r0]\n" + " ldr r4, [r0, #0x64]\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r4, #0\n" + " mov r1, #0x2\n" + " bl GetNationalPokedexFlag\n" + " add r0, r4, #0\n" + " mov r1, #0x3\n" + " bl GetNationalPokedexFlag\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " b ._400\n" + "._389:\n" + " .align 2, 0\n" + "._388:\n" + " .word unk_debug_ewram_0+0x30\n" + "._386:\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._390 @cond_branch\n" + " mov r0, #0x2\n" + " bl debug_80C627C\n" + " b ._400\n" + "._390:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r3, r0, #0x10\n" + " cmp r3, #0\n" + " beq ._392 @cond_branch\n" + " mov r0, #0x1\n" + " bl debug_80C627C\n" + " b ._400\n" + "._392:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._395 @cond_branch\n" + " ldr r2, ._397\n" + " ldr r0, [r2]\n" + " mov r6, #0xb4\n" + " lsl r6, r6, #0x1\n" + " add r1, r0, r6\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._395 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r0, [r2]\n" + " ldr r1, ._397 + 4\n" + " add r0, r0, r1\n" + " strb r3, [r0]\n" + " b ._396\n" + "._398:\n" + " .align 2, 0\n" + "._397:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + "._395:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._400 @cond_branch\n" + " ldr r3, ._401\n" + " ldr r0, [r3]\n" + " mov r4, #0xb4\n" + " lsl r4, r4, #0x1\n" + " add r2, r0, r4\n" + " ldrb r0, [r2]\n" + " cmp r0, #0x4\n" + " bhi ._400 @cond_branch\n" + " add r0, r0, #0x1\n" + " mov r1, #0x0\n" + " strb r0, [r2]\n" + " ldr r0, [r3]\n" + " ldr r6, ._401 + 4\n" + " add r0, r0, r6\n" + " strb r1, [r0]\n" + "._396:\n" + " ldr r1, ._401 + 8\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._401 + 12\n" + "._375:\n" + " str r1, [r0]\n" + "._400:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._402:\n" + " .align 2, 0\n" + "._401:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + " .word gTasks\n" + " .word debug_80C53C0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C55E4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " add r6, r3, #0\n" + " ldr r1, ._405\n" + " ldr r2, ._405 + 4\n" + " ldr r0, [r2]\n" + " mov ip, r0\n" + " mov r0, #0xb4\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, ip\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._405 + 8\n" + " add r1, r1, ip\n" + " ldrb r1, [r1]\n" + " ldr r0, [r0]\n" + " add r0, r0, r1\n" + " ldrb r5, [r0]\n" + " add r7, r5, #0\n" + " ldr r1, ._405 + 12\n" + " ldrh r4, [r1, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r4\n" + " mov r8, r2\n" + " add r2, r1, #0\n" + " cmp r0, #0\n" + " beq ._403 @cond_branch\n" + " ldr r0, ._405 + 16\n" + " lsl r1, r3, #0x2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._405 + 20\n" + " str r0, [r1]\n" + " b ._422\n" + "._406:\n" + " .align 2, 0\n" + "._405:\n" + " .word gUnknown_Debug_083F8698\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + " .word gMain\n" + " .word gTasks\n" + " .word debug_80C53C0+1\n" + "._403:\n" + " mov r0, #0x2\n" + " and r0, r0, r4\n" + " cmp r0, #0\n" + " beq ._407 @cond_branch\n" + " lsl r1, r5, #0x2\n" + " mov r0, ip\n" + " add r0, r0, #0x64\n" + " add r0, r0, r1\n" + " mov r1, #0xb2\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, ip\n" + " ldr r1, [r1]\n" + " str r1, [r0]\n" + " ldr r1, ._409\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._409 + 4\n" + " str r1, [r0]\n" + " b ._422\n" + "._410:\n" + " .align 2, 0\n" + "._409:\n" + " .word gTasks\n" + " .word debug_80C53C0+1\n" + "._407:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._411 @cond_branch\n" + " mov r0, #0x1\n" + " b ._412\n" + "._411:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._413 @cond_branch\n" + " mov r0, #0x2\n" + "._412:\n" + " bl debug_80C6544\n" + " bl debug_80C643C\n" + " b ._422\n" + "._413:\n" + " ldr r0, ._419\n" + " lsl r1, r7, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r1, [r1]\n" + " ldrb r0, [r1, #0x9]\n" + " cmp r0, #0xff\n" + " beq ._422 @cond_branch\n" + " mov r0, #0x20\n" + " and r0, r0, r4\n" + " cmp r0, #0\n" + " beq ._417 @cond_branch\n" + " mov r0, #0xb5\n" + " lsl r0, r0, #0x1\n" + " add ip, ip, r0\n" + " mov r0, ip\n" + " ldrb r3, [r0]\n" + " ldrb r0, [r1, #0x9]\n" + " sub r0, r0, #0x1\n" + " cmp r3, r0\n" + " bge ._417 @cond_branch\n" + " add r0, r3, #1\n" + " mov r1, ip\n" + " strb r0, [r1]\n" + " bl debug_80C643C\n" + " b ._422\n" + "._420:\n" + " .align 2, 0\n" + "._419:\n" + " .word gUnknown_Debug_083F8554\n" + "._417:\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._422 @cond_branch\n" + " mov r2, r8\n" + " ldr r0, [r2]\n" + " mov r2, #0xb5\n" + " lsl r2, r2, #0x1\n" + " add r1, r0, r2\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._422 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " bl debug_80C643C\n" + "._422:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5708() +{ + asm( + " push {lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " ldr r0, ._424\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._423 @cond_branch\n" + " ldr r0, ._424 + 4\n" + " lsl r1, r2, #0x2\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._424 + 8\n" + " str r0, [r1]\n" + "._423:\n" + " pop {r0}\n" + " bx r0\n" + "._425:\n" + " .align 2, 0\n" + "._424:\n" + " .word gMain\n" + " .word gTasks\n" + " .word debug_80C53C0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5738() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add r6, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r4, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r8, r2\n" + " cmp r4, #0xfe\n" + " bne ._426 @cond_branch\n" + " ldr r1, ._428\n" + " mov r2, #0x7\n" + " bl debug_80C689C\n" + " add r0, r6, #7\n" + " ldr r7, ._428 + 4\n" + " ldr r1, [r7]\n" + " add r1, r1, #0xf0\n" + " ldr r1, [r1]\n" + " mov r2, #0x3\n" + " mov r3, #0x1\n" + " bl debug_80C6678\n" + " mov r4, #0x0\n" + " strb r4, [r6, #0x13]\n" + " strb r4, [r6, #0x14]\n" + " add r0, r6, #0\n" + " add r0, r0, #0x15\n" + " ldr r1, ._428 + 8\n" + " mov r2, #0x7\n" + " bl debug_80C689C\n" + " add r0, r6, #0\n" + " add r0, r0, #0x1c\n" + " ldr r1, [r7]\n" + " add r1, r1, #0xf4\n" + " ldr r1, [r1]\n" + " mov r2, #0x3\n" + " mov r3, #0x1\n" + " bl debug_80C6678\n" + " add r0, r6, #0\n" + " add r0, r0, #0x28\n" + " strb r4, [r0]\n" + " add r0, r0, #0x1\n" + " strb r4, [r0]\n" + " add r0, r0, #0x1\n" + " ldr r1, ._428 + 12\n" + " mov r2, #0x9\n" + " bl debug_80C689C\n" + " add r0, r6, #0\n" + " add r0, r0, #0x31\n" + " ldr r1, [r7]\n" + " add r1, r1, #0xf8\n" + "._431:\n" + " ldr r1, [r1]\n" + " mov r2, #0x3\n" + " mov r3, #0x1\n" + " bl debug_80C6678\n" + " b ._517\n" + "._429:\n" + " .align 2, 0\n" + "._428:\n" + " .word gUnknown_Debug_083F850A\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_083F8514\n" + " .word gUnknown_Debug_083F851C\n" + "._426:\n" + " cmp r4, #0xfd\n" + " bne ._430 @cond_branch\n" + " ldr r1, ._432\n" + " add r0, r6, #0\n" + " mov r2, #0x9\n" + " bl debug_80C689C\n" + " add r0, r6, #0\n" + " add r0, r0, #0x9\n" + " ldr r7, ._432 + 4\n" + " ldr r1, [r7]\n" + " add r1, r1, #0xfc\n" + " ldr r1, [r1]\n" + " mov r2, #0x3\n" + " mov r3, #0x1\n" + " bl debug_80C6678\n" + " mov r4, #0x0\n" + " strb r4, [r6, #0x15]\n" + " strb r4, [r6, #0x16]\n" + " add r0, r6, #0\n" + " add r0, r0, #0x17\n" + " ldr r1, ._432 + 8\n" + " mov r2, #0x9\n" + " bl debug_80C689C\n" + " add r0, r6, #0\n" + " add r0, r0, #0x20\n" + " ldr r1, [r7]\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r1, r1, r2\n" + " ldr r1, [r1]\n" + " mov r2, #0x3\n" + " mov r3, #0x1\n" + " bl debug_80C6678\n" + " add r0, r6, #0\n" + " add r0, r0, #0x2c\n" + " strb r4, [r0]\n" + " add r0, r0, #0x1\n" + " strb r4, [r0]\n" + " add r0, r0, #0x1\n" + " ldr r1, ._432 + 12\n" + " mov r2, #0x9\n" + " bl debug_80C689C\n" + " add r0, r6, #0\n" + " add r0, r0, #0x37\n" + " ldr r1, [r7]\n" + " mov r3, #0x82\n" + " lsl r3, r3, #0x1\n" + " add r1, r1, r3\n" + " b ._431\n" + "._433:\n" + " .align 2, 0\n" + "._432:\n" + " .word gUnknown_Debug_083F8524\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_083F852D\n" + " .word gUnknown_Debug_083F8537\n" + "._430:\n" + " mov r1, #0x0\n" + " lsl r5, r4, #0x3\n" + " mov r2, #0x0\n" + "._434:\n" + " add r0, r6, r1\n" + " strb r2, [r0]\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r1, r0, #0x10\n" + " cmp r1, #0xb\n" + " bls ._434 @cond_branch\n" + " ldr r0, ._437\n" + " add r0, r5, r0\n" + " ldr r1, [r0]\n" + " add r0, r6, #0\n" + " mov r2, #0xb\n" + " bl debug_80C689C\n" + " mov r1, #0xc\n" + " mov r2, #0xff\n" + "._435:\n" + " add r0, r6, r1\n" + " strb r2, [r0]\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r1, r0, #0x10\n" + " cmp r1, #0xff\n" + " bls ._435 @cond_branch\n" + " ldr r0, ._437\n" + " add r0, r0, #0x4\n" + " add r0, r5, r0\n" + " ldr r0, [r0]\n" + " ldrb r2, [r0, #0x9]\n" + " lsl r0, r2, #0x1a\n" + " lsr r5, r0, #0x18\n" + " cmp r4, #0x22\n" + " bhi ._436 @cond_branch\n" + " lsl r0, r4, #0x2\n" + " ldr r1, ._437 + 4\n" + " add r1, r0, r1\n" + " ldr r1, [r1]\n" + " add r7, r0, #0\n" + " mov pc, r1\n" + "._438:\n" + " .align 2, 0\n" + "._437:\n" + " .word gUnknown_Debug_083F8554\n" + " .word ._439\n" + "._439:\n" + " .word ._440\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._445\n" + " .word ._446\n" + " .word ._450\n" + " .word ._450\n" + " .word ._450\n" + " .word ._450\n" + " .word ._451\n" + " .word ._452\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._473\n" + " .word ._474\n" + "._436:\n" + " mov r0, #0xff\n" + " strb r0, [r6]\n" + " b ._517\n" + "._440:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r1, ._477\n" + " mov r9, r1\n" + " ldr r1, [r1]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldr r1, [r1]\n" + " mov r3, r8\n" + " bl debug_80C6678\n" + " add r1, r5, r6\n" + " mov r0, #0x0\n" + " strb r0, [r1, #0xa]\n" + " mov r0, #0xfc\n" + " strb r0, [r1, #0xb]\n" + " mov r0, #0x1\n" + " strb r0, [r1, #0xc]\n" + " mov r2, r8\n" + " strb r2, [r1, #0xd]\n" + " add r4, r5, #0\n" + " add r4, r4, #0xe\n" + " add r4, r6, r4\n" + " mov r3, r9\n" + " ldr r0, [r3]\n" + " add r0, r0, #0x64\n" + " add r0, r0, r7\n" + " ldrh r0, [r0]\n" + " bl NationalPokedexNumToSpecies\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0xb\n" + " mul r1, r1, r0\n" + " ldr r0, ._477 + 4\n" + " add r1, r1, r0\n" + " add r0, r4, #0\n" + " mov r2, #0xa\n" + " bl debug_80C689C\n" + " b ._517\n" + "._478:\n" + " .align 2, 0\n" + "._477:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gSpeciesNames\n" + "._445:\n" + " ldr r0, ._483\n" + " ldr r0, [r0]\n" + " add r0, r0, #0x64\n" + " add r0, r0, r7\n" + " ldr r0, [r0]\n" + " cmp r0, #0x1\n" + " beq ._479 @cond_branch\n" + " cmp r0, #0x1\n" + " bcc ._480 @cond_branch\n" + " cmp r0, #0x2\n" + " beq ._481 @cond_branch\n" + " b ._517\n" + "._484:\n" + " .align 2, 0\n" + "._483:\n" + " .word unk_debug_ewram_0+0x30\n" + "._480:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r1, ._486\n" + " b ._488\n" + "._487:\n" + " .align 2, 0\n" + "._486:\n" + " .word gUnknown_Debug_083F8546\n" + "._479:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r1, ._489\n" + " b ._488\n" + "._490:\n" + " .align 2, 0\n" + "._489:\n" + " .word gUnknown_Debug_083F8541\n" + "._481:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r1, ._492\n" + "._488:\n" + " mov r2, #0x2\n" + " bl debug_80C689C\n" + " b ._517\n" + "._493:\n" + " .align 2, 0\n" + "._492:\n" + " .word gUnknown_Debug_083F8544\n" + "._450:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r4, ._495\n" + " ldr r1, [r4]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldr r1, [r1]\n" + " mov r3, r8\n" + " bl debug_80C6678\n" + " add r1, r5, r6\n" + " mov r0, #0x0\n" + " strb r0, [r1, #0xa]\n" + " mov r0, #0xfc\n" + " strb r0, [r1, #0xb]\n" + " mov r0, #0x1\n" + " strb r0, [r1, #0xc]\n" + " mov r0, r8\n" + " strb r0, [r1, #0xd]\n" + " add r0, r5, #0\n" + " add r0, r0, #0xe\n" + " add r0, r6, r0\n" + " ldr r1, [r4]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldr r2, [r1]\n" + " mov r1, #0xd\n" + " mul r1, r1, r2\n" + " ldr r2, ._495 + 4\n" + " add r1, r1, r2\n" + " b ._494\n" + "._496:\n" + " .align 2, 0\n" + "._495:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gMoveNames\n" + "._451:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r4, ._499\n" + " ldr r1, [r4]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldr r1, [r1]\n" + " mov r3, r8\n" + " bl debug_80C6678\n" + " add r1, r5, r6\n" + " mov r0, #0x0\n" + " strb r0, [r1, #0xa]\n" + " mov r0, #0xfc\n" + " strb r0, [r1, #0xb]\n" + " mov r0, #0x1\n" + " strb r0, [r1, #0xc]\n" + " mov r2, r8\n" + " strb r2, [r1, #0xd]\n" + " ldr r0, [r4]\n" + " add r0, r0, #0x64\n" + " add r0, r0, r7\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._497 @cond_branch\n" + " add r4, r5, #0\n" + " add r4, r4, #0xe\n" + " add r4, r6, r4\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl ItemId_GetItem\n" + " add r1, r0, #0\n" + " add r0, r4, #0\n" + " b ._498\n" + "._500:\n" + " .align 2, 0\n" + "._499:\n" + " .word unk_debug_ewram_0+0x30\n" + "._497:\n" + " add r0, r5, #0\n" + " add r0, r0, #0xe\n" + " add r0, r6, r0\n" + " ldr r1, ._502\n" + "._498:\n" + " mov r2, #0x9\n" + " bl debug_80C689C\n" + " b ._517\n" + "._503:\n" + " .align 2, 0\n" + "._502:\n" + " .word gUnknown_Debug_083F8541\n" + "._452:\n" + " add r6, r6, #0xc\n" + " ldr r4, ._505\n" + " ldr r0, [r4]\n" + " ldr r0, [r0, #0x64]\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl NationalPokedexNumToSpecies\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " ldr r1, [r4]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldrb r1, [r1]\n" + " bl GetAbilityBySpecies\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0xd\n" + " mul r1, r1, r0\n" + " ldr r0, ._505 + 4\n" + " add r1, r1, r0\n" + " add r0, r6, #0\n" + "._494:\n" + " mov r2, #0xc\n" + " bl debug_80C689C\n" + " b ._517\n" + "._506:\n" + " .align 2, 0\n" + "._505:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gAbilityNames\n" + "._474:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r2, ._508\n" + " ldr r1, ._508 + 4\n" + " ldr r1, [r1]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldr r1, [r1]\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r1, [r1]\n" + " b ._514\n" + "._509:\n" + " .align 2, 0\n" + "._508:\n" + " .word gUnknown_Debug_083F86E8\n" + " .word unk_debug_ewram_0+0x30\n" + "._472:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xc\n" + " ldr r1, ._511\n" + " ldr r1, [r1]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldr r1, [r1]\n" + " mov r3, r8\n" + " bl debug_80C6678\n" + " b ._517\n" + "._512:\n" + " .align 2, 0\n" + "._511:\n" + " .word unk_debug_ewram_0+0x30\n" + "._473:\n" + " ldr r0, ._515\n" + " ldr r0, [r0]\n" + " add r0, r0, #0x64\n" + " add r0, r0, r7\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._513 @cond_branch\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r1, ._515 + 4\n" + " b ._514\n" + "._516:\n" + " .align 2, 0\n" + "._515:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_083F854A\n" + "._513:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r1, ._518\n" + "._514:\n" + " mov r2, #0x4\n" + " bl debug_80C689C\n" + " b ._517\n" + "._519:\n" + " .align 2, 0\n" + "._518:\n" + " .word gUnknown_Debug_083F854D\n" + "._446:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r2, ._520\n" + " ldr r1, ._520 + 4\n" + " ldr r1, [r1]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldr r1, [r1]\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r2\n" + " ldr r1, [r1]\n" + " mov r2, #0x5\n" + " bl debug_80C689C\n" + "._517:\n" + " mov r0, #0x0\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._521:\n" + " .align 2, 0\n" + "._520:\n" + " .word gNatureNames\n" + " .word unk_debug_ewram_0+0x30\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5B60() +{ + asm( + " lsl r0, r0, #0x18\n" + " ldr r1, ._522\n" + " ldr r1, [r1]\n" + " lsr r0, r0, #0x16\n" + " add r1, r1, #0x64\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " bx lr\n" + "._523:\n" + " .align 2, 0\n" + "._522:\n" + " .word unk_debug_ewram_0+0x30\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5B74() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r2, r1, #0x18\n" + " cmp r2, #0x18\n" + " bhi ._540 @cond_branch\n" + " lsl r0, r2, #0x2\n" + " ldr r1, ._526\n" + " add r1, r0, r1\n" + " ldr r1, [r1]\n" + " add r3, r0, #0\n" + " mov pc, r1\n" + "._527:\n" + " .align 2, 0\n" + "._526:\n" + " .word ._525\n" + "._525:\n" + " .word ._532\n" + " .word ._529\n" + " .word ._530\n" + " .word ._532\n" + " .word ._532\n" + " .word ._540\n" + " .word ._540\n" + " .word ._540\n" + " .word ._540\n" + " .word ._540\n" + " .word ._540\n" + " .word ._540\n" + " .word ._540\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + "._540:\n" + " ldr r0, ._554\n" + " ldr r0, [r0]\n" + " lsl r1, r2, #0x2\n" + " add r0, r0, #0x64\n" + " add r0, r0, r1\n" + " str r6, [r0]\n" + " b ._562\n" + "._555:\n" + " .align 2, 0\n" + "._554:\n" + " .word unk_debug_ewram_0+0x30\n" + "._532:\n" + " ldr r0, ._557\n" + " ldr r0, [r0]\n" + " add r0, r0, #0x64\n" + " add r0, r0, r3\n" + " str r6, [r0]\n" + " bl debug_80C5C94\n" + " b ._562\n" + "._558:\n" + " .align 2, 0\n" + "._557:\n" + " .word unk_debug_ewram_0+0x30\n" + "._529:\n" + " ldr r4, ._560\n" + " ldr r1, [r4]\n" + " add r0, r1, #0\n" + " add r0, r0, #0x64\n" + " add r0, r0, r3\n" + " str r6, [r0]\n" + " ldr r0, [r1, #0x64]\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl NationalPokedexNumToSpecies\n" + " ldr r5, [r4]\n" + " ldr r4, ._560 + 4\n" + " lsl r2, r6, #0x2\n" + " ldr r3, ._560 + 8\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " lsl r1, r0, #0x3\n" + " sub r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r3\n" + " ldrb r1, [r1, #0x13]\n" + " mov r0, #0xca\n" + " lsl r0, r0, #0x1\n" + " mul r0, r0, r1\n" + " add r2, r2, r0\n" + " add r2, r2, r4\n" + " ldr r0, [r2]\n" + " str r0, [r5, #0x6c]\n" + " bl debug_80C5C94\n" + " b ._562\n" + "._561:\n" + " .align 2, 0\n" + "._560:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gExperienceTables\n" + " .word gBaseStats\n" + "._530:\n" + " ldr r0, ._563\n" + " ldr r0, [r0]\n" + " add r0, r0, #0x64\n" + " add r0, r0, r3\n" + " str r6, [r0]\n" + " bl debug_80C5DEC\n" + " b ._562\n" + "._564:\n" + " .align 2, 0\n" + "._563:\n" + " .word unk_debug_ewram_0+0x30\n" + "._552:\n" + " ldr r0, ._565\n" + " ldr r0, [r0]\n" + " add r0, r0, #0x64\n" + " add r0, r0, r3\n" + " str r6, [r0]\n" + " bl debug_80C5EF4\n" + "._562:\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._566:\n" + " .align 2, 0\n" + "._565:\n" + " .word unk_debug_ewram_0+0x30\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5C94() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffff0\n" + " ldr r6, ._567\n" + " ldr r2, [r6]\n" + " add r0, r2, #0\n" + " add r0, r0, #0x98\n" + " ldr r4, [r0]\n" + " mov r1, #0x1f\n" + " and r4, r4, r1\n" + " add r0, r0, #0x8\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xa8\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0xa\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xb0\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0xf\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xb8\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x14\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xc0\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x19\n" + " orr r4, r4, r0\n" + " ldr r0, [r2, #0x64]\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl NationalPokedexNumToSpecies\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " ldr r0, [r6]\n" + " ldr r2, [r0, #0x68]\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " mov r5, #0x1\n" + " str r5, [sp]\n" + " ldr r3, [r0, #0x74]\n" + " str r3, [sp, #0x4]\n" + " str r5, [sp, #0x8]\n" + " ldr r3, [r0, #0x70]\n" + " str r3, [sp, #0xc]\n" + " add r3, r4, #0\n" + " bl CreateMon\n" + " ldr r0, [r6]\n" + " bl GetMonGender\n" + " ldr r1, [r6]\n" + " add r0, r0, #0x2\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " str r0, [r1, #0x78]\n" + " add r0, r1, #0\n" + " bl GetNature\n" + " ldr r1, [r6]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " str r0, [r1, #0x7c]\n" + " add r0, r1, #0\n" + " mov r1, #0xd\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x80\n" + " str r2, [r1]\n" + " mov r1, #0xe\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x84\n" + " str r2, [r1]\n" + " mov r1, #0xf\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x88\n" + " str r2, [r1]\n" + " mov r1, #0x10\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x8c\n" + " str r2, [r1]\n" + " mov r1, #0x19\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " ldr r0, [r6]\n" + " str r1, [r0, #0x6c]\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf0\n" + " str r2, [r1]\n" + " mov r1, #0x3b\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf4\n" + " str r2, [r1]\n" + " mov r1, #0x3c\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf8\n" + " str r2, [r1]\n" + " mov r1, #0x3d\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xfc\n" + " str r2, [r1]\n" + " mov r1, #0x3e\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x1\n" + " add r1, r0, r3\n" + " str r2, [r1]\n" + " mov r1, #0x3f\n" + " bl GetMonData\n" + " ldr r1, [r6]\n" + " mov r2, #0x82\n" + " lsl r2, r2, #0x1\n" + " add r1, r1, r2\n" + " str r0, [r1]\n" + " add sp, sp, #0x10\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._568:\n" + " .align 2, 0\n" + "._567:\n" + " .word unk_debug_ewram_0+0x30\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5DEC() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " ldr r4, ._569\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x6c\n" + " mov r1, #0x19\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " mov r1, #0xd\n" + " mov r2, sp\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " mov r1, #0xe\n" + " mov r2, sp\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " mov r1, #0xf\n" + " mov r2, sp\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " mov r1, #0x10\n" + " mov r2, sp\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " bl CalculateMonStats\n" + " ldr r0, [r4]\n" + " bl GiveMonInitialMoveset\n" + " ldr r0, [r4]\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " ldr r0, [r4]\n" + " str r1, [r0, #0x68]\n" + " mov r1, #0xd\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x80\n" + " str r2, [r1]\n" + " mov r1, #0xe\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x84\n" + " str r2, [r1]\n" + " mov r1, #0xf\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x88\n" + " str r2, [r1]\n" + " mov r1, #0x10\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x8c\n" + " str r2, [r1]\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf0\n" + " str r2, [r1]\n" + " mov r1, #0x3b\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf4\n" + " str r2, [r1]\n" + " mov r1, #0x3c\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf8\n" + " str r2, [r1]\n" + " mov r1, #0x3d\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xfc\n" + " str r2, [r1]\n" + " mov r1, #0x3e\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x1\n" + " add r1, r0, r3\n" + " str r2, [r1]\n" + " mov r1, #0x3f\n" + " bl GetMonData\n" + " ldr r1, [r4]\n" + " mov r2, #0x82\n" + " lsl r2, r2, #0x1\n" + " add r1, r1, r2\n" + " str r0, [r1]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._570:\n" + " .align 2, 0\n" + "._569:\n" + " .word unk_debug_ewram_0+0x30\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5EF4() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._571\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x98\n" + " mov r1, #0x27\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x9c\n" + " mov r1, #0x1a\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xa0\n" + " mov r1, #0x28\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xa4\n" + " mov r1, #0x1b\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xa8\n" + " mov r1, #0x29\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xac\n" + " mov r1, #0x1c\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xb0\n" + " mov r1, #0x2a\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xb4\n" + " mov r1, #0x1d\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xb8\n" + " mov r1, #0x2b\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xbc\n" + " mov r1, #0x1e\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xc0\n" + " mov r1, #0x2c\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xc4\n" + " mov r1, #0x1f\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " bl CalculateMonStats\n" + " ldr r0, [r4]\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf0\n" + " str r2, [r1]\n" + " mov r1, #0x3b\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf4\n" + " str r2, [r1]\n" + " mov r1, #0x3c\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf8\n" + " str r2, [r1]\n" + " mov r1, #0x3d\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xfc\n" + " str r2, [r1]\n" + " mov r1, #0x3e\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x1\n" + " add r1, r0, r3\n" + " str r2, [r1]\n" + " mov r1, #0x3f\n" + " bl GetMonData\n" + " ldr r1, [r4]\n" + " mov r2, #0x82\n" + " lsl r2, r2, #0x1\n" + " add r1, r1, r2\n" + " str r0, [r1]\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._572:\n" + " .align 2, 0\n" + "._571:\n" + " .word unk_debug_ewram_0+0x30\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5FFC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xffffffe0\n" + " ldr r1, ._578\n" + " add r0, sp, #0x10\n" + " mov r2, #0x4\n" + " bl memcpy\n" + " add r7, sp, #0x14\n" + " ldr r1, ._578 + 4\n" + " add r0, r7, #0\n" + " mov r2, #0x8\n" + " bl memcpy\n" + " ldr r5, ._578 + 8\n" + " ldr r2, [r5]\n" + " add r0, r2, #0\n" + " add r0, r0, #0x98\n" + " ldr r4, [r0]\n" + " mov r1, #0x1f\n" + " and r4, r4, r1\n" + " add r0, r0, #0x8\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xa8\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0xa\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xb0\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0xf\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xb8\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x14\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xc0\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x19\n" + " orr r4, r4, r0\n" + " ldr r0, [r2, #0x64]\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl NationalPokedexNumToSpecies\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " ldr r0, [r5]\n" + " ldr r2, [r0, #0x68]\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " mov r6, #0x1\n" + " str r6, [sp]\n" + " ldr r3, [r0, #0x74]\n" + " str r3, [sp, #0x4]\n" + " str r6, [sp, #0x8]\n" + " ldr r3, [r0, #0x70]\n" + " str r3, [sp, #0xc]\n" + " add r3, r4, #0\n" + " bl CreateMon\n" + " ldr r2, [r5]\n" + " add r0, r2, #0\n" + " add r0, r0, #0x80\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._573 @cond_branch\n" + " lsl r1, r0, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r2, #0\n" + " mov r2, #0x0\n" + " bl SetMonMoveSlot\n" + "._573:\n" + " ldr r2, [r5]\n" + " add r0, r2, #0\n" + " add r0, r0, #0x84\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._574 @cond_branch\n" + " lsl r1, r0, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r2, #0\n" + " mov r2, #0x1\n" + " bl SetMonMoveSlot\n" + "._574:\n" + " ldr r2, [r5]\n" + " add r0, r2, #0\n" + " add r0, r0, #0x88\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._575 @cond_branch\n" + " lsl r1, r0, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r2, #0\n" + " mov r2, #0x2\n" + " bl SetMonMoveSlot\n" + "._575:\n" + " ldr r2, [r5]\n" + " add r0, r2, #0\n" + " add r0, r0, #0x8c\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._576 @cond_branch\n" + " lsl r1, r0, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r2, #0\n" + " mov r2, #0x3\n" + " bl SetMonMoveSlot\n" + "._576:\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x6c\n" + " mov r1, #0x19\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x98\n" + " mov r1, #0x27\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x9c\n" + " mov r1, #0x1a\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xa0\n" + " mov r1, #0x28\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xa4\n" + " mov r1, #0x1b\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xa8\n" + " mov r1, #0x29\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xac\n" + " mov r1, #0x1c\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xb0\n" + " mov r1, #0x2a\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xb4\n" + " mov r1, #0x1d\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xb8\n" + " mov r1, #0x2b\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xbc\n" + " mov r1, #0x1e\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xc0\n" + " mov r1, #0x2c\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xc4\n" + " mov r1, #0x1f\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xc8\n" + " mov r1, #0x16\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xcc\n" + " mov r1, #0x17\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xd0\n" + " mov r1, #0x18\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xd4\n" + " mov r1, #0x21\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xd8\n" + " mov r1, #0x2f\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xdc\n" + " mov r1, #0x30\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xe0\n" + " mov r1, #0x20\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xe4\n" + " mov r1, #0x22\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x90\n" + " mov r1, #0xc\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x94\n" + " mov r1, #0x2e\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xec\n" + " ldr r2, [r1]\n" + " lsl r2, r2, #0x3\n" + " ldr r1, ._578 + 12\n" + " add r2, r2, r1\n" + " mov r1, #0x37\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xe8\n" + " mov r1, #0x2d\n" + " bl SetMonData\n" + " ldr r1, [r5]\n" + " add r0, r1, #0\n" + " add r0, r0, #0xe8\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._577 @cond_branch\n" + " add r0, r1, #0\n" + " mov r1, #0x2\n" + " add r2, sp, #0x10\n" + " bl SetMonData\n" + " add r2, sp, #0x1c\n" + " strb r6, [r2]\n" + " ldr r0, [r5]\n" + " mov r1, #0x3\n" + " bl SetMonData\n" + "._577:\n" + " ldr r0, [r5]\n" + " mov r1, #0x7\n" + " add r2, r7, #0\n" + " bl SetMonData\n" + " mov r2, sp\n" + " add r2, r2, #0x1e\n" + " mov r0, #0xff\n" + " strh r0, [r2]\n" + " ldr r0, [r5]\n" + " mov r1, #0x23\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " bl CalculateMonStats\n" + " add sp, sp, #0x20\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._579:\n" + " .align 2, 0\n" + "._578:\n" + " .word gUnknown_Debug_083F8758\n" + " .word gUnknown_Debug_083F875C\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_083F86E8+0x4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C627C() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffff8\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " add r6, r4, #0\n" + " ldr r1, ._584\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " bl memcpy\n" + " add r5, sp, #0x4\n" + " ldr r1, ._584 + 4\n" + " add r0, r5, #0\n" + " mov r2, #0x2\n" + " bl memcpy\n" + " cmp r4, #0x1\n" + " beq ._580 @cond_branch\n" + " cmp r4, #0x1\n" + " bgt ._581 @cond_branch\n" + " cmp r4, #0\n" + " beq ._582 @cond_branch\n" + " b ._595\n" + "._585:\n" + " .align 2, 0\n" + "._584:\n" + " .word gUnknown_Debug_083F7FD4\n" + " .word gUnknown_Debug_083F8764\n" + "._581:\n" + " cmp r6, #0x2\n" + " beq ._586 @cond_branch\n" + " b ._595\n" + "._582:\n" + " ldr r0, ._589\n" + " ldr r0, [r0]\n" + " ldr r1, ._589 + 4\n" + " add r0, r0, r1\n" + " b ._588\n" + "._590:\n" + " .align 2, 0\n" + "._589:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + "._580:\n" + " ldr r4, ._593\n" + " ldr r3, [r4]\n" + " ldr r1, ._593 + 4\n" + " add r0, r3, r1\n" + " ldrb r2, [r0]\n" + " ldr r1, ._593 + 8\n" + " mov r6, #0xb4\n" + " lsl r6, r6, #0x1\n" + " add r0, r3, r6\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldrb r0, [r0, #0x4]\n" + " sub r0, r0, #0x1\n" + " cmp r2, r0\n" + " bge ._595 @cond_branch\n" + " lsl r2, r2, #0x19\n" + " mov r0, #0xa0\n" + " lsl r0, r0, #0x13\n" + " add r2, r2, r0\n" + " lsr r2, r2, #0x18\n" + " add r0, r5, #0\n" + " mov r1, #0x1\n" + " bl MenuPrint\n" + " ldr r0, [r4]\n" + " ldr r2, ._593 + 4\n" + " add r1, r0, r2\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r0, [r4]\n" + " add r0, r0, r2\n" + "._588:\n" + " ldrb r2, [r0]\n" + " lsl r2, r2, #0x19\n" + " mov r6, #0xa0\n" + " lsl r6, r6, #0x13\n" + " add r2, r2, r6\n" + " lsr r2, r2, #0x18\n" + " mov r0, sp\n" + " mov r1, #0x1\n" + " bl MenuPrint\n" + " b ._595\n" + "._594:\n" + " .align 2, 0\n" + "._593:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + " .word gUnknown_Debug_083F8698\n" + "._586:\n" + " ldr r4, ._596\n" + " ldr r0, [r4]\n" + " ldr r2, ._596 + 4\n" + " add r1, r0, r2\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._595 @cond_branch\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x19\n" + " mov r6, #0xa0\n" + " lsl r6, r6, #0x13\n" + " add r2, r2, r6\n" + " lsr r2, r2, #0x18\n" + " add r0, r5, #0\n" + " mov r1, #0x1\n" + " bl MenuPrint\n" + " ldr r0, [r4]\n" + " ldr r2, ._596 + 4\n" + " add r1, r0, r2\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r0, [r4]\n" + " add r0, r0, r2\n" + " ldrb r2, [r0]\n" + " lsl r2, r2, #0x19\n" + " add r2, r2, r6\n" + " lsr r2, r2, #0x18\n" + " mov r0, sp\n" + " mov r1, #0x1\n" + " bl MenuPrint\n" + "._595:\n" + " add sp, sp, #0x8\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._597:\n" + " .align 2, 0\n" + "._596:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6384() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " mov r0, #0x0\n" + " mov r1, #0x4\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r5, #0x0\n" + " ldr r3, ._600\n" + " ldr r1, ._600 + 4\n" + " ldr r0, [r1]\n" + " mov r2, #0xb4\n" + " lsl r2, r2, #0x1\n" + " add r0, r0, r2\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r3\n" + " ldr r0, [r0]\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._598 @cond_branch\n" + " add r4, r1, #0\n" + " ldr r0, ._600 + 8\n" + " mov r9, r0\n" + " mov r8, r3\n" + " add r7, r2, #0\n" + " mov r6, #0x1\n" + "._599:\n" + " ldr r0, [r4]\n" + " add r0, r0, r9\n" + " mov r1, #0xfc\n" + " strb r1, [r0]\n" + " ldr r0, [r4]\n" + " add r1, r1, #0x70\n" + " add r0, r0, r1\n" + " strb r6, [r0]\n" + " ldr r0, [r4]\n" + " ldr r2, ._600 + 12\n" + " add r0, r0, r2\n" + " strb r6, [r0]\n" + " ldr r1, [r4]\n" + " add r2, r2, #0x1\n" + " add r0, r1, r2\n" + " add r1, r1, r7\n" + " ldrb r1, [r1]\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r8\n" + " ldr r1, [r1]\n" + " add r1, r1, r5\n" + " ldrb r1, [r1]\n" + " mov r2, #0x1\n" + " bl debug_80C5738\n" + " ldr r0, [r4]\n" + " add r0, r0, r9\n" + " lsl r2, r5, #0x19\n" + " mov r1, #0xa0\n" + " lsl r1, r1, #0x13\n" + " add r2, r2, r1\n" + " lsr r2, r2, #0x18\n" + " mov r1, #0x2\n" + " bl MenuPrint\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " ldr r0, [r4]\n" + " add r0, r0, r7\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r8\n" + " ldr r0, [r0]\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " bne ._599 @cond_branch\n" + "._598:\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._601:\n" + " .align 2, 0\n" + "._600:\n" + " .word gUnknown_Debug_083F8698\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x16b\n" + " .word 0x16d\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C643C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " mov r0, #0x2\n" + " mov r1, #0x5\n" + " mov r2, #0x1c\n" + " mov r3, #0x12\n" + " bl MenuFillWindowRectWithBlankTile\n" + " mov r5, #0x0\n" + " ldr r6, ._605\n" + " ldr r1, ._605 + 4\n" + " ldr r0, [r1]\n" + " mov r3, #0xb4\n" + " lsl r3, r3, #0x1\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r6\n" + " ldr r0, [r0]\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._602 @cond_branch\n" + " add r4, r1, #0\n" + " mov r0, #0x1\n" + " mov r8, r0\n" + "._607:\n" + " ldr r0, [r4]\n" + " ldr r7, ._605 + 8\n" + " add r2, r0, r7\n" + " mov r0, #0xfc\n" + " strb r0, [r2]\n" + " ldr r0, [r4]\n" + " mov r2, #0xb6\n" + " lsl r2, r2, #0x1\n" + " add r0, r0, r2\n" + " mov r7, r8\n" + " strb r7, [r0]\n" + " ldr r2, [r4]\n" + " ldr r7, ._605 + 12\n" + " add r0, r2, r7\n" + " ldrb r0, [r0]\n" + " cmp r5, r0\n" + " bne ._603 @cond_branch\n" + " ldr r0, ._605 + 16\n" + " add r2, r2, r0\n" + " mov r0, #0x2\n" + " strb r0, [r2]\n" + " ldr r1, [r1]\n" + " mov r2, #0xb7\n" + " lsl r2, r2, #0x1\n" + " add r0, r1, r2\n" + " add r1, r1, r3\n" + " ldrb r1, [r1]\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r6\n" + " ldr r1, [r1]\n" + " add r1, r1, r5\n" + " ldrb r1, [r1]\n" + " mov r2, #0x2\n" + " bl debug_80C5738\n" + " b ._604\n" + "._606:\n" + " .align 2, 0\n" + "._605:\n" + " .word gUnknown_Debug_083F8698\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x16b\n" + " .word 0x169\n" + " .word 0x16d\n" + "._603:\n" + " ldr r3, ._608\n" + " add r0, r2, r3\n" + " mov r7, r8\n" + " strb r7, [r0]\n" + " ldr r1, [r1]\n" + " mov r2, #0xb7\n" + " lsl r2, r2, #0x1\n" + " add r0, r1, r2\n" + " ldr r2, ._608 + 4\n" + " sub r3, r3, #0x5\n" + " add r1, r1, r3\n" + " ldrb r1, [r1]\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r1, [r1]\n" + " add r1, r1, r5\n" + " ldrb r1, [r1]\n" + " mov r2, #0x1\n" + " bl debug_80C5738\n" + "._604:\n" + " ldr r0, [r4]\n" + " ldr r7, ._608 + 8\n" + " add r0, r0, r7\n" + " lsl r2, r5, #0x19\n" + " mov r1, #0xa0\n" + " lsl r1, r1, #0x13\n" + " add r2, r2, r1\n" + " lsr r2, r2, #0x18\n" + " mov r1, #0x2\n" + " bl MenuPrint\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " ldr r6, ._608 + 4\n" + " add r1, r4, #0\n" + " ldr r0, [r4]\n" + " mov r3, #0xb4\n" + " lsl r3, r3, #0x1\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r6\n" + " ldr r0, [r0]\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " bne ._607 @cond_branch\n" + "._602:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._609:\n" + " .align 2, 0\n" + "._608:\n" + " .word 0x16d\n" + " .word gUnknown_Debug_083F8698\n" + " .word 0x16b\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6544() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r9, r0\n" + " ldr r0, ._614\n" + " mov r8, r0\n" + " ldr r6, ._614 + 4\n" + " ldr r1, [r6]\n" + " mov r5, #0xb4\n" + " lsl r5, r5, #0x1\n" + " add r0, r1, r5\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r8\n" + " ldr r4, ._614 + 8\n" + " add r1, r1, r4\n" + " ldrb r1, [r1]\n" + " ldr r0, [r0]\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " bl debug_80C5B60\n" + " add r7, r0, #0\n" + " ldr r2, ._614 + 12\n" + " ldr r3, [r6]\n" + " add r5, r3, r5\n" + " ldrb r0, [r5]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r8\n" + " add r4, r3, r4\n" + " ldrb r1, [r4]\n" + " ldr r0, [r0]\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r2, r2, #0x4\n" + " add r0, r0, r2\n" + " ldr r1, [r0]\n" + " ldr r5, [r1]\n" + " ldr r4, [r1, #0x4]\n" + " ldr r2, ._614 + 16\n" + " mov r6, #0xb5\n" + " lsl r6, r6, #0x1\n" + " add r0, r3, r6\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldr r3, [r0]\n" + " ldrb r0, [r1, #0x8]\n" + " cmp r0, #0\n" + " bne ._623 @cond_branch\n" + " mov r0, r9\n" + " cmp r0, #0x1\n" + " beq ._611 @cond_branch\n" + " cmp r0, #0x2\n" + " beq ._612 @cond_branch\n" + " b ._623\n" + "._615:\n" + " .align 2, 0\n" + "._614:\n" + " .word gUnknown_Debug_083F8698\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + " .word gUnknown_Debug_083F8554\n" + " .word gUnknown_Debug_083F8768\n" + "._611:\n" + " sub r0, r4, r3\n" + " cmp r7, r0\n" + " bcs ._616 @cond_branch\n" + " add r7, r7, r3\n" + " b ._623\n" + "._616:\n" + " cmp r7, r4\n" + " bcc ._622 @cond_branch\n" + " b ._619\n" + "._612:\n" + " add r0, r5, r3\n" + " cmp r7, r0\n" + " bls ._620 @cond_branch\n" + " sub r7, r7, r3\n" + " b ._623\n" + "._620:\n" + " cmp r7, r5\n" + " bls ._622 @cond_branch\n" + "._619:\n" + " add r7, r5, #0\n" + " b ._623\n" + "._622:\n" + " add r7, r4, #0\n" + "._623:\n" + " ldr r1, ._624\n" + " ldr r0, ._624 + 4\n" + " ldr r2, [r0]\n" + " mov r3, #0xb4\n" + " lsl r3, r3, #0x1\n" + " add r0, r2, r3\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r6, ._624 + 8\n" + " add r1, r2, r6\n" + " ldrb r1, [r1]\n" + " ldr r0, [r0]\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " add r0, r7, #0\n" + " bl debug_80C5B74\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._625:\n" + " .align 2, 0\n" + "._624:\n" + " .word gUnknown_Debug_083F8698\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6630() +{ + asm( + " push {r4, r5, lr}\n" + " add r4, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r0, #0xfc\n" + " strb r0, [r4]\n" + " add r4, r4, #0x1\n" + " mov r0, #0x1\n" + " strb r0, [r4]\n" + " add r4, r4, #0x1\n" + " cmp r2, #0x2\n" + " bne ._626 @cond_branch\n" + " ldr r0, ._629\n" + " ldr r0, [r0]\n" + " mov r5, #0xb5\n" + " lsl r5, r5, #0x1\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " cmp r3, r0\n" + " beq ._627 @cond_branch\n" + " strb r2, [r4]\n" + " b ._628\n" + "._630:\n" + " .align 2, 0\n" + "._629:\n" + " .word unk_debug_ewram_0+0x30\n" + "._627:\n" + " mov r0, #0x4\n" + "._626:\n" + " strb r0, [r4]\n" + "._628:\n" + " add r0, r1, #0\n" + " add r0, r0, #0xa1\n" + " strb r0, [r4, #0x1]\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6678() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " mov r9, r0\n" + " add r6, r1, #0\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r8, r3\n" + " mov r7, #0x0\n" + " sub r0, r2, #1\n" + " cmp r0, #0x9\n" + " bhi ._644 @cond_branch\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._633\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._634:\n" + " .align 2, 0\n" + "._633:\n" + " .word ._632\n" + "._632:\n" + " .word ._635\n" + " .word ._636\n" + " .word ._637\n" + " .word ._638\n" + " .word ._639\n" + " .word ._640\n" + " .word ._641\n" + " .word ._642\n" + " .word ._643\n" + " .word ._644\n" + "._644:\n" + " mov r0, r9\n" + " add r4, r0, r7\n" + " ldr r5, ._645\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x9\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._643:\n" + " mov r1, r9\n" + " add r4, r1, r7\n" + " ldr r5, ._645 + 4\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x8\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._642:\n" + " mov r0, r9\n" + " add r4, r0, r7\n" + " ldr r5, ._645 + 8\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x7\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._641:\n" + " mov r1, r9\n" + " add r4, r1, r7\n" + " ldr r5, ._645 + 12\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x6\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._640:\n" + " mov r0, r9\n" + " add r4, r0, r7\n" + " ldr r5, ._645 + 16\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x5\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._639:\n" + " mov r1, r9\n" + " add r4, r1, r7\n" + " ldr r5, ._645 + 20\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x4\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._638:\n" + " mov r0, r9\n" + " add r4, r0, r7\n" + " mov r5, #0xfa\n" + " lsl r5, r5, #0x2\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x3\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._637:\n" + " mov r1, r9\n" + " add r4, r1, r7\n" + " add r0, r6, #0\n" + " mov r1, #0x64\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x2\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._636:\n" + " mov r0, r9\n" + " add r4, r0, r7\n" + " add r0, r6, #0\n" + " mov r1, #0xa\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x1\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " mov r1, #0xa\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._635:\n" + " mov r1, r9\n" + " add r0, r1, r7\n" + " lsl r1, r6, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r2, r8\n" + " mov r3, #0x0\n" + " bl debug_80C6630\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._646:\n" + " .align 2, 0\n" + "._645:\n" + " .word 0x3b9aca00\n" + " .word 0x5f5e100\n" + " .word 0x989680\n" + " .word 0xf4240\n" + " .word 0x186a0\n" + " .word 0x2710\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C689C() +{ + asm( + " push {r4, r5, lr}\n" + " add r5, r0, #0\n" + " add r4, r1, #0\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r3, #0x0\n" + " ldrb r0, [r4]\n" + " b ._647\n" + "._649:\n" + " add r1, r5, r3\n" + " add r0, r4, r3\n" + " ldrb r0, [r0]\n" + " strb r0, [r1]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " add r0, r4, r3\n" + " ldrb r0, [r0]\n" + "._647:\n" + " cmp r0, #0xff\n" + " beq ._648 @cond_branch\n" + " cmp r3, r2\n" + " bcc ._649 @cond_branch\n" + "._648:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C68CC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffff8\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " lsl r1, r1, #0x18\n" + " lsr r6, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " lsr r5, r2, #0x18\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r2, #0x0\n" + " mov r1, #0x0\n" + "._650:\n" + " mov r7, sp\n" + " add r0, r7, r2\n" + " strb r1, [r0]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x3\n" + " bls ._650 @cond_branch\n" + " mov r1, sp\n" + " mov r0, #0xff\n" + " strb r0, [r1, #0x4]\n" + " cmp r3, #0x2\n" + " beq ._651 @cond_branch\n" + " cmp r3, #0x2\n" + " bgt ._652 @cond_branch\n" + " cmp r3, #0x1\n" + " beq ._653 @cond_branch\n" + " b ._654\n" + "._652:\n" + " cmp r3, #0x3\n" + " beq ._655 @cond_branch\n" + "._654:\n" + " mov r1, sp\n" + " lsr r0, r4, #0xc\n" + " strb r0, [r1]\n" + "._655:\n" + " mov r1, sp\n" + " mov r0, #0xf0\n" + " lsl r0, r0, #0x4\n" + " and r0, r0, r4\n" + " lsr r0, r0, #0x8\n" + " strb r0, [r1, #0x1]\n" + "._651:\n" + " mov r1, sp\n" + " mov r0, #0xf0\n" + " and r0, r0, r4\n" + " lsr r0, r0, #0x4\n" + " strb r0, [r1, #0x2]\n" + "._653:\n" + " mov r2, sp\n" + " mov r1, #0xf\n" + " add r0, r4, #0\n" + " and r0, r0, r1\n" + " strb r0, [r2, #0x3]\n" + " mov r2, #0x0\n" + "._658:\n" + " mov r0, sp\n" + " add r1, r0, r2\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x9\n" + " bhi ._656 @cond_branch\n" + " add r0, r0, #0xa1\n" + " b ._657\n" + "._656:\n" + " add r0, r0, #0xb1\n" + "._657:\n" + " strb r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x3\n" + " bls ._658 @cond_branch\n" + " mov r0, #0x4\n" + " sub r0, r0, r3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r0, r0, sp\n" + " add r1, r6, #0\n" + " add r2, r5, #0\n" + " bl MenuPrint\n" + " add sp, sp, #0x8\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void InitSeePokemonGraphics() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl debug_80C35DC\n" + " ldr r1, ._659\n" + " ldr r2, ._659 + 4\n" + " ldr r0, ._659 + 8\n" + " str r1, [r0]\n" + " str r2, [r0, #0x4]\n" + " ldr r1, ._659 + 12\n" + " str r1, [r0, #0x8]\n" + " ldr r0, [r0, #0x8]\n" + " ldr r0, ._659 + 16\n" + " mov r1, #0x80\n" + " mov r2, #0x60\n" + " bl LoadPalette\n" + " ldr r1, ._659 + 20\n" + " add r0, sp, #0x4\n" + " strh r1, [r0]\n" + " mov r1, #0x0\n" + " mov r2, #0x2\n" + " bl LoadPalette\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r5, #0x0\n" + " str r5, [sp]\n" + " mov r1, #0x0\n" + " mov r2, #0x10\n" + " mov r3, #0x0\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._659 + 24\n" + " mov r6, #0x0\n" + " strh r5, [r0]\n" + " add r0, r0, #0x4\n" + " strh r5, [r0]\n" + " sub r0, r0, #0x2\n" + " strh r5, [r0]\n" + " add r0, r0, #0x4\n" + " strh r5, [r0]\n" + " ldr r1, ._659 + 28\n" + " mov r0, #0x3f\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " mov r0, #0x1f\n" + " strh r0, [r1]\n" + " add r1, r1, #0x6\n" + " mov r0, #0xf1\n" + " strh r0, [r1]\n" + " ldr r0, ._659 + 32\n" + " strh r5, [r0]\n" + " add r1, r1, #0x4\n" + " mov r0, #0x7\n" + " strh r0, [r1]\n" + " ldr r3, ._659 + 36\n" + " ldrh r2, [r3]\n" + " strh r5, [r3]\n" + " ldr r4, ._659 + 40\n" + " ldrh r0, [r4]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " strh r0, [r4]\n" + " strh r2, [r3]\n" + " ldr r0, ._659 + 44\n" + " bl SetVBlankCallback\n" + " ldr r0, ._659 + 48\n" + " bl SetMainCallback2\n" + " bl sub_809D51C\n" + " ldr r1, ._659 + 52\n" + " ldr r2, ._659 + 56\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r2, ._659 + 60\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " sub r1, r1, #0xa\n" + " mov r2, #0xcd\n" + " lsl r2, r2, #0x6\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, ._659 + 64\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " ldr r1, ._659 + 68\n" + " ldr r0, ._659 + 72\n" + " str r0, [r1]\n" + " ldr r1, ._659 + 76\n" + " strh r1, [r0]\n" + " strb r6, [r0, #0x2]\n" + " strb r6, [r0, #0x3]\n" + " strb r6, [r0, #0x5]\n" + " strb r6, [r0, #0x7]\n" + " strb r6, [r0, #0xa]\n" + " strb r6, [r0, #0x8]\n" + " ldr r4, ._659 + 80\n" + " add r0, r4, #0\n" + " mov r1, #0x6c\n" + " mov r2, #0x74\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " ldr r6, ._659 + 84\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " strh r5, [r0, #0x2e]\n" + " mov r1, #0x0\n" + " bl StartSpriteAnim\n" + " add r0, r4, #0\n" + " mov r1, #0x6c\n" + " mov r2, #0x74\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " mov r1, #0x1\n" + " strh r1, [r0, #0x2e]\n" + " bl StartSpriteAnim\n" + " add r0, r4, #0\n" + " mov r1, #0x6c\n" + " mov r2, #0x74\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " mov r1, #0x2\n" + " strh r1, [r0, #0x2e]\n" + " bl StartSpriteAnim\n" + " add sp, sp, #0x8\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._660:\n" + " .align 2, 0\n" + "._659:\n" + " .word byte_83F88EC\n" + " .word 0x600e000\n" + " .word 0x40000d4\n" + " .word 0x80000400\n" + " .word word_83F888C\n" + " .word 0x7fff\n" + " .word 0x4000040\n" + " .word 0x4000048\n" + " .word 0x4000052\n" + " .word 0x4000208\n" + " .word 0x4000200\n" + " .word debug_80C3758+1\n" + " .word debug_80C370C+1\n" + " .word 0x4000008\n" + " .word 0x1f0b\n" + " .word 0x1e0a\n" + " .word debug_80C6B00+1\n" + " .word unk_debug_ewram_0+0x34\n" + " .word +0x2018000\n" + " .word 0x115\n" + " .word unk_83F8868+0xc\n" + " .word gSprites\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6B00() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xffffffec\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " ldr r1, ._666\n" + " mov r0, sp\n" + " mov r2, #0x12\n" + " bl memcpy\n" + " mov r0, #0xa\n" + " mov r1, #0x0\n" + " mov r2, #0xf\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x9\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x0\n" + " mov r1, #0xa\n" + " mov r2, #0x9\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x10\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._666 + 4\n" + " mov r1, #0x11\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._666 + 8\n" + " mov r1, #0x1b\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._666 + 12\n" + " mov r1, #0x11\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0xa\n" + " mov r1, #0x8\n" + " mov r2, #0x1d\n" + " mov r3, #0xc\n" + " bl MenuDrawTextWindow\n" + " mov r2, #0x0\n" + " ldr r4, ._666 + 16\n" + " ldr r0, ._666 + 20\n" + " add r3, r0, #0\n" + "._661:\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, r4\n" + " add r1, r2, r3\n" + " strh r1, [r0]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0xe\n" + " bls ._661 @cond_branch\n" + " mov r2, #0x0\n" + " ldr r5, ._666 + 24\n" + " lsl r6, r7, #0x2\n" + " mov r8, r6\n" + " ldr r4, ._666 + 28\n" + " ldr r0, ._666 + 32\n" + " add r3, r0, #0\n" + "._662:\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, r4\n" + " add r1, r2, r3\n" + " strh r1, [r0]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0xe\n" + " bls ._662 @cond_branch\n" + " add r0, r5, #0\n" + " mov r1, #0x14\n" + " mov r2, #0xa\n" + " bl MenuPrint\n" + " mov r0, #0xa\n" + " mov r1, #0xd\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r1, sp\n" + " mov r0, #0x23\n" + " strb r0, [r1]\n" + " mov r2, #0x0\n" + " ldr r4, ._666 + 36\n" + " mov r5, #0x93\n" + " lsl r5, r5, #0x8\n" + " add r3, r5, #0\n" + "._663:\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r4\n" + " mov r6, sp\n" + " add r0, r6, r2\n" + " ldrb r0, [r0]\n" + " add r0, r0, r3\n" + " strh r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x11\n" + " bls ._663 @cond_branch\n" + " mov r1, sp\n" + " mov r0, #0x24\n" + " strb r0, [r1]\n" + " mov r2, #0x0\n" + " ldr r5, ._666 + 40\n" + " ldr r4, ._666 + 44\n" + " mov r0, #0x93\n" + " lsl r0, r0, #0x8\n" + " add r3, r0, #0\n" + "._664:\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r4\n" + " mov r6, sp\n" + " add r0, r6, r2\n" + " ldrb r0, [r0]\n" + " add r0, r0, r3\n" + " strh r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x11\n" + " bls ._664 @cond_branch\n" + " mov r1, sp\n" + " mov r0, #0x25\n" + " strb r0, [r1]\n" + " mov r2, #0x0\n" + " ldr r4, ._666 + 48\n" + " mov r0, #0x93\n" + " lsl r0, r0, #0x8\n" + " add r3, r0, #0\n" + "._665:\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r4\n" + " mov r6, sp\n" + " add r0, r6, r2\n" + " ldrb r0, [r0]\n" + " add r0, r0, r3\n" + " strh r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x11\n" + " bls ._665 @cond_branch\n" + " add r0, r5, #0\n" + " mov r1, #0xf\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " ldr r1, ._666 + 52\n" + " ldr r2, ._666 + 56\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r5, ._666 + 60\n" + " add r0, r5, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._666 + 64\n" + " mov r6, r8\n" + " add r0, r6, r7\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._666 + 68\n" + " str r1, [r0]\n" + " add sp, sp, #0x14\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._667:\n" + " .align 2, 0\n" + "._666:\n" + " .word gUnknown_Debug_083F8815\n" + " .word gUnknown_Debug_083F87D0\n" + " .word gUnknown_Debug_083F87D8\n" + " .word gUnknown_Debug_083F87E0\n" + " .word 0x600fa56\n" + " .word 0xa311\n" + " .word gUnknown_Debug_083F87F4\n" + " .word 0x600f256\n" + " .word 0x8301\n" + " .word 0x600f396\n" + " .word gUnknown_Debug_083F8801\n" + " .word 0x600f3d6\n" + " .word 0x600f416\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x699f\n" + " .word gTasks\n" + " .word debug_80C6CB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6CB8() +{ + 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, #0xfffffff4\n" + " mov sl, r0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov sl, r0\n" + " ldr r5, ._668\n" + " ldr r4, [r5]\n" + " ldrh r2, [r4]\n" + " lsl r0, r2, #0x3\n" + " ldr r1, ._668 + 4\n" + " add r0, r0, r1\n" + " ldr r1, ._668 + 8\n" + " lsl r2, r2, #0x2\n" + " add r2, r2, r1\n" + " ldrb r1, [r2]\n" + " ldrb r2, [r2, #0x1]\n" + " ldr r3, ._668 + 12\n" + " mov r8, r3\n" + " ldr r6, [r3]\n" + " str r6, [sp, #0x8]\n" + " ldr r3, [r3, #0x4]\n" + " str r3, [sp]\n" + " ldrh r3, [r4]\n" + " str r3, [sp, #0x4]\n" + " add r3, r6, #0\n" + " bl DecompressPicFromTable_2\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r7, ._668 + 16\n" + " add r0, r0, r7\n" + " bl LoadCompressedObjectPalette\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x1\n" + " bl GetMonSpriteTemplate_803C56C\n" + " ldr r0, ._668 + 20\n" + " mov r1, #0x28\n" + " mov r2, #0x28\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " ldr r1, [r5]\n" + " strb r0, [r1, #0x2]\n" + " ldr r2, [r5]\n" + " ldrb r1, [r2, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._668 + 24\n" + " add r0, r0, r1\n" + " ldr r3, ._668 + 28\n" + " mov r9, r3\n" + " str r3, [r0]\n" + " ldrb r0, [r2, #0x2]\n" + " lsl r1, r0, #0x4\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " ldr r6, ._668 + 32\n" + " add r1, r1, r6\n" + " ldrb r2, [r1, #0x5]\n" + " mov r6, #0xd\n" + " neg r6, r6\n" + " add r0, r6, #0\n" + " and r0, r0, r2\n" + " strb r0, [r1, #0x5]\n" + " ldr r4, [r5]\n" + " ldrh r2, [r4]\n" + " lsl r0, r2, #0x3\n" + " ldr r1, ._668 + 36\n" + " add r0, r0, r1\n" + " ldr r1, ._668 + 40\n" + " lsl r2, r2, #0x2\n" + " add r2, r2, r1\n" + " ldrb r1, [r2]\n" + " ldrb r2, [r2, #0x1]\n" + " mov r7, r8\n" + " ldr r3, [r7, #0x8]\n" + " str r3, [sp]\n" + " ldrh r3, [r4]\n" + " str r3, [sp, #0x4]\n" + " ldr r3, [sp, #0x8]\n" + " bl DecompressPicFromTable_2\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._668 + 16\n" + " add r0, r0, r1\n" + " bl LoadCompressedObjectPalette\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x2\n" + " bl GetMonSpriteTemplate_803C56C\n" + " ldr r0, ._668 + 20\n" + " mov r1, #0x28\n" + " mov r2, #0x78\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " ldr r1, [r5]\n" + " strb r0, [r1, #0x3]\n" + " ldr r2, [r5]\n" + " ldrb r1, [r2, #0x3]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r3, ._668 + 24\n" + " add r0, r0, r3\n" + " mov r7, r9\n" + " str r7, [r0]\n" + " ldrb r1, [r2, #0x3]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._668 + 32\n" + " add r0, r0, r1\n" + " ldrb r1, [r0, #0x5]\n" + " and r6, r6, r1\n" + " strb r6, [r0, #0x5]\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " ldr r1, ._668 + 44\n" + " mov r2, #0x0\n" + " str r2, [sp]\n" + " str r2, [sp, #0x4]\n" + " mov r2, #0x68\n" + " mov r3, #0x2c\n" + " bl CreateMonIcon\n" + " ldr r1, [r5]\n" + " strb r0, [r1, #0x4]\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " bl SpeciesToNationalPokedexNum\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r2, #0xff\n" + " lsl r2, r2, #0x2\n" + " mov r1, #0x2\n" + " bl sub_8091738\n" + " ldr r1, ._668 + 48\n" + " ldr r3, ._668 + 52\n" + " add r0, r3, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r6, ._668 + 56\n" + " add r0, r6, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x3e\n" + " ldr r7, ._668 + 60\n" + " add r0, r7, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r2, ._668 + 64\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x11\n" + " mov r2, #0x3\n" + " bl debug_80C3800\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x1a\n" + " mov r2, #0x5\n" + " bl debug_80C376C\n" + " ldr r2, [r5]\n" + " ldrb r1, [r2, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r3, ._668 + 32\n" + " add r0, r0, r3\n" + " ldrb r0, [r0, #0x5]\n" + " lsr r0, r0, #0x4\n" + " strb r0, [r2, #0x6]\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " ldr r4, ._668 + 68\n" + " add r0, r0, r4\n" + " ldr r6, ._668 + 72\n" + " add r1, r4, r6\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r4\n" + " ldr r1, ._668 + 76\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r1, ._668 + 80\n" + " mov r7, sl\n" + " lsl r0, r7, #0x2\n" + " add r0, r0, sl\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._668 + 84\n" + " str r1, [r0]\n" + " ldr r0, [r5]\n" + " mov r1, #0x0\n" + " strb r1, [r0, #0x9]\n" + " bl StopCryAndClearCrySongs\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x0\n" + " bl PlayCry1\n" + " add sp, sp, #0xc\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" + "._669:\n" + " .align 2, 0\n" + "._668:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gMonFrontPicTable\n" + " .word gMonFrontPicCoords\n" + " .word gUnknown_081FAF4C\n" + " .word gMonPaletteTable\n" + " .word gUnknown_02024E8C\n" + " .word gSprites+0x1c\n" + " .word debug_69+1\n" + " .word gSprites\n" + " .word gMonBackPicTable\n" + " .word gMonBackPicCoords\n" + " .word sub_809D62C+1\n" + " .word 0x600f858\n" + " .word 0xf3fc\n" + " .word 0xf3fd\n" + " .word 0xf3fe\n" + " .word 0xf3ff\n" + " .word gPlttBufferUnfaded+0x200\n" + " .word 0xffffff00\n" + " .word gPlttBufferFaded+0x100\n" + " .word gTasks\n" + " .word debug_80C6EE8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6EE8() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " lsl r6, r6, #0x18\n" + " lsr r6, r6, #0x18\n" + " ldr r4, ._670\n" + " ldr r5, ._670 + 4\n" + " ldr r1, [r5]\n" + " add r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, ._670 + 8\n" + " add r4, r4, r0\n" + " ldr r3, [r5]\n" + " ldrb r0, [r3, #0x7]\n" + " add r0, r0, #0x81\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r4\n" + " ldrh r4, [r0]\n" + " mov r1, #0x1f\n" + " and r1, r1, r4\n" + " ldrb r2, [r3, #0xc]\n" + " mov r0, #0x20\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r3, #0xc]\n" + " ldr r3, [r5]\n" + " mov r1, #0xf8\n" + " lsl r1, r1, #0x2\n" + " and r1, r1, r4\n" + " ldrh r2, [r3, #0xc]\n" + " ldr r0, ._670 + 12\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strh r0, [r3, #0xc]\n" + " mov r1, #0xf8\n" + " lsl r1, r1, #0x7\n" + " and r1, r1, r4\n" + " lsr r1, r1, #0x8\n" + " ldrb r2, [r3, #0xd]\n" + " mov r0, #0x7d\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r3, #0xd]\n" + " ldr r2, [r5]\n" + " ldrb r1, [r2, #0xd]\n" + " mov r0, #0x7f\n" + " and r0, r0, r1\n" + " strb r0, [r2, #0xd]\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x7]\n" + " add r0, r0, #0x1\n" + " mov r1, #0xb\n" + " mov r2, #0xa\n" + " mov r3, #0x2\n" + " bl debug_80C68CC\n" + " ldr r0, ._670 + 16\n" + " mov r1, #0xd\n" + " mov r2, #0xa\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0xe\n" + " mov r2, #0xa\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " ldr r1, ._670 + 20\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._670 + 24\n" + " str r1, [r0]\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._671:\n" + " .align 2, 0\n" + "._670:\n" + " .word gPlttBufferUnfaded+0x100\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0xffffff00\n" + " .word 0xfffffc1f\n" + " .word gUnknown_Debug_083F8813\n" + " .word gTasks\n" + " .word debug_80C6FA8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6FA8() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " ldr r1, ._674\n" + " ldrh r2, [r1, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " add r4, r1, #0\n" + " cmp r0, #0\n" + " beq ._672 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._674 + 4\n" + " bl SetMainCallback2\n" + " ldr r1, ._674 + 8\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._674 + 12\n" + " str r1, [r0]\n" + " b ._703\n" + "._675:\n" + " .align 2, 0\n" + "._674:\n" + " .word gMain\n" + " .word debug_80C370C+1\n" + " .word gTasks\n" + " .word debug_80C373C+1\n" + "._672:\n" + " ldrh r1, [r4, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._676 @cond_branch\n" + " ldr r4, ._678\n" + " ldr r0, [r4]\n" + " ldrh r1, [r0]\n" + " mov r0, #0x0\n" + " b ._677\n" + "._679:\n" + " .align 2, 0\n" + "._678:\n" + " .word unk_debug_ewram_0+0x34\n" + "._676:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._680 @cond_branch\n" + " ldr r4, ._682\n" + " ldr r0, [r4]\n" + " ldrh r1, [r0]\n" + " mov r0, #0x1\n" + "._677:\n" + " bl debug_80C3878\n" + " ldr r1, [r4]\n" + " strh r0, [r1]\n" + " ldr r1, ._682 + 4\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._682 + 8\n" + " str r1, [r0]\n" + " b ._703\n" + "._683:\n" + " .align 2, 0\n" + "._682:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gTasks\n" + " .word debug_80C71FC+1\n" + "._680:\n" + " mov r3, #0x1\n" + " and r3, r3, r2\n" + " cmp r3, #0\n" + " beq ._684 @cond_branch\n" + " ldr r0, ._686\n" + " ldr r1, [r0]\n" + " mov r0, #0x1\n" + " strb r0, [r1, #0x5]\n" + " ldr r1, ._686 + 4\n" + " ldr r2, ._686 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._686 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._686 + 16\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._686 + 20\n" + " str r1, [r0]\n" + " b ._703\n" + "._687:\n" + " .align 2, 0\n" + "._686:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x4167\n" + " .word gTasks\n" + " .word debug_80C7294+1\n" + "._684:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._689 @cond_branch\n" + " ldr r1, ._691\n" + " ldr r2, [r1]\n" + " ldrb r0, [r2, #0x7]\n" + " cmp r0, #0xd\n" + " bhi ._689 @cond_branch\n" + " lsl r0, r0, #0x1\n" + " ldr r2, ._691 + 4\n" + " add r0, r0, r2\n" + " strh r3, [r0]\n" + " ldr r1, [r1]\n" + " ldrb r0, [r1, #0x7]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1, #0x7]\n" + " b ._695\n" + "._692:\n" + " .align 2, 0\n" + "._691:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x5000102\n" + "._689:\n" + " ldrh r1, [r4, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._694 @cond_branch\n" + " ldr r2, ._696\n" + " ldr r1, [r2]\n" + " ldrb r0, [r1, #0x7]\n" + " cmp r0, #0\n" + " beq ._694 @cond_branch\n" + " lsl r0, r0, #0x1\n" + " ldr r1, ._696 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " ldr r1, [r2]\n" + " ldrb r0, [r1, #0x7]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1, #0x7]\n" + " b ._695\n" + "._697:\n" + " .align 2, 0\n" + "._696:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x5000102\n" + "._694:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._698 @cond_branch\n" + " ldr r4, ._701\n" + " ldr r2, [r4]\n" + " ldrb r0, [r2, #0x9]\n" + " mov r1, #0x1\n" + " eor r0, r0, r1\n" + " strb r0, [r2, #0x9]\n" + " ldr r1, [r4]\n" + " ldrb r0, [r1, #0x9]\n" + " cmp r0, #0\n" + " beq ._699 @cond_branch\n" + " ldrh r0, [r1]\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " bl species_and_otid_get_pal\n" + " ldr r1, [r4]\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x14\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x11\n" + " add r1, r1, r2\n" + " lsr r1, r1, #0x10\n" + " mov r2, #0x20\n" + " bl LoadCompressedPalette\n" + " b ._700\n" + "._702:\n" + " .align 2, 0\n" + "._701:\n" + " .word unk_debug_ewram_0+0x34\n" + "._699:\n" + " ldrh r0, [r1]\n" + " mov r1, #0x0\n" + " mov r2, #0x9\n" + " bl species_and_otid_get_pal\n" + " ldr r1, [r4]\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x14\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x11\n" + " add r1, r1, r2\n" + " lsr r1, r1, #0x10\n" + " mov r2, #0x20\n" + " bl LoadCompressedPalette\n" + "._700:\n" + " ldr r5, ._704\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " ldr r4, ._704 + 4\n" + " add r0, r0, r4\n" + " ldr r2, ._704 + 8\n" + " add r1, r4, r2\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r4\n" + " ldr r1, ._704 + 12\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + "._695:\n" + " ldr r1, ._704 + 16\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._704 + 20\n" + " str r1, [r0]\n" + " b ._703\n" + "._705:\n" + " .align 2, 0\n" + "._704:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gPlttBufferUnfaded+0x200\n" + " .word 0xffffff00\n" + " .word gPlttBufferFaded+0x100\n" + " .word gTasks\n" + " .word debug_80C6EE8+1\n" + "._698:\n" + " mov r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._706 @cond_branch\n" + " bl StopCryAndClearCrySongs\n" + " ldr r0, ._707\n" + " ldr r0, [r0]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x0\n" + " bl PlayCry1\n" + "._706:\n" + " ldr r2, ._707\n" + " ldr r1, [r2]\n" + " ldrb r0, [r1, #0x8]\n" + " add r0, r0, #0x4\n" + " strb r0, [r1, #0x8]\n" + " ldr r3, [r2]\n" + " ldrb r1, [r3, #0x8]\n" + " mov r0, #0x1f\n" + " and r0, r0, r1\n" + " strb r0, [r3, #0x8]\n" + " ldr r0, [r2]\n" + " ldrb r1, [r0, #0x7]\n" + " lsl r1, r1, #0x1\n" + " ldr r2, ._707 + 4\n" + " add r1, r1, r2\n" + " ldr r2, ._707 + 8\n" + " ldrb r0, [r0, #0x8]\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r2\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + "._703:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._708:\n" + " .align 2, 0\n" + "._707:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x5000142\n" + " .word gUnknown_Debug_083F8790\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C71FC() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " ldr r6, ._709\n" + " ldr r4, ._709 + 4\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldrb r0, [r0, #0x5]\n" + " lsr r0, r0, #0x4\n" + " bl GetSpritePaletteTagByPaletteNum\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl FreeSpritePaletteByTag\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " bl DestroySprite\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x3]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldrb r0, [r0, #0x5]\n" + " lsr r0, r0, #0x4\n" + " bl GetSpritePaletteTagByPaletteNum\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl FreeSpritePaletteByTag\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x3]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " bl DestroySprite\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x4]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " bl sub_809D510\n" + " ldr r1, ._709 + 8\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._709 + 12\n" + " str r1, [r0]\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._710:\n" + " .align 2, 0\n" + "._709:\n" + " .word gSprites\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gTasks\n" + " .word debug_80C6CB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C7294() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " ldr r0, ._713\n" + " ldrh r2, [r0, #0x2e]\n" + " mov r1, #0x1\n" + " and r1, r1, r2\n" + " add r3, r0, #0\n" + " cmp r1, #0\n" + " beq ._711 @cond_branch\n" + " ldr r0, ._713 + 4\n" + " ldr r1, [r0]\n" + " mov r0, #0x0\n" + " strb r0, [r1, #0x5]\n" + " ldr r1, ._713 + 8\n" + " ldr r2, ._713 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._713 + 16\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " b ._712\n" + "._714:\n" + " .align 2, 0\n" + "._713:\n" + " .word gMain\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x699f\n" + "._711:\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._715 @cond_branch\n" + " ldr r6, ._717\n" + " ldr r0, [r6]\n" + " strb r1, [r0, #0x5]\n" + " ldr r1, ._717 + 4\n" + " ldr r2, ._717 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._717 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, [r6]\n" + " add r0, r0, #0x10\n" + " ldr r4, ._717 + 16\n" + " add r1, r4, #0\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, [r6]\n" + " add r0, r0, #0x10\n" + " ldr r5, ._717 + 20\n" + " add r1, r5, #0\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r1, [r6]\n" + " add r0, r1, #0\n" + " add r0, r0, #0x10\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x5\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r4, r4, r2\n" + " add r1, r1, r4\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r1, [r6]\n" + " add r0, r1, #0\n" + " add r0, r0, #0x10\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x5\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r5, r5, r2\n" + " add r1, r1, r5\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + "._712:\n" + " ldr r1, ._717 + 24\n" + " lsl r0, r7, #0x2\n" + " add r0, r0, r7\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._717 + 28\n" + " str r1, [r0]\n" + " b ._754\n" + "._718:\n" + " .align 2, 0\n" + "._717:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x699f\n" + " .word gPlttBufferUnfaded+0x100\n" + " .word gPlttBufferFaded+0x100\n" + " .word gTasks\n" + " .word debug_80C6EE8+1\n" + "._715:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._720 @cond_branch\n" + " ldr r0, ._722\n" + " ldr r1, [r0]\n" + " ldrb r0, [r1, #0xa]\n" + " cmp r0, #0x1\n" + " bhi ._720 @cond_branch\n" + " add r0, r0, #0x1\n" + " strb r0, [r1, #0xa]\n" + " b ._754\n" + "._723:\n" + " .align 2, 0\n" + "._722:\n" + " .word unk_debug_ewram_0+0x34\n" + "._720:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._725 @cond_branch\n" + " ldr r0, ._727\n" + " ldr r1, [r0]\n" + " ldrb r0, [r1, #0xa]\n" + " cmp r0, #0\n" + " beq ._725 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1, #0xa]\n" + " b ._754\n" + "._728:\n" + " .align 2, 0\n" + "._727:\n" + " .word unk_debug_ewram_0+0x34\n" + "._725:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._729 @cond_branch\n" + " ldr r0, ._734\n" + " ldr r2, [r0]\n" + " ldrb r0, [r2, #0xa]\n" + " cmp r0, #0x1\n" + " beq ._730 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._731 @cond_branch\n" + " cmp r0, #0\n" + " beq ._732 @cond_branch\n" + " b ._754\n" + "._735:\n" + " .align 2, 0\n" + "._734:\n" + " .word unk_debug_ewram_0+0x34\n" + "._731:\n" + " cmp r0, #0x2\n" + " beq ._736 @cond_branch\n" + " b ._754\n" + "._732:\n" + " ldrb r3, [r2, #0xc]\n" + " lsl r1, r3, #0x1b\n" + " lsr r0, r1, #0x1b\n" + " cmp r0, #0x1e\n" + " bhi ._761 @cond_branch\n" + " add r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " mov r1, #0x20\n" + " neg r1, r1\n" + " and r1, r1, r3\n" + " orr r1, r1, r0\n" + " strb r1, [r2, #0xc]\n" + " b ._761\n" + "._730:\n" + " ldrh r3, [r2, #0xc]\n" + " lsl r1, r3, #0x16\n" + " lsr r0, r1, #0x1b\n" + " cmp r0, #0x1e\n" + " bhi ._761 @cond_branch\n" + " add r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " ldr r1, ._742\n" + " and r1, r1, r3\n" + " orr r1, r1, r0\n" + " strh r1, [r2, #0xc]\n" + " b ._761\n" + "._743:\n" + " .align 2, 0\n" + "._742:\n" + " .word 0xfffffc1f\n" + "._736:\n" + " ldrb r3, [r2, #0xd]\n" + " lsl r1, r3, #0x19\n" + " lsr r0, r1, #0x1b\n" + " cmp r0, #0x1e\n" + " bhi ._761 @cond_branch\n" + " add r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " mov r1, #0x7d\n" + " neg r1, r1\n" + " and r1, r1, r3\n" + " orr r1, r1, r0\n" + " strb r1, [r2, #0xd]\n" + " b ._761\n" + "._729:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._754 @cond_branch\n" + " ldr r0, ._751\n" + " ldr r3, [r0]\n" + " ldrb r0, [r3, #0xa]\n" + " cmp r0, #0x1\n" + " beq ._747 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._748 @cond_branch\n" + " cmp r0, #0\n" + " beq ._749 @cond_branch\n" + " b ._754\n" + "._752:\n" + " .align 2, 0\n" + "._751:\n" + " .word unk_debug_ewram_0+0x34\n" + "._748:\n" + " cmp r0, #0x2\n" + " beq ._753 @cond_branch\n" + " b ._754\n" + "._749:\n" + " ldrb r2, [r3, #0xc]\n" + " mov r0, #0x1f\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._761 @cond_branch\n" + " lsl r0, r2, #0x1b\n" + " lsr r0, r0, #0x1b\n" + " sub r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " mov r1, #0x20\n" + " neg r1, r1\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strb r1, [r3, #0xc]\n" + " b ._761\n" + "._747:\n" + " ldrh r2, [r3, #0xc]\n" + " mov r0, #0xf8\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._761 @cond_branch\n" + " lsl r0, r2, #0x16\n" + " lsr r0, r0, #0x1b\n" + " sub r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " ldr r1, ._759\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strh r1, [r3, #0xc]\n" + " b ._761\n" + "._760:\n" + " .align 2, 0\n" + "._759:\n" + " .word 0xfffffc1f\n" + "._753:\n" + " ldrb r2, [r3, #0xd]\n" + " mov r0, #0x7c\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._761 @cond_branch\n" + " lsl r0, r2, #0x19\n" + " lsr r0, r0, #0x1b\n" + " sub r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " mov r1, #0x7d\n" + " neg r1, r1\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strb r1, [r3, #0xd]\n" + "._761:\n" + " ldr r0, ._762\n" + " lsl r1, r7, #0x2\n" + " add r1, r1, r7\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._762 + 4\n" + " str r0, [r1]\n" + "._754:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._763:\n" + " .align 2, 0\n" + "._762:\n" + " .word gTasks\n" + " .word debug_80C74E4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C74E4() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " ldr r0, ._764\n" + " ldr r3, [r0]\n" + " ldrb r0, [r3, #0xc]\n" + " lsl r0, r0, #0x1b\n" + " lsr r0, r0, #0x1b\n" + " ldrh r2, [r3, #0xc]\n" + " mov r1, #0xf8\n" + " lsl r1, r1, #0x2\n" + " and r1, r1, r2\n" + " add r0, r0, r1\n" + " ldrb r1, [r3, #0xd]\n" + " lsl r1, r1, #0x19\n" + " lsr r1, r1, #0x1b\n" + " lsl r1, r1, #0xa\n" + " add r0, r0, r1\n" + " ldr r6, ._764 + 4\n" + " ldrb r1, [r3, #0x7]\n" + " add r1, r1, #0x81\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r6\n" + " strh r0, [r1]\n" + " ldr r1, ._764 + 8\n" + " mov r8, r1\n" + " ldrb r1, [r3, #0x7]\n" + " add r1, r1, #0x81\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r8\n" + " strh r0, [r1]\n" + " ldrb r1, [r3, #0x6]\n" + " lsl r1, r1, #0x4\n" + " ldrb r2, [r3, #0x7]\n" + " ldr r4, ._764 + 12\n" + " add r2, r2, r4\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r6\n" + " strh r0, [r1]\n" + " ldrb r1, [r3, #0x6]\n" + " lsl r1, r1, #0x4\n" + " ldrb r2, [r3, #0x7]\n" + " add r2, r2, r4\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r8\n" + " strh r0, [r1]\n" + " mov r1, #0xe\n" + " mov r2, #0xa\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " ldr r1, ._764 + 16\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._764 + 20\n" + " str r1, [r0]\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._765:\n" + " .align 2, 0\n" + "._764:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gPlttBufferUnfaded\n" + " .word gPlttBufferFaded\n" + " .word 0x101\n" + " .word gTasks\n" + " .word debug_80C7294+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C7584() +{ + asm( + " push {r4, lr}\n" + " add r2, r0, #0\n" + " ldr r0, ._771\n" + " ldr r3, [r0]\n" + " ldrb r1, [r3, #0x5]\n" + " add r4, r0, #0\n" + " cmp r1, #0\n" + " beq ._766 @cond_branch\n" + " mov r1, #0x2e\n" + " ldsh r0, [r2, r1]\n" + " cmp r0, #0x1\n" + " beq ._767 @cond_branch\n" + " cmp r0, #0x1\n" + " ble ._768 @cond_branch\n" + " cmp r0, #0x2\n" + " beq ._769 @cond_branch\n" + "._768:\n" + " ldrb r0, [r3, #0xc]\n" + " lsl r0, r0, #0x1b\n" + " b ._773\n" + "._772:\n" + " .align 2, 0\n" + "._771:\n" + " .word unk_debug_ewram_0+0x34\n" + "._767:\n" + " ldrh r0, [r3, #0xc]\n" + " lsl r0, r0, #0x16\n" + " b ._773\n" + "._769:\n" + " ldrb r0, [r3, #0xd]\n" + " lsl r0, r0, #0x19\n" + "._773:\n" + " lsr r0, r0, #0x1b\n" + " lsl r0, r0, #0x2\n" + " strh r0, [r2, #0x24]\n" + " mov r1, #0x2e\n" + " ldsh r0, [r2, r1]\n" + " lsl r0, r0, #0x3\n" + " strh r0, [r2, #0x26]\n" + " ldrh r0, [r2, #0x30]\n" + " add r3, r0, #1\n" + " strh r3, [r2, #0x30]\n" + " mov r0, #0x2e\n" + " ldsh r1, [r2, r0]\n" + " ldr r0, [r4]\n" + " ldrb r0, [r0, #0xa]\n" + " cmp r1, r0\n" + " bne ._775 @cond_branch\n" + " mov r0, #0x8\n" + " and r3, r3, r0\n" + " cmp r3, #0\n" + " bne ._775 @cond_branch\n" + "._766:\n" + " add r0, r2, #0\n" + " add r0, r0, #0x3e\n" + " ldrb r1, [r0]\n" + " mov r2, #0x4\n" + " orr r1, r1, r2\n" + " strb r1, [r0]\n" + " b ._776\n" + "._775:\n" + " add r2, r2, #0x3e\n" + " ldrb r1, [r2]\n" + " mov r0, #0x5\n" + " neg r0, r0\n" + " and r0, r0, r1\n" + " strb r0, [r2]\n" + "._776:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void InitSeeTrainers() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " bl debug_80C35DC\n" + " ldr r1, ._777\n" + " ldr r2, ._777 + 4\n" + " ldr r0, ._777 + 8\n" + " str r1, [r0]\n" + " str r2, [r0, #0x4]\n" + " ldr r1, ._777 + 12\n" + " str r1, [r0, #0x8]\n" + " ldr r0, [r0, #0x8]\n" + " ldr r0, ._777 + 16\n" + " mov r1, #0x80\n" + " mov r2, #0x60\n" + " bl LoadPalette\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r5, #0x0\n" + " str r5, [sp]\n" + " mov r1, #0x0\n" + " mov r2, #0x10\n" + " mov r3, #0x0\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._777 + 20\n" + " mov r6, #0x0\n" + " strh r5, [r0]\n" + " add r0, r0, #0x4\n" + " strh r5, [r0]\n" + " sub r0, r0, #0x2\n" + " strh r5, [r0]\n" + " add r0, r0, #0x4\n" + " strh r5, [r0]\n" + " ldr r1, ._777 + 24\n" + " mov r0, #0x3f\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " mov r0, #0x1f\n" + " strh r0, [r1]\n" + " add r1, r1, #0x6\n" + " mov r0, #0xf1\n" + " strh r0, [r1]\n" + " ldr r0, ._777 + 28\n" + " strh r5, [r0]\n" + " add r1, r1, #0x4\n" + " mov r0, #0x7\n" + " strh r0, [r1]\n" + " ldr r3, ._777 + 32\n" + " ldrh r2, [r3]\n" + " strh r5, [r3]\n" + " ldr r4, ._777 + 36\n" + " ldrh r0, [r4]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " strh r0, [r4]\n" + " strh r2, [r3]\n" + " ldr r0, ._777 + 40\n" + " bl SetVBlankCallback\n" + " ldr r0, ._777 + 44\n" + " bl SetMainCallback2\n" + " ldr r1, ._777 + 48\n" + " ldr r2, ._777 + 52\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r2, ._777 + 56\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " sub r1, r1, #0xa\n" + " mov r2, #0xcd\n" + " lsl r2, r2, #0x6\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, ._777 + 60\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " ldr r1, ._777 + 64\n" + " ldr r0, ._777 + 68\n" + " str r0, [r1]\n" + " strh r5, [r0]\n" + " strb r6, [r0, #0x2]\n" + " strb r6, [r0, #0x3]\n" + " strb r6, [r0, #0x5]\n" + " strb r6, [r0, #0x7]\n" + " strb r6, [r0, #0xa]\n" + " strb r6, [r0, #0x8]\n" + " ldr r4, ._777 + 72\n" + " add r0, r4, #0\n" + " mov r1, #0x6c\n" + " mov r2, #0x74\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " ldr r6, ._777 + 76\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " strh r5, [r0, #0x2e]\n" + " mov r1, #0x0\n" + " bl StartSpriteAnim\n" + " add r0, r4, #0\n" + " mov r1, #0x6c\n" + " mov r2, #0x74\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " mov r1, #0x1\n" + " strh r1, [r0, #0x2e]\n" + " bl StartSpriteAnim\n" + " add r0, r4, #0\n" + " mov r1, #0x6c\n" + " mov r2, #0x74\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " mov r1, #0x2\n" + " strh r1, [r0, #0x2e]\n" + " bl StartSpriteAnim\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._778:\n" + " .align 2, 0\n" + "._777:\n" + " .word byte_83F88EC\n" + " .word 0x600e000\n" + " .word 0x40000d4\n" + " .word 0x80000400\n" + " .word word_83F888C\n" + " .word 0x4000040\n" + " .word 0x4000048\n" + " .word 0x4000052\n" + " .word 0x4000208\n" + " .word 0x4000200\n" + " .word debug_80C3758+1\n" + " .word debug_80C370C+1\n" + " .word 0x4000008\n" + " .word 0x1f0b\n" + " .word 0x1e0a\n" + " .word debug_80C777C+1\n" + " .word unk_debug_ewram_0+0x34\n" + " .word +0x2018000\n" + " .word unk_83F8868+0xc\n" + " .word gSprites\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C777C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xffffffec\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " ldr r1, ._784\n" + " mov r0, sp\n" + " mov r2, #0x12\n" + " bl memcpy\n" + " mov r0, #0x9\n" + " mov r1, #0x0\n" + " mov r2, #0xe\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x9\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x0\n" + " mov r1, #0xa\n" + " mov r2, #0x9\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0xe\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._784 + 4\n" + " mov r1, #0xf\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._784 + 8\n" + " mov r1, #0x19\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._784 + 12\n" + " mov r1, #0xf\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0xa\n" + " mov r1, #0x8\n" + " mov r2, #0x1d\n" + " mov r3, #0xc\n" + " bl MenuDrawTextWindow\n" + " mov r2, #0x0\n" + " ldr r4, ._784 + 16\n" + " ldr r0, ._784 + 20\n" + " add r3, r0, #0\n" + "._779:\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, r4\n" + " add r1, r2, r3\n" + " strh r1, [r0]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0xe\n" + " bls ._779 @cond_branch\n" + " mov r2, #0x0\n" + " ldr r5, ._784 + 24\n" + " lsl r6, r7, #0x2\n" + " mov r8, r6\n" + " ldr r4, ._784 + 28\n" + " ldr r0, ._784 + 32\n" + " add r3, r0, #0\n" + "._780:\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, r4\n" + " add r1, r2, r3\n" + " strh r1, [r0]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0xe\n" + " bls ._780 @cond_branch\n" + " add r0, r5, #0\n" + " mov r1, #0x14\n" + " mov r2, #0xa\n" + " bl MenuPrint\n" + " mov r0, #0xa\n" + " mov r1, #0xd\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r1, sp\n" + " mov r0, #0x23\n" + " strb r0, [r1]\n" + " mov r2, #0x0\n" + " ldr r4, ._784 + 36\n" + " mov r5, #0x93\n" + " lsl r5, r5, #0x8\n" + " add r3, r5, #0\n" + "._781:\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r4\n" + " mov r6, sp\n" + " add r0, r6, r2\n" + " ldrb r0, [r0]\n" + " add r0, r0, r3\n" + " strh r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x11\n" + " bls ._781 @cond_branch\n" + " mov r1, sp\n" + " mov r0, #0x24\n" + " strb r0, [r1]\n" + " mov r2, #0x0\n" + " ldr r5, ._784 + 40\n" + " ldr r4, ._784 + 44\n" + " mov r0, #0x93\n" + " lsl r0, r0, #0x8\n" + " add r3, r0, #0\n" + "._782:\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r4\n" + " mov r6, sp\n" + " add r0, r6, r2\n" + " ldrb r0, [r0]\n" + " add r0, r0, r3\n" + " strh r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x11\n" + " bls ._782 @cond_branch\n" + " mov r1, sp\n" + " mov r0, #0x25\n" + " strb r0, [r1]\n" + " mov r2, #0x0\n" + " ldr r4, ._784 + 48\n" + " mov r0, #0x93\n" + " lsl r0, r0, #0x8\n" + " add r3, r0, #0\n" + "._783:\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r4\n" + " mov r6, sp\n" + " add r0, r6, r2\n" + " ldrb r0, [r0]\n" + " add r0, r0, r3\n" + " strh r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x11\n" + " bls ._783 @cond_branch\n" + " add r0, r5, #0\n" + " mov r1, #0xf\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " ldr r1, ._784 + 52\n" + " ldr r2, ._784 + 56\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r5, ._784 + 60\n" + " add r0, r5, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._784 + 64\n" + " mov r6, r8\n" + " add r0, r6, r7\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._784 + 68\n" + " str r1, [r0]\n" + " add sp, sp, #0x14\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._785:\n" + " .align 2, 0\n" + "._784:\n" + " .word gUnknown_Debug_083F8815\n" + " .word gUnknown_Debug_083F87D0\n" + " .word gUnknown_Debug_083F87D8\n" + " .word gUnknown_Debug_083F87E0\n" + " .word 0x600fa56\n" + " .word 0xa311\n" + " .word gUnknown_Debug_083F87F4\n" + " .word 0x600f256\n" + " .word 0x8301\n" + " .word 0x600f396\n" + " .word gUnknown_Debug_083F8801\n" + " .word 0x600f3d6\n" + " .word 0x600f416\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x699f\n" + " .word gTasks\n" + " .word debug_80C7934+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C7934() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add sp, sp, #0xfffffff8\n" + " mov r8, r0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " ldr r5, ._786\n" + " ldr r6, [r5]\n" + " ldrh r2, [r6]\n" + " lsl r0, r2, #0x3\n" + " ldr r1, ._786 + 4\n" + " add r0, r0, r1\n" + " ldr r1, ._786 + 8\n" + " lsl r2, r2, #0x2\n" + " add r2, r2, r1\n" + " ldrb r1, [r2]\n" + " ldrb r2, [r2, #0x1]\n" + " ldr r4, ._786 + 12\n" + " ldr r3, [r4]\n" + " ldr r4, [r4, #0x4]\n" + " str r4, [sp]\n" + " ldrh r4, [r6]\n" + " str r4, [sp, #0x4]\n" + " bl DecompressPicFromTable_2\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._786 + 16\n" + " add r0, r0, r1\n" + " bl LoadCompressedObjectPalette\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x1\n" + " bl GetMonSpriteTemplate_803C5A0\n" + " ldr r0, ._786 + 20\n" + " mov r1, #0x28\n" + " mov r2, #0x28\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " ldr r1, [r5]\n" + " mov r6, #0x0\n" + " strb r0, [r1, #0x2]\n" + " ldr r4, ._786 + 24\n" + " ldr r2, [r5]\n" + " ldrb r1, [r2, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r1, r4, #0\n" + " add r1, r1, #0x1c\n" + " add r0, r0, r1\n" + " ldr r1, ._786 + 28\n" + " str r1, [r0]\n" + " ldrb r0, [r2, #0x2]\n" + " lsl r1, r0, #0x4\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r4\n" + " ldrb r2, [r1, #0x5]\n" + " mov r0, #0xd\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " strb r0, [r1, #0x5]\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x1a\n" + " mov r2, #0x5\n" + " bl debug_80C376C\n" + " ldr r2, [r5]\n" + " ldrb r1, [r2, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r4\n" + " ldrb r0, [r0, #0x5]\n" + " lsr r0, r0, #0x4\n" + " strb r0, [r2, #0x6]\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " ldr r4, ._786 + 32\n" + " add r0, r0, r4\n" + " ldr r2, ._786 + 36\n" + " add r1, r4, r2\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r4\n" + " ldr r1, ._786 + 40\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r1, ._786 + 44\n" + " mov r2, r8\n" + " lsl r0, r2, #0x2\n" + " add r0, r0, r8\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._786 + 48\n" + " str r1, [r0]\n" + " ldr r0, [r5]\n" + " strb r6, [r0, #0x9]\n" + " add sp, sp, #0x8\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._787:\n" + " .align 2, 0\n" + "._786:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gTrainerFrontPicTable\n" + " .word gTrainerFrontPicCoords\n" + " .word gUnknown_081FAF4C\n" + " .word gTrainerFrontPicPaletteTable\n" + " .word gUnknown_02024E8C\n" + " .word gSprites\n" + " .word debug_69+1\n" + " .word gPlttBufferUnfaded+0x200\n" + " .word 0xffffff00\n" + " .word gPlttBufferFaded+0x100\n" + " .word gTasks\n" + " .word debug_80C7A54+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C7A54() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " lsl r6, r6, #0x18\n" + " lsr r6, r6, #0x18\n" + " ldr r4, ._788\n" + " ldr r5, ._788 + 4\n" + " ldr r1, [r5]\n" + " add r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, ._788 + 8\n" + " add r4, r4, r0\n" + " ldr r3, [r5]\n" + " ldrb r0, [r3, #0x7]\n" + " add r0, r0, #0x81\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r4\n" + " ldrh r4, [r0]\n" + " mov r1, #0x1f\n" + " and r1, r1, r4\n" + " ldrb r2, [r3, #0xc]\n" + " mov r0, #0x20\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r3, #0xc]\n" + " ldr r3, [r5]\n" + " mov r1, #0xf8\n" + " lsl r1, r1, #0x2\n" + " and r1, r1, r4\n" + " ldrh r2, [r3, #0xc]\n" + " ldr r0, ._788 + 12\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strh r0, [r3, #0xc]\n" + " mov r1, #0xf8\n" + " lsl r1, r1, #0x7\n" + " and r1, r1, r4\n" + " lsr r1, r1, #0x8\n" + " ldrb r2, [r3, #0xd]\n" + " mov r0, #0x7d\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r3, #0xd]\n" + " ldr r2, [r5]\n" + " ldrb r1, [r2, #0xd]\n" + " mov r0, #0x7f\n" + " and r0, r0, r1\n" + " strb r0, [r2, #0xd]\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x7]\n" + " add r0, r0, #0x1\n" + " mov r1, #0xb\n" + " mov r2, #0xa\n" + " mov r3, #0x2\n" + " bl debug_80C68CC\n" + " ldr r0, ._788 + 16\n" + " mov r1, #0xd\n" + " mov r2, #0xa\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0xe\n" + " mov r2, #0xa\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " ldr r1, ._788 + 20\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._788 + 24\n" + " str r1, [r0]\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._789:\n" + " .align 2, 0\n" + "._788:\n" + " .word gPlttBufferUnfaded+0x100\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0xffffff00\n" + " .word 0xfffffc1f\n" + " .word gUnknown_Debug_083F8813\n" + " .word gTasks\n" + " .word debug_80C7B14+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C7B14() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " ldr r1, ._792\n" + " ldrh r3, [r1, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r3\n" + " add r4, r1, #0\n" + " cmp r0, #0\n" + " beq ._790 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._792 + 4\n" + " bl SetMainCallback2\n" + " ldr r1, ._792 + 8\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._792 + 12\n" + " str r1, [r0]\n" + " b ._821\n" + "._793:\n" + " .align 2, 0\n" + "._792:\n" + " .word gMain\n" + " .word debug_80C370C+1\n" + " .word gTasks\n" + " .word debug_80C373C+1\n" + "._790:\n" + " ldrh r1, [r4, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._794 @cond_branch\n" + " ldr r4, ._796\n" + " ldr r0, [r4]\n" + " ldrh r1, [r0]\n" + " mov r0, #0x0\n" + " b ._795\n" + "._797:\n" + " .align 2, 0\n" + "._796:\n" + " .word unk_debug_ewram_0+0x34\n" + "._794:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._798 @cond_branch\n" + " ldr r4, ._800\n" + " ldr r0, [r4]\n" + " ldrh r1, [r0]\n" + " mov r0, #0x1\n" + "._795:\n" + " bl debug_80C38B4\n" + " ldr r1, [r4]\n" + " strh r0, [r1]\n" + " ldr r1, ._800 + 4\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._800 + 8\n" + " str r1, [r0]\n" + " b ._821\n" + "._801:\n" + " .align 2, 0\n" + "._800:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gTasks\n" + " .word debug_80C7D44+1\n" + "._798:\n" + " mov r2, #0x1\n" + " and r2, r2, r3\n" + " cmp r2, #0\n" + " beq ._802 @cond_branch\n" + " ldr r0, ._804\n" + " ldr r1, [r0]\n" + " mov r0, #0x1\n" + " strb r0, [r1, #0x5]\n" + " ldr r1, ._804 + 4\n" + " ldr r2, ._804 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._804 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._804 + 16\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._804 + 20\n" + " str r1, [r0]\n" + " b ._821\n" + "._805:\n" + " .align 2, 0\n" + "._804:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x4167\n" + " .word gTasks\n" + " .word debug_80C7DDC+1\n" + "._802:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " ldr r3, ._809\n" + " cmp r0, #0\n" + " beq ._807 @cond_branch\n" + " ldr r1, [r3]\n" + " ldrb r0, [r1, #0x7]\n" + " cmp r0, #0xd\n" + " bhi ._807 @cond_branch\n" + " lsl r0, r0, #0x1\n" + " ldr r1, ._809 + 4\n" + " add r0, r0, r1\n" + " strh r2, [r0]\n" + " ldr r1, [r3]\n" + " ldrb r0, [r1, #0x7]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1, #0x7]\n" + " b ._813\n" + "._810:\n" + " .align 2, 0\n" + "._809:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x5000102\n" + "._807:\n" + " ldrh r1, [r4, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._812 @cond_branch\n" + " ldr r1, [r3]\n" + " ldrb r0, [r1, #0x7]\n" + " cmp r0, #0\n" + " beq ._812 @cond_branch\n" + " lsl r0, r0, #0x1\n" + " ldr r2, ._814\n" + " add r0, r0, r2\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " ldr r1, [r3]\n" + " ldrb r0, [r1, #0x7]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1, #0x7]\n" + " b ._813\n" + "._815:\n" + " .align 2, 0\n" + "._814:\n" + " .word 0x5000102\n" + "._812:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._816 @cond_branch\n" + " ldr r4, ._819\n" + " ldr r2, [r4]\n" + " ldrb r0, [r2, #0x9]\n" + " mov r1, #0x1\n" + " eor r0, r0, r1\n" + " strb r0, [r2, #0x9]\n" + " ldr r1, [r4]\n" + " ldrb r0, [r1, #0x9]\n" + " cmp r0, #0\n" + " beq ._817 @cond_branch\n" + " ldrh r0, [r1]\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " bl species_and_otid_get_pal\n" + " ldr r1, [r4]\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x14\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x11\n" + " add r1, r1, r2\n" + " lsr r1, r1, #0x10\n" + " mov r2, #0x20\n" + " bl LoadCompressedPalette\n" + " b ._818\n" + "._820:\n" + " .align 2, 0\n" + "._819:\n" + " .word unk_debug_ewram_0+0x34\n" + "._817:\n" + " ldrh r0, [r1]\n" + " mov r1, #0x0\n" + " mov r2, #0x9\n" + " bl species_and_otid_get_pal\n" + " ldr r1, [r4]\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x14\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x11\n" + " add r1, r1, r2\n" + " lsr r1, r1, #0x10\n" + " mov r2, #0x20\n" + " bl LoadCompressedPalette\n" + "._818:\n" + " ldr r5, ._822\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " ldr r4, ._822 + 4\n" + " add r0, r0, r4\n" + " ldr r2, ._822 + 8\n" + " add r1, r4, r2\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r4\n" + " ldr r1, ._822 + 12\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + "._813:\n" + " ldr r1, ._822 + 16\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._822 + 20\n" + " str r1, [r0]\n" + " b ._821\n" + "._823:\n" + " .align 2, 0\n" + "._822:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gPlttBufferUnfaded+0x200\n" + " .word 0xffffff00\n" + " .word gPlttBufferFaded+0x100\n" + " .word gTasks\n" + " .word debug_80C7A54+1\n" + "._816:\n" + " ldr r1, [r3]\n" + " ldrb r0, [r1, #0x8]\n" + " add r0, r0, #0x4\n" + " strb r0, [r1, #0x8]\n" + " ldr r2, [r3]\n" + " ldrb r1, [r2, #0x8]\n" + " mov r0, #0x1f\n" + " and r0, r0, r1\n" + " strb r0, [r2, #0x8]\n" + " ldr r0, [r3]\n" + " ldrb r1, [r0, #0x7]\n" + " lsl r1, r1, #0x1\n" + " ldr r2, ._824\n" + " add r1, r1, r2\n" + " ldr r2, ._824 + 4\n" + " ldrb r0, [r0, #0x8]\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r2\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + "._821:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._825:\n" + " .align 2, 0\n" + "._824:\n" + " .word 0x5000142\n" + " .word gUnknown_Debug_083F8790\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C7D44() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " ldr r6, ._826\n" + " ldr r4, ._826 + 4\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldrb r0, [r0, #0x5]\n" + " lsr r0, r0, #0x4\n" + " bl GetSpritePaletteTagByPaletteNum\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl FreeSpritePaletteByTag\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " bl DestroySprite\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x3]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldrb r0, [r0, #0x5]\n" + " lsr r0, r0, #0x4\n" + " bl GetSpritePaletteTagByPaletteNum\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl FreeSpritePaletteByTag\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x3]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " bl DestroySprite\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x4]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " bl sub_809D510\n" + " ldr r1, ._826 + 8\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._826 + 12\n" + " str r1, [r0]\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._827:\n" + " .align 2, 0\n" + "._826:\n" + " .word gSprites\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gTasks\n" + " .word debug_80C7934+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C7DDC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " ldr r0, ._830\n" + " ldrh r2, [r0, #0x2e]\n" + " mov r1, #0x1\n" + " and r1, r1, r2\n" + " add r3, r0, #0\n" + " cmp r1, #0\n" + " beq ._828 @cond_branch\n" + " ldr r0, ._830 + 4\n" + " ldr r1, [r0]\n" + " mov r0, #0x0\n" + " strb r0, [r1, #0x5]\n" + " ldr r1, ._830 + 8\n" + " ldr r2, ._830 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._830 + 16\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " b ._829\n" + "._831:\n" + " .align 2, 0\n" + "._830:\n" + " .word gMain\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x699f\n" + "._828:\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._832 @cond_branch\n" + " ldr r6, ._834\n" + " ldr r0, [r6]\n" + " strb r1, [r0, #0x5]\n" + " ldr r1, ._834 + 4\n" + " ldr r2, ._834 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._834 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, [r6]\n" + " add r0, r0, #0x10\n" + " ldr r4, ._834 + 16\n" + " add r1, r4, #0\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, [r6]\n" + " add r0, r0, #0x10\n" + " ldr r5, ._834 + 20\n" + " add r1, r5, #0\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r1, [r6]\n" + " add r0, r1, #0\n" + " add r0, r0, #0x10\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x5\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r4, r4, r2\n" + " add r1, r1, r4\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r1, [r6]\n" + " add r0, r1, #0\n" + " add r0, r0, #0x10\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x5\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r5, r5, r2\n" + " add r1, r1, r5\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + "._829:\n" + " ldr r1, ._834 + 24\n" + " lsl r0, r7, #0x2\n" + " add r0, r0, r7\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._834 + 28\n" + " str r1, [r0]\n" + " b ._871\n" + "._835:\n" + " .align 2, 0\n" + "._834:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x699f\n" + " .word gPlttBufferUnfaded+0x100\n" + " .word gPlttBufferFaded+0x100\n" + " .word gTasks\n" + " .word debug_80C7A54+1\n" + "._832:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._837 @cond_branch\n" + " ldr r0, ._839\n" + " ldr r1, [r0]\n" + " ldrb r0, [r1, #0xa]\n" + " cmp r0, #0x1\n" + " bhi ._837 @cond_branch\n" + " add r0, r0, #0x1\n" + " strb r0, [r1, #0xa]\n" + " b ._871\n" + "._840:\n" + " .align 2, 0\n" + "._839:\n" + " .word unk_debug_ewram_0+0x34\n" + "._837:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._842 @cond_branch\n" + " ldr r0, ._844\n" + " ldr r1, [r0]\n" + " ldrb r0, [r1, #0xa]\n" + " cmp r0, #0\n" + " beq ._842 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1, #0xa]\n" + " b ._871\n" + "._845:\n" + " .align 2, 0\n" + "._844:\n" + " .word unk_debug_ewram_0+0x34\n" + "._842:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._846 @cond_branch\n" + " ldr r0, ._851\n" + " ldr r2, [r0]\n" + " ldrb r0, [r2, #0xa]\n" + " cmp r0, #0x1\n" + " beq ._847 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._848 @cond_branch\n" + " cmp r0, #0\n" + " beq ._849 @cond_branch\n" + " b ._871\n" + "._852:\n" + " .align 2, 0\n" + "._851:\n" + " .word unk_debug_ewram_0+0x34\n" + "._848:\n" + " cmp r0, #0x2\n" + " beq ._853 @cond_branch\n" + " b ._871\n" + "._849:\n" + " ldrb r3, [r2, #0xc]\n" + " lsl r1, r3, #0x1b\n" + " lsr r0, r1, #0x1b\n" + " cmp r0, #0x1e\n" + " bhi ._878 @cond_branch\n" + " add r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " mov r1, #0x20\n" + " neg r1, r1\n" + " and r1, r1, r3\n" + " orr r1, r1, r0\n" + " strb r1, [r2, #0xc]\n" + " b ._878\n" + "._847:\n" + " ldrh r3, [r2, #0xc]\n" + " lsl r1, r3, #0x16\n" + " lsr r0, r1, #0x1b\n" + " cmp r0, #0x1e\n" + " bhi ._878 @cond_branch\n" + " add r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " ldr r1, ._859\n" + " and r1, r1, r3\n" + " orr r1, r1, r0\n" + " strh r1, [r2, #0xc]\n" + " b ._878\n" + "._860:\n" + " .align 2, 0\n" + "._859:\n" + " .word 0xfffffc1f\n" + "._853:\n" + " ldrb r3, [r2, #0xd]\n" + " lsl r1, r3, #0x19\n" + " lsr r0, r1, #0x1b\n" + " cmp r0, #0x1e\n" + " bhi ._878 @cond_branch\n" + " add r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " mov r1, #0x7d\n" + " neg r1, r1\n" + " and r1, r1, r3\n" + " orr r1, r1, r0\n" + " strb r1, [r2, #0xd]\n" + " b ._878\n" + "._846:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._871 @cond_branch\n" + " ldr r0, ._868\n" + " ldr r3, [r0]\n" + " ldrb r0, [r3, #0xa]\n" + " cmp r0, #0x1\n" + " beq ._864 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._865 @cond_branch\n" + " cmp r0, #0\n" + " beq ._866 @cond_branch\n" + " b ._871\n" + "._869:\n" + " .align 2, 0\n" + "._868:\n" + " .word unk_debug_ewram_0+0x34\n" + "._865:\n" + " cmp r0, #0x2\n" + " beq ._870 @cond_branch\n" + " b ._871\n" + "._866:\n" + " ldrb r2, [r3, #0xc]\n" + " mov r0, #0x1f\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._878 @cond_branch\n" + " lsl r0, r2, #0x1b\n" + " lsr r0, r0, #0x1b\n" + " sub r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " mov r1, #0x20\n" + " neg r1, r1\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strb r1, [r3, #0xc]\n" + " b ._878\n" + "._864:\n" + " ldrh r2, [r3, #0xc]\n" + " mov r0, #0xf8\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._878 @cond_branch\n" + " lsl r0, r2, #0x16\n" + " lsr r0, r0, #0x1b\n" + " sub r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " ldr r1, ._876\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strh r1, [r3, #0xc]\n" + " b ._878\n" + "._877:\n" + " .align 2, 0\n" + "._876:\n" + " .word 0xfffffc1f\n" + "._870:\n" + " ldrb r2, [r3, #0xd]\n" + " mov r0, #0x7c\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._878 @cond_branch\n" + " lsl r0, r2, #0x19\n" + " lsr r0, r0, #0x1b\n" + " sub r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " mov r1, #0x7d\n" + " neg r1, r1\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strb r1, [r3, #0xd]\n" + "._878:\n" + " ldr r0, ._879\n" + " lsl r1, r7, #0x2\n" + " add r1, r1, r7\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._879 + 4\n" + " str r0, [r1]\n" + "._871:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._880:\n" + " .align 2, 0\n" + "._879:\n" + " .word gTasks\n" + " .word debug_80C802C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C802C() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " ldr r0, ._881\n" + " ldr r3, [r0]\n" + " ldrb r0, [r3, #0xc]\n" + " lsl r0, r0, #0x1b\n" + " lsr r0, r0, #0x1b\n" + " ldrh r2, [r3, #0xc]\n" + " mov r1, #0xf8\n" + " lsl r1, r1, #0x2\n" + " and r1, r1, r2\n" + " add r0, r0, r1\n" + " ldrb r1, [r3, #0xd]\n" + " lsl r1, r1, #0x19\n" + " lsr r1, r1, #0x1b\n" + " lsl r1, r1, #0xa\n" + " add r0, r0, r1\n" + " ldr r6, ._881 + 4\n" + " ldrb r1, [r3, #0x7]\n" + " add r1, r1, #0x81\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r6\n" + " strh r0, [r1]\n" + " ldr r1, ._881 + 8\n" + " mov r8, r1\n" + " ldrb r1, [r3, #0x7]\n" + " add r1, r1, #0x81\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r8\n" + " strh r0, [r1]\n" + " ldrb r1, [r3, #0x6]\n" + " lsl r1, r1, #0x4\n" + " ldrb r2, [r3, #0x7]\n" + " ldr r4, ._881 + 12\n" + " add r2, r2, r4\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r6\n" + " strh r0, [r1]\n" + " ldrb r1, [r3, #0x6]\n" + " lsl r1, r1, #0x4\n" + " ldrb r2, [r3, #0x7]\n" + " add r2, r2, r4\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r8\n" + " strh r0, [r1]\n" + " mov r1, #0xe\n" + " mov r2, #0xa\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " ldr r1, ._881 + 16\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._881 + 20\n" + " str r1, [r0]\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._882:\n" + " .align 2, 0\n" + "._881:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gPlttBufferUnfaded\n" + " .word gPlttBufferFaded\n" + " .word 0x101\n" + " .word gTasks\n" + " .word debug_80C7DDC+1\n" + "\n" + ); +} + +#endif diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index 44d832e2b..03a64afc6 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -360,6 +360,10 @@ void sub_80831F8(u8 taskId) || sub_8082DF4(taskId) == TRUE) return; +#ifdef DEBUG + sub_8082D60(taskId, GetLinkPlayerCount_2()); +#endif + gSpecialVar_Result = sub_8082D9C(local1, local2); if (gSpecialVar_Result == 0) return; diff --git a/src/engine/clock.c b/src/engine/clock.c index 416aaa6bb..fceccdfcb 100644 --- a/src/engine/clock.c +++ b/src/engine/clock.c @@ -13,12 +13,11 @@ #include "tv.h" #include "wallclock.h" -static void InitTimeBasedEvents(void); static void UpdatePerDay(struct Time *time); static void UpdatePerMinute(struct Time *time); static void ReturnFromStartWallClock(void); -static void InitTimeBasedEvents(void) +void InitTimeBasedEvents(void) { FlagSet(FLAG_SYS_CLOCK_SET); RtcCalcLocalTime(); diff --git a/src/engine/link.c b/src/engine/link.c index 34016d607..502715116 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -1,4 +1,5 @@ #include "global.h" +#include "cable_club.h" #include "link.h" #include "battle.h" #include "berry.h" @@ -543,6 +544,9 @@ static void ProcessRecvCmds(u8 unusedParam) else { SetBlockReceivedFlag(i); +#ifdef DEBUG + debug_sub_808B838(i); +#endif } } break; @@ -975,6 +979,143 @@ static void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits) } } +#ifdef DEBUG + +EWRAM_DATA u16 *debugCharacterBase = NULL; +EWRAM_DATA void *unk_20238C8 = NULL; +EWRAM_DATA u16 (*debugTileMap)[] = NULL; +EWRAM_DATA u32 unk_20238D0 = 0; + +void debug_sub_8008218(u16 *buffer, void *arg1, u16 (*arg2)[], u32 arg3) +{ + CpuSet(sLinkTestDigitTiles, buffer, 272); + debugCharacterBase = buffer; + unk_20238C8 = arg1; + debugTileMap = arg2; + unk_20238D0 = arg3; +} + +#ifdef NONMATCHING +void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0) +{ + u32 buffer[8]; + u32 *ptr; + + u16 *dest; + + int i; + + if (unk_20238D0 != sp0) + return; + + r3 = max(r3, 8); + + ptr = &buffer[0]; + dest = &(*debugTileMap)[left + top * 32]; + + for (i = r3; i != 0; i--) + { + *(ptr++) = value & 0xF; + value = value >> 4; + } + + ptr = &buffer[8 - r3]; + for (i = r3; i != 0; i--) + { + int charOffset = (((uintptr_t) debugCharacterBase) - ((uintptr_t) unk_20238C8)) / 32; + *dest = *ptr + charOffset + 1; + ptr--; + dest++; + } +} +#else +__attribute__((naked)) +void debug_sub_8008264() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xffffffe0\n" + " add r5, r0, #0\n" + " add r6, r1, #0\n" + " add r4, r3, #0\n" + " ldr r0, [sp, #0x38]\n" + " ldr r1, ._347\n" + " ldr r1, [r1]\n" + " cmp r1, r0\n" + " bne ._345 @cond_branch\n" + " cmp r4, #0x8\n" + " ble ._342 @cond_branch\n" + " mov r4, #0x8\n" + "._342:\n" + " mov r3, sp\n" + " ldr r0, ._347 + 4\n" + " mov r8, r0\n" + " lsl r2, r2, #0x6\n" + " mov ip, r2\n" + " lsl r6, r6, #0x1\n" + " lsl r7, r4, #0x2\n" + " cmp r4, #0\n" + " ble ._343 @cond_branch\n" + " mov r1, #0xf\n" + " add r2, r4, #0\n" + "._344:\n" + " add r0, r5, #0\n" + " and r0, r0, r1\n" + " stmia r3!, {r0}\n" + " lsr r5, r5, #0x4\n" + " sub r2, r2, #0x1\n" + " cmp r2, #0\n" + " bne ._344 @cond_branch\n" + "._343:\n" + " mov r1, r8\n" + " ldr r0, [r1]\n" + " add r0, r0, ip\n" + " add r5, r0, r6\n" + " mov r1, sp\n" + " add r0, r1, r7\n" + " sub r3, r0, #4\n" + " cmp r4, #0\n" + " ble ._345 @cond_branch\n" + " ldr r7, ._347 + 8\n" + " ldr r6, ._347 + 12\n" + " add r2, r4, #0\n" + "._346:\n" + " ldr r1, [r7]\n" + " ldr r0, [r6]\n" + " sub r1, r1, r0\n" + " lsr r1, r1, #0x5\n" + " ldr r0, [r3]\n" + " add r0, r0, r1\n" + " add r0, r0, #0x1\n" + " strh r0, [r5]\n" + " sub r3, r3, #0x4\n" + " add r5, r5, #0x2\n" + " sub r2, r2, #0x1\n" + " cmp r2, #0\n" + " bne ._346 @cond_branch\n" + "._345:\n" + " add sp, sp, #0x20\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._348:\n" + " .align 2, 0\n" + "._347:\n" + " .word unk_20238D0\n" + " .word debugTileMap\n" + " .word debugCharacterBase\n" + " .word unk_20238C8\n" + "\n" + ); +} +#endif + +#endif + static void LinkCB_RequestPlayerDataExchange(void) { // Only one request needs to be sent, so only the master sends it. diff --git a/src/engine/rtc.c b/src/engine/rtc.c index d73f943d2..a56fcd44e 100644 --- a/src/engine/rtc.c +++ b/src/engine/rtc.c @@ -268,6 +268,28 @@ void FormatHexDate(u8 *dest, s32 year, s32 month, s32 day) *dest = EOS; } +#ifdef DEBUG + +void debug_sub_800987C(u8 *dest) +{ + FormatHexDate(dest, sRtc.year, sRtc.month, sRtc.day); +} + +void debug_sub_8009894(u8 *dest) +{ + u16 dayCount; + + dayCount = RtcGetDayCount(&sRtc); + ConvertIntToDecimalStringN(dest, dayCount, STR_CONV_MODE_RIGHT_ALIGN, 4); +} + +void debug_sub_80098B8(u8 *dest) +{ + ConvertIntToHexStringN(dest, sRtc.status, STR_CONV_MODE_LEADING_ZEROS, 2); +} + +#endif + void RtcCalcTimeDifference(struct SiiRtcInfo *rtc, struct Time *result, struct Time *t) { u16 days = RtcGetDayCount(rtc); @@ -347,3 +369,10 @@ u32 RtcGetMinuteCount() RtcGetInfo(&sRtc); return (24 * 60) * RtcGetDayCount(&sRtc) + 60 * sRtc.hour + sRtc.minute; } + +#ifdef DEBUG +void debug_sub_8009A60() +{ + RtcGetRawInfo(&sRtc); +} +#endif diff --git a/src/engine/save.c b/src/engine/save.c index d5de2e408..8b045eaaa 100644 --- a/src/engine/save.c +++ b/src/engine/save.c @@ -574,6 +574,83 @@ u16 CalculateChecksum(void *data, u16 size) return ((checksum >> 16) + checksum); } +#ifdef DEBUG +__attribute__((naked)) +void sub_813B79C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " ldr r4, ._163\n" + " ldr r6, ._163 + 4\n" + " mov r5, #0x0\n" + "._161:\n" + " lsl r0, r5, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r1, r4, #0\n" + " bl DoReadFlashWholeSection\n" + " ldr r1, ._163 + 8\n" + " add r0, r4, r1\n" + " ldrh r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r6\n" + " ldrh r1, [r0, #0x4]\n" + " add r0, r4, #0\n" + " bl CalculateChecksum\n" + " ldr r2, ._163 + 12\n" + " add r1, r4, r2\n" + " strh r0, [r1]\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " bl gScriptFuncs_End+0x2f60\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " cmp r5, #0x1b\n" + " bls ._161 @cond_branch\n" + " ldr r6, ._163\n" + " ldr r7, ._163 + 16\n" + " mov r5, #0x0\n" + "._162:\n" + " add r4, r5, #0\n" + " add r4, r4, #0x1c\n" + " lsl r0, r4, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r1, r6, #0\n" + " bl DoReadFlashWholeSection\n" + " lsl r0, r5, #0x3\n" + " add r0, r0, r7\n" + " ldrh r1, [r0, #0x4]\n" + " add r0, r6, #0\n" + " bl CalculateChecksum\n" + " ldr r2, ._163 + 8\n" + " add r1, r6, r2\n" + " strh r0, [r1]\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl gScriptFuncs_End+0x2f60\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " cmp r5, #0x1\n" + " bls ._162 @cond_branch\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._164:\n" + " .align 2, 0\n" + "._163:\n" + " .word +0x2000000\n" + " .word gSaveSectionLocations\n" + " .word 0xff4\n" + " .word 0xff6\n" + " .word gHallOfFameSaveSectionLocations\n" + "\n" + ); +} +#endif + u8 HandleSavingData(u8 saveType) { u8 i; diff --git a/src/engine/sprite.c b/src/engine/sprite.c index cf35e12a3..cec3d0b3a 100644 --- a/src/engine/sprite.c +++ b/src/engine/sprite.c @@ -1,8 +1,10 @@ #include "global.h" +#include "debug.h" #include "sprite.h" #include "main.h" #include "menu_cursor.h" #include "palette.h" +#include "sprite.h" #define MAX_SPRITE_COPY_REQUESTS 64 @@ -822,6 +824,12 @@ static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct Spr gSpriteCopyRequests[gSpriteCopyRequestCount].size = images[index].size; gSpriteCopyRequestCount++; } +#ifdef DEBUG + else + { + unref_sub_80AB084(sDmaOverErrorMsg); + } +#endif } void RequestSpriteCopy(const void *src, u8 *dest, u16 size) @@ -833,6 +841,12 @@ void RequestSpriteCopy(const void *src, u8 *dest, u16 size) gSpriteCopyRequests[gSpriteCopyRequestCount].size = size; gSpriteCopyRequestCount++; } +#ifdef DEBUG + else + { + unref_sub_80AB084(sDmaOverErrorMsg); + } +#endif } // these two functions are unused. diff --git a/src/engine/task.c b/src/engine/task.c index 7bd2b5937..ed17d28bb 100644 --- a/src/engine/task.c +++ b/src/engine/task.c @@ -1,4 +1,5 @@ #include "global.h" +#include "debug.h" #include "task.h" #define ACTIVE_SENTINEL 0x10 @@ -11,8 +12,9 @@ struct Task gTasks[ACTIVE_SENTINEL]; static void InsertTask(u8 newTaskId); static u8 FindFirstActiveTask(); -// Unused string -const u8 sTaskOverString[] = _("TASK OVER\nタスクがオーバーしました"); +const u8 gError_NoTasksLeft[] = _( + "TASK OVER\n" + "タスクがオーバーしました"); void ResetTasks() { @@ -49,6 +51,10 @@ u8 CreateTask(TaskFunc func, u8 priority) } } +#ifdef DEBUG + unref_sub_80AB084(gError_NoTasksLeft); +#endif + return 0; } diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index 9d09575c8..daa513145 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -5,6 +5,7 @@ #include "field_effect.h" #include "graphics.h" #include "link.h" +#include "m4a.h" #include "main.h" #include "menu.h" #include "money.h" @@ -52,7 +53,6 @@ extern struct LinkPlayerMapObject gLinkPlayerMapObjects[]; EWRAM_DATA struct TrainerCard gTrainerCards[4] = {0}; -extern const u8 gBadgesTiles[]; extern const u16 gUnknown_083B5F0C[]; extern const u16 gBadgesPalette[]; extern const u16 gUnknown_083B5F4C[]; @@ -63,6 +63,34 @@ const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp"); // XXX: what is this? u8 *const ewram_ = gSharedMem; +#ifdef DEBUG +const struct TrainerCard gUnknown_Debug_083E0448 = +{ + .gender = FEMALE, + .stars = 4, + .hasPokedex = TRUE, + .var_3 = TRUE, + .var_4 = TRUE, + .firstHallOfFameA = 999, + .firstHallOfFameB = 99, + .firstHallOfFameC = 99, + .pokedexSeen = 411, + .trainerId = 12345, + .playTimeHours = 99, + .playTimeMinutes = 99, + .linkBattleWins = 9999, + .linkBattleLosses = 9999, + .battleTowerWins = 9999, + .battleTowerLosses = 9999, + .contestsWithFriends = 999, + .pokeblocksWithFriends = 0xFFFF, + .pokemonTrades = 0xFFFF, + .money = 99999, + .var_28 = {1, 2, 3, 4}, + .playerName = _("てすと"), +}; +#endif + bool8 TrainerCard_Init(struct Task *); bool8 TrainerCard_WaitForFadeInToFinish(struct Task *); bool8 TrainerCard_WaitForKeys(struct Task *); @@ -176,8 +204,15 @@ static void TrainerCard_Back_PrintPokemonTrades_Label(void); static void TrainerCard_Back_PrintPokemonTrades(void); void unref_sub_8094588(u16 left, u16 top); +#ifdef DEBUG +static u8 gDebug_03000748; +#endif + void TrainerCard_ShowPlayerCard(Callback arg1) { +#ifdef DEBUG + gDebug_03000748 = 0; +#endif TrainerCard_InitScreenForPlayer(arg1); SetMainCallback2(sub_8093174); ewram0_2.language = GAME_LANGUAGE; @@ -185,11 +220,41 @@ void TrainerCard_ShowPlayerCard(Callback arg1) void TrainerCard_ShowLinkCard(u8 playerIndex, Callback arg2) { +#ifdef DEBUG + gDebug_03000748 = 0; +#endif TrainerCard_InitScreenForLinkPlayer(playerIndex, arg2); SetMainCallback2(sub_8093174); ewram0_2.language = gLinkPlayers[gLinkPlayerMapObjects[playerIndex].linkPlayerId].language; } +#ifdef DEBUG +void debug_sub_80A0710(Callback callback) +{ + gDebug_03000748 = TRUE; + TrainerCard_InitScreenForPlayer(callback); + SetMainCallback2(sub_8093174); + ewram0_2.language = GAME_LANGUAGE; +} + +void debug_sub_80A073C(Callback callback) +{ + memcpy(&gTrainerCards[0], &gUnknown_Debug_083E0448, sizeof(struct TrainerCard)); + gDebug_03000748=TRUE; + TrainerCard_InitScreenForLinkPlayer(0, callback); + SetMainCallback2(sub_8093174); + ewram0_2.language = GAME_LANGUAGE; +} + +void debug_sub_80A0780() +{ + int i; + + for (i = 0; i < 4; i++) + memcpy(&gTrainerCards[i], &gUnknown_Debug_083E0448, sizeof(struct TrainerCard)); +} +#endif + static void sub_8093174(void) { switch (gMain.state) @@ -553,6 +618,19 @@ static void TrainerCard_FillFlags(void) } } } + +#ifdef DEBUG + if (gDebug_03000748 != 0) + { + ewram0_2.showHallOfFame = TRUE; + ewram0_2.showLinkBattleStatus = TRUE; + ewram0_2.showBattleTowerStatus = TRUE; + ewram0_2.showContestRecord = TRUE; + ewram0_2.showMixingRecord = TRUE; + ewram0_2.showTradingRecord = TRUE; + memset(ewram0_2.ownedBadges, TRUE, sizeof(ewram0_2.ownedBadges)); + } +#endif } void sub_80937A4() @@ -645,6 +723,17 @@ bool8 TrainerCard_WaitForKeys(struct Task *task) } return TRUE; } +#ifdef DEBUG + else if (gDebug_03000748 && gMain.newKeys & R_BUTTON) + { + ewram0_2.starCount++; + ewram0_2.starCount %= 5; + TrainerCard_LoadPalettes(); + if (ewram0_2.backSideShown == 0) + TrainerCard_DrawStars(); + } +#endif + return FALSE; } @@ -1372,7 +1461,11 @@ static void TrainerCard_Front_PrintPokedexCount(void) { u8 buffer[16]; - if (!ewram0_2.showPokedexCount) + if ( +#ifdef DEBUG + gDebug_03000748 == 0 && +#endif + !ewram0_2.showPokedexCount) { TrainerCard_ClearPokedexLabel(); } diff --git a/src/field/berry.c b/src/field/berry.c index 088267ad0..7c6640dc8 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -999,6 +999,66 @@ extern u16 gSpecialVar_0x8006; static u8 CalcBerryYield(struct BerryTree *tree); static u16 GetStageDurationByBerryType(u8 berry); +#if DEBUG +__attribute__((naked)) +void debug_sub_80C2B04() +{ + asm( + " push {lr}\n" + " mov r0, #0x0\n" + " bl sub_80B47D8\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._1\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldrh r0, [r1, #0x10]\n" + " sub r0, r0, #0x1\n" + " strh r0, [r1, #0x10]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._2:\n" + " .align 2, 0\n" + "._1:\n" + " .word gTasks\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80C2B30() +{ + asm( + " push {lr}\n" + " mov r0, #0x1\n" + " bl sub_80B47D8\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._3\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldrh r0, [r1, #0x10]\n" + " sub r0, r0, #0x1\n" + " strh r0, [r1, #0x10]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._4:\n" + " .align 2, 0\n" + "._3:\n" + " .word gTasks\n" + "\n" + ); +} +#endif + // unused // this could be static, but making it so causes a compile-time warning. void ClearEnigmaBerries(void) @@ -1022,6 +1082,180 @@ void SetEnigmaBerry(u8 *src) gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2; } +#if DEBUG +__attribute__((naked)) +void debug_sub_80C2BD0() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " ldr r3, ._11\n" + " ldr r1, ._11 + 4\n" + " add r4, r3, r1\n" + " ldr r6, [r4]\n" + " add r1, r1, #0x4\n" + " add r2, r3, r1\n" + " ldr r7, [r2]\n" + " mov r1, #0x0\n" + " str r1, [r4]\n" + " str r1, [r2]\n" + " add r4, r0, #0\n" + " mov r2, #0x0\n" + " ldr r5, ._11 + 8\n" + "._10:\n" + " add r0, r4, r1\n" + " ldrb r0, [r0]\n" + " add r2, r2, r0\n" + " add r1, r1, #0x1\n" + " cmp r1, r5\n" + " bls ._10 @cond_branch\n" + " ldr r1, ._11 + 4\n" + " add r0, r3, r1\n" + " str r6, [r0]\n" + " add r1, r1, #0x4\n" + " add r0, r3, r1\n" + " str r7, [r0]\n" + " add r0, r2, #0\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._12:\n" + " .align 2, 0\n" + "._11:\n" + " .word gSaveBlock1\n" + " .word 0x316c\n" + " .word 0x52b\n" + "\n" + ); +} +#endif + +#if DEBUG +__attribute__((naked)) +u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add r3, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r9, r1\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r8, r2\n" + " ldr r4, ._16\n" + " ldr r1, ._16 + 4\n" + " add r0, r4, r1\n" + " add r2, r0, #0\n" + " ldr r1, ._16 + 8\n" + " ldmia r1!, {r5, r6, r7}\n" + " stmia r2!, {r5, r6, r7}\n" + " ldmia r1!, {r5, r6, r7}\n" + " stmia r2!, {r5, r6, r7}\n" + " ldr r1, [r1]\n" + " str r1, [r2]\n" + " add r1, r3, #0\n" + " bl StringCopy\n" + " ldr r0, ._16 + 12\n" + " add r6, r4, r0\n" + " ldr r1, ._16 + 16\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " ldr r1, ._16 + 20\n" + " add r5, r4, r1\n" + " ldr r1, ._16 + 24\n" + " add r0, r5, #0\n" + " bl StringCopy\n" + " ldr r2, ._16 + 28\n" + " add r0, r4, r2\n" + " str r6, [r0]\n" + " ldr r6, ._16 + 32\n" + " add r0, r4, r6\n" + " str r5, [r0]\n" + " mov r2, #0x0\n" + " ldr r6, ._16 + 36\n" + " ldr r7, ._16 + 40\n" + " add r5, r4, r7\n" + " ldr r3, ._16 + 44\n" + "._13:\n" + " add r0, r2, r5\n" + " add r1, r2, r3\n" + " ldrb r1, [r1]\n" + " strb r1, [r0]\n" + " add r2, r2, #0x1\n" + " cmp r2, r6\n" + " ble ._13 @cond_branch\n" + " ldr r0, ._16\n" + " ldr r3, ._16 + 48\n" + " ldr r2, ._16 + 52\n" + " add r1, r0, r2\n" + " mov r2, #0xf\n" + "._14:\n" + " ldrh r0, [r3]\n" + " strh r0, [r1]\n" + " add r3, r3, #0x2\n" + " add r1, r1, #0x2\n" + " sub r2, r2, #0x1\n" + " cmp r2, #0\n" + " bge ._14 @cond_branch\n" + " mov r2, #0x0\n" + " ldr r5, ._16 + 56\n" + " ldr r3, ._16 + 60\n" + "._15:\n" + " add r0, r2, r5\n" + " add r1, r2, r3\n" + " ldrb r1, [r1]\n" + " strb r1, [r0]\n" + " add r2, r2, #0x1\n" + " cmp r2, #0x11\n" + " ble ._15 @cond_branch\n" + " ldr r5, ._16 + 64\n" + " add r0, r4, r5\n" + " mov r6, r9\n" + " strb r6, [r0]\n" + " ldr r7, ._16 + 68\n" + " add r0, r4, r7\n" + " mov r1, r8\n" + " strb r1, [r0]\n" + " ldr r2, ._16 + 4\n" + " add r0, r4, r2\n" + " bl debug_sub_80C2BD0\n" + " add r5, r5, #0x4\n" + " add r1, r4, r5\n" + " str r0, [r1]\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._17:\n" + " .align 2, 0\n" + "._16:\n" + " .word gSaveBlock1\n" + " .word 0x3160\n" + " .word gBerries\n" + " .word 0x361c\n" + " .word gUnknown_Debug_083F7F84\n" + " .word 0x3649\n" + " .word gUnknown_Debug_083F7F90\n" + " .word 0x316c\n" + " .word 0x3170\n" + " .word 0x47f\n" + " .word 0x317c\n" + " .word gSpriteImage_83C172C+0x80\n" + " .word gSpriteImage_83C172C+0x500\n" + " .word 0x35fc\n" + " .word gSaveBlock1+0x3676\n" + " .word gUnknown_Debug_839B6CE\n" + " .word 0x3688\n" + " .word 0x3689\n" + "\n" + ); +} +#else static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) { const u8 *description1; @@ -1051,9 +1285,110 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) return checksum; } +#endif + +#if DEBUG +__attribute__((naked)) +void debug_sub_80C2D24() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " ldr r6, [sp, #0x18]\n" + " ldr r4, [sp, #0x1c]\n" + " mov r8, r4\n" + " ldr r5, ._18\n" + " ldr r7, ._18 + 4\n" + " add r4, r5, r7\n" + " strb r0, [r4]\n" + " ldr r4, ._18 + 8\n" + " add r0, r5, r4\n" + " strb r1, [r0]\n" + " add r7, r7, #0x2\n" + " add r0, r5, r7\n" + " strb r2, [r0]\n" + " ldr r1, ._18 + 12\n" + " add r0, r5, r1\n" + " strb r3, [r0]\n" + " add r4, r4, #0x3\n" + " add r0, r5, r4\n" + " strb r6, [r0]\n" + " add r7, r7, #0x3\n" + " add r0, r5, r7\n" + " mov r1, r8\n" + " strb r1, [r0]\n" + " sub r4, r4, #0x19\n" + " add r0, r5, r4\n" + " bl debug_sub_80C2BD0\n" + " ldr r7, ._18 + 16\n" + " add r5, r5, r7\n" + " str r0, [r5]\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._19:\n" + " .align 2, 0\n" + "._18:\n" + " .word gSaveBlock1\n" + " .word 0x3175\n" + " .word 0x3176\n" + " .word 0x3178\n" + " .word 0x368c\n" + "\n" + ); +} +#endif // due to e-reader scans being particularly volatile to failure, it is a requirement to check for // their integrity here due to scans possibly failing to produce the correct result. +#if DEBUG +__attribute__((naked)) +bool32 IsEnigmaBerryValid() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._24\n" + " ldr r1, ._24 + 4\n" + " add r0, r4, r1\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._22 @cond_branch\n" + " ldr r2, ._24 + 8\n" + " add r0, r4, r2\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._22 @cond_branch\n" + " ldr r1, ._24 + 12\n" + " add r0, r4, r1\n" + " bl debug_sub_80C2BD0\n" + " ldr r2, ._24 + 16\n" + " add r1, r4, r2\n" + " ldr r1, [r1]\n" + " cmp r0, r1\n" + " bne ._22 @cond_branch\n" + " mov r0, #0x1\n" + " b ._23\n" + "._25:\n" + " .align 2, 0\n" + "._24:\n" + " .word gSaveBlock1\n" + " .word 0x3174\n" + " .word 0x316a\n" + " .word 0x3160\n" + " .word 0x368c\n" + "._22:\n" + " mov r0, #0x0\n" + "._23:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} +#else bool32 IsEnigmaBerryValid(void) { if (gSaveBlock1.enigmaBerry.berry.stageDuration == 0) @@ -1064,6 +1399,7 @@ bool32 IsEnigmaBerryValid(void) return FALSE; return TRUE; } +#endif const struct Berry *GetBerryInfo(u8 berry) { @@ -1417,6 +1753,177 @@ bool8 PlayerHasBerries(void) return IsBagPocketNonEmpty(BAG_BERRIES); } +#if DEBUG +void debug_sub_80C33FC(u8 *buffer, s32 value, u8 n) +{ + StringAppend(gStringVar4, buffer); + ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, n); + StringAppend(gStringVar4, gStringVar1); +} + +extern const u8 gUnknown_Debug_083F7F9D[]; +extern const u8 gUnknown_Debug_083F7FA2[]; +extern const u8 gUnknown_Debug_083F7FA9[]; +extern const u8 gUnknown_Debug_083F7FB0[]; +extern const u8 gUnknown_Debug_083F7FB7[]; +extern const u8 gUnknown_Debug_083F7FBE[]; +extern const u8 gUnknown_Debug_083F7FC5[]; +extern const u8 gUnknown_Debug_083F7FCC[]; +extern const u8 gUnknown_Debug_083F7FD3[]; +extern const u8 gUnknown_Debug_083F7FD3[]; +extern const u8 gUnknown_Debug_083F7FD3[]; + +#ifdef NONMATCHING +u8* DebugOpenBerryInfo(void) +{ + s32 i; + u8 berryTreeId; + struct BerryTree *berryTree; + + if (GetFieldObjectScriptPointerForComparison() != &BerryTreeScript) + return NULL; + + berryTreeId = FieldObjectGetBerryTreeId(gSelectedMapObject); + berryTree = GetBerryTreeInfo(berryTreeId); + + for (i = 0; i < 500; i++) + gStringVar4[i] |= 0xFF; + + debug_sub_80C33FC(gUnknown_Debug_083F7F9D, berryTreeId, 3); + debug_sub_80C33FC(gUnknown_Debug_083F7FA2, berryTree->berry, 2); + debug_sub_80C33FC(gUnknown_Debug_083F7FA9, berryTree->stage, 2); + debug_sub_80C33FC(gUnknown_Debug_083F7FB0, berryTree->secondsUntilNextStage, 5); + debug_sub_80C33FC(gUnknown_Debug_083F7FB7, berryTree->berryYield, 2); + debug_sub_80C33FC(gUnknown_Debug_083F7FBE, berryTree->regrowthCount, 3); + debug_sub_80C33FC(gUnknown_Debug_083F7FC5, berryTree->growthSparkle, 1); + debug_sub_80C33FC(gUnknown_Debug_083F7FCC, berryTree->watered1, 1); + debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered2, 1); + debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered3, 1); + debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered4, 1); + + return gStringVar4; +} +#else +__attribute__((naked)) +void DebugOpenBerryInfo() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " bl GetFieldObjectScriptPointerForComparison\n" + " ldr r1, ._138\n" + " cmp r0, r1\n" + " beq ._136 @cond_branch\n" + " mov r0, #0x0\n" + " b ._137\n" + "._139:\n" + " .align 2, 0\n" + "._138:\n" + " .word BerryTreeScript\n" + "._136:\n" + " ldr r0, ._141\n" + " ldrb r0, [r0]\n" + " bl FieldObjectGetBerryTreeId\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " add r0, r6, #0\n" + " bl GetBerryTreeInfo\n" + " add r5, r0, #0\n" + " mov r2, #0x0\n" + " ldr r7, ._141 + 4\n" + " ldr r4, ._141 + 8\n" + " mov r3, #0xff\n" + "._140:\n" + " add r1, r2, r4\n" + " ldrb r0, [r1]\n" + " orr r0, r0, r3\n" + " strb r0, [r1]\n" + " add r2, r2, #0x1\n" + " cmp r2, r7\n" + " ble ._140 @cond_branch\n" + " ldr r0, ._141 + 12\n" + " add r1, r6, #0\n" + " mov r2, #0x3\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 16\n" + " ldrb r1, [r5]\n" + " mov r2, #0x2\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 20\n" + " ldrb r1, [r5, #0x1]\n" + " lsl r1, r1, #0x19\n" + " lsr r1, r1, #0x19\n" + " mov r2, #0x2\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 24\n" + " ldrh r1, [r5, #0x2]\n" + " mov r2, #0x5\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 28\n" + " ldrb r1, [r5, #0x4]\n" + " mov r2, #0x2\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 32\n" + " ldrb r1, [r5, #0x5]\n" + " lsl r1, r1, #0x1c\n" + " lsr r1, r1, #0x1c\n" + " mov r2, #0x3\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 36\n" + " ldrb r1, [r5, #0x1]\n" + " lsr r1, r1, #0x7\n" + " mov r2, #0x1\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 40\n" + " ldrb r1, [r5, #0x5]\n" + " lsl r1, r1, #0x1b\n" + " lsr r1, r1, #0x1f\n" + " mov r2, #0x1\n" + " bl debug_sub_80C33FC\n" + " ldr r4, ._141 + 44\n" + " ldrb r1, [r5, #0x5]\n" + " lsl r1, r1, #0x1a\n" + " lsr r1, r1, #0x1f\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " bl debug_sub_80C33FC\n" + " ldrb r1, [r5, #0x5]\n" + " lsl r1, r1, #0x19\n" + " lsr r1, r1, #0x1f\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " bl debug_sub_80C33FC\n" + " ldrb r1, [r5, #0x5]\n" + " lsr r1, r1, #0x7\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 8\n" + "._137:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._142:\n" + " .align 2, 0\n" + "._141:\n" + " .word gSelectedMapObject\n" + " .word 0x1f3\n" + " .word gStringVar4\n" + " .word gUnknown_Debug_083F7F9D\n" + " .word gUnknown_Debug_083F7FA2\n" + " .word gUnknown_Debug_083F7FA9\n" + " .word gUnknown_Debug_083F7FB0\n" + " .word gUnknown_Debug_083F7FB7\n" + " .word gUnknown_Debug_083F7FBE\n" + " .word gUnknown_Debug_083F7FC5\n" + " .word gUnknown_Debug_083F7FCC\n" + " .word gUnknown_Debug_083F7FD3\n" + "\n" + ); +} +#endif + +#endif + // whenever the player is not within view of the berry tree during its sparkle state, the // sparkle state will be reset. void ResetBerryTreeSparkleFlags(void) @@ -1445,3 +1952,17 @@ void ResetBerryTreeSparkleFlags(void) } } } + +#if DEBUG +static const u8 gUnknown_Debug_083F7F84[] = _("そとから きた きのみ"); +static const u8 gUnknown_Debug_083F7F90[] = _("ただいま かいはつちゅう"); +static const u8 gUnknown_Debug_083F7F9D[] = _("POS:"); +static const u8 gUnknown_Debug_083F7FA2[] = _("\nTYPE:"); +static const u8 gUnknown_Debug_083F7FA9[] = _("\nGROW:"); +static const u8 gUnknown_Debug_083F7FB0[] = _("\nTIME:"); +static const u8 gUnknown_Debug_083F7FB7[] = _("\nFCNT:"); +static const u8 gUnknown_Debug_083F7FBE[] = _("\nSCNT:"); +static const u8 gUnknown_Debug_083F7FC5[] = _("\nHOOK:"); +static const u8 gUnknown_Debug_083F7FCC[] = _("\nWBIT:"); +static const u8 gUnknown_Debug_083F7FD3[] = _(""); +#endif diff --git a/src/field/bike.c b/src/field/bike.c index 8db01b4b4..736dbc837 100644 --- a/src/field/bike.c +++ b/src/field/bike.c @@ -14,6 +14,11 @@ extern bool8 gBikeCyclingChallenge; extern u8 gBikeCollisions; extern u8 gUnusedBikeCameraAheadPanback; +#ifdef DEBUG +extern u8 gUnknown_020297ED; +u8 debug_sub_805F2B0(u8); +#endif + static void MovePlayerOnMachBike(u8, u16, u16); static u8 GetMachBikeTransition(u8 *); static void MachBikeTransition_FaceDirection(u8); @@ -126,6 +131,14 @@ static const struct BikeHistoryInputInfo gAcroBikeTricksList[] = void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys) { +#ifdef DEBUG + if (gUnknown_020297ED && debug_sub_805F2B0(direction)) + { + Bike_SetBikeStill(); + return; + } +#endif + if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE) MovePlayerOnMachBike(direction, newKeys, heldKeys); else @@ -271,6 +284,14 @@ static void MachBikeTransition_TrySlowDown(u8 var) // the acro bike requires the input handler to be executed before the transition can. static void MovePlayerOnAcroBike(u8 newDirection, u16 newKeys, u16 heldKeys) { +#ifdef DEBUG + if (gUnknown_020297ED && debug_sub_805F2B0(newDirection)) + { + Bike_SetBikeStill(); + return; + } +#endif + sAcroBikeTransitions[CheckMovementInputAcroBike(&newDirection, newKeys, heldKeys)](newDirection); } diff --git a/src/field/choose_party.c b/src/field/choose_party.c index 3ba04e489..545c19dfa 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -527,6 +527,107 @@ static void BattleTowerEntryMenuCallback_Exit(u8 taskId) sub_81227FC(taskId); } +#if DEBUG +__attribute__((naked)) +void debug_sub_81381B4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " ldr r4, ._189\n" + " add r0, r4, #0\n" + " mov r1, #0x0\n" + " mov r2, #0x60\n" + " bl gScriptFuncs_End+0x5c24\n" + " mov r7, #0x0\n" + " mov r8, r4\n" + " mov r0, #0x4\n" + " add r0, r0, r8\n" + " mov r9, r0\n" + "._188:\n" + " mov r0, #0x64\n" + " add r1, r7, #0\n" + " mul r1, r1, r0\n" + " ldr r0, ._189 + 4\n" + " add r5, r1, r0\n" + " add r0, r5, #0\n" + " mov r1, #0x41\n" + " bl GetMonData\n" + " lsl r4, r7, #0x5\n" + " mov r1, r8\n" + " add r6, r4, r1\n" + " strh r0, [r6]\n" + " lsl r0, r0, #0x10\n" + " cmp r0, #0\n" + " beq ._187 @cond_branch\n" + " add r0, r5, #0\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " strb r0, [r6, #0xf]\n" + " add r0, r5, #0\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " strh r0, [r6, #0x10]\n" + " add r0, r5, #0\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " strh r0, [r6, #0x12]\n" + " add r0, r5, #0\n" + " mov r1, #0x37\n" + " bl GetMonData\n" + " mov r1, r8\n" + " add r1, r1, #0x14\n" + " add r1, r4, r1\n" + " str r0, [r1]\n" + " add r0, r5, #0\n" + " mov r1, #0xc\n" + " bl GetMonData\n" + " strh r0, [r6, #0x2]\n" + " add r0, r5, #0\n" + " mov r1, #0x0\n" + " bl GetMonData\n" + " mov r1, r8\n" + " add r1, r1, #0x18\n" + " add r1, r4, r1\n" + " str r0, [r1]\n" + " add r0, r5, #0\n" + " bl GetMonGender\n" + " strb r0, [r6, #0x1c]\n" + " add r4, r4, r9\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " add r2, r4, #0\n" + " bl GetMonData\n" + " add r0, r4, #0\n" + " bl StripExtCtrlCodes\n" + " add r0, r5, #0\n" + " mov r1, #0x3\n" + " bl GetMonData\n" + " strb r0, [r6, #0x1d]\n" + "._187:\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " cmp r7, #0x2\n" + " bls ._188 @cond_branch\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._190:\n" + " .align 2, 0\n" + "._189:\n" + " .word gUnknown_02023A00\n" + " .word gPlayerParty+0x12c\n" + "\n" + ); +} +#endif + bool8 SetupLinkMultiBattlePartyMenu(void) { switch (ewram1B000_alt.setupState) diff --git a/src/field/decoration_inventory.c b/src/field/decoration_inventory.c index dd0e972aa..21ced1be8 100644 --- a/src/field/decoration_inventory.c +++ b/src/field/decoration_inventory.c @@ -164,3 +164,14 @@ u8 sub_81341D4(void) } return count; } + + +#ifdef DEBUG +void debug_sub_814A3A8(void) +{ + u8 decor; + + for (decor = 0; decor < DECOR_COUNT; decor++) + IsThereStorageSpaceForDecoration(decor); +} +#endif diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index 52e66f16e..dad2fb1d2 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -82,25 +82,25 @@ extern u8 gUnknown_081C6BDE[]; static void player_get_pos_to_and_height(struct MapPosition *); static void player_get_next_pos_and_height(struct MapPosition *); -static u16 cur_mapdata_block_role_at_player_pos(int); -static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c); +/*static*/ u16 cur_mapdata_block_role_at_player_pos(int); +/*static*/ bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c); static u8 *TryGetScriptOnPressingA(struct MapPosition *position, u8 b, u8 c); static u8 *sub_8068364(struct MapPosition *, u8, u8); static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *, u8, u8 c); static u8 *sub_8068500(struct MapPosition *, u8, u8); static u8 *TryGetFieldMoveScript(struct MapPosition *, u8, u8); -static bool32 sub_8068770(void); -static bool32 sub_80687A4(void); -static bool8 sub_80687E4(struct MapPosition *, u16, u16); +/*static*/ bool32 sub_8068770(void); +/*static*/ bool32 sub_80687A4(void); +/*static*/ bool8 sub_80687E4(struct MapPosition *, u16, u16); static void happiness_algorithm_step(void); static bool8 overworld_poison_step(void); -static bool8 is_it_battle_time_3(u16); -static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *, u16, u8); +/*static*/ bool8 is_it_battle_time_3(u16); +/*static*/ bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *, u16, u8); static bool8 sub_8068B30(u16); static bool8 is_non_stair_warp_tile(u16, u8); static s8 map_warp_check_packed(struct MapHeader *, struct MapPosition *); static void sub_8068C30(struct MapHeader *, s8, struct MapPosition *); -static bool8 map_warp_consider_2_to_inside(struct MapPosition *, u16, u8); +/*static*/ bool8 map_warp_consider_2_to_inside(struct MapPosition *, u16, u8); static s8 map_warp_check(struct MapHeader *, u16, u16, u8); static u8 *mapheader_trigger_activate_at(struct MapHeader *, u16, u16, u8); static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *, u16, u16, u8); @@ -122,6 +122,230 @@ void FieldClearPlayerInput(struct FieldInput *input) input->dpadDirection = 0; } +#if DEBUG +__attribute__((naked)) +void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add r4, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " mov r8, r1\n" + " lsl r2, r2, #0x10\n" + " lsr r5, r2, #0x10\n" + " ldr r0, ._17\n" + " ldrb r6, [r0, #0x3]\n" + " ldrb r0, [r0, #0x2]\n" + " mov r9, r0\n" + " bl cur_mapdata_block_role_at_player_pos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl MetatileBehavior_IsMoveTile\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " cmp r6, #0x2\n" + " bne ._1 @cond_branch\n" + " cmp r7, #0\n" + " beq ._2 @cond_branch\n" + "._1:\n" + " cmp r6, #0\n" + " bne ._9 @cond_branch\n" + "._2:\n" + " bl GetPlayerSpeed\n" + " lsl r0, r0, #0x10\n" + " asr r0, r0, #0x10\n" + " cmp r0, #0x4\n" + " beq ._8 @cond_branch\n" + " mov r0, #0x8\n" + " mov r1, r8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._5 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x4\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + "._5:\n" + " mov r0, #0x4\n" + " mov r3, r8\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._6 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x8\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + "._6:\n" + " mov r0, #0x1\n" + " mov r1, r8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._7 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + "._7:\n" + " mov r0, #0x2\n" + " mov r3, r8\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._8 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x80\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + "._8:\n" + " mov r0, #0xf0\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._9 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x10\n" + " orr r0, r0, r1\n" + " mov r1, #0x20\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + "._9:\n" + " cmp r7, #0\n" + " bne ._14 @cond_branch\n" + " cmp r6, #0x2\n" + " bne ._12 @cond_branch\n" + " mov r0, r9\n" + " cmp r0, #0x2\n" + " bne ._12 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x40\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + "._12:\n" + " cmp r7, #0\n" + " bne ._14 @cond_branch\n" + " cmp r6, #0x2\n" + " bne ._14 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x2\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + "._14:\n" + " mov r0, #0x40\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._15 @cond_branch\n" + " mov r0, #0x2\n" + " b ._22\n" + "._18:\n" + " .align 2, 0\n" + "._17:\n" + " .word gPlayerAvatar\n" + "._15:\n" + " mov r0, #0x80\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._19 @cond_branch\n" + " mov r0, #0x1\n" + " b ._22\n" + "._19:\n" + " mov r0, #0x20\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._21 @cond_branch\n" + " mov r0, #0x3\n" + " b ._22\n" + "._21:\n" + " mov r0, #0x10\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._23 @cond_branch\n" + " mov r0, #0x4\n" + "._22:\n" + " strb r0, [r4, #0x2]\n" + "._23:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._25 @cond_branch\n" + " ldrb r2, [r4]\n" + " mov r0, #0x4\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._25 @cond_branch\n" + " ldrb r0, [r4, #0x1]\n" + " mov r1, #0x4\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0x1]\n" + " mov r0, #0x5\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " strb r0, [r4]\n" + "._25:\n" + " ldr r0, ._30\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._29 @cond_branch\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._28 @cond_branch\n" + " ldrb r1, [r4, #0x1]\n" + " mov r0, #0x2\n" + " orr r1, r1, r0\n" + " strb r1, [r4, #0x1]\n" + " ldrb r0, [r4]\n" + " mov r2, #0x41\n" + " neg r2, r2\n" + " and r2, r2, r0\n" + " mov r0, #0x3\n" + " neg r0, r0\n" + " and r2, r2, r0\n" + " sub r0, r0, #0xe\n" + " and r2, r2, r0\n" + " sub r0, r0, #0x10\n" + " and r2, r2, r0\n" + " strb r2, [r4]\n" + " mov r0, #0x4\n" + " mov r3, r8\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._28 @cond_branch\n" + " mov r0, #0x1\n" + " orr r1, r1, r0\n" + " strb r1, [r4, #0x1]\n" + " mov r0, #0x9\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " strb r0, [r4]\n" + "._28:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._29 @cond_branch\n" + " ldrb r0, [r4, #0x1]\n" + " mov r1, #0x8\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0x1]\n" + "._29:\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._31:\n" + " .align 2, 0\n" + "._30:\n" + " .word gUnknown_020297ED\n" + "\n" + ); +} +#else void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) { u8 r6 = gPlayerAvatar.tileTransitionState; @@ -163,7 +387,222 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) else if (heldKeys & DPAD_RIGHT) input->dpadDirection = DIR_EAST; } +#endif +#if DEBUG +__attribute__((naked)) +int sub_8068024(struct FieldInput *input) +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffff8\n" + " add r5, r0, #0\n" + " bl player_get_direction_lower_nybble\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " mov r4, sp\n" + " mov r0, sp\n" + " bl player_get_pos_to_and_height\n" + " mov r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " mov r2, #0x2\n" + " ldsh r1, [r4, r2]\n" + " bl MapGridGetMetatileBehaviorAt\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " ldrb r1, [r5, #0x1]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._33 @cond_branch\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " bl dive_warp\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._33 @cond_branch\n" + " b ._63\n" + "._33:\n" + " ldrb r1, [r5, #0x1]\n" + " mov r6, #0x2\n" + " add r0, r6, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._39 @cond_branch\n" + " bl CheckTrainers\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._36 @cond_branch\n" + " b ._63\n" + "._36:\n" + " ldrb r1, [r5, #0x1]\n" + " add r0, r6, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._39 @cond_branch\n" + " bl mapheader_run_first_tag2_script_list_match\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._39 @cond_branch\n" + " b ._63\n" + "._39:\n" + " ldrb r1, [r5]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._42 @cond_branch\n" + " bl sub_80687A4\n" + " cmp r0, #0x1\n" + " bne ._42 @cond_branch\n" + " b ._63\n" + "._42:\n" + " ldrb r1, [r5]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._44 @cond_branch\n" + " mov r0, #0x5\n" + " bl IncrementGameStat\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " add r2, r7, #0\n" + " bl sub_80687E4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._63 @cond_branch\n" + "._44:\n" + " ldrb r1, [r5]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._46 @cond_branch\n" + " add r0, r4, #0\n" + " bl is_it_battle_time_3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._63 @cond_branch\n" + "._46:\n" + " ldrb r1, [r5]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._49 @cond_branch\n" + " ldrb r0, [r5, #0x2]\n" + " cmp r0, r7\n" + " bne ._49 @cond_branch\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " add r2, r7, #0\n" + " bl mapheader_run_first_tag2_script_list_match_conditionally\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._63 @cond_branch\n" + "._49:\n" + " mov r4, sp\n" + " mov r0, sp\n" + " bl player_get_next_pos_and_height\n" + " mov r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " mov r2, #0x2\n" + " ldsh r1, [r4, r2]\n" + " bl MapGridGetMetatileBehaviorAt\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " ldrb r1, [r5]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._51 @cond_branch\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " add r2, r7, #0\n" + " bl sub_80681F0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._63 @cond_branch\n" + "._51:\n" + " ldrb r1, [r5]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._54 @cond_branch\n" + " ldrb r0, [r5, #0x2]\n" + " cmp r0, r7\n" + " bne ._54 @cond_branch\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " add r2, r7, #0\n" + " bl map_warp_consider_2_to_inside\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._63 @cond_branch\n" + "._54:\n" + " ldrb r1, [r5]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._56 @cond_branch\n" + " bl sub_8068770\n" + " cmp r0, #0x1\n" + " beq ._63 @cond_branch\n" + "._56:\n" + " ldrb r1, [r5]\n" + " mov r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._58 @cond_branch\n" + " mov r0, #0x6\n" + " bl PlaySE\n" + " bl sub_8071310\n" + " b ._63\n" + "._58:\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._60 @cond_branch\n" + " bl sub_80A6D1C\n" + " cmp r0, #0x1\n" + " beq ._63 @cond_branch\n" + "._60:\n" + " ldrb r1, [r5, #0x1]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._62 @cond_branch\n" + " bl debug_sub_80888D8\n" + " b ._63\n" + "._62:\n" + " mov r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._64 @cond_branch\n" + " mov r0, #0x0\n" + " b ._65\n" + "._64:\n" + " mov r0, #0x6\n" + " bl PlaySE\n" + " bl DebugMenu_8077048\n" + "._63:\n" + " mov r0, #0x1\n" + "._65:\n" + " add sp, sp, #0x8\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} +#else int sub_8068024(struct FieldInput *input) { struct MapPosition position; @@ -213,6 +652,7 @@ int sub_8068024(struct FieldInput *input) return TRUE; return FALSE; } +#endif static void player_get_pos_to_and_height(struct MapPosition *position) { @@ -232,7 +672,7 @@ static void player_get_next_pos_and_height(struct MapPosition *position) position->height = 0; } -static u16 cur_mapdata_block_role_at_player_pos(int unused) +/*static*/ u16 cur_mapdata_block_role_at_player_pos(int unused) { s16 x, y; @@ -240,7 +680,7 @@ static u16 cur_mapdata_block_role_at_player_pos(int unused) return MapGridGetMetatileBehaviorAt(x, y); } -static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c) +/*static*/ bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c) { u8 *script = TryGetScriptOnPressingA(position, b, c); @@ -435,7 +875,7 @@ static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2) return NULL; } -static bool32 sub_8068770(void) +/*static*/ bool32 sub_8068770(void) { if (FlagGet(FLAG_BADGE07_GET) && sub_8068F18() == 2) { @@ -445,7 +885,7 @@ static bool32 sub_8068770(void) return FALSE; } -static bool32 sub_80687A4(void) +/*static*/ bool32 sub_80687A4(void) { if (FlagGet(FLAG_BADGE07_GET) && gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_8068F18() == 1) { @@ -455,7 +895,7 @@ static bool32 sub_80687A4(void) return FALSE; } -static bool8 sub_80687E4(struct MapPosition *position, u16 b, u16 unused) +/*static*/ bool8 sub_80687E4(struct MapPosition *position, u16 b, u16 unused) { if (mapheader_trigger_activate_at__run_now(position) == TRUE) return TRUE; @@ -575,7 +1015,7 @@ void prev_quest_postbuffer_cursor_backup_reset(void) gUnknown_0202E8C0 = 0; } -static bool8 is_it_battle_time_3(u16 a) +/*static*/ bool8 is_it_battle_time_3(u16 a) { if (gUnknown_0202E8C0 < 4) { @@ -596,7 +1036,7 @@ static bool8 is_it_battle_time_3(u16 a) } } -static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *position, u16 b, u8 c) +/*static*/ bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *position, u16 b, u8 c) { s8 r6 = map_warp_check_packed(&gMapHeader, position); @@ -704,7 +1144,7 @@ static void sub_8068C30(struct MapHeader *unused, s8 b, struct MapPosition *posi } } -static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b, u8 c) +/*static*/ bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b, u8 c) { s8 r4; diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 77b4c8b5c..1c0cefacb 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -1917,6 +1917,40 @@ void npc_clear_ids_and_state(struct MapObject *mapObj) mapObj->mapobj_unk_1C = 0xFF; } +#if DEBUG +__attribute__((naked)) +void npcs_clear_ids_and_state() +{ + asm( + " push {r4, r5, lr}\n" + " mov r4, #0x0\n" + " ldr r5, ._2\n" + "._1:\n" + " lsl r0, r4, #0x3\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r5\n" + " bl npc_clear_ids_and_state\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0xf\n" + " bls ._1 @cond_branch\n" + " ldr r1, ._2 + 4\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._3:\n" + " .align 2, 0\n" + "._2:\n" + " .word gMapObjects\n" + " .word gUnknown_Debug_03004BC0\n" + "\n" + ); +} +#else void npcs_clear_ids_and_state(void) { u8 i; @@ -1924,6 +1958,7 @@ void npcs_clear_ids_and_state(void) for (i = 0; i < 16; i++) npc_clear_ids_and_state(&gMapObjects[i]); } +#endif void sub_805AA98(void) { @@ -2017,6 +2052,176 @@ u8 GetFieldObjectIdByLocalId(u8 localId) return 16; } +#if DEBUG +__attribute__((naked)) +u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c) +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add sp, sp, #0xfffffffc\n" + " add r5, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r6, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " lsr r7, r2, #0x18\n" + " ldrb r0, [r5]\n" + " add r1, r6, #0\n" + " add r2, r7, #0\n" + " mov r3, sp\n" + " bl GetAvailableFieldObjectSlot\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._35 @cond_branch\n" + " mov r0, #0x10\n" + " b ._36\n" + "._35:\n" + " mov r0, sp\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._40\n" + " add r4, r0, r1\n" + " add r0, r4, #0\n" + " bl npc_clear_ids_and_state\n" + " ldrh r3, [r5, #0x4]\n" + " add r3, r3, #0x7\n" + " lsl r3, r3, #0x10\n" + " lsr r3, r3, #0x10\n" + " ldrh r2, [r5, #0x6]\n" + " add r2, r2, #0x7\n" + " lsl r2, r2, #0x10\n" + " lsr r2, r2, #0x10\n" + " ldrb r0, [r4]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " mov r1, #0x4\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + " ldrb r0, [r5, #0x1]\n" + " strb r0, [r4, #0x5]\n" + " ldrb r0, [r5, #0x9]\n" + " strb r0, [r4, #0x6]\n" + " ldrb r0, [r5]\n" + " strb r0, [r4, #0x8]\n" + " strb r6, [r4, #0x9]\n" + " strb r7, [r4, #0xa]\n" + " strh r3, [r4, #0xc]\n" + " strh r2, [r4, #0xe]\n" + " strh r3, [r4, #0x10]\n" + " strh r2, [r4, #0x12]\n" + " strh r3, [r4, #0x14]\n" + " strh r2, [r4, #0x16]\n" + " ldrb r0, [r5, #0x8]\n" + " mov r7, #0xf\n" + " add r1, r7, #0\n" + " and r1, r1, r0\n" + " ldrb r2, [r4, #0xb]\n" + " mov r0, #0x10\n" + " neg r0, r0\n" + " mov r8, r0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0xb]\n" + " ldrb r1, [r5, #0x8]\n" + " lsl r1, r1, #0x4\n" + " and r0, r0, r7\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0xb]\n" + " ldrb r1, [r5, #0xa]\n" + " lsl r1, r1, #0x1c\n" + " mov r0, #0xf\n" + " mov r9, r0\n" + " lsr r1, r1, #0x1c\n" + " ldrb r2, [r4, #0x19]\n" + " mov r0, r8\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0x19]\n" + " ldrb r1, [r5, #0xa]\n" + " lsr r1, r1, #0x4\n" + " lsl r1, r1, #0x4\n" + " and r0, r0, r7\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0x19]\n" + " ldrh r0, [r5, #0xc]\n" + " strb r0, [r4, #0x7]\n" + " ldrh r0, [r5, #0xe]\n" + " strb r0, [r4, #0x1d]\n" + " ldr r1, ._40 + 4\n" + " ldrb r0, [r5, #0x9]\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " add r0, r4, #0\n" + " add r0, r0, #0x20\n" + " strb r1, [r0]\n" + " ldrb r1, [r0]\n" + " add r0, r4, #0\n" + " bl FieldObjectSetDirection\n" + " add r0, r4, #0\n" + " bl FieldObjectHandleDynamicGraphicsId\n" + " ldr r1, ._40 + 8\n" + " ldrb r0, [r4, #0x6]\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._39 @cond_branch\n" + " ldrb r2, [r4, #0x19]\n" + " add r0, r7, #0\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._38 @cond_branch\n" + " lsl r0, r2, #0x1c\n" + " lsr r0, r0, #0x1c\n" + " add r0, r0, #0x1\n" + " mov r1, r9\n" + " and r0, r0, r1\n" + " mov r1, r8\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strb r1, [r4, #0x19]\n" + "._38:\n" + " ldrb r2, [r4, #0x19]\n" + " mov r0, #0xf0\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._39 @cond_branch\n" + " lsr r1, r2, #0x4\n" + " add r1, r1, #0x1\n" + " lsl r1, r1, #0x4\n" + " add r0, r7, #0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0x19]\n" + "._39:\n" + " ldr r1, ._40 + 12\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, sp\n" + " ldrb r0, [r0]\n" + "._36:\n" + " add sp, sp, #0x4\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._41:\n" + " .align 2, 0\n" + "._40:\n" + " .word gMapObjects\n" + " .word gUnknown_0836DC09\n" + " .word gUnknown_0836DBBC\n" + " .word gUnknown_Debug_03004BC0\n" + "\n" + ); +} +#else #ifdef NONMATCHING u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c) { @@ -2227,6 +2432,7 @@ _0805ADD8: .4byte gUnknown_0836DBBC\n\ .syntax divided\n"); } #endif +#endif u8 sub_805ADDC(u8 localId) { @@ -2266,11 +2472,38 @@ u8 GetAvailableFieldObjectSlot(u16 a, u8 b, u8 c, u8 *d) return 0; } +#if DEBUG +__attribute__((naked)) +void RemoveFieldObject(struct MapObject *mapObject) +{ + asm( + " push {lr}\n" + " ldrb r2, [r0]\n" + " mov r1, #0x2\n" + " neg r1, r1\n" + " and r1, r1, r2\n" + " strb r1, [r0]\n" + " bl RemoveFieldObjectInternal\n" + " ldr r1, ._72\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " pop {r0}\n" + " bx r0\n" + "._73:\n" + " .align 2, 0\n" + "._72:\n" + " .word gUnknown_Debug_03004BC0\n" + "\n" + ); +} +#else void RemoveFieldObject(struct MapObject *mapObject) { mapObject->active = FALSE; RemoveFieldObjectInternal(mapObject); } +#endif void RemoveFieldObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { @@ -2303,6 +2536,226 @@ void npc_hide_all_but_player(void) } } +#if DEBUG +__attribute__((naked)) +u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f) +{ + 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 r7, r1, #0\n" + " add r1, r2, #0\n" + " add r2, r3, #0\n" + " ldr r3, [sp, #0x20]\n" + " ldr r4, [sp, #0x24]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " lsl r3, r3, #0x10\n" + " lsr r3, r3, #0x10\n" + " mov r9, r3\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " mov sl, r4\n" + " bl InitFieldObjectStateFromTemplate\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " cmp r0, #0x10\n" + " bne ._83 @cond_branch\n" + " mov r0, #0x10\n" + " b ._92\n" + "._83:\n" + " mov r0, r8\n" + " lsl r4, r0, #0x3\n" + " add r0, r4, r0\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._87\n" + " add r5, r0, r1\n" + " ldrb r0, [r5, #0x5]\n" + " bl GetFieldObjectGraphicsInfo\n" + " add r6, r0, #0\n" + " ldrb r1, [r6, #0xc]\n" + " mov r0, #0xf\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._85 @cond_branch\n" + " ldrh r0, [r6, #0x2]\n" + " lsl r1, r1, #0x1c\n" + " lsr r1, r1, #0x1c\n" + " bl npc_load_two_palettes__no_record\n" + " b ._89\n" + "._88:\n" + " .align 2, 0\n" + "._87:\n" + " .word gMapObjects\n" + "._85:\n" + " cmp r0, #0xa\n" + " bne ._89 @cond_branch\n" + " ldrh r0, [r6, #0x2]\n" + " lsl r1, r1, #0x1c\n" + " lsr r1, r1, #0x1c\n" + " bl npc_load_two_palettes__and_record\n" + "._89:\n" + " ldrb r0, [r5, #0x6]\n" + " cmp r0, #0x4c\n" + " bne ._90 @cond_branch\n" + " ldrb r0, [r5, #0x1]\n" + " mov r1, #0x20\n" + " orr r0, r0, r1\n" + " strb r0, [r5, #0x1]\n" + "._90:\n" + " ldr r1, ._93\n" + " add r0, r1, #0\n" + " strh r0, [r7, #0x2]\n" + " add r0, r7, #0\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " cmp r7, #0x40\n" + " bne ._91 @cond_branch\n" + " ldr r1, ._93 + 4\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r0, ._93 + 8\n" + " mov r2, r8\n" + " add r1, r4, r2\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r0\n" + " ldrb r2, [r1]\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " strb r0, [r1]\n" + " mov r0, #0x10\n" + " b ._92\n" + "._94:\n" + " .align 2, 0\n" + "._93:\n" + " .word 0xffff\n" + " .word gUnknown_Debug_03004BC0\n" + " .word gMapObjects\n" + "._91:\n" + " lsl r0, r7, #0x4\n" + " add r0, r0, r7\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._96\n" + " add r4, r0, r1\n" + " mov r1, r9\n" + " lsl r0, r1, #0x10\n" + " asr r0, r0, #0x10\n" + " ldrh r2, [r5, #0x10]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x10\n" + " asr r0, r0, #0x10\n" + " mov r2, sl\n" + " lsl r1, r2, #0x10\n" + " asr r1, r1, #0x10\n" + " ldrh r2, [r5, #0x12]\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " add r2, r4, #0\n" + " add r2, r2, #0x20\n" + " add r3, r4, #0\n" + " add r3, r3, #0x22\n" + " bl sub_8060388\n" + " ldrh r0, [r6, #0x8]\n" + " lsl r0, r0, #0x10\n" + " asr r0, r0, #0x11\n" + " neg r0, r0\n" + " add r1, r4, #0\n" + " add r1, r1, #0x28\n" + " strb r0, [r1]\n" + " ldrh r0, [r6, #0xa]\n" + " lsl r0, r0, #0x10\n" + " asr r0, r0, #0x11\n" + " neg r0, r0\n" + " add r2, r4, #0\n" + " add r2, r2, #0x29\n" + " strb r0, [r2]\n" + " ldrh r0, [r4, #0x20]\n" + " add r0, r0, #0x8\n" + " strh r0, [r4, #0x20]\n" + " ldrh r1, [r4, #0x22]\n" + " add r1, r1, #0x10\n" + " mov r0, #0x0\n" + " ldsb r0, [r2, r0]\n" + " add r0, r0, r1\n" + " strh r0, [r4, #0x22]\n" + " ldrb r1, [r6, #0xc]\n" + " lsl r1, r1, #0x1c\n" + " lsr r1, r1, #0x18\n" + " ldrb r2, [r4, #0x5]\n" + " mov r0, #0xf\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0x5]\n" + " add r2, r4, #0\n" + " add r2, r2, #0x3e\n" + " ldrb r0, [r2]\n" + " mov r1, #0x2\n" + " orr r0, r0, r1\n" + " strb r0, [r2]\n" + " mov r0, r8\n" + " strh r0, [r4, #0x2e]\n" + " strb r7, [r5, #0x4]\n" + " ldrb r1, [r6, #0xc]\n" + " lsl r1, r1, #0x19\n" + " lsr r1, r1, #0x1f\n" + " lsl r1, r1, #0x4\n" + " ldrb r2, [r5, #0x1]\n" + " mov r0, #0x11\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r5, #0x1]\n" + " lsl r0, r0, #0x1b\n" + " cmp r0, #0\n" + " blt ._95 @cond_branch\n" + " ldrb r0, [r5, #0x18]\n" + " lsl r0, r0, #0x1c\n" + " lsr r0, r0, #0x1c\n" + " bl FieldObjectDirectionToImageAnimId\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " bl StartSpriteAnim\n" + "._95:\n" + " ldrb r0, [r5, #0xb]\n" + " lsr r0, r0, #0x4\n" + " add r1, r4, #0\n" + " mov r2, #0x1\n" + " bl SetObjectSubpriorityByZCoord\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " bl sub_80634D0\n" + " mov r0, r8\n" + "._92:\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 {r1}\n" + " bx r1\n" + "._97:\n" + " .align 2, 0\n" + "._96:\n" + " .word gSprites\n" + "\n" + ); +} +#else u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f) { u8 mapObjectId; @@ -2352,6 +2805,7 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate * sub_80634D0(mapObject, sprite); return mapObjectId; } +#endif u8 SpawnFieldObject(struct MapObjectTemplate *mapObjTemplate, u8 b, u8 c, s16 d, s16 e) { @@ -2574,6 +3028,66 @@ void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject) void sub_805B75C(u8, s16, s16); +#if DEBUG +__attribute__((naked)) +void sub_805B710(u16 u161, u16 u162) +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add r4, r0, #0\n" + " add r5, r1, #0\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " lsl r5, r5, #0x10\n" + " lsr r5, r5, #0x10\n" + " ldr r6, ._153\n" + " mov r0, #0x0\n" + " strb r0, [r6]\n" + " bl ClearPlayerAvatarInfo\n" + " mov r7, #0x0\n" + " ldr r0, ._153 + 4\n" + " mov r8, r0\n" + " lsl r4, r4, #0x10\n" + " lsl r5, r5, #0x10\n" + "._152:\n" + " lsl r0, r7, #0x3\n" + " add r0, r0, r7\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r8\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x1f\n" + " cmp r0, #0\n" + " beq ._151 @cond_branch\n" + " add r0, r7, #0\n" + " asr r1, r4, #0x10\n" + " asr r2, r5, #0x10\n" + " bl sub_805B75C\n" + " ldrb r0, [r6]\n" + " add r0, r0, #0x1\n" + " strb r0, [r6]\n" + "._151:\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " cmp r7, #0xf\n" + " bls ._152 @cond_branch\n" + " bl sub_805AAB0\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._154:\n" + " .align 2, 0\n" + "._153:\n" + " .word gUnknown_Debug_03004BC0\n" + " .word gMapObjects\n" + "\n" + ); +} +#else void sub_805B710(u16 a, u16 b) { u8 i; @@ -2586,6 +3100,7 @@ void sub_805B710(u16 a, u16 b) } sub_805AAB0(); } +#endif extern void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8); extern void sub_805B914(struct MapObject *); diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index 9a29e2e92..747edf816 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -32,9 +32,9 @@ static void npc_clear_strange_bits(struct MapObject *a); static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c); static void PlayerAllowForcedMovementIfMovingSameDirection(void); static bool8 TryDoMetatileBehaviorForcedMovement(void); -static u8 GetForcedMovementByMetatileBehavior(void); +/*static*/ u8 GetForcedMovementByMetatileBehavior(void); static void MovePlayerNotOnBike(u8 a, u16 b); -static u8 CheckMovementInputNotOnBike(u8 a); +/*static*/ u8 CheckMovementInputNotOnBike(u8 a); static u8 CheckForPlayerAvatarCollision(u8 a); static u8 sub_8058EF0(s16 a, s16 b, u8 c); static bool8 ShouldJumpLedge(s16 a, s16 b, u8 c); @@ -260,12 +260,59 @@ static void PlayerAllowForcedMovementIfMovingSameDirection(void) gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5; } +#if DEBUG +__attribute__((naked)) +u8 TryDoMetatileBehaviorForcedMovement() +{ + asm( + " push {r4, lr}\n" + " ldr r0, ._27\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._25 @cond_branch\n" + " ldr r0, ._27 + 4\n" + " ldrh r1, [r0, #0x2c]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._25 @cond_branch\n" + " mov r0, #0x0\n" + " b ._26\n" + "._28:\n" + " .align 2, 0\n" + "._27:\n" + " .word gUnknown_020297ED\n" + " .word gMain\n" + "._25:\n" + " ldr r4, ._29\n" + " bl GetForcedMovementByMetatileBehavior\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x16\n" + " add r0, r0, r4\n" + " ldr r0, [r0]\n" + " bl gScriptFuncs_End+0x3cf4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + "._26:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._30:\n" + " .align 2, 0\n" + "._29:\n" + " .word gUnknown_0830FBA0\n" + "\n" + ); +} +#else static bool8 TryDoMetatileBehaviorForcedMovement(void) { return gUnknown_0830FBA0[GetForcedMovementByMetatileBehavior()](); } +#endif -static u8 GetForcedMovementByMetatileBehavior(void) +/*static*/ u8 GetForcedMovementByMetatileBehavior(void) { u8 i; @@ -436,12 +483,57 @@ bool8 ForcedMovement_MuddySlope(void) } } +#if DEBUG +__attribute__((naked)) +void MovePlayerNotOnBike(u8 u81, u16 u161) +{ + asm( + " push {r4, r5, r6, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " add r5, r2, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r6, r1, #0x10\n" + " ldr r0, ._84\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._82 @cond_branch\n" + " add r0, r2, #0\n" + " bl debug_sub_805F2B0\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._83 @cond_branch\n" + "._82:\n" + " ldr r4, ._84 + 4\n" + " add r0, r5, #0\n" + " bl CheckMovementInputNotOnBike\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x16\n" + " add r0, r0, r4\n" + " ldr r2, [r0]\n" + " add r0, r5, #0\n" + " add r1, r6, #0\n" + " bl gScriptFuncs_End+0x3cfc\n" + "._83:\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._85:\n" + " .align 2, 0\n" + "._84:\n" + " .word gUnknown_020297ED\n" + " .word gUnknown_0830FBEC\n" + "\n" + ); +} +#else static void MovePlayerNotOnBike(u8 direction, u16 heldKeys) { gUnknown_0830FBEC[CheckMovementInputNotOnBike(direction)](direction, heldKeys); } +#endif -static u8 CheckMovementInputNotOnBike(u8 direction) +/*static*/ u8 CheckMovementInputNotOnBike(u8 direction) { if (direction == DIR_NONE) { diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 0a841eed1..1b53df6be 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -250,6 +250,87 @@ void SetupMauvilleOldMan(void) sub_80F83D0(); } +#ifdef DEBUG +__attribute__((naked)) +void debug_sub_810B32C() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x4\n" + " bhi ._37 @cond_branch\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._23\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._24:\n" + " .align 2, 0\n" + "._23:\n" + " .word ._22\n" + "._22:\n" + " .word ._25\n" + " .word ._26\n" + " .word ._27\n" + " .word ._28\n" + " .word ._29\n" + "._25:\n" + " bl sub_80F7A34\n" + " b ._37\n" + "._26:\n" + " mov r2, #0x0\n" + " ldr r3, ._34\n" + "._31:\n" + " mov r0, sp\n" + " add r1, r0, r2\n" + " add r0, r2, r3\n" + " ldrb r0, [r0]\n" + " strb r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x7\n" + " bls ._31 @cond_branch\n" + " bl sub_80F7A6C\n" + " mov r2, #0x0\n" + " ldr r3, ._34\n" + "._32:\n" + " add r1, r2, r3\n" + " mov r4, sp\n" + " add r0, r4, r2\n" + " ldrb r0, [r0]\n" + " strb r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x7\n" + " bls ._32 @cond_branch\n" + " b ._37\n" + "._35:\n" + " .align 2, 0\n" + "._34:\n" + " .word gSaveBlock1+0x2d8c\n" + "._27:\n" + " bl sub_80F7A98\n" + " b ._37\n" + "._28:\n" + " bl sub_80F7A7C\n" + " b ._37\n" + "._29:\n" + " bl sub_80F7A88\n" + "._37:\n" + " bl sub_80F83D0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} +#endif + static u8 GetCurrentMauvilleOldMan(void) { struct MauvilleManCommon *common = &gSaveBlock1.mauvilleMan.common; diff --git a/src/field/overworld.c b/src/field/overworld.c index 86b0a5dac..8346ce3f9 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -25,6 +25,7 @@ #include "link.h" #include "load_save.h" #include "main.h" +#include "m4a.h" #include "constants/maps.h" #include "map_name_popup.h" #include "menu.h" @@ -62,6 +63,7 @@ struct UnkTVStruct u32 tv_field_4; }; +extern u8 gUnknown_020297ED; extern u16 gUnknown_03004898; extern u16 gUnknown_0300489C; @@ -1106,6 +1108,68 @@ u8 sav1_map_get_battletype(void) return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->battleType; } +#if DEBUG + +void debug_sub_8076B68(void); + +void debug_sub_80589D8(void); + +void debug_sub_8058A50(void); + +void CB2_InitTestMenu(void) +{ + m4aSoundVSyncOff(); + SetVBlankCallback(NULL); + DmaFill32(3, 0, (void *) VRAM, VRAM_SIZE); + DmaFill32(3, 0, (void *) PLTT, PLTT_SIZE); + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + ScanlineEffect_Stop(); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); + debug_sub_8076B68(); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + REG_IE |= 1; + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP; + m4aSoundVSyncOn(); + SetVBlankCallback(debug_sub_8058A50); + m4aSongNumStart(0x19D); + SetMainCallback2(debug_sub_80589D8); +} + +void debug_sub_80589D8(void) +{ + if (UpdatePaletteFade()) + return; + + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); +} + +void debug_sub_80589F4(void) +{ + if (UpdatePaletteFade()) + return; + + SetVBlankCallback(NULL); + + DmaFill32(3, 0, (void *) VRAM, VRAM_SIZE); + DmaFill32(3, 0, (void *) PLTT, PLTT_SIZE); + + SetMainCallback2(gMain.savedCallback); +} + +void debug_sub_8058A50(void) +{ + ProcessSpriteCopyRequests(); + LoadOam(); + TransferPlttBuffer(); +} + +#endif + void ResetSafariZoneFlag_(void) { ResetSafariZoneFlag(); @@ -1210,6 +1274,33 @@ void CB2_NewGame(void) SetMainCallback2(c2_overworld); } +#if DEBUG + +extern void (*gFieldCallback)(void); + +void debug_sub_8058C00(void) +{ + FieldClearVBlankHBlankCallbacks(); + StopMapMusic(); + ResetSafariZoneFlag_(); + player_avatar_init_params_reset(); + PlayTimeCounter_Start(); + ScriptContext1_Init(); + ScriptContext2_Disable(); + + if (gMain.heldKeys & R_BUTTON) + gFieldCallback = ExecuteTruckSequence; + else + gFieldCallback = sub_8080B60; + + do_load_map_stuff_loop(&gMain.state); + SetFieldVBlankCallback(); + set_callback1(c1_overworld); + SetMainCallback2(c2_overworld); +} + +#endif + void CB2_WhiteOut(void) { u8 val; @@ -1365,6 +1456,10 @@ void CB2_ContinueSavedGame(void) { FieldClearVBlankHBlankCallbacks(); StopMapMusic(); +#if DEBUG + if (gMain.heldKeys & R_BUTTON) + gUnknown_020297ED = TRUE; +#endif ResetSafariZoneFlag_(); LoadSaveblockMapHeader(); LoadSaveblockMapObjScripts(); diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 7d243f569..053368a0e 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -4022,6 +4022,10 @@ void TeachMonTMMove(u8 taskId, u16 move, TaskFunc func) CreateTask(Task_TeamMonTMMove, 5); } +#ifdef DEBUG +extern u8 gUnknown_020297ED; +#endif + void Task_TeamMonTMMove(u8 taskId) { GetMonNickname(ewram1C000.pokemon, gStringVar1); @@ -4036,7 +4040,11 @@ void Task_TeamMonTMMove(u8 taskId) } else { - if (!CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33)) + if ( +#ifdef DEBUG + !gUnknown_020297ED && +#endif + !CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33)) { StringExpandPlaceholders(gStringVar4, gOtherText_NotCompatible); sub_806E834(gStringVar4, 1); @@ -5514,9 +5522,13 @@ _08070F8A:\n\ } #endif // NONMATCHING + +// Maybe this goes in start_menu.c +#if !DEBUG void unref_sub_8070F90(void) { FlagSet(FLAG_SYS_POKEDEX_GET); FlagSet(FLAG_SYS_POKEMON_GET); FlagSet(FLAG_SYS_POKENAV_GET); } +#endif diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 7e8bdc2ce..73fa53d97 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -95,7 +95,8 @@ static const u8 *gUnknown_03000758; #define GFX_TAG_POKEBLOCK_CASE 14800 -const s8 gPokeblockFlavorCompatibilityTable[] = { +const s8 gPokeblockFlavorCompatibilityTable[] = +{ // Cool, Beauty, Cute, Smart, Tough 0, 0, 0, 0, 0, // Hardy 1, 0, 0, 0, -1, // Lonely @@ -124,14 +125,16 @@ const s8 gPokeblockFlavorCompatibilityTable[] = { 0, 0, 0, 0, 0 // Quirky }; -void (*const gUnknown_083F7EA8[])(void) = { +void (*const gUnknown_083F7EA8[])(void) = +{ sub_80A5B40, c2_exit_to_overworld_2_switch, sub_802E424, c2_exit_to_overworld_2_switch }; -const u8 *const gPokeblockNames[] = { +const u8 *const gPokeblockNames[] = +{ NULL, ContestStatsText_RedPokeBlock, ContestStatsText_BluePokeBlock, @@ -149,7 +152,8 @@ const u8 *const gPokeblockNames[] = { ContestStatsText_GoldPokeBlock }; -const struct MenuAction2 gUnknown_083F7EF4[] = { +const struct MenuAction2 gUnknown_083F7EF4[] = +{ {OtherText_Use, sub_810C508}, {OtherText_Toss, sub_810C5C0}, {gOtherText_CancelNoTerminator, sub_810C748}, @@ -165,21 +169,25 @@ const struct YesNoFuncTable gUnknown_083F7F24 = {sub_810C610, sub_810C668}; const u8 UnreferencedData_083F7F2C[] = {0x16, 0x17, 0x18, 0x21, 0x2f}; -const struct OamData gOamData_83F7F34 = { +const struct OamData gOamData_83F7F34 = +{ .size = 3, .priority = 2 }; -const union AnimCmd gSpriteAnim_83F7F3C[] = { +const union AnimCmd gSpriteAnim_83F7F3C[] = +{ ANIMCMD_FRAME(.imageValue = 0, .duration = 0), ANIMCMD_END }; -const union AnimCmd *const gSpriteAnimTable_83F7F44[] = { +const union AnimCmd *const gSpriteAnimTable_83F7F44[] = +{ gSpriteAnim_83F7F3C }; -const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] = { +const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] = +{ AFFINEANIMCMD_FRAME(0, 0, -2, 2), AFFINEANIMCMD_FRAME(0, 0, 2, 4), AFFINEANIMCMD_FRAME(0, 0, -2, 4), @@ -187,22 +195,26 @@ const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] = { AFFINEANIMCMD_END }; -const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7F70[] = { +const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7F70[] = +{ gSpriteAffineAnim_83F7F48 }; -const struct CompressedSpriteSheet gUnknown_083F7F74 = { +const struct CompressedSpriteSheet gUnknown_083F7F74 = +{ gMenuPokeblockDevice_Gfx, 0x800, GFX_TAG_POKEBLOCK_CASE }; -const struct CompressedSpritePalette gUnknown_083F7F7C = { +const struct CompressedSpritePalette gUnknown_083F7F7C = +{ gMenuPokeblockDevice_Pal, GFX_TAG_POKEBLOCK_CASE }; -const struct SpriteTemplate gSpriteTemplate_83F7F84 = { +const struct SpriteTemplate gSpriteTemplate_83F7F84 = +{ GFX_TAG_POKEBLOCK_CASE, GFX_TAG_POKEBLOCK_CASE, &gOamData_83F7F34, @@ -212,7 +224,8 @@ const struct SpriteTemplate gSpriteTemplate_83F7F84 = { SpriteCallbackDummy }; -const struct Pokeblock gUnknown_083F7F9C[] = { +const struct Pokeblock gUnknown_083F7F9C[] = +{ { PBLOCK_CLR_RED, 20, 0, 0, 0, 0, 20}, { PBLOCK_CLR_BLUE, 0, 20, 0, 0, 0, 20}, { PBLOCK_CLR_PINK, 0, 0, 20, 0, 0, 20}, @@ -432,14 +445,13 @@ void OpenPokeblockCaseOnFeeder(void) SetMainCallback2(sub_810B96C); } -#ifdef DEBUG +#if DEBUG void debug_sub_8120F98(void) { u8 i; - for (i=0; i<40 && gUnknown_083F7F9C[i].color != 0; i++) - { + + for (i = 0; i < 40 && gUnknown_083F7F9C[i].color != 0; i++) gSaveBlock1.pokeblocks[i] = gUnknown_083F7F9C[i]; - } } #endif diff --git a/src/field/roamer.c b/src/field/roamer.c index 2eb26ef9d..16a42e9f1 100644 --- a/src/field/roamer.c +++ b/src/field/roamer.c @@ -1,7 +1,9 @@ #include "global.h" +#include "debug.h" #include "roamer.h" #include "pokemon.h" #include "random.h" +#include "region_map.h" #include "constants/species.h" #ifdef SAPPHIRE @@ -224,3 +226,20 @@ void GetRoamerLocation(u8 *mapGroup, u8 *mapNum) *mapGroup = sRoamerLocation[MAP_GRP]; *mapNum = sRoamerLocation[MAP_NUM]; } + +#ifdef DEBUG +void debug_sub_814A714(void) +{ + if (gSaveBlock1.location.mapGroup == 0) + { + CreateInitialRoamerMon(); + sRoamerLocation[0] = 0; + sRoamerLocation[1] = gSaveBlock1.location.mapNum; + } +} + +void debug_sub_814A73C(u8* str) +{ + GetMapSectionName(str, sRoamerLocation[1], 0); +} +#endif diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 9ff3a037c..e231f686d 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -17,7 +17,8 @@ #include "menu.h" #include "ewram.h" -struct UnkStruct1 { +struct UnkStruct1 +{ /*0x00*/ u8 unk00; /*0x01*/ u8 unk01; /*0x02*/ s16 unk02; @@ -2854,7 +2855,13 @@ static void sub_8104C5C(void) static void LoadSlotMachineWheelOverlay(void); -static void sub_8104CAC(u8 arg0) { +#ifdef DEBUG +// should be static +__attribute__((section(".bss"))) u8 unk_debug_bss_1[0xC] = { 0 }; +#endif + +static void sub_8104CAC(u8 arg0) +{ u8 i; struct Task *task; @@ -2875,9 +2882,7 @@ static void sub_8104CAC(u8 arg0) { #ifdef GERMAN if (arg0 == 5 && i <= 2) - { gSprites[spriteId].invisible = TRUE; - } #endif } } @@ -3966,7 +3971,8 @@ static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) { vram[16 * 32 + 1 + arg0] = arg4; } -static void sub_81065DC(void) { +static void sub_81065DC(void) +{ s16 y, x; u16 *screen; @@ -3982,7 +3988,1226 @@ static void sub_81065DC(void) { } } -static const u8 sReelSymbols[][21] = { +#if DEBUG +__attribute__((naked)) +void debug_sub_811B1C4() +{ + asm( + " ldr r1, ._1\n" + " ldrb r0, [r1]\n" + " mov r3, #0x2\n" + " orr r0, r0, r3\n" + " strb r0, [r1]\n" + " ldr r2, ._1 + 4\n" + " ldrb r1, [r2]\n" + " mov r0, #0x2\n" + " eor r1, r1, r0\n" + " neg r0, r1\n" + " orr r0, r0, r1\n" + " asr r0, r0, #0x1f\n" + " and r0, r0, r3\n" + " strb r0, [r2]\n" + " bx lr\n" + "._2:\n" + " .align 2, 0\n" + "._1:\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B1EC() +{ + asm( + " ldr r2, ._3\n" + " ldrb r0, [r2]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " strb r0, [r2]\n" + " ldr r2, ._3 + 4\n" + " ldrb r0, [r2]\n" + " mov r1, #0x1\n" + " eor r0, r0, r1\n" + " neg r0, r0\n" + " lsr r0, r0, #0x1f\n" + " strb r0, [r2]\n" + " bx lr\n" + "._4:\n" + " .align 2, 0\n" + "._3:\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B210() +{ + asm( + " ldr r1, ._5\n" + " ldrb r0, [r1]\n" + " mov r3, #0x4\n" + " orr r0, r0, r3\n" + " strb r0, [r1]\n" + " ldr r2, ._5 + 4\n" + " ldrb r1, [r2]\n" + " mov r0, #0x4\n" + " eor r1, r1, r0\n" + " neg r0, r1\n" + " orr r0, r0, r1\n" + " asr r0, r0, #0x1f\n" + " and r0, r0, r3\n" + " strb r0, [r2]\n" + " bx lr\n" + "._6:\n" + " .align 2, 0\n" + "._5:\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B238() +{ + asm( + " ldr r1, ._7\n" + " ldrb r0, [r1]\n" + " mov r3, #0x8\n" + " orr r0, r0, r3\n" + " strb r0, [r1]\n" + " ldr r2, ._7 + 4\n" + " ldrb r1, [r2]\n" + " mov r0, #0x8\n" + " eor r1, r1, r0\n" + " neg r0, r1\n" + " orr r0, r0, r1\n" + " asr r0, r0, #0x1f\n" + " and r0, r0, r3\n" + " strb r0, [r2]\n" + " bx lr\n" + "._8:\n" + " .align 2, 0\n" + "._7:\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B260() +{ + asm( + " ldr r1, ._9\n" + " ldrb r0, [r1]\n" + " mov r3, #0x10\n" + " orr r0, r0, r3\n" + " strb r0, [r1]\n" + " ldr r2, ._9 + 4\n" + " ldrb r1, [r2]\n" + " mov r0, #0x10\n" + " eor r1, r1, r0\n" + " neg r0, r1\n" + " orr r0, r0, r1\n" + " asr r0, r0, #0x1f\n" + " and r0, r0, r3\n" + " strb r0, [r2]\n" + " bx lr\n" + "._10:\n" + " .align 2, 0\n" + "._9:\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B288() +{ + asm( + " ldr r1, ._11\n" + " ldrb r0, [r1]\n" + " mov r3, #0x40\n" + " orr r0, r0, r3\n" + " strb r0, [r1]\n" + " ldr r2, ._11 + 4\n" + " ldrb r1, [r2]\n" + " mov r0, #0x40\n" + " eor r1, r1, r0\n" + " neg r0, r1\n" + " orr r0, r0, r1\n" + " asr r0, r0, #0x1f\n" + " and r0, r0, r3\n" + " strb r0, [r2]\n" + " bx lr\n" + "._12:\n" + " .align 2, 0\n" + "._11:\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B2B0() +{ + asm( + " ldr r1, ._13\n" + " ldrb r0, [r1]\n" + " mov r3, #0x80\n" + " orr r0, r0, r3\n" + " strb r0, [r1]\n" + " ldr r2, ._13 + 4\n" + " ldrb r1, [r2]\n" + " mov r0, #0x80\n" + " eor r1, r1, r0\n" + " neg r0, r1\n" + " orr r0, r0, r1\n" + " asr r0, r0, #0x1f\n" + " and r0, r0, r3\n" + " strb r0, [r2]\n" + " bx lr\n" + "._14:\n" + " .align 2, 0\n" + "._13:\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B2D8() +{ + asm( + " ldr r0, ._15\n" + " ldrb r1, [r0]\n" + " mov r2, #0x20\n" + " orr r1, r1, r2\n" + " strb r1, [r0]\n" + " bx lr\n" + "._16:\n" + " .align 2, 0\n" + "._15:\n" + " .word unk_debug_bss_1+0x3\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B2E8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " ldr r0, ._17\n" + " ldrb r1, [r0, #0x1]\n" + " add r1, r1, #0x1\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x6\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " add sp, sp, #0x4\n" + " pop {r0}\n" + " bx r0\n" + "._18:\n" + " .align 2, 0\n" + "._17:\n" + " .word +0x2000000\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B310() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " ldr r0, ._21\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 4\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 8\n" + " mov r1, #0x1\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 12\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 16\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 20\n" + " mov r1, #0x1\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 24\n" + " mov r1, #0x1\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 28\n" + " mov r1, #0x1\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 32\n" + " mov r1, #0x1\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 36\n" + " mov r1, #0xf\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 40\n" + " mov r1, #0xf\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 44\n" + " mov r1, #0xf\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 48\n" + " mov r1, #0xf\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 52\n" + " mov r1, #0xf\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 56\n" + " mov r1, #0xf\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 60\n" + " mov r1, #0xf\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 64\n" + " mov r1, #0xf\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 68\n" + " mov r1, #0xf\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 72\n" + " ldrb r0, [r0, #0x3]\n" + " cmp r0, #0\n" + " bne ._19 @cond_branch\n" + " ldr r0, ._21 + 76\n" + " mov r1, #0xa\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " b ._20\n" + "._22:\n" + " .align 2, 0\n" + "._21:\n" + " .word Str_841B1C4\n" + " .word Str_841B1CB\n" + " .word Str_841B1D4\n" + " .word Str_841B1DB\n" + " .word Str_841B1E2\n" + " .word Str_841B1E8\n" + " .word Str_841B1F3\n" + " .word Str_841B202\n" + " .word Str_841B24C\n" + " .word Str_841B211\n" + " .word Str_841B219\n" + " .word Str_841B220\n" + " .word Str_841B227\n" + " .word Str_841B22E\n" + " .word Str_841B235\n" + " .word Str_841B23B\n" + " .word Str_841B23F\n" + " .word Str_841B243\n" + " .word +0x2000000\n" + " .word Str_841B246\n" + "._19:\n" + " ldr r0, ._30\n" + " mov r1, #0xa\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + "._20:\n" + " ldr r4, ._30 + 4\n" + " ldr r1, [r4, #0x68]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0xa\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r1, [r4, #0x6c]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0xa\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0x10\n" + " ldsh r1, [r4, r0]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0xa\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r1, [r4, #0x70]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r1, [r4, #0x74]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldr r1, [r4, #0x78]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r1, [r4, #0x7c]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " add r0, r0, #0x80\n" + " ldr r1, [r0]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " add r0, r0, #0x84\n" + " ldr r1, [r0]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " add r0, r0, #0x88\n" + " ldr r1, [r0]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " add r0, r0, #0x8c\n" + " ldr r1, [r0]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " ldr r1, ._30 + 8\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._23 @cond_branch\n" + " mov r2, #0x0\n" + " cmp r0, #0x8\n" + " beq ._24 @cond_branch\n" + " cmp r0, #0x8\n" + " bgt ._25 @cond_branch\n" + " cmp r0, #0x2\n" + " beq ._26 @cond_branch\n" + " cmp r0, #0x2\n" + " bgt ._27 @cond_branch\n" + " cmp r0, #0x1\n" + " beq ._28 @cond_branch\n" + " b ._45\n" + "._31:\n" + " .align 2, 0\n" + "._30:\n" + " .word Str_841B249\n" + " .word +0x2000000\n" + " .word unk_debug_bss_1\n" + "._27:\n" + " cmp r0, #0x4\n" + " beq ._32 @cond_branch\n" + " b ._45\n" + "._25:\n" + " cmp r0, #0x40\n" + " beq ._34 @cond_branch\n" + " cmp r0, #0x40\n" + " bgt ._35 @cond_branch\n" + " cmp r0, #0x10\n" + " beq ._36 @cond_branch\n" + " b ._45\n" + "._35:\n" + " cmp r0, #0x80\n" + " beq ._38 @cond_branch\n" + " b ._45\n" + "._26:\n" + " mov r2, #0x3\n" + " b ._45\n" + "._28:\n" + " mov r2, #0x5\n" + " b ._45\n" + "._32:\n" + " mov r2, #0x7\n" + " b ._45\n" + "._24:\n" + " mov r2, #0x9\n" + " b ._45\n" + "._36:\n" + " mov r2, #0xb\n" + " b ._45\n" + "._34:\n" + " mov r2, #0xd\n" + " b ._45\n" + "._38:\n" + " mov r2, #0xf\n" + "._45:\n" + " ldr r0, ._46\n" + " mov r1, #0x17\n" + " bl MenuPrint\n" + "._23:\n" + " bl debug_sub_811B2E8\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._47:\n" + " .align 2, 0\n" + "._46:\n" + " .word Str_841B26D\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B5B4() +{ + asm( + " push {lr}\n" + " add r2, r0, #0\n" + " ldr r0, [r2]\n" + " add r0, r0, r1\n" + " str r0, [r2]\n" + " ldr r1, ._49\n" + " cmp r0, r1\n" + " ble ._48 @cond_branch\n" + " str r1, [r2]\n" + "._48:\n" + " pop {r0}\n" + " bx r0\n" + "._50:\n" + " .align 2, 0\n" + "._49:\n" + " .word 0x270f\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B5D0() +{ + asm( + " ldr r0, ._51\n" + " mov r1, #0x0\n" + " strb r1, [r0]\n" + " ldr r0, ._51 + 4\n" + " strb r1, [r0]\n" + " ldr r0, ._51 + 8\n" + " strb r1, [r0]\n" + " ldr r0, ._51 + 12\n" + " strb r1, [r0]\n" + " ldr r2, ._51 + 16\n" + " mov r0, #0x0\n" + " str r0, [r2, #0x68]\n" + " str r0, [r2, #0x6c]\n" + " str r0, [r2, #0x70]\n" + " str r0, [r2, #0x74]\n" + " str r0, [r2, #0x78]\n" + " str r0, [r2, #0x7c]\n" + " add r1, r2, #0\n" + " add r1, r1, #0x80\n" + " str r0, [r1]\n" + " add r1, r1, #0x4\n" + " str r0, [r1]\n" + " add r1, r1, #0x4\n" + " str r0, [r1]\n" + " add r1, r1, #0x4\n" + " str r0, [r1]\n" + " add r1, r1, #0x4\n" + " str r0, [r1]\n" + " bx lr\n" + "._52:\n" + " .align 2, 0\n" + "._51:\n" + " .word unk_debug_bss_1\n" + " .word unk_debug_bss_1+0x2\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1+0x4\n" + " .word +0x2000000\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B620() +{ + asm( + " push {lr}\n" + " ldr r0, ._53\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " pop {r0}\n" + " bx r0\n" + "._54:\n" + " .align 2, 0\n" + "._53:\n" + " .word debug_sub_811B654+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B634() +{ + asm( + " push {lr}\n" + " ldr r0, ._57\n" + " bl FindTaskIdByFunc\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0xff\n" + " beq ._55 @cond_branch\n" + " mov r0, #0x0\n" + " b ._56\n" + "._58:\n" + " .align 2, 0\n" + "._57:\n" + " .word debug_sub_811B654+1\n" + "._55:\n" + " mov r0, #0x1\n" + "._56:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B654() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffff8\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._63\n" + " add r5, r0, r1\n" + " mov r0, #0x8\n" + " ldsh r1, [r5, r0]\n" + " cmp r1, #0x1\n" + " beq ._59 @cond_branch\n" + " cmp r1, #0x1\n" + " bgt ._60 @cond_branch\n" + " cmp r1, #0\n" + " beq ._61 @cond_branch\n" + " b ._116\n" + "._64:\n" + " .align 2, 0\n" + "._63:\n" + " .word gTasks\n" + "._60:\n" + " cmp r1, #0x2\n" + " bne ._65 @cond_branch\n" + " b ._66\n" + "._65:\n" + " cmp r1, #0x3\n" + " bne ._67 @cond_branch\n" + " b ._68\n" + "._67:\n" + " b ._116\n" + "._61:\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " bl debug_sub_811B310\n" + " ldrh r0, [r5, #0x8]\n" + " add r0, r0, #0x1\n" + " strh r0, [r5, #0x8]\n" + " b ._116\n" + "._59:\n" + " ldr r7, ._76\n" + " ldrh r2, [r7, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._71 @cond_branch\n" + " b ._94\n" + "._71:\n" + " mov r0, #0x20\n" + " and r0, r0, r2\n" + " lsl r0, r0, #0x10\n" + " lsr r3, r0, #0x10\n" + " cmp r3, #0\n" + " beq ._73 @cond_branch\n" + " ldr r1, ._76 + 4\n" + " ldrb r0, [r1, #0x1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1, #0x1]\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bge ._79 @cond_branch\n" + " mov r0, #0x5\n" + " strb r0, [r1, #0x1]\n" + " b ._79\n" + "._77:\n" + " .align 2, 0\n" + "._76:\n" + " .word gMain\n" + " .word +0x2000000\n" + "._73:\n" + " mov r0, #0x10\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._78 @cond_branch\n" + " ldr r1, ._81\n" + " ldrb r0, [r1, #0x1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1, #0x1]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x5\n" + " bls ._79 @cond_branch\n" + " strb r3, [r1, #0x1]\n" + "._79:\n" + " bl debug_sub_811B2E8\n" + " b ._116\n" + "._82:\n" + " .align 2, 0\n" + "._81:\n" + " .word +0x2000000\n" + "._78:\n" + " and r1, r1, r2\n" + " lsl r0, r1, #0x10\n" + " lsr r4, r0, #0x10\n" + " cmp r4, #0\n" + " beq ._83 @cond_branch\n" + " mov r0, #0x3\n" + " strh r0, [r5, #0x8]\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x9\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._85\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._85 + 4\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " b ._116\n" + "._86:\n" + " .align 2, 0\n" + "._85:\n" + " .word Str_841B25C\n" + " .word Str_841B264\n" + "._83:\n" + " mov r0, #0x4\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._87 @cond_branch\n" + " ldr r0, ._91\n" + " strb r4, [r0]\n" + " ldr r0, ._91 + 4\n" + " strb r4, [r0]\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xa\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._91 + 8\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r3, ._91 + 12\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0x8\n" + " bl PrintMenuItems\n" + " str r4, [sp]\n" + " mov r0, #0x9\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x8\n" + " bl InitMenu\n" + " ldrh r0, [r5, #0x8]\n" + " add r0, r0, #0x1\n" + " strh r0, [r5, #0x8]\n" + "._87:\n" + " ldrh r1, [r7, #0x2e]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._88 @cond_branch\n" + " b ._116\n" + "._88:\n" + " ldr r1, ._91 + 16\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " b ._94\n" + "._92:\n" + " .align 2, 0\n" + "._91:\n" + " .word unk_debug_bss_1+0x2\n" + " .word unk_debug_bss_1+0x3\n" + " .word Str_841B254\n" + " .word _841B270\n" + " .word unk_debug_bss_1+0x4\n" + "._66:\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r2, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r2, r0\n" + " beq ._116 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r2, r0\n" + " beq ._94 @cond_branch\n" + " ldr r1, ._96\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r0, ._96 + 4\n" + " lsl r1, r2, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " bl _call_via_r0\n" + "._94:\n" + " bl MenuZeroFillScreen\n" + " add r0, r6, #0\n" + " bl DestroyTask\n" + " b ._116\n" + "._97:\n" + " .align 2, 0\n" + "._96:\n" + " .word unk_debug_bss_1+0x2\n" + " .word _841B270\n" + "._68:\n" + " ldr r2, ._100\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._98 @cond_branch\n" + " ldr r2, ._100 + 4\n" + " ldrh r0, [r2, #0xc]\n" + " add r0, r0, #0x64\n" + " b ._99\n" + "._101:\n" + " .align 2, 0\n" + "._100:\n" + " .word gMain\n" + " .word +0x2000000\n" + "._98:\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._102 @cond_branch\n" + " ldr r1, ._104\n" + " ldrh r0, [r1, #0xc]\n" + " sub r0, r0, #0x64\n" + " b ._103\n" + "._105:\n" + " .align 2, 0\n" + "._104:\n" + " .word +0x2000000\n" + "._102:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._106 @cond_branch\n" + " ldr r1, ._109\n" + " ldr r2, ._109 + 4\n" + " add r0, r2, #0\n" + " ldrh r2, [r1, #0xc]\n" + " add r0, r0, r2\n" + "._103:\n" + " strh r0, [r1, #0xc]\n" + " lsl r0, r0, #0x10\n" + " cmp r0, #0\n" + " bgt ._116 @cond_branch\n" + " ldr r0, ._109 + 8\n" + " strh r0, [r1, #0xc]\n" + " b ._116\n" + "._110:\n" + " .align 2, 0\n" + "._109:\n" + " .word +0x2000000\n" + " .word 0xfffffc18\n" + " .word 0x270f\n" + "._106:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._111 @cond_branch\n" + " ldr r2, ._114\n" + " mov r1, #0xfa\n" + " lsl r1, r1, #0x2\n" + " add r0, r1, #0\n" + " ldrh r1, [r2, #0xc]\n" + " add r0, r0, r1\n" + "._99:\n" + " strh r0, [r2, #0xc]\n" + " lsl r0, r0, #0x10\n" + " asr r0, r0, #0x10\n" + " ldr r1, ._114 + 4\n" + " cmp r0, r1\n" + " ble ._116 @cond_branch\n" + " strh r1, [r2, #0xc]\n" + " b ._116\n" + "._115:\n" + " .align 2, 0\n" + "._114:\n" + " .word +0x2000000\n" + " .word 0x270f\n" + "._111:\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._116 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " add r0, r6, #0\n" + " bl DestroyTask\n" + "._116:\n" + " add sp, sp, #0x8\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B894() +{ + 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" + " ldr r1, ._122\n" + " ldrh r2, [r1, #0x8]\n" + " mov r0, #0xc0\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r2\n" + " add r4, r1, #0\n" + " cmp r0, #0\n" + " beq ._117 @cond_branch\n" + " add r1, r1, #0x90\n" + " ldr r0, [r1]\n" + " add r0, r0, #0x1\n" + " str r0, [r1]\n" + " ldr r2, ._122 + 4\n" + " cmp r0, r2\n" + " ble ._118 @cond_branch\n" + " str r2, [r1]\n" + "._118:\n" + " add r0, r4, #0\n" + " add r0, r0, #0x88\n" + " ldr r1, [r1]\n" + " ldr r0, [r0]\n" + " cmp r1, r0\n" + " beq ._119 @cond_branch\n" + " ldr r0, ._122 + 8\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldr r1, ._122 + 12\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + "._119:\n" + " ldrb r1, [r4, #0x4]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0\n" + " bne ._126 @cond_branch\n" + " ldr r0, ._122 + 16\n" + " mov r1, #0x4\n" + " mov r2, #0x11\n" + " b ._121\n" + "._123:\n" + " .align 2, 0\n" + "._122:\n" + " .word +0x2000000\n" + " .word 0x270f\n" + " .word Str_841B2B0\n" + " .word unk_debug_bss_1+0x4\n" + " .word Str_841B2D3\n" + "._117:\n" + " lsl r0, r2, #0x10\n" + " cmp r0, #0\n" + " beq ._127 @cond_branch\n" + " ldrb r1, [r4, #0x4]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._126 @cond_branch\n" + " mov r4, #0x3\n" + " and r4, r4, r2\n" + " cmp r4, #0\n" + " bne ._126 @cond_branch\n" + " ldr r0, ._163\n" + " mov r1, #0x4\n" + " mov r2, #0x2\n" + "._121:\n" + " bl MenuPrint\n" + " ldr r0, ._163 + 4\n" + " strb r4, [r0]\n" + "._126:\n" + " ldr r0, ._163 + 8\n" + " ldrh r1, [r0, #0x8]\n" + " add r4, r0, #0\n" + " cmp r1, #0\n" + " beq ._127 @cond_branch\n" + " b ._162\n" + "._127:\n" + " mov r1, #0x12\n" + " ldsh r0, [r4, r1]\n" + " cmp r0, #0x3\n" + " beq ._129 @cond_branch\n" + " b ._162\n" + "._129:\n" + " ldrb r1, [r4, #0x4]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._131 @cond_branch\n" + " b ._162\n" + "._131:\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " mov r0, #0x0\n" + " mov r1, #0x2\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " str r0, [sp]\n" + " mov r0, #0x0\n" + " mov r1, #0x3\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r9, r0\n" + " mov r0, #0x1\n" + " mov r1, #0x2\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " mov r0, #0x1\n" + " mov r1, #0x3\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov sl, r0\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " mov r0, #0x2\n" + " mov r1, #0x2\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r7, #0\n" + " bne ._134 @cond_branch\n" + " mov r1, r9\n" + " cmp r1, #0x1\n" + " bne ._134 @cond_branch\n" + " cmp r5, #0\n" + " beq ._159 @cond_branch\n" + "._134:\n" + " ldr r1, [sp]\n" + " cmp r1, #0\n" + " bne ._137 @cond_branch\n" + " cmp r4, #0x1\n" + " bne ._137 @cond_branch\n" + " mov r1, r8\n" + " cmp r1, #0\n" + " beq ._159 @cond_branch\n" + "._137:\n" + " cmp r6, #0\n" + " bne ._140 @cond_branch\n" + " mov r1, sl\n" + " cmp r1, #0x1\n" + " bne ._140 @cond_branch\n" + " cmp r0, #0\n" + " beq ._159 @cond_branch\n" + "._140:\n" + " cmp r7, #0\n" + " bne ._143 @cond_branch\n" + " cmp r4, #0x1\n" + " bne ._143 @cond_branch\n" + " cmp r0, #0\n" + " beq ._159 @cond_branch\n" + "._143:\n" + " cmp r6, #0\n" + " bne ._146 @cond_branch\n" + " cmp r4, #0x1\n" + " bne ._146 @cond_branch\n" + " cmp r5, #0\n" + " beq ._159 @cond_branch\n" + "._146:\n" + " cmp r7, #0x1\n" + " bne ._149 @cond_branch\n" + " mov r1, r9\n" + " cmp r1, #0\n" + " bne ._149 @cond_branch\n" + " cmp r5, #0x1\n" + " beq ._159 @cond_branch\n" + "._149:\n" + " ldr r1, [sp]\n" + " cmp r1, #0x1\n" + " bne ._152 @cond_branch\n" + " cmp r4, #0\n" + " bne ._152 @cond_branch\n" + " mov r1, r8\n" + " cmp r1, #0x1\n" + " beq ._159 @cond_branch\n" + "._152:\n" + " cmp r6, #0x1\n" + " bne ._155 @cond_branch\n" + " mov r1, sl\n" + " cmp r1, #0\n" + " bne ._155 @cond_branch\n" + " cmp r0, #0x1\n" + " beq ._159 @cond_branch\n" + "._155:\n" + " cmp r7, #0x1\n" + " bne ._158 @cond_branch\n" + " cmp r4, #0\n" + " bne ._158 @cond_branch\n" + " cmp r0, #0x1\n" + " beq ._159 @cond_branch\n" + "._158:\n" + " cmp r6, #0x1\n" + " bne ._162 @cond_branch\n" + " cmp r4, #0\n" + " bne ._162 @cond_branch\n" + " cmp r5, #0x1\n" + " bne ._162 @cond_branch\n" + "._159:\n" + " ldr r0, ._163 + 12\n" + " mov r1, #0x4\n" + " mov r2, #0x0\n" + " bl MenuPrint\n" + " ldr r1, ._163 + 4\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + "._162:\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" + "._164:\n" + " .align 2, 0\n" + "._163:\n" + " .word Str_841B2E4\n" + " .word unk_debug_bss_1+0x4\n" + " .word +0x2000000\n" + " .word Str_841B2BF\n" + "\n" + ); +} +#endif + +static const u8 sReelSymbols[][21] = +{ { SLOT_MACHINE_TAG_7_RED, SLOT_MACHINE_TAG_CHERRY, diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 2f6f1e7dd..5e76d30a6 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -44,6 +44,11 @@ enum { MENU_ACTION_PLAYER_LINK }; +#ifdef DEBUG +static u32 _debugStartMenu_0 __attribute__((unused)); +static u32 _debugStartMenu_1 __attribute__((unused)); +#endif + static u8 (*saveDialogCallback)(void); static u8 saveDialogTimer; //Number of frames to keep the window on screen after save was completed static bool8 savingComplete; @@ -132,6 +137,304 @@ static bool32 sub_80719FC(u8 *ptr); static void sub_8071B54(void); static void Task_8071B64(u8 taskId); +#ifdef DEBUG +__attribute__((naked)) +void debug_sub_8075C30() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl debug_sub_8075D9C\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8075C40() +{ + 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" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._5\n" + " add r5, r0, r1\n" + " mov r1, #0x0\n" + " ldsh r0, [r5, r1]\n" + " cmp r0, #0x1\n" + " beq ._1 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._2 @cond_branch\n" + " cmp r0, #0\n" + " beq ._3 @cond_branch\n" + " b ._18\n" + "._6:\n" + " .align 2, 0\n" + "._5:\n" + " .word gTasks+0x8\n" + "._2:\n" + " cmp r0, #0x2\n" + " beq ._7 @cond_branch\n" + " cmp r0, #0x3\n" + " beq ._8 @cond_branch\n" + " b ._18\n" + "._3:\n" + " bl m4aSoundVSyncOff\n" + " b ._12\n" + "._1:\n" + " ldr r1, ._13\n" + " ldrh r0, [r1]\n" + " mov sl, r0\n" + " mov r0, #0x0\n" + " strh r0, [r1]\n" + " ldr r1, ._13 + 4\n" + " strh r0, [r1]\n" + " mov r0, #0x83\n" + " lsl r0, r0, #0x10\n" + " str r0, [r1]\n" + " ldr r4, ._13 + 8\n" + " mov r9, r4\n" + " ldr r2, ._13 + 12\n" + " ldr r0, ._13 + 16\n" + " mov ip, r0\n" + " ldr r1, ._13 + 20\n" + " mov r8, r1\n" + " ldr r7, ._13 + 24\n" + " mov r3, r9\n" + " add r3, r3, #0x1\n" + " ldr r6, ._13 + 28\n" + " ldr r4, ._13 + 32\n" + "._11:\n" + " mov r0, ip\n" + " str r0, [r2]\n" + " str r6, [r2, #0x4]\n" + " str r4, [r2, #0x8]\n" + " ldr r0, [r2, #0x8]\n" + " ldrh r1, [r2, #0xa]\n" + " mov r0, r8\n" + " and r0, r0, r1\n" + " strh r0, [r2, #0xa]\n" + " ldrh r1, [r2, #0xa]\n" + " add r0, r7, #0\n" + " and r0, r0, r1\n" + " strh r0, [r2, #0xa]\n" + " ldrh r0, [r2, #0xa]\n" + " sub r3, r3, #0x1\n" + " cmp r3, #0\n" + " bne ._11 @cond_branch\n" + " mov r3, r9\n" + " add r3, r3, #0x1\n" + " ldr r0, ._13 + 36\n" + " mov r2, #0x0\n" + " strh r2, [r0]\n" + " ldr r1, ._13 + 4\n" + " ldrh r0, [r1]\n" + " ldr r4, ._13 + 40\n" + " str r0, [r4]\n" + " strh r2, [r1]\n" + " ldr r0, ._13\n" + " mov r1, sl\n" + " strh r1, [r0]\n" + " ldr r4, ._13 + 44\n" + " str r3, [r4]\n" + " bl m4aSoundVSyncOn\n" + " b ._12\n" + "._14:\n" + " .align 2, 0\n" + "._13:\n" + " .word 0x4000208\n" + " .word 0x4000108\n" + " .word 0xc34f\n" + " .word 0x40000b0\n" + " .word gUnknown_03004DE0\n" + " .word 0xc5ff\n" + " .word 0x7fff\n" + " .word 0x4000040\n" + " .word 0xa2600001\n" + " .word 0x400010a\n" + " .word _debugStartMenu_0\n" + " .word _debugStartMenu_1\n" + "._7:\n" + " mov r0, #0x15\n" + " bl PlaySE\n" + " ldr r0, ._16\n" + " ldr r1, ._16 + 4\n" + " ldr r1, [r1]\n" + " mov r2, #0x1\n" + " mov r3, #0x8\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r0, ._16 + 8\n" + " ldr r1, ._16 + 12\n" + " ldr r1, [r1]\n" + " mov r2, #0x1\n" + " mov r3, #0x8\n" + " bl ConvertIntToDecimalStringN\n" + " bl MenuDisplayMessageBox\n" + " ldr r0, ._16 + 16\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + "._12:\n" + " ldrh r0, [r5]\n" + " add r0, r0, #0x1\n" + " strh r0, [r5]\n" + " b ._18\n" + "._17:\n" + " .align 2, 0\n" + "._16:\n" + " .word gStringVar1\n" + " .word _debugStartMenu_1\n" + " .word gStringVar2\n" + " .word _debugStartMenu_0\n" + " .word gUnknown_Debug_839B6D8\n" + "._8:\n" + " ldr r0, ._19\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._18 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " bl ScriptContext2_Disable\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + "._18:\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" + "._20:\n" + " .align 2, 0\n" + "._19:\n" + " .word gMain\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8075D9C() +{ + asm( + " push {lr}\n" + " ldr r0, ._21\n" + " mov r1, #0xa\n" + " bl CreateTask\n" + " bl ScriptContext2_Enable\n" + " pop {r0}\n" + " bx r0\n" + "._22:\n" + " .align 2, 0\n" + "._21:\n" + " .word debug_sub_8075C40+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8075DB4() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " add r5, r1, #0\n" + " add r4, r2, #0\n" + " add r0, r4, #0\n" + " mov r1, #0x4d\n" + " bl __umodsi3\n" + " strb r0, [r6, #0x1]\n" + " add r1, r6, #0\n" + " add r1, r1, #0xc\n" + " add r0, r4, #0\n" + " bl write_word_to_mem\n" + " add r0, r6, #4\n" + " add r1, r5, #0\n" + " bl StringCopy8\n" + " mov r3, #0x7\n" + " mov r4, #0x0\n" + " ldr r0, ._25\n" + " ldr r1, ._25 + 4\n" + " add r5, r0, r1\n" + " add r2, r6, #0\n" + " add r2, r2, #0x10\n" + " add r1, r6, #0\n" + " add r1, r1, #0x1c\n" + "._23:\n" + " ldrh r0, [r5]\n" + " strh r0, [r2]\n" + " strh r3, [r1]\n" + " add r0, r3, #6\n" + " strh r0, [r1, #0xc]\n" + " add r3, r3, #0x1\n" + " add r5, r5, #0x2\n" + " add r2, r2, #0x2\n" + " add r1, r1, #0x2\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x5\n" + " ble ._23 @cond_branch\n" + " mov r4, #0x0\n" + "._24:\n" + " mov r0, #0x64\n" + " mul r0, r0, r4\n" + " ldr r1, ._25 + 8\n" + " add r0, r0, r1\n" + " mov r1, #0x2c\n" + " mul r1, r1, r4\n" + " add r1, r1, #0x34\n" + " add r1, r6, r1\n" + " bl sub_803AF78\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x2\n" + " ble ._24 @cond_branch\n" + " add r0, r6, #0\n" + " bl sub_8136088\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._26:\n" + " .align 2, 0\n" + "._25:\n" + " .word gSaveBlock1\n" + " .word 0x2b28\n" + " .word gPlayerParty\n" + "\n" + ); +} + +__attribute__((naked)) +void unref_sub_8070F90() +{ + asm( + " push {lr}\n" + " ldr r0, ._27\n" + " bl FlagSet\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x4\n" + " bl FlagSet\n" + " ldr r0, ._27 + 4\n" + " bl FlagSet\n" + " pop {r0}\n" + " bx r0\n" + "._28:\n" + " .align 2, 0\n" + "._27:\n" + " .word 0x801\n" + " .word 0x802\n" + "\n" + ); +} +#endif static void BuildStartMenuActions(void) { diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c index 4bf83cad8..08913f40d 100644 --- a/src/field/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -3802,6 +3802,19 @@ static void FeebasSeedRng(u16 seed) sFeebasRngValue = seed; } +#if DEBUG +u16 debug_sub_8092344(u8 arg0) +{ + if (arg0 == 0) + return 131; + if (arg0 == 1) + return 167; + if (arg0 == 2) + return 149; + return 0; +} +#endif + static u8 ChooseWildMonIndex_Land(void) { u8 rand = Random() % 100; @@ -4042,6 +4055,24 @@ static bool8 DoWildEncounterRateDiceRoll(u16 encounterRate) return FALSE; } +#if DEBUG +u16 debug_sub_809283C(u16 attempts) +{ + u16 retval = 0; + u16 i = 0; + + while (i < attempts) + { + if (DoWildEncounterRateDiceRoll(320) == TRUE) + retval++; + + i++; + } + + return retval; +} +#endif + static bool8 DoWildEncounterTest(u32 encounterRate, bool8 ignoreAbility) { encounterRate *= 16; diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index 921a3ad93..c652b9398 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -238,7 +238,7 @@ const struct MailLayout gUnknown_083E57A4[] = static u8 *const sSharedMemPtr = gSharedMem; static u8 sub_80F8A28(void); -static void sub_80F8D50(void); +/*static*/ void sub_80F8D50(void); static void sub_80F8DA0(void); static void sub_80F8E80(void); static void sub_80F8F18(void); @@ -247,6 +247,205 @@ static void sub_80F8F58(void); static void sub_80F8F78(void); static void sub_80F8FB4(void); + +#if DEBUG + +// should be static +__attribute__((section(".bss"))) u8 unk_debug_bss_2; + +__attribute__((naked)) +void HandleReadMail(struct MailStruct *aStruct, MainCallback callback, bool8 bool81) +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " add r6, r1, #0\n" + " lsl r2, r2, #0x18\n" + " lsr r5, r2, #0x18\n" + " ldr r0, ._3\n" + " ldrb r3, [r0]\n" + " cmp r3, #0\n" + " beq ._1 @cond_branch\n" + " ldr r2, ._3 + 4\n" + " add r1, r2, #0\n" + " add r1, r1, #0xff\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " ldr r0, ._3 + 8\n" + " ldrh r1, [r0]\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x1\n" + " add r0, r2, r3\n" + " strb r1, [r0]\n" + " mov r0, #0x82\n" + " lsl r0, r0, #0x1\n" + " add r1, r2, r0\n" + " ldr r0, ._3 + 12\n" + " str r0, [r1]\n" + " add r3, r3, #0x8\n" + " add r1, r2, r3\n" + " ldr r0, ._3 + 16\n" + " str r0, [r1]\n" + " ldr r0, ._3 + 20\n" + " ldrh r1, [r0]\n" + " b ._2\n" + "._4:\n" + " .align 2, 0\n" + "._3:\n" + " .word gUnknown_03000748+0x4\n" + " .word +0x2000000\n" + " .word gSpecialVar_0x8004\n" + " .word EasyChat_GetWordText+1\n" + " .word ConvertEasyChatWordsToString+1\n" + " .word gSpecialVar_0x8006\n" + "._1:\n" + " ldr r2, ._7\n" + " add r1, r2, #0\n" + " add r1, r1, #0xff\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " add r0, r0, #0xfb\n" + " add r1, r2, r0\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x82\n" + " lsl r0, r0, #0x1\n" + " add r1, r2, r0\n" + " ldr r0, ._7 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x84\n" + " lsl r0, r0, #0x1\n" + " add r1, r2, r0\n" + " ldr r0, ._7 + 8\n" + " str r0, [r1]\n" + " ldrh r1, [r4, #0x20]\n" + " add r0, r1, #0\n" + " sub r0, r0, #0x79\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0xb\n" + " bhi ._5 @cond_branch\n" + " sub r1, r1, #0x79\n" + "._2:\n" + " add r0, r2, #0\n" + " add r0, r0, #0xfa\n" + " strb r1, [r0]\n" + " b ._6\n" + "._8:\n" + " .align 2, 0\n" + "._7:\n" + " .word +0x2000000\n" + " .word EasyChat_GetWordText+1\n" + " .word ConvertEasyChatWordsToString+1\n" + "._5:\n" + " add r0, r2, #0\n" + " add r0, r0, #0xfa\n" + " strb r3, [r0]\n" + " mov r5, #0x0\n" + "._6:\n" + " ldr r1, ._12\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r0, r1, r2\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._9 @cond_branch\n" + " cmp r0, #0x1\n" + " beq ._10 @cond_branch\n" + "._9:\n" + " mov r3, #0x86\n" + " lsl r3, r3, #0x1\n" + " add r2, r1, r3\n" + " add r0, r1, #0\n" + " add r0, r0, #0xfa\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._12 + 4\n" + " b ._11\n" + "._13:\n" + " .align 2, 0\n" + "._12:\n" + " .word +0x2000000\n" + " .word gUnknown_083E5730\n" + "._10:\n" + " mov r0, #0x86\n" + " lsl r0, r0, #0x1\n" + " add r2, r1, r0\n" + " add r0, r1, #0\n" + " add r0, r0, #0xfa\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._18\n" + "._11:\n" + " add r0, r0, r1\n" + " str r0, [r2]\n" + " ldrh r0, [r4, #0x1e]\n" + " mov r1, sp\n" + " bl MailSpeciesToSpecies\n" + " lsl r0, r0, #0x10\n" + " ldr r1, ._18 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xcd\n" + " lsl r1, r1, #0x11\n" + " cmp r0, r1\n" + " bhi ._14 @cond_branch\n" + " ldr r0, ._18 + 8\n" + " add r1, r0, #0\n" + " add r1, r1, #0xfa\n" + " ldrb r2, [r1]\n" + " add r1, r0, #0\n" + " cmp r2, #0x6\n" + " beq ._15 @cond_branch\n" + " cmp r2, #0x9\n" + " beq ._16 @cond_branch\n" + " b ._17\n" + "._19:\n" + " .align 2, 0\n" + "._18:\n" + " .word gUnknown_083E57A4\n" + " .word 0xffff0000\n" + " .word +0x2000000\n" + "._15:\n" + " add r2, r1, #0\n" + " add r2, r2, #0xfb\n" + " mov r0, #0x1\n" + " b ._21\n" + "._16:\n" + " add r2, r1, #0\n" + " add r2, r2, #0xfb\n" + " mov r0, #0x2\n" + " b ._21\n" + "._14:\n" + " ldr r1, ._22\n" + "._17:\n" + " add r2, r1, #0\n" + " add r2, r2, #0xfb\n" + " mov r0, #0x0\n" + "._21:\n" + " strb r0, [r2]\n" + " add r0, r1, #0\n" + " add r0, r0, #0xf4\n" + " str r4, [r0]\n" + " sub r0, r0, #0x8\n" + " str r6, [r0]\n" + " add r0, r0, #0xc\n" + " strb r5, [r0]\n" + " ldr r0, ._22 + 4\n" + " bl SetMainCallback2\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._23:\n" + " .align 2, 0\n" + "._22:\n" + " .word +0x2000000\n" + " .word sub_80F8D50+1\n" + "\n" + ); +} +#else void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) { u16 mailDesign; @@ -310,6 +509,7 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) SetMainCallback2(sub_80F8D50); } +#endif #define RETURN_UP_STATE break #define RETURN_SKIP_STATE return FALSE @@ -456,7 +656,7 @@ static u8 sub_80F8A28(void) return FALSE; } -static void sub_80F8D50(void) +/*static*/ void sub_80F8D50(void) { do { @@ -573,6 +773,60 @@ static void sub_80F8F78(void) } } +#if DEBUG +__attribute__((naked)) +void sub_80F8FB4() +{ + asm( + " push {r4, lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._135 @cond_branch\n" + " ldr r4, ._138\n" + " add r0, r4, #0\n" + " add r0, r0, #0xec\n" + " ldr r0, [r0]\n" + " bl SetMainCallback2\n" + " add r0, r4, #0\n" + " add r0, r0, #0xfb\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x2\n" + " bgt ._137 @cond_branch\n" + " cmp r0, #0x1\n" + " blt ._137 @cond_branch\n" + " add r0, r4, #0\n" + " add r0, r0, #0xf4\n" + " ldr r0, [r0]\n" + " ldrh r0, [r0, #0x1e]\n" + " bl sub_809D4A8\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl sub_809D608\n" + " add r0, r4, #0\n" + " add r0, r0, #0xfc\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._138 + 4\n" + " add r0, r0, r1\n" + " bl sub_809D510\n" + "._137:\n" + " bl ResetPaletteFade\n" + "._135:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._139:\n" + " .align 2, 0\n" + "._138:\n" + " .word +0x2000000\n" + " .word gSprites\n" + "\n" + ); +} +#else static void sub_80F8FB4(void) { u16 local1; @@ -597,3 +851,1611 @@ static void sub_80F8FB4(void) memset(&ewram0_4, 0, 0x110); ResetPaletteFade(); } +#endif + +#if DEBUG +__attribute__((naked)) +void debug_sub_810C910() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r0, ._143\n" + " ldrb r1, [r0, #0x7]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._142 @cond_branch\n" + " ldr r1, ._143 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " bl Menu_EraseScreen\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + " ldr r2, ._143 + 8\n" + " ldr r0, ._143 + 12\n" + " ldrh r1, [r0]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r1, r0, #0x2\n" + " add r0, r1, r2\n" + " ldr r3, ._143 + 16\n" + " add r0, r0, r3\n" + " ldrh r0, [r0]\n" + " cmp r0, #0\n" + " bne ._141 @cond_branch\n" + " sub r3, r3, #0x20\n" + " add r0, r2, r3\n" + " add r0, r1, r0\n" + " ldr r1, ._143 + 20\n" + " mov r2, #0x0\n" + " bl HandleReadMail\n" + " b ._142\n" + "._144:\n" + " .align 2, 0\n" + "._143:\n" + " .word gPaletteFade\n" + " .word unk_debug_bss_2\n" + " .word gSaveBlock1\n" + " .word gSpecialVar_0x8005\n" + " .word 0x2b6c\n" + " .word debug_sub_810D388+1\n" + "._141:\n" + " ldr r3, ._145\n" + " add r0, r2, r3\n" + " add r0, r1, r0\n" + " ldr r1, ._145 + 4\n" + " mov r2, #0x1\n" + " bl HandleReadMail\n" + "._142:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._146:\n" + " .align 2, 0\n" + "._145:\n" + " .word 0x2b4c\n" + " .word debug_sub_810D388+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810C990() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " add r5, r4, #0\n" + " ldr r0, ._149\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0xa0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._147 @cond_branch\n" + " ldr r4, ._149 + 4\n" + " ldrh r0, [r4]\n" + " add r0, r0, #0xb\n" + " b ._148\n" + "._150:\n" + " .align 2, 0\n" + "._149:\n" + " .word gMain\n" + " .word gSpecialVar_0x8006\n" + "._147:\n" + " mov r2, #0x50\n" + " and r2, r2, r1\n" + " cmp r2, #0\n" + " beq ._151 @cond_branch\n" + " ldr r4, ._153\n" + " ldrh r0, [r4]\n" + " add r0, r0, #0x1\n" + "._148:\n" + " mov r1, #0xc\n" + " bl __modsi3\n" + " strh r0, [r4]\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0xa\n" + " mov r3, #0x4\n" + " bl Menu_DrawStdWindowFrame\n" + " ldr r1, ._153 + 4\n" + " ldrh r0, [r4]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0x2\n" + " mov r2, #0x2\n" + " bl Menu_PrintText\n" + " b ._159\n" + "._154:\n" + " .align 2, 0\n" + "._153:\n" + " .word gSpecialVar_0x8006\n" + " .word _84115C4\n" + "._151:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._155 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " str r2, [sp]\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._157\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._157 + 4\n" + " b ._156\n" + "._158:\n" + " .align 2, 0\n" + "._157:\n" + " .word gTasks\n" + " .word debug_sub_810C910+1\n" + "._155:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._159 @cond_branch\n" + " bl Menu_DisplayDialogueFrame\n" + " ldr r0, ._160\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + " ldr r1, ._160 + 4\n" + " ldr r0, ._160 + 8\n" + " ldrh r0, [r0]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0x2\n" + " mov r2, #0x2\n" + " bl Menu_PrintText\n" + " ldr r1, ._160 + 12\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._160 + 16\n" + "._156:\n" + " str r1, [r0]\n" + "._159:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._161:\n" + " .align 2, 0\n" + "._160:\n" + " .word Str_8411540\n" + " .word _8411560\n" + " .word gSpecialVar_0x8004\n" + " .word gTasks\n" + " .word debug_sub_810CA7C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CA7C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r3, ._164\n" + " ldrh r1, [r3, #0x2e]\n" + " mov r2, #0xf0\n" + " and r2, r2, r1\n" + " cmp r2, #0\n" + " beq ._162 @cond_branch\n" + " ldr r2, ._164 + 4\n" + " ldrh r0, [r2]\n" + " mov r1, #0x1\n" + " eor r0, r0, r1\n" + " strh r0, [r2]\n" + " ldr r1, ._164 + 8\n" + " ldrh r0, [r2]\n" + " b ._163\n" + "._165:\n" + " .align 2, 0\n" + "._164:\n" + " .word gMain\n" + " .word gSpecialVar_0x8004\n" + " .word _8411560\n" + "._162:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._168 @cond_branch\n" + " ldrh r0, [r3, #0x34]\n" + " cmp r0, #0\n" + " beq ._167 @cond_branch\n" + " strh r2, [r3, #0x34]\n" + " bl Menu_DisplayDialogueFrame\n" + " ldr r0, ._169\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0xa\n" + " mov r3, #0x4\n" + " bl Menu_DrawStdWindowFrame\n" + " ldr r1, ._169 + 4\n" + " ldr r0, ._169 + 8\n" + " ldrh r0, [r0]\n" + "._163:\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0x2\n" + " mov r2, #0x2\n" + " bl Menu_PrintText\n" + " b ._168\n" + "._170:\n" + " .align 2, 0\n" + "._169:\n" + " .word Str_8411540\n" + " .word _8411560\n" + " .word gSpecialVar_0x8004\n" + "._167:\n" + " bl Menu_DisplayDialogueFrame\n" + " ldr r0, ._171\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0xa\n" + " mov r3, #0x4\n" + " bl Menu_DrawStdWindowFrame\n" + " ldr r1, ._171 + 4\n" + " ldr r0, ._171 + 8\n" + " ldrh r0, [r0]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0x2\n" + " mov r2, #0x2\n" + " bl Menu_PrintText\n" + " ldr r1, ._171 + 12\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._171 + 16\n" + " str r1, [r0]\n" + "._168:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._172:\n" + " .align 2, 0\n" + "._171:\n" + " .word Str_8411568\n" + " .word _84115C4\n" + " .word gSpecialVar_0x8006\n" + " .word gTasks\n" + " .word debug_sub_810C990+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CB50() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xffffffec\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " ldr r1, ._175\n" + " mov r0, sp\n" + " mov r2, #0x6\n" + " bl memcpy\n" + " add r7, sp, #0x8\n" + " ldr r1, ._175 + 4\n" + " add r0, r7, #0\n" + " mov r2, #0x9\n" + " bl memcpy\n" + " mov r2, #0x0\n" + " ldr r0, ._175 + 8\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._173 @cond_branch\n" + " ldr r0, ._175 + 12\n" + " ldr r5, ._175 + 16\n" + " ldrh r1, [r5]\n" + " mov r2, #0x2\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r0, ._175 + 20\n" + " ldr r1, ._175 + 24\n" + " lsl r4, r6, #0x2\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r1\n" + " mov r1, #0x8\n" + " ldsh r2, [r4, r1]\n" + " mov r1, #0xb\n" + " mul r1, r1, r2\n" + " ldr r2, ._175 + 28\n" + " add r1, r1, r2\n" + " bl StringCopy\n" + " ldr r2, ._175 + 32\n" + " ldrh r1, [r5]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldrh r1, [r4, #0x8]\n" + " ldr r2, ._175 + 36\n" + " add r0, r0, r2\n" + " strh r1, [r0]\n" + " ldr r4, ._175 + 40\n" + " add r0, r4, #0\n" + " add r1, r7, #0\n" + " bl StringExpandPlaceholders\n" + " bl Menu_DisplayDialogueFrame\n" + " add r0, r4, #0\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + " add r0, r6, #0\n" + " bl DestroyTask\n" + " b ._174\n" + "._176:\n" + " .align 2, 0\n" + "._175:\n" + " .word Str_841160F\n" + " .word Str_841161A\n" + " .word gMain\n" + " .word gStringVar1\n" + " .word gSpecialVar_0x8005\n" + " .word gStringVar2\n" + " .word gTasks\n" + " .word gSpeciesNames\n" + " .word gSaveBlock1\n" + " .word 0x2b6a\n" + " .word gStringVar4\n" + "._173:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._177 @cond_branch\n" + " add r0, r6, #0\n" + " bl DestroyTask\n" + " bl Menu_EraseScreen\n" + "._174:\n" + " ldr r0, ._179\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " bl debug_sub_810D340\n" + " b ._186\n" + "._180:\n" + " .align 2, 0\n" + "._179:\n" + " .word debug_sub_810CE1C+1\n" + "._177:\n" + " mov r0, #0xa0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._181 @cond_branch\n" + " ldr r0, ._183\n" + " lsl r4, r6, #0x2\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " mov r1, #0x8\n" + " ldsh r0, [r4, r1]\n" + " ldr r2, ._183 + 4\n" + " add r0, r0, r2\n" + " mov r1, #0xce\n" + " lsl r1, r1, #0x1\n" + " bl __modsi3\n" + " strh r0, [r4, #0x8]\n" + " b ._182\n" + "._184:\n" + " .align 2, 0\n" + "._183:\n" + " .word gTasks\n" + " .word 0x19b\n" + "._181:\n" + " mov r0, #0x50\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._185 @cond_branch\n" + " ldr r0, ._187\n" + " lsl r4, r6, #0x2\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " mov r1, #0x8\n" + " ldsh r0, [r4, r1]\n" + " add r0, r0, #0x1\n" + " mov r1, #0xce\n" + " lsl r1, r1, #0x1\n" + " bl __modsi3\n" + " strh r0, [r4, #0x8]\n" + " mov r2, #0x1\n" + "._185:\n" + " cmp r2, #0\n" + " beq ._186 @cond_branch\n" + "._182:\n" + " ldr r0, ._187 + 4\n" + " ldr r1, ._187\n" + " lsl r4, r6, #0x2\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r1\n" + " mov r2, #0x8\n" + " ldsh r1, [r4, r2]\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r0, ._187 + 8\n" + " mov r1, #0x8\n" + " ldsh r2, [r4, r1]\n" + " mov r1, #0xb\n" + " mul r1, r1, r2\n" + " ldr r2, ._187 + 12\n" + " add r1, r1, r2\n" + " bl StringCopy\n" + " ldr r4, ._187 + 16\n" + " add r0, r4, #0\n" + " mov r1, sp\n" + " bl StringExpandPlaceholders\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xc\n" + " mov r3, #0x3\n" + " bl Menu_DrawStdWindowFrame\n" + " add r0, r4, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl Menu_PrintText\n" + "._186:\n" + " add sp, sp, #0x14\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._188:\n" + " .align 2, 0\n" + "._187:\n" + " .word gTasks\n" + " .word gStringVar1\n" + " .word gStringVar2\n" + " .word gSpeciesNames\n" + " .word gStringVar4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CCEC() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add sp, sp, #0xffffffe4\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " ldr r1, ._189\n" + " mov r0, sp\n" + " mov r2, #0x11\n" + " bl memcpy\n" + " add r6, sp, #0x14\n" + " ldr r1, ._189 + 4\n" + " add r0, r6, #0\n" + " mov r2, #0x7\n" + " bl memcpy\n" + " ldr r0, ._189 + 8\n" + " mov r8, r0\n" + " ldr r0, ._189 + 12\n" + " ldrh r1, [r0]\n" + " mov r0, r8\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r4, ._189 + 16\n" + " add r0, r4, #0\n" + " mov r1, sp\n" + " bl StringExpandPlaceholders\n" + " bl Menu_DisplayDialogueFrame\n" + " add r0, r4, #0\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + " ldr r1, ._189 + 20\n" + " mov r0, r8\n" + " bl StringCopy\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl StringExpandPlaceholders\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xc\n" + " mov r3, #0x3\n" + " bl Menu_DrawStdWindowFrame\n" + " add r0, r6, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl Menu_PrintText\n" + " ldr r1, ._189 + 24\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._189 + 28\n" + " str r1, [r0]\n" + " add sp, sp, #0x1c\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._190:\n" + " .align 2, 0\n" + "._189:\n" + " .word Str_8411623\n" + " .word Str_8411634\n" + " .word gStringVar1\n" + " .word gSpecialVar_0x8005\n" + " .word gStringVar4\n" + " .word gSpeciesNames\n" + " .word gTasks\n" + " .word debug_sub_810CB50+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CD9C() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl ScriptContext1_Stop\n" + " bl ScriptContext2_Enable\n" + " ldr r1, ._191\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " ldr r3, ._191 + 4\n" + " ldr r2, ._191 + 8\n" + " ldr r1, ._191 + 12\n" + " mov r0, #0x0\n" + " strh r0, [r1]\n" + " strh r0, [r2]\n" + " strh r0, [r3]\n" + " ldr r0, ._191 + 16\n" + " bl SetMainCallback2\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._192:\n" + " .align 2, 0\n" + "._191:\n" + " .word unk_debug_bss_2\n" + " .word gSpecialVar_0x8004\n" + " .word gSpecialVar_0x8005\n" + " .word gSpecialVar_0x8006\n" + " .word debug_sub_810D388+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CDE0() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " bl RunTasks\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CDF0() +{ + asm( + " push {lr}\n" + " ldr r1, ._193\n" + " mov r0, #0x0\n" + " strh r0, [r1, #0x34]\n" + " strh r0, [r1, #0x36]\n" + " ldr r1, ._193 + 4\n" + " ldr r0, ._193 + 8\n" + " str r0, [r1]\n" + " ldr r0, ._193 + 12\n" + " bl SetMainCallback2\n" + " pop {r0}\n" + " bx r0\n" + "._194:\n" + " .align 2, 0\n" + "._193:\n" + " .word gMain\n" + " .word gFieldCallback\n" + " .word mapldr_default+1\n" + " .word c2_exit_to_overworld_2_switch+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CE1C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r0, ._196\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 ._195 @cond_branch\n" + " bl CloseMenu\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + "._195:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._197:\n" + " .align 2, 0\n" + "._196:\n" + " .word gCallback_03004AE8\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CE48() +{ + asm( + " push {r4, lr}\n" + " bl Menu_ProcessInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._198 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._199 @cond_branch\n" + " bl Menu_EraseScreen\n" + " bl debug_sub_810D340\n" + "._198:\n" + " mov r0, #0x0\n" + " b ._200\n" + "._199:\n" + " ldr r0, ._201\n" + " strh r1, [r0]\n" + " ldr r4, ._201 + 4\n" + " ldrh r0, [r4]\n" + " mov r1, #0xc\n" + " bl __umodsi3\n" + " strh r0, [r4]\n" + " ldr r0, ._201 + 8\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " ldr r1, ._201 + 12\n" + " mov r2, #0x0\n" + " mov r0, #0x1\n" + " strh r0, [r1, #0x34]\n" + " strh r2, [r1, #0x36]\n" + "._200:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._202:\n" + " .align 2, 0\n" + "._201:\n" + " .word gSpecialVar_0x8005\n" + " .word gSpecialVar_0x8006\n" + " .word debug_sub_810CA7C+1\n" + " .word gMain\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CEA4() +{ + asm( + " push {lr}\n" + " ldr r0, ._205\n" + " ldrb r1, [r0, #0x7]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._203 @cond_branch\n" + " mov r0, #0x0\n" + " b ._204\n" + "._206:\n" + " .align 2, 0\n" + "._205:\n" + " .word gPaletteFade\n" + "._203:\n" + " ldr r1, ._207\n" + " mov r0, #0x4\n" + " strh r0, [r1]\n" + " bl sub_80E60D8\n" + " mov r0, #0x1\n" + "._204:\n" + " pop {r1}\n" + " bx r1\n" + "._208:\n" + " .align 2, 0\n" + "._207:\n" + " .word gSpecialVar_0x8004\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CED0() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xffffffdc\n" + " ldr r1, ._212\n" + " mov r0, sp\n" + " mov r2, #0x23\n" + " bl memcpy\n" + " bl Menu_ProcessInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._215 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._210 @cond_branch\n" + " bl Menu_EraseScreen\n" + " b ._211\n" + "._213:\n" + " .align 2, 0\n" + "._212:\n" + " .word Str_841163B\n" + "._210:\n" + " ldr r5, ._216\n" + " strh r1, [r5]\n" + " ldr r6, ._216 + 4\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldr r1, ._216 + 8\n" + " add r0, r0, r1\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x79\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0xb\n" + " bls ._214 @cond_branch\n" + " ldrh r1, [r5]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldr r2, ._216 + 8\n" + " add r0, r0, r2\n" + " ldr r1, ._216 + 12\n" + " strh r1, [r0]\n" + " ldrh r1, [r5]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " sub r2, r2, #0xe\n" + " add r1, r6, r2\n" + " add r0, r0, r1\n" + " ldr r4, ._216 + 16\n" + " add r1, r4, #0\n" + " bl StringCopy\n" + " ldrh r1, [r5]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r2, ._216 + 20\n" + " add r1, r6, r2\n" + " add r0, r0, r1\n" + " add r4, r4, #0xa\n" + " ldr r1, [r4]\n" + " str r1, [r0]\n" + " ldr r1, ._216 + 24\n" + " ldr r0, ._216 + 28\n" + " str r0, [r1]\n" + " b ._215\n" + "._217:\n" + " .align 2, 0\n" + "._216:\n" + " .word gSpecialVar_0x8005\n" + " .word gSaveBlock1\n" + " .word 0x2b6c\n" + " .word 0xffff\n" + " .word gSaveBlock2\n" + " .word 0x2b66\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_810CEA4+1\n" + "._214:\n" + " bl Menu_EraseScreen\n" + " bl Menu_DisplayDialogueFrame\n" + " mov r0, sp\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + "._211:\n" + " bl debug_sub_810D340\n" + "._215:\n" + " mov r0, #0x0\n" + " add sp, sp, #0x24\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CFA4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xffffffe0\n" + " ldr r1, ._221\n" + " mov r0, sp\n" + " mov r2, #0x1f\n" + " bl memcpy\n" + " bl Menu_ProcessInput\n" + " lsl r0, r0, #0x18\n" + " asr r2, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r2, r0\n" + " beq ._218 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r2, r0\n" + " bne ._219 @cond_branch\n" + " bl Menu_EraseScreen\n" + " b ._220\n" + "._222:\n" + " .align 2, 0\n" + "._221:\n" + " .word Str_841165E\n" + "._219:\n" + " ldr r0, ._225\n" + " strh r2, [r0]\n" + " ldr r1, ._225 + 4\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r1, ._225 + 8\n" + " add r0, r0, r1\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x79\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0xb\n" + " bls ._223 @cond_branch\n" + " ldr r0, ._225 + 12\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " mov r0, #0x1\n" + " b ._224\n" + "._226:\n" + " .align 2, 0\n" + "._225:\n" + " .word gSpecialVar_0x8005\n" + " .word gSaveBlock1\n" + " .word 0x2b6c\n" + " .word debug_sub_810CCEC+1\n" + "._223:\n" + " bl Menu_EraseScreen\n" + " bl Menu_DisplayDialogueFrame\n" + " mov r0, sp\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + "._220:\n" + " bl debug_sub_810D340\n" + "._218:\n" + " mov r0, #0x0\n" + "._224:\n" + " add sp, sp, #0x20\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810D030() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xffffffcc\n" + " ldr r1, ._230\n" + " mov r0, sp\n" + " mov r2, #0x10\n" + " bl memcpy\n" + " add r5, sp, #0x10\n" + " ldr r1, ._230 + 4\n" + " add r0, r5, #0\n" + " mov r2, #0x21\n" + " bl memcpy\n" + " bl Menu_ProcessInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._227 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._228 @cond_branch\n" + " bl Menu_EraseScreen\n" + " b ._229\n" + "._231:\n" + " .align 2, 0\n" + "._230:\n" + " .word Str_841167D\n" + " .word Str_841168D\n" + "._228:\n" + " ldr r2, ._235\n" + " strh r1, [r2]\n" + " ldr r3, ._235 + 4\n" + " ldrh r1, [r2]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r3\n" + " ldr r1, ._235 + 8\n" + " add r0, r0, r1\n" + " ldrh r1, [r0]\n" + " ldr r0, ._235 + 12\n" + " add r4, r2, #0\n" + " cmp r1, r0\n" + " beq ._233 @cond_branch\n" + " cmp r1, #0\n" + " beq ._233 @cond_branch\n" + " bl Menu_EraseScreen\n" + " bl Menu_DisplayDialogueFrame\n" + " add r0, r5, #0\n" + " b ._234\n" + "._236:\n" + " .align 2, 0\n" + "._235:\n" + " .word gSpecialVar_0x8005\n" + " .word gSaveBlock1\n" + " .word 0x2b6c\n" + " .word 0xffff\n" + "._233:\n" + " ldrh r1, [r4]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r3\n" + " ldr r5, ._238\n" + " add r0, r0, r5\n" + " mov r2, #0x0\n" + " strh r2, [r0]\n" + " ldrh r1, [r4]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r3\n" + " ldr r1, ._238 + 4\n" + " add r0, r0, r1\n" + " strh r2, [r0]\n" + " ldrh r1, [r4]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r3\n" + " sub r5, r5, #0xe\n" + " add r0, r0, r5\n" + " mov r1, #0xff\n" + " strb r1, [r0]\n" + " ldrh r1, [r4]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r5, r5, #0x8\n" + " add r1, r3, r5\n" + " add r0, r0, r1\n" + " str r2, [r0]\n" + " mov r0, #0x0\n" + " ldr r1, ._238 + 8\n" + " mov ip, r1\n" + " sub r5, r5, #0x1a\n" + " add r7, r3, r5\n" + " add r6, r4, #0\n" + " ldr r1, ._238 + 12\n" + " add r5, r1, #0\n" + "._237:\n" + " lsl r1, r0, #0x18\n" + " asr r1, r1, #0x18\n" + " lsl r3, r1, #0x1\n" + " ldrh r2, [r6]\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x2\n" + " add r3, r3, r0\n" + " add r3, r3, r7\n" + " ldrh r0, [r3]\n" + " orr r0, r0, r5\n" + " strh r0, [r3]\n" + " add r1, r1, #0x1\n" + " lsl r1, r1, #0x18\n" + " lsr r0, r1, #0x18\n" + " asr r1, r1, #0x18\n" + " cmp r1, #0x8\n" + " ble ._237 @cond_branch\n" + " ldrh r1, [r4]\n" + " mov r0, ip\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r4, ._238 + 16\n" + " add r0, r4, #0\n" + " mov r1, sp\n" + " bl StringExpandPlaceholders\n" + " bl Menu_EraseScreen\n" + " bl Menu_DisplayDialogueFrame\n" + " add r0, r4, #0\n" + "._234:\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + "._229:\n" + " bl debug_sub_810D340\n" + "._227:\n" + " mov r0, #0x0\n" + " add sp, sp, #0x34\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._239:\n" + " .align 2, 0\n" + "._238:\n" + " .word 0x2b6c\n" + " .word 0x2b6a\n" + " .word gStringVar1\n" + " .word 0xffff\n" + " .word gStringVar4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810D174() +{ + 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, #0xfffffeec\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " ldr r1, ._242\n" + " add r0, sp, #0x8\n" + " mov r2, #0xc\n" + " bl memcpy\n" + " mov r5, #0x0\n" + " mov r0, sp\n" + " add r0, r0, #0x14\n" + " str r0, [sp, #0x110]\n" + " add r1, sp, #0xc8\n" + " mov r8, r1\n" + " add r2, sp, #0xcc\n" + " mov sl, r2\n" + " ldr r0, ._242 + 4\n" + " mov r9, r0\n" + "._248:\n" + " ldr r0, ._242 + 8\n" + " add r1, r5, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " lsl r1, r5, #0x3\n" + " add r0, r1, r5\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldr r2, ._242 + 12\n" + " add r4, r0, r2\n" + " ldrh r0, [r4]\n" + " add r6, r1, #0\n" + " ldr r1, ._242 + 16\n" + " cmp r0, r1\n" + " bne ._240 @cond_branch\n" + " ldr r0, ._242 + 20\n" + " mov r1, #0x1\n" + " b ._241\n" + "._243:\n" + " .align 2, 0\n" + "._242:\n" + " .word Str_84116AE\n" + " .word gSaveBlock1\n" + " .word gStringVar1\n" + " .word 0x2b6c\n" + " .word 0xffff\n" + " .word gStringVar2\n" + "._240:\n" + " sub r0, r0, #0x79\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0xb\n" + " bhi ._244 @cond_branch\n" + " ldr r0, ._246\n" + " mov r1, #0x2\n" + "._241:\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " b ._245\n" + "._247:\n" + " .align 2, 0\n" + "._246:\n" + " .word gStringVar2\n" + "._244:\n" + " ldr r0, ._253\n" + " mov r1, #0x0\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0x0\n" + " strh r0, [r4]\n" + "._245:\n" + " add r0, r6, r5\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldr r2, ._253 + 4\n" + " add r0, r0, r2\n" + " ldrh r1, [r0]\n" + " mov r0, #0xb\n" + " mul r1, r1, r0\n" + " ldr r0, ._253 + 8\n" + " add r1, r1, r0\n" + " ldr r0, ._253 + 12\n" + " bl StringCopy\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x2\n" + " ldr r0, [sp, #0x110]\n" + " add r4, r0, r4\n" + " add r0, r4, #0\n" + " add r1, sp, #0x8\n" + " bl StringExpandPlaceholders\n" + " mov r1, r8\n" + " add r0, r1, r6\n" + " str r4, [r0]\n" + " mov r2, sl\n" + " add r0, r2, r6\n" + " mov r4, #0x0\n" + " str r4, [r0]\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x8\n" + " bls ._248 @cond_branch\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x10\n" + " mov r3, #0x13\n" + " bl Menu_DrawStdWindowFrame\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " mov r3, r8\n" + " bl Menu_PrintItems\n" + " str r4, [sp]\n" + " mov r0, #0xf\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " cmp r7, #0x1\n" + " beq ._249 @cond_branch\n" + " cmp r7, #0x1\n" + " bgt ._250 @cond_branch\n" + " cmp r7, #0\n" + " beq ._251 @cond_branch\n" + " b ._257\n" + "._254:\n" + " .align 2, 0\n" + "._253:\n" + " .word gStringVar2\n" + " .word 0x2b6a\n" + " .word gSpeciesNames\n" + " .word gStringVar3\n" + "._250:\n" + " cmp r7, #0x2\n" + " beq ._255 @cond_branch\n" + " cmp r7, #0x3\n" + " beq ._256 @cond_branch\n" + " b ._257\n" + "._251:\n" + " ldr r1, ._259\n" + " ldr r0, ._259 + 4\n" + " b ._264\n" + "._260:\n" + " .align 2, 0\n" + "._259:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_810CE48+1\n" + "._249:\n" + " ldr r1, ._262\n" + " ldr r0, ._262 + 4\n" + " b ._264\n" + "._263:\n" + " .align 2, 0\n" + "._262:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_810CED0+1\n" + "._255:\n" + " ldr r1, ._265\n" + " ldr r0, ._265 + 4\n" + " b ._264\n" + "._266:\n" + " .align 2, 0\n" + "._265:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_810CFA4+1\n" + "._256:\n" + " ldr r1, ._267\n" + " ldr r0, ._267 + 4\n" + "._264:\n" + " str r0, [r1]\n" + "._257:\n" + " add sp, sp, #0x114\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" + "._268:\n" + " .align 2, 0\n" + "._267:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_810D030+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810D2F4() +{ + asm( + " push {lr}\n" + " bl Menu_ProcessInput\n" + " lsl r2, r0, #0x18\n" + " asr r1, r2, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._269 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._270 @cond_branch\n" + " ldr r0, ._272\n" + " bl SetMainCallback2\n" + " b ._279\n" + "._273:\n" + " .align 2, 0\n" + "._272:\n" + " .word debug_sub_810CDF0+1\n" + "._270:\n" + " cmp r1, #0x1\n" + " beq ._278 @cond_branch\n" + " cmp r1, #0x1\n" + " bgt ._275 @cond_branch\n" + " cmp r1, #0\n" + " beq ._278 @cond_branch\n" + " b ._279\n" + "._275:\n" + " cmp r1, #0x2\n" + " beq ._278 @cond_branch\n" + " cmp r1, #0x3\n" + " bne ._279 @cond_branch\n" + "._278:\n" + " lsr r0, r2, #0x18\n" + " bl debug_sub_810D174\n" + "._269:\n" + " mov r0, #0x0\n" + " b ._280\n" + "._279:\n" + " mov r0, #0x1\n" + "._280:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810D340() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x9\n" + " mov r3, #0x9\n" + " bl Menu_DrawStdWindowFrame\n" + " ldr r3, ._281\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x4\n" + " bl Menu_PrintItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x8\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " ldr r1, ._281 + 4\n" + " ldr r0, ._281 + 8\n" + " str r0, [r1]\n" + " add sp, sp, #0x8\n" + " pop {r0}\n" + " bx r0\n" + "._282:\n" + " .align 2, 0\n" + "._281:\n" + " .word _84116BC\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_810D2F4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810D388() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " ldr r1, ._285\n" + " ldr r2, ._285 + 4\n" + " add r0, r1, r2\n" + " ldrb r0, [r0]\n" + " add r2, r1, #0\n" + " cmp r0, #0x8\n" + " bls ._283 @cond_branch\n" + " b ._320\n" + "._283:\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._285 + 8\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._286:\n" + " .align 2, 0\n" + "._285:\n" + " .word gMain\n" + " .word 0x43c\n" + " .word ._287\n" + "._287:\n" + " .word ._288\n" + " .word ._289\n" + " .word ._290\n" + " .word ._291\n" + " .word ._292\n" + " .word ._293\n" + " .word ._294\n" + " .word ._295\n" + " .word ._296\n" + "._288:\n" + " ldr r3, ._299\n" + " ldrb r4, [r3]\n" + " cmp r4, #0\n" + " beq ._297 @cond_branch\n" + " ldr r1, ._299 + 4\n" + " add r0, r2, r1\n" + " mov r2, #0x0\n" + " mov r1, #0x2\n" + " strb r1, [r0]\n" + " strb r2, [r3]\n" + " b ._320\n" + "._300:\n" + " .align 2, 0\n" + "._299:\n" + " .word unk_debug_bss_2\n" + " .word 0x43c\n" + "._297:\n" + " bl remove_some_task\n" + " bl ResetPaletteFade\n" + " ldr r0, ._302\n" + " bl SetVBlankCallback\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " str r4, [sp]\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " b ._321\n" + "._303:\n" + " .align 2, 0\n" + "._302:\n" + " .word sub_80F8F18+1\n" + "._289:\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._304 @cond_branch\n" + " b ._320\n" + "._304:\n" + " b ._321\n" + "._290:\n" + " mov r0, #0x0\n" + " bl SetVBlankCallback\n" + " ldr r0, ._308\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " add r0, r0, #0x4\n" + " strh r1, [r0]\n" + " sub r0, r0, #0x2\n" + " strh r1, [r0]\n" + " add r0, r0, #0x4\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " b ._321\n" + "._309:\n" + " .align 2, 0\n" + "._308:\n" + " .word 0x4000010\n" + "._291:\n" + " bl ResetSpriteData\n" + " bl ResetTasks\n" + " bl FreeAllSpritePalettes\n" + " b ._321\n" + "._292:\n" + " ldr r4, ._312\n" + " add r0, r4, #0\n" + " bl Text_LoadWindowTemplate\n" + " add r0, r4, #0\n" + " bl InitMenuWindow\n" + " bl Menu_EraseScreen\n" + " b ._321\n" + "._313:\n" + " .align 2, 0\n" + "._312:\n" + " .word gWindowTemplate_81E6CE4\n" + "._293:\n" + " ldr r4, ._315\n" + " ldr r0, [r4]\n" + " mov r1, #0x0\n" + " mov r2, #0x20\n" + " bl LoadPalette\n" + " ldr r0, [r4, #0x4]\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x13\n" + " bl LZ77UnCompVram\n" + " add r1, sp, #0x4\n" + " mov r0, #0x1\n" + " strh r0, [r1]\n" + " ldr r1, ._315 + 4\n" + " add r2, sp, #0x4\n" + " str r2, [r1]\n" + " ldr r0, ._315 + 8\n" + " str r0, [r1, #0x4]\n" + " ldr r0, ._315 + 12\n" + " str r0, [r1, #0x8]\n" + " ldr r0, [r1, #0x8]\n" + " b ._321\n" + "._316:\n" + " .align 2, 0\n" + "._315:\n" + " .word gMailGraphicsTable\n" + " .word 0x40000d4\n" + " .word 0x6004000\n" + " .word 0x81000280\n" + "._294:\n" + " ldr r1, ._318\n" + " ldr r2, ._318 + 4\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r2, ._318 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x46\n" + " mov r0, #0x0\n" + " strh r0, [r1]\n" + " sub r1, r1, #0x50\n" + " mov r2, #0xd0\n" + " lsl r2, r2, #0x2\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " bl debug_sub_810D340\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x10\n" + " mov r3, #0x0\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._318 + 12\n" + " bl SetVBlankCallback\n" + " b ._321\n" + "._319:\n" + " .align 2, 0\n" + "._318:\n" + " .word 0x4000008\n" + " .word 0x9f08\n" + " .word 0x801\n" + " .word sub_80F8F18+1\n" + "._295:\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._320 @cond_branch\n" + " b ._321\n" + "._296:\n" + " ldr r0, ._322\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " ldr r0, ._322 + 4\n" + " bl SetMainCallback2\n" + "._321:\n" + " ldr r1, ._322 + 8\n" + " ldr r0, ._322 + 12\n" + " add r1, r1, r0\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._320:\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._323:\n" + " .align 2, 0\n" + "._322:\n" + " .word debug_sub_810CE1C+1\n" + " .word debug_sub_810CDE0+1\n" + " .word gMain\n" + " .word 0x43c\n" + "\n" + ); +} +#endif
\ No newline at end of file diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c index 0242e7444..079bcf489 100644 --- a/src/pokemon/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -524,6 +524,328 @@ void CalculateMonStats(struct Pokemon *mon) SetMonData(mon, MON_DATA_HP, ¤tHP); } +#ifdef DEBUG +__attribute__((naked)) +void debug_sub_803F55C() +{ + 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, #0xffffffc4\n" + " add r5, r0, #0\n" + " mov r1, #0x39\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x1c]\n" + " add r0, r5, #0\n" + " mov r1, #0x27\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " add r7, r0, #0\n" + " add r0, r5, #0\n" + " mov r1, #0x1a\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " add r4, r0, #0\n" + " add r0, r5, #0\n" + " mov r1, #0x28\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " mov r9, r0\n" + " add r0, r5, #0\n" + " mov r1, #0x1b\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " mov r8, r0\n" + " add r0, r5, #0\n" + " mov r1, #0x29\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x20]\n" + " add r0, r5, #0\n" + " mov r1, #0x1c\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " mov sl, r0\n" + " add r0, r5, #0\n" + " mov r1, #0x2a\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x24]\n" + " add r0, r5, #0\n" + " mov r1, #0x1d\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x28]\n" + " add r0, r5, #0\n" + " mov r1, #0x2b\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x2c]\n" + " add r0, r5, #0\n" + " mov r1, #0x1e\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x30]\n" + " add r0, r5, #0\n" + " mov r1, #0x2c\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x34]\n" + " add r0, r5, #0\n" + " mov r1, #0x1f\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x38]\n" + " add r0, r5, #0\n" + " mov r1, #0xb\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " lsl r0, r0, #0x10\n" + " lsr r6, r0, #0x10\n" + " add r0, r5, #0\n" + " bl GetLevelFromMonExp\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " mov r1, #0x38\n" + " mov r2, sp\n" + " bl SetMonData\n" + " ldr r0, ._71\n" + " cmp r6, r0\n" + " bne ._69 @cond_branch\n" + " mov r0, #0x1\n" + " str r0, [sp, #0x4]\n" + " lsl r7, r6, #0x3\n" + " b ._70\n" + "._72:\n" + " .align 2, 0\n" + "._71:\n" + " .word 0x12f\n" + "._69:\n" + " ldr r1, ._80\n" + " lsl r2, r6, #0x3\n" + " sub r0, r2, r6\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x1\n" + " add r1, r0, r7\n" + " add r0, r4, #0\n" + " add r7, r2, #0\n" + " cmp r0, #0\n" + " bge ._73 @cond_branch\n" + " add r0, r0, #0x3\n" + "._73:\n" + " asr r0, r0, #0x2\n" + " add r0, r1, r0\n" + " ldr r4, [sp]\n" + " mul r0, r0, r4\n" + " mov r1, #0x64\n" + " bl gScriptFuncs_End+0x3d30\n" + " add r0, r0, r4\n" + " add r0, r0, #0xa\n" + " str r0, [sp, #0x4]\n" + "._70:\n" + " add r2, sp, #0x4\n" + " add r0, r5, #0\n" + " mov r1, #0x3a\n" + " bl SetMonData\n" + " ldr r1, ._80\n" + " sub r0, r7, r6\n" + " lsl r0, r0, #0x2\n" + " add r6, r0, r1\n" + " ldrb r0, [r6, #0x1]\n" + " lsl r0, r0, #0x1\n" + " mov r2, r9\n" + " add r1, r0, r2\n" + " mov r0, r8\n" + " cmp r0, #0\n" + " bge ._74 @cond_branch\n" + " add r0, r0, #0x3\n" + "._74:\n" + " asr r0, r0, #0x2\n" + " add r0, r1, r0\n" + " ldr r1, [sp]\n" + " mul r0, r0, r1\n" + " mov r1, #0x64\n" + " bl gScriptFuncs_End+0x3d30\n" + " add r0, r0, #0x5\n" + " str r0, [sp, #0x8]\n" + " add r0, r5, #0\n" + " bl GetNature\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r4, sp, #0x8\n" + " ldrh r1, [r4]\n" + " mov r2, #0x1\n" + " bl nature_stat_mod\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " str r0, [sp, #0x8]\n" + " add r0, r5, #0\n" + " mov r1, #0x3b\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " ldrb r0, [r6, #0x2]\n" + " lsl r0, r0, #0x1\n" + " ldr r2, [sp, #0x20]\n" + " add r1, r0, r2\n" + " mov r0, sl\n" + " cmp r0, #0\n" + " bge ._75 @cond_branch\n" + " add r0, r0, #0x3\n" + "._75:\n" + " asr r0, r0, #0x2\n" + " add r0, r1, r0\n" + " ldr r1, [sp]\n" + " mul r0, r0, r1\n" + " mov r1, #0x64\n" + " bl gScriptFuncs_End+0x3d30\n" + " add r0, r0, #0x5\n" + " str r0, [sp, #0xc]\n" + " add r0, r5, #0\n" + " bl GetNature\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r4, sp, #0xc\n" + " ldrh r1, [r4]\n" + " mov r2, #0x2\n" + " bl nature_stat_mod\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " str r0, [sp, #0xc]\n" + " add r0, r5, #0\n" + " mov r1, #0x3c\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " ldrb r0, [r6, #0x3]\n" + " lsl r0, r0, #0x1\n" + " ldr r2, [sp, #0x24]\n" + " add r1, r0, r2\n" + " ldr r0, [sp, #0x28]\n" + " cmp r0, #0\n" + " bge ._76 @cond_branch\n" + " add r0, r0, #0x3\n" + "._76:\n" + " asr r0, r0, #0x2\n" + " add r0, r1, r0\n" + " ldr r1, [sp]\n" + " mul r0, r0, r1\n" + " mov r1, #0x64\n" + " bl gScriptFuncs_End+0x3d30\n" + " add r0, r0, #0x5\n" + " str r0, [sp, #0x10]\n" + " add r0, r5, #0\n" + " bl GetNature\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r4, sp, #0x10\n" + " ldrh r1, [r4]\n" + " mov r2, #0x3\n" + " bl nature_stat_mod\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " str r0, [sp, #0x10]\n" + " add r0, r5, #0\n" + " mov r1, #0x3d\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " ldrb r0, [r6, #0x4]\n" + " lsl r0, r0, #0x1\n" + " ldr r2, [sp, #0x2c]\n" + " add r1, r0, r2\n" + " ldr r0, [sp, #0x30]\n" + " cmp r0, #0\n" + " bge ._77 @cond_branch\n" + " add r0, r0, #0x3\n" + "._77:\n" + " asr r0, r0, #0x2\n" + " add r0, r1, r0\n" + " ldr r1, [sp]\n" + " mul r0, r0, r1\n" + " mov r1, #0x64\n" + " bl gScriptFuncs_End+0x3d30\n" + " add r0, r0, #0x5\n" + " str r0, [sp, #0x14]\n" + " add r0, r5, #0\n" + " bl GetNature\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r4, sp, #0x14\n" + " ldrh r1, [r4]\n" + " mov r2, #0x4\n" + " bl nature_stat_mod\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " str r0, [sp, #0x14]\n" + " add r0, r5, #0\n" + " mov r1, #0x3e\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " ldrb r0, [r6, #0x5]\n" + " lsl r0, r0, #0x1\n" + " ldr r1, [sp, #0x34]\n" + " add r2, r0, r1\n" + " ldr r0, [sp, #0x38]\n" + " cmp r0, #0\n" + " bge ._78 @cond_branch\n" + " add r0, r0, #0x3\n" + "._78:\n" + " asr r0, r0, #0x2\n" + " add r0, r2, r0\n" + " ldr r1, [sp]\n" + " mul r0, r0, r1\n" + " mov r1, #0x64\n" + " bl gScriptFuncs_End+0x3d30\n" + " add r0, r0, #0x5\n" + " str r0, [sp, #0x18]\n" + " add r0, r5, #0\n" + " bl GetNature\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r4, sp, #0x18\n" + " ldrh r1, [r4]\n" + " mov r2, #0x5\n" + " bl nature_stat_mod\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " str r0, [sp, #0x18]\n" + " add r0, r5, #0\n" + " mov r1, #0x3f\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " ldr r1, [sp, #0x4]\n" + " ldr r0, [sp, #0x1c]\n" + " cmp r1, r0\n" + " bge ._79 @cond_branch\n" + " str r1, [sp, #0x1c]\n" + "._79:\n" + " add r2, sp, #0x1c\n" + " add r0, r5, #0\n" + " mov r1, #0x39\n" + " bl SetMonData\n" + " add sp, sp, #0x3c\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" + "._81:\n" + " .align 2, 0\n" + "._80:\n" + " .word gBaseStats\n" + "\n" + ); +} +#endif + void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest) { u32 value = 0; diff --git a/src/rom3.c b/src/rom3.c index 11239a681..2b719d14a 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -67,6 +67,10 @@ void sub_800B858(void) } } +#ifdef DEBUG +extern u8 gUnknown_02023A14_50; +#endif + void setup_poochyena_battle(void) { s32 i; @@ -93,6 +97,16 @@ void setup_poochyena_battle(void) } gUnknown_020239FC = 0; gUnknown_02024C78 = 0; + +#ifdef DEBUG + if (gUnknown_02023A14_50 & 0x80) + { + ewram[0x160fd] = 0; + ewram[0x160fe] = 0; + ewram[0x160ff] = 0; + ((u32 *) gBattleBuffersTransferData)[64]++; + } +#endif } void sub_800B950(void) diff --git a/src/rom6.c b/src/rom6.c index e71484b0a..1c0654538 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -1,4 +1,6 @@ #include "global.h" +#include "constants/map_objects.h" +#include "constants/songs.h" #include "rom6.h" #include "braille_puzzles.h" #include "field_effect.h" @@ -8,7 +10,6 @@ #include "pokemon_menu.h" #include "overworld.h" #include "script.h" -#include "constants/songs.h" #include "sound.h" #include "sprite.h" #include "task.h" @@ -116,6 +117,21 @@ static void sub_810B4CC(u8 taskId) DestroyTask(taskId); } +#ifdef DEBUG +void debug_sub_8120968(void) +{ + if (npc_before_player_of_type(MAP_OBJ_GFX_BREAKABLE_ROCK) == TRUE) + { + gLastFieldPokeMenuOpened = 0; + sub_810B53C(); + } + else + { + ScriptContext2_Disable(); + } +} +#endif + bool8 SetUpFieldMove_RockSmash(void) { if (npc_before_player_of_type(0x56) == TRUE) diff --git a/src/roulette.c b/src/roulette.c index 6d79f9d38..ce95bc1c9 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -308,7 +308,10 @@ extern const u16 gUnknown_083FA632[]; extern const s8 gUnknown_083FA64A[0x2]; extern const s8 gUnknown_083FA64C[0x8][0x2]; - +#if DEBUG +EWRAM_DATA u8 unk_203955C[4] = { 0 }; +EWRAM_DATA u8 unk_2039560[4] = { 0 }; +#endif void sub_81150FC(void) diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index d8e099130..4bf0cef09 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -6,6 +6,7 @@ #include "palette.h" #include "random.h" #include "main.h" +#include "menu.h" #include "script.h" #include "task.h" #include "sound.h" @@ -102,6 +103,31 @@ static void sub_81248AC(u8); // .rodata +#if DEBUG + +u8 debug_sub_8138D74(void); +u8 debug_sub_8138D8C(void); +u8 debug_sub_8138C14(void); +u8 debug_sub_8138C34(void); +u8 debug_sub_810CD9C(void); + +const u8 Str_842DBD0[] = _("CABLE CAR U"); +const u8 Str_842DBDC[] = _("CABLE CAR D"); +const u8 Str_842DBE8[] = _("ROULETTE1"); +const u8 Str_842DBF2[] = _("ROULETTE3"); +const u8 Str_842DBFC[] = _("View a MAIL"); + +const struct MenuAction gUnkDebug4Menu[] = +{ + {Str_842DBD0, debug_sub_8138D74}, + {Str_842DBDC, debug_sub_8138D8C}, + {Str_842DBE8, debug_sub_8138C14}, + {Str_842DBF2, debug_sub_8138C34}, + {Str_842DBFC, debug_sub_810CD9C}, +}; + +#endif + static const u8 gCableCarMtChimneyTilemap[] = INCBIN_U8("graphics/misc/cable_car_mt_chimney_map.bin.lz"); static const u8 gCableCarTreeTilemap[] = INCBIN_U8("graphics/misc/cable_car_tree_map.bin.lz"); @@ -182,6 +208,158 @@ static const struct SpriteTemplate gSpriteTemplate_8401D40[] = { // .text +#if DEBUG + +__attribute__((naked)) +u8 debug_sub_8138C14(void) +{ + asm("\n\ + push {lr}\n\ + ldr r0, ._1\n\ + mov r1, #0x1\n\ + strb r1, [r0]\n\ + ldr r0, ._1 + 4\n\ + bl ScriptContext1_SetupScript\n\ + bl CloseMenu\n\ + mov r0, #0x1\n\ + pop {r1}\n\ + bx r1\n\ +._2:\n\ + .align 2, 0\n\ +._1:\n\ + .word unk_203955C\n\ + .word MauvilleCity_GameCorner_EventScript_1C407E"); +} + +__attribute__((naked)) +u8 debug_sub_8138C34(void) +{ + asm("\n\ + push {lr}\n\ + ldr r0, ._3\n\ + mov r1, #0x1\n\ + strb r1, [r0]\n\ + ldr r0, ._3 + 4\n\ + bl ScriptContext1_SetupScript\n\ + bl CloseMenu\n\ + mov r0, #0x1\n\ + pop {r1}\n\ + bx r1\n\ +._4:\n\ + .align 2, 0\n\ +._3:\n\ + .word unk_203955C\n\ + .word MauvilleCity_GameCorner_EventScript_1C40AC"); +} + +__attribute__((naked)) +u8 debug_sub_8138C54(void) +{ + asm("\n\ + push {r4, lr}\n\ + ldr r4, ._10\n\ + ldrh r0, [r4, #0x2e]\n\ + cmp r0, #0x40\n\ + bne ._5 @cond_branch\n\ + mov r0, #0x1\n\ + neg r0, r0\n\ + bl Menu_MoveCursor\n\ +._5:\n\ + ldrh r0, [r4, #0x2e]\n\ + cmp r0, #0x80\n\ + bne ._6 @cond_branch\n\ + mov r0, #0x1\n\ + bl Menu_MoveCursor\n\ +._6:\n\ + ldrh r1, [r4, #0x2e]\n\ + cmp r1, #0x1\n\ + beq ._7 @cond_branch\n\ + ldr r0, ._10 + 4\n\ + cmp r1, r0\n\ + bne ._8 @cond_branch\n\ + ldr r1, ._10 + 8\n\ + mov r0, #0x1\n\ + strh r0, [r1]\n\ +._7:\n\ + ldr r4, ._10 + 12\n\ + bl Menu_GetCursorPos\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x15\n\ + add r4, r4, #0x4\n\ + add r0, r0, r4\n\ + ldr r0, [r0]\n\ + bl _call_via_r0\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + b ._13\n\ +._11:\n\ + .align 2, 0\n\ +._10:\n\ + .word gMain\n\ + .word 0x101\n\ + .word gSpecialVar_0x8004\n\ + .word gUnkDebug4Menu\n\ +._8:\n\ + cmp r1, #0x2\n\ + beq ._12 @cond_branch\n\ + mov r0, #0x0\n\ + b ._13\n\ +._12:\n\ + bl CloseMenu\n\ + mov r0, #0x1\n\ +._13:\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1"); +} + +__attribute__((naked)) +u8 debug_sub_8138CC4(void) +{ + asm("\n\ + push {lr}\n\ + add sp, sp, #0xfffffff8\n\ + ldr r1, ._14\n\ + mov r0, #0x0\n\ + strh r0, [r1]\n\ + bl Menu_EraseScreen\n\ + mov r0, #0x13\n\ + mov r1, #0x0\n\ + mov r2, #0x1d\n\ + mov r3, #0xc\n\ + bl Menu_DrawStdWindowFrame\n\ + ldr r3, ._14 + 4\n\ + mov r0, #0x14\n\ + mov r1, #0x1\n\ + mov r2, #0x5\n\ + bl Menu_PrintItems\n\ + mov r0, #0x0\n\ + str r0, [sp]\n\ + mov r0, #0x8\n\ + str r0, [sp, #0x4]\n\ + mov r0, #0x0\n\ + mov r1, #0x14\n\ + mov r2, #0x1\n\ + mov r3, #0x5\n\ + bl InitMenu\n\ + ldr r1, ._14 + 8\n\ + ldr r0, ._14 + 12\n\ + str r0, [r1]\n\ + mov r0, #0x0\n\ + add sp, sp, #0x8\n\ + pop {r1}\n\ + bx r1\n\ +._15:\n\ + .align 2, 0\n\ +._14:\n\ + .word gSpecialVar_0x8004\n\ + .word gUnkDebug4Menu\n\ + .word gCallback_03004AE8\n\ + .word debug_sub_8138C54+1"); +} + +#endif + static void CableCarTask1(u8 taskId) { if (!gPaletteFade.active) @@ -198,6 +376,46 @@ void CableCar(void) BeginNormalPaletteFade(-1, 0, 0, 16, 0); } +#if DEBUG + +__attribute__((naked)) +u8 debug_sub_8138D74(void) +{ + asm("\n\ + push {lr}\n\ + ldr r1, ._21\n\ + mov r0, #0x0\n\ + strh r0, [r1]\n\ + bl CloseMenu\n\ + bl CableCar\n\ + pop {r0}\n\ + bx r0\n\ +._22:\n\ + .align 2, 0\n\ +._21:\n\ + .word gSpecialVar_0x8004"); +} + +__attribute__((naked)) +u8 debug_sub_8138D8C(void) +{ + asm("\n\ + push {lr}\n\ + ldr r1, ._23\n\ + mov r0, #0x1\n\ + strh r0, [r1]\n\ + bl CloseMenu\n\ + bl CableCar\n\ + pop {r0}\n\ + bx r0\n\ +._24:\n\ + .align 2, 0\n\ +._23:\n\ + .word gSpecialVar_0x8004"); +} + +#endif + static void CableCarMainCallback_Setup(void) { u8 i; diff --git a/src/scene/new_game.c b/src/scene/new_game.c index 0279f99c6..d954fb3c8 100644 --- a/src/scene/new_game.c +++ b/src/scene/new_game.c @@ -1,4 +1,7 @@ #include "global.h" +#include "constants/maps.h" +#include "constants/species.h" +#include "clock.h" #include "new_game.h" #include "battle_records.h" #include "berry.h" @@ -20,6 +23,7 @@ #include "pokemon_storage_system.h" #include "random.h" #include "roamer.h" +#include "script_pokemon_80C4.h" #include "overworld.h" #include "rtc.h" #include "script.h" @@ -27,6 +31,10 @@ #include "text.h" #include "tv.h" +#ifdef DEBUG +extern u8 gUnknown_020297ED; +#endif + EWRAM_DATA u8 gDifferentSaveFile = 0; EWRAM_DATA u8 gUnknown_020297ED = 0; @@ -42,6 +50,18 @@ static const struct ContestWinner sEmptyMuseumPortrait = .trainerName = {EOS}, }; +#ifdef DEBUG +const s8 gUnknown_Debug_0823C788[][2] = +{ + { MAP_GROUP(INSIDE_OF_TRUCK), MAP_NUM(INSIDE_OF_TRUCK) }, + { MAP_GROUP(OLDALE_TOWN_POKEMON_CENTER_2F), MAP_NUM(OLDALE_TOWN_POKEMON_CENTER_2F) }, + { MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN) }, + { MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F) } +}; + +const u8 gUnknown_Debug_0823C790[] = _("KRÖTE"); +#endif + void write_word_to_mem(u32 var, u8 *dataPtr) { dataPtr[0] = var; @@ -94,6 +114,30 @@ void ZeroBattleTowerData(void) CpuFill32(0, &gSaveBlock2.battleTower, sizeof(gSaveBlock2.battleTower)); } +#ifdef DEBUG +void debug_sub_8052E04() +{ + u8 i; + + for (i = 0; i < 4; i++) + { + if (gUnknown_Debug_0823C788[i][0] == gSaveBlock1.location.mapGroup && + gUnknown_Debug_0823C788[i][1] == gSaveBlock1.location.mapNum) + { + break; + } + } + + i++; + if (i >= 4) + { + i = 0; + } + + Overworld_SetWarpDestination(gUnknown_Debug_0823C788[i][0], gUnknown_Debug_0823C788[i][1], -1, -1, -1); +} +#endif + void WarpToTruck(void) { Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck @@ -109,6 +153,9 @@ void ClearSav2(void) void sub_8052E4C(void) { gDifferentSaveFile = 0; +#ifdef DEBUG + gUnknown_020297ED = 0; +#endif sub_808C0A0(); ZeroPlayerPartyMons(); ZeroEnemyPartyMons(); @@ -161,3 +208,33 @@ void NewGameInitData(void) WarpToTruck(); ScriptContext2_RunNewScript(gUnknown_0819FA81); } + +#ifdef DEBUG +extern void debug_sub_80A3904(void); +extern void debug_sub_80A3714(void); +extern void debug_sub_8120F98(void); +extern void unref_sub_8070F90(void); + +void debug_sub_8057508(bool32 arg0) +{ + gUnknown_020297ED = 1; + NewGameInitData(); + gSaveBlock1.money = 999999; + FlagSet(FLAG_SYS_POKEMON_GET); + FlagSet(FLAG_SYS_POKEDEX_GET); + FlagSet(FLAG_SYS_POKENAV_GET); + FlagSet(FLAG_SYS_B_DASH); + ScriptGiveMon(SPECIES_TREECKO, 99, 0, 0, 0, 0); + + if (arg0 == TRUE) + SetMonData(&gPlayerParty[0], MON_DATA_NICKNAME, gUnknown_Debug_0823C790); + + debug_sub_80A3904(); + debug_sub_80A3714(); + debug_sub_8120F98(); + FlagSet(FLAG_SYS_HIPSTER_MEET); + sub_80EB8EC(); + unref_sub_8070F90(); + InitTimeBasedEvents(); +} +#endif diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index 202b752a6..8d5c4da13 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -8,6 +8,7 @@ #include "m4a.h" #include "main.h" #include "main_menu.h" +#include "overworld.h" #include "palette.h" #include "reset_rtc_screen.h" #include "sound.h" @@ -353,6 +354,7 @@ static void Task_TitleScreenPhase1(u8); static void Task_TitleScreenPhase2(u8); static void Task_TitleScreenPhase3(u8); static void CB2_GoToMainMenu(void); +static void CB2_GoToTestMenu(void); static void CB2_GoToClearSaveDataScreen(void); static void CB2_GoToResetRtcScreen(void); static void CB2_GoToCopyrightScreen(void); @@ -829,6 +831,13 @@ static void Task_TitleScreenPhase3(u8 taskId) BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); SetMainCallback2(CB2_GoToResetRtcScreen); } +#ifdef DEBUG + else if (gMain.heldKeys == SELECT_BUTTON) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + SetMainCallback2(CB2_GoToTestMenu); + } +#endif else { REG_BG2Y = 0; @@ -855,6 +864,14 @@ static void CB2_GoToMainMenu(void) SetMainCallback2(CB2_InitMainMenu); } +#ifdef DEBUG +static void CB2_GoToTestMenu(void) +{ + if (!UpdatePaletteFade()) + SetMainCallback2(CB2_InitTestMenu); +} +#endif + static void CB2_GoToCopyrightScreen(void) { if (!UpdatePaletteFade()) |