papermario
Decompilation of Paper Mario
 
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Loading...
Searching...
No Matches
sprite.c File Reference

Macros

#define MAX_SPRITE_ID   0xEA
 
#define MARIO_SPRITE_COMMON_BITS
 
#define MARIO_SPRITE_WORLD_BITS
 
#define MARIO_SPRITE_BATTLE_BITS
 
#define PEACH_SPRITE_BITS
 

Functions

SpriteComponent ** spr_allocate_components (s32)
 
void spr_load_npc_extra_anims (SpriteAnimData *, u32 *)
 
void spr_init_player_raster_cache (s32 cacheSize, s32 maxRasterSize)
 
void spr_init_quad_cache (void)
 
Quadspr_get_cached_quad (s32 quadIndex)
 
void spr_make_quad_for_size (Quad *quad, s32 width, s32 height)
 
Quadspr_get_quad_for_size (s32 *quadIndex, s32 width, s32 height)
 
void spr_clear_quad_cache (void)
 
void spr_appendGfx_component_flat (Quad *vertices, IMG_PTR raster, PAL_PTR palette, s32 width, s32 height, f32 arg5, Matrix4f mtx, s32 alpha)
 
void spr_appendGfx_component (SpriteRasterCacheEntry *cache, f32 dx, f32 dy, f32 dz, f32 rotX, f32 rotY, f32 rotZ, f32 scaleX, f32 scaleY, f32 scaleZ, s32 opacity, PAL_PTR palette, Matrix4f mtx)
 
void spr_transform_point (s32 rotX, s32 rotY, s32 rotZ, f32 inX, f32 inY, f32 inZ, f32 *outX, f32 *outY, f32 *outZ)
 
void spr_draw_component (s32 drawOpts, SpriteComponent *component, SpriteAnimComponent *anim, SpriteRasterCacheEntry **cache, PAL_PTR *palettes, f32 zscale, Matrix4f mtx)
 
s32 spr_unpack_signed_12bit (u16 val)
 
s32 spr_unpack_signed_16bit (u16 val)
 
void spr_component_update_commands (SpriteComponent *comp, SpriteAnimComponent *anim)
 
void spr_component_update_finish (SpriteComponent *comp, SpriteComponent **compList, SpriteRasterCacheEntry **rasterCacheEntry, s32 overridePalette)
 
s32 spr_component_update (s32 curNotifyValue, SpriteComponent **compList, SpriteAnimComponent **animList, SpriteRasterCacheEntry **rasterCache, s32 overridePalette)
 
void spr_init_component_anim_state (SpriteComponent *comp, SpriteAnimComponent *anim)
 
void spr_init_anim_state (SpriteComponent **compList, SpriteAnimComponent **animList)
 
void spr_set_anim_timescale (f32 timescale)
 
void spr_load_player_sprite (s32 spriteIndex)
 
void spr_init_sprites (s32 playerSpriteSet)
 
void spr_render_init (void)
 
s32 func_802DDA84 (void)
 
s32 spr_update_player_sprite (s32 spriteInstanceID, s32 animID, f32 timeScale)
 
s32 spr_draw_player_sprite (s32 spriteInstanceID, s32 yaw, s32 alphaIn, PAL_PTR *paletteList, Matrix4f mtx)
 
s32 func_802DDEC4 (s32 spriteIdx)
 
void set_player_imgfx_comp (s32 spriteIdx, s32 compIdx, ImgFXType imgfx, s32 imgfxArg1, s32 imgfxArg2, s32 imgfxArg3, s32 imgfxArg4, s32 flags)
 
void set_player_imgfx_all (s32 animID, ImgFXType imgfxType, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6)
 
void spr_get_player_raster_info (SpriteRasterInfo *out, s32 playerSpriteID, s32 rasterIndex)
 
PAL_PTRspr_get_player_palettes (s32 spriteIndex)
 
s32 spr_load_npc_sprite (s32 animID, u32 *extraAnimList)
 
s32 spr_update_sprite (s32 spriteInstanceID, s32 animID, f32 timeScale)
 
s32 spr_draw_npc_sprite (s32 spriteInstanceID, s32 yaw, s32 arg2, PAL_PTR *paletteList, Matrix4f mtx)
 
s32 spr_get_notify_value (s32 spriteIndex)
 
s32 spr_free_sprite (s32 spriteInstanceID)
 
s32 get_npc_comp_imgfx_idx (s32 spriteIdx, s32 compIdx)
 
