Refactor Trainer sprites (#3597)

* Added TrainerSprite struct with coordinates

* Added .frontPic to struct

* Added .palette to TrainerSprite struct

* Added .animation to the struct

* Added define for sprite size

* Condensed animations since they were all the same

* Improved TRAINER_SPRITE/PAL defines

* Simplified seemingly unused .y_offset and TRAINER_PIC_SIZE values

* Condensed TRAINER_SPRITE and TRAINER_PAL into TRAINER_PIC

* Renamed .size to .y_offset since that what it appears to actually be

* Moved y_offset into TRAINER_PIC

* Moved animation inside of TRAINER_PIC

* Added array number to preproc

* Removed trailing spaces

* Added sprite/palette files to preproc

* Revert adding sprites to preproc as it fails agbcc

This reverts commit dce57f8d1bfab70b4c6630a9c4e5b43495891459.

* Added backsprite struct

* Added animations to backsprite struct

* Changed TRAINER_PIC to TRAINER_SPRITE

* Added animation to backsprite preproc

* Added .backPic to struct

* Moved array number into backsprite preproc

* Removed definitions for trainer sprites

* Hardcoded sAnims_Trainer into struct since every sprite uses it

* Fixed TRAINER_SPRITE arguments
This commit is contained in:
Frank DeBlasio 2023-12-20 17:14:33 -05:00 committed by GitHub
parent 5718d99f40
commit 5cdee87489
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 307 additions and 1297 deletions

View File

@ -28,6 +28,22 @@ struct MonCoords
u8 y_offset;
};
struct TrainerSprite
{
u8 y_offset;
struct CompressedSpriteSheet frontPic;
struct CompressedSpritePalette palette;
const union AnimCmd *const *const animation;
};
struct TrainerBacksprite
{
struct MonCoords coordinates;
struct CompressedSpriteSheet backPic;
struct CompressedSpritePalette palette;
const union AnimCmd *const *const animation;
};
#define MON_COORDS_SIZE(width, height)(DIV_ROUND_UP(width, 8) << 4 | DIV_ROUND_UP(height, 8))
#define GET_MON_COORDS_WIDTH(size)((size >> 4) * 8)
#define GET_MON_COORDS_HEIGHT(size)((size & 0xF) * 8)
@ -91,15 +107,10 @@ extern const union AffineAnimCmd *const gAffineAnims_BattleSpriteOpponentSide[];
extern const union AffineAnimCmd *const gAffineAnims_BattleSpriteContest[];
extern const union AnimCmd sAnim_GeneralFrame0[];
extern const union AnimCmd sAnim_GeneralFrame3[];
extern const union AnimCmd *const gAnims_MonPic[];
extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[];
extern const struct MonCoords gTrainerFrontPicCoords[];
extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[];
extern const struct MonCoords gTrainerBackPicCoords[];
extern const struct CompressedSpriteSheet gTrainerBackPicTable[]; // functionally unused
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
extern const struct TrainerSprite gTrainerSprites[];
extern const struct TrainerBacksprite gTrainerBacksprites[];
extern const struct Trainer gTrainers[];
extern const struct Trainer gBattlePartners[];

View File

@ -65,207 +65,6 @@ extern const u32 gOpenPokeballGfx[];
// pokemon gfx
extern const u16 gMonIconPalettes[][16];
// trainer sprites
extern const u32 gTrainerFrontPic_Hiker[];
extern const u32 gTrainerFrontPic_AquaGruntM[];
extern const u32 gTrainerFrontPic_PokemonBreederF[];
extern const u32 gTrainerFrontPic_CoolTrainerM[];
extern const u32 gTrainerFrontPic_BirdKeeper[];
extern const u32 gTrainerFrontPic_Collector[];
extern const u32 gTrainerFrontPic_AquaGruntF[];
extern const u32 gTrainerFrontPic_SwimmerM[];
extern const u32 gTrainerFrontPic_MagmaGruntM[];
extern const u32 gTrainerFrontPic_ExpertM[];
extern const u32 gTrainerFrontPic_AquaAdminM[];
extern const u32 gTrainerFrontPic_BlackBelt[];
extern const u32 gTrainerFrontPic_AquaAdminF[];
extern const u32 gTrainerFrontPic_AquaLeaderArchie[];
extern const u32 gTrainerFrontPic_HexManiac[];
extern const u32 gTrainerFrontPic_AromaLady[];
extern const u32 gTrainerFrontPic_RuinManiac[];
extern const u32 gTrainerFrontPic_Interviewer[];
extern const u32 gTrainerFrontPic_TuberF[];
extern const u32 gTrainerFrontPic_TuberM[];
extern const u32 gTrainerFrontPic_CoolTrainerF[];
extern const u32 gTrainerFrontPic_Lady[];
extern const u32 gTrainerFrontPic_Beauty[];
extern const u32 gTrainerFrontPic_RichBoy[];
extern const u32 gTrainerFrontPic_ExpertF[];
extern const u32 gTrainerFrontPic_Pokemaniac[];
extern const u32 gTrainerFrontPic_MagmaGruntF[];
extern const u32 gTrainerFrontPic_Guitarist[];
extern const u32 gTrainerFrontPic_Kindler[];
extern const u32 gTrainerFrontPic_Camper[];
extern const u32 gTrainerFrontPic_Picnicker[];
extern const u32 gTrainerFrontPic_BugManiac[];
extern const u32 gTrainerFrontPic_PokemonBreederM[];
extern const u32 gTrainerFrontPic_PsychicM[];
extern const u32 gTrainerFrontPic_PsychicF[];
extern const u32 gTrainerFrontPic_Gentleman[];
extern const u32 gTrainerFrontPic_EliteFourSidney[];
extern const u32 gTrainerFrontPic_EliteFourPhoebe[];
extern const u32 gTrainerFrontPic_EliteFourGlacia[];
extern const u32 gTrainerFrontPic_EliteFourDrake[];
extern const u32 gTrainerFrontPic_LeaderRoxanne[];
extern const u32 gTrainerFrontPic_LeaderBrawly[];
extern const u32 gTrainerFrontPic_LeaderWattson[];
extern const u32 gTrainerFrontPic_LeaderFlannery[];
extern const u32 gTrainerFrontPic_LeaderNorman[];
extern const u32 gTrainerFrontPic_LeaderWinona[];
extern const u32 gTrainerFrontPic_LeaderTateAndLiza[];
extern const u32 gTrainerFrontPic_LeaderJuan[];
extern const u32 gTrainerFrontPic_SchoolKidM[];
extern const u32 gTrainerFrontPic_SchoolKidF[];
extern const u32 gTrainerFrontPic_SrAndJr[];
extern const u32 gTrainerFrontPic_PokefanM[];
extern const u32 gTrainerFrontPic_PokefanF[];
extern const u32 gTrainerFrontPic_Youngster[];
extern const u32 gTrainerFrontPic_ChampionWallace[];
extern const u32 gTrainerFrontPic_Fisherman[];
extern const u32 gTrainerFrontPic_CyclingTriathleteM[];
extern const u32 gTrainerFrontPic_CyclingTriathleteF[];
extern const u32 gTrainerFrontPic_RunningTriathleteM[];
extern const u32 gTrainerFrontPic_RunningTriathleteF[];
extern const u32 gTrainerFrontPic_SwimmingTriathleteM[];
extern const u32 gTrainerFrontPic_SwimmingTriathleteF[];
extern const u32 gTrainerFrontPic_DragonTamer[];
extern const u32 gTrainerFrontPic_NinjaBoy[];
extern const u32 gTrainerFrontPic_BattleGirl[];
extern const u32 gTrainerFrontPic_ParasolLady[];
extern const u32 gTrainerFrontPic_SwimmerF[];
extern const u32 gTrainerFrontPic_Twins[];
extern const u32 gTrainerFrontPic_Sailor[];
extern const u32 gTrainerFrontPic_MagmaAdmin[];
extern const u32 gTrainerFrontPic_Wally[];
extern const u32 gTrainerFrontPic_Brendan[];
extern const u32 gTrainerFrontPic_May[];
extern const u32 gTrainerFrontPic_BugCatcher[];
extern const u32 gTrainerFrontPic_PokemonRangerM[];
extern const u32 gTrainerFrontPic_PokemonRangerF[];
extern const u32 gTrainerFrontPic_MagmaLeaderMaxie[];
extern const u32 gTrainerFrontPic_Lass[];
extern const u32 gTrainerFrontPic_YoungCouple[];
extern const u32 gTrainerFrontPic_OldCouple[];
extern const u32 gTrainerFrontPic_SisAndBro[];
extern const u32 gTrainerFrontPic_Steven[];
extern const u32 gTrainerFrontPic_SalonMaidenAnabel[];
extern const u32 gTrainerFrontPic_DomeAceTucker[];
extern const u32 gTrainerFrontPic_PalaceMavenSpenser[];
extern const u32 gTrainerFrontPic_ArenaTycoonGreta[];
extern const u32 gTrainerFrontPic_FactoryHeadNoland[];
extern const u32 gTrainerFrontPic_PikeQueenLucy[];
extern const u32 gTrainerFrontPic_PyramidKingBrandon[];
extern const u32 gTrainerFrontPic_Red[];
extern const u32 gTrainerFrontPic_Leaf[];
extern const u32 gTrainerFrontPic_RubySapphireBrendan[];
extern const u32 gTrainerFrontPic_RubySapphireMay[];
extern const u32 gTrainerPalette_Hiker[];
extern const u32 gTrainerPalette_AquaGruntM[];
extern const u32 gTrainerPalette_PokemonBreederF[];
extern const u32 gTrainerPalette_CoolTrainerM[];
extern const u32 gTrainerPalette_BirdKeeper[];
extern const u32 gTrainerPalette_Collector[];
extern const u32 gTrainerPalette_AquaGruntF[];
extern const u32 gTrainerPalette_SwimmerM[];
extern const u32 gTrainerPalette_MagmaGruntM[];
extern const u32 gTrainerPalette_ExpertM[];
extern const u32 gTrainerPalette_AquaAdminM[];
extern const u32 gTrainerPalette_BlackBelt[];
extern const u32 gTrainerPalette_AquaAdminF[];
extern const u32 gTrainerPalette_AquaLeaderArchie[];
extern const u32 gTrainerPalette_HexManiac[];
extern const u32 gTrainerPalette_AromaLady[];
extern const u32 gTrainerPalette_RuinManiac[];
extern const u32 gTrainerPalette_Interviewer[];
extern const u32 gTrainerPalette_TuberF[];
extern const u32 gTrainerPalette_TuberM[];
extern const u32 gTrainerPalette_CoolTrainerF[];
extern const u32 gTrainerPalette_Lady[];
extern const u32 gTrainerPalette_Beauty[];
extern const u32 gTrainerPalette_RichBoy[];
extern const u32 gTrainerPalette_ExpertF[];
extern const u32 gTrainerPalette_Pokemaniac[];
extern const u32 gTrainerPalette_MagmaGruntF[];
extern const u32 gTrainerPalette_Guitarist[];
extern const u32 gTrainerPalette_Kindler[];
extern const u32 gTrainerPalette_Camper[];
extern const u32 gTrainerPalette_Picnicker[];
extern const u32 gTrainerPalette_BugManiac[];
extern const u32 gTrainerPalette_PokemonBreederM[];
extern const u32 gTrainerPalette_PsychicM[];
extern const u32 gTrainerPalette_PsychicF[];
extern const u32 gTrainerPalette_Gentleman[];
extern const u32 gTrainerPalette_EliteFourSidney[];
extern const u32 gTrainerPalette_EliteFourPhoebe[];
extern const u32 gTrainerPalette_EliteFourGlacia[];
extern const u32 gTrainerPalette_EliteFourDrake[];
extern const u32 gTrainerPalette_LeaderRoxanne[];
extern const u32 gTrainerPalette_LeaderBrawly[];
extern const u32 gTrainerPalette_LeaderWattson[];
extern const u32 gTrainerPalette_LeaderFlannery[];
extern const u32 gTrainerPalette_LeaderNorman[];
extern const u32 gTrainerPalette_LeaderWinona[];
extern const u32 gTrainerPalette_LeaderTateAndLiza[];
extern const u32 gTrainerPalette_LeaderJuan[];
extern const u32 gTrainerPalette_SchoolKidM[];
extern const u32 gTrainerPalette_SchoolKidF[];
extern const u32 gTrainerPalette_SrAndJr[];
extern const u32 gTrainerPalette_PokefanM[];
extern const u32 gTrainerPalette_PokefanF[];
extern const u32 gTrainerPalette_Youngster[];
extern const u32 gTrainerPalette_ChampionWallace[];
extern const u32 gTrainerPalette_Fisherman[];
extern const u32 gTrainerPalette_CyclingTriathleteM[];
extern const u32 gTrainerPalette_CyclingTriathleteF[];
extern const u32 gTrainerPalette_RunningTriathleteM[];
extern const u32 gTrainerPalette_RunningTriathleteF[];
extern const u32 gTrainerPalette_SwimmingTriathleteM[];
extern const u32 gTrainerPalette_SwimmingTriathleteF[];
extern const u32 gTrainerPalette_DragonTamer[];
extern const u32 gTrainerPalette_NinjaBoy[];
extern const u32 gTrainerPalette_BattleGirl[];
extern const u32 gTrainerPalette_ParasolLady[];
extern const u32 gTrainerPalette_SwimmerF[];
extern const u32 gTrainerPalette_Twins[];
extern const u32 gTrainerPalette_Sailor[];
extern const u32 gTrainerPalette_MagmaAdmin[];
extern const u32 gTrainerPalette_Wally[];
extern const u32 gTrainerPalette_Brendan[];
extern const u32 gTrainerPalette_May[];
extern const u32 gTrainerPalette_BugCatcher[];
extern const u32 gTrainerPalette_PokemonRangerM[];
extern const u32 gTrainerPalette_PokemonRangerF[];
extern const u32 gTrainerPalette_MagmaLeaderMaxie[];
extern const u32 gTrainerPalette_Lass[];
extern const u32 gTrainerPalette_YoungCouple[];
extern const u32 gTrainerPalette_OldCouple[];
extern const u32 gTrainerPalette_SisAndBro[];
extern const u32 gTrainerPalette_Steven[];
extern const u32 gTrainerPalette_SalonMaidenAnabel[];
extern const u32 gTrainerPalette_DomeAceTucker[];
extern const u32 gTrainerPalette_PalaceMavenSpenser[];
extern const u32 gTrainerPalette_ArenaTycoonGreta[];
extern const u32 gTrainerPalette_FactoryHeadNoland[];
extern const u32 gTrainerPalette_PikeQueenLucy[];
extern const u32 gTrainerPalette_PyramidKingBrandon[];
extern const u32 gTrainerPalette_Red[];
extern const u32 gTrainerPalette_Leaf[];
extern const u32 gTrainerPalette_RubySapphireBrendan[];
extern const u32 gTrainerPalette_RubySapphireMay[];
extern const u8 gTrainerBackPic_Brendan[];
extern const u8 gTrainerBackPic_May[];
extern const u8 gTrainerBackPic_Red[];
extern const u8 gTrainerBackPic_Leaf[];
extern const u8 gTrainerBackPic_RubySapphireBrendan[];
extern const u8 gTrainerBackPic_RubySapphireMay[];
extern const u8 gTrainerBackPic_Wally[];
extern const u8 gTrainerBackPic_Steven[];
extern const u32 gTrainerBackPicPalette_Red[];
extern const u32 gTrainerBackPicPalette_Leaf[];
// pokeblock
extern const u32 gMenuPokeblock_Gfx[];
extern const u32 gMenuPokeblock_Pal[];

