diff options
Diffstat (limited to 'include/g3dhax.h')
-rw-r--r-- | include/g3dhax.h | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/include/g3dhax.h b/include/g3dhax.h new file mode 100644 index 0000000..c3aeaef --- /dev/null +++ b/include/g3dhax.h @@ -0,0 +1,168 @@ +// nw4r::g3d wrapper + +namespace nw4r { +namespace g3d { + +class ResName { +public: + const char *name; + + ResName(const char *p = NULL) { + name = p; + } +}; + +class ResFile { +public: + void * /*ResFileData*/ data; + + ResFile(void *p = NULL) { + data = p; + } + + void Init(); + bool CheckRevision() const; + + void * /*ResMdl*/ GetResMdl(const char *str) const; + void * /*ResPltt*/ GetResPltt(const ResName n) const; + void * /*ResTex*/ GetResTex(const char *str) const; + void * /*ResTex*/ GetResTex(const ResName n) const; + void * /*ResTex*/ GetResTex(u32 idx) const; + void * /*ResAnmChr*/ GetResAnmChr(const char *str) const; + void * /*ResAnmVis*/ GetResAnmVis(const char *str) const; + void * /*ResAnmClr*/ GetResAnmClr(const char *str) const; + void * /*ResAnmTexPat*/ GetResAnmTexPat(const char *str) const; + void * /*ResAnmTexSrt*/ GetResAnmTexSrt(const char *str) const; + void * /*ResAnmScn*/ GetResAnmScn(const char *str) const; + + bool Bind(ResFile rhs); +}; + +void *__ScnMdlSimple__Construct( + void * /*MEMAllocator*/ pHeap, + u32 *pSize, + void * /*ResMdl*/ mdl, + int nView = 1); + + +void *__ScnMdl__Construct( + void * /*MEMAllocator*/ pHeap, + u32 *pSize, + void * /*ResMdl*/ mdl, + u32 bufferOption, + int nView = 1); + + +void *__AnmObjChrRes__Construct( + void * /*MEMAllocator*/ pHeap, + u32 *pSize, + void * /*ResAnmChr*/ resAnm, + void * /*ResMdl*/ resMdl, + bool bHasCache); + + +void *__AnmObjVisRes__Construct( + void * /*MEMAllocator*/ pHeap, + u32 *pSize, + void * /*ResAnmVis*/ resAnm, + void * /*ResMdl*/ resMdl); + + +void *__AnmObjTexPatRes__Construct( + void * /*MEMAllocator*/ pHeap, + u32 *pSize, + void * /*ResAnmTexPat*/ resAnm, + void * /*ResMdl*/ resMdl, + bool bHasCache); + + +void *__AnmObjTexSrtRes__Construct( + void * /*MEMAllocator*/ pHeap, + u32 *pSize, + void * /*ResAnmTexSrt*/ resAnm, + void * /*ResMdl*/ resMdl, + bool bHasCache); + + +void *__AnmObjMatClrRes__Construct( + void * /*MEMAllocator*/ pHeap, + u32 *pSize, + void * /*ResAnmMatClr*/ resAnm, + void * /*ResMdl*/ resMdl, + bool bHasCache); + + +void *__AnmObjShpRes__Construct( + void * /*MEMAllocator*/ pHeap, + u32 *pSize, + void * /*ResAnmShp*/ resAnm, + void * /*ResMdl*/ resMdl, + bool bHasCache); + + + +bool InsertIntoScene(void *scnObj); // 80164F90 + +extern void *g3dMemAllocator; // 8042A6A8 + +inline void *ConstructScnMdlSimple(void *mdl, int nView = 1) { + return __ScnMdlSimple__Construct(g3dMemAllocator, 0, mdl, nView); +} + +inline void *ConstructScnMdl(void *mdl, u32 bufferOption, int nView = 1) { + return __ScnMdl__Construct(g3dMemAllocator, 0, mdl, bufferOption, nView); +} + + + +} +} + + +class mHeapAllocator_c { // Actually that weird subclass. INCOMPLETE!! +public: + char data1[0x10]; + + mHeapAllocator_c(); + virtual ~mHeapAllocator_c(); + virtual void *alloc(u32 size); + virtual void free(void *block); + + bool link(s32 size, void *heap, const char *name, int align); + u32 unlink(); + + char data2[8]; +}; + +namespace m3d { + + class mdl_c { + public: + mdl_c(); + virtual ~mdl_c(); + + virtual void _vf0C(); + virtual void _vf10(); + virtual bool scheduleForDrawing(); + virtual void bindAnim(void *anim, float boo); + virtual void _vf1C(); + + bool setup(void *model, void *allocator, u32 bufferOption, int nView, u32 *size); + void oneSetupType(); + void sub_80064BF0(); + + void setDrawMatrix(const Mtx matrix); + + char data[0x3C]; + }; +}; + + + +void SetupTextures_Player(m3d::mdl_c *model, int sceneID); // 800B3E50 +void SetupTextures_Map(m3d::mdl_c *model, int sceneID); // 800B3F50 +void SetupTextures_Boss(m3d::mdl_c *model, int sceneID); // 800B4050 +void SetupTextures_Enemy(m3d::mdl_c *model, int sceneID); // 800B4170 +void SetupTextures_MapObj(m3d::mdl_c *model, int sceneID); // 800B42B0 +void SetupTextures_Item(m3d::mdl_c *model, int sceneID); // 800B43D0 + |