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.c54
1 files changed, 24 insertions, 30 deletions
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index 77755775e..c01c76b7c 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -26,10 +26,6 @@
#include "constants/rgb.h"
#include "constants/battle_palace.h"
-extern struct MusicPlayerInfo gMPlayInfo_SE1;
-extern struct MusicPlayerInfo gMPlayInfo_SE2;
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-
extern const u8 gBattlePalaceNatureToMoveTarget[];
extern const u8 * const gBattleAnims_General[];
extern const u8 * const gBattleAnims_Special[];
@@ -115,7 +111,7 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
s32 i, var1, var2;
s32 chosenMoveId = -1;
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
- u8 unusableMovesBits = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
+ u8 unusableMovesBits = CheckMoveLimitations(gActiveBattler, 0, MOVE_LIMITATIONS_ALL);
s32 percent = Random() % 100;
// Heavy variable re-use here makes this hard to read without defines
@@ -438,9 +434,10 @@ bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 de
{
u8 taskId;
- if (tableId == B_ANIM_CASTFORM_CHANGE && (argument & 0x80))
+ if (tableId == B_ANIM_CASTFORM_CHANGE && (argument & CASTFORM_SUBSTITUTE))
{
- gBattleMonForms[activeBattler] = (argument & ~(0x80));
+ // If Castform is behind substitute, set the new form but skip the animation
+ gBattleMonForms[activeBattler] = (argument & ~CASTFORM_SUBSTITUTE);
return TRUE;
}
if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute
@@ -593,7 +590,7 @@ void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
if (species == SPECIES_CASTFORM)
{
paletteOffset = 0x100 + battlerId * 16;
- LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
+ LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]);
LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20);
}
@@ -656,7 +653,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
if (species == SPECIES_CASTFORM)
{
paletteOffset = 0x100 + battlerId * 16;
- LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
+ LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]);
LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20);
}
@@ -895,7 +892,7 @@ void CopyBattleSpriteInvisibility(u8 battlerId)
gBattleSpritesDataPtr->battlerData[battlerId].invisible = gSprites[gBattlerSpriteIds[battlerId]].invisible;
}
-void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform)
+void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform)
{
u16 paletteOffset;
u32 personalityValue;
@@ -903,7 +900,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
u8 position;
const u32 *lzPaletteData;
- if (notTransform)
+ if (castform)
{
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleSpritesDataPtr->animationData->animArg);
paletteOffset = 0x100 + battlerAtk * 16;
@@ -924,13 +921,13 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
if (IsContest())
{
- position = 0;
+ position = B_POSITION_PLAYER_LEFT;
targetSpecies = gContestResources->moveAnim->targetSpecies;
personalityValue = gContestResources->moveAnim->personality;
otId = gContestResources->moveAnim->otId;
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[targetSpecies],
- gMonSpritesGfxPtr->sprites.ptr[0],
+ gMonSpritesGfxPtr->sprites.ptr[position],
targetSpecies,
gContestResources->moveAnim->targetPersonality);
}
@@ -976,8 +973,8 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
if (targetSpecies == SPECIES_CASTFORM)
{
gSprites[gBattlerSpriteIds[battlerAtk]].anims = gMonFrontAnimsPtrTable[targetSpecies];
- LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
- LoadPalette(gBattleStruct->castformPalette[0] + gBattleMonForms[battlerDef] * 16, paletteOffset, 32);
+ LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]);
+ LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerDef]], paletteOffset, 32);
}
BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
@@ -1001,7 +998,7 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
if (!loadMonSprite)
{
if (IsContest())
- position = 0;
+ position = B_POSITION_PLAYER_LEFT;
else
position = GetBattlerPosition(battlerId);
@@ -1251,20 +1248,20 @@ void AllocateMonSpritesGfx(void)
gMonSpritesGfxPtr = NULL;
gMonSpritesGfxPtr = AllocZeroed(sizeof(*gMonSpritesGfxPtr));
- gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(0x8000);
+ gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(MON_PIC_SIZE * 4 * MAX_BATTLERS_COUNT);
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
- gMonSpritesGfxPtr->sprites.ptr[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000);
+ gMonSpritesGfxPtr->sprites.ptr[i] = gMonSpritesGfxPtr->firstDecompressed + (i * MON_PIC_SIZE * 4);
*(gMonSpritesGfxPtr->templates + i) = gBattlerSpriteTemplates[i];
for (j = 0; j < 4; j++)
{
- gMonSpritesGfxPtr->field_74[i][j].data = gMonSpritesGfxPtr->sprites.ptr[i] + (j * MON_PIC_SIZE);
- gMonSpritesGfxPtr->field_74[i][j].size = MON_PIC_SIZE;
+ gMonSpritesGfxPtr->frameImages[i][j].data = gMonSpritesGfxPtr->sprites.ptr[i] + (j * MON_PIC_SIZE);
+ gMonSpritesGfxPtr->frameImages[i][j].size = MON_PIC_SIZE;
}
- gMonSpritesGfxPtr->templates[i].images = gMonSpritesGfxPtr->field_74[i];
+ gMonSpritesGfxPtr->templates[i].images = gMonSpritesGfxPtr->frameImages[i];
}
gMonSpritesGfxPtr->barFontGfx = AllocZeroed(0x1000);
@@ -1275,17 +1272,14 @@ void FreeMonSpritesGfx(void)
if (gMonSpritesGfxPtr == NULL)
return;
- if (gMonSpritesGfxPtr->buffer != NULL)
- FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer);
- if (gMonSpritesGfxPtr->field_178 != NULL)
- FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_178);
-
+ TRY_FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer);
+ TRY_FREE_AND_SET_NULL(gMonSpritesGfxPtr->unusedPtr);
FREE_AND_SET_NULL(gMonSpritesGfxPtr->barFontGfx);
FREE_AND_SET_NULL(gMonSpritesGfxPtr->firstDecompressed);
- gMonSpritesGfxPtr->sprites.ptr[0] = NULL;
- gMonSpritesGfxPtr->sprites.ptr[1] = NULL;
- gMonSpritesGfxPtr->sprites.ptr[2] = NULL;
- gMonSpritesGfxPtr->sprites.ptr[3] = NULL;
+ gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_LEFT] = NULL;
+ gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT] = NULL;
+ gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_RIGHT] = NULL;
+ gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT] = NULL;
FREE_AND_SET_NULL(gMonSpritesGfxPtr);
}