Super Mario 64 Source
A Super Mario 64 decompilation, brought to you by a bunch of clever folks.
Data Structures | Functions | Variables
objects.c File Reference
#include <ultra64.h>
#include <stdarg.h>
#include <macros.h>
#include <config.h>
#include "gd_types.h"
#include "gd_macros.h"
#include "gd_main.h"
#include "sfx.h"
#include "draw_objects.h"
#include "objects.h"
#include "particles.h"
#include "dynlist_proc.h"
#include "old_menu.h"
#include "debug_utils.h"
#include "joints.h"
#include "skin.h"
#include "gd_math.h"
#include "shape_helper.h"
#include "renderer.h"

Data Structures

struct  Unk801B9E68
 
struct  Unk8017F3CC
 

Functions

void func_8017BCB0 (void)
 
void func_8017BD20 (void *a0)
 
void func_8017BE60 (struct GdPlaneF *a0)
 
void func_8017BED0 (UNUSED struct ObjGroup *a0, UNUSED struct GdObj *a1)
 
const charget_obj_name_str (enum ObjTypeFlag objFlag)
 
struct GdObjmake_object (enum ObjTypeFlag objType)
 
struct ObjZonemake_zone (struct ObjGroup *a0, struct GdPlaneF *a1, struct ObjGroup *a2)
 
struct ObjUnk200000Unknown8017C7A0 (struct ObjVertex *a0, struct ObjFace *a1)
 
struct Linksmake_link_to_obj (struct Links *head, struct GdObj *a1)
 
struct VtxLinkmake_vtx_link (struct VtxLink *prevlink, Vtx *data)
 
struct ObjValPtrsmake_valptrs (struct GdObj *obj, s32 flags, enum ValPtrType type, s32 offset)
 
void reset_plane (struct ObjPlane *plane)
 
struct ObjPlanemake_plane (s32 inZone, struct ObjFace *a1)
 
struct ObjCameramake_camera (s32 a0, struct GdObj *a1)
 
struct ObjMaterialmake_material (UNUSED s32 a0, char *name, s32 id)
 
struct ObjLightmake_light (s32 flags, char *name, s32 id)
 
struct ObjViewmake_view (const char *name, s32 flags, s32 a2, s32 ulx, s32 uly, s32 lrx, s32 lry, struct ObjGroup *parts)
 
struct ObjAnimatormake_animator (void)
 
struct ObjWeightmake_weight (UNUSED s32 a0, s32 id, struct ObjVertex *vtx, f32 weight)
 
struct ObjGroupmake_group_of_type (enum ObjTypeFlag type, struct GdObj *fromObj, struct GdObj *toObj)
 
void sprint_obj_id (char *str, struct GdObj *obj)
 
struct ObjGroupmake_group (s32 count,...)
 
void addto_group (struct ObjGroup *group, struct GdObj *obj)
 
void addto_groupfirst (struct ObjGroup *group, struct GdObj *obj)
 
s32 group_contains_obj (struct ObjGroup *group, struct GdObj *obj)
 
void show_details (enum ObjTypeFlag type)
 
s32 Unknown8017E1E8 (void)
 
s32 func_8017E20C (void)
 
void gd_loadtexture (struct GdObj *obj)
 
void func_8017E2B8 (void)
 
struct GdObjUnknownRecursive8017E2F0 (struct GdObj *obj, enum ObjTypeFlag type)
 
s32 apply_to_obj_types_in_group (s32 types, applyproc_t fn, struct ObjGroup *group)
 
void func_8017E584 (struct ObjNet *a0, struct GdVec3f *a1, struct GdVec3f *a2)
 
void func_8017E838 (struct ObjNet *a0, struct GdVec3f *a1, struct GdVec3f *a2)
 
void func_8017E9EC (struct ObjNet *a0)
 
s32 Unknown8017EA94 (struct GdVec3f *vec, Mat4f matrix)
 
s32 Unknown8017EB24 (struct GdObj *a0, struct GdObj *a1)
 
s32 Unknown8017ED00 (struct GdObj *a0, struct GdPlaneF *a1)
 
s32 Unknown8017EDCC (struct GdVec3f *a0, struct GdPlaneF *a1)
 
s32 gd_plane_point_within (struct GdPlaneF *a0, struct GdPlaneF *a1)
 
s32 func_8017F054 (struct GdObj *a0, struct GdObj *a1)
 
s32 UnknownRecursive8017F210 (struct GdObj *a0, struct GdObj *a1)
 
void Unknown8017F3CC (struct Unk8017F3CC *a0)
 
void func_8017F404 (UNUSED f32 a0, UNUSED struct GdObj *a1, UNUSED struct GdObj *a2)
 
void func_8017F424 (struct GdTriangleF *a0, struct GdTriangleF *a1, f32 a2)
 
void move_animator (struct ObjAnimator *animObj)
 
void drag_picked_object (struct GdObj *inputObj)
 
void move_animators (struct ObjGroup *group)
 
void find_and_drag_picked_object (struct ObjGroup *group)
 
void move_camera (struct ObjCamera *cam)
 
void move_cameras_in_grp (struct ObjGroup *group)
 
