diff --git a/LEGO1/mxomni.cpp b/LEGO1/mxomni.cpp index 3a9a2fe1..5c4cd79e 100644 --- a/LEGO1/mxomni.cpp +++ b/LEGO1/mxomni.cpp @@ -409,7 +409,7 @@ void MxOmni::StartTimer() { if (m_timerRunning == FALSE && m_timer != NULL && m_soundManager != NULL) { m_timer->Start(); - m_soundManager->vtable0x34(); + m_soundManager->Pause(); m_timerRunning = TRUE; } } @@ -419,7 +419,7 @@ void MxOmni::StopTimer() { if (m_timerRunning != FALSE && m_timer != NULL && m_soundManager != NULL) { m_timer->Stop(); - m_soundManager->vtable0x38(); + m_soundManager->Resume(); m_timerRunning = FALSE; } } diff --git a/LEGO1/mxsoundmanager.cpp b/LEGO1/mxsoundmanager.cpp index 8e32345e..5ed0cc7a 100644 --- a/LEGO1/mxsoundmanager.cpp +++ b/LEGO1/mxsoundmanager.cpp @@ -15,6 +15,9 @@ MxSoundManager::MxSoundManager() Init(); } +// OFFSET: LEGO1 0x100ae7b0 TEMPLATE +// MxSoundManager::`scalar deleting destructor' + // OFFSET: LEGO1 0x100ae7d0 MxSoundManager::~MxSoundManager() { @@ -176,7 +179,7 @@ MxS32 MxSoundManager::FUN_100aecf0(MxU32 p_unk) } // OFFSET: LEGO1 0x100aed10 -void MxSoundManager::vtable0x34() +void MxSoundManager::Pause() { MxAutoLocker lock(&m_criticalSection); @@ -185,11 +188,11 @@ void MxSoundManager::vtable0x34() while (cursor.Next(presenter)) if (presenter->IsA("MxWavePresenter")) - ((MxWavePresenter*) presenter)->VTable0x64(); + ((MxWavePresenter*) presenter)->Pause(); } // OFFSET: LEGO1 0x100aee10 -void MxSoundManager::vtable0x38() +void MxSoundManager::Resume() { MxAutoLocker lock(&m_criticalSection); @@ -198,5 +201,5 @@ void MxSoundManager::vtable0x38() while (cursor.Next(presenter)) if (presenter->IsA("MxWavePresenter")) - ((MxWavePresenter*) presenter)->VTable0x68(); + ((MxWavePresenter*) presenter)->Resume(); } diff --git a/LEGO1/mxsoundmanager.h b/LEGO1/mxsoundmanager.h index a4aa161f..671943c6 100644 --- a/LEGO1/mxsoundmanager.h +++ b/LEGO1/mxsoundmanager.h @@ -12,16 +12,13 @@ class MxSoundManager : public MxAudioManager { public: MxSoundManager(); - - // OFFSET: LEGO1 0x100ae7b0 TEMPLATE - // MxSoundManager::`scalar deleting destructor' virtual ~MxSoundManager() override; // vtable+0x0 - virtual void Destroy() override; // vtable+18 - virtual void SetVolume(MxS32 p_volume) override; // vtable+2c + virtual void Destroy() override; // vtable+0x18 + virtual void SetVolume(MxS32 p_volume) override; // vtable+0x2c virtual MxResult Create(MxU32 p_frequencyMS, MxBool p_createThread); // vtable+0x30 - virtual void vtable0x34(); // vtable+0x34 - virtual void vtable0x38(); // vtable+0x38 + virtual void Pause(); // vtable+0x34 + virtual void Resume(); // vtable+0x38 inline LPDIRECTSOUND GetDirectSound() { return m_directSound; } diff --git a/LEGO1/mxwavepresenter.cpp b/LEGO1/mxwavepresenter.cpp index c86f277c..1df006c1 100644 --- a/LEGO1/mxwavepresenter.cpp +++ b/LEGO1/mxwavepresenter.cpp @@ -24,9 +24,9 @@ void MxWavePresenter::Destroy() } // OFFSET: LEGO1 0x1000d6b0 -MxBool MxWavePresenter::VTable0x6c() +MxBool MxWavePresenter::IsPaused() { - return m_unk68; + return m_paused; } // OFFSET: LEGO1 0x100b1ad0 @@ -37,9 +37,9 @@ void MxWavePresenter::Init() m_chunkLength = 0; m_lockSize = 0; m_writtenChunks = 0; - m_playing = FALSE; + m_started = FALSE; m_unk66 = FALSE; - m_unk68 = FALSE; + m_paused = FALSE; } // OFFSET: LEGO1 0x100b1af0 @@ -82,7 +82,7 @@ MxS8 MxWavePresenter::GetPlayedChunks() // OFFSET: LEGO1 0x100b1ba0 MxBool MxWavePresenter::FUN_100b1ba0() { - return !m_playing || GetPlayedChunks() != m_writtenChunks; + return !m_started || GetPlayedChunks() != m_writtenChunks; } // OFFSET: LEGO1 0x100b1bd0 @@ -258,21 +258,21 @@ undefined4 MxWavePresenter::PutData() m_currentChunk = NULL; } - if (!m_playing) { + if (!m_started) { m_dsBuffer->SetCurrentPosition(0); if (m_dsBuffer->Play(0, 0, DSBPLAY_LOOPING) == DS_OK) - m_playing = TRUE; + m_started = TRUE; } break; case TickleState_Repeating: - if (m_playing) + if (m_started) break; m_dsBuffer->SetCurrentPosition(0); if (m_dsBuffer->Play(0, 0, m_action->GetLoopCount() > 1) == DS_OK) - m_playing = TRUE; + m_started = TRUE; } } @@ -314,7 +314,7 @@ void MxWavePresenter::Enable(MxBool p_enable) if (p_enable) { m_writtenChunks = 0; - m_playing = FALSE; + m_started = FALSE; } else if (m_dsBuffer) m_dsBuffer->Stop(); @@ -344,20 +344,20 @@ void MxWavePresenter::ParseExtra() } // OFFSET: LEGO1 0x100b2440 -void MxWavePresenter::VTable0x64() +void MxWavePresenter::Pause() { - if (!m_unk68 && m_playing) { + if (!m_paused && m_started) { if (m_dsBuffer) m_dsBuffer->Stop(); - m_unk68 = TRUE; + m_paused = TRUE; } } // OFFSET: LEGO1 0x100b2470 -void MxWavePresenter::VTable0x68() +void MxWavePresenter::Resume() { - if (m_unk68) { - if (m_dsBuffer && m_playing) { + if (m_paused) { + if (m_dsBuffer && m_started) { switch (m_currentTickleState) { case TickleState_Streaming: m_dsBuffer->Play(0, 0, DSBPLAY_LOOPING); @@ -370,6 +370,6 @@ void MxWavePresenter::VTable0x68() } } - m_unk68 = FALSE; + m_paused = FALSE; } } diff --git a/LEGO1/mxwavepresenter.h b/LEGO1/mxwavepresenter.h index 80a7fabe..ca58c03c 100644 --- a/LEGO1/mxwavepresenter.h +++ b/LEGO1/mxwavepresenter.h @@ -38,9 +38,9 @@ class MxWavePresenter : public MxSoundPresenter { virtual void Enable(MxBool p_enable) override; // vtable+0x54 virtual void AppendChunk(MxStreamChunk* p_chunk) override; // vtable+0x58 virtual void SetVolume(MxS32 p_volume) override; // vtable+0x60 - virtual void VTable0x64(); // vtable+0x64 - virtual void VTable0x68(); // vtable+0x68 - virtual MxBool VTable0x6c(); // vtable+0x6c + virtual void Pause(); // vtable+0x64 + virtual void Resume(); // vtable+0x68 + virtual MxBool IsPaused(); // vtable+0x6c // Reference: https://github.com/itsmattkc/SIEdit/blob/master/lib/othertypes.h // SIZE 0x1c @@ -62,10 +62,10 @@ class MxWavePresenter : public MxSoundPresenter { MxU32 m_chunkLength; // 0x5c MxU32 m_lockSize; // 0x60 MxU8 m_writtenChunks; // 0x64 - MxBool m_playing; // 0x65 + MxBool m_started; // 0x65 MxBool m_unk66; // 0x66 MxS8 m_silenceData; // 0x67 - MxBool m_unk68; // 0x68 + MxBool m_paused; // 0x68 }; #endif // MXWAVEPRESENTER_H