summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--include/bufferoption.h33
-rw-r--r--include/g3dhax.h17
-rwxr-xr-xinclude/game.h54
3 files changed, 102 insertions, 2 deletions
diff --git a/include/bufferoption.h b/include/bufferoption.h
new file mode 100644
index 0000000..62bfbb6
--- /dev/null
+++ b/include/bufferoption.h
@@ -0,0 +1,33 @@
+#ifndef BUFFEROPTION_H
+#define BUFFEROPTION_H
+enum BufferOption
+{
+ BUFFER_RESTEXOBJ = 0x00000001,
+ BUFFER_RESTLUTOBJ = 0x00000002,
+ BUFFER_RESTEXSRT = 0x00000004,
+ BUFFER_RESCHAN = 0x00000008,
+ BUFFER_RESGENMODE = 0x00000010,
+ BUFFER_RESMATMISC = 0x00000020,
+ BUFFER_VIS = 0x00000040,
+
+ BUFFER_RESPIX = 0x00000080,
+ BUFFER_RESTEVCOLOR = 0x00000100,
+ BUFFER_RESINDMTXANDSCALE = 0x00000200,
+ BUFFER_RESTEXCOORDGEN = 0x00000400,
+ BUFFER_RESTEV = 0x00000800,
+
+ BUFFER_VTXPOS = 0x00001000,
+ BUFFER_VTXNRM = 0x00002000,
+ BUFFER_VTXCLR = 0x00004000,
+
+ ALWAYS_BUFFER_ANM_SHP = 0x01000000,
+
+ ANM_MATCLR = BUFFER_RESTEVCOLOR | BUFFER_RESCHAN,
+ ANM_TEXPAT = BUFFER_RESTEXOBJ | BUFFER_RESTLUTOBJ,
+ ANM_TEXSRT = BUFFER_RESTEXSRT,
+ ANM_VIS = BUFFER_VIS,
+ ANM_SHP = BUFFER_VTXPOS | BUFFER_VTXNRM | BUFFER_VTXCLR,
+ ANM_VTX = ANM_SHP,
+ ANM_ALL = ANM_MATCLR | ANM_TEXPAT | ANM_TEXSRT | ANM_VIS | ANM_VTX
+};
+#endif /* BUFFEROPTION_H */
diff --git a/include/g3dhax.h b/include/g3dhax.h
index 551af40..8a2063a 100644
--- a/include/g3dhax.h
+++ b/include/g3dhax.h
@@ -17,6 +17,14 @@ namespace nw4r {
}
};
+ class ResNode {
+ public:
+ void* data;
+ ResNode(void *p = NULL) { data = p; }
+
+ u32 GetID() { return data ? (*((u32*)( ((u32)data) + 0xC ))) : 0; }
+ };
+
class ResMdl {
public:
void * /*ResMdlData*/ data;
@@ -26,6 +34,8 @@ namespace nw4r {
}
void * /*ResMat*/ GetResMat(const char *str) const;
+
+ ResNode GetResNode(const char *str) const;
};
class ResAnmChr { public: void* data; ResAnmChr(void *p = NULL) { data = p; } };
@@ -254,9 +264,12 @@ namespace m3d {
void setScale(Vec *scale);
void calcWorld(bool unk);
+ bool getMatrixForNode(u32 nodeID, MtxPtr matrix); // bmdl_c 801682C0
+
void bindAnim(banm_c *animation, float unk);
- char data[0x3C];
+ void *scnObj;
+ char data[0x38];
};
@@ -437,5 +450,7 @@ 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
+#include <bufferoption.h>
+
#endif
diff --git a/include/game.h b/include/game.h
index 51f8faf..af235b9 100755
--- a/include/game.h
+++ b/include/game.h
@@ -10,6 +10,7 @@
#include <rvl/arc.h>
#define offsetof(type, member) ((u32) &(((type *) 0)->member))
+#include <g3dhax.h>
template <typename T>
inline T min(T one, T two) { return (one < two) ? one : two; }
@@ -2233,6 +2234,8 @@ public:
char yetAnotherAnimation[40]; // actually m3d::banm_c afaics -- is it even 40 bytes?
Vec HeadPos; // maybe not an array
Vec HatPos; // maybe not an array
+ Mtx finalMatrix;
+ Mtx firstMatrix;
Vec headOffs;
Vec pos;
u8 player_id_1;
@@ -2264,6 +2267,11 @@ public:
u32 _204;
u32 _208;
+ class ModelThing {
+ public:
+ m3d::mdl_c body, head;
+ };
+
virtual int _vf0C(); // 800D6DA0
virtual void prepare(); // 800D5720
virtual void finaliseModel(); // 800D5740
@@ -2271,7 +2279,7 @@ public:
virtual void update3DStuff(); // 800D5760
virtual void _vf20(); // 800D6D90
virtual void draw(); // 800D5C70
- virtual int getCurrentModel(); // 800D5870
+ virtual ModelThing *getCurrentModel(); // 800D5870
virtual int getCurrentResFile(); // 800D62D0
virtual void setPowerup(u8 powerup_id); // 800D5730
virtual void setPowerupTexture(); // 800D5CC0
@@ -2310,6 +2318,48 @@ public:
};
+class dPlayerModel_c : public dPlayerModelBase_c {
+ public:
+ // methods? what do you need those for...
+ // (not bothering with them either)
+ nw4r::g3d::ResFile modelResFile, animResFile1, animResFile2;
+
+ u8 effectClass0[296];
+ u8 effectClass1[296];
+
+ ModelThing models[4];
+
+ // maybe these are mAllocator_c?
+ u8 body_switch_animation[12];
+ mHeapAllocator_c allocator0;
+ u32 anim0linked;
+
+ u8 anim1[12];
+ mHeapAllocator_c allocator1;
+ u32 anim1linked;
+
+ u8 headSwitchAnimation[12];
+ mHeapAllocator_c allocator2;
+ u32 anim2linked;
+
+ u8 animForProp[12];
+ mHeapAllocator_c allocator3;
+ u32 anim3linked;
+
+ u8 animForPeng[12];
+ mHeapAllocator_c allocator4;
+ u32 anim4linked;
+
+ u8 anim5[12];
+ mHeapAllocator_c allocator5;
+ u32 anim5linked;
+
+ u32 currentPlayerModelID;
+ u32 lastPlayerModelID;
+ // tons of crap more, don't feel like fixing this up atm
+};
+
+
class dPlayerModelHandler_c {
public:
dPlayerModelHandler_c(u8 player_id); // 800D6DB0
@@ -2943,6 +2993,8 @@ namespace mHeap {
extern void *gameHeaps[3];
};
+void WriteNumberToTextBox(int *number, const int *fieldLength, nw4r::lyt::TextBox *textBox, bool unk); // 800B3B60
+
#endif