void Unknown8018100C (struct ObjLight *light)
 
void move_lights_in_grp (struct ObjGroup *group)
 
void move_group_members (void)
 
void proc_view_movement (struct ObjView *view)
 
void reset_nets_and_gadgets (struct ObjGroup *group)
 
void null_obj_lists (void)
 

Variables

f32 D_801A81C0 = 0.0f
 
f32 D_801A81C4 = 0.0f
 
struct GdPlaneF D_801B9DA0
 
struct ObjCamerasCurrentMoveCamera
 
struct ObjViewsCurrentMoveView
 
struct DebugCounters gGdCounter
 
Mat4f D_801B9DC8
 
struct GdVec3f D_801B9E08
 
struct ObjGroupsCurrentMoveGrp
 
struct GdVec3f D_801B9E18
 
struct GdVec3f D_801B9E28
 
f32 D_801B9E34
 
Mat4fD_801B9E38
 
struct ObjParticleD_801B9E3C
 
s32 D_801B9E40
 
s32 D_801B9E44
 
Mat4fD_801B9E48
 
struct ObjCameragGdCameraList
 
voidD_801B9E50
 
struct ObjGroupgGdGroupList
 
s32 gGdObjCount
 
s32 gGdGroupCount
 
s32 gGdPlaneCount
 
s32 gGdCameraCount
 
struct Unk801B9E68 sGdViewInfo
 
voidD_801B9E80
 
struct ObjJointgGdJointList
 
struct ObjBonegGdBoneList
 
struct GdObjgGdObjectList
 
struct ObjGroupgGdViewsGroup
 

Function Documentation

◆ addto_group()

void addto_group ( struct ObjGroup group,
struct GdObj obj 
)

◆ addto_groupfirst()

void addto_groupfirst ( struct ObjGroup group,
struct GdObj obj 
)

◆ apply_to_obj_types_in_group()

s32 apply_to_obj_types_in_group ( s32  types,
applyproc_t  fn,
struct ObjGroup group 
)
Bug:
When group pointer is NULL, garbage is returned, not the count of fn calls

◆ drag_picked_object()

void drag_picked_object ( struct GdObj inputObj)

◆ find_and_drag_picked_object()

void find_and_drag_picked_object ( struct ObjGroup group)

◆ func_8017BCB0()

void func_8017BCB0 ( void  )

◆ func_8017BD20()

void func_8017BD20 ( void a0)

◆ func_8017BE60()

void func_8017BE60 ( struct GdPlaneF a0)

◆ func_8017BED0()

void func_8017BED0 ( UNUSED struct ObjGroup a0,
UNUSED struct GdObj a1 
)

◆ func_8017E20C()

s32 func_8017E20C ( void  )

◆ func_8017E2B8()

void func_8017E2B8 ( void  )

◆ func_8017E584()

void func_8017E584 ( struct ObjNet a0,
struct GdVec3f a1,
struct GdVec3f a2 
)

◆ func_8017E838()

void func_8017E838 ( struct ObjNet a0,
struct GdVec3f a1,
struct GdVec3f a2 
)

◆ func_8017E9EC()

void func_8017E9EC ( struct ObjNet a0)

◆ func_8017F054()

s32 func_8017F054 ( struct GdObj a0,
struct GdObj a1 
)

◆ func_8017F404()

void func_8017F404 ( UNUSED f32  a0,
UNUSED struct GdObj a1,
UNUSED struct GdObj a2 
)

◆ func_8017F424()

void func_8017F424 ( struct GdTriangleF a0,
struct GdTriangleF a1,
f32  a2 
)

◆ gd_loadtexture()

void gd_loadtexture ( struct GdObj obj)

◆ gd_plane_point_within()

s32 gd_plane_point_within ( struct GdPlaneF a0,
struct GdPlaneF a1 
)

◆ get_obj_name_str()

const char* get_obj_name_str ( enum ObjTypeFlag  objFlag)

◆ group_contains_obj()

s32 group_contains_obj ( struct ObjGroup group,
struct GdObj obj 
)

◆ make_animator()

struct ObjAnimator* make_animator ( void  )

◆ make_camera()

struct ObjCamera* make_camera ( s32  a0,
struct GdObj a1 
)

◆ make_group()

struct ObjGroup* make_group ( s32  count,
  ... 
)

◆ make_group_of_type()

struct ObjGroup* make_group_of_type ( enum ObjTypeFlag  type,
struct GdObj fromObj,
struct GdObj toObj 
)

◆ make_light()

struct ObjLight* make_light ( s32  flags,
char name,
s32  id 
)

◆ make_link_to_obj()

struct Links* make_link_to_obj ( struct Links head,
struct GdObj a1 
)

◆ make_material()

struct ObjMaterial* make_material ( UNUSED s32  a0,
char name,
s32  id 
)

◆ make_object()

struct GdObj* make_object ( enum ObjTypeFlag  objType)

◆ make_plane()

struct ObjPlane* make_plane ( s32  inZone,
struct ObjFace a1 
)

◆ make_valptrs()

struct ObjValPtrs* make_valptrs ( struct GdObj obj,
s32  flags,
enum ValPtrType  type,
s32  offset 
)

