summaryrefslogtreecommitdiff
path: root/include/g3dhax.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/g3dhax.h')
-rw-r--r--include/g3dhax.h168
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
+