void set_npc_imgfx_comp (s32 spriteIdx, s32 compIdx, ImgFXType imgfx, s32 imgfxArg1, s32 imgfxArg2, s32 imgfxArg3, s32 imgfxArg4, s32 imgfxArg5)
 
void set_npc_imgfx_all (s32 spriteIdx, ImgFXType imgfxType, s32 imgfxArg1, s32 imgfxArg2, s32 imgfxArg3, s32 imgfxArg4, s32 imgfxArg5)
 
s32 spr_get_comp_position (s32 spriteIdx, s32 compListIdx, s32 *outX, s32 *outY, s32 *outZ)
 
s32 spr_get_npc_raster_info (SpriteRasterInfo *out, s32 npcSpriteID, s32 rasterIndex)
 
PAL_PTRspr_get_npc_palettes (s32 npcSpriteID)
 
s32 spr_get_npc_color_variations (s32 npcSpriteID)
 

Variables

HeapNode heap_generalHead
 
HeapNode heap_spriteHead
 
BSS s32 D_802DF520
 
BSS s32 spr_allocateBtlComponentsOnWorldHeap
 
BSS s32 D_802DF528 [2]
 
BSS s32 MaxLoadedSpriteInstanceID
 
BSS s32 D_802DF534 [3]
 
BSS s32 D_802DF540
 
BSS s32 D_802DF544
 
BSS SpriteAnimDataspr_playerSprites [13]
 
BSS s32 D_802DF57C
 
BSS s32 spr_playerMaxComponents
 
BSS s32 D_802DF584
 
BSS PlayerCurrentAnimInfo spr_playerCurrentAnimInfo [3]
 
BSS s32 D_802DF5AC
 
BSS SpriteAnimDataNpcSpriteData [0xEA]
 
BSS u8 NpcSpriteInstanceCount [0xEA]
 
BSS s32 D_802DFA44
 
BSS SpriteInstance SpriteInstances [51]
 
BSS QuadD_802DFE44
 
BSS s32 D_802DFE48 [22]
 
BSS s32 D_802DFEA0 [3]
 
BSS s32 SpriteUpdateNotifyValue
 
Quad spr_defaultQuad
 
Vp SprPauseVp
 
Vp SprPauseVpAlt
 
Gfx D_802DF3F0 []
 
Gfx D_802DF428 []
 
Gfx D_802DF460 []
 
Gfx D_802DF490 []
 
f32 spr_animUpdateTimeScale = 1.0f
 
PlayerSpriteSet spr_playerSpriteSets []
 

Macro Definition Documentation

◆ MARIO_SPRITE_BATTLE_BITS

#define MARIO_SPRITE_BATTLE_BITS
Value:
| 1 << SPR_MarioB1 \
| 1 << SPR_MarioB2 \
| 1 << SPR_MarioB3
#define MARIO_SPRITE_COMMON_BITS
Definition sprite.c:96

◆ MARIO_SPRITE_COMMON_BITS

#define MARIO_SPRITE_COMMON_BITS
Value:
1 << SPR_Mario1 \
| 1 << SPR_Mario1_Back \

◆ MARIO_SPRITE_WORLD_BITS

#define MARIO_SPRITE_WORLD_BITS
Value:
| 1 << SPR_MarioW1 \
| 1 << SPR_MarioW1_Back \
| 1 << SPR_MarioW2 \
| 1 << SPR_MarioW3

◆ MAX_SPRITE_ID

#define MAX_SPRITE_ID   0xEA

◆ PEACH_SPRITE_BITS

#define PEACH_SPRITE_BITS
Value:
1 << SPR_Peach1 \
| 1 << SPR_Peach1_Back \
| 1 << SPR_Peach2 \
| 1 << SPR_Peach3 \

Function Documentation

◆ func_802DDA84()

s32 func_802DDA84 ( void )

◆ func_802DDEC4()

s32 func_802DDEC4 ( s32 spriteIdx)

Referenced by appendGfx_npc().

◆ get_npc_comp_imgfx_idx()

s32 get_npc_comp_imgfx_idx ( s32 spriteIdx,
s32 compIdx )

◆ set_npc_imgfx_all()

◆ set_npc_imgfx_comp()

void set_npc_imgfx_comp ( s32 spriteIdx,
s32 compIdx,
ImgFXType imgfx,
s32 imgfxArg1,
s32 imgfxArg2,
s32 imgfxArg3,
s32 imgfxArg4,
s32 imgfxArg5 )

Referenced by set_npc_imgfx_all().

◆ set_player_imgfx_all()

◆ set_player_imgfx_comp()

void set_player_imgfx_comp ( s32 spriteIdx,
s32 compIdx,
ImgFXType imgfx,
s32 imgfxArg1,
s32 imgfxArg2,
s32 imgfxArg3,
s32 imgfxArg4,
s32 flags )

◆ spr_allocate_components()

SpriteComponent ** spr_allocate_components ( s32 count)

◆ spr_appendGfx_component()

void spr_appendGfx_component ( SpriteRasterCacheEntry * cache,
f32 dx,
f32 dy,
f32 dz,
f32 rotX,
f32 rotY,
f32 rotZ,
f32 scaleX,
f32 scaleY,
f32 scaleZ,
s32 opacity,
PAL_PTR palette,
Matrix4f mtx )

Referenced by spr_draw_component().

◆ spr_appendGfx_component_flat()

void spr_appendGfx_component_flat ( Quad * vertices,
IMG_PTR raster,
PAL_PTR palette,
s32 width,
s32 height,
f32 arg5,
Matrix4f mtx,
s32 alpha )

Referenced by spr_appendGfx_component().

◆ spr_clear_quad_cache()

void spr_clear_quad_cache ( void )

Referenced by spr_render_init().

◆ spr_component_update()

s32 spr_component_update ( s32 curNotifyValue,
SpriteComponent ** compList,
SpriteAnimComponent ** animList,
SpriteRasterCacheEntry ** rasterCache,
s32 overridePalette )

◆ spr_component_update_commands()

void spr_component_update_commands ( SpriteComponent * comp,
SpriteAnimComponent * anim )

Referenced by spr_component_update().

◆ spr_component_update_finish()

void spr_component_update_finish ( SpriteComponent * comp,
SpriteComponent ** compList,
SpriteRasterCacheEntry ** rasterCacheEntry,
s32 overridePalette )

Referenced by spr_component_update().

◆ spr_draw_component()

void spr_draw_component ( s32 drawOpts,
SpriteComponent * component,
SpriteAnimComponent * anim,
SpriteRasterCacheEntry ** cache,
PAL_PTR * palettes,
f32 zscale,
Matrix4f mtx )

◆ spr_draw_npc_sprite()

◆ spr_draw_player_sprite()

◆ spr_free_sprite()

◆ spr_get_cached_quad()

Quad * spr_get_cached_quad ( s32 quadIndex)

Referenced by spr_get_quad_for_size().

◆ spr_get_comp_position()

s32 spr_get_comp_position ( s32 spriteIdx,
s32 compListIdx,
s32 * outX,
s32 * outY,
s32 * outZ )

◆ spr_get_notify_value()

s32 spr_get_notify_value ( s32 spriteIndex)

◆ spr_get_npc_color_variations()

◆ spr_get_npc_palettes()

◆ spr_get_npc_raster_info()

s32 spr_get_npc_raster_info ( SpriteRasterInfo * out,
s32 npcSpriteID,
s32 rasterIndex )

◆ spr_get_player_palettes()

◆ spr_get_player_raster_info()

void spr_get_player_raster_info ( SpriteRasterInfo * out,
s32 playerSpriteID,
s32 rasterIndex )

◆ spr_get_quad_for_size()

Quad * spr_get_quad_for_size ( s32 * quadIndex,
s32 width,
s32 height )

Referenced by spr_appendGfx_component().

◆ spr_init_anim_state()

void spr_init_anim_state ( SpriteComponent ** compList,
SpriteAnimComponent ** animList )

◆ spr_init_component_anim_state()

void spr_init_component_anim_state ( SpriteComponent * comp,
SpriteAnimComponent * anim )

Referenced by spr_init_anim_state().

◆ spr_init_player_raster_cache()

void spr_init_player_raster_cache ( s32 cacheSize,
s32 maxRasterSize )

Referenced by spr_init_sprites().

◆ spr_init_quad_cache()

void spr_init_quad_cache ( void )

Referenced by spr_init_sprites().

◆ spr_init_sprites()

◆ spr_load_npc_extra_anims()

void spr_load_npc_extra_anims ( SpriteAnimData * header,
u32 * extraAnimList )

Referenced by spr_load_npc_sprite().

◆ spr_load_npc_sprite()

s32 spr_load_npc_sprite ( s32 animID,
u32 * extraAnimList )
Parameters
animID- Set MSB for tail allocation (i.e. 0x80XXYYZZ)

