diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/battle.h | 30 | ||||
-rw-r--r-- | include/battle_anim.h | 23 | ||||
-rw-r--r-- | include/battle_controllers.h | 2 | ||||
-rw-r--r-- | include/battle_gfx_sfx_util.h | 2 | ||||
-rw-r--r-- | include/battle_main.h | 26 | ||||
-rw-r--r-- | include/data.h | 12 | ||||
-rw-r--r-- | include/gba/defines.h | 10 | ||||
-rw-r--r-- | include/global.h | 10 | ||||
-rw-r--r-- | include/load_save.h | 1 | ||||
-rw-r--r-- | include/pokeball.h | 2 | ||||
-rw-r--r-- | include/pokemon.h | 2 |
11 files changed, 72 insertions, 48 deletions
diff --git a/include/battle.h b/include/battle.h index 43f4c5115..d8d96c859 100644 --- a/include/battle.h +++ b/include/battle.h @@ -357,6 +357,15 @@ struct BattleResults extern struct BattleResults gBattleResults; +struct MultiPartnerEnigmaBerry +{ + u8 versionSignatureLo; + u8 versionSignatureHi; + u8 vsScreenHealthFlagsLo; + u8 vsScreenHealthFlagsHi; + struct BattleEnigmaBerry battleEnigmaBerry; +}; + struct BattleStruct { u8 turnEffectsTracker; @@ -440,13 +449,12 @@ struct BattleStruct u8 wishPerishSongState; u8 wishPerishSongBattlerId; u8 field_182; - u8 field_183; - u8 field_184; - u8 field_185; - u8 field_186; - u8 field_187; - struct BattleEnigmaBerry battleEnigmaBerry; - u8 field_1A4[0x5C]; // currently unknown + // align 4 + union { + struct MultiPartnerEnigmaBerry multiPartnerEnigmaBerry; + struct UnknownPokemonStruct4 multiBattleMons[3]; + } multiBuffer; + u8 padding_1E4[0x1C]; }; // size == 0x200 bytes extern struct BattleStruct *gBattleStruct; @@ -508,14 +516,12 @@ struct BattleScripting enum { - BACK_PIC_BRENDAN, - BACK_PIC_MAY, BACK_PIC_RED, BACK_PIC_LEAF, BACK_PIC_RS_BRENDAN, BACK_PIC_RS_MAY, - BACK_PIC_WALLY, - BACK_PIC_STEVEN + BACK_PIC_POKEDUDE, + BACK_PIC_OLDMAN }; struct BattleSpriteInfo @@ -711,7 +717,7 @@ extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT]; extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT]; extern u8 gBattleTerrain; extern struct UnknownPokemonStruct4 gMultiPartnerParty[3]; -extern u16 *gUnknown_2022BC0; +extern u16 *sUnknownDebugSpriteDataBuffer; extern u16 gRandomTurnNumber; #endif // GUARD_BATTLE_H diff --git a/include/battle_anim.h b/include/battle_anim.h index 866ca663e..05cba4e34 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -36,6 +36,15 @@ struct BattleAnimBackground #define ANIM_ARGS_COUNT 8 +// Linear Translation +#define sTransl_Speed data[0] +#define sTransl_Duration data[0] // for Fast +#define sTransl_InitX data[1] +#define sTransl_DestX data[2] +#define sTransl_InitY data[3] +#define sTransl_DestY data[4] +#define sTransl_ArcAmpl data[5] + extern void (*gAnimScriptCallback)(void); extern bool8 gAnimScriptActive; extern u8 gAnimVisualTaskCount; @@ -129,7 +138,7 @@ extern const struct OamData gOamData_AffineDouble_ObjBlend_32x64; extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; void MoveBattlerSpriteToBG(u8 battlerId, u8); -void sub_8073128(u8); +void ResetBattleAnimBg(u8); void ClearBattleAnimationVars(void); void DoMoveAnim(u16 move); void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim); @@ -306,12 +315,12 @@ void AnimKnockOffStrike(struct Sprite *); void AnimRecycle(struct Sprite *); // battle_anim_special.c -void sub_80F1720(u8 battler, struct Pokemon *mon); +void TryShinyAnimation(u8 battler, struct Pokemon *mon); u8 ItemIdToBallId(u16 itemId); -u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); +u8 LaunchBallStarsTask(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId); u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); -void sub_80EEFC8(u8 *, u8 *, u8 battlerId); -void sub_80EF0E0(u8 batterId); +void DoLoadHealthboxPalsForLevelUp(u8 *, u8 *, u8 battlerId); +void DoFreeHealthboxPalsForLevelUp(u8 batterId); enum { @@ -382,7 +391,7 @@ u8 GetBattlerPosition(u8 battlerId); u8 GetBattlerAtPosition(u8 position); bool8 IsBattlerSpritePresent(u8 battlerId); bool8 IsDoubleBattle(void); -void sub_80752A0(struct BattleAnimBgData *animBgData); +void GetBattleAnimBg1Data(struct BattleAnimBgData *animBgData); void sub_80752C8(struct BattleAnimBgData *animBgData, u32 arg1); void sub_8075300(struct BattleAnimBgData *animBgData, u8 unused); void sub_8075358(u32 bgId); @@ -397,7 +406,7 @@ void InitAnimLinearTranslation(struct Sprite *sprite); void StartAnimLinearTranslation(struct Sprite *sprite); void sub_80755B8(struct Sprite *sprite); bool8 AnimTranslateLinear(struct Sprite *sprite); -void sub_807563C(struct Sprite *sprite); +void RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite); void sub_8075678(struct Sprite *sprite); void sub_80756A4(struct Sprite *sprite); void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 412856353..89164b009 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -184,7 +184,7 @@ extern struct UnusedControllerStruct gUnknown_2022870; // general functions void HandleLinkBattleSetup(void); void SetUpBattleVars(void); -void sub_800D30C(void); +void InitBtlControllers(void); void sub_800DD28(void); void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data); diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h index 667686af8..6c2ffa11b 100644 --- a/include/battle_gfx_sfx_util.h +++ b/include/battle_gfx_sfx_util.h @@ -36,7 +36,7 @@ void LoadAndCreateEnemyShadowSprites(void); void SpriteCB_SetInvisible(struct Sprite *sprite); void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species); void HideBattlerShadowSprite(u8 battlerId); -void sub_80357C8(void); +void BattleInterfaceSetWindowPals(void); void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute); void AllocateMonSpritesGfx(void); void FreeMonSpritesGfx(void); diff --git a/include/battle_main.h b/include/battle_main.h index fe585f0e6..201000a69 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -45,9 +45,9 @@ struct UnknownPokemonStruct4 #define BOUNCE_MON 0x0 #define BOUNCE_HEALTHBOX 0x1 -extern const struct SpriteTemplate gUnknown_824EFF0; -extern const struct OamData gOamData_824F010; -extern const struct OamData gOamData_824F018; +extern const struct SpriteTemplate gUnknownDebugSprite; +extern const struct OamData gOamData_BattlerOpponent; +extern const struct OamData gOamData_BattlerPlayer; extern const u8 gTypeNames[][TYPE_NAME_LENGTH + 1]; extern const u8 gStatusConditionString_PoisonJpn[8]; extern const u8 gStatusConditionString_SleepJpn[8]; @@ -66,29 +66,29 @@ void CB2_InitBattle(void); void BattleMainCB2(void); void FreeRestoreBattleData(void); void VBlankCB_Battle(void); -void nullsub_9(struct Sprite *sprite); -void sub_801182C(struct Sprite *sprite); -void sub_8011A1C(void); +void SpriteCB_VsLetterDummy(struct Sprite *sprite); +void SpriteCB_VsLetterInit(struct Sprite *sprite); +void CB2_InitEndLinkBattle(void); u32 GetBattleBgAttribute(u8 arrayId, u8 caseId); -void SpriteCB_WildMon(struct Sprite *sprite); +void SpriteCB_EnemyMon(struct Sprite *sprite); void SpriteCallbackDummy2(struct Sprite *sprite); void SpriteCB_FaintOpponentMon(struct Sprite *sprite); -void sub_8012044(struct Sprite *sprite); -void sub_8012098(struct Sprite *sprite); -void sub_80120C4(struct Sprite *sprite); +void SpriteCb_ShowAsMoveTarget(struct Sprite *sprite); +void SpriteCb_HideAsMoveTarget(struct Sprite *sprite); +void SpriteCB_AllyMon(struct Sprite *sprite); void sub_8012100(struct Sprite *sprite); void sub_8012110(struct Sprite *sprite); void DoBounceEffect(u8 battler, u8 which, s8 delta, s8 amplitude); void EndBounceEffect(u8 battler, u8 which); -void sub_8012354(struct Sprite *sprite); -void sub_801236C(struct Sprite *sprite); +void SpriteCB_PlayerThrowInit(struct Sprite *sprite); +void UpdatePlayerPosInThrowAnim(struct Sprite *sprite); void nullsub_12(void); void BeginBattleIntro(void); void SwitchInClearSetData(void); void FaintClearSetData(void); void BattleTurnPassed(void); u8 IsRunningFromBattleImpossible(void); -void sub_8013F6C(u8 battler); +void UpdatePartyOwnerOnSwitch_NonMulti(u8 battler); void SwapTurnOrder(u8 id1, u8 id2); u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves); void RunBattleScriptCommands_PopCallbacksStack(void); diff --git a/include/data.h b/include/data.h index 19da0034f..55eda56a4 100644 --- a/include/data.h +++ b/include/data.h @@ -48,12 +48,12 @@ extern const u8 *const gBattleAnims_Special[]; extern const struct OamData gUnknown_824F010; extern const struct OamData gUnknown_824F018; extern const union AnimCmd *const gSpriteAnimTable_82349BC[]; -extern const union AffineAnimCmd *const gSpriteAffineAnimTable_82348C8[]; -extern const union AffineAnimCmd *const gSpriteAffineAnimTable_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 union AffineAnimCmd *const gSpriteAffineAnimTable_BattlerPlayer[]; +extern const union AffineAnimCmd *const gSpriteAffineAnimTable_BattlerOpponent[]; +extern const struct SpriteFrameImage gSpriteImages_BattlerPlayerLeft[]; +extern const struct SpriteFrameImage gSpriteImages_BattlerOpponentLeft[]; +extern const struct SpriteFrameImage gSpriteImages_BattlerPlayerRight[]; +extern const struct SpriteFrameImage gSpriteImages_BattlerOpponentRight[]; extern const struct SpriteFrameImage gTrainerBackPicTable_Red[]; extern const struct SpriteFrameImage gTrainerBackPicTable_Leaf[]; extern const struct SpriteFrameImage gTrainerBackPicTable_Pokedude[]; diff --git a/include/gba/defines.h b/include/gba/defines.h index 28f804dff..ce276862c 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -16,8 +16,10 @@ #if MODERN #define NOINLINE __attribute__((noinline)) +#define HERE __attribute__((no_reorder)) #else #define NOINLINE +#define HERE #endif #define ALIGNED(n) __attribute__((aligned(n))) @@ -92,7 +94,15 @@ #define RGB_CYAN RGB(0, 31, 31) #define RGB_WHITEALPHA (RGB_WHITE | 0x8000) +// Some functions are strictly inline asm #define NAKED __attribute__((naked)) + +// Silence IDE warnings +#if __GNUC__ >= 4 +#define USED __attribute__((used)) +#else +#define USED +#endif #define UNUSED __attribute__((unused)) #endif // GUARD_GBA_DEFINES diff --git a/include/global.h b/include/global.h index dbe913595..04adc82cb 100644 --- a/include/global.h +++ b/include/global.h @@ -16,7 +16,7 @@ #define asm_comment(x) asm volatile("@ -- " x " -- ") #define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided") -#if defined (__APPLE__) || defined (__CYGWIN__) +#if defined (__APPLE__) || defined (__CYGWIN__) || defined(__CLION_IDE__) // Get the IDE to stfu // We define it this way to fool preproc. @@ -31,9 +31,7 @@ #define __(x) (x) #endif // __APPLE__ -#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) -// GF's lingo -#define NELEMS ARRAY_COUNT +#define NELEMS(array) (sizeof(array) / sizeof((array)[0])) #define SWAP(a, b, temp) \ { \ @@ -293,7 +291,7 @@ struct SaveBlock2 /*0xB10*/ struct BerryPickingResults berryPick; /*0xB20*/ u8 filler_B20[0x400]; /*0xF20*/ u32 encryptionKey; -}; +}; // size: 0xF24 extern struct SaveBlock2 *gSaveBlock2Ptr; @@ -826,7 +824,7 @@ struct SaveBlock1 /*0x3D24*/ u8 filler3D24[0x10]; /*0x3D34*/ u32 towerChallengeId; /*0x3D38*/ struct TrainerTower trainerTower[NUM_TOWER_CHALLENGE_TYPES]; -}; +}; // size: 0x3D68 struct MapPosition { diff --git a/include/load_save.h b/include/load_save.h index 23c1429ed..95de991a8 100644 --- a/include/load_save.h +++ b/include/load_save.h @@ -6,6 +6,7 @@ extern bool32 gFlashMemoryPresent; extern struct SaveBlock1 gSaveBlock1; extern struct SaveBlock2 gSaveBlock2; +extern struct PokemonStorage gPokemonStorage; void ClearSav2(void); void ClearSav1(void); diff --git a/include/pokeball.h b/include/pokeball.h index 1c2241246..9ba5656af 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -33,7 +33,7 @@ void sub_8076918(u8 bank); void DoHitAnimHealthboxEffect(u8 bank); void LoadBallGfx(u8 ballId); void FreeBallGfx(u8 ballId); -void sub_804BD94(u8 battler); +void StartHealthboxSlideIn(u8 battler); void DestroySpriteAndFreeResources2(struct Sprite *sprite); #endif // GUARD_POKEBALL_H diff --git a/include/pokemon.h b/include/pokemon.h index 6a9b657ea..2f9bdb5af 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -327,7 +327,7 @@ extern const u32 gExperienceTables[][MAX_LEVEL + 1]; extern const u16 *const gLevelUpLearnsets[]; extern const u8 gFacilityClassToPicIndex[]; extern const u8 gFacilityClassToTrainerClass[]; -extern const struct SpriteTemplate gUnknown_825DEF0[]; +extern const struct SpriteTemplate gSpriteTemplates_Battlers[]; extern const u8 gPPUpGetMask[]; void ZeroBoxMonData(struct BoxPokemon *boxMon); |