mirror of
https://github.com/isledecomp/isle.git
synced 2026-05-05 14:33:56 +00:00
Match functions
This commit is contained in:
parent
8bee9cf71e
commit
eb28255430
@ -731,7 +731,7 @@ void SetOmniUserMessage(void (*p_userMsg)(const char*, int))
|
|||||||
// FUNCTION: LEGO1 0x100c0280
|
// FUNCTION: LEGO1 0x100c0280
|
||||||
MxDSObject* CreateStreamObject(MxDSFile* p_file, MxS16 p_ofs)
|
MxDSObject* CreateStreamObject(MxDSFile* p_file, MxS16 p_ofs)
|
||||||
{
|
{
|
||||||
char* buf;
|
MxU8* buf;
|
||||||
_MMCKINFO tmpChunk;
|
_MMCKINFO tmpChunk;
|
||||||
|
|
||||||
if (p_file->Seek(((MxLong*) p_file->GetBuffer())[p_ofs], 0)) {
|
if (p_file->Seek(((MxLong*) p_file->GetBuffer())[p_ofs], 0)) {
|
||||||
@ -741,18 +741,18 @@ MxDSObject* CreateStreamObject(MxDSFile* p_file, MxS16 p_ofs)
|
|||||||
if (p_file->Read((MxU8*) &tmpChunk.ckid, 8) == 0 && tmpChunk.ckid == FOURCC('M', 'x', 'S', 't')) {
|
if (p_file->Read((MxU8*) &tmpChunk.ckid, 8) == 0 && tmpChunk.ckid == FOURCC('M', 'x', 'S', 't')) {
|
||||||
if (p_file->Read((MxU8*) &tmpChunk.ckid, 8) == 0 && tmpChunk.ckid == FOURCC('M', 'x', 'O', 'b')) {
|
if (p_file->Read((MxU8*) &tmpChunk.ckid, 8) == 0 && tmpChunk.ckid == FOURCC('M', 'x', 'O', 'b')) {
|
||||||
|
|
||||||
buf = new char[tmpChunk.cksize];
|
buf = new MxU8[tmpChunk.cksize];
|
||||||
if (!buf) {
|
if (!buf) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p_file->Read((MxU8*) buf, tmpChunk.cksize) != 0) {
|
if (p_file->Read(buf, tmpChunk.cksize) != 0) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save a copy so we can clean up properly, because
|
// Save a copy so we can clean up properly, because
|
||||||
// this function will alter the pointer value.
|
// this function will alter the pointer value.
|
||||||
char* copy = buf;
|
MxU8* copy = buf;
|
||||||
MxDSObject* obj = DeserializeDSObjectDispatch(&buf, -1);
|
MxDSObject* obj = DeserializeDSObjectDispatch(&buf, -1);
|
||||||
delete[] copy;
|
delete[] copy;
|
||||||
return obj;
|
return obj;
|
||||||
|
|||||||
@ -27,7 +27,7 @@ inline T Max(T p_t1, T p_t2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
inline void GetScalar(char** p_source, T& p_dest)
|
inline void GetScalar(MxU8** p_source, T& p_dest)
|
||||||
{
|
{
|
||||||
p_dest = *(T*) *p_source;
|
p_dest = *(T*) *p_source;
|
||||||
*p_source += sizeof(T);
|
*p_source += sizeof(T);
|
||||||
@ -42,16 +42,16 @@ inline T GetScalar(T** p_source)
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
inline void GetDouble(char** p_source, T& p_dest)
|
inline void GetDouble(MxU8** p_source, T& p_dest)
|
||||||
{
|
{
|
||||||
p_dest = *(double*) *p_source;
|
p_dest = *(double*) *p_source;
|
||||||
*p_source += sizeof(double);
|
*p_source += sizeof(double);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
inline void GetString(char** p_source, const char* p_dest, T* p_obj, void (T::*p_setter)(const char*))
|
inline void GetString(MxU8** p_source, const char* p_dest, T* p_obj, void (T::*p_setter)(const char*))
|
||||||
{
|
{
|
||||||
(p_obj->*p_setter)(*p_source);
|
(p_obj->*p_setter)((char*) *p_source);
|
||||||
*p_source += strlen(p_dest) + 1;
|
*p_source += strlen(p_dest) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -205,7 +205,7 @@ void MxDSAction::AppendData(MxU16 p_extraLength, const char* p_extraData)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100adf70
|
// FUNCTION: LEGO1 0x100adf70
|
||||||
void MxDSAction::Deserialize(char** p_source, MxS16 p_unk0x24)
|
void MxDSAction::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
|
||||||
{
|
{
|
||||||
MxDSObject::Deserialize(p_source, p_unk0x24);
|
MxDSObject::Deserialize(p_source, p_unk0x24);
|
||||||
|
|
||||||
@ -225,7 +225,7 @@ void MxDSAction::Deserialize(char** p_source, MxS16 p_unk0x24)
|
|||||||
|
|
||||||
MxU16 extraLength = GetScalar((MxU16**) p_source);
|
MxU16 extraLength = GetScalar((MxU16**) p_source);
|
||||||
if (extraLength) {
|
if (extraLength) {
|
||||||
AppendData(extraLength, *p_source);
|
AppendData(extraLength, (char*) *p_source);
|
||||||
*p_source += extraLength;
|
*p_source += extraLength;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -44,7 +44,7 @@ class MxDSAction : public MxDSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual MxU32 GetSizeOnDisk() override; // vtable+18;
|
virtual MxU32 GetSizeOnDisk() override; // vtable+18;
|
||||||
virtual void Deserialize(char** p_source, MxS16 p_unk0x24) override; // vtable+1c;
|
virtual void Deserialize(MxU8** p_source, MxS16 p_unk0x24) override; // vtable+1c;
|
||||||
virtual MxLong GetDuration(); // vtable+24;
|
virtual MxLong GetDuration(); // vtable+24;
|
||||||
virtual void SetDuration(MxLong p_duration); // vtable+28;
|
virtual void SetDuration(MxLong p_duration); // vtable+28;
|
||||||
virtual MxDSAction* Clone(); // vtable+2c;
|
virtual MxDSAction* Clone(); // vtable+2c;
|
||||||
|
|||||||
@ -130,33 +130,38 @@ MxResult MxDSBuffer::FUN_100c67b0(MxStreamController* p_controller, MxDSAction*
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100c68a0
|
// FUNCTION: LEGO1 0x100c68a0
|
||||||
MxResult MxDSBuffer::CreateObject(MxStreamController* p_controller, MxU32* p_data, MxDSAction* p_action, undefined4)
|
MxResult MxDSBuffer::CreateObject(
|
||||||
|
MxStreamController* p_controller,
|
||||||
|
MxU32* p_data,
|
||||||
|
MxDSAction* p_action,
|
||||||
|
undefined4 p_undefined
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (p_data == NULL) {
|
if (p_data == NULL) {
|
||||||
return FAILURE;
|
return FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
MxCore* header = ReadChunk(p_data, p_action->GetUnknown24());
|
MxCore* header = ReadChunk(this, p_data, p_action->GetUnknown24());
|
||||||
|
|
||||||
if (header == NULL) {
|
if (header == NULL) {
|
||||||
return FAILURE;
|
return FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (*p_data) {
|
if (*p_data == FOURCC('M', 'x', 'O', 'b'))
|
||||||
case FOURCC('M', 'x', 'C', 'h'):
|
return StartPresenterFromAction(p_controller, p_action, (MxDSAction*) header);
|
||||||
if (!m_unk0x30->HasId(((MxStreamChunk*) header)->GetObjectId())) {
|
else if (*p_data == FOURCC('M', 'x', 'C', 'h')) {
|
||||||
|
MxStreamChunk* chunk = (MxStreamChunk*) header;
|
||||||
|
if (!m_unk0x30->HasId((chunk)->GetObjectId())) {
|
||||||
delete header;
|
delete header;
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ParseChunk(p_controller, p_data, p_action, (MxStreamChunk*) header);
|
return ParseChunk(p_controller, p_data, p_action, p_undefined, chunk);
|
||||||
case FOURCC('M', 'x', 'O', 'b'):
|
}
|
||||||
return StartPresenterFromAction(p_controller, p_action, (MxDSAction*) header);
|
|
||||||
default:
|
|
||||||
delete header;
|
delete header;
|
||||||
return FAILURE;
|
return FAILURE;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100c6960
|
// FUNCTION: LEGO1 0x100c6960
|
||||||
MxResult MxDSBuffer::StartPresenterFromAction(
|
MxResult MxDSBuffer::StartPresenterFromAction(
|
||||||
@ -201,15 +206,16 @@ MxResult MxDSBuffer::ParseChunk(
|
|||||||
MxStreamController* p_controller,
|
MxStreamController* p_controller,
|
||||||
MxU32* p_data,
|
MxU32* p_data,
|
||||||
MxDSAction* p_action,
|
MxDSAction* p_action,
|
||||||
|
undefined4,
|
||||||
MxStreamChunk* p_header
|
MxStreamChunk* p_header
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// TODO STUB
|
// TODO
|
||||||
return FAILURE;
|
return FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100c6d00
|
// FUNCTION: LEGO1 0x100c6d00
|
||||||
MxCore* MxDSBuffer::ReadChunk(MxU32* p_chunkData, MxU16 p_flags)
|
MxCore* MxDSBuffer::ReadChunk(MxDSBuffer* p_buffer, MxU32* p_chunkData, MxU16 p_flags)
|
||||||
{
|
{
|
||||||
// This function reads a chunk. If it is an object, this function returns an MxDSObject. If it is a chunk, returns a
|
// This function reads a chunk. If it is an object, this function returns an MxDSObject. If it is a chunk, returns a
|
||||||
// MxDSChunk.
|
// MxDSChunk.
|
||||||
@ -218,16 +224,17 @@ MxCore* MxDSBuffer::ReadChunk(MxU32* p_chunkData, MxU16 p_flags)
|
|||||||
|
|
||||||
switch (*p_chunkData) {
|
switch (*p_chunkData) {
|
||||||
case FOURCC('M', 'x', 'O', 'b'):
|
case FOURCC('M', 'x', 'O', 'b'):
|
||||||
result = DeserializeDSObjectDispatch((char**) &dataStart, p_flags);
|
result = DeserializeDSObjectDispatch(&dataStart, p_flags);
|
||||||
break;
|
break;
|
||||||
case FOURCC('M', 'x', 'C', 'h'):
|
case FOURCC('M', 'x', 'C', 'h'):
|
||||||
result = new MxStreamChunk();
|
result = new MxStreamChunk();
|
||||||
if (result != NULL && ((MxStreamChunk*) result)->ReadChunk(this, (MxU8*) p_chunkData) != SUCCESS) {
|
if (result != NULL && ((MxStreamChunk*) result)->ReadChunk(p_buffer, (MxU8*) p_chunkData) != SUCCESS) {
|
||||||
delete result;
|
delete result;
|
||||||
result = NULL;
|
result = NULL;
|
||||||
}
|
}
|
||||||
break;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -34,10 +34,21 @@ class MxDSBuffer : public MxCore {
|
|||||||
MxResult AllocateBuffer(MxU32 p_bufferSize, MxDSBufferType p_mode);
|
MxResult AllocateBuffer(MxU32 p_bufferSize, MxDSBufferType p_mode);
|
||||||
MxResult SetBufferPointer(MxU32* p_buffer, MxU32 p_size);
|
MxResult SetBufferPointer(MxU32* p_buffer, MxU32 p_size);
|
||||||
MxResult FUN_100c67b0(MxStreamController* p_controller, MxDSAction* p_action, undefined4*);
|
MxResult FUN_100c67b0(MxStreamController* p_controller, MxDSAction* p_action, undefined4*);
|
||||||
MxResult CreateObject(MxStreamController* p_controller, MxU32* p_data, MxDSAction* p_action, undefined4);
|
MxResult CreateObject(
|
||||||
|
MxStreamController* p_controller,
|
||||||
|
MxU32* p_data,
|
||||||
|
MxDSAction* p_action,
|
||||||
|
undefined4 p_undefined
|
||||||
|
);
|
||||||
MxResult StartPresenterFromAction(MxStreamController* p_controller, MxDSAction* p_action1, MxDSAction* p_action2);
|
MxResult StartPresenterFromAction(MxStreamController* p_controller, MxDSAction* p_action1, MxDSAction* p_action2);
|
||||||
MxResult ParseChunk(MxStreamController* p_controller, MxU32* p_data, MxDSAction* p_action, MxStreamChunk* p_header);
|
MxResult ParseChunk(
|
||||||
MxCore* ReadChunk(MxU32* p_chunkData, MxU16 p_flags);
|
MxStreamController* p_controller,
|
||||||
|
MxU32* p_data,
|
||||||
|
MxDSAction* p_action,
|
||||||
|
undefined4,
|
||||||
|
MxStreamChunk* p_header
|
||||||
|
);
|
||||||
|
static MxCore* ReadChunk(MxDSBuffer* p_buffer, MxU32* p_chunkData, MxU16 p_flags);
|
||||||
MxU8 ReleaseRef(MxDSChunk*);
|
MxU8 ReleaseRef(MxDSChunk*);
|
||||||
void AddRef(MxDSChunk* p_chunk);
|
void AddRef(MxDSChunk* p_chunk);
|
||||||
void FUN_100c6f80(MxU32 p_writeOffset);
|
void FUN_100c6f80(MxU32 p_writeOffset);
|
||||||
|
|||||||
@ -7,7 +7,7 @@ MxDSChunk::MxDSChunk()
|
|||||||
{
|
{
|
||||||
m_flags = 0;
|
m_flags = 0;
|
||||||
m_data = NULL;
|
m_data = NULL;
|
||||||
m_objectid = -1;
|
m_objectId = -1;
|
||||||
m_time = 0;
|
m_time = 0;
|
||||||
m_length = 0;
|
m_length = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,7 +34,7 @@ class MxDSChunk : public MxCore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline void SetFlags(MxU16 p_flags) { m_flags = p_flags; }
|
inline void SetFlags(MxU16 p_flags) { m_flags = p_flags; }
|
||||||
inline void SetObjectId(undefined4 p_objectid) { m_objectid = p_objectid; }
|
inline void SetObjectId(undefined4 p_objectid) { m_objectId = p_objectid; }
|
||||||
inline void SetTime(MxLong p_time) { m_time = p_time; }
|
inline void SetTime(MxLong p_time) { m_time = p_time; }
|
||||||
inline void SetLength(MxU32 p_length) { m_length = p_length; }
|
inline void SetLength(MxU32 p_length) { m_length = p_length; }
|
||||||
inline void SetData(MxU8* p_data) { m_data = p_data; }
|
inline void SetData(MxU8* p_data) { m_data = p_data; }
|
||||||
@ -44,7 +44,7 @@ class MxDSChunk : public MxCore {
|
|||||||
inline MxU32 GetLength() { return m_length; }
|
inline MxU32 GetLength() { return m_length; }
|
||||||
inline MxU8* GetData() { return m_data; }
|
inline MxU8* GetData() { return m_data; }
|
||||||
|
|
||||||
inline undefined4 GetObjectId() { return m_objectid; }
|
inline undefined4 GetObjectId() { return m_objectId; }
|
||||||
|
|
||||||
inline void Release()
|
inline void Release()
|
||||||
{
|
{
|
||||||
@ -52,9 +52,9 @@ class MxDSChunk : public MxCore {
|
|||||||
delete[] m_data;
|
delete[] m_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
MxU16 m_flags; // 0x8
|
MxU16 m_flags; // 0x8
|
||||||
undefined4 m_objectid; // 0xc
|
undefined4 m_objectId; // 0xc
|
||||||
MxLong m_time; // 0x10
|
MxLong m_time; // 0x10
|
||||||
MxU32 m_length; // 0x14
|
MxU32 m_length; // 0x14
|
||||||
MxU8* m_data; // 0x18
|
MxU8* m_data; // 0x18
|
||||||
|
|||||||
@ -80,7 +80,7 @@ MxU32 MxDSMediaAction::GetSizeOnDisk()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100c8f60
|
// FUNCTION: LEGO1 0x100c8f60
|
||||||
void MxDSMediaAction::Deserialize(char** p_source, MxS16 p_unk0x24)
|
void MxDSMediaAction::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
|
||||||
{
|
{
|
||||||
MxDSAction::Deserialize(p_source, p_unk0x24);
|
MxDSAction::Deserialize(p_source, p_unk0x24);
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@ class MxDSMediaAction : public MxDSAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual MxU32 GetSizeOnDisk() override; // vtable+18;
|
virtual MxU32 GetSizeOnDisk() override; // vtable+18;
|
||||||
virtual void Deserialize(char** p_source, MxS16 p_unk0x24) override; // vtable+1c;
|
virtual void Deserialize(MxU8** p_source, MxS16 p_unk0x24) override; // vtable+1c;
|
||||||
|
|
||||||
void CopyMediaSrcPath(const char* p_mediaSrcPath);
|
void CopyMediaSrcPath(const char* p_mediaSrcPath);
|
||||||
|
|
||||||
|
|||||||
@ -117,7 +117,7 @@ MxU32 MxDSMultiAction::GetSizeOnDisk()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100ca7b0
|
// FUNCTION: LEGO1 0x100ca7b0
|
||||||
void MxDSMultiAction::Deserialize(char** p_source, MxS16 p_unk0x24)
|
void MxDSMultiAction::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
|
||||||
{
|
{
|
||||||
MxDSAction::Deserialize(p_source, p_unk0x24);
|
MxDSAction::Deserialize(p_source, p_unk0x24);
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@ class MxDSMultiAction : public MxDSAction {
|
|||||||
|
|
||||||
virtual undefined4 VTable0x14() override; // vtable+14;
|
virtual undefined4 VTable0x14() override; // vtable+14;
|
||||||
virtual MxU32 GetSizeOnDisk() override; // vtable+18;
|
virtual MxU32 GetSizeOnDisk() override; // vtable+18;
|
||||||
virtual void Deserialize(char** p_source, MxS16 p_unk0x24) override; // vtable+1c;
|
virtual void Deserialize(MxU8** p_source, MxS16 p_unk0x24) override; // vtable+1c;
|
||||||
virtual void SetAtomId(MxAtomId p_atomId) override; // vtable+20;
|
virtual void SetAtomId(MxAtomId p_atomId) override; // vtable+20;
|
||||||
virtual MxDSAction* Clone() override; // vtable+2c;
|
virtual MxDSAction* Clone() override; // vtable+2c;
|
||||||
virtual void MergeFrom(MxDSAction& p_dsAction) override; // vtable+30;
|
virtual void MergeFrom(MxDSAction& p_dsAction) override; // vtable+30;
|
||||||
|
|||||||
@ -127,7 +127,7 @@ MxU32 MxDSObject::GetSizeOnDisk()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100bfa20
|
// FUNCTION: LEGO1 0x100bfa20
|
||||||
void MxDSObject::Deserialize(char** p_source, MxS16 p_unk0x24)
|
void MxDSObject::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
|
||||||
{
|
{
|
||||||
GetString(p_source, this->m_sourceName, this, &MxDSObject::SetSourceName);
|
GetString(p_source, this->m_sourceName, this, &MxDSObject::SetSourceName);
|
||||||
GetScalar(p_source, this->m_unk0x14);
|
GetScalar(p_source, this->m_unk0x14);
|
||||||
@ -138,7 +138,7 @@ void MxDSObject::Deserialize(char** p_source, MxS16 p_unk0x24)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100bfb30
|
// FUNCTION: LEGO1 0x100bfb30
|
||||||
MxDSObject* DeserializeDSObjectDispatch(char** p_source, MxS16 p_flags)
|
MxDSObject* DeserializeDSObjectDispatch(MxU8** p_source, MxS16 p_flags)
|
||||||
{
|
{
|
||||||
MxU16 type = *(MxU16*) *p_source;
|
MxU16 type = *(MxU16*) *p_source;
|
||||||
*p_source += 2;
|
*p_source += 2;
|
||||||
|
|||||||
@ -32,7 +32,7 @@ class MxDSObject : public MxCore {
|
|||||||
|
|
||||||
virtual undefined4 VTable0x14(); // vtable+14;
|
virtual undefined4 VTable0x14(); // vtable+14;
|
||||||
virtual MxU32 GetSizeOnDisk(); // vtable+18;
|
virtual MxU32 GetSizeOnDisk(); // vtable+18;
|
||||||
virtual void Deserialize(char** p_source, MxS16 p_unk0x24); // vtable+1c;
|
virtual void Deserialize(MxU8** p_source, MxS16 p_unk0x24); // vtable+1c;
|
||||||
inline virtual void SetAtomId(MxAtomId p_atomId) { this->m_atomId = p_atomId; } // vtable+20;
|
inline virtual void SetAtomId(MxAtomId p_atomId) { this->m_atomId = p_atomId; } // vtable+20;
|
||||||
|
|
||||||
inline MxDSType GetType() const { return (MxDSType) this->m_type; }
|
inline MxDSType GetType() const { return (MxDSType) this->m_type; }
|
||||||
@ -61,7 +61,7 @@ class MxDSObject : public MxCore {
|
|||||||
MxPresenter* m_unk0x28; // 0x28
|
MxPresenter* m_unk0x28; // 0x28
|
||||||
};
|
};
|
||||||
|
|
||||||
MxDSObject* DeserializeDSObjectDispatch(char**, MxS16);
|
MxDSObject* DeserializeDSObjectDispatch(MxU8**, MxS16);
|
||||||
|
|
||||||
// FUNCTION: ISLE 0x401c40
|
// FUNCTION: ISLE 0x401c40
|
||||||
// MxDSObject::SetAtomId
|
// MxDSObject::SetAtomId
|
||||||
|
|||||||
@ -74,7 +74,7 @@ MxU32 MxDSSelectAction::GetSizeOnDisk()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100cbf60
|
// FUNCTION: LEGO1 0x100cbf60
|
||||||
void MxDSSelectAction::Deserialize(char** p_source, MxS16 p_unk0x24)
|
void MxDSSelectAction::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
|
||||||
{
|
{
|
||||||
MxString string;
|
MxString string;
|
||||||
MxDSAction::Deserialize(p_source, p_unk0x24);
|
MxDSAction::Deserialize(p_source, p_unk0x24);
|
||||||
@ -82,7 +82,7 @@ void MxDSSelectAction::Deserialize(char** p_source, MxS16 p_unk0x24)
|
|||||||
MxU32 extraFlag = *(MxU32*) (*p_source + 4) & 1;
|
MxU32 extraFlag = *(MxU32*) (*p_source + 4) & 1;
|
||||||
*p_source += 12;
|
*p_source += 12;
|
||||||
|
|
||||||
this->m_unk0x9c = *p_source;
|
this->m_unk0x9c = (char*) *p_source;
|
||||||
|
|
||||||
if (!strnicmp(this->m_unk0x9c.GetData(), "RANDOM_", strlen("RANDOM_"))) {
|
if (!strnicmp(this->m_unk0x9c.GetData(), "RANDOM_", strlen("RANDOM_"))) {
|
||||||
char buffer[10];
|
char buffer[10];
|
||||||
@ -93,9 +93,9 @@ void MxDSSelectAction::Deserialize(char** p_source, MxS16 p_unk0x24)
|
|||||||
string = itoa((MxS16) random, buffer, 10);
|
string = itoa((MxS16) random, buffer, 10);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
string = VariableTable()->GetVariable(*p_source);
|
string = VariableTable()->GetVariable((char*) *p_source);
|
||||||
|
|
||||||
*p_source += strlen(*p_source) + 1;
|
*p_source += strlen((char*) *p_source) + 1;
|
||||||
|
|
||||||
MxU32 count = *(MxU32*) *p_source;
|
MxU32 count = *(MxU32*) *p_source;
|
||||||
*p_source += sizeof(MxU32);
|
*p_source += sizeof(MxU32);
|
||||||
@ -106,11 +106,11 @@ void MxDSSelectAction::Deserialize(char** p_source, MxS16 p_unk0x24)
|
|||||||
|
|
||||||
MxU32 i;
|
MxU32 i;
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
if (!strcmp(string.GetData(), *p_source))
|
if (!strcmp(string.GetData(), (char*) *p_source))
|
||||||
index = i;
|
index = i;
|
||||||
|
|
||||||
this->m_unk0xac->Append(*p_source);
|
this->m_unk0xac->Append((char*) *p_source);
|
||||||
*p_source += strlen(*p_source) + 1;
|
*p_source += strlen((char*) *p_source) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
|
|||||||
@ -29,7 +29,7 @@ class MxDSSelectAction : public MxDSParallelAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual MxU32 GetSizeOnDisk() override; // vtable+18;
|
virtual MxU32 GetSizeOnDisk() override; // vtable+18;
|
||||||
virtual void Deserialize(char** p_source, MxS16 p_unk0x24) override; // vtable+1c;
|
virtual void Deserialize(MxU8** p_source, MxS16 p_unk0x24) override; // vtable+1c;
|
||||||
virtual MxDSAction* Clone() override; // vtable+2c;
|
virtual MxDSAction* Clone() override; // vtable+2c;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@ -46,7 +46,7 @@ MxDSAction* MxDSSound::Clone()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100c95a0
|
// FUNCTION: LEGO1 0x100c95a0
|
||||||
void MxDSSound::Deserialize(char** p_source, MxS16 p_unk0x24)
|
void MxDSSound::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
|
||||||
{
|
{
|
||||||
MxDSMediaAction::Deserialize(p_source, p_unk0x24);
|
MxDSMediaAction::Deserialize(p_source, p_unk0x24);
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,7 @@ class MxDSSound : public MxDSMediaAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual MxU32 GetSizeOnDisk() override; // vtable+18;
|
virtual MxU32 GetSizeOnDisk() override; // vtable+18;
|
||||||
virtual void Deserialize(char** p_source, MxS16 p_unk0x24) override; // vtable+1c;
|
virtual void Deserialize(MxU8** p_source, MxS16 p_unk0x24) override; // vtable+1c;
|
||||||
virtual MxDSAction* Clone() override; // vtable+2c;
|
virtual MxDSAction* Clone() override; // vtable+2c;
|
||||||
|
|
||||||
inline MxS32 GetVolume() const { return m_volume; }
|
inline MxS32 GetVolume() const { return m_volume; }
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
#include "mxstreamchunk.h"
|
#include "mxstreamchunk.h"
|
||||||
|
|
||||||
|
#include "legoutil.h"
|
||||||
#include "mxdsbuffer.h"
|
#include "mxdsbuffer.h"
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100c2fe0
|
// FUNCTION: LEGO1 0x100c2fe0
|
||||||
@ -33,13 +34,15 @@ MxU32 MxStreamChunk::ReadChunkHeader(MxU8* p_chunkData)
|
|||||||
{
|
{
|
||||||
MxU32 headersize = 0;
|
MxU32 headersize = 0;
|
||||||
if (p_chunkData) {
|
if (p_chunkData) {
|
||||||
SetFlags(*(MxU16*) p_chunkData);
|
MxU8* chunkData = p_chunkData;
|
||||||
SetObjectId(*(MxU32*) (p_chunkData + 2));
|
GetScalar(&p_chunkData, m_flags);
|
||||||
SetTime(*(MxLong*) (p_chunkData + 6));
|
GetScalar(&p_chunkData, m_objectId);
|
||||||
SetLength(*(MxU32*) (p_chunkData + 10));
|
GetScalar(&p_chunkData, m_time);
|
||||||
SetData(p_chunkData + 14);
|
GetScalar(&p_chunkData, m_length);
|
||||||
headersize = (MxU32) (p_chunkData + 14) - (MxU32) p_chunkData;
|
m_data = p_chunkData;
|
||||||
|
headersize = p_chunkData - chunkData;
|
||||||
}
|
}
|
||||||
|
|
||||||
return headersize;
|
return headersize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -35,4 +35,7 @@ class MxStreamChunk : public MxDSChunk {
|
|||||||
MxDSBuffer* m_buffer; // 0x1c
|
MxDSBuffer* m_buffer; // 0x1c
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// SYNTHETIC: LEGO1 0x100b20a0
|
||||||
|
// MxStreamChunk::`scalar deleting destructor'
|
||||||
|
|
||||||
#endif // MXSTREAMCHUNK_H
|
#endif // MXSTREAMCHUNK_H
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user