Referenced by create_actor(), create_npc_impl(), load_partner_actor(), npc_reload_all(), pause_init(), pause_partners_init(), pause_spirits_init(), set_npc_sprite(), and update_npcs().

◆ spr_load_player_sprite()

void spr_load_player_sprite ( s32 spriteIndex)

Referenced by spr_init_sprites().

◆ spr_make_quad_for_size()

void spr_make_quad_for_size ( Quad * quad,
s32 width,
s32 height )

Referenced by spr_get_quad_for_size().

◆ spr_render_init()

void spr_render_init ( void )

Referenced by gfx_draw_frame().

◆ spr_set_anim_timescale()

void spr_set_anim_timescale ( f32 timescale)

◆ spr_transform_point()

void spr_transform_point ( s32 rotX,
s32 rotY,
s32 rotZ,
f32 inX,
f32 inY,
f32 inZ,
f32 * outX,
f32 * outY,
f32 * outZ )

Referenced by spr_draw_component().

◆ spr_unpack_signed_12bit()

s32 spr_unpack_signed_12bit ( u16 val)

◆ spr_unpack_signed_16bit()

s32 spr_unpack_signed_16bit ( u16 val)

◆ spr_update_player_sprite()

◆ spr_update_sprite()

Variable Documentation

◆ D_802DF3F0

Gfx D_802DF3F0[]
Initial value:
= {
gsSPClearGeometryMode(G_CULL_BOTH | G_LIGHTING),
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
gsSPTexture(-1, -1, 0, G_TX_RENDERTILE, G_ON),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsDPSetRenderMode(AA_EN | Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM), AA_EN | Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)),
gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 18, G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_RGBA16 | G_TL_TILE | G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE),
gsSPEndDisplayList(),
}

Referenced by spr_appendGfx_component().

◆ D_802DF428

Gfx D_802DF428[]
Initial value:
= {
gsSPClearGeometryMode(G_CULL_BOTH | G_LIGHTING),
gsDPSetCombineMode(PM_CC_02, PM_CC_02),
gsSPTexture(-1, -1, 0, G_TX_RENDERTILE, G_ON),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsDPSetRenderMode(G_RM_ZB_CLD_SURF, G_RM_ZB_CLD_SURF2),
gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 18, G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_RGBA16 | G_TL_TILE | G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE),
gsSPEndDisplayList(),
}
#define PM_CC_02
Definition macros.h:288

Referenced by spr_appendGfx_component().

◆ D_802DF460

Gfx D_802DF460[]
Initial value:
= {
gsSPClearGeometryMode(G_CULL_BOTH | G_LIGHTING),
gsSPTexture(-1, -1, 0, G_TX_RENDERTILE, G_ON),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsDPSetRenderMode(AA_EN | Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | G_RM_PASS, AA_EN | Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)),
gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 18, G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_RGBA16 | G_TL_TILE | G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE),
gsSPEndDisplayList(),
}

Referenced by spr_appendGfx_component().

◆ D_802DF490

Gfx D_802DF490[]
Initial value:
= {
gsSPClearGeometryMode(G_CULL_BOTH | G_LIGHTING),
gsSPTexture(-1, -1, 0, G_TX_RENDERTILE, G_ON),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsDPSetRenderMode(G_RM_PASS, G_RM_ZB_CLD_SURF2),
gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 18, G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_RGBA16 | G_TL_TILE | G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE),
gsSPEndDisplayList(),
}

Referenced by spr_appendGfx_component().

◆ D_802DF520

BSS s32 D_802DF520

◆ D_802DF528

BSS s32 D_802DF528[2]

◆ D_802DF534

BSS s32 D_802DF534[3]

◆ D_802DF540

BSS s32 D_802DF540

◆ D_802DF544

BSS s32 D_802DF544

◆ D_802DF57C

◆ D_802DF584

BSS s32 D_802DF584

◆ D_802DF5AC

BSS s32 D_802DF5AC

◆ D_802DFA44

BSS s32 D_802DFA44

◆ D_802DFE44

BSS Quad* D_802DFE44

◆ D_802DFE48

◆ D_802DFEA0

◆ heap_generalHead

HeapNode heap_generalHead
extern

Referenced by spr_free_sprite().

◆ heap_spriteHead

HeapNode heap_spriteHead
extern

◆ MaxLoadedSpriteInstanceID

BSS s32 MaxLoadedSpriteInstanceID

Referenced by spr_load_npc_sprite().

◆ NpcSpriteData

◆ NpcSpriteInstanceCount

