diff options
Diffstat (limited to '')
-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 |