summaryrefslogtreecommitdiff
path: root/src/battle/battle_7.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/battle_7.c')
-rw-r--r--src/battle/battle_7.c969
1 files changed, 0 insertions, 969 deletions
diff --git a/src/battle/battle_7.c b/src/battle/battle_7.c
deleted file mode 100644
index 6e1ddceaf..000000000
--- a/src/battle/battle_7.c
+++ /dev/null
@@ -1,969 +0,0 @@
-#include "global.h"
-#include "battle.h"
-#include "battle_anim.h"
-#include "battle_anim_813F0F4.h"
-#include "battle_interface.h"
-#include "blend_palette.h"
-#include "contest.h"
-#include "data2.h"
-#include "decompress.h"
-#include "main.h"
-#include "m4a.h"
-#include "palette.h"
-#include "pokemon.h"
-#include "rom_8077ABC.h"
-#include "rom_8094928.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "constants/species.h"
-#include "sprite.h"
-#include "task.h"
-#include "text.h"
-#include "gba/m4a_internal.h"
-#include "ewram.h"
-#include "graphics.h"
-
-extern u8 gBattleBufferA[][0x200];
-extern u8 gActiveBattler;
-extern u8 gBattlersCount;
-extern u16 gBattlerPartyIndexes[];
-extern u8 gBanksBySide[];
-extern u8 gBankSpriteIds[];
-extern u16 gUnknown_02024DE8;
-extern u8 gDoingBattleAnim;
-extern u32 gTransformedPersonalities[];
-extern struct Window gUnknown_03004210;
-extern void (*gBattleBankFunc[])(void);
-extern u8 gHealthboxIDs[];
-extern u8 gUnknown_0300434C[];
-extern struct MusicPlayerInfo gMPlay_SE1;
-extern struct MusicPlayerInfo gMPlay_SE2;
-extern struct MusicPlayerInfo gMPlay_BGM;
-extern u32 gBitTable[];
-extern u16 gBattleTypeFlags;
-extern u8 gBattleMonForms[];
-extern u8 gBattleAnimAttacker;
-extern u8 gBattleAnimTarget;
-extern void (*gAnimScriptCallback)(void);
-extern u8 gAnimScriptActive;
-extern const u8 *const gBattleAnims_General[];
-extern const u8 *const gBattleAnims_Special[];
-extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
-extern const struct MonCoords gTrainerFrontPicCoords[];
-extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern const struct CompressedSpriteSheet gUnknown_081FAF24;
-extern const struct SpriteTemplate gSpriteTemplate_81FAF34;
-extern const u8 gSubstituteDollTilemap[]; // graphics.s
-extern const u8 gSubstituteDollGfx[]; // graphics.s
-extern const u8 gSubstituteDollPal[]; // graphics.s
-extern const u8 gUnknown_08D09C48[]; // graphics.s
-
-const struct CompressedSpriteSheet gUnknown_0820A47C =
-{ gBattleWindowLargeGfx, 4096, 0xd6ff };
-
-const struct CompressedSpriteSheet gUnknown_0820A484 =
-{ gBattleWindowSmallGfx, 4096, 0xd701 };
-
-const struct CompressedSpriteSheet gUnknown_0820A48C[] =
-{
- { gBattleWindowSmall2Gfx, 2048, 0xd6ff },
- { gBattleWindowSmall2Gfx, 2048, 0xd700 },
-};
-
-const struct CompressedSpriteSheet gUnknown_0820A49C[] =
-{
- { gBattleWindowSmall3Gfx, 2048, 0xd701 },
- { gBattleWindowSmall3Gfx, 2048, 0xd702 },
-};
-
-const struct CompressedSpriteSheet gUnknown_0820A4AC =
-{ gBattleWindowLarge2Gfx, 4096, 0xd70b };
-
-const struct CompressedSpriteSheet gUnknown_0820A4B4[] =
-{
- { gBlankGfxCompressed, 256, 0xd704 },
- { gBlankGfxCompressed, 288, 0xd705 },
- { gBlankGfxCompressed, 256, 0xd706 },
- { gBlankGfxCompressed, 288, 0xd707 },
-};
-
-const struct SpritePalette gUnknown_0820A4D4[] =
-{
- { gUnknown_08D1212C, 0xD6FF },
- { gUnknown_08D1214C, 0xD704 },
-};
-
-extern void c3_0802FDF4(u8);
-extern void sub_80440EC();
-extern void sub_804777C();
-extern u8 GetBattlerSpriteCoord();
-extern u8 IsBankSpritePresent(u8);
-extern u8 sub_8077F68(u8);
-extern u8 sub_8077F7C(u8);
-extern void sub_8094958(void);
-extern void sub_80105DC(struct Sprite *);
-extern void move_anim_start_t2();
-
-void sub_80315E8(u8);
-u8 sub_803163C(u8);
-void sub_80316CC(u8);
-void sub_8031F0C(void);
-void refresh_graphics_maybe(u8, u8, u8);
-void sub_80324E0(u8 a);
-void sub_80327CC(void);
-void sub_8032978(struct Sprite *);
-void sub_80328A4(struct Sprite *);
-
-void sub_80312F0(struct Sprite *sprite)
-{
- u8 spriteId = sprite->data[1];
-
- if (gSprites[spriteId].affineAnimEnded && !gSprites[spriteId].invisible)
- {
- if (gSprites[spriteId].animPaused)
- gSprites[spriteId].animPaused = FALSE;
- else if (gSprites[spriteId].animEnded)
- {
- gSprites[spriteId].callback = sub_80105DC;
- StartSpriteAffineAnim(&gSprites[spriteId], 0);
- sprite->callback = SpriteCallbackDummy;
- }
- }
-}
-
-void unref_sub_8031364(struct Sprite *sprite, bool8 stupid)
-{
- sprite->animPaused = TRUE;
- sprite->callback = SpriteCallbackDummy;
- if (!stupid)
- StartSpriteAffineAnim(sprite, 1);
- else
- StartSpriteAffineAnim(sprite, 1);
- AnimateSprite(sprite);
-}
-
-void sub_80313A0(struct Sprite *sprite)
-{
- if (!(gUnknown_02024DE8 & 1))
- {
- sprite->pos2.x += sprite->data[0];
- if (sprite->pos2.x == 0)
- sprite->callback = SpriteCallbackDummy;
- }
-}
-
-void move_anim_start_t2_for_situation(u8 a, u32 b)
-{
- ewram17810[gActiveBattler].unk0_4 = 1;
- if (a == 0)
- {
- if (b == 0x20)
- move_anim_start_t2(gActiveBattler, 6);
- else if (b == 8 || (b & 0x80))
- move_anim_start_t2(gActiveBattler, 0);
- else if (b == 0x10)
- move_anim_start_t2(gActiveBattler, 2);
- else if (b & 7)
- move_anim_start_t2(gActiveBattler, 4);
- else if (b == 0x40)
- move_anim_start_t2(gActiveBattler, 5);
- else
- ewram17810[gActiveBattler].unk0_4 = 0;
- }
- else
- {
- if (b & 0x000F0000)
- move_anim_start_t2(gActiveBattler, 3);
- else if (b & 7)
- move_anim_start_t2(gActiveBattler, 1);
- else if (b & 0x10000000)
- move_anim_start_t2(gActiveBattler, 7);
- else if (b & 0x08000000)
- move_anim_start_t2(gActiveBattler, 8);
- else if (b & 0x0000E000)
- move_anim_start_t2(gActiveBattler, 9);
- else
- ewram17810[gActiveBattler].unk0_4 = 0;
- }
-}
-
-bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e)
-{
- u8 taskId;
-
- if (d == 0 && (e & 0x80))
- {
- gBattleMonForms[a] = e & 0x7F;
- return TRUE;
- }
- if (ewram17800[a].substituteSprite && sub_803163C(d) == 0)
- return TRUE;
- if (ewram17800[a].substituteSprite && d == 2 && gSprites[gBankSpriteIds[a]].invisible)
- {
- refresh_graphics_maybe(a, 1, gBankSpriteIds[a]);
- sub_80324E0(a);
- return TRUE;
- }
- gBattleAnimAttacker = b;
- gBattleAnimTarget = c;
- ewram17840.unk0 = e;
- LaunchBattleAnimation(gBattleAnims_General, d, 0);
- taskId = CreateTask(sub_80315E8, 10);
- gTasks[taskId].data[0] = a;
- ewram17810[gTasks[taskId].data[0]].unk0_5 = 1;
- return FALSE;
-}
-
-void sub_80315E8(u8 taskId)
-{
- gAnimScriptCallback();
- if (!gAnimScriptActive)
- {
- ewram17810[gTasks[taskId].data[0]].unk0_5 = 0;
- DestroyTask(taskId);
- }
-}
-
-u8 sub_803163C(u8 a)
-{
- switch (a)
- {
- case 2:
- case 10:
- case 11:
- case 12:
- case 13:
- case 17:
- return 1;
- default:
- return 0;
- }
-}
-
-void move_anim_start_t4(u8 a, u8 b, u8 c, u8 d)
-{
- u8 taskId;
-
- gBattleAnimAttacker = b;
- gBattleAnimTarget = c;
- LaunchBattleAnimation(gBattleAnims_Special, d, 0);
- taskId = CreateTask(sub_80316CC, 10);
- gTasks[taskId].data[0] = a;
- ewram17810[gTasks[taskId].data[0]].unk0_6 = 1;
-}
-
-void sub_80316CC(u8 taskId)
-{
- gAnimScriptCallback();
- if (!gAnimScriptActive)
- {
- ewram17810[gTasks[taskId].data[0]].unk0_6 = 0;
- DestroyTask(taskId);
- }
-}
-
-u8 sub_8031720(int unused1, int unused2)
-{
- return 0;
-}
-
-bool8 mplay_80342A4(u8 a)
-{
- u8 zero = 0;
-
- if (IsSEPlaying())
- {
- ewram17810[a].unk8++;
- if (ewram17810[gActiveBattler].unk8 < 30)
- return TRUE;
- m4aMPlayStop(&gMPlay_SE1);
- m4aMPlayStop(&gMPlay_SE2);
- }
- if (zero == 0)
- {
- ewram17810[a].unk8 = 0;
- return FALSE;
- }
- return TRUE;
-}
-
-void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 b)
-{
- u32 personalityValue;
- u16 species;
- u32 r7;
- u32 otId;
- u8 var;
- u16 paletteOffset;
- const u8 *lzPaletteData;
-
- personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
- if (ewram17800[b].transformedSpecies == 0)
- {
- species = GetMonData(pkmn, MON_DATA_SPECIES);
- r7 = personalityValue;
- }
- else
- {
- species = ewram17800[b].transformedSpecies;
- r7 = gTransformedPersonalities[b];
- }
- otId = GetMonData(pkmn, MON_DATA_OT_ID);
- var = GetBattlerPosition(b);
- HandleLoadSpecialPokePic(
- &gMonFrontPicTable[species],
- gMonFrontPicCoords[species].coords,
- gMonFrontPicCoords[species].y_offset,
- eVoidSharedArr2,
- gUnknown_081FAF4C[var],
- species,
- r7);
- paletteOffset = 0x100 + b * 16;
- if (ewram17800[b].transformedSpecies == 0)
- lzPaletteData = GetMonSpritePal(pkmn);
- else
- lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue);
- LZDecompressWram(lzPaletteData, gSharedMem);
- LoadPalette(gSharedMem, paletteOffset, 0x20);
- LoadPalette(gSharedMem, 0x80 + b * 16, 0x20);
- if (species == SPECIES_CASTFORM)
- {
- paletteOffset = 0x100 + b * 16;
- LZDecompressWram(lzPaletteData, ewram16400);
- LoadPalette(ewram16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20);
- }
- if (ewram17800[b].transformedSpecies != 0)
- {
- BlendPalette(paletteOffset, 16, 6, RGB(31, 31, 31));
- CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
- }
-}
-
-void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 b)
-{
- u32 personalityValue;
- u16 species;
- u32 r7;
- u32 otId;
- u8 var;
- u16 paletteOffset;
- const u8 *lzPaletteData;
-
- personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
- if (ewram17800[b].transformedSpecies == 0)
- {
- species = GetMonData(pkmn, MON_DATA_SPECIES);
- r7 = personalityValue;
- }
- else
- {
- species = ewram17800[b].transformedSpecies;
- r7 = gTransformedPersonalities[b];
- }
- otId = GetMonData(pkmn, MON_DATA_OT_ID);
- var = GetBattlerPosition(b);
- HandleLoadSpecialPokePic(
- &gMonBackPicTable[species],
- gMonBackPicCoords[species].coords,
- gMonBackPicCoords[species].y_offset,
- eVoidSharedArr2,
- gUnknown_081FAF4C[var],
- species,
- r7);
- paletteOffset = 0x100 + b * 16;
- if (ewram17800[b].transformedSpecies == 0)
- lzPaletteData = GetMonSpritePal(pkmn);
- else
- lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue);
- LZDecompressWram(lzPaletteData, gSharedMem);
- LoadPalette(gSharedMem, paletteOffset, 0x20);
- LoadPalette(gSharedMem, 0x80 + b * 16, 0x20);
- if (species == SPECIES_CASTFORM)
- {
- paletteOffset = 0x100 + b * 16;
- LZDecompressWram(lzPaletteData, ewram16400);
- LoadPalette(ewram16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20);
- }
- if (ewram17800[b].transformedSpecies != 0)
- {
- BlendPalette(paletteOffset, 16, 6, RGB(31, 31, 31));
- CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
- }
-}
-
-void unref_sub_8031A64(void)
-{
-}
-
-void nullsub_9(u16 unused)
-{
-}
-
-void sub_8031A6C(u16 a, u8 b)
-{
- u8 status;
- struct CompressedSpriteSheet spriteSheet;
-
- status = GetBattlerPosition(b);
- DecompressPicFromTable_2(
- &gTrainerFrontPicTable[a],
- gTrainerFrontPicCoords[a].coords,
- gTrainerFrontPicCoords[a].y_offset,
- eVoidSharedArr,
- gUnknown_081FAF4C[status],
- 0);
- spriteSheet.data = gUnknown_081FAF4C[status];
- spriteSheet.size = gTrainerFrontPicTable[a].size;
- spriteSheet.tag = gTrainerFrontPicTable[a].tag;
- LoadCompressedObjectPic(&spriteSheet);
- LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[a]);
-}
-
-void LoadPlayerTrainerBankSprite(u16 a, u8 b)
-{
- u8 status;
-
- status = GetBattlerPosition(b);
- DecompressPicFromTable_2(
- &gTrainerBackPicTable[a],
- gTrainerBackPicCoords[a].coords,
- gTrainerBackPicCoords[a].y_offset,
- eVoidSharedArr,
- gUnknown_081FAF4C[status],
- 0);
- LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + b * 16, 32);
-}
-
-void nullsub_10(int unused)
-{
-}
-
-void sub_8031B74(u16 a)
-{
- FreeSpritePaletteByTag(gTrainerFrontPicPaletteTable[a].tag);
- FreeSpriteTilesByTag(gTrainerFrontPicTable[a].tag);
-}
-
-void unref_sub_8031BA0(void)
-{
- u8 count;
- u8 i;
-
- LoadSpritePalette(&gUnknown_0820A4D4[0]);
- LoadSpritePalette(&gUnknown_0820A4D4[1]);
- if (!IsDoubleBattle())
- {
- LoadCompressedObjectPic(&gUnknown_0820A47C);
- LoadCompressedObjectPic(&gUnknown_0820A484);
- count = 2;
- }
- else
- {
- LoadCompressedObjectPic(&gUnknown_0820A48C[0]);
- LoadCompressedObjectPic(&gUnknown_0820A48C[1]);
- LoadCompressedObjectPic(&gUnknown_0820A49C[0]);
- LoadCompressedObjectPic(&gUnknown_0820A49C[1]);
- count = 4;
- }
- for (i = 0; i < count; i++)
- LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[i]]);
-}
-
-bool8 sub_8031C30(u8 a)
-{
- bool8 retVal = FALSE;
-
- if (a != 0)
- {
- if (a == 1)
- {
- LoadSpritePalette(&gUnknown_0820A4D4[0]);
- LoadSpritePalette(&gUnknown_0820A4D4[1]);
- }
- else if (!IsDoubleBattle())
- {
- if (a == 2)
- {
- if (gBattleTypeFlags & 0x80)
- LoadCompressedObjectPic(&gUnknown_0820A4AC);
- else
- LoadCompressedObjectPic(&gUnknown_0820A47C);
- }
- else if (a == 3)
- LoadCompressedObjectPic(&gUnknown_0820A484);
- else if (a == 4)
- LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[0]]);
- else if (a == 5)
- LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[1]]);
- else
- retVal = TRUE;
- }
- else
- {
- if (a == 2)
- LoadCompressedObjectPic(&gUnknown_0820A48C[0]);
- else if (a == 3)
- LoadCompressedObjectPic(&gUnknown_0820A48C[1]);
- else if (a == 4)
- LoadCompressedObjectPic(&gUnknown_0820A49C[0]);
- else if (a == 5)
- LoadCompressedObjectPic(&gUnknown_0820A49C[1]);
- else if (a == 6)
- LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[0]]);
- else if (a == 7)
- LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[1]]);
- else if (a == 8)
- LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[2]]);
- else if (a == 9)
- LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[3]]);
- else
- retVal = TRUE;
- }
- }
- return retVal;
-}
-
-void load_gfxc_health_bar(u8 a)
-{
- LZDecompressWram(gUnknown_08D09C48, eVoidSharedArr);
-}
-
-u8 battle_load_something(u8 *pState, u8 *b)
-{
- bool8 retVal = FALSE;
-
- switch (*pState)
- {
- case 0:
- sub_8031F0C();
- (*pState)++;
- break;
- case 1:
- if (sub_8031C30(*b) == 0)
- {
- (*b)++;
- }
- else
- {
- *b = 0;
- (*pState)++;
- }
- break;
- case 2:
- (*pState)++;
- break;
- case 3:
- if ((gBattleTypeFlags & 0x80) && *b == 0)
- gHealthboxIDs[*b] = battle_make_oam_safari_battle();
- else
- gHealthboxIDs[*b] = battle_make_oam_normal_battle(*b);
- (*b)++;
- if (*b == gBattlersCount)
- {
- *b = 0;
- (*pState)++;
- }
- break;
- case 4:
- sub_8043F44(*b);
- if (gBanksBySide[*b] <= 1)
- nullsub_11(gHealthboxIDs[*b], 0);
- else
- nullsub_11(gHealthboxIDs[*b], 1);
- (*b)++;
- if (*b == gBattlersCount)
- {
- *b = 0;
- (*pState)++;
- }
- break;
- case 5:
- if (GetBattlerSide(*b) == 0)
- {
- if (!(gBattleTypeFlags & 0x80))
- sub_8045A5C(gHealthboxIDs[*b], &gPlayerParty[gBattlerPartyIndexes[*b]], 0);
- }
- else
- {
- sub_8045A5C(gHealthboxIDs[*b], &gEnemyParty[gBattlerPartyIndexes[*b]], 0);
- }
- sub_8043DB0(gHealthboxIDs[*b]);
- (*b)++;
- if (*b == gBattlersCount)
- {
- *b = 0;
- (*pState)++;
- }
- break;
- case 6:
- sub_80327CC();
- sub_8094958();
- retVal = TRUE;
- break;
- }
- return retVal;
-}
-
-void sub_8031EE8(void)
-{
- memset(ewram17810, 0, 0x30);
- memset(&ewram17840, 0, 0x10);
-}
-
-void sub_8031F0C(void)
-{
- sub_8031EE8();
- memset(ewram17800, 0, 0x10);
-}
-
-void sub_8031F24(void)
-{
- s32 i;
-
- for (i = 0; i < gBattlersCount; i++)
- ewram17800[i].invisible = gSprites[gBankSpriteIds[i]].invisible;
-}
-
-void sub_8031F88(u8 a)
-{
- ewram17800[a].invisible = gSprites[gBankSpriteIds[a]].invisible;
-}
-
-void sub_8031FC4(u8 a, u8 b, bool8 c)
-{
- u16 paletteOffset;
- u16 species;
- u32 personalityValue;
- u32 otId;
- u8 r10;
- const u8 *lzPaletteData;
-
- if (c)
- {
- StartSpriteAnim(&gSprites[gBankSpriteIds[a]], ewram17840.unk0);
- paletteOffset = 0x100 + a * 16;
- LoadPalette(ewram16400 + ewram17840.unk0 * 32, paletteOffset, 32);
- gBattleMonForms[a] = ewram17840.unk0;
- if (ewram17800[a].transformedSpecies != 0)
- {
- BlendPalette(paletteOffset, 16, 6, RGB(31, 31, 31));
- CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
- }
- gSprites[gBankSpriteIds[a]].pos1.y = sub_8077F68(a);
- }
- else
- {
- if (IsContest())
- {
- r10 = 0;
- species = shared19348.unk2;
- personalityValue = shared19348.unk8;
- otId = shared19348.unkC;
- HandleLoadSpecialPokePic(
- &gMonBackPicTable[species],
- gMonBackPicCoords[species].coords,
- gMonBackPicCoords[species].y_offset,
- eVoidSharedArr2,
- gUnknown_081FAF4C[0],
- species,
- shared19348.unk10);
- }
- else
- {
- r10 = GetBattlerPosition(a);
- if (GetBattlerSide(b) == 1)
- species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[b]], MON_DATA_SPECIES);
- else
- species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[b]], MON_DATA_SPECIES);
- if (GetBattlerSide(a) == 0)
- {
- personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[a]], MON_DATA_PERSONALITY);
- otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[a]], MON_DATA_OT_ID);
- HandleLoadSpecialPokePic(
- &gMonBackPicTable[species],
- gMonBackPicCoords[species].coords,
- gMonBackPicCoords[species].y_offset,
- eVoidSharedArr2,
- gUnknown_081FAF4C[r10],
- species,
- gTransformedPersonalities[a]);
- }
- else
- {
- personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[a]], MON_DATA_PERSONALITY);
- otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[a]], MON_DATA_OT_ID);
- HandleLoadSpecialPokePic(
- &gMonFrontPicTable[species],
- gMonFrontPicCoords[species].coords,
- gMonFrontPicCoords[species].y_offset,
- eVoidSharedArr2,
- gUnknown_081FAF4C[r10],
- species,
- gTransformedPersonalities[a]);
- }
- }
- DmaCopy32Defvars(3, gUnknown_081FAF4C[r10], (void *)(VRAM + 0x10000 + gSprites[gBankSpriteIds[a]].oam.tileNum * 32), 0x800);
- paletteOffset = 0x100 + a * 16;
- lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue);
- LZDecompressWram(lzPaletteData, gSharedMem);
- LoadPalette(gSharedMem, paletteOffset, 32);
- if (species == SPECIES_CASTFORM)
- {
- u16 *paletteSrc = (u16 *)ewram16400; // TODO: avoid casting?
-
- LZDecompressWram(lzPaletteData, paletteSrc);
- LoadPalette(paletteSrc + gBattleMonForms[b] * 16, paletteOffset, 32);
- }
- BlendPalette(paletteOffset, 16, 6, RGB(31, 31, 31));
- CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
- if (!IsContest())
- {
- ewram17800[a].transformedSpecies = species;
- gBattleMonForms[a] = gBattleMonForms[b];
- }
- gSprites[gBankSpriteIds[a]].pos1.y = sub_8077F68(a);
- StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
- }
-}
-
-void BattleLoadSubstituteSprite(u8 a, u8 b)
-{
- u8 r4;
- u16 foo;
- const u8 *gSubstituteDollPal_;
- void *src;
- s32 i;
-
- if (b == 0)
- {
- if (IsContest())
- r4 = 0;
- else
- r4 = GetBattlerPosition(a);
- if (IsContest())
- LZDecompressVram(gSubstituteDollTilemap, gUnknown_081FAF4C[r4]);
- else if (GetBattlerSide(a) != 0)
- LZDecompressVram(gSubstituteDollGfx, gUnknown_081FAF4C[r4]);
- else
- LZDecompressVram(gSubstituteDollTilemap, gUnknown_081FAF4C[r4]);
- // There is probably a way to do this without all the temp variables, but I couldn't figure it out.
- foo = a * 16;
- gSubstituteDollPal_ = gSubstituteDollPal;
- src = gUnknown_081FAF4C[r4];
- for (i = 0; i < 3; i++)
- DmaCopy32(3, src, src + i * 0x800 + 0x800, 0x800);
- LoadCompressedPalette(gSubstituteDollPal_, 0x100 + foo, 32);
- }
- else
- {
- if (!IsContest())
- {
- if (GetBattlerSide(a) != 0)
- BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[a]], a);
- else
- BattleLoadPlayerMonSprite(&gPlayerParty[gBattlerPartyIndexes[a]], a);
- }
- }
-}
-
-void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId)
-{
- BattleLoadSubstituteSprite(a, b);
- StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[a]);
- if (b == 0)
- gSprites[spriteId].pos1.y = sub_8077F7C(a);
- else
- gSprites[spriteId].pos1.y = sub_8077F68(a);
-}
-
-void sub_80324BC(u8 a, u16 b)
-{
- if (b == 0xA4)
- ewram17800[a].substituteSprite = 1;
-}
-
-void sub_80324E0(u8 a)
-{
- ewram17800[a].substituteSprite = 0;
-}
-
-void HandleLowHpMusicChange(struct Pokemon *pkmn, u8 b)
-{
- u16 hp = GetMonData(pkmn, MON_DATA_HP);
- u16 maxHP = GetMonData(pkmn, MON_DATA_MAX_HP);
-
- if (GetHPBarLevel(hp, maxHP) == 1)
- {
- if (!ewram17800[b].unk0_1)
- {
- if (!ewram17800[b ^ 2].unk0_1)
- PlaySE(SE_HINSI);
- ewram17800[b].unk0_1 = 1;
- }
- }
- else
- {
- ewram17800[b].unk0_1 = 0;
- if (!IsDoubleBattle())
- {
- m4aSongNumStop(SE_HINSI);
- return;
- }
- if (IsDoubleBattle() && !ewram17800[b ^ 2].unk0_1)
- {
- m4aSongNumStop(SE_HINSI);
- return;
- }
- }
-}
-
-void BattleStopLowHpSound(void)
-{
- u8 r4 = GetBattlerAtPosition(0);
-
- ewram17800[r4].unk0_1 = 0;
- if (IsDoubleBattle())
- ewram17800[r4 ^ 2].unk0_1 = 0;
- m4aSongNumStop(SE_HINSI);
-}
-
-u8 unref_sub_8032604(struct Pokemon *pkmn)
-{
- u16 hp = GetMonData(pkmn, MON_DATA_HP);
- u16 maxHP = GetMonData(pkmn, MON_DATA_MAX_HP);
-
- return GetHPBarLevel(hp, maxHP);
-}
-
-void sub_8032638(void)
-{
- if (gMain.inBattle)
- {
- u8 r8 = GetBattlerAtPosition(0);
- u8 r9 = GetBattlerAtPosition(2);
- u8 r4 = pokemon_order_func(gBattlerPartyIndexes[r8]);
- u8 r5 = pokemon_order_func(gBattlerPartyIndexes[r9]);
-
- if (GetMonData(&gPlayerParty[r4], MON_DATA_HP) != 0)
- HandleLowHpMusicChange(&gPlayerParty[r4], r8);
- if (IsDoubleBattle())
- {
- if (GetMonData(&gPlayerParty[r5], MON_DATA_HP) != 0)
- HandleLowHpMusicChange(&gPlayerParty[r5], r9);
- }
- }
-}
-
-void sub_80326EC(u8 a)
-{
- s32 i;
-
- for (i = 0; i < gBattlersCount; i++)
- {
- if (IsBankSpritePresent(i) != 0)
- {
- gSprites[gBankSpriteIds[i]].oam.affineMode = a;
- if (a == 0)
- {
- ewram17810[i].unk6 = gSprites[gBankSpriteIds[i]].oam.matrixNum;
- gSprites[gBankSpriteIds[i]].oam.matrixNum = 0;
- }
- else
- {
- gSprites[gBankSpriteIds[i]].oam.matrixNum = ewram17810[i].unk6;
- }
- }
- }
-}
-
-void sub_80327CC(void)
-{
- u8 r5;
-
- LoadCompressedObjectPic(&gUnknown_081FAF24);
- r5 = GetBattlerAtPosition(1);
- ewram17810[r5].unk7 = CreateSprite(&gSpriteTemplate_81FAF34, GetBattlerSpriteCoord(r5, 0), GetBattlerSpriteCoord(r5, 1) + 32, 0xC8);
- gSprites[ewram17810[r5].unk7].data[0] = r5;
- if (IsDoubleBattle())
- {
- r5 = GetBattlerAtPosition(3);
- ewram17810[r5].unk7 = CreateSprite(&gSpriteTemplate_81FAF34, GetBattlerSpriteCoord(r5, 0), GetBattlerSpriteCoord(r5, 1) + 32, 0xC8);
- gSprites[ewram17810[r5].unk7].data[0] = r5;
- }
-}
-
-void sub_80328A4(struct Sprite *sprite)
-{
- bool8 invisible = FALSE;
- u8 r4 = sprite->data[0];
- struct Sprite *r7 = &gSprites[gBankSpriteIds[r4]];
-
- if (!r7->inUse || IsBankSpritePresent(r4) == 0)
- {
- sprite->callback = sub_8032978;
- return;
- }
- if (gAnimScriptActive || r7->invisible)
- invisible = TRUE;
- else if (ewram17800[r4].transformedSpecies != 0 && gEnemyMonElevation[ewram17800[r4].transformedSpecies] == 0)
- invisible = TRUE;
- if (ewram17800[r4].substituteSprite)
- invisible = TRUE;
- sprite->pos1.x = r7->pos1.x;
- sprite->pos2.x = r7->pos2.x;
- sprite->invisible = invisible;
-}
-
-void sub_8032978(struct Sprite *sprite)
-{
- sprite->invisible = TRUE;
-}
-
-void sub_8032984(u8 a, u16 b)
-{
- if (GetBattlerSide(a) != 0)
- {
- if (ewram17800[a].transformedSpecies != 0)
- b = ewram17800[a].transformedSpecies;
- if (gEnemyMonElevation[b] != 0)
- gSprites[ewram17810[a].unk7].callback = sub_80328A4;
- else
- gSprites[ewram17810[a].unk7].callback = sub_8032978;
- }
-}
-
-void sub_8032A08(u8 a)
-{
- gSprites[ewram17810[a].unk7].callback = sub_8032978;
-}
-
-void sub_8032A38(void)
-{
- u16 *ptr = (u16 *)(VRAM + 0x240);
- s32 i;
- s32 j;
-
- for (i = 0; i < 9; i++)
- {
- for (j = 0; j < 16; j++)
- {
- if (!(*ptr & 0xF000))
- *ptr |= 0xF000;
- if (!(*ptr & 0x0F00))
- *ptr |= 0x0F00;
- if (!(*ptr & 0x00F0))
- *ptr |= 0x00F0;
- if (!(*ptr & 0x000F))
- *ptr |= 0x000F;
- ptr++;
- }
- }
-}
-
-void sub_8032AA8(u8 a, u8 b)
-{
- ewram17800[a].transformedSpecies = 0;
- gBattleMonForms[a] = 0;
- if (b == 0)
- sub_80324E0(a);
-}