From a925aec046c1770962d123a33406dcd44f462f37 Mon Sep 17 00:00:00 2001 From: Thomas May Date: Wed, 14 Jun 2023 01:22:42 +0100 Subject: [PATCH 01/10] lego1: implement MxTimer + dependencies --- LEGO1/mxautolocker.cpp | 14 ++++++++++ LEGO1/mxautolocker.h | 15 +++++++++++ LEGO1/mxbool.h | 3 +++ LEGO1/mxomni.cpp | 15 +++++++++++ LEGO1/mxomni.h | 19 ++++++++++--- LEGO1/mxomnicreateflags.cpp | 16 +++++++++++ LEGO1/mxomnicreateflags.h | 46 +++++++++++++++++++++++++++++-- LEGO1/mxomnicreateparam.cpp | 9 +++++++ LEGO1/mxomnicreateparam.h | 7 ++--- LEGO1/mxstring.cpp | 30 +++++++++++++++++++++ LEGO1/mxstring.h | 2 ++ LEGO1/mxtimer.cpp | 34 +++++++++++++++++++++++ LEGO1/mxtimer.h | 23 +++++++++++++++- LEGO1/mxvideoparam.cpp | 54 +++++++++++++++++++++++++++++++++++++ LEGO1/mxvideoparamflags.cpp | 16 +++++++++++ LEGO1/mxvideoparamflags.h | 2 ++ 16 files changed, 296 insertions(+), 9 deletions(-) create mode 100644 LEGO1/mxautolocker.cpp create mode 100644 LEGO1/mxautolocker.h create mode 100644 LEGO1/mxomni.cpp create mode 100644 LEGO1/mxomnicreateflags.cpp create mode 100644 LEGO1/mxomnicreateparam.cpp create mode 100644 LEGO1/mxstring.cpp create mode 100644 LEGO1/mxtimer.cpp create mode 100644 LEGO1/mxvideoparam.cpp create mode 100644 LEGO1/mxvideoparamflags.cpp diff --git a/LEGO1/mxautolocker.cpp b/LEGO1/mxautolocker.cpp new file mode 100644 index 00000000..9020afaf --- /dev/null +++ b/LEGO1/mxautolocker.cpp @@ -0,0 +1,14 @@ +#include "mxautolocker.h" + +MxAutoLocker::MxAutoLocker(MxCriticalSection *critsect) +{ + this->m_criticalSection = critsect; + if (this->m_criticalSection != 0) + this->m_criticalSection->Enter(); +} + +MxAutoLocker::~MxAutoLocker() +{ + if (this->m_criticalSection != 0) + this->m_criticalSection->Leave(); +} diff --git a/LEGO1/mxautolocker.h b/LEGO1/mxautolocker.h new file mode 100644 index 00000000..b195ec45 --- /dev/null +++ b/LEGO1/mxautolocker.h @@ -0,0 +1,15 @@ +#ifndef MXAUTOLOCKER_H +#define MXAUTOLOCKER_H + +#include "mxcriticalsection.h" + +class MxAutoLocker +{ + public: + MxAutoLocker(MxCriticalSection* cs); + virtual ~MxAutoLocker(); + private: + MxCriticalSection* m_criticalSection; +}; + +#endif // MXAUTOLOCKER_H diff --git a/LEGO1/mxbool.h b/LEGO1/mxbool.h index ce1a9716..4b6e4a2d 100644 --- a/LEGO1/mxbool.h +++ b/LEGO1/mxbool.h @@ -3,4 +3,7 @@ typedef unsigned char MxBool; +#define MX_TRUE 1 +#define MX_FALSE 0 + #endif // MXBOOL_H diff --git a/LEGO1/mxomni.cpp b/LEGO1/mxomni.cpp new file mode 100644 index 00000000..9ed7b6e1 --- /dev/null +++ b/LEGO1/mxomni.cpp @@ -0,0 +1,15 @@ +#include "mxomni.h" + +MxResult MxOmni::Create(const MxOmniCreateParam &p) +{ + if (p.CreateFlags().CreateTimer()) + { + MxTimer *timer = new MxTimer(); + this->m_Timer = timer; + + if (timer == NULL) + return FAILURE; + } + + return SUCCESS; +} diff --git a/LEGO1/mxomni.h b/LEGO1/mxomni.h index 43b9b8ac..5a121323 100644 --- a/LEGO1/mxomni.h +++ b/LEGO1/mxomni.h @@ -1,17 +1,30 @@ #ifndef MXOMNI_H #define MXOMNI_H +#include "mxresult.h" +#include "mxomnicreateparam.h" +#include "mxomnicreateflags.h" +#include "mxtimer.h" + class MxOmni { public: __declspec(dllexport) static void DestroyInstance(); - __declspec(dllexport) static const char * GetCD(); - __declspec(dllexport) static const char * GetHD(); - __declspec(dllexport) static MxOmni * GetInstance(); + __declspec(dllexport) static const char *GetCD(); + __declspec(dllexport) static const char *GetHD(); + __declspec(dllexport) static MxOmni *GetInstance(); __declspec(dllexport) static unsigned char IsSound3D(); __declspec(dllexport) static void SetCD(const char *s); __declspec(dllexport) static void SetHD(const char *s); __declspec(dllexport) static void SetSound3D(unsigned char); + + MxResult MxOmni::Create(const MxOmniCreateParam &p); + + MxTimer* GetTimer() const { return this->m_Timer; } + +private: + char padding[0x3c]; + MxTimer* m_Timer; }; #endif // MXOMNI_H diff --git a/LEGO1/mxomnicreateflags.cpp b/LEGO1/mxomnicreateflags.cpp new file mode 100644 index 00000000..46f735d7 --- /dev/null +++ b/LEGO1/mxomnicreateflags.cpp @@ -0,0 +1,16 @@ +#include "mxomnicreateflags.h" + +MxOmniCreateFlags::MxOmniCreateFlags() +{ + this->CreateObjectFactory(MX_TRUE); + this->CreateVariableTable(MX_TRUE); + this->CreateTickleManager(MX_TRUE); + this->CreateNotificationManager(MX_TRUE); + this->CreateVideoManager(MX_TRUE); + this->CreateSoundManager(MX_TRUE); + this->CreateMusicManager(MX_TRUE); + this->CreateEventManager(MX_TRUE); + + this->CreateTimer(MX_TRUE); + this->CreateStreamer(MX_TRUE); +} diff --git a/LEGO1/mxomnicreateflags.h b/LEGO1/mxomnicreateflags.h index ae57208d..464a5f3c 100644 --- a/LEGO1/mxomnicreateflags.h +++ b/LEGO1/mxomnicreateflags.h @@ -1,14 +1,56 @@ #ifndef MXOMNICREATEFLAGS_H #define MXOMNICREATEFLAGS_H +#include "mxbool.h" + class MxOmniCreateFlags { public: + enum LowFlags { + Flag_CreateObjectFactory = 0x01, + Flag_CreateVariableTable = 0x02, + Flag_CreateTickleManager = 0x04, + Flag_CreateNotificationManager = 0x08, + Flag_CreateVideoManager = 0x10, + Flag_CreateSoundManager = 0x20, + Flag_CreateMusicManager = 0x40, + Flag_CreateEventManager = 0x80 + }; + + enum HighFlags { + Flag_CreateTimer = 0x02, + Flag_CreateStreamer = 0x04 + }; + __declspec(dllexport) MxOmniCreateFlags(); + + const inline MxBool CreateObjectFactory() const { return this->m_flags1 & Flag_CreateObjectFactory; } + const inline MxBool CreateVariableTable() const { return this->m_flags1 & Flag_CreateVariableTable; } + const inline MxBool CreateTickleManager() const { return this->m_flags1 & Flag_CreateTickleManager; } + const inline MxBool CreateNotificationManager() const { return this->m_flags1 & Flag_CreateNotificationManager; } + const inline MxBool CreateVideoManager() const { return this->m_flags1 & Flag_CreateVideoManager; } + const inline MxBool CreateSoundManager() const { return this->m_flags1 & Flag_CreateSoundManager; } + const inline MxBool CreateMusicManager() const { return this->m_flags1 & Flag_CreateMusicManager; } + const inline MxBool CreateEventManager() const { return this->m_flags1 & Flag_CreateEventManager; } + + const inline MxBool CreateTimer() const { return this->m_flags2 & Flag_CreateTimer; } + const inline MxBool CreateStreamer() const { return this->m_flags2 & Flag_CreateStreamer; } + + inline void CreateObjectFactory(MxBool b) { this->m_flags1 = (b == MX_TRUE ? this->m_flags1 | Flag_CreateObjectFactory : this->m_flags1 & ~Flag_CreateObjectFactory); } + inline void CreateVariableTable(MxBool b) { this->m_flags1 = (b == MX_TRUE ? this->m_flags1 | Flag_CreateVariableTable : this->m_flags1 & ~Flag_CreateVariableTable); } + inline void CreateTickleManager(MxBool b) { this->m_flags1 = (b == MX_TRUE ? this->m_flags1 | Flag_CreateTickleManager : this->m_flags1 & ~Flag_CreateTickleManager); } + inline void CreateNotificationManager(MxBool b) { this->m_flags1 = (b == MX_TRUE ? this->m_flags1 | Flag_CreateNotificationManager : this->m_flags1 & ~Flag_CreateNotificationManager); } + inline void CreateVideoManager(MxBool b) { this->m_flags1 = (b == MX_TRUE ? this->m_flags1 | Flag_CreateVideoManager : this->m_flags1 & ~Flag_CreateVideoManager); } + inline void CreateSoundManager(MxBool b) { this->m_flags1 = (b == MX_TRUE ? this->m_flags1 | Flag_CreateSoundManager : this->m_flags1 & ~Flag_CreateSoundManager); } + inline void CreateMusicManager(MxBool b) { this->m_flags1 = (b == MX_TRUE ? this->m_flags1 | Flag_CreateMusicManager : this->m_flags1 & ~Flag_CreateMusicManager); } + inline void CreateEventManager(MxBool b) { this->m_flags1 = (b == MX_TRUE ? this->m_flags1 | Flag_CreateEventManager : this->m_flags1 & ~Flag_CreateEventManager); } + + inline void CreateTimer(MxBool b) { this->m_flags2 = (b == MX_TRUE ? this->m_flags2 | Flag_CreateTimer : this->m_flags2 & ~Flag_CreateTimer); } + inline void CreateStreamer(MxBool b) { this->m_flags2 = (b == MX_TRUE ? this->m_flags2 | Flag_CreateStreamer : this->m_flags2 & ~Flag_CreateStreamer); } private: - unsigned short m_flags; - + unsigned char m_flags1; + unsigned char m_flags2; }; #endif // MXOMNICREATEFLAGS_H diff --git a/LEGO1/mxomnicreateparam.cpp b/LEGO1/mxomnicreateparam.cpp new file mode 100644 index 00000000..06a3567c --- /dev/null +++ b/LEGO1/mxomnicreateparam.cpp @@ -0,0 +1,9 @@ +#include "mxomnicreateparam.h" + +MxOmniCreateParam::MxOmniCreateParam(const char *mediaPath, HWND windowHandle, MxVideoParam &vparam, MxOmniCreateFlags flags) +{ + this->m_mediaPath = mediaPath; + this->m_windowHandle = windowHandle; + this->m_videoParam = vparam; + this->m_createFlags = flags; +} diff --git a/LEGO1/mxomnicreateparam.h b/LEGO1/mxomnicreateparam.h index f72623aa..c1e8570f 100644 --- a/LEGO1/mxomnicreateparam.h +++ b/LEGO1/mxomnicreateparam.h @@ -11,15 +11,16 @@ class MxOmniCreateParam : public MxOmniCreateParamBase { public: - __declspec(dllexport) MxOmniCreateParam(const char *mediaPath, struct HWND__ *windowHandle, MxVideoParam &vparam, MxOmniCreateFlags flags); - virtual void vtable00(); + __declspec(dllexport) MxOmniCreateParam(const char *mediaPath, HWND windowHandle, MxVideoParam &vparam, MxOmniCreateFlags flags); + // virtual void vtable00(); seems to be a destructor + + const MxOmniCreateFlags& CreateFlags() const { return this->m_createFlags; } private: MxString m_mediaPath; HWND m_windowHandle; MxVideoParam m_videoParam; MxOmniCreateFlags m_createFlags; - }; #endif // MXOMNICREATEPARAM_H diff --git a/LEGO1/mxstring.cpp b/LEGO1/mxstring.cpp new file mode 100644 index 00000000..66e84c85 --- /dev/null +++ b/LEGO1/mxstring.cpp @@ -0,0 +1,30 @@ +#include "mxstring.h" +#include +#include + +MxString::MxString() +{ + // Set string to one char in length and set that char to null terminator + this->m_data = (char *)malloc(1); + this->m_data[0] = 0; + this->m_length = 0; +} + +// TODO: this *mostly* matches, again weird with the comparison +const MxString &MxString::operator=(const char *param) +{ + if (this->m_data != param) + { + free(this->m_data); + this->m_length = strlen(param); + this->m_data = (char *)malloc(this->m_length + 1); + strcpy(this->m_data, param); + } + + return *this; +} + +MxString::~MxString() +{ + free(this->m_data); +} diff --git a/LEGO1/mxstring.h b/LEGO1/mxstring.h index 607b732c..9551f1c9 100644 --- a/LEGO1/mxstring.h +++ b/LEGO1/mxstring.h @@ -10,6 +10,8 @@ class MxString : public MxCore __declspec(dllexport) virtual ~MxString(); __declspec(dllexport) const MxString &operator=(const char *); + MxString(); + private: char *m_data; unsigned short m_length; diff --git a/LEGO1/mxtimer.cpp b/LEGO1/mxtimer.cpp new file mode 100644 index 00000000..e54439dc --- /dev/null +++ b/LEGO1/mxtimer.cpp @@ -0,0 +1,34 @@ +#include "mxtimer.h" + +#include + +long MxTimer::s_LastTimeCalculated = 0; +long MxTimer::s_LastTimeTimerStarted = 0; + +MxTimer::MxTimer() +{ + this->m_isRunning = FALSE; + MxTimer::s_LastTimeCalculated = timeGetTime(); + this->m_startTime = MxTimer::s_LastTimeCalculated; +} + +void MxTimer::Start() +{ + this->m_isRunning = TRUE; + MxTimer::s_LastTimeTimerStarted = timeGetTime(); +} + +void MxTimer::Stop() +{ + long elapsed = this->GetRealTime(); + long startTime = elapsed - MxTimer::s_LastTimeTimerStarted; + this->m_isRunning = FALSE; + // this feels very stupid but it's what the assembly does + this->m_startTime = this->m_startTime + startTime - 5; +} + +long MxTimer::GetRealTime() +{ + MxTimer::s_LastTimeCalculated = timeGetTime(); + return MxTimer::s_LastTimeCalculated - this->m_startTime; +} diff --git a/LEGO1/mxtimer.h b/LEGO1/mxtimer.h index 35d888fa..8f35d205 100644 --- a/LEGO1/mxtimer.h +++ b/LEGO1/mxtimer.h @@ -1,10 +1,31 @@ #ifndef MXTIMER_H #define MXTIMER_H -class MxTimer +#include "mxcore.h" + +class MxTimer : public MxCore { public: + MxTimer(); + + void Start(); + void Stop(); + __declspec(dllexport) long GetRealTime(); + + long GetTime() inline + { + if (this->m_isRunning) + return s_LastTimeCalculated; + else + return s_LastTimeCalculated - this->m_startTime; + } + +private: + long m_startTime; + MxBool m_isRunning; + static long s_LastTimeCalculated; + static long s_LastTimeTimerStarted; }; #endif // MXTIMER_H diff --git a/LEGO1/mxvideoparam.cpp b/LEGO1/mxvideoparam.cpp new file mode 100644 index 00000000..8e33560b --- /dev/null +++ b/LEGO1/mxvideoparam.cpp @@ -0,0 +1,54 @@ +#include "mxvideoparam.h" + +MxVideoParam::MxVideoParam() +{ + this->m_flags = MxVideoParamFlags(); + this->m_right = 640; + this->m_bottom = 480; + this->m_left = 0; + this->m_top = 0; + this->m_palette = 0; + this->m_backBuffers = 0; + this->m_unk1c = 0; + this->m_deviceId = 0; +} + +MxVideoParam &MxVideoParam::operator=(const MxVideoParam &other) +{ + m_flags = MxVideoParamFlags(); + m_left = other.m_left; + m_top = other.m_top; + m_right = other.m_right; + m_bottom = other.m_bottom; + m_palette = other.m_palette; + m_backBuffers = other.m_backBuffers; + m_flags = other.m_flags; + m_unk1c = other.m_unk1c; + m_deviceId = other.m_deviceId; + SetDeviceName(other.m_deviceId); + + return *this; +} + +// TODO: this doesn't match exactly, something weird with the conditional on id +void MxVideoParam::SetDeviceName(char *id) +{ + if (this->m_deviceId != 0) + free(this->m_deviceId); + + if (id == 0) + { + this->m_deviceId = 0; + } + else + { + this->m_deviceId = (char *)malloc(strlen(id) + 1); + strcpy(this->m_deviceId, id); + } +} + +MxVideoParam::~MxVideoParam() +{ + if (this->m_deviceId != 0) + free(this->m_deviceId); +} diff --git a/LEGO1/mxvideoparamflags.cpp b/LEGO1/mxvideoparamflags.cpp new file mode 100644 index 00000000..00429e30 --- /dev/null +++ b/LEGO1/mxvideoparamflags.cpp @@ -0,0 +1,16 @@ +#include "mxvideoparamflags.h" + +MxVideoParamFlags::MxVideoParamFlags() +{ + // TODO: convert to EnableXXX function calls + unsigned char bVar1 = this->m_flags1; + this->m_flags1 = bVar1 & 0xfe; + this->m_flags1 = bVar1 & 0xfc; + this->m_flags1 = bVar1 & 0xf8; + this->m_flags1 = bVar1 & 0xf0; + this->m_flags1 = bVar1 & 0xe0; + this->m_flags2 = this->m_flags2 | 2; + this->m_flags1 = bVar1 & 0xc0; + this->m_flags1 = bVar1 & 0xc0 | 0x40; + this->m_flags1 = 0xc0; +} diff --git a/LEGO1/mxvideoparamflags.h b/LEGO1/mxvideoparamflags.h index e57917dc..49a4ecc1 100644 --- a/LEGO1/mxvideoparamflags.h +++ b/LEGO1/mxvideoparamflags.h @@ -1,6 +1,8 @@ #ifndef MXVIDEOPARAMFLAGS_H #define MXVIDEOPARAMFLAGS_H +#include + class MxVideoParamFlags { public: From 14b14f88a5ee6350337f3c52e8becf598c494d23 Mon Sep 17 00:00:00 2001 From: Thomas May Date: Wed, 14 Jun 2023 01:26:24 +0100 Subject: [PATCH 02/10] Make sure we're using MX_TRUE/MX_FALSE --- LEGO1/mxtimer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/LEGO1/mxtimer.cpp b/LEGO1/mxtimer.cpp index e54439dc..245787aa 100644 --- a/LEGO1/mxtimer.cpp +++ b/LEGO1/mxtimer.cpp @@ -7,14 +7,14 @@ long MxTimer::s_LastTimeTimerStarted = 0; MxTimer::MxTimer() { - this->m_isRunning = FALSE; + this->m_isRunning = MX_FALSE; MxTimer::s_LastTimeCalculated = timeGetTime(); this->m_startTime = MxTimer::s_LastTimeCalculated; } void MxTimer::Start() { - this->m_isRunning = TRUE; + this->m_isRunning = MX_TRUE; MxTimer::s_LastTimeTimerStarted = timeGetTime(); } @@ -22,7 +22,7 @@ void MxTimer::Stop() { long elapsed = this->GetRealTime(); long startTime = elapsed - MxTimer::s_LastTimeTimerStarted; - this->m_isRunning = FALSE; + this->m_isRunning = MX_FALSE; // this feels very stupid but it's what the assembly does this->m_startTime = this->m_startTime + startTime - 5; } From 7ed9c7df82f042a20f775c5bc6e19925057a1797 Mon Sep 17 00:00:00 2001 From: Thomas May Date: Wed, 14 Jun 2023 01:30:56 +0100 Subject: [PATCH 03/10] save the damn project --- isle.mak | 198 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- isle.mdp | Bin 46080 -> 51200 bytes 2 files changed, 190 insertions(+), 8 deletions(-) diff --git a/isle.mak b/isle.mak index c81ebe25..e70c28f9 100644 --- a/isle.mak +++ b/isle.mak @@ -56,8 +56,17 @@ ALL : ".\Release\LEGO1.DLL" CLEAN : -@erase "$(INTDIR)\dllmain.obj" -@erase "$(INTDIR)\legoomni.obj" + -@erase "$(INTDIR)\mxautolocker.obj" -@erase "$(INTDIR)\mxcore.obj" -@erase "$(INTDIR)\mxcriticalsection.obj" + -@erase "$(INTDIR)\mxomni.obj" + -@erase "$(INTDIR)\mxomnicreateflags.obj" + -@erase "$(INTDIR)\mxomnicreateparam.obj" + -@erase "$(INTDIR)\mxomnicreateparambase.obj" + -@erase "$(INTDIR)\mxstring.obj" + -@erase "$(INTDIR)\mxtimer.obj" + -@erase "$(INTDIR)\mxvideoparam.obj" + -@erase "$(INTDIR)\mxvideoparamflags.obj" -@erase ".\Release\LEGO1.DLL" -@erase ".\Release\LEGO1.EXP" -@erase ".\Release\LEGO1.LIB" @@ -107,18 +116,27 @@ BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /pdb:"Release/LEGO1.PDB" /map:"Release/LEGO1.MAP" /machine:I386 /out:"Release/LEGO1.DLL" /implib:"Release/LEGO1.LIB" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:windows /dll /pdb:"Release/LEGO1.PDB" /map:"Release/LEGO1.MAP" /machine:I386 /out:"Release/LEGO1.DLL" /implib:"Release/LEGO1.LIB" # SUBTRACT LINK32 /pdb:none LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ - odbccp32.lib /nologo /subsystem:windows /dll /incremental:no\ + odbccp32.lib winmm.lib /nologo /subsystem:windows /dll /incremental:no\ /pdb:"Release/LEGO1.PDB" /map:"Release/LEGO1.MAP" /machine:I386\ /out:"Release/LEGO1.DLL" /implib:"Release/LEGO1.LIB" LINK32_OBJS= \ "$(INTDIR)\dllmain.obj" \ "$(INTDIR)\legoomni.obj" \ + "$(INTDIR)\mxautolocker.obj" \ "$(INTDIR)\mxcore.obj" \ - "$(INTDIR)\mxcriticalsection.obj" + "$(INTDIR)\mxcriticalsection.obj" \ + "$(INTDIR)\mxomni.obj" \ + "$(INTDIR)\mxomnicreateflags.obj" \ + "$(INTDIR)\mxomnicreateparam.obj" \ + "$(INTDIR)\mxomnicreateparambase.obj" \ + "$(INTDIR)\mxstring.obj" \ + "$(INTDIR)\mxtimer.obj" \ + "$(INTDIR)\mxvideoparam.obj" \ + "$(INTDIR)\mxvideoparamflags.obj" ".\Release\LEGO1.DLL" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< @@ -145,8 +163,17 @@ ALL : ".\Debug\LEGO1.DLL" CLEAN : -@erase "$(INTDIR)\dllmain.obj" -@erase "$(INTDIR)\legoomni.obj" + -@erase "$(INTDIR)\mxautolocker.obj" -@erase "$(INTDIR)\mxcore.obj" -@erase "$(INTDIR)\mxcriticalsection.obj" + -@erase "$(INTDIR)\mxomni.obj" + -@erase "$(INTDIR)\mxomnicreateflags.obj" + -@erase "$(INTDIR)\mxomnicreateparam.obj" + -@erase "$(INTDIR)\mxomnicreateparambase.obj" + -@erase "$(INTDIR)\mxstring.obj" + -@erase "$(INTDIR)\mxtimer.obj" + -@erase "$(INTDIR)\mxvideoparam.obj" + -@erase "$(INTDIR)\mxvideoparamflags.obj" -@erase "$(INTDIR)\vc40.idb" -@erase "$(INTDIR)\vc40.pdb" -@erase "$(OUTDIR)\LEGO1.exp" @@ -200,18 +227,27 @@ BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /map /debug /machine:I386 /out:"Debug/LEGO1.DLL" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:windows /dll /map /debug /machine:I386 /out:"Debug/LEGO1.DLL" # SUBTRACT LINK32 /pdb:none LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ - odbccp32.lib /nologo /subsystem:windows /dll /incremental:yes\ + odbccp32.lib winmm.lib /nologo /subsystem:windows /dll /incremental:yes\ /pdb:"$(OUTDIR)/LEGO1.pdb" /map:"$(INTDIR)/LEGO1.map" /debug /machine:I386\ /out:"Debug/LEGO1.DLL" /implib:"$(OUTDIR)/LEGO1.lib" LINK32_OBJS= \ "$(INTDIR)\dllmain.obj" \ "$(INTDIR)\legoomni.obj" \ + "$(INTDIR)\mxautolocker.obj" \ "$(INTDIR)\mxcore.obj" \ - "$(INTDIR)\mxcriticalsection.obj" + "$(INTDIR)\mxcriticalsection.obj" \ + "$(INTDIR)\mxomni.obj" \ + "$(INTDIR)\mxomnicreateflags.obj" \ + "$(INTDIR)\mxomnicreateparam.obj" \ + "$(INTDIR)\mxomnicreateparambase.obj" \ + "$(INTDIR)\mxstring.obj" \ + "$(INTDIR)\mxtimer.obj" \ + "$(INTDIR)\mxvideoparam.obj" \ + "$(INTDIR)\mxvideoparamflags.obj" ".\Debug\LEGO1.DLL" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< @@ -497,6 +533,151 @@ DEP_CPP_MXCRI=\ $(CPP) $(CPP_PROJ) $(SOURCE) +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxautolocker.cpp +DEP_CPP_MXAUT=\ + ".\LEGO1\mxautolocker.h"\ + ".\LEGO1\mxcriticalsection.h"\ + + +"$(INTDIR)\mxautolocker.obj" : $(SOURCE) $(DEP_CPP_MXAUT) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxtimer.cpp +DEP_CPP_MXTIM=\ + ".\LEGO1\mxbool.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtimer.h"\ + + +"$(INTDIR)\mxtimer.obj" : $(SOURCE) $(DEP_CPP_MXTIM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxomni.cpp +DEP_CPP_MXOMN=\ + ".\LEGO1\mxbool.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxomni.h"\ + ".\LEGO1\mxomnicreateflags.h"\ + ".\LEGO1\mxomnicreateparam.h"\ + ".\LEGO1\mxomnicreateparambase.h"\ + ".\LEGO1\mxresult.h"\ + ".\LEGO1\mxstring.h"\ + ".\LEGO1\mxtimer.h"\ + ".\LEGO1\mxvideoparam.h"\ + + +"$(INTDIR)\mxomni.obj" : $(SOURCE) $(DEP_CPP_MXOMN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxvideoparam.cpp +DEP_CPP_MXVID=\ + ".\LEGO1\mxvideoparam.h"\ + + +"$(INTDIR)\mxvideoparam.obj" : $(SOURCE) $(DEP_CPP_MXVID) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxvideoparamflags.cpp +DEP_CPP_MXVIDE=\ + ".\LEGO1\mxvideoparamflags.h"\ + + +"$(INTDIR)\mxvideoparamflags.obj" : $(SOURCE) $(DEP_CPP_MXVIDE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxomnicreateparam.cpp +DEP_CPP_MXOMNI=\ + ".\LEGO1\mxbool.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxomnicreateflags.h"\ + ".\LEGO1\mxomnicreateparam.h"\ + ".\LEGO1\mxomnicreateparambase.h"\ + ".\LEGO1\mxstring.h"\ + ".\LEGO1\mxvideoparam.h"\ + + +"$(INTDIR)\mxomnicreateparam.obj" : $(SOURCE) $(DEP_CPP_MXOMNI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxomnicreateparambase.cpp +DEP_CPP_MXOMNIC=\ + ".\LEGO1\mxbool.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxomnicreateflags.h"\ + ".\LEGO1\mxomnicreateparam.h"\ + ".\LEGO1\mxomnicreateparambase.h"\ + ".\LEGO1\mxstring.h"\ + ".\LEGO1\mxvideoparam.h"\ + + +"$(INTDIR)\mxomnicreateparambase.obj" : $(SOURCE) $(DEP_CPP_MXOMNIC)\ + "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxstring.cpp +DEP_CPP_MXSTR=\ + ".\LEGO1\mxbool.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxstring.h"\ + + +"$(INTDIR)\mxstring.obj" : $(SOURCE) $(DEP_CPP_MXSTR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxomnicreateflags.cpp +DEP_CPP_MXOMNICR=\ + ".\LEGO1\mxbool.h"\ + ".\LEGO1\mxomnicreateflags.h"\ + + +"$(INTDIR)\mxomnicreateflags.obj" : $(SOURCE) $(DEP_CPP_MXOMNICR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + # End Source File # End Target ################################################################################ @@ -647,7 +828,7 @@ SOURCE=.\ISLE\res\isle.rc # Begin Source File SOURCE=.\LEGO1\mxomnicreateparambase.cpp -DEP_CPP_MXOMN=\ +DEP_CPP_MXOMNIC=\ ".\LEGO1\mxbool.h"\ ".\LEGO1\mxcore.h"\ ".\LEGO1\mxomnicreateflags.h"\ @@ -661,7 +842,8 @@ DEP_CPP_MXOMN=\ ".\LEGO1\mxvideoparamflags.h"\ -"$(INTDIR)\mxomnicreateparambase.obj" : $(SOURCE) $(DEP_CPP_MXOMN) "$(INTDIR)" +"$(INTDIR)\mxomnicreateparambase.obj" : $(SOURCE) $(DEP_CPP_MXOMNIC)\ + "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) diff --git a/isle.mdp b/isle.mdp index 1d92bce9b92e4ca9a9c88f55e04f126638aacd73..9a7cd26268c5f59b226e5a22a0f60f508c91d743 100644 GIT binary patch literal 51200 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 NmFq#}>>2|H;r~szv^D?$ literal 46080 zcmeI4>vGdZ7=}L+5|Tj48Ok}(^8rH=3guj|fs%$o2{diTosMD&TSW(ttbn8@l+Yp>RkIzSG7Jwx!=@17p5cE9hHti|P9rw3>!{Xn#X@aj7P zFY)SY0)O}Q=rQ=a^eKH$C+KbBEcOO}L8X5P2pisu{uwn!8WGq@yM!r#w;%ulAOHd& z00JNY0w4eaAOHd&00P^Yz{Op3sr-DLey3mP*PnD;3);>HTNv9Q4KW93m_}%ncGDhu zOZX0Nw>yCm8lXZn$oNh40saR85C8!X009sH0T2KI5C8!X009u#UIgI(ZLi~*bu?o% zP7^dqQ#4I8w2$^@EePEvPeY z`RL6;^yW-d&z+^krRY8W2LTWO0T2KI5C8!X009sH0T2KI5ZHJE@c%ac7;Hoj4$wh5 zM2G1J9i?M5OUE~&6KHdT2#nCgZyVG!ngsz6009sH0T2KI5C8!X009sH0T6iO1mOR@ zapaq#!FT9gdXL_x59mYsh(4xIHbt+{i8n(a^#AzHe$%&?mu}3SoLw=Uh56b0hGl3? zV~`5*Yp!&m@~~-m%}S~6nN8o+oJ!e!>R7I(H!Eh-GAg`^if%kI9iv!nGzx`N8O!j} z`AXQD>4YWbGq&LwVK0kbwNSXWexaosx9-kW?3QagX4Nw^-)Lx_X0I|VVZ&Fl)?pbn zS945T^G(;WHAkx%Ua@{TPw~|?)6z|+7MDJkr*uuTji%2=P^@3bQ_gf6Yku71r94G# zS2wH%V{SM;A8m%C6awe4IPzlsVxIQcvGIlGGECN_InQOS)D8FlfqCkBmM-)( zGZ?$2`L1p1#rpNEVC>eaR()La+%-qn)^s!Ja*kG4O*RD@#ro+St-7w2t3cKD*xWpu zy#?L$jH<7D+S6kFOpanrt;$cr9P`m`>CHzbTb}X&$T@+w_8cE_8CD_!HOM+C}m@HttJL2Ii_H+-UJa!=DDt0RuXe$o=Wj<7BrT5 z%ePxqj~%M2W;NN#!WXQdJWX~4X%c}9^9LbXSInA(0SM974e%3KId?dI9w0>PNR~pD z2+`WPV}wITh!!T(5fFrEsizG>w8(XdCdwuV(Po0a#35RWi_`}}8Z*<2o;YGx0MEZt-|u^^j@WMZ70qMMF%9g%U0a6mU21@@ctQrT!2 zj&3;BXC;=*G274Z+FcuFn`huO6lhG;@vbG3&|6ST_VJ#`v7frY3@;!Va%%k;*9#V$ zS~wJk7=3Hk(>L%H?6yrWQ?cQCFO%R*!IXV4kTp!H_!bGPO7uQnx{-mX9Wu zm|ApD9bu^p?cuIZWEH7pQ=<9OPE#|g+X=B+ymQQ^Mv7WA!3~fO>qM;`iOmwVW+v4hQR`XzUAwJXyI1rw ziam}Wn@y7Gp{|y3ii}CMD456YD&J>%wY-O)$jqoW{b#*otb^UQM33PN4o{aCSFnr+ z7kku)2+KH@@#-@nWWh3?M0^4kEaMxwj30@@c6kfn&U8xr9xnfiq++5d-7An%#aLSv z-yP6H6MOS18kWKYwzqf(K#J^mGR8E|MKR8!Q7OKMrlk>bt`x)MMN$$8xx{|4k&aYC z)*ckK-N}S3KP<}SbV4o=CxpEBQ9>ch4vF4XL8ecU9ZMPWiChO4x<`(Mr-X=+8b z009sH0T2KI5C8!X009sH0T9Se;AMgSEk7Tp@jr|mf0gwectl_L_}8u Date: Wed, 14 Jun 2023 01:32:43 +0100 Subject: [PATCH 04/10] fix merge conflicts --- isle.mak | 19 +++++++++++++++++++ isle.mdp | Bin 51200 -> 51200 bytes 2 files changed, 19 insertions(+) diff --git a/isle.mak b/isle.mak index e70c28f9..2913bc72 100644 --- a/isle.mak +++ b/isle.mak @@ -55,6 +55,7 @@ ALL : ".\Release\LEGO1.DLL" CLEAN : -@erase "$(INTDIR)\dllmain.obj" + -@erase "$(INTDIR)\legonavcontroller.obj" -@erase "$(INTDIR)\legoomni.obj" -@erase "$(INTDIR)\mxautolocker.obj" -@erase "$(INTDIR)\mxcore.obj" @@ -125,6 +126,7 @@ LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ /out:"Release/LEGO1.DLL" /implib:"Release/LEGO1.LIB" LINK32_OBJS= \ "$(INTDIR)\dllmain.obj" \ + "$(INTDIR)\legonavcontroller.obj" \ "$(INTDIR)\legoomni.obj" \ "$(INTDIR)\mxautolocker.obj" \ "$(INTDIR)\mxcore.obj" \ @@ -162,6 +164,7 @@ ALL : ".\Debug\LEGO1.DLL" CLEAN : -@erase "$(INTDIR)\dllmain.obj" + -@erase "$(INTDIR)\legonavcontroller.obj" -@erase "$(INTDIR)\legoomni.obj" -@erase "$(INTDIR)\mxautolocker.obj" -@erase "$(INTDIR)\mxcore.obj" @@ -236,6 +239,7 @@ LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ /out:"Debug/LEGO1.DLL" /implib:"$(OUTDIR)/LEGO1.lib" LINK32_OBJS= \ "$(INTDIR)\dllmain.obj" \ + "$(INTDIR)\legonavcontroller.obj" \ "$(INTDIR)\legoomni.obj" \ "$(INTDIR)\mxautolocker.obj" \ "$(INTDIR)\mxcore.obj" \ @@ -678,6 +682,21 @@ DEP_CPP_MXOMNICR=\ $(CPP) $(CPP_PROJ) $(SOURCE) +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legonavcontroller.cpp +DEP_CPP_LEGON=\ + ".\LEGO1\legonavcontroller.h"\ + ".\LEGO1\mxbool.h"\ + ".\LEGO1\mxcore.h"\ + + +"$(INTDIR)\legonavcontroller.obj" : $(SOURCE) $(DEP_CPP_LEGON) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + # End Source File # End Target ################################################################################ diff --git a/isle.mdp b/isle.mdp index 9a7cd26268c5f59b226e5a22a0f60f508c91d743..1855de7a87900545fb1a465f01ced5ce017dc802 100644 GIT binary patch delta 260 zcmZpez}zr_c>{;k=7f?TjGJUQgdhw97{dj|h?v1Qd1-;}q!|izbHRbFT-xKVur!y V+}N9}o3G}FFca+@d8S3jm;f_GV4eT~ delta 107 zcmZpez}zr_c>{;kW(BSvjGJUQgdhw97{dj|h?v2*`A*tIp3NJJKe10vn9ep?Vxr3C u-_B4&}8{cK-Ot}`t<#smO-v?_`K From e6f8da256f3ef5a1330bff893ced741a47c11ab3 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Thu, 15 Jun 2023 16:22:48 +0200 Subject: [PATCH 05/10] perfect SetDeviceName --- LEGO1/mxvideoparam.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/LEGO1/mxvideoparam.cpp b/LEGO1/mxvideoparam.cpp index 8e33560b..19dbad96 100644 --- a/LEGO1/mxvideoparam.cpp +++ b/LEGO1/mxvideoparam.cpp @@ -30,20 +30,21 @@ MxVideoParam &MxVideoParam::operator=(const MxVideoParam &other) return *this; } -// TODO: this doesn't match exactly, something weird with the conditional on id void MxVideoParam::SetDeviceName(char *id) { if (this->m_deviceId != 0) free(this->m_deviceId); - if (id == 0) - { - this->m_deviceId = 0; - } - else + if (id != 0) { this->m_deviceId = (char *)malloc(strlen(id) + 1); - strcpy(this->m_deviceId, id); + + if (this->m_deviceId != 0) { + strcpy(this->m_deviceId, id); + } + } + else { + this->m_deviceId = 0; } } From b51d74f642556f923280e01647f4a176972dc4e2 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Sat, 17 Jun 2023 22:03:09 +0200 Subject: [PATCH 06/10] fix broken MxOmniCreateParam ctor interface --- LEGO1/mxomnicreateparam.cpp | 4 ++-- LEGO1/mxomnicreateparam.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/LEGO1/mxomnicreateparam.cpp b/LEGO1/mxomnicreateparam.cpp index 06a3567c..bc5b71c8 100644 --- a/LEGO1/mxomnicreateparam.cpp +++ b/LEGO1/mxomnicreateparam.cpp @@ -1,9 +1,9 @@ #include "mxomnicreateparam.h" -MxOmniCreateParam::MxOmniCreateParam(const char *mediaPath, HWND windowHandle, MxVideoParam &vparam, MxOmniCreateFlags flags) +MxOmniCreateParam::MxOmniCreateParam(const char *mediaPath, struct HWND__ * windowHandle, MxVideoParam &vparam, MxOmniCreateFlags flags) { this->m_mediaPath = mediaPath; - this->m_windowHandle = windowHandle; + this->m_windowHandle = (HWND) windowHandle; this->m_videoParam = vparam; this->m_createFlags = flags; } diff --git a/LEGO1/mxomnicreateparam.h b/LEGO1/mxomnicreateparam.h index c1e8570f..3729e969 100644 --- a/LEGO1/mxomnicreateparam.h +++ b/LEGO1/mxomnicreateparam.h @@ -11,7 +11,7 @@ class MxOmniCreateParam : public MxOmniCreateParamBase { public: - __declspec(dllexport) MxOmniCreateParam(const char *mediaPath, HWND windowHandle, MxVideoParam &vparam, MxOmniCreateFlags flags); + __declspec(dllexport) MxOmniCreateParam(const char *mediaPath, struct HWND__ *windowHandle, MxVideoParam &vparam, MxOmniCreateFlags flags); // virtual void vtable00(); seems to be a destructor const MxOmniCreateFlags& CreateFlags() const { return this->m_createFlags; } From 258b7f861e25e536add9e8de6a6411e50484492c Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Sat, 17 Jun 2023 22:05:40 +0200 Subject: [PATCH 07/10] remove a space --- LEGO1/mxomnicreateparam.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LEGO1/mxomnicreateparam.cpp b/LEGO1/mxomnicreateparam.cpp index bc5b71c8..96bd541d 100644 --- a/LEGO1/mxomnicreateparam.cpp +++ b/LEGO1/mxomnicreateparam.cpp @@ -1,6 +1,6 @@ #include "mxomnicreateparam.h" -MxOmniCreateParam::MxOmniCreateParam(const char *mediaPath, struct HWND__ * windowHandle, MxVideoParam &vparam, MxOmniCreateFlags flags) +MxOmniCreateParam::MxOmniCreateParam(const char *mediaPath, struct HWND__ *windowHandle, MxVideoParam &vparam, MxOmniCreateFlags flags) { this->m_mediaPath = mediaPath; this->m_windowHandle = (HWND) windowHandle; From 30989aec9cea0fed6b62641319fb35cd113fcb64 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Sun, 18 Jun 2023 13:45:39 +0200 Subject: [PATCH 08/10] add Lego3DManager and related, fix a function signature --- ISLE/isle.cpp | 7 ++----- LEGO1/lego3dmanager.h | 17 +++++++++++++++++ LEGO1/lego3dview.h | 16 ++++++++++++++++ LEGO1/legoomni.cpp | 5 +++++ LEGO1/legoomni.h | 6 ++++-- LEGO1/legovideomanager.h | 11 ++++++----- 6 files changed, 50 insertions(+), 12 deletions(-) create mode 100755 LEGO1/lego3dmanager.h create mode 100755 LEGO1/lego3dview.h diff --git a/ISLE/isle.cpp b/ISLE/isle.cpp index e3483cd5..96479e93 100644 --- a/ISLE/isle.cpp +++ b/ISLE/isle.cpp @@ -85,10 +85,7 @@ void Isle::close() InputManager()->QueueEvent(KEYDOWN, 0, 0, 0, 0x20); } - // FIXME: Untangle - //VideoManager()->GetViewManager()->RemoveAll(NULL); - //ViewManager::RemoveAll - // (*(ViewManager **)(*(int *)(*(int *)(pLVar4 + 0x68) + 8) + 0x88), NULL); + VideoManager()->Get3DManager()->GetLego3DView()->GetViewManager()->RemoveAll(NULL); long local_88 = 0; Lego()->RemoveWorld(ds.m_atomId, local_88); @@ -102,7 +99,7 @@ void Isle::close() } while (lVar8 == 0); while (Lego()) { - if (Lego()->vtable28(ds) != 0) { + if (Lego()->vtable28(ds) != MX_FALSE) { break; } diff --git a/LEGO1/lego3dmanager.h b/LEGO1/lego3dmanager.h new file mode 100755 index 00000000..3e4de5ce --- /dev/null +++ b/LEGO1/lego3dmanager.h @@ -0,0 +1,17 @@ +#ifndef LEGO3DMANAGER_H +#define LEGO3DMANAGER_H + +#include "lego3dview.h" + +class Lego3DManager +{ +public: + inline Lego3DView *GetLego3DView() { return this->m_3dView; } + +private: + int m_unk00; + int m_unk04; + Lego3DView *m_3dView; +}; + +#endif // LEGO3DMANAGER_H diff --git a/LEGO1/lego3dview.h b/LEGO1/lego3dview.h new file mode 100755 index 00000000..3ab2da30 --- /dev/null +++ b/LEGO1/lego3dview.h @@ -0,0 +1,16 @@ +#ifndef LEGO3DVIEW_H +#define LEGO3DVIEW_H + +#include "viewmanager.h" + +class Lego3DView +{ +public: + inline ViewManager *GetViewManager() { return this->m_viewManager; } + +private: + char unknown[0x88]; + ViewManager *m_viewManager; +}; + +#endif // LEGO3DVIEW_H diff --git a/LEGO1/legoomni.cpp b/LEGO1/legoomni.cpp index e43be3bd..5ab9e866 100644 --- a/LEGO1/legoomni.cpp +++ b/LEGO1/legoomni.cpp @@ -11,3 +11,8 @@ LegoOmni *Lego() { return LegoOmni::GetInstance(); } + +LegoVideoManager *VideoManager() +{ + return LegoOmni::GetInstance()->GetVideoManager(); +} \ No newline at end of file diff --git a/LEGO1/legoomni.h b/LEGO1/legoomni.h index 1d4d92ef..42421e22 100644 --- a/LEGO1/legoomni.h +++ b/LEGO1/legoomni.h @@ -28,6 +28,7 @@ class MxMusicManager; class MxNotificationManager; class MxSoundManager; +// class LegoOmni : public MxOmni class LegoOmni { public: @@ -48,7 +49,7 @@ class LegoOmni virtual void vtable1c(); virtual void vtable20(); virtual void vtable24(MxDSAction &ds); - virtual int vtable28(MxDSAction &ds); + virtual MxBool vtable28(MxDSAction &ds); virtual void vtable2c(); virtual void vtable30(); virtual void vtable34(); @@ -56,6 +57,7 @@ class LegoOmni virtual void vtable3c(); virtual unsigned char vtable40(); + LegoVideoManager *GetVideoManager() { return m_videoMgr; } LegoInputManager *GetInputManager() { return m_inputMgr; } private: @@ -69,7 +71,7 @@ class LegoOmni int m_unk20; int m_unk24; int m_unk28; - int m_unk2c; + LegoVideoManager *m_videoMgr; int m_unk30; int m_unk34; int m_unk38; diff --git a/LEGO1/legovideomanager.h b/LEGO1/legovideomanager.h index fd370715..a221504f 100644 --- a/LEGO1/legovideomanager.h +++ b/LEGO1/legovideomanager.h @@ -1,17 +1,19 @@ #ifndef LEGOVIDEOMANAGER_H #define LEGOVIDEOMANAGER_H +#include "lego3dmanager.h" + +// class LegoVideoManager : public MxVideoManager class LegoVideoManager { public: __declspec(dllexport) int EnableRMDevice(); - __declspec(dllexport) int DisableRMDevice(); - __declspec(dllexport) void EnableFullScreenMovie(unsigned char a, unsigned char b); - __declspec(dllexport) void MoveCursor(int x, int y); + inline Lego3DManager *Get3DManager() { return this->m_3dManager; } + int m_unk00; int m_unk04; int m_unk08; @@ -38,11 +40,10 @@ class LegoVideoManager int m_unk5c; int m_unk60; int m_unk64; - int m_unk68; + Lego3DManager *m_3dManager; int m_unk6c; int m_unk70; int *m_unk74; - }; #endif // LEGOVIDEOMANAGER_H From e648bcb43954a8f047a3980fdb6eeaa02c701006 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Sun, 18 Jun 2023 13:59:56 +0200 Subject: [PATCH 09/10] add updated project files --- isle.mak | 18 ++++++++++++++++++ isle.mdp | Bin 51200 -> 48640 bytes 2 files changed, 18 insertions(+) diff --git a/isle.mak b/isle.mak index 2913bc72..66a85f7f 100644 --- a/isle.mak +++ b/isle.mak @@ -485,6 +485,8 @@ SOURCE=.\LEGO1\dllmain.cpp SOURCE=.\LEGO1\legoomni.cpp DEP_CPP_LEGOO=\ + ".\LEGO1\lego3dmanager.h"\ + ".\LEGO1\lego3dview.h"\ ".\LEGO1\legoanimationmanager.h"\ ".\LEGO1\legobuildingmanager.h"\ ".\LEGO1\legoentity.h"\ @@ -518,6 +520,7 @@ DEP_CPP_LEGOO=\ ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideoparam.h"\ ".\LEGO1\mxvideoparamflags.h"\ + ".\LEGO1\viewmanager.h"\ "$(INTDIR)\legoomni.obj" : $(SOURCE) $(DEP_CPP_LEGOO) "$(INTDIR)" @@ -578,10 +581,14 @@ DEP_CPP_MXOMN=\ ".\LEGO1\mxomnicreateflags.h"\ ".\LEGO1\mxomnicreateparam.h"\ ".\LEGO1\mxomnicreateparambase.h"\ + ".\LEGO1\mxpalette.h"\ + ".\LEGO1\mxrect32.h"\ ".\LEGO1\mxresult.h"\ ".\LEGO1\mxstring.h"\ ".\LEGO1\mxtimer.h"\ + ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideoparam.h"\ + ".\LEGO1\mxvideoparamflags.h"\ "$(INTDIR)\mxomni.obj" : $(SOURCE) $(DEP_CPP_MXOMN) "$(INTDIR)" @@ -625,8 +632,12 @@ DEP_CPP_MXOMNI=\ ".\LEGO1\mxomnicreateflags.h"\ ".\LEGO1\mxomnicreateparam.h"\ ".\LEGO1\mxomnicreateparambase.h"\ + ".\LEGO1\mxpalette.h"\ + ".\LEGO1\mxrect32.h"\ ".\LEGO1\mxstring.h"\ + ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideoparam.h"\ + ".\LEGO1\mxvideoparamflags.h"\ "$(INTDIR)\mxomnicreateparam.obj" : $(SOURCE) $(DEP_CPP_MXOMNI) "$(INTDIR)" @@ -644,8 +655,12 @@ DEP_CPP_MXOMNIC=\ ".\LEGO1\mxomnicreateflags.h"\ ".\LEGO1\mxomnicreateparam.h"\ ".\LEGO1\mxomnicreateparambase.h"\ + ".\LEGO1\mxpalette.h"\ + ".\LEGO1\mxrect32.h"\ ".\LEGO1\mxstring.h"\ + ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideoparam.h"\ + ".\LEGO1\mxvideoparamflags.h"\ "$(INTDIR)\mxomnicreateparambase.obj" : $(SOURCE) $(DEP_CPP_MXOMNIC)\ @@ -732,6 +747,8 @@ DEP_CPP_ISLE_=\ ".\ISLE\define.h"\ ".\ISLE\isle.h"\ ".\ISLE\res\resource.h"\ + ".\LEGO1\lego3dmanager.h"\ + ".\LEGO1\lego3dview.h"\ ".\LEGO1\legoanimationmanager.h"\ ".\LEGO1\legobuildingmanager.h"\ ".\LEGO1\legoentity.h"\ @@ -767,6 +784,7 @@ DEP_CPP_ISLE_=\ ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideoparam.h"\ ".\LEGO1\mxvideoparamflags.h"\ + ".\LEGO1\viewmanager.h"\ "$(INTDIR)\isle.obj" : $(SOURCE) $(DEP_CPP_ISLE_) "$(INTDIR)" diff --git a/isle.mdp b/isle.mdp index 1855de7a87900545fb1a465f01ced5ce017dc802..2520cf5165bbf68e03a2a0df01abb5c4dfd38e51 100644 GIT binary patch literal 48640 zcmeHQS$7mg6uy&<1W?Grsv@}ImI+A^5EUeoh+q&*z_^S{XS&I>>19q&Ck$`?1^o^F z5Z`^_C+L&s_~;Wa9;~XK>aOmp>U8HIk<1-Vk~zb7Yx(AO-MaTy-@d+l^-Mnuz;^(B zfUllo;1Rxhnt|VYdiFT^+weAg3opS@pjD$e(arD<4idN1F%O>0ep)L zAOpw%GJp&q1IPd}fD9l5$N(~c3?Ku$nSn=p;NedX`{7sEga?y<_Boc(wg#aRzou&! z>v!5#(5}~-f!z*m!>iBx_dLfp%y!*wJ68SL^5R0>wC>uTRc*9dmC95>87f^)!ZmC! zl9(yjM_@&xtOkur<;vDViwjq8PS@Rz?|OD4u#C`Z8G+%h5?Z2;FBNUWvDSRUvt1*! zea|&KW6cVx%@4|muWs0mX?tt2^!YNKz@c+jIhz1 z=5J>Bn_2$mEN|z=;`K%T9{(Z($N(~c3?Ku@05X6KAOpw%GJp&q1IWP6Gl22G-i-ep zgX8cVJP$9x33w4s!l|8CMI6BsV_*bEe|ch^VMoXSGJp&q1IPd}fD9l5$N(~c3?Ku@ z05Y({3}F1PH{*XV!z=JAyauP?b$A2bgtvBB53&0v$v_nUqlf(_=*{~lCr_@}-t5fD zB@6HW?~VKaBj%nTIHoYt!o;{8BlKO{tTyM0661DO zjmG*~;BR=Qv0>WDkW2KsY7-S`Rhwr@^y>RgDS?I`klGaIiuYjJfz=4jz_?d!o-HBP zHX5`DM+tp&J7)W?P0Ev$A)urJi$zB6I>uVNgz}5BtUyV%dAT?ts^TWi+2Zmo!?8kI zSEPhO(Qj^crld%F!wIX+!b_0bX@{g{i`($MFz_9RE)vEwbuytTTqCKf0vp@M9^VHJuB>$>SUNzI|cszj|QTMSrdg-iapokl>us)pgT z$;Cn!EGB=UxMmp}q3`&Ob)qEY=E+ryNtK{9nPrJlCSP(i$`S-6qLF@-B{;M4Mg2dH zvQUL}BVIAKKlJTPovNf~YziwQ>mSBa4uEuZ6@V_qqmAA{q?SHDeUE(mX zwI{aPg*PQs5per2)C-IlCB_c7|GdT^ZvPefLBa^Q{bv<6`4!WH+y6u9?Y|;ISz@<} z4uGP3Yg)O`0Zv;)9L`|k^sZ3IXd;pE-WA|@yrRFZzzNfjJ#+<3=sR(& znNO?$3sXzLi7T2fk-2PieVj_j$VkK&nxdch+e!J>3ZO8Br1@e~Q2Wn{KKf0oRUuVX zYV%gh@=VKX+^>;vBq>~N1zqJFCJ}lTE3d!-5l59XfkfM5J>;<3!_*5Lq5@J$X+3^F z#gjyi9p0}t^{@jJCe)hNBgZH*?Oy7^6BL}yC+XpPDV*tg&QQlGD3deNH#tJlEK8)v zuqmY-Lp_*HDeDUA;d_(Zj~;YfpY72L?WgGto)gi-$N+d2L=R$Z`K#1Ae}JW&}YjIV%_ zh~8ps&*esAr4sS6FDm0-Oy*Aqk$rd=F`BZB5YH3*Q5h%jka(n9z_?E;!(vV4Zl-W5 zL^(|1`x5<9xn*ITiDxRqjwMt{zNw6kuU5f3l~M6Rr}0l^31JkHhbp55^-c^pwe&Jn z(3}LCqiKU|F{+Sq%skGX#16ahz#_g`_Yr(KyR#u?-EsgJQ@k$(VKJsCogmlm{2xzH z8zYk#nT+!$!lk%NBa=H8@gqUb^d>DQ5yiJuI>=t)>-ZZ%gB%doFAv2-jA+K9C&lWy z#MIb-ml{Je#Wc}soRtj|Y)idn#v)@D{f>_uq5nU(g#JH0llC89)Y*0b~FfKn9QjWB?gJ z26~8r?DIc((Hwru5SIVmI!wVii_XcGD0ZCOCe%$7ZcDa%OH#S=-*@11Sb;C#OZW=D PhB|!HLpqOB9f5xVCSESS literal 51200 zcmeHQS$EsU6~2fTOS0ollI=K-W2Z}Y#+IDKb#_zoR@q4uIfCP3c_0YZQfAOr{jLVyq;1PB2_fDj-A2mwOi03)!rc60S~rM9ws`}39#iqkUz%cop$6#Ps_4B!NfLg-|0kl2a0bpEEVCwUN)edG*zZ^( z@z<{;Q63BA8$$TM*)#0mpG!T3Qi06DKj>l4#*@wr7(u>%@+R%{r!m6kDBPu!-1Z6_g- zFb3=EAoQA2t&PC)dv+A~ZnM(5WdatmXxNR%n_~`X6F&okr;zAgwgxGtkZhr*_)k; zS)-BD^G>hQs+xh6m7jH*t@q9H*s?t*V*DqD#>bxQ;=&NgI$bZSw2WG+-|Iv;Huw!B zqzMDhW8IpeJ;fOq_lLY>q@Ag>J~D$9DR&-wPTDaU^@e^ga(z}+qk#)kg?77xWIqzC zj$y5z*r99J(ID85O3Sdh^S(H-WTWB3?`27omISkWWJq71mYjNbQ+|0eG}n}U$uepm zG9Qy=WOC_9$|#>K!zWq9*<^iaW`TA$3cR547!8S6!ANgmf;^=m)VwR@2@PwU89`iQ zL(sD1u?-Cad|!_m*JHO{WsU47?Rj>l#;{N@^KIKtq#l>o15W3h8l_bZ*w2wmGl1Wh zy&98CLoUrWL4wR!$fX$ws)Ufy^c{y>n&Kc;Y=7j^Y#+`ONRdlZ67v)w9VnM(o@pb?Q%laMg$oEjuyDDZ38tWn_{4*N$@cmn@y6}NHyf2Q~Zjc-4; zkTJOWMHu`B<7&m36#tbmO8j$zlS}BURjfxosRn_B*cmx(k3x0b4mX`hBCaNW>zFG0 zF!9@9WT1bJNlyqqlg7bHD8Xl$P~ZHKKFet)&1Z}BGMuuT2ZYiPtX_DIW!UdF>BVQV zc^|#ddHpPpKG88YeIe#O^kP^6G0UMB;&}yi)}54bo6pLx>`ClZpJ`4yiS+8F&&qjA zGZgw1NBv$pAEB2*{l)CVHbU`SgI;K^Xl6k#j+kci2zoKBAByo=1HI5G7GllK5$I*7 zML4#k4b2zE|Mhud`F+uTz3g#0K);PO^+#b#s*KjuALuTT#!5&b?Giyerhtc_OGJ2w zlMio}NKZ`7E#2Fo0}`~SJ{TU5Km$m+a6sSYXaKpnN&`qquS5gL>i^dOaxOcQM;gf3 zv|8DTKw{|E$Vm=ZI`3MLom6%KpQ5x*8_9OF|JW!+|hJ|_~Xbd_d_Ou8nsKnAUVPpQf) zFbl+n1O1|SR16t)DzeCWQ}|gDWi@3{inDSd((1_~+4Hh&ezjzg_yt*9^<34{xY9Po zYR_90cEhUJi*mk-_o~XHNyK4omTls{s!}=S`aM`xJg1!M!>S2VVzntlxb#ysjTTPRmHkb3ZRXGWV%-`NdOnBU?SZb-liI&!u6t*wv zdC6Y4nzK~T%<<^bGBV43HlD=@+KP-uu8f!0VnzBRw6Ki!&cA@8>NTv9eCPs92C^S zNrx$gRh7l_dIQ{@b1O0alpkSq&t@N@xPyeeElVF4E58oUed!TWF> zegrq*1Naa=f{)=7_!K^an^1)%ScY408}7hexCcLm6}S%%;B)u_egdnowukkmqILs; zR{>dS;28Yw$o27~5aqJ0zEgd3H`ySc$K2V@FL4)z8S<{=S0g@qb`m#wIlTxsdapbF zmWP~t0B!@QT(No-o+J-isEoDvCmY8cUN$8p5>ehaY;1mBJ=ok=*|L>_p?uVN{ s#9nmW&XY3_;Y-+npTf`J=kN=t!B_B0_!aybY^d**>p|u08v@7Se_8{EQ~&?~ From 170ca99390c1d8241cc7a2e2321773ab8780d404 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Sun, 18 Jun 2023 14:02:16 +0200 Subject: [PATCH 10/10] forgot updated viewmanager.h --- LEGO1/viewmanager.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/LEGO1/viewmanager.h b/LEGO1/viewmanager.h index 3554c6c9..9abe5612 100644 --- a/LEGO1/viewmanager.h +++ b/LEGO1/viewmanager.h @@ -1,6 +1,8 @@ #ifndef VIEWMANAGER_H #define VIEWMANAGER_H +class ViewROI; + class ViewManager { public: