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 <platform.h>
5
6#include "baselib/forward.h" // IWYU pragma: export
7
8#include "baselib/class.h"
9#include "baselib/texp.h"
10#include "baselib/tobj.h"
11
12#include <dolphin/gx/types.h>
13
14#define MOBJ_ANIM 0x4
15#define TOBJ_ANIM 0x10
16#define ALL_ANIM 0x7FF
17
18#define HSD_A_M_AMBIENT_R 1
19#define HSD_A_M_AMBIENT_G 2
20#define HSD_A_M_AMBIENT_B 3
21#define HSD_A_M_DIFFUSE_R 4
22#define HSD_A_M_DIFFUSE_G 5
23#define HSD_A_M_DIFFUSE_B 6
24#define HSD_A_M_SPECULAR_R 7
25#define HSD_A_M_SPECULAR_G 8
26#define HSD_A_M_SPECULAR_B 9
27#define HSD_A_M_ALPHA 10
28#define HSD_A_M_PE_REF0 11
29#define HSD_A_M_PE_REF1 12
30#define HSD_A_M_PE_DSTALPHA 13
31
32#define RENDER_DIFFUSE_SHIFT 0
33#define RENDER_DIFFUSE_BITS (3 << RENDER_DIFFUSE_SHIFT)
34#define RENDER_DIFFUSE_MAT0 (0 << RENDER_DIFFUSE_SHIFT)
35#define RENDER_DIFFUSE_MAT (1 << RENDER_DIFFUSE_SHIFT)
36#define RENDER_DIFFUSE_VTX (2 << RENDER_DIFFUSE_SHIFT)
37#define RENDER_DIFFUSE_BOTH (3 << RENDER_DIFFUSE_SHIFT)
38
39#define RENDER_CONSTANT (1 << 0)
40#define RENDER_VERTEX (1 << 1)
41#define RENDER_DIFFUSE (1 << 2)
42#define RENDER_SPECULAR (1 << 3)
43#define CHANNEL_FIELD \
44 (RENDER_CONSTANT | RENDER_VERTEX | RENDER_DIFFUSE | RENDER_SPECULAR)
45#define RENDER_TEX0 (1 << 4)
46#define RENDER_TEX1 (1 << 5)
47#define RENDER_TEX2 (1 << 6)
48#define RENDER_TEX3 (1 << 7)
49#define RENDER_TEX4 (1 << 8)
50#define RENDER_TEX5 (1 << 9)
51#define RENDER_TEX6 (1 << 10)
52#define RENDER_TEX7 (1 << 11)
53#define RENDER_TEXTURES \
54 (RENDER_TEX0 | RENDER_TEX1 | RENDER_TEX2 | RENDER_TEX3 | RENDER_TEX4 | \
55 RENDER_TEX5 | RENDER_TEX6 | RENDER_TEX7)
56#define RENDER_TOON (1 << 12)
57
58#define RENDER_ALPHA_SHIFT 13
59#define RENDER_ALPHA_BITS (3 << RENDER_ALPHA_SHIFT)
60#define RENDER_ALPHA_COMPAT (0 << RENDER_ALPHA_SHIFT)
61#define RENDER_ALPHA_MAT (1 << RENDER_ALPHA_SHIFT)
62#define RENDER_ALPHA_VTX (2 << RENDER_ALPHA_SHIFT)
63#define RENDER_ALPHA_BOTH (3 << RENDER_ALPHA_SHIFT)
64
65#define RENDER_SHADOW (1 << 26)
66#define RENDER_ZMODE_ALWAYS (1 << 27)
67#define RENDER_NO_ZUPDATE (1 << 29)
68#define RENDER_XLU (1 << 30)
69
80
88
103
104typedef struct _HSD_MObjDesc {
107 struct _HSD_TObjDesc* texdesc;
112
113typedef struct _HSD_ChanAnim {
114 struct _HSD_ChanAnim* next;
117
118typedef struct _HSD_TevRegAnim {
119 struct _HSD_TevRegAnim* next;
122
123typedef struct _HSD_RenderAnim {
124 struct _HSD_ChanAnim* chananim;
125 struct _HSD_TevRegAnim* reganim;
127
128typedef struct _HSD_MatAnim {
129 struct _HSD_MatAnim* next;
131 struct _HSD_TexAnim* texanim;
132 struct _HSD_RenderAnim* renderanim;
134
140
144 /* +40 */ int (*load)(HSD_MObj* mobj, HSD_MObjDesc* desc);
145 /* +44 */ HSD_TExp* (*make_texp)(HSD_MObj* mobj, HSD_TObj* tobj_top,
146 HSD_TExp** list);
147 /* +48 */ void (*setup_tev)(HSD_MObj* mobj, HSD_TObj* tobj,
148 u32 rendermode);
149 /* +4C */ void (*unset)(HSD_MObj* mobj, u32 rendermode);
150};
151
152#define HSD_MOBJ(o) ((HSD_MObj*) (o))
153#define HSD_MOBJ_INFO(i) ((HSD_MObjInfo*) (i))
154#define HSD_MOBJ_METHOD(o) HSD_MOBJ_INFO(HSD_CLASS_METHOD(o))
155
156extern HSD_MObjInfo hsdMObj;
157
158void HSD_MObjSetCurrent(HSD_MObj* mobj);
159void HSD_MObjSetFlags(HSD_MObj* mobj, u32 flags);
160void HSD_MObjClearFlags(HSD_MObj* mobj, u32 flags);
161void HSD_MObjRemoveAnimByFlags(HSD_MObj* mobj, u32 flags);
162void HSD_MObjAddAnim(HSD_MObj* mobj, HSD_MatAnim* matanim);
163void HSD_MObjReqAnimByFlags(HSD_MObj* mobj, f32 startframe, u32 flags);
164void HSD_MObjReqAnim(HSD_MObj* mobj, f32 startframe);
165void HSD_MObjAnim(HSD_MObj* mobj);
168void HSD_MObjRemove(HSD_MObj* mobj);
171void HSD_MObjCompileTev(HSD_MObj* mobj);
173HSD_TExp* MObjMakeTExp(HSD_MObj* mobj, HSD_TObj* tobj_top, HSD_TExp** list);
174void MObjSetupTev(HSD_MObj* mobj, HSD_TObj* tobj, u32 arg2);
175
176void HSD_MObjSetup(HSD_MObj* mobj, u32 rendermode);
177void HSD_MObjUnset(HSD_MObj* mobj, u32 rendermode);
179void HSD_MObjSetDiffuseColor(HSD_MObj* mobj, u8 r, u8 g, u8 b);
182extern HSD_TObj* tobj_shadows;
183extern HSD_TObj* tobj_toon;
184
185#endif
void HSD_MObjSetToonTextureImage(HSD_ImageDesc *imagedesc)
Definition mobj.c:452
void HSD_MObjRemove(HSD_MObj *mobj)
Definition mobj.c:485
void HSD_MObjSetFlags(HSD_MObj *mobj, u32 flags)
Definition mobj.c:27
void HSD_MObjSetCurrent(HSD_MObj *mobj)
Definition mobj.c:22
HSD_TObj * tobj_shadows
Definition mobj.c:16
HSD_Material * HSD_MaterialAlloc(void)
Definition mobj.c:501
HSD_MObj * HSD_MObjAlloc(void)
Definition mobj.c:493
void HSD_MObjReqAnimByFlags(HSD_MObj *mobj, f32 startframe, u32 flags)
Definition mobj.c:71
void HSD_MObjClearFlags(HSD_MObj *mobj, u32 flags)
Definition mobj.c:34
void HSD_MObjReqAnim(HSD_MObj *mobj, f32 startframe)
Definition mobj.c:82
HSD_MObj * HSD_MObjLoadDesc(HSD_MObjDesc *mobjdesc)
Definition mobj.c:168
HSD_TObj * tobj_toon
Definition mobj.c:17
void HSD_MObjAddShadowTexture(HSD_TObj *tobj)
Definition mobj.c:510
void HSD_MObjDeleteShadowTexture(HSD_TObj *tobj)
Definition mobj.c:530
void HSD_MObjAddAnim(HSD_MObj *mobj, HSD_MatAnim *matanim)
Definition mobj.c:56
void HSD_MObjSetup(HSD_MObj *mobj, u32 rendermode)
Definition mobj.c:392
void HSD_MObjRemoveAnimByFlags(HSD_MObj *mobj, u32 flags)
Definition mobj.c:41
HSD_TExp * MObjMakeTExp(HSD_MObj *mobj, HSD_TObj *tobj_top, HSD_TExp **list)
Definition mobj.c:192
HSD_MObjInfo hsdMObj
Definition mobj.c:20
HSD_TObj * HSD_MObjGetTObj(HSD_MObj *mobj)
Definition mobj.c:477
void HSD_MObjUnset(HSD_MObj *mobj, u32 rendermode)
Definition mobj.c:429
void HSD_MObjSetAlpha(HSD_MObj *mobj, f32 alpha)
Definition mobj.c:472
void HSD_MObjAnim(HSD_MObj *mobj)
Definition mobj.c:144
void HSD_MObjSetDiffuseColor(HSD_MObj *mobj, u8 r, u8 g, u8 b)
Definition mobj.c:465
void MObjSetupTev(HSD_MObj *mobj, HSD_TObj *tobj, u32 arg2)
Definition mobj.c:385
void HSD_MObjCompileTev(HSD_MObj *mobj)
Definition mobj.c:338
unsigned long u32
An unsigned 32-bit integer.
Definition platform.h:26
float f32
A 32-bit floating-point number.
Definition platform.h:62
unsigned char u8
An unsigned 8-bit integer.
Definition platform.h:20
u8 alpha
Definition state.c:45
Definition types.h:30
Definition aobj.h:50
Definition aobj.h:40
Definition mobj.h:113
struct _HSD_ChanAnim * next
Definition mobj.h:114
HSD_AObjDesc * aobjdesc
Definition mobj.h:115
Definition class.h:32
Definition class.h:14
Definition tobj.h:204
Definition mobj.h:104
void * renderdesc
Definition mobj.h:109
HSD_Material * mat
Definition mobj.h:108
char * class_name
Definition mobj.h:105
HSD_PEDesc * pedesc
Definition mobj.h:110
struct _HSD_TObjDesc * texdesc
Definition mobj.h:107
u32 rendermode
Definition mobj.h:106
Definition mobj.h:141
int(* load)(HSD_MObj *mobj, HSD_MObjDesc *desc)
Definition mobj.h:144
HSD_MObjSetupFunc setup
Definition mobj.h:143
void(* unset)(HSD_MObj *mobj, u32 rendermode)
Definition mobj.h:149
HSD_ClassInfo parent
Definition mobj.h:142
void(* setup_tev)(HSD_MObj *mobj, HSD_TObj *tobj, u32 rendermode)
Definition mobj.h:147
Definition mobj.h:70
HSD_TObj * tobj
Definition mobj.h:73
HSD_AObj * aobj
Definition mobj.h:76
struct _HSD_TExpTevDesc * tevdesc
Definition mobj.h:77
HSD_TExp * texp
Definition mobj.h:78
u32 rendermode
Definition mobj.h:72
HSD_Class parent
Definition mobj.h:71
HSD_Material * mat
Definition mobj.h:74
HSD_PEDesc * pe
Definition mobj.h:75
Definition mobj.h:135
HSD_MatAnimJoint * child
Definition mobj.h:136
HSD_MatAnimJoint * next
Definition mobj.h:137
HSD_MatAnim * matanim
Definition mobj.h:138
Definition mobj.h:128
struct _HSD_RenderAnim * renderanim
Definition mobj.h:132
struct _HSD_MatAnim * next
Definition mobj.h:129
struct _HSD_TexAnim * texanim
Definition mobj.h:131
HSD_AObjDesc * aobjdesc
Definition mobj.h:130
Definition mobj.h:81
f32 alpha
Definition mobj.h:85
f32 shininess
Definition mobj.h:86
GXColor diffuse
Definition mobj.h:83
GXColor specular
Definition mobj.h:84
GXColor ambient
Definition mobj.h:82
Definition mobj.h:89
u8 type
Definition mobj.h:94
u8 dst_factor
Definition mobj.h:96
u8 flags
Definition mobj.h:90
u8 ref1
Definition mobj.h:92
u8 z_comp
Definition mobj.h:98
u8 ref0
Definition mobj.h:91
u8 alpha_comp0
Definition mobj.h:99
u8 alpha_comp1
Definition mobj.h:101
u8 src_factor
Definition mobj.h:95
u8 logic_op
Definition mobj.h:97
u8 alpha_op
Definition mobj.h:100
u8 dst_alpha
Definition mobj.h:93
Definition mobj.h:123
struct _HSD_TevRegAnim * reganim
Definition mobj.h:125
struct _HSD_ChanAnim * chananim
Definition mobj.h:124
Definition tobj.h:133
Definition mobj.h:118
HSD_AObjDesc * aobjdesc
Definition mobj.h:120
struct _HSD_TevRegAnim * next
Definition mobj.h:119
void(* HSD_MObjSetupFunc)(HSD_MObj *mobj, u32 rendermode)
Definition forward.h:105
Definition texp.h:168