Some EWRAM offsets abstracted away

This commit is contained in:
PikalaxALT
2017-11-10 20:27:02 -05:00
parent 263fbdb2c1
commit 3503444d3b
5 changed files with 329 additions and 373 deletions
+2 -26
View File
@@ -5,30 +5,6 @@
.text .text
thumb_func_start sub_800A3EC
sub_800A3EC: @ 800A3EC
ldr r1, =gUnknown_03003140
movs r0, 0
str r0, [r1]
bx lr
.pool
thumb_func_end sub_800A3EC
thumb_func_start sub_800A3F8
sub_800A3F8: @ 800A3F8
push {lr}
bl GetMultiplayerId
ldr r0, =0x00004444
bl sub_8009D90
ldr r1, =gUnknown_020223C0
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.pool
thumb_func_end sub_800A3F8
thumb_func_start sub_800A418 thumb_func_start sub_800A418
sub_800A418: @ 800A418 sub_800A418: @ 800A418
push {lr} push {lr}
@@ -22370,7 +22346,7 @@ _08016118:
movs r0, 0x21 movs r0, 0x21
strb r0, [r6, 0x14] strb r0, [r6, 0x14]
ldr r0, =gStringVar1 ldr r0, =gStringVar1
ldr r4, =gUnknown_02022A0C ldr r4, =gLinkPlayers + 0x1C + 0x08 @ &gLinkPlayers[1].name
adds r1, r4, 0 adds r1, r4, 0
bl StringCopy bl StringCopy
adds r0, r4, 0 adds r0, r4, 0
@@ -29144,7 +29120,7 @@ _08019870:
_08019884: _08019884:
bl task_add_05_task_del_08FA224_when_no_RfuFunc bl task_add_05_task_del_08FA224_when_no_RfuFunc
ldr r0, =gStringVar1 ldr r0, =gStringVar1
ldr r1, =gUnknown_02022A0C ldr r1, =gLinkPlayers + 0x1C + 0x08 @ &gLinkPlayers[1].name
bl StringCopy bl StringCopy
movs r0, 0x22 movs r0, 0x22
strb r0, [r5, 0x8] strb r0, [r5, 0x8]
+1 -1
View File
@@ -136,7 +136,7 @@ extern u8 gUnknown_020228C4[BLOCK_BUFFER_SIZE]; // gBlockSendBuffer
extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE]; extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE];
extern u16 gLinkType; extern u16 gLinkType;
extern u32 gLinkStatus; extern u32 gLinkStatus;
extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS + 1][BLOCK_BUFFER_SIZE / 2];
extern u16 gSendCmd[CMD_LENGTH]; extern u16 gSendCmd[CMD_LENGTH];
extern u8 gShouldAdvanceLinkState; extern u8 gShouldAdvanceLinkState;
extern struct LinkPlayer gLinkPlayers[]; extern struct LinkPlayer gLinkPlayers[];
+299 -301
View File
@@ -12,7 +12,6 @@
#include "abilities.h" #include "abilities.h"
#include "battle_message.h" #include "battle_message.h"
extern u32 gBattleTypeFlags;
extern u32 gBattleExecBuffer; extern u32 gBattleExecBuffer;
extern void (*gBattleMainFunc)(void); extern void (*gBattleMainFunc)(void);
extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void); extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
@@ -27,7 +26,6 @@ extern u8 gUnknown_0203C7B4;
extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
extern u8 gBattleBuffersTransferData[0x100];
extern u8 gUnknown_02022D08; extern u8 gUnknown_02022D08;
extern u8 gUnknown_02022D09; extern u8 gUnknown_02022D09;
extern u8 gUnknown_02022D0A; extern u8 gUnknown_02022D0A;
@@ -39,11 +37,11 @@ extern u16 gBattleWeather;
extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern u16 gCurrentMove; extern u16 gCurrentMove;
extern u16 gLastUsedMove; extern u16 gLastUsedMove;
extern u16 gLastUsedItem;
extern u8 gBattleOutcome;
extern u8 gLastUsedAbility; extern u8 gLastUsedAbility;
extern u8 gStringBank; extern u8 gStringBank;
static EWRAM_DATA u8 sBattleBuffersTransferData[0x100] = {};
extern const struct BattleMove gBattleMoves[]; extern const struct BattleMove gBattleMoves[];
extern void task00_08081A90(u8 taskId); // cable_club extern void task00_08081A90(u8 taskId); // cable_club
@@ -941,171 +939,171 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
void EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck) void EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_GETMONDATA; sBattleBuffersTransferData[0] = CONTROLLER_GETMONDATA;
gBattleBuffersTransferData[1] = requestId; sBattleBuffersTransferData[1] = requestId;
gBattleBuffersTransferData[2] = monToCheck; sBattleBuffersTransferData[2] = monToCheck;
gBattleBuffersTransferData[3] = 0; sBattleBuffersTransferData[3] = 0;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes) void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_GETRAWMONDATA; sBattleBuffersTransferData[0] = CONTROLLER_GETRAWMONDATA;
gBattleBuffersTransferData[1] = monId; sBattleBuffersTransferData[1] = monId;
gBattleBuffersTransferData[2] = bytes; sBattleBuffersTransferData[2] = bytes;
gBattleBuffersTransferData[3] = 0; sBattleBuffersTransferData[3] = 0;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data) void EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data)
{ {
s32 i; s32 i;
gBattleBuffersTransferData[0] = CONTROLLER_SETMONDATA; sBattleBuffersTransferData[0] = CONTROLLER_SETMONDATA;
gBattleBuffersTransferData[1] = requestId; sBattleBuffersTransferData[1] = requestId;
gBattleBuffersTransferData[2] = monToCheck; sBattleBuffersTransferData[2] = monToCheck;
for (i = 0; i < bytes; i++) for (i = 0; i < bytes; i++)
gBattleBuffersTransferData[3 + i] = *(u8*)(data++); sBattleBuffersTransferData[3 + i] = *(u8*)(data++);
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 3 + bytes); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 3 + bytes);
} }
void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data) void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data)
{ {
s32 i; s32 i;
gBattleBuffersTransferData[0] = CONTROLLER_SETRAWMONDATA; sBattleBuffersTransferData[0] = CONTROLLER_SETRAWMONDATA;
gBattleBuffersTransferData[1] = monId; sBattleBuffersTransferData[1] = monId;
gBattleBuffersTransferData[2] = bytes; sBattleBuffersTransferData[2] = bytes;
for (i = 0; i < bytes; i++) for (i = 0; i < bytes; i++)
gBattleBuffersTransferData[3 + i] = *(u8*)(data++); sBattleBuffersTransferData[3 + i] = *(u8*)(data++);
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, bytes + 3); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, bytes + 3);
} }
void EmitLoadMonSprite(u8 bufferId) void EmitLoadMonSprite(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_LOADMONSPRITE; sBattleBuffersTransferData[0] = CONTROLLER_LOADMONSPRITE;
gBattleBuffersTransferData[1] = CONTROLLER_LOADMONSPRITE; sBattleBuffersTransferData[1] = CONTROLLER_LOADMONSPRITE;
gBattleBuffersTransferData[2] = CONTROLLER_LOADMONSPRITE; sBattleBuffersTransferData[2] = CONTROLLER_LOADMONSPRITE;
gBattleBuffersTransferData[3] = CONTROLLER_LOADMONSPRITE; sBattleBuffersTransferData[3] = CONTROLLER_LOADMONSPRITE;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit) void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_SWITCHINANIM; sBattleBuffersTransferData[0] = CONTROLLER_SWITCHINANIM;
gBattleBuffersTransferData[1] = partyId; sBattleBuffersTransferData[1] = partyId;
gBattleBuffersTransferData[2] = dontClearSubstituteBit; sBattleBuffersTransferData[2] = dontClearSubstituteBit;
gBattleBuffersTransferData[3] = 5; sBattleBuffersTransferData[3] = 5;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitReturnMonToBall(u8 bufferId, u8 arg1) void EmitReturnMonToBall(u8 bufferId, u8 arg1)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_RETURNMONTOBALL; sBattleBuffersTransferData[0] = CONTROLLER_RETURNMONTOBALL;
gBattleBuffersTransferData[1] = arg1; sBattleBuffersTransferData[1] = arg1;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
} }
void EmitDrawTrainerPic(u8 bufferId) void EmitDrawTrainerPic(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_DRAWTRAINERPIC; sBattleBuffersTransferData[0] = CONTROLLER_DRAWTRAINERPIC;
gBattleBuffersTransferData[1] = CONTROLLER_DRAWTRAINERPIC; sBattleBuffersTransferData[1] = CONTROLLER_DRAWTRAINERPIC;
gBattleBuffersTransferData[2] = CONTROLLER_DRAWTRAINERPIC; sBattleBuffersTransferData[2] = CONTROLLER_DRAWTRAINERPIC;
gBattleBuffersTransferData[3] = CONTROLLER_DRAWTRAINERPIC; sBattleBuffersTransferData[3] = CONTROLLER_DRAWTRAINERPIC;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitTrainerSlide(u8 bufferId) void EmitTrainerSlide(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDE; sBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDE;
gBattleBuffersTransferData[1] = CONTROLLER_TRAINERSLIDE; sBattleBuffersTransferData[1] = CONTROLLER_TRAINERSLIDE;
gBattleBuffersTransferData[2] = CONTROLLER_TRAINERSLIDE; sBattleBuffersTransferData[2] = CONTROLLER_TRAINERSLIDE;
gBattleBuffersTransferData[3] = CONTROLLER_TRAINERSLIDE; sBattleBuffersTransferData[3] = CONTROLLER_TRAINERSLIDE;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitTrainerSlideBack(u8 bufferId) void EmitTrainerSlideBack(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDEBACK; sBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDEBACK;
gBattleBuffersTransferData[1] = CONTROLLER_TRAINERSLIDEBACK; sBattleBuffersTransferData[1] = CONTROLLER_TRAINERSLIDEBACK;
gBattleBuffersTransferData[2] = CONTROLLER_TRAINERSLIDEBACK; sBattleBuffersTransferData[2] = CONTROLLER_TRAINERSLIDEBACK;
gBattleBuffersTransferData[3] = CONTROLLER_TRAINERSLIDEBACK; sBattleBuffersTransferData[3] = CONTROLLER_TRAINERSLIDEBACK;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitFaintAnimation(u8 bufferId) void EmitFaintAnimation(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_FAINTANIMATION; sBattleBuffersTransferData[0] = CONTROLLER_FAINTANIMATION;
gBattleBuffersTransferData[1] = CONTROLLER_FAINTANIMATION; sBattleBuffersTransferData[1] = CONTROLLER_FAINTANIMATION;
gBattleBuffersTransferData[2] = CONTROLLER_FAINTANIMATION; sBattleBuffersTransferData[2] = CONTROLLER_FAINTANIMATION;
gBattleBuffersTransferData[3] = CONTROLLER_FAINTANIMATION; sBattleBuffersTransferData[3] = CONTROLLER_FAINTANIMATION;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitPaletteFade(u8 bufferId) void EmitPaletteFade(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_PALETTEFADE; sBattleBuffersTransferData[0] = CONTROLLER_PALETTEFADE;
gBattleBuffersTransferData[1] = CONTROLLER_PALETTEFADE; sBattleBuffersTransferData[1] = CONTROLLER_PALETTEFADE;
gBattleBuffersTransferData[2] = CONTROLLER_PALETTEFADE; sBattleBuffersTransferData[2] = CONTROLLER_PALETTEFADE;
gBattleBuffersTransferData[3] = CONTROLLER_PALETTEFADE; sBattleBuffersTransferData[3] = CONTROLLER_PALETTEFADE;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitSuccessBallThrowAnim(u8 bufferId) void EmitSuccessBallThrowAnim(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_SUCCESSBALLTHROWANIM; sBattleBuffersTransferData[0] = CONTROLLER_SUCCESSBALLTHROWANIM;
gBattleBuffersTransferData[1] = CONTROLLER_SUCCESSBALLTHROWANIM; sBattleBuffersTransferData[1] = CONTROLLER_SUCCESSBALLTHROWANIM;
gBattleBuffersTransferData[2] = CONTROLLER_SUCCESSBALLTHROWANIM; sBattleBuffersTransferData[2] = CONTROLLER_SUCCESSBALLTHROWANIM;
gBattleBuffersTransferData[3] = CONTROLLER_SUCCESSBALLTHROWANIM; sBattleBuffersTransferData[3] = CONTROLLER_SUCCESSBALLTHROWANIM;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitBallThrowAnim(u8 bufferId, u8 caseId) void EmitBallThrowAnim(u8 bufferId, u8 caseId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_BALLTHROWANIM; sBattleBuffersTransferData[0] = CONTROLLER_BALLTHROWANIM;
gBattleBuffersTransferData[1] = caseId; sBattleBuffersTransferData[1] = caseId;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
} }
void EmitPause(u8 bufferId, u8 toWait, void *data) void EmitPause(u8 bufferId, u8 toWait, void *data)
{ {
s32 i; s32 i;
gBattleBuffersTransferData[0] = CONTROLLER_PAUSE; sBattleBuffersTransferData[0] = CONTROLLER_PAUSE;
gBattleBuffersTransferData[1] = toWait; sBattleBuffersTransferData[1] = toWait;
for (i = 0; i < toWait * 3; i++) for (i = 0; i < toWait * 3; i++)
gBattleBuffersTransferData[2 + i] = *(u8*)(data++); sBattleBuffersTransferData[2 + i] = *(u8*)(data++);
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, toWait * 3 + 2); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, toWait * 3 + 2);
} }
void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit) void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_MOVEANIMATION; sBattleBuffersTransferData[0] = CONTROLLER_MOVEANIMATION;
gBattleBuffersTransferData[1] = move; sBattleBuffersTransferData[1] = move;
gBattleBuffersTransferData[2] = (move & 0xFF00) >> 8; sBattleBuffersTransferData[2] = (move & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = turnOfMove; sBattleBuffersTransferData[3] = turnOfMove;
gBattleBuffersTransferData[4] = movePower; sBattleBuffersTransferData[4] = movePower;
gBattleBuffersTransferData[5] = (movePower & 0xFF00) >> 8; sBattleBuffersTransferData[5] = (movePower & 0xFF00) >> 8;
gBattleBuffersTransferData[6] = dmg; sBattleBuffersTransferData[6] = dmg;
gBattleBuffersTransferData[7] = (dmg & 0x0000FF00) >> 8; sBattleBuffersTransferData[7] = (dmg & 0x0000FF00) >> 8;
gBattleBuffersTransferData[8] = (dmg & 0x00FF0000) >> 16; sBattleBuffersTransferData[8] = (dmg & 0x00FF0000) >> 16;
gBattleBuffersTransferData[9] = (dmg & 0xFF000000) >> 24; sBattleBuffersTransferData[9] = (dmg & 0xFF000000) >> 24;
gBattleBuffersTransferData[10] = friendship; sBattleBuffersTransferData[10] = friendship;
gBattleBuffersTransferData[11] = multihit; sBattleBuffersTransferData[11] = multihit;
if (WEATHER_HAS_EFFECT2) if (WEATHER_HAS_EFFECT2)
{ {
gBattleBuffersTransferData[12] = gBattleWeather; sBattleBuffersTransferData[12] = gBattleWeather;
gBattleBuffersTransferData[13] = (gBattleWeather & 0xFF00) >> 8; sBattleBuffersTransferData[13] = (gBattleWeather & 0xFF00) >> 8;
} }
else else
{ {
gBattleBuffersTransferData[12] = 0; sBattleBuffersTransferData[12] = 0;
gBattleBuffersTransferData[13] = 0; sBattleBuffersTransferData[13] = 0;
} }
gBattleBuffersTransferData[14] = 0; sBattleBuffersTransferData[14] = 0;
gBattleBuffersTransferData[15] = 0; sBattleBuffersTransferData[15] = 0;
memcpy(&gBattleBuffersTransferData[16], disableStructPtr, sizeof(struct DisableStruct)); memcpy(&sBattleBuffersTransferData[16], disableStructPtr, sizeof(struct DisableStruct));
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 16 + sizeof(struct DisableStruct)); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 16 + sizeof(struct DisableStruct));
} }
void EmitPrintString(u8 bufferId, u16 stringID) void EmitPrintString(u8 bufferId, u16 stringID)
@@ -1113,12 +1111,12 @@ void EmitPrintString(u8 bufferId, u16 stringID)
s32 i; s32 i;
struct StringInfoBattle* stringInfo; struct StringInfoBattle* stringInfo;
gBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRING; sBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRING;
gBattleBuffersTransferData[1] = gBattleOutcome; sBattleBuffersTransferData[1] = gBattleOutcome;
gBattleBuffersTransferData[2] = stringID; sBattleBuffersTransferData[2] = stringID;
gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; sBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); stringInfo = (struct StringInfoBattle*)(&sBattleBuffersTransferData[4]);
stringInfo->currentMove = gCurrentMove; stringInfo->currentMove = gCurrentMove;
stringInfo->lastMove = gLastUsedMove; stringInfo->lastMove = gLastUsedMove;
stringInfo->lastItem = gLastUsedItem; stringInfo->lastItem = gLastUsedItem;
@@ -1137,7 +1135,7 @@ void EmitPrintString(u8 bufferId, u16 stringID)
stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
stringInfo->textBuffs[2][i] = gBattleTextBuff3[i]; stringInfo->textBuffs[2][i] = gBattleTextBuff3[i];
} }
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
} }
void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringID) void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringID)
@@ -1145,12 +1143,12 @@ void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringID)
s32 i; s32 i;
struct StringInfoBattle* stringInfo; struct StringInfoBattle* stringInfo;
gBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRINGPLAYERONLY; sBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRINGPLAYERONLY;
gBattleBuffersTransferData[1] = CONTROLLER_PRINTSTRINGPLAYERONLY; sBattleBuffersTransferData[1] = CONTROLLER_PRINTSTRINGPLAYERONLY;
gBattleBuffersTransferData[2] = stringID; sBattleBuffersTransferData[2] = stringID;
gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; sBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); stringInfo = (struct StringInfoBattle*)(&sBattleBuffersTransferData[4]);
stringInfo->currentMove = gCurrentMove; stringInfo->currentMove = gCurrentMove;
stringInfo->lastMove = gLastUsedMove; stringInfo->lastMove = gLastUsedMove;
stringInfo->lastItem = gLastUsedItem; stringInfo->lastItem = gLastUsedItem;
@@ -1166,386 +1164,386 @@ void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringID)
stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
stringInfo->textBuffs[2][i] = gBattleTextBuff3[i]; stringInfo->textBuffs[2][i] = gBattleTextBuff3[i];
} }
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
} }
void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2) void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_CHOOSEACTION; sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEACTION;
gBattleBuffersTransferData[1] = arg1; sBattleBuffersTransferData[1] = arg1;
gBattleBuffersTransferData[2] = arg2; sBattleBuffersTransferData[2] = arg2;
gBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8; sBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitUnknownYesNoBox(u8 bufferId) void EmitUnknownYesNoBox(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_UNKNOWNYESNOBOX; sBattleBuffersTransferData[0] = CONTROLLER_UNKNOWNYESNOBOX;
gBattleBuffersTransferData[1] = CONTROLLER_UNKNOWNYESNOBOX; sBattleBuffersTransferData[1] = CONTROLLER_UNKNOWNYESNOBOX;
gBattleBuffersTransferData[2] = CONTROLLER_UNKNOWNYESNOBOX; sBattleBuffersTransferData[2] = CONTROLLER_UNKNOWNYESNOBOX;
gBattleBuffersTransferData[3] = CONTROLLER_UNKNOWNYESNOBOX; sBattleBuffersTransferData[3] = CONTROLLER_UNKNOWNYESNOBOX;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData) void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData)
{ {
s32 i; s32 i;
gBattleBuffersTransferData[0] = CONTROLLER_CHOOSEMOVE; sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEMOVE;
gBattleBuffersTransferData[1] = isDoubleBattle; sBattleBuffersTransferData[1] = isDoubleBattle;
gBattleBuffersTransferData[2] = NoPpNumber; sBattleBuffersTransferData[2] = NoPpNumber;
gBattleBuffersTransferData[3] = 0; sBattleBuffersTransferData[3] = 0;
for (i = 0; i < sizeof(*movePpData); i++) for (i = 0; i < sizeof(*movePpData); i++)
gBattleBuffersTransferData[4 + i] = *((u8*)(movePpData) + i); sBattleBuffersTransferData[4 + i] = *((u8*)(movePpData) + i);
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(*movePpData) + 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(*movePpData) + 4);
} }
void EmitChooseItem(u8 bufferId, u8 *arg1) void EmitChooseItem(u8 bufferId, u8 *arg1)
{ {
s32 i; s32 i;
gBattleBuffersTransferData[0] = CONTROLLER_OPENBAG; sBattleBuffersTransferData[0] = CONTROLLER_OPENBAG;
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
gBattleBuffersTransferData[1 + i] = arg1[i]; sBattleBuffersTransferData[1 + i] = arg1[i];
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4) void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4)
{ {
s32 i; s32 i;
gBattleBuffersTransferData[0] = CONTROLLER_CHOOSEPOKEMON; sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEPOKEMON;
gBattleBuffersTransferData[1] = caseId; sBattleBuffersTransferData[1] = caseId;
gBattleBuffersTransferData[2] = arg2; sBattleBuffersTransferData[2] = arg2;
gBattleBuffersTransferData[3] = abilityId; sBattleBuffersTransferData[3] = abilityId;
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
gBattleBuffersTransferData[4 + i] = arg4[i]; sBattleBuffersTransferData[4 + i] = arg4[i];
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 8); // but only 7 bytes were written PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 8); // but only 7 bytes were written
} }
void EmitCmd23(u8 bufferId) void EmitCmd23(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_23; sBattleBuffersTransferData[0] = CONTROLLER_23;
gBattleBuffersTransferData[1] = CONTROLLER_23; sBattleBuffersTransferData[1] = CONTROLLER_23;
gBattleBuffersTransferData[2] = CONTROLLER_23; sBattleBuffersTransferData[2] = CONTROLLER_23;
gBattleBuffersTransferData[3] = CONTROLLER_23; sBattleBuffersTransferData[3] = CONTROLLER_23;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
// why is the argument u16 if it's being cast to s16 anyway? // why is the argument u16 if it's being cast to s16 anyway?
void EmitHealthBarUpdate(u8 bufferId, u16 hpValue) void EmitHealthBarUpdate(u8 bufferId, u16 hpValue)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_HEALTHBARUPDATE; sBattleBuffersTransferData[0] = CONTROLLER_HEALTHBARUPDATE;
gBattleBuffersTransferData[1] = 0; sBattleBuffersTransferData[1] = 0;
gBattleBuffersTransferData[2] = (s16)hpValue; sBattleBuffersTransferData[2] = (s16)hpValue;
gBattleBuffersTransferData[3] = ((s16)hpValue & 0xFF00) >> 8; sBattleBuffersTransferData[3] = ((s16)hpValue & 0xFF00) >> 8;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
// why is the argument u16 if it's being cast to s16 anyway? // why is the argument u16 if it's being cast to s16 anyway?
void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints) void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_EXPUPDATE; sBattleBuffersTransferData[0] = CONTROLLER_EXPUPDATE;
gBattleBuffersTransferData[1] = partyId; sBattleBuffersTransferData[1] = partyId;
gBattleBuffersTransferData[2] = (s16)expPoints; sBattleBuffersTransferData[2] = (s16)expPoints;
gBattleBuffersTransferData[3] = ((s16)expPoints & 0xFF00) >> 8; sBattleBuffersTransferData[3] = ((s16)expPoints & 0xFF00) >> 8;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2) void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_STATUSICONUPDATE; sBattleBuffersTransferData[0] = CONTROLLER_STATUSICONUPDATE;
gBattleBuffersTransferData[1] = status1; sBattleBuffersTransferData[1] = status1;
gBattleBuffersTransferData[2] = (status1 & 0x0000FF00) >> 8; sBattleBuffersTransferData[2] = (status1 & 0x0000FF00) >> 8;
gBattleBuffersTransferData[3] = (status1 & 0x00FF0000) >> 16; sBattleBuffersTransferData[3] = (status1 & 0x00FF0000) >> 16;
gBattleBuffersTransferData[4] = (status1 & 0xFF000000) >> 24; sBattleBuffersTransferData[4] = (status1 & 0xFF000000) >> 24;
gBattleBuffersTransferData[5] = status2; sBattleBuffersTransferData[5] = status2;
gBattleBuffersTransferData[6] = (status2 & 0x0000FF00) >> 8; sBattleBuffersTransferData[6] = (status2 & 0x0000FF00) >> 8;
gBattleBuffersTransferData[7] = (status2 & 0x00FF0000) >> 16; sBattleBuffersTransferData[7] = (status2 & 0x00FF0000) >> 16;
gBattleBuffersTransferData[8] = (status2 & 0xFF000000) >> 24; sBattleBuffersTransferData[8] = (status2 & 0xFF000000) >> 24;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 9); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 9);
} }
void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status) void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_STATUSANIMATION; sBattleBuffersTransferData[0] = CONTROLLER_STATUSANIMATION;
gBattleBuffersTransferData[1] = status2; sBattleBuffersTransferData[1] = status2;
gBattleBuffersTransferData[2] = status; sBattleBuffersTransferData[2] = status;
gBattleBuffersTransferData[3] = (status & 0x0000FF00) >> 8; sBattleBuffersTransferData[3] = (status & 0x0000FF00) >> 8;
gBattleBuffersTransferData[4] = (status & 0x00FF0000) >> 16; sBattleBuffersTransferData[4] = (status & 0x00FF0000) >> 16;
gBattleBuffersTransferData[5] = (status & 0xFF000000) >> 24; sBattleBuffersTransferData[5] = (status & 0xFF000000) >> 24;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 6); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 6);
} }
void EmitStatusXor(u8 bufferId, u8 b) void EmitStatusXor(u8 bufferId, u8 b)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_STATUSXOR; sBattleBuffersTransferData[0] = CONTROLLER_STATUSXOR;
gBattleBuffersTransferData[1] = b; sBattleBuffersTransferData[1] = b;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
} }
void EmitDataTransfer(u8 bufferId, u16 size, void *data) void EmitDataTransfer(u8 bufferId, u16 size, void *data)
{ {
s32 i; s32 i;
gBattleBuffersTransferData[0] = CONTROLLER_DATATRANSFER; sBattleBuffersTransferData[0] = CONTROLLER_DATATRANSFER;
gBattleBuffersTransferData[1] = CONTROLLER_DATATRANSFER; sBattleBuffersTransferData[1] = CONTROLLER_DATATRANSFER;
gBattleBuffersTransferData[2] = size; sBattleBuffersTransferData[2] = size;
gBattleBuffersTransferData[3] = (size & 0xFF00) >> 8; sBattleBuffersTransferData[3] = (size & 0xFF00) >> 8;
for (i = 0; i < size; i++) for (i = 0; i < size; i++)
gBattleBuffersTransferData[4 + i] = *(u8*)(data++); sBattleBuffersTransferData[4 + i] = *(u8*)(data++);
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, size + 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 4);
} }
void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data) void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data)
{ {
s32 i; s32 i;
gBattleBuffersTransferData[0] = CONTROLLER_DMA3TRANSFER; sBattleBuffersTransferData[0] = CONTROLLER_DMA3TRANSFER;
gBattleBuffersTransferData[1] = (u32)(dst); sBattleBuffersTransferData[1] = (u32)(dst);
gBattleBuffersTransferData[2] = ((u32)(dst) & 0x0000FF00) >> 8; sBattleBuffersTransferData[2] = ((u32)(dst) & 0x0000FF00) >> 8;
gBattleBuffersTransferData[3] = ((u32)(dst) & 0x00FF0000) >> 16; sBattleBuffersTransferData[3] = ((u32)(dst) & 0x00FF0000) >> 16;
gBattleBuffersTransferData[4] = ((u32)(dst) & 0xFF000000) >> 24; sBattleBuffersTransferData[4] = ((u32)(dst) & 0xFF000000) >> 24;
gBattleBuffersTransferData[5] = size; sBattleBuffersTransferData[5] = size;
gBattleBuffersTransferData[6] = (size & 0xFF00) >> 8; sBattleBuffersTransferData[6] = (size & 0xFF00) >> 8;
for (i = 0; i < size; i++) for (i = 0; i < size; i++)
gBattleBuffersTransferData[7 + i] = *(u8*)(data++); sBattleBuffersTransferData[7 + i] = *(u8*)(data++);
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, size + 7); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 7);
} }
void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter) void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter)
{ {
s32 i; s32 i;
gBattleBuffersTransferData[0] = CONTROLLER_31; sBattleBuffersTransferData[0] = CONTROLLER_31;
gBattleBuffersTransferData[1] = songId; sBattleBuffersTransferData[1] = songId;
gBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8; sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
for (i = 0; i < songId; i++) // ???? for (i = 0; i < songId; i++) // ????
gBattleBuffersTransferData[3 + i] = *(u8*)(unusedDumbDataParameter++); sBattleBuffersTransferData[3 + i] = *(u8*)(unusedDumbDataParameter++);
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, songId + 3); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, songId + 3);
} }
void EmitCmd32(u8 bufferId, u16 size, void *data) void EmitCmd32(u8 bufferId, u16 size, void *data)
{ {
s32 i; s32 i;
gBattleBuffersTransferData[0] = CONTROLLER_32; sBattleBuffersTransferData[0] = CONTROLLER_32;
gBattleBuffersTransferData[1] = size; sBattleBuffersTransferData[1] = size;
gBattleBuffersTransferData[2] = (size & 0xFF00) >> 8; sBattleBuffersTransferData[2] = (size & 0xFF00) >> 8;
for (i = 0; i < size; i++) for (i = 0; i < size; i++)
gBattleBuffersTransferData[3 + i] = *(u8*)(data++); sBattleBuffersTransferData[3 + i] = *(u8*)(data++);
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, size + 3); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 3);
} }
void EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2) void EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_TWORETURNVALUES; sBattleBuffersTransferData[0] = CONTROLLER_TWORETURNVALUES;
gBattleBuffersTransferData[1] = arg1; sBattleBuffersTransferData[1] = arg1;
gBattleBuffersTransferData[2] = arg2; sBattleBuffersTransferData[2] = arg2;
gBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8; sBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c) void EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c)
{ {
s32 i; s32 i;
gBattleBuffersTransferData[0] = CONTROLLER_CHOSENMONRETURNVALUE; sBattleBuffersTransferData[0] = CONTROLLER_CHOSENMONRETURNVALUE;
gBattleBuffersTransferData[1] = b; sBattleBuffersTransferData[1] = b;
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
gBattleBuffersTransferData[2 + i] = c[i]; sBattleBuffersTransferData[2 + i] = c[i];
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 5); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 5);
} }
void EmitOneReturnValue(u8 bufferId, u16 arg1) void EmitOneReturnValue(u8 bufferId, u16 arg1)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE; sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE;
gBattleBuffersTransferData[1] = arg1; sBattleBuffersTransferData[1] = arg1;
gBattleBuffersTransferData[2] = (arg1 & 0xFF00) >> 8; sBattleBuffersTransferData[2] = (arg1 & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0; sBattleBuffersTransferData[3] = 0;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitOneReturnValue_Duplicate(u8 bufferId, u16 b) void EmitOneReturnValue_Duplicate(u8 bufferId, u16 b)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE_DUPLICATE; sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE_DUPLICATE;
gBattleBuffersTransferData[1] = b; sBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; sBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0; sBattleBuffersTransferData[3] = 0;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitCmd37(u8 bufferId) void EmitCmd37(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_37; sBattleBuffersTransferData[0] = CONTROLLER_37;
gBattleBuffersTransferData[1] = CONTROLLER_37; sBattleBuffersTransferData[1] = CONTROLLER_37;
gBattleBuffersTransferData[2] = CONTROLLER_37; sBattleBuffersTransferData[2] = CONTROLLER_37;
gBattleBuffersTransferData[3] = CONTROLLER_37; sBattleBuffersTransferData[3] = CONTROLLER_37;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitCmd38(u8 bufferId, u8 b) void EmitCmd38(u8 bufferId, u8 b)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_38; sBattleBuffersTransferData[0] = CONTROLLER_38;
gBattleBuffersTransferData[1] = b; sBattleBuffersTransferData[1] = b;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
} }
void EmitCmd39(u8 bufferId) void EmitCmd39(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_39; sBattleBuffersTransferData[0] = CONTROLLER_39;
gBattleBuffersTransferData[1] = CONTROLLER_39; sBattleBuffersTransferData[1] = CONTROLLER_39;
gBattleBuffersTransferData[2] = CONTROLLER_39; sBattleBuffersTransferData[2] = CONTROLLER_39;
gBattleBuffersTransferData[3] = CONTROLLER_39; sBattleBuffersTransferData[3] = CONTROLLER_39;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitCmd40(u8 bufferId) void EmitCmd40(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_40; sBattleBuffersTransferData[0] = CONTROLLER_40;
gBattleBuffersTransferData[1] = CONTROLLER_40; sBattleBuffersTransferData[1] = CONTROLLER_40;
gBattleBuffersTransferData[2] = CONTROLLER_40; sBattleBuffersTransferData[2] = CONTROLLER_40;
gBattleBuffersTransferData[3] = CONTROLLER_40; sBattleBuffersTransferData[3] = CONTROLLER_40;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitHitAnimation(u8 bufferId) void EmitHitAnimation(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_HITANIMATION; sBattleBuffersTransferData[0] = CONTROLLER_HITANIMATION;
gBattleBuffersTransferData[1] = CONTROLLER_HITANIMATION; sBattleBuffersTransferData[1] = CONTROLLER_HITANIMATION;
gBattleBuffersTransferData[2] = CONTROLLER_HITANIMATION; sBattleBuffersTransferData[2] = CONTROLLER_HITANIMATION;
gBattleBuffersTransferData[3] = CONTROLLER_HITANIMATION; sBattleBuffersTransferData[3] = CONTROLLER_HITANIMATION;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitCmd42(u8 bufferId) void EmitCmd42(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_42; sBattleBuffersTransferData[0] = CONTROLLER_42;
gBattleBuffersTransferData[1] = CONTROLLER_42; sBattleBuffersTransferData[1] = CONTROLLER_42;
gBattleBuffersTransferData[2] = CONTROLLER_42; sBattleBuffersTransferData[2] = CONTROLLER_42;
gBattleBuffersTransferData[3] = CONTROLLER_42; sBattleBuffersTransferData[3] = CONTROLLER_42;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitEffectivenessSound(u8 bufferId, u16 songId) void EmitEffectivenessSound(u8 bufferId, u16 songId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_EFFECTIVENESSSOUND; sBattleBuffersTransferData[0] = CONTROLLER_EFFECTIVENESSSOUND;
gBattleBuffersTransferData[1] = songId; sBattleBuffersTransferData[1] = songId;
gBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8; sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0; sBattleBuffersTransferData[3] = 0;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM) void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFAREORBGM; sBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFAREORBGM;
gBattleBuffersTransferData[1] = songId; sBattleBuffersTransferData[1] = songId;
gBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8; sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = playBGM; sBattleBuffersTransferData[3] = playBGM;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitFaintingCry(u8 bufferId) void EmitFaintingCry(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_FAINTINGCRY; sBattleBuffersTransferData[0] = CONTROLLER_FAINTINGCRY;
gBattleBuffersTransferData[1] = CONTROLLER_FAINTINGCRY; sBattleBuffersTransferData[1] = CONTROLLER_FAINTINGCRY;
gBattleBuffersTransferData[2] = CONTROLLER_FAINTINGCRY; sBattleBuffersTransferData[2] = CONTROLLER_FAINTINGCRY;
gBattleBuffersTransferData[3] = CONTROLLER_FAINTINGCRY; sBattleBuffersTransferData[3] = CONTROLLER_FAINTINGCRY;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitIntroSlide(u8 bufferId, u8 terrainId) void EmitIntroSlide(u8 bufferId, u8 terrainId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_INTROSLIDE; sBattleBuffersTransferData[0] = CONTROLLER_INTROSLIDE;
gBattleBuffersTransferData[1] = terrainId; sBattleBuffersTransferData[1] = terrainId;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
} }
void EmitIntroTrainerBallThrow(u8 bufferId) void EmitIntroTrainerBallThrow(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_INTROTRAINERBALLTHROW; sBattleBuffersTransferData[0] = CONTROLLER_INTROTRAINERBALLTHROW;
gBattleBuffersTransferData[1] = CONTROLLER_INTROTRAINERBALLTHROW; sBattleBuffersTransferData[1] = CONTROLLER_INTROTRAINERBALLTHROW;
gBattleBuffersTransferData[2] = CONTROLLER_INTROTRAINERBALLTHROW; sBattleBuffersTransferData[2] = CONTROLLER_INTROTRAINERBALLTHROW;
gBattleBuffersTransferData[3] = CONTROLLER_INTROTRAINERBALLTHROW; sBattleBuffersTransferData[3] = CONTROLLER_INTROTRAINERBALLTHROW;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2) void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2)
{ {
s32 i; s32 i;
gBattleBuffersTransferData[0] = CONTROLLER_DRAWPARTYSTATUSSUMMARY; sBattleBuffersTransferData[0] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
gBattleBuffersTransferData[1] = arg2 & 0x7F; sBattleBuffersTransferData[1] = arg2 & 0x7F;
gBattleBuffersTransferData[2] = (arg2 & 0x80) >> 7; sBattleBuffersTransferData[2] = (arg2 & 0x80) >> 7;
gBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY; sBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * 6); i++) for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * 6); i++)
gBattleBuffersTransferData[4 + i] = *(i + (u8*)(hpAndStatus)); sBattleBuffersTransferData[4 + i] = *(i + (u8*)(hpAndStatus));
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(struct HpAndStatus) * 6 + 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct HpAndStatus) * 6 + 4);
} }
void EmitCmd49(u8 bufferId) void EmitCmd49(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_49; sBattleBuffersTransferData[0] = CONTROLLER_49;
gBattleBuffersTransferData[1] = CONTROLLER_49; sBattleBuffersTransferData[1] = CONTROLLER_49;
gBattleBuffersTransferData[2] = CONTROLLER_49; sBattleBuffersTransferData[2] = CONTROLLER_49;
gBattleBuffersTransferData[3] = CONTROLLER_49; sBattleBuffersTransferData[3] = CONTROLLER_49;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitCmd50(u8 bufferId) void EmitCmd50(u8 bufferId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_50; sBattleBuffersTransferData[0] = CONTROLLER_50;
gBattleBuffersTransferData[1] = CONTROLLER_50; sBattleBuffersTransferData[1] = CONTROLLER_50;
gBattleBuffersTransferData[2] = CONTROLLER_50; sBattleBuffersTransferData[2] = CONTROLLER_50;
gBattleBuffersTransferData[3] = CONTROLLER_50; sBattleBuffersTransferData[3] = CONTROLLER_50;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible) void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_SPRITEINVISIBILITY; sBattleBuffersTransferData[0] = CONTROLLER_SPRITEINVISIBILITY;
gBattleBuffersTransferData[1] = isInvisible; sBattleBuffersTransferData[1] = isInvisible;
gBattleBuffersTransferData[2] = CONTROLLER_SPRITEINVISIBILITY; sBattleBuffersTransferData[2] = CONTROLLER_SPRITEINVISIBILITY;
gBattleBuffersTransferData[3] = CONTROLLER_SPRITEINVISIBILITY; sBattleBuffersTransferData[3] = CONTROLLER_SPRITEINVISIBILITY;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument) void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_BATTLEANIMATION; sBattleBuffersTransferData[0] = CONTROLLER_BATTLEANIMATION;
gBattleBuffersTransferData[1] = animationId; sBattleBuffersTransferData[1] = animationId;
gBattleBuffersTransferData[2] = argument; sBattleBuffersTransferData[2] = argument;
gBattleBuffersTransferData[3] = (argument & 0xFF00) >> 8; sBattleBuffersTransferData[3] = (argument & 0xFF00) >> 8;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2) void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2)
{ {
bool8 arg2_ = arg2; bool8 arg2_ = arg2;
gBattleBuffersTransferData[0] = CONTROLLER_LINKSTANDBYMSG; sBattleBuffersTransferData[0] = CONTROLLER_LINKSTANDBYMSG;
gBattleBuffersTransferData[1] = arg1; sBattleBuffersTransferData[1] = arg1;
if (arg2_) if (arg2_)
gBattleBuffersTransferData[3] = gBattleBuffersTransferData[2] = sub_81850DC(&gBattleBuffersTransferData[4]); sBattleBuffersTransferData[3] = sBattleBuffersTransferData[2] = sub_81850DC(&sBattleBuffersTransferData[4]);
else else
gBattleBuffersTransferData[3] = gBattleBuffersTransferData[2] = 0; sBattleBuffersTransferData[3] = sBattleBuffersTransferData[2] = 0;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, gBattleBuffersTransferData[2] + 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sBattleBuffersTransferData[2] + 4);
} }
void EmitResetActionMoveSelection(u8 bufferId, u8 caseId) void EmitResetActionMoveSelection(u8 bufferId, u8 caseId)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_RESETACTIONMOVESELECTION; sBattleBuffersTransferData[0] = CONTROLLER_RESETACTIONMOVESELECTION;
gBattleBuffersTransferData[1] = caseId; sBattleBuffersTransferData[1] = caseId;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
} }
void EmitCmd55(u8 bufferId, u8 arg1) void EmitCmd55(u8 bufferId, u8 arg1)
{ {
gBattleBuffersTransferData[0] = CONTROLLER_55; sBattleBuffersTransferData[0] = CONTROLLER_55;
gBattleBuffersTransferData[1] = arg1; sBattleBuffersTransferData[1] = arg1;
gBattleBuffersTransferData[2] = gSaveBlock2Ptr->field_CA9_b; sBattleBuffersTransferData[2] = gSaveBlock2Ptr->field_CA9_b;
gBattleBuffersTransferData[3] = gSaveBlock2Ptr->field_CA9_b; sBattleBuffersTransferData[3] = gSaveBlock2Ptr->field_CA9_b;
gBattleBuffersTransferData[5] = gBattleBuffersTransferData[4] = sub_81850DC(&gBattleBuffersTransferData[6]); sBattleBuffersTransferData[5] = sBattleBuffersTransferData[4] = sub_81850DC(&sBattleBuffersTransferData[6]);
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, gBattleBuffersTransferData[4] + 6); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sBattleBuffersTransferData[4] + 6);
} }
+24 -7
View File
@@ -98,12 +98,17 @@ u16 gUnknown_03003148[MAX_LINK_PLAYERS];
u8 gUnknown_03003150; u8 gUnknown_03003150;
u8 gUnknown_03003160; u8 gUnknown_03003160;
u8 gUnknown_020223BC = 0; EWRAM_DATA u8 gUnknown_020223BC = 0;
u8 gUnknown_020223BD = 0; EWRAM_DATA u8 gUnknown_020223BD = 0;
bool8 gUnknown_020229C4 = FALSE; EWRAM_DATA u32 gUnknown_020223C0 = 0;
u16 gUnknown_020229C6 = 0; EWRAM_DATA u16 gBlockRecvBuffer[MAX_LINK_PLAYERS + 1][BLOCK_BUFFER_SIZE / 2] = {};
u16 gUnknown_020229C8 = 0; EWRAM_DATA u8 gUnknown_020228C4[BLOCK_BUFFER_SIZE] = {};
struct LinkPlayer gUnknown_020229CC = {}; EWRAM_DATA bool8 gUnknown_020229C4 = FALSE;
EWRAM_DATA u16 gUnknown_020229C6 = 0;
EWRAM_DATA u16 gUnknown_020229C8 = 0;
EWRAM_DATA struct LinkPlayer gUnknown_020229CC = {};
EWRAM_DATA struct LinkPlayer gLinkPlayers[MAX_LINK_PLAYERS + 1] = {};
EWRAM_DATA struct LinkPlayer gUnknown_02022A74[MAX_LINK_PLAYERS + 1] = {};
// Static ROM declarations // Static ROM declarations
@@ -116,7 +121,7 @@ static void sub_800A2E0(void);
bool32 sub_800A2F4(const void *src, size_t size); bool32 sub_800A2F4(const void *src, size_t size);
static void sub_800A364(void); static void sub_800A364(void);
static void sub_800A388(void); static void sub_800A388(void);
void sub_800A3EC(void); static void sub_800A3EC(void);
void sub_800A418(void); void sub_800A418(void);
void task00_link_test(u8 taskId); void task00_link_test(u8 taskId);
void sub_800A588(u8 who); void sub_800A588(u8 who);
@@ -950,3 +955,15 @@ static void sub_800A388(void)
gUnknown_03003140 = sub_800A3EC; gUnknown_03003140 = sub_800A3EC;
} }
} }
static void sub_800A3EC(void)
{
gUnknown_03003140 = NULL;
}
void sub_800A3F8(void)
{
GetMultiplayerId();
sub_8009D90(0x4444);
gUnknown_020223C0 ++;
}
+3 -38
View File
@@ -18,42 +18,7 @@ gStringVar4: @ 2021FC4
.space 0x3E8 .space 0x3E8
.include "src/string_util.o" .include "src/string_util.o"
.include "src/link.o"
gUnknown_020223BC: @ 20223BC
.space 0x1
gUnknown_020223BD: @ 20223BD
.space 0x3
gUnknown_020223C0: @ 20223C0
.space 0x4
gBlockRecvBuffer: @ 20223C4
.space 0x500
gUnknown_020228C4: @ 20228C4 gBlockSendBuffer
.space 0x100
gUnknown_020229C4: @ 20229C4
.space 0x2
gUnknown_020229C6: @ 20229C6
.space 0x2
gUnknown_020229C8: @ 20229C8
.space 0x4
gUnknown_020229CC: @ 20229CC
.space 0x1C
gLinkPlayers: @ 20229E8
.space 0x24
gUnknown_02022A0C: @ 2022A0C
.space 0x68
gUnknown_02022A74: @ 2022A74
.space 0x8C
gUnknown_02022B00: @ 2022B00 gUnknown_02022B00: @ 2022B00
.space 0x8 .space 0x8
@@ -175,6 +140,7 @@ gUnknown_02022CFC: @ 2022CFC
gUnknown_02022D00: @ 2022D00 gUnknown_02022D00: @ 2022D00
.space 0x4 .space 0x4
@ src/main_menu.c
gUnknown_02022D04: @ 2022D04 gUnknown_02022D04: @ 2022D04
.space 0x2 .space 0x2
@@ -193,8 +159,7 @@ gUnknown_02022D0A: @ 2022D0A
gUnknown_02022D0C: @ 2022D0C gUnknown_02022D0C: @ 2022D0C
.space 0x4 .space 0x4
gBattleBuffersTransferData: @ 2022D10 .include "src/battle_controllers.o"
.space 0x100
gUnknown_02022E10: @ 2022E10 gUnknown_02022E10: @ 2022E10
.space 0x4 .space 0x4