mxdiskstreamcontroller vtable + MxStreamController::vtable0x20

This commit is contained in:
Misha
2023-10-09 19:05:47 -04:00
parent 28206402f9
commit fa236379cf
4 changed files with 81 additions and 7 deletions

View File

@@ -16,6 +16,51 @@ MxDiskStreamController::~MxDiskStreamController()
MxResult MxDiskStreamController::Tickle()
{
// TODO
return 0;
}
// OFFSET: LEGO1 0x100c7790
MxResult MxDiskStreamController::Open(const char *p_filename)
{
return FAILURE;
}
// OFFSET: LEGO1 0x100c7880
MxResult MxDiskStreamController::vtable0x18(undefined4 p_unknown, undefined4 p_unknown2)
{
return SUCCESS;
}
// OFFSET: LEGO1 0x100c7ff0 STUB
MxResult MxDiskStreamController::vtable0x20(MxDSAction* p_action)
{
// TODO
return FAILURE;
}
// OFFSET: LEGO1 0x100c8160 STUB
MxResult MxDiskStreamController::vtable0x24(undefined4 p_unknown)
{
// TODO
return FAILURE;
}
// OFFSET: LEGO1 0x100c7ac0 STUB
MxResult MxDiskStreamController::vtable0x28()
{
// TODO
return FAILURE;
}
// OFFSET: LEGO1 0x100c7c00 STUB
MxResult MxDiskStreamController::vtable0x30(undefined4 p_unknown)
{
// TODO
return FAILURE;
}
// OFFSET: LEGO1 0x100c7960
MxResult MxDiskStreamController::vtable0x34(undefined4 p_unknown)
{
return FAILURE;
}

View File

@@ -15,6 +15,13 @@ public:
virtual ~MxDiskStreamController() override;
virtual MxResult Tickle() override; // vtable+0x8
virtual MxResult Open(const char *p_filename) override; // vtable+0x14
virtual MxResult vtable0x18(undefined4 p_unknown, undefined4 p_unknown2) override; //vtable+0x18
virtual MxResult vtable0x20(MxDSAction* p_action) override; //vtable+0x20
virtual MxResult vtable0x24(undefined4 p_unknown) override; //vtable+0x24
virtual MxResult vtable0x28() override; //vtable+0x28
virtual MxResult vtable0x30(undefined4 p_unknown) override; //vtable+0x30
virtual MxResult vtable0x34(undefined4 p_unknown); //vtable+0x34
// OFFSET: LEGO1 0x100c7360
inline virtual const char *ClassName() const override // vtable+0x0c

View File

@@ -45,11 +45,32 @@ MxResult MxStreamController::vtable0x1C(undefined4 p_unknown, undefined4 p_unkno
return FAILURE;
}
// OFFSET: LEGO1 0x100c1690 STUB
// OFFSET: LEGO1 0x100c1690
MxResult MxStreamController::vtable0x20(MxDSAction* p_action)
{
// TODO STUB
return FAILURE;
MxResult result;
void* buffer;
MxU32 buffer_value;
MxAutoLocker locker(&m_criticalSection);
MxStreamProvider* provider = m_provider;
MxU32 objectId = p_action->GetObjectId();
if(objectId < provider->GetLengthInDWords())
{
buffer = provider->GetBufferForDWords();
buffer_value = *(MxU32 *)((MxU32)buffer + objectId * 4);
}
if (buffer_value == NULL)
{
result = FAILURE;
}
else
{
result = vtable0x2c(p_action, buffer_value);
}
return result;
}
// OFFSET: LEGO1 0x100c1740 STUB
@@ -66,7 +87,7 @@ MxResult MxStreamController::vtable0x28()
}
// OFFSET: LEGO1 0x100c1c10 STUB
MxResult MxStreamController::vtable0x2c(undefined4 p_unknown1, undefined4 p_unknow2)
MxResult MxStreamController::vtable0x2c(MxDSAction* p_action, MxU32 p_bufferval)
{
return FAILURE;
}

View File

@@ -7,6 +7,7 @@
#include "mxcore.h"
#include "mxdsobject.h"
#include "mxdsaction.h"
#include "mxstreamprovider.h"
// VTABLE 0x100dc968
// SIZE 0x64
@@ -36,7 +37,7 @@ public:
virtual MxResult vtable0x20(MxDSAction* p_action); //vtable+0x20
virtual MxResult vtable0x24(undefined4 p_unknown); //vtable+0x24
virtual MxResult vtable0x28(); //vtable+0x28
virtual MxResult vtable0x2c(undefined4 p_unknown1, undefined4 p_unknow2); //vtable+0x2c
virtual MxResult vtable0x2c(MxDSAction* p_action, MxU32 p_bufferval); //vtable+0x2c
virtual MxResult vtable0x30(undefined4 p_unknown); //vtable+0x30
MxBool FUN_100c20d0(MxDSObject &p_obj);
@@ -45,7 +46,7 @@ public:
protected:
MxCriticalSection m_criticalSection;
MxAtomId atom;
undefined4 m_unk28; // MxStreamProvider*
MxStreamProvider* m_provider; // MxStreamProvider*
undefined4 m_unk2c;
undefined m_unk30[0x34];
};