diff options
| author | Stephen Simpson <megazig@gmail.com> | 2011-10-15 19:45:54 -0500 | 
|---|---|---|
| committer | Stephen Simpson <megazig@gmail.com> | 2011-10-15 19:45:54 -0500 | 
| commit | 85e0eb418a06e751653a4977464ff5ed92561768 (patch) | |
| tree | 15a76fba669bdcd93be0fca3e4ae8d37707d3355 | |
| parent | 41e9d139fb839ad35ad61c57dfc239d648265980 (diff) | |
| parent | d287567cb54f4ba68633e3580e5e39a38a533604 (diff) | |
| download | kamek-85e0eb418a06e751653a4977464ff5ed92561768.tar.gz kamek-85e0eb418a06e751653a4977464ff5ed92561768.zip | |
Merge branch 'level-select' of ssh://treeki.shacknet.nu:30000/Kamek into level-select
Diffstat (limited to '')
| -rwxr-xr-x | include/stage.h | 59 | ||||
| -rw-r--r-- | kamek_pal.x | 5 | ||||
| -rw-r--r-- | soundPlayer.yaml | 1 | ||||
| -rw-r--r-- | src/bossFuzzyBear.cpp | 156 | ||||
| -rw-r--r-- | src/bossRamboo.cpp | 1 | ||||
| -rw-r--r-- | src/soundPlayer.S | 13 | 
6 files changed, 191 insertions, 44 deletions
| diff --git a/include/stage.h b/include/stage.h index c89c7dc..39d1349 100755 --- a/include/stage.h +++ b/include/stage.h @@ -57,7 +57,66 @@ enum StageGroup {  	Peach = 10,
  	Invalid = 11
  };
 + + +//enum SceneTypes { +//	BOOT = 0,
 +//	AUTO_SELECT = 1,
 +//	SELECT = 2,
 +//	WORLD_MAP = 3,			*
 +//	WORLD_9_DEMO = 4,
 +//	STAGE = 5,
 +//	RESTART_CRSIN = 6,		*
 +//	CRSIN = 7,
 +//	MOVIE = 8,				*
 +//	GAMEOVER = 9,
 +//	GAME_SETUP = 10,		*
 +//	MULTI_PLAY_COURSE_SELECT = 11
 +//}	 + + +enum SceneParameters { +	SOMETHING_TODO_WITH_MOVIE = 1, +	SOMETHING_TODO_WITH_MOVIE2 = 2, +	SOMETHING_TODO_WITH_MOVIE3 = 3 +}; + +enum PowerupStoreTypes { +	BEAT_LEVEL = 0, // Keeps powerups +	EXIT_LEVEL = 1, // Loses powerups, resets to previous state +	LOSE_LEVEL = 2  // Loses everything +}; + + +enum Wipes { +	FADE_OUT = 0, +	CIRCLE_WIPE = 1, +	BOWSER_WIPE = 2, +	GOO_WIPE_DOWN = 3,	 +	MARIO_WIPE = 4, +	CIRCLE_WIPE_SLOW = 5, +	GLITCH_GASM = 6 +}; + + +void ExitStage(int scene, int sceneParams, int powerupStoreType, int wipe); +  #endif
 + + + + + + + + + + + + + + + diff --git a/kamek_pal.x b/kamek_pal.x index b973515..9b36840 100644 --- a/kamek_pal.x +++ b/kamek_pal.x @@ -43,9 +43,10 @@ SECTIONS {  	AnotherSoundRelatedFunction = 0x80198040;  	YetAnotherSoundPlayer = 0x80199100;  	CheckIfPlayingSound = 0x80196740; -	StopSoundBasic = 0x801955E0;  	RelatedToPlayingSoundsAlongsideAnims = 0x80105350; +	ExitStage__Fiiii = 0x80102370; +  	applyRotationX__4mMtxFPs = 0x8016EDF0;  	applyRotationZ__4mMtxFPs = 0x8016F030; @@ -1166,6 +1167,8 @@ SECTIONS {  	SoundClassRelated = 0x8042a03c;  	BufferToCheckIfPlaying = 0x8042a768; +	StopSoundBasic = 0x801955E0; +	StopSoundRelated = 0x80196050;  	GetHermiteCurveValue = 0x8017d660;  	GetHermiteCurveValue__FfP10HermiteKeyUi = 0x8017d660; diff --git a/soundPlayer.yaml b/soundPlayer.yaml index da07649..29bb94f 100644 --- a/soundPlayer.yaml +++ b/soundPlayer.yaml @@ -1,5 +1,4 @@  --- -# Replaces EN_WALLINSECT  source_files: [../src/soundPlayer.S]  hooks: diff --git a/src/bossFuzzyBear.cpp b/src/bossFuzzyBear.cpp index 8d106ca..7ad7dcd 100644 --- a/src/bossFuzzyBear.cpp +++ b/src/bossFuzzyBear.cpp @@ -2,9 +2,11 @@  #include <game.h>  #include <g3dhax.h>  #include <sfx.h> +#include <stage.h>  #include "effects.h"  #include "player.h" +  class daFuzzyBear_c : public dEn_c {  	int onCreate();  	int onDelete(); @@ -13,6 +15,8 @@ class daFuzzyBear_c : public dEn_c {  	mHeapAllocator_c allocator;  	m3d::mdl_c bodyModel; +	nw4r::g3d::ResFile resFile; +	m3d::anmChr_c animationChr;  	int timer;  	char BigBossFuzzyBear; @@ -31,9 +35,10 @@ class daFuzzyBear_c : public dEn_c {  	char roly;  	char isInvulnerable; -	void dieBigFall_Execute();  	static daFuzzyBear_c *build(); +	void bindAnimChr_and_setUpdateRate(const char* name, int unk, float unk2, float rate); +	void setupBodyModel();  	void updateModelMatrices();  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther); @@ -51,6 +56,7 @@ class daFuzzyBear_c : public dEn_c {  	DECLARE_STATE(Spray);  	DECLARE_STATE(RolyPoly);  	DECLARE_STATE(Wait); +	DECLARE_STATE(Outro);  };  daFuzzyBear_c *daFuzzyBear_c::build() { @@ -64,7 +70,7 @@ extern "C" void *HandleYSpeed(daFuzzyBear_c *);  extern "C" void *UpdateObjectPosBasedOnSpeedValues_real(daFuzzyBear_c *);  extern "C" void *doSpriteMovement(dEn_c *);  extern "C" void *PlaySound(daFuzzyBear_c *, int soundID); -extern "C" void *StopSound(int soundID); +extern "C" void *StopSound(int soundID, int thing=0);  extern "C" u32 GenerateRandomNumber(int max);  extern "C" dStageActor_c *CreateActor(u16 classID, int settings, Vec pos, char rot, char layer); @@ -78,6 +84,7 @@ CREATE_STATE(daFuzzyBear_c, Needles);  CREATE_STATE(daFuzzyBear_c, Spray);  CREATE_STATE(daFuzzyBear_c, RolyPoly);  CREATE_STATE(daFuzzyBear_c, Wait); +CREATE_STATE(daFuzzyBear_c, Outro);  #define ACTIVATE	1 @@ -99,7 +106,7 @@ void daFuzzyBear_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, Ac  	CreateEffect(&apOther->owner->pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0}, 102);  	this->damage++; -	if (this->damage > 14) { doStateChange(&StateID_DieBigFall); } +	if (this->damage > 14) { doStateChange(&StateID_Outro); }  }  bool daFuzzyBear_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { OSReport("Hit Iceball"); return false; }  void daFuzzyBear_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {  @@ -137,7 +144,7 @@ void daFuzzyBear_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhy  	PlaySound(this, SE_EMY_BLOW_PAKKUN_DOWN);  	CreateEffect(&blah->pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0}, 161); -	if (this->damage > 14) { doStateChange(&StateID_DieBigFall); }  +	if (this->damage > 14) { doStateChange(&StateID_Outro); }   	else { doStateChange(&StateID_RolyPoly); }  }  void daFuzzyBear_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {  @@ -151,59 +158,43 @@ void daFuzzyBear_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *  	CreateEffect(&apOther->owner->pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0}, 162); -	if (this->damage > 14) { doStateChange(&StateID_DieBigFall); }  +	if (this->damage > 14) { doStateChange(&StateID_Outro); }   	else { doStateChange(&StateID_RolyPoly); }  }  void daFuzzyBear_c::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) { OSReport("Hit Yoshi Fire"); } -void daFuzzyBear_c::dieBigFall_Execute() { - -	if (this->dying == 1) { return; }	 -	this->rot.x = 0; // X is vertical axis -	this->rot.y = 0; // Y is horizontal axis -	this->rot.z = 0; // Z is ... an axis >.> -	if (this->scale.x > 0.1) { +void daFuzzyBear_c::bindAnimChr_and_setUpdateRate(const char* name, int unk, float unk2, float rate) { +	nw4r::g3d::ResAnmChr anmChr = this->resFile.GetResAnmChr(name); +	this->animationChr.bind(&this->bodyModel, anmChr, unk); +	this->bodyModel.bindAnim(&this->animationChr, unk2); +	this->animationChr.setUpdateRate(rate); +} -		PlaySound(this, SE_BOSS_CMN_DAMAGE_LAST); -		this->scale.x -= 0.015; -		this->scale.y -= 0.015; -		this->scale.z -= 0.015; +void daFuzzyBear_c::setupBodyModel() { +	allocator.link(-1, GameHeaps[0], 0, 0x20); -		if (this->timer == 30) {   -			CreateEffect(&this->pos, &(S16Vec){0,0,0}, &(Vec){2.0, 2.0, 2.0}, 756);  -			CreateEffect(&this->pos, &(S16Vec){0,0,0}, &(Vec){2.0, 2.0, 2.0}, 801);  -			CreateEffect(&this->pos, &(S16Vec){0,0,0}, &(Vec){2.0, 2.0, 2.0}, 957);  -			this->timer = 0; -		} -	} -	else { -		this->scale.x = 0.0; -		this->scale.y = 0.0; -		this->scale.z = 0.0; -		 -		CreateEffect(&this->pos, &(S16Vec){0,0,0}, &(Vec){2.0, 2.0, 2.0}, 588); -		this->dying = 1; -	} +	this->resFile.data = getResource("chorobon", "g3d/chorobon.brres"); +	nw4r::g3d::ResMdl mdl = this->resFile.GetResMdl("chorobon"); +	bodyModel.setup(mdl, &allocator, 0x224, 1, 0); +	SetupTextures_Enemy(&bodyModel, 0); -	this->timer += 1; +	bool ret; +	nw4r::g3d::ResAnmChr anmChr = this->resFile.GetResAnmChr("run"); +	ret = this->animationChr.setup(mdl, anmChr, &this->allocator, 0); +	allocator.unlink();  }  int daFuzzyBear_c::onCreate() {  	OSReport("Creating the Fuzzy Bear Model"); -	allocator.link(-1, GameHeaps[0], 0, 0x20); +	setupBodyModel(); -	nw4r::g3d::ResFile rf(getResource("chorobon", "g3d/chorobon.brres")); -	bodyModel.setup(rf.GetResMdl("chorobon"), &allocator, 0x224, 1, 0); -	SetupTextures_Enemy(&bodyModel, 0); - -	allocator.unlink();  	this->BigBossFuzzyBear = this->settings >> 28; @@ -257,6 +248,9 @@ int daFuzzyBear_c::onCreate() {  	this->roly = 0;  	this->damage = 0;  	this->isInvulnerable = 0; + + +	bindAnimChr_and_setUpdateRate("run", 1, 0.0, 1.0);  	OSReport("Setting Fuzzy Bear's State");  	doStateChange(&StateID_Grow); @@ -275,6 +269,9 @@ int daFuzzyBear_c::onExecute() {  	acState.execute();  	updateModelMatrices(); +	if(this->animationChr.isAnimationDone()) +		this->animationChr.setCurrentFrame(0.0); +  	if (this->aPhysics.result1 == 1) {  		char PlayerID = NearestPlayer(this);  		dStageActor_c *Player = GetSpecificPlayerActor(PlayerID); @@ -288,6 +285,7 @@ int daFuzzyBear_c::onExecute() {  int daFuzzyBear_c::onDraw() {  	bodyModel.scheduleForDrawing(); +	bodyModel._vf1C();  	return true;  } @@ -308,7 +306,6 @@ void daFuzzyBear_c::updateModelMatrices() {  void daFuzzyBear_c::beginState_Grow() {   	OSReport("Growing when Kameck Tells me to.");  	this->timer = 0; -//	PlaySound(this, SE_BOSS_ROY_MAGIC_MAKE_FAST);  }  void daFuzzyBear_c::executeState_Grow() {  @@ -316,8 +313,11 @@ void daFuzzyBear_c::executeState_Grow() {  	this->timer = this->timer + 1;  	float scaleSpeed, yPosScaling; + +	if (this->timer == 60) { PlaySound(this, SE_BOSS_IGGY_WANWAN_TO_L); }  	if ((this->timer > 60) && (this->timer < 140)) { +  		if (BigBossFuzzyBear == 1) {  			scaleSpeed = 0.025;  		 	yPosScaling = 25; } @@ -339,7 +339,8 @@ void daFuzzyBear_c::executeState_Grow() {  }  void daFuzzyBear_c::endState_Grow() {   	this->Baseline = this->pos.y; -//	StopSound(SE_BOSS_ROY_MAGIC_MAKE_FAST); +	 +	PlaySound(this, STRM_BGM_TORIDE_BOSS);  	OSReport("OK. All grown up now.");   } @@ -711,4 +712,79 @@ void daFuzzyBear_c::endState_Wait() { } +void daFuzzyBear_c::beginState_Outro() {  + +	this->timer = 0; + +} +void daFuzzyBear_c::executeState_Outro() { + +	if (this->dying == 1) {  +		if (this->timer > 180) { +			ExitStage(WORLD_MAP, 0, BEAT_LEVEL, MARIO_WIPE); +		} +		 +		if (this->timer == 60) { +			 +			if (GetSpecificPlayerActor(0) != 0) { +				PlaySound(this, SE_VOC_MA_CLEAR_BOSS); +				// Send PlBase into DemoGoal State here, kthxbai +			} +			 +			if (GetSpecificPlayerActor(1) != 0) { +				PlaySound(this, SE_VOC_LU_CLEAR_BOSS); +				// Send PlBase into DemoGoal State here, kthxbai +			} + +			if (GetSpecificPlayerActor(2) != 0) { +				PlaySound(this, SE_VOC_KO_CLEAR_BOSS); +				// Send PlBase into DemoGoal State here, kthxbai +			} + +			if (GetSpecificPlayerActor(3) != 0) { +				PlaySound(this, SE_VOC_KO2_CLEAR_BOSS); +				// Send PlBase into DemoGoal State here, kthxbai +			} +		}	 +		 +		this->timer += 1; +		return;  +	}	 + +	if (this->scale.x > 0.1) { + +		PlaySound(this, SE_BOSS_CMN_DAMAGE_LAST); + +		// Adjust this to equal the scale of your boss / 80. +		this->scale.x -= 0.015; +		this->scale.y -= 0.015; +		this->scale.z -= 0.015; + +		if (this->timer == 30) {   +			CreateEffect(&this->pos, &(S16Vec){0,0,0}, &(Vec){2.0, 2.0, 2.0}, 756);  +			CreateEffect(&this->pos, &(S16Vec){0,0,0}, &(Vec){2.0, 2.0, 2.0}, 801);  +			CreateEffect(&this->pos, &(S16Vec){0,0,0}, &(Vec){2.0, 2.0, 2.0}, 957);  +			this->timer = 0; +		} +	} +	else { +		this->scale.x = 0.0; +		this->scale.y = 0.0; +		this->scale.z = 0.0; +		 +		CreateEffect(&this->pos, &(S16Vec){0,0,0}, &(Vec){2.0, 2.0, 2.0}, 588); +		this->dying = 1; +		this->timer = 0; + +		PlaySound(this, STRM_BGM_SHIRO_BOSS_CLEAR); +	} + +	this->timer += 1; + +} +void daFuzzyBear_c::endState_Outro() { } + + + + diff --git a/src/bossRamboo.cpp b/src/bossRamboo.cpp index c1b9244..11c0249 100644 --- a/src/bossRamboo.cpp +++ b/src/bossRamboo.cpp @@ -272,6 +272,7 @@ void daRamboo_c::executeState_Grow() {  	float scaleSpeed, yPosScaling;  	if ((this->timer > 60) && (this->timer < 140)) { +		PlaySound(this, SE_BOSS_IGGY_WANWAN_L_TO_M);  		scaleSpeed = 0.175;  //	 	yPosScaling = 0; diff --git a/src/soundPlayer.S b/src/soundPlayer.S index 04f29f8..645af31 100644 --- a/src/soundPlayer.S +++ b/src/soundPlayer.S @@ -20,8 +20,9 @@  .extern YetAnotherSoundPlayer  .extern CheckIfPlayingSound  .extern StopSoundBasic -.extern BufferToCheckIfPlaying +.extern StopSoundRelated  .extern SoundClassRelated +.extern BufferToCheckIfPlaying  .align 4 @@ -85,7 +86,15 @@ GoAwaySoundGuy:  .global StopSound  StopSound: +	stwu      r1, -0x10(r1) +	mtlr      r0 +	stw       r0, 0x14(r1) +  	mr        r4, r3  	lwz       r3, -0x5218(r13) -	b StopSoundBasic +	bl        StopSoundBasic +	lwz       r0, 0x14(r1) +	mflr      r0 +	 +	blr | 
