From d8c06a3fa8b72696bfb0a755871f6324eb14693c Mon Sep 17 00:00:00 2001 From: Misha Date: Sat, 7 Oct 2023 12:02:03 -0400 Subject: [PATCH] MxOmni::Create: 34.87% --- LEGO1/mxeventmanager.cpp | 10 +++++++++- LEGO1/mxeventmanager.h | 3 ++- LEGO1/mxomni.cpp | 21 +++++++++++++++++++-- LEGO1/mxomni.h | 1 + 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/LEGO1/mxeventmanager.cpp b/LEGO1/mxeventmanager.cpp index 5383c25a..40cefc67 100644 --- a/LEGO1/mxeventmanager.cpp +++ b/LEGO1/mxeventmanager.cpp @@ -1,4 +1,5 @@ #include "mxeventmanager.h" +#include "decomp.h" // OFFSET: LEGO1 0x100c0360 MxEventManager::MxEventManager() @@ -15,4 +16,11 @@ MxEventManager::~MxEventManager() // OFFSET: LEGO1 0x100c0450 void MxEventManager::Init() { -} \ No newline at end of file +} + +// OFFSET: LEGO1 0x100c04a0 STUB +MxResult MxEventManager::vtable0x28(undefined4 p_unknown1, MxU8 p_unknown2) +{ + //TODO + return FAILURE; +} diff --git a/LEGO1/mxeventmanager.h b/LEGO1/mxeventmanager.h index cb89f637..c687ae50 100644 --- a/LEGO1/mxeventmanager.h +++ b/LEGO1/mxeventmanager.h @@ -1,6 +1,6 @@ #ifndef MXEVENTMANAGER_H #define MXEVENTMANAGER_H - +#include "decomp.h" #include "mxmediamanager.h" // VTABLE 0x100dc900 @@ -10,6 +10,7 @@ class MxEventManager : public MxMediaManager public: MxEventManager(); virtual ~MxEventManager() override; + virtual MxResult vtable0x28(undefined4 p_unknown1, MxU8 p_unknown2); // vtable+28 private: void Init(); diff --git a/LEGO1/mxomni.cpp b/LEGO1/mxomni.cpp index 19c6ba53..66f2f36f 100644 --- a/LEGO1/mxomni.cpp +++ b/LEGO1/mxomni.cpp @@ -237,7 +237,7 @@ MxResult MxOmni::Create(MxOmniCreateParam &p) MxVideoManager *videoManager = new MxVideoManager(); this->m_videoManager = videoManager; - if (videoManager != NULL && videoManager->vtable0x2c(p.GetVideoParam(), 100, 0) != 0) + if (videoManager != NULL && videoManager->vtable0x2c(p.GetVideoParam(), 100, 0) != SUCCESS) { delete m_videoManager; m_videoManager = NULL; @@ -250,7 +250,7 @@ MxResult MxOmni::Create(MxOmniCreateParam &p) this->m_soundManager = soundManager; //TODO - if (soundManager != NULL && soundManager->StartDirectSound(10, 0) != FAILURE) + if (soundManager != NULL && soundManager->StartDirectSound(10, 0) != SUCCESS) { delete m_soundManager; m_soundManager = NULL; @@ -259,7 +259,24 @@ MxResult MxOmni::Create(MxOmniCreateParam &p) if (p.CreateFlags().CreateMusicManager()) { + MxMusicManager *musicManager = new MxMusicManager(); + this->m_musicManager = musicManager; + if (musicManager != NULL && musicManager->StartMIDIThread(50, 0) != SUCCESS) + { + delete m_musicManager; + m_musicManager = NULL; + } + } + if (p.CreateFlags().CreateEventManager()) + { + MxEventManager *eventManager = new MxEventManager(); + this->m_eventManager = eventManager; + if (m_eventManager != NULL && m_eventManager->vtable0x28(50, 0) != SUCCESS) + { + delete m_eventManager; + m_eventManager = NULL; + } } diff --git a/LEGO1/mxomni.h b/LEGO1/mxomni.h index 4fe65ae0..626311bd 100644 --- a/LEGO1/mxomni.h +++ b/LEGO1/mxomni.h @@ -17,6 +17,7 @@ #include "mxvideomanager.h" #include "mxatomidcounter.h" #include "mxautolocker.h" +#include "mxeventmanager.h" // VTABLE 0x100dc168 // SIZE 0x68