From 752ce9b90d756e01766c12136169eefe335ac016 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 14 Oct 2017 16:55:25 +0200 Subject: start working on battle anim --- include/battle_anim.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++ include/battle_interface.h | 1 + include/contest.h | 30 +++++++++++++++++++++++++---- include/decompress.h | 2 +- include/sprite.h | 2 +- 5 files changed, 77 insertions(+), 6 deletions(-) create mode 100644 include/battle_anim.h (limited to 'include') diff --git a/include/battle_anim.h b/include/battle_anim.h new file mode 100644 index 000000000..8ba25f9c5 --- /dev/null +++ b/include/battle_anim.h @@ -0,0 +1,48 @@ +#ifndef GUARD_BATTLE_ANIM_H +#define GUARD_BATTLE_ANIM_H + +enum +{ + ANIM_BANK_ATTACKER, + ANIM_BANK_TARGET, + ANIM_BANK_ATK_PARTNER, + ANIM_BANK_DEF_PARTNER, +}; + +enum +{ + BG_ANIM_SCREEN_SIZE, + BG_ANIM_AREA_OVERFLOW_MODE, + BG_ANIM2, + BG_ANIM3, + BG_ANIM_PRIORITY, + BG_ANIM_5, + BG_ANIM_6 +}; + +struct UnknownAnimStruct2 +{ + void *unk0; + u16 *unk4; + u8 unk8; + u8 unk9; + u16 unkA; + u16 unkC; +}; + +void ClearBattleAnimationVars(void); +void DoMoveAnim(u16 move); +void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim); +void DestroyAnimSprite(struct Sprite *sprite); +void DestroyAnimVisualTask(u8 taskId); +void DestroyAnimSoundTask(u8 taskId); +bool8 IsAnimBankSpriteVisible(u8 bank); +void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible); + +bool8 IsContest(void); + +// battle_anim_80FE840.s +void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); +void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 bankIdentity, u8 arg4, void *arg5, u16 *arg6, u16 arg7); + +#endif // GUARD_BATTLE_ANIM_H diff --git a/include/battle_interface.h b/include/battle_interface.h index cecc7bd1f..9c5b56bc8 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -24,5 +24,6 @@ void SetHealthboxSpriteVisible(u8 healthboxSpriteId); void SetHealthboxSpriteInvisible(u8 healthboxSpriteId); void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId); void nullsub_30(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); +void sub_8072A88(u8 arg0); #endif // GUARD_BATTLE_INTERFACE_H diff --git a/include/contest.h b/include/contest.h index 5c473bd2c..7635e7358 100644 --- a/include/contest.h +++ b/include/contest.h @@ -1,7 +1,8 @@ #ifndef GUARD_CONTEST_H #define GUARD_CONTEST_H -struct ContestStruct_02039E00 { +struct ContestStruct_02039E00 +{ u16 unk_00; u8 unk_02[11]; u8 unk_0d[8]; @@ -11,8 +12,29 @@ struct ContestStruct_02039E00 { extern struct ContestStruct_02039E00 gUnknown_02039E00[4]; extern u8 gUnknown_02039F24; -extern EWRAM_DATA u16 gScriptContestCategory; -extern EWRAM_DATA u8 gUnknown_02039F2E; -extern EWRAM_DATA u8 gUnknown_02039F30; +extern u16 gScriptContestCategory; +extern u8 gUnknown_02039F2E; +extern u8 gUnknown_02039F30; + +struct ContestStruct_field_18 +{ + // unknown size + u16 field_0; +}; + +struct ContestResources +{ + void *field_0; + void *field_4; + void *field_8; + void *field_C; + void *field_10; + void *field_14; + struct ContestStruct_field_18 *field_18; +}; + +extern struct ContestResources *gContestResources; + +bool8 IsSpeciesNotUnown(u16 species); #endif //GUARD_CONTEST_H diff --git a/include/decompress.h b/include/decompress.h index 6c925f730..c3a771893 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -8,7 +8,7 @@ void LZDecompressVram(const void *src, void *dest); u16 LoadCompressedObjectPic(const struct CompressedSpriteSheet *src); void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer); -bool8 LoadCompressedObjectPicUsingHeap(struct CompressedSpriteSheet* src); +bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src); void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src); void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer); diff --git a/include/sprite.h b/include/sprite.h index a9377165e..531314079 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -251,7 +251,7 @@ void BuildOamBuffer(void); u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); u8 CreateInvisibleSprite(void (*callback)(struct Sprite *)); -u8 CreateSpriteAndAnimate(struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); +u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); void DestroySprite(struct Sprite *sprite); void ResetOamRange(u8 a, u8 b); void LoadOam(void); -- cgit v1.2.3 From ebb2999c03e7f9291bf905d644ddc03991e4280e Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 14 Oct 2017 23:37:44 +0200 Subject: more of battle anim done --- include/battle.h | 3 +++ include/battle_anim.h | 12 +++++++++++- include/contest.h | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index f00b7f9ab..a9243182e 100644 --- a/include/battle.h +++ b/include/battle.h @@ -826,6 +826,7 @@ void LoadBattleTextboxAndBackground(void); void LoadBattleEntryBackground(void); void ApplyPlayerChosenFrameToBattleMenu(void); bool8 LoadChosenBattleElement(u8 caseId); +void LoadFittingBackgroundForBattle(void); void task00_0800F6FC(u8 taskId); // battle_5 @@ -890,6 +891,8 @@ struct BattleHealthboxInfo u8 flag_x1 : 1; u8 flag_x2 : 1; u8 flag_x4 : 1; + u8 flag_x8 : 1; + u8 flag_x10 : 1; u8 field_1; u8 field_2; u8 field_3; diff --git a/include/battle_anim.h b/include/battle_anim.h index 8ba25f9c5..86eb20aec 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -30,6 +30,13 @@ struct UnknownAnimStruct2 u16 unkC; }; +struct BattleAnimBackground +{ + void *image; + void *palette; + void *tilemap; +}; + void ClearBattleAnimationVars(void); void DoMoveAnim(u16 move); void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim); @@ -38,8 +45,11 @@ void DestroyAnimVisualTask(u8 taskId); void DestroyAnimSoundTask(u8 taskId); bool8 IsAnimBankSpriteVisible(u8 bank); void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible); - bool8 IsContest(void); +s8 BattleAnimAdjustPanning(s8 pan); +s8 BattleAnimAdjustPanning2(s8 pan); +s16 sub_80A52EC(s16 a); +s16 sub_80A5314(s16 a, s16 b, s16 c); // battle_anim_80FE840.s void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); diff --git a/include/contest.h b/include/contest.h index 7635e7358..7dcde7da2 100644 --- a/include/contest.h +++ b/include/contest.h @@ -36,5 +36,6 @@ struct ContestResources extern struct ContestResources *gContestResources; bool8 IsSpeciesNotUnown(u16 species); +void LoadContestBgAfterMoveAnim(void); #endif //GUARD_CONTEST_H -- cgit v1.2.3 From dd0f19476c3a15514e3d08855cee3266fdbdf2ed Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 15 Oct 2017 23:21:59 +0200 Subject: battle anim file is decompiled --- include/battle_anim.h | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/battle_anim.h b/include/battle_anim.h index 86eb20aec..3345d7de3 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -37,6 +37,24 @@ struct BattleAnimBackground void *tilemap; }; +#define ANIM_ARGS_COUNT 8 + +extern void (*gAnimScriptCallback)(void); +extern bool8 gAnimScriptActive; +extern u8 gAnimVisualTaskCount; +extern u8 gAnimSoundTaskCount; +extern struct DisableStruct *gAnimDisableStructPtr; +extern u32 gAnimMoveDmg; +extern u16 gAnimMovePower; +extern u8 gAnimFriendship; +extern u16 gWeatherMoveAnim; +extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT]; +extern u8 gAnimMoveTurn; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; +extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT]; +extern u8 gUnknown_02038440; + void ClearBattleAnimationVars(void); void DoMoveAnim(u16 move); void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim); @@ -49,7 +67,7 @@ bool8 IsContest(void); s8 BattleAnimAdjustPanning(s8 pan); s8 BattleAnimAdjustPanning2(s8 pan); s16 sub_80A52EC(s16 a); -s16 sub_80A5314(s16 a, s16 b, s16 c); +s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); // battle_anim_80FE840.s void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); -- cgit v1.2.3 From 36035518dcd36c915b8b8f3461881ea813933454 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 20 Oct 2017 00:01:17 +0200 Subject: review battle anim changes --- include/battle.h | 2 +- include/battle_anim.h | 3 +++ include/gba/io_reg.h | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index a36fdec23..a7a26e5eb 100644 --- a/include/battle.h +++ b/include/battle.h @@ -830,7 +830,7 @@ void LoadBattleTextboxAndBackground(void); void LoadBattleEntryBackground(void); void ApplyPlayerChosenFrameToBattleMenu(void); bool8 LoadChosenBattleElement(u8 caseId); -void LoadFittingBackgroundForBattle(void); +void DrawMainBattleBackground(void); void task00_0800F6FC(u8 taskId); // battle_5 diff --git a/include/battle_anim.h b/include/battle_anim.h index 3345d7de3..f38572d19 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -39,6 +39,9 @@ struct BattleAnimBackground #define ANIM_ARGS_COUNT 8 +#define PAN_ATTACKER_PLAYER -64 +#define PAN_ATTACKER_OPPONENT 63 + extern void (*gAnimScriptCallback)(void); extern bool8 gAnimScriptActive; extern u8 gAnimVisualTaskCount; diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index 5234e5b6c..f8c89fdbd 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -521,6 +521,8 @@ #define DISPSTAT_HBLANK_INTR 0x0010 // H-Blank interrupt enabled #define DISPSTAT_VCOUNT_INTR 0x0020 // V-Count interrupt enabled +// BLDCNT + // SOUNDCNT_H #define SOUND_CGB_MIX_QUARTER 0x0000 #define SOUND_CGB_MIX_HALF 0x0001 -- cgit v1.2.3