MxDSBuffer::SkipToData to 100% (#1245)

* MxDSBuffer::SkipToData to 100%

* Add blank line
This commit is contained in:
MS
2024-12-20 13:23:24 -05:00
committed by GitHub
parent b338a66a77
commit bfc6d460a8

View File

@@ -338,42 +338,47 @@ 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;