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#include <placeholder.h>
6
7#include "baselib/forward.h" // IWYU pragma: export
8
9#include "baselib/objalloc.h"
10
11struct _GObjUnkStruct;
12
13#define HSD_GOBJ_GXLINK_NONE ((u8) 0xFF)
14#define HSD_GOBJ_OBJ_NONE 0xFF
15
16#define HSD_GOBJ_CLASS_STAGE 0x3
17#define HSD_GOBJ_CLASS_FIGHTER 0x4
18#define HSD_GOBJ_CLASS_ITEM 0x6
19
21#define HSD_GOBJ_CLASS_ITEMLINK 0x7
22
23#define HSD_GOBJ_CLASS_EFFECT 0x8
24
25struct HSD_GObj {
26 /* +0 */ u16 classifier;
27 /* +2 */ u8 p_link;
28 /* +3 */ u8 gx_link;
29 /* +4 */ u8 p_priority;
31 /* +6 */ u8 obj_kind;
33 /* +8 */ HSD_GObj* next;
34 /* +C */ HSD_GObj* prev;
35 /* +10 */ HSD_GObj* next_gx;
36 /* +14 */ HSD_GObj* prev_gx;
37 /* +18 */ HSD_GObjProc* proc;
39 /* +20 */ u64 gxlink_prios;
40 /* +28 */ void* hsd_obj;
41 /* +2C */ void* user_data;
42 /* +30 */ void (*user_data_remove_func)(void* data);
43 /* +34 */ void* x34_unk;
44};
45
46typedef struct _HSD_GObjLibInitDataType {
47 u8 p_link_max; // 804CE380
48 u8 gx_link_max; // 804CE381
49 u8 gproc_pri_max; // 804CE382
50 u32 unk_1; // 804CE384
51 u64* unk_2; // 804CE388
55
57typedef struct _HSD_GObjList {
58 /* +0 */ HSD_GObj* x0;
59 /* +4 */ HSD_GObj* x4;
60 /* +8 */ HSD_GObj* x8;
61 /* +C */ HSD_GObj* xC;
62 /* +10 */ HSD_GObj* x10;
63 /* +14 */ HSD_GObj* x14;
64 /* +18 */ HSD_GObj* x18;
65 /* +1C */ HSD_GObj* x1C;
66 /* +20 */ HSD_GObj* fighters;
67 /* +24 */ HSD_GObj* items;
68 /* +28 */ HSD_GObj* x28;
69 /* +2C */ HSD_GObj* x2C;
70 /* +30 */ HSD_GObj* x30;
71 /* +34 */ HSD_GObj* x34;
72 /* +38 */ HSD_GObj* x38;
73 /* +3C */ HSD_GObj* x3C;
74 /* +40 */ HSD_GObj* x40;
75 /* +44 */ HSD_GObj* x44;
76 /* +48 */ HSD_GObj* x48;
78
79extern struct _unk_gobj_struct {
80 union {
82 struct {
83 u32 b0 : 1;
84 u32 b1 : 1;
85 u32 b2 : 1;
86 u32 b3 : 1;
87 };
88 };
94
95typedef struct _GObjUnkStruct GObjUnkStruct;
96typedef struct _GObjFuncs GObjFuncs;
97
105// extern HSD_GObj* HSD_SisLib_804D797C; @todo: is this actually correct?
109extern HSD_GObj** plinklow_gobjs;
111extern u8 HSD_GObj_804D784B[5];
112
113extern GObjFuncs HSD_GObj_80408610;
114extern s8 HSD_GObj_804D7848;
115extern s8 HSD_GObj_804D7849;
116extern s8 HSD_GObj_804D784A;
117extern GObjFuncs HSD_GObj_80408620;
118
119void HSD_GObj_80390C5C(HSD_GObj* gobj);
120void HSD_GObj_80390C84(HSD_GObj* gobj);
121void HSD_GObj_80390CAC(HSD_GObj* gobj);
124u8 HSD_GObj_803912A8(GObjUnkStruct*, GObjFuncs*);
125HSD_GObj* GObj_Create(u16 classifier, u8 p_link, u8 priority);
126void HSD_GObj_80391070(HSD_GObj* gobj, int arg1);
127void HSD_GObj_80390CD4(HSD_GObj* gobj);
128void HSD_GObj_80390CFC(void);
129void render_gobj(HSD_GObj* cur, int i);
130void HSD_GObj_80390FC0(void);
131void HSD_GObj_80391044(HSD_GObj* gobj);
132void HSD_GObj_803910B4(HSD_GObj* gobj);
135void HSD_GObj_80391260(struct _GObjUnkStruct* arg0);
136void HSD_GObj_803912E0(GObjFuncs* arg0);
139
140static inline void* HSD_GObjGetUserData(HSD_GObj* gobj)
141{
142 return gobj->user_data;
143}
144
145static inline void* HSD_GObjGetHSDObj(HSD_GObj* gobj)
146{
147 return gobj->hsd_obj;
148}
149
151{
152 return gobj->classifier;
153}
154
155static inline HSD_GObj* HSD_GObjGetNext(HSD_GObj* gobj)
156{
157 return gobj->next;
158}
159
160#define GET_COBJ(gobj) ((HSD_CObj*) HSD_GObjGetHSDObj(gobj))
161#define GET_FOG(gobj) ((HSD_Fog*) HSD_GObjGetHSDObj(gobj))
162#define GET_JOBJ(gobj) ((HSD_JObj*) HSD_GObjGetHSDObj(gobj))
163#define GET_LOBJ(gobj) ((HSD_LObj*) HSD_GObjGetHSDObj(gobj))
164
165#endif
GObjFuncs HSD_GObj_80408610
HSD_GObjList * HSD_GObj_Entities
HSD_GObjProc * HSD_GObj_804D7838
static HSD_GObj * HSD_GObjGetNext(HSD_GObj *gobj)
Definition gobj.h:155
void HSD_GObj_803910D8(HSD_GObj *)
Definition gobj.c:192
u8 HSD_GObj_803912A8(GObjUnkStruct *, GObjFuncs *)
Definition gobj.c:232
HSD_GObj ** HSD_GObj_804D7824
HSD_GObj * HSD_GObj_804D7814
void HSD_GObj_80390CAC(HSD_GObj *gobj)
Definition gobj.c:38
s8 HSD_GObj_804D784A
HSD_GObjProc ** HSD_GObj_804D7840
void HSD_GObj_80390C5C(HSD_GObj *gobj)
Definition gobj.c:28
void HSD_GObj_80390CD4(HSD_GObj *gobj)
Definition gobj.c:43
void HSD_GObj_803911C0(HSD_Obj *obj)
Definition gobj.c:207
u8 HSD_GObj_804D784B[5]
GObjFuncs HSD_GObj_80408620
HSD_GObjLibInitDataType HSD_GObjLibInitData
HSD_GObj ** plinklow_gobjs
HSD_GObj ** HSD_GObj_804D7820
HSD_GObjProc * HSD_GObj_804D7830
s32 HSD_GObj_804D7834
void render_gobj(HSD_GObj *cur, int i)
Definition gobj.c:117
static void * HSD_GObjGetUserData(HSD_GObj *gobj)
Definition gobj.h:140
void HSD_GObj_803912E0(GObjFuncs *arg0)
Definition gobj.c:245
void HSD_GObj_80390CFC(void)
Definition gobj.c:54
HSD_GObj * HSD_GObj_804D781C
void HSD_GObj_80391260(struct _GObjUnkStruct *arg0)
Definition gobj.c:218
HSD_GObj * HSD_GObj_804D7818
void HSD_GObj_80390ED0(HSD_GObj *gobj, u32 mask)
Definition gobj.c:126
u32 HSD_GObj_80390EB8(s32 i)
Definition gobj.c:112
static void * HSD_GObjGetHSDObj(HSD_GObj *gobj)
Definition gobj.h:145
void HSD_GObj_80391120(HSD_Obj *obj)
Definition gobj.c:200
s8 HSD_GObj_804D7848
void HSD_GObj_80390C84(HSD_GObj *gobj)
Definition gobj.c:33
HSD_GObj * GObj_Create(u16 classifier, u8 p_link, u8 priority)
Definition gobjplink.c:98
static u16 HSD_GObjGetClassifier(HSD_GObj *gobj)
Definition gobj.h:150
void HSD_GObj_80391044(HSD_GObj *gobj)
Definition gobj.c:169
struct _unk_gobj_struct HSD_GObj_804CE3E4
s8 HSD_GObj_804D7849
s32 HSD_GObj_804D783C
void HSD_GObj_80391070(HSD_GObj *gobj, int arg1)
Definition gobj.c:175
void HSD_GObj_803910B4(HSD_GObj *gobj)
Definition gobj.c:187
void HSD_GObj_80390FC0(void)
Definition gobj.c:154
signed char s8
A signed 8-bit integer.
Definition platform.h:8
unsigned long u32
An unsigned 32-bit integer.
Definition platform.h:26
unsigned short u16
An unsigned 16-bit integer.
Definition platform.h:23
unsigned long long u64
An unsigned 64-bit integer.
Definition platform.h:29
signed long s32
A signed 32-bit integer.
Definition platform.h:14
unsigned char u8
An unsigned 8-bit integer.
Definition platform.h:20
void * obj
Definition pobj.c:49
int mask
Definition state.c:133
Definition gobj.h:46
HSD_ObjAllocData gobj_proc_def
Definition gobj.h:53
u8 p_link_max
Definition gobj.h:47
u32 unk_1
Definition gobj.h:50
HSD_ObjAllocData gobj_def
Definition gobj.h:52
u8 gx_link_max
Definition gobj.h:48
u8 gproc_pri_max
Definition gobj.h:49
u64 * unk_2
Definition gobj.h:51
Definition gobj.h:57
HSD_GObj * x2C
Definition gobj.h:69
HSD_GObj * x0
Definition gobj.h:58
HSD_GObj * x28
Definition gobj.h:68
HSD_GObj * x44
Definition gobj.h:75
HSD_GObj * x48
Definition gobj.h:76
HSD_GObj * x14
Definition gobj.h:63
HSD_GObj * items
Definition gobj.h:67
HSD_GObj * x38
Definition gobj.h:72
HSD_GObj * fighters
Definition gobj.h:66
HSD_GObj * x40
Definition gobj.h:74
HSD_GObj * x10
Definition gobj.h:62
HSD_GObj * x4
Definition gobj.h:59
HSD_GObj * x30
Definition gobj.h:70
HSD_GObj * x8
Definition gobj.h:60
HSD_GObj * xC
Definition gobj.h:61
HSD_GObj * x18
Definition gobj.h:64
HSD_GObj * x1C
Definition gobj.h:65
HSD_GObj * x34
Definition gobj.h:71
HSD_GObj * x3C
Definition gobj.h:73
Definition gobjproc.h:8
Definition gobj.h:25
u64 gxlink_prios
Definition gobj.h:39
void * hsd_obj
Definition gobj.h:40
u16 classifier
Definition gobj.h:26
u8 p_priority
Definition gobj.h:29
u8 obj_kind
Definition gobj.h:31
HSD_GObj * prev
Definition gobj.h:34
void * x34_unk
Definition gobj.h:43
void * user_data
Definition gobj.h:41
GObj_RenderFunc render_cb
Definition gobj.h:38
HSD_GObj * next_gx
Definition gobj.h:35
HSD_GObj * next
Definition gobj.h:33
u8 render_priority
Definition gobj.h:30
u8 p_link
Definition gobj.h:27
HSD_GObj * prev_gx
Definition gobj.h:36
u8 gx_link
Definition gobj.h:28
HSD_GObjProc * proc
Definition gobj.h:37
u8 user_data_kind
Definition gobj.h:32
void(* user_data_remove_func)(void *data)
Definition gobj.h:42
Definition objalloc.h:21
Definition object.h:60
Definition gobj.c:212
Definition gobj.c:227
Definition gobj.h:79
u32 b0
Definition gobj.h:83
u8 p_prio
Definition gobj.h:91
HSD_GObj * gobj
Definition gobj.h:92
u32 b2
Definition gobj.h:85
u32 b1
Definition gobj.h:84
u32 flags
Definition gobj.h:81
u32 b3
Definition gobj.h:86
u32 type
Definition gobj.h:89
u8 p_link
Definition gobj.h:90
void(* GObj_RenderFunc)(HSD_GObj *gobj, int code)
Definition forward.h:98