diff options
Diffstat (limited to '')
| -rw-r--r-- | src/bossPlayerClown.cpp | 35 | 
1 files changed, 19 insertions, 16 deletions
diff --git a/src/bossPlayerClown.cpp b/src/bossPlayerClown.cpp index dbf2ff9..15aa2dd 100644 --- a/src/bossPlayerClown.cpp +++ b/src/bossPlayerClown.cpp @@ -5,9 +5,9 @@  #include "boss.h" -#define CLOWN_MODEL(clown) ((m3d::mdl_c*)( ((u32)(clown)) + 0xFD0 )) -#define playerOccupying (((u32)(clown)) + 0x738 ) -// #define allocator ((mHeapAllocator_c*)(((u32)(clown)) + 0x524 )) +#define cPlayerOccupying (*(dStageActor_c**)(((u32)(clown)) + 0x738 )) +#define cAllocator ((mHeapAllocator_c*)(((u32)(clown)) + 0xFD0 )) +#define cModel ((m3d::mdl_c*)( ((u32)(clown)) + 0xFEC ))  extern "C" int PClownCarExecute(dEn_c *clown); @@ -22,11 +22,11 @@ int CConDraw(dEn_c *clown) {  	short newrot = 0x4000;  	clown->matrix.applyRotationYXZ(&clown->rot.x, &newrot, &clown->rot.z); -	// CLOWN_MODEL(clown)->setDrawMatrix(clown->matrix); -	// CLOWN_MODEL(clown)->setScale(&clown->scale); -	// CLOWN_MODEL(clown)->calcWorld(false); +	cModel->setDrawMatrix(clown->matrix); +	cModel->setScale(&clown->scale); +	cModel->calcWorld(false); -	// CLOWN_MODEL(clown)->scheduleForDrawing(); +	cModel->scheduleForDrawing();  	return PClownCarDraw(clown); @@ -46,23 +46,22 @@ void CCafterCreate(dEn_c *clown, u32 param) {  	OSReport("AfterCreate");  	// setup the model  	nw4r::g3d::ResFile resFile; -	mHeapAllocator_c allocator;  	OSReport("defined"); -	allocator.link(-1, GameHeaps[0], 0, 0x20); +	cAllocator->link(-1, GameHeaps[0], 0, 0x20);  	OSReport("allocated");  	resFile.data = getResource("koopaJr_clown_ply", "g3d/cannon.brres");  	OSReport("resource");  	nw4r::g3d::ResMdl mdl = resFile.GetResMdl("Cannon");  	OSReport("model"); -	CLOWN_MODEL(clown)->setup(mdl, &allocator, 0x224, 1, 0); +	cModel->setup(mdl, cAllocator, 0x224, 1, 0);  	OSReport("setup"); -	SetupTextures_MapObj(CLOWN_MODEL(clown), 0); +	SetupTextures_MapObj(cModel, 0);  	OSReport("lightmaps"); -	allocator.unlink(); +	cAllocator->unlink();  	OSReport("unlinked");  	// Original AfterCreate @@ -71,7 +70,7 @@ void CCafterCreate(dEn_c *clown, u32 param) {  void CConExecuteMove(dEn_c *clown) { -	u8 player = ((dStageActor_c *)playerOccupying)->which_player; +	u8 player = cPlayerOccupying->which_player;  	// OSReport("Angle = %x, %x, %x", (GetSpecificPlayerActor(player))->rot.y, (GetSpecificPlayerActor(player))->rot.x, (GetSpecificPlayerActor(player))->rot.z);  	// OSReport("Clown = %x, %x, %x", (clown)->rot.y, (clown)->rot.x, (clown)->rot.z); @@ -108,20 +107,24 @@ void CConExecuteMove(dEn_c *clown) {  extern "C" m3d::mdl_c *__ct__Q23m3d5mdl_cFv(m3d::mdl_c *mdl); +extern "C" mHeapAllocator_c *__ct__16mHeapAllocator_cFv(mHeapAllocator_c *al);  extern "C" dEn_c *__ct__20daJrClownForPlayer_cFv(dEn_c *clown);  dEn_c *newClownCtor(dEn_c *clown) {  	OSReport("ctor");  	__ct__20daJrClownForPlayer_cFv(clown); -	__ct__Q23m3d5mdl_cFv(CLOWN_MODEL(clown)); +	__ct__16mHeapAllocator_cFv(cAllocator); +	__ct__Q23m3d5mdl_cFv(cModel);  	return clown;  }  extern "C" void __dt__Q23m3d5mdl_cFv(m3d::mdl_c *mdl, u32 willDelete); -extern "C" void __dt__20daJrClownForPlayer_cFv(dEn_c *mdl, u32 willDelete); +extern "C" void __dt__16mHeapAllocator_cFv(mHeapAllocator_c *al, u32 willDelete); +extern "C" void __dt__20daJrClownForPlayer_cFv(dEn_c *clown, u32 willDelete);  void newClownDtor(dEn_c *clown, u32 willDelete) { -	__dt__Q23m3d5mdl_cFv(CLOWN_MODEL(clown), 0xFFFFFFFF); +	__dt__Q23m3d5mdl_cFv(cModel, 0xFFFFFFFF); +	__dt__16mHeapAllocator_cFv(cAllocator, 0xFFFFFFFF);  	__dt__20daJrClownForPlayer_cFv(clown, willDelete);  }  | 
