summaryrefslogtreecommitdiff
path: root/src/rom3.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rom3.c')
-rw-r--r--src/rom3.c565
1 files changed, 172 insertions, 393 deletions
diff --git a/src/rom3.c b/src/rom3.c
index 02def5dfa..3f4860ecc 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -1,5 +1,4 @@
#include "global.h"
-#include "rom3.h"
#include "battle.h"
#include "battle_811DA74.h"
#include "battle_ai.h"
@@ -10,10 +9,13 @@
#include "items.h"
#include "link.h"
#include "pokemon.h"
+#include "rom3.h"
#include "rom_8094928.h"
#include "species.h"
#include "task.h"
#include "util.h"
+#include "battle_message.h"
+#include "data2.h"
extern u8 unk_2000000[];
@@ -343,30 +345,30 @@ void sub_800BD54(void)
}
}
-void dp01_prepare_buffer(u8 a, u8 *b, u16 c)
+void PrepareBufferDataTransfer(u8 a, u8 *data, u16 size)
{
int i;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- dp01_prepare_buffer_wireless_probably(a, c, b);
+ PrepareBufferDataTransferLink(a, size, data);
}
else
{
switch (a)
{
case 0:
- for (i = 0; i < c; i++)
+ for (i = 0; i < size; i++)
{
- gBattleBufferA[gActiveBank][i] = *b;
- b++;
+ gBattleBufferA[gActiveBank][i] = *data;
+ data++;
}
break;
case 1:
- for (i = 0; i < c; i++)
+ for (i = 0; i < size; i++)
{
- gBattleBufferB[gActiveBank][i] = *b;
- b++;
+ gBattleBufferB[gActiveBank][i] = *data;
+ data++;
}
break;
}
@@ -390,12 +392,12 @@ void sub_800BF28(void)
CpuFill16(0, EWRAM_14000, 0x2000);
}
-void dp01_prepare_buffer_wireless_probably(u8 a, u16 b, u8 *c)
+void PrepareBufferDataTransferLink(u8 a, u16 size, u8 *data)
{
s32 r9;
int i;
- r9 = b - b % 4 + 4;
+ r9 = size - size % 4 + 4;
if (gTasks[gUnknown_020238C4].data[14] + r9 + 9 > 0x1000)
{
gTasks[gUnknown_020238C4].data[12] = gTasks[gUnknown_020238C4].data[14];
@@ -409,8 +411,8 @@ void dp01_prepare_buffer_wireless_probably(u8 a, u16 b, u8 *c)
unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14005] = (r9 & 0x0000FF00) >> 8;
unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14006] = gAbsentBankFlags;
unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14007] = gEffectBank;
- for (i = 0; i < b; i++)
- unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14008 + i] = c[i];
+ for (i = 0; i < size; i++)
+ unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14008 + i] = data[i];
gTasks[gUnknown_020238C4].data[14] = gTasks[gUnknown_020238C4].data[14] + r9 + 8;
}
@@ -570,19 +572,19 @@ void EmitGetAttributes(u8 a, u8 b, u8 c)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c)
+void Emitcmd1(u8 a, u8 b, u8 c)
{
gBattleBuffersTransferData[0] = 1;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e)
+void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, void *e)
{
int i;
@@ -590,11 +592,11 @@ void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
for (i = 0; i < d; i++)
- gBattleBuffersTransferData[3 + i] = *(e++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, d + 3);
+ gBattleBuffersTransferData[3 + i] = *(u8*)(e++);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, d + 3);
}
-void unref_sub_800C6A4(u8 a, u8 b, u8 c, u8 *d)
+void Emitcmd3(u8 a, u8 b, u8 c, u8 *d)
{
int i;
@@ -603,96 +605,96 @@ void unref_sub_800C6A4(u8 a, u8 b, u8 c, u8 *d)
gBattleBuffersTransferData[2] = c;
for (i = 0; i < c; i++)
gBattleBuffersTransferData[3 + i] = *(d++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, c + 3);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, c + 3);
}
-void dp01_build_cmdbuf_x04_4_4_4(u8 a)
+void EmitLoadPokeSprite(u8 a)
{
gBattleBuffersTransferData[0] = 4;
gBattleBuffersTransferData[1] = 4;
gBattleBuffersTransferData[2] = 4;
gBattleBuffersTransferData[3] = 4;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void sub_800C704(u8 a, u8 b, u8 c)
+void EmitSendOutPoke(u8 a, u8 b, u8 c)
{
gBattleBuffersTransferData[0] = 5;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = 5;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x06_a(u8 a, u8 b)
+void EmitReturnPokeToBall(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 6;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x07_7_7_7(u8 a)
+void EmitTrainerThrow(u8 a)
{
gBattleBuffersTransferData[0] = 7;
gBattleBuffersTransferData[1] = 7;
gBattleBuffersTransferData[2] = 7;
gBattleBuffersTransferData[3] = 7;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x08_8_8_8(u8 a)
+void EmitTrainerSlide(u8 a)
{
gBattleBuffersTransferData[0] = 8;
gBattleBuffersTransferData[1] = 8;
gBattleBuffersTransferData[2] = 8;
gBattleBuffersTransferData[3] = 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x09_9_9_9(u8 a)
+void EmitTrainerSlideBack(u8 a)
{
gBattleBuffersTransferData[0] = 9;
gBattleBuffersTransferData[1] = 9;
gBattleBuffersTransferData[2] = 9;
gBattleBuffersTransferData[3] = 9;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitFaintAnimation(u8 a)
+void Emitcmd10(u8 a)
{
gBattleBuffersTransferData[0] = 10;
gBattleBuffersTransferData[1] = 10;
gBattleBuffersTransferData[2] = 10;
gBattleBuffersTransferData[3] = 10;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x0B_B_B_B(u8 a)
+void Emitcmd11(u8 a)
{
gBattleBuffersTransferData[0] = 11;
gBattleBuffersTransferData[1] = 11;
gBattleBuffersTransferData[2] = 11;
gBattleBuffersTransferData[3] = 11;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x0C_C_C_C(u8 a)
+void Emitcmd12(u8 a)
{
gBattleBuffersTransferData[0] = 12;
gBattleBuffersTransferData[1] = 12;
gBattleBuffersTransferData[2] = 12;
gBattleBuffersTransferData[3] = 12;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x0D_a(u8 a, u8 b)
+void EmitBallThrow(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 13;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void unref_sub_800C828(u8 a, u8 b, u8 *c)
+void EmitPuase(u8 a, u8 b, u8 *c)
{
int i;
@@ -700,10 +702,10 @@ void unref_sub_800C828(u8 a, u8 b, u8 *c)
gBattleBuffersTransferData[1] = b;
for (i = 0; i < b * 3; i++)
gBattleBuffersTransferData[2 + i] = *(c++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, b * 3 + 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b * 3 + 2);
}
-void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g)
+void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g)
{
gBattleBuffersTransferData[0] = 15;
gBattleBuffersTransferData[1] = b;
@@ -729,315 +731,88 @@ void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g)
}
gBattleBuffersTransferData[14] = 0;
gBattleBuffersTransferData[15] = 0;
- memcpy(&gBattleBuffersTransferData[16], g, 0x1C);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 0x2C);
+ memcpy(&gBattleBuffersTransferData[16], g, sizeof(*g));
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 0x2C);
}
-#ifdef NONMATCHING
-void EmitPrintString(u8 a, u16 b)
+void EmitPrintString(u8 a, u16 stringID)
{
- int i;
- //u16 *r12;
+ s32 i;
+ struct StringInfoBattle* stringInfo;
gBattleBuffersTransferData[0] = 16;
gBattleBuffersTransferData[1] = gBattleOutcome;
- gBattleBuffersTransferData[2] = b;
- gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8;
-
- *((u16 *)&gBattleBuffersTransferData[4]) = gCurrentMove;
- *((u16 *)&gBattleBuffersTransferData[6]) = gUnknown_02024BE8;
- *((u16 *)&gBattleBuffersTransferData[8]) = gLastUsedItem;
+ gBattleBuffersTransferData[2] = stringID;
+ gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
+
+ stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]);
+ stringInfo->currentMove = gCurrentMove;
+ stringInfo->lastMove = gUnknown_02024BE8;
+ stringInfo->lastItem = gLastUsedItem;
+ stringInfo->lastAbility = gLastUsedAbility;
+ stringInfo->scrActive = BATTLE_STRUCT->scriptingActive;
+ stringInfo->unk1605E = BATTLE_STRUCT->unk1605E;
+ stringInfo->hpScale = BATTLE_STRUCT->hpScale;
+ stringInfo->StringBank = gStringBank;
+ stringInfo->moveType = gBattleMoves[gCurrentMove].type;
- gBattleBuffersTransferData[10] = gLastUsedAbility;
- gBattleBuffersTransferData[11] = unk_2000000[0x16000 + 3];
- gBattleBuffersTransferData[12] = unk_2000000[0x16000 + 0x5E];
- gBattleBuffersTransferData[13] = unk_2000000[0x16000 + 0xC1];
- gBattleBuffersTransferData[14] = gStringBank;
- gBattleBuffersTransferData[15] = gBattleMoves[gCurrentMove].type;
for (i = 0; i < 4; i++)
+ stringInfo->abilities[i] = gBattleMons[i].ability;
+ for (i = 0; i < 0x10; i++)
{
- gBattleBuffersTransferData[16 + i] = gBattleMons[i].ability;
+ stringInfo->textBuffs[0][i] = gBattleTextBuff1[i];
+ stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
+ stringInfo->textBuffs[2][i] = gBattleTextBuff3[i];
}
- for (i = 0; i < 16; i++)
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
+}
+
+void EmitPrintStringPlayerOnly(u8 a, u16 stringID)
+{
+ s32 i;
+ struct StringInfoBattle* stringInfo;
+
+ gBattleBuffersTransferData[0] = 17;
+ gBattleBuffersTransferData[1] = 17;
+ gBattleBuffersTransferData[2] = stringID;
+ gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
+
+ stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]);
+ stringInfo->currentMove = gCurrentMove;
+ stringInfo->lastMove = gUnknown_02024BE8;
+ stringInfo->lastItem = gLastUsedItem;
+ stringInfo->lastAbility = gLastUsedAbility;
+ stringInfo->scrActive = BATTLE_STRUCT->scriptingActive;
+ stringInfo->unk1605E = BATTLE_STRUCT->unk1605E;
+
+ for (i = 0; i < 4; i++)
+ stringInfo->abilities[i] = gBattleMons[i].ability;
+ for (i = 0; i < 0x10; i++)
{
- gBattleBuffersTransferData[20 + i] = gBattleTextBuff1[i];
- gBattleBuffersTransferData[36 + i] = gBattleTextBuff2[i];
- gBattleBuffersTransferData[52 + i] = gBattleTextBuff3[i];
+ stringInfo->textBuffs[0][i] = gBattleTextBuff1[i];
+ stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
+ stringInfo->textBuffs[2][i] = gBattleTextBuff3[i];
}
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 0x44);
-}
-#else
-__attribute__((naked))
-void EmitPrintString(u8 a, u16 b)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- ldr r2, _0800CA2C @ =gBattleBuffersTransferData\n\
- movs r0, 0x10\n\
- strb r0, [r2]\n\
- ldr r0, _0800CA30 @ =gBattleOutcome\n\
- ldrb r0, [r0]\n\
- strb r0, [r2, 0x1]\n\
- strb r1, [r2, 0x2]\n\
- lsrs r1, 8\n\
- strb r1, [r2, 0x3]\n\
- adds r0, r2, 0x4\n\
- mov r12, r0\n\
- ldr r4, _0800CA34 @ =gCurrentMove\n\
- ldrh r0, [r4]\n\
- strh r0, [r2, 0x4]\n\
- ldr r0, _0800CA38 @ =gUnknown_02024BE8\n\
- ldrh r0, [r0]\n\
- mov r1, r12\n\
- strh r0, [r1, 0x2]\n\
- ldr r0, _0800CA3C @ =gLastUsedItem\n\
- ldrh r0, [r0]\n\
- strh r0, [r1, 0x4]\n\
- ldr r0, _0800CA40 @ =gLastUsedAbility\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x6]\n\
- ldr r1, _0800CA44 @ =0x02000000\n\
- ldr r3, _0800CA48 @ =0x00016003\n\
- adds r0, r1, r3\n\
- ldrb r0, [r0]\n\
- mov r7, r12\n\
- strb r0, [r7, 0x7]\n\
- adds r3, 0x5B\n\
- adds r0, r1, r3\n\
- ldrb r0, [r0]\n\
- strb r0, [r7, 0x8]\n\
- ldr r7, _0800CA4C @ =0x000160c1\n\
- adds r1, r7\n\
- ldrb r0, [r1]\n\
- mov r1, r12\n\
- strb r0, [r1, 0x9]\n\
- ldr r0, _0800CA50 @ =gStringBank\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0xA]\n\
- ldr r3, _0800CA54 @ =gBattleMoves\n\
- ldrh r1, [r4]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- ldrb r0, [r0, 0x2]\n\
- mov r3, r12\n\
- strb r0, [r3, 0xB]\n\
- movs r3, 0\n\
- mov r9, r2\n\
- ldr r7, _0800CA58 @ =gBattleTextBuff3\n\
- mov r8, r7\n\
- adds r2, 0x10\n\
- ldr r0, _0800CA5C @ =gBattleMons\n\
- adds r4, r0, 0\n\
- adds r4, 0x20\n\
-_0800C9D2:\n\
- adds r1, r2, r3\n\
- ldrb r0, [r4]\n\
- strb r0, [r1]\n\
- adds r4, 0x58\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- ble _0800C9D2\n\
- movs r3, 0\n\
- mov r5, r12\n\
- adds r5, 0x10\n\
- mov r4, r12\n\
- adds r4, 0x20\n\
- ldr r6, _0800CA60 @ =gBattleTextBuff2\n\
- mov r2, r12\n\
- adds r2, 0x30\n\
-_0800C9F0:\n\
- adds r1, r5, r3\n\
- ldr r7, _0800CA64 @ =gBattleTextBuff1\n\
- adds r0, r3, r7\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r1, r4, r3\n\
- adds r0, r3, r6\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r1, r2, r3\n\
- mov r7, r8\n\
- adds r0, r3, r7\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r3, 0x1\n\
- cmp r3, 0xF\n\
- ble _0800C9F0\n\
- mov r0, r10\n\
- mov r1, r9\n\
- movs r2, 0x44\n\
- bl dp01_prepare_buffer\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0800CA2C: .4byte gBattleBuffersTransferData\n\
-_0800CA30: .4byte gBattleOutcome\n\
-_0800CA34: .4byte gCurrentMove\n\
-_0800CA38: .4byte gUnknown_02024BE8\n\
-_0800CA3C: .4byte gLastUsedItem\n\
-_0800CA40: .4byte gLastUsedAbility\n\
-_0800CA44: .4byte 0x02000000\n\
-_0800CA48: .4byte 0x00016003\n\
-_0800CA4C: .4byte 0x000160c1\n\
-_0800CA50: .4byte gStringBank\n\
-_0800CA54: .4byte gBattleMoves\n\
-_0800CA58: .4byte gBattleTextBuff3\n\
-_0800CA5C: .4byte gBattleMons\n\
-_0800CA60: .4byte gBattleTextBuff2\n\
-_0800CA64: .4byte gBattleTextBuff1\n\
- .syntax divided\n");
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
}
-#endif
-__attribute__((naked))
-void EmitPrintStringPlayerOnly()
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- ldr r2, _0800CB28 @ =gBattleBuffersTransferData\n\
- movs r0, 0x11\n\
- strb r0, [r2]\n\
- strb r0, [r2, 0x1]\n\
- strb r1, [r2, 0x2]\n\
- lsrs r1, 8\n\
- strb r1, [r2, 0x3]\n\
- adds r0, r2, 0x4\n\
- mov r12, r0\n\
- ldr r0, _0800CB2C @ =gCurrentMove\n\
- ldrh r0, [r0]\n\
- strh r0, [r2, 0x4]\n\
- ldr r0, _0800CB30 @ =gUnknown_02024BE8\n\
- ldrh r0, [r0]\n\
- mov r1, r12\n\
- strh r0, [r1, 0x2]\n\
- ldr r0, _0800CB34 @ =gLastUsedItem\n\
- ldrh r0, [r0]\n\
- strh r0, [r1, 0x4]\n\
- ldr r0, _0800CB38 @ =gLastUsedAbility\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x6]\n\
- ldr r0, _0800CB3C @ =0x02000000\n\
- ldr r3, _0800CB40 @ =0x00016003\n\
- adds r1, r0, r3\n\
- ldrb r1, [r1]\n\
- mov r7, r12\n\
- strb r1, [r7, 0x7]\n\
- ldr r1, _0800CB44 @ =0x0001605e\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- strb r0, [r7, 0x8]\n\
- movs r3, 0\n\
- mov r9, r2\n\
- ldr r7, _0800CB48 @ =gBattleTextBuff3\n\
- mov r8, r7\n\
- mov r4, r9\n\
- adds r4, 0x10\n\
- ldr r0, _0800CB4C @ =gBattleMons\n\
- adds r2, r0, 0\n\
- adds r2, 0x20\n\
-_0800CACE:\n\
- adds r1, r4, r3\n\
- ldrb r0, [r2]\n\
- strb r0, [r1]\n\
- adds r2, 0x58\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- ble _0800CACE\n\
- movs r3, 0\n\
- mov r5, r12\n\
- adds r5, 0x10\n\
- mov r4, r12\n\
- adds r4, 0x20\n\
- ldr r6, _0800CB50 @ =gBattleTextBuff2\n\
- mov r2, r12\n\
- adds r2, 0x30\n\
-_0800CAEC:\n\
- adds r1, r5, r3\n\
- ldr r7, _0800CB54 @ =gBattleTextBuff1\n\
- adds r0, r3, r7\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r1, r4, r3\n\
- adds r0, r3, r6\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r1, r2, r3\n\
- mov r7, r8\n\
- adds r0, r3, r7\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r3, 0x1\n\
- cmp r3, 0xF\n\
- ble _0800CAEC\n\
- mov r0, r10\n\
- mov r1, r9\n\
- movs r2, 0x44\n\
- bl dp01_prepare_buffer\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0800CB28: .4byte gBattleBuffersTransferData\n\
-_0800CB2C: .4byte gCurrentMove\n\
-_0800CB30: .4byte gUnknown_02024BE8\n\
-_0800CB34: .4byte gLastUsedItem\n\
-_0800CB38: .4byte gLastUsedAbility\n\
-_0800CB3C: .4byte 0x02000000\n\
-_0800CB40: .4byte 0x00016003\n\
-_0800CB44: .4byte 0x0001605e\n\
-_0800CB48: .4byte gBattleTextBuff3\n\
-_0800CB4C: .4byte gBattleMons\n\
-_0800CB50: .4byte gBattleTextBuff2\n\
-_0800CB54: .4byte gBattleTextBuff1\n\
- .syntax divided\n");
-}
-
-void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c)
+void Emitcmd18(u8 a, u8 b, u16 c)
{
gBattleBuffersTransferData[0] = 18;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void unref_sub_800CB84(u8 a, u8 b)
+void Emitcmd19(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 19;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d)
+void Emitcmd20(u8 a, u8 b, u8 c, u8 *d)
{
u32 i;
@@ -1047,20 +822,20 @@ void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d)
gBattleBuffersTransferData[3] = 0;
for (i = 0; i < 20; i++)
gBattleBuffersTransferData[4 + i] = d[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 24);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 24);
}
-void sub_800CBE0(u8 a, u8 *b)
+void EmitOpenBag(u8 a, u8 *b)
{
int i;
gBattleBuffersTransferData[0] = 21;
for (i = 0; i < 3; i++)
gBattleBuffersTransferData[1 + i] = b[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e)
+void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e)
{
int i;
@@ -1070,34 +845,38 @@ void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e)
gBattleBuffersTransferData[3] = d;
for (i = 0; i < 3; i++)
gBattleBuffersTransferData[4 + i] = e[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 8); //but only 7 bytes were written
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 8); //but only 7 bytes were written
}
-void dp01_build_cmdbuf_x17_17_17_17(u8 a)
+void Emitcmd23(u8 a)
{
gBattleBuffersTransferData[0] = 23;
gBattleBuffersTransferData[1] = 23;
gBattleBuffersTransferData[2] = 23;
gBattleBuffersTransferData[3] = 23;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitHealthBarUpdate(u8 a, s16 b)
+// FIXME: I think this function is supposed to take s16 as its second argument,
+// but battle_4.c expects u16
+void EmitHealthBarUpdate(u8 a, u16 b)
{
gBattleBuffersTransferData[0] = 24;
gBattleBuffersTransferData[1] = 0;
- gBattleBuffersTransferData[2] = b;
- gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ gBattleBuffersTransferData[2] = (s16)b;
+ gBattleBuffersTransferData[3] = ((s16)b & 0xFF00) >> 8;
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitExpBarUpdate(u8 a, u8 b, s16 c)
+// FIXME: I think this function is supposed to take s16 as its third argument,
+// but battle_4.c expects u16
+void EmitExpBarUpdate(u8 a, u8 b, u16 c)
{
gBattleBuffersTransferData[0] = 25;
gBattleBuffersTransferData[1] = b;
- gBattleBuffersTransferData[2] = c;
- gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ gBattleBuffersTransferData[2] = (s16)c;
+ gBattleBuffersTransferData[3] = ((s16)c & 0xFF00) >> 8;
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitStatusIconUpdate(u8 a, u32 b, u32 c)
@@ -1111,7 +890,7 @@ void EmitStatusIconUpdate(u8 a, u32 b, u32 c)
gBattleBuffersTransferData[6] = (c & 0x0000FF00) >> 8;
gBattleBuffersTransferData[7] = (c & 0x00FF0000) >> 16;
gBattleBuffersTransferData[8] = (c & 0xFF000000) >> 24;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 9);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 9);
}
void EmitStatusAnimation(u8 a, u8 b, u32 c)
@@ -1122,17 +901,17 @@ void EmitStatusAnimation(u8 a, u8 b, u32 c)
gBattleBuffersTransferData[3] = (c & 0x0000FF00) >> 8;
gBattleBuffersTransferData[4] = (c & 0x00FF0000) >> 16;
gBattleBuffersTransferData[5] = (c & 0xFF000000) >> 24;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 6);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 6);
}
void EmitStatusXor(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 28;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8 a, u16 b, u8 *c)
+void Emitcmd29(u8 a, u16 b, u8 *c)
{
int i;
@@ -1142,10 +921,10 @@ void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8 a, u16 b, u8 *c)
gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8;
for (i = 0; i < b; i++)
gBattleBuffersTransferData[4 + i] = *(c++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 4);
}
-void unref_sub_800CDD4(u8 a, u32 b, u16 c, u8 *d)
+void EmitDMATransfer(u8 a, u32 b, u16 c, u8 *d)
{
int i;
@@ -1158,10 +937,10 @@ void unref_sub_800CDD4(u8 a, u32 b, u16 c, u8 *d)
gBattleBuffersTransferData[6] = (c & 0xFF00) >> 8;
for (i = 0; i < c; i++)
gBattleBuffersTransferData[7 + i] = *(d++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, c + 7);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, c + 7);
}
-void unref_sub_800CE3C(u8 a, u16 b, u8 *c)
+void Emitcmd31(u8 a, u16 b, u8 *c)
{
int i;
@@ -1170,10 +949,10 @@ void unref_sub_800CE3C(u8 a, u16 b, u8 *c)
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
for (i = 0; i < b; i++)
gBattleBuffersTransferData[3 + i] = *(c++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 3);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3);
}
-void unref_sub_800CE84(u8 a, u16 b, u8 *c)
+void Emitcmd32(u8 a, u16 b, u8 *c)
{
int i;
@@ -1182,19 +961,19 @@ void unref_sub_800CE84(u8 a, u16 b, u8 *c)
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
for (i = 0; i < b; i++)
gBattleBuffersTransferData[3 + i] = *(c++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 3);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3);
}
-void dp01_build_cmdbuf_x21_a_bb(u8 a, u8 b, u16 c)
+void Emitcmd33(u8 a, u8 b, u16 c)
{
gBattleBuffersTransferData[0] = 33;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c)
+void Emitcmd34(u8 a, u8 b, u8 *c)
{
int i;
@@ -1202,59 +981,59 @@ void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c)
gBattleBuffersTransferData[1] = b;
for (i = 0; i < 3; i++)
gBattleBuffersTransferData[2 + i] = c[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 5);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 5);
}
-void dp01_build_cmdbuf_x23_aa_0(u8 a, u16 b)
+void Emitcmd35(u8 a, u16 b)
{
gBattleBuffersTransferData[0] = 35;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x24_aa_0(u8 a, u16 b)
+void Emitcmd36(u8 a, u16 b)
{
gBattleBuffersTransferData[0] = 36;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x25_25_25_25(u8 a)
+void Emitcmd37(u8 a)
{
gBattleBuffersTransferData[0] = 37;
gBattleBuffersTransferData[1] = 37;
gBattleBuffersTransferData[2] = 37;
gBattleBuffersTransferData[3] = 37;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x26_a(u8 a, u8 b)
+void Emitcmd38(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 38;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x27_27_27_27(u8 a)
+void Emitcmd39(u8 a)
{
gBattleBuffersTransferData[0] = 39;
gBattleBuffersTransferData[1] = 39;
gBattleBuffersTransferData[2] = 39;
gBattleBuffersTransferData[3] = 39;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x28_28_28_28(u8 a)
+void Emitcmd40(u8 a)
{
gBattleBuffersTransferData[0] = 40;
gBattleBuffersTransferData[1] = 40;
gBattleBuffersTransferData[2] = 40;
gBattleBuffersTransferData[3] = 40;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitHitAnimation(u8 a)
@@ -1263,16 +1042,16 @@ void EmitHitAnimation(u8 a)
gBattleBuffersTransferData[1] = 41;
gBattleBuffersTransferData[2] = 41;
gBattleBuffersTransferData[3] = 41;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a)
+void Emitcmd42(u8 a)
{
gBattleBuffersTransferData[0] = 42;
gBattleBuffersTransferData[1] = 42;
gBattleBuffersTransferData[2] = 42;
gBattleBuffersTransferData[3] = 42;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitEffectivenessSound(u8 a, u16 b)
@@ -1281,16 +1060,16 @@ void EmitEffectivenessSound(u8 a, u16 b)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void sub_800D074(u8 a, u16 b)
+void Emitcmd44(u8 a, u16 b)
{
gBattleBuffersTransferData[0] = 44;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitFaintingCry(u8 a)
@@ -1299,26 +1078,26 @@ void EmitFaintingCry(u8 a)
gBattleBuffersTransferData[1] = 45;
gBattleBuffersTransferData[2] = 45;
gBattleBuffersTransferData[3] = 45;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitBattleIntroSlide(u8 a, u8 b)
+void EmitIntroSlide(u8 a, u8 battleTerrain)
{
gBattleBuffersTransferData[0] = 46;
- gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ gBattleBuffersTransferData[1] = battleTerrain;
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a)
+void EmitTrainerBallThrow(u8 a)
{
gBattleBuffersTransferData[0] = 47;
gBattleBuffersTransferData[1] = 47;
gBattleBuffersTransferData[2] = 47;
gBattleBuffersTransferData[3] = 47;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c)
+void Emitcmd48(u8 a, u8 *b, u8 c)
{
int i;
@@ -1328,25 +1107,25 @@ void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c)
gBattleBuffersTransferData[3] = 48;
for (i = 0; i < 48; i++)
gBattleBuffersTransferData[4 + i] = b[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 52);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 52);
}
-void dp01_build_cmdbuf_x31_31_31_31(u8 a)
+void Emitcmd49(u8 a)
{
gBattleBuffersTransferData[0] = 49;
gBattleBuffersTransferData[1] = 49;
gBattleBuffersTransferData[2] = 49;
gBattleBuffersTransferData[3] = 49;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x32_32_32_32(u8 a)
+void Emitcmd50(u8 a)
{
gBattleBuffersTransferData[0] = 50;
gBattleBuffersTransferData[1] = 50;
gBattleBuffersTransferData[2] = 50;
gBattleBuffersTransferData[3] = 50;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitSpriteInvisibility(u8 a, u8 b)
@@ -1355,7 +1134,7 @@ void EmitSpriteInvisibility(u8 a, u8 b)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = 51;
gBattleBuffersTransferData[3] = 51;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitBattleAnimation(u8 a, u8 b, u16 c)
@@ -1364,26 +1143,26 @@ void EmitBattleAnimation(u8 a, u8 b, u16 c)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitLinkStandbyMsg(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 53;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
void EmitResetActionMoveSelection(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 54;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x37_a(u8 a, u8 b)
+void Emitcmd55(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 55;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}