From bcd120f4367f93f9a7b47cc729ac79964d955eb5 Mon Sep 17 00:00:00 2001 From: Misha <106913236+MishaProductions@users.noreply.github.com> Date: Mon, 25 Dec 2023 15:44:22 -0500 Subject: [PATCH] improve match of SwapBuffers --- ISLE/isleapp.cpp | 2 +- LEGO1/mxdsbuffer.cpp | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/ISLE/isleapp.cpp b/ISLE/isleapp.cpp index ab0d2290..baf689ce 100644 --- a/ISLE/isleapp.cpp +++ b/ISLE/isleapp.cpp @@ -787,7 +787,7 @@ inline void IsleApp::Tick(BOOL sleepIfNotNextFrame) MxStreamController* stream = Streamer()->Open("\\lego\\scripts\\isle\\isle", MxStreamer::e_DiskStream); MxDSAction ds; - if (!stream) { + if (1) { stream = Streamer()->Open("\\lego\\scripts\\nocd", MxStreamer::e_DiskStream); if (!stream) { return; diff --git a/LEGO1/mxdsbuffer.cpp b/LEGO1/mxdsbuffer.cpp index 934533b8..a1209557 100644 --- a/LEGO1/mxdsbuffer.cpp +++ b/LEGO1/mxdsbuffer.cpp @@ -161,11 +161,11 @@ MxResult MxDSBuffer::FUN_100c67b0( if (buffer->GetRefCount() != 0) { // Note: *p_streamingAction is always null in MxRamStreamProvider - ((MxDiskStreamController*)p_controller)->InsertToList74(buffer); + ((MxDiskStreamController*) p_controller)->InsertToList74(buffer); (*p_streamingAction)->SetUnknowna0(NULL); } - ((MxDiskStreamController*)p_controller)->FUN_100c7cb0(*p_streamingAction); + ((MxDiskStreamController*) p_controller)->FUN_100c7cb0(*p_streamingAction); *p_streamingAction = NULL; result = SUCCESS; } @@ -300,6 +300,10 @@ MxU8* MxDSBuffer::SwapBuffers() do { MxU32* ptr = (MxU32*) m_pIntoBuffer; switch (*ptr) { + case FOURCC('L', 'I', 'S', 'T'): + case FOURCC('R', 'I', 'F', 'F'): + m_pIntoBuffer = (MxU8*) (ptr + 3); + break; case FOURCC('M', 'x', 'O', 'b'): case FOURCC('M', 'x', 'C', 'h'): result = m_pIntoBuffer; @@ -311,11 +315,17 @@ MxU8* MxDSBuffer::SwapBuffers() return result; } goto done; + case FOURCC('M', 'x', 'D', 'a'): case FOURCC('M', 'x', 'S', 't'): m_pIntoBuffer = (MxU8*) (ptr + 2); break; - default: + case FOURCC('M', 'x', 'H', 'd'): + m_pIntoBuffer = (MxU8*) ((MxU32) ptr + ptr[1] + 8); break; + default: + m_pIntoBuffer = NULL; + m_pIntoBuffer2 = NULL; + return NULL; } } while (m_pIntoBuffer <= m_pBuffer + (m_writeOffset - 8)); }