BSS u8 NpcSpriteInstanceCount[0xEA]

◆ spr_allocateBtlComponentsOnWorldHeap

BSS s32 spr_allocateBtlComponentsOnWorldHeap

◆ spr_animUpdateTimeScale

f32 spr_animUpdateTimeScale = 1.0f

◆ spr_defaultQuad

Quad spr_defaultQuad
Initial value:
= {
{
{{{ -16, 56, 0 }, FALSE, { 0, 0 }, { 240, 240, 240, 255 }}},
{{{ 16, 56, 0 }, FALSE, { 1024, 0 }, { 120, 120, 120, 255 }}},
{{{ 16, 0, 0 }, FALSE, { 1024, 1792 }, { 0, 0, 0, 255 }}},
{{{ -16, 0, 0 }, FALSE, { 0, 1792 }, { 120, 120, 120, 255 }}},
}
}

Referenced by spr_make_quad_for_size().

◆ spr_playerCurrentAnimInfo

◆ spr_playerMaxComponents

BSS s32 spr_playerMaxComponents

◆ spr_playerSprites

◆ spr_playerSpriteSets

PlayerSpriteSet spr_playerSpriteSets[]
Initial value:
= {
[PLAYER_SPRITES_MARIO_WORLD] { 6, 0x700, 1 << SPR_Mario1 | 1 << SPR_Mario1_Back | 1 << SPR_MarioW1 | 1 << SPR_MarioW1_Back | 1 << SPR_MarioW2 | 1 << SPR_MarioW3 },
[PLAYER_SPRITES_MARIO_REFLECT_FLOOR] { 18, 0x700, 1 << SPR_Mario1 | 1 << SPR_Mario1_Back | 1 << SPR_MarioW1 | 1 << SPR_MarioW1_Back | 1 << SPR_MarioW2 | 1 << SPR_MarioW3 },
[PLAYER_SPRITES_COMBINED_EPILOGUE] { 10, 0x900, 1 << SPR_Mario1 | 1 << SPR_Mario1_Back | 1 << SPR_MarioW1 | 1 << SPR_MarioW1_Back | 1 << SPR_MarioW2 | 1 << SPR_MarioW3 | 1 << SPR_Peach1 | 1 << SPR_Peach1_Back | 1 << SPR_Peach2 | 1 << SPR_Peach3 },
[PLAYER_SPRITES_MARIO_PARADE] { 3, 0x700, 1 << SPR_Mario1 | 1 << SPR_Mario1_Back },
[PLAYER_SPRITES_PEACH_WORLD] { 6, 0x900, 1 << SPR_Peach1 | 1 << SPR_Peach1_Back | 1 << SPR_Peach2 | 1 << SPR_Peach3 },
[PLAYER_SPRITES_MARIO_BATTLE] { 6, 0x700, 1 << SPR_Mario1 | 1 << SPR_Mario1_Back | 1 << SPR_MarioB1 | 1 << SPR_MarioB2 | 1 << SPR_MarioB3 },
[PLAYER_SPRITES_PEACH_BATTLE] { 6, 0x900, 1 << SPR_Peach1 | 1 << SPR_Peach1_Back | 1 << SPR_Peach2 | 1 << SPR_Peach3 },
}
@ PLAYER_SPRITES_MARIO_WORLD
Definition enums.h:6358
@ PLAYER_SPRITES_PEACH_WORLD
Definition enums.h:6362
@ PLAYER_SPRITES_COMBINED_EPILOGUE
Definition enums.h:6360
@ PLAYER_SPRITES_MARIO_REFLECT_FLOOR
Definition enums.h:6359
@ PLAYER_SPRITES_PEACH_BATTLE
Definition enums.h:6364
@ PLAYER_SPRITES_MARIO_PARADE
Definition enums.h:6361
@ PLAYER_SPRITES_MARIO_BATTLE
Definition enums.h:6363

Referenced by spr_init_sprites().

◆ SpriteInstances

◆ SpriteUpdateNotifyValue

BSS s32 SpriteUpdateNotifyValue

◆ SprPauseVp

Vp SprPauseVp
Initial value:
= {{
{ 640, 480, 511, 0 },
{ 640, 480, 511, 0 },
}
}

Referenced by spr_appendGfx_component_flat().

◆ SprPauseVpAlt

Vp SprPauseVpAlt
Initial value:
= {{
{ 640, 480, 511, 0 },
{ 640, 480, 512, 0 },
}
}

Referenced by spr_appendGfx_component_flat().