◆ make_view()

struct ObjView* make_view ( const char name,
s32  flags,
s32  a2,
s32  ulx,
s32  uly,
s32  lrx,
s32  lry,
struct ObjGroup parts 
)

◆ make_vtx_link()

struct VtxLink* make_vtx_link ( struct VtxLink prevlink,
Vtx data 
)

◆ make_weight()

struct ObjWeight* make_weight ( UNUSED s32  a0,
s32  id,
struct ObjVertex vtx,
f32  weight 
)

◆ make_zone()

struct ObjZone* make_zone ( struct ObjGroup a0,
struct GdPlaneF a1,
struct ObjGroup a2 
)
Bug:
Created ObjZone is not returned

◆ move_animator()

void move_animator ( struct ObjAnimator animObj)

◆ move_animators()

void move_animators ( struct ObjGroup group)

◆ move_camera()

void move_camera ( struct ObjCamera cam)

◆ move_cameras_in_grp()

void move_cameras_in_grp ( struct ObjGroup group)

◆ move_group_members()

void move_group_members ( void  )

◆ move_lights_in_grp()

void move_lights_in_grp ( struct ObjGroup group)

◆ null_obj_lists()

void null_obj_lists ( void  )

◆ proc_view_movement()

void proc_view_movement ( struct ObjView view)

◆ reset_nets_and_gadgets()

void reset_nets_and_gadgets ( struct ObjGroup group)

◆ reset_plane()

void reset_plane ( struct ObjPlane plane)

◆ show_details()

void show_details ( enum ObjTypeFlag  type)

◆ sprint_obj_id()

void sprint_obj_id ( char str,
struct GdObj obj 
)

◆ Unknown8017C7A0()

struct ObjUnk200000* Unknown8017C7A0 ( struct ObjVertex a0,
struct ObjFace a1 
)

◆ Unknown8017E1E8()

s32 Unknown8017E1E8 ( void  )

◆ Unknown8017EA94()

s32 Unknown8017EA94 ( struct GdVec3f vec,
Mat4f  matrix 
)

◆ Unknown8017EB24()

s32 Unknown8017EB24 ( struct GdObj a0,
struct GdObj a1 
)

◆ Unknown8017ED00()

s32 Unknown8017ED00 ( struct GdObj a0,
struct GdPlaneF a1 
)

◆ Unknown8017EDCC()

s32 Unknown8017EDCC ( struct GdVec3f a0,
struct GdPlaneF a1 
)

◆ Unknown8017F3CC()

void Unknown8017F3CC ( struct Unk8017F3CC a0)

◆ Unknown8018100C()

void Unknown8018100C ( struct ObjLight light)

◆ UnknownRecursive8017E2F0()

struct GdObj* UnknownRecursive8017E2F0 ( struct GdObj obj,
enum ObjTypeFlag  type 
)
Bug:
Nothing is returned if a GdObj of type is not found

◆ UnknownRecursive8017F210()

s32 UnknownRecursive8017F210 ( struct GdObj a0,
struct GdObj a1 
)

Variable Documentation

◆ D_801A81C0

f32 D_801A81C0 = 0.0f

◆ D_801A81C4

f32 D_801A81C4 = 0.0f

◆ D_801B9DA0

struct GdPlaneF D_801B9DA0

◆ D_801B9DC8

Mat4f D_801B9DC8

◆ D_801B9E08

struct GdVec3f D_801B9E08

◆ D_801B9E18

struct GdVec3f D_801B9E18

◆ D_801B9E28

struct GdVec3f D_801B9E28

◆ D_801B9E34

f32 D_801B9E34

◆ D_801B9E38

Mat4f* D_801B9E38

◆ D_801B9E3C

struct ObjParticle* D_801B9E3C

◆ D_801B9E40

s32 D_801B9E40

◆ D_801B9E44

s32 D_801B9E44

◆ D_801B9E48

Mat4f* D_801B9E48

◆ D_801B9E50

void* D_801B9E50

◆ D_801B9E80

void* D_801B9E80

◆ gGdBoneList

struct ObjBone* gGdBoneList

◆ gGdCameraCount

s32 gGdCameraCount

◆ gGdCameraList

struct ObjCamera* gGdCameraList

◆ gGdCounter

struct DebugCounters gGdCounter

◆ gGdGroupCount

s32 gGdGroupCount

◆ gGdGroupList

struct ObjGroup* gGdGroupList

◆ gGdJointList

struct ObjJoint* gGdJointList

◆ gGdObjCount

s32 gGdObjCount

◆ gGdObjectList

struct GdObj* gGdObjectList

◆ gGdPlaneCount

s32 gGdPlaneCount

◆ gGdViewsGroup

struct ObjGroup* gGdViewsGroup

◆ sCurrentMoveCamera

struct ObjCamera* sCurrentMoveCamera

◆ sCurrentMoveGrp

struct ObjGroup* sCurrentMoveGrp

◆ sCurrentMoveView

struct ObjView* sCurrentMoveView

◆ sGdViewInfo

struct Unk801B9E68 sGdViewInfo