diff --git a/LEGO1/mxdiskstreamcontroller.cpp b/LEGO1/mxdiskstreamcontroller.cpp index 94850fad..a91726a9 100644 --- a/LEGO1/mxdiskstreamcontroller.cpp +++ b/LEGO1/mxdiskstreamcontroller.cpp @@ -84,32 +84,30 @@ void MxDiskStreamController::FUN_100c7f40(MxDSStreamingAction* p_streamingaction // FUNCTION: LEGO1 0x100c7ff0 MxResult MxDiskStreamController::VTable0x20(MxDSAction* p_action) { - MxResult result; MxAutoLocker lock(&this->m_criticalSection); + MxDSStreamingAction* action; + MxDSStreamingAction* entry = (MxDSStreamingAction*) m_list0x80.Find(p_action, FALSE); // TODO: is this a seperate class? - if (!entry) { - result = MxStreamController::VTable0x20((MxDSAction*) p_action); - } - else { - MxDSStreamingAction* action = new MxDSStreamingAction(*p_action, 0); + + if (entry) { + action = new MxDSStreamingAction(*p_action, 0); action->SetUnknown28(entry->GetUnknown28()); action->SetUnknown84(entry->GetUnknown84()); action->SetOrigin(entry->GetOrigin()); action->SetUnknowna0(entry->GetUnknowna4()); FUN_100c7f40(action); - result = VTable0x2c(p_action, action->GetBufferOffset()); - } - if (result == SUCCESS) { + if (VTable0x2c(p_action, entry->GetUnknown94()) != SUCCESS) + return FAILURE; + } + else if (MxStreamController::VTable0x20((MxDSAction*) p_action) != SUCCESS) return FAILURE; - } - else { - m_unk0x70 = 1; - m_unk0xc4 = 1; - return SUCCESS; - } + + m_unk0x70 = 1; + m_unk0xc4 = 1; + return SUCCESS; } // STUB: LEGO1 0x100c8160 diff --git a/LEGO1/mxdsstreamingaction.h b/LEGO1/mxdsstreamingaction.h index 7e26c2b1..4e5f0979 100644 --- a/LEGO1/mxdsstreamingaction.h +++ b/LEGO1/mxdsstreamingaction.h @@ -31,7 +31,7 @@ class MxDSStreamingAction : public MxDSAction { void SetInternalAction(MxDSAction* p_dsAction); void FUN_100cd2d0(); - inline MxU32 GetBufferOffset() { return m_bufferOffset; } + inline MxU32 GetUnknown94() { return m_unk0x94; } inline MxDSBuffer* GetUnknowna0() { return m_unk0xa0; } inline MxDSBuffer* GetUnknowna4() { return m_unk0xa4; } inline void SetUnknowna0(MxDSBuffer* p_unk0xa0) { m_unk0xa0 = p_unk0xa0; }