diff --git a/LEGO1/omni/include/mxloopingsmkpresenter.h b/LEGO1/omni/include/mxloopingsmkpresenter.h index 01200170..b1de63fe 100644 --- a/LEGO1/omni/include/mxloopingsmkpresenter.h +++ b/LEGO1/omni/include/mxloopingsmkpresenter.h @@ -25,12 +25,12 @@ public: return HandlerClassName(); } - void RepeatingTickle() override; // vtable+0x24 - MxResult AddToManager() override; // vtable+0x34 - void Destroy() override; // vtable+0x38 - void NextFrame() override; // vtable+0x64 - void VTable0x88() override; // vtable+0x88 - virtual void VTable0x8c(); // vtable+0x8c + void RepeatingTickle() override; // vtable+0x24 + MxResult AddToManager() override; // vtable+0x34 + void Destroy() override; // vtable+0x38 + void NextFrame() override; // vtable+0x64 + void ResetCurrentFrameAtEnd() override; // vtable+0x88 + virtual void LoadFrameIfRequired(); // vtable+0x8c private: void Init(); diff --git a/LEGO1/omni/include/mxsmkpresenter.h b/LEGO1/omni/include/mxsmkpresenter.h index 53f7831f..7becc7cc 100644 --- a/LEGO1/omni/include/mxsmkpresenter.h +++ b/LEGO1/omni/include/mxsmkpresenter.h @@ -38,7 +38,7 @@ public: void CreateBitmap() override; // vtable+0x60 void LoadFrame(MxStreamChunk* p_chunk) override; // vtable+0x68 void RealizePalette() override; // vtable+0x70 - virtual void VTable0x88(); // vtable+0x88 + virtual void ResetCurrentFrameAtEnd(); // vtable+0x88 // SYNTHETIC: LEGO1 0x100b3850 // MxSmkPresenter::`scalar deleting destructor' diff --git a/LEGO1/omni/src/video/mxloopingsmkpresenter.cpp b/LEGO1/omni/src/video/mxloopingsmkpresenter.cpp index 27d1f0b9..f23714a9 100644 --- a/LEGO1/omni/src/video/mxloopingsmkpresenter.cpp +++ b/LEGO1/omni/src/video/mxloopingsmkpresenter.cpp @@ -39,7 +39,7 @@ void MxLoopingSmkPresenter::Destroy(MxBool p_fromDestructor) } // FUNCTION: LEGO1 0x100b4a00 -void MxLoopingSmkPresenter::VTable0x88() +void MxLoopingSmkPresenter::ResetCurrentFrameAtEnd() { if (m_mxSmk.m_smackTag.Frames == m_currentFrame) { m_currentFrame = 0; @@ -66,7 +66,7 @@ void MxLoopingSmkPresenter::NextFrame() } // FUNCTION: LEGO1 0x100b4a90 -void MxLoopingSmkPresenter::VTable0x8c() +void MxLoopingSmkPresenter::LoadFrameIfRequired() { if (m_action->GetDuration() < m_elapsedDuration) { ProgressTickleState(e_freezing); @@ -110,7 +110,7 @@ void MxLoopingSmkPresenter::RepeatingTickle() break; } - VTable0x8c(); + LoadFrameIfRequired(); m_loopingChunkCursor->Next(chunk); diff --git a/LEGO1/omni/src/video/mxsmkpresenter.cpp b/LEGO1/omni/src/video/mxsmkpresenter.cpp index 748ad1df..9955faab 100644 --- a/LEGO1/omni/src/video/mxsmkpresenter.cpp +++ b/LEGO1/omni/src/video/mxsmkpresenter.cpp @@ -70,7 +70,7 @@ void MxSmkPresenter::LoadFrame(MxStreamChunk* p_chunk) MxBool paletteChanged = m_mxSmk.m_frameTypes[m_currentFrame] & 1; m_currentFrame++; - VTable0x88(); + ResetCurrentFrameAtEnd(); MxRect32List rects(TRUE); MxSmk::LoadFrame(bitmapInfo, bitmapData, &m_mxSmk, chunkData, paletteChanged, &rects); @@ -91,11 +91,11 @@ void MxSmkPresenter::LoadFrame(MxStreamChunk* p_chunk) } // FUNCTION: LEGO1 0x100b4260 -void MxSmkPresenter::VTable0x88() +void MxSmkPresenter::ResetCurrentFrameAtEnd() { if ((m_mxSmk.m_smackTag.SmackerType & 1) != 0) { - MxU32 und = (m_currentFrame % m_mxSmk.m_smackTag.Frames); - if (1 < m_currentFrame && und == 1) { + MxU32 validCurrentFrame = (m_currentFrame % m_mxSmk.m_smackTag.Frames); + if (1 < m_currentFrame && validCurrentFrame == 1) { m_currentFrame = 1; } }