Merge branch 'master' of https://github.com/pret/pokeemerald into porymap-6
This commit is contained in:
@@ -1,41 +1,49 @@
|
||||
#ifndef GUARD_BARD_MUSIC_H
|
||||
#define GUARD_BARD_MUSIC_H
|
||||
|
||||
#define BARD_SOUND_MAX_LENGTH 6
|
||||
// The maximum number of BardSoundTemplates/BardSounds there can be for each easy chat word.
|
||||
#define MAX_BARD_SOUNDS_PER_WORD 6
|
||||
|
||||
struct BardSound
|
||||
// The number of pitch tables there are for each pitch table size (see sPitchTables).
|
||||
#define NUM_BARD_PITCH_TABLES_PER_SIZE 5
|
||||
|
||||
// This struct describes which phoneme song to play for the sound, and whether to
|
||||
// make any adjustments to its length or volume. Very few sounds make any adjustments.
|
||||
struct BardSoundTemplate
|
||||
{
|
||||
/*0x00*/ u8 songLengthId;
|
||||
/*0x01*/ s8 songLengthOffset;
|
||||
/*0x02*/ u16 unused;
|
||||
/*0x04*/ s16 volume;
|
||||
/*0x06*/ u16 unused2;
|
||||
u8 songId;
|
||||
s8 lengthAdjustment;
|
||||
u16 unused; // Only set on EC_WORD_WAAAH, and never read.
|
||||
s16 volume;
|
||||
};
|
||||
|
||||
struct BardPhoneme
|
||||
// This is the length and pitch to play the phoneme song at.
|
||||
// These will be calculated in 'CalcWordSounds'.
|
||||
struct BardSound
|
||||
{
|
||||
/*0x00*/ u16 length;
|
||||
/*0x02*/ u16 pitch;
|
||||
u16 length;
|
||||
u16 pitch;
|
||||
};
|
||||
|
||||
struct BardSong
|
||||
{
|
||||
/*0x00*/ u8 currWord;
|
||||
/*0x01*/ u8 currPhoneme;
|
||||
/*0x02*/ u8 phonemeTimer;
|
||||
/*0x03*/ u8 state;
|
||||
/*0x04*/ s16 length;
|
||||
/*0x06*/ u16 volume;
|
||||
/*0x08*/ s16 pitch;
|
||||
/*0x0A*/ s16 voiceInflection;
|
||||
/*0x0C*/ u16 lyrics[BARD_SOUND_MAX_LENGTH];
|
||||
/*0x18*/ struct BardPhoneme phonemes[BARD_SOUND_MAX_LENGTH];
|
||||
/*0x30*/ const struct BardSound *sound;
|
||||
u8 lyricsIndex;
|
||||
u8 soundIndex;
|
||||
u8 timer;
|
||||
u8 state;
|
||||
s16 length; // Length of the sound for the word currently being sung (i.e. the sum of 'length' in all the current word's phonemes).
|
||||
u16 volume;
|
||||
s16 pitch;
|
||||
s16 voiceInflection;
|
||||
u16 lyrics[NUM_BARD_SONG_WORDS];
|
||||
struct BardSound sounds[MAX_BARD_SOUNDS_PER_WORD];
|
||||
const struct BardSoundTemplate *soundTemplates;
|
||||
};
|
||||
|
||||
extern const u16 gNumBardWords_Species;
|
||||
extern const u16 gNumBardWords_Moves;
|
||||
const struct BardSound *GetWordSounds(u16 word);
|
||||
void GetWordPhonemes(struct BardSong *song, u16 word);
|
||||
|
||||
const struct BardSoundTemplate *GetWordSoundTemplates(u16 easyChatWord);
|
||||
void CalcWordSounds(struct BardSong *song, u16 pitchTableIndex);
|
||||
|
||||
#endif //GUARD_BARD_MUSIC_H
|
||||
|
||||
@@ -465,11 +465,11 @@ STATIC_ASSERT(sizeof(((struct BattleStruct *)0)->palaceFlags) * 8 >= MAX_BATTLER
|
||||
|
||||
#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0))
|
||||
|
||||
#define IS_BATTLER_OF_TYPE(battlerId, type) ((gBattleMons[battlerId].types[0] == type || gBattleMons[battlerId].types[1] == type))
|
||||
#define SET_BATTLER_TYPE(battlerId, type) \
|
||||
#define IS_BATTLER_OF_TYPE(battler, type) ((gBattleMons[battler].types[0] == type || gBattleMons[battler].types[1] == type))
|
||||
#define SET_BATTLER_TYPE(battler, type) \
|
||||
{ \
|
||||
gBattleMons[battlerId].types[0] = type; \
|
||||
gBattleMons[battlerId].types[1] = type; \
|
||||
gBattleMons[battler].types[0] = type; \
|
||||
gBattleMons[battler].types[1] = type; \
|
||||
}
|
||||
|
||||
#define GET_STAT_BUFF_ID(n) ((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
|
||||
@@ -626,7 +626,7 @@ extern u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT];
|
||||
extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT];
|
||||
extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT];
|
||||
extern u32 gBattleTypeFlags;
|
||||
extern u8 gBattleTerrain;
|
||||
extern u8 gBattleEnvironment;
|
||||
extern u32 gUnusedFirstBattleVar1;
|
||||
extern u8 *gBattleAnimBgTileBuffer;
|
||||
extern u8 *gBattleAnimBgTilemapBuffer;
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves);
|
||||
void BattleAI_SetupAIData(u8 defaultScoreMoves);
|
||||
u8 BattleAI_ChooseMoveOrAction(void);
|
||||
void ClearBattlerMoveHistory(u8 battlerId);
|
||||
void RecordAbilityBattle(u8 battlerId, u8 abilityId);
|
||||
void ClearBattlerAbilityHistory(u8 battlerId);
|
||||
void RecordItemEffectBattle(u8 battlerId, u8 itemEffect);
|
||||
void ClearBattlerItemEffectHistory(u8 battlerId);
|
||||
void ClearBattlerMoveHistory(u8 battler);
|
||||
void RecordAbilityBattle(u8 battler, u8 abilityId);
|
||||
void ClearBattlerAbilityHistory(u8 battler);
|
||||
void RecordItemEffectBattle(u8 battler, u8 itemEffect);
|
||||
void ClearBattlerItemEffectHistory(u8 battler);
|
||||
|
||||
#endif // GUARD_BATTLE_AI_SCRIPT_COMMANDS_H
|
||||
|
||||
@@ -57,8 +57,8 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo
|
||||
void DestroyAnimSprite(struct Sprite *sprite);
|
||||
void DestroyAnimVisualTask(u8 taskId);
|
||||
void DestroyAnimSoundTask(u8 taskId);
|
||||
bool8 IsBattlerSpriteVisible(u8 battlerId);
|
||||
void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible);
|
||||
bool8 IsBattlerSpriteVisible(u8 battler);
|
||||
void MoveBattlerSpriteToBG(u8 battler, bool8 toBG_2, bool8 setSpriteInvisible);
|
||||
bool8 IsContest(void);
|
||||
s8 BattleAnimAdjustPanning(s8 pan);
|
||||
s8 BattleAnimAdjustPanning2(s8 pan);
|
||||
@@ -70,7 +70,7 @@ void ResetBattleAnimBg(bool8);
|
||||
// battle_intro.c
|
||||
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
|
||||
void DrawBattlerOnBg(int bgId, u8 x, u8 y, u8 battlerPosition, u8 paletteId, u8 *tiles, u16 *tilemap, u16 tilesOffset);
|
||||
void HandleIntroSlide(u8 terrainId);
|
||||
void HandleIntroSlide(u8 environmentId);
|
||||
int GetAnimBgAttribute(u8 bgId, u8 attributeId);
|
||||
|
||||
// battle_anim_mons.c
|
||||
@@ -80,7 +80,7 @@ void AnimTranslateLinearAndFlicker_Flipped(struct Sprite *sprite);
|
||||
void AnimWeatherBallUp(struct Sprite *sprite);
|
||||
void AnimWeatherBallDown(struct Sprite *sprite);
|
||||
void AnimSpinningSparkle(struct Sprite *sprite);
|
||||
void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y);
|
||||
void SetAverageBattlerPositions(u8 battler, bool8 respectMonPicOffsets, s16 *x, s16 *y);
|
||||
void DestroySpriteAndMatrix(struct Sprite *sprite);
|
||||
void TranslateSpriteLinearFixedPoint(struct Sprite *sprite);
|
||||
void InitSpritePosToAnimAttacker(struct Sprite *sprite, bool8 respectMonPicOffsets);
|
||||
@@ -89,7 +89,7 @@ void StartAnimLinearTranslation(struct Sprite *sprite);
|
||||
void InitAnimArcTranslation(struct Sprite *sprite);
|
||||
bool8 AnimTranslateLinear(struct Sprite *sprite);
|
||||
void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite);
|
||||
u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId);
|
||||
u8 GetBattlerSpriteCoord2(u8 battler, u8 attributeId);
|
||||
void InitAnimLinearTranslationWithSpeed(struct Sprite *sprite);
|
||||
u16 ArcTan2Neg(s16 x, s16 y);
|
||||
void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 xScale, s16 yScale, u16 rotation);
|
||||
@@ -98,19 +98,19 @@ void TranslateSpriteLinearAndFlicker(struct Sprite *sprite);
|
||||
void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite);
|
||||
void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite);
|
||||
void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 xOffset);
|
||||
s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr);
|
||||
u8 GetBattlerYCoordWithElevation(u8 battlerId);
|
||||
s16 GetBattlerSpriteCoordAttr(u8 battler, u8 attr);
|
||||
u8 GetBattlerYCoordWithElevation(u8 battler);
|
||||
void WaitAnimForDuration(struct Sprite *sprite);
|
||||
void AnimTravelDiagonally(struct Sprite *sprite);
|
||||
void InitAnimLinearTranslation(struct Sprite *sprite);
|
||||
void AnimTranslateLinear_WithFollowup(struct Sprite *sprite);
|
||||
u8 GetBattlerSpriteBGPriority(u8 battlerId);
|
||||
u8 GetBattlerSpriteBGPriority(u8 battler);
|
||||
void *LoadPointerFromVars(s16 bottom, s16 top);
|
||||
void StorePointerInVars(s16 *bottom, s16 *top, const void *ptr);
|
||||
void InitPrioritiesForVisibleBattlers(void);
|
||||
void GetBattleAnimBg1Data(struct BattleAnimBgData *);
|
||||
void GetBattleAnimBgData(struct BattleAnimBgData *, u32 bgId);
|
||||
u8 GetBattlerSpriteSubpriority(u8 battlerId);
|
||||
u8 GetBattlerSpriteSubpriority(u8 battler);
|
||||
bool8 TranslateAnimHorizontalArc(struct Sprite *sprite);
|
||||
void TranslateSpriteLinearByIdFixedPoint(struct Sprite *sprite);
|
||||
void ResetSpriteRotScale(u8 spriteId);
|
||||
@@ -145,8 +145,8 @@ void SetGrayscaleOrOriginalPalette(u16 palNum, bool8 restoreOriginal);
|
||||
void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds);
|
||||
bool8 RunAffineAnimFromTaskData(struct Task *task);
|
||||
void AnimThrowProjectile(struct Sprite *sprite);
|
||||
void GetBgDataForTransform(struct BattleAnimBgData *dest, u8 battlerId);
|
||||
u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, bool32 ignoreDeoxysForm);
|
||||
void GetBgDataForTransform(struct BattleAnimBgData *dest, u8 battler);
|
||||
u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battler, bool32 ignoreDeoxysForm);
|
||||
void ResetSpriteRotScale_PreserveAffine(struct Sprite *sprite);
|
||||
void Trade_MoveSelectedMonToTarget(struct Sprite *sprite);
|
||||
void DestroyAnimVisualTaskAndDisableBlend(u8 taskId);
|
||||
@@ -178,18 +178,18 @@ enum
|
||||
BATTLER_COORD_ATTR_RAW_BOTTOM,
|
||||
};
|
||||
|
||||
u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId);
|
||||
u8 GetBattlerSpriteCoord(u8 battler, u8 attributeId);
|
||||
|
||||
bool8 IsBattlerSpritePresent(u8 battlerId);
|
||||
bool8 IsBattlerSpritePresent(u8 battler);
|
||||
void ClearBattleAnimBg(u32 bgId);
|
||||
u8 GetAnimBattlerSpriteId(u8 wantedBattler);
|
||||
bool8 IsDoubleBattle(void);
|
||||
u8 GetBattleBgPaletteNum(void);
|
||||
u8 GetBattlerSpriteBGPriorityRank(u8 battlerId);
|
||||
u8 GetBattlerSpriteBGPriorityRank(u8 battler);
|
||||
void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite *));
|
||||
void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite);
|
||||
u8 GetBattlerSpriteDefault_Y(u8 battlerId);
|
||||
u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
|
||||
u8 GetBattlerSpriteDefault_Y(u8 battler);
|
||||
u8 GetSubstituteSpriteDefault_Y(u8 battler);
|
||||
|
||||
// battle_anim_status_effects.c
|
||||
#define STAT_ANIM_PLUS1 14
|
||||
@@ -212,7 +212,7 @@ enum {
|
||||
STAT_ANIM_PAL_MULTIPLE = 0xFF
|
||||
};
|
||||
|
||||
void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
|
||||
void LaunchStatusAnimation(u8 battler, u8 statusAnimId);
|
||||
|
||||
// battle_anim_ground.c
|
||||
void AnimTask_HorizontalShake(u8 taskId);
|
||||
|
||||
@@ -64,11 +64,65 @@ enum {
|
||||
REQUEST_TOUGH_RIBBON_BATTLE,
|
||||
};
|
||||
|
||||
// Accessors for gBattleControllerExecFlags.
|
||||
//
|
||||
// These are provided for documentation purposes, to make the battle
|
||||
// controller internals and the link communication internals more
|
||||
// legible. Several of these have functions that you should call
|
||||
// (e.g. MarkBattlerForControllerExec) instead of using these macros
|
||||
// directly.
|
||||
|
||||
#define MARK_BATTLE_CONTROLLER_ACTIVE_ON_LOCAL(battler) \
|
||||
gBattleControllerExecFlags |= gBitTable[battler]
|
||||
|
||||
#define MARK_BATTLE_CONTROLLER_IDLE_ON_LOCAL(battler) \
|
||||
gBattleControllerExecFlags &= ~gBitTable(battler)
|
||||
|
||||
#define IS_BATTLE_CONTROLLER_ACTIVE_ON_LOCAL(battler) \
|
||||
(gBattleControllerExecFlags & gBitTable[battler])
|
||||
|
||||
#define MARK_BATTLE_CONTROLLER_MESSAGE_OUTBOUND_OVER_LINK(battler) \
|
||||
gBattleControllerExecFlags |= gBitTable[battler] << (32 - MAX_BATTLERS_COUNT)
|
||||
|
||||
#define MARK_BATTLE_CONTROLLER_MESSAGE_SYNCHRONIZED_OVER_LINK(battler) \
|
||||
gBattleControllerExecFlags &= ~((1 << 28) << (battler))
|
||||
|
||||
#define MARK_BATTLE_CONTROLLER_ACTIVE_FOR_PLAYER(battler, playerId) \
|
||||
gBattleControllerExecFlags |= gBitTable[battler] << ((playerId) << 2)
|
||||
|
||||
#define MARK_BATTLE_CONTROLLER_IDLE_FOR_PLAYER(battler, playerId) \
|
||||
gBattleControllerExecFlags &= ~(gBitTable[battler] << ((playerId) * 4))
|
||||
|
||||
#define IS_BATTLE_CONTROLLER_ACTIVE_FOR_PLAYER(battler, playerId) \
|
||||
(gBattleControllerExecFlags & (gBitTable[battler] << ((playerId) * 4)))
|
||||
|
||||
// This actually checks if a specific controller is active on any player or if
|
||||
// *any* controller is pending sync over link communications, but the macro name
|
||||
// can only be so specific before it just gets ridiculous.
|
||||
#define IS_BATTLE_CONTROLLER_ACTIVE_OR_PENDING_SYNC_ANYWHERE(battler) \
|
||||
(gBattleControllerExecFlags & ( \
|
||||
(gBitTable[battler]) \
|
||||
| (0xF << 28) \
|
||||
| (gBitTable[battler] << 4) \
|
||||
| (gBitTable[battler] << 8) \
|
||||
| (gBitTable[battler] << 12) \
|
||||
))
|
||||
|
||||
// Special arguments for Battle Controller functions.
|
||||
|
||||
enum { // Values given to the emit functions to choose gBattleBufferA or gBattleBufferB
|
||||
BUFFER_A,
|
||||
BUFFER_B
|
||||
enum {
|
||||
// For commands sent from the core battle engine to a controller.
|
||||
B_COMM_TO_CONTROLLER, // gBattleBufferA
|
||||
|
||||
// For replies sent from a controller to the core battle engine.
|
||||
B_COMM_TO_ENGINE, // gBattleBufferB
|
||||
|
||||
// During local play, a controller must directly mark itself as
|
||||
// inactive when it's done processing, whether or not it sends
|
||||
// a reply. During multiplayer, it must NOT directly mark itself
|
||||
// as inactive, but instead send one of these, with the player's
|
||||
// multiplayer ID as data.
|
||||
B_COMM_CONTROLLER_IS_DONE
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -232,7 +286,7 @@ void BtlController_EmitCantSwitch(u8 bufferId);
|
||||
void BtlController_EmitPlaySE(u8 bufferId, u16 songId);
|
||||
void BtlController_EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM);
|
||||
void BtlController_EmitFaintingCry(u8 bufferId);
|
||||
void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId);
|
||||
void BtlController_EmitIntroSlide(u8 bufferId, u8 environmentId);
|
||||
void BtlController_EmitIntroTrainerBallThrow(u8 bufferId);
|
||||
void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 flags);
|
||||
void BtlController_EmitHidePartyStatusSummary(u8 bufferId);
|
||||
|
||||
@@ -9,37 +9,37 @@ void SpriteCB_TrainerSlideIn(struct Sprite *sprite);
|
||||
void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status);
|
||||
bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattlerId, u8 attacker, u8 target, u8 tableId, u16 argument);
|
||||
void InitAndLaunchSpecialAnimation(u8 activeBattlerId, u8 attacker, u8 target, u8 tableId);
|
||||
bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn);
|
||||
bool8 IsBattleSEPlaying(u8 battlerId);
|
||||
void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId);
|
||||
void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId);
|
||||
bool8 IsMoveWithoutAnimation(u16 move, u8 animationTurn);
|
||||
bool8 IsBattleSEPlaying(u8 battler);
|
||||
void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battler);
|
||||
void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battler);
|
||||
void BattleGfxSfxDummy2(u16 species);
|
||||
void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId);
|
||||
void DecompressTrainerBackPic(u16 backPicId, u8 battlerId);
|
||||
void DecompressTrainerFrontPic(u16 frontPicId, u8 battler);
|
||||
void DecompressTrainerBackPic(u16 backPicId, u8 battler);
|
||||
void BattleGfxSfxDummy3(u8 gender);
|
||||
void FreeTrainerFrontPicPalette(u16 frontPicId);
|
||||
bool8 BattleLoadAllHealthBoxesGfx(u8 state);
|
||||
void LoadBattleBarGfx(u8 unused);
|
||||
bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId);
|
||||
bool8 BattleInitAllSprites(u8 *state1, u8 *battler);
|
||||
void ClearSpritesHealthboxAnimData(void);
|
||||
void CopyAllBattleSpritesInvisibilities(void);
|
||||
void CopyBattleSpriteInvisibility(u8 battlerId);
|
||||
void CopyBattleSpriteInvisibility(u8 battler);
|
||||
void HandleSpeciesGfxDataChange(u8 attacker, u8 target, bool8 notTransform);
|
||||
void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite);
|
||||
void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId);
|
||||
void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move);
|
||||
void ClearBehindSubstituteBit(u8 battlerId);
|
||||
void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId);
|
||||
void BattleLoadSubstituteOrMonSpriteGfx(u8 battler, bool8 loadMonSprite);
|
||||
void LoadBattleMonGfxAndAnimate(u8 battler, bool8 loadMonSprite, u8 spriteId);
|
||||
void TrySetBehindSubstituteSpriteBit(u8 battler, u16 move);
|
||||
void ClearBehindSubstituteBit(u8 battler);
|
||||
void HandleLowHpMusicChange(struct Pokemon *mon, u8 battler);
|
||||
void BattleStopLowHpSound(void);
|
||||
u8 GetMonHPBarLevel(struct Pokemon *mon);
|
||||
void HandleBattleLowHpMusicChange(void);
|
||||
void SetBattlerSpriteAffineMode(u8 affineMode);
|
||||
void LoadAndCreateEnemyShadowSprites(void);
|
||||
void SpriteCB_SetInvisible(struct Sprite *sprite);
|
||||
void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species);
|
||||
void HideBattlerShadowSprite(u8 battlerId);
|
||||
void SetBattlerShadowSpriteCallback(u8 battler, u16 species);
|
||||
void HideBattlerShadowSprite(u8 battler);
|
||||
void FillAroundBattleWindows(void);
|
||||
void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute);
|
||||
void ClearTemporarySpeciesSpriteData(u8 battler, bool8 dontClearSubstitute);
|
||||
void AllocateMonSpritesGfx(void);
|
||||
void FreeMonSpritesGfx(void);
|
||||
bool32 ShouldPlayNormalMonCry(struct Pokemon *mon);
|
||||
|
||||
@@ -69,12 +69,12 @@ void SwitchInClearSetData(void);
|
||||
void FaintClearSetData(void);
|
||||
void BattleTurnPassed(void);
|
||||
u8 IsRunningFromBattleImpossible(void);
|
||||
void SwitchPartyOrder(u8 battlerId);
|
||||
void SwitchPartyOrder(u8 battler);
|
||||
void SwapTurnOrder(u8 id1, u8 id2);
|
||||
u8 GetWhoStrikesFirst(u8 battlerId1, u8 battlerId2, bool8 ignoreChosenMoves);
|
||||
void RunBattleScriptCommands_PopCallbacksStack(void);
|
||||
void RunBattleScriptCommands(void);
|
||||
bool8 TryRunFromBattle(u8 battlerId);
|
||||
bool8 TryRunFromBattle(u8 battler);
|
||||
void SpecialStatusesClear(void);
|
||||
|
||||
extern struct MultiPartnerMenuPokemon gMultiPartnerParty[MULTI_PARTY_SIZE];
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
extern u8 gRecordsWindowId;
|
||||
|
||||
void ClearPlayerLinkBattleRecords(void);
|
||||
void UpdatePlayerLinkBattleRecords(s32 battlerId);
|
||||
void UpdatePlayerLinkBattleRecords(s32 battler);
|
||||
void ShowLinkBattleRecords(void);
|
||||
void RemoveRecordsWindow(void);
|
||||
void ShowTrainerHillRecords(void);
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
void AI_CalcDmg(u8 battlerIdAtk, u8 battlerIdDef);
|
||||
u8 TypeCalc(u16 move, u8 battlerIdAtk, u8 battlerIdDef);
|
||||
u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
|
||||
u8 GetBattlerTurnOrderNum(u8 battlerId);
|
||||
u8 GetBattlerTurnOrderNum(u8 battler);
|
||||
void SetMoveEffect(bool8 primary, u8 certain);
|
||||
void BattleDestroyYesNoCursorAt(u8 cursorPosition);
|
||||
void BattleCreateYesNoCursorAt(u8 cursorPosition);
|
||||
void BufferMoveToLearnIntoBattleTextBuff2(void);
|
||||
void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
|
||||
bool8 UproarWakeUpCheck(u8 battlerId);
|
||||
bool8 UproarWakeUpCheck(u8 battler);
|
||||
|
||||
extern void (* const gBattleScriptingCommandsTable[])(void);
|
||||
extern const u8 gBattlePalaceNatureToMoveGroupLikelihood[NUM_NATURES][4];
|
||||
|
||||
@@ -27,7 +27,7 @@ void BattleSetup_StartLatiBattle(void);
|
||||
void BattleSetup_StartLegendaryBattle(void);
|
||||
void StartGroudonKyogreBattle(void);
|
||||
void StartRegiBattle(void);
|
||||
u8 BattleSetup_GetTerrainId(void);
|
||||
u8 BattleSetup_GetEnvironmentId(void);
|
||||
u8 GetSpecialBattleTransition(s32 id);
|
||||
void ChooseStarter(void);
|
||||
void ResetTrainerOpponentIds(void);
|
||||
|
||||
@@ -6,6 +6,6 @@ void BattleTv_SetDataBasedOnMove(u16 move, u16 weatherFlags, struct DisableStruc
|
||||
void BattleTv_SetDataBasedOnAnimation(u8 animationId);
|
||||
void TryPutLinkBattleTvShowOnAir(void);
|
||||
void BattleTv_ClearExplosionFaintCause(void);
|
||||
u8 GetBattlerMoveSlotId(u8 battlerId, u16 moveId);
|
||||
u8 GetBattlerMoveSlotId(u8 battler, u16 move);
|
||||
|
||||
#endif // GUARD_BATTLE_TV_H
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
#define ABILITYEFFECT_WATER_SPORT 254
|
||||
#define ABILITYEFFECT_SWITCH_IN_WEATHER 255
|
||||
|
||||
#define ABILITY_ON_OPPOSING_FIELD(battlerId, abilityId) (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, battlerId, abilityId, 0, 0))
|
||||
#define ABILITY_ON_OPPOSING_FIELD(battler, abilityId) (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, battler, abilityId, 0, 0))
|
||||
#define ABILITY_ON_FIELD(abilityId) (AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, abilityId, 0, 0))
|
||||
#define ABILITY_ON_FIELD2(abilityId) (AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, abilityId, 0, 0))
|
||||
|
||||
@@ -64,34 +64,34 @@ u8 GetBattlerForBattleScript(u8 caseId);
|
||||
void PressurePPLose(u8 target, u8 attacker, u16 move);
|
||||
void PressurePPLoseOnUsingPerishSong(u8 attacker);
|
||||
void PressurePPLoseOnUsingImprison(u8 attacker);
|
||||
void MarkBattlerForControllerExec(u8 battlerId);
|
||||
void MarkBattlerReceivedLinkData(u8 battlerId);
|
||||
void CancelMultiTurnMoves(u8 battlerId);
|
||||
bool8 WasUnableToUseMove(u8 battlerId);
|
||||
void PrepareStringBattle(u16 stringId, u8 battlerId);
|
||||
void MarkBattlerForControllerExec(u8 battler);
|
||||
void MarkBattlerReceivedLinkData(u8 battler);
|
||||
void CancelMultiTurnMoves(u8 battler);
|
||||
bool8 WasUnableToUseMove(u8 battler);
|
||||
void PrepareStringBattle(u16 stringId, u8 battler);
|
||||
void ResetSentPokesToOpponentValue(void);
|
||||
void OpponentSwitchInResetSentPokesToOpponentValue(u8 battlerId);
|
||||
void UpdateSentPokesToOpponentValue(u8 battlerId);
|
||||
void OpponentSwitchInResetSentPokesToOpponentValue(u8 battler);
|
||||
void UpdateSentPokesToOpponentValue(u8 battler);
|
||||
void BattleScriptPush(const u8 *bsPtr);
|
||||
void BattleScriptPushCursor(void);
|
||||
void BattleScriptPop(void);
|
||||
u8 TrySetCantSelectMoveBattleScript(void);
|
||||
u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check);
|
||||
u8 CheckMoveLimitations(u8 battler, u8 unusableMoves, u8 check);
|
||||
bool8 AreAllMovesUnusable(void);
|
||||
u8 GetImprisonedMovesCount(u8 battlerId, u16 move);
|
||||
u8 GetImprisonedMovesCount(u8 battler, u16 move);
|
||||
u8 DoFieldEndTurnEffects(void);
|
||||
u8 DoBattlerEndTurnEffects(void);
|
||||
bool8 HandleWishPerishSongOnTurnEnd(void);
|
||||
bool8 HandleFaintedMonActions(void);
|
||||
void TryClearRageStatuses(void);
|
||||
u8 AtkCanceller_UnableToUseMove(void);
|
||||
bool8 HasNoMonsToSwitch(u8 battlerId, u8 r1, u8 r2);
|
||||
u8 CastformDataTypeChange(u8 battlerId);
|
||||
u8 AbilityBattleEffects(u8 caseID, u8 battlerId, u8 ability, u8 special, u16 moveArg);
|
||||
bool8 HasNoMonsToSwitch(u8 battler, u8 r1, u8 r2);
|
||||
u8 CastformDataTypeChange(u8 battler);
|
||||
u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveArg);
|
||||
void BattleScriptExecute(const u8 *BS_ptr);
|
||||
void BattleScriptPushCursorAndCallback(const u8 *BS_ptr);
|
||||
u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn);
|
||||
void ClearFuryCutterDestinyBondGrudge(u8 battlerId);
|
||||
u8 ItemBattleEffects(u8 caseID, u8 battler, bool8 moveTurn);
|
||||
void ClearFuryCutterDestinyBondGrudge(u8 battler);
|
||||
void HandleAction_RunBattleScript(void);
|
||||
u8 GetMoveTarget(u16 move, u8 setTarget);
|
||||
u8 IsMonDisobedient(void);
|
||||
|
||||
@@ -23,12 +23,23 @@
|
||||
* +---------------------------+
|
||||
*/
|
||||
|
||||
#define MAX_BATTLERS_COUNT 4
|
||||
enum BattlerPosition
|
||||
{
|
||||
B_POSITION_PLAYER_LEFT,
|
||||
B_POSITION_OPPONENT_LEFT,
|
||||
B_POSITION_PLAYER_RIGHT,
|
||||
B_POSITION_OPPONENT_RIGHT,
|
||||
MAX_POSITION_COUNT,
|
||||
};
|
||||
|
||||
#define B_POSITION_PLAYER_LEFT 0
|
||||
#define B_POSITION_OPPONENT_LEFT 1
|
||||
#define B_POSITION_PLAYER_RIGHT 2
|
||||
#define B_POSITION_OPPONENT_RIGHT 3
|
||||
enum BattlerId
|
||||
{
|
||||
B_BATTLER_0,
|
||||
B_BATTLER_1,
|
||||
B_BATTLER_2,
|
||||
B_BATTLER_3,
|
||||
MAX_BATTLERS_COUNT,
|
||||
};
|
||||
|
||||
// These macros can be used with either battler ID or positions to get the partner or the opposite mon
|
||||
#define BATTLE_OPPOSITE(id) ((id) ^ BIT_SIDE)
|
||||
@@ -296,17 +307,17 @@
|
||||
#define MOVE_EFFECT_AFFECTS_USER (1 << 6) // 64
|
||||
#define MOVE_EFFECT_CERTAIN (1 << 7) // 128
|
||||
|
||||
// Battle terrain defines for gBattleTerrain.
|
||||
#define BATTLE_TERRAIN_GRASS 0
|
||||
#define BATTLE_TERRAIN_LONG_GRASS 1
|
||||
#define BATTLE_TERRAIN_SAND 2
|
||||
#define BATTLE_TERRAIN_UNDERWATER 3
|
||||
#define BATTLE_TERRAIN_WATER 4
|
||||
#define BATTLE_TERRAIN_POND 5
|
||||
#define BATTLE_TERRAIN_MOUNTAIN 6
|
||||
#define BATTLE_TERRAIN_CAVE 7
|
||||
#define BATTLE_TERRAIN_BUILDING 8
|
||||
#define BATTLE_TERRAIN_PLAIN 9
|
||||
// Battle environment defines for gBattleEnvironment.
|
||||
#define BATTLE_ENVIRONMENT_GRASS 0
|
||||
#define BATTLE_ENVIRONMENT_LONG_GRASS 1
|
||||
#define BATTLE_ENVIRONMENT_SAND 2
|
||||
#define BATTLE_ENVIRONMENT_UNDERWATER 3
|
||||
#define BATTLE_ENVIRONMENT_WATER 4
|
||||
#define BATTLE_ENVIRONMENT_POND 5
|
||||
#define BATTLE_ENVIRONMENT_MOUNTAIN 6
|
||||
#define BATTLE_ENVIRONMENT_CAVE 7
|
||||
#define BATTLE_ENVIRONMENT_BUILDING 8
|
||||
#define BATTLE_ENVIRONMENT_PLAIN 9
|
||||
|
||||
#define B_WAIT_TIME_LONG 64
|
||||
#define B_WAIT_TIME_MED 48
|
||||
|
||||
@@ -155,6 +155,7 @@
|
||||
#define CONTEST_EFFECT_TYPE_WORSEN 4
|
||||
#define CONTEST_EFFECT_TYPE_SPECIAL_APPEAL 5
|
||||
#define CONTEST_EFFECT_TYPE_TURN_ORDER 6
|
||||
#define CONTEST_EFFECT_TYPE_UNKNOWN 8
|
||||
|
||||
#define COMBO_STARTER_RAIN_DANCE 1
|
||||
#define COMBO_STARTER_RAGE 2
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
#define FEMALE 1
|
||||
#define GENDER_COUNT 2
|
||||
|
||||
#define BARD_SONG_LENGTH 6
|
||||
#define NUM_BARD_SONG_WORDS 6
|
||||
#define NUM_STORYTELLER_TALES 4
|
||||
#define NUM_TRADER_ITEMS 4
|
||||
#define GIDDY_MAX_TALES 10
|
||||
|
||||
@@ -489,6 +489,8 @@
|
||||
#define MUS_RG_SLOW_PALLET 557 // MUS_RG_SLOWMASARA
|
||||
#define MUS_RG_TEACHY_TV_MENU 558 // MUS_RG_TVNOIZE
|
||||
|
||||
// These PH_* constants are phoneme sounds used by the "bard" NPC (see src/bard_music.c and src/mauville_old_man.c).
|
||||
// Each comes in a triplet of PH_*_BLEND, PH_*_HELD, and PH_*_SOLO, and the name of each triplet incorporates the English phonetic sound it represents.
|
||||
#define PH_TRAP_BLEND 559
|
||||
#define PH_TRAP_HELD 560
|
||||
#define PH_TRAP_SOLO 561
|
||||
@@ -545,4 +547,10 @@
|
||||
|
||||
#define MUS_NONE 0xFFFF
|
||||
|
||||
#define FIRST_PHONEME_SONG PH_TRAP_BLEND
|
||||
#define LAST_PHONEME_SONG PH_NURSE_SOLO
|
||||
#define NUM_PHONEME_SONGS (LAST_PHONEME_SONG - FIRST_PHONEME_SONG + 1)
|
||||
#define PHONEME_ID(song) ((song) - FIRST_PHONEME_SONG)
|
||||
#define PHONEME_ID_NONE 0xFF
|
||||
|
||||
#endif // GUARD_CONSTANTS_SONGS_H
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#define VARS_START 0x4000
|
||||
|
||||
// temporary vars
|
||||
// The first 0x10 vars are are temporary--they are cleared every time a map is loaded.
|
||||
// The first 0x10 vars are temporary--they are cleared every time a map is loaded.
|
||||
#define TEMP_VARS_START 0x4000
|
||||
#define VAR_TEMP_0 (TEMP_VARS_START + 0x0)
|
||||
#define VAR_TEMP_1 (TEMP_VARS_START + 0x1)
|
||||
|
||||
@@ -210,8 +210,11 @@ struct ObjectEvent
|
||||
/*0x14*/ struct Coords16 previousCoords;
|
||||
/*0x18*/ u16 facingDirection:4; // current direction?
|
||||
u16 movementDirection:4;
|
||||
u16 rangeX:4;
|
||||
u16 rangeY:4;
|
||||
struct __attribute__((packed))
|
||||
{
|
||||
u16 rangeX:4;
|
||||
u16 rangeY:4;
|
||||
} range;
|
||||
/*0x1A*/ u8 fieldEffectSpriteId;
|
||||
/*0x1B*/ u8 warpArrowSpriteId;
|
||||
/*0x1C*/ u8 movementActionId;
|
||||
|
||||
@@ -371,7 +371,7 @@ struct BattleFrontier
|
||||
{
|
||||
/*0x64C*/ struct EmeraldBattleTowerRecord towerPlayer;
|
||||
/*0x738*/ struct EmeraldBattleTowerRecord towerRecords[BATTLE_TOWER_RECORD_COUNT]; // From record mixing.
|
||||
/*0xBEB*/ struct BattleTowerInterview towerInterview;
|
||||
/*0xBD4*/ struct BattleTowerInterview towerInterview;
|
||||
/*0xBEC*/ struct BattleTowerEReaderTrainer ereaderTrainer;
|
||||
/*0xCA8*/ u8 challengeStatus;
|
||||
/*0xCA9*/ u8 lvlMode:2;
|
||||
@@ -459,7 +459,7 @@ struct ApprenticeQuestion
|
||||
u8 moveSlot:2;
|
||||
u8 suggestedChange:2; // TRUE if told to use held item or second move, FALSE if told to use no item or first move
|
||||
//u8 padding;
|
||||
u16 data; // used both as an itemId and a moveId
|
||||
u16 data; // used both as an itemId and a move
|
||||
};
|
||||
|
||||
struct PlayersApprentice
|
||||
@@ -649,8 +649,8 @@ struct MauvilleManBard
|
||||
{
|
||||
/*0x00*/ u8 id;
|
||||
/*0x01*/ //u8 padding1;
|
||||
/*0x02*/ u16 songLyrics[BARD_SONG_LENGTH];
|
||||
/*0x0E*/ u16 temporaryLyrics[BARD_SONG_LENGTH];
|
||||
/*0x02*/ u16 songLyrics[NUM_BARD_SONG_WORDS];
|
||||
/*0x0E*/ u16 newSongLyrics[NUM_BARD_SONG_WORDS];
|
||||
/*0x1A*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x22*/ u8 filler_2DB6[0x3];
|
||||
/*0x25*/ u8 playerTrainerId[TRAINER_ID_LENGTH];
|
||||
|
||||
@@ -3215,72 +3215,72 @@ extern const u32 gBattleVSFrame_Tilemap[];
|
||||
extern const u32 gMultiBattleIntroBg_Opponent_Tilemap[];
|
||||
extern const u32 gMultiBattleIntroBg_Player_Tilemap[];
|
||||
|
||||
// battle terrains
|
||||
extern const u32 gBattleTerrainTiles_TallGrass[];
|
||||
extern const u32 gBattleTerrainTilemap_TallGrass[];
|
||||
extern const u32 gBattleTerrainAnimTiles_TallGrass[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_TallGrass[];
|
||||
extern const u32 gBattleTerrainPalette_TallGrass[];
|
||||
extern const u32 gBattleTerrainTiles_LongGrass[];
|
||||
extern const u32 gBattleTerrainTilemap_LongGrass[];
|
||||
extern const u32 gBattleTerrainAnimTiles_LongGrass[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_LongGrass[];
|
||||
extern const u32 gBattleTerrainPalette_LongGrass[];
|
||||
extern const u32 gBattleTerrainTiles_Sand[];
|
||||
extern const u32 gBattleTerrainTilemap_Sand[];
|
||||
extern const u32 gBattleTerrainAnimTiles_Sand[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_Sand[];
|
||||
extern const u32 gBattleTerrainPalette_Sand[];
|
||||
extern const u32 gBattleTerrainTiles_Underwater[];
|
||||
extern const u32 gBattleTerrainTilemap_Underwater[];
|
||||
extern const u32 gBattleTerrainAnimTiles_Underwater[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_Underwater[];
|
||||
extern const u32 gBattleTerrainPalette_Underwater[];
|
||||
extern const u32 gBattleTerrainTiles_Water[];
|
||||
extern const u32 gBattleTerrainTilemap_Water[];
|
||||
extern const u32 gBattleTerrainAnimTiles_Water[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_Water[];
|
||||
extern const u32 gBattleTerrainPalette_Water[];
|
||||
extern const u32 gBattleTerrainTiles_PondWater[];
|
||||
extern const u32 gBattleTerrainTilemap_PondWater[];
|
||||
extern const u32 gBattleTerrainAnimTiles_PondWater[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_PondWater[];
|
||||
extern const u32 gBattleTerrainPalette_PondWater[];
|
||||
extern const u32 gBattleTerrainTiles_Rock[];
|
||||
extern const u32 gBattleTerrainTilemap_Rock[];
|
||||
extern const u32 gBattleTerrainAnimTiles_Rock[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_Rock[];
|
||||
extern const u32 gBattleTerrainPalette_Rock[];
|
||||
extern const u32 gBattleTerrainTiles_Cave[];
|
||||
extern const u32 gBattleTerrainTilemap_Cave[];
|
||||
extern const u32 gBattleTerrainAnimTiles_Cave[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_Cave[];
|
||||
extern const u32 gBattleTerrainPalette_Cave[];
|
||||
extern const u32 gBattleTerrainTiles_Building[];
|
||||
extern const u32 gBattleTerrainTilemap_Building[];
|
||||
extern const u32 gBattleTerrainAnimTiles_Building[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_Building[];
|
||||
extern const u32 gBattleTerrainPalette_Building[];
|
||||
extern const u32 gBattleTerrainPalette_Plain[];
|
||||
extern const u32 gBattleTerrainPalette_Frontier[];
|
||||
extern const u32 gBattleTerrainTiles_Stadium[];
|
||||
extern const u32 gBattleTerrainTilemap_Stadium[];
|
||||
extern const u32 gBattleTerrainTiles_Rayquaza[];
|
||||
extern const u32 gBattleTerrainTilemap_Rayquaza[];
|
||||
extern const u32 gBattleTerrainAnimTiles_Rayquaza[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_Rayquaza[];
|
||||
extern const u32 gBattleTerrainPalette_Rayquaza[];
|
||||
extern const u32 gBattleTerrainPalette_Kyogre[];
|
||||
extern const u32 gBattleTerrainPalette_Groudon[];
|
||||
extern const u32 gBattleTerrainPalette_BuildingGym[];
|
||||
extern const u32 gBattleTerrainPalette_BuildingLeader[];
|
||||
extern const u32 gBattleTerrainPalette_StadiumAqua[];
|
||||
extern const u32 gBattleTerrainPalette_StadiumMagma[];
|
||||
extern const u32 gBattleTerrainPalette_StadiumSidney[];
|
||||
extern const u32 gBattleTerrainPalette_StadiumPhoebe[];
|
||||
extern const u32 gBattleTerrainPalette_StadiumGlacia[];
|
||||
extern const u32 gBattleTerrainPalette_StadiumDrake[];
|
||||
extern const u32 gBattleTerrainPalette_StadiumWallace[];
|
||||
// battle environments
|
||||
extern const u32 gBattleEnvironmentTiles_TallGrass[];
|
||||
extern const u32 gBattleEnvironmentTilemap_TallGrass[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_TallGrass[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_TallGrass[];
|
||||
extern const u32 gBattleEnvironmentPalette_TallGrass[];
|
||||
extern const u32 gBattleEnvironmentTiles_LongGrass[];
|
||||
extern const u32 gBattleEnvironmentTilemap_LongGrass[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_LongGrass[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_LongGrass[];
|
||||
extern const u32 gBattleEnvironmentPalette_LongGrass[];
|
||||
extern const u32 gBattleEnvironmentTiles_Sand[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Sand[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_Sand[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_Sand[];
|
||||
extern const u32 gBattleEnvironmentPalette_Sand[];
|
||||
extern const u32 gBattleEnvironmentTiles_Underwater[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Underwater[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_Underwater[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_Underwater[];
|
||||
extern const u32 gBattleEnvironmentPalette_Underwater[];
|
||||
extern const u32 gBattleEnvironmentTiles_Water[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Water[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_Water[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_Water[];
|
||||
extern const u32 gBattleEnvironmentPalette_Water[];
|
||||
extern const u32 gBattleEnvironmentTiles_PondWater[];
|
||||
extern const u32 gBattleEnvironmentTilemap_PondWater[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_PondWater[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_PondWater[];
|
||||
extern const u32 gBattleEnvironmentPalette_PondWater[];
|
||||
extern const u32 gBattleEnvironmentTiles_Rock[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Rock[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_Rock[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_Rock[];
|
||||
extern const u32 gBattleEnvironmentPalette_Rock[];
|
||||
extern const u32 gBattleEnvironmentTiles_Cave[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Cave[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_Cave[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_Cave[];
|
||||
extern const u32 gBattleEnvironmentPalette_Cave[];
|
||||
extern const u32 gBattleEnvironmentTiles_Building[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Building[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_Building[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_Building[];
|
||||
extern const u32 gBattleEnvironmentPalette_Building[];
|
||||
extern const u32 gBattleEnvironmentPalette_Plain[];
|
||||
extern const u32 gBattleEnvironmentPalette_Frontier[];
|
||||
extern const u32 gBattleEnvironmentTiles_Stadium[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Stadium[];
|
||||
extern const u32 gBattleEnvironmentTiles_Rayquaza[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Rayquaza[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_Rayquaza[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_Rayquaza[];
|
||||
extern const u32 gBattleEnvironmentPalette_Rayquaza[];
|
||||
extern const u32 gBattleEnvironmentPalette_Kyogre[];
|
||||
extern const u32 gBattleEnvironmentPalette_Groudon[];
|
||||
extern const u32 gBattleEnvironmentPalette_BuildingGym[];
|
||||
extern const u32 gBattleEnvironmentPalette_BuildingLeader[];
|
||||
extern const u32 gBattleEnvironmentPalette_StadiumAqua[];
|
||||
extern const u32 gBattleEnvironmentPalette_StadiumMagma[];
|
||||
extern const u32 gBattleEnvironmentPalette_StadiumSidney[];
|
||||
extern const u32 gBattleEnvironmentPalette_StadiumPhoebe[];
|
||||
extern const u32 gBattleEnvironmentPalette_StadiumGlacia[];
|
||||
extern const u32 gBattleEnvironmentPalette_StadiumDrake[];
|
||||
extern const u32 gBattleEnvironmentPalette_StadiumWallace[];
|
||||
|
||||
// Pokédex
|
||||
extern const u32 gPokedexInterface_Gfx[];
|
||||
@@ -3307,7 +3307,7 @@ extern const u16 gPokedexSearchMenu_Pal[];
|
||||
extern const u32 gBerryCheck_Gfx[];
|
||||
extern const u32 gBerryCheck_Pal[];
|
||||
extern const u32 gBerryTag_Gfx[];
|
||||
extern const u32 gBerryTag_Pal[];
|
||||
extern const u32 gBerryTag_Tilemap[];
|
||||
|
||||
// rayquaza scene gfx
|
||||
extern const u32 gRaySceneDuoFight_Groudon_Gfx[];
|
||||
|
||||
@@ -16,7 +16,7 @@ struct PartyMenu
|
||||
s8 slotId2;
|
||||
u8 action;
|
||||
u16 bagItem;
|
||||
s16 data1; // used variously as a moveId, counter, moveSlotId, or cursorPos
|
||||
s16 data1; // used variously as a move, counter, moveSlotId, or cursorPos
|
||||
s16 learnMoveState; // data2, used only as a learn move state
|
||||
};
|
||||
|
||||
@@ -71,8 +71,8 @@ void ChooseMonForWirelessMinigame(void);
|
||||
void OpenPartyMenuInBattle(u8 partyAction);
|
||||
void ChooseMonForInBattleItem(void);
|
||||
void BufferBattlePartyCurrentOrder(void);
|
||||
void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId);
|
||||
void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 arrayIndex);
|
||||
void BufferBattlePartyCurrentOrderBySide(u8 battler, u8 flankId);
|
||||
void SwitchPartyOrderLinkMulti(u8 battler, u8 slot, u8 arrayIndex);
|
||||
void SwitchPartyMonSlots(u8 slot, u8 slot2);
|
||||
u8 GetPartyIdFromBattlePartyId(u8 slot);
|
||||
void ShowPartyMenuToShowcaseMultiBattleParty(void);
|
||||
|
||||
@@ -408,7 +408,7 @@ void CreateBattleTowerMon_HandleLevel(struct Pokemon *mon, struct BattleTowerPok
|
||||
void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId);
|
||||
void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId);
|
||||
void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerPokemon *dest);
|
||||
bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId);
|
||||
bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battler);
|
||||
void SetDeoxysStats(void);
|
||||
u16 GetUnionRoomTrainerPic(void);
|
||||
u16 GetUnionRoomTrainerClass(void);
|
||||
@@ -428,7 +428,7 @@ 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);
|
||||
u8 GetDefaultMoveTarget(u8 battlerId);
|
||||
u8 GetDefaultMoveTarget(u8 battler);
|
||||
u8 GetMonGender(struct Pokemon *mon);
|
||||
u8 GetBoxMonGender(struct BoxPokemon *boxMon);
|
||||
u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
|
||||
@@ -467,10 +467,10 @@ 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 battlerId, u8 partyIndex);
|
||||
void CopyPlayerPartyMonToBattleData(u8 battler, 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);
|
||||
bool8 HealStatusConditions(struct Pokemon *mon, u32 battlePartyId, u32 healMask, u8 battler);
|
||||
u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit);
|
||||
u8 *UseStatIncreaseItem(u16 itemId);
|
||||
u8 GetNature(struct Pokemon *mon);
|
||||
|
||||
@@ -57,7 +57,7 @@ bool8 CheckFreePokemonStorageSpace(void);
|
||||
bool32 CheckBoxMonSanityAt(u32 boxId, u32 boxPosition);
|
||||
u32 CountStorageNonEggMons(void);
|
||||
u32 CountAllStorageMons(void);
|
||||
bool32 AnyStorageMonWithMove(u16 moveId);
|
||||
bool32 AnyStorageMonWithMove(u16 move);
|
||||
|
||||
void ResetWaldaWallpaper(void);
|
||||
void SetWaldaWallpaperLockedOrUnlocked(bool32 unlocked);
|
||||
|
||||
@@ -10,9 +10,9 @@ extern u8 gRecordedBattleMultiplayerId;
|
||||
|
||||
void RecordedBattle_Init(u8 mode);
|
||||
void RecordedBattle_SetTrainerInfo(void);
|
||||
void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action);
|
||||
void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear);
|
||||
u8 RecordedBattle_GetBattlerAction(u8 battlerId);
|
||||
void RecordedBattle_SetBattlerAction(u8 battler, u8 action);
|
||||
void RecordedBattle_ClearBattlerAction(u8 battler, u8 bytesToClear);
|
||||
u8 RecordedBattle_GetBattlerAction(u8 battler);
|
||||
u8 RecordedBattle_BufferNewBattlerData(u8 *dst);
|
||||
void RecordedBattle_RecordAllBattlerData(u8 *data);
|
||||
bool32 CanCopyRecordedBattleSaveData(void);
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#ifndef GUARD_ROTATING_GATE_H
|
||||
#define GUARD_ROTATING_GATE_H
|
||||
|
||||
void RotatingGatePuzzleCameraUpdate(s16, s16);
|
||||
void RotatingGatePuzzleCameraUpdate(s16 deltaX, s16 deltaY);
|
||||
void RotatingGate_InitPuzzleAndGraphics(void);
|
||||
u32 CheckForRotatingGatePuzzleCollision(u8, s16, s16);
|
||||
bool32 CheckForRotatingGatePuzzleCollisionWithoutAnimation(u8, s16, s16);
|
||||
bool32 CheckForRotatingGatePuzzleCollision(u8 direction, s16 x, s16 y);
|
||||
bool32 CheckForRotatingGatePuzzleCollisionWithoutAnimation(u8 direction, s16 x, s16 y);
|
||||
|
||||
#endif // GUARD_ROTATING_GATE_H
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef GUARD_SPRITE_H
|
||||
#define GUARD_SPRITE_H
|
||||
|
||||
#define OAM_MATRIX_COUNT 32
|
||||
#define MAX_SPRITES 64
|
||||
#define SPRITE_NONE 0xFF
|
||||
#define TAG_NONE 0xFFFF
|
||||
@@ -254,12 +255,12 @@ extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
|
||||
extern const struct SpriteTemplate gDummySpriteTemplate;
|
||||
|
||||
extern u8 gReservedSpritePaletteCount;
|
||||
extern struct Sprite gSprites[];
|
||||
extern struct Sprite gSprites[MAX_SPRITES + 1];
|
||||
extern u8 gOamLimit;
|
||||
extern u16 gReservedSpriteTileCount;
|
||||
extern s16 gSpriteCoordOffsetX;
|
||||
extern s16 gSpriteCoordOffsetY;
|
||||
extern struct OamMatrix gOamMatrices[];
|
||||
extern struct OamMatrix gOamMatrices[OAM_MATRIX_COUNT];
|
||||
extern bool8 gAffineAnimsDisabled;
|
||||
|
||||
void ResetSpriteData(void);
|
||||
|
||||
@@ -5,7 +5,7 @@ extern u8 *const gTVStringVarPtrs[3];
|
||||
|
||||
void ClearTVShowData(void);
|
||||
void TryPutBreakingNewsOnAir(void);
|
||||
void TryPutBattleSeminarOnAir(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u16 betterMove);
|
||||
void TryPutBattleSeminarOnAir(u16 foeSpecies, u16 species, u8 moveIndex, const u16 *movePtr, u16 betterMove);
|
||||
void TryPutFrontierTVShowOnAir(u16 winStreak, u8 facility);
|
||||
void DoTVShow(void);
|
||||
void DoTVShowInSearchOfTrainers(void);
|
||||
|
||||
Reference in New Issue
Block a user