summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/GSanimationObject.h20
-rw-r--r--include/GSblendObject.h19
-rw-r--r--include/GShierMemObject.h30
-rw-r--r--include/code_801DD5C8.h18
4 files changed, 81 insertions, 6 deletions
diff --git a/include/GSanimationObject.h b/include/GSanimationObject.h
new file mode 100644
index 0000000..206acf6
--- /dev/null
+++ b/include/GSanimationObject.h
@@ -0,0 +1,20 @@
+#ifndef POKEREVO_GSANIMATIONOBJECT_H
+#define POKEREVO_GSANIMATIONOBJECT_H
+
+#include "GShierMemObject.h"
+#include "code_801DD5C8.h"
+
+class GSanimationObject : public GShierMemObject
+{
+protected:
+ gUnkClass8* unk0;
+ gUnkClass7* unk4;
+public:
+ GSanimationObject(gUnkClass8* list);
+ ~GSanimationObject();
+ void func_801DD9C8(float p2);
+ gUnkClass8* func_801DDA94(u16 id);
+ void func_801DDABC(u16 id, u16 p3, float p4, float p5);
+};
+
+#endif //POKEREVO_GSANIMATIONOBJECT_H
diff --git a/include/GSblendObject.h b/include/GSblendObject.h
new file mode 100644
index 0000000..8d8499f
--- /dev/null
+++ b/include/GSblendObject.h
@@ -0,0 +1,19 @@
+#ifndef POKEREVO_GSBLENDOBJECT_H
+#define POKEREVO_GSBLENDOBJECT_H
+
+#include "GSanimationObject.h"
+#include "code_801DD5C8.h"
+
+class GSblendObject : public GSanimationObject
+{
+ gUnkClass7* unk8;
+ float unkC;
+public:
+ GSblendObject(gUnkClass8* list);
+ ~GSblendObject();
+ void func_801DDC84(float p2);
+ void func_801DDE4C(u16 id, u16 p3, float p4, float p5);
+ void func_801DDEA0(u16 id, u16 p3, float p4, float p5, float p6);
+};
+
+#endif //POKEREVO_GSBLENDOBJECT_H
diff --git a/include/GShierMemObject.h b/include/GShierMemObject.h
new file mode 100644
index 0000000..aaec6fb
--- /dev/null
+++ b/include/GShierMemObject.h
@@ -0,0 +1,30 @@
+#ifndef POKEREVO_GSHIERMEMOBJECT_H
+#define POKEREVO_GSHIERMEMOBJECT_H
+
+#include "code_801DAAE0.h"
+
+// TODO: determine file that defines this
+extern MEMHeapHandle lbl_8063E8F8;
+
+// Note: This is the root base class for various classes such as GScamera,
+// GSlight, GSmodel, etc. Instances of these classes seem to be new/deleted using an alternative set of
+// routines than the global new and delete, which may be defined inline here.
+
+class GShierMemObject
+{
+public:
+ void* operator new(size_t sz)
+ {
+ if (func_801DAB28())
+ return func_801DAC94(lbl_8063E8F8, sz);
+ else
+ return NULL;
+ }
+
+ void operator delete(void* ptr)
+ {
+ func_801DAD48(lbl_8063E8F8, ptr);
+ }
+};
+
+#endif //POKEREVO_GSHIERMEMOBJECT_H
diff --git a/include/code_801DD5C8.h b/include/code_801DD5C8.h
index 55499b2..8f7ace1 100644
--- a/include/code_801DD5C8.h
+++ b/include/code_801DD5C8.h
@@ -5,33 +5,39 @@
extern "C" {
#endif
-// TODO: identify data structures
+#include "GShierMemObject.h"
struct gUnkClass9
{
u8 pad[0xC];
- void (*unkC)(u32, gUnkClass9*, u32, float);
+ void (*unkC)(void*, gUnkClass9*, u32, float);
};
+// linked list node
+// size >= 0xC
struct gUnkClass8
{
- u8 pad[0x2];
+ u16 unk0; // id
u16 unk2;
gUnkClass9* unk4;
float unk8;
+ gUnkClass8* next;
};
-struct gUnkClass7
+struct gUnkClass7 : public GShierMemObject
{
- gUnkClass8* unk0;
+ gUnkClass8* unk0; // linked list head
u16 unk4;
u16 unk6;
float unk8;
float unkC;
+
+ gUnkClass7() : unk0(NULL), unk4(0), unk6(0xC), unk8(1.0f), unkC(0.0f) { }
+ ~gUnkClass7() { }
};
void func_801DD5C8(gUnkClass7* p1, float p2);
-void func_801DD7FC(gUnkClass7* p1, u32 p2, u32 p3);
+void func_801DD7FC(gUnkClass7* p1, void* p2, u32 p3);
#ifdef __cplusplus
}