mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-11 10:41:16 +00:00
Match MxDSBuffer::FUN_100c6fa0 (#1699)
This commit is contained in:
parent
dfffb873ed
commit
ae9d1cbb2b
@ -456,31 +456,34 @@ void MxDSBuffer::FUN_100c6f80(MxU32 p_writeOffset)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100c6fa0
|
// FUNCTION: LEGO1 0x100c6fa0
|
||||||
|
// FUNCTION: BETA10 0x101582f2
|
||||||
MxU8* MxDSBuffer::FUN_100c6fa0(MxU8* p_data)
|
MxU8* MxDSBuffer::FUN_100c6fa0(MxU8* p_data)
|
||||||
{
|
{
|
||||||
MxU8* current = p_data ? p_data : m_pBuffer;
|
MxU8* volatile current = p_data ? p_data : m_pBuffer;
|
||||||
MxU8* end = m_writeOffset + m_pBuffer - 8;
|
|
||||||
|
|
||||||
while (current <= end) {
|
while (current <= m_writeOffset + m_pBuffer - 8) {
|
||||||
switch (*((MxU32*) current)) {
|
switch (*(MxU32*) current) {
|
||||||
case FOURCC('L', 'I', 'S', 'T'):
|
case FOURCC('M', 'x', 'O', 'b'):
|
||||||
case FOURCC('R', 'I', 'F', 'F'):
|
case FOURCC('M', 'x', 'C', 'h'):
|
||||||
current += 12;
|
if (current == p_data) {
|
||||||
|
MxU32 size = *(MxU32*) (current + 4);
|
||||||
|
current += (size & 1) + size;
|
||||||
|
current += 8;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return current;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case FOURCC('M', 'x', 'D', 'a'):
|
case FOURCC('M', 'x', 'D', 'a'):
|
||||||
case FOURCC('M', 'x', 'S', 't'):
|
case FOURCC('M', 'x', 'S', 't'):
|
||||||
current += 8;
|
current += 8;
|
||||||
break;
|
break;
|
||||||
case FOURCC('M', 'x', 'O', 'b'):
|
|
||||||
case FOURCC('M', 'x', 'C', 'h'):
|
|
||||||
if (current != p_data) {
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
current = ((MxU32) current & 1) + current;
|
|
||||||
current += 8;
|
|
||||||
break;
|
|
||||||
case FOURCC('M', 'x', 'H', 'd'):
|
case FOURCC('M', 'x', 'H', 'd'):
|
||||||
current += (((MxU32*) current)[1] + 8);
|
current += *(MxU32*) (current + 4) + 8;
|
||||||
|
break;
|
||||||
|
case FOURCC('L', 'I', 'S', 'T'):
|
||||||
|
case FOURCC('R', 'I', 'F', 'F'):
|
||||||
|
current += 12;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user