summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/main_menu.s4
-rw-r--r--asm/party_menu.s2
-rw-r--r--asm/pokemon_summary_screen.s4
-rw-r--r--asm/trade.s8
-rw-r--r--asm/trainer_card.s4
-rw-r--r--data/data2e.s2
-rw-r--r--include/battle_message.h8
-rw-r--r--include/pokemon.h188
-rw-r--r--ld_script.txt4
-rw-r--r--src/battle_controller_link_opponent.c1
-rw-r--r--src/battle_controller_link_partner.c1
-rw-r--r--src/battle_controller_opponent.c1
-rw-r--r--src/battle_controller_player.c1
-rw-r--r--src/battle_controller_player_partner.c1
-rw-r--r--src/battle_controller_recorded_opponent.c1
-rw-r--r--src/battle_controller_recorded_player.c1
-rw-r--r--src/battle_controller_safari.c1
-rw-r--r--src/battle_controller_wally.c1
-rw-r--r--src/battle_message.c2
-rw-r--r--src/egg_hatch.c5
-rw-r--r--src/evolution_scene.c1
-rwxr-xr-xsrc/item_use.c4
-rw-r--r--src/pokeblock_feed.c3
-rw-r--r--src/pokemon.c (renamed from src/pokemon_1.c)280
-rw-r--r--src/reshow_battle_screen.c1
-rw-r--r--sym_ewram.txt9
26 files changed, 263 insertions, 275 deletions
diff --git a/asm/main_menu.s b/asm/main_menu.s
index 9c6cd1253..48d1411c5 100644
--- a/asm/main_menu.s
+++ b/asm/main_menu.s
@@ -3940,7 +3940,7 @@ AddBirchSpeechObjects: @ 803192C
strb r1, [r2]
strh r0, [r5, 0x1A]
movs r0, 0x3C
- bl sub_806EFF0
+ bl FacilityClassToPicIndex
lsls r0, 24
lsrs r0, 24
ldr r4, =0x0201c000
@@ -3970,7 +3970,7 @@ AddBirchSpeechObjects: @ 803192C
strb r1, [r2, 0x5]
strh r0, [r5, 0x1C]
movs r0, 0x3F
- bl sub_806EFF0
+ bl FacilityClassToPicIndex
lsls r0, 24
lsrs r0, 24
ldr r1, =0x0201c000
diff --git a/asm/party_menu.s b/asm/party_menu.s
index a70baf3df..bd5fa80fc 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -11943,7 +11943,7 @@ _081B6558:
adds r1, r5, 0
_081B6572:
adds r3, r6, 0
- bl ExecuteTableBasedItemEffect_
+ bl ExecuteTableBasedItemEffect
lsls r0, 24
lsrs r0, 24
pop {r4-r6}
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index a94d69b96..6e7c3af57 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -1173,7 +1173,7 @@ sub_81C47B4: @ 81C47B4
ands r0, r1
strb r0, [r7, 0x5]
ldrh r0, [r6, 0x2]
- bl IsPokeSpriteNotFlipped
+ bl IsMonSpriteNotFlipped
lsls r0, 24
cmp r0, 0
bne _081C4828
@@ -1221,7 +1221,7 @@ sub_81C4844: @ 81C4844
cmp r0, 0x1
beq _081C487E
ldrh r0, [r4, 0x2E]
- bl IsPokeSpriteNotFlipped
+ bl IsMonSpriteNotFlipped
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x30]
diff --git a/asm/trade.s b/asm/trade.s
index 28cfaeb72..8abdd5c84 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -7155,7 +7155,7 @@ _0807AD94:
bl HandleLoadSpecialPokePic_DontHandleDeoxys
_0807ADB2:
mov r0, r8
- bl sub_806E794
+ bl GetMonSpritePalStruct
bl LoadCompressedObjectPalette
ldr r0, =gUnknown_020322A0
ldr r1, [r0]
@@ -7171,7 +7171,7 @@ _0807ADB2:
.pool
_0807ADE0:
mov r0, r8
- bl sub_806E794
+ bl GetMonSpritePalStruct
ldrh r0, [r0, 0x4]
adds r1, r4, 0
bl sub_806A068
@@ -9589,7 +9589,7 @@ _0807C66C:
ldr r0, [r5]
adds r0, 0xF0
ldrh r0, [r0]
- bl IsPokeSpriteNotFlipped
+ bl IsMonSpriteNotFlipped
lsls r0, 24
cmp r0, 0
bne _0807C6E4
@@ -11663,7 +11663,7 @@ _0807DA74:
ldr r0, [r5]
adds r0, 0xF0
ldrh r0, [r0]
- bl IsPokeSpriteNotFlipped
+ bl IsMonSpriteNotFlipped
lsls r0, 24
cmp r0, 0
bne _0807DAEC
diff --git a/asm/trainer_card.s b/asm/trainer_card.s
index 4ccd04e98..7c36e5244 100644
--- a/asm/trainer_card.s
+++ b/asm/trainer_card.s
@@ -4754,7 +4754,7 @@ sub_80C4FF0: @ 80C4FF0
ldr r1, =0x00000583
adds r0, r1
ldrb r0, [r0]
- bl sub_806EFF0
+ bl FacilityClassToPicIndex
lsls r0, 16
lsrs r0, 16
ldr r4, =gUnknown_0856FB18
@@ -4795,7 +4795,7 @@ _080C5060:
adds r0, r1
adds r0, r2
ldrb r0, [r0]
- bl sub_806EFF0
+ bl FacilityClassToPicIndex
lsls r0, 16
lsrs r0, 16
ldr r4, =gUnknown_0856FB18
diff --git a/data/data2e.s b/data/data2e.s
index 597d53067..16aa16087 100644
--- a/data/data2e.s
+++ b/data/data2e.s
@@ -95,7 +95,7 @@ gUnknown_08329DF8:: @ 8329DF8
spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4F8, gUnknown_082FF618, sub_8039BB4
spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF518, gUnknown_082FF618, sub_8039BB4
-gSecretBaseTrainerClasses:: @ 8329EB8
+gSecretBaseFacilityClasses:: @ 8329EB8
.byte FACILITY_CLASS_YOUNGSTER, FACILITY_CLASS_BUG_CATCHER, FACILITY_CLASS_RICH_BOY, FACILITY_CLASS_CAMPER, FACILITY_CLASS_COOLTRAINER_1
.byte FACILITY_CLASS_LASS, FACILITY_CLASS_SCHOOL_KID_2, FACILITY_CLASS_LADY, FACILITY_CLASS_PICNICKER, FACILITY_CLASS_COOLTRAINER_2
diff --git a/include/battle_message.h b/include/battle_message.h
index 30ddca469..a68ad1551 100644
--- a/include/battle_message.h
+++ b/include/battle_message.h
@@ -229,6 +229,14 @@ extern const u8* const gPokeblockWasTooXStringTable[];
extern const u8* const gRefereeStringsTable[];
extern const u8* const gStatNamesTable2[];
+extern const u8 gText_BadEgg[];
+extern const u8 gText_StatRose[];
+extern const u8 gText_PkmnsStatChanged2[];
+extern const u8 gText_PkmnGettingPumped[];
+extern const u8 gText_PkmnShroudedInMist[];
+extern const u8 gText_BattleWallyName[];
+extern const u8 gText_PkmnsXPreventsSwitching[];
+
extern const u16 gMissStringIds[];
extern const u16 gTrappingMoves[];
diff --git a/include/pokemon.h b/include/pokemon.h
index 0430a465b..8db61bf76 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -1,6 +1,8 @@
#ifndef GUARD_POKEMON_H
#define GUARD_POKEMON_H
+#include "sprite.h"
+
#define MON_DATA_PERSONALITY 0
#define MON_DATA_OT_ID 1
#define MON_DATA_NICKNAME 2
@@ -360,6 +362,20 @@ struct UnknownPokemonStruct3
u8 field_32[38];
};
+struct Unknown_806F160_Struct
+{
+ u8 field_0_0 : 4;
+ u8 field_0_1 : 4;
+ u8 field_1;
+ u8 magic;
+ u8 field_3_0 : 4;
+ u8 field_3_1 : 4;
+ void *bytes;
+ u8 **byteArrays;
+ struct SpriteTemplate *templates;
+ struct SpriteFrameImage *frameImages;
+};
+
#define BATTLE_STATS_NO 8
struct BattlePokemon
@@ -546,11 +562,7 @@ extern const struct Evolution gEvolutionTable[][EVOS_PER_MON];
extern struct PokemonStorage* gPokemonStoragePtr;
extern const u32 gExperienceTables[][MAX_MON_LEVEL + 1];
extern const u16 *const gLevelUpLearnsets[];
-
-u8 CountAliveMonsInBattle(u8 caseId);
-#define BATTLE_ALIVE_EXCEPT_ACTIVE 0
-#define BATTLE_ALIVE_ATK_SIDE 1
-#define BATTLE_ALIVE_DEF_SIDE 2
+extern struct SpriteTemplate gUnknown_0202499C;
void ZeroBoxMonData(struct BoxPokemon *boxMon);
void ZeroMonData(struct Pokemon *mon);
@@ -564,26 +576,45 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level);
void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality);
void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId);
void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread);
-u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
+void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src);
+void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lvl50);
+void sub_8068528(struct Pokemon *mon, const struct UnknownPokemonStruct2 *src, u8 monId);
+void CreateMonWithEVSpreadPersonalityOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId);
+void sub_80686FC(struct Pokemon *mon, struct UnknownPokemonStruct *dest);
+void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId);
+bool8 sub_80688F8(u8 caseId, u8 battlerId);
+void SetDeoxysStats(void);
+u16 sub_8068B48(void);
+u16 sub_8068BB0(void);
+void CreateObedientEnemyMon(void);
void CalculateMonStats(struct Pokemon *mon);
+void BoxMonToMon(const struct BoxPokemon *src, struct Pokemon *dest);
u8 GetLevelFromMonExp(struct Pokemon *mon);
u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon);
u16 GiveMoveToMon(struct Pokemon *mon, u16 move);
u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move);
-void MonRestorePP(struct Pokemon *mon);
void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot);
void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot);
void GiveMonInitialMoveset(struct Pokemon *mon);
void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon);
+u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove);
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move);
void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
+s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef);
+u8 CountAliveMonsInBattle(u8 caseId);
+#define BATTLE_ALIVE_EXCEPT_ACTIVE 0
+#define BATTLE_ALIVE_ATK_SIDE 1
+#define BATTLE_ALIVE_DEF_SIDE 2
+
+u8 GetDefaultMoveTarget(u8 battlerId);
u8 GetMonGender(struct Pokemon *mon);
u8 GetBoxMonGender(struct BoxPokemon *boxMon);
u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
-void EncryptBoxMon(struct BoxPokemon *boxMon);
-void DecryptBoxMon(struct BoxPokemon *boxMon);
+void sub_806A068(u16 species, u8 battlerPosition);
+void sub_806A12C(u16 trainerSpriteId, u8 battlerPosition);
+void sub_806A1C0(u16 arg0, u8 battlerPosition);
// These are full type signatures for GetMonData() and GetBoxMonData(),
// but they are not used since some code erroneously omits the third arg.
@@ -592,100 +623,105 @@ void DecryptBoxMon(struct BoxPokemon *boxMon);
u32 GetMonData();
u32 GetBoxMonData();
-void SetMonData(struct Pokemon *mon, s32 field, const void *data);
-void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *data);
+void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg);
+void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg);
void CopyMon(void *dest, void *src, size_t size);
u8 GiveMonToPlayer(struct Pokemon *mon);
-u8 SendMonToPC(struct Pokemon *mon);
+u8 SendMonToPC(struct Pokemon* mon);
u8 CalculatePlayerPartyCount(void);
u8 CalculateEnemyPartyCount(void);
-
+u8 GetMonsStateToDoubles(void);
+u8 GetMonsStateToDoubles_2(void);
u8 GetAbilityBySpecies(u16 species, bool8 altAbility);
u8 GetMonAbility(struct Pokemon *mon);
void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord);
u8 GetSecretBaseTrainerPicIndex(void);
-u8 GetSecretBaseTrainerNameIndex(void);
+u8 GetSecretBaseTrainerClass(void);
bool8 IsPlayerPartyAndPokemonStorageFull(void);
bool8 IsPokemonStorageFull(void);
void GetSpeciesName(u8 *name, u16 species);
u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex);
void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex);
void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex);
-void CopyPlayerPartyMonToBattleData(u8 battleIndex, u8 partyIndex);
-
+void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex);
+bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex);
+bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e);
+bool8 HealStatusConditions(struct Pokemon *mon, u32 battlePartyId, u32 healMask, u8 battlerId);
+u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit);
+u8 *sub_806CF78(u16 itemId);
u8 GetNature(struct Pokemon *mon);
u8 GetNatureFromPersonality(u32 personality);
-
-u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex);
-
-void MonRestorePP(struct Pokemon *);
-void BoxMonRestorePP(struct BoxPokemon *);
-
+u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem);
+u16 HoennPokedexNumToSpecies(u16 hoennNum);
u16 NationalPokedexNumToSpecies(u16 nationalNum);
-u16 NationalToHoennOrder(u16);
-u16 SpeciesToNationalPokedexNum(u16);
-u16 HoennToNationalOrder(u16);
+u16 NationalToHoennOrder(u16 nationalNum);
+u16 SpeciesToNationalPokedexNum(u16 species);
+u16 SpeciesToHoennPokedexNum(u16 species);
+u16 HoennToNationalOrder(u16 hoennNum);
u16 SpeciesToCryId(u16 species);
-void DrawSpindaSpots(u16, u32, u8 *, u8);
-void AdjustFriendship(struct Pokemon *, u8);
-u8 CheckPartyHasHadPokerus(struct Pokemon *, u8);
-void UpdatePartyPokerusTime(u16);
-u32 CanMonLearnTMHM(struct Pokemon *, u8);
-u32 CanSpeciesLearnTMHM(u16 species, u8 tm);
-u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
-void ClearBattleMonForms(void);
-const u8 *GetMonFrontSpritePal(struct Pokemon *mon);
-const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16, u32, u32);
-const struct CompressedSpritePalette *sub_80409C8(u16, u32, u32);
-bool8 IsOtherTrainer(u32, u8 *);
-void SetWildMonHeldItem(void);
-u16 GetMonEVCount(struct Pokemon *);
-
-const struct CompressedSpritePalette *sub_806E794(struct Pokemon *mon);
-const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality);
-bool32 IsHMMove2(u16 move);
-bool8 IsPokeSpriteNotFlipped(u16 species);
-bool8 IsMonShiny(struct Pokemon *mon);
-bool8 IsShinyOtIdPersonality(u32 otId, u32 personality);
-
-void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies);
-bool8 IsTradedMon(struct Pokemon *mon);
-void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality);
-s32 GetBattlerMultiplayerId(u16 a1);
+void sub_806D544(u16 species, u32 personality, u8 *dest);
+void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4);
+void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
+bool8 sub_806D7EC(void);
bool16 sub_806D82C(u8 id);
-u16 MonTryLearningNewMove(struct Pokemon* mon, bool8);
-void SetDeoxysStats(void); // sets stats for deoxys
-bool8 HasTwoFramesAnimation(u16 species);
-u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem);
+s32 GetBattlerMultiplayerId(u16 a1);
+u8 GetTrainerEncounterMusicId(u16 trainerOpponentId);
+u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex);
+void AdjustFriendship(struct Pokemon *mon, u8 event);
+void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies);
+u16 GetMonEVCount(struct Pokemon *mon);
void RandomlyGivePartyPokerus(struct Pokemon *party);
u8 CheckPartyPokerus(struct Pokemon *party, u8 selection);
u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection);
void UpdatePartyPokerusTime(u16 days);
void PartySpreadPokerus(struct Pokemon *party);
-s8 GetMonFlavorRelation(struct Pokemon *mon, u8 a2);
-s8 GetFlavorRelationByPersonality(u32 personality, u8 a2);
-u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit);
-u8 GetDefaultMoveTarget(u8 atkBank);
-u16 PlayerGenderToFrontTrainerPicId(u8 playerGender);
-void sub_806A1C0(u16 arg0, u8 bankIdentity);
-void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity);
-u8 GetSecretBaseTrainerPicIndex(void);
bool8 TryIncrementMonLevel(struct Pokemon *mon);
-void BoxMonToMon(const struct BoxPokemon *srcMon, struct Pokemon *dstMon);
+u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm);
+u32 CanSpeciesLearnTMHM(u16 species, u8 tm);
+u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
-u8 GetMonsStateToDoubles_2(void);
-
-bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 itemId, u8 partyId, u8 monMoveIndex, u8 a5);
-s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef);
-const u8* GetTrainerClassNameFromId(u16 trainerId);
-const u8* GetTrainerNameFromId(u16 trainerId);
-void PlayMapChosenOrBattleBGM(u16 song);
-u8 GetTrainerEncounterMusicId(u16 trainerOpponentId);
-
-#include "sprite.h"
-
-void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3);
+u8 GetNumberOfRelearnableMoves(struct Pokemon *mon);
+u16 SpeciesToPokedexNum(u16 species);
+bool32 sub_806E3F8(u16 species);
+void ClearBattleMonForms(void);
+u16 GetBattleBGM(void);
+void PlayBattleBGM(void);
+void PlayMapChosenOrBattleBGM(u16 songId);
+void sub_806E694(u16 songId);
+const u8 *GetMonFrontSpritePal(struct Pokemon *mon);
+const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality);
+const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon);
+const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality);
+bool32 IsHMMove2(u16 move);
+bool8 IsMonSpriteNotFlipped(u16 species);
+s8 GetMonFlavorRelation(struct Pokemon *mon, u8 flavor);
+s8 GetFlavorRelationByPersonality(u32 personality, u8 flavor);
+bool8 IsTradedMon(struct Pokemon *mon);
+bool8 IsOtherTrainer(u32 otId, u8 *otName);
+void MonRestorePP(struct Pokemon *mon);
+void BoxMonRestorePP(struct BoxPokemon *boxMon);
+void sub_806E994(void);
+void SetWildMonHeldItem(void);
+bool8 IsMonShiny(struct Pokemon *mon);
+bool8 IsShinyOtIdPersonality(u32 otId, u32 personality);
+const u8 *GetTrainerPartnerName(void);
void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3);
+void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3);
+void PokemonSummaryDoMonAnimation(struct Sprite* sprite, u16 species, bool8 oneFrame);
+void sub_806EE98(void);
void BattleAnimateBackSprite(struct Sprite* sprite, u16 species);
+u8 sub_806EF08(u8 arg0);
+u8 sub_806EF84(u8 arg0, u8 arg1);
+u16 sub_806EFF0(u16 arg0);
+u16 FacilityClassToPicIndex(u16 facilityClass);
+u16 PlayerGenderToFrontTrainerPicId(u8 playerGender);
+void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality);
+const u8 *GetTrainerClassNameFromId(u16 trainerId);
+const u8 *GetTrainerNameFromId(u16 trainerId);
+bool8 HasTwoFramesAnimation(u16 species);
+bool8 sub_806F104(void);
+struct Unknown_806F160_Struct *sub_806F2AC(u8 id, u8 arg1);
+void sub_806F47C(u8 id);
+u8 *sub_806F4F8(u8 id, u8 arg1)
#endif // GUARD_POKEMON_H
diff --git a/ld_script.txt b/ld_script.txt
index 059f892b0..ffe23a780 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -68,7 +68,7 @@ SECTIONS {
src/battle_controller_opponent.o(.text);
src/battle_ai_switch_items.o(.text);
src/battle_controller_link_opponent.o(.text);
- src/pokemon_1.o(.text);
+ src/pokemon.o(.text);
src/trig.o(.text);
src/random.o(.text);
src/util.o(.text);
@@ -377,7 +377,7 @@ SECTIONS {
src/battle_controller_opponent.o(.rodata);
src/battle_controller_link_opponent.o(.rodata);
data/data2c.o(.rodata);
- src/pokemon_1.o(.rodata);
+ src/pokemon.o(.rodata);
data/data2e.o(.rodata);
src/trig.o(.rodata);
src/util.o(.rodata);
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index 1b12a7a80..a98939374 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -37,7 +37,6 @@ extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern struct SpriteTemplate gUnknown_0202499C;
extern u16 gSpecialVar_ItemId;
extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
extern u8 gBattleOutcome;
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 340a2b566..312b13d4c 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -36,7 +36,6 @@ extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern struct SpriteTemplate gUnknown_0202499C;
extern u16 gSpecialVar_ItemId;
extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
extern u8 gBattleOutcome;
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 760205d90..3f8968499 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -44,7 +44,6 @@ extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
extern void *gUnknown_020244D8;
extern void *gUnknown_020244DC;
extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
-extern struct SpriteTemplate gUnknown_0202499C;
extern struct UnusedControllerStruct gUnknown_02022D0C;
extern u16 gTrainerBattleOpponent_A;
extern u16 gTrainerBattleOpponent_B;
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 08af2e902..53342e5f1 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -45,7 +45,6 @@ extern u8 gMultiUsePlayerCursor;
extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern u16 gPartnerTrainerId;
-extern struct SpriteTemplate gUnknown_0202499C;
extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
extern u16 gSpecialVar_ItemId;
extern u8 gUnknown_0203CEE8;
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index b2b6baa0a..fd4f742fc 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -35,7 +35,6 @@ extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern struct SpriteTemplate gUnknown_0202499C;
extern u16 gSpecialVar_ItemId;
extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
extern u8 gBattleOutcome;
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index 8078d0af2..14e84963a 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -37,7 +37,6 @@ extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern struct SpriteTemplate gUnknown_0202499C;
extern u16 gSpecialVar_ItemId;
extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
extern u8 gBattleOutcome;
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index 953f989e9..8d5c8a567 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -36,7 +36,6 @@ extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern struct SpriteTemplate gUnknown_0202499C;
extern u16 gSpecialVar_ItemId;
extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
extern u8 gBattleOutcome;
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index 608d59418..d43ca6205 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -34,7 +34,6 @@ extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern struct SpriteTemplate gUnknown_0202499C;
extern u16 gSpecialVar_ItemId;
extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
extern u8 gBattleOutcome;
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index dd01e5996..c166d9e68 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -44,7 +44,6 @@ extern u8 gMultiUsePlayerCursor;
extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern u16 gPartnerTrainerId;
-extern struct SpriteTemplate gUnknown_0202499C;
extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
extern u16 gSpecialVar_ItemId;
extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
diff --git a/src/battle_message.c b/src/battle_message.c
index 181ad9d9e..5b34acc20 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -1983,7 +1983,7 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
break;
case B_TXT_TRAINER1_CLASS: // trainer class name
if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
- toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()];
+ toCpy = gTrainerClassNames[GetSecretBaseTrainerClass()];
else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
toCpy = gTrainerClassNames[sub_8068BB0()];
else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_3FE)
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 5a2fe5ca2..90f920192 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -44,7 +44,6 @@ struct EggHatchData
u8 textColor[3];
};
-extern struct SpriteTemplate gUnknown_0202499C;
extern void (*gFieldCallback)(void);
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
@@ -440,12 +439,12 @@ static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
gMonSpritesGfxPtr->sprites[(a0 * 2) + 1],
species, pid);
- LoadCompressedObjectPalette(sub_806E794(mon));
+ LoadCompressedObjectPalette(GetMonSpritePalStruct(mon));
*speciesLoc = species;
}
break;
case 1:
- sub_806A068(sub_806E794(mon)->tag, r5);
+ sub_806A068(GetMonSpritePalStruct(mon)->tag, r5);
spriteID = CreateSprite(&gUnknown_0202499C, 120, 75, 6);
gSprites[spriteID].invisible = 1;
gSprites[spriteID].callback = SpriteCallbackDummy;
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index ec99fb030..6560dffb5 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -49,7 +49,6 @@ extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG3_X;
extern u16 gBattle_BG3_Y;
extern u8 gBattleTerrain;
-extern struct SpriteTemplate gUnknown_0202499C;
extern bool8 gAffineAnimsDisabled;
extern u16 gMoveToLearn;
extern const u8 gSpeciesNames[][11];
diff --git a/src/item_use.c b/src/item_use.c
index 8e4a5cf2d..bf1c42c32 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -87,7 +87,7 @@ extern void sub_81ABA88(u8);
extern void sub_80B7CC8(void);
extern void flagmods_08054D70(void);
extern u8* sub_806CF78(u16);
-extern bool8 ExecuteTableBasedItemEffect_(struct Pokemon*, u16, u8, u8);
+extern bool8 ExecuteTableBasedItemEffect(struct Pokemon*, u16, u8, u8);
extern u8 gBankInMenu;
extern u16 gBattlerPartyIndexes[];
extern void sub_81B89F0(void);
@@ -986,7 +986,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId)
{
u16 partyId = gBattlerPartyIndexes[gBankInMenu];
- if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gSpecialVar_ItemId, partyId, 0) != FALSE)
+ if (ExecuteTableBasedItemEffect(&gPlayerParty[partyId], gSpecialVar_ItemId, partyId, 0) != FALSE)
{
if (!InBattlePyramid())
DisplayItemMessage(taskId, 1, gText_WontHaveEffect, bag_menu_inits_lists_menu);
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index 2039808cb..db92d56a8 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -50,7 +50,6 @@ struct PokeblockFeedStruct
extern u16 gSpecialVar_ItemId;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern struct SpriteTemplate gUnknown_0202499C;
extern const u8 gBattleTerrainPalette_Frontier[];
extern const u8 gBattleTerrainTiles_Building[];
@@ -837,7 +836,7 @@ static u8 CreateMonSprite(struct Pokemon* mon)
gSprites[spriteId].callback = SpriteCallbackDummy;
sPokeblockFeed->noMonFlip = TRUE;
- if (!IsPokeSpriteNotFlipped(species))
+ if (!IsMonSpriteNotFlipped(species))
{
gSprites[spriteId].affineAnims = sSpriteAffineAnimTable_MonNoFlip;
gSprites[spriteId].oam.affineMode = 3;
diff --git a/src/pokemon_1.c b/src/pokemon.c
index ea32479ab..dfc2f2830 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon.c
@@ -1,6 +1,8 @@
#include "global.h"
#include "pokemon.h"
#include "battle.h"
+#include "battle_setup.h"
+#include "battle_message.h"
#include "random.h"
#include "main.h"
#include "constants/species.h"
@@ -10,6 +12,7 @@
#include "constants/moves.h"
#include "constants/hold_effects.h"
#include "constants/battle_move_effects.h"
+#include "constants/songs.h"
#include "string_util.h"
#include "text.h"
#include "link.h"
@@ -21,33 +24,22 @@
#include "pokemon_animation.h"
#include "pokedex.h"
#include "pokeblock.h"
-#include "constants/songs.h"
#include "sound.h"
#include "task.h"
#include "rtc.h"
#include "m4a.h"
#include "malloc.h"
#include "util.h"
+#include "strings.h"
+#include "pokenav.h"
+#include "pokemon_storage_system.h"
-//Extracts the upper 16 bits of a 32-bit number
+// Extracts the upper 16 bits of a 32-bit number
#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
-//Extracts the lower 16 bits of a 32-bit number
+// Extracts the lower 16 bits of a 32-bit number
#define LOHALF(n) ((n) & 0xFFFF)
-struct Unknown_806F160_Struct
-{
- u8 field_0_0 : 4;
- u8 field_0_1 : 4;
- u8 field_1;
- u8 magic;
- u8 field_3_0 : 4;
- u8 field_3_1 : 4;
- void *bytes;
- u8 **byteArrays;
- struct SpriteTemplate *templates;
- struct SpriteFrameImage *frameImages;
-};
struct PokeItem
{
@@ -64,10 +56,7 @@ extern u16 gBattlerPartyIndexes[];
extern u8 gBattlerTarget;
extern u8 gBankInMenu;
extern u8 gLastUsedAbility;
-extern u16 gTrainerBattleOpponent_A;
extern u32 gBattleTypeFlags;
-extern struct SpriteTemplate gUnknown_0202499C;
-extern struct Unknown_806F160_Struct *gUnknown_020249B4[2];
extern struct BattlePokemon gBattleMons[4];
extern u32 gBattleTypeFlags;
extern struct BattlePokemon gBattleMons[4];
@@ -76,7 +65,6 @@ extern u8 gCritMultiplier;
extern u16 gBattleWeather;
extern struct BattleEnigmaBerry gEnigmaBerries[];
extern u16 gBattleMovePower;
-extern u16 gTrainerBattleOpponent_A;
extern u32 gBattleTypeFlags;
extern s32 gBattleMoveDamage;
extern u8 gUnknown_0203C7B4;
@@ -89,23 +77,19 @@ extern u8 gBankInMenu;
extern u8 gBattlerTarget;
extern u8 gBattlerAttacker;
extern u8 gStringBattler;
-extern u16 gTrainerBattleOpponent_A;
extern u32 gBattleTypeFlags;
extern u8 gBattleMonForms[4];
extern u16 gBattlerPartyIndexes[4];
extern u8 gLastUsedAbility;
-extern u16 gPartnerTrainerId;
extern u32 gHitMarker;
extern const struct SpriteTemplate gUnknown_08329D98[];
extern const struct SpriteTemplate gUnknown_08329DF8[];
-extern const union AnimCmd* gUnknown_082FF70C[];
-extern const union AnimCmd* const * const gMonAnimationsSpriteAnimsPtrTable[];
-extern const union AnimCmd* const * const gUnknown_08305D0C[];
-extern const union AnimCmd* const * const gUnknown_0830536C[];
-extern const u8 gText_BadEgg[];
-extern const u8 gText_EggNickname[];
-extern const u8 gSecretBaseTrainerClasses[][5];
+extern const union AnimCmd *gUnknown_082FF70C[];
+extern const union AnimCmd *const *const gMonAnimationsSpriteAnimsPtrTable[];
+extern const union AnimCmd *const *const gUnknown_08305D0C[];
+extern const union AnimCmd *const *const gUnknown_0830536C[];
+extern const u8 gSecretBaseFacilityClasses[][5];
extern const struct BattleMove gBattleMoves[];
extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
extern const u8 gUnknown_08329D22[];
@@ -115,68 +99,45 @@ extern const u8 gStatStageRatios[][2];
extern const struct UnknownPokemonStruct3 gUnknown_08610970[];
extern const u16 gUnknown_08329D48[];
extern const u16 gUnknown_08329D54[];
-extern const struct BattleMove gBattleMoves[];
extern const u8 gUnknown_08329D22[];
extern const u8 gUnknown_08329D26[];
extern const u8 gUnknown_08329D2A[];
extern const u8 gUnknown_08329EC2[];
-extern const u8* const gStatNamesTable[];
-extern const u8 gSpeciesNames[][11];
extern const u8 gUnknown_08329EC8[];
-extern const u8 gText_StatRose[];
-extern const u8 gText_PkmnsStatChanged2[];
-extern const u8 gText_PkmnGettingPumped[];
-extern const u8 gText_PkmnShroudedInMist[];
-extern const s8 gNatureStatTable[][5];
extern const s8 gUnknown_08329ECE[][3];
-extern const u32 gTMHMLearnsets[][2];
-extern const u8 gText_BattleWallyName[];
-extern const u8 gText_PkmnsXPreventsSwitching[];
extern const struct CompressedSpritePalette gMonPaletteTable[];
extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
extern const u16 gHMMoves[];
extern const u8 gMonAnimationDelayTable[];
extern const u8 gMonFrontAnimIdsTable[];
extern const u8 gTrainerClassNames[][13];
-extern const struct SpriteTemplate gUnknown_08329D98[];
extern const struct SpriteTemplate gUnknown_08329F28;
-extern bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 bank);
extern u8 pokemon_order_func(u8);
-extern u8 GetBattlerSide(u8 bank);
-extern u8 GetBattlerAtPosition(u8 bank);
-extern u8 GetBattlerPosition(u8 bank);
extern u16 get_unknown_box_id(void);
extern u8 StorageGetCurrentBox(void);
extern void set_unknown_box_id(u8);
-extern struct BoxPokemon* GetBoxedMonPtr(u8 boxNumber, u8 boxPosition);
-extern void sub_803FA70(u8 bank);
-extern void ClearTemporarySpeciesSpriteData(u8 bank, bool8);
-extern u32 GetBoxMonDataFromAnyBox(u8 boxNo, u8 boxPos, s32 field);
+extern void sub_803FA70(u8 battlerId);
extern u8 sav1_map_get_name(void);
extern const u8 *sub_81A1650(u8, u8 language);
extern u8 BattleFrontierGetOpponentLvl(u8);
-extern u16 sub_806EFF0(u16);
-extern bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId);
-extern bool8 sub_806F104(void);
-extern bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e);
-extern void SpriteCallbackDummy_2(struct Sprite*);
+extern u16 FacilityClassToPicIndex(u16);
extern bool8 InBattlePyramid(void);
extern bool8 InBattlePike(void);
-extern bool8 sub_81D5C18(void);
extern bool8 sub_806F104(void);
-extern bool32 IsNationalPokedexEnabled(void);
extern u8 GetTrainerEncounterMusicIdInBattlePyramind(u16 trainerOpponentId);
extern u8 sub_81D63C8(u16 trainerOpponentId);
-extern u8 sav1_map_get_name(void);
extern u8 GetFrontierOpponentClass(u16 trainerId);
-extern u8 pokemon_order_func(u8 bankPartyId);
extern void GetFrontierTrainerName(u8* dest, u16 trainerId);
extern void sub_81C488C(u8);
// this file's functions
-union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType);
-void sub_806E6CC(u8 taskId);
+static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
+static union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType);
+static void EncryptBoxMon(struct BoxPokemon *boxMon);
+static void DecryptBoxMon(struct BoxPokemon *boxMon);
+static void sub_806E6CC(u8 taskId);
+static bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 battlerId);
// EWRAM vars
EWRAM_DATA u8 sLearningMoveTableID = 0;
@@ -184,6 +145,8 @@ EWRAM_DATA u8 gPlayerPartyCount = 0;
EWRAM_DATA u8 gEnemyPartyCount = 0;
EWRAM_DATA struct Pokemon gPlayerParty[PARTY_SIZE] = {0};
EWRAM_DATA struct Pokemon gEnemyParty[PARTY_SIZE] = {0};
+EWRAM_DATA struct SpriteTemplate gUnknown_0202499C = {0};
+EWRAM_DATA struct Unknown_806F160_Struct *gUnknown_020249B4[2] = {NULL};
// const rom data
const u16 gSpeciesToHoennPokedexNum[] = {203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 156, 157, 112, 113, 227, 228, 229, 230, 231, 232, 233, 234, 153, 154, 138, 139, 63, 64, 88, 89, 90, 235, 236, 237, 238, 239, 240, 241, 242, 158, 159, 243, 244, 245, 246, 247, 248, 249, 39, 40, 41, 73, 74, 75, 250, 251, 252, 66, 67, 57, 58, 59, 253, 254, 255, 256, 82, 83, 257, 92, 93, 258, 259, 106, 107, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 84, 85, 270, 271, 272, 273, 274, 275, 276, 108, 109, 169, 170, 277, 278, 279, 184, 185, 50, 51, 143, 144, 280, 281, 282, 283, 284, 167, 285, 52, 53, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 65, 181, 182, 155, 324, 137, 325, 326, 162, 163, 327, 328, 329, 91, 55, 56, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 161, 164, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 168, 357, 358, 359, 103, 104, 360, 361, 180, 362, 363, 364, 365, 115, 366, 367, 186, 165, 166, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 42, 43, 44, 25, 26, 34, 35, 114, 27, 28, 32, 33, 99, 100, 61, 62, 145, 131, 132, 60, 105, 68, 127, 128, 183, 129, 130, 140, 141, 97, 98, 116, 117, 118, 48, 49, 78, 79, 101, 102, 173, 174, 175, 119, 120, 171, 172, 125, 126, 54, 110, 111, 80, 81, 69, 76, 77, 121, 122, 160, 148, 149, 94, 36, 37, 38, 95, 96, 150, 45, 46, 47, 176, 177, 178, 152, 146, 147, 124, 123, 179, 70, 71, 72, 142, 86, 87, 133, 134, 135, 136, 29, 30, 31, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 199, 200, 196, 197, 201, 202, 151};
@@ -781,7 +744,7 @@ bool8 sub_80688F8(u8 caseId, u8 battlerId)
return TRUE;
}
-s32 GetDeoxysStat(struct Pokemon *mon, s32 statId)
+static s32 GetDeoxysStat(struct Pokemon *mon, s32 statId)
{
s32 ivVal, evVal;
s32 statValue;
@@ -843,7 +806,7 @@ u16 sub_8068B48(void)
arrId = gLinkPlayers[linkId].trainerId & 7;
arrId |= gLinkPlayers[linkId].gender << 3;
- return sub_806EFF0(gUnknown_08329D54[arrId]);
+ return FacilityClassToPicIndex(gUnknown_08329D54[arrId]);
}
u16 sub_8068BB0(void)
@@ -878,7 +841,7 @@ void CreateObedientEnemyMon(void)
}
}
-u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon)
+static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon)
{
u16 checksum = 0;
union PokemonSubstruct *substruct0 = GetSubstruct(boxMon, boxMon->personality, 0);
@@ -1467,11 +1430,11 @@ u8 CountAliveMonsInBattle(u8 caseId)
return retVal;
}
-bool8 ShouldGetStatBadgeBoost(u16 badgeFlag, u8 bank)
+static bool8 ShouldGetStatBadgeBoost(u16 badgeFlag, u8 battlerId)
{
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER))
return FALSE;
- if (GetBattlerSide(bank) != B_SIDE_PLAYER)
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
return FALSE;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
return FALSE;
@@ -1480,29 +1443,29 @@ bool8 ShouldGetStatBadgeBoost(u16 badgeFlag, u8 bank)
return FALSE;
}
-u8 GetDefaultMoveTarget(u8 bank)
+u8 GetDefaultMoveTarget(u8 battlerId)
{
- u8 status = GetBattlerPosition(bank) & 1;
+ u8 opposing = BATTLE_OPPOSITE(GetBattlerPosition(battlerId) & BIT_SIDE);
- status ^= 1;
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
- return GetBattlerAtPosition(status);
+ return GetBattlerAtPosition(opposing);
if (CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_ACTIVE) > 1)
{
- u8 val;
+ u8 position;
if ((Random() & 1) == 0)
- val = status ^ 2;
+ position = BATTLE_PARTNER(opposing);
else
- val = status;
- return GetBattlerAtPosition(val);
+ position = opposing;
+
+ return GetBattlerAtPosition(position);
}
else
{
- if ((gAbsentBattlerFlags & gBitTable[status]))
- return GetBattlerAtPosition(status ^ 2);
+ if ((gAbsentBattlerFlags & gBitTable[opposing]))
+ return GetBattlerAtPosition(BATTLE_PARTNER(opposing));
else
- return GetBattlerAtPosition(status);
+ return GetBattlerAtPosition(opposing);
}
}
@@ -1546,19 +1509,19 @@ u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality)
return MON_MALE;
}
-void sub_806A068(u16 species, u8 bankIdentity)
+void sub_806A068(u16 species, u8 battlerPosition)
{
if (gMonSpritesGfxPtr != NULL)
- gUnknown_0202499C = gMonSpritesGfxPtr->templates[bankIdentity];
+ gUnknown_0202499C = gMonSpritesGfxPtr->templates[battlerPosition];
else if (gUnknown_020249B4[0])
- gUnknown_0202499C = gUnknown_020249B4[0]->templates[bankIdentity];
+ gUnknown_0202499C = gUnknown_020249B4[0]->templates[battlerPosition];
else if (gUnknown_020249B4[1])
- gUnknown_0202499C = gUnknown_020249B4[1]->templates[bankIdentity];
+ gUnknown_0202499C = gUnknown_020249B4[1]->templates[battlerPosition];
else
- gUnknown_0202499C = gUnknown_08329D98[bankIdentity];
+ gUnknown_0202499C = gUnknown_08329D98[battlerPosition];
gUnknown_0202499C.paletteTag = species;
- if (bankIdentity == 0 || bankIdentity == 2)
+ if (battlerPosition == 0 || battlerPosition == 2)
gUnknown_0202499C.anims = gUnknown_082FF70C;
else if (species > 500)
gUnknown_0202499C.anims = gMonAnimationsSpriteAnimsPtrTable[species - 500];
@@ -1566,10 +1529,10 @@ void sub_806A068(u16 species, u8 bankIdentity)
gUnknown_0202499C.anims = gMonAnimationsSpriteAnimsPtrTable[species];
}
-void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity)
+void sub_806A12C(u16 trainerSpriteId, u8 battlerPosition)
{
gUnknown_0202499C.paletteTag = trainerSpriteId;
- if (bankIdentity == 0 || bankIdentity == 2)
+ if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT)
{
gUnknown_0202499C = gUnknown_08329DF8[trainerSpriteId];
gUnknown_0202499C.anims = gUnknown_08305D0C[trainerSpriteId];
@@ -1577,25 +1540,25 @@ void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity)
else
{
if (gMonSpritesGfxPtr != NULL)
- gUnknown_0202499C = gMonSpritesGfxPtr->templates[bankIdentity];
+ gUnknown_0202499C = gMonSpritesGfxPtr->templates[battlerPosition];
else
- gUnknown_0202499C = gUnknown_08329D98[bankIdentity];
+ gUnknown_0202499C = gUnknown_08329D98[battlerPosition];
gUnknown_0202499C.anims = gUnknown_0830536C[trainerSpriteId];
}
}
-void sub_806A1C0(u16 arg0, u8 bankIdentity)
+void sub_806A1C0(u16 arg0, u8 battlerPosition)
{
if (gMonSpritesGfxPtr != NULL)
- gUnknown_0202499C = gMonSpritesGfxPtr->templates[bankIdentity];
+ gUnknown_0202499C = gMonSpritesGfxPtr->templates[battlerPosition];
else
- gUnknown_0202499C = gUnknown_08329D98[bankIdentity];
+ gUnknown_0202499C = gUnknown_08329D98[battlerPosition];
gUnknown_0202499C.paletteTag = arg0;
gUnknown_0202499C.anims = gUnknown_0830536C[arg0];
}
-void EncryptBoxMon(struct BoxPokemon *boxMon)
+static void EncryptBoxMon(struct BoxPokemon *boxMon)
{
u32 i;
for (i = 0; i < 12; i++)
@@ -1605,7 +1568,7 @@ void EncryptBoxMon(struct BoxPokemon *boxMon)
}
}
-void DecryptBoxMon(struct BoxPokemon *boxMon)
+static void DecryptBoxMon(struct BoxPokemon *boxMon)
{
u32 i;
for (i = 0; i < 12; i++)
@@ -1662,7 +1625,7 @@ case n: \
} \
-union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType)
+static union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType)
{
union PokemonSubstruct *substruct = NULL;
@@ -2446,12 +2409,13 @@ u8 GiveMonToPlayer(struct Pokemon *mon)
SetMonData(mon, MON_DATA_OT_GENDER, &gSaveBlock2Ptr->playerGender);
SetMonData(mon, MON_DATA_OT_ID, gSaveBlock2Ptr->playerTrainerId);
- i = 0;
-
- while (i < 6 && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL) != SPECIES_NONE)
- i++;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL) == SPECIES_NONE)
+ break;
+ }
- if (i >= 6)
+ if (i >= PARTY_SIZE)
return SendMonToPC(mon);
CopyMon(&gPlayerParty[i], mon, sizeof(*mon));
@@ -2611,21 +2575,21 @@ void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord)
u8 GetSecretBaseTrainerPicIndex(void)
{
- u8 trainerClass = gSecretBaseTrainerClasses[gBattleResources->secretBase->gender][gBattleResources->secretBase->trainerId[0] % 5];
- return gFacilityClassToPicIndex[trainerClass];
+ u8 facilityClass = gSecretBaseFacilityClasses[gBattleResources->secretBase->gender][gBattleResources->secretBase->trainerId[0] % 5];
+ return gFacilityClassToPicIndex[facilityClass];
}
-u8 GetSecretBaseTrainerNameIndex(void)
+u8 GetSecretBaseTrainerClass(void)
{
- u8 trainerClass = gSecretBaseTrainerClasses[gBattleResources->secretBase->gender][gBattleResources->secretBase->trainerId[0] % 5];
- return gFacilityClassToTrainerClass[trainerClass];
+ u8 facilityClass = gSecretBaseFacilityClasses[gBattleResources->secretBase->gender][gBattleResources->secretBase->trainerId[0] % 5];
+ return gFacilityClassToTrainerClass[facilityClass];
}
bool8 IsPlayerPartyAndPokemonStorageFull(void)
{
s32 i;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL) == SPECIES_NONE)
return FALSE;
@@ -2680,62 +2644,62 @@ void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex)
mon->ppBonuses &= gUnknown_08329D26[moveIndex];
}
-void CopyPlayerPartyMonToBattleData(u8 bank, u8 partyIndex)
+void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex)
{
u16* hpSwitchout;
s32 i;
u8 nickname[POKEMON_NAME_LENGTH * 2];
- gBattleMons[bank].species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES, NULL);
- gBattleMons[bank].item = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HELD_ITEM, NULL);
+ gBattleMons[battlerId].species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES, NULL);
+ gBattleMons[battlerId].item = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HELD_ITEM, NULL);
for (i = 0; i < 4; i++)
{
- gBattleMons[bank].moves[i] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE1 + i, NULL);
- gBattleMons[bank].pp[i] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PP1 + i, NULL);
- }
-
- gBattleMons[bank].ppBonuses = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PP_BONUSES, NULL);
- gBattleMons[bank].friendship = GetMonData(&gPlayerParty[partyIndex], MON_DATA_FRIENDSHIP, NULL);
- gBattleMons[bank].experience = GetMonData(&gPlayerParty[partyIndex], MON_DATA_EXP, NULL);
- gBattleMons[bank].hpIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HP_IV, NULL);
- gBattleMons[bank].attackIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ATK_IV, NULL);
- gBattleMons[bank].defenseIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_DEF_IV, NULL);
- gBattleMons[bank].speedIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPEED_IV, NULL);
- gBattleMons[bank].spAttackIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPATK_IV, NULL);
- gBattleMons[bank].spDefenseIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPDEF_IV, NULL);
- gBattleMons[bank].personality = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PERSONALITY, NULL);
- gBattleMons[bank].status1 = GetMonData(&gPlayerParty[partyIndex], MON_DATA_STATUS, NULL);
- gBattleMons[bank].level = GetMonData(&gPlayerParty[partyIndex], MON_DATA_LEVEL, NULL);
- gBattleMons[bank].hp = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HP, NULL);
- gBattleMons[bank].maxHP = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MAX_HP, NULL);
- gBattleMons[bank].attack = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ATK, NULL);
- gBattleMons[bank].defense = GetMonData(&gPlayerParty[partyIndex], MON_DATA_DEF, NULL);
- gBattleMons[bank].speed = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPEED, NULL);
- gBattleMons[bank].spAttack = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPATK, NULL);
- gBattleMons[bank].spDefense = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPDEF, NULL);
- gBattleMons[bank].isEgg = GetMonData(&gPlayerParty[partyIndex], MON_DATA_IS_EGG, NULL);
- gBattleMons[bank].altAbility = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ALT_ABILITY, NULL);
- gBattleMons[bank].otId = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_ID, NULL);
- gBattleMons[bank].type1 = gBaseStats[gBattleMons[bank].species].type1;
- gBattleMons[bank].type2 = gBaseStats[gBattleMons[bank].species].type2;
- gBattleMons[bank].ability = GetAbilityBySpecies(gBattleMons[bank].species, gBattleMons[bank].altAbility);
+ gBattleMons[battlerId].moves[i] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE1 + i, NULL);
+ gBattleMons[battlerId].pp[i] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PP1 + i, NULL);
+ }
+
+ gBattleMons[battlerId].ppBonuses = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PP_BONUSES, NULL);
+ gBattleMons[battlerId].friendship = GetMonData(&gPlayerParty[partyIndex], MON_DATA_FRIENDSHIP, NULL);
+ gBattleMons[battlerId].experience = GetMonData(&gPlayerParty[partyIndex], MON_DATA_EXP, NULL);
+ gBattleMons[battlerId].hpIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HP_IV, NULL);
+ gBattleMons[battlerId].attackIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ATK_IV, NULL);
+ gBattleMons[battlerId].defenseIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_DEF_IV, NULL);
+ gBattleMons[battlerId].speedIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPEED_IV, NULL);
+ gBattleMons[battlerId].spAttackIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPATK_IV, NULL);
+ gBattleMons[battlerId].spDefenseIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPDEF_IV, NULL);
+ gBattleMons[battlerId].personality = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PERSONALITY, NULL);
+ gBattleMons[battlerId].status1 = GetMonData(&gPlayerParty[partyIndex], MON_DATA_STATUS, NULL);
+ gBattleMons[battlerId].level = GetMonData(&gPlayerParty[partyIndex], MON_DATA_LEVEL, NULL);
+ gBattleMons[battlerId].hp = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HP, NULL);
+ gBattleMons[battlerId].maxHP = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MAX_HP, NULL);
+ gBattleMons[battlerId].attack = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ATK, NULL);
+ gBattleMons[battlerId].defense = GetMonData(&gPlayerParty[partyIndex], MON_DATA_DEF, NULL);
+ gBattleMons[battlerId].speed = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPEED, NULL);
+ gBattleMons[battlerId].spAttack = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPATK, NULL);
+ gBattleMons[battlerId].spDefense = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPDEF, NULL);
+ gBattleMons[battlerId].isEgg = GetMonData(&gPlayerParty[partyIndex], MON_DATA_IS_EGG, NULL);
+ gBattleMons[battlerId].altAbility = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ALT_ABILITY, NULL);
+ gBattleMons[battlerId].otId = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_ID, NULL);
+ gBattleMons[battlerId].type1 = gBaseStats[gBattleMons[battlerId].species].type1;
+ gBattleMons[battlerId].type2 = gBaseStats[gBattleMons[battlerId].species].type2;
+ gBattleMons[battlerId].ability = GetAbilityBySpecies(gBattleMons[battlerId].species, gBattleMons[battlerId].altAbility);
GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, nickname);
- StringCopy10(gBattleMons[bank].nickname, nickname);
- GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_NAME, gBattleMons[bank].otName);
+ StringCopy10(gBattleMons[battlerId].nickname, nickname);
+ GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_NAME, gBattleMons[battlerId].otName);
- hpSwitchout = &gBattleStruct->hpOnSwitchout[GetBattlerSide(bank)];
- *hpSwitchout = gBattleMons[bank].hp;
+ hpSwitchout = &gBattleStruct->hpOnSwitchout[GetBattlerSide(battlerId)];
+ *hpSwitchout = gBattleMons[battlerId].hp;
for (i = 0; i < 8; i++)
- gBattleMons[bank].statStages[i] = 6;
+ gBattleMons[battlerId].statStages[i] = 6;
- gBattleMons[bank].status2 = 0;
- sub_803FA70(bank);
- ClearTemporarySpeciesSpriteData(bank, FALSE);
+ gBattleMons[battlerId].status2 = 0;
+ sub_803FA70(battlerId);
+ ClearTemporarySpeciesSpriteData(battlerId, FALSE);
}
-bool8 ExecuteTableBasedItemEffect_(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex)
+bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex)
{
return PokemonUseItemEffects(mon, item, partyIndex, moveIndex, 0);
}
@@ -3282,7 +3246,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
return retVal;
}
-bool8 HealStatusConditions(struct Pokemon *mon, u32 battlePartyId, u32 healMask, u8 battleBank)
+bool8 HealStatusConditions(struct Pokemon *mon, u32 battlePartyId, u32 healMask, u8 battlerId)
{
u32 status = GetMonData(mon, MON_DATA_STATUS, 0);
@@ -3290,8 +3254,8 @@ bool8 HealStatusConditions(struct Pokemon *mon, u32 battlePartyId, u32 healMask,
{
status &= ~healMask;
SetMonData(mon, MON_DATA_STATUS, &status);
- if (gMain.inBattle && battleBank != 4)
- gBattleMons[battleBank].status1 &= ~healMask;
+ if (gMain.inBattle && battlerId != MAX_BATTLERS_COUNT)
+ gBattleMons[battlerId].status1 &= ~healMask;
return FALSE;
}
else
@@ -3413,7 +3377,7 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
return offset;
}
-void sub_806CF24(s32 stat)
+static void sub_806CF24(s32 stat)
{
gBattlerTarget = gBankInMenu;
StringCopy(gBattleTextBuff1, gStatNamesTable[gUnknown_08329EC8[stat]]);
@@ -4341,7 +4305,7 @@ bool32 sub_806E3F8(u16 species)
void ClearBattleMonForms(void)
{
int i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
gBattleMonForms[i] = 0;
}
@@ -4429,7 +4393,7 @@ void sub_806E694(u16 songId)
gTasks[taskId].data[0] = songId;
}
-void sub_806E6CC(u8 taskId)
+static void sub_806E6CC(u8 taskId)
{
if (gTasks[taskId].data[0])
PlayNewMapMusic(gTasks[taskId].data[0]);
@@ -4466,7 +4430,7 @@ const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32
return gMonPaletteTable[species].data;
}
-const struct CompressedSpritePalette *sub_806E794(struct Pokemon *mon)
+const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
@@ -4496,7 +4460,7 @@ bool32 IsHMMove2(u16 move)
return FALSE;
}
-bool8 IsPokeSpriteNotFlipped(u16 species)
+bool8 IsMonSpriteNotFlipped(u16 species)
{
return gBaseStats[species].noFlip;
}
@@ -4847,17 +4811,17 @@ u8 sub_806EF84(u8 arg0, u8 arg1)
return i;
}
-u16 sub_806EFF0(u16 arg0)
+u16 FacilityClassToPicIndex(u16 facilityClass)
{
- return gFacilityClassToPicIndex[arg0];
+ return gFacilityClassToPicIndex[facilityClass];
}
u16 PlayerGenderToFrontTrainerPicId(u8 playerGender)
{
if (playerGender)
- return sub_806EFF0(0x3F);
+ return FacilityClassToPicIndex(FACILITY_CLASS_PKMN_TRAINER_5);
else
- return sub_806EFF0(0x3C);
+ return FacilityClassToPicIndex(FACILITY_CLASS_PKMN_TRAINER_2);
}
void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality)
@@ -4906,7 +4870,7 @@ bool8 sub_806F104(void)
#define FORCE_SIGNED(x)(-(x * (-1)))
-void sub_806F160(struct Unknown_806F160_Struct* structPtr)
+static void sub_806F160(struct Unknown_806F160_Struct* structPtr)
{
u16 i, j;
for (i = 0; i < FORCE_SIGNED(structPtr->field_0_0); i++)
@@ -4921,7 +4885,7 @@ void sub_806F160(struct Unknown_806F160_Struct* structPtr)
}
}
-void sub_806F1FC(struct Unknown_806F160_Struct* structPtr)
+static void sub_806F1FC(struct Unknown_806F160_Struct* structPtr)
{
u16 i, j;
for (i = 0; i < FORCE_SIGNED(structPtr->field_0_0); i++)
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 925b65de5..069a85d38 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -30,7 +30,6 @@ extern u32 gBattleTypeFlags;
extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
-extern struct SpriteTemplate gUnknown_0202499C;
extern const union AnimCmd * const * const gMonAnimationsSpriteAnimsPtrTable[];
diff --git a/sym_ewram.txt b/sym_ewram.txt
index fb7c7a4e7..3905b83c7 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -522,14 +522,7 @@ gMoveToLearn: @ 20244E2
gBattleMonForms: @ 20244E4
.space 0x4
- .include "src/pokemon_1.o"
-
-gUnknown_0202499C: @ 202499C
- .space 0x18
-
-gUnknown_020249B4: @ 20249B4
- .space 0x8
-
+ .include "src/pokemon.o"
.include "src/random.o"
.include "src/daycare.o"
.include "src/load_save.o"