SSBM Decomp
Loading...
Searching...
No Matches
pobj.c File Reference
#include "forward.h"
#include <dolphin/gx/forward.h>
#include "pobj.h"
#include "aobj.h"
#include "class.h"
#include "debug.h"
#include "displayfunc.h"
#include "id.h"
#include "jobj.h"
#include "memory.h"
#include "mtx.h"
#include "perf.h"
#include "state.h"
#include "tobj.h"
#include "util.h"
#include <__mem.h>
#include <math.h>
#include <dolphin/gx/GXAttr.h>
#include <dolphin/gx/GXDisplayList.h>
#include <dolphin/gx/GXEnum.h>
#include <dolphin/gx/GXGeometry.h>
#include <dolphin/gx/GXTransform.h>
#include <dolphin/gx/GXVert.h>
#include <dolphin/mtx.h>
#include <dolphin/os.h>

Macros

#define pobj_min(x, y)   (x < y ? x : y)
 

Functions

static void PObjInfoInit (void)
 
u32 HSD_PObjGetFlags (HSD_PObj *pobj)
 
void HSD_PObjRemoveAnimByFlags (HSD_PObj *pobj, u32 flags)
 
void HSD_PObjRemoveAnimAllByFlags (HSD_PObj *pobj, u32 flags)
 
void HSD_PObjAddAnim (HSD_PObj *pobj, HSD_ShapeAnim *shapeanim)
 
void HSD_PObjAddAnimAll (HSD_PObj *pobj, HSD_ShapeAnim *shapeanim)
 
void HSD_PObjReqAnimByFlags (HSD_PObj *pobj, f32 startframe, u32 flags)
 
void HSD_PObjReqAnimAllByFlags (HSD_PObj *pobj, f32 startframe, u32 flags)
 
static void ShapeSetSetAnimResult (HSD_ShapeSet *shape_set, u32 type, HSD_ObjData *val)
 
static void PObjUpdateFunc (void *obj, int type, HSD_ObjData *val)
 
void HSD_PObjAnim (HSD_PObj *pobj)
 
void HSD_PObjAnimAll (HSD_PObj *pobj)
 
static HSD_EnvelopeHSD_EnvelopeAlloc (void)
 
static void HSD_EnvelopeFree (HSD_Envelope *env)
 
static void HSD_EnvelopeListFree (HSD_SList *list)
 
static HSD_SListloadEnvelopeDesc (HSD_EnvelopeDesc **edesc_p)
 
static void HSD_ShapeSetFree (HSD_ShapeSet *shape_set)
 
static void HSD_ShapeSetRemove (HSD_ShapeSet *shape_set)
 
static HSD_ShapeSetloadShapeSetDesc (HSD_ShapeSetDesc *sdesc)
 
static s32 PObjLoad (HSD_PObj *pobj, HSD_PObjDesc *desc)
 
HSD_PObjHSD_PObjLoadDesc (HSD_PObjDesc *pobjdesc)
 
void HSD_PObjRemove (HSD_PObj *pobj)
 
void HSD_PObjRemoveAll (HSD_PObj *pobj)
 
HSD_PObjInfoHSD_PObjGetDefaultClass (void)
 
void HSD_PObjSetDefaultClass (HSD_PObjInfo *info)
 
HSD_PObjHSD_PObjAlloc (void)
 
void HSD_PObjFree (HSD_PObj *pobj)
 
static void resolveEnvelope (HSD_SList *list, HSD_EnvelopeDesc **edesc_p)
 
void HSD_PObjResolveRefs (HSD_PObj *pobj, HSD_PObjDesc *pdesc)
 
void HSD_PObjResolveRefsAll (HSD_PObj *pobj, HSD_PObjDesc *pdesc)
 
void HSD_ClearVtxDesc (void)
 
static void setupArrayDesc (HSD_VtxDescList *desc_list)
 
static void setupVtxDesc (HSD_PObj *pobj)
 
static void setupShapeAnimArrayDesc (HSD_VtxDescList *desc_list)
 
static void setupShapeAnimVtxDesc (HSD_PObj *pobj)
 
static void get_shape_vertex_xyz (HSD_ShapeSet *shape_set, int shape_id, int arrayidx, f32 dst[3])
 
static void get_shape_normal_xyz (HSD_ShapeSet *shape_set, int shape_id, int arrayidx, float dst[3])
 
static void get_shape_nbt_xyz (HSD_ShapeSet *shape_set, int shape_id, int arrayidx, float *dst)
 
static void interpretShapeAnimDisplayList (HSD_PObj *pobj, float(*vertex)[3], float(*normal)[3])
 
static void drawShapeAnim (HSD_PObj *pobj)
 
void HSD_PObjClearMtxMark (void *obj, u32 mark)
 
void HSD_PObjSetMtxMark (int idx, void *obj, u32 mark)
 
void HSD_PObjGetMtxMark (int idx, void **obj, u32 *mark)
 
static PObjSetupFlag GetSetupFlags (HSD_JObj *jobj, u32 rendermode)
 
static void SetupRigidModelMtx (HSD_PObj *pobj, Mtx vmtx, Mtx pmtx, u32 rendermode)
 
