summaryrefslogtreecommitdiff
path: root/src/battle_gfx_sfx_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle_gfx_sfx_util.c')
-rw-r--r--src/battle_gfx_sfx_util.c643
1 files changed, 317 insertions, 326 deletions
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index 99a82f3ca..8f17d488e 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -3,44 +3,34 @@
#include "battle_controllers.h"
#include "battle_ai_script_commands.h"
#include "battle_anim.h"
+#include "constants/battle_anim.h"
#include "battle_interface.h"
#include "main.h"
#include "malloc.h"
-#include "rng.h"
+#include "random.h"
#include "util.h"
#include "pokemon.h"
-#include "moves.h"
+#include "constants/moves.h"
#include "task.h"
#include "sprite.h"
#include "sound.h"
#include "m4a.h"
-#include "species.h"
+#include "constants/species.h"
#include "decompress.h"
#include "data2.h"
#include "palette.h"
#include "blend_palette.h"
#include "contest.h"
-#include "songs.h"
-
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gActiveBank;
-extern u8 gNoOfAllBanks;
-extern u16 gUnknown_020243FC;
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
-extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT];
-extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
-extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
-extern u32 gTransformedPersonalities[BATTLE_BANKS_COUNT];
-extern struct MusicPlayerInfo gMPlay_SE1;
-extern struct MusicPlayerInfo gMPlay_SE2;
-extern struct MusicPlayerInfo gMPlay_BGM;
-
-extern const struct BattleMove gBattleMoves[];
+#include "constants/songs.h"
+#include "constants/rgb.h"
+
+extern struct MusicPlayerInfo gMPlayInfo_SE1;
+extern struct MusicPlayerInfo gMPlayInfo_SE2;
+extern struct MusicPlayerInfo gMPlayInfo_BGM;
+
extern const u8 gUnknown_0831C604[];
-extern const u8 * const gUnknown_082C9320[];
-extern const u8 * const gUnknown_082C937C[];
+extern const u8 * const gBattleAnims_VariousTable[];
+extern const u8 * const gBattleAnims_Special[];
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
extern const struct CompressedSpriteSheet gMonBackPicTable[];
extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
@@ -48,7 +38,6 @@ extern const struct CompressedSpriteSheet gTrainerBackPicTable[];
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
extern const union AnimCmd* const * const gMonAnimationsSpriteAnimsPtrTable[];
-extern const struct SpriteTemplate gUnknown_08329D98[4];
extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow;
extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow;
extern const u8 gEnemyMonElevation[];
@@ -63,11 +52,11 @@ extern const u8 gUnknown_08C1F46C[];
extern const u8 gUnknown_08C1F5E8[];
extern const u8 gUnknown_08C1F76C[];
extern const u8 gUnknown_08C1F8E8[];
-extern const u8 gUnknown_08C0237C[];
+extern const u8 gBlankGfxCompressed[];
extern const u16 gBattleInterface_BallStatusBarPal[];
extern const u16 gBattleInterface_BallDisplayPal[];
-extern u8 sub_80688F8(u8, u8 bank);
+extern u8 sub_80688F8(u8, u8 battlerId);
extern u8 pokemon_order_func(u8); // party menu
extern void sub_81B8C68(void);
@@ -78,58 +67,58 @@ static void sub_805D7EC(struct Sprite *sprite);
static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId);
static void Task_ClearBitWhenBattleTableAnimDone(u8 taskId);
static void Task_ClearBitWhenSpecialAnimDone(u8 taskId);
-static void ClearSpritesBankHealthboxAnimData(void);
+static void ClearSpritesBattlerHealthboxAnimData(void);
// const rom data
-static const struct CompressedSpriteSheet gUnknown_0832C0D0 =
+static const struct CompressedSpriteSheet sSpriteSheet_SinglesPlayerHealthbox =
{
gUnknown_08C1F1C8, 0x1000, TAG_HEALTHBOX_PLAYER1_TILE
};
-static const struct CompressedSpriteSheet gUnknown_0832C0D8 =
+static const struct CompressedSpriteSheet sSpriteSheet_SinglesOpponentHealthbox =
{
gUnknown_08C1F46C, 0x1000, TAG_HEALTHBOX_OPPONENT1_TILE
};
-static const struct CompressedSpriteSheet gUnknown_0832C0E0[2] =
+static const struct CompressedSpriteSheet sSpriteSheets_DoublesPlayerHealthbox[2] =
{
{gUnknown_08C1F5E8, 0x800, TAG_HEALTHBOX_PLAYER1_TILE},
{gUnknown_08C1F5E8, 0x800, TAG_HEALTHBOX_PLAYER2_TILE}
};
-static const struct CompressedSpriteSheet gUnknown_0832C0F0[2] =
+static const struct CompressedSpriteSheet sSpriteSheets_DoublesOpponentHealthbox[2] =
{
{gUnknown_08C1F76C, 0x800, TAG_HEALTHBOX_OPPONENT1_TILE},
{gUnknown_08C1F76C, 0x800, TAG_HEALTHBOX_OPPONENT2_TILE}
};
-static const struct CompressedSpriteSheet gUnknown_0832C100 =
+static const struct CompressedSpriteSheet sSpriteSheet_SafariHealthbox =
{
gUnknown_08C1F8E8, 0x1000, TAG_HEALTHBOX_SAFARI_TILE
};
-static const struct CompressedSpriteSheet gUnknown_0832C108[BATTLE_BANKS_COUNT] =
+static const struct CompressedSpriteSheet sSpriteSheets_HealthBar[MAX_BATTLERS_COUNT] =
{
- {gUnknown_08C0237C, 0x0100, 0xd704},
- {gUnknown_08C0237C, 0x0120, 0xd705},
- {gUnknown_08C0237C, 0x0100, 0xd706},
- {gUnknown_08C0237C, 0x0120, 0xd707}
+ {gBlankGfxCompressed, 0x0100, TAG_HEALTHBAR_PLAYER1_TILE},
+ {gBlankGfxCompressed, 0x0120, TAG_HEALTHBAR_OPPONENT1_TILE},
+ {gBlankGfxCompressed, 0x0100, TAG_HEALTHBAR_PLAYER2_TILE},
+ {gBlankGfxCompressed, 0x0120, TAG_HEALTHBAR_OPPONENT2_TILE}
};
-static const struct SpritePalette gUnknown_0832C128[2] =
+static const struct SpritePalette sSpritePalettes_HealthBoxHealthBar[2] =
{
{gBattleInterface_BallStatusBarPal, TAG_HEALTHBOX_PAL},
- {gBattleInterface_BallDisplayPal, 0xd704}
+ {gBattleInterface_BallDisplayPal, TAG_HEALTHBAR_PAL}
};
// code
void AllocateBattleSpritesData(void)
{
gBattleSpritesDataPtr = AllocZeroed(sizeof(struct BattleSpriteData));
- gBattleSpritesDataPtr->bankData = AllocZeroed(sizeof(struct BattleSpriteInfo) * BATTLE_BANKS_COUNT);
- gBattleSpritesDataPtr->healthBoxesData = AllocZeroed(sizeof(struct BattleHealthboxInfo) * BATTLE_BANKS_COUNT);
+ gBattleSpritesDataPtr->battlerData = AllocZeroed(sizeof(struct BattleSpriteInfo) * MAX_BATTLERS_COUNT);
+ gBattleSpritesDataPtr->healthBoxesData = AllocZeroed(sizeof(struct BattleHealthboxInfo) * MAX_BATTLERS_COUNT);
gBattleSpritesDataPtr->animationData = AllocZeroed(sizeof(struct BattleAnimationInfo));
- gBattleSpritesDataPtr->battleBars = AllocZeroed(sizeof(struct BattleBarInfo) * BATTLE_BANKS_COUNT);
+ gBattleSpritesDataPtr->battleBars = AllocZeroed(sizeof(struct BattleBarInfo) * MAX_BATTLERS_COUNT);
}
void FreeBattleSpritesData(void)
@@ -140,7 +129,7 @@ void FreeBattleSpritesData(void)
FREE_AND_SET_NULL(gBattleSpritesDataPtr->battleBars);
FREE_AND_SET_NULL(gBattleSpritesDataPtr->animationData);
FREE_AND_SET_NULL(gBattleSpritesDataPtr->healthBoxesData);
- FREE_AND_SET_NULL(gBattleSpritesDataPtr->bankData);
+ FREE_AND_SET_NULL(gBattleSpritesDataPtr->battlerData);
FREE_AND_SET_NULL(gBattleSpritesDataPtr);
}
@@ -148,17 +137,17 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
{
s32 i, var1, var2;
s32 chosenMoveId = -1;
- struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
- u8 unusableMovesBits = CheckMoveLimitations(gActiveBank, 0, 0xFF);
+ struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
+ u8 unusableMovesBits = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
s32 percent = Random() % 100;
- i = (gBattleStruct->field_92 & gBitTable[gActiveBank]) ? 2 : 0;
+ i = (gBattleStruct->field_92 & gBitTable[gActiveBattler]) ? 2 : 0;
var2 = i;
var1 = i + 2;
for (; i < var1; i++)
{
- if (gUnknown_0831C494[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)][i] > percent)
+ if (gUnknown_0831C494[GetNatureFromPersonality(gBattleMons[gActiveBattler].personality)][i] > percent)
break;
}
@@ -233,13 +222,13 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
if (Random() % 100 > 49)
{
- gProtectStructs[gActiveBank].flag_x10 = 1;
+ gProtectStructs[gActiveBattler].flag_x10 = 1;
return 0;
}
}
else
{
- gProtectStructs[gActiveBank].flag_x10 = 1;
+ gProtectStructs[gActiveBattler].flag_x10 = 1;
return 0;
}
}
@@ -247,7 +236,7 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
if (moveInfo->moves[chosenMoveId] == MOVE_CURSE)
{
if (moveInfo->monType1 != TYPE_GHOST && moveInfo->monType2 != TYPE_GHOST)
- var1 = MOVE_TARGET_x10;
+ var1 = MOVE_TARGET_USER;
else
var1 = MOVE_TARGET_SELECTED;
}
@@ -256,12 +245,12 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
var1 = gBattleMoves[moveInfo->moves[chosenMoveId]].target;
}
- if (var1 & MOVE_TARGET_x10)
- chosenMoveId |= (gActiveBank << 8);
+ if (var1 & MOVE_TARGET_USER)
+ chosenMoveId |= (gActiveBattler << 8);
else if (var1 == MOVE_TARGET_SELECTED)
chosenMoveId |= (BattlePalaceGetTargetRetValue());
else
- chosenMoveId |= (GetBankByIdentity((GetBankIdentity(gActiveBank) & BIT_SIDE) ^ BIT_SIDE) << 8);
+ chosenMoveId |= (GetBattlerAtPosition((GetBattlerPosition(gActiveBattler) & BIT_SIDE) ^ BIT_SIDE) << 8);
return chosenMoveId;
}
@@ -271,7 +260,7 @@ static u8 sub_805D4A8(u16 move)
switch (gBattleMoves[move].target)
{
case MOVE_TARGET_SELECTED:
- case MOVE_TARGET_USER:
+ case MOVE_TARGET_USER_OR_SELECTED:
case MOVE_TARGET_RANDOM:
case MOVE_TARGET_BOTH:
case MOVE_TARGET_FOES_AND_ALLY:
@@ -283,7 +272,7 @@ static u8 sub_805D4A8(u16 move)
case MOVE_TARGET_DEPENDS:
case MOVE_TARGET_OPPONENTS_FIELD:
return 2;
- case MOVE_TARGET_x10:
+ case MOVE_TARGET_USER:
return 1;
default:
return 0;
@@ -296,21 +285,21 @@ static u16 BattlePalaceGetTargetRetValue(void)
{
u8 opposing1, opposing2;
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
- opposing1 = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- opposing2 = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ opposing1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ opposing2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
}
else
{
- opposing1 = GetBankByIdentity(IDENTITY_PLAYER_MON1);
- opposing2 = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ opposing1 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ opposing2 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
}
if (gBattleMons[opposing1].hp == gBattleMons[opposing2].hp)
- return (((gActiveBank & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8;
+ return (((gActiveBattler & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8;
- switch (gUnknown_0831C604[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)])
+ switch (gUnknown_0831C604[GetNatureFromPersonality(gBattleMons[gActiveBattler].personality)])
{
case 0:
if (gBattleMons[opposing1].hp > gBattleMons[opposing2].hp)
@@ -323,16 +312,16 @@ static u16 BattlePalaceGetTargetRetValue(void)
else
return opposing2 << 8;
case 2:
- return (((gActiveBank & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8;
+ return (((gActiveBattler & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8;
}
}
- return (gActiveBank ^ BIT_SIDE) << 8;
+ return (gActiveBattler ^ BIT_SIDE) << 8;
}
void sub_805D714(struct Sprite *sprite)
{
- u8 spriteId = sprite->data1;
+ u8 spriteId = sprite->data[1];
if (!gSprites[spriteId].affineAnimEnded)
return;
@@ -365,9 +354,9 @@ void sub_805D770(struct Sprite *sprite, bool8 arg1)
void sub_805D7AC(struct Sprite *sprite)
{
- if (!(gUnknown_020243FC & 1))
+ if (!(gIntroSlideFlags & 1))
{
- sprite->pos2.x += sprite->data0;
+ sprite->pos2.x += sprite->data[0];
if (sprite->pos2.x == 0)
{
if (sprite->pos2.y != 0)
@@ -387,71 +376,71 @@ static void sub_805D7EC(struct Sprite *sprite)
void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive = 1;
if (!isStatus2)
{
- if (status == STATUS_FREEZE)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_FRZ);
- else if (status == STATUS_POISON || status & STATUS_TOXIC_POISON)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_PSN);
- else if (status == STATUS_BURN)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_BRN);
- else if (status & STATUS_SLEEP)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_SLP);
- else if (status == STATUS_PARALYSIS)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_PRZ);
+ if (status == STATUS1_FREEZE)
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_FRZ);
+ else if (status == STATUS1_POISON || status & STATUS1_TOXIC_POISON)
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_PSN);
+ else if (status == STATUS1_BURN)
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_BRN);
+ else if (status & STATUS1_SLEEP)
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_SLP);
+ else if (status == STATUS1_PARALYSIS)
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_PRZ);
else // no animation
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive = 0;
}
else
{
if (status & STATUS2_INFATUATION)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_INFATUATION);
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_INFATUATION);
else if (status & STATUS2_CONFUSION)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_CONFUSION);
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_CONFUSION);
else if (status & STATUS2_CURSED)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_CURSED);
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_CURSED);
else if (status & STATUS2_NIGHTMARE)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_NIGHTMARE);
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_NIGHTMARE);
else if (status & STATUS2_WRAPPED)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_WRAPPED);
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_WRAPPED); // this animation doesn't actually exist
else // no animation
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive = 0;
}
}
-#define tBank data[0]
+#define tBattlerId data[0]
-bool8 TryHandleLaunchBattleTableAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId, u16 argument)
+bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 defBattler, u8 tableId, u16 argument)
{
u8 taskId;
if (tableId == B_ANIM_CASTFORM_CHANGE && (argument & 0x80))
{
- gBattleMonForms[activeBank] = (argument & ~(0x80));
+ gBattleMonForms[activeBattler] = (argument & ~(0x80));
return TRUE;
}
- if (gBattleSpritesDataPtr->bankData[activeBank].behindSubstitute
+ if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute
&& !ShouldAnimBeDoneRegardlessOfSubsitute(tableId))
{
return TRUE;
}
- if (gBattleSpritesDataPtr->bankData[activeBank].behindSubstitute
+ if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute
&& tableId == B_ANIM_SUBSTITUTE_FADE
- && gSprites[gBankSpriteIds[activeBank]].invisible)
+ && gSprites[gBattlerSpriteIds[activeBattler]].invisible)
{
- LoadBattleMonGfxAndAnimate(activeBank, TRUE, gBankSpriteIds[activeBank]);
- ClearBehindSubstituteBit(activeBank);
+ LoadBattleMonGfxAndAnimate(activeBattler, TRUE, gBattlerSpriteIds[activeBattler]);
+ ClearBehindSubstituteBit(activeBattler);
return TRUE;
}
- gAnimBankAttacker = atkBank;
- gAnimBankTarget = defBank;
+ gBattleAnimAttacker = atkBattler;
+ gBattleAnimTarget = defBattler;
gBattleSpritesDataPtr->animationData->animArg = argument;
- LaunchBattleAnimation(gUnknown_082C9320, tableId, FALSE);
+ LaunchBattleAnimation(gBattleAnims_VariousTable, tableId, FALSE);
taskId = CreateTask(Task_ClearBitWhenBattleTableAnimDone, 10);
- gTasks[taskId].tBank = activeBank;
- gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].animFromTableActive = 1;
+ gTasks[taskId].tBattlerId = activeBattler;
+ gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].animFromTableActive = 1;
return FALSE;
}
@@ -461,12 +450,12 @@ static void Task_ClearBitWhenBattleTableAnimDone(u8 taskId)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].animFromTableActive = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].animFromTableActive = 0;
DestroyTask(taskId);
}
}
-#undef tBank
+#undef tBattlerId
static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId)
{
@@ -484,18 +473,18 @@ static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId)
}
}
-#define tBank data[0]
+#define tBattlerId data[0]
-void InitAndLaunchSpecialAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId)
+void InitAndLaunchSpecialAnimation(u8 activeBattler, u8 atkBattler, u8 defBattler, u8 tableId)
{
u8 taskId;
- gAnimBankAttacker = atkBank;
- gAnimBankTarget = defBank;
- LaunchBattleAnimation(gUnknown_082C937C, tableId, FALSE);
+ gBattleAnimAttacker = atkBattler;
+ gBattleAnimTarget = defBattler;
+ LaunchBattleAnimation(gBattleAnims_Special, tableId, FALSE);
taskId = CreateTask(Task_ClearBitWhenSpecialAnimDone, 10);
- gTasks[taskId].tBank = activeBank;
- gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].specialAnimActive = 1;
+ gTasks[taskId].tBattlerId = activeBattler;
+ gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].specialAnimActive = 1;
}
static void Task_ClearBitWhenSpecialAnimDone(u8 taskId)
@@ -503,153 +492,153 @@ static void Task_ClearBitWhenSpecialAnimDone(u8 taskId)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].specialAnimActive = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].specialAnimActive = 0;
DestroyTask(taskId);
}
}
-#undef tBank
+#undef tBattlerId
-// great function to include newly added moves that don't have animation yet
+// Great function to include newly added moves that don't have animation yet.
bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn)
{
return FALSE;
}
-bool8 mplay_80342A4(u8 bank)
+bool8 mplay_80342A4(u8 battlerId)
{
u8 zero = 0;
if (IsSEPlaying())
{
- gBattleSpritesDataPtr->healthBoxesData[bank].field_8++;
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_8 < 30)
+ gBattleSpritesDataPtr->healthBoxesData[battlerId].field_8++;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_8 < 30)
return TRUE;
- m4aMPlayStop(&gMPlay_SE1);
- m4aMPlayStop(&gMPlay_SE2);
+ m4aMPlayStop(&gMPlayInfo_SE1);
+ m4aMPlayStop(&gMPlayInfo_SE2);
}
if (zero == 0)
{
- gBattleSpritesDataPtr->healthBoxesData[bank].field_8 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[battlerId].field_8 = 0;
return FALSE;
}
return TRUE;
}
-void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank)
+void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
{
u32 monsPersonality, currentPersonality, otId;
u16 species;
- u8 identity;
+ u8 position;
u16 paletteOffset;
const void *lzPaletteData;
monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY);
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
{
species = GetMonData(mon, MON_DATA_SPECIES);
currentPersonality = monsPersonality;
}
else
{
- species = gBattleSpritesDataPtr->bankData[bank].transformSpecies;
- currentPersonality = gTransformedPersonalities[bank];
+ species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies;
+ currentPersonality = gTransformedPersonalities[battlerId];
}
otId = GetMonData(mon, MON_DATA_OT_ID);
- identity = GetBankIdentity(bank);
+ position = GetBattlerPosition(battlerId);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
- gMonSpritesGfxPtr->sprites[identity],
+ gMonSpritesGfxPtr->sprites[position],
species, currentPersonality);
- paletteOffset = 0x100 + bank * 16;
+ paletteOffset = 0x100 + battlerId * 16;
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
lzPaletteData = GetMonFrontSpritePal(mon);
else
lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality);
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
LoadPalette(gDecompressionBuffer, paletteOffset, 0x20);
- LoadPalette(gDecompressionBuffer, 0x80 + bank * 16, 0x20);
+ LoadPalette(gDecompressionBuffer, 0x80 + battlerId * 16, 0x20);
if (species == SPECIES_CASTFORM)
{
- paletteOffset = 0x100 + bank * 16;
+ paletteOffset = 0x100 + battlerId * 16;
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
- LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[bank]], paletteOffset, 0x20);
+ LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20);
}
// transform's pink color
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
{
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
}
-void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank)
+void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
{
u32 monsPersonality, currentPersonality, otId;
u16 species;
- u8 identity;
+ u8 position;
u16 paletteOffset;
const void *lzPaletteData;
monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY);
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
{
species = GetMonData(mon, MON_DATA_SPECIES);
currentPersonality = monsPersonality;
}
else
{
- species = gBattleSpritesDataPtr->bankData[bank].transformSpecies;
- currentPersonality = gTransformedPersonalities[bank];
+ species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies;
+ currentPersonality = gTransformedPersonalities[battlerId];
}
otId = GetMonData(mon, MON_DATA_OT_ID);
- identity = GetBankIdentity(bank);
+ position = GetBattlerPosition(battlerId);
- if (sub_80688F8(1, bank) == 1 || gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE)
+ if (sub_80688F8(1, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
{
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
- gMonSpritesGfxPtr->sprites[identity],
+ gMonSpritesGfxPtr->sprites[position],
species, currentPersonality);
}
else
{
HandleLoadSpecialPokePic(&gMonBackPicTable[species],
- gMonSpritesGfxPtr->sprites[identity],
+ gMonSpritesGfxPtr->sprites[position],
species, currentPersonality);
}
- paletteOffset = 0x100 + bank * 16;
+ paletteOffset = 0x100 + battlerId * 16;
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
lzPaletteData = GetMonFrontSpritePal(mon);
else
lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality);
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
LoadPalette(gDecompressionBuffer, paletteOffset, 0x20);
- LoadPalette(gDecompressionBuffer, 0x80 + bank * 16, 0x20);
+ LoadPalette(gDecompressionBuffer, 0x80 + battlerId * 16, 0x20);
if (species == SPECIES_CASTFORM)
{
- paletteOffset = 0x100 + bank * 16;
+ paletteOffset = 0x100 + battlerId * 16;
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
- LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[bank]], paletteOffset, 0x20);
+ LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20);
}
// transform's pink color
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
{
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
}
@@ -662,23 +651,23 @@ void nullsub_24(u16 species)
{
}
-void DecompressTrainerFrontPic(u16 frontPicId, u8 bank)
+void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId)
{
- u8 identity = GetBankIdentity(bank);
+ u8 position = GetBattlerPosition(battlerId);
DecompressPicFromTable_2(&gTrainerFrontPicTable[frontPicId],
- gMonSpritesGfxPtr->sprites[identity],
+ gMonSpritesGfxPtr->sprites[position],
SPECIES_NONE);
LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[frontPicId]);
}
-void DecompressTrainerBackPic(u16 backPicId, u8 bank)
+void DecompressTrainerBackPic(u16 backPicId, u8 battlerId)
{
- u8 identity = GetBankIdentity(bank);
+ u8 position = GetBattlerPosition(battlerId);
DecompressPicFromTable_2(&gTrainerBackPicTable[backPicId],
- gMonSpritesGfxPtr->sprites[identity],
+ gMonSpritesGfxPtr->sprites[position],
SPECIES_NONE);
LoadCompressedPalette(gTrainerBackPicPaletteTable[backPicId].data,
- 0x100 + 16 * bank, 0x20);
+ 0x100 + 16 * battlerId, 0x20);
}
void nullsub_25(u8 arg0)
@@ -690,29 +679,30 @@ void FreeTrainerFrontPicPalette(u16 frontPicId)
FreeSpritePaletteByTag(gTrainerFrontPicPaletteTable[frontPicId].tag);
}
-void sub_805DFFC(void)
+// Unused.
+void BattleLoadAllHealthBoxesGfxAtOnce(void)
{
- u8 numberOfBanks = 0;
+ u8 numberOfBattlers = 0;
u8 i;
- LoadSpritePalette(&gUnknown_0832C128[0]);
- LoadSpritePalette(&gUnknown_0832C128[1]);
+ LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[0]);
+ LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[1]);
if (!IsDoubleBattle())
{
- LoadCompressedObjectPic(&gUnknown_0832C0D0);
- LoadCompressedObjectPic(&gUnknown_0832C0D8);
- numberOfBanks = 2;
+ LoadCompressedObjectPic(&sSpriteSheet_SinglesPlayerHealthbox);
+ LoadCompressedObjectPic(&sSpriteSheet_SinglesOpponentHealthbox);
+ numberOfBattlers = 2;
}
else
{
- LoadCompressedObjectPic(&gUnknown_0832C0E0[0]);
- LoadCompressedObjectPic(&gUnknown_0832C0E0[1]);
- LoadCompressedObjectPic(&gUnknown_0832C0F0[0]);
- LoadCompressedObjectPic(&gUnknown_0832C0F0[1]);
- numberOfBanks = 4;
+ LoadCompressedObjectPic(&sSpriteSheets_DoublesPlayerHealthbox[0]);
+ LoadCompressedObjectPic(&sSpriteSheets_DoublesPlayerHealthbox[1]);
+ LoadCompressedObjectPic(&sSpriteSheets_DoublesOpponentHealthbox[0]);
+ LoadCompressedObjectPic(&sSpriteSheets_DoublesOpponentHealthbox[1]);
+ numberOfBattlers = 4;
}
- for (i = 0; i < numberOfBanks; i++)
- LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[i]]);
+ for (i = 0; i < numberOfBattlers; i++)
+ LoadCompressedObjectPic(&sSpriteSheets_HealthBar[gBattlerPositions[i]]);
}
bool8 BattleLoadAllHealthBoxesGfx(u8 state)
@@ -723,45 +713,45 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state)
{
if (state == 1)
{
- LoadSpritePalette(&gUnknown_0832C128[0]);
- LoadSpritePalette(&gUnknown_0832C128[1]);
+ LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[0]);
+ LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[1]);
}
else if (!IsDoubleBattle())
{
if (state == 2)
{
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
- LoadCompressedObjectPic(&gUnknown_0832C100);
+ LoadCompressedObjectPic(&sSpriteSheet_SafariHealthbox);
else
- LoadCompressedObjectPic(&gUnknown_0832C0D0);
+ LoadCompressedObjectPic(&sSpriteSheet_SinglesPlayerHealthbox);
}
else if (state == 3)
- LoadCompressedObjectPic(&gUnknown_0832C0D8);
+ LoadCompressedObjectPic(&sSpriteSheet_SinglesOpponentHealthbox);
else if (state == 4)
- LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[0]]);
+ LoadCompressedObjectPic(&sSpriteSheets_HealthBar[gBattlerPositions[0]]);
else if (state == 5)
- LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[1]]);
+ LoadCompressedObjectPic(&sSpriteSheets_HealthBar[gBattlerPositions[1]]);
else
retVal = TRUE;
}
else
{
if (state == 2)
- LoadCompressedObjectPic(&gUnknown_0832C0E0[0]);
+ LoadCompressedObjectPic(&sSpriteSheets_DoublesPlayerHealthbox[0]);
else if (state == 3)
- LoadCompressedObjectPic(&gUnknown_0832C0E0[1]);
+ LoadCompressedObjectPic(&sSpriteSheets_DoublesPlayerHealthbox[1]);
else if (state == 4)
- LoadCompressedObjectPic(&gUnknown_0832C0F0[0]);
+ LoadCompressedObjectPic(&sSpriteSheets_DoublesOpponentHealthbox[0]);
else if (state == 5)
- LoadCompressedObjectPic(&gUnknown_0832C0F0[1]);
+ LoadCompressedObjectPic(&sSpriteSheets_DoublesOpponentHealthbox[1]);
else if (state == 6)
- LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[0]]);
+ LoadCompressedObjectPic(&sSpriteSheets_HealthBar[gBattlerPositions[0]]);
else if (state == 7)
- LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[1]]);
+ LoadCompressedObjectPic(&sSpriteSheets_HealthBar[gBattlerPositions[1]]);
else if (state == 8)
- LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[2]]);
+ LoadCompressedObjectPic(&sSpriteSheets_HealthBar[gBattlerPositions[2]]);
else if (state == 9)
- LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[3]]);
+ LoadCompressedObjectPic(&sSpriteSheets_HealthBar[gBattlerPositions[3]]);
else
retVal = TRUE;
}
@@ -775,24 +765,24 @@ void LoadBattleBarGfx(u8 arg0)
LZDecompressWram(gUnknown_08C093F0, gMonSpritesGfxPtr->barFontGfx);
}
-bool8 BattleInitAllSprites(u8 *state1, u8 *bank)
+bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId)
{
bool8 retVal = FALSE;
switch (*state1)
{
case 0:
- ClearSpritesBankHealthboxAnimData();
+ ClearSpritesBattlerHealthboxAnimData();
(*state1)++;
break;
case 1:
- if (!BattleLoadAllHealthBoxesGfx(*bank))
+ if (!BattleLoadAllHealthBoxesGfx(*battlerId))
{
- (*bank)++;
+ (*battlerId)++;
}
else
{
- *bank = 0;
+ *battlerId = 0;
(*state1)++;
}
break;
@@ -800,47 +790,47 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *bank)
(*state1)++;
break;
case 3:
- if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) && *bank == 0)
- gHealthBoxesIds[*bank] = CreateSafariPlayerHealthboxSprites();
+ if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) && *battlerId == 0)
+ gHealthboxSpriteIds[*battlerId] = CreateSafariPlayerHealthboxSprites();
else
- gHealthBoxesIds[*bank] = CreateBankHealthboxSprites(*bank);
+ gHealthboxSpriteIds[*battlerId] = CreateBattlerHealthboxSprites(*battlerId);
- (*bank)++;
- if (*bank == gNoOfAllBanks)
+ (*battlerId)++;
+ if (*battlerId == gBattlersCount)
{
- *bank = 0;
+ *battlerId = 0;
(*state1)++;
}
break;
case 4:
- SetBankHealthboxSpritePos(*bank);
- if (gBanksByIdentity[*bank] <= 1)
- DummyBattleInterfaceFunc(gHealthBoxesIds[*bank], FALSE);
+ InitBattlerHealthboxCoords(*battlerId);
+ if (gBattlerPositions[*battlerId] <= 1)
+ DummyBattleInterfaceFunc(gHealthboxSpriteIds[*battlerId], FALSE);
else
- DummyBattleInterfaceFunc(gHealthBoxesIds[*bank], TRUE);
+ DummyBattleInterfaceFunc(gHealthboxSpriteIds[*battlerId], TRUE);
- (*bank)++;
- if (*bank == gNoOfAllBanks)
+ (*battlerId)++;
+ if (*battlerId == gBattlersCount)
{
- *bank = 0;
+ *battlerId = 0;
(*state1)++;
}
break;
case 5:
- if (GetBankSide(*bank) == SIDE_PLAYER)
+ if (GetBattlerSide(*battlerId) == B_SIDE_PLAYER)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
- UpdateHealthboxAttribute(gHealthBoxesIds[*bank], &gPlayerParty[gBattlePartyID[*bank]], HEALTHBOX_ALL);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[*battlerId], &gPlayerParty[gBattlerPartyIndexes[*battlerId]], HEALTHBOX_ALL);
}
else
{
- UpdateHealthboxAttribute(gHealthBoxesIds[*bank], &gEnemyParty[gBattlePartyID[*bank]], HEALTHBOX_ALL);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[*battlerId], &gEnemyParty[gBattlerPartyIndexes[*battlerId]], HEALTHBOX_ALL);
}
- SetHealthboxSpriteInvisible(gHealthBoxesIds[*bank]);
- (*bank)++;
- if (*bank == gNoOfAllBanks)
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[*battlerId]);
+ (*battlerId)++;
+ if (*battlerId == gBattlersCount)
{
- *bank = 0;
+ *battlerId = 0;
(*state1)++;
}
break;
@@ -856,49 +846,49 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *bank)
void ClearSpritesHealthboxAnimData(void)
{
- memset(gBattleSpritesDataPtr->healthBoxesData, 0, sizeof(struct BattleHealthboxInfo) * BATTLE_BANKS_COUNT);
+ memset(gBattleSpritesDataPtr->healthBoxesData, 0, sizeof(struct BattleHealthboxInfo) * MAX_BATTLERS_COUNT);
memset(gBattleSpritesDataPtr->animationData, 0, sizeof(struct BattleAnimationInfo));
}
-static void ClearSpritesBankHealthboxAnimData(void)
+static void ClearSpritesBattlerHealthboxAnimData(void)
{
ClearSpritesHealthboxAnimData();
- memset(gBattleSpritesDataPtr->bankData, 0, sizeof(struct BattleSpriteInfo) * BATTLE_BANKS_COUNT);
+ memset(gBattleSpritesDataPtr->battlerData, 0, sizeof(struct BattleSpriteInfo) * MAX_BATTLERS_COUNT);
}
void CopyAllBattleSpritesInvisibilities(void)
{
s32 i;
- for (i = 0; i < gNoOfAllBanks; i++)
- gBattleSpritesDataPtr->bankData[i].invisible = gSprites[gBankSpriteIds[i]].invisible;
+ for (i = 0; i < gBattlersCount; i++)
+ gBattleSpritesDataPtr->battlerData[i].invisible = gSprites[gBattlerSpriteIds[i]].invisible;
}
-void CopyBattleSpriteInvisibility(u8 bank)
+void CopyBattleSpriteInvisibility(u8 battlerId)
{
- gBattleSpritesDataPtr->bankData[bank].invisible = gSprites[gBankSpriteIds[bank]].invisible;
+ gBattleSpritesDataPtr->battlerData[battlerId].invisible = gSprites[gBattlerSpriteIds[battlerId]].invisible;
}
-void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
+void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform)
{
u16 paletteOffset;
u32 personalityValue;
u32 otId;
- u8 identity;
+ u8 position;
const u8 *lzPaletteData;
if (notTransform)
{
- StartSpriteAnim(&gSprites[gBankSpriteIds[bankAtk]], gBattleSpritesDataPtr->animationData->animArg);
- paletteOffset = 0x100 + bankAtk * 16;
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleSpritesDataPtr->animationData->animArg);
+ paletteOffset = 0x100 + battlerAtk * 16;
LoadPalette(gBattleStruct->castformPalette[gBattleSpritesDataPtr->animationData->animArg], paletteOffset, 32);
- gBattleMonForms[bankAtk] = gBattleSpritesDataPtr->animationData->animArg;
- if (gBattleSpritesDataPtr->bankData[bankAtk].transformSpecies != SPECIES_NONE)
+ gBattleMonForms[battlerAtk] = gBattleSpritesDataPtr->animationData->animArg;
+ if (gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies != SPECIES_NONE)
{
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
- gSprites[gBankSpriteIds[bankAtk]].pos1.y = GetBankSpriteDefault_Y(bankAtk);
+ gSprites[gBattlerSpriteIds[battlerAtk]].pos1.y = GetBattlerSpriteDefault_Y(battlerAtk);
}
else
{
@@ -908,7 +898,7 @@ void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
if (IsContest())
{
- identity = 0;
+ position = 0;
targetSpecies = gContestResources->field_18->field_2;
personalityValue = gContestResources->field_18->field_8;
otId = gContestResources->field_18->field_C;
@@ -920,67 +910,67 @@ void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
}
else
{
- identity = GetBankIdentity(bankAtk);
+ position = GetBattlerPosition(battlerAtk);
- if (GetBankSide(bankDef) == SIDE_OPPONENT)
- targetSpecies = GetMonData(&gEnemyParty[gBattlePartyID[bankDef]], MON_DATA_SPECIES);
+ if (GetBattlerSide(battlerDef) == B_SIDE_OPPONENT)
+ targetSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerDef]], MON_DATA_SPECIES);
else
- targetSpecies = GetMonData(&gPlayerParty[gBattlePartyID[bankDef]], MON_DATA_SPECIES);
+ targetSpecies = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerDef]], MON_DATA_SPECIES);
- if (GetBankSide(bankAtk) == SIDE_PLAYER)
+ if (GetBattlerSide(battlerAtk) == B_SIDE_PLAYER)
{
- personalityValue = GetMonData(&gPlayerParty[gBattlePartyID[bankAtk]], MON_DATA_PERSONALITY);
- otId = GetMonData(&gPlayerParty[gBattlePartyID[bankAtk]], MON_DATA_OT_ID);
+ personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY);
+ otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[targetSpecies],
- gMonSpritesGfxPtr->sprites[identity],
+ gMonSpritesGfxPtr->sprites[position],
targetSpecies,
- gTransformedPersonalities[bankAtk]);
+ gTransformedPersonalities[battlerAtk]);
}
else
{
- personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[bankAtk]], MON_DATA_PERSONALITY);
- otId = GetMonData(&gEnemyParty[gBattlePartyID[bankAtk]], MON_DATA_OT_ID);
+ personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY);
+ otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[targetSpecies],
- gMonSpritesGfxPtr->sprites[identity],
+ gMonSpritesGfxPtr->sprites[position],
targetSpecies,
- gTransformedPersonalities[bankAtk]);
+ gTransformedPersonalities[battlerAtk]);
}
}
- src = gMonSpritesGfxPtr->sprites[identity];
- dst = (void *)(VRAM + 0x10000 + gSprites[gBankSpriteIds[bankAtk]].oam.tileNum * 32);
+ src = gMonSpritesGfxPtr->sprites[position];
+ dst = (void *)(VRAM + 0x10000 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32);
DmaCopy32(3, src, dst, 0x800);
- paletteOffset = 0x100 + bankAtk * 16;
+ paletteOffset = 0x100 + battlerAtk * 16;
lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue);
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
LoadPalette(gDecompressionBuffer, paletteOffset, 32);
if (targetSpecies == SPECIES_CASTFORM)
{
- gSprites[gBankSpriteIds[bankAtk]].anims = gMonAnimationsSpriteAnimsPtrTable[targetSpecies];
+ gSprites[gBattlerSpriteIds[battlerAtk]].anims = gMonAnimationsSpriteAnimsPtrTable[targetSpecies];
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
- LoadPalette(gBattleStruct->castformPalette[0] + gBattleMonForms[bankDef] * 16, paletteOffset, 32);
+ LoadPalette(gBattleStruct->castformPalette[0] + gBattleMonForms[battlerDef] * 16, paletteOffset, 32);
}
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
if (!IsContest())
{
- gBattleSpritesDataPtr->bankData[bankAtk].transformSpecies = targetSpecies;
- gBattleMonForms[bankAtk] = gBattleMonForms[bankDef];
+ gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies = targetSpecies;
+ gBattleMonForms[battlerAtk] = gBattleMonForms[battlerDef];
}
- gSprites[gBankSpriteIds[bankAtk]].pos1.y = GetBankSpriteDefault_Y(bankAtk);
- StartSpriteAnim(&gSprites[gBankSpriteIds[bankAtk]], gBattleMonForms[bankAtk]);
+ gSprites[gBattlerSpriteIds[battlerAtk]].pos1.y = GetBattlerSpriteDefault_Y(battlerAtk);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleMonForms[battlerAtk]);
}
}
-void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite)
+void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
{
- u8 identity;
+ u8 position;
s32 i;
u32 var;
const void *substitutePal;
@@ -988,23 +978,23 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite)
if (!loadMonSprite)
{
if (IsContest())
- identity = 0;
+ position = 0;
else
- identity = GetBankIdentity(bank);
+ position = GetBattlerPosition(battlerId);
if (IsContest())
- LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[identity]);
- else if (GetBankSide(bank) != SIDE_PLAYER)
- LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites[identity]);
+ LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]);
+ else if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites[position]);
else
- LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[identity]);
+ LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]);
i = 1;
- var = bank * 16;
+ var = battlerId * 16;
substitutePal = gSubstituteDollPal;
for (; i < 4; i++)
{
- register void *dmaSrc asm("r0") = gMonSpritesGfxPtr->sprites[identity];
+ register void *dmaSrc asm("r0") = gMonSpritesGfxPtr->sprites[position];
void *dmaDst = (i * 0x800) + dmaSrc;
u32 dmaSize = 0x800;
DmaCopy32(3, dmaSrc, dmaDst, dmaSize);
@@ -1017,59 +1007,59 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite)
{
if (!IsContest())
{
- if (GetBankSide(bank) != SIDE_PLAYER)
- BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlePartyID[bank]], bank);
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
else
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[bank]], bank);
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerId]], battlerId);
}
}
}
-void LoadBattleMonGfxAndAnimate(u8 bank, bool8 loadMonSprite, u8 spriteId)
+void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId)
{
- BattleLoadSubstituteOrMonSpriteGfx(bank, loadMonSprite);
- StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[bank]);
+ BattleLoadSubstituteOrMonSpriteGfx(battlerId, loadMonSprite);
+ StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[battlerId]);
if (!loadMonSprite)
- gSprites[spriteId].pos1.y = GetSubstituteSpriteDefault_Y(bank);
+ gSprites[spriteId].pos1.y = GetSubstituteSpriteDefault_Y(battlerId);
else
- gSprites[spriteId].pos1.y = GetBankSpriteDefault_Y(bank);
+ gSprites[spriteId].pos1.y = GetBattlerSpriteDefault_Y(battlerId);
}
-void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move)
+void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move)
{
if (move == MOVE_SUBSTITUTE)
- gBattleSpritesDataPtr->bankData[bank].behindSubstitute = 1;
+ gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute = 1;
}
-void ClearBehindSubstituteBit(u8 bank)
+void ClearBehindSubstituteBit(u8 battlerId)
{
- gBattleSpritesDataPtr->bankData[bank].behindSubstitute = 0;
+ gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute = 0;
}
-void HandleLowHpMusicChange(struct Pokemon *mon, u8 bank)
+void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId)
{
u16 hp = GetMonData(mon, MON_DATA_HP);
u16 maxHP = GetMonData(mon, MON_DATA_MAX_HP);
if (GetHPBarLevel(hp, maxHP) == HP_BAR_RED)
{
- if (!gBattleSpritesDataPtr->bankData[bank].lowHpSong)
+ if (!gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong)
{
- if (!gBattleSpritesDataPtr->bankData[bank ^ BIT_MON].lowHpSong)
+ if (!gBattleSpritesDataPtr->battlerData[battlerId ^ BIT_FLANK].lowHpSong)
PlaySE(SE_HINSI);
- gBattleSpritesDataPtr->bankData[bank].lowHpSong = 1;
+ gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong = 1;
}
}
else
{
- gBattleSpritesDataPtr->bankData[bank].lowHpSong = 0;
+ gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong = 0;
if (!IsDoubleBattle())
{
m4aSongNumStop(SE_HINSI);
return;
}
- if (IsDoubleBattle() && !gBattleSpritesDataPtr->bankData[bank ^ BIT_MON].lowHpSong)
+ if (IsDoubleBattle() && !gBattleSpritesDataPtr->battlerData[battlerId ^ BIT_FLANK].lowHpSong)
{
m4aSongNumStop(SE_HINSI);
return;
@@ -1079,11 +1069,11 @@ void HandleLowHpMusicChange(struct Pokemon *mon, u8 bank)
void BattleStopLowHpSound(void)
{
- u8 playerBank = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ u8 playerBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
- gBattleSpritesDataPtr->bankData[playerBank].lowHpSong = 0;
+ gBattleSpritesDataPtr->battlerData[playerBattler].lowHpSong = 0;
if (IsDoubleBattle())
- gBattleSpritesDataPtr->bankData[playerBank ^ BIT_MON].lowHpSong = 0;
+ gBattleSpritesDataPtr->battlerData[playerBattler ^ BIT_FLANK].lowHpSong = 0;
m4aSongNumStop(SE_HINSI);
}
@@ -1096,19 +1086,19 @@ u8 GetMonHPBarLevel(struct Pokemon *mon)
return GetHPBarLevel(hp, maxHP);
}
-void sub_805EAE8(void)
+void HandleBattleLowHpMusicChange(void)
{
if (gMain.inBattle)
{
- u8 playerBank1 = GetBankByIdentity(IDENTITY_PLAYER_MON1);
- u8 playerBank2 = GetBankByIdentity(IDENTITY_PLAYER_MON2);
- u8 bank1PartyId = pokemon_order_func(gBattlePartyID[playerBank1]);
- u8 bank2PartyId = pokemon_order_func(gBattlePartyID[playerBank2]);
-
- if (GetMonData(&gPlayerParty[bank1PartyId], MON_DATA_HP) != 0)
- HandleLowHpMusicChange(&gPlayerParty[bank1PartyId], playerBank1);
- if (IsDoubleBattle() && GetMonData(&gPlayerParty[bank2PartyId], MON_DATA_HP) != 0)
- HandleLowHpMusicChange(&gPlayerParty[bank2PartyId], playerBank2);
+ u8 playerBattler1 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ u8 playerBattler2 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
+ u8 battler1PartyId = pokemon_order_func(gBattlerPartyIndexes[playerBattler1]);
+ u8 battler2PartyId = pokemon_order_func(gBattlerPartyIndexes[playerBattler2]);
+
+ if (GetMonData(&gPlayerParty[battler1PartyId], MON_DATA_HP) != 0)
+ HandleLowHpMusicChange(&gPlayerParty[battler1PartyId], playerBattler1);
+ if (IsDoubleBattle() && GetMonData(&gPlayerParty[battler2PartyId], MON_DATA_HP) != 0)
+ HandleLowHpMusicChange(&gPlayerParty[battler2PartyId], playerBattler2);
}
}
@@ -1116,93 +1106,94 @@ void sub_805EB9C(u8 affineMode)
{
s32 i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (IsBankSpritePresent(i))
+ if (IsBattlerSpritePresent(i))
{
- gSprites[gBankSpriteIds[i]].oam.affineMode = affineMode;
+ gSprites[gBattlerSpriteIds[i]].oam.affineMode = affineMode;
if (affineMode == 0)
{
- gBattleSpritesDataPtr->healthBoxesData[i].field_6 = gSprites[gBankSpriteIds[i]].oam.matrixNum;
- gSprites[gBankSpriteIds[i]].oam.matrixNum = 0;
+ gBattleSpritesDataPtr->healthBoxesData[i].field_6 = gSprites[gBattlerSpriteIds[i]].oam.matrixNum;
+ gSprites[gBattlerSpriteIds[i]].oam.matrixNum = 0;
}
else
{
- gSprites[gBankSpriteIds[i]].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[i].field_6;
+ gSprites[gBattlerSpriteIds[i]].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[i].field_6;
}
}
}
}
-#define tBank data0
+#define tBattlerId data[0]
void LoadAndCreateEnemyShadowSprites(void)
{
- u8 bank;
+ u8 battlerId;
LoadCompressedObjectPic(&gSpriteSheet_EnemyShadow);
- bank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, sub_80A5C6C(bank, 0), sub_80A5C6C(bank, 1) + 29, 0xC8);
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].data0 = bank;
+ battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, 0), GetBattlerSpriteCoord(battlerId, 1) + 29, 0xC8);
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].data[0] = battlerId;
if (IsDoubleBattle())
{
- bank = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
- gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, sub_80A5C6C(bank, 0), sub_80A5C6C(bank, 1) + 29, 0xC8);
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].data0 = bank;
+ battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
+ gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, 0), GetBattlerSpriteCoord(battlerId, 1) + 29, 0xC8);
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].data[0] = battlerId;
}
}
void SpriteCB_EnemyShadow(struct Sprite *shadowSprite)
{
bool8 invisible = FALSE;
- u8 bank = shadowSprite->tBank;
- struct Sprite *bankSprite = &gSprites[gBankSpriteIds[bank]];
+ u8 battlerId = shadowSprite->tBattlerId;
+ struct Sprite *battlerSprite = &gSprites[gBattlerSpriteIds[battlerId]];
- if (!bankSprite->inUse || !IsBankSpritePresent(bank))
+ if (!battlerSprite->inUse || !IsBattlerSpritePresent(battlerId))
{
shadowSprite->callback = SpriteCB_SetInvisible;
return;
}
- if (gAnimScriptActive || bankSprite->invisible)
+ if (gAnimScriptActive || battlerSprite->invisible)
invisible = TRUE;
- else if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE
- && gEnemyMonElevation[gBattleSpritesDataPtr->bankData[bank].transformSpecies] == 0)
+ else if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE
+ && gEnemyMonElevation[gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies] == 0)
invisible = TRUE;
- if (gBattleSpritesDataPtr->bankData[bank].behindSubstitute)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute)
invisible = TRUE;
- shadowSprite->pos1.x = bankSprite->pos1.x;
- shadowSprite->pos2.x = bankSprite->pos2.x;
+ shadowSprite->pos1.x = battlerSprite->pos1.x;
+ shadowSprite->pos2.x = battlerSprite->pos2.x;
shadowSprite->invisible = invisible;
}
-#undef tBank
+#undef tBattlerId
void SpriteCB_SetInvisible(struct Sprite *sprite)
{
sprite->invisible = 1;
}
-void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species)
+void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species)
{
- if (GetBankSide(bank) == SIDE_PLAYER)
+ // The player's shadow is never seen.
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
return;
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE)
- species = gBattleSpritesDataPtr->bankData[bank].transformSpecies;
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
+ species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies;
if (gEnemyMonElevation[species] != 0)
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].callback = SpriteCB_EnemyShadow;
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_EnemyShadow;
else
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].callback = SpriteCB_SetInvisible;
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_SetInvisible;
}
-void EnemyShadowCallbackToSetInvisible(u8 bank)
+void HideBattlerShadowSprite(u8 battlerId)
{
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].callback = SpriteCB_SetInvisible;
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_SetInvisible;
}
void sub_805EF14(void)
@@ -1228,12 +1219,12 @@ void sub_805EF14(void)
}
}
-void ClearTemporarySpeciesSpriteData(u8 bank, bool8 dontClearSubstitute)
+void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute)
{
- gBattleSpritesDataPtr->bankData[bank].transformSpecies = SPECIES_NONE;
- gBattleMonForms[bank] = 0;
+ gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies = SPECIES_NONE;
+ gBattleMonForms[battlerId] = 0;
if (!dontClearSubstitute)
- ClearBehindSubstituteBit(bank);
+ ClearBehindSubstituteBit(battlerId);
}
void AllocateMonSpritesGfx(void)
@@ -1244,7 +1235,7 @@ void AllocateMonSpritesGfx(void)
gMonSpritesGfxPtr = AllocZeroed(sizeof(*gMonSpritesGfxPtr));
gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(0x8000);
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
gMonSpritesGfxPtr->sprites[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000);
*(gMonSpritesGfxPtr->templates + i) = gUnknown_08329D98[i];
@@ -1280,12 +1271,12 @@ void FreeMonSpritesGfx(void)
FREE_AND_SET_NULL(gMonSpritesGfxPtr);
}
-bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon)
+bool32 ShouldPlayNormalMonCry(struct Pokemon *mon)
{
s16 hp, maxHP;
s32 barLevel;
- if (GetMonData(mon, MON_DATA_STATUS) & (STATUS_ANY | STATUS_TOXIC_COUNTER))
+ if (GetMonData(mon, MON_DATA_STATUS) & (STATUS1_ANY | STATUS1_TOXIC_COUNTER))
return FALSE;
hp = GetMonData(mon, MON_DATA_HP);