summaryrefslogtreecommitdiff
path: root/include/sprite.h
diff options
context:
space:
mode:
authorCameron Hall <camthesaxman@users.noreply.github.com>2017-01-27 13:06:20 -0500
committerYamaArashi <YamaArashi@users.noreply.github.com>2017-01-27 10:06:20 -0800
commitb9ff56bd89ac11a9b40b34f834dcf7a5be4d90a6 (patch)
tree4ee0f20cf1c2dc523108c424bb435cbd0bd43542 /include/sprite.h
parent72bc8f23d37c6efd68ad4a0f86ba87b6cd3db4d2 (diff)
define more data in C (#219)
* define some graphics data in C * define wild pokemon in C * use less #ifdefs * define data in berry.c
Diffstat (limited to 'include/sprite.h')
-rw-r--r--include/sprite.h30
1 files changed, 22 insertions, 8 deletions
diff --git a/include/sprite.h b/include/sprite.h
index 721616e9e..7a2dd8494 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -5,7 +5,7 @@
struct SpriteSheet
{
- u8 *data;
+ const u8 *data;
u16 size;
u16 tag;
};
@@ -18,7 +18,7 @@ struct SpriteFrameImage
struct SpritePalette
{
- u16 *data;
+ const u16 *data;
u16 tag;
};
@@ -53,6 +53,13 @@ union AnimCmd
struct AnimJumpCmd jump;
};
+#define ANIMCMD_FRAME(_imageValue, _duration) \
+ {.frame = {.imageValue = _imageValue, .duration = _duration}}
+#define ANIMCMD_JUMP(_target) \
+ {.jump = {.type = -2, .target = _target}}
+#define ANIMCMD_END \
+ {.type = -1}
+
struct AffineAnimFrameCmd
{
s16 xScale;
@@ -61,6 +68,11 @@ struct AffineAnimFrameCmd
u8 duration;
};
+#define AFFINEANIMCMD_FRAME(_xScale, _yScale, _rotation, _duration) \
+ {.frame = {.xScale = _xScale, .yScale = _yScale, .rotation = _rotation, .duration = _duration}}
+#define AFFINEANIMCMD_END \
+ {.type = 0x7FFF}
+
struct AffineAnimLoopCmd
{
s16 type;
@@ -121,19 +133,19 @@ struct SpriteTemplate
{
u16 tileTag;
u16 paletteTag;
- struct OamData *oam;
- union AnimCmd **anims;
+ const struct OamData *oam;
+ const union AnimCmd *const *anims;
struct SpriteFrameImage *images;
- union AffineAnimCmd **affineAnims;
+ const union AffineAnimCmd *const *affineAnims;
void (*callback)(struct Sprite *);
};
struct Sprite
{
/*0x00*/ struct OamData oam;
- /*0x08*/ union AnimCmd **anims;
+ /*0x08*/ const union AnimCmd *const *anims;
/*0x0C*/ struct SpriteFrameImage *images;
- /*0x10*/ union AffineAnimCmd **affineAnims;
+ /*0x10*/ const union AffineAnimCmd *const *affineAnims;
/*0x14*/ const struct SpriteTemplate *template;
/*0x18*/ const struct SubspriteTable *subspriteTables;
/*0x1C*/ void (*callback)(struct Sprite *);
@@ -204,7 +216,7 @@ void SetOamMatrix(u8 matrixNum, u16 a, u16 b, u16 c, u16 d);
void CalcCenterToCornerVec(struct Sprite *sprite, u8 shape, u8 size, u8 affineMode);
void SpriteCallbackDummy(struct Sprite *sprite);
void ProcessSpriteCopyRequests(void);
-void RequestSpriteCopy(u8 *src, u8 *dest, u16 size);
+void RequestSpriteCopy(const u8 *src, u8 *dest, u16 size);
void FreeSpriteTiles(struct Sprite *sprite);
void FreeSpritePalette(struct Sprite *sprite);
void FreeSpriteOamMatrix(struct Sprite *sprite);
@@ -249,4 +261,6 @@ void CopyToSprites(u8 *src);
void CopyFromSprites(u8 *dest);
u8 SpriteTileAllocBitmapOp(u16 bit, u8 op);
+extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
+
#endif // GUARD_SPRITE_H