diff --git a/ISLE/isleapp.cpp b/ISLE/isleapp.cpp index c20f1652..bfe0851e 100644 --- a/ISLE/isleapp.cpp +++ b/ISLE/isleapp.cpp @@ -93,7 +93,7 @@ void IsleApp::Close() Lego()->RemoveWorld(ds.GetAtomId(), ds.GetObjectId()); Lego()->DeleteObject(ds); TransitionManager()->SetWaitIndicator(NULL); - Lego()->vtable0x3c(); + Lego()->StopTimer(); MxLong lVar8; do { @@ -232,7 +232,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine g_reqEnableRMDevice = 0; VideoManager()->EnableRMDevice(); g_rmDisabled = 0; - Lego()->vtable0x3c(); + Lego()->StopTimer(); } if (g_closed) { diff --git a/LEGO1/mxomni.cpp b/LEGO1/mxomni.cpp index 57c2458a..19c6ba53 100644 --- a/LEGO1/mxomni.cpp +++ b/LEGO1/mxomni.cpp @@ -176,7 +176,8 @@ MxResult MxOmni::Create(MxOmniCreateParam &p) { goto failure; } - + m_mediaPath = p.GetMediaPath(); + m_windowHandle = p.GetWindowHandle(); if (p.CreateFlags().CreateObjectFactory()) { MxObjectFactory *objectFactory = new MxObjectFactory(); @@ -218,7 +219,7 @@ MxResult MxOmni::Create(MxOmniCreateParam &p) MxNotificationManager *notificationManager = new MxNotificationManager(); this->m_notificationManager = notificationManager; - if (notificationManager == NULL) + if (notificationManager == NULL || notificationManager->Create(100, 0) != SUCCESS) goto failure; } @@ -227,7 +228,7 @@ MxResult MxOmni::Create(MxOmniCreateParam &p) MxStreamer *streamer = new MxStreamer(); this->m_streamer = streamer; - if (streamer == NULL) + if (streamer == NULL || streamer->Init() != SUCCESS) goto failure; } @@ -236,8 +237,11 @@ MxResult MxOmni::Create(MxOmniCreateParam &p) MxVideoManager *videoManager = new MxVideoManager(); this->m_videoManager = videoManager; - if (videoManager == NULL) - return FAILURE; + if (videoManager != NULL && videoManager->vtable0x2c(p.GetVideoParam(), 100, 0) != 0) + { + delete m_videoManager; + m_videoManager = NULL; + } } if (p.CreateFlags().CreateSoundManager()) @@ -246,9 +250,10 @@ MxResult MxOmni::Create(MxOmniCreateParam &p) this->m_soundManager = soundManager; //TODO - if (soundManager != NULL) + if (soundManager != NULL && soundManager->StartDirectSound(10, 0) != FAILURE) { - + delete m_soundManager; + m_soundManager = NULL; } } diff --git a/LEGO1/mxomni.h b/LEGO1/mxomni.h index dc8d64ac..4fe65ae0 100644 --- a/LEGO1/mxomni.h +++ b/LEGO1/mxomni.h @@ -16,7 +16,6 @@ #include "mxvariabletable.h" #include "mxvideomanager.h" #include "mxatomidcounter.h" -#include "mxmidimanager.h" #include "mxautolocker.h" // VTABLE 0x100dc168 diff --git a/LEGO1/mxomnicreateparam.h b/LEGO1/mxomnicreateparam.h index 31dcd447..94f3840a 100644 --- a/LEGO1/mxomnicreateparam.h +++ b/LEGO1/mxomnicreateparam.h @@ -15,6 +15,10 @@ class MxOmniCreateParam : public MxOmniCreateParamBase const MxOmniCreateFlags& CreateFlags() const { return this->m_createFlags; } + const MxString GetMediaPath() const { return m_mediaPath; } + const HWND GetWindowHandle() const { return m_windowHandle; } + MxVideoParam& GetVideoParam() { return m_videoParam; } + private: MxString m_mediaPath; HWND m_windowHandle; diff --git a/LEGO1/mxvideomanager.cpp b/LEGO1/mxvideomanager.cpp index 8f64dbd4..672fbadd 100644 --- a/LEGO1/mxvideomanager.cpp +++ b/LEGO1/mxvideomanager.cpp @@ -34,7 +34,7 @@ MxResult MxVideoManager::Tickle() UpdateRegion(); m_region->Reset(); - + return SUCCESS; } @@ -54,13 +54,13 @@ MxResult MxVideoManager::Init() void MxVideoManager::SortPresenterList() { if (this->m_presenters->GetCount() <= 1) - return; + return; MxPresenterListCursor a(this->m_presenters); MxPresenterListCursor b(this->m_presenters); MxU32 count = this->m_presenters->GetCount() - 1; MxBool finished; - + if (count != 0) { do { a.Reset(); @@ -111,3 +111,15 @@ MxLong MxVideoManager::RealizePalette(MxPalette *p_palette) this->m_criticalSection.Leave(); return 0; } + +// OFFSET: LEGO1 0x100bebe0 STUB +void MxVideoManager::vtable0x28() +{ + +} + +// OFFSET: LEGO1 0x100bebe0 STUB +MxResult MxVideoManager::vtable0x2c(MxVideoParam& p_videoParam, undefined4 p_unknown1, MxU8 p_unknown2) +{ + return FAILURE; +} diff --git a/LEGO1/mxvideomanager.h b/LEGO1/mxvideomanager.h index 7888f7e7..2760cbf3 100644 --- a/LEGO1/mxvideomanager.h +++ b/LEGO1/mxvideomanager.h @@ -15,6 +15,9 @@ class MxVideoManager : public MxMediaManager virtual MxResult Tickle(); // vtable+0x8 + virtual void vtable0x28(); // vtable+0x28 (TODO ARGUMENTS) + virtual MxResult vtable0x2c(MxVideoParam& p_videoParam, undefined4 p_unknown1, MxU8 p_unknown2); // vtable+0x2c + __declspec(dllexport) void InvalidateRect(MxRect32 &); __declspec(dllexport) virtual MxLong RealizePalette(MxPalette *); // vtable+0x30