diff options
| -rw-r--r-- | bugfixes.yaml | 6 | ||||
| -rwxr-xr-x | include/game.h | 6 | ||||
| -rw-r--r-- | kamek_pal.x | 1 | ||||
| -rw-r--r-- | src/chestnut.cpp | 8 | ||||
| -rw-r--r-- | src/poweruphax.cpp | 8 | ||||
| -rw-r--r-- | src/randomcrap.S | 10 | 
6 files changed, 31 insertions, 8 deletions
diff --git a/bugfixes.yaml b/bugfixes.yaml index 4b47df8..9f5a48c 100644 --- a/bugfixes.yaml +++ b/bugfixes.yaml @@ -3,6 +3,12 @@  # yaml, hasn't it...
  source_files: [../src/randomcrap.S, ../src/music.cpp, ../src/fix38.S, ../src/nullsub.S, ../src/newer.cpp]
  hooks:
 +  - name: RedRingEventControl
 +    type: branch_insn
 +    branch_type: b
 +    src_addr_pal: 0x80A93038
 +    target_func: 'RedRingEventControl'
 +
    - name: DisableTerrainShading
      type: patch
      addr_pal: 0x8008E6F8
 diff --git a/include/game.h b/include/game.h index 1eb7a17..d72e349 100755 --- a/include/game.h +++ b/include/game.h @@ -3816,6 +3816,7 @@ extern "C" void Pause__Q44nw4r3snd6detail10BasicSoundFbi(void *_this, bool pause  extern "C" void Stop__Q44nw4r3snd6detail10BasicSoundFi(void *_this, int unk);
  extern "C" void StrmSound_SetTrackVolume(void *_this, u32 mask, int count, float value);
  extern "C" void SetPitch__Q44nw4r3snd6detail10BasicSoundFf(void *_this, float value);
 +extern "C" void SetVolume__Q44nw4r3snd6detail10BasicSoundFfi(void *_this, float value, int count);
  namespace nw4r {
  	namespace snd {
 @@ -3832,6 +3833,8 @@ namespace nw4r {  				void SetPitch(float value) { SetPitch__Q44nw4r3snd6detail10BasicSoundFf(data, value); }
  				void Pause(bool pause, int count) { Pause__Q44nw4r3snd6detail10BasicSoundFbi(data, pause, count); }
 +				void SetVolume(float value, int count) { SetVolume__Q44nw4r3snd6detail10BasicSoundFfi(data, pause, count); }
 +
  				void *GetSound() const { return data; }
  				void DetachSound();
 @@ -3971,7 +3974,8 @@ inline int Player_VF3D4(void *self) {  	VF_END;
  }
 -extern "C" void PlaySoundWithFunctionB4(void *spc, nw4r::snd::SoundHandle *handle, int id, int unk);
 +extern "C" void PlaySoundWithFunctionB4(void *src, nw4r::snd::SoundHandle *handle, int id, int unk);
 +extern "C" void CheckIfPlayingSound(void *src, int id);
  extern void *SoundRelatedClass;
  void GetPosForLayoutEffect(VEC3 *pos, bool quack);
 diff --git a/kamek_pal.x b/kamek_pal.x index 5f5eeef..55a94ce 100644 --- a/kamek_pal.x +++ b/kamek_pal.x @@ -127,6 +127,7 @@ SECTIONS {  	Pause__Q44nw4r3snd6detail10BasicSoundFbi = 0x80266580;  	Stop__Q44nw4r3snd6detail10BasicSoundFi = 0x80266390;  	SetPitch__Q44nw4r3snd6detail10BasicSoundFf = 0x802675F0; +	SetVolume__Q44nw4r3snd6detail10BasicSoundFfi = 0x80267560;  	StrmSound_SetTrackVolume = 0x8027F9D0;  	DontShowPreGame = 0x8042A490; diff --git a/src/chestnut.cpp b/src/chestnut.cpp index 7ebfc4d..ff653c0 100644 --- a/src/chestnut.cpp +++ b/src/chestnut.cpp @@ -159,9 +159,11 @@ float daEnChestnut_c::nearestPlayerDistance() {  	for (int i = 0; i < 4; i++) {  		if (dAcPy_c *player = dAcPy_c::findByID(i)) { -			float thisDist = abs(player->pos.x - pos.x); -			if (thisDist < bestSoFar) -				bestSoFar = thisDist; +			if (strcmp(player->states2.getCurrentState()->getName(), "dAcPy_c::StateID_Balloon")) { +				float thisDist = abs(player->pos.x - pos.x); +				if (thisDist < bestSoFar) +					bestSoFar = thisDist; +			}  		}  	} diff --git a/src/poweruphax.cpp b/src/poweruphax.cpp index f2895de..1bb5dc8 100644 --- a/src/poweruphax.cpp +++ b/src/poweruphax.cpp @@ -45,8 +45,8 @@ void dHammerSuitRenderer_c::setup(dPlayerModelHandler_c *handler, int sceneID) {  	nw4r::g3d::ResFile rf(getResource("hammerM", "g3d/suit.brres")); -	if (victim->player_id_1 <= 1) { -		helmet.setup(rf.GetResMdl((victim->player_id_1 == 0) ? "marioHelmet" : "luigiHelmet"), &allocator, 0, 1, 0); +	if (victim->player_id_2 <= 1) { +		helmet.setup(rf.GetResMdl((victim->player_id_2 == 0) ? "marioHelmet" : "luigiHelmet"), &allocator, 0, 1, 0);  		SetupTextures_MapObj(&helmet, sceneID);  	} @@ -64,7 +64,7 @@ void dHammerSuitRenderer_c::setup(dPlayerModelHandler_c *handler, int sceneID) {  		(nw4r::g3d::ResMdl*)(((u32)victimModel->scnObj) + 0xE8);  	//headNodeID = playerResMdl->GetResNode("player_head").GetID(); -	if (victim->player_id_1 <= 1) +	if (victim->player_id_2 <= 1)  		headNodeID = playerResMdl->GetResNode("face_1").GetID();  	rootNodeID = playerResMdl->GetResNode("skl_root").GetID();  } @@ -73,7 +73,7 @@ void dHammerSuitRenderer_c::draw() {  	if (victim->powerup_id != 7)  		return; -	if (victim->player_id_1 <= 1) { +	if (victim->player_id_2 <= 1) {  		// Materials: 2=hair 3=hat; Modes: BACK=visible ALL=invisible  		SetCullModeForMaterial(&victim->getCurrentModel()->head, 3, GX_CULL_ALL); diff --git a/src/randomcrap.S b/src/randomcrap.S index 29bf758..fff6c98 100644 --- a/src/randomcrap.S +++ b/src/randomcrap.S @@ -384,6 +384,16 @@ llaReturn:  sfsdfsdf: .float 512.0  .text + +.global RedRingEventControl +RedRingEventControl: +	lwz r10, 4(r31) +	srwi. r10, r10, 28 +	beq dontResetRREDelay +	li r5, 0 +dontResetRREDelay: +	b set__10dFlagMgr_cFUcibbbUi +  .global EFB_Crap  .extern EFBMagic2__Fv  .extern ContinueFromEFBMagic2  | 