static void SetupSharedVtxModelMtx (HSD_PObj *pobj, Mtx vmtx, Mtx pmtx, u32 rendermode)
 
static void SetupEnvelopeModelMtx (HSD_PObj *pobj, Mtx vmtx, Mtx pmtx, u32 rendermode)
 
static void PObjSetupMtx (HSD_PObj *pobj, Mtx vmtx, Mtx pmtx, u32 rendermode)
 
static void PObjDispSimplePrimitive (HSD_PObj *pobj, u32 rendermode)
 
static void PObjDispShapeAnim (HSD_PObj *pobj, u32 rendermode)
 
void HSD_PObjDisp (HSD_PObj *pobj, Mtx vmtx, Mtx pmtx, u32 rendermode)
 
static void PObjRelease (HSD_Class *o)
 
static void PObjAmnesia (HSD_ClassInfo *info)
 

Variables

HSD_PObjInfo hsdPObj = { PObjInfoInit }
 
static HSD_PObjInfodefault_class = NULL
 
static f32(* vertex_buffer )[3] = NULL
 
static f32(* normal_buffer )[3] = NULL
 
static u32 vertex_buffer_size = 0
 
static u32 normal_buffer_size = 0
 
static HSD_VtxDescListprev_vtxdesclist_array = NULL
 
static HSD_VtxDescListprev_vtxdesc = NULL
 
struct { 
 
   void *   obj 
 
   u32   mark 
 
mtx_mark [2] 
 

Macro Definition Documentation

◆ pobj_min

#define pobj_min (   x,
 
)    (x < y ? x : y)

Function Documentation

◆ PObjInfoInit()

static void PObjInfoInit ( void  )
static
Todo:
Several differently-signed comparisons appear in asserts, likely indicating the sign of one of the variables is declared incorrectly

◆ HSD_PObjGetFlags()

u32 HSD_PObjGetFlags ( HSD_PObj pobj)

◆ HSD_PObjRemoveAnimByFlags()

void HSD_PObjRemoveAnimByFlags ( HSD_PObj pobj,
u32  flags 
)

◆ HSD_PObjRemoveAnimAllByFlags()

void HSD_PObjRemoveAnimAllByFlags ( HSD_PObj pobj,
u32  flags 
)

◆ HSD_PObjAddAnim()

void HSD_PObjAddAnim ( HSD_PObj pobj,
HSD_ShapeAnim shapeanim 
)

◆ HSD_PObjAddAnimAll()

void HSD_PObjAddAnimAll ( HSD_PObj pobj,
HSD_ShapeAnim shapeanim 
)

◆ HSD_PObjReqAnimByFlags()

void HSD_PObjReqAnimByFlags ( HSD_PObj pobj,
f32  startframe,
u32  flags 
)

◆ HSD_PObjReqAnimAllByFlags()

void HSD_PObjReqAnimAllByFlags ( HSD_PObj pobj,
f32  startframe,
u32  flags 
)

◆ ShapeSetSetAnimResult()

static void ShapeSetSetAnimResult ( HSD_ShapeSet shape_set,
u32  type,
HSD_ObjData val 
)
static

◆ PObjUpdateFunc()

static void PObjUpdateFunc ( void *  obj,
int  type,
HSD_ObjData val 
)
static

◆ HSD_PObjAnim()

void HSD_PObjAnim ( HSD_PObj pobj)

◆ HSD_PObjAnimAll()

void HSD_PObjAnimAll ( HSD_PObj pobj)

◆ HSD_EnvelopeAlloc()

static HSD_Envelope * HSD_EnvelopeAlloc ( void  )
static

◆ HSD_EnvelopeFree()

static void HSD_EnvelopeFree ( HSD_Envelope env)
static

◆ HSD_EnvelopeListFree()

static void HSD_EnvelopeListFree ( HSD_SList list)
static

◆ loadEnvelopeDesc()

static HSD_SList * loadEnvelopeDesc ( HSD_EnvelopeDesc **  edesc_p)
static

◆ HSD_ShapeSetFree()

static void HSD_ShapeSetFree ( HSD_ShapeSet shape_set)
static

◆ HSD_ShapeSetRemove()

static void HSD_ShapeSetRemove ( HSD_ShapeSet shape_set)
static

◆ loadShapeSetDesc()

static HSD_ShapeSet * loadShapeSetDesc ( HSD_ShapeSetDesc sdesc)
static

◆ PObjLoad()

static s32 PObjLoad ( HSD_PObj pobj,
HSD_PObjDesc desc 
)
static

◆ HSD_PObjLoadDesc()

HSD_PObj * HSD_PObjLoadDesc ( HSD_PObjDesc pobjdesc)

◆ HSD_PObjRemove()

void HSD_PObjRemove ( HSD_PObj pobj)

◆ HSD_PObjRemoveAll()

void HSD_PObjRemoveAll ( HSD_PObj pobj)

◆ HSD_PObjGetDefaultClass()

HSD_PObjInfo * HSD_PObjGetDefaultClass ( void  )

◆ HSD_PObjSetDefaultClass()

