Clear unknowns in MxSmkPresenter and MxLoopingSmkPresenter (#1658)

This commit is contained in:
Fabian Neundorf
2025-07-27 17:27:51 +02:00
committed by GitHub
parent 0442fadc0e
commit 9f242021a4
4 changed files with 14 additions and 14 deletions

View File

@@ -29,8 +29,8 @@ public:
MxResult AddToManager() override; // vtable+0x34 MxResult AddToManager() override; // vtable+0x34
void Destroy() override; // vtable+0x38 void Destroy() override; // vtable+0x38
void NextFrame() override; // vtable+0x64 void NextFrame() override; // vtable+0x64
void VTable0x88() override; // vtable+0x88 void ResetCurrentFrameAtEnd() override; // vtable+0x88
virtual void VTable0x8c(); // vtable+0x8c virtual void LoadFrameIfRequired(); // vtable+0x8c
private: private:
void Init(); void Init();

View File

@@ -38,7 +38,7 @@ public:
void CreateBitmap() override; // vtable+0x60 void CreateBitmap() override; // vtable+0x60
void LoadFrame(MxStreamChunk* p_chunk) override; // vtable+0x68 void LoadFrame(MxStreamChunk* p_chunk) override; // vtable+0x68
void RealizePalette() override; // vtable+0x70 void RealizePalette() override; // vtable+0x70
virtual void VTable0x88(); // vtable+0x88 virtual void ResetCurrentFrameAtEnd(); // vtable+0x88
// SYNTHETIC: LEGO1 0x100b3850 // SYNTHETIC: LEGO1 0x100b3850
// MxSmkPresenter::`scalar deleting destructor' // MxSmkPresenter::`scalar deleting destructor'

View File

@@ -39,7 +39,7 @@ void MxLoopingSmkPresenter::Destroy(MxBool p_fromDestructor)
} }
// FUNCTION: LEGO1 0x100b4a00 // FUNCTION: LEGO1 0x100b4a00
void MxLoopingSmkPresenter::VTable0x88() void MxLoopingSmkPresenter::ResetCurrentFrameAtEnd()
{ {
if (m_mxSmk.m_smackTag.Frames == m_currentFrame) { if (m_mxSmk.m_smackTag.Frames == m_currentFrame) {
m_currentFrame = 0; m_currentFrame = 0;
@@ -66,7 +66,7 @@ void MxLoopingSmkPresenter::NextFrame()
} }
// FUNCTION: LEGO1 0x100b4a90 // FUNCTION: LEGO1 0x100b4a90
void MxLoopingSmkPresenter::VTable0x8c() void MxLoopingSmkPresenter::LoadFrameIfRequired()
{ {
if (m_action->GetDuration() < m_elapsedDuration) { if (m_action->GetDuration() < m_elapsedDuration) {
ProgressTickleState(e_freezing); ProgressTickleState(e_freezing);
@@ -110,7 +110,7 @@ void MxLoopingSmkPresenter::RepeatingTickle()
break; break;
} }
VTable0x8c(); LoadFrameIfRequired();
m_loopingChunkCursor->Next(chunk); m_loopingChunkCursor->Next(chunk);

View File

@@ -70,7 +70,7 @@ void MxSmkPresenter::LoadFrame(MxStreamChunk* p_chunk)
MxBool paletteChanged = m_mxSmk.m_frameTypes[m_currentFrame] & 1; MxBool paletteChanged = m_mxSmk.m_frameTypes[m_currentFrame] & 1;
m_currentFrame++; m_currentFrame++;
VTable0x88(); ResetCurrentFrameAtEnd();
MxRect32List rects(TRUE); MxRect32List rects(TRUE);
MxSmk::LoadFrame(bitmapInfo, bitmapData, &m_mxSmk, chunkData, paletteChanged, &rects); MxSmk::LoadFrame(bitmapInfo, bitmapData, &m_mxSmk, chunkData, paletteChanged, &rects);
@@ -91,11 +91,11 @@ void MxSmkPresenter::LoadFrame(MxStreamChunk* p_chunk)
} }
// FUNCTION: LEGO1 0x100b4260 // FUNCTION: LEGO1 0x100b4260
void MxSmkPresenter::VTable0x88() void MxSmkPresenter::ResetCurrentFrameAtEnd()
{ {
if ((m_mxSmk.m_smackTag.SmackerType & 1) != 0) { if ((m_mxSmk.m_smackTag.SmackerType & 1) != 0) {
MxU32 und = (m_currentFrame % m_mxSmk.m_smackTag.Frames); MxU32 validCurrentFrame = (m_currentFrame % m_mxSmk.m_smackTag.Frames);
if (1 < m_currentFrame && und == 1) { if (1 < m_currentFrame && validCurrentFrame == 1) {
m_currentFrame = 1; m_currentFrame = 1;
} }
} }