From 21dae8bb415cec70320d401cf2ed140eabe90732 Mon Sep 17 00:00:00 2001 From: Misha <106913236+MishaProductions@users.noreply.github.com> Date: Wed, 13 Dec 2023 15:35:07 -0500 Subject: [PATCH] fixes --- LEGO1/mxdiskstreamcontroller.cpp | 38 ++++++++++++++++++-------------- LEGO1/mxdiskstreamcontroller.h | 3 ++- LEGO1/mxdsaction.h | 2 +- LEGO1/mxdsobject.h | 2 ++ LEGO1/mxdsstreamingaction.h | 5 +++-- 5 files changed, 30 insertions(+), 20 deletions(-) diff --git a/LEGO1/mxdiskstreamcontroller.cpp b/LEGO1/mxdiskstreamcontroller.cpp index 57189605..94850fad 100644 --- a/LEGO1/mxdiskstreamcontroller.cpp +++ b/LEGO1/mxdiskstreamcontroller.cpp @@ -72,38 +72,44 @@ MxResult MxDiskStreamController::VTable0x30(MxDSAction* p_action) return FAILURE; } -// STUB: LEGO1 0x100c7f4 -void MxDiskStreamController::FUN_100c7f4(MxDSStreamingAction* p_streamingaction) +// FUNCTION: LEGO1 0x100c7f40 +void MxDiskStreamController::FUN_100c7f40(MxDSStreamingAction* p_streamingaction) { - // TODO - // seems to do something with a list + MxAutoLocker lock(&this->m_criticalSection); + if (p_streamingaction) { + m_list0x64.push_back(p_streamingaction); + } } // FUNCTION: LEGO1 0x100c7ff0 MxResult MxDiskStreamController::VTable0x20(MxDSAction* p_action) { - MxAutoLocker lock(&this->m_criticalSection); MxResult result; - MxDSStreamingAction* entry = (MxDSStreamingAction*)m_list0x80.Find(p_action, FALSE); // TODO: is this a seperate class? + MxAutoLocker lock(&this->m_criticalSection); + MxDSStreamingAction* entry = + (MxDSStreamingAction*) m_list0x80.Find(p_action, FALSE); // TODO: is this a seperate class? if (!entry) { - result = MxStreamController::VTable0x20((MxDSAction*)p_action); + result = MxStreamController::VTable0x20((MxDSAction*) p_action); } else { MxDSStreamingAction* action = new MxDSStreamingAction(*p_action, 0); + action->SetUnknown28(entry->GetUnknown28()); action->SetUnknown84(entry->GetUnknown84()); - action->SetUnknown8c(entry->GetUnknown8c()); - action->SetUnknowna0(entry->GetUnknowna0()); + action->SetOrigin(entry->GetOrigin()); + action->SetUnknowna0(entry->GetUnknowna4()); - FUN_100c7f4(action); - result = vtable0x2c(p_action, action->GetBufferOffset()); + FUN_100c7f40(action); + result = VTable0x2c(p_action, action->GetBufferOffset()); } - if (result == SUCCESS) - { - m_unk70 = 1; - m_unkc4 = 1; + if (result == SUCCESS) { + return FAILURE; + } + else { + m_unk0x70 = 1; + m_unk0xc4 = 1; + return SUCCESS; } - return result; } // STUB: LEGO1 0x100c8160 diff --git a/LEGO1/mxdiskstreamcontroller.h b/LEGO1/mxdiskstreamcontroller.h index 49648122..981b4437 100644 --- a/LEGO1/mxdiskstreamcontroller.h +++ b/LEGO1/mxdiskstreamcontroller.h @@ -6,6 +6,7 @@ #include "mxstl/stlcompat.h" #include "mxstreamcontroller.h" #include "mxtypes.h" +#include "mxdsstreamingaction.h" #include @@ -49,7 +50,7 @@ class MxDiskStreamController : public MxStreamController { MxStreamListMxDSAction m_list0xb8; // 0xb8 undefined m_unk0xc4; // 0xc4 - void FUN_100c7f4(MxDSStreamingAction* p_streamingaction); + void FUN_100c7f40(MxDSStreamingAction* p_streamingaction); }; // TEMPLATE: LEGO1 0x100c7330 diff --git a/LEGO1/mxdsaction.h b/LEGO1/mxdsaction.h index 13bc4916..6ea57a4a 100644 --- a/LEGO1/mxdsaction.h +++ b/LEGO1/mxdsaction.h @@ -63,7 +63,7 @@ class MxDSAction : public MxDSObject { inline MxS32 GetLoopCount() { return m_loopCount; } inline void SetLoopCount(MxS32 p_loopCount) { m_loopCount = p_loopCount; } inline const Vector3Data& GetLocation() const { return m_location; } - inline MxCore* GetUnknown84() const { return m_unk84; } + inline MxCore* GetUnknown84() { return m_unk0x84; } inline void SetUnknown84(MxCore* p_unk0x84) { m_unk0x84 = p_unk0x84; } inline MxCore* GetOrigin() { return m_origin; } inline void SetOrigin(MxCore* p_origin) { m_origin = p_origin; } diff --git a/LEGO1/mxdsobject.h b/LEGO1/mxdsobject.h index 3f47f13e..dfa967cf 100644 --- a/LEGO1/mxdsobject.h +++ b/LEGO1/mxdsobject.h @@ -38,10 +38,12 @@ class MxDSObject : public MxCore { inline MxU32 GetObjectId() { return this->m_objectId; } inline const MxAtomId& GetAtomId() { return this->m_atomId; } inline MxS16 GetUnknown24() { return this->m_unk0x24; } + inline undefined4 GetUnknown28() { return this->m_unk0x28; } inline void SetType(MxDSType p_type) { this->m_type = p_type; } inline void SetObjectId(MxU32 p_objectId) { this->m_objectId = p_objectId; } inline void SetUnknown24(MxS16 p_unk0x24) { this->m_unk0x24 = p_unk0x24; } + inline void SetUnknown28(undefined4 p_unk0x28) { this->m_unk0x28 = p_unk0x28; } private: MxU32 m_sizeOnDisk; // 0x8 diff --git a/LEGO1/mxdsstreamingaction.h b/LEGO1/mxdsstreamingaction.h index 344d5463..177376d6 100644 --- a/LEGO1/mxdsstreamingaction.h +++ b/LEGO1/mxdsstreamingaction.h @@ -32,8 +32,9 @@ class MxDSStreamingAction : public MxDSAction { void FUN_100cd2d0(); inline MxU32 GetBufferOffset() { return m_bufferOffset; } - inline MxDSBuffer* GetUnknowna0() { return m_unka0; } - inline void SetUnknowna0(MxDSBuffer* p_unka0) { m_unka0 = p_unka0; } + inline MxDSBuffer* GetUnknowna0() { return m_unk0xa0; } + inline MxDSBuffer* GetUnknowna4() { return m_unk0xa4; } + inline void SetUnknowna0(MxDSBuffer* p_unka0) { m_unk0xa0 = p_unka0; } private: MxU32 m_unk0x94;