Match MxDiskStreamController::FUN_100c7980

This commit is contained in:
Christian Semmler 2023-12-22 12:36:41 -05:00
parent 50dc632492
commit e6b86a87f4
6 changed files with 24 additions and 19 deletions

View File

@ -63,24 +63,29 @@ void MxDiskStreamController::FUN_100c7980()
{ {
MxDSBuffer* buffer; MxDSBuffer* buffer;
MxDSStreamingAction* action = NULL; MxDSStreamingAction* action = NULL;
{
MxAutoLocker lock(&this->m_criticalSection); MxAutoLocker lock(&this->m_criticalSection);
if (m_unk0x3c.size() != 0 || m_provider->GetStreamBuffersNum() > m_unk0x8c) { if (m_unk0x3c.size() && m_unk0x8c < m_provider->GetStreamBuffersNum()) {
buffer = new MxDSBuffer(); buffer = new MxDSBuffer();
if (buffer->AllocateBuffer(m_provider->GetFileSize(), MxDSBufferType_Chunk) == SUCCESS) {
action = VTable0x28(); if (buffer->AllocateBuffer(m_provider->GetFileSize(), MxDSBufferType_Chunk) != SUCCESS) {
if (action) { if (buffer)
action->SetUnknowna0(buffer);
m_unk0x8c++;
}
else {
return;
}
}
else {
delete buffer; delete buffer;
return; return;
} }
action = VTable0x28();
if (!action) {
if (buffer)
delete buffer;
return;
}
action->SetUnknowna0(buffer);
m_unk0x8c++;
}
} }
if (action) { if (action) {

View File

@ -108,7 +108,7 @@ MxU32 MxDiskStreamProvider::GetFileSize()
} }
// FUNCTION: LEGO1 0x100d1ea0 // FUNCTION: LEGO1 0x100d1ea0
MxU32 MxDiskStreamProvider::GetStreamBuffersNum() MxS32 MxDiskStreamProvider::GetStreamBuffersNum()
{ {
return m_pFile->GetStreamBuffersNum(); return m_pFile->GetStreamBuffersNum();
} }

View File

@ -49,7 +49,7 @@ class MxDiskStreamProvider : public MxStreamProvider {
virtual MxResult SetResourceToGet(MxStreamController* p_resource) override; // vtable+0x14 virtual MxResult SetResourceToGet(MxStreamController* p_resource) override; // vtable+0x14
virtual MxU32 GetFileSize() override; // vtable+0x18 virtual MxU32 GetFileSize() override; // vtable+0x18
virtual MxU32 GetStreamBuffersNum() override; // vtable+0x1c virtual MxS32 GetStreamBuffersNum() override; // vtable+0x1c
virtual void VTable0x20(undefined4) override; // vtable+0x20 virtual void VTable0x20(undefined4) override; // vtable+0x20
virtual MxU32 GetLengthInDWords() override; // vtable+0x24 virtual MxU32 GetLengthInDWords() override; // vtable+0x24
virtual MxU32* GetBufferForDWords() override; // vtable+0x28 virtual MxU32* GetBufferForDWords() override; // vtable+0x28

View File

@ -23,7 +23,7 @@ MxU32 MxRAMStreamProvider::GetFileSize()
} }
// FUNCTION: LEGO1 0x100d0940 // FUNCTION: LEGO1 0x100d0940
MxU32 MxRAMStreamProvider::GetStreamBuffersNum() MxS32 MxRAMStreamProvider::GetStreamBuffersNum()
{ {
return 1; return 1;
} }

View File

@ -24,7 +24,7 @@ class MxRAMStreamProvider : public MxStreamProvider {
virtual MxResult SetResourceToGet(MxStreamController* p_resource) override; // vtable+0x14 virtual MxResult SetResourceToGet(MxStreamController* p_resource) override; // vtable+0x14
virtual MxU32 GetFileSize() override; // vtable+0x18 virtual MxU32 GetFileSize() override; // vtable+0x18
virtual MxU32 GetStreamBuffersNum() override; // vtable+0x1c virtual MxS32 GetStreamBuffersNum() override; // vtable+0x1c
virtual MxU32 GetLengthInDWords() override; // vtable+0x24 virtual MxU32 GetLengthInDWords() override; // vtable+0x24
virtual MxU32* GetBufferForDWords() override; // vtable+0x28 virtual MxU32* GetBufferForDWords() override; // vtable+0x28

View File

@ -27,7 +27,7 @@ class MxStreamProvider : public MxCore {
virtual MxResult SetResourceToGet(MxStreamController* p_resource); // vtable+0x14 virtual MxResult SetResourceToGet(MxStreamController* p_resource); // vtable+0x14
virtual MxU32 GetFileSize() = 0; // vtable+0x18 virtual MxU32 GetFileSize() = 0; // vtable+0x18
virtual MxU32 GetStreamBuffersNum() = 0; // vtable+0x1c virtual MxS32 GetStreamBuffersNum() = 0; // vtable+0x1c
virtual void VTable0x20(undefined4); // vtable+0x20 virtual void VTable0x20(undefined4); // vtable+0x20
virtual MxU32 GetLengthInDWords() = 0; // vtable+0x24 virtual MxU32 GetLengthInDWords() = 0; // vtable+0x24
virtual MxU32* GetBufferForDWords() = 0; // vtable+0x28 virtual MxU32* GetBufferForDWords() = 0; // vtable+0x28