Super Mario 64 Source
A Super Mario 64 decompilation, brought to you by a bunch of clever folks.
objects.h
Go to the documentation of this file.
1 #ifndef GD_OBJECTS_H
2 #define GD_OBJECTS_H
3 
4 #include <ultra64.h>
5 #include "gd_types.h"
6 
7 // types
8 // Type to erase for func arg to `apply_to_obj_types_in_group`. Maybe one day this
9 // can be the proper type of 'void (*)(struct GdObj *)...
10 typedef void (*applyproc_t)(void *);
11 
12 // structs
13 struct DebugCounters {
16 };
17 
18 // bss
19 extern struct GdPlaneF D_801B9DA0;
20 extern struct ObjCamera *sCurrentMoveCamera;
21 extern struct ObjView *sCurrentMoveView;
22 extern struct DebugCounters gGdCounter;
23 extern Mat4f D_801B9DC8;
24 extern struct GdVec3f D_801B9E08;
25 extern struct ObjGroup* sCurrentMoveGrp;
26 extern struct GdVec3f D_801B9E18;
27 extern struct GdVec3f D_801B9E28;
28 extern f32 D_801B9E34;
29 extern Mat4f* D_801B9E38; /* never read from */
30 extern struct ObjParticle *D_801B9E3C; /* never read from */
31 extern s32 D_801B9E40; /* always 0 */
32 extern s32 D_801B9E44;
33 extern Mat4f* D_801B9E48;
34 extern struct ObjCamera* gGdCameraList;
35 extern void* D_801B9E50;
36 extern struct ObjGroup* gGdGroupList;
37 extern s32 gGdObjCount;
38 extern s32 gGdGroupCount;
39 extern s32 gGdPlaneCount;
40 extern s32 gGdCameraCount;
41 extern struct Unk801B9E68 sGdViewInfo; /* count in first member? */
42 extern void* D_801B9E80;
43 extern struct ObjJoint* gGdJointList;
44 extern struct ObjBone* gGdBoneList;
45 extern struct GdObj* gGdObjectList;
46 extern struct ObjGroup* gGdViewsGroup;
47 
48 // functions
49 extern void func_8017BCB0(void);
50 extern void func_8017BD20(void*);
51 extern void func_8017BE60(struct GdPlaneF*);
52 extern void func_8017BED0(struct ObjGroup *, struct GdObj *);
53 extern const char* get_obj_name_str(enum ObjTypeFlag);
54 extern struct GdObj * make_object(enum ObjTypeFlag);
55 extern struct ObjZone * make_zone(struct ObjGroup *, struct GdPlaneF *, struct ObjGroup *);
56 extern struct ObjUnk200000 * Unknown8017C7A0(struct ObjVertex *, struct ObjFace *);
57 extern struct Links * make_link_to_obj(struct Links*, struct GdObj*);
58 extern struct VtxLink * make_vtx_link(struct VtxLink *, Vtx *);
59 extern struct ObjValPtrs* make_valptrs(struct GdObj *, s32, enum ValPtrType, s32);
60 extern void reset_plane(struct ObjPlane*);
61 extern struct ObjPlane* make_plane(s32, struct ObjFace*);
62 extern struct ObjCamera* make_camera(s32, struct GdObj*);
63 extern struct ObjMaterial* make_material(UNUSED s32, char*, s32);
64 extern struct ObjLight* make_light(s32, char*, s32);
65 extern struct ObjView* make_view(const char *, s32, s32, s32, s32, s32, s32, struct ObjGroup*);
66 extern struct ObjAnimator* make_animator(void);
67 extern struct ObjWeight* make_weight(UNUSED s32, s32, struct ObjVertex*, f32);
68 extern struct ObjGroup* make_group_of_type(enum ObjTypeFlag, struct GdObj*, struct GdObj*);
69 extern void sprint_obj_id(char*, struct GdObj*);
70 extern struct ObjGroup* make_group(s32 count, ...);
71 extern void addto_group(struct ObjGroup*, struct GdObj*);
72 extern void addto_groupfirst(struct ObjGroup*, struct GdObj*);
73 extern s32 group_contains_obj(struct ObjGroup*, struct GdObj*);
74 extern void show_details(enum ObjTypeFlag);
75 extern s32 Unknown8017E1E8(void);
76 extern s32 func_8017E20C(void);
77 extern void gd_loadtexture(struct GdObj*);
78 extern void func_8017E2B8(void);
79 extern struct GdObj* UnknownRecursive8017E2F0(struct GdObj*, enum ObjTypeFlag);
81 extern void func_8017E584(struct ObjNet*, struct GdVec3f*, struct GdVec3f*);
82 extern void func_8017E838(struct ObjNet*, struct GdVec3f*, struct GdVec3f*);
83 extern void func_8017E9EC(struct ObjNet*);
84 extern s32 Unknown8017EA94(struct GdVec3f*, Mat4f);
85 extern s32 Unknown8017EB24(struct GdObj*, struct GdObj*);
86 extern s32 Unknown8017ED00(struct GdObj*, struct GdPlaneF*);
87 extern s32 Unknown8017EDCC(struct GdVec3f*, struct GdPlaneF*);
88 extern s32 gd_plane_point_within(struct GdPlaneF*, struct GdPlaneF*);
89 extern s32 func_8017F054(struct GdObj*, struct GdObj*);
90 extern s32 UnknownRecursive8017F210(struct GdObj*, struct GdObj*);
91 extern void func_8017F404(f32, struct GdObj*, struct GdObj*);
92 extern void func_8017F424(struct GdTriangleF*, struct GdTriangleF*, f32);
93 extern void move_animator(struct ObjAnimator*);
94 extern void drag_picked_object(struct GdObj*);
95 extern void move_animators(struct ObjGroup *);
96 extern void find_and_drag_picked_object(struct ObjGroup *);
97 extern void move_camera(struct ObjCamera*);
98 extern void move_cameras_in_grp(struct ObjGroup*);
99 extern void Unknown8018100C(struct ObjLight*);
100 extern void move_lights_in_grp(struct ObjGroup*);
101 extern void move_lights_in_grp(struct ObjGroup*);
102 extern void proc_view_movement(struct ObjView *);
103 extern void reset_nets_and_gadgets(struct ObjGroup *);
104 extern void null_obj_lists(void);
105 
106 #endif /* GD_OBJECTS_H */
struct ObjCamera * make_camera(s32, struct GdObj *)
Definition: objects.c:507
struct Unk801B9E68 sGdViewInfo
Definition: objects.c:61
s32 group_contains_obj(struct ObjGroup *, struct GdObj *)
Definition: objects.c:828
void move_animators(struct ObjGroup *)
Definition: objects.c:1698
Definition: gd_types.h:337
void(* applyproc_t)(void *)
Definition: objects.h:10
s32 UnknownRecursive8017F210(struct GdObj *, struct GdObj *)
Definition: objects.c:1314
Definition: gd_types.h:482
Definition: objects.c:24
Definition: gd_types.h:427
Definition: gd_types.h:12
Definition: gd_types.h:348
void move_animator(struct ObjAnimator *)
Definition: objects.c:1405
Mat4f * D_801B9E48
Definition: objects.c:53
struct GdVec3f D_801B9E28
Definition: objects.c:47
void * D_801B9E50
Definition: objects.c:55
void sprint_obj_id(char *, struct GdObj *)
Definition: objects.c:685
Mat4f * D_801B9E38
Definition: objects.c:49
struct ObjGroup * make_group_of_type(enum ObjTypeFlag, struct GdObj *, struct GdObj *)
Definition: objects.c:664
Definition: gd_types.h:288
u32 ctr0
Definition: objects.h:14
Definition: gd_types.h:578
struct ObjUnk200000 * Unknown8017C7A0(struct ObjVertex *, struct ObjFace *)
Definition: objects.c:344
struct ObjValPtrs * make_valptrs(struct GdObj *, s32, enum ValPtrType, s32)
Definition: objects.c:401
s32 Unknown8017EB24(struct GdObj *, struct GdObj *)
Definition: objects.c:1167
void func_8017E9EC(struct ObjNet *)
Definition: objects.c:1142
void drag_picked_object(struct GdObj *)
Definition: objects.c:1635
s32 apply_to_obj_types_in_group(s32, applyproc_t, struct ObjGroup *)
Definition: objects.c:999
s32 Unknown8017EA94(struct GdVec3f *, Mat4f)
Definition: objects.c:1158
s32 func_8017E20C(void)
Definition: objects.c:943
void addto_group(struct ObjGroup *, struct GdObj *)
Definition: objects.c:781
s32 Unknown8017E1E8(void)
Definition: objects.c:938
void move_lights_in_grp(struct ObjGroup *)
Definition: objects.c:1881
void func_8017BE60(struct GdPlaneF *)
Definition: objects.c:108
void Unknown8018100C(struct ObjLight *)
Definition: objects.c:1827
void func_8017BD20(void *)
Definition: objects.c:82
void func_8017BED0(struct ObjGroup *, struct GdObj *)
struct DebugCounters gGdCounter
Definition: objects.c:42
struct ObjBone * gGdBoneList
Definition: objects.c:64
void func_8017E2B8(void)
Definition: objects.c:964
struct ObjGroup * sCurrentMoveGrp
Definition: objects.c:45
s32 D_801B9E40
Definition: objects.c:51
s32 D_801B9E44
Definition: objects.c:52
float f32
Definition: ultratypes.h:29
void func_8017BCB0(void)
Definition: objects.c:69
s32 ctr1
Definition: objects.h:15
void proc_view_movement(struct ObjView *)
Definition: objects.c:1903
s32 func_8017F054(struct GdObj *, struct GdObj *)
Definition: objects.c:1259
struct ObjView * make_view(const char *, s32, s32, s32, s32, s32, s32, struct ObjGroup *)
Definition: objects.c:593
struct ObjZone * make_zone(struct ObjGroup *, struct GdPlaneF *, struct ObjGroup *)
Definition: objects.c:324
Definition: gd_types.h:377
Definition: objects.h:13
struct ObjWeight * make_weight(UNUSED s32, s32, struct ObjVertex *, f32)
Definition: objects.c:653
The base of structure of all of Goddard&#39;s objects.
Definition: gd_types.h:87
void reset_plane(struct ObjPlane *)
Definition: objects.c:413
void find_and_drag_picked_object(struct ObjGroup *)
Definition: objects.c:1705
void func_8017F424(struct GdTriangleF *, struct GdTriangleF *, f32)
Definition: objects.c:1377
const char * get_obj_name_str(enum ObjTypeFlag)
Definition: objects.c:126
Definition: gd_types.h:413
void reset_nets_and_gadgets(struct ObjGroup *)
Definition: objects.c:1915
void func_8017F404(f32, struct GdObj *, struct GdObj *)
void func_8017E838(struct ObjNet *, struct GdVec3f *, struct GdVec3f *)
Definition: objects.c:1106
Definition: gd_types.h:366
Definition: gbi_old.h:25
struct ObjView * sCurrentMoveView
Definition: objects.c:41
void null_obj_lists(void)
Definition: objects.c:1921
Definition: gd_types.h:16
Definition: gd_types.h:592
Definition: gd_types.h:170
void gd_loadtexture(struct GdObj *)
Definition: objects.c:949
ObjTypeFlag
Definition: gd_types.h:42
Definition: gd_types.h:616
struct ObjPlane * make_plane(s32, struct ObjFace *)
Definition: objects.c:493
s32 gGdPlaneCount
Definition: objects.c:59
void move_cameras_in_grp(struct ObjGroup *)
Definition: objects.c:1822
struct ObjMaterial * make_material(UNUSED s32, char *, s32)
Definition: objects.c:552
void func_8017E584(struct ObjNet *, struct GdVec3f *, struct GdVec3f *)
Definition: objects.c:1051
Definition: gd_types.h:528
This is test documentation comment for ObjGroup.
Definition: gd_types.h:124
Definition: gd_types.h:7
struct ObjCamera * sCurrentMoveCamera
Definition: objects.c:40
f32 D_801B9E34
Definition: objects.c:48
s32 gGdGroupCount
Definition: objects.c:58
struct ObjJoint * gGdJointList
Definition: objects.c:63
Definition: gd_types.h:624
struct Links * make_link_to_obj(struct Links *, struct GdObj *)
Definition: objects.c:354
struct VtxLink * make_vtx_link(struct VtxLink *, Vtx *)
Definition: objects.c:377
struct ObjGroup * gGdViewsGroup
Definition: objects.c:66
void addto_groupfirst(struct ObjGroup *, struct GdObj *)
Definition: objects.c:807
#define UNUSED
Definition: macros.h:13
s32 gGdObjCount
Definition: objects.c:57
struct GdObj * UnknownRecursive8017E2F0(struct GdObj *, enum ObjTypeFlag)
Definition: objects.c:969
struct GdObj * make_object(enum ObjTypeFlag)
Definition: objects.c:194
Mat4f D_801B9DC8
Definition: objects.c:43
void * D_801B9E80
Definition: objects.c:62
struct GdVec3f D_801B9E18
Definition: objects.c:46
struct GdPlaneF D_801B9DA0
Definition: objects.c:39
s32 gGdCameraCount
Definition: objects.c:60
signed int s32
Definition: ultratypes.h:15
s32 Unknown8017ED00(struct GdObj *, struct GdPlaneF *)
Definition: objects.c:1203
void move_camera(struct ObjCamera *)
Definition: objects.c:1710
Definition: gd_types.h:143
f32 Mat4f[4][4]
Definition: gd_types.h:20
s32 Unknown8017EDCC(struct GdVec3f *, struct GdPlaneF *)
Definition: objects.c:1219
struct ObjParticle * D_801B9E3C
Definition: objects.c:50
struct ObjLight * make_light(s32, char *, s32)
Definition: objects.c:570
ValPtrType
Definition: gd_types.h:573
struct GdVec3f D_801B9E08
Definition: objects.c:44
struct GdObj * gGdObjectList
Definition: objects.c:65
struct ObjGroup * make_group(s32 count,...)
Definition: objects.c:720
one operand is a pointer to an object or incomplete type and the other is a pointer to a qualified or unqualified version of void
Definition: err.english.cc:848
s32 gd_plane_point_within(struct GdPlaneF *, struct GdPlaneF *)
Definition: objects.c:1230
unsigned int u32
Definition: ultratypes.h:16
Definition: gd_types.h:219
struct ObjAnimator * make_animator(void)
Definition: objects.c:641
struct ObjGroup * gGdGroupList
Definition: objects.c:56
struct ObjCamera * gGdCameraList
Definition: objects.c:54
void show_details(enum ObjTypeFlag)
Definition: objects.c:843