diff --git a/ISLE/isle.cpp b/ISLE/isle.cpp index 20c40016..b975736b 100644 --- a/ISLE/isle.cpp +++ b/ISLE/isle.cpp @@ -88,10 +88,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); @@ -105,7 +102,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 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..96bd541d --- /dev/null +++ b/LEGO1/mxomnicreateparam.cpp @@ -0,0 +1,9 @@ +#include "mxomnicreateparam.h" + +MxOmniCreateParam::MxOmniCreateParam(const char *mediaPath, struct HWND__ *windowHandle, MxVideoParam &vparam, MxOmniCreateFlags flags) +{ + this->m_mediaPath = mediaPath; + this->m_windowHandle = (HWND) windowHandle; + this->m_videoParam = vparam; + this->m_createFlags = flags; +} diff --git a/LEGO1/mxomnicreateparam.h b/LEGO1/mxomnicreateparam.h index f72623aa..3729e969 100644 --- a/LEGO1/mxomnicreateparam.h +++ b/LEGO1/mxomnicreateparam.h @@ -12,14 +12,15 @@ class MxOmniCreateParam : public MxOmniCreateParamBase { public: __declspec(dllexport) MxOmniCreateParam(const char *mediaPath, struct HWND__ *windowHandle, MxVideoParam &vparam, MxOmniCreateFlags flags); - virtual void vtable00(); + // 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..245787aa --- /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 = MX_FALSE; + MxTimer::s_LastTimeCalculated = timeGetTime(); + this->m_startTime = MxTimer::s_LastTimeCalculated; +} + +void MxTimer::Start() +{ + this->m_isRunning = MX_TRUE; + MxTimer::s_LastTimeTimerStarted = timeGetTime(); +} + +void MxTimer::Stop() +{ + long elapsed = this->GetRealTime(); + long startTime = elapsed - MxTimer::s_LastTimeTimerStarted; + this->m_isRunning = MX_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..19dbad96 --- /dev/null +++ b/LEGO1/mxvideoparam.cpp @@ -0,0 +1,55 @@ +#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; +} + +void MxVideoParam::SetDeviceName(char *id) +{ + if (this->m_deviceId != 0) + free(this->m_deviceId); + + if (id != 0) + { + this->m_deviceId = (char *)malloc(strlen(id) + 1); + + if (this->m_deviceId != 0) { + strcpy(this->m_deviceId, id); + } + } + else { + this->m_deviceId = 0; + } +} + +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: 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: diff --git a/isle.mak b/isle.mak index c013ed05..4ff75519 100644 --- a/isle.mak +++ b/isle.mak @@ -57,9 +57,18 @@ CLEAN : -@erase "$(INTDIR)\dllmain.obj" -@erase "$(INTDIR)\legonavcontroller.obj" -@erase "$(INTDIR)\legoomni.obj" + -@erase "$(INTDIR)\mxautolocker.obj" -@erase "$(INTDIR)\mxcore.obj" -@erase "$(INTDIR)\mxcriticalsection.obj" -@erase "$(INTDIR)\vc40.pdb" + -@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" @@ -72,7 +81,7 @@ CPP=cl.exe # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MT /W3 /GX /Zi /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fp"Release/LEGO1.PCH" /YX /c CPP_PROJ=/nologo /MT /W3 /GX /Zi /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\ - /Fp"Release/LEGO1.PCH" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c + /Fp"Release/LEGO1.PCH" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c CPP_OBJS=.\LEGO1\Release/ CPP_SBRS=.\. @@ -113,15 +122,24 @@ LINK32=link.exe # SUBTRACT LINK32 /pdb:none /map 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" /debug /machine:I386 /out:"Release/LEGO1.DLL"\ - /implib:"Release/LEGO1.LIB" + /implib:"Release/LEGO1.LIB" LINK32_OBJS= \ "$(INTDIR)\dllmain.obj" \ "$(INTDIR)\legonavcontroller.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) @<< @@ -149,8 +167,17 @@ CLEAN : -@erase "$(INTDIR)\dllmain.obj" -@erase "$(INTDIR)\legonavcontroller.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" @@ -166,7 +193,7 @@ CPP=cl.exe # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"Debug/LEGO1.PCH" /YX /c CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\ - /Fp"Debug/LEGO1.PCH" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c + /Fp"Debug/LEGO1.PCH" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c CPP_OBJS=.\LEGO1\Debug/ CPP_SBRS=.\. @@ -207,15 +234,24 @@ LINK32=link.exe # SUBTRACT LINK32 /pdb:none /map 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" /debug /machine:I386 /out:"Debug/LEGO1.DLL"\ - /implib:"$(OUTDIR)/LEGO1.lib" + /implib:"$(OUTDIR)/LEGO1.lib" LINK32_OBJS= \ "$(INTDIR)\dllmain.obj" \ "$(INTDIR)\legonavcontroller.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) @<< @@ -256,7 +292,7 @@ CPP=cl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /W3 /GX /Zi /O2 /I "LEGO1" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fp"Release/ISLE.PCH" /YX /c CPP_PROJ=/nologo /ML /W3 /GX /Zi /O2 /I "LEGO1" /D "WIN32" /D "NDEBUG" /D\ - "_WINDOWS" /Fp"Release/ISLE.PCH" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c + "_WINDOWS" /Fp"Release/ISLE.PCH" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c CPP_OBJS=.\ISLE\Release/ CPP_SBRS=.\. @@ -300,7 +336,7 @@ 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 winmm.lib lego1.lib dsound.lib /nologo /subsystem:windows\ /incremental:no /pdb:"Release/ISLE.PDB" /debug /machine:I386\ - /out:"Release/ISLE.EXE" /LIBPATH:"ISLE/ext" + /out:"Release/ISLE.EXE" /LIBPATH:"ISLE/ext" LINK32_OBJS= \ "$(INTDIR)\define.obj" \ "$(INTDIR)\isle.obj" \ @@ -350,7 +386,7 @@ CPP=cl.exe # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "LEGO1" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"Debug/ISLE.PCH" /YX /c CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /I "LEGO1" /D "WIN32" /D "_DEBUG" /D\ - "_WINDOWS" /Fp"Debug/ISLE.PCH" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c + "_WINDOWS" /Fp"Debug/ISLE.PCH" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c CPP_OBJS=.\ISLE\Debug/ CPP_SBRS=.\. @@ -451,6 +487,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"\ @@ -484,6 +522,7 @@ DEP_CPP_LEGOO=\ ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideoparam.h"\ ".\LEGO1\mxvideoparamflags.h"\ + ".\LEGO1\viewmanager.h"\ "$(INTDIR)\legoomni.obj" : $(SOURCE) $(DEP_CPP_LEGOO) "$(INTDIR)" @@ -503,6 +542,163 @@ 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\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)" + $(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\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)" + $(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\mxpalette.h"\ + ".\LEGO1\mxrect32.h"\ + ".\LEGO1\mxstring.h"\ + ".\LEGO1\mxvariabletable.h"\ + ".\LEGO1\mxvideoparam.h"\ + ".\LEGO1\mxvideoparamflags.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 ################################################################################ # Begin Source File @@ -553,6 +749,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"\ @@ -588,6 +786,7 @@ DEP_CPP_ISLE_=\ ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideoparam.h"\ ".\LEGO1\mxvideoparamflags.h"\ + ".\LEGO1\viewmanager.h"\ "$(INTDIR)\isle.obj" : $(SOURCE) $(DEP_CPP_ISLE_) "$(INTDIR)" @@ -668,7 +867,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"\ @@ -682,7 +881,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 4c441a8c..2520cf51 100644 Binary files a/isle.mdp and b/isle.mdp differ