diff options
author | Cameron Hall <cameronghall@cox.net> | 2018-01-24 00:58:38 -0600 |
---|---|---|
committer | Cameron Hall <cameronghall@cox.net> | 2018-01-24 00:58:38 -0600 |
commit | dbcf1ce9cb124e303e6bed3fecede7a72b8000f2 (patch) | |
tree | db77f54c5094e49d5bf37743f3434bdf1651e8d6 | |
parent | d972f2af82d805b53bb4b93759fb3ba445b1ce78 (diff) |
integrate some debug differences
-rw-r--r-- | include/link.h | 1 | ||||
-rw-r--r-- | src/battle/battle_2.c | 2095 | ||||
-rw-r--r-- | src/engine/cable_club.c | 42 | ||||
-rw-r--r-- | src/engine/link.c | 2 |
4 files changed, 152 insertions, 1988 deletions
diff --git a/include/link.h b/include/link.h index 21bb0b780..ecebb586a 100644 --- a/include/link.h +++ b/include/link.h @@ -195,5 +195,6 @@ void LinkVSync(void); void Timer3Intr(void); void SerialCB(void); void LinkTestScreen(void); +void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0); #endif // GUARD_LINK_H diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 6808ad61c..64b64ecea 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -14,6 +14,7 @@ #include "main.h" #include "m4a.h" #include "name_string_util.h" +#include "overworld.h" #include "palette.h" #include "party_menu.h" #include "pokeball.h" @@ -64,6 +65,9 @@ struct UnknownStruct12 u8 filler4[0x54]; }; +void debug_sub_80139E4(void); +extern u8 gUnknown_02023A14_50; + extern const u16 gUnknown_08D004E0[]; extern const struct MonCoords gCastformFrontSpriteCoords[]; @@ -203,231 +207,6 @@ 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 CpuSet\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 ScanlineEffect_Clear\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 ScanlineEffect_SetParams\n" - " ldr r4, ._10 + 32\n" - " add r0, r4, #0\n" - " bl Text_LoadWindowTemplate\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 BattleSetup_GetTerrain\n" - " ldr r1, ._10 + 72\n" - " strb r0, [r1]\n" - "._7:\n" - " ldr r0, ._10 + 76\n" - " add r1, r4, #0\n" - " bl Text_InitWindowWithTemplate\n" - " ldr r0, ._10 + 80\n" - " ldr r1, ._10 + 84\n" - " bl Text_InitWindowWithTemplate\n" - " ldr r0, ._10 + 88\n" - " ldr r1, ._10 + 92\n" - " bl Text_InitWindowWithTemplate\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 gBattle_WIN0H\n" - " .word gBattle_WIN0V\n" - " .word gScanlineEffectRegBuffers\n" - " .word gUnknown_081F9674\n" - " .word 0xff10\n" - " .word gWindowTemplate_81E6C58\n" - " .word gBattle_BG0_X\n" - " .word gBattle_BG0_Y\n" - " .word gBattle_BG1_X\n" - " .word gBattle_BG1_Y\n" - " .word gBattle_BG2_X\n" - " .word gBattle_BG2_Y\n" - " .word gBattle_BG3_X\n" - " .word gBattle_BG3_Y\n" - " .word gUnknown_02023A14_50\n" - " .word gBattleTerrain\n" - " .word gUnknown_03004210\n" - " .word gUnknown_030041D0\n" - " .word gWindowTemplate_81E71D0\n" - " .word gUnknown_03004250\n" - " .word gWindowTemplate_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_50\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; @@ -469,7 +248,14 @@ void InitBattle(void) gBattle_BG2_Y = 0; gBattle_BG3_X = 0; gBattle_BG3_Y = 0; + +#if DEBUG + if (!(gUnknown_02023A14_50 & 8)) + gBattleTerrain = BattleSetup_GetTerrain(); +#else gBattleTerrain = BattleSetup_GetTerrain(); +#endif + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0); Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC); @@ -486,7 +272,11 @@ void InitBattle(void) SetMainCallback2(sub_800F298); else SetMainCallback2(sub_800EC9C); - if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) +#if DEBUG + && !(gUnknown_02023A14_50 & 8) +#endif + ) { CreateNPCTrainerParty(gEnemyParty, gTrainerBattleOpponent); SetWildMonHeldItem(); @@ -496,7 +286,6 @@ void InitBattle(void) AdjustFriendship(&gPlayerParty[i], 3); gBattleCommunication[0] = 0; } -#endif void sub_800E9EC(void) { @@ -605,480 +394,11 @@ 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 gSharedMem\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 gSharedMem\n" - " .word gUnknown_02023A14_50\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 gSharedMem\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 memcpy\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 memcpy\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 memcpy\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 BattleMainCB2+1\n" - " .word gBattleTypeFlags\n" - " .word gTrainerBattleOpponent\n" - "\n" - ); -} -#else void sub_800EC9C(void) { u8 playerId; u8 enemyId; + s32 id; RunTasks(); AnimateSprites(); @@ -1098,6 +418,16 @@ void sub_800EC9C(void) gBattleStruct->unk1 = 1; sub_800E9EC(); sub_800EAAC(); +#if DEBUG + if (gUnknown_02023A14_50 & 8) + { + for (id = 0; id < 2; id++) // Why < 2 here? + { + gLinkPlayers[id].lp_field_18 = id; + gLinkPlayers[id].linkType = 0x2211; + } + } +#endif SendBlock(bitmask_all_link_players_but_self(), gBattleStruct, 32); gBattleCommunication[0] = 1; } @@ -1112,7 +442,6 @@ void sub_800EC9C(void) case 1: if ((GetBlockReceivedStatus() & 3) == 3) { - s32 id; u8 taskId; ResetBlockReceivedFlags(); @@ -1220,7 +549,11 @@ void sub_800EC9C(void) if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0) { gPreBattleCallback1 = gMain.callback1; +#if DEBUG + gMain.callback1 = debug_sub_80139E4; +#else gMain.callback1 = sub_8010824; +#endif SetMainCallback2(BattleMainCB2); if (gBattleTypeFlags & BATTLE_TYPE_LINK) { @@ -1231,7 +564,6 @@ void sub_800EC9C(void) break; } } -#endif void sub_800F02C(void) { @@ -1258,241 +590,12 @@ void sub_800F02C(void) memcpy(gSharedMem, gUnknown_02023A00, 0x60); } -#if 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 gSharedMem\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_50\n" - " .word 0x2211\n" - " .word gLinkPlayers\n" - " .word gSharedMem\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 memcpy\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; MainCallback *pSavedCallback; u16 *pSavedBattleTypeFlags; + s32 i; playerId = GetMultiplayerId(); ewram160CB = playerId; @@ -1506,17 +609,30 @@ void sub_800F104(void) switch (gBattleCommunication[0]) { case 0: - if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) + if (gReceivedRemoteLinkPlayers != 0) { - sub_800F02C(); - SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x60); - gBattleCommunication[0]++; +#if DEBUG + if (gUnknown_02023A14_50 & 8) + { + for (i = 0; i < 4; i++) + { + gLinkPlayers[i].lp_field_18 = i; + gLinkPlayers[i].linkType = 0x2211; + } + } +#endif + if (sub_8007ECC()) + { + sub_800F02C(); + SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x60); + gBattleCommunication[0]++; + } } break; case 1: if ((GetBlockReceivedStatus() & 0xF) == 0xF) { - s32 i; + //s32 i; ResetBlockReceivedFlags(); for (i = 0; i < 4; i++) @@ -1552,774 +668,7 @@ void sub_800F104(void) break; } } -#endif -#if 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 gSharedMem\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_50\n" - " .word 0x2211\n" - " .word gLinkPlayers\n" - " .word gSharedMem\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 memcpy\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 memcpy\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 memcpy\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 memcpy\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 memcpy\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 BattleMainCB2+1\n" - " .word gBattleTypeFlags\n" - " .word gTrainerBattleOpponent\n" - "\n" - ); -} -#else void sub_800F298(void) { u8 playerId; @@ -2333,14 +682,27 @@ void sub_800F298(void) switch (gBattleCommunication[0]) { case 0: - if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) + if (gReceivedRemoteLinkPlayers != 0) { - gBattleStruct->unk0 = 1; - gBattleStruct->unk1 = 1; - sub_800E9EC(); - sub_800EAAC(); - SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x20); - gBattleCommunication[0]++; +#if DEBUG + if (gUnknown_02023A14_50 & 8) + { + for (id = 0; id < 4; id++) + { + gLinkPlayers[id].lp_field_18 = id; + gLinkPlayers[id].linkType = 0x2211; + } + } +#endif + if (sub_8007ECC()) + { + gBattleStruct->unk0 = 1; + gBattleStruct->unk1 = 1; + sub_800E9EC(); + sub_800EAAC(); + SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x20); + gBattleCommunication[0]++; + } } break; case 1: @@ -2576,7 +938,12 @@ void sub_800F298(void) if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0) { gPreBattleCallback1 = gMain.callback1; + // debug +#if DEBUG + gMain.callback1 = debug_sub_80139E4; +#else gMain.callback1 = sub_8010824; +#endif SetMainCallback2(BattleMainCB2); if (gBattleTypeFlags & BATTLE_TYPE_LINK) { @@ -2587,128 +954,38 @@ 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 m4aSongNumStop\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 gSpecialVar_Result\n" - " .word gBattleOutcome\n" - " .word 0x43d\n" - " .word gScanlineEffect\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 Text_UpdateWindowInBattle\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(); BuildOamBuffer(); + +#if DEBUG + if ((gMain.heldKeys & (R_BUTTON | SELECT_BUTTON)) == ((R_BUTTON | SELECT_BUTTON))) + { + gSpecialVar_Result = gBattleOutcome = 1; + gMain.inBattle = FALSE; + gScanlineEffect.state = 3; + gMain.callback1 = gPreBattleCallback1; + ZeroEnemyPartyMons(); + m4aSongNumStop(0x5A); + if (gBattleTypeFlags & 2) + SetMainCallback2(sub_805465C); + else + SetMainCallback2(gMain.savedCallback); + } + if (gBattleTypeFlags & 2) + { + debug_sub_8008264((gBattleTypeFlags >> 2) % 2, 1, 1, 1, 1); + debug_sub_8008264((gBattleTypeFlags >> 2) % 2, 1, 21, 1, 1); + debug_sub_8008264((gBattleTypeFlags >> 2) % 2, 1, 41, 1, 1); + } +#endif + Text_UpdateWindowInBattle(&gUnknown_03004210); UpdatePaletteFade(); RunTasks(); } -#endif void sub_800F828(struct Sprite *sprite) { @@ -3084,24 +1361,19 @@ void c2_081284E0(void) // A LOT of debug code! #if DEBUG -__attribute__((naked)) -void debug_sub_8010800() + +extern u8 gBattleBuffersTransferData[]; + +void debug_sub_8010818(void); +void debug_sub_80108B8(void); +void debug_sub_8011EA0(u8); +void debug_sub_8012294(void); + +void debug_sub_8010800(void) { - 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" - ); + debug_sub_8010818(); + debug_sub_80108B8(); + *(u32 *)(gBattleBuffersTransferData + 0x100) = 0; } __attribute__((naked)) @@ -5849,133 +4121,54 @@ void debug_sub_8011D40() ); } -__attribute__((naked)) void debug_nullsub_45() { - asm( - " bx lr\n" - "\n" - ); } -__attribute__((naked)) -void debug_sub_8011DD4() +void debug_sub_8011DD4(void) { - 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 ScanlineEffect_InitHBlankDmaTransfer\n" - " pop {r0}\n" - " bx r0\n" - "._777:\n" - " .align 2, 0\n" - "._776:\n" - " .word 0x4000008\n" - " .word 0x9803\n" - " .word gBattle_BG0_X\n" - " .word gBattle_BG0_Y\n" - " .word gBattle_BG1_X\n" - " .word gBattle_BG1_Y\n" - " .word gBattle_BG2_X\n" - " .word gBattle_BG2_Y\n" - " .word gBattle_BG3_X\n" - " .word gBattle_BG3_Y\n" - "\n" - ); + REG_BG0CNT = 0x9803; + + REG_BG0HOFS = gBattle_BG0_X; + REG_BG0VOFS = gBattle_BG0_Y; + + REG_BG1HOFS = gBattle_BG1_X; + REG_BG1VOFS = gBattle_BG1_Y; + + REG_BG2HOFS = gBattle_BG2_X; + REG_BG2VOFS = gBattle_BG2_Y; + + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; + + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + ScanlineEffect_InitHBlankDmaTransfer(); } -__attribute__((naked)) -void debug_sub_8011E5C() +void debug_sub_8011E5C(void) { - 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" - ); + s32 i; + + for (i = 0; i < 31; i++) + debug_sub_8011EA0(i); } -__attribute__((naked)) -void debug_sub_8011E74() +extern u8 gUnknown_Debug_030043A8; + +void debug_sub_8011E74(void) { - 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" - ); + u8 r5 = gUnknown_Debug_030043A8; + + for (gUnknown_Debug_030043A8 = 0; gUnknown_Debug_030043A8 < 4; gUnknown_Debug_030043A8++) + debug_sub_8012294(); + + gUnknown_Debug_030043A8 = r5; } __attribute__((naked)) -void debug_sub_8011EA0() +void debug_sub_8011EA0(u8 a) { asm( " push {r4, r5, r6, r7, lr}\n" diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index ed6929638..8f79944de 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -23,6 +23,7 @@ #include "text.h" #include "trainer_card.h" +extern u8 unk_2030220; extern u16 gSpecialVar_Result; extern struct TrainerCard gTrainerCards[4]; extern u8 gUnknown_03004860; @@ -1374,50 +1375,19 @@ void unref_sub_8083CC8(u8 taskId) #if DEBUG -__attribute__((naked)) -void debug_sub_808B82C() +void debug_sub_808B82C(void) { - asm("\ - ldr r1, ._400\n\ - mov r0, #0x0\n\ - strb r0, [r1]\n\ - bx lr\n\ -._401:\n\ - .align 2, 0\n\ -._400:\n\ - .word unk_2030220"); + unk_2030220 = 0; } -__attribute__((naked)) void debug_sub_808B838(u8 a) { - asm("\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldr r2, ._402\n\ - mov r1, #0x1\n\ - LSL r1, r0\n\ - ldrb r0, [r2]\n\ - orr r1, r1, r0\n\ - strb r1, [r2]\n\ - bx lr\n\ -._403:\n\ - .align 2, 0\n\ -._402:\n\ - .word unk_2030220"); + unk_2030220 |= 1 << a; } -__attribute__((naked)) -int debug_sub_808B850() +int debug_sub_808B850(void) { - asm("\ - ldr r0, ._404\n\ - ldrb r0, [r0]\n\ - bx lr\n\ -._405:\n\ - .align 2, 0\n\ -._404:\n\ - .word unk_2030220"); + return unk_2030220; } #endif
\ No newline at end of file diff --git a/src/engine/link.c b/src/engine/link.c index eb0ae4731..31311d345 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -1044,7 +1044,7 @@ void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0) } #else __attribute__((naked)) -void debug_sub_8008264() +void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0) { asm( " push {r4, r5, r6, r7, lr}\n" |