diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/battle.h | 34 | ||||
| -rw-r--r-- | include/battle_2.h | 1 | ||||
| -rw-r--r-- | include/battle_ai_script_commands.h | 2 | ||||
| -rw-r--r-- | include/battle_util.h | 1 | ||||
| -rw-r--r-- | include/constants/battle.h | 2 | ||||
| -rw-r--r-- | include/data2.h | 28 | ||||
| -rw-r--r-- | include/field_specials.h | 2 | ||||
| -rw-r--r-- | include/party_menu.h | 1 | ||||
| -rw-r--r-- | include/pokemon.h | 145 | ||||
| -rw-r--r-- | include/pokemon_3.h | 12 | ||||
| -rw-r--r-- | include/pokemon_storage_system.h | 1 | ||||
| -rw-r--r-- | include/strings.h | 11 |
12 files changed, 110 insertions, 130 deletions
diff --git a/include/battle.h b/include/battle.h index 2e6d251c3..277f79c51 100644 --- a/include/battle.h +++ b/include/battle.h @@ -33,39 +33,6 @@ #define GET_BANK_SIDE(bank)((GetBattlerPosition(bank) & BIT_SIDE)) #define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE)) -#define BATTLE_TYPE_DOUBLE 0x0001 -#define BATTLE_TYPE_LINK 0x0002 -#define BATTLE_TYPE_WILD 0x0004 -#define BATTLE_TYPE_TRAINER 0x0008 -#define BATTLE_TYPE_FIRST_BATTLE 0x0010 -#define BATTLE_TYPE_20 0x0020 -#define BATTLE_TYPE_MULTI 0x0040 -#define BATTLE_TYPE_SAFARI 0x0080 -#define BATTLE_TYPE_BATTLE_TOWER 0x0100 -#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200 -#define BATTLE_TYPE_ROAMER 0x0400 -#define BATTLE_TYPE_EREADER_TRAINER 0x0800 -#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 -#define BATTLE_TYPE_LEGENDARY 0x2000 -#define BATTLE_TYPE_REGI 0x4000 -#define BATTLE_TYPE_TWO_OPPONENTS 0x8000 -#define BATTLE_TYPE_DOME 0x10000 // this is used in pokemon.c, but its clearly not the correct name for FR/LG. TODO: Fix these -#define BATTLE_TYPE_PALACE 0x20000 -#define BATTLE_TYPE_ARENA 0x40000 -#define BATTLE_TYPE_FACTORY 0x80000 -#define BATTLE_TYPE_x100000 0x100000 -#define BATTLE_TYPE_PYRAMID 0x200000 -#define BATTLE_TYPE_INGAME_PARTNER 0x400000 -#define BATTLE_TYPE_x800000 0x800000 -#define BATTLE_TYPE_RECORDED 0x1000000 -#define BATTLE_TYPE_x2000000 0x2000000 -#define BATTLE_TYPE_x4000000 0x4000000 -#define BATTLE_TYPE_SECRET_BASE 0x8000000 -#define BATTLE_TYPE_GROUDON 0x10000000 -#define BATTLE_TYPE_KYORGE 0x20000000 -#define BATTLE_TYPE_RAYQUAZA 0x40000000 -#define BATTLE_TYPE_x80000000 0x80000000 - #define TRAINER_OPPONENT_3FE 0x3FE #define TRAINER_OPPONENT_C00 0xC00 #define TRAINER_OPPONENT_800 0x800 @@ -984,5 +951,6 @@ extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT]; extern s32 gBattleMoveDamage; extern u8 gBattleOutcome; +extern u8 gBattleMonForms[MAX_BATTLERS_COUNT]; #endif // GUARD_BATTLE_H diff --git a/include/battle_2.h b/include/battle_2.h index 1f7a2304d..cb9247372 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -44,6 +44,7 @@ void RunBattleScriptCommands_PopCallbacksStack(void); void RunBattleScriptCommands(void); bool8 TryRunFromBattle(u8 bank); void sub_800FD9C(void); +void sub_80120C4(struct Sprite *); extern const u8 gStatusConditionString_PoisonJpn[8]; extern const u8 gStatusConditionString_SleepJpn[8]; diff --git a/include/battle_ai_script_commands.h b/include/battle_ai_script_commands.h index 5f8c4419b..3786d4a8c 100644 --- a/include/battle_ai_script_commands.h +++ b/include/battle_ai_script_commands.h @@ -3,6 +3,8 @@ #include "global.h" +extern u8 sBattler_AI; + void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves); void BattleAI_SetupAIData(u8 defaultScoreMoves); u8 BattleAI_ChooseMoveOrAction(void); diff --git a/include/battle_util.h b/include/battle_util.h index ed070720d..a062f0743 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -87,5 +87,6 @@ void HandleAction_RunBattleScript(void); u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 IsMonDisobedient(void); void MarkBufferBankForExecution(u8 battlerId); +void sub_80174B8(u8 battlerId); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/constants/battle.h b/include/constants/battle.h index 074c0d0cd..3b765eede 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -59,7 +59,7 @@ #define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 #define BATTLE_TYPE_LEGENDARY 0x2000 #define BATTLE_TYPE_REGI 0x4000 -#define BATTLE_TYPE_TWO_OPPONENTS 0x8000 +#define BATTLE_TYPE_GHOST 0x8000 #define BATTLE_TYPE_DOME 0x10000 #define BATTLE_TYPE_PALACE 0x20000 #define BATTLE_TYPE_ARENA 0x40000 diff --git a/include/data2.h b/include/data2.h index e383b1c9a..5601fc16c 100644 --- a/include/data2.h +++ b/include/data2.h @@ -18,5 +18,33 @@ extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const u8 gMoveNames[][13]; extern const u8 gAbilityNames[][13]; extern const u8 gTypeNames[][7]; +extern u16 gUnknown_8251CB8[]; +extern u16 gUnknown_8251FEE[]; +extern u16 gUnknown_8252324[]; +extern u16 gUnknown_82539D4[]; +extern struct SpindaSpot gSpindaSpotGraphics[]; +extern s8 gNatureStatTable[][5]; +extern u32 gTMHMLearnsets[][2]; + +extern const struct CompressedSpritePalette gMonPaletteTable[]; +extern const struct CompressedSpritePalette gMonShinyPaletteTable[]; +extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[]; +extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[]; + +extern const struct OamData gUnknown_824F010; +extern const struct OamData gUnknown_824F018; +extern const union AnimCmd *const gUnknown_82349BC[]; +extern const union AffineAnimCmd *const gUnknown_82348C8[]; +extern const union AffineAnimCmd *const gUnknown_8234944[]; +extern const struct SpriteFrameImage gUnknown_8234698[]; +extern const struct SpriteFrameImage gUnknown_82346B8[]; +extern const struct SpriteFrameImage gUnknown_82346D8[]; +extern const struct SpriteFrameImage gUnknown_82346F8[]; +extern const struct SpriteFrameImage gUnknown_8234718[]; +extern const struct SpriteFrameImage gUnknown_8234740[]; +extern const struct SpriteFrameImage gUnknown_8234768[]; +extern const struct SpriteFrameImage gUnknown_8234788[]; +extern const struct SpriteFrameImage gUnknown_82347A8[]; +extern const struct SpriteFrameImage gUnknown_82347C8[]; #endif // GUARD_DATA2_H diff --git a/include/field_specials.h b/include/field_specials.h index 0e4fdd787..a82cb20a2 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -11,5 +11,7 @@ void sub_80CCB68(void); void nullsub_60(void); void nullsub_61(void); u8 ContextNpcGetTextColor(void); +void set_unknown_box_id(u8); +u16 get_unknown_box_id(void); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/party_menu.h b/include/party_menu.h index 3b620c3b0..e4fc182e9 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -61,5 +61,6 @@ void sub_8126894(u8 taskId, TaskFunc followUpFunc); void sub_81279E0(void); void ItemUseCB_Medicine(u8 taskId, TaskFunc followUpFunc); u8 GetItemEffectType(u16 itemId); +u8 pokemon_order_func(u8); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon.h b/include/pokemon.h index 558eedc67..e84778fa3 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -2,6 +2,7 @@ #define GUARD_POKEMON_H #include "global.h" +#include "sprite.h" #define MON_DATA_PERSONALITY 0 #define MON_DATA_OT_ID 1 @@ -545,30 +546,26 @@ void CreateMonWithNature(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 gender, u8 nature, u8 unownLetter); 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 CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src); +void sub_803E23C(struct Pokemon *mon, struct BattleTowerPokemon *dest); void CalculateMonStats(struct Pokemon *mon); -u8 GetLevelFromMonExp(struct Pokemon *mon); +void BoxMonToMon(struct BoxPokemon *src, struct Pokemon *dest); 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); -bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex); -bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e); - +s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 battlerIdAtk, u8 battlerIdDef); +u8 CountAliveMons(u8 a1); +u8 GetDefaultMoveTarget(u8 a1); 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 SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition); +void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition); // These are full type signatures for GetMonData() and GetBoxMonData(), // but they are not used since some code erroneously omits the third arg. @@ -583,101 +580,81 @@ u32 GetMonData(); u32 GetBoxMonData(); #endif // IS_POKEMON_C -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 CalculatePlayerPartyCount(void); u8 CalculateEnemyPartyCount(void); - +u8 GetMonsStateToDoubles(void); u8 GetAbilityBySpecies(u16 species, bool8 altAbility); u8 GetMonAbility(struct Pokemon *mon); -void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord); u8 GetSecretBaseTrainerPicIndex(void); u8 GetSecretBaseTrainerNameIndex(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); - +bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex); +bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e); +bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e); +u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); +const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId); u8 GetNature(struct Pokemon *mon); -u8 GetNatureFromPersonality(u32 personality); - -u16 nature_stat_mod(u8 nature, u16 n, u8 statIndex); - -void MonRestorePP(struct Pokemon *); -void BoxMonRestorePP(struct BoxPokemon *); - +u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem); u16 NationalPokedexNumToSpecies(u16 nationalNum); -u16 NationalToHoennOrder(u16); -u16 SpeciesToNationalPokedexNum(u16); -u16 HoennToNationalOrder(u16); +u16 SpeciesToNationalPokedexNum(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); +void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4); +void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); +bool8 sub_80435E0(void); +bool8 GetLinkTrainerFlankId(u8 linkPlayerId); +s32 GetBankMultiplayerId(u16 a1); +u8 GetTrainerEncounterMusicId(u16 trainer); +void AdjustFriendship(struct Pokemon *mon, u8 event); +void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies); +u16 GetMonEVCount(struct Pokemon *mon); +void sub_8043A68(void); +u8 CheckPartyPokerus(struct Pokemon *party, u8 selection); +u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); +void sub_8043B40(void); +bool8 TryIncrementMonLevel(struct Pokemon *mon); +u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm); u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); +u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves); +u8 GetNumberOfRelearnableMoves(struct Pokemon *mon); +u16 sub_8043F90(u16 species); void ClearBattleMonForms(void); +void PlayBattleBGM(void); +void PlayMapChosenOrBattleBGM(u16 songId); const u32 *GetMonFrontSpritePal(struct Pokemon *mon); -const u32 *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 u32 *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 IsPokeSpriteNotFlipped(u16 species); -bool8 IsMonShiny(struct Pokemon *mon); -bool8 IsShinyOtIdPersonality(u32 otId, u32 personality); - -void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies); +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_8044348(void); +void SetWildMonHeldItem(void); +bool8 IsMonShiny(struct Pokemon *mon); +u8 *GetTrainerPartnerName(void); +u8 GetPlayerPartyHighestLevel(void); +u16 FacilityClassToPicIndex(u16 facilityClass); +bool8 sub_804455C(u8 caseId, u8 battlerId); +void SetDeoxysStats(void); +u16 sub_80447AC(void); +u16 sub_80447F0(void); +void CreateObedientEnemyMon(void); void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality); -s32 GetBankMultiplayerId(u16 a1); -bool16 sub_806D82C(u8 id); -u16 MonTryLearningNewMove(struct Pokemon* mon, bool8); -void sub_8068AA4(void); // sets stats for deoxys -bool8 HasTwoFramesAnimation(u16 species); -u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem); -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(struct BoxPokemon *srcMon, struct Pokemon *dstMon); -u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves); -bool8 HealStatusConditions(struct Pokemon *mon, u32 battlePartyId, u32 healMask, u8 battlerId); - -#include "sprite.h" - -void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); -void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); -void BattleAnimateBackSprite(struct Sprite* sprite, u16 species); - -void PlayMapChosenOrBattleBGM(u16 songId); -u8 GetMonsStateToDoubles(void); -void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src); -void SetMultiuseSpriteTemplateToPokemon(u16 trainerSpriteId, u8 battlerPosition); - -const u8 * Battle_PrintStatBoosterEffectMessage(u16 itemId); +bool8 CheckBattleTypeGhost(struct Pokemon *mon, u8 bank); +struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 enable); +void OakSpeechNidoranFFreeResources(void); +void *OakSpeechNidoranFGetBuffer(u8 bufferId); #endif // GUARD_POKEMON_H diff --git a/include/pokemon_3.h b/include/pokemon_3.h deleted file mode 100644 index e65bc85fc..000000000 --- a/include/pokemon_3.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef GUARD_POKEMON_3_H -#define GUARD_POKEMON_3_H - -#include "global.h" - -const u8* GetTrainerClassNameFromId(u16 trainerId); -const u8* GetTrainerNameFromId(u16 trainerId); -void * SetUpMonSpriteManagerMaybe(u8, u8); -void sub_8044D80(void); -void * sub_8044E00(u8 buffId); - -#endif // GUARD_POKEMON_3_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index f2fbe85a7..8ab9e5f0e 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -14,5 +14,6 @@ u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request); void sub_808BCB4(u8 boxId, u8 monPosition); u8 * GetBoxNamePtr(u8 boxId); void sub_808CE60(void); +u8 StorageGetCurrentBox(void); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/strings.h b/include/strings.h index 8fb15be76..70d30b230 100644 --- a/include/strings.h +++ b/include/strings.h @@ -177,6 +177,17 @@ extern const u8 gUnknown_84166A7[]; extern const u8 gUnknown_84169DC[]; extern const u8 gUnknown_841623D[]; extern const u8 gUnknown_84162BD[]; +extern const u8 gUnknown_841D148[]; + +// pokemon.c +extern const u8 BattleText_Rose[]; +extern const u8 BattleText_UnknownString3[]; +extern const u8 BattleText_GetPumped[]; +extern const u8 BattleText_MistShroud[]; +extern const u8 gText_EggNickname[]; +extern const u8 gText_BadEgg[]; +extern const u8 gText_PkmnsXPreventsSwitching[]; +extern u8 *gUnknown_83FD5D0[]; // diploma extern const u8 gUnknown_841B60E[]; |
