implement a few mxstreamercontroller vtables

This commit is contained in:
Misha 2023-12-11 16:05:54 -05:00
parent 02aaf1533f
commit f824c4839a
No known key found for this signature in database
GPG Key ID: 8441D12AEF33FED8
4 changed files with 48 additions and 14 deletions

View File

@ -42,11 +42,19 @@ MxResult MxRAMStreamController::vtable0x20(MxDSAction* p_action)
return FAILURE;
}
// STUB: LEGO1 0x100c6320
MxResult MxRAMStreamController::vtable0x24(undefined4 p_unknown)
// FUNCTION: LEGO1 0x100c6320
MxResult MxRAMStreamController::vtable0x24(MxDSAction* p_action)
{
// TODO STUB
return FAILURE;
MxDSAction action;
do {
if (m_action0x60 != NULL) {
delete m_action0x60;
m_action0x60 = NULL;
}
action = *p_action;
MxStreamController::vtable0x24(&action);
} while (m_action0x60 != NULL);
return SUCCESS;
}
// STUB: LEGO1 0x100d0d80

View File

@ -26,7 +26,7 @@ class MxRAMStreamController : public MxStreamController {
virtual MxResult Open(const char* p_filename) override;
virtual MxResult vtable0x20(MxDSAction* p_action) override;
virtual MxResult vtable0x24(undefined4 p_unknown) override;
virtual MxResult vtable0x24(MxDSAction* p_action) override;
private:
MxDSBuffer m_buffer;

View File

@ -117,11 +117,20 @@ MxResult MxStreamController::vtable0x20(MxDSAction* p_action)
return result;
}
// STUB: LEGO1 0x100c1740
MxResult MxStreamController::vtable0x24(undefined4 p_unknown)
// FUNCTION: LEGO1 0x100c1740
MxResult MxStreamController::vtable0x24(MxDSAction* p_action)
{
// TODO STUB
return FAILURE;
MxAutoLocker locker(&m_criticalSection);
vtable0x30(p_action);
m_action0x60 = m_unkList0x54.Find(p_action, TRUE);
if (m_action0x60 == NULL) {
return FAILURE;
}
else {
p_action->SetUnknown24(m_action0x60->GetUnknown24());
p_action->SetObjectId(m_action0x60->GetObjectId());
return FUN_100c1f00(m_action0x60);
}
}
// FUNCTION: LEGO1 0x100c1800
@ -153,10 +162,19 @@ MxResult MxStreamController::vtable0x2c(MxDSAction* p_action, MxU32 p_bufferval)
return FUN_100c1800(p_action, (p_bufferval / m_provider->GetFileSize()) * m_provider->GetFileSize());
}
// STUB: LEGO1 0x100c1ce0
MxResult MxStreamController::vtable0x30(undefined4 p_unknown)
// FUNCTION: LEGO1 0x100c1ce0
MxResult MxStreamController::vtable0x30(MxDSAction* p_unknown)
{
return FAILURE;
MxAutoLocker locker(&m_criticalSection);
MxResult result = FAILURE;
MxDSAction* action = m_unkList0x3c.Find(p_unknown, TRUE);
if (action != NULL) {
MxNextActionDataStart* data = m_nextActionList.Find(action->GetObjectId(), action->GetUnknown24());
delete action;
delete data;
result = SUCCESS;
}
return result;
}
// STUB: LEGO1 0x100c20d0
@ -165,3 +183,10 @@ MxBool MxStreamController::FUN_100c20d0(MxDSObject& p_obj)
// TODO
return TRUE;
}
// STUB: LEGO1 0x100c1f00
MxResult MxStreamController::FUN_100c1f00(MxDSAction* p_action)
{
// TODO
return FAILURE;
}

View File

@ -36,14 +36,15 @@ class MxStreamController : public MxCore {
virtual MxResult vtable0x18(undefined4 p_unknown, undefined4 p_unknown2); // vtable+0x18
virtual MxResult vtable0x1C(undefined4 p_unknown, undefined4 p_unknown2); // vtable+0x1c
virtual MxResult vtable0x20(MxDSAction* p_action); // vtable+0x20
virtual MxResult vtable0x24(undefined4 p_unknown); // vtable+0x24
virtual MxResult vtable0x24(MxDSAction* p_unknown); // vtable+0x24
MxResult FUN_100c1800(MxDSAction* p_action, MxU32 p_val);
virtual MxResult vtable0x28(); // vtable+0x28
virtual MxResult vtable0x2c(MxDSAction* p_action, MxU32 p_bufferval); // vtable+0x2c
virtual MxResult vtable0x30(undefined4 p_unknown); // vtable+0x30
virtual MxResult vtable0x30(MxDSAction* p_unknown); // vtable+0x30
MxBool FUN_100c20d0(MxDSObject& p_obj);
MxResult FUN_100c1a00(MxDSAction* p_action, MxU32 p_bufferval);
MxResult FUN_100c1f00(MxDSAction* p_action);
inline MxAtomId& GetAtom() { return atom; };