mirror of
https://github.com/zeldaret/ss
synced 2026-08-29 08:59:56 -04:00
More and cleanup
This commit is contained in:
@@ -36,7 +36,7 @@ int dTgSndAr_c::create() {
|
||||
}
|
||||
dAcBase_c *ac = static_cast<dAcBase_c *>(base);
|
||||
if (!ac->isActorPlayer() && checkPosInArea(ac->position)) {
|
||||
ac->setBit_field_0xE8(params & 0xFF);
|
||||
ac->setTgSndAreaFlag(params & 0xFF);
|
||||
}
|
||||
}
|
||||
return SUCCEEDED;
|
||||
@@ -49,12 +49,12 @@ int dTgSndAr_c::doDelete() {
|
||||
int dTgSndAr_c::actorExecute() {
|
||||
dAcBase_c *link = dAcPy_c::LINK;
|
||||
if (link != nullptr && checkPosInArea(link->position)) {
|
||||
link->setBit_field_0xE8(params & 0xFF);
|
||||
link->setTgSndAreaFlag(params & 0xFF);
|
||||
}
|
||||
if (dSnd3DManager_c::GetInstance() != nullptr) {
|
||||
mVec3_c pos(dSnd3DManager_c::GetInstance()->getCameraTargetPos());
|
||||
if (checkPosInArea(pos) && dTgSndMg_c::GetInstance() != nullptr) {
|
||||
dTgSndMg_c::GetInstance()->setBgmFlag(params & 0xFF);
|
||||
dTgSndMg_c::GetInstance()->setSndFlag(params & 0xFF);
|
||||
}
|
||||
}
|
||||
return SUCCEEDED;
|
||||
|
||||
@@ -18,9 +18,9 @@ int dTgSndMg_c::doDelete() {
|
||||
|
||||
int dTgSndMg_c::actorExecute() {
|
||||
if (dAcPy_c::LINK != nullptr) {
|
||||
dAcPy_c::LINK->field_0xe8 = 0;
|
||||
dAcPy_c::LINK->mTgSndAreaFlags = 0;
|
||||
}
|
||||
mBgmFlags = 0;
|
||||
mSndFlags = 0;
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
|
||||
@@ -151,8 +151,8 @@ bool dAcBase_c::addActorToRoom(s32 roomId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void dAcBase_c::setBit_field_0xE8(s32 shift) {
|
||||
field_0xe8 |= (1 << shift);
|
||||
void dAcBase_c::setTgSndAreaFlag(s32 shift) {
|
||||
mTgSndAreaFlags |= (1 << shift);
|
||||
}
|
||||
|
||||
int dAcBase_c::actorCreate() {
|
||||
|
||||
+2
-2
@@ -6,6 +6,7 @@
|
||||
#include "d/d_gfx.h"
|
||||
#include "d/d_stage_mgr.h"
|
||||
#include "d/flag/storyflag_manager.h"
|
||||
#include "d/snd/d_snd_state_mgr.h"
|
||||
#include "f/f_base.h"
|
||||
#include "f/f_profile_name.h"
|
||||
#include "m/m_fader_base.h"
|
||||
@@ -16,7 +17,6 @@
|
||||
#include "toBeSorted/arc_managers/oarc_manager.h"
|
||||
#include "toBeSorted/file_manager.h"
|
||||
#include "toBeSorted/minigame_mgr.h"
|
||||
#include "toBeSorted/music_mgrs.h"
|
||||
#include "toBeSorted/unk_save_time.h"
|
||||
|
||||
#include <cstring>
|
||||
@@ -166,7 +166,7 @@ void dScGame_c::executeState_Action() {
|
||||
}
|
||||
} else if (mReloadTrigger != fProfile::PROFILE_MAX) {
|
||||
mFader.fadeOut();
|
||||
fn_80362150(ENEMY_SOUND_MGR, mFader.getFadeOutFrame());
|
||||
dSndStateMgr_c::GetInstance()->onGotoStage(mFader.getFadeOutFrame());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "d/d_reset.h"
|
||||
#include "d/d_sc_game.h"
|
||||
#include "d/d_sys.h"
|
||||
#include "d/snd/d_snd_state_mgr.h"
|
||||
#include "f/f_base.h"
|
||||
#include "f/f_profile_name.h"
|
||||
#include "m/m_color.h"
|
||||
@@ -162,7 +163,7 @@ void dScTitle_c::loadTitleScreen(u32 params) {
|
||||
} else {
|
||||
actuallyTriggerEntrance("F000", 0, 28, 48, 0, 0, dFader_c::FADER_BLACK, 15, -1);
|
||||
}
|
||||
fn_80362150(ENEMY_SOUND_MGR, 30);
|
||||
dSndStateMgr_c::GetInstance()->onGotoStage(30);
|
||||
}
|
||||
|
||||
void dScTitle_c::setSomethingSkbRelated() {
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
#include "toBeSorted/arc_managers/layout_arc_manager.h"
|
||||
#include "toBeSorted/arc_managers/oarc_manager.h"
|
||||
#include "toBeSorted/d_particle.h"
|
||||
#include "toBeSorted/music_mgrs.h"
|
||||
|
||||
SPECIAL_BASE_PROFILE(STAGE_MANAGER, dStageMgr_c, fProfile::STAGE_MANAGER, 0X5, 1536);
|
||||
|
||||
@@ -280,7 +279,7 @@ void dStageMgr_c::finalizeState_RestartSceneWait() {}
|
||||
void dStageMgr_c::initializeState_RestartScene() {
|
||||
triggerFade(dScGame_c::nextSpawnInfo.transitionType, dScGame_c::nextSpawnInfo.transitionFadeFrames);
|
||||
mFader.setFadeInType(dScGame_c::nextSpawnInfo.transitionType);
|
||||
fn_803625F0(ENEMY_SOUND_MGR, mFader.getFadeOutFrame());
|
||||
dSndStateMgr_c::GetInstance()->onRestartScene(mFader.getFadeOutFrame());
|
||||
}
|
||||
|
||||
void dStageMgr_c::executeState_RestartScene() {
|
||||
|
||||
@@ -30,7 +30,7 @@ dSnd3DActor_c::dSnd3DActor_c(dSndSourceParam *pSourceParam, s32 sourceType)
|
||||
mpSourceParam(pSourceParam),
|
||||
mFlags(0),
|
||||
mDistanceToPlayer(INFINITY),
|
||||
a_field_0xE0(0.0f) {
|
||||
mFxSend3D(0.0f) {
|
||||
resetCachedRelativePositions();
|
||||
// Portability hazard
|
||||
SetUserParam(reinterpret_cast<u32>(this));
|
||||
@@ -41,7 +41,7 @@ dSnd3DActor_c::dSnd3DActor_c(dSndSourceParam *pSourceParam, s32 sourceType)
|
||||
|
||||
void dSnd3DActor_c::setPosition(const nw4r::math::VEC3 &rPosition) {
|
||||
SetPosition(rPosition);
|
||||
a_field_0xE0 = dSndStateMgr_c::GetInstance()->getField_0x49C();
|
||||
mFxSend3D = dSndStateMgr_c::GetInstance()->getFxSend3D();
|
||||
mFlags = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ void dSndDistantSoundActor_c::setPause(bool flag, int fadeFrames) {
|
||||
}
|
||||
|
||||
void dSndDistantSoundActor_c::updateSome3DField() {
|
||||
a_field_0xE0 = dSndStateMgr_c::GetInstance()->getField_0x49C();
|
||||
mFxSend3D = dSndStateMgr_c::GetInstance()->getFxSend3D();
|
||||
}
|
||||
|
||||
UNKWORD dSndDistantSoundActor_c::d_vt_0x3C() {
|
||||
|
||||
+107
-14
@@ -9,6 +9,7 @@
|
||||
#include "d/snd/d_snd_checkers.h"
|
||||
#include "d/snd/d_snd_control_player_mgr.h"
|
||||
#include "d/snd/d_snd_event.h"
|
||||
#include "d/snd/d_snd_harp_song_mgr.h"
|
||||
#include "d/snd/d_snd_mgr.h"
|
||||
#include "d/snd/d_snd_player_mgr.h"
|
||||
#include "d/snd/d_snd_small_effect_mgr.h"
|
||||
@@ -16,6 +17,7 @@
|
||||
#include "d/snd/d_snd_stage_data.h"
|
||||
#include "d/snd/d_snd_util.h"
|
||||
#include "d/snd/d_snd_wzsound.h"
|
||||
#include "d/t/d_t_sound_area_mgr.h"
|
||||
#include "egg/core/eggHeap.h"
|
||||
#include "nw4r/snd/snd_FxReverbStdDpl2.h"
|
||||
#include "nw4r/snd/snd_SeqSoundHandle.h"
|
||||
@@ -42,16 +44,16 @@ dSndStateMgr_c::dSndStateMgr_c()
|
||||
field_0x060(0),
|
||||
field_0x064(0),
|
||||
field_0x065(false),
|
||||
field_0x066(0),
|
||||
field_0x067(0),
|
||||
field_0x068(-1),
|
||||
field_0x06C(-1),
|
||||
mHasChangedTgSndAreaFlags(false),
|
||||
mHasChangedTgSndAreaMgFlags(false),
|
||||
mSavedTgSndAreaFlags(-1),
|
||||
mSavedTgSndAreaMgFlags(-1),
|
||||
mpUnkCallback(nullptr),
|
||||
field_0x074(0),
|
||||
mpOnEventStartCallback(nullptr),
|
||||
field_0x07C(0),
|
||||
field_0x080(0),
|
||||
field_0x084(0),
|
||||
mpTgSndAreaFlagsChangeCallback(nullptr),
|
||||
mpTgSndAreaMgFlagsChangeCallback(nullptr),
|
||||
field_0x088(0),
|
||||
mSoundEventId(SND_EVENT_0x89),
|
||||
mCameraCutCounter(0),
|
||||
@@ -74,11 +76,11 @@ dSndStateMgr_c::dSndStateMgr_c()
|
||||
field_0x254(0),
|
||||
field_0x258(0),
|
||||
field_0x48C(0),
|
||||
field_0x490(0.02f),
|
||||
field_0x494(-1.0f),
|
||||
field_0x498(-1.0f),
|
||||
field_0x49C(0.02f),
|
||||
field_0x4A0(0.02f),
|
||||
mFxSend3DDefault(0.02f),
|
||||
mFxSend3DOverride(-1.0f),
|
||||
mFxSend3DNext(-1.0f),
|
||||
mFxSend3D(0.02f),
|
||||
mFxSend3DTarget(0.02f),
|
||||
field_0x4A4(-1),
|
||||
field_0x4A8(0),
|
||||
mNeedsGroupsReload(false) {}
|
||||
@@ -228,6 +230,38 @@ bool dSndStateMgr_c::isSomeSkyloftRoom() const {
|
||||
}
|
||||
}
|
||||
|
||||
void dSndStateMgr_c::onRestartScene(s32 fadeFrames) {
|
||||
if (field_0x064) {
|
||||
return;
|
||||
}
|
||||
|
||||
s32 nextLayer = dScGame_c::nextSpawnInfo.layer;
|
||||
// This combines next stage with current layer, so this effectively checks if you're leaving the Hint Movie scene
|
||||
if (isSeekerStoneStage(mStageName, dScGame_c::currentSpawnInfo.layer)) {
|
||||
dSndBgmMgr_c::GetInstance()->stopAllBgm(fadeFrames);
|
||||
} else if (mLayer != nextLayer) {
|
||||
if (isSeekerStoneStage(mStageName, nextLayer)) {
|
||||
dSndBgmMgr_c::GetInstance()->stopAllBgm(fadeFrames);
|
||||
dSndBgmMgr_c::GetInstance()->prepareBgm(BGM_HINT_SELECT, 0);
|
||||
dSndBgmMgr_c::GetInstance()->setOverrideBgmId(BGM_HINT_SELECT);
|
||||
dSndBgmMgr_c::GetInstance()->activateOverrideBgmId();
|
||||
dSndAreaSoundEffectMgr_c::GetInstance()->stopSounds(fadeFrames);
|
||||
} else {
|
||||
onGotoStage(fadeFrames);
|
||||
onFlag0x10(0x01);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
dSndSmallEffectMgr_c::GetInstance()->stopAllSoundExceptEvent(fadeFrames);
|
||||
dSndBgmMgr_c::GetInstance()->prepareBgm();
|
||||
dSndHarpSongMgr_c::GetInstance()->deactivate();
|
||||
onFlag0x10(0x01);
|
||||
dSndBgmMgr_c::GetInstance()->setField_0x306(1);
|
||||
offFlag0x10(0x4);
|
||||
offFlag0x10(0x10);
|
||||
}
|
||||
|
||||
void dSndStateMgr_c::loadStageSound() {
|
||||
loadStageSound(false);
|
||||
}
|
||||
@@ -405,7 +439,7 @@ void dSndStateMgr_c::loadStageSound(bool force) {
|
||||
f32 volume = -1.0f;
|
||||
dSndAreaSoundEffectMgr_c::GetInstance()->loadStageSound(&volume);
|
||||
if (volume > 0.0f) {
|
||||
field_0x490 = volume;
|
||||
mFxSend3DDefault = volume;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -700,7 +734,7 @@ void dSndStateMgr_c::handleSeLv() {
|
||||
if (dSndMgr_c::GetInstance()->holdSound(&mSeLvSoundHandle, soundId)) {
|
||||
u32 id = dSndPlayerMgr_c::GetInstance()->getDemoArchive()->GetSoundUserParam(soundId);
|
||||
if ((dSndPlayerMgr_c::sEventMuteFlagsMask & id & 0x2000000) == 0) {
|
||||
mSeLvSoundHandle.SetFxSend(nw4r::snd::AUX_A, field_0x49C);
|
||||
mSeLvSoundHandle.SetFxSend(nw4r::snd::AUX_A, mFxSend3D);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -849,7 +883,35 @@ void dSndStateMgr_c::setRoomId(s32 roomId) {
|
||||
}
|
||||
|
||||
void dSndStateMgr_c::calcTgSnd() {
|
||||
// ...
|
||||
mHasChangedTgSndAreaFlags = false;
|
||||
mHasChangedTgSndAreaMgFlags = false;
|
||||
dAcPy_c *link = dAcPy_c::GetLinkM();
|
||||
if (link != nullptr && dTgSndMg_c::GetInstance() != nullptr) {
|
||||
u32 flags = dTgSndMg_c::GetInstance()->getSndFlags();
|
||||
if (flags != mSavedTgSndAreaMgFlags) {
|
||||
mHasChangedTgSndAreaMgFlags = true;
|
||||
if (mpTgSndAreaMgFlagsChangeCallback != nullptr) {
|
||||
(mpTgSndAreaMgFlagsChangeCallback)(flags, mSavedTgSndAreaMgFlags);
|
||||
}
|
||||
dSndBgmMgr_c::GetInstance()->onTgSndAreaMgFlagsChange(flags, mSavedTgSndAreaMgFlags);
|
||||
mSavedTgSndAreaMgFlags = flags;
|
||||
}
|
||||
|
||||
if (dSndSourceMgr_c::getBoomerangSource() != nullptr) {
|
||||
flags = mSavedTgSndAreaMgFlags;
|
||||
} else {
|
||||
flags = link->mTgSndAreaFlags;
|
||||
}
|
||||
if (flags != mSavedTgSndAreaFlags) {
|
||||
mHasChangedTgSndAreaFlags = true;
|
||||
if (mpTgSndAreaFlagsChangeCallback != nullptr) {
|
||||
(mpTgSndAreaFlagsChangeCallback)(flags, mSavedTgSndAreaFlags);
|
||||
}
|
||||
mFxSend3DNext = getUserParamVolume(flags);
|
||||
dSndBgmMgr_c::GetInstance()->onTgSndAreaFlagsChange(flags, mSavedTgSndAreaFlags);
|
||||
mSavedTgSndAreaFlags = flags;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void dSndStateMgr_c::calcFilters() {
|
||||
@@ -975,6 +1037,37 @@ void dSndStateMgr_c::resetBgmLpf() {
|
||||
}
|
||||
}
|
||||
|
||||
void dSndStateMgr_c::calcFxSend3D() {
|
||||
if (mFxSend3D > mFxSend3DTarget) {
|
||||
mFxSend3D -= 0.02f;
|
||||
if (mFxSend3D < mFxSend3DTarget) {
|
||||
mFxSend3D = mFxSend3DTarget;
|
||||
}
|
||||
} else if (mFxSend3D < mFxSend3DTarget) {
|
||||
mFxSend3D += 0.02f;
|
||||
if (mFxSend3D > mFxSend3DTarget) {
|
||||
mFxSend3D = mFxSend3DTarget;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void dSndStateMgr_c::setFxSend3DTarget() {
|
||||
// TODO - weird control flow
|
||||
f32 target = mFxSend3DDefault;
|
||||
if (mFxSend3DNext > 0.0f) {
|
||||
target = mFxSend3DNext;
|
||||
} else if (mFxSend3DOverride > 0.0f) {
|
||||
target = mFxSend3DOverride;
|
||||
}
|
||||
|
||||
if (target < 0.02f) {
|
||||
target = 0.02f;
|
||||
} else if (target > 0.3f) {
|
||||
target = 0.3f;
|
||||
}
|
||||
mFxSend3DTarget = target;
|
||||
}
|
||||
|
||||
f32 dSndStateMgr_c::getUserParamVolume(u32 userParam) {
|
||||
s32 bit = 31;
|
||||
for (int i = 0; i < 4; i++) {
|
||||
|
||||
Reference in New Issue
Block a user