SSBM Decomp
Loading...
Searching...
No Matches
gobj.h
Go to the documentation of this file.
1#ifndef GALE01_390730
2#define GALE01_390730
3
4#include <platform.h>
5
6#include "baselib/forward.h" // IWYU pragma: export
7
8#define HSD_GOBJ_GXLINK_NONE ((u8) 0xFF)
9#define HSD_GOBJ_OBJ_NONE 0xFF
10
11#define HSD_GOBJ_CLASS_STAGE 0x3
12#define HSD_GOBJ_CLASS_FIGHTER 0x4
13#define HSD_GOBJ_CLASS_ITEM 0x6
14
16#define HSD_GOBJ_CLASS_ITEMLINK 0x7
17
18#define HSD_GOBJ_CLASS_EFFECT 0x8
19#define HSD_GOBJ_CLASS_LIGHT 0xB
20#define HSD_GOBJ_CLASS_GROUND 0xD
21#define HSD_GOBJ_CLASS_UI 0xE
22#define HSD_GOBJ_CLASS_CAMERA 0x13
23
24struct HSD_GObj {
25 /* +0 */ u16 classifier;
26 /* +2 */ u8 p_link;
27 /* +3 */ u8 gx_link;
28 /* +4 */ u8 p_priority;
30 /* +6 */ u8 obj_kind;
32 /* +8 */ HSD_GObj* next;
33 /* +C */ HSD_GObj* prev;
34 /* +10 */ HSD_GObj* next_gx;
35 /* +14 */ HSD_GObj* prev_gx;
36 /* +18 */ HSD_GObjProc* proc;
38 /* +20 */ u64 gxlink_prios;
39 /* +28 */ void* hsd_obj;
40 /* +2C */ void* user_data;
41 /* +30 */ void (*user_data_remove_func)(void* data);
42 /* +34 */ void* x34_unk;
43};
44
45typedef void (*GObjFunc)(HSD_Obj*);
46
52
53typedef struct _HSD_GObjLibInitDataType {
54 u8 p_link_max; // 804CE380
55 u8 gx_link_max; // 804CE381
56 u8 gproc_pri_max; // 804CE382
57 GObjFuncs* funcs; // 804CE384
58 u64* unk_2; // 804CE388
60
62typedef struct _HSD_GObjList {
63 /* +0 */ HSD_GObj* x0;
64 /* +4 */ HSD_GObj* x4;
65 /* +8 */ HSD_GObj* x8;
66 /* +C */ HSD_GObj* xC;
67 /* +10 */ HSD_GObj* x10;
68 /* +14 */ HSD_GObj* x14;
69 /* +18 */ HSD_GObj* x18;
70 /* +1C */ HSD_GObj* x1C;
71 /* +20 */ HSD_GObj* fighters;
72 /* +24 */ HSD_GObj* items;
73 /* +28 */ HSD_GObj* x28;
74 /* +2C */ HSD_GObj* x2C; // Effects? (See efLib_SetFlags)
75 /* +30 */ HSD_GObj* x30; // Effects? (See efLib_SetFlags)
76 /* +34 */ HSD_GObj* x34;
77 /* +38 */ HSD_GObj* x38;
78 /* +3C */ HSD_GObj* x3C;
79 /* +40 */ HSD_GObj* x40;
80 /* +44 */ HSD_GObj* x44;
81 /* +48 */ HSD_GObj* x48;
83
84extern struct _unk_gobj_struct {
85 union {
87 struct {
88 u32 b0 : 1;
89 u32 b1 : 1;
90 u32 b2 : 1;
91 u32 b3 : 1;
92 };
93 };
99
106extern HSD_GObj** plinklow_gobjs;
116extern s8 HSD_GObj_804D7848;
117extern u8 HSD_GObj_804D7849;
118extern s8 HSD_GObj_804D784A;
119extern u8 HSD_GObj_804D784B;
120
122
123void HSD_GObj_80390C5C(HSD_GObj* gobj);
124void HSD_GObj_80390C84(HSD_GObj* gobj);
125void HSD_GObj_80390CAC(HSD_GObj* gobj);
127void HSD_GObj_803910D8(HSD_GObj*, int);
129HSD_GObj* GObj_Create(u16 classifier, u8 p_link, u8 priority);
130void HSD_GObj_JObjCallback(HSD_GObj* gobj, int arg1);
131void HSD_GObj_80390CD4(HSD_GObj* gobj);
132void HSD_GObj_80390CFC(void);
133void render_gobj(HSD_GObj* cur, int i);
134void HSD_GObj_80390FC0(void);
135void HSD_GObj_LObjCallback(HSD_GObj* gobj, int unused);
136void HSD_GObj_FogCallback(HSD_GObj* gobj, int unused);
143
144static inline void* HSD_GObjGetUserData(HSD_GObj* gobj)
145{
146 return gobj->user_data;
147}
148
149static inline void* HSD_GObjGetHSDObj(HSD_GObj* gobj)
150{
151 return gobj->hsd_obj;
152}
153
155{
156 return gobj->classifier;
157}
158
159static inline HSD_GObj* HSD_GObjGetNext(HSD_GObj* gobj)
160{
161 return gobj->next;
162}
163
164#define GET_COBJ(gobj) ((HSD_CObj*) HSD_GObjGetHSDObj(gobj))
165#define GET_FOG(gobj) ((HSD_Fog*) HSD_GObjGetHSDObj(gobj))
166#define GET_JOBJ(gobj) ((HSD_JObj*) HSD_GObjGetHSDObj(gobj))
167#define GET_LOBJ(gobj) ((HSD_LObj*) HSD_GObjGetHSDObj(gobj))
168
169#endif
u32 unused
Definition dbcamera.c:19
unsigned long u32
Definition types.h:9
unsigned short int u16
Definition types.h:7
unsigned long long int u64
Definition types.h:11
HSD_GObjList * HSD_GObj_Entities
Definition gobj.c:22
HSD_GObjProc * HSD_GObj_804D7838
Definition gobj.c:19
HSD_GObjProc ** HSD_GObj_804D7844
Definition gobj.c:16
HSD_GObj ** HSD_GObjGXLinkHead
Definition gobj.c:24
HSD_GObj * HSD_GObj_804D7814
Definition gobj.c:28
u8 HSD_GObj_804D7849
Definition gobj.c:14
s8 HSD_GObj_804D784A
Definition gobj.c:13
u8 HSD_GObj_804D784B
Definition gobj.c:12
HSD_GObjProc ** HSD_GObj_804D7840
Definition gobj.c:17
GObjFunc * HSD_GObj_804D7810
Definition gobj.c:29
HSD_GObjLibInitDataType HSD_GObjLibInitData
Definition gobj.c:270
HSD_GObj ** plinklow_gobjs
Definition gobj.c:23
HSD_GObj ** HSD_GObj_804D7820
Definition gobj.c:25
HSD_GObjProc * HSD_GObj_804D7830
Definition gobj.c:21
s32 HSD_GObj_804D7834
Definition gobj.c:20
HSD_GObj * HSD_GObj_804D781C
Definition gobj.c:26
HSD_GObj * HSD_GObj_804D7818
Definition gobj.c:27
s8 HSD_GObj_804D7848
Definition gobj.c:15
struct _unk_gobj_struct HSD_GObj_804CE3E4
Definition gobj.c:267
static HSD_GObj * HSD_GObjGetNext(HSD_GObj *gobj)
Definition gobj.h:159
void HSD_GObj_JObjCallback(HSD_GObj *gobj, int arg1)
Definition gobj.c:207
void HSD_GObj_80391304(HSD_GObjLibInitDataType *)
Definition gobjinit.c:22
void HSD_GObj_80390CAC(HSD_GObj *gobj)
Definition gobj.c:72
void HSD_GObj_80390C5C(HSD_GObj *gobj)
Definition gobj.c:62
void HSD_GObj_80390CD4(HSD_GObj *gobj)
Definition gobj.c:77
void HSD_GObj_803911C0(HSD_Obj *obj)
Definition gobj.c:239
u8 HSD_GObj_803912A8(HSD_GObjLibInitDataType *, GObjFuncs *)
Definition gobj.c:253
void(* GObjFunc)(HSD_Obj *)
Definition gobj.h:45
void HSD_GObj_FogCallback(HSD_GObj *gobj, int unused)
Definition gobj.c:219
void HSD_GObj_80391260(HSD_GObjLibInitDataType *)
Definition gobj.c:244
void render_gobj(HSD_GObj *cur, int i)
Definition gobj.c:149
static void * HSD_GObjGetUserData(HSD_GObj *gobj)
Definition gobj.h:144
void HSD_GObj_803912E0(HSD_GObjLibInitDataType *arg0)
Definition gobjinit.c:13
void HSD_GObj_80390CFC(void)
GObj_RunProcs.
Definition gobj.c:88
void HSD_GObj_80390ED0(HSD_GObj *gobj, u32 mask)
GObj_SetTextureCamera.
Definition gobj.c:158
void HSD_GObj_LObjCallback(HSD_GObj *gobj, int unused)
Definition gobj.c:201
u32 HSD_GObj_80390EB8(s32 i)
GObj_GetFlagFromArray.
Definition gobj.c:144
static void * HSD_GObjGetHSDObj(HSD_GObj *gobj)
Definition gobj.h:149
void HSD_GObj_80391120(HSD_Obj *obj)
Definition gobj.c:232
void HSD_GObj_80390C84(HSD_GObj *gobj)
Definition gobj.c:67
HSD_GObj * GObj_Create(u16 classifier, u8 p_link, u8 priority)
Definition gobjplink.c:98
void HSD_GObj_803910D8(HSD_GObj *, int)
Definition gobj.c:224
static u16 HSD_GObjGetClassifier(HSD_GObj *gobj)
Definition gobj.h:154
void HSD_GObj_80390FC0(void)
GObj_RunGXLinkMaxCallbacks.
Definition gobj.c:186
signed char s8
Definition hsd_3B2B.h:3
signed long s32
Definition hsd_3B2B.h:1
unsigned char u8
Definition hsd_3B2B.h:2
long HSD_GObj_804D783C
— Externs —
Definition gobj.c:18
void * obj
Definition pobj.c:42
int mask
Definition state.c:133
Definition gobj.h:47
u8 size
Definition gobj.h:49
GObjFunc * funcs
Definition gobj.h:50
struct GObjFuncs * next
Definition gobj.h:48
Definition gobj.h:53
u8 p_link_max
Definition gobj.h:54
GObjFuncs * funcs
Definition gobj.h:57
u8 gx_link_max
Definition gobj.h:55
u8 gproc_pri_max
Definition gobj.h:56
u64 * unk_2
Definition gobj.h:58
Definition gobj.h:62
HSD_GObj * x2C
Definition gobj.h:74
HSD_GObj * x0
Definition gobj.h:63
HSD_GObj * x28
Definition gobj.h:73
HSD_GObj * x44
Definition gobj.h:80
HSD_GObj * x48
Definition gobj.h:81
HSD_GObj * x14
Definition gobj.h:68
HSD_GObj * items
Definition gobj.h:72
HSD_GObj * x38
Definition gobj.h:77
HSD_GObj * fighters
Definition gobj.h:71
HSD_GObj * x40
Definition gobj.h:79
HSD_GObj * x10
Definition gobj.h:67
HSD_GObj * x4
Definition gobj.h:64
HSD_GObj * x30
Definition gobj.h:75
HSD_GObj * x8
Definition gobj.h:65
HSD_GObj * xC
Definition gobj.h:66
HSD_GObj * x18
Definition gobj.h:69
HSD_GObj * x1C
Definition gobj.h:70
HSD_GObj * x34
Definition gobj.h:76
HSD_GObj * x3C
Definition gobj.h:78
Definition gobjproc.h:8
Definition gobj.h:24
u64 gxlink_prios
Definition gobj.h:38
void * hsd_obj
Definition gobj.h:39
u16 classifier
Definition gobj.h:25
u8 p_priority
Definition gobj.h:28
u8 obj_kind
Definition gobj.h:30
HSD_GObj * prev
Definition gobj.h:33
void * x34_unk
Definition gobj.h:42
void * user_data
Definition gobj.h:40
GObj_RenderFunc render_cb
Definition gobj.h:37
HSD_GObj * next_gx
Definition gobj.h:34
HSD_GObj * next
Definition gobj.h:32
u8 render_priority
Definition gobj.h:29
u8 p_link
Definition gobj.h:26
HSD_GObj * prev_gx
Definition gobj.h:35
u8 gx_link
Definition gobj.h:27
HSD_GObjProc * proc
Definition gobj.h:36
u8 user_data_kind
Definition gobj.h:31
void(* user_data_remove_func)(void *data)
Definition gobj.h:41
Definition object.h:60
Definition gobj.h:84
u32 b0
Definition gobj.h:88
u8 p_prio
Definition gobj.h:96
HSD_GObj * gobj
Definition gobj.h:97
u32 b2
Definition gobj.h:90
u32 b1
Definition gobj.h:89
u32 flags
Definition gobj.h:86
u32 b3
Definition gobj.h:91
u32 type
Definition gobj.h:94
u8 p_link
Definition gobj.h:95
void(* GObj_RenderFunc)(HSD_GObj *gobj, int code)
Definition forward.h:106