summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_10.c6
-rw-r--r--src/battle_6.c16
-rw-r--r--src/battle_7.c132
-rw-r--r--src/battle_8.c6
-rw-r--r--src/battle_811DA74.c12
-rw-r--r--src/battle_anim_8137220.c6
-rw-r--r--src/reshow_battle_screen.c262
7 files changed, 351 insertions, 89 deletions
diff --git a/src/battle_10.c b/src/battle_10.c
index 0237bab4b..c2053a5d1 100644
--- a/src/battle_10.c
+++ b/src/battle_10.c
@@ -52,7 +52,7 @@ extern u8 gUnknown_0300434C[];
extern u8 sub_8077F68();
extern u8 sub_8079E90();
extern u8 GetBankIdentity(u8);
-extern void sub_8031794(struct Pokemon *, u8);
+extern void BattleLoadOpponentMonSprite(struct Pokemon *, u8);
extern void sub_8037A74(void);
extern void sub_8032984(u8, u16);
extern void sub_8037E30(void);
@@ -696,7 +696,7 @@ void sub_8039294(void)
{
u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
- sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -726,7 +726,7 @@ void sub_8039430(u8 a, u8 b)
gBattlePartyID[a] = gBattleBufferA[a][1];
species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES);
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- sub_8031794(&gEnemyParty[gBattlePartyID[a]], a);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
gObjectBankIDs[a] = CreateSprite(
&gUnknown_02024E8C,
diff --git a/src/battle_6.c b/src/battle_6.c
index c833aef5e..6fa0e3948 100644
--- a/src/battle_6.c
+++ b/src/battle_6.c
@@ -98,7 +98,7 @@ extern void sub_80E43C0();
extern void oamt_add_pos2_onto_pos1();
extern void sub_8078B34(struct Sprite *);
extern void oamt_set_x3A_32();
-extern void sub_80318FC();
+extern void BattleLoadPlayerMonSprite();
extern bool8 IsDoubleBattle(void);
extern void sub_802D500(void);
extern void dp11b_obj_free();
@@ -121,7 +121,7 @@ extern void sub_80105EC(struct Sprite *);
extern void sub_802D274(void);
extern void sub_802D23C(void);
extern u8 GetBankIdentity(u8);
-extern void sub_8031AF4();
+extern void LoadPlayerTrainerBankSprite();
extern void sub_80313A0(struct Sprite *);
extern void sub_802D204(void);
extern u8 sub_8079E90();
@@ -739,7 +739,7 @@ void sub_802F7CC(void)
void PlayerHandleLoadPokeSprite(void)
{
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
gBattleBankFunc[gActiveBank] = bx_0802E404;
}
@@ -748,7 +748,7 @@ void PlayerHandleSendOutPoke(void)
{
sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]);
gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
gActionSelectionCursor[gActiveBank] = 0;
gMoveSelectionCursor[gActiveBank] = 0;
sub_802F934(gActiveBank, gBattleBufferA[gActiveBank][2]);
@@ -829,7 +829,7 @@ void PlayerHandleTrainerThrow(void)
{
r7 = 0;
}
- sub_8031AF4(gSaveBlock2.playerGender, gActiveBank);
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -845,7 +845,7 @@ void PlayerHandleTrainerThrow(void)
void PlayerHandleTrainerSlide(void)
{
- sub_8031AF4(gSaveBlock2.playerGender, gActiveBank);
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -1357,7 +1357,7 @@ void sub_8030E38(struct Sprite *sprite)
FreeSpriteOamMatrix(sprite);
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
DestroySprite(sprite);
- sub_80318FC(&gPlayerParty[gBattlePartyID[r4]], r4);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[r4]], r4);
StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0);
}
@@ -1383,7 +1383,7 @@ void task05_08033660(u8 taskId)
sub_802F934(gActiveBank, 0);
gActiveBank ^= 2;
gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
sub_802F934(gActiveBank, 0);
gActiveBank ^= 2;
}
diff --git a/src/battle_7.c b/src/battle_7.c
index f2838467e..8c5f5f45d 100644
--- a/src/battle_7.c
+++ b/src/battle_7.c
@@ -182,9 +182,9 @@ bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e)
gBattleMonForms[a] = e & 0x7F;
return TRUE;
}
- if (ewram17800[a].unk0_2 && sub_803163C(d) == 0)
+ if (ewram17800[a].substituteSprite && sub_803163C(d) == 0)
return TRUE;
- if (ewram17800[a].unk0_2 && d == 2 && gSprites[gObjectBankIDs[a]].invisible)
+ if (ewram17800[a].substituteSprite && d == 2 && gSprites[gObjectBankIDs[a]].invisible)
{
refresh_graphics_maybe(a, 1, gObjectBankIDs[a]);
sub_80324E0(a);
@@ -273,29 +273,29 @@ bool8 mplay_80342A4(u8 a)
return TRUE;
}
-void sub_8031794(struct Pokemon *pkmn, u8 b)
+void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 bank)
{
u32 personalityValue;
u16 species;
- u32 r7;
+ u32 transformPersonality;
u32 otId;
u8 var;
u16 paletteOffset;
const u8 *lzPaletteData;
personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
- if (ewram17800[b].unk2 == 0)
+ if (ewram17800[bank].transformedSpecies == 0)
{
species = GetMonData(pkmn, MON_DATA_SPECIES);
- r7 = personalityValue;
+ transformPersonality = personalityValue;
}
else
{
- species = ewram17800[b].unk2;
- r7 = gPID_perBank[b];
+ species = ewram17800[bank].transformedSpecies;
+ transformPersonality = gPID_perBank[bank];
}
otId = GetMonData(pkmn, MON_DATA_OT_ID);
- var = GetBankIdentity(b);
+ var = GetBankIdentity(bank);
HandleLoadSpecialPokePic(
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
@@ -303,29 +303,29 @@ void sub_8031794(struct Pokemon *pkmn, u8 b)
0x02000000,
gUnknown_081FAF4C[var],
species,
- r7);
- paletteOffset = 0x100 + b * 16;
- if (ewram17800[b].unk2 == 0)
+ transformPersonality);
+ paletteOffset = 0x100 + bank * 16;
+ if (ewram17800[bank].transformedSpecies == 0)
lzPaletteData = pokemon_get_pal(pkmn);
else
lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue);
sub_800D238(lzPaletteData, ewram);
LoadPalette(ewram, paletteOffset, 0x20);
- LoadPalette(ewram, 0x80 + b * 16, 0x20);
+ LoadPalette(ewram, 0x80 + bank * 16, 0x20);
if (species == SPECIES_CASTFORM)
{
- paletteOffset = 0x100 + b * 16;
+ paletteOffset = 0x100 + bank * 16;
sub_800D238(lzPaletteData, ewram + 0x16400);
- LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20);
+ LoadPalette(ewram + 0x16400 + gBattleMonForms[bank] * 32, paletteOffset, 0x20);
}
- if (ewram17800[b].unk2 != 0)
+ if (ewram17800[bank].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
}
-void sub_80318FC(struct Pokemon *pkmn, u8 b)
+void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 bank)
{
u32 personalityValue;
u16 species;
@@ -336,18 +336,18 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b)
const u8 *lzPaletteData;
personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
- if (ewram17800[b].unk2 == 0)
+ if (ewram17800[bank].transformedSpecies == 0)
{
species = GetMonData(pkmn, MON_DATA_SPECIES);
r7 = personalityValue;
}
else
{
- species = ewram17800[b].unk2;
- r7 = gPID_perBank[b];
+ species = ewram17800[bank].transformedSpecies;
+ r7 = gPID_perBank[bank];
}
otId = GetMonData(pkmn, MON_DATA_OT_ID);
- var = GetBankIdentity(b);
+ var = GetBankIdentity(bank);
HandleLoadSpecialPokePic(
&gMonBackPicTable[species],
gMonBackPicCoords[species].coords,
@@ -356,21 +356,21 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b)
gUnknown_081FAF4C[var],
species,
r7);
- paletteOffset = 0x100 + b * 16;
- if (ewram17800[b].unk2 == 0)
+ paletteOffset = 0x100 + bank * 16;
+ if (ewram17800[bank].transformedSpecies == 0)
lzPaletteData = pokemon_get_pal(pkmn);
else
lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue);
sub_800D238(lzPaletteData, ewram);
LoadPalette(ewram, paletteOffset, 0x20);
- LoadPalette(ewram, 0x80 + b * 16, 0x20);
+ LoadPalette(ewram, 0x80 + bank * 16, 0x20);
if (species == SPECIES_CASTFORM)
{
- paletteOffset = 0x100 + b * 16;
+ paletteOffset = 0x100 + bank * 16;
sub_800D238(lzPaletteData, ewram + 0x16400);
- LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20);
+ LoadPalette(ewram + 0x16400 + gBattleMonForms[bank] * 32, paletteOffset, 0x20);
}
- if (ewram17800[b].unk2 != 0)
+ if (ewram17800[bank].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
@@ -405,11 +405,11 @@ void sub_8031A6C(u16 a, u8 b)
LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[a]);
}
-void sub_8031AF4(u16 a, u8 b)
+void LoadPlayerTrainerBankSprite(u16 a, u8 bank)
{
u8 status;
- status = GetBankIdentity(b);
+ status = GetBankIdentity(bank);
DecompressPicFromTable_2(
&gTrainerBackPicTable[a],
gTrainerBackPicCoords[a].coords,
@@ -417,7 +417,7 @@ void sub_8031AF4(u16 a, u8 b)
(void *)0x02000000,
gUnknown_081FAF4C[status],
0);
- LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + b * 16, 32);
+ LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + bank * 16, 32);
}
void nullsub_10(int unused)
@@ -615,7 +615,7 @@ void sub_8031F88(u8 a)
ewram17800[a].unk0_0 = gSprites[gObjectBankIDs[a]].invisible;
}
-void sub_8031FC4(u8 a, u8 b, bool8 c)
+void sub_8031FC4(u8 bank1, u8 bank2, bool8 c)
{
u16 paletteOffset;
u16 species;
@@ -626,16 +626,16 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
if (c)
{
- StartSpriteAnim(&gSprites[gObjectBankIDs[a]], ewram17840.unk0);
- paletteOffset = 0x100 + a * 16;
+ StartSpriteAnim(&gSprites[gObjectBankIDs[bank1]], ewram17840.unk0);
+ paletteOffset = 0x100 + bank1 * 16;
LoadPalette(ewram + 0x16400 + ewram17840.unk0 * 32, paletteOffset, 32);
- gBattleMonForms[a] = ewram17840.unk0;
- if (ewram17800[a].unk2 != 0)
+ gBattleMonForms[bank1] = ewram17840.unk0;
+ if (ewram17800[bank1].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
- gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a);
+ gSprites[gObjectBankIDs[bank1]].pos1.y = sub_8077F68(bank1);
}
else
{
@@ -659,15 +659,15 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
}
else
{
- r10 = GetBankIdentity(a);
- if (GetBankSide(b) == 1)
- species = GetMonData(&gEnemyParty[gBattlePartyID[b]], MON_DATA_SPECIES);
+ r10 = GetBankIdentity(bank1);
+ if (GetBankSide(bank2) == 1)
+ species = GetMonData(&gEnemyParty[gBattlePartyID[bank2]], MON_DATA_SPECIES);
else
- species = GetMonData(&gPlayerParty[gBattlePartyID[b]], MON_DATA_SPECIES);
- if (GetBankSide(a) == 0)
+ species = GetMonData(&gPlayerParty[gBattlePartyID[bank2]], MON_DATA_SPECIES);
+ if (GetBankSide(bank1) == 0)
{
- personalityValue = GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_PERSONALITY);
- otId = GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_OT_ID);
+ personalityValue = GetMonData(&gPlayerParty[gBattlePartyID[bank1]], MON_DATA_PERSONALITY);
+ otId = GetMonData(&gPlayerParty[gBattlePartyID[bank1]], MON_DATA_OT_ID);
HandleLoadSpecialPokePic(
&gMonBackPicTable[species],
gMonBackPicCoords[species].coords,
@@ -675,12 +675,12 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
0x02000000,
gUnknown_081FAF4C[r10],
species,
- gPID_perBank[a]);
+ gPID_perBank[bank1]);
}
else
{
- personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_PERSONALITY);
- otId = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_OT_ID);
+ personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[bank1]], MON_DATA_PERSONALITY);
+ otId = GetMonData(&gEnemyParty[gBattlePartyID[bank1]], MON_DATA_OT_ID);
HandleLoadSpecialPokePic(
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
@@ -688,13 +688,13 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
0x02000000,
gUnknown_081FAF4C[r10],
species,
- gPID_perBank[a]);
+ gPID_perBank[bank1]);
}
}
src = gUnknown_081FAF4C[r10];
- dst = (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32);
+ dst = (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[bank1]].oam.tileNum * 32);
DmaCopy32(3, src, dst, 0x800);
- paletteOffset = 0x100 + a * 16;
+ paletteOffset = 0x100 + bank1 * 16;
lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue);
sub_800D238(lzPaletteData, ewram);
LoadPalette(ewram, paletteOffset, 32);
@@ -703,21 +703,21 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
u16 *paletteSrc = (u16 *)(ewram + 0x16400);
sub_800D238(lzPaletteData, paletteSrc);
- LoadPalette(paletteSrc + gBattleMonForms[b] * 16, paletteOffset, 32);
+ LoadPalette(paletteSrc + gBattleMonForms[bank2] * 16, paletteOffset, 32);
}
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
if (!IsContest())
{
- ewram17800[a].unk2 = species;
- gBattleMonForms[a] = gBattleMonForms[b];
+ ewram17800[bank1].transformedSpecies = species;
+ gBattleMonForms[bank1] = gBattleMonForms[bank2];
}
- gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a);
- StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]);
+ gSprites[gObjectBankIDs[bank1]].pos1.y = sub_8077F68(bank1);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[bank1]], gBattleMonForms[bank1]);
}
}
-void sub_8032350(u8 a, u8 b)
+void BattleLoadSubstituteSprite(u8 a, u8 b)
{
u8 r4;
u16 foo;
@@ -750,16 +750,16 @@ void sub_8032350(u8 a, u8 b)
if (!IsContest())
{
if (GetBankSide(a) != 0)
- sub_8031794(&gEnemyParty[gBattlePartyID[a]], a);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
else
- sub_80318FC(&gPlayerParty[gBattlePartyID[a]], a);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[a]], a);
}
}
}
void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId)
{
- sub_8032350(a, b);
+ BattleLoadSubstituteSprite(a, b);
StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[a]);
if (b == 0)
gSprites[spriteId].pos1.y = sub_8077F7C(a);
@@ -770,12 +770,12 @@ void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId)
void sub_80324BC(u8 a, u16 b)
{
if (b == 0xA4)
- ewram17800[a].unk0_2 = 1;
+ ewram17800[a].substituteSprite = 1;
}
void sub_80324E0(u8 a)
{
- ewram17800[a].unk0_2 = 0;
+ ewram17800[a].substituteSprite = 0;
}
void sub_80324F8(struct Pokemon *pkmn, u8 b)
@@ -896,9 +896,9 @@ void sub_80328A4(struct Sprite *sprite)
}
if (gAnimScriptActive || r7->invisible)
invisible = TRUE;
- else if (ewram17800[r4].unk2 != 0 && gEnemyMonElevation[ewram17800[r4].unk2] == 0)
+ else if (ewram17800[r4].transformedSpecies != 0 && gEnemyMonElevation[ewram17800[r4].transformedSpecies] == 0)
invisible = TRUE;
- if (ewram17800[r4].unk0_2)
+ if (ewram17800[r4].substituteSprite)
invisible = TRUE;
sprite->pos1.x = r7->pos1.x;
sprite->pos2.x = r7->pos2.x;
@@ -914,8 +914,8 @@ void sub_8032984(u8 a, u16 b)
{
if (GetBankSide(a) != 0)
{
- if (ewram17800[a].unk2 != 0)
- b = ewram17800[a].unk2;
+ if (ewram17800[a].transformedSpecies != 0)
+ b = ewram17800[a].transformedSpecies;
if (gEnemyMonElevation[b] != 0)
gSprites[ewram17810[a].unk7].callback = sub_80328A4;
else
@@ -953,7 +953,7 @@ void sub_8032A38(void)
void sub_8032AA8(u8 a, u8 b)
{
- ewram17800[a].unk2 = 0;
+ ewram17800[a].transformedSpecies = 0;
gBattleMonForms[a] = 0;
if (b == 0)
sub_80324E0(a);
@@ -1168,7 +1168,7 @@ void sub_8033264(void)
{
if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
gBattleBankFunc[gActiveBank] = sub_80332D0;
}
diff --git a/src/battle_8.c b/src/battle_8.c
index 75f10c4b1..6d17ecd28 100644
--- a/src/battle_8.c
+++ b/src/battle_8.c
@@ -58,7 +58,7 @@ extern u8 sub_8077ABC();
extern u8 sub_8077F68();
extern u8 sub_8079E90();
extern void sub_8033018(void);
-extern void sub_8031794();
+extern void BattleLoadOpponentMonSprite();
extern u8 GetBankIdentity(u8);
extern void sub_8032984(u8, u16);
extern void sub_80333D4(void);
@@ -714,7 +714,7 @@ void OpponentHandleLoadPokeSprite(void)
{
u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
- sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -746,7 +746,7 @@ void sub_803495C(u8 a, u8 b)
gBattlePartyID[a] = gBattleBufferA[a][1];
species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES);
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- sub_8031794(&gEnemyParty[gBattlePartyID[a]], a);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
gObjectBankIDs[a] = CreateSprite(
&gUnknown_02024E8C,
diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c
index 36a287efc..47ae8246f 100644
--- a/src/battle_811DA74.c
+++ b/src/battle_811DA74.c
@@ -87,12 +87,12 @@ extern void oamt_set_x3A_32();
extern void sub_8078B34(struct Sprite *);
extern void sub_80105EC(struct Sprite *);
extern s32 sub_803FC34(u16);
-extern void sub_8031AF4();
+extern void LoadPlayerTrainerBankSprite();
extern void sub_80313A0(struct Sprite *);
extern u8 sub_8046400();
extern void sub_80312F0(struct Sprite *);
extern u8 CreateInvisibleSpriteWithCallback();
-extern void sub_80318FC();
+extern void BattleLoadPlayerMonSprite();
extern u8 sub_8077ABC();
extern u8 sub_8077F68();
extern u8 sub_8079E90();
@@ -989,7 +989,7 @@ void sub_811F664(void)
void sub_811F6D8(void)
{
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(
GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
GetBankIdentity(gActiveBank));
@@ -1009,7 +1009,7 @@ void sub_811F7F4(void)
{
sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]);
gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
sub_811F864(gActiveBank, gBattleBufferA[gActiveBank][2]);
gBattleBankFunc[gActiveBank] = sub_811E1BC;
}
@@ -1092,7 +1092,7 @@ void sub_811FAE4(void)
xOffset = 0;
gender = gLinkPlayers[GetMultiplayerId() ^ 1].gender;
}
- sub_8031AF4(gender, gActiveBank);
+ LoadPlayerTrainerBankSprite(gender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -1508,7 +1508,7 @@ void sub_812071C(u8 taskId)
sub_811F864(gActiveBank, 0);
gActiveBank ^= 2;
gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
sub_811F864(gActiveBank, 0);
gActiveBank ^= 2;
}
diff --git a/src/battle_anim_8137220.c b/src/battle_anim_8137220.c
index bb181d5fb..8d323736a 100644
--- a/src/battle_anim_8137220.c
+++ b/src/battle_anim_8137220.c
@@ -73,7 +73,7 @@ extern void sub_8043DFC();
extern bool8 IsDoubleBattle(void);
extern void c3_0802FDF4(u8);
extern void sub_802ECF0(void);
-extern void sub_8031AF4();
+extern void LoadPlayerTrainerBankSprite();
extern u8 GetBankIdentity(u8);
extern void sub_80313A0(struct Sprite *);
extern u8 GetBankByPlayerAI(u8);
@@ -981,7 +981,7 @@ void sub_8138CB4(void)
void sub_8138D38(void)
{
- sub_8031AF4(2, gActiveBank);
+ LoadPlayerTrainerBankSprite(2, gActiveBank);
GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -996,7 +996,7 @@ void sub_8138D38(void)
void sub_8138E04(void)
{
- sub_8031AF4(2, gActiveBank);
+ LoadPlayerTrainerBankSprite(2, gActiveBank);
GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
new file mode 100644
index 000000000..6643ba4b2
--- /dev/null
+++ b/src/reshow_battle_screen.c
@@ -0,0 +1,262 @@
+#include "global.h"
+#include "battle.h"
+#include "palette.h"
+#include "main.h"
+#include "unknown_task.h"
+#include "text.h"
+#include "rom_8077ABC.h"
+
+extern struct Window gUnknown_03004210;
+extern u16 gUnknown_03004280;
+extern u16 gUnknown_03004288;
+extern u16 gUnknown_030042A4;
+extern u16 gUnknown_030042C0;
+extern u16 gUnknown_030041B0;
+extern u16 gUnknown_030041B4;
+extern u16 gUnknown_030041B8;
+extern u16 gUnknown_030042A0;
+extern u8 gReservedSpritePaletteCount;
+extern u8 gActionSelectionCursor[4];
+extern u8 gBankInMenu;
+extern u16 gBattlePartyID[4];
+extern u8 gNoOfAllBanks;
+extern u16 gBattleTypeFlags;
+extern u8 gObjectBankIDs[4];
+
+bool8 sub_800E414(u8 a0);
+bool8 sub_8031C30(u8 a0);
+void sub_8031EE8(void);
+void sub_80327CC(void);
+void sub_8032984(u8 a, u16 b);
+void sub_800FCD4(void);
+void BattleLoadOpponentMonSprite(struct Pokemon *, u8 bank);
+void BattleLoadPlayerMonSprite(struct Pokemon *, u8 bank);
+void BattleLoadSubstituteSprite(u8 bank, u8 b);
+void LoadPlayerTrainerBankSprite(u16 a0, u8 bank);
+u8 sub_8077F7C(u8 bank);
+u8 sub_8077F68(u8 bank);
+
+// this file's functions
+static void CB2_ReshowBattleScreenAfterMenu(void);
+static bool8 LoadAppropiateBankSprite(u8 bank);
+void sub_807B184(u8 bank);
+void sub_807B508(u8 bank);
+void sub_807B06C(void);
+
+#define RESHOW_STATE 0x1FFFF
+#define HELPER_STATE 0x1FFFE
+
+struct BGCNT
+{
+ u16 priority : 2;
+ u16 charBaseBlock : 2;
+ u16 reserved : 2;
+ u16 mosaic : 1;
+ u16 colors : 1;
+ u16 screenBaseBlock : 5;
+ u16 screenSize : 2;
+};
+
+void nullsub_14(void)
+{
+
+}
+
+void ReshowBattleScreenAfterMenu(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ SetHBlankCallback(0);
+ SetVBlankCallback(0);
+ REG_MOSAIC = 0;
+ ewram[RESHOW_STATE] = 0;
+ ewram[HELPER_STATE] = 0;
+ SetMainCallback2(CB2_ReshowBattleScreenAfterMenu);
+}
+
+static void CB2_ReshowBattleScreenAfterMenu(void)
+{
+ switch (ewram[RESHOW_STATE])
+ {
+ case 0:
+ dp12_8087EA4();
+ SetUpWindowConfig(&gWindowConfig_81E6C58);
+ ResetPaletteFade();
+ InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ gUnknown_030042C0 = 0;
+ gUnknown_030041B4 = 0;
+ gUnknown_03004288 = 0;
+ gUnknown_03004280 = 0;
+ gUnknown_030041B0 = 0;
+ gUnknown_030041B8 = 0;
+ break;
+ case 1:
+ {
+ const u32 zero = 0;
+ CpuFastSet(&zero, (void*) VRAM, 0x1006000);
+ }
+ break;
+ case 2:
+ if (!sub_800E414(ewram[HELPER_STATE]))
+ {
+ ewram[HELPER_STATE]++;
+ ewram[RESHOW_STATE]--;
+ }
+ else
+ ewram[HELPER_STATE] = 0;
+ break;
+ case 3:
+ ResetSpriteData();
+ break;
+ case 4:
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ break;
+ case 5:
+ sub_8031EE8();
+ break;
+ case 6:
+ if (sub_8031C30(ewram[HELPER_STATE]))
+ ewram[HELPER_STATE] = 0;
+ else
+ {
+ ewram[HELPER_STATE]++;
+ ewram[RESHOW_STATE]--;
+ }
+ break;
+ case 7:
+ if (!LoadAppropiateBankSprite(0))
+ ewram[RESHOW_STATE]--;
+ break;
+ case 8:
+ if (!LoadAppropiateBankSprite(1))
+ ewram[RESHOW_STATE]--;
+ break;
+ case 9:
+ if (!LoadAppropiateBankSprite(2))
+ ewram[RESHOW_STATE]--;
+ break;
+ case 10:
+ if (!LoadAppropiateBankSprite(3))
+ ewram[RESHOW_STATE]--;
+ break;
+ case 11:
+ sub_807B184(0);
+ break;
+ case 12:
+ sub_807B184(1);
+ break;
+ case 13:
+ sub_807B184(2);
+ break;
+ case 14:
+ sub_807B184(3);
+ break;
+ case 15:
+ sub_807B508(0);
+ break;
+ case 16:
+ sub_807B508(1);
+ break;
+ case 17:
+ sub_807B508(2);
+ break;
+ case 18:
+ sub_807B508(3);
+ break;
+ case 19:
+ {
+ u8 opponentBank;
+ u16 species;
+
+ sub_80327CC();
+
+ opponentBank = GetBankByPlayerAI(1);
+ species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES);
+ sub_8032984(opponentBank, species);
+
+ if (IsDoubleBattle())
+ {
+ opponentBank = GetBankByPlayerAI(3);
+ species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES);
+ sub_8032984(opponentBank, species);
+ }
+ sub_802E3E4(gActionSelectionCursor[gBankInMenu], 0);
+ }
+ break;
+ default:
+ SetHBlankCallback(sub_800FCD4);
+ SetVBlankCallback(sub_800FCFC);
+ sub_807B06C();
+ BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1);
+ gPaletteFade.bufferTransferDisabled = 0;
+ SetMainCallback2(sub_800F808);
+ break;
+ }
+ ewram[RESHOW_STATE]++;
+}
+
+void sub_807B06C(void)
+{
+ struct BGCNT *regBgcnt1, *regBgcnt2;
+
+ sub_800D6D4();
+
+ regBgcnt1 = (void*)(&REG_BG1CNT);
+ regBgcnt1->charBaseBlock = 0;
+
+ regBgcnt2 = (void*)(&REG_BG2CNT);
+ regBgcnt2->charBaseBlock = 0;
+}
+
+static bool8 LoadAppropiateBankSprite(u8 bank)
+{
+ if (bank < gNoOfAllBanks)
+ {
+ if (GetBankSide(bank))
+ {
+ if (!ewram17800[bank].substituteSprite)
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[bank]], bank);
+ else
+ BattleLoadSubstituteSprite(bank, 0);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, 0);
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ LoadPlayerTrainerBankSprite(2, 0);
+ else if (!ewram17800[bank].substituteSprite)
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[bank]], bank);
+ else
+ BattleLoadSubstituteSprite(bank, 0);
+
+ ewram[HELPER_STATE] = 0;
+ }
+ return 1;
+}
+
+void sub_807B184(u8 bank)
+{
+ if (bank < gNoOfAllBanks)
+ {
+ u16 species;
+ s16 posX, posY;
+ u8 subpriority;
+
+ if (ewram17800[bank].substituteSprite)
+ posY = sub_8077F7C();
+ else
+ posY = sub_8077F68();
+ if (GetBankSide(bank))
+ {
+ if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP))
+ {
+ species = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank));
+ posX = sub_8077ABC(bank);
+ subpriority = sub_8079E90(bank);
+ gObjectBankIDs[] = todo;
+ }
+ }
+ }
+}