summaryrefslogtreecommitdiff
path: root/src/battle
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle')
-rw-r--r--src/battle/battle_2.c5933
-rw-r--r--src/battle/battle_4.c340
-rw-r--r--src/battle/battle_ai.c8
-rw-r--r--src/battle/battle_controller_opponent.c338
-rw-r--r--src/battle/battle_controller_player.c726
-rw-r--r--src/battle/battle_controller_safari.c12
-rw-r--r--src/battle/battle_interface.c31
-rw-r--r--src/battle/battle_records.c89
-rw-r--r--src/battle/battle_util.c324
9 files changed, 7634 insertions, 167 deletions
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index 2ad2adb04..2171c6ef6 100644
--- a/src/battle/battle_2.c
+++ b/src/battle/battle_2.c
@@ -1,5 +1,12 @@
#include "global.h"
#include "constants/abilities.h"
+#include "constants/battle_move_effects.h"
+#include "constants/hold_effects.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "gba/flash_internal.h"
#include "battle.h"
#include "battle_ai.h"
#include "battle_interface.h"
@@ -7,6 +14,7 @@
#include "battle_setup.h"
#include "battle_util.h"
#include "data2.h"
+#include "decompress.h"
#include "event_data.h"
#include "evolution_scene.h"
#include "item.h"
@@ -14,6 +22,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"
@@ -24,9 +33,7 @@
#include "rom3.h"
#include "rom_8077ABC.h"
#include "rom_8094928.h"
-#include "constants/songs.h"
#include "sound.h"
-#include "constants/species.h"
#include "sprite.h"
#include "string_util.h"
#include "task.h"
@@ -36,10 +43,6 @@
#include "tv.h"
#include "scanline_effect.h"
#include "util.h"
-#include "constants/battle_move_effects.h"
-#include "constants/items.h"
-#include "constants/hold_effects.h"
-#include "constants/moves.h"
#include "ewram.h"
struct UnknownStruct7
@@ -64,6 +67,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[];
@@ -244,7 +250,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);
@@ -261,7 +274,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();
@@ -383,6 +400,7 @@ void sub_800EC9C(void)
{
u8 playerId;
u8 enemyId;
+ s32 id;
RunTasks();
AnimateSprites();
@@ -402,6 +420,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;
}
@@ -416,7 +444,6 @@ void sub_800EC9C(void)
case 1:
if ((GetBlockReceivedStatus() & 3) == 3)
{
- s32 id;
u8 taskId;
ResetBlockReceivedFlags();
@@ -524,7 +551,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)
{
@@ -566,6 +597,7 @@ void sub_800F104(void)
u8 playerId;
MainCallback *pSavedCallback;
u16 *pSavedBattleTypeFlags;
+ s32 i;
playerId = GetMultiplayerId();
ewram160CB = playerId;
@@ -579,17 +611,30 @@ void sub_800F104(void)
switch (gBattleCommunication[0])
{
case 0:
- if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished())
+ 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 (IsLinkTaskFinished())
+ {
+ 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++)
@@ -639,14 +684,27 @@ void sub_800F298(void)
switch (gBattleCommunication[0])
{
case 0:
- if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished())
+ 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 (IsLinkTaskFinished())
+ {
+ gBattleStruct->unk0 = 1;
+ gBattleStruct->unk1 = 1;
+ sub_800E9EC();
+ sub_800EAAC();
+ SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x20);
+ gBattleCommunication[0]++;
+ }
}
break;
case 1:
@@ -882,7 +940,11 @@ void sub_800F298(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)
{
@@ -898,6 +960,29 @@ 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();
@@ -1275,6 +1360,5171 @@ void c2_081284E0(void)
}
}
+// A LOT of debug code!
+#if DEBUG
+
+void debug_sub_8010818(void);
+void debug_sub_80108B8(void);
+void debug_sub_8010CAC(void);
+void debug_sub_801174C(void);
+void debug_sub_8011D40(void);
+void debug_sub_8011EA0(u8);
+void debug_sub_8012294(void);
+void debug_sub_80123D8(u8);
+void debug_sub_8012540(void);
+void debug_sub_80125A0(void);
+void debug_nullsub_3(void);
+
+struct UnknownStruct2023A76
+{
+ u16 unk0;
+ u16 unk2[(0x44-2)/2];
+ s16 unk44;
+ u16 unk46;
+ u16 unk48[1];
+};
+
+struct UnknownStruct2023B02
+{
+ u16 unk0[4][4];
+ u8 filler20[0x10];
+ u16 unk30[4][4];
+};
+
+struct UnknownStruct821F424
+{
+ u8 filler0[0x12];
+ u16 unk12[1][5]; // unknown length
+};
+
+extern struct UnknownStruct2023A76 gUnknown_Debug_2023A76;
+extern struct UnknownStruct2023B02 gUnknown_Debug_2023B02;
+extern u8 gUnknown_Debug_03004360;
+extern struct Window gUnknown_Debug_03004370;
+extern u8 gUnknown_Debug_030043A0;
+extern u8 gUnknown_Debug_030043A4;
+extern u8 gUnknown_Debug_030043A8;
+extern u8 gBattleBuffersTransferData[];
+
+extern const struct UnknownStruct821F424 gUnknown_Debug_821F424;
+extern const u16 gUnknown_Debug_821F56C[][5];
+
+extern const u8 gUnusedOldCharmap_Gfx_lz[];
+extern const u8 gUnusedOldCharmap_Tilemap_lz[];
+extern const u8 gUnusedOldCharmap_Pal_lz[];
+
+void debug_sub_8010800(void)
+{
+ debug_sub_8010818();
+ debug_sub_80108B8();
+ *(u32 *)(gBattleBuffersTransferData + 0x100) = 0;
+}
+
+
+void debug_sub_8010818(void)
+{
+ s32 i;
+
+ gUnknown_Debug_2023A76.unk0 = 0x115;
+ gUnknown_Debug_2023A76.unk46 = 0x115;
+ for (i = 0; i < 30; i++)
+ {
+ gUnknown_Debug_2023A76.unk2[i] = gUnknown_Debug_821F424.unk12[i][0];
+ gUnknown_Debug_2023A76.unk48[i] = gUnknown_Debug_821F424.unk12[i][0];
+ }
+
+ for (i = 0; i < 6; i++)
+ {
+ for (gUnknown_Debug_030043A8 = 0; gUnknown_Debug_030043A8 < 4; gUnknown_Debug_030043A8++)
+ {
+ gUnknown_Debug_2023B02.unk0[i][gUnknown_Debug_030043A8] = gUnknown_Debug_821F56C[gUnknown_Debug_030043A8][0];
+ gUnknown_Debug_2023B02.unk30[i][gUnknown_Debug_030043A8] = gUnknown_Debug_821F56C[gUnknown_Debug_030043A8][0];
+ }
+ }
+}
+
+void debug_sub_80108B8(void)
+{
+ s32 i;
+
+ m4aSoundVSyncOff();
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ DmaFill32(3, 0, (void *)VRAM, VRAM_SIZE);
+ REG_IE = 1;
+ REG_DISPCNT = 0x1340;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ REG_BG0CNT = 0x1F09;
+ REG_BG1CNT = 0x4801;
+ REG_BLDCNT = 0;
+ REG_BLDY = 0;
+ LZDecompressVram(gUnusedOldCharmap_Gfx_lz, (void *)VRAM);
+ LZDecompressWram(gUnusedOldCharmap_Tilemap_lz, gSharedMem);
+ LZDecompressVram(gUnusedOldCharmap_Pal_lz, (void *)PLTT);
+ LZDecompressVram(gUnusedOldCharmap_Pal_lz, (void *)(PLTT + 0x1E0));
+ m4aSoundVSyncOn();
+ SetVBlankCallback(debug_sub_8011D40);
+ SetMainCallback2(debug_sub_8010CAC);
+ ResetTasks();
+ ResetSpriteData();
+ ScanlineEffect_Stop();
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
+ Text_InitWindowWithTemplate(&gUnknown_Debug_03004370, &gWindowTemplate_81E6C3C);
+ gUnknown_Debug_03004360 = 0;
+ gUnknown_Debug_030043A0 = 0;
+ gUnknown_Debug_030043A4 = 0;
+ for (i = 0; i < 31; i++)
+ debug_sub_8011EA0(i);
+ for (gUnknown_Debug_030043A8 = 0; gUnknown_Debug_030043A8 < 4; gUnknown_Debug_030043A8++)
+ debug_sub_8012294();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ debug_sub_8012540();
+ debug_nullsub_3();
+ gUnknown_Debug_030043A8 = 0;
+ debug_sub_80125A0();
+ if (gUnknown_Debug_2023A76.unk44 == 8)
+ {
+ debug_sub_801174C();
+ }
+ else
+ {
+ for (i = 0; i < 8; i++)
+ gSharedMem[0x160B4 + i] = 0;
+ }
+}
+
+// This function matches, but it somehow affects registers in SetActionsAndBanksTurnOrder.
+#ifdef NONMATCHING
+void debug_sub_8010A7C(u8 a, u8 b)
+{
+ s32 i;
+
+ for (i = 0; i < b; i++)
+ gBattleTextBuff1[i] = a;
+ gBattleTextBuff1[i] = EOS;
+}
+#else
+__attribute__((naked))
+void debug_sub_8010A7C()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r2, r1, #0x18\n"
+ " mov r1, #0x0\n"
+ " ldr r5, ._514\n"
+ " cmp r1, r2\n"
+ " bge ._512 @cond_branch\n"
+ " add r3, r5, #0\n"
+ "._513:\n"
+ " add r0, r1, r3\n"
+ " strb r4, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, r2\n"
+ " blt ._513 @cond_branch\n"
+ "._512:\n"
+ " add r1, r1, r5\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r1]\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._515:\n"
+ " .align 2, 0\n"
+ "._514:\n"
+ " .word gBattleTextBuff1\n"
+ "\n"
+ );
+}
+#endif
+
+/*
+void debug_sub_8010AAC(u8 a)
+{
+ u32 r7 = gUnknown_Debug_030043A4 * 5;
+}
+*/
+
+__attribute__((naked))
+void debug_sub_8010AAC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov ip, r0\n"
+ " ldr r6, ._520\n"
+ " ldr r4, ._520 + 4\n"
+ " ldr r5, ._520 + 8\n"
+ " ldrb r1, [r5]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r7, r0, r1\n"
+ " lsl r1, r7, #0x1\n"
+ " ldr r3, ._520 + 12\n"
+ " ldrb r2, [r3]\n"
+ " mov r0, #0x46\n"
+ " mul r2, r2, r0\n"
+ " add r1, r1, r2\n"
+ " add r1, r1, r4\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r1, r0]\n"
+ " lsl r0, r1, #0x3\n"
+ " sub r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " ldrb r0, [r0, #0x10]\n"
+ " add r6, r3, #0\n"
+ " cmp r0, #0xfe\n"
+ " beq ._516 @cond_branch\n"
+ " cmp r0, #0xfe\n"
+ " bgt ._517 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._518 @cond_branch\n"
+ " b ._523\n"
+ "._521:\n"
+ " .align 2, 0\n"
+ "._520:\n"
+ " .word gBaseStats\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004360\n"
+ "._517:\n"
+ " cmp r0, #0xff\n"
+ " beq ._522 @cond_branch\n"
+ " b ._523\n"
+ "._518:\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r2\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x2\n"
+ " b ._528\n"
+ "._516:\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r2\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x3\n"
+ " b ._528\n"
+ "._522:\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r2\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x4\n"
+ " b ._528\n"
+ "._523:\n"
+ " ldrb r0, [r5]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, #0x4\n"
+ " lsl r1, r1, #0x1\n"
+ " ldrb r0, [r6]\n"
+ " mov r3, #0x46\n"
+ " mul r0, r0, r3\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r4\n"
+ " ldrh r2, [r1]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r2\n"
+ " strh r0, [r1]\n"
+ " mov r1, ip\n"
+ " cmp r1, #0\n"
+ " beq ._527 @cond_branch\n"
+ " ldrb r1, [r5]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, #0x4\n"
+ " lsl r0, r0, #0x1\n"
+ " ldrb r1, [r6]\n"
+ " mul r1, r1, r3\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, r4\n"
+ " ldrh r1, [r0]\n"
+ " mov r2, #0x1\n"
+ " eor r1, r1, r2\n"
+ " b ._528\n"
+ "._527:\n"
+ " ldrb r1, [r5]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, #0x4\n"
+ " lsl r0, r0, #0x1\n"
+ " ldrb r1, [r6]\n"
+ " mul r1, r1, r3\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, r4\n"
+ " mov r1, ip\n"
+ "._528:\n"
+ " strh r1, [r0]\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8010B80()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " mov r0, #0x0\n"
+ " mov ip, r0\n"
+ " ldr r4, ._534\n"
+ " ldr r1, ._534 + 4\n"
+ " mov r8, r1\n"
+ " ldr r5, ._534 + 8\n"
+ " ldrb r1, [r5]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " mov r2, r8\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r3, ._534 + 12\n"
+ " ldrb r2, [r3]\n"
+ " mov r1, #0x46\n"
+ " mul r1, r1, r2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, r4\n"
+ " ldrb r7, [r0]\n"
+ " lsl r1, r7, #0x18\n"
+ " asr r0, r1, #0x18\n"
+ " mov r9, r4\n"
+ " add r2, r5, #0\n"
+ " add r4, r3, #0\n"
+ " cmp r0, #0x9\n"
+ " ble ._529 @cond_branch\n"
+ "._530:\n"
+ " mov r3, #0xf6\n"
+ " lsl r3, r3, #0x18\n"
+ " add r0, r1, r3\n"
+ " lsr r7, r0, #0x18\n"
+ " mov r1, ip\n"
+ " lsl r0, r1, #0x18\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x11\n"
+ " add r0, r0, r3\n"
+ " lsr r0, r0, #0x18\n"
+ " mov ip, r0\n"
+ " lsl r1, r7, #0x18\n"
+ " asr r0, r1, #0x18\n"
+ " cmp r0, #0x9\n"
+ " bgt ._530 @cond_branch\n"
+ "._529:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r6\n"
+ " cmp r0, #0\n"
+ " beq ._531 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r6\n"
+ " cmp r0, #0\n"
+ " beq ._532 @cond_branch\n"
+ " mov r1, ip\n"
+ " lsl r0, r1, #0x18\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x11\n"
+ " b ._533\n"
+ "._535:\n"
+ " .align 2, 0\n"
+ "._534:\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004360\n"
+ "._532:\n"
+ " mov r1, ip\n"
+ " lsl r0, r1, #0x18\n"
+ " mov r3, #0xff\n"
+ " lsl r3, r3, #0x18\n"
+ "._533:\n"
+ " add r0, r0, r3\n"
+ " lsr r0, r0, #0x18\n"
+ " mov ip, r0\n"
+ " mov r1, ip\n"
+ " lsl r0, r1, #0x18\n"
+ " cmp r0, #0\n"
+ " bge ._536 @cond_branch\n"
+ " mov r3, #0x9\n"
+ " mov ip, r3\n"
+ "._536:\n"
+ " mov r1, ip\n"
+ " lsl r0, r1, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " cmp r0, #0x9\n"
+ " ble ._542 @cond_branch\n"
+ " mov r3, #0x0\n"
+ " mov ip, r3\n"
+ " b ._542\n"
+ "._531:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r6\n"
+ " cmp r0, #0\n"
+ " beq ._539 @cond_branch\n"
+ " lsl r0, r7, #0x18\n"
+ " mov r1, #0x80\n"
+ " lsl r1, r1, #0x11\n"
+ " add r0, r0, r1\n"
+ " b ._540\n"
+ "._539:\n"
+ " lsl r0, r7, #0x18\n"
+ " mov r3, #0xff\n"
+ " lsl r3, r3, #0x18\n"
+ " add r0, r0, r3\n"
+ "._540:\n"
+ " lsr r7, r0, #0x18\n"
+ " lsl r0, r7, #0x18\n"
+ " cmp r0, #0\n"
+ " bgt ._541 @cond_branch\n"
+ " mov r7, #0x9\n"
+ "._541:\n"
+ " lsl r0, r7, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " cmp r0, #0x9\n"
+ " ble ._542 @cond_branch\n"
+ " mov r7, #0x1\n"
+ "._542:\n"
+ " ldrb r0, [r2]\n"
+ " lsl r2, r0, #0x2\n"
+ " add r2, r2, r0\n"
+ " mov r0, r8\n"
+ " ldrb r0, [r0]\n"
+ " add r2, r2, r0\n"
+ " lsl r2, r2, #0x1\n"
+ " ldrb r1, [r4]\n"
+ " mov r0, #0x1\n"
+ " eor r0, r0, r1\n"
+ " mov r1, #0x46\n"
+ " add r3, r0, #0\n"
+ " mul r3, r3, r1\n"
+ " add r3, r2, r3\n"
+ " add r3, r3, r9\n"
+ " ldrb r0, [r4]\n"
+ " mul r0, r0, r1\n"
+ " add r2, r2, r0\n"
+ " add r2, r2, r9\n"
+ " mov r1, ip\n"
+ " lsl r0, r1, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x1\n"
+ " lsl r0, r7, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " add r0, r0, r1\n"
+ " strh r0, [r2]\n"
+ " strh r0, [r3]\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8010CAC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add sp, sp, #0xfffffff0\n"
+ " ldr r4, ._553\n"
+ " ldrh r1, [r4, #0x28]\n"
+ " mov r0, #0x81\n"
+ " lsl r0, r0, #0x2\n"
+ " cmp r1, r0\n"
+ " bne ._543 @cond_branch\n"
+ " bl DoSoftReset\n"
+ "._543:\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x4\n"
+ " beq ._544 @cond_branch\n"
+ " b ._559\n"
+ "._544:\n"
+ " ldr r0, ._553 + 4\n"
+ " ldrb r1, [r0]\n"
+ " mov r8, r0\n"
+ " cmp r1, #0x5\n"
+ " bhi ._546 @cond_branch\n"
+ " ldr r0, ._553 + 8\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r0]\n"
+ " bl debug_sub_8012628\n"
+ " ldr r0, ._553 + 12\n"
+ " bl SetMainCallback2\n"
+ "._546:\n"
+ " ldr r0, ._553 + 16\n"
+ " ldrb r3, [r0]\n"
+ " cmp r3, #0\n"
+ " bne ._555 @cond_branch\n"
+ " mov r1, r8\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x6\n"
+ " bne ._555 @cond_branch\n"
+ " ldr r0, ._553 + 20\n"
+ " str r0, [r4, #0x8]\n"
+ " ldr r4, ._553 + 24\n"
+ " ldr r0, ._553 + 28\n"
+ " ldrh r1, [r0]\n"
+ " ldrb r2, [r0, #0x2]\n"
+ " str r3, [sp]\n"
+ " str r3, [sp, #0x4]\n"
+ " str r3, [sp, #0x8]\n"
+ " str r3, [sp, #0xc]\n"
+ " add r0, r4, #0\n"
+ " mov r3, #0x20\n"
+ " bl CreateMon\n"
+ " mov r5, #0x0\n"
+ " add r6, r4, #0\n"
+ "._549:\n"
+ " add r1, r5, #0\n"
+ " add r1, r1, #0xd\n"
+ " lsl r4, r5, #0x1\n"
+ " ldr r0, ._553 + 32\n"
+ " add r4, r4, r0\n"
+ " add r0, r6, #0\n"
+ " add r2, r4, #0\n"
+ " bl SetMonData\n"
+ " add r1, r5, #0\n"
+ " add r1, r1, #0x11\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " lsl r2, r0, #0x1\n"
+ " add r2, r2, r0\n"
+ " lsl r2, r2, #0x2\n"
+ " ldr r0, ._553 + 36\n"
+ " add r2, r2, r0\n"
+ " add r0, r6, #0\n"
+ " bl SetMonData\n"
+ " add r5, r5, #0x1\n"
+ " cmp r5, #0x3\n"
+ " ble ._549 @cond_branch\n"
+ " ldr r2, ._553 + 28\n"
+ " mov r4, #0x3c\n"
+ " ldsh r0, [r2, r4]\n"
+ " cmp r0, #0x1\n"
+ " beq ._550 @cond_branch\n"
+ " cmp r0, #0x2\n"
+ " beq ._551 @cond_branch\n"
+ " b ._555\n"
+ "._554:\n"
+ " .align 2, 0\n"
+ "._553:\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word debug_sub_8011498+1\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word debug_sub_80108B8+1\n"
+ " .word gPlayerParty\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_2023B02\n"
+ " .word gBattleMoves+0x4\n"
+ "._550:\n"
+ " ldr r1, ._556\n"
+ " ldr r0, ._556 + 4\n"
+ " str r0, [r1]\n"
+ " ldr r0, ._556 + 8\n"
+ " ldrh r1, [r2, #0xa]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x0\n"
+ " bl EvolutionScene\n"
+ " b ._555\n"
+ "._557:\n"
+ " .align 2, 0\n"
+ "._556:\n"
+ " .word gCB2_AfterEvolution\n"
+ " .word debug_sub_80108B8+1\n"
+ " .word gPlayerParty\n"
+ "._551:\n"
+ " bl debug_sub_8012688\n"
+ "._555:\n"
+ " ldr r0, ._565\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0x1\n"
+ " bne ._559 @cond_branch\n"
+ " ldr r0, ._565 + 4\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0x6\n"
+ " bne ._559 @cond_branch\n"
+ " ldr r3, ._565 + 8\n"
+ " ldrb r2, [r3, #0x15]\n"
+ " lsl r0, r2, #0x1d\n"
+ " lsr r5, r0, #0x1f\n"
+ " lsl r0, r2, #0x1f\n"
+ " lsr r0, r0, #0x1f\n"
+ " lsl r0, r0, #0x1\n"
+ " orr r5, r5, r0\n"
+ " add r5, r5, #0x1\n"
+ " cmp r5, #0x4\n"
+ " bne ._560 @cond_branch\n"
+ " mov r5, #0x0\n"
+ "._560:\n"
+ " mov r0, #0x1\n"
+ " add r1, r5, #0\n"
+ " and r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " mov r0, #0x5\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " mov r1, #0x2\n"
+ " and r5, r5, r1\n"
+ " lsr r2, r5, #0x1\n"
+ " sub r1, r1, #0x4\n"
+ " and r0, r0, r1\n"
+ " orr r0, r0, r2\n"
+ " strb r0, [r3, #0x15]\n"
+ " lsl r0, r0, #0x1f\n"
+ " lsr r0, r0, #0x1f\n"
+ " bl SetPokemonCryStereo\n"
+ " bl debug_nullsub_3\n"
+ "._559:\n"
+ " ldr r4, ._565 + 12\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x8\n"
+ " bne ._561 @cond_branch\n"
+ " bl debug_sub_801174C\n"
+ "._561:\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x40\n"
+ " bne ._562 @cond_branch\n"
+ " bl debug_sub_80125E4\n"
+ " ldr r1, ._565 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._563 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " b ._564\n"
+ "._566:\n"
+ " .align 2, 0\n"
+ "._565:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gSaveBlock2\n"
+ " .word gMain\n"
+ "._563:\n"
+ " mov r0, #0x6\n"
+ "._564:\n"
+ " strb r0, [r1]\n"
+ " bl debug_sub_8011E74\n"
+ " ldr r0, ._570\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ " bl debug_sub_80125A0\n"
+ "._562:\n"
+ " ldr r0, ._570 + 4\n"
+ " ldrh r0, [r0, #0x2a]\n"
+ " cmp r0, #0x80\n"
+ " bne ._567 @cond_branch\n"
+ " bl debug_sub_80125E4\n"
+ " ldr r1, ._570\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x6\n"
+ " bne ._568 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._569\n"
+ "._571:\n"
+ " .align 2, 0\n"
+ "._570:\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gMain\n"
+ "._568:\n"
+ " add r0, r0, #0x1\n"
+ "._569:\n"
+ " strb r0, [r1]\n"
+ " bl debug_sub_8011E74\n"
+ " ldr r0, ._575\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ " bl debug_sub_80125A0\n"
+ "._567:\n"
+ " ldr r0, ._575 + 4\n"
+ " ldrh r0, [r0, #0x2a]\n"
+ " cmp r0, #0x20\n"
+ " bne ._572 @cond_branch\n"
+ " bl debug_sub_80125E4\n"
+ " ldr r2, ._575 + 8\n"
+ " ldrb r0, [r2]\n"
+ " add r1, r0, #0\n"
+ " cmp r1, #0\n"
+ " beq ._573 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r2]\n"
+ " b ._577\n"
+ "._576:\n"
+ " .align 2, 0\n"
+ "._575:\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_030043A0\n"
+ "._573:\n"
+ " ldr r3, ._581\n"
+ " ldrb r0, [r3]\n"
+ " cmp r0, #0\n"
+ " beq ._577 @cond_branch\n"
+ " strb r1, [r3]\n"
+ " mov r0, #0x4\n"
+ " strb r0, [r2]\n"
+ " ldr r0, ._581 + 4\n"
+ " strh r1, [r0]\n"
+ " bl debug_sub_8011E5C\n"
+ " bl debug_sub_8011E74\n"
+ " ldr r0, ._581 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ "._577:\n"
+ " bl debug_sub_80125A0\n"
+ "._572:\n"
+ " ldr r0, ._581 + 12\n"
+ " ldrh r0, [r0, #0x2a]\n"
+ " cmp r0, #0x10\n"
+ " bne ._578 @cond_branch\n"
+ " bl debug_sub_80125E4\n"
+ " ldr r2, ._581 + 16\n"
+ " ldrb r0, [r2]\n"
+ " cmp r0, #0x4\n"
+ " beq ._579 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r2]\n"
+ " b ._583\n"
+ "._582:\n"
+ " .align 2, 0\n"
+ "._581:\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gBattle_BG1_X\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_030043A0\n"
+ "._579:\n"
+ " ldr r3, ._587\n"
+ " ldrb r1, [r3]\n"
+ " cmp r1, #0\n"
+ " bne ._583 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r3]\n"
+ " strb r1, [r2]\n"
+ " ldr r1, ._587 + 4\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x1\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " bl debug_sub_8011E5C\n"
+ " bl debug_sub_8011E74\n"
+ " ldr r0, ._587 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ "._583:\n"
+ " bl debug_sub_80125A0\n"
+ "._578:\n"
+ " ldr r0, ._587 + 12\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._584 @cond_branch\n"
+ " b ._607\n"
+ "._584:\n"
+ " ldr r0, ._587 + 16\n"
+ " ldrb r2, [r0]\n"
+ " ldr r0, ._587 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r2, r0\n"
+ " sub r0, r0, #0x1e\n"
+ " cmp r0, #0x4\n"
+ " bhi ._586 @cond_branch\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._587 + 20\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._588:\n"
+ " .align 2, 0\n"
+ "._587:\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gBattle_BG1_X\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word ._589\n"
+ "._589:\n"
+ " .word ._590\n"
+ " .word ._591\n"
+ " .word ._592\n"
+ " .word ._593\n"
+ " .word ._594\n"
+ "._591:\n"
+ " bl debug_sub_8010818\n"
+ " b ._595\n"
+ "._592:\n"
+ " ldr r1, ._597\n"
+ " mov r0, #0x1f\n"
+ " mov r2, #0xec\n"
+ " bl debug_sub_80132C8\n"
+ "._595:\n"
+ " bl debug_sub_8011E5C\n"
+ " bl debug_sub_8011E74\n"
+ " bl debug_sub_8012540\n"
+ " bl debug_nullsub_3\n"
+ " ldr r0, ._597 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ " b ._607\n"
+ "._598:\n"
+ " .align 2, 0\n"
+ "._597:\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_030043A4\n"
+ "._593:\n"
+ " ldr r1, ._600\n"
+ " mov r0, #0x1f\n"
+ " mov r2, #0xec\n"
+ " bl debug_sub_8013294\n"
+ " b ._607\n"
+ "._601:\n"
+ " .align 2, 0\n"
+ "._600:\n"
+ " .word gUnknown_Debug_2023A76\n"
+ "._594:\n"
+ " ldr r3, ._604\n"
+ " add r2, r3, #0\n"
+ " add r2, r2, #0x44\n"
+ " ldrh r1, [r2]\n"
+ " mov r4, #0x0\n"
+ " ldsh r0, [r2, r4]\n"
+ " cmp r0, #0\n"
+ " beq ._602 @cond_branch\n"
+ " sub r0, r1, #1\n"
+ " strh r0, [r2]\n"
+ " add r1, r3, #0\n"
+ " add r1, r1, #0x8a\n"
+ " ldrh r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r1]\n"
+ " b ._603\n"
+ "._605:\n"
+ " .align 2, 0\n"
+ "._604:\n"
+ " .word gUnknown_Debug_2023A76\n"
+ "._602:\n"
+ " mov r1, #0x8\n"
+ " strh r1, [r2]\n"
+ " add r0, r3, #0\n"
+ " add r0, r0, #0x8a\n"
+ " strh r1, [r0]\n"
+ "._603:\n"
+ " bl debug_sub_8012540\n"
+ " b ._607\n"
+ "._590:\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8010B80\n"
+ " ldr r2, ._608\n"
+ " ldr r0, ._608 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ " b ._607\n"
+ "._609:\n"
+ " .align 2, 0\n"
+ "._608:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ "._586:\n"
+ " cmp r2, #0x4\n"
+ " bne ._611 @cond_branch\n"
+ " cmp r1, #0x5\n"
+ " bhi ._611 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8010AAC\n"
+ " b ._613\n"
+ "._611:\n"
+ " ldr r6, ._618\n"
+ " ldr r5, ._618 + 4\n"
+ " ldr r4, ._618 + 8\n"
+ " ldrb r0, [r4]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldrb r0, [r5]\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x1\n"
+ " ldr r2, ._618 + 12\n"
+ " ldrb r0, [r2]\n"
+ " mov r3, #0x46\n"
+ " mul r0, r0, r3\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r6\n"
+ " ldrh r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r1]\n"
+ " ldrb r0, [r4]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldrb r5, [r5]\n"
+ " add r1, r1, r5\n"
+ " lsl r0, r1, #0x1\n"
+ " ldrb r2, [r2]\n"
+ " mul r2, r2, r3\n"
+ " add r0, r0, r2\n"
+ " add r3, r0, r6\n"
+ " mov r4, #0x0\n"
+ " ldsh r2, [r3, r4]\n"
+ " ldr r4, ._618 + 16\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r1, r0, #0x1\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r1, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r2, r0\n"
+ " bge ._613 @cond_branch\n"
+ " add r0, r4, #6\n"
+ " add r0, r1, r0\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r3]\n"
+ "._613:\n"
+ " ldr r5, ._618 + 4\n"
+ " ldrb r0, [r5]\n"
+ " cmp r0, #0\n"
+ " bne ._614 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8010AAC\n"
+ " ldr r0, ._618 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, #0x4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ "._614:\n"
+ " ldr r4, ._618 + 8\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r5, [r5]\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ "._607:\n"
+ " ldr r0, ._618 + 20\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._615 @cond_branch\n"
+ " b ._638\n"
+ "._615:\n"
+ " ldr r0, ._618 + 4\n"
+ " ldrb r2, [r0]\n"
+ " ldr r0, ._618 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r2, r0\n"
+ " sub r0, r0, #0x1e\n"
+ " cmp r0, #0x4\n"
+ " bhi ._617 @cond_branch\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._618 + 24\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._619:\n"
+ " .align 2, 0\n"
+ "._618:\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_821F424\n"
+ " .word gMain\n"
+ " .word ._620\n"
+ "._620:\n"
+ " .word ._621\n"
+ " .word ._622\n"
+ " .word ._623\n"
+ " .word ._624\n"
+ " .word ._625\n"
+ "._622:\n"
+ " bl debug_sub_8010818\n"
+ " b ._626\n"
+ "._623:\n"
+ " ldr r1, ._628\n"
+ " mov r0, #0x1f\n"
+ " mov r2, #0xec\n"
+ " bl debug_sub_80132C8\n"
+ "._626:\n"
+ " bl debug_sub_8011E5C\n"
+ " bl debug_sub_8011E74\n"
+ " bl debug_sub_8012540\n"
+ " bl debug_nullsub_3\n"
+ " ldr r0, ._628 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ " b ._638\n"
+ "._629:\n"
+ " .align 2, 0\n"
+ "._628:\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_030043A4\n"
+ "._624:\n"
+ " ldr r1, ._631\n"
+ " mov r0, #0x1f\n"
+ " mov r2, #0xec\n"
+ " bl debug_sub_8013294\n"
+ " b ._638\n"
+ "._632:\n"
+ " .align 2, 0\n"
+ "._631:\n"
+ " .word gUnknown_Debug_2023A76\n"
+ "._625:\n"
+ " ldr r3, ._635\n"
+ " add r2, r3, #0\n"
+ " add r2, r2, #0x44\n"
+ " ldrh r1, [r2]\n"
+ " mov r4, #0x0\n"
+ " ldsh r0, [r2, r4]\n"
+ " cmp r0, #0x7\n"
+ " bgt ._633 @cond_branch\n"
+ " add r0, r1, #1\n"
+ " strh r0, [r2]\n"
+ " add r1, r3, #0\n"
+ " add r1, r1, #0x8a\n"
+ " ldrh r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r1]\n"
+ " b ._634\n"
+ "._636:\n"
+ " .align 2, 0\n"
+ "._635:\n"
+ " .word gUnknown_Debug_2023A76\n"
+ "._633:\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r2]\n"
+ " add r0, r3, #0\n"
+ " add r0, r0, #0x8a\n"
+ " strh r1, [r0]\n"
+ "._634:\n"
+ " bl debug_sub_8012540\n"
+ " b ._638\n"
+ "._621:\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8010B80\n"
+ " ldr r2, ._639\n"
+ " ldr r0, ._639 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ " b ._638\n"
+ "._640:\n"
+ " .align 2, 0\n"
+ "._639:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ "._617:\n"
+ " cmp r2, #0x4\n"
+ " bne ._642 @cond_branch\n"
+ " cmp r1, #0x5\n"
+ " bhi ._642 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8010AAC\n"
+ " b ._644\n"
+ "._642:\n"
+ " ldr r6, ._650\n"
+ " ldr r5, ._650 + 4\n"
+ " ldr r4, ._650 + 8\n"
+ " ldrb r0, [r4]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldrb r0, [r5]\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x1\n"
+ " ldr r2, ._650 + 12\n"
+ " ldrb r0, [r2]\n"
+ " mov r3, #0x46\n"
+ " mul r0, r0, r3\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r6\n"
+ " ldrh r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r1]\n"
+ " ldrb r0, [r4]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldrb r5, [r5]\n"
+ " add r1, r1, r5\n"
+ " lsl r0, r1, #0x1\n"
+ " ldrb r2, [r2]\n"
+ " mul r2, r2, r3\n"
+ " add r0, r0, r2\n"
+ " add r3, r0, r6\n"
+ " mov r4, #0x0\n"
+ " ldsh r2, [r3, r4]\n"
+ " ldr r4, ._650 + 16\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r1, r0, #0x1\n"
+ " add r0, r4, #6\n"
+ " add r0, r1, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r2, r0\n"
+ " ble ._644 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r1, r0\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r3]\n"
+ "._644:\n"
+ " ldr r5, ._650 + 4\n"
+ " ldrb r0, [r5]\n"
+ " cmp r0, #0\n"
+ " bne ._645 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8010AAC\n"
+ " ldr r0, ._650 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, #0x4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ "._645:\n"
+ " ldr r4, ._650 + 8\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r5, [r5]\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ "._638:\n"
+ " ldr r0, ._650 + 20\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._646 @cond_branch\n"
+ " ldr r0, ._650 + 4\n"
+ " ldrb r1, [r0]\n"
+ " ldr r2, ._650 + 8\n"
+ " mov r8, r2\n"
+ " add r7, r0, #0\n"
+ " cmp r1, #0x4\n"
+ " bne ._648 @cond_branch\n"
+ " ldrb r0, [r2]\n"
+ " cmp r0, #0x5\n"
+ " bhi ._648 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8010AAC\n"
+ " b ._653\n"
+ "._651:\n"
+ " .align 2, 0\n"
+ "._650:\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_821F424\n"
+ " .word gMain\n"
+ "._648:\n"
+ " mov r4, r8\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r7]\n"
+ " add r0, r0, r1\n"
+ " cmp r0, #0x1e\n"
+ " bne ._652 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " bl debug_sub_8010B80\n"
+ " b ._653\n"
+ "._652:\n"
+ " ldr r4, ._655\n"
+ " lsl r1, r0, #0x1\n"
+ " ldr r3, ._655 + 4\n"
+ " ldrb r2, [r3]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r4\n"
+ " ldrh r0, [r1]\n"
+ " sub r0, r0, #0xa\n"
+ " strh r0, [r1]\n"
+ " add r6, r3, #0\n"
+ " ldr r5, ._655 + 8\n"
+ " b ._654\n"
+ "._656:\n"
+ " .align 2, 0\n"
+ "._655:\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_821F424\n"
+ "._657:\n"
+ " add r0, r5, #6\n"
+ " add r0, r1, r0\n"
+ " ldrh r0, [r0]\n"
+ " ldrh r2, [r3]\n"
+ " add r0, r0, r2\n"
+ " strh r0, [r3]\n"
+ "._654:\n"
+ " mov r1, r8\n"
+ " ldrb r0, [r1]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldrb r2, [r7]\n"
+ " add r1, r1, r2\n"
+ " lsl r2, r1, #0x1\n"
+ " ldrb r3, [r6]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r3\n"
+ " add r2, r2, r0\n"
+ " add r3, r2, r4\n"
+ " mov r0, #0x0\n"
+ " ldsh r2, [r3, r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r1, r0, #0x1\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r1, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r2, r0\n"
+ " blt ._657 @cond_branch\n"
+ "._653:\n"
+ " ldr r5, ._663\n"
+ " ldrb r0, [r5]\n"
+ " cmp r0, #0\n"
+ " bne ._658 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8010AAC\n"
+ " ldr r0, ._663 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, #0x4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ "._658:\n"
+ " ldr r4, ._663 + 4\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r5, [r5]\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ "._646:\n"
+ " ldr r0, ._663 + 8\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._659 @cond_branch\n"
+ " ldr r0, ._663\n"
+ " ldrb r1, [r0]\n"
+ " ldr r2, ._663 + 4\n"
+ " mov r8, r2\n"
+ " add r7, r0, #0\n"
+ " cmp r1, #0x4\n"
+ " bne ._661 @cond_branch\n"
+ " ldrb r0, [r2]\n"
+ " cmp r0, #0x5\n"
+ " bhi ._661 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8010AAC\n"
+ " b ._666\n"
+ "._664:\n"
+ " .align 2, 0\n"
+ "._663:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gMain\n"
+ "._661:\n"
+ " mov r4, r8\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r7]\n"
+ " add r0, r0, r1\n"
+ " cmp r0, #0x1e\n"
+ " bne ._665 @cond_branch\n"
+ " mov r0, #0x3\n"
+ " bl debug_sub_8010B80\n"
+ " b ._666\n"
+ "._665:\n"
+ " ldr r4, ._668\n"
+ " lsl r1, r0, #0x1\n"
+ " ldr r3, ._668 + 4\n"
+ " ldrb r2, [r3]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r4\n"
+ " ldrh r0, [r1]\n"
+ " add r0, r0, #0xa\n"
+ " strh r0, [r1]\n"
+ " add r6, r3, #0\n"
+ " ldr r5, ._668 + 8\n"
+ " b ._667\n"
+ "._669:\n"
+ " .align 2, 0\n"
+ "._668:\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_821F424\n"
+ "._670:\n"
+ " ldrh r0, [r3]\n"
+ " sub r0, r0, r1\n"
+ " strh r0, [r3]\n"
+ "._667:\n"
+ " mov r2, r8\n"
+ " ldrb r0, [r2]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldrb r0, [r7]\n"
+ " add r1, r1, r0\n"
+ " lsl r2, r1, #0x1\n"
+ " ldrb r3, [r6]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r3\n"
+ " add r2, r2, r0\n"
+ " add r3, r2, r4\n"
+ " mov r0, #0x0\n"
+ " ldsh r2, [r3, r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r5, #6\n"
+ " add r0, r0, r1\n"
+ " ldrh r1, [r0]\n"
+ " cmp r2, r1\n"
+ " bgt ._670 @cond_branch\n"
+ "._666:\n"
+ " ldr r5, ._672\n"
+ " ldrb r0, [r5]\n"
+ " cmp r0, #0\n"
+ " bne ._671 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8010AAC\n"
+ " ldr r0, ._672 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, #0x4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ "._671:\n"
+ " ldr r4, ._672 + 4\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r5, [r5]\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ "._659:\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " add sp, sp, #0x10\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._673:\n"
+ " .align 2, 0\n"
+ "._672:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8011498()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " ldr r2, ._687\n"
+ " ldr r0, ._687 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r9, r0\n"
+ " ldr r4, ._687 + 8\n"
+ " ldrh r1, [r4, #0x28]\n"
+ " mov r0, #0x81\n"
+ " lsl r0, r0, #0x2\n"
+ " cmp r1, r0\n"
+ " bne ._674 @cond_branch\n"
+ " bl DoSoftReset\n"
+ "._674:\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x4\n"
+ " bne ._675 @cond_branch\n"
+ " bl debug_sub_8012658\n"
+ " ldr r0, ._687 + 12\n"
+ " bl SetMainCallback2\n"
+ "._675:\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x8\n"
+ " bne ._676 @cond_branch\n"
+ " bl debug_sub_801174C\n"
+ "._676:\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x40\n"
+ " beq ._677 @cond_branch\n"
+ " cmp r0, #0x80\n"
+ " bne ._678 @cond_branch\n"
+ "._677:\n"
+ " bl debug_sub_8012658\n"
+ " ldr r0, ._687 + 16\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x2\n"
+ " eor r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ " bl debug_sub_8012628\n"
+ "._678:\n"
+ " ldr r0, ._687 + 8\n"
+ " ldrh r0, [r0, #0x2a]\n"
+ " cmp r0, #0x20\n"
+ " beq ._679 @cond_branch\n"
+ " cmp r0, #0x10\n"
+ " bne ._680 @cond_branch\n"
+ "._679:\n"
+ " bl debug_sub_8012658\n"
+ " ldr r0, ._687 + 16\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x1\n"
+ " eor r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ " bl debug_sub_8012628\n"
+ "._680:\n"
+ " ldr r0, ._687 + 8\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._681 @cond_branch\n"
+ " ldr r0, ._687 + 20\n"
+ " mov r8, r0\n"
+ " ldr r6, ._687 + 16\n"
+ " ldrb r4, [r6]\n"
+ " lsl r4, r4, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldr r5, ._687 + 24\n"
+ " ldrb r2, [r5]\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x4\n"
+ " add r4, r4, r1\n"
+ " add r4, r4, r8\n"
+ " ldrh r1, [r4]\n"
+ " sub r1, r1, #0x1\n"
+ " strh r1, [r4]\n"
+ " ldrb r3, [r6]\n"
+ " lsl r1, r3, #0x1\n"
+ " add r1, r1, r0\n"
+ " ldrb r2, [r5]\n"
+ " lsl r0, r2, #0x1\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " mov r0, r8\n"
+ " add r4, r1, r0\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " ldr r5, ._687 + 28\n"
+ " lsl r0, r3, #0x2\n"
+ " add r0, r0, r3\n"
+ " lsl r2, r0, #0x1\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r1, r0\n"
+ " bge ._682 @cond_branch\n"
+ " add r0, r5, #6\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r4]\n"
+ "._682:\n"
+ " bl debug_sub_8012294\n"
+ "._681:\n"
+ " ldr r0, ._687 + 8\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._683 @cond_branch\n"
+ " ldr r1, ._687 + 20\n"
+ " mov r8, r1\n"
+ " ldr r6, ._687 + 16\n"
+ " ldrb r4, [r6]\n"
+ " lsl r4, r4, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldr r5, ._687 + 24\n"
+ " ldrb r2, [r5]\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x4\n"
+ " add r4, r4, r1\n"
+ " add r4, r4, r8\n"
+ " ldrh r1, [r4]\n"
+ " add r1, r1, #0x1\n"
+ " strh r1, [r4]\n"
+ " ldrb r3, [r6]\n"
+ " lsl r1, r3, #0x1\n"
+ " add r1, r1, r0\n"
+ " ldrb r2, [r5]\n"
+ " lsl r0, r2, #0x1\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " mov r0, r8\n"
+ " add r4, r1, r0\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " ldr r5, ._687 + 28\n"
+ " lsl r0, r3, #0x2\n"
+ " add r0, r0, r3\n"
+ " lsl r2, r0, #0x1\n"
+ " add r0, r5, #6\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r1, r0\n"
+ " ble ._684 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r4]\n"
+ "._684:\n"
+ " bl debug_sub_8012294\n"
+ "._683:\n"
+ " ldr r0, ._687 + 8\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._685 @cond_branch\n"
+ " ldr r6, ._687 + 20\n"
+ " ldr r5, ._687 + 16\n"
+ " ldrb r4, [r5]\n"
+ " lsl r4, r4, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldr r2, ._687 + 24\n"
+ " ldrb r1, [r2]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, r6\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0xa\n"
+ " strh r0, [r4]\n"
+ " mov sl, r5\n"
+ " mov r8, r6\n"
+ " add r7, r2, #0\n"
+ " ldr r6, ._687 + 28\n"
+ " b ._686\n"
+ "._688:\n"
+ " .align 2, 0\n"
+ "._687:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gMain\n"
+ " .word debug_sub_8010CAC+1\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word gUnknown_Debug_2023B02\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_821F564\n"
+ "._689:\n"
+ " add r0, r6, #6\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " ldrh r1, [r4]\n"
+ " add r0, r0, r1\n"
+ " strh r0, [r4]\n"
+ "._686:\n"
+ " mov r0, sl\n"
+ " ldrb r5, [r0]\n"
+ " lsl r4, r5, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldrb r1, [r7]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, r8\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r2, r0, #0x1\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r1, r0\n"
+ " blt ._689 @cond_branch\n"
+ " bl debug_sub_8012294\n"
+ "._685:\n"
+ " ldr r0, ._692\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._690 @cond_branch\n"
+ " ldr r6, ._692 + 4\n"
+ " ldr r5, ._692 + 8\n"
+ " ldrb r4, [r5]\n"
+ " lsl r4, r4, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldr r2, ._692 + 12\n"
+ " ldrb r1, [r2]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, r6\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0xa\n"
+ " strh r0, [r4]\n"
+ " mov sl, r5\n"
+ " mov r8, r6\n"
+ " add r7, r2, #0\n"
+ " ldr r6, ._692 + 16\n"
+ " b ._691\n"
+ "._693:\n"
+ " .align 2, 0\n"
+ "._692:\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_2023B02\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_821F564\n"
+ "._694:\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, r1\n"
+ " strh r0, [r4]\n"
+ "._691:\n"
+ " mov r1, sl\n"
+ " ldrb r5, [r1]\n"
+ " lsl r4, r5, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldrb r1, [r7]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, r8\n"
+ " mov r0, #0x0\n"
+ " ldsh r2, [r4, r0]\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r6, #6\n"
+ " add r0, r0, r1\n"
+ " ldrh r1, [r0]\n"
+ " cmp r2, r1\n"
+ " bgt ._694 @cond_branch\n"
+ " bl debug_sub_8012294\n"
+ "._690:\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_801174C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xffffffe8\n"
+ " mov r0, #0x0\n"
+ " mov r9, r0\n"
+ " ldr r1, ._704\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " bl Random\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " mov r0, #0x3\n"
+ " and r4, r4, r0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r6, r4, #0x18\n"
+ " ldr r5, ._704 + 4\n"
+ " lsl r1, r6, #0x1\n"
+ " add r1, r1, r6\n"
+ " lsl r1, r1, #0x1\n"
+ " ldr r0, ._704 + 8\n"
+ " add r1, r1, r0\n"
+ " add r0, r5, #0\n"
+ " bl StringCopy\n"
+ " lsr r4, r4, #0x19\n"
+ " strb r4, [r5, #0x8]\n"
+ " bl ZeroPlayerPartyMons\n"
+ " bl ZeroEnemyPartyMons\n"
+ " ldr r0, ._704 + 12\n"
+ " mov r1, #0x3c\n"
+ " ldsh r7, [r0, r1]\n"
+ " mov r2, r9\n"
+ " str r2, [sp, #0xc]\n"
+ " cmp r7, #0x9\n"
+ " ble ._695 @cond_branch\n"
+ " mov r0, #0x0\n"
+ "._696:\n"
+ " sub r7, r7, #0xa\n"
+ " add r0, r0, #0x1\n"
+ " cmp r7, #0x9\n"
+ " bgt ._696 @cond_branch\n"
+ " str r0, [sp, #0xc]\n"
+ "._695:\n"
+ " ldr r2, ._704 + 16\n"
+ " ldr r1, ._704 + 20\n"
+ " sub r0, r7, #1\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r1\n"
+ " ldrh r3, [r0]\n"
+ " strh r3, [r2]\n"
+ " ldr r1, ._704 + 24\n"
+ " mov r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._704 + 28\n"
+ " add r0, sp, #0xc\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._697 @cond_branch\n"
+ " bl EnterSafariMode\n"
+ "._697:\n"
+ " ldr r5, ._704 + 12\n"
+ " ldrh r0, [r5, #0x3c]\n"
+ " sub r0, r0, #0x2\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0x2\n"
+ " bhi ._698 @cond_branch\n"
+ " ldr r4, ._704 + 32\n"
+ " bl Random\n"
+ " mov r1, #0x7\n"
+ " and r1, r1, r0\n"
+ " add r1, r1, #0x1\n"
+ " strh r1, [r4]\n"
+ "._698:\n"
+ " ldr r1, ._704 + 36\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " mov r7, #0x0\n"
+ "._745:\n"
+ " lsl r0, r7, #0x1\n"
+ " ldr r3, ._704 + 12\n"
+ " add r1, r0, r3\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r1, r2]\n"
+ " add r2, r3, #0\n"
+ " mov r8, r0\n"
+ " add r3, r7, #5\n"
+ " mov sl, r3\n"
+ " cmp r1, #0\n"
+ " beq ._699 @cond_branch\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r2, #0\n"
+ " add r0, r0, r1\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r0, r3]\n"
+ " cmp r0, #0x1\n"
+ " beq ._707 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._701 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._706 @cond_branch\n"
+ " b ._708\n"
+ "._705:\n"
+ " .align 2, 0\n"
+ "._704:\n"
+ " .word gUnknown_020297ED\n"
+ " .word gSaveBlock2\n"
+ " .word str_821F631\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gBattleTypeFlags\n"
+ " .word gUnknown_Debug_821F598\n"
+ " .word gUnknown_02023A14_50\n"
+ " .word gBattleTerrain\n"
+ " .word gTrainerBattleOpponent\n"
+ " .word gPlayerPartyCount\n"
+ "._701:\n"
+ " cmp r0, #0x2\n"
+ " beq ._706 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " beq ._707 @cond_branch\n"
+ " b ._708\n"
+ "._706:\n"
+ " mov r6, #0x0\n"
+ " b ._710\n"
+ "._707:\n"
+ " mov r6, #0xfe\n"
+ " b ._710\n"
+ "._708:\n"
+ " mov r6, #0xff\n"
+ "._710:\n"
+ " mov r1, r8\n"
+ " add r0, r1, r2\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r0, r3]\n"
+ " add r1, r7, #5\n"
+ " mov sl, r1\n"
+ " cmp r0, #0xc9\n"
+ " bne ._712 @cond_branch\n"
+ " cmp r1, #0x1d\n"
+ " bgt ._712 @cond_branch\n"
+ " add r0, r7, #7\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r2\n"
+ " ldrb r0, [r0]\n"
+ " mov r9, r0\n"
+ " b ._713\n"
+ "._712:\n"
+ " mov r2, #0x0\n"
+ " mov r9, r2\n"
+ "._713:\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl __divsi3\n"
+ " mov r3, #0x64\n"
+ " mul r0, r0, r3\n"
+ " ldr r1, ._719\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._719 + 4\n"
+ " add r1, r1, r8\n"
+ " ldrh r1, [r1]\n"
+ " add r2, r7, #1\n"
+ " lsl r2, r2, #0x1\n"
+ " ldr r3, ._719 + 4\n"
+ " add r2, r2, r3\n"
+ " ldrb r2, [r2]\n"
+ " str r6, [sp]\n"
+ " mov r3, #0x0\n"
+ " str r3, [sp, #0x4]\n"
+ " mov r3, r9\n"
+ " str r3, [sp, #0x8]\n"
+ " mov r3, #0x0\n"
+ " bl CreateMonWithGenderNatureLetter\n"
+ "._699:\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl __divsi3\n"
+ " mov r2, #0x64\n"
+ " add r1, r0, #0\n"
+ " mul r1, r1, r2\n"
+ " ldr r0, ._719\n"
+ " add r5, r1, r0\n"
+ " ldr r4, ._719 + 8\n"
+ " mov r3, r8\n"
+ " add r6, r3, r4\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xc\n"
+ " add r2, r6, #0\n"
+ " bl SetMonData\n"
+ " sub r4, r4, #0x4\n"
+ " add r1, r7, #2\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r4\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " str r1, [sp, #0x10]\n"
+ " cmp r0, #0xb\n"
+ " bhi ._714 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x26\n"
+ " add r2, r6, #0\n"
+ " bl SetMonData\n"
+ "._714:\n"
+ " add r1, r7, #3\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r4\n"
+ " mov r3, #0x0\n"
+ " ldsh r2, [r0, r3]\n"
+ " str r1, [sp, #0x14]\n"
+ " cmp r2, #0\n"
+ " beq ._716 @cond_branch\n"
+ " cmp r2, #0x3\n"
+ " beq ._716 @cond_branch\n"
+ " cmp r2, #0x2\n"
+ " bgt ._717 @cond_branch\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " sub r0, r0, #0x1\n"
+ " b ._718\n"
+ "._720:\n"
+ " .align 2, 0\n"
+ "._719:\n"
+ " .word gEnemyParty\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_2023A7A\n"
+ "._717:\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r0, r2]\n"
+ " sub r0, r0, #0x4\n"
+ "._718:\n"
+ " str r0, [sp, #0xc]\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl __divsi3\n"
+ " mov r3, #0x64\n"
+ " mul r0, r0, r3\n"
+ " ldr r1, ._726\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x2e\n"
+ " add r2, sp, #0xc\n"
+ " bl SetMonData\n"
+ "._716:\n"
+ " ldr r1, ._726 + 4\n"
+ " add r1, r1, #0x46\n"
+ " mov r2, r8\n"
+ " add r0, r2, r1\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r0, r3]\n"
+ " ldr r2, ._726 + 4\n"
+ " cmp r0, #0\n"
+ " beq ._721 @cond_branch\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._729 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._723 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._728 @cond_branch\n"
+ " b ._730\n"
+ "._727:\n"
+ " .align 2, 0\n"
+ "._726:\n"
+ " .word gEnemyParty\n"
+ " .word gUnknown_Debug_2023A76\n"
+ "._723:\n"
+ " cmp r0, #0x2\n"
+ " beq ._728 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " beq ._729 @cond_branch\n"
+ " b ._730\n"
+ "._728:\n"
+ " mov r6, #0x0\n"
+ " b ._732\n"
+ "._729:\n"
+ " mov r6, #0xfe\n"
+ " b ._732\n"
+ "._730:\n"
+ " mov r6, #0xff\n"
+ "._732:\n"
+ " add r1, r2, #0\n"
+ " add r1, r1, #0x46\n"
+ " mov r2, r8\n"
+ " add r0, r2, r1\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r0, r3]\n"
+ " cmp r0, #0xc9\n"
+ " bne ._734 @cond_branch\n"
+ " mov r0, sl\n"
+ " cmp r0, #0x1d\n"
+ " bgt ._734 @cond_branch\n"
+ " add r0, r7, #7\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " mov r9, r0\n"
+ " b ._735\n"
+ "._734:\n"
+ " mov r1, #0x0\n"
+ " mov r9, r1\n"
+ "._735:\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl __divsi3\n"
+ " mov r2, #0x64\n"
+ " mul r0, r0, r2\n"
+ " ldr r1, ._741\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._741 + 4\n"
+ " add r1, r1, r8\n"
+ " ldrh r1, [r1]\n"
+ " add r2, r7, #1\n"
+ " lsl r2, r2, #0x1\n"
+ " ldr r3, ._741 + 4\n"
+ " add r2, r2, r3\n"
+ " ldrb r2, [r2]\n"
+ " str r6, [sp]\n"
+ " mov r3, #0x0\n"
+ " str r3, [sp, #0x4]\n"
+ " mov r3, r9\n"
+ " str r3, [sp, #0x8]\n"
+ " mov r3, #0x0\n"
+ " bl CreateMonWithGenderNatureLetter\n"
+ " ldr r1, ._741 + 8\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._721:\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl __divsi3\n"
+ " mov r2, #0x64\n"
+ " add r1, r0, #0\n"
+ " mul r1, r1, r2\n"
+ " ldr r0, ._741\n"
+ " add r4, r1, r0\n"
+ " ldr r0, ._741 + 12\n"
+ " mov r3, r8\n"
+ " add r5, r3, r0\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc\n"
+ " add r2, r5, #0\n"
+ " bl SetMonData\n"
+ " ldr r1, [sp, #0x10]\n"
+ " lsl r0, r1, #0x1\n"
+ " ldr r2, ._741 + 16\n"
+ " add r0, r0, r2\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0xb\n"
+ " bhi ._736 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x26\n"
+ " add r2, r5, #0\n"
+ " bl SetMonData\n"
+ "._736:\n"
+ " ldr r3, [sp, #0x14]\n"
+ " lsl r0, r3, #0x1\n"
+ " ldr r1, ._741 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " cmp r1, #0\n"
+ " beq ._738 @cond_branch\n"
+ " cmp r1, #0x3\n"
+ " beq ._738 @cond_branch\n"
+ " cmp r1, #0x2\n"
+ " bgt ._739 @cond_branch\n"
+ " add r0, r1, #0\n"
+ " sub r0, r0, #0x1\n"
+ " b ._740\n"
+ "._742:\n"
+ " .align 2, 0\n"
+ "._741:\n"
+ " .word gPlayerParty\n"
+ " .word gUnknown_Debug_2023ABC\n"
+ " .word gPlayerPartyCount\n"
+ " .word gUnknown_Debug_2023AC0\n"
+ " .word gUnknown_Debug_2023A76\n"
+ "._739:\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " sub r0, r0, #0x4\n"
+ "._740:\n"
+ " str r0, [sp, #0xc]\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl __divsi3\n"
+ " mov r2, #0x64\n"
+ " mul r0, r0, r2\n"
+ " ldr r1, ._750\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x2e\n"
+ " add r2, sp, #0xc\n"
+ " bl SetMonData\n"
+ "._738:\n"
+ " ldr r3, [sp, #0x14]\n"
+ " lsl r0, r3, #0x1\n"
+ " ldr r1, ._750 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r0, r2]\n"
+ " cmp r0, #0x2\n"
+ " ble ._743 @cond_branch\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl __divsi3\n"
+ " mov r3, #0x64\n"
+ " mul r0, r0, r3\n"
+ " ldr r1, ._750\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x7\n"
+ " ldr r2, ._750 + 8\n"
+ " bl SetMonData\n"
+ " ldr r2, ._750 + 12\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x40\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ "._743:\n"
+ " mov r7, sl\n"
+ " cmp r7, #0x1d\n"
+ " bgt ._744 @cond_branch\n"
+ " b ._745\n"
+ "._744:\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp, #0xc]\n"
+ " mov r0, #0x64\n"
+ " mov r8, r0\n"
+ " ldr r1, ._750 + 16\n"
+ " mov r9, r1\n"
+ " ldr r2, ._750\n"
+ " mov sl, r2\n"
+ "._747:\n"
+ " mov r7, #0x0\n"
+ "._746:\n"
+ " ldr r2, [sp, #0xc]\n"
+ " mov r0, r8\n"
+ " mul r0, r0, r2\n"
+ " ldr r3, ._750 + 20\n"
+ " add r0, r0, r3\n"
+ " add r5, r7, #0\n"
+ " add r5, r5, #0xd\n"
+ " lsl r2, r2, #0x3\n"
+ " lsl r4, r7, #0x1\n"
+ " mov r3, r9\n"
+ " add r1, r4, r3\n"
+ " add r2, r2, r1\n"
+ " add r1, r5, #0\n"
+ " bl SetMonData\n"
+ " ldr r1, [sp, #0xc]\n"
+ " mov r0, r8\n"
+ " mul r0, r0, r1\n"
+ " ldr r2, ._750 + 20\n"
+ " add r0, r0, r2\n"
+ " add r6, r7, #0\n"
+ " add r6, r6, #0x11\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r4, r1\n"
+ " add r1, r1, r9\n"
+ " mov r3, #0x0\n"
+ " ldsh r1, [r1, r3]\n"
+ " lsl r2, r1, #0x1\n"
+ " add r2, r2, r1\n"
+ " lsl r2, r2, #0x2\n"
+ " ldr r1, ._750 + 24\n"
+ " add r2, r2, r1\n"
+ " add r1, r6, #0\n"
+ " bl SetMonData\n"
+ " ldr r2, [sp, #0xc]\n"
+ " mov r0, r8\n"
+ " mul r0, r0, r2\n"
+ " add r0, r0, sl\n"
+ " lsl r2, r2, #0x3\n"
+ " ldr r3, ._750 + 28\n"
+ " add r1, r4, r3\n"
+ " add r2, r2, r1\n"
+ " add r1, r5, #0\n"
+ " bl SetMonData\n"
+ " ldr r1, [sp, #0xc]\n"
+ " mov r0, r8\n"
+ " mul r0, r0, r1\n"
+ " add r0, r0, sl\n"
+ " lsl r1, r1, #0x3\n"
+ " add r4, r4, r1\n"
+ " ldr r1, ._750 + 28\n"
+ " add r4, r4, r1\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r4, r2]\n"
+ " lsl r2, r1, #0x1\n"
+ " add r2, r2, r1\n"
+ " lsl r2, r2, #0x2\n"
+ " ldr r3, ._750 + 24\n"
+ " add r2, r2, r3\n"
+ " add r1, r6, #0\n"
+ " bl SetMonData\n"
+ " add r7, r7, #0x1\n"
+ " cmp r7, #0x3\n"
+ " ble ._746 @cond_branch\n"
+ " ldr r0, [sp, #0xc]\n"
+ " add r0, r0, #0x1\n"
+ " str r0, [sp, #0xc]\n"
+ " cmp r0, #0x5\n"
+ " ble ._747 @cond_branch\n"
+ " ldr r3, ._750 + 32\n"
+ " add r4, r3, #0\n"
+ " add r4, r4, #0x44\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " cmp r0, #0x8\n"
+ " bne ._748 @cond_branch\n"
+ " ldr r0, ._750 + 12\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x80\n"
+ " b ._753\n"
+ "._751:\n"
+ " .align 2, 0\n"
+ "._750:\n"
+ " .word gPlayerParty\n"
+ " .word gUnknown_Debug_2023ABC\n"
+ " .word Str_821F649\n"
+ " .word gUnknown_02023A14_50\n"
+ " .word gUnknown_Debug_2023B02\n"
+ " .word gEnemyParty\n"
+ " .word gBattleMoves+0x4\n"
+ " .word gUnknown_Debug_2023B32\n"
+ " .word gUnknown_Debug_2023A76\n"
+ "._748:\n"
+ " cmp r0, #0x7\n"
+ " bne ._752 @cond_branch\n"
+ " ldr r0, ._754\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x20\n"
+ " b ._753\n"
+ "._755:\n"
+ " .align 2, 0\n"
+ "._754:\n"
+ " .word gUnknown_02023A14_50\n"
+ "._752:\n"
+ " cmp r0, #0x6\n"
+ " bne ._756 @cond_branch\n"
+ " ldr r2, ._759\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x10\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ " ldrh r1, [r3, #0x4]\n"
+ " mov r2, #0x4\n"
+ " ldsh r0, [r3, r2]\n"
+ " cmp r0, #0x5\n"
+ " ble ._757 @cond_branch\n"
+ " ldr r0, ._759 + 4\n"
+ " sub r1, r1, #0x2\n"
+ " ldr r3, ._759 + 8\n"
+ " add r0, r0, r3\n"
+ " b ._761\n"
+ "._760:\n"
+ " .align 2, 0\n"
+ "._759:\n"
+ " .word gUnknown_02023A14_50\n"
+ " .word gSharedMem\n"
+ " .word 0x160a3\n"
+ "._757:\n"
+ " ldr r0, ._762\n"
+ " ldr r2, ._762 + 4\n"
+ " add r0, r0, r2\n"
+ " b ._761\n"
+ "._763:\n"
+ " .align 2, 0\n"
+ "._762:\n"
+ " .word gSharedMem\n"
+ " .word 0x160a3\n"
+ "._756:\n"
+ " cmp r0, #0x5\n"
+ " bne ._764 @cond_branch\n"
+ " ldr r0, ._766\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x21\n"
+ "._753:\n"
+ " orr r1, r1, r2\n"
+ "._761:\n"
+ " strb r1, [r0]\n"
+ " bl sub_80408BC\n"
+ " b ._770\n"
+ "._767:\n"
+ " .align 2, 0\n"
+ "._766:\n"
+ " .word gUnknown_02023A14_50\n"
+ "._764:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._768 @cond_branch\n"
+ " bl sub_80408BC\n"
+ "._768:\n"
+ " ldrh r3, [r4]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._769 @cond_branch\n"
+ " ldr r0, ._772\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x4\n"
+ " orr r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ "._769:\n"
+ " mov r0, #0x4\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._770 @cond_branch\n"
+ " ldr r0, ._772\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x6\n"
+ " orr r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ "._770:\n"
+ " ldr r0, ._772 + 4\n"
+ " ldr r1, ._772 + 8\n"
+ " str r1, [r0, #0x8]\n"
+ " ldr r0, ._772 + 12\n"
+ " bl SetMainCallback2\n"
+ " bl ClearBag\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x3\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x5\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x6\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x7\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x8\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x9\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0xa\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0xb\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0xc\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x13\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x14\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x19\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x22\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x23\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x25\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x49\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4a\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4b\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4c\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4d\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4e\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x50\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " ldr r4, ._772 + 16\n"
+ " mov r7, #0xe\n"
+ "._771:\n"
+ " add r0, r4, #0\n"
+ " bl sub_810CA34\n"
+ " add r4, r4, #0x8\n"
+ " sub r7, r7, #0x1\n"
+ " cmp r7, #0\n"
+ " bge ._771 @cond_branch\n"
+ " add sp, sp, #0x18\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._773:\n"
+ " .align 2, 0\n"
+ "._772:\n"
+ " .word gUnknown_02023A14_50\n"
+ " .word gMain\n"
+ " .word debug_sub_80108B8+1\n"
+ " .word unref_sub_800D684+1\n"
+ " .word gUnknown_Debug_821F5AC\n"
+ "\n"
+ );
+}
+
+void debug_sub_8011D40(void)
+{
+ DmaCopy16(3, gSharedMem, (void *)(VRAM + 0x4000), 0x1000);
+ 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();
+}
+
+void debug_nullsub_45()
+{
+}
+
+void debug_sub_8011DD4(void)
+{
+ 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();
+}
+
+void debug_sub_8011E5C(void)
+{
+ s32 i;
+
+ for (i = 0; i < 31; i++)
+ debug_sub_8011EA0(i);
+}
+
+extern u8 gUnknown_Debug_030043A8;
+
+void debug_sub_8011E74(void)
+{
+ 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(u8 a)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffff4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " cmp r7, #0x22\n"
+ " bls ._782 @cond_branch\n"
+ " b ._815\n"
+ "._782:\n"
+ " lsl r0, r7, #0x2\n"
+ " ldr r1, ._785\n"
+ " add r1, r0, r1\n"
+ " ldr r1, [r1]\n"
+ " str r0, [sp, #0x8]\n"
+ " mov pc, r1\n"
+ "._786:\n"
+ " .align 2, 0\n"
+ "._785:\n"
+ " .word ._784\n"
+ "._784:\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._817\n"
+ " .word ._848\n"
+ " .word ._848\n"
+ " .word ._848\n"
+ " .word ._848\n"
+ "._812:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x14\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r6, ._823\n"
+ " ldr r2, ._823 + 4\n"
+ " ldr r0, [sp, #0x8]\n"
+ " add r1, r0, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r2\n"
+ " ldrh r0, [r0]\n"
+ " str r0, [sp, #0x4]\n"
+ " add r0, r2, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r0, [r0]\n"
+ " mov r8, r0\n"
+ " add r2, r2, #0x4\n"
+ " add r1, r1, r2\n"
+ " ldrb r1, [r1]\n"
+ " mov r9, r1\n"
+ " str r1, [sp]\n"
+ " ldr r0, ._823 + 8\n"
+ " add r1, r6, #0\n"
+ " ldr r2, [sp, #0x4]\n"
+ " mov r3, r8\n"
+ " bl Text_InitWindow\n"
+ " ldr r0, ._823 + 8\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldr r1, ._823 + 12\n"
+ " mov sl, r1\n"
+ " lsl r4, r7, #0x1\n"
+ " ldr r5, ._823 + 16\n"
+ " ldrb r0, [r5]\n"
+ " mov r7, #0x46\n"
+ " mul r0, r0, r7\n"
+ " add r0, r4, r0\n"
+ " add r0, r0, sl\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r2, #0xd3\n"
+ " lsl r2, r2, #0x1\n"
+ " ldrb r3, [r5]\n"
+ " lsl r3, r3, #0x5\n"
+ " add r3, r3, #0x19\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " ldr r0, ._823 + 8\n"
+ " add r1, r6, #0\n"
+ " bl Text_InitWindow\n"
+ " ldr r0, ._823 + 8\n"
+ " bl Text_PrintWindow8002F44\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r6]\n"
+ " ldrb r0, [r5]\n"
+ " mul r0, r0, r7\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, sl\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " mov r0, #0xb\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._823 + 20\n"
+ " add r1, r1, r0\n"
+ " add r0, r6, #0\n"
+ " bl StringAppend\n"
+ " mov r1, r9\n"
+ " str r1, [sp]\n"
+ " ldr r0, ._823 + 8\n"
+ " add r1, r6, #0\n"
+ " ldr r2, [sp, #0x4]\n"
+ " mov r3, r8\n"
+ " bl Text_InitWindow\n"
+ " ldr r0, ._823 + 8\n"
+ " bl Text_PrintWindow8002F44\n"
+ " b ._848\n"
+ "._824:\n"
+ " .align 2, 0\n"
+ "._823:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_821F424\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gSpeciesNames\n"
+ "._817:\n"
+ " ldr r6, ._826\n"
+ " ldr r3, ._826 + 4\n"
+ " lsl r1, r7, #0x1\n"
+ " ldr r0, ._826 + 8\n"
+ " ldrb r2, [r0]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r3\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r1, r2]\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " b ._825\n"
+ "._827:\n"
+ " .align 2, 0\n"
+ "._826:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_03004360\n"
+ "._814:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x18\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r6, ._830\n"
+ " ldr r1, ._830 + 4\n"
+ " mov sl, r1\n"
+ " ldr r4, ._830 + 8\n"
+ " ldr r2, [sp, #0x8]\n"
+ " add r1, r2, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r4\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r4, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r4, r4, #0x4\n"
+ " add r1, r1, r4\n"
+ " ldrb r0, [r1]\n"
+ " str r0, [sp]\n"
+ " add r0, r6, #0\n"
+ " mov r1, sl\n"
+ " bl Text_InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " lsl r4, r7, #0x1\n"
+ " ldr r5, ._830 + 12\n"
+ " ldrb r0, [r5]\n"
+ " mov r1, #0x46\n"
+ " mul r0, r0, r1\n"
+ " add r0, r4, r0\n"
+ " ldr r2, ._830 + 16\n"
+ " add r0, r0, r2\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " mov r0, sl\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r2, #0xd3\n"
+ " lsl r2, r2, #0x1\n"
+ " ldrb r3, [r5]\n"
+ " lsl r3, r3, #0x5\n"
+ " add r3, r3, #0x19\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " add r0, r6, #0\n"
+ " mov r1, sl\n"
+ " bl Text_InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " mov r0, #0xff\n"
+ " mov r1, sl\n"
+ " strb r0, [r1]\n"
+ " ldrb r0, [r5]\n"
+ " mov r2, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r4, r4, r0\n"
+ " ldr r0, ._830 + 16\n"
+ " add r4, r4, r0\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._828 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " bl ItemId_GetItem\n"
+ " add r1, r0, #0\n"
+ " mov r0, sl\n"
+ " bl StringAppend\n"
+ " b ._829\n"
+ "._831:\n"
+ " .align 2, 0\n"
+ "._830:\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_821F424\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_2023A76\n"
+ "._828:\n"
+ " ldr r1, ._833\n"
+ " mov r0, sl\n"
+ " bl StringAppend\n"
+ "._829:\n"
+ " ldr r6, ._833 + 4\n"
+ " ldr r1, ._833 + 8\n"
+ " ldr r5, ._833 + 12\n"
+ " ldr r2, [sp, #0x8]\n"
+ " add r4, r2, r7\n"
+ " lsl r4, r4, #0x1\n"
+ " add r0, r4, r5\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r5, #2\n"
+ " add r0, r4, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r5, r5, #0x4\n"
+ " add r4, r4, r5\n"
+ " ldrb r0, [r4]\n"
+ " str r0, [sp]\n"
+ " add r0, r6, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " b ._848\n"
+ "._834:\n"
+ " .align 2, 0\n"
+ "._833:\n"
+ " .word Str_821F624\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_821F424\n"
+ "._816:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x4\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r5, ._839\n"
+ " ldr r6, ._839 + 4\n"
+ " ldr r4, ._839 + 8\n"
+ " ldr r0, [sp, #0x8]\n"
+ " add r1, r0, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r4\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r4, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r4, r4, #0x4\n"
+ " add r1, r1, r4\n"
+ " ldrb r0, [r1]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " mov r4, #0x0\n"
+ " ldr r3, ._839 + 12\n"
+ " lsl r1, r7, #0x1\n"
+ " ldr r0, ._839 + 16\n"
+ " ldrb r2, [r0]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r3\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r1, r2]\n"
+ " cmp r0, #0x1\n"
+ " beq ._835 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._836 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._837 @cond_branch\n"
+ " b ._843\n"
+ "._840:\n"
+ " .align 2, 0\n"
+ "._839:\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_821F424\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_03004360\n"
+ "._836:\n"
+ " cmp r0, #0x2\n"
+ " beq ._841 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " beq ._842 @cond_branch\n"
+ " b ._843\n"
+ "._837:\n"
+ " mov r0, #0xb5\n"
+ " b ._844\n"
+ "._835:\n"
+ " mov r0, #0xb6\n"
+ "._844:\n"
+ " strb r0, [r6]\n"
+ " mov r4, #0x1\n"
+ " b ._847\n"
+ "._841:\n"
+ " mov r0, #0xb5\n"
+ " b ._846\n"
+ "._842:\n"
+ " mov r0, #0xb6\n"
+ "._846:\n"
+ " strb r0, [r6]\n"
+ " strb r0, [r6, #0x1]\n"
+ " mov r4, #0x2\n"
+ " b ._847\n"
+ "._843:\n"
+ " ldr r2, ._849\n"
+ " add r1, r4, r2\n"
+ " mov r0, #0xac\n"
+ " strb r0, [r1]\n"
+ " add r4, r4, #0x1\n"
+ " add r6, r2, #0\n"
+ "._847:\n"
+ " add r1, r4, r6\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r1]\n"
+ "._825:\n"
+ " ldr r5, ._849 + 4\n"
+ " ldr r4, ._849 + 8\n"
+ " ldr r0, [sp, #0x8]\n"
+ " add r1, r0, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r4\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r4, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r4, r4, #0x4\n"
+ " add r1, r1, r4\n"
+ " ldrb r0, [r1]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " b ._848\n"
+ "._850:\n"
+ " .align 2, 0\n"
+ "._849:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gUnknown_Debug_821F424\n"
+ "._815:\n"
+ " ldr r6, ._851\n"
+ " ldr r3, ._851 + 4\n"
+ " lsl r1, r7, #0x1\n"
+ " ldr r0, ._851 + 8\n"
+ " ldrb r2, [r0]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r3\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r1, r2]\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r5, ._851 + 12\n"
+ " ldr r4, ._851 + 16\n"
+ " lsl r1, r7, #0x2\n"
+ " add r1, r1, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r4\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r4, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r4, r4, #0x4\n"
+ " add r1, r1, r4\n"
+ " ldrb r0, [r1]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ "._848:\n"
+ " add sp, sp, #0xc\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._852:\n"
+ " .align 2, 0\n"
+ "._851:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gUnknown_Debug_821F424\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012294()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " ldr r2, ._854\n"
+ " ldr r0, ._854 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x1d\n"
+ " bhi ._853 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x18\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r0, ._854 + 8\n"
+ " mov sl, r0\n"
+ " ldr r1, ._854 + 12\n"
+ " mov r9, r1\n"
+ " ldr r2, ._854 + 16\n"
+ " mov r8, r2\n"
+ " ldr r7, ._854 + 20\n"
+ " ldrb r1, [r7]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r0, r2\n"
+ " ldrh r2, [r1]\n"
+ " ldr r3, ._854 + 24\n"
+ " add r1, r0, r3\n"
+ " ldrb r3, [r1]\n"
+ " ldr r1, ._854 + 28\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, sl\n"
+ " mov r1, r9\n"
+ " bl Text_InitWindow\n"
+ " mov r0, sl\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldrb r4, [r7]\n"
+ " lsl r4, r4, #0x1\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x5\n"
+ " bl __udivsi3\n"
+ " add r5, r0, #0\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x15\n"
+ " add r4, r4, r5\n"
+ " ldr r6, ._854 + 32\n"
+ " ldrb r1, [r6]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " ldr r2, ._854 + 36\n"
+ " add r4, r4, r2\n"
+ " mov r3, #0x0\n"
+ " ldsh r1, [r4, r3]\n"
+ " mov r0, r9\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r2, #0xd3\n"
+ " lsl r2, r2, #0x1\n"
+ " ldrb r3, [r6]\n"
+ " lsl r3, r3, #0x5\n"
+ " add r3, r3, #0x19\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, sl\n"
+ " mov r1, r9\n"
+ " bl Text_InitWindow\n"
+ " mov r0, sl\n"
+ " bl Text_PrintWindow8002F44\n"
+ " mov r0, #0xff\n"
+ " mov r1, r9\n"
+ " strb r0, [r1]\n"
+ " ldrb r1, [r7]\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r5\n"
+ " ldrb r2, [r6]\n"
+ " lsl r0, r2, #0x1\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r2, ._854 + 36\n"
+ " add r1, r1, r2\n"
+ " mov r3, #0x0\n"
+ " ldsh r1, [r1, r3]\n"
+ " mov r0, #0xd\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._854 + 40\n"
+ " add r1, r1, r0\n"
+ " mov r0, r9\n"
+ " bl StringAppend\n"
+ " ldrb r1, [r7]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x1\n"
+ " add r8, r8, r0\n"
+ " mov r1, r8\n"
+ " ldrh r2, [r1]\n"
+ " ldr r3, ._854 + 24\n"
+ " add r1, r0, r3\n"
+ " ldrb r3, [r1]\n"
+ " ldr r1, ._854 + 28\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, sl\n"
+ " mov r1, r9\n"
+ " bl Text_InitWindow\n"
+ " mov r0, sl\n"
+ " bl Text_PrintWindow8002F44\n"
+ "._853:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._855:\n"
+ " .align 2, 0\n"
+ "._854:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_821F564\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word gUnknown_Debug_821F566\n"
+ " .word gUnknown_Debug_821F568\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_2023B02\n"
+ " .word gMoveNames\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80123D8(u8 a)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x1d\n"
+ " bhi ._856 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x12\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r4, ._858\n"
+ " ldr r0, ._858 + 4\n"
+ " mov r8, r0\n"
+ " ldr r6, ._858 + 8\n"
+ " ldrh r1, [r6]\n"
+ " mov sl, r1\n"
+ " ldrb r7, [r6, #0x2]\n"
+ " ldrb r2, [r6, #0x4]\n"
+ " mov r9, r2\n"
+ " str r2, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r1, r8\n"
+ " mov r2, sl\n"
+ " add r3, r7, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " lsl r5, r5, #0x1\n"
+ " ldr r1, ._858 + 12\n"
+ " ldrb r0, [r1]\n"
+ " mov r2, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r0, r5, r0\n"
+ " ldr r1, ._858 + 16\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " lsl r0, r1, #0x3\n"
+ " sub r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._858 + 20\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0, #0x16]\n"
+ " mov r2, #0xd\n"
+ " add r1, r0, #0\n"
+ " mul r1, r1, r2\n"
+ " ldr r0, ._858 + 24\n"
+ " add r1, r1, r0\n"
+ " mov r0, r8\n"
+ " bl StringCopy\n"
+ " mov r1, r9\n"
+ " str r1, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r1, r8\n"
+ " mov r2, sl\n"
+ " add r3, r7, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x12\n"
+ " bl debug_sub_8010A7C\n"
+ " ldrh r2, [r6, #0x6]\n"
+ " mov r9, r2\n"
+ " ldrb r0, [r6, #0x8]\n"
+ " mov sl, r0\n"
+ " ldrb r6, [r6, #0xa]\n"
+ " str r6, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r1, r8\n"
+ " mov r3, sl\n"
+ " bl Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldr r1, ._858 + 12\n"
+ " ldrb r0, [r1]\n"
+ " mov r2, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r5, r5, r0\n"
+ " ldr r0, ._858 + 16\n"
+ " add r5, r5, r0\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r5, r2]\n"
+ " lsl r0, r1, #0x3\n"
+ " sub r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._858 + 20\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0, #0x17]\n"
+ " mov r2, #0xd\n"
+ " add r1, r0, #0\n"
+ " mul r1, r1, r2\n"
+ " ldr r0, ._858 + 24\n"
+ " add r1, r1, r0\n"
+ " mov r0, r8\n"
+ " bl StringCopy\n"
+ " str r6, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r1, r8\n"
+ " mov r2, r9\n"
+ " mov r3, sl\n"
+ " bl Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " b ._857\n"
+ "._859:\n"
+ " .align 2, 0\n"
+ "._858:\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_821F58C\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gBaseStats\n"
+ " .word gAbilityNames\n"
+ "._856:\n"
+ " ldr r6, ._860\n"
+ " ldr r1, ._860 + 4\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " ldr r5, ._860 + 8\n"
+ " ldr r4, ._860 + 12\n"
+ " ldrh r2, [r4]\n"
+ " ldrb r3, [r4, #0x2]\n"
+ " ldrb r0, [r4, #0x4]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldrh r2, [r4, #0x6]\n"
+ " ldrb r3, [r4, #0x8]\n"
+ " ldrb r0, [r4, #0xa]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ "._857:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._861:\n"
+ " .align 2, 0\n"
+ "._860:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gAbilityNames\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gUnknown_Debug_821F58C\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012540()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " ldr r5, ._862\n"
+ " ldr r0, ._862 + 4\n"
+ " add r0, r0, #0x44\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r4, ._862 + 8\n"
+ " ldr r1, ._862 + 12\n"
+ " mov r3, #0x9b\n"
+ " lsl r3, r3, #0x1\n"
+ " add r0, r1, r3\n"
+ " ldrh r2, [r0]\n"
+ " mov r6, #0x9c\n"
+ " lsl r6, r6, #0x1\n"
+ " add r0, r1, r6\n"
+ " ldrb r3, [r0]\n"
+ " add r6, r6, #0x2\n"
+ " add r0, r1, r6\n"
+ " ldrb r0, [r0]\n"
+ " str r0, [sp]\n"
+ " add r0, r4, #0\n"
+ " add r1, r5, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._863:\n"
+ " .align 2, 0\n"
+ "._862:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gUnknown_Debug_821F424\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_nullsub_3()
+{
+ asm(
+ " bx lr\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80125A0()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._864\n"
+ " ldr r3, ._864 + 4\n"
+ " ldr r2, ._864 + 8\n"
+ " ldr r0, ._864 + 12\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._864 + 16\n"
+ " ldrb r2, [r1]\n"
+ " mov r1, #0x8c\n"
+ " mul r1, r1, r2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, r3\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x6d\n"
+ " strb r1, [r0]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._865:\n"
+ " .align 2, 0\n"
+ "._864:\n"
+ " .word gSharedMem\n"
+ " .word gUnknown_Debug_821F680\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004360\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80125E4()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._866\n"
+ " ldr r3, ._866 + 4\n"
+ " ldr r2, ._866 + 8\n"
+ " ldr r0, ._866 + 12\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._866 + 16\n"
+ " ldrb r2, [r1]\n"
+ " mov r1, #0x8c\n"
+ " mul r1, r1, r2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, r3\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x81\n"
+ " strb r1, [r0]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._867:\n"
+ " .align 2, 0\n"
+ "._866:\n"
+ " .word gSharedMem\n"
+ " .word gUnknown_Debug_821F680\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004360\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012628()
+{
+ asm(
+ " ldr r3, ._868\n"
+ " ldr r2, ._868 + 4\n"
+ " ldr r0, ._868 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r1, r1, #0x2\n"
+ " ldr r0, ._868 + 12\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r2\n"
+ " ldr r0, [r1]\n"
+ " add r0, r0, r3\n"
+ " mov r1, #0x6d\n"
+ " strb r1, [r0]\n"
+ " bx lr\n"
+ "._869:\n"
+ " .align 2, 0\n"
+ "._868:\n"
+ " .word gSharedMem\n"
+ " .word gUnknown_Debug_821F798\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word gUnknown_Debug_03004360\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012658()
+{
+ asm(
+ " ldr r3, ._870\n"
+ " ldr r2, ._870 + 4\n"
+ " ldr r0, ._870 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r1, r1, #0x2\n"
+ " ldr r0, ._870 + 12\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r2\n"
+ " ldr r0, [r1]\n"
+ " add r0, r0, r3\n"
+ " mov r1, #0x81\n"
+ " strb r1, [r0]\n"
+ " bx lr\n"
+ "._871:\n"
+ " .align 2, 0\n"
+ "._870:\n"
+ " .word gSharedMem\n"
+ " .word gUnknown_Debug_821F798\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word gUnknown_Debug_03004360\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012688()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r8\n"
+ " push {r6}\n"
+ " add sp, sp, #0xfffffff4\n"
+ " mov r1, #0x0\n"
+ " mov r4, #0xcd\n"
+ " lsl r4, r4, #0x1\n"
+ " ldr r3, ._873\n"
+ " mov r2, #0x0\n"
+ "._872:\n"
+ " add r0, r1, r3\n"
+ " strb r2, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, r4\n"
+ " ble ._872 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " bl SetHBlankCallback\n"
+ " mov r0, #0x0\n"
+ " bl SetVBlankCallback\n"
+ " mov r5, #0x0\n"
+ " str r5, [sp, #0x8]\n"
+ " ldr r1, ._873 + 4\n"
+ " add r0, sp, #0x8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0xc0\n"
+ " lsl r0, r0, #0x13\n"
+ " str r0, [r1, #0x4]\n"
+ " ldr r0, ._873 + 8\n"
+ " str r0, [r1, #0x8]\n"
+ " ldr r0, [r1, #0x8]\n"
+ " ldr r0, ._873 + 12\n"
+ " strh r5, [r0]\n"
+ " sub r0, r0, #0xc\n"
+ " strh r5, [r0]\n"
+ " add r0, r0, #0x4\n"
+ " strh r5, [r0]\n"
+ " sub r0, r0, #0x2\n"
+ " strh r5, [r0]\n"
+ " add r0, r0, #0x4\n"
+ " strh r5, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r5, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r5, [r0]\n"
+ " ldr r4, ._873 + 16\n"
+ " add r0, r4, #0\n"
+ " bl Text_LoadWindowTemplate\n"
+ " bl ResetPaletteFade\n"
+ " ldr r0, ._873 + 20\n"
+ " strh r5, [r0]\n"
+ " ldr r1, ._873 + 24\n"
+ " mov r0, #0xa0\n"
+ " strh r0, [r1]\n"
+ " ldr r0, ._873 + 28\n"
+ " strh r5, [r0]\n"
+ " ldr r0, ._873 + 32\n"
+ " strh r5, [r0]\n"
+ " ldr r0, ._873 + 36\n"
+ " strh r5, [r0]\n"
+ " ldr r0, ._873 + 40\n"
+ " strh r5, [r0]\n"
+ " ldr r0, ._873 + 44\n"
+ " strh r5, [r0]\n"
+ " ldr r0, ._873 + 48\n"
+ " strh r5, [r0]\n"
+ " ldr r1, ._873 + 52\n"
+ " mov r0, #0x9\n"
+ " strb r0, [r1]\n"
+ " bl sub_800D6D4\n"
+ " bl sub_800DAB8\n"
+ " bl ResetSpriteData\n"
+ " bl ResetTasks\n"
+ " bl FreeAllSpritePalettes\n"
+ " ldr r1, ._873 + 56\n"
+ " mov r0, #0x4\n"
+ " strb r0, [r1]\n"
+ " ldr r6, ._873 + 60\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r6]\n"
+ " ldr r0, ._873 + 64\n"
+ " add r1, r4, #0\n"
+ " bl Text_InitWindowWithTemplate\n"
+ " ldrh r2, [r6]\n"
+ " lsl r0, r2, #0x3\n"
+ " ldr r1, ._873 + 68\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._873 + 72\n"
+ " mov r8, r1\n"
+ " lsl r2, r2, #0x2\n"
+ " add r2, r2, r8\n"
+ " ldrb r1, [r2]\n"
+ " ldrb r2, [r2, #0x1]\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x12\n"
+ " ldr r4, ._873 + 76\n"
+ " ldr r4, [r4, #0x4]\n"
+ " str r4, [sp]\n"
+ " ldrh r4, [r6]\n"
+ " str r4, [sp, #0x4]\n"
+ " bl DecompressPicFromTable_2\n"
+ " ldr r1, ._873 + 80\n"
+ " ldrh r0, [r6]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0x88\n"
+ " lsl r1, r1, #0x1\n"
+ " mov r2, #0x20\n"
+ " bl LoadCompressedPalette\n"
+ " ldrh r0, [r6]\n"
+ " mov r1, #0x1\n"
+ " bl GetMonSpriteTemplate_803C56C\n"
+ " ldr r0, ._873 + 84\n"
+ " ldrh r1, [r6]\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r8\n"
+ " ldrb r2, [r1, #0x1]\n"
+ " add r2, r2, #0x28\n"
+ " mov r1, #0xb0\n"
+ " mov r3, #0x28\n"
+ " bl CreateSprite\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r3, ._873 + 88\n"
+ " lsl r1, r4, #0x4\n"
+ " add r1, r1, r4\n"
+ " lsl r1, r1, #0x2\n"
+ " add r0, r3, #0\n"
+ " add r0, r0, #0x1c\n"
+ " add r0, r1, r0\n"
+ " ldr r2, ._873 + 92\n"
+ " str r2, [r0]\n"
+ " add r1, r1, r3\n"
+ " ldrb r2, [r1, #0x5]\n"
+ " mov r0, #0xf\n"
+ " and r0, r0, r2\n"
+ " mov r2, #0x10\n"
+ " orr r0, r0, r2\n"
+ " strb r0, [r1, #0x5]\n"
+ " mov r1, #0x80\n"
+ " lsl r1, r1, #0x13\n"
+ " mov r2, #0xfa\n"
+ " lsl r2, r2, #0x5\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r0, ._873 + 96\n"
+ " bl SetHBlankCallback\n"
+ " ldr r0, ._873 + 100\n"
+ " bl SetVBlankCallback\n"
+ " bl m4aMPlayAllStop\n"
+ " ldr r0, ._873 + 104\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._873 + 108\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " strh r5, [r1, #0x8]\n"
+ " strh r4, [r1, #0xa]\n"
+ " ldr r0, ._873 + 112\n"
+ " bl SetMainCallback2\n"
+ " add sp, sp, #0xc\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._874:\n"
+ " .align 2, 0\n"
+ "._873:\n"
+ " .word gUnknown_Debug_2023B62\n"
+ " .word 0x40000d4\n"
+ " .word 0x85006000\n"
+ " .word 0x400004c\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 gBattleTerrain\n"
+ " .word gReservedSpritePaletteCount\n"
+ " .word gCurrentMove\n"
+ " .word gUnknown_03004210\n"
+ " .word gMonFrontPicTable\n"
+ " .word gMonFrontPicCoords\n"
+ " .word gUnknown_081FAF4C\n"
+ " .word gMonPaletteTable\n"
+ " .word gUnknown_02024E8C\n"
+ " .word gSprites\n"
+ " .word nullsub_37+1\n"
+ " .word debug_nullsub_45+1\n"
+ " .word debug_sub_8011DD4+1\n"
+ " .word debug_sub_8012D10+1\n"
+ " .word gTasks\n"
+ " .word debug_sub_8012878+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012878()
+{
+ asm(
+ " push {lr}\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " ldr r0, ._876\n"
+ " bl Text_UpdateWindowInBattle\n"
+ " bl UpdatePaletteFade\n"
+ " bl RunTasks\n"
+ " ldr r0, ._876 + 4\n"
+ " ldrh r1, [r0, #0x2c]\n"
+ " mov r0, #0x82\n"
+ " lsl r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " bne ._875 @cond_branch\n"
+ " ldr r0, ._876 + 8\n"
+ " bl SetMainCallback2\n"
+ "._875:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._877:\n"
+ " .align 2, 0\n"
+ "._876:\n"
+ " .word gUnknown_03004210\n"
+ " .word gMain\n"
+ " .word debug_sub_80108B8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80128B4()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r8\n"
+ " push {r6}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x9\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r5, ._878\n"
+ " ldr r4, ._878 + 4\n"
+ " mov r0, #0x23\n"
+ " mov r8, r0\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x90\n"
+ " mov r3, #0x2\n"
+ " bl Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldr r6, ._878 + 8\n"
+ " ldrh r1, [r6]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r4, #0x3]\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r4, #0x4]\n"
+ " ldrh r1, [r6]\n"
+ " mov r0, #0xb\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._878 + 12\n"
+ " add r1, r1, r0\n"
+ " add r0, r4, #0\n"
+ " bl StringAppend\n"
+ " mov r0, r8\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x90\n"
+ " mov r3, #0x2\n"
+ " bl Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._879:\n"
+ " .align 2, 0\n"
+ "._878:\n"
+ " .word gUnknown_03004210\n"
+ " .word gBattleTextBuff1\n"
+ " .word gCurrentMove\n"
+ " .word gSpeciesNames\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012938()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, sl\n"
+ " mov r5, r9\n"
+ " mov r4, r8\n"
+ " push {r4, r5, r6}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " add r5, r0, #0\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x7\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r6, ._880\n"
+ " ldr r4, ._880 + 4\n"
+ " mov r0, #0x25\n"
+ " mov r8, r0\n"
+ " str r0, [sp]\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0xa2\n"
+ " mov r3, #0x2\n"
+ " bl Text_InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldr r1, ._880 + 8\n"
+ " add r0, r4, #0\n"
+ " bl StringCopy\n"
+ " add r0, r4, #4\n"
+ " ldr r1, ._880 + 12\n"
+ " mov sl, r1\n"
+ " ldr r2, ._880 + 16\n"
+ " mov r9, r2\n"
+ " ldrh r1, [r2]\n"
+ " sub r1, r1, #0x1\n"
+ " add r1, r1, sl\n"
+ " ldrb r1, [r1]\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, r8\n"
+ " str r0, [sp]\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0xa2\n"
+ " mov r3, #0x2\n"
+ " bl Text_InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldr r2, ._880 + 20\n"
+ " ldr r1, ._880 + 24\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xa\n"
+ " ldsh r0, [r0, r1]\n"
+ " lsl r1, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r2\n"
+ " mov r2, r9\n"
+ " ldrh r0, [r2]\n"
+ " sub r0, r0, #0x1\n"
+ " add r0, r0, sl\n"
+ " ldrb r0, [r0]\n"
+ " neg r0, r0\n"
+ " strh r0, [r1, #0x26]\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._881:\n"
+ " .align 2, 0\n"
+ "._880:\n"
+ " .word gUnknown_03004210\n"
+ " .word gBattleTextBuff1\n"
+ " .word Str_821F7B8\n"
+ " .word gUnknown_Debug_2023B62\n"
+ " .word gCurrentMove\n"
+ " .word gSprites\n"
+ " .word gTasks\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80129F8()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r8\n"
+ " push {r6}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " add r5, r0, #0\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " ldr r6, ._882\n"
+ " ldrh r2, [r6]\n"
+ " lsl r0, r2, #0x3\n"
+ " ldr r1, ._882 + 4\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._882 + 8\n"
+ " mov r8, r1\n"
+ " lsl r2, r2, #0x2\n"
+ " add r2, r2, r8\n"
+ " ldrb r1, [r2]\n"
+ " ldrb r2, [r2, #0x1]\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x12\n"
+ " ldr r4, ._882 + 12\n"
+ " ldr r4, [r4, #0x4]\n"
+ " str r4, [sp]\n"
+ " ldrh r4, [r6]\n"
+ " str r4, [sp, #0x4]\n"
+ " bl DecompressPicFromTable_2\n"
+ " ldr r1, ._882 + 16\n"
+ " ldrh r0, [r6]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0x88\n"
+ " lsl r1, r1, #0x1\n"
+ " mov r2, #0x20\n"
+ " bl LoadCompressedPalette\n"
+ " ldr r4, ._882 + 20\n"
+ " ldr r0, ._882 + 24\n"
+ " lsl r2, r5, #0x2\n"
+ " add r2, r2, r5\n"
+ " lsl r2, r2, #0x3\n"
+ " add r2, r2, r0\n"
+ " mov r1, #0xa\n"
+ " ldsh r0, [r2, r1]\n"
+ " lsl r1, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r4\n"
+ " ldrh r0, [r6]\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r8\n"
+ " ldrb r0, [r0, #0x1]\n"
+ " add r0, r0, #0x28\n"
+ " strh r0, [r1, #0x22]\n"
+ " mov r1, #0xa\n"
+ " ldsh r0, [r2, r1]\n"
+ " lsl r1, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r4\n"
+ " ldr r3, ._882 + 28\n"
+ " ldrh r0, [r6]\n"
+ " sub r0, r0, #0x1\n"
+ " add r0, r0, r3\n"
+ " ldrb r0, [r0]\n"
+ " neg r0, r0\n"
+ " strh r0, [r1, #0x26]\n"
+ " mov r0, #0xa\n"
+ " ldsh r1, [r2, r0]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x0\n"
+ " bl StartSpriteAnim\n"
+ " add sp, sp, #0x8\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._883:\n"
+ " .align 2, 0\n"
+ "._882:\n"
+ " .word gCurrentMove\n"
+ " .word gMonFrontPicTable\n"
+ " .word gMonFrontPicCoords\n"
+ " .word gUnknown_081FAF4C\n"
+ " .word gMonPaletteTable\n"
+ " .word gSprites\n"
+ " .word gTasks\n"
+ " .word gUnknown_Debug_2023B62\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012AC0()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r6, r1, #0x18\n"
+ " ldr r3, ._885\n"
+ " ldr r4, ._885 + 4\n"
+ " b ._884\n"
+ "._886:\n"
+ " .align 2, 0\n"
+ "._885:\n"
+ " .word gCurrentMove\n"
+ " .word gBaseStats\n"
+ "._890:\n"
+ " ldrb r0, [r1, #0x7]\n"
+ " cmp r0, #0x2\n"
+ " beq ._887 @cond_branch\n"
+ "._884:\n"
+ " add r2, r3, #0\n"
+ " lsl r0, r5, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " ldrh r1, [r2]\n"
+ " add r0, r0, r1\n"
+ " strh r0, [r2]\n"
+ " lsl r0, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " bne ._888 @cond_branch\n"
+ " ldr r1, ._891\n"
+ " add r0, r1, #0\n"
+ " strh r0, [r2]\n"
+ "._888:\n"
+ " ldrh r1, [r2]\n"
+ " ldr r0, ._891\n"
+ " cmp r1, r0\n"
+ " bne ._889 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r2]\n"
+ "._889:\n"
+ " ldrh r0, [r3]\n"
+ " lsl r1, r0, #0x3\n"
+ " sub r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r4\n"
+ " ldrb r0, [r1, #0x6]\n"
+ " cmp r0, #0x2\n"
+ " bne ._890 @cond_branch\n"
+ "._887:\n"
+ " bl debug_sub_80128B4\n"
+ " add r0, r6, #0\n"
+ " bl debug_sub_8012938\n"
+ " add r0, r6, #0\n"
+ " bl debug_sub_80129F8\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._892:\n"
+ " .align 2, 0\n"
+ "._891:\n"
+ " .word 0x19b\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012B2C()
+{
+ asm(
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x11\n"
+ " ldr r1, ._893\n"
+ " add r2, r0, r1\n"
+ " mov r1, #0x1\n"
+ " strh r1, [r2]\n"
+ " ldr r1, ._893 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x2\n"
+ " strh r1, [r0]\n"
+ " bx lr\n"
+ "._894:\n"
+ " .align 2, 0\n"
+ "._893:\n"
+ " .word 0x600c772\n"
+ " .word 0x600c7b2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012B4C()
+{
+ asm(
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x11\n"
+ " ldr r2, ._895\n"
+ " add r1, r0, r2\n"
+ " ldr r3, ._895 + 4\n"
+ " add r2, r3, #0\n"
+ " strh r2, [r1]\n"
+ " ldr r1, ._895 + 8\n"
+ " add r0, r0, r1\n"
+ " strh r2, [r0]\n"
+ " bx lr\n"
+ "._896:\n"
+ " .align 2, 0\n"
+ "._895:\n"
+ " .word 0x600c772\n"
+ " .word 0x1016\n"
+ " .word 0x600c7b2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012B70()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r6, r1, #0x18\n"
+ " cmp r6, #0\n"
+ " beq ._897 @cond_branch\n"
+ " mov r4, #0x1\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x18\n"
+ " mov r1, #0x1c\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x21\n"
+ " bl sub_802BBD4\n"
+ " bl debug_sub_80128B4\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_8012938\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_80129F8\n"
+ " ldr r1, ._899\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " strh r4, [r0, #0x8]\n"
+ " b ._898\n"
+ "._900:\n"
+ " .align 2, 0\n"
+ "._899:\n"
+ " .word gTasks\n"
+ "._897:\n"
+ " str r6, [sp]\n"
+ " mov r0, #0x18\n"
+ " mov r1, #0x1c\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x21\n"
+ " bl sub_802BBD4\n"
+ " ldr r0, ._901\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " mov r0, #0x2\n"
+ " strh r0, [r4, #0x8]\n"
+ " ldr r5, ._901 + 4\n"
+ " ldr r1, ._901 + 8\n"
+ " mov r2, #0xa4\n"
+ " lsl r2, r2, #0x2\n"
+ " mov r0, #0x1d\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " mov r3, #0x1a\n"
+ " bl Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " strh r6, [r4, #0xe]\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8012B2C\n"
+ "._898:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._902:\n"
+ " .align 2, 0\n"
+ "._901:\n"
+ " .word gTasks\n"
+ " .word gUnknown_03004210\n"
+ " .word Str_821F7DA\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012C08()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " add r4, r1, #0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x9\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r7, ._905\n"
+ " ldr r5, ._905 + 4\n"
+ " mov r0, #0x23\n"
+ " mov r8, r0\n"
+ " str r0, [sp]\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x90\n"
+ " mov r3, #0x2\n"
+ " bl Text_InitWindow\n"
+ " add r0, r7, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x7\n"
+ " bl debug_sub_8010A7C\n"
+ " mov r0, #0x25\n"
+ " str r0, [sp]\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0xa2\n"
+ " mov r3, #0x2\n"
+ " bl Text_InitWindow\n"
+ " add r0, r7, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x18\n"
+ " mov r1, #0x1c\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x21\n"
+ " bl sub_802BBD4\n"
+ " cmp r4, #0\n"
+ " beq ._903 @cond_branch\n"
+ " ldr r1, ._905 + 8\n"
+ " lsl r4, r6, #0x2\n"
+ " add r0, r4, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x4\n"
+ " strh r1, [r0, #0x8]\n"
+ " ldr r1, ._905 + 12\n"
+ " mov r0, r8\n"
+ " str r0, [sp]\n"
+ " add r0, r7, #0\n"
+ " mov r2, #0x90\n"
+ " mov r3, #0x2\n"
+ " bl Text_InitWindow\n"
+ " b ._904\n"
+ "._906:\n"
+ " .align 2, 0\n"
+ "._905:\n"
+ " .word gUnknown_03004210\n"
+ " .word gBattleTextBuff1\n"
+ " .word gTasks\n"
+ " .word gUnknown_Debug_821F7F3\n"
+ "._903:\n"
+ " ldr r1, ._907\n"
+ " lsl r4, r6, #0x2\n"
+ " add r0, r4, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x3\n"
+ " strh r1, [r0, #0x8]\n"
+ " ldr r1, ._907 + 4\n"
+ " mov r0, r8\n"
+ " str r0, [sp]\n"
+ " add r0, r7, #0\n"
+ " mov r2, #0x90\n"
+ " mov r3, #0x2\n"
+ " bl Text_InitWindow\n"
+ "._904:\n"
+ " add r5, r4, #0\n"
+ " ldr r4, ._907 + 8\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldr r1, ._907 + 12\n"
+ " mov r2, #0xa4\n"
+ " lsl r2, r2, #0x2\n"
+ " mov r0, #0x1d\n"
+ " str r0, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r3, #0x1a\n"
+ " bl Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldr r1, ._907\n"
+ " add r0, r5, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x1\n"
+ " strh r1, [r0, #0xe]\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8012B2C\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._908:\n"
+ " .align 2, 0\n"
+ "._907:\n"
+ " .word gTasks\n"
+ " .word Str_821F7EA\n"
+ " .word gUnknown_03004210\n"
+ " .word BattleText_YesNo\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012D10()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._911\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0x4\n"
+ " bls ._909 @cond_branch\n"
+ " b ._1067\n"
+ "._909:\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._911 + 4\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._912:\n"
+ " .align 2, 0\n"
+ "._911:\n"
+ " .word gTasks\n"
+ " .word ._913\n"
+ "._913:\n"
+ " .word ._914\n"
+ " .word ._915\n"
+ " .word ._916\n"
+ " .word ._917\n"
+ " .word ._918\n"
+ "._914:\n"
+ " bl debug_sub_80128B4\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_8012938\n"
+ " ldr r4, ._920\n"
+ " ldr r1, ._920 + 4\n"
+ " mov r2, #0xc8\n"
+ " lsl r2, r2, #0x1\n"
+ " mov r0, #0x23\n"
+ " str r0, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r3, #0x13\n"
+ " bl Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldr r1, ._920 + 8\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldrh r1, [r0, #0x8]\n"
+ " add r1, r1, #0x1\n"
+ " strh r1, [r0, #0x8]\n"
+ " ldrb r0, [r0, #0xc]\n"
+ " b ._919\n"
+ "._921:\n"
+ " .align 2, 0\n"
+ "._920:\n"
+ " .word gUnknown_03004210\n"
+ " .word Str_821F7BD\n"
+ " .word gTasks\n"
+ "._915:\n"
+ " ldr r2, ._924\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._922 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._924 + 4\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xc]\n"
+ " bl nullsub_8\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " mov r0, #0x3\n"
+ " neg r0, r0\n"
+ " and r0, r0, r1\n"
+ " b ._931\n"
+ "._925:\n"
+ " .align 2, 0\n"
+ "._924:\n"
+ " .word gMain\n"
+ " .word gTasks\n"
+ "._922:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._926 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._928\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xc]\n"
+ " bl nullsub_8\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " mov r0, #0x2\n"
+ " b ._927\n"
+ "._929:\n"
+ " .align 2, 0\n"
+ "._928:\n"
+ " .word gTasks\n"
+ "._926:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._930 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._932\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xc]\n"
+ " bl nullsub_8\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " and r0, r0, r1\n"
+ " b ._931\n"
+ "._933:\n"
+ " .align 2, 0\n"
+ "._932:\n"
+ " .word gTasks\n"
+ "._930:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._934 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._936\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xc]\n"
+ " bl nullsub_8\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " mov r0, #0x1\n"
+ "._927:\n"
+ " orr r0, r0, r1\n"
+ "._931:\n"
+ " strh r0, [r4, #0xc]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ "._919:\n"
+ " mov r1, #0x0\n"
+ " bl sub_802E3E4\n"
+ " b ._1067\n"
+ "._937:\n"
+ " .align 2, 0\n"
+ "._936:\n"
+ " .word gTasks\n"
+ "._934:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r4, #0x1\n"
+ " add r0, r4, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._938 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._943\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0xc\n"
+ " ldsh r0, [r0, r2]\n"
+ " cmp r0, #0x1\n"
+ " beq ._939 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._940 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._941 @cond_branch\n"
+ " b ._1067\n"
+ "._944:\n"
+ " .align 2, 0\n"
+ "._943:\n"
+ " .word gTasks\n"
+ "._940:\n"
+ " cmp r0, #0x2\n"
+ " beq ._945 @cond_branch\n"
+ "._990:\n"
+ " cmp r0, #0x3\n"
+ " bne ._946 @cond_branch\n"
+ " b ._1014\n"
+ "._946:\n"
+ " b ._1067\n"
+ "._941:\n"
+ " ldr r1, ._952\n"
+ " ldr r0, ._952 + 4\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " add r1, r0, r1\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x3f\n"
+ " bls ._949 @cond_branch\n"
+ " b ._1067\n"
+ "._949:\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b ._1019\n"
+ "._953:\n"
+ " .align 2, 0\n"
+ "._952:\n"
+ " .word gUnknown_Debug_2023B62\n"
+ " .word gCurrentMove\n"
+ "._939:\n"
+ " mov r0, #0x1\n"
+ " b ._997\n"
+ "._945:\n"
+ " ldr r1, ._957\n"
+ " ldrh r2, [r1]\n"
+ " mov r0, #0xcd\n"
+ " lsl r0, r0, #0x1\n"
+ " cmp r2, r0\n"
+ " bhi ._955 @cond_branch\n"
+ " add r0, r2, #1\n"
+ "._979:\n"
+ " strh r0, [r1]\n"
+ " b ._1025\n"
+ "._958:\n"
+ " .align 2, 0\n"
+ "._957:\n"
+ " .word gCurrentMove\n"
+ "._955:\n"
+ " strh r4, [r1]\n"
+ " b ._1025\n"
+ "._938:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._960 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._966\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xc\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0x1\n"
+ " bne ._961 @cond_branch\n"
+ " b ._1007\n"
+ "._961:\n"
+ " cmp r0, #0x1\n"
+ " bgt ._963 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._964 @cond_branch\n"
+ " b ._1067\n"
+ "._967:\n"
+ " .align 2, 0\n"
+ "._966:\n"
+ " .word gTasks\n"
+ "._963:\n"
+ " cmp r0, #0x2\n"
+ " beq ._968 @cond_branch\n"
+ " b ._990\n"
+ "._964:\n"
+ " ldr r1, ._973\n"
+ " ldr r0, ._973 + 4\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " add r1, r0, r1\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._970 @cond_branch\n"
+ " b ._1067\n"
+ "._970:\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b ._1019\n"
+ "._974:\n"
+ " .align 2, 0\n"
+ "._973:\n"
+ " .word gUnknown_Debug_2023B62\n"
+ " .word gCurrentMove\n"
+ "._968:\n"
+ " ldr r1, ._977\n"
+ " ldrh r0, [r1]\n"
+ " cmp r0, #0x1\n"
+ " bls ._975 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " b ._979\n"
+ "._978:\n"
+ " .align 2, 0\n"
+ "._977:\n"
+ " .word gCurrentMove\n"
+ "._975:\n"
+ " ldr r2, ._980\n"
+ " add r0, r2, #0\n"
+ " b ._979\n"
+ "._981:\n"
+ " .align 2, 0\n"
+ "._980:\n"
+ " .word 0x19b\n"
+ "._960:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._982 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._987\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xc\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._983 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._984 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._985 @cond_branch\n"
+ " b ._1067\n"
+ "._988:\n"
+ " .align 2, 0\n"
+ "._987:\n"
+ " .word gTasks\n"
+ "._984:\n"
+ " cmp r0, #0x2\n"
+ " beq ._989 @cond_branch\n"
+ " b ._990\n"
+ "._985:\n"
+ " ldr r3, ._995\n"
+ " ldr r2, ._995 + 4\n"
+ " ldrh r0, [r2]\n"
+ " sub r0, r0, #0x1\n"
+ " add r1, r0, r3\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x3f\n"
+ " bls ._991 @cond_branch\n"
+ " b ._1067\n"
+ "._991:\n"
+ " add r0, r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " ldrh r0, [r2]\n"
+ " sub r0, r0, #0x1\n"
+ " add r1, r0, r3\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x40\n"
+ " bls ._1019 @cond_branch\n"
+ " mov r0, #0x40\n"
+ " strb r0, [r1]\n"
+ " b ._1019\n"
+ "._996:\n"
+ " .align 2, 0\n"
+ "._995:\n"
+ " .word gUnknown_Debug_2023B62\n"
+ " .word gCurrentMove\n"
+ "._983:\n"
+ " mov r0, #0x1\n"
+ " b ._997\n"
+ "._989:\n"
+ " ldr r3, ._1000\n"
+ " ldrh r2, [r3]\n"
+ " add r1, r2, #0\n"
+ " add r1, r1, #0xa\n"
+ " ldr r0, ._1000 + 4\n"
+ " cmp r1, r0\n"
+ " bgt ._998 @cond_branch\n"
+ " strh r1, [r3]\n"
+ " b ._1025\n"
+ "._1001:\n"
+ " .align 2, 0\n"
+ "._1000:\n"
+ " .word gCurrentMove\n"
+ " .word 0x19b\n"
+ "._998:\n"
+ " ldr r1, ._1003\n"
+ " add r0, r2, r1\n"
+ " strh r0, [r3]\n"
+ " b ._1025\n"
+ "._1004:\n"
+ " .align 2, 0\n"
+ "._1003:\n"
+ " .word 0xfffffe70\n"
+ "._982:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._1005 @cond_branch\n"
+ " b ._1067\n"
+ "._1005:\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._1011\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0xc\n"
+ " ldsh r3, [r0, r2]\n"
+ " cmp r3, #0x1\n"
+ " beq ._1007 @cond_branch\n"
+ " cmp r3, #0x1\n"
+ " bgt ._1008 @cond_branch\n"
+ " cmp r3, #0\n"
+ " beq ._1009 @cond_branch\n"
+ " b ._1067\n"
+ "._1012:\n"
+ " .align 2, 0\n"
+ "._1011:\n"
+ " .word gTasks\n"
+ "._1008:\n"
+ " cmp r3, #0x2\n"
+ " beq ._1013 @cond_branch\n"
+ " cmp r3, #0x3\n"
+ " beq ._1014 @cond_branch\n"
+ " b ._1067\n"
+ "._1009:\n"
+ " ldr r1, ._1020\n"
+ " ldr r0, ._1020 + 4\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " add r2, r0, r1\n"
+ " ldrb r0, [r2]\n"
+ " add r1, r0, #0\n"
+ " cmp r1, #0\n"
+ " bne ._1016 @cond_branch\n"
+ " b ._1067\n"
+ "._1016:\n"
+ " cmp r1, #0x8\n"
+ " bls ._1018 @cond_branch\n"
+ " sub r0, r0, #0x8\n"
+ " strb r0, [r2]\n"
+ " b ._1019\n"
+ "._1021:\n"
+ " .align 2, 0\n"
+ "._1020:\n"
+ " .word gUnknown_Debug_2023B62\n"
+ " .word gCurrentMove\n"
+ "._1018:\n"
+ " strb r3, [r2]\n"
+ "._1019:\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_8012938\n"
+ " b ._1067\n"
+ "._1007:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ "._997:\n"
+ " add r1, r5, #0\n"
+ " bl debug_sub_8012AC0\n"
+ " b ._1067\n"
+ "._1013:\n"
+ " ldr r2, ._1026\n"
+ " ldrh r0, [r2]\n"
+ " add r1, r0, #0\n"
+ " sub r1, r1, #0xa\n"
+ " cmp r1, #0x1\n"
+ " ble ._1024 @cond_branch\n"
+ " strh r1, [r2]\n"
+ " b ._1025\n"
+ "._1027:\n"
+ " .align 2, 0\n"
+ "._1026:\n"
+ " .word gCurrentMove\n"
+ "._1024:\n"
+ " mov r1, #0xc8\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " strh r0, [r2]\n"
+ "._1025:\n"
+ " bl debug_sub_80128B4\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_8012938\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_80129F8\n"
+ " b ._1067\n"
+ "._1014:\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x0\n"
+ " bl debug_sub_8012B70\n"
+ " b ._1067\n"
+ "._916:\n"
+ " ldr r0, ._1032\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1030 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._1032 + 4\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xe]\n"
+ " bl debug_sub_8012B4C\n"
+ " mov r0, #0x0\n"
+ " b ._1055\n"
+ "._1033:\n"
+ " .align 2, 0\n"
+ "._1032:\n"
+ " .word gMain\n"
+ " .word gTasks\n"
+ "._1030:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._1046 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1035 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._1037\n"
+ " lsl r1, r5, #0x2\n"
+ " add r1, r1, r5\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldrb r1, [r1, #0xe]\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_8012C08\n"
+ " b ._1067\n"
+ "._1038:\n"
+ " .align 2, 0\n"
+ "._1037:\n"
+ " .word gTasks\n"
+ "._1035:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._1039 @cond_branch\n"
+ " b ._1067\n"
+ "._1039:\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " b ._1063\n"
+ "._917:\n"
+ " ldr r0, ._1044\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1042 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._1044 + 4\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xe]\n"
+ " bl debug_sub_8012B4C\n"
+ " mov r0, #0x0\n"
+ " b ._1055\n"
+ "._1045:\n"
+ " .align 2, 0\n"
+ "._1044:\n"
+ " .word gMain\n"
+ " .word gTasks\n"
+ "._1042:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._1046 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1047 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._1050\n"
+ " lsl r1, r5, #0x2\n"
+ " add r1, r1, r5\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " mov r2, #0xe\n"
+ " ldsh r0, [r1, r2]\n"
+ " cmp r0, #0\n"
+ " bne ._1063 @cond_branch\n"
+ " ldr r1, ._1050 + 4\n"
+ " ldr r2, ._1050 + 8\n"
+ " mov r0, #0x1f\n"
+ " bl debug_sub_80132C8\n"
+ " b ._1063\n"
+ "._1051:\n"
+ " .align 2, 0\n"
+ "._1050:\n"
+ " .word gTasks\n"
+ " .word gUnknown_Debug_2023B62\n"
+ " .word 0x19b\n"
+ "._1047:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1067 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " b ._1063\n"
+ "._918:\n"
+ " ldr r0, ._1056\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1054 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._1056 + 4\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xe]\n"
+ " bl debug_sub_8012B4C\n"
+ " mov r0, #0x0\n"
+ " b ._1055\n"
+ "._1057:\n"
+ " .align 2, 0\n"
+ "._1056:\n"
+ " .word gMain\n"
+ " .word gTasks\n"
+ "._1054:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1058 @cond_branch\n"
+ "._1046:\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._1060\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xe]\n"
+ " bl debug_sub_8012B4C\n"
+ " mov r0, #0x1\n"
+ "._1055:\n"
+ " strh r0, [r4, #0xe]\n"
+ " bl debug_sub_8012B2C\n"
+ " b ._1067\n"
+ "._1061:\n"
+ " .align 2, 0\n"
+ "._1060:\n"
+ " .word gTasks\n"
+ "._1058:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1062 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._1065\n"
+ " lsl r1, r5, #0x2\n"
+ " add r1, r1, r5\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " mov r2, #0xe\n"
+ " ldsh r0, [r1, r2]\n"
+ " cmp r0, #0\n"
+ " bne ._1063 @cond_branch\n"
+ " ldr r1, ._1065 + 4\n"
+ " ldr r2, ._1065 + 8\n"
+ " mov r0, #0x1f\n"
+ " bl debug_sub_8013294\n"
+ "._1063:\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1\n"
+ " bl debug_sub_8012B70\n"
+ " b ._1067\n"
+ "._1066:\n"
+ " .align 2, 0\n"
+ "._1065:\n"
+ " .word gTasks\n"
+ " .word gUnknown_Debug_2023B62\n"
+ " .word 0x19b\n"
+ "._1062:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1067 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1\n"
+ " bl debug_sub_8012B70\n"
+ "._1067:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+u8 debug_sub_8013240(void)
+{
+ if (IdentifyFlash() == 0)
+ return 0;
+ else
+ return 1;
+}
+
+u32 debug_sub_8013258(u16 sectorNum, u8 *data, u32 size)
+{
+ while (1)
+ {
+ if (ProgramFlashSectorAndVerify(sectorNum, data) != 0)
+ return 0;
+ if (size <= 0x1000)
+ break;
+ size -= 0x1000;
+ data += 0x1000;
+ sectorNum++;
+ }
+ return 1;
+}
+
+u32 debug_sub_8013294(u8 sectorNum, void *data, u32 size)
+{
+ u32 result;
+
+ if (debug_sub_8013240() != 0)
+ return 0;
+ m4aSoundVSyncOff();
+ result = debug_sub_8013258(sectorNum, data, size);
+ m4aSoundVSyncOn();
+ return result;
+}
+
+void debug_sub_80132C8(u8 a, void *b, u32 c)
+{
+ if (debug_sub_8013240() == 0)
+ ReadFlash(a, 0, b, c);
+}
+#endif
+
void oac_poke_opponent(struct Sprite *sprite)
{
sprite->callback = sub_8010278;
@@ -1554,6 +6804,642 @@ void sub_8010800(void)
gBattleMainFunc = bc_8012FAC;
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80138CC()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._1167\n"
+ " ldrb r0, [r0]\n"
+ " bl GetBankSide\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._1163 @cond_branch\n"
+ " b ._1186\n"
+ "._1163:\n"
+ " ldr r1, ._1167 + 4\n"
+ " ldr r2, ._1167 + 8\n"
+ " add r0, r1, r2\n"
+ " ldrb r0, [r0]\n"
+ " add r2, r1, #0\n"
+ " cmp r0, #0x4\n"
+ " bls ._1165 @cond_branch\n"
+ " b ._1186\n"
+ "._1165:\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._1167 + 12\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._1168:\n"
+ " .align 2, 0\n"
+ "._1167:\n"
+ " .word gActiveBank\n"
+ " .word gSharedMem\n"
+ " .word 0x160fd\n"
+ " .word ._1169\n"
+ "._1169:\n"
+ " .word ._1170\n"
+ " .word ._1171\n"
+ " .word ._1172\n"
+ " .word ._1173\n"
+ " .word ._1174\n"
+ "._1170:\n"
+ " ldr r1, ._1177\n"
+ " ldr r0, ._1177 + 4\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldr r1, [r0]\n"
+ " ldr r0, ._1177 + 8\n"
+ " cmp r1, r0\n"
+ " bne ._1186 @cond_branch\n"
+ " ldr r0, ._1177 + 12\n"
+ " add r1, r2, r0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " b ._1187\n"
+ "._1178:\n"
+ " .align 2, 0\n"
+ "._1177:\n"
+ " .word gBattleBankFunc\n"
+ " .word gActiveBank\n"
+ " .word sub_802C098+1\n"
+ " .word 0x160fd\n"
+ "._1171:\n"
+ " ldr r1, ._1180\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r1, #0x2c]\n"
+ " strh r0, [r1, #0x2e]\n"
+ " ldr r0, ._1180 + 4\n"
+ " add r1, r2, r0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._1180 + 8\n"
+ " add r1, r2, r0\n"
+ " mov r0, #0x80\n"
+ " b ._1187\n"
+ "._1181:\n"
+ " .align 2, 0\n"
+ "._1180:\n"
+ " .word gMain\n"
+ " .word 0x160fd\n"
+ " .word 0x160fe\n"
+ "._1172:\n"
+ " ldr r0, ._1184\n"
+ " add r3, r2, r0\n"
+ " ldrb r0, [r3]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r3]\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._1186 @cond_branch\n"
+ " ldr r1, ._1184 + 4\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r1, #0x2c]\n"
+ " strh r0, [r1, #0x2e]\n"
+ " ldr r0, ._1184 + 8\n"
+ " add r1, r2, r0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x80\n"
+ " strb r0, [r3]\n"
+ " b ._1186\n"
+ "._1185:\n"
+ " .align 2, 0\n"
+ "._1184:\n"
+ " .word 0x160fe\n"
+ " .word gMain\n"
+ " .word 0x160fd\n"
+ "._1173:\n"
+ " ldr r0, ._1188\n"
+ " add r1, r2, r0\n"
+ " ldrb r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._1186 @cond_branch\n"
+ " ldr r1, ._1188 + 4\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r1, #0x2c]\n"
+ " strh r0, [r1, #0x2e]\n"
+ " ldr r0, ._1188 + 8\n"
+ " add r1, r2, r0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " b ._1187\n"
+ "._1189:\n"
+ " .align 2, 0\n"
+ "._1188:\n"
+ " .word 0x160fe\n"
+ " .word gMain\n"
+ " .word 0x160fd\n"
+ "._1174:\n"
+ " ldr r0, ._1190\n"
+ " add r1, r2, r0\n"
+ " mov r0, #0x0\n"
+ "._1187:\n"
+ " strb r0, [r1]\n"
+ "._1186:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._1191:\n"
+ " .align 2, 0\n"
+ "._1190:\n"
+ " .word 0x160fd\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80139E4()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " ldr r0, ._1198\n"
+ " ldrb r1, [r0]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0\n"
+ " beq ._1192 @cond_branch\n"
+ " ldr r2, ._1198 + 4\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r2]\n"
+ " ldr r1, ._1198 + 8\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._1193 @cond_branch\n"
+ " add r4, r2, #0\n"
+ " add r5, r1, #0\n"
+ "._1194:\n"
+ " bl debug_sub_80138CC\n"
+ " ldrb r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r4]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldrb r1, [r5]\n"
+ " cmp r0, r1\n"
+ " bcc ._1194 @cond_branch\n"
+ "._1193:\n"
+ " ldr r0, ._1198 + 12\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " ldr r1, ._1198 + 4\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._1198 + 8\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._1200 @cond_branch\n"
+ " ldr r5, ._1198 + 16\n"
+ " add r4, r1, #0\n"
+ "._1196:\n"
+ " ldrb r0, [r4]\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r5\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " ldrb r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r4]\n"
+ " ldr r1, ._1198 + 8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldrb r1, [r1]\n"
+ " cmp r0, r1\n"
+ " bcc ._1196 @cond_branch\n"
+ " b ._1200\n"
+ "._1199:\n"
+ " .align 2, 0\n"
+ "._1198:\n"
+ " .word gUnknown_02023A14_50\n"
+ " .word gActiveBank\n"
+ " .word gNoOfAllBanks\n"
+ " .word gBattleMainFunc\n"
+ " .word gBattleBankFunc\n"
+ "._1192:\n"
+ " ldr r0, ._1202\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " ldr r1, ._1202 + 4\n"
+ " strb r4, [r1]\n"
+ " ldr r0, ._1202 + 8\n"
+ " ldrb r0, [r0]\n"
+ " cmp r4, r0\n"
+ " bcs ._1200 @cond_branch\n"
+ " ldr r5, ._1202 + 12\n"
+ " add r4, r1, #0\n"
+ "._1201:\n"
+ " ldrb r0, [r4]\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r5\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " ldrb r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r4]\n"
+ " ldr r1, ._1202 + 8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldrb r1, [r1]\n"
+ " cmp r0, r1\n"
+ " bcc ._1201 @cond_branch\n"
+ "._1200:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._1203:\n"
+ " .align 2, 0\n"
+ "._1202:\n"
+ " .word gBattleMainFunc\n"
+ " .word gActiveBank\n"
+ " .word gNoOfAllBanks\n"
+ " .word gBattleBankFunc\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void sub_8010874()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " mov r0, #0x0\n"
+ " bl TurnValuesCleanUp\n"
+ " bl SpecialStatusesClear\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x0\n"
+ " ldr r0, ._1215\n"
+ " mov sl, r0\n"
+ " ldr r1, ._1215 + 4\n"
+ " mov r9, r1\n"
+ " ldr r4, ._1215 + 8\n"
+ " mov r8, r4\n"
+ " ldr r0, ._1215 + 12\n"
+ " mov ip, r0\n"
+ " ldr r4, ._1215 + 16\n"
+ " mov r5, #0x0\n"
+ " ldr r7, ._1215 + 20\n"
+ " ldr r6, ._1215 + 24\n"
+ "._1205:\n"
+ " ldr r0, ._1215 + 28\n"
+ " add r0, r5, r0\n"
+ " str r3, [r0]\n"
+ " mov r1, #0x0\n"
+ "._1204:\n"
+ " add r0, r4, r1\n"
+ " strb r3, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, #0x1b\n"
+ " bls ._1204 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " strb r0, [r4, #0x16]\n"
+ " ldr r1, ._1215 + 32\n"
+ " add r0, r2, r1\n"
+ " strb r3, [r0]\n"
+ " mov r0, ip\n"
+ " strh r3, [r0]\n"
+ " mov r1, r8\n"
+ " strh r3, [r1]\n"
+ " mov r0, r9\n"
+ " strh r3, [r0]\n"
+ " mov r1, sl\n"
+ " strh r3, [r1]\n"
+ " ldr r0, ._1215 + 36\n"
+ " add r1, r2, r0\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r1]\n"
+ " strh r3, [r6]\n"
+ " strh r3, [r7]\n"
+ " ldr r1, ._1215 + 40\n"
+ " add r0, r5, r1\n"
+ " str r3, [r0]\n"
+ " mov r0, #0x2\n"
+ " add sl, sl, r0\n"
+ " add r9, r9, r0\n"
+ " add r8, r8, r0\n"
+ " add ip, ip, r0\n"
+ " add r4, r4, #0x1c\n"
+ " add r5, r5, #0x4\n"
+ " add r7, r7, #0x2\n"
+ " add r6, r6, #0x2\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, #0x3\n"
+ " ble ._1205 @cond_branch\n"
+ " mov r5, #0x0\n"
+ " ldr r3, ._1215 + 44\n"
+ " ldr r4, ._1215 + 48\n"
+ " mov r2, #0x1\n"
+ "._1207:\n"
+ " strh r5, [r4]\n"
+ " mov r1, #0x0\n"
+ "._1206:\n"
+ " add r0, r3, r1\n"
+ " strb r5, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, #0xb\n"
+ " bls ._1206 @cond_branch\n"
+ " add r3, r3, #0xc\n"
+ " add r4, r4, #0x2\n"
+ " sub r2, r2, #0x1\n"
+ " cmp r2, #0\n"
+ " bge ._1207 @cond_branch\n"
+ " mov r1, #0x0\n"
+ " ldr r2, ._1215 + 52\n"
+ " strb r1, [r2]\n"
+ " ldr r3, ._1215 + 56\n"
+ " strb r1, [r3]\n"
+ " ldr r4, ._1215 + 60\n"
+ " strh r1, [r4]\n"
+ " ldr r1, ._1215 + 64\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x0\n"
+ "._1208:\n"
+ " add r0, r1, r2\n"
+ " strb r3, [r0]\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, #0x2b\n"
+ " bls ._1208 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " ldr r1, ._1215 + 68\n"
+ " str r0, [r1]\n"
+ " ldr r2, ._1215 + 72\n"
+ " ldrh r1, [r2]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._1210 @cond_branch\n"
+ " ldr r3, ._1215 + 76\n"
+ " ldrb r1, [r3, #0x15]\n"
+ " mov r0, #0x4\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1210 @cond_branch\n"
+ " mov r0, #0x80\n"
+ " ldr r4, ._1215 + 68\n"
+ " str r0, [r4]\n"
+ "._1210:\n"
+ " ldr r1, ._1215 + 76\n"
+ " ldrb r0, [r1, #0x15]\n"
+ " lsl r0, r0, #0x1e\n"
+ " lsr r0, r0, #0x1f\n"
+ " ldr r3, ._1215 + 80\n"
+ " ldr r4, ._1215 + 84\n"
+ " add r2, r3, r4\n"
+ " mov r1, #0x0\n"
+ " strb r0, [r2]\n"
+ " ldr r0, ._1215 + 88\n"
+ " strb r1, [r0]\n"
+ " ldr r2, ._1215 + 92\n"
+ " strb r1, [r2]\n"
+ " ldr r3, ._1215 + 96\n"
+ " str r1, [r3]\n"
+ " mov r2, #0x0\n"
+ " ldr r4, ._1215 + 100\n"
+ " strh r1, [r4]\n"
+ " ldr r1, ._1215 + 80\n"
+ " ldr r3, ._1215 + 104\n"
+ " add r0, r1, r3\n"
+ " strb r2, [r0]\n"
+ " ldr r4, ._1215 + 108\n"
+ " add r0, r1, r4\n"
+ " strb r2, [r0]\n"
+ " ldr r1, ._1215 + 112\n"
+ " mov r2, #0x0\n"
+ " add r0, r1, #7\n"
+ "._1211:\n"
+ " strb r2, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " cmp r0, r1\n"
+ " bge ._1211 @cond_branch\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._1215 + 116\n"
+ " strh r5, [r0]\n"
+ " mov r0, #0x0\n"
+ " ldr r1, ._1215 + 120\n"
+ " str r0, [r1]\n"
+ " ldr r2, ._1215 + 124\n"
+ " strh r0, [r2]\n"
+ " ldr r4, ._1215 + 80\n"
+ " ldr r3, ._1215 + 128\n"
+ " add r0, r4, r3\n"
+ " strb r5, [r0]\n"
+ " ldr r1, ._1215 + 132\n"
+ " add r0, r4, r1\n"
+ " strb r5, [r0]\n"
+ " ldr r2, ._1215 + 136\n"
+ " strb r5, [r2]\n"
+ " ldr r3, ._1215 + 140\n"
+ " strb r5, [r3]\n"
+ " sub r1, r1, #0x29\n"
+ " add r0, r4, r1\n"
+ " strb r5, [r0]\n"
+ " ldr r2, ._1215 + 144\n"
+ " add r0, r4, r2\n"
+ " strb r5, [r0]\n"
+ " ldr r3, ._1215 + 148\n"
+ " add r0, r4, r3\n"
+ " strb r5, [r0]\n"
+ " ldr r0, ._1215 + 152\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " ldr r2, ._1215 + 156\n"
+ " lsl r1, r0, #0x3\n"
+ " sub r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r2\n"
+ " ldrb r1, [r1, #0x8]\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r1\n"
+ " ldr r1, ._1215 + 160\n"
+ " bl __divsi3\n"
+ " ldr r2, ._1215 + 164\n"
+ " add r1, r4, r2\n"
+ " strb r0, [r1]\n"
+ " ldr r3, ._1215 + 168\n"
+ " add r1, r4, r3\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._1215 + 172\n"
+ " add r0, r4, r1\n"
+ " strb r5, [r0]\n"
+ " sub r2, r2, #0x33\n"
+ " add r1, r4, r2\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " mov r2, #0x0\n"
+ " mov r1, #0x0\n"
+ "._1212:\n"
+ " ldr r3, ._1215 + 176\n"
+ " add r0, r2, r3\n"
+ " add r0, r0, r4\n"
+ " strb r1, [r0]\n"
+ " add r3, r3, #0x20\n"
+ " add r0, r2, r3\n"
+ " add r0, r0, r4\n"
+ " strb r1, [r0]\n"
+ " add r3, r3, #0x1c\n"
+ " add r0, r2, r3\n"
+ " add r0, r0, r4\n"
+ " strb r1, [r0]\n"
+ " add r3, r3, #0x8\n"
+ " add r0, r2, r3\n"
+ " add r0, r0, r4\n"
+ " strb r1, [r0]\n"
+ " add r3, r3, #0x10\n"
+ " add r0, r2, r3\n"
+ " add r0, r0, r4\n"
+ " strb r1, [r0]\n"
+ " add r3, r3, #0x8\n"
+ " add r0, r2, r3\n"
+ " add r0, r0, r4\n"
+ " strb r1, [r0]\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, #0x7\n"
+ " ble ._1212 @cond_branch\n"
+ " ldr r4, ._1215 + 80\n"
+ " ldr r1, ._1215 + 180\n"
+ " add r0, r4, r1\n"
+ " mov r2, #0x0\n"
+ " mov r1, #0x6\n"
+ " strb r1, [r0]\n"
+ " sub r3, r3, #0x3f\n"
+ " add r0, r4, r3\n"
+ " strb r1, [r0]\n"
+ " ldr r1, ._1215 + 184\n"
+ " add r0, r4, r1\n"
+ " strb r2, [r0]\n"
+ " ldr r3, ._1215 + 188\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xa\n"
+ " add r0, r3, #0\n"
+ " add r0, r0, #0x40\n"
+ "._1213:\n"
+ " strb r1, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " sub r2, r2, #0x1\n"
+ " cmp r2, #0\n"
+ " bge ._1213 @cond_branch\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r3, #0x13]\n"
+ " strb r1, [r3]\n"
+ " strb r1, [r3, #0x1]\n"
+ " strb r1, [r3, #0x2]\n"
+ " strb r1, [r3, #0x3]\n"
+ " strb r1, [r3, #0x4]\n"
+ " ldrb r2, [r3, #0x5]\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " mov r2, #0x3\n"
+ " neg r2, r2\n"
+ " and r0, r0, r2\n"
+ " strb r0, [r3, #0x5]\n"
+ " strh r1, [r3, #0x20]\n"
+ " strh r1, [r3, #0x22]\n"
+ " strh r1, [r3, #0x24]\n"
+ " strh r1, [r3, #0x6]\n"
+ " strh r1, [r3, #0x26]\n"
+ " strh r1, [r3, #0x28]\n"
+ " mov r2, #0x0\n"
+ " add r5, r3, #0\n"
+ " add r5, r5, #0x8\n"
+ " mov r4, #0x0\n"
+ " add r1, r3, #0\n"
+ " add r1, r1, #0x14\n"
+ "._1214:\n"
+ " add r0, r2, r5\n"
+ " strb r4, [r0]\n"
+ " strb r4, [r1]\n"
+ " strb r4, [r1, #0x16]\n"
+ " add r1, r1, #0x1\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, #0x9\n"
+ " ble ._1214 @cond_branch\n"
+ " ldr r2, ._1215 + 80\n"
+ " ldr r3, ._1215 + 192\n"
+ " add r0, r2, r3\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r0]\n"
+ " ldr r4, ._1215 + 196\n"
+ " add r0, r2, r4\n"
+ " strb r1, [r0]\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._1216:\n"
+ " .align 2, 0\n"
+ "._1215:\n"
+ " .word gUnknown_02024C4C\n"
+ " .word gLastHitByType\n"
+ " .word gLastLandedMoves\n"
+ " .word gLastUsedMove\n"
+ " .word gDisableStructs\n"
+ " .word gUnknown_02024C2C\n"
+ " .word gLockedMoves\n"
+ " .word gStatuses3\n"
+ " .word gUnknown_02024C70\n"
+ " .word gUnknown_02024C5C\n"
+ " .word gSharedMem+0x17100\n"
+ " .word gSideTimers\n"
+ " .word gSideAffecting\n"
+ " .word gBankAttacker\n"
+ " .word gBankTarget\n"
+ " .word gBattleWeather\n"
+ " .word gWishFutureKnock\n"
+ " .word gHitMarker\n"
+ " .word gBattleTypeFlags\n"
+ " .word gSaveBlock2\n"
+ " .word gSharedMem\n"
+ " .word 0x16084\n"
+ " .word gMultiHitCounter\n"
+ " .word gBattleOutcome\n"
+ " .word gBattleExecBuffer\n"
+ " .word gPaydayMoney\n"
+ " .word 0x17130\n"
+ " .word 0x17160\n"
+ " .word gBattleCommunication\n"
+ " .word gPauseCounterBattle\n"
+ " .word gBattleMoveDamage\n"
+ " .word gUnknown_02024DE8\n"
+ " .word 0x16002\n"
+ " .word 0x160a1\n"
+ " .word gLeveledUpInBattle\n"
+ " .word gAbsentBankFlags\n"
+ " .word 0x16086\n"
+ " .word 0x16087\n"
+ " .word gEnemyParty\n"
+ " .word gBaseStats\n"
+ " .word 0x4fb\n"
+ " .word 0x16089\n"
+ " .word 0x16088\n"
+ " .word 0x1601b\n"
+ " .word 0x160ac\n"
+ " .word 0x160c8\n"
+ " .word 0x16113\n"
+ " .word gBattleResults\n"
+ " .word 0x1609e\n"
+ " .word 0x1609f\n"
+ "\n"
+ );
+}
+#else
+
void sub_8010824(void)
{
gBattleMainFunc();
@@ -1663,6 +7549,7 @@ void sub_8010874(void)
gBattleResults.caughtNick[i] = 0;
}
}
+#endif
void SwitchInClearSetData(void)
{
@@ -4141,6 +10028,12 @@ void SetActionsAndBanksTurnOrder(void)
}
}
}
+ // Debug ROM has a register swap from the retail ROM.
+ // And doing this seems to fix it.
+#if DEBUG
+ asm("");asm("");asm("");asm("");asm("");asm("");asm("");asm("");asm("");
+ asm("");asm("");asm("");asm("");asm("");asm("");asm("");
+#endif
gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
eFocusPunchBank = 0;
}
diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c
index 3763fc309..9fe1f6cb0 100644
--- a/src/battle/battle_4.c
+++ b/src/battle/battle_4.c
@@ -5018,7 +5018,156 @@ _0801F610: .4byte BattleScript_SAtkDown2\n\
}
#endif // NONMATCHING
-
+#if DEBUG
+__attribute__((naked))
+static void atk15_seteffectwithchance(void)
+{
+ asm("\
+ push {r4, lr}\n\
+ ldr r2, ._1037\n\
+ ldr r0, ._1037 + 4\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r1\n\
+ add r0, r0, r2\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x20\n\
+ bne ._1035 @cond_branch\n\
+ ldr r2, ._1037 + 8\n\
+ ldr r0, ._1037 + 12\n\
+ ldrh r1, [r0]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldrb r0, [r0, #0x5]\n\
+ lsl r4, r0, #0x1\n\
+ b ._1036\n\
+._1038:\n\
+ .align 2, 0\n\
+._1037:\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gBattleMoves\n\
+ .word gCurrentMove\n\
+._1035:\n\
+ ldr r2, ._1045\n\
+ ldr r0, ._1045 + 4\n\
+ ldrh r1, [r0]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldrb r4, [r0, #0x5]\n\
+._1036:\n\
+ ldr r0, ._1045 + 8\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ ldr r2, ._1045 + 12\n\
+ cmp r0, #0\n\
+ beq ._1039 @cond_branch\n\
+ ldrb r1, [r2, #0x3]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1040 @cond_branch\n\
+ ldr r0, ._1045 + 16\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1050 @cond_branch\n\
+._1039:\n\
+ ldrb r1, [r2, #0x3]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1043 @cond_branch\n\
+._1040:\n\
+ ldr r0, ._1045 + 16\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1043 @cond_branch\n\
+ ldr r2, ._1045 + 12\n\
+ ldrb r1, [r2, #0x3]\n\
+ mov r0, #0x7f\n\
+ and r0, r0, r1\n\
+ strb r0, [r2, #0x3]\n\
+ b ._1044\n\
+._1046:\n\
+ .align 2, 0\n\
+._1045:\n\
+ .word gBattleMoves\n\
+ .word gCurrentMove\n\
+ .word gUnknown_02023A14_50\n\
+ .word gBattleCommunication\n\
+ .word gBattleMoveFlags\n\
+._1043:\n\
+ bl Random\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ mov r1, #0x64\n\
+ bl __umodsi3\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ cmp r0, r4\n\
+ bhi ._1049 @cond_branch\n\
+ ldr r0, ._1052\n\
+ ldrb r0, [r0, #0x3]\n\
+ cmp r0, #0\n\
+ beq ._1049 @cond_branch\n\
+ ldr r0, ._1052 + 4\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1049 @cond_branch\n\
+ cmp r4, #0x63\n\
+ bls ._1050 @cond_branch\n\
+._1044:\n\
+ mov r0, #0x0\n\
+ mov r1, #0x80\n\
+ bl SetMoveEffect\n\
+ b ._1054\n\
+._1053:\n\
+ .align 2, 0\n\
+._1052:\n\
+ .word gBattleCommunication\n\
+ .word gBattleMoveFlags\n\
+._1050:\n\
+ mov r0, #0x0\n\
+ mov r1, #0x0\n\
+ bl SetMoveEffect\n\
+ b ._1054\n\
+._1049:\n\
+ ldr r1, ._1055\n\
+ ldr r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ str r0, [r1]\n\
+._1054:\n\
+ ldr r0, ._1055 + 4\n\
+ mov r1, #0x0\n\
+ strb r1, [r0, #0x3]\n\
+ ldr r0, ._1055 + 8\n\
+ ldr r2, ._1055 + 12\n\
+ add r0, r0, r2\n\
+ strb r1, [r0]\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._1056:\n\
+ .align 2, 0\n\
+._1055:\n\
+ .word gBattlescriptCurrInstr\n\
+ .word gBattleCommunication\n\
+ .word +0x2000000\n\
+ .word 0x16112");
+}
+#else
static void atk15_seteffectwithchance(void)
{
u32 PercentChance;
@@ -5043,6 +5192,7 @@ static void atk15_seteffectwithchance(void)
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
gBattleStruct->unk16112 = 0;
}
+#endif
static void atk16_seteffectprimary(void)
{
@@ -12620,6 +12770,193 @@ static void atk9D_mimicattackcopy(void)
}
}
+#if DEBUG
+__attribute__((naked))
+static void atk9E_metronome(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ ldr r6, ._3076\n\
+ ldrb r2, [r6]\n\
+ lsl r1, r2, #0x1\n\
+ ldr r0, ._3076 + 4\n\
+ add r3, r1, r0\n\
+ ldr r5, ._3076 + 8\n\
+ mov r4, #0x58\n\
+ add r0, r2, #0\n\
+ mul r0, r0, r4\n\
+ add r1, r0, r5\n\
+ ldrh r0, [r1, #0xe]\n\
+ cmp r0, #0\n\
+ bne ._3071 @cond_branch\n\
+ ldrh r2, [r1, #0x10]\n\
+ cmp r2, #0\n\
+ beq ._3071 @cond_branch\n\
+ ldrh r0, [r1, #0x12]\n\
+ cmp r0, #0\n\
+ beq ._3071 @cond_branch\n\
+ ldrh r0, [r3]\n\
+ cmp r0, #0\n\
+ bne ._3072 @cond_branch\n\
+ strh r2, [r3]\n\
+._3072:\n\
+ ldr r1, ._3076 + 12\n\
+ ldrh r0, [r3]\n\
+ strh r0, [r1]\n\
+ ldrb r0, [r6]\n\
+ mul r0, r0, r4\n\
+ add r0, r0, r5\n\
+ ldrh r5, [r0, #0x10]\n\
+ ldrh r2, [r0, #0x12]\n\
+ add r7, r1, #0\n\
+ cmp r5, r2\n\
+ bcs ._3073 @cond_branch\n\
+ ldrh r0, [r3]\n\
+ cmp r0, r2\n\
+ beq ._3074 @cond_branch\n\
+ add r0, r0, #0x1\n\
+ b ._3079\n\
+._3077:\n\
+ .align 2, 0\n\
+._3076:\n\
+ .word gBankAttacker\n\
+ .word +0x20160b4\n\
+ .word gBattleMons\n\
+ .word gCurrentMove\n\
+._3073:\n\
+ ldrh r4, [r3]\n\
+ add r1, r4, #0\n\
+ mov r0, #0xb1\n\
+ lsl r0, r0, #0x1\n\
+ cmp r1, r0\n\
+ bne ._3078 @cond_branch\n\
+ mov r0, #0x1\n\
+ b ._3079\n\
+._3078:\n\
+ cmp r1, r2\n\
+ bne ._3080 @cond_branch\n\
+._3074:\n\
+ strh r5, [r3]\n\
+ b ._3081\n\
+._3080:\n\
+ add r0, r4, #1\n\
+._3079:\n\
+ strh r0, [r3]\n\
+._3081:\n\
+ ldr r4, ._3083\n\
+ ldr r2, [r4]\n\
+ ldr r0, ._3083 + 4\n\
+ and r2, r2, r0\n\
+ str r2, [r4]\n\
+ ldr r6, ._3083 + 8\n\
+ ldr r5, ._3083 + 12\n\
+ ldr r3, ._3083 + 16\n\
+ ldrh r1, [r7]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r5\n\
+ ldr r0, [r0]\n\
+ str r0, [r6]\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x4\n\
+ orr r2, r2, r0\n\
+ str r2, [r4]\n\
+ ldrh r0, [r7]\n\
+ b ._3082\n\
+._3084:\n\
+ .align 2, 0\n\
+._3083:\n\
+ .word gHitMarker\n\
+ .word 0xfffffbff\n\
+ .word gBattlescriptCurrInstr\n\
+ .word gBattleScriptsForMoveEffects\n\
+ .word gBattleMoves\n\
+._3071:\n\
+ ldr r7, ._3090\n\
+ mov r6, #0xb1\n\
+ lsl r6, r6, #0x1\n\
+ ldr r5, ._3090 + 4\n\
+ ldr r0, ._3090 + 8\n\
+ mov r8, r0\n\
+._3089:\n\
+ bl Random\n\
+ ldr r2, ._3090 + 12\n\
+ add r1, r2, #0\n\
+ and r0, r0, r1\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r7]\n\
+ cmp r0, r6\n\
+ bhi ._3089 @cond_branch\n\
+ mov r0, #0x3\n\
+._3086:\n\
+ sub r0, r0, #0x1\n\
+ cmp r0, #0\n\
+ bge ._3086 @cond_branch\n\
+ ldr r4, ._3090\n\
+ ldrh r2, [r4]\n\
+ ldr r3, ._3090 + 16\n\
+ sub r0, r5, #2\n\
+._3088:\n\
+ add r0, r0, #0x2\n\
+ ldrh r1, [r0]\n\
+ cmp r1, r2\n\
+ beq ._3087 @cond_branch\n\
+ cmp r1, r3\n\
+ bne ._3088 @cond_branch\n\
+._3087:\n\
+ ldr r0, ._3090 + 16\n\
+ cmp r1, r0\n\
+ bne ._3089 @cond_branch\n\
+ ldr r2, ._3090 + 20\n\
+ ldr r0, [r2]\n\
+ ldr r1, ._3090 + 24\n\
+ and r0, r0, r1\n\
+ str r0, [r2]\n\
+ ldr r3, ._3090 + 28\n\
+ ldr r2, ._3090 + 32\n\
+ ldrh r1, [r4]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldr r0, [r0]\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+ ldrh r0, [r4]\n\
+._3082:\n\
+ mov r1, #0x0\n\
+ bl GetMoveTarget\n\
+ ldr r1, ._3090 + 36\n\
+ strb r0, [r1]\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._3091:\n\
+ .align 2, 0\n\
+._3090:\n\
+ .word gCurrentMove\n\
+ .word sMovesForbiddenToCopy\n\
+ .word gBattlescriptCurrInstr\n\
+ .word 0x1ff\n\
+ .word 0xffff\n\
+ .word gHitMarker\n\
+ .word 0xfffffbff\n\
+ .word gBattleScriptsForMoveEffects\n\
+ .word gBattleMoves\n\
+ .word gBankTarget");
+}
+#else
#ifdef NONMATCHING
static void atk9E_metronome(void)
{
@@ -12721,6 +13058,7 @@ _0802795C: .4byte gBankTarget\n\
.syntax divided");
}
#endif // NONMATCHING
+#endif
static void atk9F_dmgtolevel(void)
{
diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c
index 2ac9df2b9..629a57d25 100644
--- a/src/battle/battle_ai.c
+++ b/src/battle/battle_ai.c
@@ -13,6 +13,8 @@
#include "util.h"
#include "ewram.h"
+extern u8 gUnknown_02023A14_50;
+extern u32 gUnknown_02023A14_4C;
extern u16 gBattleTypeFlags;
extern u16 gBattleWeather;
extern u8 gActiveBank;
@@ -336,11 +338,15 @@ void BattleAI_SetupAIData(void)
else if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
AI_THINKING_STRUCT->aiFlags = 0x80000000;
#ifdef GERMAN
- else if (gBattleTypeFlags & 0x900 || gTrainerBattleOpponent == 0x400)
+ else if (gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER) || gTrainerBattleOpponent == 0x400)
AI_THINKING_STRUCT->aiFlags = 7;
#endif
else // otherwise, just set aiFlags to whatever flags the trainer has set in their data.
AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent].aiFlags;
+#if DEBUG
+ if (gUnknown_02023A14_50 & 1)
+ AI_THINKING_STRUCT->aiFlags = gUnknown_02023A14_4C;
+#endif
}
u8 BattleAI_GetAIActionToUse(void)
diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c
index 5947053b6..5382738f7 100644
--- a/src/battle/battle_controller_opponent.c
+++ b/src/battle/battle_controller_opponent.c
@@ -30,6 +30,7 @@ struct MovePpInfo
u8 ppBonuses;
};
+extern u8 gUnknown_02023A14_50;
extern u8 gActiveBank;
extern u8 gBattleBufferA[][0x200];
extern u16 gBattlePartyID[];
@@ -1213,14 +1214,23 @@ void OpponentHandleTrainerThrow(void)
{
u32 trainerPicIndex;
- if (gTrainerBattleOpponent == 0x400)
- trainerPicIndex = GetSecretBaseTrainerPicIndex();
- else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
- trainerPicIndex = get_trainer_class_pic_index();
- else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
- trainerPicIndex = GetEReaderTrainerPicIndex();
+#if DEBUG
+ if (gUnknown_02023A14_50 & 0x10)
+ {
+ trainerPicIndex = gSharedMem[0x160A3];
+ }
else
- trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic;
+#endif
+ {
+ if (gTrainerBattleOpponent == 0x400)
+ trainerPicIndex = GetSecretBaseTrainerPicIndex();
+ else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ trainerPicIndex = get_trainer_class_pic_index();
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ trainerPicIndex = GetEReaderTrainerPicIndex();
+ else
+ trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic;
+ }
sub_8031A6C(trainerPicIndex, gActiveBank);
GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank));
@@ -1427,6 +1437,315 @@ void OpponentHandlecmd19(void)
OpponentBufferExecCompleted();
}
+#if DEBUG
+__attribute__((naked))
+void OpponentHandlecmd20(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, sl\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5, r6, r7}\n\
+ ldr r6, ._549\n\
+ ldrb r0, [r6]\n\
+ lsl r0, r0, #0x9\n\
+ ldr r1, ._549 + 4\n\
+ add r5, r0, r1\n\
+ ldr r2, ._549 + 8\n\
+ ldrb r1, [r2]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ mov sl, r6\n\
+ cmp r0, #0\n\
+ beq ._546 @cond_branch\n\
+ ldr r0, ._549 + 12\n\
+ mov r9, r0\n\
+ ldr r1, ._549 + 16\n\
+ mov ip, r1\n\
+ add r7, r6, #0\n\
+ mov r0, #0x2\n\
+ mov r8, r0\n\
+ ldr r6, ._549 + 20\n\
+._552:\n\
+ ldrb r1, [r7]\n\
+ mov r0, r8\n\
+ and r0, r0, r1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x19\n\
+ add r0, r0, r6\n\
+ mov r1, ip\n\
+ add r3, r0, r1\n\
+ ldrb r1, [r3]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r5, r0\n\
+ ldrh r2, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r2, #0\n\
+ beq ._547 @cond_branch\n\
+ add r0, r4, #1\n\
+ strb r0, [r3]\n\
+ b ._548\n\
+._550:\n\
+ .align 2, 0\n\
+._549:\n\
+ .word gActiveBank\n\
+ .word gBattleBufferA+4\n\
+ .word gUnknown_02023A14_50\n\
+ .word gBattleMoves\n\
+ .word +0x2000000\n\
+ .word 0x1609e\n\
+._547:\n\
+ strb r2, [r3]\n\
+._548:\n\
+ ldrb r0, [r7]\n\
+ mov r1, r8\n\
+ and r1, r1, r0\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x19\n\
+ add r1, r1, r6\n\
+ add r1, r1, ip\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0x3\n\
+ bls ._551 @cond_branch\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+._551:\n\
+ cmp r2, #0\n\
+ beq ._552 @cond_branch\n\
+ lsl r0, r2, #0x1\n\
+ add r0, r0, r2\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r9\n\
+ ldrb r3, [r0, #0x6]\n\
+ mov r0, #0x12\n\
+ and r0, r0, r3\n\
+ cmp r0, #0\n\
+ beq ._553 @cond_branch\n\
+ mov r1, sl\n\
+ ldrb r0, [r1]\n\
+ b ._561\n\
+._553:\n\
+ ldr r0, ._559\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._557 @cond_branch\n\
+ ldr r0, ._559 + 4\n\
+ ldrb r1, [r0]\n\
+ mov r5, #0x2\n\
+ add r0, r5, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._556 @cond_branch\n\
+ cmp r3, #0\n\
+ bne ._557 @cond_branch\n\
+ mov r1, sl\n\
+ ldrb r0, [r1]\n\
+ bl GetBankIdentity\n\
+ mov r1, #0x2\n\
+ eor r0, r0, r1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ b ._558\n\
+._560:\n\
+ .align 2, 0\n\
+._559:\n\
+ .word gBattleTypeFlags\n\
+ .word gUnknown_02023A14_50\n\
+._556:\n\
+ bl Random\n\
+ add r1, r5, #0\n\
+ and r1, r1, r0\n\
+ lsl r1, r1, #0x10\n\
+ lsr r0, r1, #0x10\n\
+ b ._561\n\
+._557:\n\
+ mov r0, #0x0\n\
+._558:\n\
+ bl GetBankByIdentity\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+._561:\n\
+ lsl r2, r0, #0x8\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+._569:\n\
+ bl Emitcmd33\n\
+._573:\n\
+ bl OpponentBufferExecCompleted\n\
+ b ._562\n\
+._546:\n\
+ ldr r0, ._567\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x93\n\
+ lsl r0, r0, #0x3\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._563 @cond_branch\n\
+ bl BattleAI_SetupAIData\n\
+ bl BattleAI_GetAIActionToUse\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ cmp r4, #0x4\n\
+ beq ._564 @cond_branch\n\
+ cmp r4, #0x5\n\
+ bne ._565 @cond_branch\n\
+ mov r0, #0x1\n\
+ mov r1, #0x4\n\
+ b ._566\n\
+._568:\n\
+ .align 2, 0\n\
+._567:\n\
+ .word gBattleTypeFlags\n\
+._564:\n\
+ mov r0, #0x1\n\
+ mov r1, #0x3\n\
+._566:\n\
+ mov r2, #0x0\n\
+ b ._569\n\
+._565:\n\
+ ldr r3, ._574\n\
+ lsl r0, r4, #0x1\n\
+ add r2, r5, r0\n\
+ ldrh r1, [r2]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldrb r1, [r0, #0x6]\n\
+ mov r0, #0x12\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._570 @cond_branch\n\
+ ldr r1, ._574 + 4\n\
+ ldrb r0, [r6]\n\
+ strb r0, [r1]\n\
+._570:\n\
+ ldrh r1, [r2]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldrb r1, [r0, #0x6]\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._572 @cond_branch\n\
+ mov r0, #0x0\n\
+ bl GetBankByIdentity\n\
+ ldr r5, ._574 + 4\n\
+ strb r0, [r5]\n\
+ ldr r0, ._574 + 8\n\
+ ldrb r1, [r0]\n\
+ ldr r2, ._574 + 12\n\
+ ldrb r0, [r5]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldr r0, [r0]\n\
+ and r1, r1, r0\n\
+ cmp r1, #0\n\
+ beq ._572 @cond_branch\n\
+ mov r0, #0x2\n\
+ bl GetBankByIdentity\n\
+ strb r0, [r5]\n\
+._572:\n\
+ ldr r0, ._574 + 4\n\
+ ldrb r2, [r0]\n\
+ lsl r2, r2, #0x8\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+ bl Emitcmd33\n\
+ b ._573\n\
+._575:\n\
+ .align 2, 0\n\
+._574:\n\
+ .word gBattleMoves\n\
+ .word gBankTarget\n\
+ .word gAbsentBankFlags\n\
+ .word gBitTable\n\
+._563:\n\
+ mov r6, #0x3\n\
+._576:\n\
+ bl Random\n\
+ add r4, r0, #0\n\
+ and r4, r4, r6\n\
+ lsl r0, r4, #0x1\n\
+ add r0, r5, r0\n\
+ ldrh r2, [r0]\n\
+ cmp r2, #0\n\
+ beq ._576 @cond_branch\n\
+ ldr r1, ._579\n\
+ lsl r0, r2, #0x1\n\
+ add r0, r0, r2\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x6]\n\
+ mov r0, #0x12\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._577 @cond_branch\n\
+ ldr r0, ._579 + 4\n\
+ ldrb r2, [r0]\n\
+ lsl r2, r2, #0x8\n\
+ b ._578\n\
+._580:\n\
+ .align 2, 0\n\
+._579:\n\
+ .word gBattleMoves\n\
+ .word gActiveBank\n\
+._577:\n\
+ ldr r0, ._583\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._581 @cond_branch\n\
+ bl Random\n\
+ mov r1, #0x2\n\
+ and r1, r1, r0\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x18\n\
+ add r0, r1, #0\n\
+ bl GetBankByIdentity\n\
+ add r2, r0, #0\n\
+ lsl r2, r2, #0x18\n\
+ lsr r2, r2, #0x10\n\
+._578:\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+ bl Emitcmd33\n\
+ b ._582\n\
+._584:\n\
+ .align 2, 0\n\
+._583:\n\
+ .word gBattleTypeFlags\n\
+._581:\n\
+ mov r0, #0x0\n\
+ bl GetBankByIdentity\n\
+ add r2, r0, #0\n\
+ lsl r2, r2, #0x18\n\
+ lsr r2, r2, #0x10\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+ bl Emitcmd33\n\
+._582:\n\
+ bl OpponentBufferExecCompleted\n\
+._562:\n\
+ pop {r3, r4, r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov sl, r5\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0");
+}
+#else
#ifdef NONMATCHING
void OpponentHandlecmd20(void)
{
@@ -1501,7 +1820,7 @@ void OpponentHandlecmd20(void)
ldr r6, _0803545C @ =gActiveBank\n\
ldrb r0, [r6]\n\
lsls r0, 9\n\
- ldr r1, _08035460 @ =gUnknown_02023A64\n\
+ ldr r1, _08035460 @ =gBattleBufferA+4\n\
adds r5, r0, r1\n\
ldr r0, _08035464 @ =gBattleTypeFlags\n\
ldrh r1, [r0]\n\
@@ -1523,7 +1842,7 @@ void OpponentHandlecmd20(void)
b _0803546C\n\
.align 2, 0\n\
_0803545C: .4byte gActiveBank\n\
-_08035460: .4byte gUnknown_02023A64\n\
+_08035460: .4byte gBattleBufferA+4\n\
_08035464: .4byte gBattleTypeFlags\n\
_08035468:\n\
movs r0, 0x1\n\
@@ -1670,6 +1989,7 @@ _0803558A:\n\
.syntax divided\n");
}
#endif
+#endif
void OpponentHandleOpenBag(void)
{
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index f036e841f..d4b4da6f2 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -42,6 +42,8 @@ extern struct Window gUnknown_03004210;
extern void (*gBattleBankFunc[])(void);
+extern u32 gOamMatrixAllocBitmap;
+extern u8 gUnknown_020297ED;
extern u8 gActiveBank;
extern u8 gActionSelectionCursor[];
extern u8 gDisplayedStringBattle[];
@@ -617,9 +619,14 @@ struct ChooseMoveStruct
const u8 gUnknown_081FAE80[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}");
+void debug_sub_8030C24(void);
+
void sub_802C68C(void)
{
u32 r8 = 0;
+#if DEBUG
+ u8 count = 0;
+#endif
struct ChooseMoveStruct *r6 = (struct ChooseMoveStruct *)(gBattleBufferA[gActiveBank] + 4);
if (gMain.newKeys & A_BUTTON)
@@ -750,6 +757,43 @@ void sub_802C68C(void)
gBattleBankFunc[gActiveBank] = sub_802CA60;
}
}
+#if DEBUG
+ else if (gUnknown_020297ED == 1 && (gMain.newKeys & START_BUTTON))
+ {
+ const u8 *moveName;
+ s32 i;
+
+ Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x3A);
+ moveName = gMoveNames[GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1)];
+ Text_InitWindowAndPrintText(&gUnknown_03004210, moveName, 0x100, 2, 0x37);
+ ConvertIntToDecimalStringN(
+ gDisplayedStringBattle,
+ GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1),
+ 2, 3);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x110, 10, 0x37);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gString_TurnJP, 0x116, 1, 0x39);
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, gAnimMoveTurn, 2, 3);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x11C, 4, 0x39);
+ for (i = 0; i < 64; i++)
+ {
+ if (gSprites[i].inUse)
+ count++;
+ }
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x122, 8, 0x39);
+ count = GetTaskCount();
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x126, 11, 0x39);
+ for (i = 0, count = 0; i < 32; i++)
+ {
+ if (gOamMatrixAllocBitmap & (1 << i))
+ count++;
+ }
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x12A, 14, 0x39);
+ gBattleBankFunc[gActiveBank] = debug_sub_8030C24;
+ }
+#endif
}
extern const u8 BattleText_Format[];
@@ -956,6 +1000,688 @@ void sub_802D18C(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_8030C24(void)
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ add sp, sp, #0xfffffff4\n\
+ ldr r1, ._293\n\
+ ldr r4, ._293 + 4\n\
+ ldrb r0, [r4]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x64\n\
+ mul r0, r0, r1\n\
+ ldr r1, ._293 + 8\n\
+ add r0, r0, r1\n\
+ mov r1, #0xd\n\
+ bl GetMonData\n\
+ add r1, sp, #0x8\n\
+ strh r0, [r1]\n\
+ ldr r5, ._293 + 12\n\
+ ldrh r1, [r5, #0x30]\n\
+ cmp r1, #0x20\n\
+ bne ._286 @cond_branch\n\
+ b ._287\n\
+._286:\n\
+ cmp r1, #0x20\n\
+ bgt ._288 @cond_branch\n\
+ cmp r1, #0x8\n\
+ beq ._289 @cond_branch\n\
+ cmp r1, #0x8\n\
+ bgt ._290 @cond_branch\n\
+ cmp r1, #0x4\n\
+ beq ._291 @cond_branch\n\
+ b ._348\n\
+._294:\n\
+ .align 2, 0\n\
+._293:\n\
+ .word gBattlePartyID\n\
+ .word gActiveBank\n\
+ .word gPlayerParty\n\
+ .word gMain\n\
+._290:\n\
+ cmp r1, #0x10\n\
+ bne ._295 @cond_branch\n\
+ b ._296\n\
+._295:\n\
+ b ._348\n\
+._288:\n\
+ cmp r1, #0x80\n\
+ bne ._298 @cond_branch\n\
+ b ._302\n\
+._298:\n\
+ cmp r1, #0x80\n\
+ bgt ._300 @cond_branch\n\
+ cmp r1, #0x40\n\
+ bne ._301 @cond_branch\n\
+ b ._302\n\
+._301:\n\
+ b ._348\n\
+._300:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x1\n\
+ cmp r1, r0\n\
+ bne ._304 @cond_branch\n\
+ b ._305\n\
+._304:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x2\n\
+ cmp r1, r0\n\
+ bne ._306 @cond_branch\n\
+ b ._307\n\
+._306:\n\
+ b ._348\n\
+._289:\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ bl dp11b_obj_free\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ bl dp11b_obj_free\n\
+ ldr r0, ._312\n\
+ ldrb r2, [r4]\n\
+ strb r2, [r0]\n\
+ ldrh r1, [r5, #0x28]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._310 @cond_branch\n\
+ ldr r0, ._312 + 4\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._310 @cond_branch\n\
+ ldr r0, ._312 + 8\n\
+ mov r1, #0x2\n\
+ eor r1, r1, r2\n\
+ strb r1, [r0]\n\
+ b ._311\n\
+._313:\n\
+ .align 2, 0\n\
+._312:\n\
+ .word gBankAttacker\n\
+ .word gBattleTypeFlags\n\
+ .word gBankTarget\n\
+._310:\n\
+ ldr r0, ._317\n\
+ ldrh r1, [r0, #0x28]\n\
+ mov r2, #0x1\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._315 @cond_branch\n\
+ ldr r0, ._317 + 4\n\
+ ldrh r1, [r0]\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._315 @cond_branch\n\
+ mov r0, #0x3\n\
+ b ._316\n\
+._318:\n\
+ .align 2, 0\n\
+._317:\n\
+ .word gMain\n\
+ .word gBattleTypeFlags\n\
+._315:\n\
+ mov r0, #0x1\n\
+._316:\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._320\n\
+ strb r0, [r1]\n\
+._311:\n\
+ mov r0, #0x0\n\
+ bl sub_80326EC\n\
+ add r0, sp, #0x8\n\
+ ldrh r0, [r0]\n\
+ bl DoMoveAnim\n\
+ ldr r1, ._320 + 4\n\
+ ldr r0, ._320 + 8\n\
+ ldrb r0, [r0]\n\
+ b ._332\n\
+._321:\n\
+ .align 2, 0\n\
+._320:\n\
+ .word gBankTarget\n\
+ .word gBattleBankFunc\n\
+ .word gActiveBank\n\
+._291:\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ bl dp11b_obj_free\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ bl dp11b_obj_free\n\
+ ldr r0, ._325\n\
+ ldrb r2, [r4]\n\
+ strb r2, [r0]\n\
+ ldrh r1, [r5, #0x28]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._323 @cond_branch\n\
+ ldr r0, ._325 + 4\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._323 @cond_branch\n\
+ ldr r0, ._325 + 8\n\
+ mov r1, #0x2\n\
+ eor r1, r1, r2\n\
+ strb r1, [r0]\n\
+ b ._324\n\
+._326:\n\
+ .align 2, 0\n\
+._325:\n\
+ .word gBankTarget\n\
+ .word gBattleTypeFlags\n\
+ .word gBankAttacker\n\
+._323:\n\
+ ldr r0, ._330\n\
+ ldrh r1, [r0, #0x28]\n\
+ mov r2, #0x1\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._328 @cond_branch\n\
+ ldr r0, ._330 + 4\n\
+ ldrh r1, [r0]\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._328 @cond_branch\n\
+ mov r0, #0x3\n\
+ b ._329\n\
+._331:\n\
+ .align 2, 0\n\
+._330:\n\
+ .word gMain\n\
+ .word gBattleTypeFlags\n\
+._328:\n\
+ mov r0, #0x1\n\
+._329:\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._333\n\
+ strb r0, [r1]\n\
+._324:\n\
+ mov r0, #0x0\n\
+ bl sub_80326EC\n\
+ add r0, sp, #0x8\n\
+ ldrh r0, [r0]\n\
+ bl DoMoveAnim\n\
+ ldr r1, ._333 + 4\n\
+ ldr r0, ._333 + 8\n\
+ ldrb r0, [r0]\n\
+ b ._332\n\
+._334:\n\
+ .align 2, 0\n\
+._333:\n\
+ .word gBankAttacker\n\
+ .word gBattleBankFunc\n\
+ .word gActiveBank\n\
+._305:\n\
+ ldrh r1, [r5, #0x28]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._336 @cond_branch\n\
+ ldr r0, ._338\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._336 @cond_branch\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ bl dp11b_obj_free\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ bl dp11b_obj_free\n\
+ mov r0, #0x3\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._338 + 4\n\
+ strb r0, [r1]\n\
+ mov r0, #0x1\n\
+ b ._337\n\
+._339:\n\
+ .align 2, 0\n\
+._338:\n\
+ .word gBattleTypeFlags\n\
+ .word gBankAttacker\n\
+._336:\n\
+ add r0, sp, #0x8\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r0, r1]\n\
+ add r0, r0, #0x9\n\
+ add r1, sp, #0x8\n\
+ strh r0, [r1]\n\
+._296:\n\
+ add r0, sp, #0x8\n\
+ mov r2, #0x0\n\
+ ldsh r0, [r0, r2]\n\
+ add r0, r0, #0x1\n\
+ lsl r2, r0, #0x10\n\
+ add r1, sp, #0x8\n\
+ strh r0, [r1]\n\
+ mov r0, #0xb1\n\
+ lsl r0, r0, #0x11\n\
+ cmp r2, r0\n\
+ ble ._347 @cond_branch\n\
+ mov r1, #0x1\n\
+ add r0, sp, #0x8\n\
+ strh r1, [r0]\n\
+ b ._347\n\
+._307:\n\
+ ldrh r1, [r5, #0x28]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._343 @cond_branch\n\
+ ldr r0, ._345\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._343 @cond_branch\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ bl dp11b_obj_free\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ bl dp11b_obj_free\n\
+ mov r0, #0x1\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._345 + 4\n\
+ strb r0, [r1]\n\
+ mov r0, #0x3\n\
+._337:\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._345 + 8\n\
+ strb r0, [r1]\n\
+ mov r0, #0x0\n\
+ bl sub_80326EC\n\
+ add r0, sp, #0x8\n\
+ ldrh r0, [r0]\n\
+ bl DoMoveAnim\n\
+ ldr r1, ._345 + 12\n\
+ ldrb r0, [r4]\n\
+._332:\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, ._345 + 16\n\
+ str r1, [r0]\n\
+ b ._348\n\
+._346:\n\
+ .align 2, 0\n\
+._345:\n\
+ .word gBattleTypeFlags\n\
+ .word gBankAttacker\n\
+ .word gBankTarget\n\
+ .word gBattleBankFunc\n\
+ .word debug_sub_803107C+1\n\
+._343:\n\
+ add r1, sp, #0x8\n\
+ add r0, r1, #0\n\
+ ldrh r0, [r0]\n\
+ sub r0, r0, #0x9\n\
+ strh r0, [r1]\n\
+._287:\n\
+ add r1, sp, #0x8\n\
+ add r0, r1, #0\n\
+ ldrh r0, [r0]\n\
+ sub r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bgt ._347 @cond_branch\n\
+ mov r2, #0xb1\n\
+ lsl r2, r2, #0x1\n\
+ add r0, r2, #0\n\
+ strh r0, [r1]\n\
+._347:\n\
+ ldr r1, ._349\n\
+ ldr r4, ._349 + 4\n\
+ ldrb r0, [r4]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x64\n\
+ mul r0, r0, r1\n\
+ ldr r1, ._349 + 8\n\
+ add r0, r0, r1\n\
+ mov r1, #0xd\n\
+ add r2, sp, #0x8\n\
+ bl SetMonData\n\
+ ldr r2, ._349 + 12\n\
+ ldrb r1, [r4]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r1\n\
+ add r0, r0, r2\n\
+ add r1, sp, #0x8\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0, #0xc]\n\
+ ldr r5, ._349 + 16\n\
+ ldr r1, ._349 + 20\n\
+ mov r0, #0x10\n\
+ str r0, [sp]\n\
+ mov r0, #0x38\n\
+ str r0, [sp, #0x4]\n\
+ add r0, r5, #0\n\
+ mov r2, #0x1\n\
+ mov r3, #0x37\n\
+ bl Text_FillWindowRect\n\
+ add r0, sp, #0x8\n\
+ mov r2, #0x0\n\
+ ldsh r1, [r0, r2]\n\
+ mov r0, #0xd\n\
+ mul r1, r1, r0\n\
+ ldr r0, ._349 + 24\n\
+ add r1, r1, r0\n\
+ mov r2, #0x80\n\
+ lsl r2, r2, #0x1\n\
+ mov r6, #0x37\n\
+ str r6, [sp]\n\
+ add r0, r5, #0\n\
+ mov r3, #0x2\n\
+ bl Text_InitWindowAndPrintText\n\
+ ldr r4, ._349 + 28\n\
+ add r0, sp, #0x8\n\
+ mov r2, #0x0\n\
+ ldsh r1, [r0, r2]\n\
+ add r0, r4, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x3\n\
+ bl ConvertIntToDecimalStringN\n\
+ mov r2, #0x88\n\
+ lsl r2, r2, #0x1\n\
+ str r6, [sp]\n\
+ add r0, r5, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0xa\n\
+ bl Text_InitWindowAndPrintText\n\
+ b ._348\n\
+._350:\n\
+ .align 2, 0\n\
+._349:\n\
+ .word gBattlePartyID\n\
+ .word gActiveBank\n\
+ .word gPlayerParty\n\
+ .word gBattleMons\n\
+ .word gUnknown_03004210\n\
+ .word 0x1016\n\
+ .word gMoveNames\n\
+ .word gDisplayedStringBattle\n\
+._302:\n\
+ ldr r0, ._353\n\
+ ldrh r0, [r0, #0x30]\n\
+ cmp r0, #0x40\n\
+ bne ._351 @cond_branch\n\
+ ldr r1, ._353 + 4\n\
+ ldrb r0, [r1]\n\
+ sub r0, r0, #0x1\n\
+ b ._352\n\
+._354:\n\
+ .align 2, 0\n\
+._353:\n\
+ .word gMain\n\
+ .word gAnimMoveTurn\n\
+._351:\n\
+ ldr r1, ._359\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+._352:\n\
+ strb r0, [r1]\n\
+ ldr r4, ._359 + 4\n\
+ ldrb r1, [r1]\n\
+ add r0, r4, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x3\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r0, ._359 + 8\n\
+ mov r2, #0x8e\n\
+ lsl r2, r2, #0x1\n\
+ mov r1, #0x39\n\
+ str r1, [sp]\n\
+ add r1, r4, #0\n\
+ mov r3, #0x4\n\
+ bl Text_InitWindowAndPrintText\n\
+._348:\n\
+ ldr r0, ._359 + 12\n\
+ ldrh r2, [r0, #0x28]\n\
+ mov r1, #0xc0\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r1, #0\n\
+ and r0, r0, r2\n\
+ cmp r0, r1\n\
+ bne ._355 @cond_branch\n\
+ mov r4, #0x0\n\
+ ldr r5, ._359 + 4\n\
+ ldr r6, ._359 + 8\n\
+._361:\n\
+ add r0, r5, #0\n\
+ ldr r1, ._359 + 16\n\
+ bl StringCopy\n\
+ ldr r1, ._359 + 20\n\
+ ldr r0, ._359 + 24\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x64\n\
+ mul r0, r0, r1\n\
+ ldr r1, ._359 + 28\n\
+ add r0, r0, r1\n\
+ add r1, r4, #0\n\
+ add r1, r1, #0xd\n\
+ bl GetMonData\n\
+ mov r1, #0xd\n\
+ mul r1, r1, r0\n\
+ ldr r0, ._359 + 32\n\
+ add r1, r1, r0\n\
+ add r0, r5, #0\n\
+ bl StringAppend\n\
+ lsl r0, r4, #0x14\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x11\n\
+ add r0, r0, r1\n\
+ lsr r2, r0, #0x10\n\
+ mov r0, #0x1\n\
+ and r0, r0, r4\n\
+ mov r3, #0x2\n\
+ cmp r0, #0\n\
+ beq ._356 @cond_branch\n\
+ mov r3, #0xa\n\
+._356:\n\
+ cmp r4, #0x1\n\
+ bhi ._357 @cond_branch\n\
+ mov r0, #0x37\n\
+ b ._358\n\
+._360:\n\
+ .align 2, 0\n\
+._359:\n\
+ .word gAnimMoveTurn\n\
+ .word gDisplayedStringBattle\n\
+ .word gUnknown_03004210\n\
+ .word gMain\n\
+ .word BattleText_Format\n\
+ .word gBattlePartyID\n\
+ .word gActiveBank\n\
+ .word gPlayerParty\n\
+ .word gMoveNames\n\
+._357:\n\
+ mov r0, #0x39\n\
+._358:\n\
+ str r0, [sp]\n\
+ add r0, r6, #0\n\
+ add r1, r5, #0\n\
+ bl Text_InitWindow\n\
+ ldr r0, ._362\n\
+ bl Text_PrintWindow8002F44\n\
+ add r0, r4, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ cmp r4, #0x3\n\
+ bls ._361 @cond_branch\n\
+ ldr r1, ._362 + 4\n\
+ ldr r0, ._362 + 8\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, ._362 + 12\n\
+ str r1, [r0]\n\
+._355:\n\
+ add sp, sp, #0xc\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._363:\n\
+ .align 2, 0\n\
+._362:\n\
+ .word gUnknown_03004210\n\
+ .word gBattleBankFunc\n\
+ .word gActiveBank\n\
+ .word sub_802C68C+1");
+}
+
+__attribute__((naked))
+void debug_sub_803107C(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ mov r7, #0x0\n\
+ ldr r0, ._369\n\
+ ldr r0, [r0]\n\
+ bl _call_via_r0\n\
+ ldr r0, ._369 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._364 @cond_branch\n\
+ mov r0, #0x1\n\
+ bl sub_80326EC\n\
+ ldr r4, ._369 + 8\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ mov r2, #0x7\n\
+ mov r3, #0x1\n\
+ bl dp11b_obj_instanciate\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ mov r2, #0x7\n\
+ mov r3, #0x1\n\
+ bl dp11b_obj_instanciate\n\
+ ldr r0, ._369 + 12\n\
+ add r2, r0, #0\n\
+ add r2, r2, #0x3e\n\
+ mov r1, #0x3f\n\
+._366:\n\
+ ldrb r0, [r2]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._365 @cond_branch\n\
+ add r0, r7, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+._365:\n\
+ add r2, r2, #0x44\n\
+ sub r1, r1, #0x1\n\
+ cmp r1, #0\n\
+ bge ._366 @cond_branch\n\
+ ldr r4, ._369 + 16\n\
+ add r0, r4, #0\n\
+ add r1, r7, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r6, ._369 + 20\n\
+ mov r2, #0x91\n\
+ lsl r2, r2, #0x1\n\
+ mov r5, #0x39\n\
+ str r5, [sp]\n\
+ add r0, r6, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0x8\n\
+ bl Text_InitWindowAndPrintText\n\
+ bl GetTaskCount\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+ add r0, r4, #0\n\
+ add r1, r7, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ mov r2, #0x93\n\
+ lsl r2, r2, #0x1\n\
+ str r5, [sp]\n\
+ add r0, r6, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0xb\n\
+ bl Text_InitWindowAndPrintText\n\
+ mov r1, #0x0\n\
+ mov r7, #0x0\n\
+ ldr r0, ._369 + 24\n\
+ mov r3, #0x1\n\
+ ldr r2, [r0]\n\
+._368:\n\
+ add r0, r3, #0\n\
+ LSL r0, r1\n\
+ and r0, r0, r2\n\
+ cmp r0, #0\n\
+ beq ._367 @cond_branch\n\
+ add r0, r7, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+._367:\n\
+ add r1, r1, #0x1\n\
+ cmp r1, #0x1f\n\
+ ble ._368 @cond_branch\n\
+ ldr r4, ._369 + 16\n\
+ add r0, r4, #0\n\
+ add r1, r7, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r0, ._369 + 20\n\
+ mov r2, #0x95\n\
+ lsl r2, r2, #0x1\n\
+ mov r1, #0x39\n\
+ str r1, [sp]\n\
+ add r1, r4, #0\n\
+ mov r3, #0xe\n\
+ bl Text_InitWindowAndPrintText\n\
+ ldr r1, ._369 + 28\n\
+ ldr r0, ._369 + 8\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, ._369 + 32\n\
+ str r1, [r0]\n\
+._364:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._370:\n\
+ .align 2, 0\n\
+._369:\n\
+ .word gAnimScriptCallback\n\
+ .word gAnimScriptActive\n\
+ .word gActiveBank\n\
+ .word gSprites\n\
+ .word gDisplayedStringBattle\n\
+ .word gUnknown_03004210\n\
+ .word gOamMatrixAllocBitmap\n\
+ .word gBattleBankFunc\n\
+ .word debug_sub_8030C24+1");
+}
+#endif
+
void sub_802D204(void)
{
if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c
index 0d193d68f..5896e5e18 100644
--- a/src/battle/battle_controller_safari.c
+++ b/src/battle/battle_controller_safari.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "battle_anim_81258BC.h"
#include "battle.h"
+#include "battle_interface.h"
#include "battle_message.h"
#include "data2.h"
#include "link.h"
@@ -272,6 +273,17 @@ void bx_battle_menu_t6_2(void)
sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
}
}
+#if DEBUG
+ else if (gMain.newKeys & R_BUTTON)
+ {
+ if (!ewram17810[gActiveBank].unk0_5)
+ move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, 4, 0);
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ sub_804454C();
+ }
+#endif
}
void sub_812B65C(void)
diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c
index 97568d254..9be026d53 100644
--- a/src/battle/battle_interface.c
+++ b/src/battle/battle_interface.c
@@ -79,8 +79,8 @@ extern const u16 gBattleInterfaceStatusIcons_DynPal[];
static void sub_8043D5C(struct Sprite *);
static const void *sub_8043CDC(u8);
-static void sub_8044210(u8, s16, u8);
-static void draw_status_ailment_maybe(u8);
+/*static*/ void sub_8044210(u8, s16, u8);
+/*static*/ void draw_status_ailment_maybe(u8);
extern void sub_8045180(struct Sprite *);
static void sub_8045110(struct Sprite *);
static void sub_8045048(struct Sprite *);
@@ -651,7 +651,7 @@ void sub_8043F44(u8 a)
#define CHAR_LV_SEPARATOR CHAR_PERIOD
#endif
-static void sub_8043FC0(u8 a, u8 b)
+/*static*/ void sub_8043FC0(u8 a, u8 b)
{
u8 str[30];
void *const *r7;
@@ -905,7 +905,7 @@ _0804420C: .4byte 0x04000008\n\
}
#endif
-static void sub_8044210(u8 a, s16 b, u8 c)
+/*static*/ void sub_8044210(u8 a, s16 b, u8 c)
{
u8 str[0x14];
u8 *ptr;
@@ -1277,6 +1277,8 @@ _08044548: .4byte 0x04000008\n\
}
#endif
+extern u8 gUnknown_020297ED;
+
void sub_804454C(void)
{
s32 i;
@@ -1285,7 +1287,11 @@ void sub_804454C(void)
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gSprites[gHealthboxIDs[i]].callback == SpriteCallbackDummy
+#if DEBUG
+ && (gUnknown_020297ED != 0 || GetBankSide(i) != 1)
+#else
&& GetBankSide(i) != 1
+#endif
&& (IsDoubleBattle() || GetBankSide(i) != 0))
{
u8 r6;
@@ -2359,7 +2365,7 @@ void sub_8045180(struct Sprite *sprite)
sprite->pos2.y = gSprites[spriteId].pos2.y;
}
-static void sub_80451A0(u8 a, struct Pokemon *pkmn)
+/*static*/ void sub_80451A0(u8 a, struct Pokemon *pkmn)
{
u8 nickname[POKEMON_NAME_LENGTH];
u8 gender;
@@ -2507,7 +2513,7 @@ static void sub_8045458(u8 a, u8 b)
}
}
-static void draw_status_ailment_maybe(u8 a)
+/*static*/ void draw_status_ailment_maybe(u8 a)
{
s32 r4;
s32 r4_2;
@@ -2649,7 +2655,7 @@ static u8 sub_80457E8(u8 a, u8 b)
return ret;
}
-static void sub_80458B0(u8 a)
+/*static*/ void sub_80458B0(u8 a)
{
u8 *r6;
u8 r8;
@@ -2675,7 +2681,7 @@ static void sub_80458B0(u8 a)
}
-static void sub_8045998(u8 a)
+/*static*/ void sub_8045998(u8 a)
{
u8 *r7;
u8 status;
@@ -2752,6 +2758,15 @@ void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c)
{
if (c == 3 || c == 0)
sub_8043FC0(a, GetMonData(pkmn, MON_DATA_LEVEL));
+#if DEBUG
+ if (gUnknown_020297ED == 1)
+ {
+ if (c == 1 || c == 0)
+ sub_80440EC(a, GetMonData(pkmn, MON_DATA_HP), 0);
+ if (c == 2 || c == 0)
+ sub_80440EC(a, GetMonData(pkmn, MON_DATA_MAX_HP), 1);
+ }
+#endif
if (c == 5 || c == 0)
{
load_gfxc_health_bar(0);
diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c
index 4979760d7..9dd1d7b53 100644
--- a/src/battle/battle_records.c
+++ b/src/battle/battle_records.c
@@ -8,9 +8,35 @@
#include "strings2.h"
#include "trainer_card.h"
+struct DebugStruct1
+{
+ u16 var0;
+ u8 var1[10];
+};
+
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
extern u8 gBattleOutcome;
+#if DEBUG
+const struct DebugStruct1 gUnknown_Debug_4245CC[] =
+{
+ { 1, _("NUMBER1") },
+ { 2, _("ナンバー2") },
+ { 3, _("ナンバー3") },
+ { 4, _("ナンバー4") },
+ { 5, _("ナンバー5") },
+ { 6, _("ナンバー6") },
+ { 7, _("ナンバー7") },
+};
+
+const u8 gUnknown_Debug_8424620[][4] =
+{
+ { 1, 1, 0, 0 },
+ { 2, 1, 0, 0 },
+ { 3, 1, 0, 0 },
+};
+#endif
+
static void InitLinkBattleRecord(struct LinkBattleRecord *record)
{
CpuFill16(0, record, sizeof(struct LinkBattleRecord));
@@ -197,6 +223,66 @@ void UpdateLinkBattleRecords(int id)
gLinkPlayers[gLinkPlayerMapObjects[id].linkPlayerId].language);
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_81257E0(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ add sp, sp, #0xfffffffc\n\
+ bl InitLinkBattleRecords\n\
+ mov r5, #0x0\n\
+ ldr r6, ._62\n\
+ sub r0, r6, #2\n\
+ mov r8, r0\n\
+ ldr r7, ._62 + 4\n\
+._61:\n\
+ ldr r0, ._62 + 8\n\
+ lsl r3, r5, #0x2\n\
+ add r3, r3, r0\n\
+ ldrb r4, [r3]\n\
+ sub r4, r4, #0x1\n\
+ lsl r0, r4, #0x1\n\
+ add r0, r0, r4\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r0, r6\n\
+ add r0, r0, r8\n\
+ ldrh r2, [r0]\n\
+ ldrb r3, [r3, #0x1]\n\
+ ldr r0, ._62 + 12\n\
+ lsl r4, r4, #0x2\n\
+ add r4, r4, r0\n\
+ ldrb r4, [r4, #0x1]\n\
+ lsl r0, r4, #0x3\n\
+ sub r0, r0, r4\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r7\n\
+ ldrb r0, [r0, #0x1a]\n\
+ str r0, [sp]\n\
+ ldr r0, ._62 + 16\n\
+ bl UpdateLinkBattleRecords_\n\
+ add r5, r5, #0x1\n\
+ cmp r5, #0x2\n\
+ bls ._61 @cond_branch\n\
+ add sp, sp, #0x4\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._63:\n\
+ .align 2, 0\n\
+._62:\n\
+ .word gUnknown_Debug_4245CC+2\n\
+ .word gLinkPlayers\n\
+ .word gUnknown_Debug_8424620\n\
+ .word gLinkPlayerMapObjects\n\
+ .word gSaveBlock1+0x30b8");
+}
+#endif
+
static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records)
{
ConvertIntToDecimalStringN_DigitWidth6(gStringVar1, GetGameStat(GAME_STAT_LINK_BATTLE_WINS), STR_CONV_MODE_RIGHT_ALIGN, 4);
@@ -240,7 +326,8 @@ static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y)
}
}
-void ShowLinkBattleRecords(void) {
+void ShowLinkBattleRecords(void)
+{
s32 i;
Menu_DrawStdWindowFrame(1, 0, 28, 18);
sub_8072BD8(gOtherText_BattleResults, 0, 1, 240);
diff --git a/src/battle/battle_util.c b/src/battle/battle_util.c
index 87b6952ff..194a002d3 100644
--- a/src/battle/battle_util.c
+++ b/src/battle/battle_util.c
@@ -22,6 +22,8 @@
#include "constants/species.h"
#include "constants/weather.h"
+extern u8 gUnknown_02023A14_50;
+
extern const u8* gBattlescriptCurrInstr;
extern u8 gActiveBank;
extern u8 gBattleBufferB[4][0x200];
@@ -1736,17 +1738,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
else
moveType = gBattleMoves[move].type;
- //_080184AC
switch (caseID)
{
case ABILITYEFFECT_ON_SWITCHIN: // 0
- //_08018518
if (gBankAttacker >= gNoOfAllBanks)
gBankAttacker = bank;
switch (gLastUsedAbility)
{
case 0xFF: //weather from overworld
- //_08018586
switch (GetCurrentWeather())
{
case WEATHER_RAIN_LIGHT:
@@ -1786,7 +1785,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_DRIZZLE:
- //_08018680
if (!(gBattleWeather & WEATHER_RAIN_PERMANENT))
{
gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY);
@@ -1796,7 +1794,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_SAND_STREAM:
- //_080186B8
if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT))
{
gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
@@ -1806,7 +1803,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_DROUGHT:
- //_080186F0
if (!(gBattleWeather & WEATHER_SUN_PERMANENT))
{
gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
@@ -1816,7 +1812,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_INTIMIDATE:
- //_08018728
if (!(gSpecialStatuses[bank].intimidatedPoke))
{
gStatuses3[bank] |= STATUS3_INTIMIDATE_POKES;
@@ -1824,7 +1819,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_FORECAST:
- //_0801875C
effect = CastformDataTypeChange(bank);
if (effect != 0)
{
@@ -1834,7 +1828,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_TRACE:
- //_080187A0
if (!(gSpecialStatuses[bank].traced))
{
gStatuses3[bank] |= STATUS3_TRACE;
@@ -1843,7 +1836,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
break;
case ABILITY_CLOUD_NINE:
case ABILITY_AIR_LOCK:
- //_080187DC
{
// that's a weird choice for a variable, why not use i or bank?
for (target1 = 0; target1 < gNoOfAllBanks; target1++)
@@ -1862,7 +1854,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_ENDTURN: // 1
- //_08018814
if (gBattleMons[bank].hp != 0)
{
gBankAttacker = bank;
@@ -1922,7 +1913,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_MOVES_BLOCK: // 2
- //_08018A40
if (gLastUsedAbility == ABILITY_SOUNDPROOF)
{
for (i = 0; gSoundMovesTable[i] != 0xFFFF; i++)
@@ -1940,7 +1930,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_ABSORBING: // 3
- //_08018AD8
if (move)
{
switch (gLastUsedAbility)
@@ -2010,11 +1999,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CONTACT: // 4
- //_08018CF0
switch (gLastUsedAbility)
{
case ABILITY_COLOR_CHANGE:
- //_08018DCC
if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
&& move != MOVE_STRUGGLE
&& gBattleMoves[move].power != 0
@@ -2035,7 +2022,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_ROUGH_SKIN:
- //_08018E94
if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
@@ -2051,100 +2037,195 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_EFFECT_SPORE:
- //_08018F54
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (Random() % 10) == 0)
- {
- do
- {
- gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3;
- } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0);
- if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3)
- gBattleCommunication[MOVE_EFFECT_BYTE] += 2;
- gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40;
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
- gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
+ {
+ do
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3;
+ } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0);
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3)
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 2;
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (Random() % 10) == 0)
+ {
+ do
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3;
+ } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0);
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3)
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 2;
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
break;
case ABILITY_POISON_POINT:
- //_0801904C
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (Random() % 3) == 0)
- {
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42;
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
- gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (Random() % 3) == 0)
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
break;
case ABILITY_STATIC:
- //_08019128
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (Random() % 3) == 0)
- {
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45;
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
- gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (Random() % 3) == 0)
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
break;
case ABILITY_FLAME_BODY:
- //_08019204
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (Random() % 3) == 0)
- {
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43;
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
- gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special))
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (Random() % 3) == 0)
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
break;
case ABILITY_CUTE_CHARM:
- //_080192E0
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && gBattleMons[gBankTarget].hp != 0
- && (Random() % 3) == 0
- && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS
- && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef)
- && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
- && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF
- && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF)
- {
- gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10);
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_CuteCharmActivates;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && gBattleMons[gBankTarget].hp != 0
+ && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef)
+ && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF
+ && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF)
+ {
+ gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10);
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_CuteCharmActivates;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && gBattleMons[gBankTarget].hp != 0
+ && (Random() % 3) == 0
+ && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef)
+ && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF
+ && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF)
+ {
+ gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10);
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_CuteCharmActivates;
+ effect++;
+ }
+ }
break;
}
break;
case ABILITYEFFECT_IMMUNITY: // 5
- //_08019448
{
for (bank = 0; bank < gNoOfAllBanks; bank++)
{
@@ -2228,7 +2309,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_FORECAST: // 6
- //_080197B4
{
for (bank = 0; bank < gNoOfAllBanks; bank++)
{
@@ -2247,7 +2327,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_SYNCHRONIZE: // 7
- //_08019804
if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT))
{
gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
@@ -2263,7 +2342,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_ATK_SYNCHRONIZE: // 8
- //_08019880
if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT))
{
gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
@@ -2279,7 +2357,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_INTIMIDATE1: // 9
- //_080198FC
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ABILITY_INTIMIDATE && gStatuses3[i] & STATUS3_INTIMIDATE_POKES)
@@ -2294,7 +2371,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_TRACE: // 11
- //_08019940
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE))
@@ -2308,7 +2384,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0
&& gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0)
{
- //_080199AE
gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | side);
gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
gLastUsedAbility = gBattleMons[gActiveBank].ability;
@@ -2316,7 +2391,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
else if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0)
{
- //_08019A34
gActiveBank = target1;
gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
gLastUsedAbility = gBattleMons[gActiveBank].ability;
@@ -2324,7 +2398,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
else if (gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0)
{
- //_08019A78
gActiveBank = target2;
gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
gLastUsedAbility = gBattleMons[gActiveBank].ability;
@@ -2332,7 +2405,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
}
else
- //_08019ABC
{
gActiveBank = target1;
if (gBattleMons[target1].ability && gBattleMons[target1].hp)
@@ -2364,7 +2436,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_INTIMIDATE2: // 10
- //_08019B1C
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ABILITY_INTIMIDATE && (gStatuses3[i] & STATUS3_INTIMIDATE_POKES))
@@ -2380,7 +2451,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_OTHER_SIDE: // 12
- //_08019B60
side = GetBankSide(bank);
for (i = 0; i < gNoOfAllBanks; i++)
{
@@ -2392,7 +2462,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_BANK_SIDE: // 13
- //_08019BBC
side = GetBankSide(bank);
for (i = 0; i < gNoOfAllBanks; i++)
{
@@ -2404,7 +2473,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_FIELD_SPORT: // 14
- //_08019C18
switch (gLastUsedAbility)
{
case 0xFD:
@@ -2434,7 +2502,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_ON_FIELD: // 19
- //_08019CD4
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ability && gBattleMons[i].hp != 0)
@@ -2445,7 +2512,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK: // 15
- //_08019D18
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ability && i != bank)
@@ -2456,7 +2522,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_OTHER_SIZE: // 16
- //_08019D5C
side = GetBankSide(bank);
for (i = 0; i < gNoOfAllBanks; i++)
{
@@ -2468,7 +2533,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_BANK_SIDE: // 17
- //_08019DB8
side = GetBankSide(bank);
for (i = 0; i < gNoOfAllBanks; i++)
{
@@ -2480,7 +2544,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_ON_FIELD: // 18
- //_08019F44
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ability && i != bank)
@@ -2491,7 +2554,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
}
- //_08019F76
if (effect && caseID < 0xC && gLastUsedAbility != 0xFF)
RecordAbilityBattle(bank, gLastUsedAbility);
}
@@ -3385,17 +3447,25 @@ u8 IsMonDisobedient(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK
|| GetBankSide(gBankAttacker) == 1
- || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName)
- || FlagGet(FLAG_BADGE08_GET))
- return 0;
+ || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName))
+ return 0;
- obedienceLevel = 10;
- if (FlagGet(FLAG_BADGE02_GET))
- obedienceLevel = 30;
- if (FlagGet(FLAG_BADGE04_GET))
- obedienceLevel = 50;
- if (FlagGet(FLAG_BADGE06_GET))
- obedienceLevel = 70;
+ if (DEBUG && (gUnknown_02023A14_50 & 0x40))
+ {
+ obedienceLevel = 10;
+ }
+ else
+ {
+ if (FlagGet(FLAG_BADGE08_GET))
+ return 0;
+ obedienceLevel = 10;
+ if (FlagGet(FLAG_BADGE02_GET))
+ obedienceLevel = 30;
+ if (FlagGet(FLAG_BADGE04_GET))
+ obedienceLevel = 50;
+ if (FlagGet(FLAG_BADGE06_GET))
+ obedienceLevel = 70;
+ }
if (gBattleMons[gBankAttacker].level <= obedienceLevel)
return 0;