View File

@ -462,7 +462,7 @@ static void LinkOpponentHandleDrawTrainerPic(u32 battler)
}
BtlController_HandleDrawTrainerPic(battler, trainerPicId, TRUE,
xPos, 40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicId].size),
xPos, 40 + 4 * (8 - gTrainerSprites[trainerPicId].y_offset),
-1);
}

View File

@ -234,7 +234,7 @@ static void LinkPartnerHandleDrawTrainerPic(u32 battler)
trainerPicId = LinkPlayerGetTrainerPicId(GetBattlerMultiplayerId(battler));
BtlController_HandleDrawTrainerPic(battler, trainerPicId, FALSE,
xPos, 80 + 4 * (8 - gTrainerBackPicCoords[trainerPicId].size),
xPos, 80 + 4 * (8 - gTrainerBacksprites[trainerPicId].coordinates.size),
-1);
}
@ -261,7 +261,7 @@ static void LinkPartnerHandleHealthBarUpdate(u32 battler)
static void LinkPartnerHandleIntroTrainerBallThrow(u32 battler)
{
u32 trainerPicId = LinkPlayerGetTrainerPicId(GetBattlerMultiplayerId(battler));
const u32 *trainerPal = gTrainerBackPicPaletteTable[trainerPicId].data;
const u32 *trainerPal = gTrainerBacksprites[trainerPicId].palette.data;
// Link partner uses the same intro sequence as the player partner.
BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F9, trainerPal, 24, Controller_PlayerPartnerShowIntroHealthbox);
}

View File

@ -485,7 +485,7 @@ static void OpponentHandleDrawTrainerPic(u32 battler)
}
BtlController_HandleDrawTrainerPic(battler, trainerPicId, TRUE,
xPos, 40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicId].size),
xPos, 40 + 4 * (8 - gTrainerSprites[trainerPicId].y_offset),
-1);
}

View File

@ -1879,18 +1879,18 @@ static void PlayerHandleDrawTrainerPic(u32 battler)
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId < TRAINER_PARTNER(PARTNER_NONE))
{
xPos = 90;
yPos = (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 80;
yPos = (8 - gTrainerSprites[trainerPicId].y_offset) * 4 + 80;
}
else
{
yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80;
yPos = (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80;
}
}
else
{
xPos = 80;
yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80;
yPos = (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80;
}
// Use front pic table for any tag battles unless your partner is Steven or a custom partner.
@ -2233,7 +2233,7 @@ static void PlayerHandleOneReturnValue_Duplicate(u32 battler)
static void PlayerHandleIntroTrainerBallThrow(u32 battler)
{
const u32 *trainerPal = gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data;
const u32 *trainerPal = gTrainerBacksprites[gSaveBlock2Ptr->playerGender].palette.data;
BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F8, trainerPal, 31, Intro_TryShinyAnimShowHealthbox);
}

View File

@ -301,19 +301,19 @@ static void PlayerPartnerHandleDrawTrainerPic(u32 battler)
{
trainerPicId = gBattlePartners[gPartnerTrainerId - TRAINER_PARTNER(PARTNER_NONE)].trainerPic;
xPos = 90;
yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80;
yPos = (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80;
}
else if (IsAiVsAiBattle())
{
trainerPicId = gTrainers[gPartnerTrainerId].trainerPic;
xPos = 60;
yPos = (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 80;
yPos = (8 - gTrainerSprites[trainerPicId].y_offset) * 4 + 80;
}
else
{
trainerPicId = GetFrontierTrainerFrontSpriteId(gPartnerTrainerId);
xPos = 32;
yPos = (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 80;
yPos = (8 - gTrainerSprites[trainerPicId].y_offset) * 4 + 80;
}
// Use back pic only if the partner Steven or is custom.
@ -435,11 +435,11 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(u32 battler)
const u32 *trainerPal;
if (gPartnerTrainerId > TRAINER_PARTNER(PARTNER_NONE))
trainerPal = gTrainerBackPicPaletteTable[gPartnerSpriteId].data;
trainerPal = gTrainerBacksprites[gPartnerSpriteId].palette.data;
else if (IsAiVsAiBattle())
trainerPal = gTrainerFrontPicPaletteTable[gTrainers[gPartnerTrainerId].trainerPic].data;
trainerPal = gTrainerSprites[gTrainers[gPartnerTrainerId].trainerPic].palette.data;
else
trainerPal = gTrainerFrontPicPaletteTable[GetFrontierTrainerFrontSpriteId(gPartnerTrainerId)].data; // 2 vs 2 multi battle in Battle Frontier, load front sprite and pal.
trainerPal = gTrainerSprites[GetFrontierTrainerFrontSpriteId(gPartnerTrainerId)].palette.data; // 2 vs 2 multi battle in Battle Frontier, load front sprite and pal.
BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F9, trainerPal, 24, Controller_PlayerPartnerShowIntroHealthbox);
}

View File

@ -421,7 +421,7 @@ static void RecordedOpponentHandleDrawTrainerPic(u32 battler)
}
BtlController_HandleDrawTrainerPic(battler, trainerPicId, TRUE,
xPos, 40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicId].size),
xPos, 40 + 4 * (8 - gTrainerSprites[trainerPicId].y_offset),
-1);
}

View File

@ -393,18 +393,18 @@ static void RecordedPlayerHandleDrawTrainerPic(u32 battler)
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
xPos = 90;
yPos = (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 80;
yPos = (8 - gTrainerSprites[trainerPicId].y_offset) * 4 + 80;
}
else
{
yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80;
yPos = (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80;
}
}
else
{
xPos = 80;
yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80;
yPos = (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80;
}
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
@ -517,7 +517,7 @@ static void RecordedPlayerHandleIntroTrainerBallThrow(u32 battler)
else
trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_BACK_PIC_BRENDAN;
trainerPal = gTrainerFrontPicPaletteTable[trainerPicId].data;
trainerPal = gTrainerSprites[trainerPicId].palette.data;
BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F9, trainerPal, 24, Intro_TryShinyAnimShowHealthbox);
}

View File

@ -249,7 +249,7 @@ static void SafariHandleDrawTrainerPic(u32 battler)
u32 trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_BACK_PIC_BRENDAN;
BtlController_HandleDrawTrainerPic(battler, trainerPicId, FALSE,
80, 80 + 4 * (8 - gTrainerBackPicCoords[trainerPicId].size),
80, 80 + 4 * (8 - gTrainerBacksprites[trainerPicId].coordinates.size),
30);
}

View File

