SSBM Decomp
Loading...
Searching...
No Matches
mobj.h
Go to the documentation of this file.
1#ifndef _mobj_h_
2#define _mobj_h_
3
4#include <Runtime/platform.h>
5
6#include <sysdolphin/baselib/forward.h> // IWYU pragma: export
7
8#include <dolphin/gx.h>
12
13#define MOBJ_ANIM 0x4
14#define TOBJ_ANIM 0x10
15#define ALL_ANIM 0x7FF
16
17#define HSD_A_M_AMBIENT_R 1
18#define HSD_A_M_AMBIENT_G 2
19#define HSD_A_M_AMBIENT_B 3
20#define HSD_A_M_DIFFUSE_R 4
21#define HSD_A_M_DIFFUSE_G 5
22#define HSD_A_M_DIFFUSE_B 6
23#define HSD_A_M_SPECULAR_R 7
24#define HSD_A_M_SPECULAR_G 8
25#define HSD_A_M_SPECULAR_B 9
26#define HSD_A_M_ALPHA 10
27#define HSD_A_M_PE_REF0 11
28#define HSD_A_M_PE_REF1 12
29#define HSD_A_M_PE_DSTALPHA 13
30
31#define RENDER_DIFFUSE_SHIFT 0
32#define RENDER_DIFFUSE_BITS (3 << RENDER_DIFFUSE_SHIFT)
33#define RENDER_DIFFUSE_MAT0 (0 << RENDER_DIFFUSE_SHIFT)
34#define RENDER_DIFFUSE_MAT (1 << RENDER_DIFFUSE_SHIFT)
35#define RENDER_DIFFUSE_VTX (2 << RENDER_DIFFUSE_SHIFT)
36#define RENDER_DIFFUSE_BOTH (3 << RENDER_DIFFUSE_SHIFT)
37
38#define RENDER_CONSTANT (1 << 0)
39#define RENDER_VERTEX (1 << 1)
40#define RENDER_DIFFUSE (1 << 2)
41#define RENDER_SPECULAR (1 << 3)
42#define CHANNEL_FIELD \
43 (RENDER_CONSTANT | RENDER_VERTEX | RENDER_DIFFUSE | RENDER_SPECULAR)
44#define RENDER_TEX0 (1 << 4)
45#define RENDER_TEX1 (1 << 5)
46#define RENDER_TEX2 (1 << 6)
47#define RENDER_TEX3 (1 << 7)
48#define RENDER_TEX4 (1 << 8)
49#define RENDER_TEX5 (1 << 9)
50#define RENDER_TEX6 (1 << 10)
51#define RENDER_TEX7 (1 << 11)
52#define RENDER_TEXTURES \
53 (RENDER_TEX0 | RENDER_TEX1 | RENDER_TEX2 | RENDER_TEX3 | RENDER_TEX4 | \
54 RENDER_TEX5 | RENDER_TEX6 | RENDER_TEX7)
55#define RENDER_TOON (1 << 12)
56
57#define RENDER_ALPHA_SHIFT 13
58#define RENDER_ALPHA_BITS (3 << RENDER_ALPHA_SHIFT)
59#define RENDER_ALPHA_COMPAT (0 << RENDER_ALPHA_SHIFT)
60#define RENDER_ALPHA_MAT (1 << RENDER_ALPHA_SHIFT)
61#define RENDER_ALPHA_VTX (2 << RENDER_ALPHA_SHIFT)
62#define RENDER_ALPHA_BOTH (3 << RENDER_ALPHA_SHIFT)
63
64#define RENDER_SHADOW (1 << 26)
65#define RENDER_ZMODE_ALWAYS (1 << 27)
66#define RENDER_NO_ZUPDATE (1 << 29)
67#define RENDER_XLU (1 << 30)
68
69#define RENDER_BLENDING (RENDER_XLU | RENDER_NO_ZUPDATE)
70
81
89
104
105typedef struct _HSD_MObjDesc {
108 struct _HSD_TObjDesc* texdesc;
113
114typedef struct _HSD_ChanAnim {
115 struct _HSD_ChanAnim* next;
118
119typedef struct _HSD_TevRegAnim {
120 struct _HSD_TevRegAnim* next;
123
124typedef struct _HSD_RenderAnim {
125 struct _HSD_ChanAnim* chananim;
126 struct _HSD_TevRegAnim* reganim;
128
129typedef struct _HSD_MatAnim {
130 struct _HSD_MatAnim* next;
132 struct _HSD_TexAnim* texanim;
133 struct _HSD_RenderAnim* renderanim;
135
141
145 /* +40 */ int (*load)(HSD_MObj* mobj, HSD_MObjDesc* desc);
146 /* +44 */ HSD_TExp* (*make_texp)(HSD_MObj* mobj, HSD_TObj* tobj_top,
147 HSD_TExp** list);
148 /* +48 */ void (*setup_tev)(HSD_MObj* mobj, HSD_TObj* tobj,
149 u32 rendermode);
150 /* +4C */ void (*unset)(HSD_MObj* mobj, u32 rendermode);
151};
152
153#define HSD_MOBJ(o) ((HSD_MObj*) (o))
154#define HSD_MOBJ_INFO(i) ((HSD_MObjInfo*) (i))
155#define HSD_MOBJ_METHOD(o) HSD_MOBJ_INFO(HSD_CLASS_METHOD(o))
156
157extern HSD_MObjInfo hsdMObj;
158
159void HSD_MObjSetCurrent(HSD_MObj* mobj);
160void HSD_MObjSetFlags(HSD_MObj* mobj, u32 flags);
161void HSD_MObjClearFlags(HSD_MObj* mobj, u32 flags);
162void HSD_MObjRemoveAnimByFlags(HSD_MObj* mobj, u32 flags);
163void HSD_MObjAddAnim(HSD_MObj* mobj, HSD_MatAnim* matanim);
164void HSD_MObjReqAnimByFlags(HSD_MObj* mobj, f32 startframe, u32 flags);
165void HSD_MObjReqAnim(HSD_MObj* mobj, f32 startframe);
166void HSD_MObjAnim(HSD_MObj* mobj);
169void HSD_MObjRemove(HSD_MObj* mobj);
172void HSD_MObjCompileTev(HSD_MObj* mobj);
174HSD_TExp* MObjMakeTExp(HSD_MObj* mobj, HSD_TObj* tobj_top, HSD_TExp** list);
175void MObjSetupTev(HSD_MObj* mobj, HSD_TObj* tobj, u32 arg2);
176
177void HSD_MObjSetup(HSD_MObj* mobj, u32 rendermode);
178void HSD_MObjUnset(HSD_MObj* mobj, u32 rendermode);
180void HSD_MObjSetDiffuseColor(HSD_MObj* mobj, u8 r, u8 g, u8 b);
183extern HSD_TObj* tobj_shadows;
184extern HSD_TObj* tobj_toon;
185
186#endif
unsigned long u32
Definition types.h:9
float f32
Definition types.h:13
unsigned char u8
Definition types.h:5
HSD_ImageDesc * imagedesc
Definition lbrefract.c:32
u8 desc[6][3]
Definition mnruleplus.c:98
HSD_TObj * tobj_shadows
Definition mobj.c:15
HSD_TObj * tobj_toon
Definition mobj.c:16
HSD_MObjInfo hsdMObj
Definition mobj.c:19
void HSD_MObjSetToonTextureImage(HSD_ImageDesc *imagedesc)
Definition mobj.c:450
void HSD_MObjRemove(HSD_MObj *mobj)
Definition mobj.c:480
void HSD_MObjSetFlags(HSD_MObj *mobj, u32 flags)
Definition mobj.c:26
void HSD_MObjSetCurrent(HSD_MObj *mobj)
Definition mobj.c:21
HSD_Material * HSD_MaterialAlloc(void)
Definition mobj.c:496
HSD_MObj * HSD_MObjAlloc(void)
Definition mobj.c:488
void HSD_MObjReqAnimByFlags(HSD_MObj *mobj, f32 startframe, u32 flags)
Definition mobj.c:70
void HSD_MObjClearFlags(HSD_MObj *mobj, u32 flags)
Definition mobj.c:33
void HSD_MObjReqAnim(HSD_MObj *mobj, f32 startframe)
Definition mobj.c:81
HSD_MObj * HSD_MObjLoadDesc(HSD_MObjDesc *mobjdesc)
Definition mobj.c:167
void HSD_MObjAddShadowTexture(HSD_TObj *tobj)
Definition mobj.c:505
void HSD_MObjDeleteShadowTexture(HSD_TObj *tobj)
Definition mobj.c:525
void HSD_MObjAddAnim(HSD_MObj *mobj, HSD_MatAnim *matanim)
Definition mobj.c:55
void HSD_MObjSetup(HSD_MObj *mobj, u32 rendermode)
Definition mobj.c:390
void HSD_MObjRemoveAnimByFlags(HSD_MObj *mobj, u32 flags)
Definition mobj.c:40
HSD_TExp * MObjMakeTExp(HSD_MObj *mobj, HSD_TObj *tobj_top, HSD_TExp **list)
Definition mobj.c:191
HSD_TObj * HSD_MObjGetTObj(HSD_MObj *mobj)
Definition mobj.c:472
void HSD_MObjUnset(HSD_MObj *mobj, u32 rendermode)
Definition mobj.c:427
void HSD_MObjSetAlpha(HSD_MObj *mobj, f32 alpha)
Definition mobj.c:467
void HSD_MObjAnim(HSD_MObj *mobj)
Definition mobj.c:143
void HSD_MObjSetDiffuseColor(HSD_MObj *mobj, u8 r, u8 g, u8 b)
Definition mobj.c:460
void MObjSetupTev(HSD_MObj *mobj, HSD_TObj *tobj, u32 arg2)
Definition mobj.c:383
void HSD_MObjCompileTev(HSD_MObj *mobj)
Definition mobj.c:337
u8 alpha
Definition state.c:44
Definition GXStruct.h:29
Definition aobj.h:50
Definition aobj.h:40
Definition mobj.h:114
struct _HSD_ChanAnim * next
Definition mobj.h:115
HSD_AObjDesc * aobjdesc
Definition mobj.h:116
Definition class.h:32
Definition class.h:14
Definition tobj.h:203
Definition mobj.h:105
void * renderdesc
Definition mobj.h:110
HSD_Material * mat
Definition mobj.h:109
char * class_name
Definition mobj.h:106
HSD_PEDesc * pedesc
Definition mobj.h:111
struct _HSD_TObjDesc * texdesc
Definition mobj.h:108
u32 rendermode
Definition mobj.h:107
Definition mobj.h:142
int(* load)(HSD_MObj *mobj, HSD_MObjDesc *desc)
Definition mobj.h:145
HSD_MObjSetupFunc setup
Definition mobj.h:144
void(* unset)(HSD_MObj *mobj, u32 rendermode)
Definition mobj.h:150
HSD_ClassInfo parent
Definition mobj.h:143
void(* setup_tev)(HSD_MObj *mobj, HSD_TObj *tobj, u32 rendermode)
Definition mobj.h:148
Definition mobj.h:71
HSD_TObj * tobj
Definition mobj.h:74
HSD_AObj * aobj
Definition mobj.h:77
struct _HSD_TExpTevDesc * tevdesc
Definition mobj.h:78
HSD_TExp * texp
Definition mobj.h:79
u32 rendermode
Definition mobj.h:73
HSD_Class parent
Definition mobj.h:72
HSD_Material * mat
Definition mobj.h:75
HSD_PEDesc * pe
Definition mobj.h:76
Definition mobj.h:136
HSD_MatAnimJoint * child
Definition mobj.h:137
HSD_MatAnimJoint * next
Definition mobj.h:138
HSD_MatAnim * matanim
Definition mobj.h:139
Definition mobj.h:129
struct _HSD_RenderAnim * renderanim
Definition mobj.h:133
struct _HSD_MatAnim * next
Definition mobj.h:130
struct _HSD_TexAnim * texanim
Definition mobj.h:132
HSD_AObjDesc * aobjdesc
Definition mobj.h:131
Definition mobj.h:82
f32 alpha
Definition mobj.h:86
f32 shininess
Definition mobj.h:87
GXColor diffuse
Definition mobj.h:84
GXColor specular
Definition mobj.h:85
GXColor ambient
Definition mobj.h:83
Definition mobj.h:90
u8 type
Definition mobj.h:95
u8 dst_factor
Definition mobj.h:97
u8 flags
Definition mobj.h:91
u8 ref1
Definition mobj.h:93
u8 z_comp
Definition mobj.h:99
u8 ref0
Definition mobj.h:92
u8 alpha_comp0
Definition mobj.h:100
u8 alpha_comp1
Definition mobj.h:102
u8 src_factor
Definition mobj.h:96
u8 logic_op
Definition mobj.h:98
u8 alpha_op
Definition mobj.h:101
u8 dst_alpha
Definition mobj.h:94
Definition mobj.h:124
struct _HSD_TevRegAnim * reganim
Definition mobj.h:126
struct _HSD_ChanAnim * chananim
Definition mobj.h:125
Texture Object.
Definition tobj.h:132
Definition mobj.h:119
HSD_AObjDesc * aobjdesc
Definition mobj.h:121
struct _HSD_TevRegAnim * next
Definition mobj.h:120
void(* HSD_MObjSetupFunc)(HSD_MObj *mobj, u32 rendermode)
Definition forward.h:112
Definition texp.h:168