MxDSBuffer::SkipToData to 100%

This commit is contained in:
disinvite 2024-12-20 11:16:48 -05:00
parent 6f3f8c2ade
commit 3ce5aafd75

View File

@ -338,48 +338,52 @@ MxCore* MxDSBuffer::ReadChunk(MxDSBuffer* p_buffer, MxU32* p_chunkData, MxU16 p_
} }
// FUNCTION: LEGO1 0x100c6df0 // FUNCTION: LEGO1 0x100c6df0
// FUNCTION: BETA10 0x10157e0a
MxU8* MxDSBuffer::SkipToData() MxU8* MxDSBuffer::SkipToData()
{ {
MxU8* result = NULL; MxU8* result = NULL;
if (m_pIntoBuffer != NULL) { if (m_pIntoBuffer != NULL) {
do { while (TRUE) {
MxU32* ptr = (MxU32*) m_pIntoBuffer; switch (*(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', 'O', 'b'):
case FOURCC('M', 'x', 'C', 'h'): case FOURCC('M', 'x', 'C', 'h'):
result = m_pIntoBuffer; result = m_pIntoBuffer;
m_pIntoBuffer = (MxU8*) ((ptr[1] & 1) + ptr[1] + (MxU32) ptr); m_pIntoBuffer += (*(MxU32*) (m_pIntoBuffer + 4) & 1) + *(MxU32*) (m_pIntoBuffer + 4);
m_pIntoBuffer = (MxU8*) ((MxU32*) m_pIntoBuffer + 2); m_pIntoBuffer += 8;
if (m_pBuffer + (m_writeOffset - 8) < m_pIntoBuffer) {
m_pIntoBuffer2 = result; if (m_pBuffer + m_writeOffset - 8 < m_pIntoBuffer) {
m_pIntoBuffer = NULL; m_pIntoBuffer = NULL;
return result;
} }
goto done; goto done;
case FOURCC('M', 'x', 'D', 'a'): case FOURCC('M', 'x', 'D', 'a'):
case FOURCC('M', 'x', 'S', 't'): case FOURCC('M', 'x', 'S', 't'):
m_pIntoBuffer = (MxU8*) (ptr + 2); m_pIntoBuffer += 8;
break; break;
case FOURCC('M', 'x', 'H', 'd'): case FOURCC('M', 'x', 'H', 'd'):
m_pIntoBuffer = (MxU8*) ((MxU32) ptr + ptr[1] + 8); m_pIntoBuffer += *(MxU32*) (m_pIntoBuffer + 4) + 8;
break;
case FOURCC('L', 'I', 'S', 'T'):
case FOURCC('R', 'I', 'F', 'F'):
m_pIntoBuffer += 12;
break; break;
default: default:
m_pIntoBuffer = NULL; m_pIntoBuffer = NULL;
m_pIntoBuffer2 = NULL; result = NULL;
return NULL; goto done;
} }
} while (m_pIntoBuffer <= m_pBuffer + (m_writeOffset - 8));
if (m_pIntoBuffer > m_pBuffer + m_writeOffset - 8) {
m_pIntoBuffer = NULL;
goto done;
}
}
} }
done: done:
m_pIntoBuffer2 = result; m_pIntoBuffer2 = result;
return result; return result;
} }
// FUNCTION: LEGO1 0x100c6ec0 // FUNCTION: LEGO1 0x100c6ec0
MxU8 MxDSBuffer::ReleaseRef(MxDSChunk*) MxU8 MxDSBuffer::ReleaseRef(MxDSChunk*)
{ {