Implement Start()

This commit is contained in:
Misha 2023-10-06 20:03:15 -04:00
parent 85fe4ad07a
commit ab36a90602
7 changed files with 56 additions and 10 deletions

View File

@ -99,11 +99,10 @@ void SetOmniUserMessage(void (*p_userMsg)(const char *,int))
g_omniUserMessage = p_userMsg;
}
// OFFSET: LEGO1 0x100acf50 STUB
MxLong Start(MxDSAction *)
// OFFSET: LEGO1 0x100acf50
MxLong Start(MxDSAction* action)
{
// TODO
return 0;
return MxOmni::GetInstance()->Start(action);
}
// OFFSET: LEGO1 0x1005ad10

View File

@ -42,10 +42,16 @@ void MxOmni::Init()
m_unk64 = NULL;
}
// OFFSET: LEGO1 0x100b0090 STUB
void MxOmni::vtable0x20()
// OFFSET: LEGO1 0x100b0090
long MxOmni::Start(MxDSAction* ds)
{
// TODO
MxResult result = -1;
if(ds->GetAtomId().GetInternal() != NULL && ds->GetObjectId() != -1 && m_streamer != NULL)
{
result = m_streamer->Unknown100b99b0(ds);
}
return result;
}
// OFFSET: LEGO1 0x100b00c0 STUB
@ -258,7 +264,7 @@ MxAtomIdCounterSet *AtomIdCounterSet()
MxStreamer* Streamer()
{
return MxOmni::GetInstance()->GetStreamer();
}
}
// OFFSET: LEGO1 0x100acf00
MxSoundManager* MSoundManager()
@ -288,4 +294,4 @@ MxMusicManager* MusicManager()
MxEventManager* EventManager()
{
return MxOmni::GetInstance()->GetEventManager();
}
}

View File

@ -38,7 +38,7 @@ class MxOmni : public MxCore
virtual void Init(); // vtable+14
virtual MxResult Create(COMPAT_CONST MxOmniCreateParam &p); // vtable+18
virtual void Destroy(); // vtable+1c
virtual void vtable0x20(); // vtable+20
virtual MxResult Start(MxDSAction* ds); // vtable+20
virtual void DeleteObject(MxDSAction &ds); // vtable+24
virtual MxBool DoesEntityExist(MxDSAction &ds); // vtable+28
virtual void vtable0x2c(); // vtable+2c

View File

@ -30,3 +30,22 @@ MxResult MxStreamController::Open(const char *p_filename)
return SUCCESS;
}
// OFFSET: LEGO1 0x100b9400
undefined4 MxStreamController::vtable0x18(undefined4 p_unknown, undefined4 p_unknown2)
{
return -1;
}
// OFFSET: LEGO1 0x100b9410
undefined4 MxStreamController::vtable0x1C(undefined4 p_unknown, undefined4 p_unknown2)
{
return -1;
}
// OFFSET: LEGO1 0x100c1690 STUB
long MxStreamController::vtable0x20(MxDSAction* action)
{
// TODO STUB
return -1;
}

View File

@ -6,6 +6,7 @@
#include "mxcriticalsection.h"
#include "mxcore.h"
#include "mxdsobject.h"
#include "mxdsaction.h"
// VTABLE 0x100dc968
// SIZE 0x64
@ -30,6 +31,9 @@ class MxStreamController : public MxCore
}
virtual MxResult Open(const char *p_filename); // vtable+0x14
virtual undefined4 vtable0x18(undefined4 p_unknown, undefined4 p_unknown2); //vtable+0x18
virtual undefined4 vtable0x1C(undefined4 p_unknown, undefined4 p_unknown2); //vtable+0x1c
virtual long vtable0x20(MxDSAction* action); //vtable+0x20
MxBool FUN_100c20d0(MxDSObject &p_obj);

View File

@ -133,6 +133,22 @@ MxResult MxStreamer::AddStreamControllerToOpenList(MxStreamController *stream)
return FAILURE;
}
// OFFSET: LEGO1 0x100b99b0
MxResult MxStreamer::Unknown100b99b0(MxDSAction* p_action)
{
MxStreamController* controller;
if (p_action != NULL && p_action->GetAtomId().GetInternal() != NULL && p_action->GetObjectId() != -1)
{
controller = GetOpenStream(p_action->GetAtomId().GetInternal());
if (controller == NULL)
{
return -1;
}
return controller->vtable0x20(p_action);
}
return -1;
}
// OFFSET: LEGO1 0x100b9b60
MxLong MxStreamer::Notify(MxParam &p)
{

View File

@ -96,6 +96,8 @@ class MxStreamer : public MxCore
MxResult AddStreamControllerToOpenList(MxStreamController *p_stream);
MxResult Unknown100b99b0(MxDSAction* p_action);
private:
list<MxStreamController *> m_openStreams; // 0x8
MxStreamerSubClass2 m_subclass1; // 0x14