From 913b135a0fa7282848f94dd590e736c47d662fce Mon Sep 17 00:00:00 2001 From: robojumper Date: Mon, 26 May 2025 01:31:35 +0200 Subject: [PATCH] snd_Channel OK --- config/SOUE01/splits.txt | 3 +++ config/SOUE01/symbols.txt | 22 +++++++++++----------- configure.py | 2 +- src/nw4r/snd/snd_Channel.cpp | 18 +++++++++--------- 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 182b3322..b437fc7e 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -2935,6 +2935,9 @@ nw4r/snd/snd_BiquadFilterPreset.cpp: nw4r/snd/snd_Channel.cpp: .text start:0x8046A7B0 end:0x8046B7C8 align:16 + .sbss start:0x80576680 end:0x80576688 + .sdata2 start:0x8057EFA8 end:0x8057EFD0 + .bss start:0x806593C8 end:0x806593F8 nw4r/snd/snd_DisposeCallbackManager.cpp: .text start:0x8046B7D0 end:0x8046BB5C align:16 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 79ae31b9..84341ec8 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -25175,7 +25175,7 @@ __dt__Q44nw4r3snd6detail18BiquadFilterBpf512Fv = .text:0x8046A6F0; // type:funct __dt__Q44nw4r3snd6detail19BiquadFilterBpf1024Fv = .text:0x8046A730; // type:function size:0x40 scope:weak __dt__Q44nw4r3snd6detail19BiquadFilterBpf2048Fv = .text:0x8046A770; // type:function size:0x40 scope:weak GetInstance__Q44nw4r3snd6detail14ChannelManagerFv = .text:0x8046A7B0; // type:function size:0x74 -__dt__Q44nw4r3snd6detail14ChannelManagerFv = .text:0x8046A830; // type:function size:0x60 +__dt__Q44nw4r3snd6detail14ChannelManagerFv = .text:0x8046A830; // type:function size:0x60 scope:weak GetRequiredMemSize__Q44nw4r3snd6detail14ChannelManagerFi = .text:0x8046A890; // type:function size:0xC Setup__Q44nw4r3snd6detail14ChannelManagerFPvUl = .text:0x8046A8A0; // type:function size:0x94 UpdateAllChannel__Q44nw4r3snd6detail14ChannelManagerFv = .text:0x8046A940; // type:function size:0x54 @@ -42424,7 +42424,7 @@ sBiquadFilterBpf2048__Q44nw4r3snd6detail9AxManager = .sbss:0x80576660; // type:o lbl_80576670 = .sbss:0x80576670; // type:object size:0x4 data:4byte lbl_80576674 = .sbss:0x80576674; // type:object size:0x4 data:4byte lbl_80576678 = .sbss:0x80576678; // type:object size:0x8 data:4byte -lbl_80576680 = .sbss:0x80576680; // type:object size:0x8 data:byte +@GUARD@GetInstance__Q44nw4r3snd6detail14ChannelManagerFv@instance = .sbss:0x80576680; // type:object size:0x1 scope:weak data:byte @GUARD@GetInstance__Q44nw4r3snd6detail22DisposeCallbackManagerFv@instance = .sbss:0x80576688; // type:object size:0x1 scope:weak data:byte lbl_80576690 = .sbss:0x80576690; // type:object size:0x8 data:byte lbl_80576698 = .sbss:0x80576698; // type:object size:0x4 data:4byte @@ -49667,13 +49667,13 @@ lbl_8057EF8C = .sdata2:0x8057EF8C; // type:object size:0x4 align:4 data:float lbl_8057EF90 = .sdata2:0x8057EF90; // type:object size:0x8 align:8 data:double @212 = .sdata2:0x8057EF98; // type:object size:0x8 scope:local align:8 data:double @247 = .sdata2:0x8057EFA0; // type:object size:0x4 scope:local align:4 data:float -lbl_8057EFA8 = .sdata2:0x8057EFA8; // type:object size:0x4 align:4 data:float -lbl_8057EFAC = .sdata2:0x8057EFAC; // type:object size:0x4 align:4 data:float -lbl_8057EFB0 = .sdata2:0x8057EFB0; // type:object size:0x4 align:4 data:float -lbl_8057EFB4 = .sdata2:0x8057EFB4; // type:object size:0x4 align:4 data:float -lbl_8057EFB8 = .sdata2:0x8057EFB8; // type:object size:0x4 align:4 data:float -lbl_8057EFC0 = .sdata2:0x8057EFC0; // type:object size:0x8 align:8 data:double -lbl_8057EFC8 = .sdata2:0x8057EFC8; // type:object size:0x8 align:8 data:double +@2816 = .sdata2:0x8057EFA8; // type:object size:0x4 scope:local align:4 data:float +@2937 = .sdata2:0x8057EFAC; // type:object size:0x4 scope:local align:4 data:float +@3086 = .sdata2:0x8057EFB0; // type:object size:0x4 scope:local align:4 data:float +@3087 = .sdata2:0x8057EFB4; // type:object size:0x4 scope:local align:4 data:float +@3088 = .sdata2:0x8057EFB8; // type:object size:0x4 scope:local align:4 data:float +@3092 = .sdata2:0x8057EFC0; // type:object size:0x8 scope:local align:8 data:double +@3093 = .sdata2:0x8057EFC8; // type:object size:0x8 scope:local align:8 data:double VOLUME_INIT__Q44nw4r3snd6detail12EnvGenerator = .sdata2:0x8057EFD0; // type:object size:0x4 align:4 data:float @180 = .sdata2:0x8057EFD4; // type:object size:0x4 scope:local align:4 data:float @181 = .sdata2:0x8057EFD8; // type:object size:0x4 scope:local align:4 data:float @@ -51934,8 +51934,8 @@ sBiquadFilterCallbackTable__Q44nw4r3snd6detail9AxManager = .bss:0x80659080; // t @LOCAL@GetInstance__Q44nw4r3snd6detail9AxManagerFv@instance = .bss:0x8065928C; // type:object size:0x104 scope:weak data:4byte @986 = .bss:0x80659390; // type:object size:0xC scope:local @LOCAL@GetInstance__Q44nw4r3snd6detail14AxVoiceManagerFv@instance = .bss:0x8065939C; // type:object size:0x2C scope:weak data:4byte -lbl_806593C8 = .bss:0x806593C8; // type:object size:0x10 -lbl_806593D8 = .bss:0x806593D8; // type:object size:0x20 data:4byte +@1671 = .bss:0x806593C8; // type:object size:0xC scope:local +@LOCAL@GetInstance__Q44nw4r3snd6detail14ChannelManagerFv@instance = .bss:0x806593D8; // type:object size:0x20 scope:weak data:4byte @781 = .bss:0x806593F8; // type:object size:0xC scope:local @LOCAL@GetInstance__Q44nw4r3snd6detail22DisposeCallbackManagerFv@instance = .bss:0x80659404; // type:object size:0xC scope:weak data:4byte @LOCAL@GetInstance__Q44nw4r3snd6detail20RemoteSpeakerManagerFv@instance = .bss:0x80659410; // type:object size:0x2D8 scope:weak data:byte diff --git a/configure.py b/configure.py index 6ff68488..91af6243 100644 --- a/configure.py +++ b/configure.py @@ -1022,7 +1022,7 @@ config.libs = [ Object(Matching, "nw4r/snd/snd_BasicPlayer.cpp"), Object(NonMatching, "nw4r/snd/snd_BasicSound.cpp"), Object(Matching, "nw4r/snd/snd_BiquadFilterPreset.cpp"), - Object(NonMatching, "nw4r/snd/snd_Channel.cpp"), + Object(Matching, "nw4r/snd/snd_Channel.cpp"), Object(Matching, "nw4r/snd/snd_DisposeCallbackManager.cpp"), Object(NonMatching, "nw4r/snd/snd_debug.cpp"), Object(Matching, "nw4r/snd/snd_DvdSoundArchive.cpp"), diff --git a/src/nw4r/snd/snd_Channel.cpp b/src/nw4r/snd/snd_Channel.cpp index 98b85285..3d3456d8 100644 --- a/src/nw4r/snd/snd_Channel.cpp +++ b/src/nw4r/snd/snd_Channel.cpp @@ -247,12 +247,6 @@ void Channel::Update(bool doPeriodicProc) f32 mainSend = 0.0f; mainSend += mMainSend; - - f32 remoteOutVolume[4]; - for (int i = 0; i < 4; i++) { - remoteOutVolume[i] = 1.0f; - remoteOutVolume[i] *= mRemoteOutVolume[i]; - } f32 fxSend[AUX_BUS_NUM]; for (int i = 0; i < AUX_BUS_NUM; i++) @@ -261,6 +255,12 @@ void Channel::Update(bool doPeriodicProc) fxSend[i] += mFxSend[i]; } + f32 remoteOutVolume[4]; + for (int i = 0; i < 4; i++) { + remoteOutVolume[i] = 1.0f; + remoteOutVolume[i] *= mRemoteOutVolume[i]; + } + if (doPeriodicProc) { if (mAutoSweep) @@ -294,12 +294,12 @@ void Channel::Update(bool doPeriodicProc) mVoice->SetMainOutVolume(mainOutVolume); mVoice->SetMainSend(mainSend); + for (int i = 0; i < AUX_BUS_NUM; i++) + mVoice->SetFxSend(static_cast(i), fxSend[i]); + for (int i = 0; i < 4; i++) { mVoice->SetRemoteOutVolume(i, remoteOutVolume[i]); } - - for (int i = 0; i < AUX_BUS_NUM; i++) - mVoice->SetFxSend(static_cast(i), fxSend[i]); } }