void HSD_PObjSetDefaultClass ( HSD_PObjInfo info)

◆ HSD_PObjAlloc()

HSD_PObj * HSD_PObjAlloc ( void  )

◆ HSD_PObjFree()

void HSD_PObjFree ( HSD_PObj pobj)

◆ resolveEnvelope()

static void resolveEnvelope ( HSD_SList list,
HSD_EnvelopeDesc **  edesc_p 
)
static

◆ HSD_PObjResolveRefs()

void HSD_PObjResolveRefs ( HSD_PObj pobj,
HSD_PObjDesc pdesc 
)

◆ HSD_PObjResolveRefsAll()

void HSD_PObjResolveRefsAll ( HSD_PObj pobj,
HSD_PObjDesc pdesc 
)

◆ HSD_ClearVtxDesc()

void HSD_ClearVtxDesc ( void  )

◆ setupArrayDesc()

static void setupArrayDesc ( HSD_VtxDescList desc_list)
static

◆ setupVtxDesc()

static void setupVtxDesc ( HSD_PObj pobj)
static

◆ setupShapeAnimArrayDesc()

static void setupShapeAnimArrayDesc ( HSD_VtxDescList desc_list)
static

◆ setupShapeAnimVtxDesc()

static void setupShapeAnimVtxDesc ( HSD_PObj pobj)
static

◆ get_shape_vertex_xyz()

static void get_shape_vertex_xyz ( HSD_ShapeSet shape_set,
int  shape_id,
int  arrayidx,
f32  dst[3] 
)
static

◆ get_shape_normal_xyz()

static void get_shape_normal_xyz ( HSD_ShapeSet shape_set,
int  shape_id,
int  arrayidx,
float  dst[3] 
)
static

◆ get_shape_nbt_xyz()

static void get_shape_nbt_xyz ( HSD_ShapeSet shape_set,
int  shape_id,
int  arrayidx,
float *  dst 
)
static

◆ interpretShapeAnimDisplayList()

static void interpretShapeAnimDisplayList ( HSD_PObj pobj,
float(*)  vertex[3],
float(*)  normal[3] 
)
static

◆ drawShapeAnim()

static void drawShapeAnim ( HSD_PObj pobj)
static

◆ HSD_PObjClearMtxMark()

void HSD_PObjClearMtxMark ( void *  obj,
u32  mark 
)

◆ HSD_PObjSetMtxMark()

void HSD_PObjSetMtxMark ( int  idx,
void *  obj,
u32  mark 
)

◆ HSD_PObjGetMtxMark()

void HSD_PObjGetMtxMark ( int  idx,
void **  obj,
u32 mark 
)

◆ GetSetupFlags()

static PObjSetupFlag GetSetupFlags ( HSD_JObj jobj,
u32  rendermode 
)
static

◆ SetupRigidModelMtx()

static void SetupRigidModelMtx ( HSD_PObj pobj,
Mtx  vmtx,
Mtx  pmtx,
u32  rendermode 
)
static

◆ SetupSharedVtxModelMtx()

static void SetupSharedVtxModelMtx ( HSD_PObj pobj,
Mtx  vmtx,
Mtx  pmtx,
u32  rendermode 
)
static
Todo:
Unused stack

◆ SetupEnvelopeModelMtx()

static void SetupEnvelopeModelMtx ( HSD_PObj pobj,
Mtx  vmtx,
Mtx  pmtx,
u32  rendermode 
)
static

◆ PObjSetupMtx()

static void PObjSetupMtx ( HSD_PObj pobj,
Mtx  vmtx,
Mtx  pmtx,
u32  rendermode 
)
static

◆ PObjDispSimplePrimitive()

static void PObjDispSimplePrimitive ( HSD_PObj pobj,
u32  rendermode 
)
static

◆ PObjDispShapeAnim()

static void PObjDispShapeAnim ( HSD_PObj pobj,
u32  rendermode 
)
static

◆ HSD_PObjDisp()

void HSD_PObjDisp ( HSD_PObj pobj,
Mtx  vmtx,
Mtx  pmtx,
u32  rendermode 
)

◆ PObjRelease()

static void PObjRelease ( HSD_Class o)
static

◆ PObjAmnesia()

static void PObjAmnesia ( HSD_ClassInfo info)
static

Variable Documentation

◆ hsdPObj

HSD_PObjInfo hsdPObj = { PObjInfoInit }

◆ default_class

HSD_PObjInfo* default_class = NULL
static

◆ vertex_buffer

f32(* vertex_buffer)[3] = NULL
static

◆ normal_buffer

f32(* normal_buffer)[3] = NULL
static

◆ vertex_buffer_size

u32 vertex_buffer_size = 0
static

◆ normal_buffer_size

u32 normal_buffer_size = 0
static

◆ prev_vtxdesclist_array

HSD_VtxDescList* prev_vtxdesclist_array = NULL
static

◆ prev_vtxdesc

HSD_VtxDescList* prev_vtxdesc = NULL
static

◆ obj

void* obj

◆ mark

u32 mark

◆ [struct]

struct { ... } mtx_mark[2]