diff options
Diffstat (limited to '')
| -rw-r--r-- | include/bufferoption.h | 33 | ||||
| -rw-r--r-- | include/g3dhax.h | 17 | ||||
| -rwxr-xr-x | include/game.h | 54 | ||||
| -rw-r--r-- | kamek_pal.x | 3 | 
4 files changed, 105 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
 diff --git a/kamek_pal.x b/kamek_pal.x index 8c337d3..9443a41 100644 --- a/kamek_pal.x +++ b/kamek_pal.x @@ -769,6 +769,7 @@ SECTIONS {  	InsertIntoScene__Q24nw4r3g3dFPv = 0x80164F90;  	GetResMat__Q34nw4r3g3d6ResMdlCFPCc = 0x8023B8A0; +	GetResNode__Q34nw4r3g3d6ResMdlCFPCc = 0x8023B340;  	DisableIndirectTexturing__3m3dFv = 0x80165090;  	InitTexObjWithResTex__3m3dFP9_GXTexObjPv14_GXTexWrapMode14_GXTexWrapMode12_GXTexFilter12_GXTexFilter = 0x802C7F60; @@ -796,7 +797,9 @@ SECTIONS {  	calcWorld__Q23m3d5mdl_cFb = 0x8016A2E0;  	bindAnim__Q23m3d5mdl_cFPQ23m3d6banm_cf = 0x8016a0c0;  	vf1C__Q3m3d5mdl_cFv = 0x8016a080; +	getMatrixForNode__Q23m3d5mdl_cFUiPA4_f = 0x801682C0; +	SetCullModeForMaterial__FPQ23m3d5mdl_ci11_GXCullMode = 0x8000D190;  	SetupTextures_Player__FPQ23m3d5mdl_ci = 0x800B3E50;  	SetupTextures_Map__FPQ23m3d5mdl_ci = 0x800B3F50;  	SetupTextures_Boss__FPQ23m3d5mdl_ci = 0x800B4050; | 
