Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
sprite.h
Go to the documentation of this file.
1#ifndef _SPRITE_H_
2#define _SPRITE_H_
3
4#include "common.h"
5
6#define SPR_PLAYER_COLOR_VARIATIONS 6
7#define SPR_PEACH_BTL_PAL_STRIDE 4
8
9#define SPR_UNPACK_SPR(animID) (((animID) >> 16) & 0xFF)
10#define SPR_UNPACK_PAL(animID) (((animID) >> 8) & 0xFF)
11#define SPR_UNPACK_ANIM(animID) ((animID) & 0xFF)
12
14 SPRITE_ID_ANIM_MASK = 0x000000FF,
15 SPRITE_ID_PAL_MASK = 0x0000FF00,
16 SPRITE_ID_SPR_MASK = 0x00FF0000,
19};
20
28
29enum {
33};
34
35//TODO this is just a boolean isNpcSprite, using a temp enum for documenting
36enum {
39};
40
41typedef struct SpriteComponent {
42 /* 0x00 */ s32 initialized;
43 /* 0x04 */ s32 properties;
44 /* 0x08 */ s16* readPos;
45 /* 0x0C */ f32 waitTime;
46 /* 0x10 */ s32 loopCounter;
47 /* 0x14 */ s32 curRaster;
48 /* 0x18 */ s32 curPalette;
49 /* 0x1C */ Vec3f posOffset;
50 /* 0x28 */ Vec3f compPos;
51 /* 0x34 */ Vec3i rot;
52 /* 0x40 */ Vec3f scale;
53 /* 0x4C */ s32 imgfxIdx;
54} SpriteComponent; // size = 0x50
55
56typedef struct PlayerCurrentAnimInfo {
58 /* 0x04 */ s32 animID;
59 /* 0x08 */ s32 notifyValue;
60} PlayerCurrentAnimInfo; // size = 0xC
61
62typedef struct SpriteAnimComponent {
63 /* 0x00 */ u16* cmdList;
64 /* 0x04 */ s16 cmdListSize;
65 /* 0x06 */ Vec3s compOffset;
66} SpriteAnimComponent; // size = 0xC
67
68// TODO: consider moving to 101b90_len_8f0 (sprite_cache)
69typedef struct SpriteRasterCacheEntry {
70 /* 0x00 */ IMG_PTR image;
71 /* 0x04 */ u8 width;
72 /* 0x05 */ u8 height;
73 /* 0x06 */ s8 palette;
74 /* 0x07 */ s8 quadCacheIndex;
75} SpriteRasterCacheEntry; // size = 0x8
76
78typedef struct SpriteAnimData {
81 /* 0x08 */ s32 maxComponents;
82 /* 0x0C */ s32 colorVariations;
84} SpriteAnimData; // size = 0x14
85
86typedef struct SpriteInstance {
87 /* 0x00 */ s32 spriteIndex;
90 /* 0x0C */ s32 curAnimID;
91 /* 0x10 */ s32 notifyValue;
92} SpriteInstance; // size = 0x14
93
94typedef struct PlayerRastersHeader {
95 /* 0x00 */ s32 indexRanges;
96 /* 0x04 */ s32 loadDescriptors;
97 /* 0x08 */ s32 imageData;
98} PlayerRastersHeader; // size = 0xC
99
100typedef struct PlayerSpriteSet {
102 /* 0x00 */ s32 cacheSize;
103
105 /* 0x04 */ s32 rasterSize;
106
110} PlayerSpriteSet; // size = 0xC
111
113 /* 0x00 */ s32 lazyDeleteTime;
114 /* 0x04 */ s32 rasterIndex;
115 /* 0x08 */ s32 spriteIndex;
116 /* 0x0C */ IMG_PTR raster;
117} PlayerSpriteCacheEntry; // size = 0x10
118
119typedef struct Quad {
120 Vtx v[4];
121} Quad; // size = 0x40
122
123#ifdef _LANGUAGE_C_PLUS_PLUS
124extern "C" {
125#endif
126
127void imgfx_init(void);
128
129void spr_init_sprites(s32 playerSpriteSet);
130
131void spr_render_init(void);
132
134
136
137s32 spr_draw_player_sprite(s32 spriteInstanceID, s32 yaw, s32 arg2, PAL_PTR* paletteList, Matrix4f mtx);
138
140
142
144
146
148
150
152s32 spr_load_npc_sprite(s32 animID, u32* extraAnimList);
153
154s32 spr_update_sprite(s32 spriteInstanceID, s32 animID, f32 timeScale);
155
156s32 spr_draw_npc_sprite(s32 spriteInstanceID, s32 yaw, s32 alphaIn, PAL_PTR* paletteList, Matrix4f mtx);
157
158s32 spr_get_notify_value(s32 spriteInstanceID);
159
160s32 spr_free_sprite(s32 spriteInstanceID);
161
163
165
167
169
171
173
175
177
178void func_801491E4(Matrix4f mtx, s32, s32, s32, s32, s32 alpha);
179
181
182#ifdef _LANGUAGE_C_PLUS_PLUS
183} // extern "C"
184#endif
185
186#endif
BSS s32 PopupMenu_SelectedIndex
#define PAL_PTR
#define IMG_PTR
f32 Matrix4f[4][4]
ImgFXType
Definition enums.h:4701
#define VLA
Definition macros.h:529
SpriteAnimComponent ** animListStart[VLA]
Definition sprite.h:83
s32 spr_get_notify_value(s32 spriteInstanceID)
Definition sprite.c:1158
IMG_PTR spr_get_player_raster(s32 rasterIndex, s32 playerSpriteID)
s32 rasterSize
Maximum raster size.
Definition sprite.h:105
Vec3f posOffset
Definition sprite.h:49
void spr_get_player_raster_info(SpriteRasterInfo *out, s32 playerSpriteID, s32 rasterIndex)
Definition sprite.c:988
SpriteAnimData * spriteData
Definition sprite.h:89
s32 initiallyLoaded
Flags saying which rasters to load into the cache in spr_init_sprites(), with each bit corresponding ...
Definition sprite.h:109
s32 spriteIndex
Definition sprite.h:87
Vec3f compPos
Definition sprite.h:50
void spr_render_init(void)
Definition sprite.c:815
s32 spr_update_sprite(s32 spriteInstanceID, s32 animID, f32 timeScale)
Definition sprite.c:1061
void spr_update_player_raster_cache(void)
s32 spr_free_sprite(s32 spriteInstanceID)
Definition sprite.c:1162
void func_801491E4(Matrix4f mtx, s32, s32, s32, s32, s32 alpha)
s32 properties
AABBCCCC : AA = unused?, BB = parent, CCCC = notify value.
Definition sprite.h:43
s32 spr_get_npc_color_variations(s32 npcSpriteID)
Definition sprite.c:1306
void create_shading_palette(Matrix4f mtx, s32 uls, s32 ult, s32 lrs, s32 lrt, s32 alpha, s32)
SpriteAnimData * spr_load_sprite(s32 idx, s32 arg1, s32 arg2)
s32 spr_draw_player_sprite(s32 spriteInstanceID, s32 yaw, s32 arg2, PAL_PTR *paletteList, Matrix4f mtx)
Definition sprite.c:867
s16 * readPos
Definition sprite.h:44
SpriteRasterCacheEntry ** rastersOffset
Definition sprite.h:79
s32 get_npc_comp_imgfx_idx(s32, s32)
Definition sprite.c:1202
s32 curAnimID
Definition sprite.h:90
s32 spr_get_npc_raster_info(SpriteRasterInfo *out, s32 npcSpriteID, s32 rasterIndex)
Definition sprite.c:1279
void set_npc_imgfx_comp(s32, s32, ImgFXType, s32, s32, s32, s32, s32)
Definition sprite.c:1212
s32 spr_update_player_sprite(s32 arg0, s32 arg1, f32 timescale)
Definition sprite.c:820
void set_player_imgfx_all(s32, ImgFXType, s32, s32, s32, s32, s32)
Definition sprite.c:984
SpriteComponent ** componentList
Definition sprite.h:88
DrawSpriteOptions
Definition sprite.h:21
@ DRAW_SPRITE_OVERRIDE_YAW
Definition sprite.h:25
@ DRAW_SPRITE_OVERRIDE_ALPHA
Definition sprite.h:26
@ DRAW_SPRITE_OVERRIDE_PALETTES
Definition sprite.h:24
@ DRAW_SPRITE_UPSIDE_DOWN
Definition sprite.h:23
@ DRAW_SPRITE_USE_PLAYER_RASTERS
Definition sprite.h:22
void imgfx_init(void)
Definition imgfx.c:242
s32 cacheSize
Number of cache entries.
Definition sprite.h:102
s32 initialized
Definition sprite.h:42
s32 spr_draw_npc_sprite(s32 spriteInstanceID, s32 yaw, s32 alphaIn, PAL_PTR *paletteList, Matrix4f mtx)
Definition sprite.c:1094
void spr_init_sprites(s32 playerSpriteSet)
Definition sprite.c:765
PAL_PTR * spr_get_npc_palettes(s32 npcSpriteID)
Definition sprite.c:1296
s32 spr_get_comp_position(s32 spriteIdx, s32 compListIdx, s32 *outX, s32 *outY, s32 *outZ)
Definition sprite.c:1242
s32 spr_load_npc_sprite(s32 animID, u32 *extraAnimList)
Definition sprite.c:1015
Vtx v[4]
Definition sprite.h:120
void set_player_imgfx_comp(s32, s32, ImgFXType, s32, s32, s32, s32, s32)
Definition sprite.c:958
SpriteComponent ** componentList
Definition sprite.h:57
@ PLAYER_SPRITE_AUX1
Definition sprite.h:31
@ PLAYER_SPRITE_AUX2
Definition sprite.h:32
@ PLAYER_SPRITE_MAIN
Definition sprite.h:30
PAL_PTR * spr_get_player_palettes(s32 spriteIndex)
Definition sprite.c:1005
s32 loopCounter
Definition sprite.h:46
PAL_PTR * palettesOffset
Definition sprite.h:80
s32 func_802DDEC4(s32 arg0)
Definition sprite.c:954
void set_npc_imgfx_all(s32 arg0, ImgFXType arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6)
Definition sprite.c:1238
s32 notifyValue
Definition sprite.h:91
Vec3f scale
Definition sprite.h:52
@ SPRITE_MODE_NPC
Definition sprite.h:38
@ SPRITE_MODE_PLAYER
Definition sprite.h:37
SpriteIDFields
Definition sprite.h:13
@ SPRITE_ID_SPR_MASK
Definition sprite.h:16
@ SPRITE_ID_ANIM_MASK
Definition sprite.h:14
@ SPRITE_ID_TAIL_ALLOCATE
Definition sprite.h:18
@ SPRITE_ID_PAL_MASK
Definition sprite.h:15
@ SPRITE_ID_BACK_FACING
Definition sprite.h:17
s32 colorVariations
Definition sprite.h:82
s32 maxComponents
Definition sprite.h:81
Definition sprite.h:119
Sprite data header.
Definition sprite.h:78