summaryrefslogtreecommitdiff
path: root/src/recorded_battle.c
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-02-11 19:22:06 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-02-11 19:22:06 -0500
commitea347199a21f7a6c01a395e507db872ac1781e79 (patch)
tree625ec0a6469b40573d165ceee0855e969af45929 /src/recorded_battle.c
parentf39053ee3023b02139784f88d346b3b57853c307 (diff)
parent14a76793e596d612efd273169c4172922c270f13 (diff)
Merge branch 'master' into link
Diffstat (limited to 'src/recorded_battle.c')
-rw-r--r--src/recorded_battle.c150
1 files changed, 71 insertions, 79 deletions
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index db8e2816d..4ace5b3e5 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -13,23 +13,15 @@
#include "util.h"
#include "task.h"
#include "text.h"
+#include "battle_setup.h"
-#define BANK_RECORD_SIZE 664
+#define BATTLER_RECORD_SIZE 664
#define ILLEGAL_BATTLE_TYPES ((BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE \
| BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \
| BATTLE_TYPE_KYOGRE_GROUDON | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI \
| BATTLE_TYPE_RECORDED | BATTLE_TYPE_x4000000 | BATTLE_TYPE_SECRET_BASE \
| BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYOGRE | BATTLE_TYPE_RAYQUAZA))
-extern u32 gBattleTypeFlags;
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
-extern u16 gPartnerTrainerId;
-extern u8 gActiveBank;
-extern u8 gNoOfAllBanks;
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
-extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT];
extern u8 gUnknown_03001278;
extern u8 gUnknown_03001279;
@@ -38,7 +30,7 @@ struct PlayerInfo
u32 trainerId;
u8 name[PLAYER_NAME_LENGTH];
u8 gender;
- u16 bank;
+ u16 battlerId;
u16 language;
};
@@ -52,13 +44,13 @@ struct RecordedBattleSave
{
struct Pokemon playerParty[PARTY_SIZE];
struct Pokemon opponentParty[PARTY_SIZE];
- u8 playersName[BATTLE_BANKS_COUNT][PLAYER_NAME_LENGTH];
- u8 playersGender[BATTLE_BANKS_COUNT];
- u32 playersTrainerId[BATTLE_BANKS_COUNT];
- u8 playersLanguage[BATTLE_BANKS_COUNT];
+ u8 playersName[MAX_BATTLERS_COUNT][PLAYER_NAME_LENGTH];
+ u8 playersGender[MAX_BATTLERS_COUNT];
+ u32 playersTrainerId[MAX_BATTLERS_COUNT];
+ u8 playersLanguage[MAX_BATTLERS_COUNT];
u32 rngSeed;
u32 battleFlags;
- u8 playersBank[BATTLE_BANKS_COUNT];
+ u8 playersBattlers[MAX_BATTLERS_COUNT];
u16 opponentA;
u16 opponentB;
u16 partnerId;
@@ -75,14 +67,14 @@ struct RecordedBattleSave
u16 field_50E[6];
u8 field_51A;
u8 field_51B;
- u8 battleRecord[BATTLE_BANKS_COUNT][BANK_RECORD_SIZE];
+ u8 battleRecord[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE];
u32 checksum;
};
EWRAM_DATA u32 gRecordedBattleRngSeed = 0;
EWRAM_DATA u32 gBattlePalaceMoveSelectionRngValue = 0;
-EWRAM_DATA static u8 sBattleRecords[BATTLE_BANKS_COUNT][BANK_RECORD_SIZE] = {0};
-EWRAM_DATA static u16 sRecordedBytesNo[BATTLE_BANKS_COUNT] = {0};
+EWRAM_DATA static u8 sBattleRecords[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE] = {0};
+EWRAM_DATA static u16 sRecordedBytesNo[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA static u16 sUnknown_0203C79C[4] = {0};
EWRAM_DATA static u16 sUnknown_0203C7A4[4] = {0};
EWRAM_DATA static u8 sUnknown_0203C7AC = 0;
@@ -99,7 +91,7 @@ EWRAM_DATA static u32 sRecordedBattle_AI_Scripts = 0;
EWRAM_DATA static struct Pokemon sSavedPlayerParty[PARTY_SIZE] = {0};
EWRAM_DATA static struct Pokemon sSavedOpponentParty[PARTY_SIZE] = {0};
EWRAM_DATA static u16 sRecordedBattle_PlayerMonMoves[2][4] = {0};
-EWRAM_DATA static struct PlayerInfo sRecordedBattle_Players[BATTLE_BANKS_COUNT] = {0};
+EWRAM_DATA static struct PlayerInfo sRecordedBattle_Players[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA static u8 sUnknown_0203CCD0 = 0;
EWRAM_DATA static u8 sUnknown_0203CCD1[8] = {0};
EWRAM_DATA static u8 sUnknown_0203CCD9 = 0;
@@ -123,7 +115,7 @@ void sub_8184DA4(u8 arg0)
sUnknown_0203C7AC = arg0;
sUnknown_0203CCD0 = 0;
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
sRecordedBytesNo[i] = 0;
sUnknown_0203C79C[i] = 0;
@@ -131,7 +123,7 @@ void sub_8184DA4(u8 arg0)
if (arg0 == 1)
{
- for (j = 0; j < BANK_RECORD_SIZE; j++)
+ for (j = 0; j < BATTLER_RECORD_SIZE; j++)
{
sBattleRecords[i][j] |= 0xFF;
}
@@ -164,11 +156,11 @@ void sub_8184E58(void)
gUnknown_0203C7B4 = GetMultiplayerId();
linkPlayersCount = GetLinkPlayerCount();
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
sRecordedBattle_Players[i].trainerId = gLinkPlayers[i].trainerId;
sRecordedBattle_Players[i].gender = gLinkPlayers[i].gender;
- sRecordedBattle_Players[i].bank = gLinkPlayers[i].lp_field_18;
+ sRecordedBattle_Players[i].battlerId = gLinkPlayers[i].lp_field_18;
sRecordedBattle_Players[i].language = gLinkPlayers[i].language;
if (i < linkPlayersCount)
@@ -192,7 +184,7 @@ void sub_8184E58(void)
| (gSaveBlock2Ptr->playerTrainerId[3] << 24);
sRecordedBattle_Players[0].gender = gSaveBlock2Ptr->playerGender;
- sRecordedBattle_Players[0].bank = 0;
+ sRecordedBattle_Players[0].battlerId = 0;
sRecordedBattle_Players[0].language = gGameLanguage;
for (i = 0; i < PLAYER_NAME_LENGTH; i++)
@@ -200,33 +192,33 @@ void sub_8184E58(void)
}
}
-void RecordedBattle_SetBankAction(u8 bank, u8 action)
+void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action)
{
- if (sRecordedBytesNo[bank] < BANK_RECORD_SIZE && sUnknown_0203C7AC != 2)
+ if (sRecordedBytesNo[battlerId] < BATTLER_RECORD_SIZE && sUnknown_0203C7AC != 2)
{
- sBattleRecords[bank][sRecordedBytesNo[bank]++] = action;
+ sBattleRecords[battlerId][sRecordedBytesNo[battlerId]++] = action;
}
}
-void RecordedBattle_ClearBankAction(u8 bank, u8 bytesToClear)
+void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear)
{
s32 i;
for (i = 0; i < bytesToClear; i++)
{
- sRecordedBytesNo[bank]--;
- sBattleRecords[bank][sRecordedBytesNo[bank]] |= 0xFF;
- if (sRecordedBytesNo[bank] == 0)
+ sRecordedBytesNo[battlerId]--;
+ sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] |= 0xFF;
+ if (sRecordedBytesNo[battlerId] == 0)
break;
}
}
-u8 RecordedBattle_ReadBankAction(u8 bank)
+u8 RecordedBattle_GetBattlerAction(u8 battlerId)
{
// trying to read past array or invalid action byte, battle is over
- if (sRecordedBytesNo[bank] >= BANK_RECORD_SIZE || sBattleRecords[bank][sRecordedBytesNo[bank]] == 0xFF)
+ if (sRecordedBytesNo[battlerId] >= BATTLER_RECORD_SIZE || sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] == 0xFF)
{
- gSpecialVar_Result = gBattleOutcome = BATTLE_PLAYER_TELEPORTED; // hah
+ gSpecialVar_Result = gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED; // hah
ResetPaletteFadeControl();
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
SetMainCallback2(CB2_QuitRecordedBattle);
@@ -234,7 +226,7 @@ u8 RecordedBattle_ReadBankAction(u8 bank)
}
else
{
- return sBattleRecords[bank][sRecordedBytesNo[bank]++];
+ return sBattleRecords[battlerId][sRecordedBytesNo[battlerId]++];
}
}
@@ -248,7 +240,7 @@ u8 sub_81850DC(u8 *arg0)
u8 i, j;
u8 ret = 0;
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (sRecordedBytesNo[i] != sUnknown_0203C79C[i])
{
@@ -350,7 +342,7 @@ u32 MoveRecordedBattleToSaveData(void)
battleSave->opponentParty[i] = sSavedOpponentParty[i];
}
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
for (j = 0; j < PLAYER_NAME_LENGTH; j++)
{
@@ -358,7 +350,7 @@ u32 MoveRecordedBattleToSaveData(void)
}
battleSave->playersGender[i] = sRecordedBattle_Players[i].gender;
battleSave->playersLanguage[i] = sRecordedBattle_Players[i].language;
- battleSave->playersBank[i] = sRecordedBattle_Players[i].bank;
+ battleSave->playersBattlers[i] = sRecordedBattle_Players[i].battlerId;
battleSave->playersTrainerId[i] = sRecordedBattle_Players[i].trainerId;
}
@@ -375,16 +367,16 @@ u32 MoveRecordedBattleToSaveData(void)
}
else if (sRecordedBattle_BattleFlags & BATTLE_TYPE_MULTI)
{
- switch (sRecordedBattle_Players[0].bank)
+ switch (sRecordedBattle_Players[0].battlerId)
{
case 0:
case 2:
- if (!(sRecordedBattle_Players[gUnknown_0203C7B4].bank & 1))
+ if (!(sRecordedBattle_Players[gUnknown_0203C7B4].battlerId & 1))
battleSave->battleFlags |= BATTLE_TYPE_x80000000;
break;
case 1:
case 3:
- if ((sRecordedBattle_Players[gUnknown_0203C7B4].bank & 1))
+ if ((sRecordedBattle_Players[gUnknown_0203C7B4].battlerId & 1))
battleSave->battleFlags |= BATTLE_TYPE_x80000000;
break;
}
@@ -1339,7 +1331,7 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
gEnemyParty[i] = src->opponentParty[i];
}
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
for (var = FALSE, j = 0; j < PLAYER_NAME_LENGTH; j++)
{
@@ -1349,7 +1341,7 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
}
gLinkPlayers[i].gender = src->playersGender[i];
gLinkPlayers[i].language = src->playersLanguage[i];
- gLinkPlayers[i].lp_field_18 = src->playersBank[i];
+ gLinkPlayers[i].lp_field_18 = src->playersBattlers[i];
gLinkPlayers[i].trainerId = src->playersTrainerId[i];
if (var)
@@ -1386,9 +1378,9 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
gSaveBlock2Ptr->frontierChosenLvl = src->field_4FC;
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
- for (j = 0; j < BANK_RECORD_SIZE; j++)
+ for (j = 0; j < BATTLER_RECORD_SIZE; j++)
{
sBattleRecords[i][j] = src->battleRecord[i][j];
}
@@ -1456,13 +1448,13 @@ static void RecordedBattle_RestoreSavedParties(void)
}
}
-u8 GetActiveBankLinkPlayerGender(void)
+u8 GetActiveBattlerLinkPlayerGender(void)
{
s32 i;
for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
- if (gLinkPlayers[i].lp_field_18 == gActiveBank)
+ if (gLinkPlayers[i].lp_field_18 == gActiveBattler)
break;
}
@@ -1497,11 +1489,11 @@ u8 GetTextSpeedInRecordedBattle(void)
return sRecordedBattle_TextSpeed;
}
-void RecordedBattle_CopyBankMoves(void)
+void RecordedBattle_CopyBattlerMoves(void)
{
s32 i;
- if (GetBankSide(gActiveBank) == SIDE_OPPONENT)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT)
return;
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
return;
@@ -1510,7 +1502,7 @@ void RecordedBattle_CopyBankMoves(void)
for (i = 0; i < 4; i++)
{
- sRecordedBattle_PlayerMonMoves[gActiveBank / 2][i] = gBattleMons[gActiveBank].moves[i];
+ sRecordedBattle_PlayerMonMoves[gActiveBattler / 2][i] = gBattleMons[gActiveBattler].moves[i];
}
}
@@ -1518,32 +1510,32 @@ void RecordedBattle_CopyBankMoves(void)
void sub_818603C(u8 arg0)
{
- s32 bank, j, k;
+ s32 battlerId, j, k;
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
return;
- for (bank = 0; bank < gNoOfAllBanks; bank++)
+ for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
{
- if (GetBankSide(bank) != SIDE_OPPONENT) // player's side only
+ if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT) // player's side only
{
if (arg0 == 1)
{
for (j = 0; j < 4; j++)
{
- if (gBattleMons[bank].moves[j] != sRecordedBattle_PlayerMonMoves[bank / 2][j])
+ if (gBattleMons[battlerId].moves[j] != sRecordedBattle_PlayerMonMoves[battlerId / 2][j])
break;
}
if (j != 4) // player's mon's move has been changed
{
- RecordedBattle_SetBankAction(bank, ACTION_MOVE_CHANGE);
+ RecordedBattle_SetBattlerAction(battlerId, ACTION_MOVE_CHANGE);
for (j = 0; j < 4; j++)
{
for (k = 0; k < 4; k++)
{
- if (gBattleMons[bank].moves[j] == sRecordedBattle_PlayerMonMoves[bank / 2][k])
+ if (gBattleMons[battlerId].moves[j] == sRecordedBattle_PlayerMonMoves[battlerId / 2][k])
{
- RecordedBattle_SetBankAction(bank, k);
+ RecordedBattle_SetBattlerAction(battlerId, k);
break;
}
}
@@ -1552,7 +1544,7 @@ void sub_818603C(u8 arg0)
}
else
{
- if (sBattleRecords[bank][sRecordedBytesNo[bank]] == ACTION_MOVE_CHANGE)
+ if (sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] == ACTION_MOVE_CHANGE)
{
u8 ppBonuses[4];
u8 array1[4];
@@ -1561,58 +1553,58 @@ void sub_818603C(u8 arg0)
u8 array3[8];
u8 var;
- RecordedBattle_ReadBankAction(bank);
+ RecordedBattle_GetBattlerAction(battlerId);
for (j = 0; j < 4; j++)
{
- ppBonuses[j] = ((gBattleMons[bank].ppBonuses & ((3 << (j << 1)))) >> (j << 1));
+ ppBonuses[j] = ((gBattleMons[battlerId].ppBonuses & ((3 << (j << 1)))) >> (j << 1));
}
for (j = 0; j < 4; j++)
{
- array1[j] = RecordedBattle_ReadBankAction(bank);
- movePp.moves[j] = gBattleMons[bank].moves[array1[j]];
- movePp.pp[j] = gBattleMons[bank].pp[array1[j]];
+ array1[j] = RecordedBattle_GetBattlerAction(battlerId);
+ movePp.moves[j] = gBattleMons[battlerId].moves[array1[j]];
+ movePp.pp[j] = gBattleMons[battlerId].pp[array1[j]];
array3[j] = ppBonuses[array1[j]];
- array2[j] = (gDisableStructs[bank].unk18_b & gBitTable[j]) >> j;
+ array2[j] = (gDisableStructs[battlerId].unk18_b & gBitTable[j]) >> j;
}
for (j = 0; j < 4; j++)
{
- gBattleMons[bank].moves[j] = movePp.moves[j];
- gBattleMons[bank].pp[j] = movePp.pp[j];
+ gBattleMons[battlerId].moves[j] = movePp.moves[j];
+ gBattleMons[battlerId].pp[j] = movePp.pp[j];
}
- gBattleMons[bank].ppBonuses = 0;
- gDisableStructs[bank].unk18_b = 0;
+ gBattleMons[battlerId].ppBonuses = 0;
+ gDisableStructs[battlerId].unk18_b = 0;
for (j = 0; j < 4; j++)
{
- gBattleMons[bank].ppBonuses |= (array3[j]) << (j << 1);
- gDisableStructs[bank].unk18_b |= (array2[j]) << (j);
+ gBattleMons[battlerId].ppBonuses |= (array3[j]) << (j << 1);
+ gDisableStructs[battlerId].unk18_b |= (array2[j]) << (j);
}
- if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED))
+ if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED))
{
for (j = 0; j < 4; j++)
{
- ppBonuses[j] = ((GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1));
+ ppBonuses[j] = ((GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1));
}
for (j = 0; j < 4; j++)
{
- movePp.moves[j] = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_MOVE1 + array1[j], NULL);
- movePp.pp[j] = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_PP1 + array1[j], NULL);
+ movePp.moves[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + array1[j], NULL);
+ movePp.pp[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + array1[j], NULL);
array3[j] = ppBonuses[array1[j]];
}
for (j = 0; j < 4; j++)
{
- SetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_MOVE1 + j, &movePp.moves[j]);
- SetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_PP1 + j, &movePp.pp[j]);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + j, &movePp.moves[j]);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + j, &movePp.pp[j]);
}
var = 0;
for (j = 0; j < 4; j++)
{
var |= (array3[j]) << (j << 1);
}
- SetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_PP_BONUSES, &var);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, &var);
}
- gChosenMovesByBanks[bank] = gBattleMons[bank].moves[*(gBattleStruct->chosenMovePositions + bank)];
+ gChosenMoveByBattler[battlerId] = gBattleMons[battlerId].moves[*(gBattleStruct->chosenMovePositions + battlerId)];
}
}
}