summaryrefslogtreecommitdiff
path: root/src/nw4r
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2025-05-26 21:58:00 +0200
committerrobojumper <robojumper@gmail.com>2025-05-26 21:58:00 +0200
commit88a0679158ed761d487597bc8515541aef740cab (patch)
treebab08c6af87416188d0fb3eb95274bd2a9cdad65 /src/nw4r
parent827d72297cb476237e5dfcea0cd509374011990f (diff)
snd_StrmPlayer OK
Diffstat (limited to 'src/nw4r')
-rw-r--r--src/nw4r/snd/snd_StrmPlayer.cpp63
1 files changed, 62 insertions, 1 deletions
diff --git a/src/nw4r/snd/snd_StrmPlayer.cpp b/src/nw4r/snd/snd_StrmPlayer.cpp
index 0a6f74d1..6833aca5 100644
--- a/src/nw4r/snd/snd_StrmPlayer.cpp
+++ b/src/nw4r/snd/snd_StrmPlayer.cpp
@@ -48,7 +48,7 @@
namespace nw4r { namespace snd { namespace detail
{
// .bss
- byte_t StrmPlayer::sLoadBuffer[LOAD_BUFFER_SIZE];
+ byte_t ALIGN_DECL(32) StrmPlayer::sLoadBuffer[LOAD_BUFFER_SIZE];
OSMutex StrmPlayer::sLoadBufferMutex;
// .sbss
@@ -375,10 +375,61 @@ void StrmPlayer::Pause(bool flag)
UpdatePauseStatus();
}
+void float_order_snd_StrmPlayer() {
+ 0.0f;
+ int zero = 0;
+ unsigned uzero = 0;
+ f32 z = zero;
+ z = uzero;
+}
+#if 0
// Some functions in between idk
DECOMP_FORCE(0.0f);
DECOMP_FORCE(SI2D_CONSTANT);
DECOMP_FORCE(UI2D_CONSTANT);
+#endif
+
+bool StrmPlayer::ReadStrmDataInfo(StrmDataInfo* info) const
+{
+ SoundThread::AutoLock lock;
+
+ if (!mPreparedFlag)
+ return false;
+
+ info->loopFlag = mStrmInfo.loopFlag != 0;
+ info->sampleRate = mStrmInfo.sampleRate;
+ info->loopStart = mStrmInfo.loopStart;
+ info->loopEnd = mStrmInfo.loopEnd;
+
+ return true;
+}
+
+u32 StrmPlayer::GetPlaySamplePosition() const
+{
+ SoundThread::AutoLock lock;
+
+ if (!mActiveFlag)
+ return -1;
+
+ if (!mTracks[0].mActiveFlag)
+ return -1;
+
+ if (!mPreparedFlag)
+ return 0;
+
+ u32 sample = 0;
+ u32 t1;
+ {
+ ut::AutoInterruptLock lock2;
+
+ if (mTracks[0].mVoice)
+ sample = mTracks[0].mVoice->GetCurrentPlayingSample();
+
+ t1 = mPlayingDataBlockIndex - mPlayingBufferBlockIndex;
+ }
+ u32 t2 = t1 * mStrmInfo.blockSamples;
+ return t2 + sample;
+}
void StrmPlayer::InitParam()
{
@@ -836,6 +887,10 @@ void StrmPlayer::UpdateVoiceParams(StrmTrack *track)
fxsend[i] += GetFxSend(static_cast<AuxBus>(i));
}
+ f32 remoteOutVolume[4];
+ for (int i = 0; i < 4; i++)
+ remoteOutVolume[i] = GetRemoteOutVolume(i);
+
ut::AutoInterruptLock lock;
if (Voice *voice = track->mVoice)
@@ -857,6 +912,9 @@ void StrmPlayer::UpdateVoiceParams(StrmTrack *track)
voice->SetFxSend(bus, fxsend[i]);
}
+ for (int i = 0; i < 4; i++)
+ voice->SetRemoteOutVolume(i, remoteOutVolume[i]);
+
for (int i = 0; i < mVoiceOutCount; i++)
voice->SetVoiceOutParam(i, GetVoiceOutParam(i));
}
@@ -893,6 +951,9 @@ void StrmPlayer::UpdateBuffer()
if (!voice)
return;
+ if (!voice->IsRun())
+ return;
+
if (CheckDiskDriveError())
{
mLoadWaitFlag = true;