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

View File

@ -108,7 +108,7 @@ MxU32 MxDiskStreamProvider::GetFileSize()
}
// FUNCTION: LEGO1 0x100d1ea0
MxU32 MxDiskStreamProvider::GetStreamBuffersNum()
MxS32 MxDiskStreamProvider::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 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 MxU32 GetLengthInDWords() override; // vtable+0x24
virtual MxU32* GetBufferForDWords() override; // vtable+0x28

View File

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

View File

@ -24,7 +24,7 @@ class MxRAMStreamProvider : public MxStreamProvider {
virtual MxResult SetResourceToGet(MxStreamController* p_resource) override; // vtable+0x14
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* GetBufferForDWords() override; // vtable+0x28

View File

@ -27,7 +27,7 @@ class MxStreamProvider : public MxCore {
virtual MxResult SetResourceToGet(MxStreamController* p_resource); // vtable+0x14
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 MxU32 GetLengthInDWords() = 0; // vtable+0x24
virtual MxU32* GetBufferForDWords() = 0; // vtable+0x28