@ -297,7 +297,7 @@ static void WallyBufferExecCompleted(u32 battler)
static void WallyHandleDrawTrainerPic(u32 battler)
{
BtlController_HandleDrawTrainerPic(battler, TRAINER_BACK_PIC_WALLY, FALSE,
80, 80 + 4 * (8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].size),
80, 80 + 4 * (8 - gTrainerBacksprites[TRAINER_BACK_PIC_WALLY].coordinates.size),
30);
}
@ -420,7 +420,7 @@ static void WallyHandleFaintingCry(u32 battler)
static void WallyHandleIntroTrainerBallThrow(u32 battler)
{
const u32 *trainerPal = gTrainerBackPicPaletteTable[TRAINER_BACK_PIC_WALLY].data;
const u32 *trainerPal = gTrainerBacksprites[TRAINER_BACK_PIC_WALLY].palette.data;
BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F8, trainerPal, 31, Intro_TryShinyAnimShowHealthbox);
}

View File

@ -2480,7 +2480,7 @@ void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 is
yPos,
subpriority);
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag);
gSprites[gBattlerSpriteIds[battler]].x2 = -DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[battler]].sSpeedX = 2;
gSprites[gBattlerSpriteIds[battler]].oam.affineParam = trainerPicId;
@ -2498,7 +2498,7 @@ void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 is
yPos,
subpriority);
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag);
gSprites[gBattlerSpriteIds[battler]].oam.affineMode = ST_OAM_AFFINE_OFF;
gSprites[gBattlerSpriteIds[battler]].hFlip = 1;
gSprites[gBattlerSpriteIds[battler]].y2 = 48;
@ -2532,7 +2532,7 @@ void BtlController_HandleTrainerSlide(u32 battler, u32 trainerPicId)
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(battler));
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate,
80,
(8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80,
(8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80,
30);
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
gSprites[gBattlerSpriteIds[battler]].x2 = -96;
@ -2544,10 +2544,10 @@ void BtlController_HandleTrainerSlide(u32 battler, u32 trainerPicId)
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(battler));
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate,
176,
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
(8 - gTrainerSprites[trainerPicId].y_offset) * 4 + 40,
30);
gSprites[gBattlerSpriteIds[battler]].oam.affineParam = trainerPicId;
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag);
gSprites[gBattlerSpriteIds[battler]].x2 = 96;
gSprites[gBattlerSpriteIds[battler]].x += 32;
gSprites[gBattlerSpriteIds[battler]].sSpeedX = -2;

View File

