diff options
Diffstat (limited to '')
| -rw-r--r-- | include/common.h | 2 | ||||
| -rw-r--r-- | include/daEnDosun_c.h | 74 | ||||
| -rw-r--r-- | include/daEnemy_c.h | 30 | ||||
| -rw-r--r-- | include/g3dhax.h | 16 | ||||
| -rwxr-xr-x | include/game.h | 114 | 
5 files changed, 227 insertions, 9 deletions
| diff --git a/include/common.h b/include/common.h index e212eb4..a070a56 100644 --- a/include/common.h +++ b/include/common.h @@ -40,7 +40,7 @@ typedef f32 ROMtx[4][3];  typedef f32 (*ROMtxPtr)[3];
  typedef struct { f32 x, y; } VEC2, Vec2, *Vec2Ptr, Point2d, *Point2dPtr;
 -typedef struct { f32 x, y, z; } VEC3, Vec, *VecPtr, Point3d, *Point3dPtr;
 +typedef struct { f32 x, y, z; } VEC3, Vec, Vec3, *VecPtr, Point3d, *Point3dPtr;
  typedef struct { s16 x; s16 y; s16 z; }S16Vec, *S16VecPtr;
  typedef struct { f32 x, y, z, w; } Quaternion, *QuaternionPtr, Qtrn, *QtrnPtr;
 diff --git a/include/daEnDosun_c.h b/include/daEnDosun_c.h new file mode 100644 index 0000000..49acabe --- /dev/null +++ b/include/daEnDosun_c.h @@ -0,0 +1,74 @@ +#ifndef __DOSUN_H +#define __DOSUN_H + +#include <daEnemy_c.h> + +/* All Addresses NTSCv2 */ + +class daEnDosun_c : public daEnemy_c { +public: +	//vtable			// 80ae8268 +	//ctor - Normal		// 809f5ad0 +	//ctor - Big		// 809f5b60 +	int onCreate();		// 809f5bf0 +	int onDelete();		// 809f5fd0 +	int onExecute();	// 809f5e50 +	int onDraw();		// 809f5ea0 +	//~daEnBigDosun_c();	// 809f7140 +	void kill();		// 809f7110 +	void killedByLevelClear();		// 809f6810 +	void collisionCat3_StarPower(ActivePhysics* apThis, ActivePhysics *apOther);	// 809f6050 +	void _vf108(ActivePhysics* apThis, ActivePhysics* apOther);	// 809f5fe0 +	void collisionCatD_GroundPound(ActivePhysics* apThis, ActivePhysics* apOther);	// 809f7130 +	void _vf110(ActivePhysics* apThis, ActivePhysics* apOther);	// 809f6090 +	void collisionCat7_WMWaggleWater(ActivePhysics* apThis, ActivePhysics* apOther);	// 809f7120 +	void collisionCat9_RollingObject(ActivePhysics* apThis, ActivePhysics* apOther);	// 809f70a0 +	void collisionCat1_Fireball_E_Explosion(ActivePhysics* apThis, ActivePhysics* apOther);	// 809f70e0 +	bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics* apThis, ActivePhysics* apOther);	// 809f70b0 +	void _vf144(int something);	// 809f6120 +	//State Functions +	void DieFall_Begin();	// 809f6e00 +	void DieFall_Execute();	// 809f6f10 +	void DieFall_End();		// 809f6f00 +	void Ice_Begin();		// 809f7020 +	void Ice_Execute();		// 809f7090 +	void Ice_End();			// 809f7080 +	bool CreateIceActors();	// 809f6260 + +	mHeapAllocator_c allocator;		// _524 +	nw4r::g3d::ResFile resFile;		// _540 +	m3d::mdl_c bodyModel;			// _544 +	m3d::anmVis_c anmVis;			// _584 +	//u8 collision_struct[4];			// _5BC +	u32 collision_struct;			// _5BC +	u32 _5C0, _5C4, _5C8; +	float posXrelated_1;			// _5CC +	u32 bigOrSmall;					// _5D0 0=small,1=big +	u32 holdsFromSettings;			// _5D4 +	u16 puruMoveCounter;			// _5D8 +	u16 _5DA; +	u32 countdownTimer;				// _5DC +	u32 anotherCounter;				// _5E0 +	float posXrelated_2;			// _5E4 +	float posYrelated_1;			// _5E8 +	u32 _5EC; + +	/* don't have params yet */ +	void setupBodyModel();			// 809f63f0 +	void s_809F6530();				// 809f6530 +	void spawnEffects();			// 809f66a0 + +	USING_STATES(daEnDosun_c); +	REF_NINTENDO_STATE(UpWait); +	REF_NINTENDO_STATE(DownMoveWait); +	REF_NINTENDO_STATE(PuruMove); +	REF_NINTENDO_STATE(DownMove_Kameck); +	REF_NINTENDO_STATE(DownMove); +	REF_NINTENDO_STATE(DownWait); +	REF_NINTENDO_STATE(UpMove); +	REF_NINTENDO_STATE(DieFall); +	REF_NINTENDO_STATE(Ice); +}; + +#endif + diff --git a/include/daEnemy_c.h b/include/daEnemy_c.h new file mode 100644 index 0000000..36fd574 --- /dev/null +++ b/include/daEnemy_c.h @@ -0,0 +1,30 @@ +#ifndef __ENEMY_H +#define __ENEMY_H + +#include <common.h> +#include <game.h> +#include <g3dhax.h> + +/* All Addresses NTSCv2 */ + +class daEnemy_c : public dEn_c { +public: +	int _vf58();		// 809a54e0 // daEnAkoya_c +	void _vf5C();		// 809a54d0 // daEnAkoya_c +	int _vf68();		// 809a5520	// daEnAkoya_c +	//u8* _vf6C();		// 809a3550	// daEnAkoya_c +	//FIXME +	u8* ptrToWhichPlayer();	// 809a3550	// daEnAkoya_c +	int _vf74();		// 809a5510	// dActorState_c +	void _vf7C();		// 809a5500	// dActorState_c +	void _vfB8();		// 809a54f0	// dActorState_c +	void _vf228();		// 809a5560 // smthg w/InitlScale +	void _vf23C();		// 809a5550 // nullsub +	void _vf240();		// 809a5540 // nullsub +	int _vf244();		// 809a5530 // return 0; + +	void setupBodyModel();			//FIXME +}; + +#endif + diff --git a/include/g3dhax.h b/include/g3dhax.h index d4aa9a0..f13aab3 100644 --- a/include/g3dhax.h +++ b/include/g3dhax.h @@ -29,6 +29,7 @@ namespace nw4r {  		};  		class ResAnmChr { public: void* data; ResAnmChr(void *p = NULL) { data = p; } }; +		class ResAnmVis { public: void* data; ResAnmVis(void *p = NULL) { data = p; } };  		class ResAnmTexPat { public: void* data; ResAnmTexPat(void *p = NULL) { data = p; } };  		class ResAnmTexSrt { public: void* data; ResAnmTexSrt(void *p = NULL) { data = p; } }; @@ -49,7 +50,7 @@ namespace nw4r {  				void * /*ResTex*/ GetResTex(const ResName n) const;  				void * /*ResTex*/ GetResTex(u32 idx) const;  				ResAnmChr GetResAnmChr(const char *str) const; -				void * /*ResAnmVis*/ GetResAnmVis(const char *str) const; +				ResAnmVis GetResAnmVis(const char *str) const;  				void * /*ResAnmClr*/ GetResAnmClr(const char *str) const;  				ResAnmTexPat GetResAnmTexPat(const char *str) const;  				ResAnmTexSrt GetResAnmTexSrt(const char *str) const; @@ -279,7 +280,7 @@ namespace m3d {  			// 28 might be Max Frame?  			float _28, _2C, currentFrame; -			u8 _34; +			u8 _34;		// animation group??  	};  	class anmChr_c : public fanm_c { @@ -293,6 +294,17 @@ namespace m3d {  			void bind(/*b*/mdl_c *model, nw4r::g3d::ResAnmChr anmRes, int unk);  	}; +	class anmVis_c : public fanm_c { +		public: +			~anmVis_c(); +			int _vf0C(); + +			bool setup(nw4r::g3d::ResMdl modelRes, nw4r::g3d::ResAnmVis anmRes, +					mAllocator_c *allocator, u32 *sizeOutPtr); + +			void bind(/*b*/mdl_c *model, nw4r::g3d::ResAnmVis anmRes, int unk); +	}; +  	class anmTexPat_c : public banm_c {  		public:  			class child_c : public fanm_c { diff --git a/include/game.h b/include/game.h index 0fa72c9..5fd71d5 100755 --- a/include/game.h +++ b/include/game.h @@ -1232,6 +1232,107 @@ public:  };
 +class dStageActor_c;	// forward declaration
 +class collisionMgr_c {
 +public:
 +	collisionMgr_c();
 +	virtual ~collisionMgr_c();
 +
 +	//FIXME params and returns and add more
 +	void Clear1();
 +	void Clear2();
 +	void Init(dStageActor_c*,u8*,u8*,u8*);
 +
 +	void Clear3();
 +	int CollidedWithTile();
 +
 +	dStageActor_c* owner;
 +	void* struct1_ptr;
 +	void* struct2_ptr;
 +	void* some_ptr;
 +	Vec3* parent_pos_ptr;
 +	Vec3* parent_last_pos_ptr;
 +	Vec3* parent_speed_ptr;
 +	Vec3 someVelocityThing;
 +	float xDeltaMaybe;
 +	float yDeltaMaybe;
 +	u8 _34[24];				//FIXME
 +	float someFloat;
 +	void* class2DC_ptr;		//FIXME
 +	void* another_ptr;
 +	void* ptr_to_ptr_to_underneath_actor;
 +	u8 _5C[44];				//FIXME
 +	u32 bitfield_for_checks;
 +	u32 bitfield_backup;
 +	u32 _90, _94;
 +	u8 which_player_of_parent;
 +	u8 which_controller;
 +	u16 _9A, _9C;
 +	u8 _9E[2];				//FIXME
 +	u32 another_bitfield;
 +	u8 _A4;
 +	u8 _A5[3];				//FIXME
 +	u32 yet_another_bitfield;
 +	u8 _AC;
 +	u8 _AD[3];				//FIXME
 +	u32 directional_bitfields[2];	// left right
 +	u8 flagsB8;
 +	u8 flagsB9;
 +	u8 _BA[2];				//FIXME
 +	u8 _BC, _BD;
 +	u16 _BE;
 +	u8 _C0, _C1;
 +	u16 _C2;
 +	u8 _C4[4];				//FIXME
 +	u16 _C8;
 +	u8 _CA[22];				//FIXME
 +	u8 _E0, _E1, _E2;
 +	u8 _E3;					//FIXME
 +	u8 _E4, _E5;
 +	u8 _E6[2];				//FIXME
 +	u32 current_layer_ptr;
 +	u8 current_layer;
 +	u8 _ED[3];				//FIXME
 +};
 +
 +class freezeMgr_c {
 +public:
 +	u32 some_count;
 +	u32 ice_timer1;
 +	u32 ice_timer2;
 +	u32 _mstate;				//0=not,1=frozen,3=die_coin
 +	u32 _10;
 +	u32 _nstate;				//1=countdown,2=meltedNormal
 +	u32 spawns_coin;			//1=delete,3=coin
 +	u32 _1C_timerLenType;
 +	u32 _20_defaultTimerLenType;
 +	u32 _24;
 +	u32 _28;
 +	u32 perm_freeze;
 +	u32 _30;
 +	u32 actorIds[12];
 +	void* owner;		// _64
 +
 +	freezeMgr_c();
 +	~freezeMgr_c();
 +	//FIXME add params and returns
 +	void doSomethingCool1();
 +	void doSomethingCool2();
 +	void setSomething(u32,u32,u32);
 +	void Create_ICEACTORs(void*,int);
 +	void Delete_ICEACTORs();
 +	void SetIceTimer_pt1();
 +	void SetIceTimer_pt2();
 +	void CheckIceTimer_lte_Value();
 +	void doSomethingCool3();
 +	void doSomethingCool4();
 +	void doSomethingCool5();
 +	void doSomethingCool6();
 +	void DoMeltNormal();
 +	void doSomethingCool7();
 +	void CheckCountdownTimer();
 +};
 +
  class fBase_c {
  public:
  	u32 id;
 @@ -1339,7 +1440,7 @@ public:  	Vec pos;
  	Vec last_pos;
  	Vec pos_delta;
 -	Vec _D0;
 +	Vec pos_delta2;
  	Vec scale;
  	Vec speed;
  	Vec max_speed;
 @@ -1370,8 +1471,7 @@ public:  	float _140;
  	u32 _144;
  	ActivePhysics aPhysics;
 -	u8 classAt1EC[236];
 -	u32 _2D8;
 +	collisionMgr_c collMgr;
  	u8 classAt2DC[0x34];
  	u32 _310, _314;
  	float spriteSomeRectX, spriteSomeRectY;
 @@ -1426,7 +1526,7 @@ public:  	virtual void _vfA4(void *other); // AcPy/PlBase? similar to vf94 but not quite the same
  	virtual float _vfA8(void *other); // AcPy/PlBase? what DOES this do...? does a bit of float math
  	virtual void _vfAC(void *other); // copies somethingRelatedToScale into scale, then multiplies scale by vfA8's return
 -	virtual void _vfB0(); // plays Wm_en_burst_s at actor position
 +	virtual void killedByLevelClear(); // plays Wm_en_burst_s at actor position
  	virtual void _vfB4(); // params unknown. nullsub
  	virtual void _vfB8(); // params unknown. nullsub
  	virtual void _vfBC(); // params unknown. nullsub
 @@ -1512,7 +1612,9 @@ public:  	u32 _474, _478;
  	dEn_c *_47C;
  	u32 _480;
 -	u8 classAt484[0x4EC - 0x484];
 +	//FIXME verify that size fits
 +	//u8 classAt484[0x4EC - 0x484];
 +	freezeMgr_c frzMgr;
  	u32 _4EC;
  	float _4F0, _4F4, _4F8;
  	u32 flags_4FC;
 @@ -1634,7 +1736,7 @@ public:  	virtual void _vf220(void *other); // some type of actor, PlBase? calls vf3F4 on other with r4=this, r5=0
  	virtual void _vf224(); // stores a couple of values into the struct at 464
  	virtual void _vf228(); // more fun stuff with 464 and floats
 -	virtual bool _vf22C(); // does stuff involving ICE_ACTORs and arrays
 +	virtual bool CreateIceActors(); // does stuff involving ICE_ACTORs and arrays
  	virtual void _vf230(); // "relatedToPlayerOrYoshiCollision" apparently. nullsub, params unknown for now.
  	virtual void _vf234(); // nullsub, params unknown
  	virtual void _vf238(); // calls vf34 on class394, params unknown
 | 
