summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCameron Hall <cameronghall@cox.net>2018-01-24 00:58:38 -0600
committerCameron Hall <cameronghall@cox.net>2018-01-24 00:58:38 -0600
commitdbcf1ce9cb124e303e6bed3fecede7a72b8000f2 (patch)
treedb77f54c5094e49d5bf37743f3434bdf1651e8d6
parentd972f2af82d805b53bb4b93759fb3ba445b1ce78 (diff)
integrate some debug differences
-rw-r--r--include/link.h1
-rw-r--r--src/battle/battle_2.c2095
-rw-r--r--src/engine/cable_club.c42
-rw-r--r--src/engine/link.c2
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"