@ -650,23 +650,23 @@ void BattleGfxSfxDummy2(u16 species)
void DecompressTrainerFrontPic(u16 frontPicId, u8 battler)
{
u8 position = GetBattlerPosition(battler);
DecompressPicFromTable(&gTrainerFrontPicTable[frontPicId],
DecompressPicFromTable(&gTrainerSprites[frontPicId].frontPic,
gMonSpritesGfxPtr->sprites.ptr[position]);
LoadCompressedSpritePalette(&gTrainerFrontPicPaletteTable[frontPicId]);
LoadCompressedSpritePalette(&gTrainerSprites[frontPicId].palette);
}
void DecompressTrainerBackPic(u16 backPicId, u8 battler)
{
u8 position = GetBattlerPosition(battler);
DecompressPicFromTable(&gTrainerBackPicTable[backPicId],
DecompressPicFromTable(&gTrainerBacksprites[backPicId].backPic,
gMonSpritesGfxPtr->sprites.ptr[position]);
LoadCompressedPalette(gTrainerBackPicPaletteTable[backPicId].data,
LoadCompressedPalette(gTrainerBacksprites[backPicId].palette.data,
OBJ_PLTT_ID(battler), PLTT_SIZE_4BPP);
}
void FreeTrainerFrontPicPalette(u16 frontPicId)
{
FreeSpritePaletteByTag(gTrainerFrontPicPaletteTable[frontPicId].tag);
FreeSpritePaletteByTag(gTrainerSprites[frontPicId].palette.tag);
}
// Unused.

View File

@ -47,79 +47,13 @@ const struct SpriteFrameImage gBattlerPicTable_OpponentRight[] =
{BATTLER_OFFSET(15), MON_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_Brendan[] =
{
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_May[] =
{
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_Red[] =
{
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_Leaf[] =
{
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireBrendan[] =
{
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireMay[] =
{
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_Wally[] =
{
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_Steven[] =
{
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const union AnimCmd sAnim_GeneralFrame0[] =
{
ANIMCMD_FRAME(0, 0),
ANIMCMD_END,
};
static const union AnimCmd sAnim_GeneralFrame3[] =
const union AnimCmd sAnim_GeneralFrame3[] =
{
ANIMCMD_FRAME(3, 0),
ANIMCMD_END,
@ -285,11 +219,6 @@ const union AnimCmd *const gAnims_MonPic[MAX_MON_PIC_FRAMES] =
sAnim_MonPic_1,
};
#include "data/trainer_graphics/front_pic_anims.h"
#include "data/trainer_graphics/front_pic_tables.h"
#include "data/trainer_graphics/back_pic_anims.h"
#include "data/trainer_graphics/back_pic_tables.h"
#include "data/trainer_parties.h"
#include "data/text/trainer_class_names.h"
#include "data/trainers.h"

View File

@ -1,3 +1,6 @@
#include "constants/trainers.h"
#include "data.h"
const u32 gTrainerFrontPic_Hiker[] = INCBIN_U32("graphics/trainers/front_pics/hiker.4bpp.lz");
const u32 gTrainerPalette_Hiker[] = INCBIN_U32("graphics/trainers/front_pics/hiker.gbapal.lz");
@ -288,3 +291,235 @@ const u8 gTrainerBackPic_Steven[] = INCBIN_U8("graphics/trainers/back_pics/steve
const u32 gTrainerBackPicPalette_Red[] = INCBIN_U32("graphics/trainers/back_pics/red.gbapal.lz");
const u32 gTrainerBackPicPalette_Leaf[] = INCBIN_U32("graphics/trainers/back_pics/leaf.gbapal.lz");
static const union AnimCmd *const sAnims_Trainer[] ={
sAnim_GeneralFrame0,
};
#define TRAINER_SPRITE(trainerPic, file) \
[TRAINER_PIC_##trainerPic] = \
{ \
.y_offset = 8, \
.frontPic = {gTrainerFrontPic_##file, TRAINER_PIC_SIZE, TRAINER_PIC_##trainerPic},\
.palette = {gTrainerPalette_##file, TRAINER_PIC_##trainerPic}, \
.animation = sAnims_Trainer, \
}
const struct TrainerSprite gTrainerSprites[] =
{
TRAINER_SPRITE(HIKER, Hiker),
TRAINER_SPRITE(AQUA_GRUNT_M, AquaGruntM),
TRAINER_SPRITE(POKEMON_BREEDER_F, PokemonBreederF),
TRAINER_SPRITE(COOLTRAINER_M, CoolTrainerM),
TRAINER_SPRITE(BIRD_KEEPER, BirdKeeper),
TRAINER_SPRITE(COLLECTOR, Collector),
TRAINER_SPRITE(AQUA_GRUNT_F, AquaGruntF),
TRAINER_SPRITE(SWIMMER_M, SwimmerM),
TRAINER_SPRITE(MAGMA_GRUNT_M, MagmaGruntM),
TRAINER_SPRITE(EXPERT_M, ExpertM),
TRAINER_SPRITE(AQUA_ADMIN_M, AquaAdminM),
TRAINER_SPRITE(BLACK_BELT, BlackBelt),
TRAINER_SPRITE(AQUA_ADMIN_F, AquaAdminF),
TRAINER_SPRITE(AQUA_LEADER_ARCHIE, AquaLeaderArchie),
TRAINER_SPRITE(HEX_MANIAC, HexManiac),
TRAINER_SPRITE(AROMA_LADY, AromaLady),
TRAINER_SPRITE(RUIN_MANIAC, RuinManiac),
TRAINER_SPRITE(INTERVIEWER, Interviewer),
TRAINER_SPRITE(TUBER_F, TuberF),
TRAINER_SPRITE(TUBER_M, TuberM),
TRAINER_SPRITE(COOLTRAINER_F, CoolTrainerF),
TRAINER_SPRITE(LADY, Lady),
TRAINER_SPRITE(BEAUTY, Beauty),
TRAINER_SPRITE(RICH_BOY, RichBoy),
TRAINER_SPRITE(EXPERT_F, ExpertF),
TRAINER_SPRITE(POKEMANIAC, Pokemaniac),
TRAINER_SPRITE(MAGMA_GRUNT_F, MagmaGruntF),
TRAINER_SPRITE(GUITARIST, Guitarist),
TRAINER_SPRITE(KINDLER, Kindler),
TRAINER_SPRITE(CAMPER, Camper),
TRAINER_SPRITE(PICNICKER, Picnicker),
TRAINER_SPRITE(BUG_MANIAC, BugManiac),
TRAINER_SPRITE(POKEMON_BREEDER_M, PokemonBreederM),
TRAINER_SPRITE(PSYCHIC_M, PsychicM),
TRAINER_SPRITE(PSYCHIC_F, PsychicF),
TRAINER_SPRITE(GENTLEMAN, Gentleman),
TRAINER_SPRITE(ELITE_FOUR_SIDNEY, EliteFourSidney),
TRAINER_SPRITE(ELITE_FOUR_PHOEBE, EliteFourPhoebe),
TRAINER_SPRITE(ELITE_FOUR_GLACIA, EliteFourGlacia),
TRAINER_SPRITE(ELITE_FOUR_DRAKE, EliteFourDrake),
TRAINER_SPRITE(LEADER_ROXANNE, LeaderRoxanne),
TRAINER_SPRITE(LEADER_BRAWLY, LeaderBrawly),
TRAINER_SPRITE(LEADER_WATTSON, LeaderWattson),
TRAINER_SPRITE(LEADER_FLANNERY, LeaderFlannery),
TRAINER_SPRITE(LEADER_NORMAN, LeaderNorman),
TRAINER_SPRITE(LEADER_WINONA, LeaderWinona),
TRAINER_SPRITE(LEADER_TATE_AND_LIZA, LeaderTateAndLiza),
TRAINER_SPRITE(LEADER_JUAN, LeaderJuan),
TRAINER_SPRITE(SCHOOL_KID_M, SchoolKidM),
TRAINER_SPRITE(SCHOOL_KID_F, SchoolKidF),
TRAINER_SPRITE(SR_AND_JR, SrAndJr),
TRAINER_SPRITE(POKEFAN_M, PokefanM),
TRAINER_SPRITE(POKEFAN_F, PokefanF),
TRAINER_SPRITE(YOUNGSTER, Youngster),
TRAINER_SPRITE(CHAMPION_WALLACE, ChampionWallace),
TRAINER_SPRITE(FISHERMAN, Fisherman),
TRAINER_SPRITE(CYCLING_TRIATHLETE_M, CyclingTriathleteM),
TRAINER_SPRITE(CYCLING_TRIATHLETE_F, CyclingTriathleteF),
TRAINER_SPRITE(RUNNING_TRIATHLETE_M, RunningTriathleteM),
TRAINER_SPRITE(RUNNING_TRIATHLETE_F, RunningTriathleteF),
TRAINER_SPRITE(SWIMMING_TRIATHLETE_M, SwimmingTriathleteM),
TRAINER_SPRITE(SWIMMING_TRIATHLETE_F, SwimmingTriathleteF),
TRAINER_SPRITE(DRAGON_TAMER, DragonTamer),
TRAINER_SPRITE(NINJA_BOY, NinjaBoy),
TRAINER_SPRITE(BATTLE_GIRL, BattleGirl),
TRAINER_SPRITE(PARASOL_LADY, ParasolLady),
TRAINER_SPRITE(SWIMMER_F, SwimmerF),
TRAINER_SPRITE(TWINS, Twins),
TRAINER_SPRITE(SAILOR, Sailor),
TRAINER_SPRITE(MAGMA_ADMIN, MagmaAdmin),
TRAINER_SPRITE(WALLY, Wally),
TRAINER_SPRITE(BRENDAN, Brendan),
TRAINER_SPRITE(MAY, May),
TRAINER_SPRITE(BUG_CATCHER, BugCatcher),
TRAINER_SPRITE(POKEMON_RANGER_M, PokemonRangerM),
TRAINER_SPRITE(POKEMON_RANGER_F, PokemonRangerF),
TRAINER_SPRITE(MAGMA_LEADER_MAXIE, MagmaLeaderMaxie),
TRAINER_SPRITE(LASS, Lass),
TRAINER_SPRITE(YOUNG_COUPLE, YoungCouple),
TRAINER_SPRITE(OLD_COUPLE, OldCouple),
TRAINER_SPRITE(SIS_AND_BRO, SisAndBro),
TRAINER_SPRITE(STEVEN, Steven),
TRAINER_SPRITE(SALON_MAIDEN_ANABEL, SalonMaidenAnabel),
TRAINER_SPRITE(DOME_ACE_TUCKER, DomeAceTucker),
TRAINER_SPRITE(PALACE_MAVEN_SPENSER, PalaceMavenSpenser),
TRAINER_SPRITE(ARENA_TYCOON_GRETA, ArenaTycoonGreta),
TRAINER_SPRITE(FACTORY_HEAD_NOLAND, FactoryHeadNoland),
TRAINER_SPRITE(PIKE_QUEEN_LUCY, PikeQueenLucy),
TRAINER_SPRITE(PYRAMID_KING_BRANDON, PyramidKingBrandon),
TRAINER_SPRITE(RED, Red),
TRAINER_SPRITE(LEAF, Leaf),
TRAINER_SPRITE(RS_BRENDAN, RubySapphireBrendan),
TRAINER_SPRITE(RS_MAY, RubySapphireMay),
};
static const union AnimCmd sAnimCmd_Hoenn[] =
{
ANIMCMD_FRAME(0, 24),
ANIMCMD_FRAME(1, 9),
ANIMCMD_FRAME(2, 24),
ANIMCMD_FRAME(0, 9),
ANIMCMD_FRAME(3, 50),
ANIMCMD_END,
};
static const union AnimCmd sAnimCmd_Kanto[] =
{
ANIMCMD_FRAME(1, 20),
ANIMCMD_FRAME(2, 6),
ANIMCMD_FRAME(3, 6),
ANIMCMD_FRAME(4, 24),
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
static const union AnimCmd *const sBackAnims_Hoenn[] =
{
sAnim_GeneralFrame3,
sAnimCmd_Hoenn,
};
static const union AnimCmd *const sBackAnims_Kanto[] =
{
sAnim_GeneralFrame0,
sAnimCmd_Kanto,
};
const struct SpriteFrameImage gTrainerBackPicTable_Brendan[] =
{
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_May[] =
{
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_Red[] =
{
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_Leaf[] =
{
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireBrendan[] =
{
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireMay[] =
{
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_Wally[] =
{
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_Steven[] =
{
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
// .backPic goes functionally unused, since none of these pics are compressed
// and the place they would get extracted to gets overwritten later anyway
// the casts are so they'll play nice with the strict struct definition
#define TRAINER_BACK_SPRITE(trainerPic, yOffset, sprite, pal, anim) \
[TRAINER_BACK_PIC_##trainerPic] = \
{ \
.coordinates = {.size = 8, .y_offset = yOffset}, \
.backPic = {(const u32 *)gTrainerBackPic_##sprite, TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_##sprite), TRAINER_BACK_PIC_##trainerPic}, \
.palette = {gTrainer##pal, TRAINER_BACK_PIC_##trainerPic}, \
.animation = sBackAnims_##anim, \
}
const struct TrainerBacksprite gTrainerBacksprites[] =
{
TRAINER_BACK_SPRITE(BRENDAN, 4, Brendan, Palette_Brendan, Hoenn),
TRAINER_BACK_SPRITE(MAY, 4, May, Palette_May, Hoenn),
TRAINER_BACK_SPRITE(RED, 5, Red, BackPicPalette_Red, Kanto),
TRAINER_BACK_SPRITE(LEAF, 5, Leaf, BackPicPalette_Leaf, Kanto),
TRAINER_BACK_SPRITE(RUBY_SAPPHIRE_BRENDAN, 4, RubySapphireBrendan, Palette_RubySapphireBrendan, Hoenn),
TRAINER_BACK_SPRITE(RUBY_SAPPHIRE_MAY, 4, RubySapphireMay, Palette_RubySapphireMay, Hoenn),
TRAINER_BACK_SPRITE(WALLY, 4, Wally, Palette_Wally, Hoenn),
TRAINER_BACK_SPRITE(STEVEN, 4, Steven, Palette_Steven, Hoenn),
};

View File

@ -1,129 +0,0 @@
static const union AnimCmd sAnimCmd_Brendan_1[] =
{
ANIMCMD_FRAME(0, 24),
ANIMCMD_FRAME(1, 9),
ANIMCMD_FRAME(2, 24),
ANIMCMD_FRAME(0, 9),
ANIMCMD_FRAME(3, 50),
ANIMCMD_END,
};
static const union AnimCmd sAnimCmd_May_Steven_1[] =
{
ANIMCMD_FRAME(0, 24),
ANIMCMD_FRAME(1, 9),
ANIMCMD_FRAME(2, 24),
ANIMCMD_FRAME(0, 9),
ANIMCMD_FRAME(3, 50),
ANIMCMD_END,
};
static const union AnimCmd sAnimCmd_Wally_1[] =
{
ANIMCMD_FRAME(0, 24),
ANIMCMD_FRAME(1, 9),
ANIMCMD_FRAME(2, 24),
ANIMCMD_FRAME(0, 9),
ANIMCMD_FRAME(3, 50),
ANIMCMD_END,
};
static const union AnimCmd sAnimCmd_Red_1[] =
{
ANIMCMD_FRAME(1, 20),
ANIMCMD_FRAME(2, 6),
ANIMCMD_FRAME(3, 6),
ANIMCMD_FRAME(4, 24),
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
static const union AnimCmd sAnimCmd_Leaf_1[] =
{
ANIMCMD_FRAME(1, 20),
ANIMCMD_FRAME(2, 6),
ANIMCMD_FRAME(3, 6),
ANIMCMD_FRAME(4, 24),
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
static const union AnimCmd sAnimCmd_RubySapphireBrendan_1[] =
{
ANIMCMD_FRAME(0, 24),
ANIMCMD_FRAME(1, 9),
ANIMCMD_FRAME(2, 24),
ANIMCMD_FRAME(0, 9),
ANIMCMD_FRAME(3, 50),
ANIMCMD_END,
};
static const union AnimCmd sAnimCmd_RubySapphireMay_1[] =
{
ANIMCMD_FRAME(0, 24),
ANIMCMD_FRAME(1, 9),
ANIMCMD_FRAME(2, 24),
ANIMCMD_FRAME(0, 9),
ANIMCMD_FRAME(3, 50),
ANIMCMD_END,
};
static const union AnimCmd *const sBackAnims_Brendan[] =
{
sAnim_GeneralFrame3,
sAnimCmd_Brendan_1,
};
static const union AnimCmd *const sBackAnims_May[] =
{
sAnim_GeneralFrame3,
sAnimCmd_May_Steven_1,
};
static const union AnimCmd *const sBackAnims_Red[] =
{
sAnim_GeneralFrame0,
sAnimCmd_Red_1,
};
static const union AnimCmd *const sBackAnims_Leaf[] =
{
sAnim_GeneralFrame0,
sAnimCmd_Leaf_1,
};
static const union AnimCmd *const sBackAnims_RubySapphireBrendan[] =
{
sAnim_GeneralFrame3,
sAnimCmd_RubySapphireBrendan_1,
};
static const union AnimCmd *const sBackAnims_RubySapphireMay[] =
{
sAnim_GeneralFrame3,
sAnimCmd_RubySapphireMay_1,
};
static const union AnimCmd *const sBackAnims_Wally[] =
{
sAnim_GeneralFrame3,
sAnimCmd_Wally_1,
};
static const union AnimCmd *const sBackAnims_Steven[] =
{
sAnim_GeneralFrame3,
sAnimCmd_May_Steven_1,
};
const union AnimCmd *const *const gTrainerBackAnimsPtrTable[] =
{
[TRAINER_BACK_PIC_BRENDAN] = sBackAnims_Brendan,
[TRAINER_BACK_PIC_MAY] = sBackAnims_May,
[TRAINER_BACK_PIC_RED] = sBackAnims_Red,
[TRAINER_BACK_PIC_LEAF] = sBackAnims_Leaf,
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = sBackAnims_RubySapphireBrendan,
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = sBackAnims_RubySapphireMay,
[TRAINER_BACK_PIC_WALLY] = sBackAnims_Wally,
[TRAINER_BACK_PIC_STEVEN] = sBackAnims_Steven,
};

View File

@ -1,72 +0,0 @@
const struct MonCoords gTrainerBackPicCoords[] =
{
[TRAINER_BACK_PIC_BRENDAN] = {.size = 8, .y_offset = 4},
[TRAINER_BACK_PIC_MAY] = {.size = 8, .y_offset = 4},
[TRAINER_BACK_PIC_RED] = {.size = 8, .y_offset = 5},
[TRAINER_BACK_PIC_LEAF] = {.size = 8, .y_offset = 5},
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = {.size = 8, .y_offset = 4},
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = {.size = 8, .y_offset = 4},
[TRAINER_BACK_PIC_WALLY] = {.size = 8, .y_offset = 4},
[TRAINER_BACK_PIC_STEVEN] = {.size = 8, .y_offset = 4},
};
// this table goes functionally unused, since none of these pics are compressed
// and the place they would get extracted to gets overwritten later anyway
// the casts are so they'll play nice with the strict struct definition
const struct CompressedSpriteSheet gTrainerBackPicTable[] =
{
[TRAINER_BACK_PIC_BRENDAN] = {
.data = (const u32 *)gTrainerBackPic_Brendan,
.size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Brendan),
.tag = TRAINER_BACK_PIC_BRENDAN,
},
[TRAINER_BACK_PIC_MAY] = {
.data = (const u32 *)gTrainerBackPic_May,
.size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_May),
.tag = TRAINER_BACK_PIC_MAY,
},
[TRAINER_BACK_PIC_RED] = {
.data = (const u32 *)gTrainerBackPic_Red,
.size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Red),
.tag = TRAINER_BACK_PIC_RED,
},
[TRAINER_BACK_PIC_LEAF] = {
.data = (const u32 *)gTrainerBackPic_Leaf,
.size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Leaf),
.tag = TRAINER_BACK_PIC_LEAF,
},
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = {
.data = (const u32 *)gTrainerBackPic_RubySapphireBrendan,
.size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_RubySapphireBrendan),
.tag = TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN,
},
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = {
.data = (const u32 *)gTrainerBackPic_RubySapphireMay,
.size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_RubySapphireMay),
.tag = TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY,
},
[TRAINER_BACK_PIC_WALLY] = {
.data = (const u32 *)gTrainerBackPic_Wally,
.size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Wally),
.tag = TRAINER_BACK_PIC_WALLY,
},
[TRAINER_BACK_PIC_STEVEN] = {
.data = (const u32 *)gTrainerBackPic_Steven,
.size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Steven),
.tag = TRAINER_BACK_PIC_STEVEN,
},
};
#define TRAINER_BACK_PAL(trainerPic, pal) [TRAINER_BACK_PIC_##trainerPic] = {pal, TRAINER_BACK_PIC_##trainerPic}
const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] =
{
TRAINER_BACK_PAL(BRENDAN, gTrainerPalette_Brendan),
TRAINER_BACK_PAL(MAY, gTrainerPalette_May),
TRAINER_BACK_PAL(RED, gTrainerBackPicPalette_Red),
TRAINER_BACK_PAL(LEAF, gTrainerBackPicPalette_Leaf),
TRAINER_BACK_PAL(RUBY_SAPPHIRE_BRENDAN, gTrainerPalette_RubySapphireBrendan),
TRAINER_BACK_PAL(RUBY_SAPPHIRE_MAY, gTrainerPalette_RubySapphireMay),
TRAINER_BACK_PAL(WALLY, gTrainerPalette_Wally),
TRAINER_BACK_PAL(STEVEN, gTrainerPalette_Steven),
};

View File

@ -1,468 +0,0 @@
static const union AnimCmd *const sAnims_Hiker[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_AquaGruntM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_PokemonBreederF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_CoolTrainerM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_BirdKeeper[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Collector[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_AquaGruntF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_SwimmerM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_MagmaGruntM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_ExpertM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_AquaAdminM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_BlackBelt[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_AquaAdminF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_AquaLeaderArchie[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_HexManiac[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_AromaLady[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_RuinManiac[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Interviewer[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_TuberF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_TuberM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_CoolTrainerF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Lady[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Beauty[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_RichBoy[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_ExpertF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Pokemaniac[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_MagmaGruntF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Guitarist[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Kindler[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Camper[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Picnicker[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_BugManiac[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_PokemonBreederM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_PsychicM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_PsychicF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Gentleman[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_EliteFourSidney[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_EliteFourPhoebe[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_EliteFourGlacia[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_EliteFourDrake[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_LeaderRoxanne[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_LeaderBrawly[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_LeaderWattson[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_LeaderFlannery[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_LeaderNorman[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_LeaderWinona[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_LeaderTateAndLiza[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_LeaderJuan[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_SchoolKidM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_SchoolKidF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_SrAndJr[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_PokefanM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_PokefanF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Youngster[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_ChampionWallace[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Fisherman[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_CyclingTriathleteM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_CyclingTriathleteF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_RunningTriathleteM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_RunningTriathleteF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_SwimmingTriathleteM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_SwimmingTriathleteF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_DragonTamer[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_NinjaBoy[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_BattleGirl[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_ParasolLady[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_SwimmerF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Twins[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Sailor[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_MagmaAdmin[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Wally[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Brendan[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_May[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_BugCatcher[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_PokemonRangerM[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_PokemonRangerF[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_MagmaLeaderMaxie[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Lass[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_YoungCouple[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_OldCouple[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_SisAndBro[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Steven[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_SalonMaidenAnabel[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_DomeAceTucker[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_PalaceMavenSpenser[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_ArenaTycoonGreta[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_FactoryHeadNoland[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_PikeQueenLucy[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_PyramidKingBrandon[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Red[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_Leaf[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_RubySapphireBrendan[] ={
sAnim_GeneralFrame0,
};
static const union AnimCmd *const sAnims_RubySapphireMay[] ={
sAnim_GeneralFrame0,
};
const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[] =
{
[TRAINER_PIC_HIKER] = sAnims_Hiker,
[TRAINER_PIC_AQUA_GRUNT_M] = sAnims_AquaGruntM,
[TRAINER_PIC_POKEMON_BREEDER_F] = sAnims_PokemonBreederF,
[TRAINER_PIC_COOLTRAINER_M] = sAnims_CoolTrainerM,
[TRAINER_PIC_BIRD_KEEPER] = sAnims_BirdKeeper,
[TRAINER_PIC_COLLECTOR] = sAnims_Collector,
[TRAINER_PIC_AQUA_GRUNT_F] = sAnims_AquaGruntF,
[TRAINER_PIC_SWIMMER_M] = sAnims_SwimmerM,
[TRAINER_PIC_MAGMA_GRUNT_M] = sAnims_MagmaGruntM,
[TRAINER_PIC_EXPERT_M] = sAnims_ExpertM,
[TRAINER_PIC_AQUA_ADMIN_M] = sAnims_AquaAdminM,
[TRAINER_PIC_BLACK_BELT] = sAnims_BlackBelt,
[TRAINER_PIC_AQUA_ADMIN_F] = sAnims_AquaAdminF,
[TRAINER_PIC_AQUA_LEADER_ARCHIE] = sAnims_AquaLeaderArchie,
[TRAINER_PIC_HEX_MANIAC] = sAnims_HexManiac,
[TRAINER_PIC_AROMA_LADY] = sAnims_AromaLady,
[TRAINER_PIC_RUIN_MANIAC] = sAnims_RuinManiac,
[TRAINER_PIC_INTERVIEWER] = sAnims_Interviewer,
[TRAINER_PIC_TUBER_F] = sAnims_TuberF,
[TRAINER_PIC_TUBER_M] = sAnims_TuberM,
[TRAINER_PIC_COOLTRAINER_F] = sAnims_CoolTrainerF,
[TRAINER_PIC_LADY] = sAnims_Lady,
[TRAINER_PIC_BEAUTY] = sAnims_Beauty,
[TRAINER_PIC_RICH_BOY] = sAnims_RichBoy,
[TRAINER_PIC_EXPERT_F] = sAnims_ExpertF,
[TRAINER_PIC_POKEMANIAC] = sAnims_Pokemaniac,
[TRAINER_PIC_MAGMA_GRUNT_F] = sAnims_MagmaGruntF,
[TRAINER_PIC_GUITARIST] = sAnims_Guitarist,
[TRAINER_PIC_KINDLER] = sAnims_Kindler,
[TRAINER_PIC_CAMPER] = sAnims_Camper,
[TRAINER_PIC_PICNICKER] = sAnims_Picnicker,
[TRAINER_PIC_BUG_MANIAC] = sAnims_BugManiac,
[TRAINER_PIC_POKEMON_BREEDER_M] = sAnims_PokemonBreederM,
[TRAINER_PIC_PSYCHIC_M] = sAnims_PsychicM,
[TRAINER_PIC_PSYCHIC_F] = sAnims_PsychicF,
[TRAINER_PIC_GENTLEMAN] = sAnims_Gentleman,
[TRAINER_PIC_ELITE_FOUR_SIDNEY] = sAnims_EliteFourSidney,
[TRAINER_PIC_ELITE_FOUR_PHOEBE] = sAnims_EliteFourPhoebe,
[TRAINER_PIC_ELITE_FOUR_GLACIA] = sAnims_EliteFourGlacia,
[TRAINER_PIC_ELITE_FOUR_DRAKE] = sAnims_EliteFourDrake,
[TRAINER_PIC_LEADER_ROXANNE] = sAnims_LeaderRoxanne,
[TRAINER_PIC_LEADER_BRAWLY] = sAnims_LeaderBrawly,
[TRAINER_PIC_LEADER_WATTSON] = sAnims_LeaderWattson,
[TRAINER_PIC_LEADER_FLANNERY] = sAnims_LeaderFlannery,
[TRAINER_PIC_LEADER_NORMAN] = sAnims_LeaderNorman,
[TRAINER_PIC_LEADER_WINONA] = sAnims_LeaderWinona,
[TRAINER_PIC_LEADER_TATE_AND_LIZA] = sAnims_LeaderTateAndLiza,
[TRAINER_PIC_LEADER_JUAN] = sAnims_LeaderJuan,
[TRAINER_PIC_SCHOOL_KID_M] = sAnims_SchoolKidM,
[TRAINER_PIC_SCHOOL_KID_F] = sAnims_SchoolKidF,
[TRAINER_PIC_SR_AND_JR] = sAnims_SrAndJr,
[TRAINER_PIC_POKEFAN_M] = sAnims_PokefanM,
[TRAINER_PIC_POKEFAN_F] = sAnims_PokefanF,
[TRAINER_PIC_YOUNGSTER] = sAnims_Youngster,
[TRAINER_PIC_CHAMPION_WALLACE] = sAnims_ChampionWallace,
[TRAINER_PIC_FISHERMAN] = sAnims_Fisherman,
[TRAINER_PIC_CYCLING_TRIATHLETE_M] = sAnims_CyclingTriathleteM,
[TRAINER_PIC_CYCLING_TRIATHLETE_F] = sAnims_CyclingTriathleteF,
[TRAINER_PIC_RUNNING_TRIATHLETE_M] = sAnims_RunningTriathleteM,
[TRAINER_PIC_RUNNING_TRIATHLETE_F] = sAnims_RunningTriathleteF,
[TRAINER_PIC_SWIMMING_TRIATHLETE_M] = sAnims_SwimmingTriathleteM,
[TRAINER_PIC_SWIMMING_TRIATHLETE_F] = sAnims_SwimmingTriathleteF,
[TRAINER_PIC_DRAGON_TAMER] = sAnims_DragonTamer,
[TRAINER_PIC_NINJA_BOY] = sAnims_NinjaBoy,
[TRAINER_PIC_BATTLE_GIRL] = sAnims_BattleGirl,
[TRAINER_PIC_PARASOL_LADY] = sAnims_ParasolLady,
[TRAINER_PIC_SWIMMER_F] = sAnims_SwimmerF,
[TRAINER_PIC_TWINS] = sAnims_Twins,
[TRAINER_PIC_SAILOR] = sAnims_Sailor,
[TRAINER_PIC_MAGMA_ADMIN] = sAnims_MagmaAdmin,
[TRAINER_PIC_WALLY] = sAnims_Wally,
[TRAINER_PIC_BRENDAN] = sAnims_Brendan,
[TRAINER_PIC_MAY] = sAnims_May,
[TRAINER_PIC_BUG_CATCHER] = sAnims_BugCatcher,
[TRAINER_PIC_POKEMON_RANGER_M] = sAnims_PokemonRangerM,
[TRAINER_PIC_POKEMON_RANGER_F] = sAnims_PokemonRangerF,
[TRAINER_PIC_MAGMA_LEADER_MAXIE] = sAnims_MagmaLeaderMaxie,
[TRAINER_PIC_LASS] = sAnims_Lass,
[TRAINER_PIC_YOUNG_COUPLE] = sAnims_YoungCouple,
[TRAINER_PIC_OLD_COUPLE] = sAnims_OldCouple,
[TRAINER_PIC_SIS_AND_BRO] = sAnims_SisAndBro,
[TRAINER_PIC_STEVEN] = sAnims_Steven,
[TRAINER_PIC_SALON_MAIDEN_ANABEL] = sAnims_SalonMaidenAnabel,
[TRAINER_PIC_DOME_ACE_TUCKER] = sAnims_DomeAceTucker,
[TRAINER_PIC_PALACE_MAVEN_SPENSER] = sAnims_PalaceMavenSpenser,
[TRAINER_PIC_ARENA_TYCOON_GRETA] = sAnims_ArenaTycoonGreta,
[TRAINER_PIC_FACTORY_HEAD_NOLAND] = sAnims_FactoryHeadNoland,
[TRAINER_PIC_PIKE_QUEEN_LUCY] = sAnims_PikeQueenLucy,
[TRAINER_PIC_PYRAMID_KING_BRANDON] = sAnims_PyramidKingBrandon,
[TRAINER_PIC_RED] = sAnims_Red,
[TRAINER_PIC_LEAF] = sAnims_Leaf,
[TRAINER_PIC_RS_BRENDAN] = sAnims_RubySapphireBrendan,
[TRAINER_PIC_RS_MAY] = sAnims_RubySapphireMay,
};

View File

@ -1,294 +0,0 @@
const struct MonCoords gTrainerFrontPicCoords[] =
{
[TRAINER_PIC_HIKER] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_AQUA_GRUNT_M] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_POKEMON_BREEDER_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_COOLTRAINER_M] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_BIRD_KEEPER] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_COLLECTOR] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_AQUA_GRUNT_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_SWIMMER_M] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_MAGMA_GRUNT_M] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_EXPERT_M] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_AQUA_ADMIN_M] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_BLACK_BELT] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_AQUA_ADMIN_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_AQUA_LEADER_ARCHIE] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_HEX_MANIAC] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_AROMA_LADY] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_RUIN_MANIAC] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_INTERVIEWER] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_TUBER_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_TUBER_M] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_COOLTRAINER_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_LADY] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_BEAUTY] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_RICH_BOY] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_EXPERT_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_POKEMANIAC] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_MAGMA_GRUNT_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_GUITARIST] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_KINDLER] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_CAMPER] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_PICNICKER] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_BUG_MANIAC] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_POKEMON_BREEDER_M] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_PSYCHIC_M] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_PSYCHIC_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_GENTLEMAN] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_ELITE_FOUR_SIDNEY] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_ELITE_FOUR_PHOEBE] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_ELITE_FOUR_GLACIA] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_ELITE_FOUR_DRAKE] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_LEADER_ROXANNE] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_LEADER_BRAWLY] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_LEADER_WATTSON] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_LEADER_FLANNERY] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_LEADER_NORMAN] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_LEADER_WINONA] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_LEADER_TATE_AND_LIZA] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_LEADER_JUAN] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_SCHOOL_KID_M] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_SCHOOL_KID_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_SR_AND_JR] = {.size = 8, .y_offset = 2},
[TRAINER_PIC_POKEFAN_M] = {.size = 8, .y_offset = 2},
[TRAINER_PIC_POKEFAN_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_YOUNGSTER] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_CHAMPION_WALLACE] = {.size = 8, .y_offset = 2},
[TRAINER_PIC_FISHERMAN] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_CYCLING_TRIATHLETE_M] = {.size = 8, .y_offset = 2},
[TRAINER_PIC_CYCLING_TRIATHLETE_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_RUNNING_TRIATHLETE_M] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_RUNNING_TRIATHLETE_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_SWIMMING_TRIATHLETE_M] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_SWIMMING_TRIATHLETE_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_DRAGON_TAMER] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_NINJA_BOY] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_BATTLE_GIRL] = {.size = 8, .y_offset = 2},
[TRAINER_PIC_PARASOL_LADY] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_SWIMMER_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_TWINS] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_SAILOR] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_MAGMA_ADMIN] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_WALLY] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_BRENDAN] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_MAY] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_BUG_CATCHER] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_POKEMON_RANGER_M] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_POKEMON_RANGER_F] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_MAGMA_LEADER_MAXIE] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_LASS] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_YOUNG_COUPLE] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_OLD_COUPLE] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_SIS_AND_BRO] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_STEVEN] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_SALON_MAIDEN_ANABEL] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_DOME_ACE_TUCKER] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_PALACE_MAVEN_SPENSER] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_ARENA_TYCOON_GRETA] = {.size = 8, .y_offset = 2},
[TRAINER_PIC_FACTORY_HEAD_NOLAND] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_PIKE_QUEEN_LUCY] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_PYRAMID_KING_BRANDON] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_RED] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_LEAF] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_RS_BRENDAN] = {.size = 8, .y_offset = 1},
[TRAINER_PIC_RS_MAY] = {.size = 8, .y_offset = 1},
};
#define TRAINER_SPRITE(trainerPic, sprite, size) [TRAINER_PIC_##trainerPic] = {sprite, size, TRAINER_PIC_##trainerPic}
const struct CompressedSpriteSheet gTrainerFrontPicTable[] =
{
TRAINER_SPRITE(HIKER, gTrainerFrontPic_Hiker, TRAINER_PIC_SIZE),
TRAINER_SPRITE(AQUA_GRUNT_M, gTrainerFrontPic_AquaGruntM, TRAINER_PIC_SIZE),
TRAINER_SPRITE(POKEMON_BREEDER_F, gTrainerFrontPic_PokemonBreederF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(COOLTRAINER_M, gTrainerFrontPic_CoolTrainerM, TRAINER_PIC_SIZE),
TRAINER_SPRITE(BIRD_KEEPER, gTrainerFrontPic_BirdKeeper, TRAINER_PIC_SIZE),
TRAINER_SPRITE(COLLECTOR, gTrainerFrontPic_Collector, TRAINER_PIC_SIZE),
TRAINER_SPRITE(AQUA_GRUNT_F, gTrainerFrontPic_AquaGruntF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(SWIMMER_M, gTrainerFrontPic_SwimmerM, TRAINER_PIC_SIZE),
TRAINER_SPRITE(MAGMA_GRUNT_M, gTrainerFrontPic_MagmaGruntM, TRAINER_PIC_SIZE),
TRAINER_SPRITE(EXPERT_M, gTrainerFrontPic_ExpertM, TRAINER_PIC_SIZE),
TRAINER_SPRITE(AQUA_ADMIN_M, gTrainerFrontPic_AquaAdminM, TRAINER_PIC_SIZE),
TRAINER_SPRITE(BLACK_BELT, gTrainerFrontPic_BlackBelt, TRAINER_PIC_SIZE),
TRAINER_SPRITE(AQUA_ADMIN_F, gTrainerFrontPic_AquaAdminF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(AQUA_LEADER_ARCHIE, gTrainerFrontPic_AquaLeaderArchie, TRAINER_PIC_SIZE),
TRAINER_SPRITE(HEX_MANIAC, gTrainerFrontPic_HexManiac, TRAINER_PIC_SIZE),
TRAINER_SPRITE(AROMA_LADY, gTrainerFrontPic_AromaLady, TRAINER_PIC_SIZE),
TRAINER_SPRITE(RUIN_MANIAC, gTrainerFrontPic_RuinManiac, TRAINER_PIC_SIZE),
TRAINER_SPRITE(INTERVIEWER, gTrainerFrontPic_Interviewer, TRAINER_PIC_SIZE),
TRAINER_SPRITE(TUBER_F, gTrainerFrontPic_TuberF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(TUBER_M, gTrainerFrontPic_TuberM, TRAINER_PIC_SIZE),
TRAINER_SPRITE(COOLTRAINER_F, gTrainerFrontPic_CoolTrainerF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(LADY, gTrainerFrontPic_Lady, TRAINER_PIC_SIZE),
TRAINER_SPRITE(BEAUTY, gTrainerFrontPic_Beauty, TRAINER_PIC_SIZE),
TRAINER_SPRITE(RICH_BOY, gTrainerFrontPic_RichBoy, TRAINER_PIC_SIZE),
TRAINER_SPRITE(EXPERT_F, gTrainerFrontPic_ExpertF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(POKEMANIAC, gTrainerFrontPic_Pokemaniac, TRAINER_PIC_SIZE),
TRAINER_SPRITE(MAGMA_GRUNT_F, gTrainerFrontPic_MagmaGruntF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(GUITARIST, gTrainerFrontPic_Guitarist, TRAINER_PIC_SIZE),
TRAINER_SPRITE(KINDLER, gTrainerFrontPic_Kindler, TRAINER_PIC_SIZE),
TRAINER_SPRITE(CAMPER, gTrainerFrontPic_Camper, TRAINER_PIC_SIZE),
TRAINER_SPRITE(PICNICKER, gTrainerFrontPic_Picnicker, TRAINER_PIC_SIZE),
TRAINER_SPRITE(BUG_MANIAC, gTrainerFrontPic_BugManiac, TRAINER_PIC_SIZE),
TRAINER_SPRITE(POKEMON_BREEDER_M, gTrainerFrontPic_PokemonBreederM, TRAINER_PIC_SIZE),
TRAINER_SPRITE(PSYCHIC_M, gTrainerFrontPic_PsychicM, TRAINER_PIC_SIZE),
TRAINER_SPRITE(PSYCHIC_F, gTrainerFrontPic_PsychicF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(GENTLEMAN, gTrainerFrontPic_Gentleman, TRAINER_PIC_SIZE),
TRAINER_SPRITE(ELITE_FOUR_SIDNEY, gTrainerFrontPic_EliteFourSidney, TRAINER_PIC_SIZE),
TRAINER_SPRITE(ELITE_FOUR_PHOEBE, gTrainerFrontPic_EliteFourPhoebe, TRAINER_PIC_SIZE),
TRAINER_SPRITE(ELITE_FOUR_GLACIA, gTrainerFrontPic_EliteFourGlacia, TRAINER_PIC_SIZE),
TRAINER_SPRITE(ELITE_FOUR_DRAKE, gTrainerFrontPic_EliteFourDrake, TRAINER_PIC_SIZE),
TRAINER_SPRITE(LEADER_ROXANNE, gTrainerFrontPic_LeaderRoxanne, TRAINER_PIC_SIZE),
TRAINER_SPRITE(LEADER_BRAWLY, gTrainerFrontPic_LeaderBrawly, TRAINER_PIC_SIZE),
TRAINER_SPRITE(LEADER_WATTSON, gTrainerFrontPic_LeaderWattson, TRAINER_PIC_SIZE),
TRAINER_SPRITE(LEADER_FLANNERY, gTrainerFrontPic_LeaderFlannery, TRAINER_PIC_SIZE),
TRAINER_SPRITE(LEADER_NORMAN, gTrainerFrontPic_LeaderNorman, TRAINER_PIC_SIZE),
TRAINER_SPRITE(LEADER_WINONA, gTrainerFrontPic_LeaderWinona, TRAINER_PIC_SIZE),
TRAINER_SPRITE(LEADER_TATE_AND_LIZA, gTrainerFrontPic_LeaderTateAndLiza, TRAINER_PIC_SIZE),
TRAINER_SPRITE(LEADER_JUAN, gTrainerFrontPic_LeaderJuan, TRAINER_PIC_SIZE),
TRAINER_SPRITE(SCHOOL_KID_M, gTrainerFrontPic_SchoolKidM, TRAINER_PIC_SIZE),
TRAINER_SPRITE(SCHOOL_KID_F, gTrainerFrontPic_SchoolKidF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(SR_AND_JR, gTrainerFrontPic_SrAndJr, TRAINER_PIC_SIZE * 2),
TRAINER_SPRITE(POKEFAN_M, gTrainerFrontPic_PokefanM, TRAINER_PIC_SIZE * 2),
TRAINER_SPRITE(POKEFAN_F, gTrainerFrontPic_PokefanF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(YOUNGSTER, gTrainerFrontPic_Youngster, TRAINER_PIC_SIZE),
TRAINER_SPRITE(CHAMPION_WALLACE, gTrainerFrontPic_ChampionWallace, TRAINER_PIC_SIZE * 2),
TRAINER_SPRITE(FISHERMAN, gTrainerFrontPic_Fisherman, TRAINER_PIC_SIZE),
TRAINER_SPRITE(CYCLING_TRIATHLETE_M, gTrainerFrontPic_CyclingTriathleteM, TRAINER_PIC_SIZE * 2),
TRAINER_SPRITE(CYCLING_TRIATHLETE_F, gTrainerFrontPic_CyclingTriathleteF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(RUNNING_TRIATHLETE_M, gTrainerFrontPic_RunningTriathleteM, TRAINER_PIC_SIZE),
TRAINER_SPRITE(RUNNING_TRIATHLETE_F, gTrainerFrontPic_RunningTriathleteF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(SWIMMING_TRIATHLETE_M, gTrainerFrontPic_SwimmingTriathleteM, TRAINER_PIC_SIZE),
TRAINER_SPRITE(SWIMMING_TRIATHLETE_F, gTrainerFrontPic_SwimmingTriathleteF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(DRAGON_TAMER, gTrainerFrontPic_DragonTamer, TRAINER_PIC_SIZE),
TRAINER_SPRITE(NINJA_BOY, gTrainerFrontPic_NinjaBoy, TRAINER_PIC_SIZE),
TRAINER_SPRITE(BATTLE_GIRL, gTrainerFrontPic_BattleGirl, TRAINER_PIC_SIZE * 2),
TRAINER_SPRITE(PARASOL_LADY, gTrainerFrontPic_ParasolLady, TRAINER_PIC_SIZE),
TRAINER_SPRITE(SWIMMER_F, gTrainerFrontPic_SwimmerF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(TWINS, gTrainerFrontPic_Twins, TRAINER_PIC_SIZE),
TRAINER_SPRITE(SAILOR, gTrainerFrontPic_Sailor, TRAINER_PIC_SIZE),
TRAINER_SPRITE(MAGMA_ADMIN, gTrainerFrontPic_MagmaAdmin, TRAINER_PIC_SIZE),
TRAINER_SPRITE(WALLY, gTrainerFrontPic_Wally, TRAINER_PIC_SIZE),
TRAINER_SPRITE(BRENDAN, gTrainerFrontPic_Brendan, TRAINER_PIC_SIZE),
TRAINER_SPRITE(MAY, gTrainerFrontPic_May, TRAINER_PIC_SIZE),
TRAINER_SPRITE(BUG_CATCHER, gTrainerFrontPic_BugCatcher, TRAINER_PIC_SIZE),
TRAINER_SPRITE(POKEMON_RANGER_M, gTrainerFrontPic_PokemonRangerM, TRAINER_PIC_SIZE),
TRAINER_SPRITE(POKEMON_RANGER_F, gTrainerFrontPic_PokemonRangerF, TRAINER_PIC_SIZE),
TRAINER_SPRITE(MAGMA_LEADER_MAXIE, gTrainerFrontPic_MagmaLeaderMaxie, TRAINER_PIC_SIZE),
TRAINER_SPRITE(LASS, gTrainerFrontPic_Lass, TRAINER_PIC_SIZE),
TRAINER_SPRITE(YOUNG_COUPLE, gTrainerFrontPic_YoungCouple, TRAINER_PIC_SIZE),
TRAINER_SPRITE(OLD_COUPLE, gTrainerFrontPic_OldCouple, TRAINER_PIC_SIZE),
TRAINER_SPRITE(SIS_AND_BRO, gTrainerFrontPic_SisAndBro, TRAINER_PIC_SIZE),
TRAINER_SPRITE(STEVEN, gTrainerFrontPic_Steven, TRAINER_PIC_SIZE),
TRAINER_SPRITE(SALON_MAIDEN_ANABEL, gTrainerFrontPic_SalonMaidenAnabel, TRAINER_PIC_SIZE),
TRAINER_SPRITE(DOME_ACE_TUCKER, gTrainerFrontPic_DomeAceTucker, TRAINER_PIC_SIZE),
TRAINER_SPRITE(PALACE_MAVEN_SPENSER, gTrainerFrontPic_PalaceMavenSpenser, TRAINER_PIC_SIZE),
TRAINER_SPRITE(ARENA_TYCOON_GRETA, gTrainerFrontPic_ArenaTycoonGreta, TRAINER_PIC_SIZE * 2),
TRAINER_SPRITE(FACTORY_HEAD_NOLAND, gTrainerFrontPic_FactoryHeadNoland, TRAINER_PIC_SIZE),
TRAINER_SPRITE(PIKE_QUEEN_LUCY, gTrainerFrontPic_PikeQueenLucy, TRAINER_PIC_SIZE),
TRAINER_SPRITE(PYRAMID_KING_BRANDON, gTrainerFrontPic_PyramidKingBrandon, TRAINER_PIC_SIZE),
TRAINER_SPRITE(RED, gTrainerFrontPic_Red, TRAINER_PIC_SIZE),
TRAINER_SPRITE(LEAF, gTrainerFrontPic_Leaf, TRAINER_PIC_SIZE),
TRAINER_SPRITE(RS_BRENDAN, gTrainerFrontPic_RubySapphireBrendan, TRAINER_PIC_SIZE),
TRAINER_SPRITE(RS_MAY, gTrainerFrontPic_RubySapphireMay, TRAINER_PIC_SIZE),
};
#define TRAINER_PAL(trainerPic, pal) [TRAINER_PIC_##trainerPic] = {pal, TRAINER_PIC_##trainerPic}
const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[] =
{
TRAINER_PAL(HIKER, gTrainerPalette_Hiker),
TRAINER_PAL(AQUA_GRUNT_M, gTrainerPalette_AquaGruntM),
TRAINER_PAL(POKEMON_BREEDER_F, gTrainerPalette_PokemonBreederF),
TRAINER_PAL(COOLTRAINER_M, gTrainerPalette_CoolTrainerM),
TRAINER_PAL(BIRD_KEEPER, gTrainerPalette_BirdKeeper),
TRAINER_PAL(COLLECTOR, gTrainerPalette_Collector),
TRAINER_PAL(AQUA_GRUNT_F, gTrainerPalette_AquaGruntF),
TRAINER_PAL(SWIMMER_M, gTrainerPalette_SwimmerM),
TRAINER_PAL(MAGMA_GRUNT_M, gTrainerPalette_MagmaGruntM),
TRAINER_PAL(EXPERT_M, gTrainerPalette_ExpertM),
TRAINER_PAL(AQUA_ADMIN_M, gTrainerPalette_AquaAdminM),
TRAINER_PAL(BLACK_BELT, gTrainerPalette_BlackBelt),
TRAINER_PAL(AQUA_ADMIN_F, gTrainerPalette_AquaAdminF),
TRAINER_PAL(AQUA_LEADER_ARCHIE, gTrainerPalette_AquaLeaderArchie),
TRAINER_PAL(HEX_MANIAC, gTrainerPalette_HexManiac),
TRAINER_PAL(AROMA_LADY, gTrainerPalette_AromaLady),
TRAINER_PAL(RUIN_MANIAC, gTrainerPalette_RuinManiac),
TRAINER_PAL(INTERVIEWER, gTrainerPalette_Interviewer),
TRAINER_PAL(TUBER_F, gTrainerPalette_TuberF),
TRAINER_PAL(TUBER_M, gTrainerPalette_TuberM),
TRAINER_PAL(COOLTRAINER_F, gTrainerPalette_CoolTrainerF),
TRAINER_PAL(LADY, gTrainerPalette_Lady),
TRAINER_PAL(BEAUTY, gTrainerPalette_Beauty),
TRAINER_PAL(RICH_BOY, gTrainerPalette_RichBoy),
TRAINER_PAL(EXPERT_F, gTrainerPalette_ExpertF),
TRAINER_PAL(POKEMANIAC, gTrainerPalette_Pokemaniac),
TRAINER_PAL(MAGMA_GRUNT_F, gTrainerPalette_MagmaGruntF),
TRAINER_PAL(GUITARIST, gTrainerPalette_Guitarist),
TRAINER_PAL(KINDLER, gTrainerPalette_Kindler),
TRAINER_PAL(CAMPER, gTrainerPalette_Camper),
TRAINER_PAL(PICNICKER, gTrainerPalette_Picnicker),
TRAINER_PAL(BUG_MANIAC, gTrainerPalette_BugManiac),
TRAINER_PAL(POKEMON_BREEDER_M, gTrainerPalette_PokemonBreederM),
TRAINER_PAL(PSYCHIC_M, gTrainerPalette_PsychicM),
TRAINER_PAL(PSYCHIC_F, gTrainerPalette_PsychicF),
TRAINER_PAL(GENTLEMAN, gTrainerPalette_Gentleman),
TRAINER_PAL(ELITE_FOUR_SIDNEY, gTrainerPalette_EliteFourSidney),
TRAINER_PAL(ELITE_FOUR_PHOEBE, gTrainerPalette_EliteFourPhoebe),
TRAINER_PAL(ELITE_FOUR_GLACIA, gTrainerPalette_EliteFourGlacia),
TRAINER_PAL(ELITE_FOUR_DRAKE, gTrainerPalette_EliteFourDrake),
TRAINER_PAL(LEADER_ROXANNE, gTrainerPalette_LeaderRoxanne),
TRAINER_PAL(LEADER_BRAWLY, gTrainerPalette_LeaderBrawly),
TRAINER_PAL(LEADER_WATTSON, gTrainerPalette_LeaderWattson),
TRAINER_PAL(LEADER_FLANNERY, gTrainerPalette_LeaderFlannery),
TRAINER_PAL(LEADER_NORMAN, gTrainerPalette_LeaderNorman),
TRAINER_PAL(LEADER_WINONA, gTrainerPalette_LeaderWinona),
TRAINER_PAL(LEADER_TATE_AND_LIZA, gTrainerPalette_LeaderTateAndLiza),
TRAINER_PAL(LEADER_JUAN, gTrainerPalette_LeaderJuan),
TRAINER_PAL(SCHOOL_KID_M, gTrainerPalette_SchoolKidM),
TRAINER_PAL(SCHOOL_KID_F, gTrainerPalette_SchoolKidF),
TRAINER_PAL(SR_AND_JR, gTrainerPalette_SrAndJr),
TRAINER_PAL(POKEFAN_M, gTrainerPalette_PokefanM),
TRAINER_PAL(POKEFAN_F, gTrainerPalette_PokefanF),
TRAINER_PAL(YOUNGSTER, gTrainerPalette_Youngster),
TRAINER_PAL(CHAMPION_WALLACE, gTrainerPalette_ChampionWallace),
TRAINER_PAL(FISHERMAN, gTrainerPalette_Fisherman),
TRAINER_PAL(CYCLING_TRIATHLETE_M, gTrainerPalette_CyclingTriathleteM),
TRAINER_PAL(CYCLING_TRIATHLETE_F, gTrainerPalette_CyclingTriathleteF),
TRAINER_PAL(RUNNING_TRIATHLETE_M, gTrainerPalette_RunningTriathleteM),
TRAINER_PAL(RUNNING_TRIATHLETE_F, gTrainerPalette_RunningTriathleteF),
TRAINER_PAL(SWIMMING_TRIATHLETE_M, gTrainerPalette_SwimmingTriathleteM),
TRAINER_PAL(SWIMMING_TRIATHLETE_F, gTrainerPalette_SwimmingTriathleteF),
TRAINER_PAL(DRAGON_TAMER, gTrainerPalette_DragonTamer),
TRAINER_PAL(NINJA_BOY, gTrainerPalette_NinjaBoy),
TRAINER_PAL(BATTLE_GIRL, gTrainerPalette_BattleGirl),
TRAINER_PAL(PARASOL_LADY, gTrainerPalette_ParasolLady),
TRAINER_PAL(SWIMMER_F, gTrainerPalette_SwimmerF),
TRAINER_PAL(TWINS, gTrainerPalette_Twins),
TRAINER_PAL(SAILOR, gTrainerPalette_Sailor),
TRAINER_PAL(MAGMA_ADMIN, gTrainerPalette_MagmaAdmin),
TRAINER_PAL(WALLY, gTrainerPalette_Wally),
TRAINER_PAL(BRENDAN, gTrainerPalette_Brendan),
TRAINER_PAL(MAY, gTrainerPalette_May),
TRAINER_PAL(BUG_CATCHER, gTrainerPalette_BugCatcher),
TRAINER_PAL(POKEMON_RANGER_M, gTrainerPalette_PokemonRangerM),
TRAINER_PAL(POKEMON_RANGER_F, gTrainerPalette_PokemonRangerF),
TRAINER_PAL(MAGMA_LEADER_MAXIE, gTrainerPalette_MagmaLeaderMaxie),
TRAINER_PAL(LASS, gTrainerPalette_Lass),
TRAINER_PAL(YOUNG_COUPLE, gTrainerPalette_YoungCouple),
TRAINER_PAL(OLD_COUPLE, gTrainerPalette_OldCouple),
TRAINER_PAL(SIS_AND_BRO, gTrainerPalette_SisAndBro),
TRAINER_PAL(STEVEN, gTrainerPalette_Steven),
TRAINER_PAL(SALON_MAIDEN_ANABEL, gTrainerPalette_SalonMaidenAnabel),
TRAINER_PAL(DOME_ACE_TUCKER, gTrainerPalette_DomeAceTucker),
TRAINER_PAL(PALACE_MAVEN_SPENSER, gTrainerPalette_PalaceMavenSpenser),
TRAINER_PAL(ARENA_TYCOON_GRETA, gTrainerPalette_ArenaTycoonGreta),
TRAINER_PAL(FACTORY_HEAD_NOLAND, gTrainerPalette_FactoryHeadNoland),
TRAINER_PAL(PIKE_QUEEN_LUCY, gTrainerPalette_PikeQueenLucy),
TRAINER_PAL(PYRAMID_KING_BRANDON, gTrainerPalette_PyramidKingBrandon),
TRAINER_PAL(RED, gTrainerPalette_Red),
TRAINER_PAL(LEAF, gTrainerPalette_Leaf),
TRAINER_PAL(RS_BRENDAN, gTrainerPalette_RubySapphireBrendan),
TRAINER_PAL(RS_MAY, gTrainerPalette_RubySapphireMay),
};

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "data.h"
#include "decompress.h"
#include "event_object_movement.h"
#include "field_camera.h"
@ -243,8 +244,6 @@ static void UseVsSeeker_CleanUpFieldEffect(struct Task *task);
static u8 sActiveList[32];
// External declarations
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
extern u8 *gFieldEffectScriptPointers[];
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
@ -894,10 +893,10 @@ bool8 FieldEffectActiveListContains(u8 id)
u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer)
{
struct SpriteTemplate spriteTemplate;
LoadCompressedSpritePaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[trainerSpriteID], buffer);
LoadCompressedSpriteSheetOverrideBuffer(&gTrainerFrontPicTable[trainerSpriteID], buffer);
spriteTemplate.tileTag = gTrainerFrontPicTable[trainerSpriteID].tag;
spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[trainerSpriteID].tag;
LoadCompressedSpritePaletteOverrideBuffer(&gTrainerSprites[trainerSpriteID].palette, buffer);
LoadCompressedSpriteSheetOverrideBuffer(&gTrainerSprites[trainerSpriteID].frontPic, buffer);
spriteTemplate.tileTag = gTrainerSprites[trainerSpriteID].frontPic.tag;
spriteTemplate.paletteTag = gTrainerSprites[trainerSpriteID].palette.tag;
spriteTemplate.oam = &sOam_64x64;
spriteTemplate.anims = gDummySpriteAnimTable;
spriteTemplate.images = NULL;
@ -908,8 +907,8 @@ u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buf
static void UNUSED LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest)
{
LZDecompressVram(gTrainerFrontPicTable[gender].data, dest);
LoadCompressedPalette(gTrainerFrontPicPaletteTable[gender].data, palOffset, PLTT_SIZE_4BPP);
LZDecompressVram(gTrainerSprites[gender].frontPic.data, dest);
LoadCompressedPalette(gTrainerSprites[gender].palette.data, palOffset, PLTT_SIZE_4BPP);
}
u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority)

View File

@ -1844,7 +1844,7 @@ void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerPicId, u8 battlerPosition
if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT)
{
gMultiuseSpriteTemplate = sTrainerBackSpriteTemplates[trainerPicId];
gMultiuseSpriteTemplate.anims = gTrainerBackAnimsPtrTable[trainerPicId];
gMultiuseSpriteTemplate.anims = gTrainerBacksprites[trainerPicId].animation;
}
else
{
@ -1852,7 +1852,7 @@ void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerPicId, u8 battlerPosition
gMultiuseSpriteTemplate = gMonSpritesGfxPtr->templates[battlerPosition];
else
gMultiuseSpriteTemplate = gBattlerSpriteTemplates[battlerPosition];
gMultiuseSpriteTemplate.anims = gTrainerFrontAnimsPtrTable[trainerPicId];
gMultiuseSpriteTemplate.anims = gTrainerSprites[trainerPicId].animation;
}
}
@ -1864,7 +1864,7 @@ void SetMultiuseSpriteTemplateToTrainerFront(u16 trainerPicId, u8 battlerPositio
gMultiuseSpriteTemplate = gBattlerSpriteTemplates[battlerPosition];
gMultiuseSpriteTemplate.paletteTag = trainerPicId;
gMultiuseSpriteTemplate.anims = gTrainerFrontAnimsPtrTable[trainerPicId];
gMultiuseSpriteTemplate.anims = gTrainerSprites[trainerPicId].animation;
}
static void EncryptBoxMon(struct BoxPokemon *boxMon)

View File

@ -1247,8 +1247,8 @@ static void LoadCheckPageTrainerPic(struct Pokenav_MatchCallGfx *gfx)
int trainerPic = GetMatchCallTrainerPic(PokenavList_GetSelectedIndex());
if (trainerPic >= 0)
{
DecompressPicFromTable(&gTrainerFrontPicTable[trainerPic], gfx->trainerPicGfx);
LZ77UnCompWram(gTrainerFrontPicPaletteTable[trainerPic].data, gfx->trainerPicPal);
DecompressPicFromTable(&gTrainerSprites[trainerPic].frontPic, gfx->trainerPicGfx);
LZ77UnCompWram(gTrainerSprites[trainerPic].palette.data, gfx->trainerPicPal);
cursor = RequestDma3Copy(gfx->trainerPicGfx, gfx->trainerPicGfxPtr, sizeof(gfx->trainerPicGfx), 1);
LoadPalette(gfx->trainerPicPal, gfx->trainerPicPalOffset, sizeof(gfx->trainerPicPal));
gfx->trainerPicSprite->data[0] = 0;

View File

@ -235,7 +235,7 @@ void CreateBattlerSprite(u32 battler)
{
SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(B_POSITION_PLAYER_LEFT));
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50,
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
(8 - gTrainerBacksprites[gSaveBlock2Ptr->playerGender].coordinates.size) * 4 + 80,
GetBattlerSpriteSubpriority(0));
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
@ -245,7 +245,7 @@ void CreateBattlerSprite(u32 battler)
{
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_WALLY, GetBattlerPosition(0));
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50,
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].size) * 4 + 80,
(8 - gTrainerBacksprites[TRAINER_BACK_PIC_WALLY].coordinates.size) * 4 + 80,
GetBattlerSpriteSubpriority(0));
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;

View File

@ -66,9 +66,9 @@ static bool16 DecompressPic(u16 species, u32 personality, bool8 isFrontPic, u8 *
else
{
if (isFrontPic)
DecompressPicFromTable(&gTrainerFrontPicTable[species], dest);
DecompressPicFromTable(&gTrainerSprites[species].frontPic, dest);
else
DecompressPicFromTable(&gTrainerBackPicTable[species], dest);
DecompressPicFromTable(&gTrainerBacksprites[species].backPic, dest);
}
return FALSE;
}
@ -93,12 +93,12 @@ static void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8
if (paletteTag == TAG_NONE)
{
sCreatingSpriteTemplate.paletteTag = TAG_NONE;
LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP);
LoadCompressedPalette(gTrainerSprites[species].palette.data, OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP);
}
else
{
sCreatingSpriteTemplate.paletteTag = paletteTag;
LoadCompressedSpritePalette(&gTrainerFrontPicPaletteTable[species]);
LoadCompressedSpritePalette(&gTrainerSprites[species].palette);
}
}
}
@ -108,7 +108,7 @@ static void LoadPicPaletteBySlot(u16 species, u32 otId, u32 personality, u8 pale
if (!isTrainer)
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), PLTT_ID(paletteSlot), PLTT_SIZE_4BPP);
else
LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, PLTT_ID(paletteSlot), PLTT_SIZE_4BPP);
LoadCompressedPalette(gTrainerSprites[species].palette.data, PLTT_ID(paletteSlot), PLTT_SIZE_4BPP);
}
static void AssignSpriteAnimsTable(bool8 isTrainer)
@ -116,7 +116,7 @@ static void AssignSpriteAnimsTable(bool8 isTrainer)
if (!isTrainer)
sCreatingSpriteTemplate.anims = gAnims_MonPic;
else
sCreatingSpriteTemplate.anims = gTrainerFrontAnimsPtrTable[0];
sCreatingSpriteTemplate.anims = gTrainerSprites[0].animation;
}
static u16 CreatePicSprite(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer)