summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/battle.h28
-rw-r--r--include/battle_anim.h73
-rw-r--r--include/battle_interface.h36
-rw-r--r--include/contest.h31
-rw-r--r--include/decompress.h2
-rw-r--r--include/gba/io_reg.h2
-rw-r--r--include/gba/types.h14
-rw-r--r--include/sprite.h2
8 files changed, 170 insertions, 18 deletions
diff --git a/include/battle.h b/include/battle.h
index 448e281d9..8ea1b78f4 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -830,6 +830,7 @@ void LoadBattleTextboxAndBackground(void);
void LoadBattleEntryBackground(void);
void ApplyPlayerChosenFrameToBattleMenu(void);
bool8 LoadChosenBattleElement(u8 caseId);
+void DrawMainBattleBackground(void);
void task00_0800F6FC(u8 taskId);
// battle_5
@@ -887,6 +888,19 @@ struct BattleSpriteInfo
struct BattleAnimationInfo
{
u16 field; // to fill up later
+ u8 field_2;
+ u8 field_3;
+ u8 field_4;
+ u8 field_5;
+ u8 field_6;
+ u8 field_7;
+ u8 field_8;
+ u8 field_9_x1 : 1;
+ u8 field_9_x2 : 1;
+ u8 field_9_x1C : 3;
+ u8 field_9_x20 : 1;
+ u8 field_9_x40 : 1;
+ u8 field_9_x80 : 1;
};
struct BattleHealthboxInfo
@@ -894,6 +908,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;
@@ -907,11 +923,21 @@ struct BattleHealthboxInfo
u8 field_B;
};
+struct BattleBarInfo
+{
+ u8 healthboxSpriteId;
+ s32 maxValue;
+ s32 currentValue;
+ s32 field_C;
+ s32 field_10;
+};
+
struct BattleSpriteData
{
struct BattleSpriteInfo *bankData;
struct BattleHealthboxInfo *healthBoxesData;
struct BattleAnimationInfo *animationData;
+ struct BattleBarInfo *battleBars;
};
extern struct BattleSpriteData *gBattleSpritesDataPtr;
@@ -930,6 +956,8 @@ struct MonSpritesGfx
void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon
void* sprites[4];
struct SpriteTemplate templates[4];
+ u8 field_74[0x100];
+ u8 *fontPixels;
};
extern struct BattleSpritesGfx* gMonSpritesGfx;
diff --git a/include/battle_anim.h b/include/battle_anim.h
index fa546b192..5282916c0 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -1,6 +1,79 @@
#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;
+};
+
+struct BattleAnimBackground
+{
+ void *image;
+ void *palette;
+ void *tilemap;
+};
+
+#define ANIM_ARGS_COUNT 8
+
+#define PAN_SIDE_PLAYER -64
+#define PAN_SIDE_OPPONENT 63
+
+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);
+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);
+s8 BattleAnimAdjustPanning(s8 pan);
+s8 BattleAnimAdjustPanning2(s8 pan);
+s16 sub_80A52EC(s16 a);
+s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
+
+// 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..05ea1c021 100644
--- a/include/battle_interface.h
+++ b/include/battle_interface.h
@@ -1,6 +1,22 @@
#ifndef GUARD_BATTLE_INTERFACE_H
#define GUARD_BATTLE_INTERFACE_H
+#include "battle_controllers.h"
+
+#define TAG_HEALTHBOX_PLAYER1_TILE 0xD6FF
+#define TAG_HEALTHBOX_PLAYER2_TILE 0xD700
+#define TAG_HEALTHBOX_OPPONENT1_TILE 0xD701
+#define TAG_HEALTHBOX_OPPONENT2_TILE 0xD702
+
+#define TAG_HEALTHBOX_SAFARI_TILE 0xD70B
+
+#define TAG_STATUS_SUMMARY_BAR_TILE 0xD70C
+#define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714
+
+#define TAG_HEALTHBOX_PAL 0xD6FF
+#define TAG_STATUS_SUMMARY_BAR_PAL 0xD710
+#define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712
+
enum
{
HEALTHBOX_ALL,
@@ -10,8 +26,8 @@ enum
HEALTHBOX_NICK,
HEALTHBOX_HEALTH_BAR,
HEALTHBOX_EXP_BAR,
- HEALTHBOX_7,
- HEALTHBOX_8,
+ HEALTHBOX_UNUSED_7,
+ HEALTHBOX_UNUSED_8,
HEALTHBOX_STATUS_ICON,
HEALTHBOX_SAFARI_ALL_TEXT,
HEALTHBOX_SAFARI_BALLS_TEXT
@@ -19,10 +35,20 @@ enum
u8 CreateBankHealthboxSprites(u8 bank);
u8 CreateSafariPlayerHealthboxSprites(void);
-void SetBankHealthboxSpritePos(u8 bank);
-void SetHealthboxSpriteVisible(u8 healthboxSpriteId);
+void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 field_C);
void SetHealthboxSpriteInvisible(u8 healthboxSpriteId);
+void SetHealthboxSpriteVisible(u8 healthboxSpriteId);
+void DestoryHealthboxSprite(u8 healthboxSpriteId);
+void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly);
+void UpdateOamPriorityInAllHealthboxes(u8 priority);
+void SetBankHealthboxSpritePos(u8 bank);
+void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
+void SwapHpBarsWithHpText(void);
+u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart);
+void sub_8073C30(u8 taskId);
void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId);
-void nullsub_30(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly);
+s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3);
+u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale);
+u8 GetHPBarLevel(s16 hp, s16 maxhp);
#endif // GUARD_BATTLE_INTERFACE_H
diff --git a/include/contest.h b/include/contest.h
index 5c473bd2c..7dcde7da2 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,30 @@ 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);
+void LoadContestBgAfterMoveAnim(void);
#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/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
diff --git a/include/gba/types.h b/include/gba/types.h
index fd8a20a4c..e9a380023 100644
--- a/include/gba/types.h
+++ b/include/gba/types.h
@@ -39,18 +39,18 @@ struct PlttData
struct OamData
{
/*0x00*/ u32 y:8;
- /*0x01*/ u32 affineMode:2;
- u32 objMode:2;
- u32 mosaic:1;
- u32 bpp:1;
- u32 shape:2;
+ /*0x01*/ u32 affineMode:2; // 0x1, 0x2 -> 0x4
+ u32 objMode:2; // 0x4, 0x8 -> 0xC
+ u32 mosaic:1; // 0x10
+ u32 bpp:1; // 0x20
+ u32 shape:2; // 0x40, 0x80 -> 0xC0
/*0x02*/ u32 x:9;
u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode
u32 size:2;
- /*0x04*/ u16 tileNum:10;
- u16 priority:2;
+ /*0x04*/ u16 tileNum:10; // 0x33F
+ u16 priority:2; // 0x400, 0x800 -> 0xC00
u16 paletteNum:4;
/*0x06*/ u16 affineParam;
};
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);