diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 07fe411d..39564bda 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -29,7 +29,7 @@ jobs: if: steps.cache-dx5.outputs.cache-hit != 'true' run: | cd dx5sdk - C:\msys64\usr\bin\wget.exe https://archive.org/download/idx5sdk/idx5sdk.exe + curl -fLOSs https://archive.org/download/idx5sdk/idx5sdk.exe 7z x .\idx5sdk.exe 7z x .\DX5SDK.EXE @@ -55,13 +55,24 @@ jobs: .\msvc420\bin\NMAKE.EXE /f isle.mak CFG="ISLE - Win32 Release" - name: Summarize Accuracy - shell: cmd + shell: bash run: | - C:\msys64\usr\bin\wget.exe https://legoisland.org/download/ISLE.EXE - C:\msys64\usr\bin\wget.exe https://legoisland.org/download/LEGO1.DLL + curl -fLOSs https://legoisland.org/download/ISLE.EXE + curl -fLOSs https://legoisland.org/download/LEGO1.DLL pip install capstone - python3 tools/reccmp/reccmp.py -H ISLEPROGRESS.HTML ISLE.EXE Release/ISLE.EXE Release/ISLE.PDB . - python3 tools/reccmp/reccmp.py -H LEGO1PROGRESS.HTML LEGO1.DLL Release/LEGO1.DLL Release/LEGO1.PDB . + pip install colorama + python3 tools/reccmp/reccmp.py -S ISLEPROGRESS.SVG --svg-icon tools/reccmp/isle.png -H ISLEPROGRESS.HTML ISLE.EXE Release/ISLE.EXE Release/ISLE.PDB . | tee ISLEPROGRESS.TXT + python3 tools/reccmp/reccmp.py -S LEGO1PROGRESS.SVG -T 1929 --svg-icon tools/reccmp/lego1.png -H LEGO1PROGRESS.HTML LEGO1.DLL Release/LEGO1.DLL Release/LEGO1.PDB . | tee LEGO1PROGRESS.TXT + + - name: Compare Accuracy With Current Master + shell: bash + run: | + # Compare with current master + curl -fLSs -o ISLEPROGRESS-OLD.TXT https://github.com/isledecomp/isle/releases/download/continuous/ISLEPROGRESS.TXT + curl -fLSs -o LEGO1PROGRESS-OLD.TXT https://github.com/isledecomp/isle/releases/download/continuous/LEGO1PROGRESS.TXT + + diff -u ISLEPROGRESS-OLD.TXT ISLEPROGRESS.TXT || true + diff -u LEGO1PROGRESS-OLD.TXT LEGO1PROGRESS.TXT || true - name: Upload Artifact uses: actions/upload-artifact@master @@ -71,3 +82,31 @@ jobs: Release ISLEPROGRESS.HTML LEGO1PROGRESS.HTML + ISLEPROGRESS.SVG + LEGO1PROGRESS.SVG + + - name: Upload Continuous Release + shell: bash + if: github.event_name == 'push' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # Convert SVGs to PNG + INKSCAPE_DIR=inkscape-1.2.2_2022-12-09_732a01da63-x64 + curl -fLOSs https://inkscape.org/gallery/item/37364/$INKSCAPE_DIR.7z + 7z x $INKSCAPE_DIR.7z + $INKSCAPE_DIR/bin/inkscape -w 512 ISLEPROGRESS.SVG -o ISLEPROGRESS.PNG + $INKSCAPE_DIR/bin/inkscape -w 512 LEGO1PROGRESS.SVG -o LEGO1PROGRESS.PNG + + curl -fLOSs https://raw.githubusercontent.com/probonopd/uploadtool/master/upload.sh + ./upload.sh \ + Release/ISLE.EXE \ + Release/LEGO1.DLL \ + ISLEPROGRESS.HTML \ + ISLEPROGRESS.TXT \ + ISLEPROGRESS.SVG \ + ISLEPROGRESS.PNG \ + LEGO1PROGRESS.HTML \ + LEGO1PROGRESS.TXT \ + LEGO1PROGRESS.PNG \ + LEGO1PROGRESS.SVG diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 331b5746..5633e7c6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,13 +6,21 @@ Generally, decompilation is a fairly advanced skill. If you aren't already famil ## Ghidra Server -For documenting the original binaries and generating pseudocode that we decompile with, we primarily use [Ghidra](https://ghidra-sre.org/) (it's free and open source). To help with collaboration, we have a shared Ghidra repository with all of our current work. It is available to the public but read-only; to contribute to it yourself, you'll need approval from a current maintainer. +For documenting the original binaries and generating pseudocode that we decompile with, we primarily use [Ghidra](https://ghidra-sre.org/) (it's free and open source). To help with collaboration, we have a shared Ghidra repository with all of our current work. You are free to check it out and mess around with it locally, however to prevent sabotage, you will need to request permission before you can push your changes back to the server (ask in the Matrix room). To access the Ghidra repository, use the following details: - Address: `server.mattkc.com` - Port: `13100` +## General Guidelines + +If you have contributions, feel free to create a pull request! Someone will review and merge it (or provide feedback) as soon as possible. + +Please keep your pull requests small and understandable; you may be able to shoot ahead and make a lot of progress in a short amount of time, but this is a collaborative project, so you must allow others to catch up and follow along. Large pull requests become significantly more unwieldy to review, and as such make it exponentially more likely for a mistake or error to go undetected. They also make it harder to merge other pull requests because the more files you modify, the more likely it is for a merge conflict to occur. A general guideline is to keep submissions limited to one class at a time. Sometimes two or more classes may be too interlinked for this to be feasible, so this is not a hard rule, however if your PR is starting to modify more than 10 or so files, it's probably getting too big. + +This repository currently has only one goal: accuracy to the original executables. We are byte/instruction matching as much as possible, which means the priority is making the original compiler (MSVC 4.20) produce code that matches the original game. As such, modernizations and bug fixes will probably be rejected for the time being. + ## Code Style In general, we're not exhaustively strict about coding style, but there are some preferable guidelines to follow that have been adopted from what we know about the original codebase: @@ -21,10 +29,7 @@ In general, we're not exhaustively strict about coding style, but there are some - `PascalCase` for classes and function names. - `m_camelCase` for member variables. - `g_camelCase` for global variables. - -## Kinds of Contributions - -This repository has only one goal: accuracy to the original executables. As such, we are not likely to accept pull requests that attempt to modernize the code, or improve compatibility in a newer compiler that ends up reducing compatibility in MSVC 4.20. Essentially, accuracy is king, everything else is secondary. For modernizations and enhancements, it's recommended to create a fork downstream from this one instead. +- `p_camelCase` for function parameters. ## Questions? diff --git a/ISLE/define.cpp b/ISLE/define.cpp index b5501b08..f236ea29 100644 --- a/ISLE/define.cpp +++ b/ISLE/define.cpp @@ -1,7 +1,7 @@ #include "define.h" // 0x410030 -Isle *g_isle = 0; +IsleApp *g_isle = 0; // 0x410034 unsigned char g_mousedown = 0; @@ -28,7 +28,7 @@ int g_targetWidth = 640; int g_targetHeight = 480; // 0x410060 -unsigned int g_targetDepth = 16; +int g_targetDepth = 16; // 0x410064 int g_reqEnableRMDevice = 0; diff --git a/ISLE/define.h b/ISLE/define.h index 27a347b7..ffc74654 100644 --- a/ISLE/define.h +++ b/ISLE/define.h @@ -1,11 +1,11 @@ #ifndef DEFINE_H #define DEFINE_H -#include "legoinc.h" +#include -class Isle; +class IsleApp; -extern Isle *g_isle; +extern IsleApp *g_isle; extern int g_closed; // 0x4101c4 #define WNDCLASS_NAME "Lego Island MainNoM App" @@ -18,7 +18,7 @@ extern int g_rmDisabled; extern int g_waitingForTargetDepth; extern int g_targetWidth; extern int g_targetHeight; -extern unsigned int g_targetDepth; +extern int g_targetDepth; extern int g_reqEnableRMDevice; extern int g_startupDelay; extern long g_lastFrameTime; diff --git a/ISLE/isle.cpp b/ISLE/isle.cpp deleted file mode 100644 index 051572ef..00000000 --- a/ISLE/isle.cpp +++ /dev/null @@ -1,284 +0,0 @@ -#include "isle.h" - -// OFFSET: ISLE 0x401000 -Isle::Isle() -{ - m_hdPath = NULL; - m_cdPath = NULL; - m_deviceId = NULL; - m_savePath = NULL; - m_fullScreen = 1; - m_flipSurfaces = 0; - m_backBuffersInVram = 1; - m_using8bit = 0; - m_using16bit = 1; - m_unk24 = 0; - m_drawCursor = 0; - m_use3dSound = 1; - m_useMusic = 1; - m_useJoystick = 0; - m_joystickIndex = 0; - m_wideViewAngle = 1; - m_islandQuality = 1; - m_islandTexture = 1; - m_gameStarted = 0; - m_frameDelta = 10; - m_windowActive = 1; - - m_videoParam = MxVideoParam(MxRect32(0, 0, 639, 479), NULL, 1, MxVideoParamFlags()); - m_videoParam.flags().Set16Bit(MxDirectDraw::GetPrimaryBitDepth() == 16); - - m_windowHandle = NULL; - m_cursorArrow = NULL; - m_cursorBusy = NULL; - m_cursorNo = NULL; - m_cursorCurrent = NULL; - - LegoOmni::CreateInstance(); -} - -// OFFSET: ISLE 0x4011a0 -Isle::~Isle() -{ - if (LegoOmni::GetInstance()) { - Close(); - MxOmni::DestroyInstance(); - } - - if (m_hdPath) { - delete [] m_hdPath; - } - - if (m_cdPath) { - delete [] m_cdPath; - } - - if (m_deviceId) { - delete [] m_deviceId; - } - - if (m_savePath) { - delete [] m_savePath; - } -} - -// OFFSET: ISLE 0x401260 -void Isle::Close() -{ - MxDSAction ds; - ds.SetUnknown24(-2); - - if (Lego()) { - GameState()->Save(0); - if (InputManager()) { - InputManager()->QueueEvent(KEYDOWN, 0, 0, 0, 0x20); - } - - VideoManager()->Get3DManager()->GetLego3DView()->GetViewManager()->RemoveAll(NULL); - - Lego()->RemoveWorld(ds.GetAtomId(), ds.GetUnknown1c()); - Lego()->vtable24(ds); - TransitionManager()->SetWaitIndicator(NULL); - Lego()->vtable3c(); - - long lVar8; - do { - lVar8 = Streamer()->Close(NULL); - } while (lVar8 == 0); - - while (Lego()) { - if (Lego()->vtable28(ds) != MX_FALSE) { - break; - } - - Timer()->GetRealTime(); - TickleManager()->Tickle(); - } - } -} - -// OFFSET: ISLE 0x402740 -BOOL Isle::ReadReg(LPCSTR name, LPSTR outValue, DWORD outSize) -{ - HKEY hKey; - DWORD valueType; - - BOOL out = FALSE; - unsigned long size = outSize; - if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Mindscape\\LEGO Island", 0, KEY_READ, &hKey) == ERROR_SUCCESS) { - if (RegQueryValueExA(hKey, name, NULL, &valueType, (LPBYTE) outValue, &size) == ERROR_SUCCESS) { - if (RegCloseKey(hKey) == ERROR_SUCCESS) { - out = TRUE; - } - } - } - - return out; -} - -// OFFSET: ISLE 0x4027b0 -int Isle::ReadRegBool(LPCSTR name, BOOL *out) -{ - char buffer[256]; - - BOOL read = ReadReg(name, buffer, sizeof(buffer)); - if (read) { - if (strcmp("YES", buffer) == 0) { - *out = TRUE; - return read; - } - - if (strcmp("NO", buffer) == 0) { - *out = FALSE; - return read; - } - - read = FALSE; - } - return read; -} - -// OFFSET: ISLE 0x402880 -int Isle::ReadRegInt(LPCSTR name, int *out) -{ - char buffer[256]; - - BOOL read = ReadReg(name, buffer, sizeof(buffer)); - if (read) { - *out = atoi(buffer); - } - - return read; -} - -// OFFSET: ISLE 0x4028d0 -void Isle::LoadConfig() -{ - char buffer[1024]; - - if (!ReadReg("diskpath", buffer, sizeof(buffer))) { - strcpy(buffer, MxOmni::GetHD()); - } - - m_hdPath = new char[strlen(buffer) + 1]; - strcpy(m_hdPath, buffer); - MxOmni::SetHD(m_hdPath); - - if (!ReadReg("cdpath", buffer, sizeof(buffer))) { - strcpy(buffer, MxOmni::GetCD()); - } - - m_cdPath = new char[strlen(buffer) + 1]; - strcpy(m_cdPath, buffer); - MxOmni::SetCD(m_cdPath); - - ReadRegBool("Flip Surfaces", &m_flipSurfaces); - ReadRegBool("Full Screen", &m_fullScreen); - ReadRegBool("Wide View Angle", &m_wideViewAngle); - ReadRegBool("3DSound", &m_use3dSound); - ReadRegBool("Music", &m_useMusic); - ReadRegBool("UseJoystick", &m_useJoystick); - ReadRegInt("JoystickIndex", &m_joystickIndex); - ReadRegBool("Draw Cursor", &m_drawCursor); - - int backBuffersInVRAM; - if (ReadRegBool("Back Buffers in Video RAM",&backBuffersInVRAM)) { - m_backBuffersInVram = !backBuffersInVRAM; - } - - int bitDepth; - if (ReadRegInt("Display Bit Depth", &bitDepth)) { - if (bitDepth == 8) { - m_using8bit = TRUE; - } else if (bitDepth == 16) { - m_using16bit = TRUE; - } - } - - if (!ReadReg("Island Quality", buffer, sizeof(buffer))) { - strcpy(buffer, "1"); - } - m_islandQuality = atoi(buffer); - - if (!ReadReg("Island Texture", buffer, sizeof(buffer))) { - strcpy(buffer, "1"); - } - m_islandTexture = atoi(buffer); - - if (ReadReg("3D Device ID", buffer, sizeof(buffer))) { - m_deviceId = new char[strlen(buffer) + 1]; - strcpy(m_deviceId, buffer); - } - - if (ReadReg("savepath", buffer, sizeof(buffer))) { - m_savePath = new char[strlen(buffer) + 1]; - strcpy(m_savePath, buffer); - } -} - -// OFFSET: ISLE 0x401560 -void Isle::SetupVideoFlags(BOOL fullScreen, BOOL flipSurfaces, BOOL backBuffers, - BOOL using8bit, BOOL using16bit, BOOL param_6, BOOL param_7, - BOOL wideViewAngle, char *deviceId) -{ - m_videoParam.flags().SetFullScreen(fullScreen); - m_videoParam.flags().SetFlipSurfaces(flipSurfaces); - m_videoParam.flags().SetBackBuffers(!backBuffers); - m_videoParam.flags().Set_f2bit0(!param_6); - m_videoParam.flags().Set_f1bit7(param_7); - m_videoParam.flags().SetWideViewAngle(wideViewAngle); - m_videoParam.flags().Set_f2bit1(1); - m_videoParam.SetDeviceName(deviceId); - if (using8bit) { - m_videoParam.flags().Set16Bit(0); - } - if (using16bit) { - m_videoParam.flags().Set16Bit(1); - } -} - -// OFFSET: ISLE 0x4013b0 -BOOL Isle::SetupLegoOmni() -{ - BOOL result = FALSE; - char mediaPath[256]; - GetProfileStringA("LEGO Island", "MediaPath", "", mediaPath, sizeof(mediaPath)); - - BOOL failure = Lego()->Create(MxOmniCreateParam(mediaPath, (struct HWND__ *) m_windowHandle, m_videoParam, MxOmniCreateFlags())) == FAILURE; - if (!failure) { - VariableTable()->SetVariable("ACTOR_01", ""); - TickleManager()->vtable1c(VideoManager(), 10); - result = TRUE; - } - - return result; -} - -// OFFSET: ISLE 0x402e80 -void Isle::SetupCursor(WPARAM wParam) -{ - switch (wParam) { - case 0: - m_cursorCurrent = m_cursorArrow; - break; - case 1: - m_cursorCurrent = m_cursorBusy; - break; - case 2: - m_cursorCurrent = m_cursorNo; - break; - case 0xB: - m_cursorCurrent = NULL; - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 0xA: - break; - } - - SetCursor(m_cursorCurrent); -} \ No newline at end of file diff --git a/ISLE/isle.h b/ISLE/isle.h deleted file mode 100644 index d899d037..00000000 --- a/ISLE/isle.h +++ /dev/null @@ -1,277 +0,0 @@ -#ifndef ISLE_H -#define ISLE_H - -#include "legoinc.h" -#include "define.h" - -#include "legoomni.h" -#include "legoanimationmanager.h" -#include "legobuildingmanager.h" -#include "legomodelpresenter.h" -#include "legopartpresenter.h" -#include "legoworldpresenter.h" -#include "mxresult.h" -#include "mxvideoparam.h" -#include "mxdirectdraw.h" -#include "mxdsaction.h" -#include "mxomni.h" -#include "res/resource.h" - -class Isle -{ -public: - Isle(); - ~Isle(); - - void Close(); - - BOOL ReadReg(LPCSTR name, LPSTR outValue, DWORD outSize); - int ReadRegBool(LPCSTR name, BOOL *out); - int ReadRegInt(LPCSTR name, int *out); - - MxResult SetupWindow(HINSTANCE hInstance, LPSTR lpCmdLine); - - void Tick(BOOL sleepIfNotNextFrame); - - BOOL SetupLegoOmni(); - void LoadConfig(); - void SetupVideoFlags(BOOL fullScreen, BOOL flipSurfaces, BOOL backBuffers, - BOOL using8bit, BOOL using16bit, BOOL param_6, BOOL param_7, - BOOL wideViewAngle, char *deviceId); - - void SetupCursor(WPARAM wParam); - -// private: - - // 0 - LPSTR m_hdPath; - LPSTR m_cdPath; - LPSTR m_deviceId; - LPSTR m_savePath; - - // 10 - BOOL m_fullScreen; - BOOL m_flipSurfaces; - BOOL m_backBuffersInVram; - BOOL m_using8bit; - - // 20 - BOOL m_using16bit; - int m_unk24; - BOOL m_use3dSound; - BOOL m_useMusic; - - // 30 - BOOL m_useJoystick; - int m_joystickIndex; - BOOL m_wideViewAngle; - int m_islandQuality; - - // 40 - int m_islandTexture; - int m_gameStarted; - long m_frameDelta; - - // 4c - MxVideoParam m_videoParam; - - // 70 - BOOL m_windowActive; - HWND m_windowHandle; - BOOL m_drawCursor; - HCURSOR m_cursorArrow; - - // 80 - HCURSOR m_cursorBusy; - HCURSOR m_cursorNo; - HCURSOR m_cursorCurrent; - -}; - -extern LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); - -// OFFSET: ISLE 0x4023e0 -inline MxResult Isle::SetupWindow(HINSTANCE hInstance, LPSTR lpCmdLine) -{ - WNDCLASSA wndclass; - ZeroMemory(&wndclass, sizeof(WNDCLASSA)); - - LoadConfig(); - - SetupVideoFlags(m_fullScreen, m_flipSurfaces, m_backBuffersInVram, m_using8bit, - m_using16bit, m_unk24, FALSE, m_wideViewAngle, m_deviceId); - - MxOmni::SetSound3D(m_use3dSound); - - srand(timeGetTime() / 1000); - SystemParametersInfoA(SPI_SETMOUSETRAILS, 0, NULL, 0); - - ZeroMemory(&wndclass, sizeof(WNDCLASSA)); - - wndclass.cbClsExtra = 0; - wndclass.style = CS_HREDRAW | CS_VREDRAW; - wndclass.lpfnWndProc = WndProc; - wndclass.cbWndExtra = 0; - wndclass.hIcon = LoadIconA(hInstance, MAKEINTRESOURCEA(APP_ICON)); - wndclass.hCursor = m_cursorArrow = m_cursorCurrent = LoadCursorA(hInstance, MAKEINTRESOURCEA(ISLE_ARROW)); - m_cursorBusy = LoadCursorA(hInstance, MAKEINTRESOURCEA(ISLE_BUSY)); - m_cursorNo = LoadCursorA(hInstance, MAKEINTRESOURCEA(ISLE_NO)); - wndclass.hInstance = hInstance; - wndclass.hbrBackground = (HBRUSH) GetStockObject(BLACK_BRUSH); - wndclass.lpszClassName = WNDCLASS_NAME; - - if (!RegisterClassA(&wndclass)) { - return FAILURE; - } - - if (m_fullScreen) { - AdjustWindowRectEx(&g_windowRect, WS_CAPTION | WS_SYSMENU, 0, WS_EX_APPWINDOW); - - m_windowHandle = CreateWindowExA( - WS_EX_APPWINDOW, - WNDCLASS_NAME, - WINDOW_TITLE, - WS_CAPTION | WS_SYSMENU, - g_windowRect.left, - g_windowRect.top, - g_windowRect.right - g_windowRect.left + 1, - g_windowRect.bottom - g_windowRect.top + 1, - NULL, NULL, hInstance, NULL - ); - } else { - AdjustWindowRectEx(&g_windowRect, WS_CAPTION | WS_SYSMENU, 0, WS_EX_APPWINDOW); - - m_windowHandle = CreateWindowExA( - WS_EX_APPWINDOW, - WNDCLASS_NAME, - WINDOW_TITLE, - WS_CAPTION | WS_SYSMENU | WS_MAXIMIZEBOX | WS_MINIMIZEBOX, - CW_USEDEFAULT, - CW_USEDEFAULT, - g_windowRect.right - g_windowRect.left + 1, - g_windowRect.bottom - g_windowRect.top + 1, - NULL, NULL, hInstance, NULL - ); - } - - if (!m_windowHandle) { - return FAILURE; - } - - if (m_fullScreen) { - MoveWindow(m_windowHandle, g_windowRect.left, g_windowRect.top, (g_windowRect.right - g_windowRect.left) + 1, (g_windowRect.bottom - g_windowRect.top) + 1, TRUE); - } - - ShowWindow(m_windowHandle, SW_SHOWNORMAL); - UpdateWindow(m_windowHandle); - if (!SetupLegoOmni()) { - return FAILURE; - } - - GameState()->SetSavePath(m_savePath); - GameState()->SerializePlayersInfo(1); - GameState()->SerializeScoreHistory(1); - - int iVar10; - switch (m_islandQuality) { - case 0: - iVar10 = 1; - break; - case 1: - iVar10 = 2; - break; - default: - iVar10 = 100; - } - - int uVar1 = (m_islandTexture == 0); - LegoModelPresenter::configureLegoModelPresenter(uVar1); - LegoPartPresenter::configureLegoPartPresenter(uVar1,iVar10); - LegoWorldPresenter::configureLegoWorldPresenter(m_islandQuality); - LegoBuildingManager::configureLegoBuildingManager(m_islandQuality); - LegoROI::configureLegoROI(iVar10); - LegoAnimationManager::configureLegoAnimationManager(m_islandQuality); - if (LegoOmni::GetInstance()) { - if (LegoOmni::GetInstance()->GetInputManager()) { - LegoOmni::GetInstance()->GetInputManager()->m_useJoystick = m_useJoystick; - LegoOmni::GetInstance()->GetInputManager()->m_joystickIndex = m_joystickIndex; - } - } - if (m_fullScreen) { - MoveWindow(m_windowHandle, g_windowRect.left, g_windowRect.top, (g_windowRect.right - g_windowRect.left) + 1, (g_windowRect.bottom - g_windowRect.top) + 1, TRUE); - } - ShowWindow(m_windowHandle, SW_SHOWNORMAL); - UpdateWindow(m_windowHandle); - - return SUCCESS; -} - -// OFFSET: ISLE 0x402c20 -inline void Isle::Tick(BOOL sleepIfNotNextFrame) -{ - if (!this->m_windowActive) { - Sleep(0); - return; - } - - if (!Lego()) return; - if (!TickleManager()) return; - if (!Timer()) return; - - long currentTime = Timer()->GetRealTime(); - if (currentTime < g_lastFrameTime) { - g_lastFrameTime = -this->m_frameDelta; - } - - if (this->m_frameDelta + g_lastFrameTime < currentTime) { - if (!Lego()->vtable40()) { - TickleManager()->Tickle(); - } - g_lastFrameTime = currentTime; - - if (g_startupDelay == 0) { - return; - } - - g_startupDelay--; - if (g_startupDelay != 0) { - return; - } - - LegoOmni::GetInstance()->CreateBackgroundAudio(); - BackgroundAudioManager()->Enable(this->m_useMusic); - - MxStreamController *stream = Streamer()->Open("\\lego\\scripts\\isle\\isle", 0); - MxDSAction ds; - - if (!stream) { - stream = Streamer()->Open("\\lego\\scripts\\nocd", 0); - if (!stream) { - return; - } - - ds.SetAtomId(stream->atom); - ds.SetUnknown24(-1); - ds.SetUnknown1c(0); - VideoManager()->EnableFullScreenMovie(TRUE, TRUE); - - if (Start(&ds) != SUCCESS) { - return; - } - } else { - ds.SetAtomId(stream->atom); - ds.SetUnknown24(-1); - ds.SetUnknown1c(0); - if (Start(&ds) != SUCCESS) { - return; - } - this->m_gameStarted = 1; - } - return; - } - - if (sleepIfNotNextFrame != 0) - Sleep(0); -} - -#endif // ISLE_H diff --git a/ISLE/isleapp.cpp b/ISLE/isleapp.cpp new file mode 100644 index 00000000..3697e816 --- /dev/null +++ b/ISLE/isleapp.cpp @@ -0,0 +1,781 @@ +#include "isleapp.h" +#include "define.h" + +#include + +#include "legoomni.h" +#include "legoanimationmanager.h" +#include "legobuildingmanager.h" +#include "legomodelpresenter.h" +#include "legopartpresenter.h" +#include "legoworldpresenter.h" +#include "mxdirectdraw.h" +#include "mxdsaction.h" + +#include "res/resource.h" + +// OFFSET: ISLE 0x401000 +IsleApp::IsleApp() +{ + m_hdPath = NULL; + m_cdPath = NULL; + m_deviceId = NULL; + m_savePath = NULL; + m_fullScreen = 1; + m_flipSurfaces = 0; + m_backBuffersInVram = 1; + m_using8bit = 0; + m_using16bit = 1; + m_unk24 = 0; + m_drawCursor = 0; + m_use3dSound = 1; + m_useMusic = 1; + m_useJoystick = 0; + m_joystickIndex = 0; + m_wideViewAngle = 1; + m_islandQuality = 1; + m_islandTexture = 1; + m_gameStarted = 0; + m_frameDelta = 10; + m_windowActive = 1; + + m_videoParam = MxVideoParam(MxRect32(0, 0, 639, 479), NULL, 1, MxVideoParamFlags()); + m_videoParam.flags().Set16Bit(MxDirectDraw::GetPrimaryBitDepth() == 16); + + m_windowHandle = NULL; + m_cursorArrow = NULL; + m_cursorBusy = NULL; + m_cursorNo = NULL; + m_cursorCurrent = NULL; + + LegoOmni::CreateInstance(); +} + +// OFFSET: ISLE 0x4011a0 +IsleApp::~IsleApp() +{ + if (LegoOmni::GetInstance()) { + Close(); + MxOmni::DestroyInstance(); + } + + if (m_hdPath) { + delete [] m_hdPath; + } + + if (m_cdPath) { + delete [] m_cdPath; + } + + if (m_deviceId) { + delete [] m_deviceId; + } + + if (m_savePath) { + delete [] m_savePath; + } +} + +// OFFSET: ISLE 0x401260 +void IsleApp::Close() +{ + MxDSAction ds; + ds.SetUnknown24(-2); + + if (Lego()) { + GameState()->Save(0); + if (InputManager()) { + InputManager()->QueueEvent(KEYDOWN, 0, 0, 0, 0x20); + } + + VideoManager()->Get3DManager()->GetLego3DView()->GetViewManager()->RemoveAll(NULL); + + Lego()->RemoveWorld(ds.GetAtomId(), ds.GetUnknown1c()); + Lego()->vtable24(ds); + TransitionManager()->SetWaitIndicator(NULL); + Lego()->vtable3c(); + + long lVar8; + do { + lVar8 = Streamer()->Close(NULL); + } while (lVar8 == 0); + + while (Lego()) { + if (Lego()->vtable28(ds) != FALSE) { + break; + } + + Timer()->GetRealTime(); + TickleManager()->Tickle(); + } + } +} + +// OFFSET: ISLE 0x4013b0 +BOOL IsleApp::SetupLegoOmni() +{ + BOOL result = FALSE; + char mediaPath[256]; + GetProfileStringA("LEGO Island", "MediaPath", "", mediaPath, sizeof(mediaPath)); + + BOOL failure = Lego()->Create(MxOmniCreateParam(mediaPath, (struct HWND__ *) m_windowHandle, m_videoParam, MxOmniCreateFlags())) == FAILURE; + if (!failure) { + VariableTable()->SetVariable("ACTOR_01", ""); + TickleManager()->vtable1c(VideoManager(), 10); + result = TRUE; + } + + return result; +} + +// OFFSET: ISLE 0x401560 +void IsleApp::SetupVideoFlags(BOOL fullScreen, BOOL flipSurfaces, BOOL backBuffers, + BOOL using8bit, BOOL using16bit, BOOL param_6, BOOL param_7, + BOOL wideViewAngle, char *deviceId) +{ + m_videoParam.flags().SetFullScreen(fullScreen); + m_videoParam.flags().SetFlipSurfaces(flipSurfaces); + m_videoParam.flags().SetBackBuffers(!backBuffers); + m_videoParam.flags().Set_f2bit0(!param_6); + m_videoParam.flags().Set_f1bit7(param_7); + m_videoParam.flags().SetWideViewAngle(wideViewAngle); + m_videoParam.flags().Set_f2bit1(1); + m_videoParam.SetDeviceName(deviceId); + if (using8bit) { + m_videoParam.flags().Set16Bit(0); + } + if (using16bit) { + m_videoParam.flags().Set16Bit(1); + } +} + +BOOL FindExistingInstance(void); +BOOL StartDirectSound(void); + +// OFFSET: ISLE 0x401610 +int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) +{ + // Look for another instance, if we find one, bring it to the foreground instead + if (!FindExistingInstance()) { + return 0; + } + + // Attempt to create DirectSound instance + BOOL soundReady = FALSE; + for (int i = 0; i < 20; i++) { + if (StartDirectSound()) { + soundReady = TRUE; + break; + } + Sleep(500); + } + + // Throw error if sound unavailable + if (!soundReady) { + MessageBoxA(NULL, "\"LEGO\xAE Island\" is not detecting a DirectSound compatible sound card. Please quit all other applications and try again.", + "Lego Island Error", MB_OK); + return 0; + } + + // Create global app instance + g_isle = new IsleApp(); + + // Create window + if (g_isle->SetupWindow(hInstance, lpCmdLine) != SUCCESS) { + MessageBoxA(NULL, "\"LEGO\xAE Island\" failed to start. Please quit all other applications and try again.", "LEGO\xAE Island Error", MB_OK); + return 0; + } + + // Get reference to window + HWND window; + if (g_isle->m_windowHandle) { + window = g_isle->m_windowHandle; + } + + // Load accelerators (this call actually achieves nothing - there is no "AppAccel" resource in the original - but we'll keep this for authenticity) + // This line may actually be here because it's in DFVIEW, an example project that ships with + // MSVC420, and was such a clean example of a Win32 app, that it was later adapted + // into an "ExeSkeleton" sample for MSVC600. It's quite possible Mindscape derived + // this app from that example since they no longer had the luxury of the + // MFC AppWizard which we know they used for the frontend used during development (ISLEMFC.EXE, MAIN.EXE, et al.) + LoadAcceleratorsA(hInstance, "AppAccel"); + + MSG msg; + + while (!g_closed) { + while (!PeekMessageA(&msg, NULL, 0, 0, PM_NOREMOVE)) { + if (g_isle) { + g_isle->Tick(1); + } + } + + if (g_isle) { + g_isle->Tick(0); + } + + while (!g_closed) { + if (!PeekMessageA(&msg, NULL, 0, 0, PM_REMOVE)) { + break; + } + + MSG nextMsg; + if (!g_isle + || !g_isle->m_windowHandle + || msg.message != WM_MOUSEMOVE + || !PeekMessageA(&nextMsg, NULL, 0, 0, PM_NOREMOVE) + || nextMsg.message != WM_MOUSEMOVE) { + TranslateMessage(&msg); + DispatchMessageA(&msg); + } + + if (g_reqEnableRMDevice) { + g_reqEnableRMDevice = 0; + VideoManager()->EnableRMDevice(); + g_rmDisabled = 0; + Lego()->vtable3c(); + } + + if (g_closed) { + break; + } + + if (g_mousedown == 0) { +LAB_00401bc7: + if (g_mousemoved) { + g_mousemoved = FALSE; + } + } else if (g_mousemoved) { + if (g_isle) { + g_isle->Tick(0); + } + goto LAB_00401bc7; + } + } + } + + DestroyWindow(window); + + return msg.wParam; +} + +// OFFSET: ISLE 0x401ca0 +BOOL FindExistingInstance(void) +{ + HWND hWnd = FindWindowA(WNDCLASS_NAME, WINDOW_TITLE); + if (hWnd) { + if (SetForegroundWindow(hWnd)) { + ShowWindow(hWnd, SW_RESTORE); + } + return 0; + } + return 1; +} + +// OFFSET: ISLE 0x401ce0 +BOOL StartDirectSound(void) +{ + LPDIRECTSOUND lpDS = NULL; + HRESULT ret = DirectSoundCreate(NULL, &lpDS, NULL); + if (ret == DS_OK && lpDS != NULL) { + lpDS->Release(); + return TRUE; + } + + return FALSE; +} + +// OFFSET: ISLE 0x401d20 +LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + NotificationId type; + unsigned char keyCode = 0; + + if (!g_isle) { + return DefWindowProcA(hWnd, uMsg, wParam, lParam); + } + + switch (uMsg) { + case WM_PAINT: + return DefWindowProcA(hWnd, uMsg, wParam, lParam); + case WM_ACTIVATE: + return DefWindowProcA(hWnd, uMsg, wParam, lParam); + case WM_ACTIVATEAPP: + if (g_isle) { + if ((wParam != 0) && (g_isle->m_fullScreen)) { + MoveWindow(hWnd, g_windowRect.left, g_windowRect.top, + (g_windowRect.right - g_windowRect.left) + 1, + (g_windowRect.bottom - g_windowRect.top) + 1, TRUE); + } + g_isle->m_windowActive = wParam; + } + return DefWindowProcA(hWnd,uMsg,wParam,lParam); + case WM_CLOSE: + if (!g_closed && g_isle) { + if (g_isle) { + delete g_isle; + } + g_isle = NULL; + g_closed = TRUE; + return 0; + } + return DefWindowProcA(hWnd,uMsg,wParam,lParam); + case WM_GETMINMAXINFO: + ((MINMAXINFO*) lParam)->ptMaxTrackSize.x = (g_windowRect.right - g_windowRect.left) + 1; + ((MINMAXINFO*) lParam)->ptMaxTrackSize.y = (g_windowRect.bottom - g_windowRect.top) + 1; + ((MINMAXINFO*) lParam)->ptMinTrackSize.x = (g_windowRect.right - g_windowRect.left) + 1; + ((MINMAXINFO*) lParam)->ptMinTrackSize.y = (g_windowRect.bottom - g_windowRect.top) + 1; + return 0; + case WM_ENTERMENULOOP: + return DefWindowProcA(hWnd,uMsg,wParam,lParam); + case WM_SYSCOMMAND: + if (wParam == SC_SCREENSAVE) { + return 0; + } + if (wParam == SC_CLOSE && g_closed == 0) { + if (g_isle) { + if (g_rmDisabled) { + ShowWindow(g_isle->m_windowHandle, SW_RESTORE); + } + PostMessageA(g_isle->m_windowHandle, WM_CLOSE, 0, 0); + return 0; + } + } else if (g_isle && g_isle->m_fullScreen && (wParam == SC_MOVE || wParam == SC_KEYMENU)) { + return 0; + } + return DefWindowProcA(hWnd,uMsg,wParam,lParam); + case WM_EXITMENULOOP: + return DefWindowProcA(hWnd, uMsg, wParam, lParam); + case WM_MOVING: + if (g_isle && g_isle->m_fullScreen) { + GetWindowRect(hWnd, (LPRECT) lParam); + return 0; + } + return DefWindowProcA(hWnd, uMsg, wParam, lParam); + case WM_NCPAINT: + if (g_isle && g_isle->m_fullScreen) { + return 0; + } + return DefWindowProcA(hWnd, uMsg, wParam, lParam); + case WM_DISPLAYCHANGE: + if (g_isle && VideoManager() && g_isle->m_fullScreen && VideoManager()->m_unk74 && VideoManager()->m_unk74[0x220]) { + int targetWidth = LOWORD(lParam); + int targetHeight = HIWORD(lParam); + int targetDepth = wParam; + + if (g_waitingForTargetDepth) { + g_waitingForTargetDepth = 0; + g_targetDepth = targetDepth; + } + else { + BOOL valid = FALSE; + if (targetWidth == g_targetWidth && targetHeight == g_targetHeight && g_targetDepth == targetDepth) { + valid = TRUE; + } + + if (g_rmDisabled) { + if (valid) { + g_reqEnableRMDevice = 1; + } + } + else if (!valid) { + g_rmDisabled = 1; + Lego()->vtable38(); + VideoManager()->DisableRMDevice(); + } + } + } + return DefWindowProcA(hWnd, uMsg, wParam, lParam); + case WM_SETCURSOR: + if (g_isle) { + HCURSOR hCursor = g_isle->m_cursorCurrent; + if (hCursor == g_isle->m_cursorBusy || hCursor == g_isle->m_cursorNo || !hCursor) { + SetCursor(hCursor); + return 0; + } + } + break; + case WM_KEYDOWN: + // While this probably should be (HIWORD(lParam) & KF_REPEAT), this seems + // to be what the assembly is actually doing + if (lParam & (KF_REPEAT << 16)) { + return DefWindowProcA(hWnd, uMsg, wParam, lParam); + } + keyCode = wParam; + type = KEYDOWN; + break; + case WM_MOUSEMOVE: + g_mousemoved = 1; + type = MOUSEMOVE; + break; + case WM_TIMER: + type = TIMER; + break; + case WM_LBUTTONDOWN: + g_mousedown = 1; + type = MOUSEDOWN; + break; + case WM_LBUTTONUP: + g_mousedown = 0; + type = MOUSEUP; + break; + case 0x5400: + if (g_isle) { + g_isle->SetupCursor(wParam); + return 0; + } + break; + default: + return DefWindowProcA(hWnd,uMsg,wParam,lParam); + } + + if (g_isle) { + if (InputManager()) { + InputManager()->QueueEvent(type, wParam, LOWORD(lParam), HIWORD(lParam), keyCode); + } + if (g_isle && g_isle->m_drawCursor && type == MOUSEMOVE) { + int x = LOWORD(lParam); + int y = HIWORD(lParam); + if (x >= 640) { + x = 639; + } + if (y >= 480) { + y = 479; + } + VideoManager()->MoveCursor(x,y); + } + } + + return 0; +} + +// OFFSET: ISLE 0x4023e0 +MxResult IsleApp::SetupWindow(HINSTANCE hInstance, LPSTR lpCmdLine) +{ + WNDCLASSA wndclass; + ZeroMemory(&wndclass, sizeof(WNDCLASSA)); + + LoadConfig(); + + SetupVideoFlags(m_fullScreen, m_flipSurfaces, m_backBuffersInVram, m_using8bit, + m_using16bit, m_unk24, FALSE, m_wideViewAngle, m_deviceId); + + MxOmni::SetSound3D(m_use3dSound); + + srand(timeGetTime() / 1000); + SystemParametersInfoA(SPI_SETMOUSETRAILS, 0, NULL, 0); + + ZeroMemory(&wndclass, sizeof(WNDCLASSA)); + + wndclass.cbClsExtra = 0; + wndclass.style = CS_HREDRAW | CS_VREDRAW; + wndclass.lpfnWndProc = WndProc; + wndclass.cbWndExtra = 0; + wndclass.hIcon = LoadIconA(hInstance, MAKEINTRESOURCEA(APP_ICON)); + wndclass.hCursor = m_cursorArrow = m_cursorCurrent = LoadCursorA(hInstance, MAKEINTRESOURCEA(ISLE_ARROW)); + m_cursorBusy = LoadCursorA(hInstance, MAKEINTRESOURCEA(ISLE_BUSY)); + m_cursorNo = LoadCursorA(hInstance, MAKEINTRESOURCEA(ISLE_NO)); + wndclass.hInstance = hInstance; + wndclass.hbrBackground = (HBRUSH) GetStockObject(BLACK_BRUSH); + wndclass.lpszClassName = WNDCLASS_NAME; + + if (!RegisterClassA(&wndclass)) { + return FAILURE; + } + + if (m_fullScreen) { + AdjustWindowRectEx(&g_windowRect, WS_CAPTION | WS_SYSMENU, 0, WS_EX_APPWINDOW); + + m_windowHandle = CreateWindowExA( + WS_EX_APPWINDOW, + WNDCLASS_NAME, + WINDOW_TITLE, + WS_CAPTION | WS_SYSMENU, + g_windowRect.left, + g_windowRect.top, + g_windowRect.right - g_windowRect.left + 1, + g_windowRect.bottom - g_windowRect.top + 1, + NULL, NULL, hInstance, NULL + ); + } else { + AdjustWindowRectEx(&g_windowRect, WS_CAPTION | WS_SYSMENU, 0, WS_EX_APPWINDOW); + + m_windowHandle = CreateWindowExA( + WS_EX_APPWINDOW, + WNDCLASS_NAME, + WINDOW_TITLE, + WS_CAPTION | WS_SYSMENU | WS_MAXIMIZEBOX | WS_MINIMIZEBOX, + CW_USEDEFAULT, + CW_USEDEFAULT, + g_windowRect.right - g_windowRect.left + 1, + g_windowRect.bottom - g_windowRect.top + 1, + NULL, NULL, hInstance, NULL + ); + } + + if (!m_windowHandle) { + return FAILURE; + } + + if (m_fullScreen) { + MoveWindow(m_windowHandle, g_windowRect.left, g_windowRect.top, (g_windowRect.right - g_windowRect.left) + 1, (g_windowRect.bottom - g_windowRect.top) + 1, TRUE); + } + + ShowWindow(m_windowHandle, SW_SHOWNORMAL); + UpdateWindow(m_windowHandle); + if (!SetupLegoOmni()) { + return FAILURE; + } + + GameState()->SetSavePath(m_savePath); + GameState()->SerializePlayersInfo(1); + GameState()->SerializeScoreHistory(1); + + int iVar10; + switch (m_islandQuality) { + case 0: + iVar10 = 1; + break; + case 1: + iVar10 = 2; + break; + default: + iVar10 = 100; + } + + int uVar1 = (m_islandTexture == 0); + LegoModelPresenter::configureLegoModelPresenter(uVar1); + LegoPartPresenter::configureLegoPartPresenter(uVar1,iVar10); + LegoWorldPresenter::configureLegoWorldPresenter(m_islandQuality); + LegoBuildingManager::configureLegoBuildingManager(m_islandQuality); + LegoROI::configureLegoROI(iVar10); + LegoAnimationManager::configureLegoAnimationManager(m_islandQuality); + if (LegoOmni::GetInstance()) { + if (LegoOmni::GetInstance()->GetInputManager()) { + LegoOmni::GetInstance()->GetInputManager()->m_useJoystick = m_useJoystick; + LegoOmni::GetInstance()->GetInputManager()->m_joystickIndex = m_joystickIndex; + } + } + if (m_fullScreen) { + MoveWindow(m_windowHandle, g_windowRect.left, g_windowRect.top, (g_windowRect.right - g_windowRect.left) + 1, (g_windowRect.bottom - g_windowRect.top) + 1, TRUE); + } + ShowWindow(m_windowHandle, SW_SHOWNORMAL); + UpdateWindow(m_windowHandle); + + return SUCCESS; +} + +// OFFSET: ISLE 0x402740 +BOOL IsleApp::ReadReg(LPCSTR name, LPSTR outValue, DWORD outSize) +{ + HKEY hKey; + DWORD valueType; + + BOOL out = FALSE; + unsigned long size = outSize; + if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Mindscape\\LEGO Island", 0, KEY_READ, &hKey) == ERROR_SUCCESS) { + if (RegQueryValueExA(hKey, name, NULL, &valueType, (LPBYTE) outValue, &size) == ERROR_SUCCESS) { + if (RegCloseKey(hKey) == ERROR_SUCCESS) { + out = TRUE; + } + } + } + + return out; +} + +// OFFSET: ISLE 0x4027b0 +int IsleApp::ReadRegBool(LPCSTR name, BOOL *out) +{ + char buffer[256]; + + BOOL read = ReadReg(name, buffer, sizeof(buffer)); + if (read) { + if (strcmp("YES", buffer) == 0) { + *out = TRUE; + return read; + } + + if (strcmp("NO", buffer) == 0) { + *out = FALSE; + return read; + } + + read = FALSE; + } + return read; +} + +// OFFSET: ISLE 0x402880 +int IsleApp::ReadRegInt(LPCSTR name, int *out) +{ + char buffer[256]; + + BOOL read = ReadReg(name, buffer, sizeof(buffer)); + if (read) { + *out = atoi(buffer); + } + + return read; +} + +// OFFSET: ISLE 0x4028d0 +void IsleApp::LoadConfig() +{ + char buffer[1024]; + + if (!ReadReg("diskpath", buffer, sizeof(buffer))) { + strcpy(buffer, MxOmni::GetHD()); + } + + m_hdPath = new char[strlen(buffer) + 1]; + strcpy(m_hdPath, buffer); + MxOmni::SetHD(m_hdPath); + + if (!ReadReg("cdpath", buffer, sizeof(buffer))) { + strcpy(buffer, MxOmni::GetCD()); + } + + m_cdPath = new char[strlen(buffer) + 1]; + strcpy(m_cdPath, buffer); + MxOmni::SetCD(m_cdPath); + + ReadRegBool("Flip Surfaces", &m_flipSurfaces); + ReadRegBool("Full Screen", &m_fullScreen); + ReadRegBool("Wide View Angle", &m_wideViewAngle); + ReadRegBool("3DSound", &m_use3dSound); + ReadRegBool("Music", &m_useMusic); + ReadRegBool("UseJoystick", &m_useJoystick); + ReadRegInt("JoystickIndex", &m_joystickIndex); + ReadRegBool("Draw Cursor", &m_drawCursor); + + int backBuffersInVRAM; + if (ReadRegBool("Back Buffers in Video RAM",&backBuffersInVRAM)) { + m_backBuffersInVram = !backBuffersInVRAM; + } + + int bitDepth; + if (ReadRegInt("Display Bit Depth", &bitDepth)) { + if (bitDepth == 8) { + m_using8bit = TRUE; + } else if (bitDepth == 16) { + m_using16bit = TRUE; + } + } + + if (!ReadReg("Island Quality", buffer, sizeof(buffer))) { + strcpy(buffer, "1"); + } + m_islandQuality = atoi(buffer); + + if (!ReadReg("Island Texture", buffer, sizeof(buffer))) { + strcpy(buffer, "1"); + } + m_islandTexture = atoi(buffer); + + if (ReadReg("3D Device ID", buffer, sizeof(buffer))) { + m_deviceId = new char[strlen(buffer) + 1]; + strcpy(m_deviceId, buffer); + } + + if (ReadReg("savepath", buffer, sizeof(buffer))) { + m_savePath = new char[strlen(buffer) + 1]; + strcpy(m_savePath, buffer); + } +} + +// OFFSET: ISLE 0x402c20 +inline void IsleApp::Tick(BOOL sleepIfNotNextFrame) +{ + if (!this->m_windowActive) { + Sleep(0); + return; + } + + if (!Lego()) return; + if (!TickleManager()) return; + if (!Timer()) return; + + long currentTime = Timer()->GetRealTime(); + if (currentTime < g_lastFrameTime) { + g_lastFrameTime = -this->m_frameDelta; + } + + if (this->m_frameDelta + g_lastFrameTime < currentTime) { + if (!Lego()->vtable40()) { + TickleManager()->Tickle(); + } + g_lastFrameTime = currentTime; + + if (g_startupDelay == 0) { + return; + } + + g_startupDelay--; + if (g_startupDelay != 0) { + return; + } + + LegoOmni::GetInstance()->CreateBackgroundAudio(); + BackgroundAudioManager()->Enable(this->m_useMusic); + + MxStreamController *stream = Streamer()->Open("\\lego\\scripts\\isle\\isle", 0); + MxDSAction ds; + + if (!stream) { + stream = Streamer()->Open("\\lego\\scripts\\nocd", 0); + if (!stream) { + return; + } + + ds.SetAtomId(stream->atom); + ds.SetUnknown24(-1); + ds.SetUnknown1c(0); + VideoManager()->EnableFullScreenMovie(TRUE, TRUE); + + if (Start(&ds) != SUCCESS) { + return; + } + } else { + ds.SetAtomId(stream->atom); + ds.SetUnknown24(-1); + ds.SetUnknown1c(0); + if (Start(&ds) != SUCCESS) { + return; + } + this->m_gameStarted = 1; + } + return; + } + + if (sleepIfNotNextFrame != 0) + Sleep(0); +} + +// OFFSET: ISLE 0x402e80 +void IsleApp::SetupCursor(WPARAM wParam) +{ + switch (wParam) { + case 0: + m_cursorCurrent = m_cursorArrow; + break; + case 1: + m_cursorCurrent = m_cursorBusy; + break; + case 2: + m_cursorCurrent = m_cursorNo; + break; + case 0xB: + m_cursorCurrent = NULL; + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 0xA: + break; + } + + SetCursor(m_cursorCurrent); +} diff --git a/ISLE/isleapp.h b/ISLE/isleapp.h new file mode 100644 index 00000000..d31c6f42 --- /dev/null +++ b/ISLE/isleapp.h @@ -0,0 +1,76 @@ +#ifndef ISLEAPP_H +#define ISLEAPP_H + +#include + +#include "mxtypes.h" +#include "mxvideoparam.h" + +class IsleApp +{ +public: + IsleApp(); + ~IsleApp(); + + void Close(); + + BOOL SetupLegoOmni(); + void SetupVideoFlags(BOOL fullScreen, BOOL flipSurfaces, BOOL backBuffers, + BOOL using8bit, BOOL using16bit, BOOL param_6, BOOL param_7, + BOOL wideViewAngle, char *deviceId); + MxResult SetupWindow(HINSTANCE hInstance, LPSTR lpCmdLine); + + BOOL ReadReg(LPCSTR name, LPSTR outValue, DWORD outSize); + int ReadRegBool(LPCSTR name, BOOL *out); + int ReadRegInt(LPCSTR name, int *out); + + void LoadConfig(); + void Tick(BOOL sleepIfNotNextFrame); + void SetupCursor(WPARAM wParam); + + // private: + // 0 + LPSTR m_hdPath; + LPSTR m_cdPath; + LPSTR m_deviceId; + LPSTR m_savePath; + + // 10 + BOOL m_fullScreen; + BOOL m_flipSurfaces; + BOOL m_backBuffersInVram; + BOOL m_using8bit; + + // 20 + BOOL m_using16bit; + int m_unk24; + BOOL m_use3dSound; + BOOL m_useMusic; + + // 30 + BOOL m_useJoystick; + int m_joystickIndex; + BOOL m_wideViewAngle; + int m_islandQuality; + + // 40 + int m_islandTexture; + int m_gameStarted; + long m_frameDelta; + + // 4c + MxVideoParam m_videoParam; + + // 70 + BOOL m_windowActive; + HWND m_windowHandle; + BOOL m_drawCursor; + HCURSOR m_cursorArrow; + + // 80 + HCURSOR m_cursorBusy; + HCURSOR m_cursorNo; + HCURSOR m_cursorCurrent; +}; + +#endif // ISLEAPP_H diff --git a/ISLE/main.cpp b/ISLE/main.cpp deleted file mode 100644 index f45e9529..00000000 --- a/ISLE/main.cpp +++ /dev/null @@ -1,311 +0,0 @@ -#include - -#include "legoinc.h" -#include "define.h" - -#include "legoomni.h" -#include "isle.h" - -// OFFSET: ISLE 0x401ca0 -BOOL FindExistingInstance(void) -{ - HWND hWnd = FindWindowA(WNDCLASS_NAME, WINDOW_TITLE); - if (hWnd) { - if (SetForegroundWindow(hWnd)) { - ShowWindow(hWnd, SW_RESTORE); - } - return 0; - } - return 1; -} - -// OFFSET: ISLE 0x401ce0 -BOOL StartDirectSound(void) -{ - LPDIRECTSOUND lpDS = NULL; - HRESULT ret = DirectSoundCreate(NULL, &lpDS, NULL); - if (ret == DS_OK && lpDS != NULL) { - lpDS->Release(); - return TRUE; - } - - return FALSE; -} - -// OFFSET: ISLE 0x401610 -int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) -{ - // Look for another instance, if we find one, bring it to the foreground instead - if (!FindExistingInstance()) { - return 0; - } - - // Attempt to create DirectSound instance - BOOL soundReady = FALSE; - for (int i = 0; i < 20; i++) { - if (StartDirectSound()) { - soundReady = TRUE; - break; - } - Sleep(500); - } - - // Throw error if sound unavailable - if (!soundReady) { - MessageBoxA(NULL, "\"LEGO\xAE Island\" is not detecting a DirectSound compatible sound card. Please quit all other applications and try again.", - "Lego Island Error", MB_OK); - return 0; - } - - // Create global app instance - g_isle = new Isle(); - - // Create window - if (g_isle->SetupWindow(hInstance, lpCmdLine) != SUCCESS) { - MessageBoxA(NULL, "\"LEGO\xAE Island\" failed to start. Please quit all other applications and try again.", "LEGO\xAE Island Error", MB_OK); - return 0; - } - - // Get reference to window - HWND window; - if (g_isle->m_windowHandle) { - window = g_isle->m_windowHandle; - } - - // Load accelerators (this call actually achieves nothing - there is no "AppAccel" resource in the original - but we'll keep this for authenticity) - // This line may actually be here because it's in DFVIEW, an example project that ships with - // MSVC420, and was such a clean example of a Win32 app, that it was later adapted - // into an "ExeSkeleton" sample for MSVC600. It's quite possible Mindscape derived - // this app from that example since they no longer had the luxury of the - // MFC AppWizard which we know they used for the frontend used during development (ISLEMFC.EXE, MAIN.EXE, et al.) - LoadAcceleratorsA(hInstance, "AppAccel"); - - MSG msg; - - while (!g_closed) { - while (!PeekMessageA(&msg, NULL, 0, 0, PM_NOREMOVE)) { - if (g_isle) { - g_isle->Tick(1); - } - } - - if (g_isle) { - g_isle->Tick(0); - } - - while (!g_closed) { - if (!PeekMessageA(&msg, NULL, 0, 0, PM_REMOVE)) { - break; - } - - MSG nextMsg; - if (!g_isle - || !g_isle->m_windowHandle - || msg.message != WM_MOUSEMOVE - || !PeekMessageA(&nextMsg, NULL, 0, 0, PM_NOREMOVE) - || nextMsg.message != WM_MOUSEMOVE) { - TranslateMessage(&msg); - DispatchMessageA(&msg); - } - - if (g_reqEnableRMDevice) { - g_reqEnableRMDevice = 0; - VideoManager()->EnableRMDevice(); - g_rmDisabled = 0; - Lego()->vtable3c(); - } - - if (g_closed) { - break; - } - - if (g_mousedown == 0) { -LAB_00401bc7: - if (g_mousemoved) { - g_mousemoved = FALSE; - } - } else if (g_mousemoved) { - if (g_isle) { - g_isle->Tick(0); - } - goto LAB_00401bc7; - } - } - } - - DestroyWindow(window); - - return msg.wParam; -} - -// OFFSET: ISLE 0x401d20 -LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - if (!g_isle) { - return DefWindowProcA(hWnd, uMsg, wParam, lParam); - } - - switch (uMsg) { - case WM_PAINT: - return DefWindowProcA(hWnd, WM_PAINT, wParam, lParam); - case WM_ACTIVATE: - return DefWindowProcA(hWnd, WM_ACTIVATE, wParam, lParam); - case WM_ACTIVATEAPP: - if (g_isle) { - if ((wParam != 0) && (g_isle->m_fullScreen)) { - MoveWindow(hWnd, g_windowRect.left, g_windowRect.top, - (g_windowRect.right - g_windowRect.left) + 1, - (g_windowRect.bottom - g_windowRect.top) + 1, TRUE); - } - g_isle->m_windowActive = wParam; - } - return DefWindowProcA(hWnd,WM_ACTIVATEAPP,wParam,lParam); - case WM_CLOSE: - if (!g_closed && g_isle) { - if (g_isle) { - delete g_isle; - } - g_isle = NULL; - g_closed = TRUE; - return 0; - } - return DefWindowProcA(hWnd,WM_CLOSE,wParam,lParam); - case WM_GETMINMAXINFO: - { - MINMAXINFO *mmi = (MINMAXINFO *) lParam; - - mmi->ptMaxTrackSize.x = (g_windowRect.right - g_windowRect.left) + 1; - mmi->ptMaxTrackSize.y = (g_windowRect.bottom - g_windowRect.top) + 1; - mmi->ptMinTrackSize.x = (g_windowRect.right - g_windowRect.left) + 1; - mmi->ptMinTrackSize.y = (g_windowRect.bottom - g_windowRect.top) + 1; - - return 0; - } - case WM_ENTERMENULOOP: - return DefWindowProcA(hWnd,WM_ENTERMENULOOP,wParam,lParam); - case WM_SYSCOMMAND: - if (wParam == SC_SCREENSAVE) { - return 0; - } - if (wParam == SC_CLOSE && g_closed == 0) { - if (g_isle) { - if (g_rmDisabled) { - ShowWindow(g_isle->m_windowHandle, SW_RESTORE); - } - PostMessageA(g_isle->m_windowHandle, WM_CLOSE, 0, 0); - return 0; - } - } else if (g_isle && g_isle->m_fullScreen && (wParam == SC_MOVE || wParam == SC_KEYMENU)) { - return 0; - } - return DefWindowProcA(hWnd,WM_SYSCOMMAND,wParam,lParam); - case WM_EXITMENULOOP: - return DefWindowProcA(hWnd, WM_EXITMENULOOP, wParam, lParam); - case WM_MOVING: - if (g_isle && g_isle->m_fullScreen) { - GetWindowRect(hWnd, (LPRECT) lParam); - return 0; - } - return DefWindowProcA(hWnd, WM_MOVING, wParam, lParam); - case WM_NCPAINT: - if (g_isle && g_isle->m_fullScreen) { - return 0; - } - return DefWindowProcA(hWnd, WM_NCPAINT, wParam, lParam); - case WM_DISPLAYCHANGE: - if (g_isle && VideoManager() && g_isle->m_fullScreen && VideoManager()->m_unk74 && VideoManager()->m_unk74[0x220]) { - if (!g_waitingForTargetDepth) { - unsigned char valid = FALSE; - if (LOWORD(lParam) == g_targetWidth && HIWORD(lParam) == g_targetHeight && g_targetDepth == wParam) { - valid = TRUE; - } - if (!g_rmDisabled) { - if (!valid) { - g_rmDisabled = 1; - Lego()->vtable38(); - VideoManager()->DisableRMDevice(); - } - } else if (valid) { - g_reqEnableRMDevice = 1; - } - } else { - g_waitingForTargetDepth = 0; - g_targetDepth = wParam; - } - } - return DefWindowProcA(hWnd, WM_DISPLAYCHANGE, wParam, lParam); - case WM_SETCURSOR: - case WM_KEYDOWN: - case WM_MOUSEMOVE: - case WM_TIMER: - case WM_LBUTTONDOWN: - case WM_LBUTTONUP: - case 0x5400: - { - - NotificationId type = NONE; - unsigned char keyCode = 0; - - switch (uMsg) { - case WM_KEYDOWN: - // While this probably should be (HIWORD(lParam) & KF_REPEAT), this seems - // to be what the assembly is actually doing - if (lParam & (KF_REPEAT << 16)) { - return DefWindowProcA(hWnd, WM_KEYDOWN, wParam, lParam); - } - keyCode = wParam; - type = KEYDOWN; - break; - case WM_MOUSEMOVE: - g_mousemoved = 1; - type = MOUSEMOVE; - break; - case WM_TIMER: - type = TIMER; - break; - case WM_SETCURSOR: - if (g_isle) { - HCURSOR hCursor = g_isle->m_cursorCurrent; - if (hCursor == g_isle->m_cursorBusy || hCursor == g_isle->m_cursorNo || !hCursor) { - SetCursor(hCursor); - return 0; - } - } - break; - case WM_LBUTTONDOWN: - g_mousedown = 1; - type = MOUSEDOWN; - break; - case WM_LBUTTONUP: - g_mousedown = 0; - type = MOUSEUP; - break; - case 0x5400: - if (g_isle) { - g_isle->SetupCursor(wParam); - return 0; - } - } - - if (g_isle) { - if (InputManager()) { - InputManager()->QueueEvent(type, wParam, LOWORD(lParam), HIWORD(lParam), keyCode); - } - if (g_isle && g_isle->m_drawCursor && type == MOUSEMOVE) { - unsigned short x = LOWORD(lParam); - unsigned short y = HIWORD(lParam); - if (639 < x) { - x = 639; - } - if (479 < y) { - y = 479; - } - VideoManager()->MoveCursor(x,y); - } - } - return 0; - } - } - - return DefWindowProcA(hWnd,uMsg,wParam,lParam); -} \ No newline at end of file diff --git a/LEGO1/act1state.cpp b/LEGO1/act1state.cpp new file mode 100644 index 00000000..556e6dbc --- /dev/null +++ b/LEGO1/act1state.cpp @@ -0,0 +1,8 @@ +#include "act1state.h" + +// OFFSET: LEGO1 0x100334b0 STUB +Act1State::Act1State() +{ + // TODO +} + diff --git a/LEGO1/act1state.h b/LEGO1/act1state.h new file mode 100644 index 00000000..edcb9e9d --- /dev/null +++ b/LEGO1/act1state.h @@ -0,0 +1,27 @@ +#ifndef ACT1STATE_H +#define ACT1STATE_H + +#include "legostate.h" + +// VTABLE 0x100d7028 +// SIZE 0x26c +class Act1State : public LegoState +{ +public: + Act1State(); + + // OFFSET: LEGO1 0x100338a0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0154 + return "Act1State"; + }; + + // OFFSET: LEGO1 0x100338b0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Act1State::ClassName()) || LegoState::IsA(name); + }; +}; + +#endif // ACT1STATE_H diff --git a/LEGO1/act2brick.cpp b/LEGO1/act2brick.cpp new file mode 100644 index 00000000..4bb2f3f9 --- /dev/null +++ b/LEGO1/act2brick.cpp @@ -0,0 +1,29 @@ +#include "act2brick.h" + +// OFFSET: LEGO1 0x1007a2b0 STUB +Act2Brick::Act2Brick() +{ + // TODO +} + +// OFFSET: LEGO1 0x1007a470 STUB +Act2Brick::~Act2Brick() +{ + // TODO +} + +// STUB OFFSET: LEGO1 0x1007a8c0 STUB +long Act2Brick::Notify(MxParam &p) +{ + // TODO + + return 0; +} + +// OFFSET: LEGO1 0x1007a7f0 STUB +long Act2Brick::Tickle() +{ + // TODO + + return 0; +} diff --git a/LEGO1/act2brick.h b/LEGO1/act2brick.h new file mode 100644 index 00000000..d5703081 --- /dev/null +++ b/LEGO1/act2brick.h @@ -0,0 +1,32 @@ +#ifndef ACT2BRICK_H +#define ACT2BRICK_H + +#include "legopathactor.h" + +// VTABLE 0x100d9b60 +// SIZE 0x194 +class Act2Brick : public LegoPathActor +{ +public: + Act2Brick(); + virtual ~Act2Brick() override; // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x4 + virtual long Tickle() override; // vtable+0x08 + + // OFFSET: LEGO1 0x1007a360 + inline virtual const char *ClassName() override // vtable+0x0c + { + // 0x100f0438 + return "Act2Brick"; + } + + // OFFSET: LEGO1 0x1007a370 + inline virtual MxBool IsA(const char *name) override // vtable+0x10 + { + return !strcmp(Act2Brick::ClassName(), name) || LegoEntity::IsA(name); + } + +}; + +#endif // ACT2BRICK_H diff --git a/LEGO1/act2policestation.cpp b/LEGO1/act2policestation.cpp new file mode 100644 index 00000000..14f69db4 --- /dev/null +++ b/LEGO1/act2policestation.cpp @@ -0,0 +1,9 @@ +#include "act2policestation.h" + +// OFFSET: LEGO1 0x1004e0e0 STUB +long Act2PoliceStation::Notify(MxParam &p) +{ + // TODO + + return 0; +} diff --git a/LEGO1/act2policestation.h b/LEGO1/act2policestation.h new file mode 100644 index 00000000..e935e252 --- /dev/null +++ b/LEGO1/act2policestation.h @@ -0,0 +1,27 @@ +#ifndef ACT2POLICESTATION_H +#define ACT2POLICESTATION_H + +#include "legoentity.h" + +// VTABLE 0x100d53a8 +// SIZE 0x68 +class Act2PoliceStation : public LegoEntity +{ +public: + virtual long Notify(MxParam &p) override; // vtable+0x4 + + // OFFSET: LEGO1 0x1000e200 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f03fc + return "Act2PoliceStation"; + } + + // OFFSET: LEGO1 0x1000e210 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Act2PoliceStation::ClassName()) || LegoEntity::IsA(name); + } +}; + +#endif // ACT2POLICESTATION_H diff --git a/LEGO1/act3.cpp b/LEGO1/act3.cpp new file mode 100644 index 00000000..eca84fbf --- /dev/null +++ b/LEGO1/act3.cpp @@ -0,0 +1,13 @@ +#include "act3.h" + +// OFFSET: LEGO1 0x10072270 STUB +Act3::Act3() +{ + // TODO +} + +// OFFSET: LEGO1 0x100726a0 STUB +Act3::~Act3() +{ + // TODO +} diff --git a/LEGO1/act3.h b/LEGO1/act3.h new file mode 100644 index 00000000..d0cad28a --- /dev/null +++ b/LEGO1/act3.h @@ -0,0 +1,31 @@ +#ifndef ACT3_H +#define ACT3_H + +#include "legoworld.h" + +// VTABLE 0x100d9628 +// SIZE 0x4274 +class Act3 : public LegoWorld +{ +public: + Act3(); + + virtual ~Act3() override; // vtable+00 + + // OFFSET: LEGO1 0x10072510 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f013c + return "Act3"; + } + + // OFFSET: LEGO1 0x10072520 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Act3::ClassName()) || LegoWorld::IsA(name); + } + +}; + + +#endif // ACT3_H diff --git a/LEGO1/act3actor.h b/LEGO1/act3actor.h new file mode 100644 index 00000000..a88884a1 --- /dev/null +++ b/LEGO1/act3actor.h @@ -0,0 +1,18 @@ +#ifndef ACT3ACTOR_H +#define ACT3ACTOR_H + +// FIXME: Uncertain location. There are three vtables which eventually call this +// class' ClassName() function, but none of them call it directly. +class Act3Actor +{ +public: + // OFFSET: LEGO1 0x100431b0 + inline virtual const char *ClassName() override + { + // 0x100f03ac + return "Act3Actor"; + } + +}; + +#endif // ACT3ACTOR_H diff --git a/LEGO1/act3shark.cpp b/LEGO1/act3shark.cpp new file mode 100644 index 00000000..95e5a0e0 --- /dev/null +++ b/LEGO1/act3shark.cpp @@ -0,0 +1 @@ +#include "act3shark.h" diff --git a/LEGO1/act3shark.h b/LEGO1/act3shark.h new file mode 100644 index 00000000..6cbdbc09 --- /dev/null +++ b/LEGO1/act3shark.h @@ -0,0 +1,18 @@ +#ifndef ACT3SHARK_H +#define ACT3SHARK_H + +#include "legoanimactor.h" + +// VTABLE 0x100d7920 +class Act3Shark : public LegoAnimActor +{ +public: + // OFFSET: LEGO1 0x100430c0 + inline virtual const char *ClassName() const override + { + // 0x100f03a0 + return "Act3Shark"; + } +}; + +#endif // ACT3SHARK_H diff --git a/LEGO1/act3state.cpp b/LEGO1/act3state.cpp new file mode 100644 index 00000000..5e56a31b --- /dev/null +++ b/LEGO1/act3state.cpp @@ -0,0 +1,7 @@ +#include "act3state.h" + +// OFFSET: LEGO1 0x1000e2f0 +MxBool Act3State::VTable0x14() +{ + return FALSE; +} diff --git a/LEGO1/act3state.h b/LEGO1/act3state.h new file mode 100644 index 00000000..17c19ca6 --- /dev/null +++ b/LEGO1/act3state.h @@ -0,0 +1,37 @@ +#ifndef ACT3STATE_H +#define ACT3STATE_H + +#include "legostate.h" + +// VTABLE 0x100d4fc8 +// SIZE 0xc +class Act3State : public LegoState +{ +public: + inline Act3State() + { + m_unk08 = 0; + } + + // OFFSET: LEGO1 0x1000e300 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f03f0 + return "Act3State"; + } + + // OFFSET: LEGO1 0x1000e310 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Act3State::ClassName()) || LegoState::IsA(name); + } + + virtual MxBool VTable0x14() override; + +private: + // FIXME: May be part of LegoState? Uncertain... + MxU32 m_unk08; + +}; + +#endif // ACT3STATE_H diff --git a/LEGO1/ambulance.cpp b/LEGO1/ambulance.cpp new file mode 100644 index 00000000..6b5e76ad --- /dev/null +++ b/LEGO1/ambulance.cpp @@ -0,0 +1,7 @@ +#include "ambulance.h" + +// OFFSET: LEGO1 0x10035ee0 STUB +Ambulance::Ambulance() +{ + // TODO +} \ No newline at end of file diff --git a/LEGO1/ambulance.h b/LEGO1/ambulance.h new file mode 100644 index 00000000..dd89af3c --- /dev/null +++ b/LEGO1/ambulance.h @@ -0,0 +1,28 @@ +#ifndef AMBULANCE_H +#define AMBULANCE_H + +#include "islepathactor.h" + +// VTABLE 0x100d71a8 +// SIZE 0x184 +class Ambulance : public IslePathActor +{ +public: + Ambulance(); + + // OFFSET: LEGO1 0x10035fa0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f03c4 + return "Ambulance"; + } + + // OFFSET: LEGO1 0x10035fb0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Ambulance::ClassName()) || IslePathActor::IsA(name); + } + +}; + +#endif // AMBULANCE_H diff --git a/LEGO1/ambulancemissionstate.cpp b/LEGO1/ambulancemissionstate.cpp new file mode 100644 index 00000000..6b20ce3a --- /dev/null +++ b/LEGO1/ambulancemissionstate.cpp @@ -0,0 +1,7 @@ +#include "ambulancemissionstate.h" + +// OFFSET: LEGO1 0x100373a0 STUB +AmbulanceMissionState::AmbulanceMissionState() +{ + // TODO +} diff --git a/LEGO1/ambulancemissionstate.h b/LEGO1/ambulancemissionstate.h new file mode 100644 index 00000000..572bba9a --- /dev/null +++ b/LEGO1/ambulancemissionstate.h @@ -0,0 +1,29 @@ +#ifndef AMBULANCEMISSIONSTATE_H +#define AMBULANCEMISSIONSTATE_H + +#include "legostate.h" + +// VTABLE 0x100d72a0 +// SIZE 0x24 +class AmbulanceMissionState : public LegoState +{ +public: + AmbulanceMissionState(); + + // OFFSET: LEGO1 0x10037600 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f00e8 + return "AmbulanceMissionState"; + } + + // OFFSET: LEGO1 0x10037610 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, AmbulanceMissionState::ClassName()) || LegoState::IsA(name); + } + +}; + + +#endif // AMBULANCEMISSIONSTATE_H diff --git a/LEGO1/animstate.cpp b/LEGO1/animstate.cpp new file mode 100644 index 00000000..887328bb --- /dev/null +++ b/LEGO1/animstate.cpp @@ -0,0 +1,13 @@ +#include "animstate.h" + +// OFFSET: LEGO1 0x10064ff0 STUB +AnimState::AnimState() +{ + // TODO +} + +// OFFSET: LEGO1 0x10065150 STUB +AnimState::~AnimState() +{ + // TODO +} diff --git a/LEGO1/animstate.h b/LEGO1/animstate.h new file mode 100644 index 00000000..2095c1cb --- /dev/null +++ b/LEGO1/animstate.h @@ -0,0 +1,29 @@ +#ifndef ANIMSTATE_H +#define ANIMSTATE_H + +#include "legostate.h" + +// VTABLE 0x100d8d80 +// SIZE 0x1c +class AnimState : public LegoState +{ +public: + AnimState(); + virtual ~AnimState() override; // vtable+0x0 + + // OFFSET: LEGO1 0x10065070 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0460 + return "AnimState"; + } + + // OFFSET: LEGO1 0x10065080 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, AnimState::ClassName()) || LegoState::IsA(name); + } + +}; + +#endif // ANIMSTATE_H diff --git a/LEGO1/beachhouseentity.cpp b/LEGO1/beachhouseentity.cpp new file mode 100644 index 00000000..029e022f --- /dev/null +++ b/LEGO1/beachhouseentity.cpp @@ -0,0 +1,9 @@ +#include "beachhouseentity.h" + +// OFFSET: LEGO1 0x100150a0 STUB +long BeachHouseEntity::Notify(MxParam &p) +{ + // TODO + + return 0; +} diff --git a/LEGO1/beachhouseentity.h b/LEGO1/beachhouseentity.h new file mode 100644 index 00000000..1749ff54 --- /dev/null +++ b/LEGO1/beachhouseentity.h @@ -0,0 +1,27 @@ +#ifndef BEACHHOUSEENTITY_H +#define BEACHHOUSEENTITY_H + +#include "buildingentity.h" + +// VTABLE 0x100d4a18 +// SIZE 0x68 +class BeachHouseEntity : public BuildingEntity +{ +public: + virtual long Notify(MxParam &p) override; // vtable+04 + + // OFFSET: LEGO1 0x1000ee80 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0314 + return "BeachHouseEntity"; + } + + // OFFSET: LEGO1 0x1000ee90 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, BeachHouseEntity::ClassName()) || BuildingEntity::IsA(name); + } +}; + +#endif // BEACHHOUSEENTITY_H diff --git a/LEGO1/bike.cpp b/LEGO1/bike.cpp new file mode 100644 index 00000000..ac741a44 --- /dev/null +++ b/LEGO1/bike.cpp @@ -0,0 +1,8 @@ +#include "bike.h" + +// OFFSET: LEGO1 0x10076670 STUB +Bike::Bike() +{ + // TODO +} + diff --git a/LEGO1/bike.h b/LEGO1/bike.h new file mode 100644 index 00000000..8d2de0f1 --- /dev/null +++ b/LEGO1/bike.h @@ -0,0 +1,29 @@ +#ifndef BIKE_H +#define BIKE_H + +#include "islepathactor.h" + +// VTABLE 0x100d9808 +// SIZE 0x164 +class Bike : public IslePathActor +{ +public: + Bike(); + + // OFFSET: LEGO1 0x100766f0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f03d0 + return "Bike"; + } + + // OFFSET: LEGO1 0x10076700 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Bike::ClassName()) || IslePathActor::IsA(name); + } + +}; + + +#endif // BIKE_H diff --git a/LEGO1/buildingentity.cpp b/LEGO1/buildingentity.cpp new file mode 100644 index 00000000..b4611955 --- /dev/null +++ b/LEGO1/buildingentity.cpp @@ -0,0 +1,13 @@ +#include "buildingentity.h" + +// OFFSET: LEGO1 0x10014e20 STUB +BuildingEntity::BuildingEntity() +{ + // TODO +} + +// OFFSET: LEGO1 0x10015030 STUB +BuildingEntity::~BuildingEntity() +{ + // TODO +} diff --git a/LEGO1/buildingentity.h b/LEGO1/buildingentity.h new file mode 100644 index 00000000..0f515cb0 --- /dev/null +++ b/LEGO1/buildingentity.h @@ -0,0 +1,28 @@ +#ifndef BUILDINGENTITY_H +#define BUILDINGENTITY_H + +#include "legoentity.h" + +// VTABLE 0x100d5c88 +// SIZE <= 0x68, hard to tell because it's always constructed as a derivative +class BuildingEntity : public LegoEntity +{ +public: + BuildingEntity(); + virtual ~BuildingEntity() override; // vtable+0x0 + + // OFFSET: LEGO1 0x10014f20 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f07e8 + return "BuildingEntity"; + } + + // OFFSET: LEGO1 0x10014f30 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, BuildingEntity::ClassName()) || LegoEntity::IsA(name); + } +}; + +#endif // BUILDINGENTITY_H diff --git a/LEGO1/bumpbouy.cpp b/LEGO1/bumpbouy.cpp new file mode 100644 index 00000000..c4c8069d --- /dev/null +++ b/LEGO1/bumpbouy.cpp @@ -0,0 +1 @@ +#include "bumpbouy.h" diff --git a/LEGO1/bumpbouy.h b/LEGO1/bumpbouy.h new file mode 100644 index 00000000..58553153 --- /dev/null +++ b/LEGO1/bumpbouy.h @@ -0,0 +1,25 @@ +#ifndef BUMPBOUY_H +#define BUMPBOUY_H + +#include "legoanimactor.h" +#include "mxtypes.h" + +// VTABLE 0x100d6790 +class BumpBouy : public LegoAnimActor +{ +public: + // OFFSET: LEGO1 0x100274e0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0394 + return "BumpBouy"; + } + + // OFFSET: LEGO1 0x10027500 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, BumpBouy::ClassName()) || LegoAnimActor::IsA(name); + } +}; + +#endif // BUMPBOUY_H diff --git a/LEGO1/carrace.cpp b/LEGO1/carrace.cpp new file mode 100644 index 00000000..7c5c522c --- /dev/null +++ b/LEGO1/carrace.cpp @@ -0,0 +1,7 @@ +#include "carrace.h" + +// OFFSET: LEGO1 0x10016a90 STUB +CarRace::CarRace() +{ + // TODO +} \ No newline at end of file diff --git a/LEGO1/carrace.h b/LEGO1/carrace.h new file mode 100644 index 00000000..23230da0 --- /dev/null +++ b/LEGO1/carrace.h @@ -0,0 +1,27 @@ +#ifndef CARRACE_H +#define CARRACE_H + +#include "legorace.h" + +// VTABLE 0x100d5e50 +// SIZE 0x154 +class CarRace : public LegoRace +{ +public: + CarRace(); + + // OFFSET: LEGO1 0x10016b20 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0528 + return "CarRace"; + } + + // OFFSET: LEGO1 0x10016b30 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, CarRace::ClassName()) || LegoRace::IsA(name); + } +}; + +#endif // CARRACE_H diff --git a/LEGO1/carracestate.h b/LEGO1/carracestate.h new file mode 100644 index 00000000..49e77b5d --- /dev/null +++ b/LEGO1/carracestate.h @@ -0,0 +1,25 @@ +#ifndef CARRACESTATE_H +#define CARRACESTATE_H + +#include "racestate.h" + +// VTABLE 0x100d4b70 +// SIZE 0x2c +class CarRaceState : public RaceState +{ +public: + // OFFSET: LEGO1 0x1000dd30 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f009c + return "CarRaceState"; + } + + // OFFSET: LEGO1 0x1000dd40 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, CarRaceState::ClassName()) || RaceState::IsA(name); + } +}; + +#endif // CARRACESTATE_H diff --git a/LEGO1/dllmain.cpp b/LEGO1/dllmain.cpp index 43654cb6..58d0149f 100644 --- a/LEGO1/dllmain.cpp +++ b/LEGO1/dllmain.cpp @@ -1,4 +1,4 @@ -#include "legoinc.h" +#include // OFFSET: LEGO1 0x10091ee0 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) diff --git a/LEGO1/doors.h b/LEGO1/doors.h new file mode 100644 index 00000000..702a47ce --- /dev/null +++ b/LEGO1/doors.h @@ -0,0 +1,26 @@ +#ifndef DOORS_H +#define DOORS_H + +#include "legopathactor.h" + +// VTABLE 0x100d4788 +// SIZE 0x1f8 +class Doors : public LegoPathActor +{ +public: + // OFFSET: LEGO1 0x1000e430 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f03e8 + return "Doors"; + } + + // OFFSET: LEGO1 0x1000e440 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Doors::ClassName()) || LegoPathActor::IsA(name); + } +}; + + +#endif // DOORS_H diff --git a/LEGO1/dunebuggy.cpp b/LEGO1/dunebuggy.cpp new file mode 100644 index 00000000..babf21cb --- /dev/null +++ b/LEGO1/dunebuggy.cpp @@ -0,0 +1,7 @@ +#include "dunebuggy.h" + +// OFFSET: LEGO1 0x10067bb0 STUB +DuneBuggy::DuneBuggy() +{ + // TODO +} \ No newline at end of file diff --git a/LEGO1/dunebuggy.h b/LEGO1/dunebuggy.h new file mode 100644 index 00000000..1f89784e --- /dev/null +++ b/LEGO1/dunebuggy.h @@ -0,0 +1,28 @@ +#ifndef DUNEBUGGY_H +#define DUNEBUGGY_H + +#include "islepathactor.h" + +// VTABLE 0x100d8f98 +// SIZE 0x16c +class DuneBuggy : public IslePathActor +{ +public: + DuneBuggy(); + + // OFFSET: LEGO1 0x10067c30 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0410 + return "DuneBuggy"; + } + + // OFFSET: LEGO1 0x10067c40 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, DuneBuggy::ClassName()) || IslePathActor::IsA(name); + } + +}; + +#endif // DUNEBUGGY_H diff --git a/LEGO1/elevatorbottom.cpp b/LEGO1/elevatorbottom.cpp new file mode 100644 index 00000000..d216fe35 --- /dev/null +++ b/LEGO1/elevatorbottom.cpp @@ -0,0 +1,21 @@ +#include "elevatorbottom.h" + +// OFFSET: LEGO1 0x10017e90 STUB +ElevatorBottom::ElevatorBottom() +{ + // TODO +} + +// OFFSET: LEGO1 0x10018060 STUB +ElevatorBottom::~ElevatorBottom() +{ + // TODO +} + +// OFFSET: LEGO1 0x10018150 STUB +long ElevatorBottom::Notify(MxParam &p) +{ + // TODO + + return 0; +} diff --git a/LEGO1/elevatorbottom.h b/LEGO1/elevatorbottom.h new file mode 100644 index 00000000..0d86080a --- /dev/null +++ b/LEGO1/elevatorbottom.h @@ -0,0 +1,30 @@ +#ifndef ELEVATORBOTTOM_H +#define ELEVATORBOTTOM_H + +#include "legoworld.h" + +// VTABLE 0x100d5f20 +class ElevatorBottom : public LegoWorld +{ +public: + ElevatorBottom(); + virtual ~ElevatorBottom() override; // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x4 + + // OFFSET: LEGO1 0x10017f20 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f04ac + return "ElevatorBottom"; + } + + // OFFSET: LEGO1 0x10017f30 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, ElevatorBottom::ClassName()) || LegoWorld::IsA(name); + } + +}; + +#endif // ELEVATORBOTTOM_H diff --git a/LEGO1/gasstation.cpp b/LEGO1/gasstation.cpp new file mode 100644 index 00000000..d50ef317 --- /dev/null +++ b/LEGO1/gasstation.cpp @@ -0,0 +1,29 @@ +#include "gasstation.h" + +// OFFSET: LEGO1 0x100046a0 STUB +GasStation::GasStation() +{ + // TODO +} + +// OFFSET: LEGO1 0x100048c0 STUB +GasStation::~GasStation() +{ + // TODO +} + +// OFFSET: LEGO1 0x10004a60 STUB +long GasStation::Notify(MxParam &p) +{ + // TODO + + return 0; +} + +// OFFSET: LEGO1 0x10005c90 STUB +long GasStation::Tickle() +{ + // TODO + + return 0; +} diff --git a/LEGO1/gasstation.h b/LEGO1/gasstation.h new file mode 100644 index 00000000..9f22ca3f --- /dev/null +++ b/LEGO1/gasstation.h @@ -0,0 +1,33 @@ +#ifndef GASSTATION_H +#define GASSTATION_H + +#include "legoworld.h" + +// VTABLE 0x100d4650 +// SIZE 0x128 +// Radio variable at 0x46, in constructor +class GasStation : public LegoWorld +{ +public: + GasStation(); + virtual ~GasStation() override; // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x4 + virtual long Tickle() override; // vtable+0x8 + + // OFFSET: LEGO1 0x10004780 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0168 + return "GasStation"; + } + + // OFFSET: LEGO1 0x10004790 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, GasStation::ClassName()) || LegoWorld::IsA(name); + } + +}; + +#endif // GASSTATION_H diff --git a/LEGO1/gasstationentity.cpp b/LEGO1/gasstationentity.cpp new file mode 100644 index 00000000..ebe58c46 --- /dev/null +++ b/LEGO1/gasstationentity.cpp @@ -0,0 +1 @@ +#include "gasstationentity.h" diff --git a/LEGO1/gasstationentity.h b/LEGO1/gasstationentity.h new file mode 100644 index 00000000..27eb60f3 --- /dev/null +++ b/LEGO1/gasstationentity.h @@ -0,0 +1,25 @@ +#ifndef GASSTATIONENTITY_H +#define GASSTATIONENTITY_H + +#include "buildingentity.h" + +// VTABLE 0x100d5258 +// SIZE 0x68 +class GasStationEntity : public BuildingEntity +{ +public: + // OFFSET: LEGO1 0x1000eb20 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0348 + return "GasStationEntity"; + } + + // OFFSET: LEGO1 0x1000eb30 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, GasStationEntity::ClassName()) || BuildingEntity::IsA(name); + } +}; + +#endif // GASSTATIONENTITY_H diff --git a/LEGO1/gasstationstate.cpp b/LEGO1/gasstationstate.cpp new file mode 100644 index 00000000..d9fa2c29 --- /dev/null +++ b/LEGO1/gasstationstate.cpp @@ -0,0 +1,7 @@ +#include "gasstationstate.h" + +// OFFSET: LEGO1 0x10005eb0 STUB +GasStationState::GasStationState() +{ + // TODO +} diff --git a/LEGO1/gasstationstate.h b/LEGO1/gasstationstate.h new file mode 100644 index 00000000..a7696bed --- /dev/null +++ b/LEGO1/gasstationstate.h @@ -0,0 +1,28 @@ +#ifndef GASSTATIONSTATE_H +#define GASSTATIONSTATE_H + +#include "legostate.h" + +// VTABLE 0x100d46e0 +// SIZE 0x24 +class GasStationState : public LegoState +{ +public: + GasStationState(); + + // OFFSET: LEGO1 0x100061d0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0174 + return "GasStationState"; + } + + // OFFSET: LEGO1 0x100061e0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, GasStationState::ClassName()) || LegoState::IsA(name); + } + +}; + +#endif // GASSTATIONSTATE_H diff --git a/LEGO1/helicopter.cpp b/LEGO1/helicopter.cpp new file mode 100644 index 00000000..318f3dab --- /dev/null +++ b/LEGO1/helicopter.cpp @@ -0,0 +1,13 @@ +#include "helicopter.h" + +// OFFSET: LEGO1 0x10001e60 STUB +Helicopter::Helicopter() +{ + // TODO +} + +// OFFSET: LEGO1 0x10003230 STUB +Helicopter::~Helicopter() +{ + // TODO +} diff --git a/LEGO1/helicopter.h b/LEGO1/helicopter.h new file mode 100644 index 00000000..15134f32 --- /dev/null +++ b/LEGO1/helicopter.h @@ -0,0 +1,29 @@ +#ifndef HELICOPTER_H +#define HELICOPTER_H + +#include "islepathactor.h" + +// VTABLE 0x100d40f8 +// SIZE 0x230 +class Helicopter : public IslePathActor +{ +public: + Helicopter(); + virtual ~Helicopter(); // vtable+0x0 + + // OFFSET: LEGO1 0x10003070 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0130 + return "Helicopter"; + } + + // OFFSET: LEGO1 0x10003080 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Helicopter::ClassName()) || IslePathActor::IsA(name); + } + +}; + +#endif // HELICOPTER_H diff --git a/LEGO1/helicopterstate.cpp b/LEGO1/helicopterstate.cpp new file mode 100644 index 00000000..70d71a0c --- /dev/null +++ b/LEGO1/helicopterstate.cpp @@ -0,0 +1 @@ +#include "helicopterstate.h" diff --git a/LEGO1/helicopterstate.h b/LEGO1/helicopterstate.h new file mode 100644 index 00000000..161624dd --- /dev/null +++ b/LEGO1/helicopterstate.h @@ -0,0 +1,25 @@ +#ifndef HELICOPTERSTATE_H +#define HELICOPTERSTATE_H + +#include "legostate.h" + +// VTABLE 0x100d5418 +// SIZE 0xc +class HelicopterState : public LegoState +{ +public: + // OFFSET: LEGO1 0x1000e0d0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0144 + return "HelicopterState"; + } + + // OFFSET: LEGO1 0x1000e0e0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, HelicopterState::ClassName()) || LegoState::IsA(name); + } +}; + +#endif // HELICOPTERSTATE_H diff --git a/LEGO1/historybook.cpp b/LEGO1/historybook.cpp new file mode 100644 index 00000000..89c81315 --- /dev/null +++ b/LEGO1/historybook.cpp @@ -0,0 +1,21 @@ +#include "historybook.h" + +// OFFSET: LEGO1 0x100822f0 STUB +HistoryBook::HistoryBook() +{ + // TODO +} + +// OFFSET: LEGO1 0x100824d0 STUB +HistoryBook::~HistoryBook() +{ + // TODO +} + +// OFFSET: LEGO1 0x10082680 STUB +long HistoryBook::Notify(MxParam &p) +{ + // TODO + + return 0; +} diff --git a/LEGO1/historybook.h b/LEGO1/historybook.h new file mode 100644 index 00000000..bbdc6246 --- /dev/null +++ b/LEGO1/historybook.h @@ -0,0 +1,30 @@ +#ifndef HISTORYBOOK_H +#define HISTORYBOOK_H + +#include "legoworld.h" + +// VTABLE 0x100da328 +// SIZE 0x3e4 +class HistoryBook : public LegoWorld +{ +public: + HistoryBook(); + virtual ~HistoryBook() override; // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x4 + + // OFFSET: LEGO1 0x10082390 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f04bc + return "HistoryBook"; + } + + // OFFSET: LEGO1 0x100823a0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, HistoryBook::ClassName()) || LegoWorld::IsA(name); + } +}; + +#endif // HISTORYBOOK_H diff --git a/LEGO1/hospital.cpp b/LEGO1/hospital.cpp new file mode 100644 index 00000000..2581cf34 --- /dev/null +++ b/LEGO1/hospital.cpp @@ -0,0 +1,21 @@ +#include "hospital.h" + +// OFFSET: LEGO1 0x100745e0 STUB +Hospital::Hospital() +{ + // TODO +} + +// OFFSET: LEGO1 0x100747f0 STUB +Hospital::~Hospital() +{ + // TODO +} + +// OFFSET: LEGO1 0x10074990 STUB +long Hospital::Notify(MxParam &p) +{ + // TODO + + return 0; +} diff --git a/LEGO1/hospital.h b/LEGO1/hospital.h new file mode 100644 index 00000000..b14de205 --- /dev/null +++ b/LEGO1/hospital.h @@ -0,0 +1,31 @@ +#ifndef HOSPITAL_H +#define HOSPITAL_H + +#include "legoworld.h" + +// VTABLE 0x100d9730 +// SIZE 0x12c +class Hospital : public LegoWorld +{ +public: + Hospital(); + virtual ~Hospital() override; // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x04 + + // OFFSET: LEGO1 0x100746b0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0490 + return "Hospital"; + } + + // OFFSET: LEGO1 0x100746c0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Hospital::ClassName()) || LegoWorld::IsA(name); + } + +}; + +#endif // HOSPITAL_H diff --git a/LEGO1/hospitalentity.cpp b/LEGO1/hospitalentity.cpp new file mode 100644 index 00000000..8da86464 --- /dev/null +++ b/LEGO1/hospitalentity.cpp @@ -0,0 +1 @@ +#include "hospitalentity.h" diff --git a/LEGO1/hospitalentity.h b/LEGO1/hospitalentity.h new file mode 100644 index 00000000..537bff12 --- /dev/null +++ b/LEGO1/hospitalentity.h @@ -0,0 +1,26 @@ +#ifndef HOSPITALENTITY_H +#define HOSPITALENTITY_H + +#include "buildingentity.h" + +// VTABLE 0x100d5068 +// SIZE 0x68 +class HospitalEntity : public BuildingEntity +{ +public: + // OFFSET: LEGO1 0x1000ec40 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0338 + return "HospitalEntity"; + } + + // OFFSET: LEGO1 0x1000ec50 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, HospitalEntity::ClassName()) || BuildingEntity::IsA(name); + } + +}; + +#endif // HOSPITALENTITY_H diff --git a/LEGO1/hospitalstate.cpp b/LEGO1/hospitalstate.cpp new file mode 100644 index 00000000..066dceec --- /dev/null +++ b/LEGO1/hospitalstate.cpp @@ -0,0 +1,7 @@ +#include "hospitalstate.h" + +// OFFSET: LEGO1 0x10076370 STUB +HospitalState::HospitalState() +{ + // TODO +} diff --git a/LEGO1/hospitalstate.h b/LEGO1/hospitalstate.h new file mode 100644 index 00000000..ccecf07b --- /dev/null +++ b/LEGO1/hospitalstate.h @@ -0,0 +1,28 @@ +#ifndef HOSPITALSTATE_H +#define HOSPITALSTATE_H + +#include "legostate.h" + +// VTABLE 0x100d97a0 +// SIZE 0x18 +class HospitalState : public LegoState +{ +public: + HospitalState(); + + // OFFSET: LEGO1 0x10076400 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0480 + return "HospitalState"; + } + + // OFFSET: LEGO1 0x10076410 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, HospitalState::ClassName()) || LegoState::IsA(name); + } + +}; + +#endif // HOSPITALSTATE_H diff --git a/LEGO1/infocenter.cpp b/LEGO1/infocenter.cpp new file mode 100644 index 00000000..1ad07ee4 --- /dev/null +++ b/LEGO1/infocenter.cpp @@ -0,0 +1,29 @@ +#include "infocenter.h" + +// OFFSET: LEGO1 0x1006ea20 STUB +Infocenter::Infocenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x1006ec90 STUB +Infocenter::~Infocenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x1006ef10 STUB +long Infocenter::Notify(MxParam &p) +{ + // TODO + + return 0; +} + +// OFFSET: LEGO1 0x10070af0 STUB +long Infocenter::Tickle() +{ + // TODO + + return 0; +} diff --git a/LEGO1/infocenter.h b/LEGO1/infocenter.h new file mode 100644 index 00000000..49a71acb --- /dev/null +++ b/LEGO1/infocenter.h @@ -0,0 +1,32 @@ +#ifndef INFOCENTER_H +#define INFOCENTER_H + +#include "legoworld.h" + +// VTABLE 0x100d9338 +// SIZE 0x1d8 +class Infocenter : public LegoWorld +{ +public: + Infocenter(); + virtual ~Infocenter() override; + + virtual long Notify(MxParam &p) override; // vtable+0x4 + virtual long Tickle() override; // vtable+0x8 + + // OFFSET: LEGO1 0x1006eb40 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f04ec + return "Infocenter"; + } + + // OFFSET: LEGO1 0x1006eb50 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Infocenter::ClassName()) || LegoWorld::IsA(name); + } + +}; + +#endif // INFOCENTER_H diff --git a/LEGO1/infocenterdoor.cpp b/LEGO1/infocenterdoor.cpp new file mode 100644 index 00000000..be57f96e --- /dev/null +++ b/LEGO1/infocenterdoor.cpp @@ -0,0 +1,21 @@ +#include "infocenterdoor.h" + +// OFFSET: LEGO1 0x10037730 STUB +InfocenterDoor::InfocenterDoor() +{ + // TODO +} + +// OFFSET: LEGO1 0x100378f0 STUB +InfocenterDoor::~InfocenterDoor() +{ + // TODO +} + +// OFFSET: LEGO1 0x100379e0 STUB +long InfocenterDoor::Notify(MxParam &p) +{ + // TODO + + return 0; +} diff --git a/LEGO1/infocenterdoor.h b/LEGO1/infocenterdoor.h new file mode 100644 index 00000000..77a0c021 --- /dev/null +++ b/LEGO1/infocenterdoor.h @@ -0,0 +1,31 @@ +#ifndef INFOCENTERDOOR_H +#define INFOCENTERDOOR_H + +#include "legoworld.h" + +// VTABLE 0x100d72d8 +// SIZE 0xfc +class InfocenterDoor : public LegoWorld +{ +public: + InfocenterDoor(); + virtual ~InfocenterDoor(); // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x4 + + // OFFSET: LEGO1 0x100377b0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f049c + return "InfocenterDoor"; + } + + // OFFSET: LEGO1 0x100377c0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, InfocenterDoor::ClassName()) || LegoWorld::IsA(name); + } + +}; + +#endif // INFOCENTERDOOR_H diff --git a/LEGO1/infocenterentity.cpp b/LEGO1/infocenterentity.cpp new file mode 100644 index 00000000..211cf0b8 --- /dev/null +++ b/LEGO1/infocenterentity.cpp @@ -0,0 +1 @@ +#include "infocenterentity.h" diff --git a/LEGO1/infocenterentity.h b/LEGO1/infocenterentity.h new file mode 100644 index 00000000..3980e68a --- /dev/null +++ b/LEGO1/infocenterentity.h @@ -0,0 +1,26 @@ +#ifndef INFOCENTERENTITY_H +#define INFOCENTERENTITY_H + +#include "buildingentity.h" + +// VTABLE 0x100d4b90 +// SIZE 0x68 +class InfoCenterEntity : public BuildingEntity +{ +public: + // OFFSET: LEGO1 0x1000ea00 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f035c + return "InfoCenterEntity"; + } + + // OFFSET: LEGO1 0x1000ea10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, InfoCenterEntity::ClassName()) || BuildingEntity::IsA(name); + } + +}; + +#endif // INFOCENTERENTITY_H diff --git a/LEGO1/infocenterstate.cpp b/LEGO1/infocenterstate.cpp new file mode 100644 index 00000000..d680eb43 --- /dev/null +++ b/LEGO1/infocenterstate.cpp @@ -0,0 +1,14 @@ +#include "infocenterstate.h" + +// OFFSET: LEGO1 0x10071600 STUB +InfocenterState::InfocenterState() +{ + // TODO +} + +// OFFSET: LEGO1 0x10071920 STUB +InfocenterState::~InfocenterState() +{ + // TODO +} + diff --git a/LEGO1/infocenterstate.h b/LEGO1/infocenterstate.h new file mode 100644 index 00000000..4f09d496 --- /dev/null +++ b/LEGO1/infocenterstate.h @@ -0,0 +1,28 @@ +#ifndef INFOCENTERSTATE_H +#define INFOCENTERSTATE_H + +#include "legostate.h" + +// VTABLE 0x100d93a8 +// SIZE 0x94 +class InfocenterState : public LegoState +{ +public: + InfocenterState(); + virtual ~InfocenterState(); + + // OFFSET: LEGO1 0x10071840 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f04dc + return "InfocenterState"; + } + + // OFFSET: LEGO1 0x10071850 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, InfocenterState::ClassName()) || LegoState::IsA(name); + } +}; + +#endif // INFOCENTERSTATE_H diff --git a/LEGO1/isle.cpp b/LEGO1/isle.cpp new file mode 100644 index 00000000..fa5d806b --- /dev/null +++ b/LEGO1/isle.cpp @@ -0,0 +1,7 @@ +#include "isle.h" + +// OFFSET: LEGO1 0x10030820 STUB +Isle::Isle() +{ + // TODO +} diff --git a/LEGO1/isle.h b/LEGO1/isle.h new file mode 100644 index 00000000..4aedbbcf --- /dev/null +++ b/LEGO1/isle.h @@ -0,0 +1,28 @@ +#ifndef ISLE_H +#define ISLE_H + +#include "legoworld.h" + +// VTABLE 0x100d6fb8 +// SIZE 0x140 +// Radio at 0x12c +class Isle : public LegoWorld +{ +public: + Isle(); + + // OFFSET: LEGO1 0x10030910 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0458 + return "Isle"; + } + + // OFFSET: LEGO1 0x10030920 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Isle::ClassName()) || LegoWorld::IsA(name); + } +}; + +#endif // ISLE_H diff --git a/LEGO1/isleactor.cpp b/LEGO1/isleactor.cpp new file mode 100644 index 00000000..ca286e37 --- /dev/null +++ b/LEGO1/isleactor.cpp @@ -0,0 +1 @@ +#include "isleactor.h" diff --git a/LEGO1/isleactor.h b/LEGO1/isleactor.h new file mode 100644 index 00000000..3b7660f5 --- /dev/null +++ b/LEGO1/isleactor.h @@ -0,0 +1,24 @@ +#ifndef ISLEACTOR_H +#define ISLEACTOR_H + +#include "legoactor.h" + +// VTABLE 0x100d5178 +class IsleActor : public LegoActor +{ +public: + // OFFSET: LEGO1 0x1000e660 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f07dc + return "IsleActor"; + } + + // OFFSET: LEGO1 0x1000e670 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, IsleActor::ClassName()) || LegoActor::IsA(name); + } +}; + +#endif // ISLEACTOR_H diff --git a/LEGO1/islepathactor.cpp b/LEGO1/islepathactor.cpp new file mode 100644 index 00000000..72ed76d8 --- /dev/null +++ b/LEGO1/islepathactor.cpp @@ -0,0 +1 @@ +#include "islepathactor.h" diff --git a/LEGO1/islepathactor.h b/LEGO1/islepathactor.h new file mode 100644 index 00000000..fce450ac --- /dev/null +++ b/LEGO1/islepathactor.h @@ -0,0 +1,25 @@ +#ifndef ISLEPATHACTOR_H +#define ISLEPATHACTOR_H + +#include "legopathactor.h" + +// VTABLE 0x100d4398 +// SIZE >= 0x230 +class IslePathActor : public LegoPathActor +{ +public: + // OFFSET: LEGO1 0x10002ea0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0104 + return "IslePathActor"; + } + + // OFFSET: LEGO1 0x10002eb0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, IslePathActor::ClassName()) || LegoPathActor::IsA(name); + } +}; + +#endif // ISLEPATHACTOR_H diff --git a/LEGO1/jetski.cpp b/LEGO1/jetski.cpp new file mode 100644 index 00000000..50676253 --- /dev/null +++ b/LEGO1/jetski.cpp @@ -0,0 +1,7 @@ +#include "jetski.h" + +// OFFSET: LEGO1 0x1007e3b0 STUB +Jetski::Jetski() +{ + // TODO +} \ No newline at end of file diff --git a/LEGO1/jetski.h b/LEGO1/jetski.h new file mode 100644 index 00000000..7cabea4d --- /dev/null +++ b/LEGO1/jetski.h @@ -0,0 +1,29 @@ +#ifndef JETSKI_H +#define JETSKI_H + +#include "islepathactor.h" + +// VTABLE 0x100d9ec8 +// SIZE 0x164 +class Jetski : public IslePathActor +{ +public: + Jetski(); + + // OFFSET: LEGO1 0x1007e430 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f03d8 + return "Jetski"; + } + + // OFFSET: LEGO1 0x1007e440 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Jetski::ClassName()) || IslePathActor::IsA(name); + } + +}; + + +#endif // JETSKI_H diff --git a/LEGO1/jetskirace.cpp b/LEGO1/jetskirace.cpp new file mode 100644 index 00000000..cc119878 --- /dev/null +++ b/LEGO1/jetskirace.cpp @@ -0,0 +1 @@ +#include "jetskirace.h" diff --git a/LEGO1/jetskirace.h b/LEGO1/jetskirace.h new file mode 100644 index 00000000..bea59903 --- /dev/null +++ b/LEGO1/jetskirace.h @@ -0,0 +1,26 @@ +#ifndef JETSKIRACE_H +#define JETSKIRACE_H + +#include "legorace.h" + +// VTABLE 0x100d4fe8 +// SIZE 0x144 +class JetskiRace : public LegoRace +{ +public: + + // OFFSET: LEGO1 0x1000daf0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0530 + return "JetskiRace"; + } + + // OFFSET: LEGO1 0x1000db00 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, JetskiRace::ClassName()) || LegoRace::IsA(name); + } +}; + +#endif // JETSKIRACE_H diff --git a/LEGO1/jetskiracestate.h b/LEGO1/jetskiracestate.h new file mode 100644 index 00000000..bdcfc0cd --- /dev/null +++ b/LEGO1/jetskiracestate.h @@ -0,0 +1,26 @@ +#ifndef JETSKIRACESTATE_H +#define JETSKIRACESTATE_H + +#include "racestate.h" + +// VTABLE 0x100d4fa8 +// SIZE 0x2c +class JetskiRaceState : public RaceState +{ +public: + // OFFSET: LEGO1 0x1000dc40 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f00ac + return "JetskiRaceState"; + } + + // OFFSET: LEGO1 0x1000dc50 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, JetskiRaceState::ClassName()) || RaceState::IsA(name); + } + +}; + +#endif // JETSKIRACESTATE_H diff --git a/LEGO1/jukebox.cpp b/LEGO1/jukebox.cpp new file mode 100644 index 00000000..f169a278 --- /dev/null +++ b/LEGO1/jukebox.cpp @@ -0,0 +1,7 @@ +#include "jukebox.h" + +// OFFSET: LEGO1 0x1005d660 STUB +JukeBox::JukeBox() +{ + // TODO +} \ No newline at end of file diff --git a/LEGO1/jukebox.h b/LEGO1/jukebox.h new file mode 100644 index 00000000..3083f901 --- /dev/null +++ b/LEGO1/jukebox.h @@ -0,0 +1,28 @@ +#ifndef JUKEBOX_H +#define JUKEBOX_H + +#include "legoworld.h" + +// VTABLE 0x100d8958 +// SIZE 0x104 +class JukeBox : public LegoWorld +{ +public: + JukeBox(); + + // OFFSET: LEGO1 0x1005d6f0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f02cc + return "JukeBox"; + } + + // OFFSET: LEGO1 0x1005d700 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, JukeBox::ClassName()) || LegoWorld::IsA(name); + } + +}; + +#endif // JUKEBOX_H diff --git a/LEGO1/jukeboxentity.cpp b/LEGO1/jukeboxentity.cpp new file mode 100644 index 00000000..8c1a971b --- /dev/null +++ b/LEGO1/jukeboxentity.cpp @@ -0,0 +1,13 @@ +#include "jukeboxentity.h" + +// OFFSET: LEGO1 0x10085bc0 STUB +JukeBoxEntity::JukeBoxEntity() +{ + // TODO +} + +// OFFSET: LEGO1 0x10085dd0 STUB +JukeBoxEntity::~JukeBoxEntity() +{ + // TODO +} diff --git a/LEGO1/jukeboxentity.h b/LEGO1/jukeboxentity.h new file mode 100644 index 00000000..8571f203 --- /dev/null +++ b/LEGO1/jukeboxentity.h @@ -0,0 +1,29 @@ +#ifndef JUKEBOXENTITY_H +#define JUKEBOXENTITY_H + +#include "legoentity.h" + +// VTABLE 0x100da8a0 +// SIZE 0x6c +class JukeBoxEntity : public LegoEntity +{ +public: + JukeBoxEntity(); + virtual ~JukeBoxEntity() override; // vtable+0x0 + + // OFFSET: LEGO1 0x10085cc0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f02f0 + return "JukeBoxEntity"; + } + + // OFFSET: LEGO1 0x10085cd0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, JukeBoxEntity::ClassName()) || LegoEntity::IsA(name); + } + +}; + +#endif // JUKEBOXENTITY_H diff --git a/LEGO1/jukeboxstate.cpp b/LEGO1/jukeboxstate.cpp new file mode 100644 index 00000000..25b6dc90 --- /dev/null +++ b/LEGO1/jukeboxstate.cpp @@ -0,0 +1 @@ +#include "jukeboxstate.h" diff --git a/LEGO1/jukeboxstate.h b/LEGO1/jukeboxstate.h new file mode 100644 index 00000000..75640fe3 --- /dev/null +++ b/LEGO1/jukeboxstate.h @@ -0,0 +1,26 @@ +#ifndef JUKEBOXSTATE_H +#define JUKEBOXSTATE_H + +#include "legostate.h" + +// VTABLE 0x100d4a90 +// SIZE 0x10 +class JukeBoxState : public LegoState +{ +public: + // OFFSET: LEGO1 0x1000f310 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f02bc + return "JukeBoxState"; + } + + // OFFSET: LEGO1 0x1000f320 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, JukeBoxState::ClassName()) || LegoState::IsA(name); + } + +}; + +#endif // JUKEBOXSTATE_H diff --git a/LEGO1/lego3dwavepresenter.h b/LEGO1/lego3dwavepresenter.h new file mode 100644 index 00000000..b9a2b7f5 --- /dev/null +++ b/LEGO1/lego3dwavepresenter.h @@ -0,0 +1,25 @@ +#ifndef LEGO3DWAVEPRESENTER_H +#define LEGO3DWAVEPRESENTER_H + +#include "legowavepresenter.h" + +// VTABLE 0x100d52b0 +// SIZE 0xa0 +class Lego3DWavePresenter : public LegoWavePresenter +{ +public: + // OFFSET: LEGO1 0x1000d890 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f058c + return "Lego3DWavePresenter"; + } + + // OFFSET: LEGO1 0x1000d8a0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Lego3DWavePresenter::ClassName()) || MxWavePresenter::IsA(name); + } +}; + +#endif // LEGO3DWAVEPRESENTER_H diff --git a/LEGO1/legoact2state.cpp b/LEGO1/legoact2state.cpp new file mode 100644 index 00000000..1ca6a144 --- /dev/null +++ b/LEGO1/legoact2state.cpp @@ -0,0 +1 @@ +#include "legoact2state.h" diff --git a/LEGO1/legoact2state.h b/LEGO1/legoact2state.h new file mode 100644 index 00000000..321138ba --- /dev/null +++ b/LEGO1/legoact2state.h @@ -0,0 +1,26 @@ +#ifndef LEGOACT2STATE_H +#define LEGOACT2STATE_H + +#include "legostate.h" + +// VTABLE 0x100d4a70 +// SIZE 0x10 +class LegoAct2State : public LegoState +{ +public: + // OFFSET: LEGO1 0x1000df80 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0428 + return "LegoAct2State"; + } + + // OFFSET: LEGO1 0x1000df90 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoAct2State::ClassName()) || LegoState::IsA(name); + } + +}; + +#endif // LEGOACT2STATE_H diff --git a/LEGO1/legoactioncontrolpresenter.cpp b/LEGO1/legoactioncontrolpresenter.cpp new file mode 100644 index 00000000..598c0958 --- /dev/null +++ b/LEGO1/legoactioncontrolpresenter.cpp @@ -0,0 +1 @@ +#include "legoactioncontrolpresenter.h" diff --git a/LEGO1/legoactioncontrolpresenter.h b/LEGO1/legoactioncontrolpresenter.h new file mode 100644 index 00000000..7e051805 --- /dev/null +++ b/LEGO1/legoactioncontrolpresenter.h @@ -0,0 +1,25 @@ +#ifndef LEGOACTIONCONTROLPRESENTER_H +#define LEGOACTIONCONTROLPRESENTER_H + +#include "mxmediapresenter.h" + +// VTABLE 0x100d5118 +// SIZE 0x68 +class LegoActionControlPresenter : public MxMediaPresenter +{ +public: + // OFFSET: LEGO1 0x1000d0e0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f05bc + return "LegoActionControlPresenter"; + } + + // OFFSET: LEGO1 0x1000d0f0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoActionControlPresenter::ClassName()) || MxMediaPresenter::IsA(name); + } +}; + +#endif // LEGOACTIONCONTROLPRESENTER_H diff --git a/LEGO1/legoactor.h b/LEGO1/legoactor.h new file mode 100644 index 00000000..9b23e943 --- /dev/null +++ b/LEGO1/legoactor.h @@ -0,0 +1,25 @@ +#ifndef LEGOACTOR_H +#define LEGOACTOR_H + +#include "legoentity.h" + +// VTABLE 0x100d6d68 +// SIZE 0x78 +class LegoActor : public LegoEntity +{ +public: + // OFFSET: LEGO1 0x1002d210 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0124 + return "LegoActor"; + } + + // OFFSET: LEGO1 0x1002d220 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoActor::ClassName()) || LegoEntity::IsA(name); + } +}; + +#endif // LEGOACTOR_H diff --git a/LEGO1/legoactorpresenter.h b/LEGO1/legoactorpresenter.h new file mode 100644 index 00000000..fd3ae4e7 --- /dev/null +++ b/LEGO1/legoactorpresenter.h @@ -0,0 +1,25 @@ +#ifndef LEGOACTORPRESENTER_H +#define LEGOACTORPRESENTER_H + +#include "legoentitypresenter.h" + +// VTABLE 0x100d5320 +// SIZE 0x50 +class LegoActorPresenter : public LegoEntityPresenter +{ +public: + // OFFSET: LEGO1 0x1000cb10 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f06a4 + return "LegoActorPresenter"; + } + + // OFFSET: LEGO1 0x1000cb20 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoActorPresenter::ClassName()) || LegoEntityPresenter::IsA(name); + } +}; + +#endif // LEGOACTORPRESENTER_H diff --git a/LEGO1/legoanimactor.cpp b/LEGO1/legoanimactor.cpp new file mode 100644 index 00000000..d3515937 --- /dev/null +++ b/LEGO1/legoanimactor.cpp @@ -0,0 +1 @@ +#include "legoanimactor.h" diff --git a/LEGO1/legoanimactor.h b/LEGO1/legoanimactor.h new file mode 100644 index 00000000..f535028c --- /dev/null +++ b/LEGO1/legoanimactor.h @@ -0,0 +1,11 @@ +#ifndef LEGOANIMACTOR_H +#define LEGOANIMACTOR_H + +#include "legopathactor.h" + +class LegoAnimActor : public LegoPathActor +{ +public: +}; + +#endif // LEGOANIMACTOR_H diff --git a/LEGO1/legoanimationmanager.cpp b/LEGO1/legoanimationmanager.cpp index d7ca97d7..cd6210f9 100644 --- a/LEGO1/legoanimationmanager.cpp +++ b/LEGO1/legoanimationmanager.cpp @@ -1,6 +1,40 @@ #include "legoanimationmanager.h" +// OFFSET: LEGO1 0x1005eb60 STUB +LegoAnimationManager::LegoAnimationManager() +{ +} + +// OFFSET: LEGO1 0x1005ed30 STUB +LegoAnimationManager::~LegoAnimationManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x100619f0 STUB +long LegoAnimationManager::Notify(MxParam &p) +{ + // TODO + + return 0; +} + +// OFFSET: LEGO1 0x10061cc0 STUB +long LegoAnimationManager::Tickle() +{ + // TODO + + return 0; +} + +// OFFSET: LEGO1 0x1005f130 STUB +void LegoAnimationManager::Init() +{ + // TODO +} + +// OFFSET: LEGO1 0x1005EB50 STUB void LegoAnimationManager::configureLegoAnimationManager(int param_1) { - // FIXME: Stub -} + // TODO +} \ No newline at end of file diff --git a/LEGO1/legoanimationmanager.h b/LEGO1/legoanimationmanager.h index 8e243dd3..c42b7715 100644 --- a/LEGO1/legoanimationmanager.h +++ b/LEGO1/legoanimationmanager.h @@ -1,10 +1,37 @@ #ifndef LEGOANIMATIONMANAGER_H #define LEGOANIMATIONMANAGER_H -class LegoAnimationManager +#include "mxcore.h" + +// VTABLE 0x100d8c18 +// SIZE 0x500 +class LegoAnimationManager : public MxCore { public: + LegoAnimationManager(); + virtual ~LegoAnimationManager() override; // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x4 + virtual long Tickle() override; // vtable+0x8 + + // OFFSET: LEGO1 0x1005ec80 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f7508 + return "LegoAnimationManager"; + } + + // OFFSET: LEGO1 0x1005ec90 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, ClassName()) || MxCore::IsA(name); + } + __declspec(dllexport) static void configureLegoAnimationManager(int param_1); + +private: + void Init(); + }; #endif // LEGOANIMATIONMANAGER_H diff --git a/LEGO1/legoanimmmpresenter.cpp b/LEGO1/legoanimmmpresenter.cpp new file mode 100644 index 00000000..1c98b7c1 --- /dev/null +++ b/LEGO1/legoanimmmpresenter.cpp @@ -0,0 +1,7 @@ +#include "legoanimmmpresenter.h" + +// OFFSET: LEGO1 0x1004a8d0 STUB +LegoAnimMMPresenter::LegoAnimMMPresenter() +{ + // TODO +} diff --git a/LEGO1/legoanimmmpresenter.h b/LEGO1/legoanimmmpresenter.h new file mode 100644 index 00000000..8cb61be0 --- /dev/null +++ b/LEGO1/legoanimmmpresenter.h @@ -0,0 +1,28 @@ +#ifndef LEGOANIMMMPRESENTER_H +#define LEGOANIMMMPRESENTER_H + +#include "mxcompositepresenter.h" + +// VTABLE 0x100d7de8 +// SIZE 0x74 +class LegoAnimMMPresenter : public MxCompositePresenter +{ +public: + LegoAnimMMPresenter(); + + // OFFSET: LEGO1 0x1004a950 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f046c + return "LegoAnimMMPresenter"; + } + + // OFFSET: LEGO1 0x1004a960 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoAnimMMPresenter::ClassName()) || MxCompositePresenter::IsA(name); + } + +}; + +#endif // LEGOANIMMMPRESENTER_H diff --git a/LEGO1/legoanimpresenter.cpp b/LEGO1/legoanimpresenter.cpp new file mode 100644 index 00000000..a968afe0 --- /dev/null +++ b/LEGO1/legoanimpresenter.cpp @@ -0,0 +1,13 @@ +#include "legoanimpresenter.h" + +// OFFSET: LEGO1 0x10068420 STUB +LegoAnimPresenter::LegoAnimPresenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x100686f0 STUB +void LegoAnimPresenter::Init() +{ + // TODO +} diff --git a/LEGO1/legoanimpresenter.h b/LEGO1/legoanimpresenter.h new file mode 100644 index 00000000..56fcc989 --- /dev/null +++ b/LEGO1/legoanimpresenter.h @@ -0,0 +1,30 @@ +#ifndef LEGOANIMPRESENTER_H +#define LEGOANIMPRESENTER_H + +#include "mxvideopresenter.h" + +// VTABLE 0x100d90c8 +class LegoAnimPresenter : public MxVideoPresenter +{ +public: + LegoAnimPresenter(); + + // OFFSET: LEGO1 0x10068530 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f071c + return "LegoAnimPresenter"; + } + + // OFFSET: LEGO1 0x10068540 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoAnimPresenter::ClassName()) || MxVideoPresenter::IsA(name); + } + +private: + void Init(); + +}; + +#endif // LEGOANIMPRESENTER_H diff --git a/LEGO1/legobuildingmanager.cpp b/LEGO1/legobuildingmanager.cpp index e077389f..92e8c962 100644 --- a/LEGO1/legobuildingmanager.cpp +++ b/LEGO1/legobuildingmanager.cpp @@ -1,6 +1,23 @@ #include "legobuildingmanager.h" +// OFFSET: LEGO1 0x1002f8c0 STUB +LegoBuildingManager::LegoBuildingManager() +{ +} + +// OFFSET: LEGO1 0x1002f960 STUB +LegoBuildingManager::~LegoBuildingManager() +{ +} + +// OFFSET: LEGO1 0x1002f9d0 STUB +void LegoBuildingManager::Init() +{ + // TODO +} + +// OFFSET: LEGO1 0x1002F8B0 STUB void LegoBuildingManager::configureLegoBuildingManager(int param_1) { - // FIXME: Stub + // TODO } diff --git a/LEGO1/legobuildingmanager.h b/LEGO1/legobuildingmanager.h index a1173d3d..17701617 100644 --- a/LEGO1/legobuildingmanager.h +++ b/LEGO1/legobuildingmanager.h @@ -1,10 +1,28 @@ #ifndef LEGOBUILDINGMANAGER_H #define LEGOBUILDINGMANAGER_H -class LegoBuildingManager +#include "mxcore.h" + +// VTABLE 0x100d6f50 +// SIZE 0x30 +class LegoBuildingManager : public MxCore { public: + LegoBuildingManager(); + virtual ~LegoBuildingManager() override; + + // OFFSET: LEGO1 0x1002f930 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f37d0 + return "LegoBuildingManager"; + } + __declspec(dllexport) static void configureLegoBuildingManager(int param_1); + +private: + void Init(); + }; #endif // LEGOBUILDINGMANAGER_H diff --git a/LEGO1/legocachesound.cpp b/LEGO1/legocachesound.cpp new file mode 100644 index 00000000..37495920 --- /dev/null +++ b/LEGO1/legocachesound.cpp @@ -0,0 +1,19 @@ +#include "legocachesound.h" + +// OFFSET: LEGO1 0x100064d0 +LegoCacheSound::LegoCacheSound() +{ + Init(); +} + +// OFFSET: LEGO1 0x10006630 STUB +LegoCacheSound::~LegoCacheSound() +{ + // TODO +} + +// OFFSET: LEGO1 0x100066d0 STUB +void LegoCacheSound::Init() +{ + // TODO +} diff --git a/LEGO1/legocachesound.h b/LEGO1/legocachesound.h new file mode 100644 index 00000000..3506aa95 --- /dev/null +++ b/LEGO1/legocachesound.h @@ -0,0 +1,31 @@ +#ifndef LEGOCACHESOUND_H +#define LEGOCACHESOUND_H + +#include "mxcore.h" + +// VTABLE 0x100d4718 +// SIZE 0x88 +class LegoCacheSound : public MxCore +{ +public: + LegoCacheSound(); + virtual ~LegoCacheSound() override; // vtable+0x0 + + // OFFSET: LEGO1 0x10006580 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f01c4 + return "LegoCacheSound"; + } + + // OFFSET: LEGO1 0x10006590 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoCacheSound::ClassName()) || MxCore::IsA(name); + } + +private: + void Init(); +}; + +#endif // LEGOCACHESOUND_H diff --git a/LEGO1/legocameracontroller.cpp b/LEGO1/legocameracontroller.cpp new file mode 100644 index 00000000..da023851 --- /dev/null +++ b/LEGO1/legocameracontroller.cpp @@ -0,0 +1,13 @@ +#include "legocameracontroller.h" + +// OFFSET: LEGO1 0x10011d50 STUB +LegoCameraController::LegoCameraController() +{ + // TODO +} + +// OFFSET: LEGO1 0x10011f70 STUB +LegoCameraController::~LegoCameraController() +{ + // TODO +} diff --git a/LEGO1/legocameracontroller.h b/LEGO1/legocameracontroller.h new file mode 100644 index 00000000..15afff7f --- /dev/null +++ b/LEGO1/legocameracontroller.h @@ -0,0 +1,29 @@ +#ifndef LEGOCAMERACONTROLLER_H +#define LEGOCAMERACONTROLLER_H + +#include "mxcore.h" + +// VTABLE 0x100d57b0 +// SIZE 0xc8 +class LegoCameraController : public MxCore +{ +public: + LegoCameraController(); + virtual ~LegoCameraController() override; // vtable+0x0 + + // OFFSET: LEGO1 0x10011ec0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0850 + return "LegoCameraController"; + } + + // OFFSET: LEGO1 0x10011ed0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, ClassName()) || MxCore::IsA(name); + } + +}; + +#endif // LEGOCAMERACONTROLLER_H diff --git a/LEGO1/legocarbuild.cpp b/LEGO1/legocarbuild.cpp new file mode 100644 index 00000000..d96668e4 --- /dev/null +++ b/LEGO1/legocarbuild.cpp @@ -0,0 +1,29 @@ +#include "legocarbuild.h" + +// OFFSET: LEGO1 0x100226d0 STUB +LegoCarBuild::LegoCarBuild() +{ + // TODO +} + +// OFFSET: LEGO1 0x10022a80 STUB +LegoCarBuild::~LegoCarBuild() +{ + // TODO +} + +// OFFSET: LEGO1 0x10024050 STUB +long LegoCarBuild::Notify(MxParam &p) +{ + // TODO + + return 0; +} + +// OFFSET: LEGO1 0x100238b0 STUB +long LegoCarBuild::Tickle() +{ + // TODO + + return 0; +} diff --git a/LEGO1/legocarbuild.h b/LEGO1/legocarbuild.h new file mode 100644 index 00000000..10396c9e --- /dev/null +++ b/LEGO1/legocarbuild.h @@ -0,0 +1,31 @@ +#ifndef LEGOCARBUILD_H +#define LEGOCARBUILD_H + +#include "legoworld.h" + +// VTABLE 0x100d6658 +// SIZE 0x34c +class LegoCarBuild : public LegoWorld +{ +public: + LegoCarBuild(); + virtual ~LegoCarBuild() override; + + virtual long Notify(MxParam &p) override; // vtable+0x4 + virtual long Tickle() override; // vtable+0x8 + + // OFFSET: LEGO1 0x10022940 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0504 + return "LegoCarBuild"; + } + + // OFFSET: LEGO1 0x10022950 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoCarBuild::ClassName()) || LegoWorld::IsA(name); + } +}; + +#endif // LEGOCARBUILD_H diff --git a/LEGO1/legocarbuildanimpresenter.cpp b/LEGO1/legocarbuildanimpresenter.cpp new file mode 100644 index 00000000..0b5ee0a5 --- /dev/null +++ b/LEGO1/legocarbuildanimpresenter.cpp @@ -0,0 +1,13 @@ +#include "legocarbuildanimpresenter.h" + +// OFFSET: LEGO1 0x10078400 STUB +LegoCarBuildAnimPresenter::LegoCarBuildAnimPresenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x10078680 STUB +LegoCarBuildAnimPresenter::~LegoCarBuildAnimPresenter() +{ + // TODO +} diff --git a/LEGO1/legocarbuildanimpresenter.h b/LEGO1/legocarbuildanimpresenter.h new file mode 100644 index 00000000..b270243e --- /dev/null +++ b/LEGO1/legocarbuildanimpresenter.h @@ -0,0 +1,28 @@ +#ifndef LEGOCARBUILDANIMPRESENTER_H +#define LEGOCARBUILDANIMPRESENTER_H + +#include "legoanimpresenter.h" + +// VTABLE 0x100d99e0 +// SIZE 0x150 +class LegoCarBuildAnimPresenter : public LegoAnimPresenter +{ +public: + LegoCarBuildAnimPresenter(); + virtual ~LegoCarBuildAnimPresenter() override; // vtable+0x0 + + // OFFSET: LEGO1 0x10078510 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f05ec + return "LegoCarBuildAnimPresenter"; + } + + // OFFSET: LEGO1 0x10078520 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoCarBuildAnimPresenter::ClassName()) || LegoAnimPresenter::IsA(name); + } +}; + +#endif // LEGOCARBUILDANIMPRESENTER_H diff --git a/LEGO1/legocarraceactor.h b/LEGO1/legocarraceactor.h new file mode 100644 index 00000000..36ba3ab1 --- /dev/null +++ b/LEGO1/legocarraceactor.h @@ -0,0 +1,24 @@ +#ifndef LEGOCARRACEACTOR_H +#define LEGOCARRACEACTOR_H + +#include "legoraceactor.h" + +// VTABLE 0x100da0d8 +class LegoCarRaceActor : public LegoRaceActor +{ +public: + // OFFSET: LEGO1 0x10081650 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0568 + return "LegoCarRaceActor"; + } + + // OFFSET: LEGO1 0x10081670 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(name); + } +}; + +#endif // LEGOCARRACEACTOR_H diff --git a/LEGO1/legocontrolmanager.cpp b/LEGO1/legocontrolmanager.cpp new file mode 100644 index 00000000..0959df9c --- /dev/null +++ b/LEGO1/legocontrolmanager.cpp @@ -0,0 +1,21 @@ +#include "legocontrolmanager.h" + +// OFFSET: LEGO1 0x10028520 STUB +LegoControlManager::LegoControlManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x10028d60 STUB +LegoControlManager::~LegoControlManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x10029600 STUB +long LegoControlManager::Tickle() +{ + // TODO + + return 0; +} diff --git a/LEGO1/legocontrolmanager.h b/LEGO1/legocontrolmanager.h new file mode 100644 index 00000000..d3e183fd --- /dev/null +++ b/LEGO1/legocontrolmanager.h @@ -0,0 +1,30 @@ +#ifndef LEGOCONTROLMANAGER_H +#define LEGOCONTROLMANAGER_H + +#include "mxcore.h" + +// VTABLE 0x100d6a80 +class LegoControlManager : public MxCore +{ +public: + LegoControlManager(); + virtual ~LegoControlManager() override; // vtable+0x0 + + virtual long Tickle() override; // vtable+0x8 + + // OFFSET: LEGO1 0x10028cb0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f31b8 + return "LegoControlManager"; + } + + // OFFSET: LEGO1 0x10028cc0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoControlManager::ClassName()) || MxCore::IsA(name); + } + +}; + +#endif // LEGOCONTROLMANAGER_H diff --git a/LEGO1/legoentity.cpp b/LEGO1/legoentity.cpp new file mode 100644 index 00000000..fe500cb7 --- /dev/null +++ b/LEGO1/legoentity.cpp @@ -0,0 +1,21 @@ +#include "legoentity.h" + +// OFFSET: LEGO1 0x1000c290 +LegoEntity::~LegoEntity() +{ + Destroy(); +} + +// OFFSET: LEGO1 0x100114f0 STUB +long LegoEntity::Notify(MxParam &p) +{ + // TODO + + return 0; +} + +// OFFSET: LEGO1 0x10010810 STUB +void LegoEntity::Destroy() +{ + // TODO +} diff --git a/LEGO1/legoentity.h b/LEGO1/legoentity.h index b64f55a2..774b19f2 100644 --- a/LEGO1/legoentity.h +++ b/LEGO1/legoentity.h @@ -1,10 +1,37 @@ #ifndef LEGOENTITY_H #define LEGOENTITY_H -class LegoEntity +#include "mxentity.h" + +// VTABLE 0x100d4858 +class LegoEntity : public MxEntity { public: - __declspec(dllexport) virtual ~LegoEntity(); + // Inlined at 0x100853f7 + inline LegoEntity() + { + // TODO + } + + __declspec(dllexport) virtual ~LegoEntity() override; // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x4 + + // OFFSET: LEGO1 0x1000c2f0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f0064 + return "LegoEntity"; + } + + // OFFSET: LEGO1 0x1000c300 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoEntity::ClassName()) || MxEntity::IsA(name); + } + + virtual void Destroy() override; // vtable+0x1c + }; #endif // LEGOENTITY_H diff --git a/LEGO1/legoentitypresenter.cpp b/LEGO1/legoentitypresenter.cpp new file mode 100644 index 00000000..e763b771 --- /dev/null +++ b/LEGO1/legoentitypresenter.cpp @@ -0,0 +1,19 @@ +#include "legoentitypresenter.h" + +// OFFSET: LEGO1 0x10053440 +LegoEntityPresenter::LegoEntityPresenter() +{ + Init(); +} + +// OFFSET: LEGO1 0x100535d0 STUB +LegoEntityPresenter::~LegoEntityPresenter() +{ + // TODO +} + +// OFFSET: LEG01 0x100535c0 STUB +void LegoEntityPresenter::Init() +{ + // TODO +} diff --git a/LEGO1/legoentitypresenter.h b/LEGO1/legoentitypresenter.h new file mode 100644 index 00000000..e2e82abc --- /dev/null +++ b/LEGO1/legoentitypresenter.h @@ -0,0 +1,32 @@ +#ifndef LEGOENTITYPRESENTER_H +#define LEGOENTITYPRESENTER_H + +#include "mxcompositepresenter.h" + +// VTABLE 0x100d8398 +class LegoEntityPresenter : public MxCompositePresenter +{ +public: + LegoEntityPresenter(); + virtual ~LegoEntityPresenter() override; // vtable+0x0 + + // OFFSET: LEGO1 0x100534b0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f06b8 + return "LegoEntityPresenter"; + } + + // OFFSET: LEGO1 0x100534c0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoEntityPresenter::ClassName()) || MxCompositePresenter::IsA(name); + } + +private: + void Init(); + +}; + + +#endif // LEGOENTITYPRESENTER_H diff --git a/LEGO1/legoextraactor.h b/LEGO1/legoextraactor.h new file mode 100644 index 00000000..5b7f216f --- /dev/null +++ b/LEGO1/legoextraactor.h @@ -0,0 +1,24 @@ +#ifndef LEGOEXTRAACTOR_H +#define LEGOEXTRAACTOR_H + +#include "legoanimactor.h" + +// VTABLE 0x100d6c10 +class LegoExtraActor : public LegoAnimActor +{ +public: + // OFFSET: LEGO1 0x1002b7a0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f3204 + return "LegoExtraActor"; + } + + // OFFSET: LEGO1 0x1002b7c0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoExtraActor::ClassName()) || LegoAnimActor::IsA(name); + } +}; + +#endif // LEGOEXTRAACTOR_H diff --git a/LEGO1/legoflctexturepresenter.cpp b/LEGO1/legoflctexturepresenter.cpp new file mode 100644 index 00000000..d7a97d21 --- /dev/null +++ b/LEGO1/legoflctexturepresenter.cpp @@ -0,0 +1,7 @@ +#include "legoflctexturepresenter.h" + +// OFFSET: LEGO1 0x1005de80 STUB +LegoFlcTexturePresenter::LegoFlcTexturePresenter() +{ + // TODO +} \ No newline at end of file diff --git a/LEGO1/legoflctexturepresenter.h b/LEGO1/legoflctexturepresenter.h new file mode 100644 index 00000000..e525b3ce --- /dev/null +++ b/LEGO1/legoflctexturepresenter.h @@ -0,0 +1,22 @@ +#ifndef LEGOFLCTEXTUREPRESENTER_H +#define LEGOFLCTEXTUREPRESENTER_H + +#include "mxflcpresenter.h" + +// VTABLE 0x100d89e0 +// SIZE 0x70 +class LegoFlcTexturePresenter : public MxFlcPresenter +{ +public: + LegoFlcTexturePresenter(); + + // OFFSET: LEGO1 0x1005def0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f0634 + return "LegoFlcTexturePresenter"; + } + +}; + +#endif // LEGOFLCTEXTUREPRESENTER_H diff --git a/LEGO1/legohideanimpresenter.cpp b/LEGO1/legohideanimpresenter.cpp new file mode 100644 index 00000000..8a9e7c9b --- /dev/null +++ b/LEGO1/legohideanimpresenter.cpp @@ -0,0 +1,12 @@ +#include "legohideanimpresenter.h" + +// OFFSET: LEGO1 0x1006d7e0 +LegoHideAnimPresenter::LegoHideAnimPresenter() +{ + Init(); +} + +// OFFSET: LEGO1 0x1006da50 STUB +void LegoHideAnimPresenter::Init() +{ +} diff --git a/LEGO1/legohideanimpresenter.h b/LEGO1/legohideanimpresenter.h new file mode 100644 index 00000000..abc63d78 --- /dev/null +++ b/LEGO1/legohideanimpresenter.h @@ -0,0 +1,31 @@ +#ifndef LEGOHIDEANIMPRESENTER_H +#define LEGOHIDEANIMPRESENTER_H + +#include "legoloopinganimpresenter.h" + +// VTABLE 0x100d9278 +// SIZE 0xc4 +class LegoHideAnimPresenter : public LegoLoopingAnimPresenter +{ +public: + LegoHideAnimPresenter(); + + // OFFSET: LEGO1 0x1006d880 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f06cc + return "LegoHideAnimPresenter"; + } + + // OFFSET: LEGO1 0x1006d890 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, ClassName()) || LegoAnimPresenter::IsA(name); + } + +private: + void Init(); + +}; + +#endif // LEGOHIDEANIMPRESENTER_H diff --git a/LEGO1/legoinc.h b/LEGO1/legoinc.h deleted file mode 100644 index d1377c23..00000000 --- a/LEGO1/legoinc.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef LEGOINC_H -#define LEGOINC_H - -// It is recommended to include this over directly because this way -// we can undef stuff that might cause issues with our code. - -#include -#undef GetClassName - -#endif // LEGOINC_H diff --git a/LEGO1/legoinputmanager.cpp b/LEGO1/legoinputmanager.cpp index 395b211c..fe6648ee 100644 --- a/LEGO1/legoinputmanager.cpp +++ b/LEGO1/legoinputmanager.cpp @@ -1,7 +1,28 @@ #include "legoinputmanager.h" -void LegoInputManager::QueueEvent(NotificationId id, unsigned char p2, long p3, long p4, unsigned char p5) +// OFFSET: LEGO1 0x1005b790 STUB +LegoInputManager::LegoInputManager() { - // FIXME: Stub + // TODO +} + +// OFFSET: LEGO1 0x1005b8f0 STUB +LegoInputManager::~LegoInputManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x1005b8b0 STUB +long LegoInputManager::Tickle() +{ + // TODO + + return 0; +} + +// OFFSET: LEGO1 0x1005C740 STUB +void LegoInputManager::QueueEvent(NotificationId id, unsigned char p2, long p3, long p4, unsigned char p5) +{ + // TODO } diff --git a/LEGO1/legoinputmanager.h b/LEGO1/legoinputmanager.h index bc5cc4d3..caafed52 100644 --- a/LEGO1/legoinputmanager.h +++ b/LEGO1/legoinputmanager.h @@ -13,13 +13,20 @@ __declspec(dllexport) enum NotificationId TIMER = 15 }; +// VTABLE 0x100d8760 +// SIZE 0x338 class LegoInputManager { public: + LegoInputManager(); + virtual ~LegoInputManager() override; + __declspec(dllexport) void QueueEvent(NotificationId id, unsigned char p2, long p3, long p4, unsigned char p5); __declspec(dllexport) void Register(MxCore *); __declspec(dllexport) void UnRegister(MxCore *); + virtual long Tickle() override; // vtable+0x8 + char m_pad00[0x19C]; int m_joystickIndex; char m_pad200[0x194]; diff --git a/LEGO1/legojetski.cpp b/LEGO1/legojetski.cpp new file mode 100644 index 00000000..d0fffd85 --- /dev/null +++ b/LEGO1/legojetski.cpp @@ -0,0 +1 @@ +#include "legojetski.h" diff --git a/LEGO1/legojetski.h b/LEGO1/legojetski.h new file mode 100644 index 00000000..759e83ac --- /dev/null +++ b/LEGO1/legojetski.h @@ -0,0 +1,26 @@ +#ifndef LEGOJETSKI_H +#define LEGOJETSKI_H + +#include "legojetskiraceactor.h" + +// VTABLE 0x100d5a40 +class LegoJetski : public LegoJetskiRaceActor +{ +public: + // OFFSET: LEGO1 0x10013e80 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f053c + return "LegoJetski"; + } + + // OFFSET: LEGO1 0x10013ea0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoJetski::ClassName()) || LegoJetskiRaceActor::IsA(name); + } + +}; + + +#endif // LEGOJETSKI_H diff --git a/LEGO1/legojetskiraceactor.h b/LEGO1/legojetskiraceactor.h new file mode 100644 index 00000000..7c31f3b2 --- /dev/null +++ b/LEGO1/legojetskiraceactor.h @@ -0,0 +1,24 @@ +#ifndef LEGOJETSKIRACEACTOR_H +#define LEGOJETSKIRACEACTOR_H + +#include "legocarraceactor.h" + +// VTABLE 0x100da240 +class LegoJetskiRaceActor : public LegoCarRaceActor +{ +public: + // OFFSET: LEGO1 0x10081d80 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f0554 + return "LegoJetskiRaceActor"; + } + + // OFFSET: LEGO1 0x10081da0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoJetskiRaceActor::ClassName()) || LegoCarRaceActor::IsA(name); + } +}; + +#endif // LEGOJETSKIRACEACTOR_H diff --git a/LEGO1/legoloadcachesoundpresenter.cpp b/LEGO1/legoloadcachesoundpresenter.cpp new file mode 100644 index 00000000..0830d7d7 --- /dev/null +++ b/LEGO1/legoloadcachesoundpresenter.cpp @@ -0,0 +1,19 @@ +#include "legoloadcachesoundpresenter.h" + +// OFFSET: LEGO1 0x10018340 +LegoLoadCacheSoundPresenter::LegoLoadCacheSoundPresenter() +{ + Init(); +} + +// OFFSET: LEGO1 0x10018480 STUB +LegoLoadCacheSoundPresenter::~LegoLoadCacheSoundPresenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x100184e0 STUB +void LegoLoadCacheSoundPresenter::Init() +{ + // TODO +} diff --git a/LEGO1/legoloadcachesoundpresenter.h b/LEGO1/legoloadcachesoundpresenter.h new file mode 100644 index 00000000..0673568e --- /dev/null +++ b/LEGO1/legoloadcachesoundpresenter.h @@ -0,0 +1,26 @@ +#ifndef LEGOLOADCACHESOUNDPRESENTER_H +#define LEGOLOADCACHESOUNDPRESENTER_H + +#include "mxwavepresenter.h" + +// VTABLE 0x100d5fa8 +// SIZE 0x90 +class LegoLoadCacheSoundPresenter : public MxWavePresenter +{ +public: + LegoLoadCacheSoundPresenter(); + virtual ~LegoLoadCacheSoundPresenter() override; + + // OFFSET: LEGO1 0x10018450 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f05a0 + return "LegoLoadCacheSoundPresenter"; + } + +private: + void Init(); + +}; + +#endif // LEGOLOADCACHESOUNDPRESENTER_H diff --git a/LEGO1/legolocomotionanimpresenter.cpp b/LEGO1/legolocomotionanimpresenter.cpp new file mode 100644 index 00000000..f7da593f --- /dev/null +++ b/LEGO1/legolocomotionanimpresenter.cpp @@ -0,0 +1,13 @@ +#include "legolocomotionanimpresenter.h" + +// OFFSET: LEGO1 0x1006cdd0 +LegoLocomotionAnimPresenter::LegoLocomotionAnimPresenter() +{ + Init(); +} + +// OFFSET: LEGO1 0x1006d0b0 STUB +void LegoLocomotionAnimPresenter::Init() +{ + // TODO +} diff --git a/LEGO1/legolocomotionanimpresenter.h b/LEGO1/legolocomotionanimpresenter.h new file mode 100644 index 00000000..89a3039c --- /dev/null +++ b/LEGO1/legolocomotionanimpresenter.h @@ -0,0 +1,30 @@ +#ifndef LEGOLOCOMOTIONANIMPRESENTER_H +#define LEGOLOCOMOTIONANIMPRESENTER_H + +#include "legoloopinganimpresenter.h" + +// VTABLE 0x100d9170 +class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter +{ +public: + LegoLocomotionAnimPresenter(); + + // OFFSET: LEGO1 0x1006ce50 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f06e4 + return "LegoLocomotionAnimPresenter"; + } + + // OFFSET: LEGO1 0x1006ce60 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, ClassName()) || LegoLoopingAnimPresenter::IsA(name); + } + +private: + void Init(); + +}; + +#endif // LEGOLOCOMOTIONANIMPRESENTER_H diff --git a/LEGO1/legoloopinganimpresenter.h b/LEGO1/legoloopinganimpresenter.h new file mode 100644 index 00000000..672ff260 --- /dev/null +++ b/LEGO1/legoloopinganimpresenter.h @@ -0,0 +1,25 @@ +#ifndef LEGOLOOPINGANIMPRESENTER_H +#define LEGOLOOPINGANIMPRESENTER_H + +#include "legoanimpresenter.h" + +// VTABLE 0x100d4900 +// SIZE 0xc0 (discovered through inlined constructor at 0x10009ecd) +class LegoLoopingAnimPresenter : public LegoAnimPresenter +{ +public: + // OFFSET: LEGO1 0x1000c9a0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f0700 + return "LegoLoopingAnimPresenter"; + } + + // OFFSET: LEGO1 0x1000c9b0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, ClassName()) || LegoAnimPresenter::IsA(name); + } +}; + +#endif // LEGOLOOPINGANIMPRESENTER_H diff --git a/LEGO1/legomodelpresenter.h b/LEGO1/legomodelpresenter.h index a5c6306c..e5f0d136 100644 --- a/LEGO1/legomodelpresenter.h +++ b/LEGO1/legomodelpresenter.h @@ -1,10 +1,27 @@ #ifndef LEGOMODELPRESENTER_H #define LEGOMODELPRESENTER_H -class LegoModelPresenter +#include "mxvideopresenter.h" + +// VTABLE 0x100d4e50 +// SIZE 0x6c (discovered through inline constructor at 0x10009ae6) +class LegoModelPresenter : public MxVideoPresenter { public: __declspec(dllexport) static void configureLegoModelPresenter(int param_1); + + // OFFSET: LEGO1 0x1000ccb0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f067c + return "LegoModelPresenter"; + } + + // OFFSET: LEGO1 0x1000ccc0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoModelPresenter::ClassName()) || MxVideoPresenter::IsA(name); + } }; #endif // LEGOMODELPRESENTER_H diff --git a/LEGO1/legonavcontroller.cpp b/LEGO1/legonavcontroller.cpp index 6f032701..af618de9 100644 --- a/LEGO1/legonavcontroller.cpp +++ b/LEGO1/legonavcontroller.cpp @@ -26,7 +26,7 @@ float g_turnDecel = 50.0f; // 0x100f4c50 float g_turnSensitivity = 0.4f; // 0x100f4c54 -MxBool g_turnUseVelocity = MX_FALSE; +MxBool g_turnUseVelocity = FALSE; // OFFSET: LEGO1 0x10054d40 void LegoNavController::GetDefaults(int *p_mouseDeadzone, float *p_movementMaxSpeed, float *p_turnMaxSpeed, @@ -77,9 +77,9 @@ LegoNavController::LegoNavController() this->m_targetTurnSpeed = 0.0f; this->m_movementAccel = 0.0f; this->m_turnAccel = 0.0f; - this->m_trackDefault = MX_FALSE; - this->m_unk5D = MX_FALSE; - this->m_unk6C = MX_FALSE; + this->m_trackDefault = FALSE; + this->m_unk5D = FALSE; + this->m_unk6C = FALSE; this->m_unk64 = 0; this->m_unk68 = 0; this->m_unk60 = 0; @@ -100,22 +100,18 @@ LegoNavController::LegoNavController() // inputManager->UnRegister(this); // } -// TODO: VideoManager() // OFFSET: LEGO1 0x10054ca0 -// void LegoNavController::SetControlMax(int p_hMax, int p_vMax) -// { -// LegoVideoManager* videoManager = VideoManager(); +void LegoNavController::SetControlMax(int p_hMax, int p_vMax) +{ + this->m_hMax = p_hMax; + this->m_vMax = p_vMax; -// this->m_hMax = p_hMax; -// this->m_vMax = p_vMax; - -// Probably checks for MxVideoParamFlags: FULL_SCREEN -// if ((videoManager->m_unk44 & 0x01) != 0) -// { -// this->m_hMax = 640; -// this->m_vMax = 480; -// } -// } + if (VideoManager()->GetVideoParam().flags().GetFullScreen()) + { + this->m_hMax = 640; + this->m_vMax = 480; + } +} // OFFSET: LEGO1 0x10054cd0 void LegoNavController::ResetToDefault() @@ -137,12 +133,12 @@ void LegoNavController::ResetToDefault() // OFFSET: LEGO1 0x10054e40 void LegoNavController::SetTargets(int p_hPos, int p_vPos, MxBool p_accel) { - if (this->m_trackDefault != MX_FALSE) + if (this->m_trackDefault != FALSE) { ResetToDefault(); } - if (p_accel != MX_FALSE) + if (p_accel != FALSE) { this->m_targetTurnSpeed = CalculateNewTargetSpeed(p_hPos, this->m_hMax / 2, this->m_turnMaxSpeed); this->m_targetMovementSpeed = CalculateNewTargetSpeed(this->m_vMax - p_vPos, this->m_vMax / 2, this->m_movementMaxSpeed); @@ -188,4 +184,4 @@ float LegoNavController::CalculateNewAccel(int p_pos, int p_center, float p_maxA } return result; -} \ No newline at end of file +} diff --git a/LEGO1/legonavcontroller.h b/LEGO1/legonavcontroller.h index de762dfd..9bffd7dd 100644 --- a/LEGO1/legonavcontroller.h +++ b/LEGO1/legonavcontroller.h @@ -2,9 +2,11 @@ #define LEGONAVCONTROLLER_H #include "mxcore.h" -#include "mxbool.h" #include "mxtimer.h" +#include "mxtypes.h" +// VTABLE 0x100d85b8 +// SIZE 0x70 class LegoNavController : public MxCore { public: @@ -18,9 +20,22 @@ class LegoNavController : public MxCore float p_rotationSensitivity, MxBool p_turnUseVelocity); LegoNavController(); - // virtual ~LegoNavController(); + // virtual ~LegoNavController(); // vtable+0x0 - // void SetControlMax(int p_hMax, int p_vMax); + // OFFSET: LEGO1 0x10054b80 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f66d8 + return "LegoNavController"; + } + + // OFFSET: LEGO1 0x10054b90 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, ClassName()) || MxCore::IsA(name); + } + + void SetControlMax(int p_hMax, int p_vMax); void ResetToDefault(); void SetTargets(int p_hPos, int p_vPos, MxBool p_accel); float CalculateNewTargetSpeed(int p_pos, int p_center, float p_maxSpeed); diff --git a/LEGO1/legoomni.cpp b/LEGO1/legoomni.cpp index 1a74b66f..65df3cb4 100644 --- a/LEGO1/legoomni.cpp +++ b/LEGO1/legoomni.cpp @@ -15,13 +15,20 @@ LegoOmni::~LegoOmni() // OFFSET: LEGO1 0x1005ad10 LegoOmni *LegoOmni::GetInstance() { - return (LegoOmni *) m_instance; + return (LegoOmni *)MxOmni::GetInstance(); +} + +// OFFSET: LEGO1 0x1005ac90 +void LegoOmni::CreateInstance() +{ + MxOmni::DestroyInstance(); + MxOmni::SetInstance(new LegoOmni()); } // OFFSET: LEGO1 0x10015700 LegoOmni *Lego() { - return (LegoOmni *) MxOmni::GetInstance(); + return (LegoOmni *)MxOmni::GetInstance(); } // OFFSET: LEGO1 0x10015710 @@ -30,13 +37,30 @@ LegoSoundManager *SoundManager() return LegoOmni::GetInstance()->GetSoundManager(); } - // OFFSET: LEGO1 0x10015720 LegoVideoManager *VideoManager() { return LegoOmni::GetInstance()->GetVideoManager(); } +// OFFSET: LEGO1 0x100157f0 +LegoBuildingManager *BuildingManager() +{ + return LegoOmni::GetInstance()->GetLegoBuildingManager(); +} + +// OFFSET: LEGO1 0x10015790 +Isle *GetIsle() +{ + return LegoOmni::GetInstance()->GetIsle(); +} + +// OFFSET: LEGO1 0x100157e0 +LegoPlantManager *PlantManager() +{ + return LegoOmni::GetInstance()->GetLegoPlantManager(); +} + // OFFSET: LEGO1 0x10015730 MxBackgroundAudioManager *BackgroundAudioManager() { @@ -61,6 +85,13 @@ LegoNavController *NavController() return LegoOmni::GetInstance()->GetNavController(); } +// OFFSET: LEGO1 0x10015900 +MxTransitionManager *TransitionManager() +{ + return LegoOmni::GetInstance()->GetTransitionManager(); +} + + // OFFSET: LEGO1 0x1005b5f0 long LegoOmni::Notify(MxParam &p) { @@ -68,18 +99,6 @@ long LegoOmni::Notify(MxParam &p) return 0; } -// OFFSET: LEGO1 0x10058aa0 -const char *LegoOmni::GetClassName() const -{ - return "LegoOmni"; -} - -// OFFSET: LEGO1 0x10058ab0 -MxBool LegoOmni::IsClass(const char *name) const -{ - return strcmp("LegoOmni", name) == 0; -} - // OFFSET: LEGO1 0x10058bd0 void LegoOmni::Init() { @@ -111,7 +130,7 @@ void LegoOmni::vtable24(MxDSAction &ds) MxBool LegoOmni::vtable28(MxDSAction &ds) { // FIXME: Stub - return MX_TRUE; + return TRUE; } void LegoOmni::vtable2c() diff --git a/LEGO1/legoomni.h b/LEGO1/legoomni.h index 6234dd7b..05c1bfd0 100644 --- a/LEGO1/legoomni.h +++ b/LEGO1/legoomni.h @@ -14,9 +14,14 @@ #include "mxdsobject.h" #include "mxomni.h" #include "mxtransitionmanager.h" +#include "isle.h" +#include "legobuildingmanager.h" +#include "legoplantmanager.h" class LegoSoundManager; +// VTABLE 0x100d8638 +// SIZE: 0x140 class LegoOmni : public MxOmni { public: @@ -30,8 +35,20 @@ class LegoOmni : public MxOmni virtual ~LegoOmni(); // vtable+00 virtual long Notify(MxParam &p); // vtable+04 - virtual const char *GetClassName() const; // vtable+0c - virtual MxBool IsClass(const char *name) const; // vtable+10; + + // OFFSET: LEGO1 0x10058aa0 + inline virtual const char *ClassName() const // vtable+0c + { + // 0x100f671c + return "LegoOmni"; + } + + // OFFSET: LEGO1 0x10058ab0 + inline virtual MxBool IsA(const char *name) const // vtable+10 + { + return !strcmp(name, LegoOmni::ClassName()) || MxOmni::IsA(name); + } + virtual void Init(); // vtable+14 virtual MxResult Create(MxOmniCreateParam &p); // vtable+18 virtual void Destroy(); // vtable+1c @@ -49,8 +66,12 @@ class LegoOmni : public MxOmni LegoSoundManager *GetSoundManager() { return (LegoSoundManager *)m_soundManager;} MxBackgroundAudioManager *GetBackgroundAudioManager() { return m_bkgAudioManager; } LegoInputManager *GetInputManager() { return m_inputMgr; } + Isle *GetIsle() { return m_isle; } + LegoBuildingManager *GetLegoBuildingManager() { return m_buildingManager; } + LegoPlantManager *GetLegoPlantManager() { return m_plantManager; } LegoGameState *GetGameState() { return m_gameState; } LegoNavController *GetNavController() { return m_navController; } + MxTransitionManager *GetTransitionManager() { return m_transitionManager; } private: int m_unk68; @@ -58,36 +79,38 @@ class LegoOmni : public MxOmni LegoInputManager *m_inputMgr; // 0x70 char m_unk74[0x10]; LegoNavController *m_navController; // 0x84 - char m_unk88[0x14]; + Isle* m_isle; // 0x88 + char m_unk8c[0x4]; + LegoPlantManager* m_plantManager; // 0x90 + char m_unk94[0x4]; + LegoBuildingManager* m_buildingManager; // 0x98 LegoGameState *m_gameState; // 0x9c - char m_unka0[0x94]; + MxDSAction m_action; MxBackgroundAudioManager *m_bkgAudioManager; // 0x134 MxTransitionManager *m_transitionManager; // 0x138 + int m_unk13c; }; __declspec(dllexport) MxBackgroundAudioManager * BackgroundAudioManager(); __declspec(dllexport) MxDSObject * CreateStreamObject(MxDSFile *,short); -__declspec(dllexport) MxEventManager * EventManager(); __declspec(dllexport) LegoGameState * GameState(); __declspec(dllexport) const char * GetNoCD_SourceName(); __declspec(dllexport) LegoInputManager * InputManager(); __declspec(dllexport) LegoOmni * Lego(); -__declspec(dllexport) MxSoundManager * MSoundManager(); __declspec(dllexport) void MakeSourceName(char *, const char *); -__declspec(dllexport) MxMusicManager * MusicManager(); __declspec(dllexport) MxNotificationManager * NotificationManager(); __declspec(dllexport) LegoEntity * PickEntity(long,long); __declspec(dllexport) LegoROI * PickROI(long,long); __declspec(dllexport) void SetOmniUserMessage(void (*)(const char *,int)); __declspec(dllexport) LegoSoundManager * SoundManager(); __declspec(dllexport) long Start(MxDSAction *); -__declspec(dllexport) MxStreamer * Streamer(); -__declspec(dllexport) MxTickleManager * TickleManager(); __declspec(dllexport) MxTransitionManager * TransitionManager(); -__declspec(dllexport) MxVariableTable * VariableTable(); __declspec(dllexport) LegoVideoManager * VideoManager(); - __declspec(dllexport) long Start(MxDSAction *a); +LegoBuildingManager* BuildingManager(); +Isle* GetIsle(); +LegoPlantManager* PlantManager(); + #endif // LEGOOMNI_H diff --git a/LEGO1/legopalettepresenter.cpp b/LEGO1/legopalettepresenter.cpp new file mode 100644 index 00000000..07b9cb99 --- /dev/null +++ b/LEGO1/legopalettepresenter.cpp @@ -0,0 +1,19 @@ +#include "legopalettepresenter.h" + +// OFFSET: LEGO1 0x10079e50 +LegoPalettePresenter::LegoPalettePresenter() +{ + Init(); +} + +// OFFSET: LEGO1 0x1007a070 STUB +LegoPalettePresenter::~LegoPalettePresenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x1007a0d0 STUB +void LegoPalettePresenter::Init() +{ + // TODO +} diff --git a/LEGO1/legopalettepresenter.h b/LEGO1/legopalettepresenter.h new file mode 100644 index 00000000..d5fbefba --- /dev/null +++ b/LEGO1/legopalettepresenter.h @@ -0,0 +1,33 @@ +#ifndef LEGOPALETTEPRESENTER_H +#define LEGOPALETTEPRESENTER_H + +#include "mxvideopresenter.h" + +// VTABLE 0x100d9aa0 +// SIZE 0x68 +class LegoPalettePresenter : public MxVideoPresenter +{ +public: + LegoPalettePresenter(); + virtual ~LegoPalettePresenter(); // vtable+0x0 + + // OFFSET: LEGO1 0x10079f30 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f061c + return "LegoPalettePresenter"; + } + + // OFFSET: LEGO1 0x10079f40 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, ClassName()) || MxVideoPresenter::IsA(name); + } + +private: + void Init(); + +}; + + +#endif // LEGOPALETTEPRESENTER_H diff --git a/LEGO1/legopartpresenter.h b/LEGO1/legopartpresenter.h index 05e0df7e..6a9a91a5 100644 --- a/LEGO1/legopartpresenter.h +++ b/LEGO1/legopartpresenter.h @@ -1,9 +1,24 @@ #ifndef LEGOPARTPRESENTER_H #define LEGOPARTPRESENTER_H -class LegoPartPresenter +// VTABLE 0x100d4df0 +// SIZE 0x54 (from inlined construction at 0x10009fac) +class LegoPartPresenter : public MxMediaPresenter { public: + // OFFSET: LEGO1 0x1000cf70 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f05d8 + return "LegoPartPresenter"; + } + + // OFFSET: LEGO1 0x1000cf80 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoPartPresenter::ClassName()) || MxMediaPresenter::IsA(name); + } + __declspec(dllexport) static void configureLegoPartPresenter(int param_1, int param_2); }; diff --git a/LEGO1/legopathactor.cpp b/LEGO1/legopathactor.cpp new file mode 100644 index 00000000..336cdc13 --- /dev/null +++ b/LEGO1/legopathactor.cpp @@ -0,0 +1,13 @@ +#include "legopathactor.h" + +// OFFSET: LEGO1 0x1002d700 STUB +LegoPathActor::LegoPathActor() +{ + // TODO +} + +// OFFSET: LEGO1 0x1002d820 STUB +LegoPathActor::~LegoPathActor() +{ + // TODO +} diff --git a/LEGO1/legopathactor.h b/LEGO1/legopathactor.h new file mode 100644 index 00000000..e6f643c2 --- /dev/null +++ b/LEGO1/legopathactor.h @@ -0,0 +1,30 @@ +#ifndef LEGOPATHACTOR_H +#define LEGOPATHACTOR_H + +#include "legoactor.h" + +// VTABLE 0x100d6e28 +// SIZE 0x154 (from inlined construction at 0x1000a346) +class LegoPathActor : public LegoActor +{ +public: + LegoPathActor(); + + virtual ~LegoPathActor() override; + + // OFFSET: LEGO1 0x1000c430 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f0114 + return "LegoPathActor"; + } + + // OFFSET: LEGO1 0x1000c440 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoPathActor::ClassName()) || LegoActor::IsA(name); + } + +}; + +#endif // LEGOPATHACTOR_H diff --git a/LEGO1/legopathcontroller.cpp b/LEGO1/legopathcontroller.cpp new file mode 100644 index 00000000..46e23f5e --- /dev/null +++ b/LEGO1/legopathcontroller.cpp @@ -0,0 +1,20 @@ +#include "legopathcontroller.h" + +// OFFSET: LEGO1 0x10044f40 STUB +LegoPathController::LegoPathController() +{ + // TODO +} + +// OFFSET: LEGO1 0x10045740 STUB +LegoPathController::~LegoPathController() +{ + // TODO +} + +// OFFSET: LEGO1 0x10045c10 STUB +long LegoPathController::Tickle() +{ + // TODO + return 0; +} diff --git a/LEGO1/legopathcontroller.h b/LEGO1/legopathcontroller.h new file mode 100644 index 00000000..9686b2bd --- /dev/null +++ b/LEGO1/legopathcontroller.h @@ -0,0 +1,31 @@ +#ifndef LEGOPATHCONTROLLER_H +#define LEGOPATHCONTROLLER_H + +#include "mxcore.h" + +// VTABLE 0x100d7d60 +// SIZE 0x40 +class LegoPathController : public MxCore +{ +public: + LegoPathController(); + virtual ~LegoPathController() override; + + virtual long Tickle() override; // vtable+08 + + // OFFSET: LEGO1 0x10045110 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f11b8 + return "LegoPathController"; + } + + // OFFSET: LEGO1 0x10045120 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoPathController::ClassName()) || MxCore::IsA(name); + } + +}; + +#endif // LEGOPATHCONTROLLER_H diff --git a/LEGO1/legopathpresenter.cpp b/LEGO1/legopathpresenter.cpp new file mode 100644 index 00000000..43b05e26 --- /dev/null +++ b/LEGO1/legopathpresenter.cpp @@ -0,0 +1,7 @@ +#include "legopathpresenter.h" + +// OFFSET: LEGO1 0x100448d0 STUB +LegoPathPresenter::LegoPathPresenter() +{ + // TODO +} \ No newline at end of file diff --git a/LEGO1/legopathpresenter.h b/LEGO1/legopathpresenter.h new file mode 100644 index 00000000..225f4256 --- /dev/null +++ b/LEGO1/legopathpresenter.h @@ -0,0 +1,29 @@ +#ifndef LEGOPATHPRESENTER_H +#define LEGOPATHPRESENTER_H + +#include "mxmediapresenter.h" + +// VTABLE 0x100d7c10 +// SIZE 0x54 +class LegoPathPresenter : public MxMediaPresenter +{ +public: + LegoPathPresenter(); + + // OFFSET: LEGO1 0x100449a0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f0690 + return "LegoPathPresenter"; + } + + // OFFSET: LEGO1 0x100449b0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoPathPresenter::ClassName()) || MxMediaPresenter::IsA(name); + } + +}; + + +#endif // LEGOPATHPRESENTER_H diff --git a/LEGO1/legophonemepresenter.cpp b/LEGO1/legophonemepresenter.cpp new file mode 100644 index 00000000..43948fc7 --- /dev/null +++ b/LEGO1/legophonemepresenter.cpp @@ -0,0 +1,19 @@ +#include "legophonemepresenter.h" + +// OFFSET: LEGO1 0x1004e180 +LegoPhonemePresenter::LegoPhonemePresenter() +{ + Init(); +} + +// OFFSET: LEGO1 0x1004e3b0 STUB +void LegoPhonemePresenter::Init() +{ + // TODO +} + +// OFFSET: LEGO1 0x1004e340 STUB +LegoPhonemePresenter::~LegoPhonemePresenter() +{ + // TODO +} diff --git a/LEGO1/legophonemepresenter.h b/LEGO1/legophonemepresenter.h new file mode 100644 index 00000000..c2616448 --- /dev/null +++ b/LEGO1/legophonemepresenter.h @@ -0,0 +1,26 @@ +#ifndef LEGOPHONEMEPRESENTER_H +#define LEGOPHONEMEPRESENTER_H + +#include "mxflcpresenter.h" + +// VTABLE 0x100d8040 +// SIZE 0x88 +class LegoPhonemePresenter : public MxFlcPresenter +{ +public: + LegoPhonemePresenter(); + virtual ~LegoPhonemePresenter() override; // vtable+0x0 + + // OFFSET: LEGO1 0x1004e310 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f064c + return "LegoPhonemePresenter"; + } + +private: + void Init(); + +}; + +#endif // LEGOPHONEMEPRESENTER_H diff --git a/LEGO1/legoplantmanager.cpp b/LEGO1/legoplantmanager.cpp new file mode 100644 index 00000000..8f67b939 --- /dev/null +++ b/LEGO1/legoplantmanager.cpp @@ -0,0 +1,27 @@ +#include "legoplantmanager.h" + +// OFFSET: LEGO1 0x10026220 +LegoPlantManager::LegoPlantManager() +{ + Init(); +} + +// OFFSET: LEGO1 0x100262c0 STUB +LegoPlantManager::~LegoPlantManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x10026e00 STUB +long LegoPlantManager::Tickle() +{ + // TODO + + return 0; +} + +// OFFSET: LEGO1 0x10026330 STUB +void LegoPlantManager::Init() +{ + // TODO +} diff --git a/LEGO1/legoplantmanager.h b/LEGO1/legoplantmanager.h new file mode 100644 index 00000000..272fb451 --- /dev/null +++ b/LEGO1/legoplantmanager.h @@ -0,0 +1,28 @@ +#ifndef LEGOPLANTMANAGER_H +#define LEGOPLANTMANAGER_H + +#include "mxcore.h" + +// VTABLE 0x100d6758 +// SIZE 0x2c +class LegoPlantManager : public MxCore +{ +public: + LegoPlantManager(); + virtual ~LegoPlantManager() override; // vtable+0x0 + + virtual long Tickle() override; // vtable+0x8 + + // OFFSET: LEGO1 0x10026290 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f318c + return "LegoPlantManager"; + } + +private: + void Init(); + +}; + +#endif // LEGOPLANTMANAGER_H diff --git a/LEGO1/legorace.cpp b/LEGO1/legorace.cpp new file mode 100644 index 00000000..888b1fe1 --- /dev/null +++ b/LEGO1/legorace.cpp @@ -0,0 +1,21 @@ +#include "legorace.h" + +// OFFSET: LEGO1 0x10015aa0 STUB +LegoRace::LegoRace() +{ + // TODO +} + +// OFFSET: LEGO1 0x10015d40 STUB +LegoRace::~LegoRace() +{ + // TODO +} + +// OFFSET: LEGO1 0x10015e00 STUB +long LegoRace::Notify(MxParam &p) +{ + // TODO + + return 0; +} diff --git a/LEGO1/legorace.h b/LEGO1/legorace.h new file mode 100644 index 00000000..003e57ed --- /dev/null +++ b/LEGO1/legorace.h @@ -0,0 +1,29 @@ +#ifndef LEGORACE_H +#define LEGORACE_H + +#include "legoworld.h" + +// VTABLE 0x100d5db0 +class LegoRace : public LegoWorld +{ +public: + LegoRace(); + virtual ~LegoRace() override; // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x4 + + // OFFSET: LEGO1 0x10015ba0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f07c4 + return "LegoRace"; + } + + // OFFSET: LEGO1 0x10015bb0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoRace::ClassName()) || LegoWorld::IsA(name); + } +}; + +#endif // LEGORACE_H diff --git a/LEGO1/legoraceactor.h b/LEGO1/legoraceactor.h new file mode 100644 index 00000000..d7908063 --- /dev/null +++ b/LEGO1/legoraceactor.h @@ -0,0 +1,25 @@ +#ifndef LEGORACEACTOR_H +#define LEGORACEACTOR_H + +#include "legoanimactor.h" + +// VTABLE 0x100d5b88 +class LegoRaceActor : public LegoAnimActor +{ +public: + // OFFSET: LEGO1 0x10014af0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f0bf4 + return "LegoRaceActor"; + } + + // OFFSET: LEGO1 0x10014b10 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoRaceActor::ClassName()) || LegoAnimActor::IsA(name); + } +}; + + +#endif // LEGORACEACTOR_H diff --git a/LEGO1/legosoundmanager.cpp b/LEGO1/legosoundmanager.cpp new file mode 100644 index 00000000..518b8c55 --- /dev/null +++ b/LEGO1/legosoundmanager.cpp @@ -0,0 +1,20 @@ +#include "legosoundmanager.h" + +// OFFSET: LEGO1 0x100298a0 STUB +LegoSoundManager::LegoSoundManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x10029940 STUB +LegoSoundManager::~LegoSoundManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x1002a3a0 STUB +long LegoSoundManager::Tickle() +{ + // TODO + return 0; +} diff --git a/LEGO1/legosoundmanager.h b/LEGO1/legosoundmanager.h new file mode 100644 index 00000000..9b1e6450 --- /dev/null +++ b/LEGO1/legosoundmanager.h @@ -0,0 +1,20 @@ +#ifndef LEGOSOUNDMANAGER_H +#define LEGOSOUNDMANAGER_H + +#include "mxsoundmanager.h" + +// VTABLE 0x100d6b10 +// SIZE 0x44 +class LegoSoundManager : public MxSoundManager +{ +public: + LegoSoundManager(); + virtual ~LegoSoundManager() override; + virtual long Tickle() override; // vtable+08 + +private: + void Init(); + +}; + +#endif // LEGOSOUNDMANAGER_H diff --git a/LEGO1/legostate.cpp b/LEGO1/legostate.cpp new file mode 100644 index 00000000..2b49fcd7 --- /dev/null +++ b/LEGO1/legostate.cpp @@ -0,0 +1,6 @@ +#include "legostate.h" + +// OFFSET: LEGO1 0x10005f40 +LegoState::~LegoState() +{ +} diff --git a/LEGO1/legostate.h b/LEGO1/legostate.h new file mode 100644 index 00000000..be7289bc --- /dev/null +++ b/LEGO1/legostate.h @@ -0,0 +1,27 @@ +#ifndef LEGOSTATE_H +#define LEGOSTATE_H + +#include "mxcore.h" + +// VTABLE 0x100d46c0 +class LegoState : public MxCore +{ +public: + virtual ~LegoState() override; // vtable+0x00 + + // OFFSET: LEGO1 0x100060d0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f01b8 + return "LegoState"; + } + + // OFFSET: LEGO1 0x100060e0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoState::ClassName()) || MxCore::IsA(name); + } + +}; + +#endif // LEGOSTATE_H diff --git a/LEGO1/legotexturepresenter.cpp b/LEGO1/legotexturepresenter.cpp new file mode 100644 index 00000000..2336a724 --- /dev/null +++ b/LEGO1/legotexturepresenter.cpp @@ -0,0 +1,7 @@ +#include "legotexturepresenter.h" + +// OFFSET: LEGO1 0x1004eb40 STUB +LegoTexturePresenter::~LegoTexturePresenter() +{ + // TODO +} diff --git a/LEGO1/legotexturepresenter.h b/LEGO1/legotexturepresenter.h new file mode 100644 index 00000000..eabd4895 --- /dev/null +++ b/LEGO1/legotexturepresenter.h @@ -0,0 +1,28 @@ +#ifndef LEGOTEXTUREPRESENTER_H +#define LEGOTEXTUREPRESENTER_H + +#include "mxmediapresenter.h" + +// VTABLE 0x100d4d90 +// SIZE 0x54 (from inlined construction at 0x10009bb5) +class LegoTexturePresenter : public MxMediaPresenter +{ +public: + virtual ~LegoTexturePresenter() override; + + // OFFSET: LEGO1 0x1000ce50 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0664 + return "LegoTexturePresenter"; + } + + // OFFSET: LEGO1 0x1000ce60 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoTexturePresenter::ClassName()) || MxMediaPresenter::IsA(name); + } + +}; + +#endif // LEGOTEXTUREPRESENTER_H diff --git a/LEGO1/legoutil.h b/LEGO1/legoutil.h index 440b01d0..e94a6440 100644 --- a/LEGO1/legoutil.h +++ b/LEGO1/legoutil.h @@ -4,7 +4,7 @@ template inline T Abs(T p_t) { - return p_t < 0 ? -p_t : p_t; + return p_t < 0 ? -p_t : p_t; } -#endif // LEGOUTIL_H \ No newline at end of file +#endif // LEGOUTIL_H diff --git a/LEGO1/legovideomanager.cpp b/LEGO1/legovideomanager.cpp index 216bfcde..060cc61f 100644 --- a/LEGO1/legovideomanager.cpp +++ b/LEGO1/legovideomanager.cpp @@ -1,23 +1,39 @@ #include "legovideomanager.h" +// OFFSET: LEGO1 0x1007aa20 STUB +LegoVideoManager::LegoVideoManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x1007ab40 STUB +LegoVideoManager::~LegoVideoManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x1007c560 STUB int LegoVideoManager::EnableRMDevice() { - // FIXME: Stub + // TODO return 0; } +// OFFSET: LEGO1 0x1007c740 STUB int LegoVideoManager::DisableRMDevice() { - // FIXME: Stub + // TODO return 0; } +// OFFSET: LEGO1 0x1007c310 STUB void LegoVideoManager::EnableFullScreenMovie(unsigned char a, unsigned char b) { - // FIXME: Stub + // TODO } +// OFFSET: LEGO1 0x1007b6a0 STUB void LegoVideoManager::MoveCursor(int x, int y) { - // FIXME: Stub + // TODO } diff --git a/LEGO1/legovideomanager.h b/LEGO1/legovideomanager.h index a221504f..ec1aa6fd 100644 --- a/LEGO1/legovideomanager.h +++ b/LEGO1/legovideomanager.h @@ -1,12 +1,17 @@ #ifndef LEGOVIDEOMANAGER_H #define LEGOVIDEOMANAGER_H +#include "mxvideomanager.h" #include "lego3dmanager.h" -// class LegoVideoManager : public MxVideoManager -class LegoVideoManager +// VTABLE 0x100d9c88 +// SIZE 0x590 +class LegoVideoManager : public MxVideoManager { public: + LegoVideoManager(); + virtual ~LegoVideoManager() override; + __declspec(dllexport) int EnableRMDevice(); __declspec(dllexport) int DisableRMDevice(); __declspec(dllexport) void EnableFullScreenMovie(unsigned char a, unsigned char b); @@ -14,31 +19,6 @@ class LegoVideoManager inline Lego3DManager *Get3DManager() { return this->m_3dManager; } - int m_unk00; - int m_unk04; - int m_unk08; - int m_unk0c; - int m_unk10; - int m_unk14; - int m_unk18; - int m_unk1c; - int m_unk20; - int m_unk24; - int m_unk28; - int m_unk2c; - int m_unk30; - int m_unk34; - int m_unk38; - int m_unk3c; - int m_unk40; - int m_unk44; - int m_unk48; - int m_unk4c; - int m_unk50; - int m_unk54; - int m_unk58; - int m_unk5c; - int m_unk60; int m_unk64; Lego3DManager *m_3dManager; int m_unk6c; diff --git a/LEGO1/legoworld.cpp b/LEGO1/legoworld.cpp new file mode 100644 index 00000000..68009d43 --- /dev/null +++ b/LEGO1/legoworld.cpp @@ -0,0 +1,13 @@ +#include "legoworld.h" + +// OFFSET: LEGO1 0x1001ca40 STUB +LegoWorld::LegoWorld() +{ + // TODO +} + +// OFFSET: LEGO1 0x1001dfa0 STUB +LegoWorld::~LegoWorld() +{ + // TODO +} diff --git a/LEGO1/legoworld.h b/LEGO1/legoworld.h index b11f7095..d6170bfc 100644 --- a/LEGO1/legoworld.h +++ b/LEGO1/legoworld.h @@ -1,11 +1,28 @@ #ifndef LEGOWORLD_H #define LEGOWORLD_H -class LegoWorld +#include "legoentity.h" + +// VTABLE 0x100d6280 +// SIZE 0xf8 +class LegoWorld : public LegoEntity { public: __declspec(dllexport) LegoWorld(); - __declspec(dllexport) virtual ~LegoWorld(); + __declspec(dllexport) virtual ~LegoWorld(); // vtable+0x0 + + // OFFSET: LEGO1 0x1001d690 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0058 + return "LegoWorld"; + } + + // OFFSET: LEGO1 0x1001d6a0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoWorld::ClassName()) || LegoEntity::IsA(name); + } }; #endif // LEGOWORLD_H diff --git a/LEGO1/legoworldpresenter.cpp b/LEGO1/legoworldpresenter.cpp index ea3d647b..280d7a24 100644 --- a/LEGO1/legoworldpresenter.cpp +++ b/LEGO1/legoworldpresenter.cpp @@ -1,6 +1,19 @@ #include "legoworldpresenter.h" +// OFFSET: LEGO1 0x100665c0 STUB +LegoWorldPresenter::LegoWorldPresenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x10066770 STUB +LegoWorldPresenter::~LegoWorldPresenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x100665b0 STUB void LegoWorldPresenter::configureLegoWorldPresenter(int param_1) { - // FIXME: Stub + // TODO } diff --git a/LEGO1/legoworldpresenter.h b/LEGO1/legoworldpresenter.h index 006b4cf8..b7f39ddb 100644 --- a/LEGO1/legoworldpresenter.h +++ b/LEGO1/legoworldpresenter.h @@ -1,10 +1,31 @@ #ifndef LEGOWORLDPRESENTER_H #define LEGOWORLDPRESENTER_H -class LegoWorldPresenter +#include "legoentitypresenter.h" + +// VTABLE 0x100d8ee0 +// SIZE 0x54 +class LegoWorldPresenter : public LegoEntityPresenter { public: + LegoWorldPresenter(); + virtual ~LegoWorldPresenter() override; // vtable+0x0 + __declspec(dllexport) static void configureLegoWorldPresenter(int param_1); + + // OFFSET: LEGO1 0x10066630 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0608 + return "LegoWorldPresenter"; + } + + // OFFSET: LEGO1 0x10066640 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoWorldPresenter::ClassName()) || LegoEntityPresenter::IsA(name); + } + }; #endif // LEGOWORLDPRESENTER_H diff --git a/LEGO1/motorcycle.cpp b/LEGO1/motorcycle.cpp new file mode 100644 index 00000000..9b0e0e40 --- /dev/null +++ b/LEGO1/motorcycle.cpp @@ -0,0 +1,7 @@ +#include "motorcycle.h" + +// OFFSET: LEGO1 0x100357b0 STUB +Motorcycle::Motorcycle() +{ + // TODO +} diff --git a/LEGO1/motorcycle.h b/LEGO1/motorcycle.h new file mode 100644 index 00000000..5ba746a8 --- /dev/null +++ b/LEGO1/motorcycle.h @@ -0,0 +1,28 @@ +#ifndef MOTORCYCLE_H +#define MOTORCYCLE_H + +#include "islepathactor.h" + +// VTABLE 0x100d7090 +// SIZE 0x16c +class Motorcycle : public IslePathActor +{ +public: + Motorcycle(); + + // OFFSET: LEGO1 0x10035840 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10035840 + return "Motorcycle"; + } + + // OFFSET: LEGO1 0x10035850 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Motorcycle::ClassName()) || IslePathActor::IsA(name); + } + +}; + +#endif // MOTORCYCLE_H diff --git a/LEGO1/mxatomid.cpp b/LEGO1/mxatomid.cpp index f2171360..007e2de3 100644 --- a/LEGO1/mxatomid.cpp +++ b/LEGO1/mxatomid.cpp @@ -1,5 +1,11 @@ #include "mxatomid.h" +// OFFSET: LEGO1 0x100acf90 +MxAtomId::MxAtomId(const char *, LookupMode) +{ + // TODO +} + // OFFSET: LEGO1 0x100acfd0 MxAtomId::~MxAtomId() { @@ -11,4 +17,4 @@ MxAtomId &MxAtomId::operator=(const MxAtomId &id) { // TODO return *this; -} \ No newline at end of file +} diff --git a/LEGO1/mxatomid.h b/LEGO1/mxatomid.h index b28704c0..9a218a1b 100644 --- a/LEGO1/mxatomid.h +++ b/LEGO1/mxatomid.h @@ -15,7 +15,7 @@ class MxAtomId MxAtomId() { this->m_internal = 0; - }; + } private: char *m_internal; diff --git a/LEGO1/mxaudiopresenter.cpp b/LEGO1/mxaudiopresenter.cpp new file mode 100644 index 00000000..b15c2556 --- /dev/null +++ b/LEGO1/mxaudiopresenter.cpp @@ -0,0 +1 @@ +#include "mxaudiopresenter.h" diff --git a/LEGO1/mxaudiopresenter.h b/LEGO1/mxaudiopresenter.h new file mode 100644 index 00000000..b23eefe9 --- /dev/null +++ b/LEGO1/mxaudiopresenter.h @@ -0,0 +1,24 @@ +#ifndef MXAUDIOPRESENTER_H +#define MXAUDIOPRESENTER_H + +#include "mxmediapresenter.h" + +// VTABLE 0x100d4c70 +class MxAudioPresenter : public MxMediaPresenter +{ +public: + // OFFSET: LEGO1 0x1000d280 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f078c + return "MxAudioPresenter"; + } + + // OFFSET: LEGO1 0x1000d290 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxAudioPresenter::ClassName()) || MxMediaPresenter::IsA(name); + } +}; + +#endif // MXAUDIOPRESENTER_H diff --git a/LEGO1/mxautolocker.h b/LEGO1/mxautolocker.h index 16dcb907..35e32ff3 100644 --- a/LEGO1/mxautolocker.h +++ b/LEGO1/mxautolocker.h @@ -5,11 +5,11 @@ class MxAutoLocker { - public: - MxAutoLocker(MxCriticalSection* cs); - virtual ~MxAutoLocker(); - private: - MxCriticalSection* m_criticalSection; +public: + MxAutoLocker(MxCriticalSection* cs); + ~MxAutoLocker(); +private: + MxCriticalSection* m_criticalSection; }; #endif // MXAUTOLOCKER_H diff --git a/LEGO1/mxbackgroundaudiomanager.cpp b/LEGO1/mxbackgroundaudiomanager.cpp index 5d6a61d7..6f001303 100644 --- a/LEGO1/mxbackgroundaudiomanager.cpp +++ b/LEGO1/mxbackgroundaudiomanager.cpp @@ -1,6 +1,19 @@ #include "mxbackgroundaudiomanager.h" -void MxBackgroundAudioManager::Enable(unsigned char p) +// OFFSET: LEGO1 0x1007ea90 +MxBackgroundAudioManager::MxBackgroundAudioManager() { - // FIXME: Stub + // TODO +} + +// OFFSET: LEGO1 0x1007ec20 +MxBackgroundAudioManager::~MxBackgroundAudioManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x1007f5f0 +void MxBackgroundAudioManager::Enable(MxBool p) +{ + // TODO } diff --git a/LEGO1/mxbackgroundaudiomanager.h b/LEGO1/mxbackgroundaudiomanager.h index 765fc9c3..9a23a671 100644 --- a/LEGO1/mxbackgroundaudiomanager.h +++ b/LEGO1/mxbackgroundaudiomanager.h @@ -1,9 +1,29 @@ #ifndef MXBACKGROUNDAUDIOMANAGER_H #define MXBACKGROUNDAUDIOMANAGER_H -class MxBackgroundAudioManager +#include "mxcore.h" + +// VTABLE 0x100d9fe8 +// SIZE 0x150 +class MxBackgroundAudioManager : public MxCore { public: + MxBackgroundAudioManager(); + virtual ~MxBackgroundAudioManager() override; + + // OFFSET: LEGO1 0x1007eb70 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f7ac4 + return "MxBackgroundAudioManager"; + } + + // OFFSET: LEGO1 0x1007eb80 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxBackgroundAudioManager::ClassName()) || MxCore::IsA(name); + } + __declspec(dllexport) void Enable(unsigned char p); }; diff --git a/LEGO1/mxbool.h b/LEGO1/mxbool.h deleted file mode 100644 index 4b6e4a2d..00000000 --- a/LEGO1/mxbool.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef MXBOOL_H -#define MXBOOL_H - -typedef unsigned char MxBool; - -#define MX_TRUE 1 -#define MX_FALSE 0 - -#endif // MXBOOL_H diff --git a/LEGO1/mxcompositemediapresenter.cpp b/LEGO1/mxcompositemediapresenter.cpp new file mode 100644 index 00000000..581df06a --- /dev/null +++ b/LEGO1/mxcompositemediapresenter.cpp @@ -0,0 +1,7 @@ +#include "mxcompositemediapresenter.h" + +// OFFSET: LEGO1 0x10073ea0 STUB +MxCompositeMediaPresenter::MxCompositeMediaPresenter() +{ + // TODO +} \ No newline at end of file diff --git a/LEGO1/mxcompositemediapresenter.h b/LEGO1/mxcompositemediapresenter.h new file mode 100644 index 00000000..1f464f4d --- /dev/null +++ b/LEGO1/mxcompositemediapresenter.h @@ -0,0 +1,28 @@ +#ifndef MXCOMPOSITEMEDIAPRESENTER_H +#define MXCOMPOSITEMEDIAPRESENTER_H + +#include "mxcompositepresenter.h" + +// VTABLE 0x100dc618 +// SIZE 0x50 +class MxCompositeMediaPresenter : public MxCompositePresenter +{ +public: + MxCompositeMediaPresenter(); + + // OFFSET: LEGO1 0x10073f10 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f02d4 + return "MxCompositeMediaPresenter"; + } + + // OFFSET: LEGO1 0x10073f20 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxCompositeMediaPresenter::ClassName()) || MxCompositePresenter::IsA(name); + } + +}; + +#endif // MXCOMPOSITEMEDIAPRESENTER_H diff --git a/LEGO1/mxcompositepresenter.cpp b/LEGO1/mxcompositepresenter.cpp new file mode 100644 index 00000000..e42dbadb --- /dev/null +++ b/LEGO1/mxcompositepresenter.cpp @@ -0,0 +1,13 @@ +#include "mxcompositepresenter.h" + +// OFFSET: LEGO1 0x100b60b0 STUB +MxCompositePresenter::MxCompositePresenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x100b6390 STUB +MxCompositePresenter::~MxCompositePresenter() +{ + // TODO +} diff --git a/LEGO1/mxcompositepresenter.h b/LEGO1/mxcompositepresenter.h new file mode 100644 index 00000000..471f3087 --- /dev/null +++ b/LEGO1/mxcompositepresenter.h @@ -0,0 +1,29 @@ +#ifndef MXCOMPOSITEPRESENTER_H +#define MXCOMPOSITEPRESENTER_H + +#include "mxpresenter.h" + +// VTABLE 0x100dc618 +// SIZE 0x4c +class MxCompositePresenter : public MxPresenter +{ +public: + MxCompositePresenter(); + virtual ~MxCompositePresenter() override; // vtable+0x0 + + // OFFSET: LEGO1 0x100b6210 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0774 + return "MxCompositePresenter"; + } + + // OFFSET: LEGO1 0x100b6220 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxCompositePresenter::ClassName()) || MxPresenter::IsA(name); + } + +}; + +#endif // MXCOMPOSITEPRESENTER_H diff --git a/LEGO1/mxcontrolpresenter.cpp b/LEGO1/mxcontrolpresenter.cpp new file mode 100644 index 00000000..e9e10ef8 --- /dev/null +++ b/LEGO1/mxcontrolpresenter.cpp @@ -0,0 +1,7 @@ +#include "mxcontrolpresenter.h" + +// OFFSET: LEGO1 0x10043f50 STUB +MxControlPresenter::MxControlPresenter() +{ + // TODO +} \ No newline at end of file diff --git a/LEGO1/mxcontrolpresenter.h b/LEGO1/mxcontrolpresenter.h new file mode 100644 index 00000000..909a3502 --- /dev/null +++ b/LEGO1/mxcontrolpresenter.h @@ -0,0 +1,29 @@ +#ifndef MXCONTROLPRESENTER_H +#define MXCONTROLPRESENTER_H + +#include "mxcompositepresenter.h" + +// VTABLE 0x100d7b88 +// SIZE 0x5c +class MxControlPresenter : public MxCompositePresenter +{ +public: + MxControlPresenter(); + + // OFFSET: LEGO1 0x10044000 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0514 + return "MxControlPresenter"; + } + + // OFFSET: LEGO1 0x10044010 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxControlPresenter::ClassName()) || MxCompositePresenter::IsA(name); + } + +}; + + +#endif // MXCONTROLPRESENTER_H diff --git a/LEGO1/mxcore.cpp b/LEGO1/mxcore.cpp index 1187cdbe..aec24c00 100644 --- a/LEGO1/mxcore.cpp +++ b/LEGO1/mxcore.cpp @@ -1,7 +1,5 @@ #include "mxcore.h" -#include - // 0x1010141c unsigned int g_mxcoreCount = 0; @@ -27,16 +25,4 @@ long MxCore::Notify(MxParam &p) long MxCore::Tickle() { return 0; -} - -// OFFSET: LEGO1 0x100144c0 -const char *MxCore::GetClassName() const -{ - return "MxCore"; -} - -// OFFSET: LEGO1 0x100140d0 -MxBool MxCore::IsClass(const char *name) const -{ - return strcmp(name, "MxCore") == 0; -} +} \ No newline at end of file diff --git a/LEGO1/mxcore.h b/LEGO1/mxcore.h index 64e916a1..446ee91e 100644 --- a/LEGO1/mxcore.h +++ b/LEGO1/mxcore.h @@ -1,10 +1,14 @@ #ifndef MXCORE_H #define MXCORE_H -#include "mxbool.h" +#include + +#include "mxtypes.h" class MxParam; +// VTABLE 0x100dc0f8 +// SIZE 0x8 class MxCore { public: @@ -12,8 +16,19 @@ class MxCore __declspec(dllexport) virtual ~MxCore(); // vtable+00 __declspec(dllexport) virtual long Notify(MxParam &p); // vtable+04 virtual long Tickle(); // vtable+08 - virtual const char *GetClassName() const; // vtable+0c - virtual MxBool IsClass(const char *name) const; // vtable+10 + + // OFFSET: LEGO1 0x100144c0 + inline virtual const char *ClassName() const // vtable+0c + { + // 0x100f007c + return "MxCore"; + } + + // OFFSET: LEGO1 0x100140d0 + inline virtual MxBool IsA(const char *name) const // vtable+10 + { + return !strcmp(name, MxCore::ClassName()); + } private: unsigned int m_id; diff --git a/LEGO1/mxcriticalsection.h b/LEGO1/mxcriticalsection.h index 5b905741..81d96d37 100644 --- a/LEGO1/mxcriticalsection.h +++ b/LEGO1/mxcriticalsection.h @@ -1,7 +1,7 @@ #ifndef MXCRITICALSECTION_H #define MXCRITICALSECTION_H -#include "legoinc.h" +#include class MxCriticalSection { diff --git a/LEGO1/mxdiskstreamcontroller.cpp b/LEGO1/mxdiskstreamcontroller.cpp new file mode 100644 index 00000000..c178c0a5 --- /dev/null +++ b/LEGO1/mxdiskstreamcontroller.cpp @@ -0,0 +1,21 @@ +#include "mxdiskstreamcontroller.h" + +// OFFSET: LEGO1 0x100c7120 STUB +MxDiskStreamController::MxDiskStreamController() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c7530 STUB +MxDiskStreamController::~MxDiskStreamController() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c8640 STUB +long MxDiskStreamController::Tickle() +{ + // TODO + + return 0; +} diff --git a/LEGO1/mxdiskstreamcontroller.h b/LEGO1/mxdiskstreamcontroller.h new file mode 100644 index 00000000..773f6b85 --- /dev/null +++ b/LEGO1/mxdiskstreamcontroller.h @@ -0,0 +1,34 @@ +#ifndef MXDISKSTREAMCONTROLLER_H +#define MXDISKSTREAMCONTROLLER_H + +#include + +#include "mxstreamcontroller.h" +#include "mxtypes.h" + +// VTABLE 0x100dccb8 +// SIZE 0xc8 +class MxDiskStreamController : public MxStreamController +{ +public: + MxDiskStreamController(); + virtual ~MxDiskStreamController() override; + + virtual long Tickle() override; // vtable+0x8 + + // OFFSET: LEGO1 0x100c7360 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10102144 + return "MxDiskStreamController"; + } + + // OFFSET: LEGO1 0x100c7370 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDiskStreamController::ClassName()) || MxStreamController::IsA(name); + } + +}; + +#endif // MXDISKSTREAMCONTROLLER_H diff --git a/LEGO1/mxdiskstreamprovider.cpp b/LEGO1/mxdiskstreamprovider.cpp new file mode 100644 index 00000000..5e59efee --- /dev/null +++ b/LEGO1/mxdiskstreamprovider.cpp @@ -0,0 +1,13 @@ +#include "mxdiskstreamprovider.h" + +// OFFSET: LEGO1 0x100d0f70 +MxDiskStreamProvider::MxDiskStreamProvider() +{ + // TODO +} + +// OFFSET: LEGO1 0x100d1240 +MxDiskStreamProvider::~MxDiskStreamProvider() +{ + // TODO +} diff --git a/LEGO1/mxdiskstreamprovider.h b/LEGO1/mxdiskstreamprovider.h new file mode 100644 index 00000000..198b6062 --- /dev/null +++ b/LEGO1/mxdiskstreamprovider.h @@ -0,0 +1,28 @@ +#ifndef MXDISKSTREAMPROVIDER_H +#define MXDISKSTREAMPROVIDER_H + +#include "mxstreamprovider.h" + +// VTABLE 0x100dd138 +class MxDiskStreamProvider : public MxStreamProvider +{ +public: + MxDiskStreamProvider(); + + virtual ~MxDiskStreamProvider() override; + + // OFFSET: LEGO1 0x100d1160 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x1010287c + return "MxDiskStreamProvider"; + } + + // OFFSET: LEGO1 0x100d1170 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDiskStreamProvider::ClassName()) || MxStreamProvider::IsA(name); + } +}; + +#endif // MXDISKSTREAMPROVIDER_H diff --git a/LEGO1/mxdsaction.cpp b/LEGO1/mxdsaction.cpp index e5b4a8e2..a193ab21 100644 --- a/LEGO1/mxdsaction.cpp +++ b/LEGO1/mxdsaction.cpp @@ -1,11 +1,13 @@ #include "mxdsaction.h" +// OFFSET: LEGO1 0x100ad810 MxDSAction::MxDSAction() { - // FIXME: Stub + // TODO } +// OFFSET: LEGO1 0x100ada80 MxDSAction::~MxDSAction() { - // FIXME: Stub + // TODO } diff --git a/LEGO1/mxdsaction.h b/LEGO1/mxdsaction.h index 558cd035..e26d28a6 100644 --- a/LEGO1/mxdsaction.h +++ b/LEGO1/mxdsaction.h @@ -3,12 +3,27 @@ #include "mxdsobject.h" +// VTABLE 0x100dc098 +// SIZE 0x94 class MxDSAction : public MxDSObject { public: __declspec(dllexport) MxDSAction(); __declspec(dllexport) virtual ~MxDSAction(); + // OFFSET: LEGO1 0x100ad980 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x101013f4 + return "MxDSAction"; + } + + // OFFSET: LEGO1 0x100ad990 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSAction::ClassName()) || MxDSObject::IsA(name); + } + int m_unk2c; int m_unk30; int m_unk34; diff --git a/LEGO1/mxdsanim.cpp b/LEGO1/mxdsanim.cpp new file mode 100644 index 00000000..9a56d359 --- /dev/null +++ b/LEGO1/mxdsanim.cpp @@ -0,0 +1,13 @@ +#include "mxdsanim.h" + +// OFFSET: LEGO1 0x100c8ff0 +MxDSAnim::MxDSAnim() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c91a0 +MxDSAnim::~MxDSAnim() +{ + // TODO +} diff --git a/LEGO1/mxdsanim.h b/LEGO1/mxdsanim.h new file mode 100644 index 00000000..fdef0859 --- /dev/null +++ b/LEGO1/mxdsanim.h @@ -0,0 +1,29 @@ +#ifndef MXDSANIM_H +#define MXDSANIM_H + +#include "mxdsmediaaction.h" + +// VTABLE 0x100dcd88 +// SIZE 0xb8 +class MxDSAnim : public MxDSMediaAction +{ +public: + MxDSAnim(); + + virtual ~MxDSAnim() override; + + // OFFSET: LEGO1 0x100c9060 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x101025d8 + return "MxDSAnim"; + } + + // OFFSET: LEGO1 0x100c9070 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSAnim::ClassName()) || MxDSMediaAction::IsA(name); + } +}; + +#endif // MXDSANIM_H diff --git a/LEGO1/mxdschunk.cpp b/LEGO1/mxdschunk.cpp new file mode 100644 index 00000000..7ec8531c --- /dev/null +++ b/LEGO1/mxdschunk.cpp @@ -0,0 +1,13 @@ +#include "mxdschunk.h" + +// OFFSET: LEGO1 0x100be050 STUB +MxDSChunk::MxDSChunk() +{ + // TODO +} + +// OFFSET: LEGO1 0x100be170 STUB +MxDSChunk::~MxDSChunk() +{ + // TODO +} diff --git a/LEGO1/mxdschunk.h b/LEGO1/mxdschunk.h new file mode 100644 index 00000000..8758ffa3 --- /dev/null +++ b/LEGO1/mxdschunk.h @@ -0,0 +1,26 @@ +#ifndef MXDSCHUNK_H +#define MXDSCHUNK_H + +#include "mxcore.h" + +class MxDSChunk : public MxCore +{ +public: + MxDSChunk(); + virtual ~MxDSChunk() override; + + // OFFSET: LEGO1 0x100be0c0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10101e6c + return "MxDSChunk"; + } + + // OFFSET: LEGO1 0x100be0d0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSChunk::ClassName()) || MxCore::IsA(name); + } +}; + +#endif // MXDSCHUNK_H diff --git a/LEGO1/mxdsevent.cpp b/LEGO1/mxdsevent.cpp new file mode 100644 index 00000000..a45ec93a --- /dev/null +++ b/LEGO1/mxdsevent.cpp @@ -0,0 +1,13 @@ +#include "mxdsevent.h" + +// OFFSET: LEGO1 0x100c95f0 STUB +MxDSEvent::MxDSEvent() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c97a0 STUB +MxDSEvent::~MxDSEvent() +{ + // TODO +} diff --git a/LEGO1/mxdsevent.h b/LEGO1/mxdsevent.h new file mode 100644 index 00000000..59a00bb5 --- /dev/null +++ b/LEGO1/mxdsevent.h @@ -0,0 +1,26 @@ +#ifndef MXDSEVENT_H +#define MXDSEVENT_H + +#include "mxdsmediaaction.h" + +class MxDSEvent : public MxDSMediaAction +{ +public: + MxDSEvent(); + virtual ~MxDSEvent() override; + + // OFFSET: LEGO1 0x100c9660 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x101025f0 + return "MxDSEvent"; + } + + // OFFSET: LEGO1 0x100c9670 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSEvent::ClassName()) || MxDSMediaAction::IsA(name); + } +}; + +#endif // MXDSEVENT_H diff --git a/LEGO1/mxdsfile.cpp b/LEGO1/mxdsfile.cpp index 27d6668d..327fab46 100644 --- a/LEGO1/mxdsfile.cpp +++ b/LEGO1/mxdsfile.cpp @@ -1,6 +1,130 @@ #include "mxdsfile.h" +#include + +#define SI_MAJOR_VERSION 2 +#define SI_MINOR_VERSION 2 + +#define FOURCC(a, b, c, d) (((a) << 0) | ((b) << 8) | ((c) << 16) | ((d) << 24)) + +// OFFSET: LEGO1 0x100cc4b0 +MxDSFile::MxDSFile(const char *filename, unsigned long skipReadingChunks) +{ + m_filename = filename; + m_skipReadingChunks = skipReadingChunks; +} + +// OFFSET: LEGO1 0x100bfed0 +MxDSFile::~MxDSFile() +{ + Close(); +} + +// OFFSET: LEGO1 0x100cc590 +long MxDSFile::Open(unsigned long uStyle) +{ + // No idea what's stopping this one matching, but I'm pretty + // confident it has the correct behavior. + long longResult = 1; + memset(&m_io, 0, sizeof(MXIOINFO)); + + if (m_io.Open(m_filename.GetData(), uStyle) != 0) { + return -1; + } + + m_io.SetBuffer(NULL, 0, 0); + m_position = 0; + + if (m_skipReadingChunks == 0) { + longResult = ReadChunks(); + } + + if (longResult != 0) { + Close(); // vtable + 0x18 + } + else { + Seek(0, 0); // vtable + 0x24 + } + + return longResult; +} + +// OFFSET: LEGO1 0x100cc780 +long MxDSFile::Read(unsigned char *pch, unsigned long cch) +{ + if (m_io.Read((char*)pch, cch) != cch) + return -1; + + m_position += cch; + return 0; +} + +// OFFSET: LEGO1 0x100cc620 +long MxDSFile::ReadChunks() +{ + _MMCKINFO topChunk; + _MMCKINFO childChunk; + char tempBuffer[80]; + + topChunk.fccType = FOURCC('O', 'M', 'N', 'I'); + if (m_io.Descend(&topChunk, NULL, MMIO_FINDRIFF) != 0) { + return -1; + } + childChunk.ckid = FOURCC('M', 'x', 'H', 'd'); + if (m_io.Descend(&childChunk, &topChunk, 0) != 0) { + return -1; + } + + m_io.Read((char*)&m_header, 0xc); + if ((m_header.majorVersion == SI_MAJOR_VERSION) && (m_header.minorVersion == SI_MINOR_VERSION)) + { + childChunk.ckid = FOURCC('M', 'x', 'O', 'f'); + if (m_io.Descend(&childChunk, &topChunk, 0) != 0) { + return -1; + } + unsigned long* pLengthInDWords = &m_lengthInDWords; + m_io.Read((char *)pLengthInDWords, 4); + m_pBuffer = malloc(*pLengthInDWords * 4); + m_io.Read((char*)m_pBuffer, *pLengthInDWords * 4); + return 0; + } + else + { + sprintf(tempBuffer, "Wrong SI file version. %d.%d expected.", SI_MAJOR_VERSION, SI_MINOR_VERSION); + MessageBoxA(NULL, tempBuffer, NULL, MB_ICONERROR); + return -1; + } +} + +// OFFSET: LEGO1 0x100cc7b0 +long MxDSFile::Seek(long lOffset, int iOrigin) +{ + return (m_position = m_io.Seek(lOffset, iOrigin)) == -1 ? -1 : 0; +} + +// OFFSET: LEGO1 0x100cc7e0 unsigned long MxDSFile::GetBufferSize() { - return this->m_buffersize; + return m_header.bufferSize; +} + +// OFFSET: LEGO1 0x100cc7f0 +unsigned long MxDSFile::GetStreamBuffersNum() +{ + return m_header.streamBuffersNum; +} + +// OFFSET: LEGO1 0x100cc740 +long MxDSFile::Close() +{ + m_io.Close(0); + m_position = -1; + memset(&m_header, 0, sizeof(m_header)); + if (m_lengthInDWords != 0) + { + m_lengthInDWords = 0; + free(m_pBuffer); + m_pBuffer = NULL; + } + return 0; } diff --git a/LEGO1/mxdsfile.h b/LEGO1/mxdsfile.h index d28928dc..8e136984 100644 --- a/LEGO1/mxdsfile.h +++ b/LEGO1/mxdsfile.h @@ -1,20 +1,60 @@ #ifndef MXDSFILE_H #define MXDSFILE_H -class MxDSFile +#include "mxdssource.h" +#include "mxioinfo.h" +#include "mxstring.h" + +// VTABLE 0x100dc890 +class MxDSFile : public MxDSSource { public: - __declspec(dllexport) MxDSFile(const char *,unsigned long); - __declspec(dllexport) virtual ~MxDSFile(); - __declspec(dllexport) virtual long Close(); - __declspec(dllexport) virtual unsigned long GetBufferSize(); - __declspec(dllexport) virtual unsigned long GetStreamBuffersNum(); - __declspec(dllexport) virtual long Open(unsigned long); - __declspec(dllexport) virtual long Read(unsigned char *,unsigned long); - __declspec(dllexport) virtual long Seek(long,int); + __declspec(dllexport) MxDSFile(const char *filename, unsigned long skipReadingChunks); + __declspec(dllexport) virtual ~MxDSFile(); // vtable+0x0 + + // OFFSET: LEGO1 0x100c0120 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10102594 + return "MxDSFile"; + } + + // OFFSET: LEGO1 0x100c0130 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSFile::ClassName()) || MxDSSource::IsA(name); + } + + __declspec(dllexport) virtual long Open(unsigned long); // vtable+0x14 + __declspec(dllexport) virtual long Close(); // vtable+0x18 + __declspec(dllexport) virtual long Read(unsigned char *,unsigned long); // vtable+0x20 + __declspec(dllexport) virtual long Seek(long,int); // vtable+0x24 + __declspec(dllexport) virtual unsigned long GetBufferSize(); // vtable+0x28 + __declspec(dllexport) virtual unsigned long GetStreamBuffersNum(); // vtable+0x2c private: - char m_unknown[0x70]; - unsigned long m_buffersize; + long ReadChunks(); + struct ChunkHeader { + ChunkHeader() + : majorVersion(0) + , minorVersion(0) + , bufferSize(0) + , streamBuffersNum(0) + {} + + unsigned short majorVersion; + unsigned short minorVersion; + unsigned long bufferSize; + short streamBuffersNum; + short reserved; + }; + + MxString m_filename; + MXIOINFO m_io; + ChunkHeader m_header; + + // If false, read chunks immediately on open, otherwise + // skip reading chunks until ReadChunks is explicitly called. + unsigned long m_skipReadingChunks; }; #endif // MXDSFILE_H diff --git a/LEGO1/mxdsmediaaction.cpp b/LEGO1/mxdsmediaaction.cpp new file mode 100644 index 00000000..9587b152 --- /dev/null +++ b/LEGO1/mxdsmediaaction.cpp @@ -0,0 +1,13 @@ +#include "mxdsmediaaction.h" + +// OFFSET: LEGO1 0x100c8b40 +MxDSMediaAction::MxDSMediaAction() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c8cf0 +MxDSMediaAction::~MxDSMediaAction() +{ + // TODO +} diff --git a/LEGO1/mxdsmediaaction.h b/LEGO1/mxdsmediaaction.h new file mode 100644 index 00000000..5beb12f5 --- /dev/null +++ b/LEGO1/mxdsmediaaction.h @@ -0,0 +1,29 @@ +#ifndef MXDSMEDIAACTION_H +#define MXDSMEDIAACTION_H + +#include "mxdsaction.h" + +// VTABLE 0x100dcd40 +// SIZE 0xb8 +class MxDSMediaAction : public MxDSAction +{ +public: + MxDSMediaAction(); + virtual ~MxDSMediaAction() override; + + // OFFSET: LEGO1 0x100c8be0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f7624 + return "MxDSMediaAction"; + } + + // OFFSET: LEGO1 0x100c8bf0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSMediaAction::ClassName()) || MxDSAction::IsA(name); + } + +}; + +#endif // MXDSMEDIAACTION_H diff --git a/LEGO1/mxdsmultiaction.cpp b/LEGO1/mxdsmultiaction.cpp new file mode 100644 index 00000000..4b36f2ec --- /dev/null +++ b/LEGO1/mxdsmultiaction.cpp @@ -0,0 +1,13 @@ +#include "mxdsmultiaction.h" + +// OFFSET: LEGO1 0x100c9b90 +MxDSMultiAction::MxDSMultiAction() +{ + +} + +// OFFSET: LEGO1 0x100ca060 +MxDSMultiAction::~MxDSMultiAction() +{ + +} diff --git a/LEGO1/mxdsmultiaction.h b/LEGO1/mxdsmultiaction.h new file mode 100644 index 00000000..af3d69df --- /dev/null +++ b/LEGO1/mxdsmultiaction.h @@ -0,0 +1,28 @@ +#ifndef MXDSMULTIACTION_H +#define MXDSMULTIACTION_H + +#include "mxdsaction.h" + +// VTABLE 0x100dcef0 +// SIZE 0x9c +class MxDSMultiAction : public MxDSAction +{ +public: + MxDSMultiAction(); + virtual ~MxDSMultiAction() override; + + // OFFSET: LEGO1 0x100c9f50 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10101dbc + return "MxDSMultiAction"; + } + + // OFFSET: LEGO1 0x100c9f60 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSMultiAction::ClassName()) || MxDSAction::IsA(name); + } +}; + +#endif // MXDSMULTIACTION_H diff --git a/LEGO1/mxdsobject.cpp b/LEGO1/mxdsobject.cpp index 7323f446..fd4b7434 100644 --- a/LEGO1/mxdsobject.cpp +++ b/LEGO1/mxdsobject.cpp @@ -7,30 +7,121 @@ MxDSObject::MxDSObject() { this->m_unk0c = 0; - this->m_unk10 = 0; + this->m_sourceName = NULL; this->m_unk14 = 0; - this->m_name = NULL; + this->m_objectName = NULL; this->m_unk24 = -1; this->m_unk1c = -1; this->m_unk28 = 0; } +// OFFSET: LEGO1 0x100bf7e0 +MxDSObject::~MxDSObject() +{ + delete[] m_objectName; + delete[] m_sourceName; +} + +// OFFSET: LEGO1 0x100bf870 +void MxDSObject::CopyFrom(MxDSObject &p_dsObject) +{ + this->SetSourceName(p_dsObject.m_sourceName); + this->m_unk14 = p_dsObject.m_unk14; + this->SetObjectName(p_dsObject.m_objectName); + this->m_unk1c = p_dsObject.m_unk1c; + this->m_unk24 = p_dsObject.m_unk24; + this->m_atomId = p_dsObject.m_atomId; + this->m_unk28 = p_dsObject.m_unk28; +} + +// OFFSET: LEGO1 0x100bf8c0 +MxDSObject &MxDSObject::operator=(MxDSObject &p_dsObject) +{ + if (this == &p_dsObject) + return *this; + + this->CopyFrom(p_dsObject); + return *this; +} + // OFFSET: LEGO1 0x100bf8e0 void MxDSObject::SetObjectName(const char *p_name) { - if (p_name != this->m_name) - { - free(this->m_name); + if (p_name != this->m_objectName) { + delete[] this->m_objectName; if (p_name) { - this->m_name = (char *)malloc(strlen(p_name) + 1); + this->m_objectName = new char[strlen(p_name) + 1]; - if (this->m_name) { - strcpy(this->m_name, p_name); + if (this->m_objectName) { + strcpy(this->m_objectName, p_name); } } else { - this->m_name = NULL; + this->m_objectName = NULL; } } } + +// OFFSET: LEGO1 0x100bf950 +void MxDSObject::SetSourceName(const char *p_sourceName) +{ + if (p_sourceName != this->m_sourceName) { + delete[] this->m_sourceName; + + if (p_sourceName) { + this->m_sourceName = new char[strlen(p_sourceName) + 1]; + + if (this->m_sourceName) { + strcpy(this->m_sourceName, p_sourceName); + } + } + else { + this->m_sourceName = NULL; + } + } +} + +// OFFSET: LEGO1 0x100bf9c0 +int MxDSObject::unk14() +{ + return 10; +} + +// OFFSET: LEGO1 0x100bf9d0 +unsigned int MxDSObject::CalculateUnk08() +{ + unsigned int unk08; + + if (this->m_sourceName) + unk08 = strlen(this->m_sourceName) + 3; + else + unk08 = 3; + + unk08 += 4; + + if (this->m_objectName) + unk08 += strlen(this->m_objectName) + 1; + else + unk08++; + + unk08 += 4; + this->m_unk08 = unk08; + return unk08; +} + +// OFFSET: LEGO1 0x100bfa20 +void MxDSObject::Parse(char **p_source, unsigned short p_unk24) +{ + this->SetSourceName(*p_source); + *p_source += strlen(this->m_sourceName) + 1; + this->m_unk14 = *(int*) *p_source; + *p_source += 4; + + this->SetObjectName(*p_source); + *p_source += strlen(this->m_objectName) + 1; + this->m_unk1c = *(int*) *p_source; + *p_source += 4; + + this->m_unk24 = p_unk24; +} diff --git a/LEGO1/mxdsobject.h b/LEGO1/mxdsobject.h index 468076f7..ef4701bc 100644 --- a/LEGO1/mxdsobject.h +++ b/LEGO1/mxdsobject.h @@ -4,12 +4,30 @@ #include "mxcore.h" #include "mxatomid.h" +// VTABLE 0x100dc868 +// SIZE 0x2c class MxDSObject : public MxCore { public: - __declspec(dllexport) void SetObjectName(const char *); + __declspec(dllexport) void SetObjectName(const char *p_objectName); MxDSObject(); + virtual ~MxDSObject() override; + + MxDSObject &operator=(MxDSObject &p_dsObject); + void CopyFrom(MxDSObject &p_dsObject); + + // OFFSET: LEGO1 0x100bf730 + inline virtual const char *ClassName() const override { return "MxDSObject"; }; // vtable+0c + + // OFFSET: LEGO1 0x100bf740 + inline virtual MxBool IsA(const char *name) const override { return !strcmp(name, MxDSObject::ClassName()) || MxCore::IsA(name); }; // vtable+10; + + virtual int unk14(); // vtable+14; + virtual unsigned int CalculateUnk08(); // vtable+18; + virtual void Parse(char **p_source, unsigned short p_unk24); // vtable+1c; + + void SetSourceName(const char *p_sourceName); inline const MxAtomId& GetAtomId() { return this->m_atomId; } inline int GetUnknown1c() { return this->m_unk1c; } @@ -22,11 +40,11 @@ class MxDSObject : public MxCore inline void SetAtomId(MxAtomId p_atomId) { this->m_atomId = p_atomId; } private: - int m_unk08; + unsigned int m_unk08; short m_unk0c; - char* m_unk10; + char* m_sourceName; int m_unk14; - char *m_name; + char *m_objectName; int m_unk1c; MxAtomId m_atomId; short m_unk24; diff --git a/LEGO1/mxdsobjectaction.cpp b/LEGO1/mxdsobjectaction.cpp new file mode 100644 index 00000000..990168da --- /dev/null +++ b/LEGO1/mxdsobjectaction.cpp @@ -0,0 +1,13 @@ +#include "mxdsobjectaction.h" + +// OFFSET: LEGO1 0x100c8870 +MxDSObjectAction::MxDSObjectAction() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c8a20 +MxDSObjectAction::~MxDSObjectAction() +{ + // TODO +} diff --git a/LEGO1/mxdsobjectaction.h b/LEGO1/mxdsobjectaction.h new file mode 100644 index 00000000..12e147fc --- /dev/null +++ b/LEGO1/mxdsobjectaction.h @@ -0,0 +1,28 @@ +#ifndef MXDSOBJECTACTION_H +#define MXDSOBJECTACTION_H + +#include "mxdsmediaaction.h" + +// VTABLE 0x100dccf8 +// SIZE 0xb8 +class MxDSObjectAction : public MxDSMediaAction +{ +public: + MxDSObjectAction(); + virtual ~MxDSObjectAction() override; + + // OFFSET: LEGO1 0x100c88e0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x101025c4 + return "MxDSObjectAction"; + } + + // OFFSET: LEGO1 0x100c88f0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSObjectAction::ClassName()) || MxDSMediaAction::IsA(name); + } +}; + +#endif // MXDSOBJECTACTION_H diff --git a/LEGO1/mxdsparallelaction.cpp b/LEGO1/mxdsparallelaction.cpp new file mode 100644 index 00000000..78b9623a --- /dev/null +++ b/LEGO1/mxdsparallelaction.cpp @@ -0,0 +1,13 @@ +#include "mxdsparallelaction.h" + +// OFFSET: LEGO1 0x100cae80 +MxDSParallelAction::MxDSParallelAction() +{ + +} + +// OFFSET: LEGO1 0x100cb040 +MxDSParallelAction::~MxDSParallelAction() +{ + +} diff --git a/LEGO1/mxdsparallelaction.h b/LEGO1/mxdsparallelaction.h new file mode 100644 index 00000000..067dc82c --- /dev/null +++ b/LEGO1/mxdsparallelaction.h @@ -0,0 +1,29 @@ +#ifndef MXDSPARALLELACTION_H +#define MXDSPARALLELACTION_H + +#include "mxdsmultiaction.h" + +// VTABLE 0x100dcf80 +// SIZE 0x9c +class MxDSParallelAction : public MxDSMultiAction +{ +public: + MxDSParallelAction(); + virtual ~MxDSParallelAction() override; + + // OFFSET: LEGO1 0x100caf00 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10102608 + return "MxDSParallelAction"; + } + + // OFFSET: LEGO1 0x100caf10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSParallelAction::ClassName()) || MxDSMultiAction::IsA(name); + } + +}; + +#endif // MXDSPARALLELACTION_H diff --git a/LEGO1/mxdsselectaction.cpp b/LEGO1/mxdsselectaction.cpp new file mode 100644 index 00000000..575aba29 --- /dev/null +++ b/LEGO1/mxdsselectaction.cpp @@ -0,0 +1,13 @@ +#include "mxdsselectaction.h" + +// OFFSET: LEGO1 0x100cb2b0 +MxDSSelectAction::MxDSSelectAction() +{ + +} + +// OFFSET: LEGO1 0x100cb8d0 +MxDSSelectAction::~MxDSSelectAction() +{ + +} diff --git a/LEGO1/mxdsselectaction.h b/LEGO1/mxdsselectaction.h new file mode 100644 index 00000000..cb5374e1 --- /dev/null +++ b/LEGO1/mxdsselectaction.h @@ -0,0 +1,29 @@ +#ifndef MXDSSELECTACTION_H +#define MXDSSELECTACTION_H + +#include "mxdsparallelaction.h" + +// VTABLE 0x100dcfc8 +// SIZE 0xb0 +class MxDSSelectAction : public MxDSParallelAction +{ +public: + MxDSSelectAction(); + virtual ~MxDSSelectAction() override; + + // OFFSET: LEGO1 0x100cb6f0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x1010261c + return "MxDSSelectAction"; + } + + // OFFSET: LEGO1 0x100cb700 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSSelectAction::ClassName()) || MxDSParallelAction::IsA(name); + } + +}; + +#endif // MXDSSELECTACTION_H diff --git a/LEGO1/mxdsserialaction.cpp b/LEGO1/mxdsserialaction.cpp new file mode 100644 index 00000000..a5e8f623 --- /dev/null +++ b/LEGO1/mxdsserialaction.cpp @@ -0,0 +1,13 @@ +#include "mxdsserialaction.h" + +// OFFSET: LEGO1 0x100ca9d0 +MxDSSerialAction::MxDSSerialAction() +{ + +} + +// OFFSET: LEGO1 0x100cac10 +MxDSSerialAction::~MxDSSerialAction() +{ + +} diff --git a/LEGO1/mxdsserialaction.h b/LEGO1/mxdsserialaction.h new file mode 100644 index 00000000..2b260556 --- /dev/null +++ b/LEGO1/mxdsserialaction.h @@ -0,0 +1,28 @@ +#ifndef MXDSSERIALACTION_H +#define MXDSSERIALACTION_H + +#include "mxdsmultiaction.h" + +// VTABLE 0x100dcf38 +// SIZE 0xa8 +class MxDSSerialAction : public MxDSMultiAction +{ +public: + MxDSSerialAction(); + virtual ~MxDSSerialAction() override; + + // OFFSET: LEGO1 0x100caad0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f75dc + return "MxDSSerialAction"; + } + + // OFFSET: LEGO1 0x100caae0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSSerialAction::ClassName()) || MxDSMultiAction::IsA(name); + } +}; + +#endif // MXDSSERIALACTION_H diff --git a/LEGO1/mxdssound.cpp b/LEGO1/mxdssound.cpp new file mode 100644 index 00000000..4f2b0d61 --- /dev/null +++ b/LEGO1/mxdssound.cpp @@ -0,0 +1,13 @@ +#include "mxdssound.h" + +// OFFSET: LEGO1 0x100c92c0 +MxDSSound::MxDSSound() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c9470 +MxDSSound::~MxDSSound() +{ + // TODO +} diff --git a/LEGO1/mxdssound.h b/LEGO1/mxdssound.h new file mode 100644 index 00000000..45a61d63 --- /dev/null +++ b/LEGO1/mxdssound.h @@ -0,0 +1,29 @@ +#ifndef MXDSSOUND_H +#define MXDSSOUND_H + +#include "mxdsmediaaction.h" + +// VTABLE 0x100dcdd0 +// SIZE 0xc0 +class MxDSSound : public MxDSMediaAction +{ +public: + MxDSSound(); + virtual ~MxDSSound() override; + + // OFFSET: LEGO1 0x100c9330 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x101025e4 + return "MxDSSound"; + } + + // OFFSET: LEGO1 0x100c9340 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSSound::ClassName()) || MxDSMediaAction::IsA(name); + } +}; + + +#endif // MXDSSOUND_H diff --git a/LEGO1/mxdssource.cpp b/LEGO1/mxdssource.cpp new file mode 100644 index 00000000..8612c5c4 --- /dev/null +++ b/LEGO1/mxdssource.cpp @@ -0,0 +1,14 @@ +#include "mxdssource.h" + +// OFFSET: LEGO1 0x100bffd0 +void MxDSSource::SomethingWhichCallsRead(void* pUnknownObject) +{ + // TODO: Calls read, reading into a buffer somewhere in pUnknownObject. + Read(NULL, 0); +} + +// OFFSET: LEGO1 0x100bfff0 +long MxDSSource::GetLengthInDWords() +{ + return m_lengthInDWords; +} \ No newline at end of file diff --git a/LEGO1/mxdssource.h b/LEGO1/mxdssource.h new file mode 100644 index 00000000..2837e7c2 --- /dev/null +++ b/LEGO1/mxdssource.h @@ -0,0 +1,44 @@ +#ifndef MXDSSOURCE_H +#define MXDSSOURCE_H + +#include "mxcore.h" + +// VTABLE 0x100dc8c8 +class MxDSSource : public MxCore +{ +public: + MxDSSource() + : m_lengthInDWords(0) + , m_pBuffer(0) + , m_position(-1) + {} + + // OFFSET: LEGO1 0x100c0010 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10102588 + return "MxDSSource"; + } + + // OFFSET: LEGO1 0x100c0020 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSSource::ClassName()) || MxCore::IsA(name); + } + + virtual long Open(unsigned long) = 0; + virtual long Close() = 0; + virtual void SomethingWhichCallsRead(void* pUnknownObject); + virtual long Read(unsigned char *, unsigned long) = 0; + virtual long Seek(long, int) = 0; + virtual unsigned long GetBufferSize() = 0; + virtual unsigned long GetStreamBuffersNum() = 0; + virtual long GetLengthInDWords(); + +protected: + unsigned long m_lengthInDWords; + void* m_pBuffer; + long m_position; +}; + +#endif // MXDSSOURCE_H diff --git a/LEGO1/mxdsstill.cpp b/LEGO1/mxdsstill.cpp new file mode 100644 index 00000000..0a5434f1 --- /dev/null +++ b/LEGO1/mxdsstill.cpp @@ -0,0 +1,13 @@ +#include "mxdsstill.h" + +// OFFSET: LEGO1 0x100c98c0 +MxDSStill::MxDSStill() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c9a70 +MxDSStill::~MxDSStill() +{ + // TODO +} diff --git a/LEGO1/mxdsstill.h b/LEGO1/mxdsstill.h new file mode 100644 index 00000000..920f890a --- /dev/null +++ b/LEGO1/mxdsstill.h @@ -0,0 +1,28 @@ +#ifndef MXDSSTILL_H +#define MXDSSTILL_H + +#include "mxdsmediaaction.h" + +// VTABLE 0x100dce60 +// SIZE 0xb8 +class MxDSStill : public MxDSMediaAction +{ +public: + MxDSStill(); + virtual ~MxDSStill() override; + + // OFFSET: LEGO1 0x100c9930 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x101025fc + return "MxDSStill"; + } + + // OFFSET: LEGO1 0x100c9940 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSStill::ClassName()) || MxDSMediaAction::IsA(name); + } +}; + +#endif // MXDSSTILL_H diff --git a/LEGO1/mxdssubscriber.cpp b/LEGO1/mxdssubscriber.cpp new file mode 100644 index 00000000..8a011fed --- /dev/null +++ b/LEGO1/mxdssubscriber.cpp @@ -0,0 +1,13 @@ +#include "mxdssubscriber.h" + +// OFFSET: LEGO1 0x100b7bb0 +MxDSSubscriber::MxDSSubscriber() +{ + // TODO +} + +// OFFSET: LEGO1 0x100b7e00 +MxDSSubscriber::~MxDSSubscriber() +{ + // TODO +} diff --git a/LEGO1/mxdssubscriber.h b/LEGO1/mxdssubscriber.h new file mode 100644 index 00000000..fb3b0d04 --- /dev/null +++ b/LEGO1/mxdssubscriber.h @@ -0,0 +1,28 @@ +#ifndef MXDSSUBSCRIBER_H +#define MXDSSUBSCRIBER_H + +#include "mxcore.h" + +// VTABLE 0x100dc698 +// SIZE 0x4c +class MxDSSubscriber : public MxCore +{ +public: + MxDSSubscriber(); + virtual ~MxDSSubscriber() override; + + // OFFSET: LEGO1 0x100b7d50 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x101020f8 + return "MxDSSubscriber"; + } + + // OFFSET: LEGO1 0x100b7d60 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSSubscriber::ClassName()) || MxCore::IsA(name); + } +}; + +#endif // MXDSSUBSCRIBER_H diff --git a/LEGO1/mxentity.cpp b/LEGO1/mxentity.cpp new file mode 100644 index 00000000..526a03e2 --- /dev/null +++ b/LEGO1/mxentity.cpp @@ -0,0 +1,13 @@ +#include "mxentity.h" + +// OFFSET: LEGO1 0x1001d190 STUB +MxEntity::MxEntity() +{ + // TODO +} + +// OFFSET: LEGO1 0x1000c110 STUB +MxEntity::~MxEntity() +{ + // TODO +} diff --git a/LEGO1/mxentity.h b/LEGO1/mxentity.h new file mode 100644 index 00000000..dda04646 --- /dev/null +++ b/LEGO1/mxentity.h @@ -0,0 +1,30 @@ +#ifndef MXENTITY_H +#define MXENTITY_H + +#include "mxcore.h" + +// VTABLE 0x100d5390 +class MxEntity : public MxCore +{ +public: + MxEntity(); + virtual ~MxEntity() override; + + // OFFSET: LEGO1 0x1000c180 + inline virtual const char* ClassName() const override // vtable+0xc + { + // 0x100f0070 + return "MxEntity"; + } + + // OFFSET: LEGO1 0x1000c190 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxEntity::ClassName()) || MxCore::IsA(name); + } + + // 0x8: MxResult + // 0xc MxAtomId +}; + +#endif // MXENTITY_H diff --git a/LEGO1/mxeventmanager.cpp b/LEGO1/mxeventmanager.cpp new file mode 100644 index 00000000..786420bc --- /dev/null +++ b/LEGO1/mxeventmanager.cpp @@ -0,0 +1,13 @@ +#include "mxeventmanager.h" + +// OFFSET: LEGO1 0x100c0360 STUB +MxEventManager::MxEventManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c03f0 STUB +MxEventManager::~MxEventManager() +{ + // TODO +} diff --git a/LEGO1/mxeventmanager.h b/LEGO1/mxeventmanager.h index 5d187256..be5a796c 100644 --- a/LEGO1/mxeventmanager.h +++ b/LEGO1/mxeventmanager.h @@ -1,9 +1,16 @@ #ifndef MXEVENTMANAGER_H #define MXEVENTMANAGER_H -class MxEventManager +#include "mxunknown100dc6b0.h" + +// VTABLE 0x100dc900 +// SIZE 0x2c +class MxEventManager : public MxUnknown100dc6b0 { - +public: + MxEventManager(); + virtual ~MxEventManager() override; + }; #endif // MXEVENTMANAGER_H diff --git a/LEGO1/mxeventpresenter.cpp b/LEGO1/mxeventpresenter.cpp new file mode 100644 index 00000000..ba78203f --- /dev/null +++ b/LEGO1/mxeventpresenter.cpp @@ -0,0 +1,19 @@ +#include "mxeventpresenter.h" + +// OFFSET: LEGO1 0x100c2b70 +MxEventPresenter::MxEventPresenter() +{ + Init(); +} + +// OFFSET: LEGO1 0x100c2d40 STUB +MxEventPresenter::~MxEventPresenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c2da0 STUB +void MxEventPresenter::Init() +{ + // TODO +} diff --git a/LEGO1/mxeventpresenter.h b/LEGO1/mxeventpresenter.h new file mode 100644 index 00000000..2adb8cfa --- /dev/null +++ b/LEGO1/mxeventpresenter.h @@ -0,0 +1,32 @@ +#ifndef MXEVENTPRESENTER_H +#define MXEVENTPRESENTER_H + +#include "mxmediapresenter.h" + +// VTABLE 0x100dca88 +// SIZE 0x54 +class MxEventPresenter : public MxMediaPresenter +{ +public: + MxEventPresenter(); + virtual ~MxEventPresenter() override; + + // OFFSET: LEGO1 0x100c2c30 + inline virtual const char* ClassName() const override // vtable+0xc + { + // 0x10101dcc + return "MxEventPresenter"; + } + + // OFFSET: LEGO1 0x100c2c40 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxEventPresenter::ClassName()) || MxMediaPresenter::IsA(name); + } + +private: + void Init(); + +}; + +#endif // MXEVENTPRESENTER_H diff --git a/LEGO1/mxflcpresenter.cpp b/LEGO1/mxflcpresenter.cpp new file mode 100644 index 00000000..1e6ee289 --- /dev/null +++ b/LEGO1/mxflcpresenter.cpp @@ -0,0 +1,13 @@ +#include "mxflcpresenter.h" + +// OFFSET: LEGO1 0x100b3310 STUB +MxFlcPresenter::MxFlcPresenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x100b3420 STUB +MxFlcPresenter::~MxFlcPresenter() +{ + // TODO +} diff --git a/LEGO1/mxflcpresenter.h b/LEGO1/mxflcpresenter.h new file mode 100644 index 00000000..5d63c41c --- /dev/null +++ b/LEGO1/mxflcpresenter.h @@ -0,0 +1,28 @@ +#ifndef MXFLCPRESENTER_H +#define MXFLCPRESENTER_H + +#include "mxvideopresenter.h" + +// VTABLE 0x100dc2c0 +// SIZE 0x68 +class MxFlcPresenter : public MxVideoPresenter +{ +public: + MxFlcPresenter(); + virtual ~MxFlcPresenter() override; + + // OFFSET: LEGO1 0x100b33f0 + inline virtual const char* ClassName() const override // vtable+0xc + { + // 0x100f43c8 + return "MxFlcPresenter"; + } + + // OFFSET: LEGO1 0x1004e200 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxFlcPresenter::ClassName()) || MxVideoPresenter::IsA(name); + } +}; + +#endif // MXFLCPRESENTER_H diff --git a/LEGO1/mxioinfo.cpp b/LEGO1/mxioinfo.cpp new file mode 100644 index 00000000..ebe2a480 --- /dev/null +++ b/LEGO1/mxioinfo.cpp @@ -0,0 +1,49 @@ +#include "mxioinfo.h" + +// OFFSET: LEGO1 0x100cc800 +MXIOINFO::MXIOINFO() +{ + memset(&m_info, 0, sizeof(MMIOINFO)); +} + +// OFFSET: LEGO1 0x100cc820 +MXIOINFO::~MXIOINFO() +{ + Close(0); +} + +// OFFSET: LEGO1 0x100cc830 +unsigned short MXIOINFO::Open(const char *filename, DWORD fdwOpen) +{ + return 0; +} + +// OFFSET: LEGO1 0x100cc8e0 +void MXIOINFO::Close(long arg) +{ + +} + +// OFFSET: LEGO1 0x100cc930 +unsigned long MXIOINFO::Read(HPSTR pch, LONG cch) +{ + return 0; +} + +// OFFSET: LEGO1 0x100cca00 +LONG MXIOINFO::Seek(LONG lOffset, int iOrigin) +{ + return 0; +} + +// OFFSET: LEGO1 0x100ccbc0 +void MXIOINFO::SetBuffer(LPSTR pchBuffer, LONG cchBuffer, LONG unk) +{ + +} + +// OFFSET: LEGO1 0x100cce60 +unsigned short MXIOINFO::Descend(LPMMCKINFO pmmcki, const MMCKINFO *pmmckiParent, UINT fuDescend) +{ + return 0; +} \ No newline at end of file diff --git a/LEGO1/mxioinfo.h b/LEGO1/mxioinfo.h index d3f2a40e..c88a55b9 100644 --- a/LEGO1/mxioinfo.h +++ b/LEGO1/mxioinfo.h @@ -1,10 +1,24 @@ #ifndef MXIOINFO_H #define MXIOINFO_H +#include + +#include "mmsystem.h" + class MXIOINFO { public: + MXIOINFO(); __declspec(dllexport) ~MXIOINFO(); + + unsigned short Open(const char *filename, DWORD fdwOpen); + void Close(long arg); + LONG Seek(LONG lOffset, int iOrigin); + unsigned long Read(HPSTR pch, LONG cch); + void SetBuffer(LPSTR pchBuffer, LONG cchBuffer, LONG unk); + unsigned short Descend(LPMMCKINFO pmmcki, const MMCKINFO *pmmckiParent, UINT fuDescend); + + MMIOINFO m_info; }; #endif // MXIOINFO_H diff --git a/LEGO1/mxloopingflcpresenter.cpp b/LEGO1/mxloopingflcpresenter.cpp new file mode 100644 index 00000000..f4602f3c --- /dev/null +++ b/LEGO1/mxloopingflcpresenter.cpp @@ -0,0 +1,19 @@ +#include "mxloopingflcpresenter.h" + +// OFFSET: LEGO1 0x100b4310 STUB +MxLoopingFlcPresenter::MxLoopingFlcPresenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x100b43b0 STUB +MxLoopingFlcPresenter::~MxLoopingFlcPresenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x100b4410 STUB +void MxLoopingFlcPresenter::Init() +{ + // TODO +} diff --git a/LEGO1/mxloopingflcpresenter.h b/LEGO1/mxloopingflcpresenter.h new file mode 100644 index 00000000..5152e4d9 --- /dev/null +++ b/LEGO1/mxloopingflcpresenter.h @@ -0,0 +1,25 @@ +#ifndef MXLOOPINGFLCPRESENTER_H +#define MXLOOPINGFLCPRESENTER_H + +#include "mxflcpresenter.h" + +// VTABLE 0x100dc480 +// SIZE 0x6c +class MxLoopingFlcPresenter : public MxFlcPresenter +{ +public: + MxLoopingFlcPresenter(); + virtual ~MxLoopingFlcPresenter() override; + + // OFFSET: LEGO1 0x100b4380 + inline virtual const char* ClassName() const override // vtable+0xc + { + // 0x10101e20 + return "MxLoopingFlcPresenter"; + } + +private: + void Init(); +}; + +#endif // MXLOOPINGFLCPRESENTER_H diff --git a/LEGO1/mxloopingmidipresenter.h b/LEGO1/mxloopingmidipresenter.h new file mode 100644 index 00000000..e41be651 --- /dev/null +++ b/LEGO1/mxloopingmidipresenter.h @@ -0,0 +1,25 @@ +#ifndef MXLOOPINGMIDIPRESENTER_H +#define MXLOOPINGMIDIPRESENTER_H + +#include "mxmidipresenter.h" + +// VTABLE 0x100dc240 +// SIZE 0x58 +class MxLoopingMIDIPresenter : public MxMIDIPresenter +{ +public: + // OFFSET: LEGO1 0x100b1830 + inline virtual const char* ClassName() const override // vtable+0xc + { + // 0x10101de0 + return "MxLoopingMIDIPresenter"; + } + + // OFFSET: LEGO1 0x100b1840 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxLoopingMIDIPresenter::ClassName()) || MxMIDIPresenter::IsA(name); + } +}; + +#endif // MXLOOPINGMIDIPRESENTER_H diff --git a/LEGO1/mxloopingsmkpresenter.cpp b/LEGO1/mxloopingsmkpresenter.cpp new file mode 100644 index 00000000..cb038462 --- /dev/null +++ b/LEGO1/mxloopingsmkpresenter.cpp @@ -0,0 +1,19 @@ +#include "mxloopingsmkpresenter.h" + +// OFFSET: LEGO1 0x100b48b0 +MxLoopingSmkPresenter::MxLoopingSmkPresenter() +{ + Init(); +} + +// OFFSET: LEGO1 0x100b4950 STUB +MxLoopingSmkPresenter::~MxLoopingSmkPresenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x100b49b0 STUB +void MxLoopingSmkPresenter::Init() +{ + // TODO +} diff --git a/LEGO1/mxloopingsmkpresenter.h b/LEGO1/mxloopingsmkpresenter.h new file mode 100644 index 00000000..129d98b9 --- /dev/null +++ b/LEGO1/mxloopingsmkpresenter.h @@ -0,0 +1,25 @@ +#ifndef MXLOOPINGSMKPRESENTER_H +#define MXLOOPINGSMKPRESENTER_H + +#include "mxsmkpresenter.h" + +// VTABLE 0x100dc540 +// SIZE 0x724 +class MxLoopingSmkPresenter : public MxSmkPresenter +{ +public: + MxLoopingSmkPresenter(); + virtual ~MxLoopingSmkPresenter() override; // vtable+0x0 + + // OFFSET: LEGO1 0x100b4920 + inline virtual const char* ClassName() const override // vtable+0xc + { + // 0x10101e08 + return "MxLoopingSmkPresenter"; + } + +private: + void Init(); +}; + +#endif // MXLOOPINGSMKPRESENTER_H diff --git a/LEGO1/mxmediapresenter.cpp b/LEGO1/mxmediapresenter.cpp new file mode 100644 index 00000000..793b3ea8 --- /dev/null +++ b/LEGO1/mxmediapresenter.cpp @@ -0,0 +1,14 @@ +#include "mxmediapresenter.h" + +// OFFSET: LEGO1 0x100b5d10 STUB +long MxMediaPresenter::Tickle() +{ + // TODO + return 0; +} + +// OFFSET: LEGO1 0x100b54e0 STUB +void MxMediaPresenter::Init() +{ + // TODO +} diff --git a/LEGO1/mxmediapresenter.h b/LEGO1/mxmediapresenter.h new file mode 100644 index 00000000..3fb70d31 --- /dev/null +++ b/LEGO1/mxmediapresenter.h @@ -0,0 +1,35 @@ +#ifndef MXMEDIAPRESENTER_H +#define MXMEDIAPRESENTER_H + +#include "mxpresenter.h" + +// VTABLE 0x100d4cd8 +class MxMediaPresenter : public MxPresenter +{ +public: + inline MxMediaPresenter() + { + Init(); + } + + virtual long Tickle() override; // vtable+0x8, override MxCore + + // OFFSET: LEGO1 0x1000c5c0 + inline virtual const char *MxMediaPresenter::ClassName() const override // vtable+0xc + { + // 0x100f074c + return "MxMediaPresenter"; + } + + // OFFSET: LEGO1 0x1000c5d0 + inline virtual MxBool MxMediaPresenter::IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxMediaPresenter::ClassName()) || MxPresenter::IsA(name); + } + +private: + void Init(); + +}; + +#endif // MXMEDIAPRESENTER_H diff --git a/LEGO1/mxmidipresenter.h b/LEGO1/mxmidipresenter.h new file mode 100644 index 00000000..8a46d12a --- /dev/null +++ b/LEGO1/mxmidipresenter.h @@ -0,0 +1,11 @@ +#ifndef MXMIDIPRESENTER_H +#define MXMIDIPRESENTER_H + +#include "mxmusicpresenter.h" + +// VTABLE 0x100dca20 +class MxMIDIPresenter : public MxMusicPresenter +{ +}; + +#endif // MXMIDIPRESENTER_H diff --git a/LEGO1/mxmusicmanager.h b/LEGO1/mxmusicmanager.h index 23134708..4288ed1e 100644 --- a/LEGO1/mxmusicmanager.h +++ b/LEGO1/mxmusicmanager.h @@ -1,9 +1,11 @@ #ifndef MXMUSICMANAGER_H #define MXMUSICMANAGER_H -class MxMusicManager +#include "mxcore.h" + +// VTABLE 0x100dc930 +class MxMusicManager : public MxCore { - }; #endif // MXMUSICMANAGER_H diff --git a/LEGO1/mxmusicpresenter.cpp b/LEGO1/mxmusicpresenter.cpp new file mode 100644 index 00000000..562f047c --- /dev/null +++ b/LEGO1/mxmusicpresenter.cpp @@ -0,0 +1,7 @@ +#include "mxmusicpresenter.h" + +// OFFSET: LEGO1 0x100c22c0 STUB +MxMusicPresenter::MxMusicPresenter() +{ + // TODO +} \ No newline at end of file diff --git a/LEGO1/mxmusicpresenter.h b/LEGO1/mxmusicpresenter.h new file mode 100644 index 00000000..e244b036 --- /dev/null +++ b/LEGO1/mxmusicpresenter.h @@ -0,0 +1,13 @@ +#ifndef MXMUSICPRESENTER_H +#define MXMUSICPRESENTER_H + +#include "mxaudiopresenter.h" + +// VTABLE 0x100dc9b8 +class MxMusicPresenter : public MxAudioPresenter +{ +public: + MxMusicPresenter(); +}; + +#endif // MXMUSICPRESENTER_H diff --git a/LEGO1/mxnextactiondatastart.h b/LEGO1/mxnextactiondatastart.h new file mode 100644 index 00000000..df2a2748 --- /dev/null +++ b/LEGO1/mxnextactiondatastart.h @@ -0,0 +1,12 @@ +#ifndef MXNEXTACTIONDATASTART_H +#define MXNEXTACTIONDATASTART_H + +#include "mxcore.h" + +// VTABLE 0x100dc9a0 +class MxNextActionDataStart : public MxCore +{ + +}; + +#endif // MXNEXTACTIONDATASTART_H diff --git a/LEGO1/mxnotificationmanager.cpp b/LEGO1/mxnotificationmanager.cpp new file mode 100644 index 00000000..8ce1f98b --- /dev/null +++ b/LEGO1/mxnotificationmanager.cpp @@ -0,0 +1,15 @@ +#include "mxnotificationmanager.h" + +// OFFSET: LEGO1 0x100ac450 STUB +MxNotificationManager::~MxNotificationManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x100ac800 STUB +long MxNotificationManager::Tickle() +{ + // TODO + + return 0; +} \ No newline at end of file diff --git a/LEGO1/mxnotificationmanager.h b/LEGO1/mxnotificationmanager.h index afa378e1..e350ba56 100644 --- a/LEGO1/mxnotificationmanager.h +++ b/LEGO1/mxnotificationmanager.h @@ -1,9 +1,17 @@ #ifndef MXNOTIFICATIONMANAGER_H #define MXNOTIFICATIONMANAGER_H -class MxNotificationManager +#include "mxcore.h" + +// VTABLE 0x100dc078 +class MxNotificationManager : public MxCore { - +public: + virtual ~MxNotificationManager(); // vtable+0x0 + + virtual long Tickle(); // vtable+0x8 + + // 0x10: MxCriticalSection }; #endif // MXNOTIFICATIONMANAGER_H diff --git a/LEGO1/mxobjectfactory.h b/LEGO1/mxobjectfactory.h index ad341edd..57809be9 100644 --- a/LEGO1/mxobjectfactory.h +++ b/LEGO1/mxobjectfactory.h @@ -1,7 +1,10 @@ #ifndef MXOBJECTFACTORY_H #define MXOBJECTFACTORY_H -class MxObjectFactory +#include "mxcore.h" + +// VTABLE 0x100dc220 +class MxObjectFactory : public MxCore { }; diff --git a/LEGO1/mxomni.cpp b/LEGO1/mxomni.cpp index d4990566..11a6fb28 100644 --- a/LEGO1/mxomni.cpp +++ b/LEGO1/mxomni.cpp @@ -1,7 +1,7 @@ #include "mxomni.h" // 0x101015b0 -MxOmni* MxOmni::m_instance = NULL; +MxOmni *MxOmni::g_instance = NULL; // OFFSET: LEGO1 0x100aef10 MxOmni::MxOmni() @@ -33,10 +33,26 @@ void MxOmni::Init() m_unk64 = NULL; } +// OFFSET: LEGO1 0x100b0690 +void MxOmni::DestroyInstance() +{ + if (g_instance != NULL) + { + delete g_instance; + g_instance = NULL; + } +} + // OFFSET: LEGO1 0x100b0680 MxOmni *MxOmni::GetInstance() { - return m_instance; + return g_instance; +} + +// OFFSET: LEGO1 0x100af0b0 +void MxOmni::SetInstance(MxOmni *instance) +{ + g_instance = instance; } // OFFSET: LEGO1 0x100af0c0 @@ -67,40 +83,94 @@ long MxOmni::Notify(MxParam &p) return 0; } +// OFFSET: LEGO1 0x100acea0 +MxObjectFactory *ObjectFactory() +{ + return MxOmni::GetInstance()->GetObjectFactory(); +} + +// OFFSET: LEGO1 0x100aceb0 +MxNotificationManager *NotificationManager() +{ + return MxOmni::GetInstance()->GetNotificationManager(); +} + +// OFFSET: LEGO1 0x100acec0 +MxTickleManager *TickleManager() +{ + return MxOmni::GetInstance()->GetTickleManager(); +} + // OFFSET: LEGO1 0x100aced0 MxTimer *Timer() { return MxOmni::GetInstance()->GetTimer(); } -void MxOmni::DestroyInstance() +// OFFSET: LEGO1 0x100acef0 +MxStreamer* Streamer() { - // FIXME: Stub + return MxOmni::GetInstance()->GetStreamer(); +} + +// OFFSET: LEGO1 0x100acf00 +MxSoundManager* MSoundManager() +{ + return MxOmni::GetInstance()->GetSoundManager(); } +// OFFSET: LEGO1 0x100acf10 +MxVideoManager* MVideoManager() +{ + return MxOmni::GetInstance()->GetVideoManager(); +} + +// OFFSET: LEGO1 0x100acf20 +MxVariableTable* VariableTable() +{ + return MxOmni::GetInstance()->GetVariableTable(); +} + +// OFFSET: LEGO1 0x100acf30 +MxMusicManager* MusicManager() +{ + return MxOmni::GetInstance()->GetMusicManager(); +} + +// OFFSET: LEGO1 0x100acf40 +MxEventManager* EventManager() +{ + return MxOmni::GetInstance()->GetEventManager(); +} + +// OFFSET: LEGO1 0x100B0940 STUB const char* MxOmni::GetCD() { - // FIXME: Stub - return 0; + // TODO + return 0; } +// OFFSET: LEGO1 0x100B0900 STUB const char* MxOmni::GetHD() { - // FIXME: Stub - return 0; + // TODO + return 0; } +// OFFSET: LEGO1 0x100B0950 STUB void MxOmni::SetCD(const char* s) { - // FIXME: Stub + // TODO } +// OFFSET: LEGO1 0x100B0910 STUB void MxOmni::SetHD(const char* s) { - // FIXME: Stub + // TODO } +// OFFSET: LEGO1 0x100B0990 STUB void MxOmni::SetSound3D(unsigned char) { - // FIXME: Stub + // TODO } diff --git a/LEGO1/mxomni.h b/LEGO1/mxomni.h index d6712d3c..7674f85e 100644 --- a/LEGO1/mxomni.h +++ b/LEGO1/mxomni.h @@ -8,7 +8,6 @@ #include "mxobjectfactory.h" #include "mxomnicreateflags.h" #include "mxomnicreateparam.h" -#include "mxresult.h" #include "mxsoundmanager.h" #include "mxstreamer.h" #include "mxticklemanager.h" @@ -16,6 +15,8 @@ #include "mxvariabletable.h" #include "mxvideomanager.h" +// VTABLE 0x100dc168 +// SIZE 0x68 class MxOmni : public MxCore { public: @@ -35,11 +36,19 @@ class MxOmni : public MxCore virtual void Init(); // vtable+14 virtual MxResult Create(MxOmniCreateParam &p); // vtable+18 virtual void Destroy(); // vtable+1c - + static void SetInstance(MxOmni* instance); + MxObjectFactory* GetObjectFactory() const { return this->m_objectFactory; } + MxNotificationManager* GetNotificationManager() const { return this->m_notificationManager; } + MxTickleManager* GetTickleManager() const { return this->m_tickleManager; } MxTimer* GetTimer() const { return this->m_timer; } - + MxStreamer* GetStreamer() const { return this->m_streamer; } + MxSoundManager* GetSoundManager() const { return this->m_soundManager; } + MxVideoManager* GetVideoManager() const { return this->m_videoManager; } + MxVariableTable* GetVariableTable() const { return this->m_variableTable; } + MxMusicManager* GetMusicManager() const { return this->m_musicManager; } + MxEventManager* GetEventManager() const { return this->m_eventManager; } protected: - static MxOmni* m_instance; + static MxOmni* g_instance; MxString m_mediaPath; // 0x8 HWND *m_windowHandle; // 0x18; @@ -60,7 +69,12 @@ class MxOmni : public MxCore unsigned char m_unk64; // 0x64 }; - +__declspec(dllexport) MxTickleManager * TickleManager(); __declspec(dllexport) MxTimer * Timer(); +__declspec(dllexport) MxStreamer * Streamer(); +__declspec(dllexport) MxSoundManager * MSoundManager(); +__declspec(dllexport) MxVariableTable * VariableTable(); +__declspec(dllexport) MxMusicManager * MusicManager(); +__declspec(dllexport) MxEventManager * EventManager(); #endif // MXOMNI_H diff --git a/LEGO1/mxomnicreateflags.cpp b/LEGO1/mxomnicreateflags.cpp index 9826dc5b..8e0803a9 100644 --- a/LEGO1/mxomnicreateflags.cpp +++ b/LEGO1/mxomnicreateflags.cpp @@ -3,15 +3,15 @@ // OFFSET: LEGO1 0x100b0a30 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->CreateObjectFactory(TRUE); + this->CreateVariableTable(TRUE); + this->CreateTickleManager(TRUE); + this->CreateNotificationManager(TRUE); + this->CreateVideoManager(TRUE); + this->CreateSoundManager(TRUE); + this->CreateMusicManager(TRUE); + this->CreateEventManager(TRUE); - this->CreateTimer(MX_TRUE); - this->CreateStreamer(MX_TRUE); + this->CreateTimer(TRUE); + this->CreateStreamer(TRUE); } diff --git a/LEGO1/mxomnicreateflags.h b/LEGO1/mxomnicreateflags.h index 464a5f3c..d8d37447 100644 --- a/LEGO1/mxomnicreateflags.h +++ b/LEGO1/mxomnicreateflags.h @@ -1,7 +1,7 @@ #ifndef MXOMNICREATEFLAGS_H #define MXOMNICREATEFLAGS_H -#include "mxbool.h" +#include "mxtypes.h" class MxOmniCreateFlags { @@ -36,17 +36,17 @@ class MxOmniCreateFlags 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 CreateObjectFactory(MxBool b) { this->m_flags1 = (b == TRUE ? this->m_flags1 | Flag_CreateObjectFactory : this->m_flags1 & ~Flag_CreateObjectFactory); } + inline void CreateVariableTable(MxBool b) { this->m_flags1 = (b == TRUE ? this->m_flags1 | Flag_CreateVariableTable : this->m_flags1 & ~Flag_CreateVariableTable); } + inline void CreateTickleManager(MxBool b) { this->m_flags1 = (b == TRUE ? this->m_flags1 | Flag_CreateTickleManager : this->m_flags1 & ~Flag_CreateTickleManager); } + inline void CreateNotificationManager(MxBool b) { this->m_flags1 = (b == TRUE ? this->m_flags1 | Flag_CreateNotificationManager : this->m_flags1 & ~Flag_CreateNotificationManager); } + inline void CreateVideoManager(MxBool b) { this->m_flags1 = (b == TRUE ? this->m_flags1 | Flag_CreateVideoManager : this->m_flags1 & ~Flag_CreateVideoManager); } + inline void CreateSoundManager(MxBool b) { this->m_flags1 = (b == TRUE ? this->m_flags1 | Flag_CreateSoundManager : this->m_flags1 & ~Flag_CreateSoundManager); } + inline void CreateMusicManager(MxBool b) { this->m_flags1 = (b == TRUE ? this->m_flags1 | Flag_CreateMusicManager : this->m_flags1 & ~Flag_CreateMusicManager); } + inline void CreateEventManager(MxBool b) { this->m_flags1 = (b == 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); } + inline void CreateTimer(MxBool b) { this->m_flags2 = (b == TRUE ? this->m_flags2 | Flag_CreateTimer : this->m_flags2 & ~Flag_CreateTimer); } + inline void CreateStreamer(MxBool b) { this->m_flags2 = (b == TRUE ? this->m_flags2 | Flag_CreateStreamer : this->m_flags2 & ~Flag_CreateStreamer); } private: unsigned char m_flags1; diff --git a/LEGO1/mxomnicreateparam.h b/LEGO1/mxomnicreateparam.h index ad11cb55..31dcd447 100644 --- a/LEGO1/mxomnicreateparam.h +++ b/LEGO1/mxomnicreateparam.h @@ -1,7 +1,8 @@ #ifndef MXOMNICREATEPARAM_H #define MXOMNICREATEPARAM_H -#include "legoinc.h" +#include + #include "mxomnicreateflags.h" #include "mxomnicreateparambase.h" #include "mxstring.h" diff --git a/LEGO1/mxpalette.cpp b/LEGO1/mxpalette.cpp new file mode 100644 index 00000000..dd245538 --- /dev/null +++ b/LEGO1/mxpalette.cpp @@ -0,0 +1,8 @@ +#include "mxpalette.h" + +// OFFSET: LEGO1 0x100bf150 +MxResult MxPalette::GetEntries(LPPALETTEENTRY p_entries) +{ + memcpy(p_entries, this->m_entries, sizeof(this->m_entries)); + return SUCCESS; +} \ No newline at end of file diff --git a/LEGO1/mxpalette.h b/LEGO1/mxpalette.h index fff36897..b78efd7d 100644 --- a/LEGO1/mxpalette.h +++ b/LEGO1/mxpalette.h @@ -1,11 +1,25 @@ #ifndef MXPALETTE_H #define MXPALETTE_H -class MxPalette +#include + +#include "mxcore.h" +#include "mxtypes.h" + +// VTABLE 0x100dc848 +// SIZE 0x414 +class MxPalette : public MxCore { public: __declspec(dllexport) unsigned char operator==(MxPalette &); __declspec(dllexport) void Detach(); + + MxResult GetEntries(LPPALETTEENTRY p_entries); + +private: + LPDIRECTDRAWPALETTE m_pDirectDrawPalette; + PALETTEENTRY m_entries[256]; + // there's a bit more here }; #endif // MXPALETTE_H diff --git a/LEGO1/mxpresenter.cpp b/LEGO1/mxpresenter.cpp new file mode 100644 index 00000000..893de60d --- /dev/null +++ b/LEGO1/mxpresenter.cpp @@ -0,0 +1,134 @@ +#include "mxpresenter.h" + +// OFFSET: LEGO1 0x1000bee0 STUB +void MxPresenter::DoneTickle() +{ + // TODO +} + +// OFFSET: LEGO1 0x100b4d50 +void MxPresenter::Init() +{ + m_unk0x8 = 0; + m_action = NULL; + m_unk0x18 = 0; + m_unk0x3c = 0; + m_unk0xc = 0; + m_unk0x10 = 0; + m_unk0x14 = 0; +} + +// OFFSET: LEGO1 0x100b4fc0 STUB +void MxPresenter::ParseExtra() +{ + // TODO +} + +// OFFSET: LEGO1 0x1000c070 STUB +MxPresenter::~MxPresenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x100b5200 STUB +long MxPresenter::Tickle() +{ + // TODO + + return 0; +} + +// OFFSET: LEGO1 0x100b4d80 STUB +long MxPresenter::StartAction(MxStreamController *, MxDSAction *) +{ + // TODO + + return 0; +} + +// OFFSET: LEGO1 0x100d4d74 STUB +void MxPresenter::EndAction() +{ + // TODO +} + +// OFFSET: LEGO1 0x100d4d8c STUB +void MxPresenter::Enable(unsigned char) +{ + // TODO +} + +// OFFSET: LEGO1 0x1000be30 STUB +void MxPresenter::VTable0x14() +{ + // TODO +} + +// OFFSET: LEGO1 0x1000be40 STUB +void MxPresenter::VTable0x18() +{ + // TODO +} + +// OFFSET: LEGO1 0x1000be60 STUB +void MxPresenter::VTable0x1c() +{ + // TODO +} + +// OFFSET: LEGO1 0x1000be80 STUB +void MxPresenter::VTable0x20() +{ + // TODO +} + +// OFFSET: LEGO1 0x1000bea0 STUB +void MxPresenter::VTable0x24() +{ + // TODO +} + +// OFFSET: LEGO1 0x1000bec0 STUB +void MxPresenter::VTable0x28() +{ + // TODO +} + +// OFFSET: LEGO1 0x1000bf70 +undefined4 MxPresenter::VTable0x34() +{ + return 0; +} + +// OFFSET: LEGO1 0x1000bf80 +void MxPresenter::InitVirtual() +{ + Init(); +} +// OFFSET: LEGO1 0x1000bf90 STUB +void MxPresenter::VTable0x44(undefined4 param) +{ + // TODO +} + +// OFFSET: LEGO1 0x1000bfb0 STUB +undefined4 MxPresenter::VTable0x48(undefined4 param) +{ + // TODO + + return undefined4(); +} + +// OFFSET: LEGO1 0x1000bfc0 +undefined4 MxPresenter::VTable0x4c() +{ + return 0; +} + +// OFFSET: LEGO1 0x1000bfd0 STUB +undefined MxPresenter::VTable0x50() +{ + // TODO + + return 0; +} diff --git a/LEGO1/mxpresenter.h b/LEGO1/mxpresenter.h index c4890c1f..6ea022da 100644 --- a/LEGO1/mxpresenter.h +++ b/LEGO1/mxpresenter.h @@ -1,18 +1,71 @@ #ifndef MXPRESENTER_H #define MXPRESENTER_H -class MxPresenter +#include "mxcore.h" + +#include "mxcriticalsection.h" + +class MxStreamController; +class MxDSAction; + +#ifndef undefined4 +#define undefined4 int +#endif + +#ifndef undefined +#define undefined int +#endif + +class MxPresenter : public MxCore { -protected: - __declspec(dllexport) virtual void DoneTickle(); - __declspec(dllexport) void Init(); - __declspec(dllexport) virtual void ParseExtra(); public: - __declspec(dllexport) virtual ~MxPresenter(); - __declspec(dllexport) virtual void Enable(unsigned char); - __declspec(dllexport) virtual void EndAction(); - __declspec(dllexport) virtual long StartAction(MxStreamController *, MxDSAction *); - __declspec(dllexport) virtual long Tickle(); + __declspec(dllexport) virtual ~MxPresenter(); // vtable+0x0 + + // OFFSET: LEGO1 0x1000bfe0 + inline virtual const char *ClassName() const // vtable+0xc + { + // 0x100f0740 + return "MxPresenter"; + } + + // OFFSET: LEGO1 0x1000bff0 + inline virtual MxBool IsA(const char *name) const // vtable+0x10 + { + return !strcmp(name, MxPresenter::ClassName()) || MxCore::IsA(name); + } + + __declspec(dllexport) virtual long Tickle(); // vtable+0x8 + virtual void VTable0x14(); // vtable+0x14 + virtual void VTable0x18(); // vtable+0x18 + virtual void VTable0x1c(); // vtable+0x1c + virtual void VTable0x20(); // vtable+0x20 + virtual void VTable0x24(); // vtable+0x24 + virtual void VTable0x28(); // vtable+0x28 + virtual undefined4 VTable0x34(); // vtable+0x34 + virtual void InitVirtual(); // vtable+0x38 + virtual void VTable0x44(undefined4 param); // vtable+0x44 + virtual undefined4 VTable0x48(undefined4 param); // vtable+0x48 + virtual undefined4 VTable0x4c(); // vtable+0x4c + virtual undefined VTable0x50(); // vtable+0x50 +protected: + __declspec(dllexport) virtual void DoneTickle(); // vtable+0x2c + __declspec(dllexport) void Init(); + __declspec(dllexport) virtual void ParseExtra(); // vtable+0x30 +public: + __declspec(dllexport) virtual long StartAction(MxStreamController *, MxDSAction *); // vtable+0x3c + __declspec(dllexport) virtual void EndAction(); // vtable+0x40 + __declspec(dllexport) virtual void Enable(unsigned char); // vtable+0x54 + + int m_unk0x8; + int m_unk0xc; + int m_unk0x10; + int m_unk0x14; + int m_unk0x18; + MxDSAction* m_action; // 0 + MxCriticalSection m_criticalSection; + int m_unk0x3c; + + // VTABLE 0x100d4d38 }; #endif // MXPRESENTER_H diff --git a/LEGO1/mxramstreamcontroller.h b/LEGO1/mxramstreamcontroller.h new file mode 100644 index 00000000..09915cbf --- /dev/null +++ b/LEGO1/mxramstreamcontroller.h @@ -0,0 +1,12 @@ +#ifndef MXRAMSTREAMCONTROLLER_H +#define MXRAMSTREAMCONTROLLER_H + +#include "mxstreamcontroller.h" + +// VTABLE 0x100dc728 +class MxRAMStreamController : public MxStreamController +{ + +}; + +#endif // MXRAMSTREAMCONTROLLER_H diff --git a/LEGO1/mxramstreamprovider.h b/LEGO1/mxramstreamprovider.h new file mode 100644 index 00000000..5422d3b3 --- /dev/null +++ b/LEGO1/mxramstreamprovider.h @@ -0,0 +1,12 @@ +#ifndef MXRAMSTREAMPROVIDER_H +#define MXRAMSTREAMPROVIDER_H + +#include "mxstreamprovider.h" + +// VTABLE 0x100dd0d0 +class MxRAMStreamProvider : public MxStreamProvider +{ + +}; + +#endif // MXRAMSTREAMPROVIDER_H diff --git a/LEGO1/mxresult.h b/LEGO1/mxresult.h deleted file mode 100644 index 7a56f493..00000000 --- a/LEGO1/mxresult.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef MXRESULT_H -#define MXRESULT_H - -typedef unsigned long MxResult; -const MxResult SUCCESS = 0; -const MxResult FAILURE = 0xFFFFFFFFL; - -#endif // MXRESULT_H diff --git a/LEGO1/mxsmkpresenter.cpp b/LEGO1/mxsmkpresenter.cpp new file mode 100644 index 00000000..9f160a99 --- /dev/null +++ b/LEGO1/mxsmkpresenter.cpp @@ -0,0 +1,13 @@ +#include "mxsmkpresenter.h" + +// OFFSET: LEGO1 0x100b3650 STUB +MxSmkPresenter::MxSmkPresenter() +{ + // TODO +} + +// OFFSET: LEGO1 0x100b38d0 STUB +void MxSmkPresenter::Init() +{ + // TODO +} diff --git a/LEGO1/mxsmkpresenter.h b/LEGO1/mxsmkpresenter.h new file mode 100644 index 00000000..b439bc2a --- /dev/null +++ b/LEGO1/mxsmkpresenter.h @@ -0,0 +1,18 @@ +#ifndef MXSMKPRESENTER_H +#define MXSMKPRESENTER_H + +#include "mxvideopresenter.h" + +// VTABLE 0x100dc348 +// SIZE 0x720 +class MxSmkPresenter : public MxVideoPresenter +{ +public: + MxSmkPresenter(); + +private: + void Init(); + +}; + +#endif // MXSMKPRESENTER_H diff --git a/LEGO1/mxsoundmanager.cpp b/LEGO1/mxsoundmanager.cpp new file mode 100644 index 00000000..d12ecee1 --- /dev/null +++ b/LEGO1/mxsoundmanager.cpp @@ -0,0 +1,13 @@ +#include "mxsoundmanager.h" + +// OFFSET: LEGO1 0x100ae740 STUB +MxSoundManager::MxSoundManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x100ae7d0 STUB +MxSoundManager::~MxSoundManager() +{ + // TODO +} diff --git a/LEGO1/mxsoundmanager.h b/LEGO1/mxsoundmanager.h index 7c0b0cf1..3421a5d6 100644 --- a/LEGO1/mxsoundmanager.h +++ b/LEGO1/mxsoundmanager.h @@ -1,9 +1,17 @@ #ifndef MXSOUNDMANAGER_H #define MXSOUNDMANAGER_H +#include "mxcore.h" + +// VTABLE 0x100dc128 +// SIZE 0x3c +// Base vtables are: MxCore -> 0x100dc6b0 -> 0x100dc6e0 -> MxSoundManager class MxSoundManager { - +public: + MxSoundManager(); + virtual ~MxSoundManager() override; // vtable+0x0 + }; #endif // MXSOUNDMANAGER_H diff --git a/LEGO1/mxsoundpresenter.cpp b/LEGO1/mxsoundpresenter.cpp new file mode 100644 index 00000000..50e04ce4 --- /dev/null +++ b/LEGO1/mxsoundpresenter.cpp @@ -0,0 +1 @@ +#include "mxsoundpresenter.h" diff --git a/LEGO1/mxsoundpresenter.h b/LEGO1/mxsoundpresenter.h new file mode 100644 index 00000000..53d7000d --- /dev/null +++ b/LEGO1/mxsoundpresenter.h @@ -0,0 +1,25 @@ +#ifndef MXSOUNDPRESENTER_H +#define MXSOUNDPRESENTER_H + +#include "mxaudiopresenter.h" + +// VTABLE 0x100d4b08 +class MxSoundPresenter : public MxAudioPresenter +{ +public: + // OFFSET: LEGO1 0x1000d4a0 + inline virtual const char *ClassName() const // vtable+0x0c + { + // 0x100f07a0 + return "MxSoundPresenter"; + }; + + // OFFSET: LEGO1 0x1000d4b0 + inline virtual MxBool IsA(const char *name) const // vtable+0x10 + { + return !strcmp(name, MxSoundPresenter::ClassName()) || MxAudioPresenter::IsA(name); + }; + +}; + +#endif // MXSOUNDPRESENTER_H diff --git a/LEGO1/mxstillpresenter.cpp b/LEGO1/mxstillpresenter.cpp new file mode 100644 index 00000000..bc2b03b5 --- /dev/null +++ b/LEGO1/mxstillpresenter.cpp @@ -0,0 +1 @@ +#include "mxstillpresenter.h" diff --git a/LEGO1/mxstillpresenter.h b/LEGO1/mxstillpresenter.h new file mode 100644 index 00000000..d9376b8e --- /dev/null +++ b/LEGO1/mxstillpresenter.h @@ -0,0 +1,13 @@ +#ifndef MXSTILLPRESENTER_H +#define MXSTILLPRESENTER_H + +#include "mxvideopresenter.h" + +// VTABLE 0x100d7a38 +// SIZE 0x6c +class MxStillPresenter : public MxVideoPresenter +{ +public: +}; + +#endif // MXSTILLPRESENTER_H diff --git a/LEGO1/mxstreamchunk.h b/LEGO1/mxstreamchunk.h new file mode 100644 index 00000000..51f1a34d --- /dev/null +++ b/LEGO1/mxstreamchunk.h @@ -0,0 +1,12 @@ +#ifndef MXSTREAMCHUNK_H +#define MXSTREAMCHUNK_H + +#include "mxdschunk.h" + +// VTABLE 0x100dc2a8 +class MxStreamChunk : public MxDSChunk +{ + +}; + +#endif // MXSTREAMCHUNK_H diff --git a/LEGO1/mxstreamcontroller.h b/LEGO1/mxstreamcontroller.h index dba24176..4ec95e9e 100644 --- a/LEGO1/mxstreamcontroller.h +++ b/LEGO1/mxstreamcontroller.h @@ -2,12 +2,25 @@ #define MXSTREAMCONTROLLER_H #include "mxatomid.h" +#include "mxcore.h" -class MxStreamController +// VTABLE 0x100dc968 +class MxStreamController : public MxCore { public: - int m_unk00; - int m_unk04; + // OFFSET: LEGO1 0x100c0f10 + inline virtual const char *ClassName() const override // vtable+0xc + { + // 0x10102130 + return "MxStreamController"; + } + + // OFFSET: LEGO1 0x100c0f20 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxStreamController::ClassName()) || MxCore::IsA(name); + } + int m_unk08; int m_unk0c; int m_unk10; diff --git a/LEGO1/mxstreamer.cpp b/LEGO1/mxstreamer.cpp index 47d27543..42649c0a 100644 --- a/LEGO1/mxstreamer.cpp +++ b/LEGO1/mxstreamer.cpp @@ -1,13 +1,37 @@ #include "mxstreamer.h" -MxStreamController* MxStreamer::Open(const char* name, unsigned short p) +// OFFSET: LEGO1 0x100b91d0 STUB +MxStreamer::~MxStreamer() { - // FIXME: Stub + // TODO +} + +// OFFSET: LEGO1 0x100b9b60 STUB +long MxStreamer::Notify(MxParam &p) +{ + // TODO + return 0; } -long MxStreamer::Close(const char* p) +// OFFSET: LEGO1 0x100b9190 STUB +MxResult MxStreamer::VTable0x14() { - // FIXME: Stub + // TODO + + return MxResult(); +} + +// OFFSET: LEGO1 0x100B92C0 STUB +MxStreamController* MxStreamer::Open(const char* name, unsigned short p) +{ + // TODO + return 0; +} + +// OFFSET: LEGO1 0x100B9570 STUB +long MxStreamer::Close(const char* p) +{ + // TODO return 0; } diff --git a/LEGO1/mxstreamer.h b/LEGO1/mxstreamer.h index 785c475b..f8eeb43b 100644 --- a/LEGO1/mxstreamer.h +++ b/LEGO1/mxstreamer.h @@ -1,14 +1,21 @@ #ifndef MXSTREAMER_H #define MXSTREAMER_H +#include "mxcore.h" #include "mxstreamcontroller.h" +#include "mxtypes.h" -class MxStreamer +// VTABLE 0x100dc710 +class MxStreamer : public MxCore { public: + virtual ~MxStreamer() override; + __declspec(dllexport) MxStreamController *Open(const char *name, unsigned short p); __declspec(dllexport) long Close(const char *p); + virtual long Notify(MxParam &p) override; // vtable+0x4 + virtual MxResult VTable0x14() override; // vtable+0x14 }; #endif // MXSTREAMER_H diff --git a/LEGO1/mxstreamprovider.h b/LEGO1/mxstreamprovider.h new file mode 100644 index 00000000..796d0ed3 --- /dev/null +++ b/LEGO1/mxstreamprovider.h @@ -0,0 +1,23 @@ +#ifndef MXSTREAMPROVIDER_H +#define MXSTREAMPROVIDER_H + +#include "mxcore.h" + +// VTABLE 0x100dd100 +class MxStreamProvider : public MxCore +{ +public: + // OFFSET: LEGO1 0x100d07e0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + return "MxStreamProvider"; + } + + // OFFSET: LEGO1 0x100d07f0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxStreamProvider::ClassName()) || MxCore::IsA(name); + } +}; + +#endif // MXSTREAMPROVIDER_H diff --git a/LEGO1/mxstring.cpp b/LEGO1/mxstring.cpp index 09130a39..e2f24cab 100644 --- a/LEGO1/mxstring.cpp +++ b/LEGO1/mxstring.cpp @@ -6,7 +6,7 @@ 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 = new char[1]; this->m_data[0] = 0; this->m_length = 0; } @@ -15,7 +15,7 @@ MxString::MxString() MxString::MxString(const MxString &str) { this->m_length = str.m_length; - this->m_data = (char *)malloc(this->m_length + 1); + this->m_data = new char[this->m_length + 1]; strcpy(this->m_data, str.m_data); } @@ -24,10 +24,10 @@ MxString::MxString(const char *str) { if (str) { this->m_length = strlen(str); - this->m_data = (char *)malloc(this->m_length + 1); + this->m_data = new char[this->m_length + 1]; strcpy(this->m_data, str); } else { - this->m_data = (char *)malloc(1); + this->m_data = new char[1]; this->m_data[0] = 0; this->m_length = 0; } @@ -36,7 +36,7 @@ MxString::MxString(const char *str) // OFFSET: LEGO1 0x100ae420 MxString::~MxString() { - free(this->m_data); + delete[] this->m_data; } // OFFSET: LEGO1 0x100ae490 @@ -52,30 +52,63 @@ void MxString::ToLowerCase() } // OFFSET: LEGO1 0x100ae4b0 -const MxString &MxString::operator=(MxString *param) +MxString &MxString::operator=(MxString *param) { if (this->m_data != param->m_data) { - free(this->m_data); + delete[] this->m_data; this->m_length = param->m_length; - this->m_data = (char *)malloc(this->m_length + 1); + this->m_data = new char[this->m_length + 1]; strcpy(this->m_data, param->m_data); } return *this; } -// TODO: this *mostly* matches, again weird with the comparison // OFFSET: LEGO1 0x100ae510 const MxString &MxString::operator=(const char *param) { if (this->m_data != param) { - free(this->m_data); + delete[] this->m_data; this->m_length = strlen(param); - this->m_data = (char *)malloc(this->m_length + 1); + this->m_data = new char[this->m_length + 1]; strcpy(this->m_data, param); } return *this; } + +// Return type is intentionally just MxString, not MxString&. +// This forces MSVC to add $ReturnUdt$ to the stack for 100% match. +// OFFSET: LEGO1 0x100ae580 +MxString MxString::operator+(const char *str) +{ + // MxString constructor allocates 1 byte for m_data, so free that first + MxString tmp; + delete[] tmp.m_data; + + tmp.m_length = strlen(str) + this->m_length; + tmp.m_data = new char[tmp.m_length + 1]; + + strcpy(tmp.m_data, this->m_data); + strcpy(tmp.m_data + this->m_length, str); + + return MxString(tmp); +} + +// OFFSET: LEGO1 0x100ae690 +MxString& MxString::operator+=(const char *str) +{ + int newlen = this->m_length + strlen(str); + + char *tmp = new char[newlen + 1]; + strcpy(tmp, this->m_data); + strcpy(tmp + this->m_length, str); + + delete[] this->m_data; + this->m_length = newlen; + this->m_data = tmp; + + return *this; +} diff --git a/LEGO1/mxstring.h b/LEGO1/mxstring.h index 0f9ff9f3..a6552bb5 100644 --- a/LEGO1/mxstring.h +++ b/LEGO1/mxstring.h @@ -3,6 +3,7 @@ #include "mxcore.h" +// VTABLE 0x100dc110 class MxString : public MxCore { public: @@ -14,7 +15,11 @@ class MxString : public MxCore MxString(const char *); void ToUpperCase(); void ToLowerCase(); - const MxString &operator=(MxString *); + MxString& operator=(MxString *); + MxString operator+(const char *); + MxString& operator+=(const char *); + + inline const char *GetData() const { return m_data; } private: char *m_data; diff --git a/LEGO1/mxticklemanager.h b/LEGO1/mxticklemanager.h index afcea455..7ef50622 100644 --- a/LEGO1/mxticklemanager.h +++ b/LEGO1/mxticklemanager.h @@ -3,14 +3,15 @@ #include "mxcore.h" +// VTABLE 0x100d86d8 class MxTickleManager : public MxCore { public: virtual ~MxTickleManager(); virtual long Tickle(); - virtual const char *GetClassName() const; - virtual MxBool IsClass(const char *name) const; + virtual const char *ClassName() const; + virtual MxBool IsA(const char *name) const; virtual void vtable14(); virtual void vtable18(); virtual void vtable1c(void *v, int p); diff --git a/LEGO1/mxtimer.cpp b/LEGO1/mxtimer.cpp index 0b51e9da..47afaa03 100644 --- a/LEGO1/mxtimer.cpp +++ b/LEGO1/mxtimer.cpp @@ -1,6 +1,6 @@ #include "mxtimer.h" -#include "legoinc.h" +#include // 0x10101414 long MxTimer::s_LastTimeCalculated = 0; @@ -11,7 +11,7 @@ long MxTimer::s_LastTimeTimerStarted = 0; // OFFSET: LEGO1 0x100ae060 MxTimer::MxTimer() { - this->m_isRunning = MX_FALSE; + this->m_isRunning = FALSE; m_startTime = timeGetTime(); // yeah this is somehow what the asm is s_LastTimeCalculated = m_startTime; @@ -21,7 +21,7 @@ MxTimer::MxTimer() void MxTimer::Start() { s_LastTimeTimerStarted = this->GetRealTime(); - this->m_isRunning = MX_TRUE; + this->m_isRunning = TRUE; } // OFFSET: LEGO1 0x100ae180 @@ -29,7 +29,7 @@ void MxTimer::Stop() { long elapsed = this->GetRealTime(); long startTime = elapsed - MxTimer::s_LastTimeTimerStarted; - this->m_isRunning = MX_FALSE; + this->m_isRunning = FALSE; // this feels very stupid but it's what the assembly does this->m_startTime = this->m_startTime + startTime - 5; } diff --git a/LEGO1/mxtimer.h b/LEGO1/mxtimer.h index d54a1da6..564eedfa 100644 --- a/LEGO1/mxtimer.h +++ b/LEGO1/mxtimer.h @@ -3,6 +3,8 @@ #include "mxcore.h" +// VTABLE 0x100dc0e0 +// SIZE 0x10 class MxTimer : public MxCore { public: diff --git a/LEGO1/mxtransitionmanager.cpp b/LEGO1/mxtransitionmanager.cpp index eb01b33a..8626453f 100644 --- a/LEGO1/mxtransitionmanager.cpp +++ b/LEGO1/mxtransitionmanager.cpp @@ -1,6 +1,27 @@ #include "mxtransitionmanager.h" +// OFFSET: LEGO1 0x1004b8d0 STUB +MxTransitionManager::MxTransitionManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x1004ba00 STUB +MxTransitionManager::~MxTransitionManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x1004bac0 STUB +long MxTransitionManager::Tickle() +{ + // TODO + + return 0; +} + +// OFFSET: LEGO1 0x1004C470 STUB void MxTransitionManager::SetWaitIndicator(MxVideoPresenter* videoPresenter) { - // FIXME: Stub + // TODO } diff --git a/LEGO1/mxtransitionmanager.h b/LEGO1/mxtransitionmanager.h index 904070b9..3fdb1ebf 100644 --- a/LEGO1/mxtransitionmanager.h +++ b/LEGO1/mxtransitionmanager.h @@ -1,12 +1,19 @@ #ifndef MXTRANSITIONMANAGER_H #define MXTRANSITIONMANAGER_H +#include "mxcore.h" + class MxVideoPresenter; -class MxTransitionManager +// 0x100d7ea0 +class MxTransitionManager : public MxCore { public: + virtual ~MxTransitionManager(); // vtable+0x0 + __declspec(dllexport) void SetWaitIndicator(MxVideoPresenter *videoPresenter); + + virtual long Tickle(); // vtable+0x8 }; #endif // MXTRANSITIONMANAGER_H diff --git a/LEGO1/mxtypes.h b/LEGO1/mxtypes.h new file mode 100644 index 00000000..71421d91 --- /dev/null +++ b/LEGO1/mxtypes.h @@ -0,0 +1,29 @@ +#ifndef MXTYPE_H +#define MXTYPE_H + +typedef unsigned char MxU8; +typedef char MxS8; +typedef unsigned short MxU16; +typedef short MxS16; +typedef unsigned int MxU32; +typedef int MxS32; + +typedef unsigned long MxResult; +const MxResult SUCCESS = 0; +const MxResult FAILURE = 0xFFFFFFFFL; + +typedef unsigned char MxBool; + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +#if defined(_MSC_VER) && _MSC_VER <= 1200 // 1200 corresponds to VC6.0 but "override" was probably added even later +#define override +#endif + +#endif // MXTYPE_H diff --git a/LEGO1/mxunknown100dc6b0.cpp b/LEGO1/mxunknown100dc6b0.cpp new file mode 100644 index 00000000..029be1f7 --- /dev/null +++ b/LEGO1/mxunknown100dc6b0.cpp @@ -0,0 +1,15 @@ +#include "mxunknown100dc6b0.h" + +// OFFSET: LEGO1 0x100b84c0 +MxUnknown100dc6b0::MxUnknown100dc6b0() +{ + Init(); +} + +// OFFSET: LEGO1 0x100b85d0 +MxResult MxUnknown100dc6b0::Init() +{ + this->m_unk08 = 0; + this->m_unk0c = 0; + return SUCCESS; +} diff --git a/LEGO1/mxunknown100dc6b0.h b/LEGO1/mxunknown100dc6b0.h new file mode 100644 index 00000000..ca2ee600 --- /dev/null +++ b/LEGO1/mxunknown100dc6b0.h @@ -0,0 +1,24 @@ +#ifndef MXUNKNOWN100DC6B0_H +#define MXUNKNOWN100DC6B0_H + +#include "mxcore.h" +#include "mxcriticalsection.h" +#include "mxtypes.h" + +// VTABLE 0x100dc6b0 +class MxUnknown100dc6b0 : public MxCore +{ +public: + MxUnknown100dc6b0(); + + MxResult Init(); + +private: + int m_unk08; + int m_unk0c; + +protected: + MxCriticalSection m_criticalSection; +}; + +#endif // MXUNKNOWN100DC6B0_H diff --git a/LEGO1/mxvariabletable.h b/LEGO1/mxvariabletable.h index a82b25c4..13c70658 100644 --- a/LEGO1/mxvariabletable.h +++ b/LEGO1/mxvariabletable.h @@ -3,6 +3,8 @@ class MxVariable; +// VTABLE 0x100dc1c8 +// SIZE 0x28 class MxVariableTable { public: diff --git a/LEGO1/mxvideomanager.cpp b/LEGO1/mxvideomanager.cpp new file mode 100644 index 00000000..455f4f61 --- /dev/null +++ b/LEGO1/mxvideomanager.cpp @@ -0,0 +1,50 @@ +#include "mxvideomanager.h" + +// OFFSET: LEGO1 0x100be2a0 STUB +MxVideoManager::~MxVideoManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x100bea90 STUB +long MxVideoManager::Tickle() +{ + // TODO + + return 0; +} + +// OFFSET: LEGO1 0x100be1f0 +MxVideoManager::MxVideoManager() +{ + Init(); +} + +// OFFSET: LEGO1 0x100be320 +int MxVideoManager::Init() +{ + this->m_unk50 = 0; + this->m_unk54 = NULL; + this->m_unk58 = NULL; + this->m_unk5c = 0; + this->m_videoParam.SetPalette(NULL); + this->m_unk60 = FALSE; + return 0; +} + +// OFFSET: LEGO1 0x100bebe0 +long MxVideoManager::RealizePalette(MxPalette *p_palette) +{ + PALETTEENTRY paletteEntries[256]; + + this->m_criticalSection.Enter(); + + if (p_palette && this->m_videoParam.GetPalette()) + { + p_palette->GetEntries(paletteEntries); + // TODO + } + + this->m_criticalSection.Leave(); + return 0; +} diff --git a/LEGO1/mxvideomanager.h b/LEGO1/mxvideomanager.h index f2805b15..d8e0c7bd 100644 --- a/LEGO1/mxvideomanager.h +++ b/LEGO1/mxvideomanager.h @@ -1,11 +1,34 @@ #ifndef MXVIDEOMANAGER_H #define MXVIDEOMANAGER_H -class MxVideoManager +#include "mxunknown100dc6b0.h" +#include "mxvideoparam.h" + +// VTABLE 0x100dc810 +// SIZE 0x64 +class MxVideoManager : public MxUnknown100dc6b0 { public: + virtual ~MxVideoManager(); + + virtual long Tickle(); // vtable+0x8 + __declspec(dllexport) void InvalidateRect(MxRect32 &); - __declspec(dllexport) virtual long RealizePalette(MxPalette *); + __declspec(dllexport) virtual long RealizePalette(MxPalette *); // vtable+0x30 + + MxVideoManager(); + + int Init(); + + inline MxVideoParam& GetVideoParam() { return this->m_videoParam; } + +private: + MxVideoParam m_videoParam; + int m_unk50; + LPDIRECTDRAWSURFACE m_unk54; + void* m_unk58; + int m_unk5c; + MxBool m_unk60; }; #endif // MXVIDEOMANAGER_H diff --git a/LEGO1/mxvideoparam.h b/LEGO1/mxvideoparam.h index aeb50554..3e00a920 100644 --- a/LEGO1/mxvideoparam.h +++ b/LEGO1/mxvideoparam.h @@ -1,8 +1,11 @@ #ifndef MXVIDEOPARAM_H #define MXVIDEOPARAM_H +#include + #include "mxpalette.h" #include "mxrect32.h" +#include "mxtypes.h" #include "mxvariabletable.h" #include "mxvideoparamflags.h" @@ -19,6 +22,9 @@ class MxVideoParam inline MxVideoParamFlags &flags() { return m_flags; } + inline void SetPalette(MxPalette *p_palette) { this->m_palette = p_palette; } + inline MxPalette *GetPalette() { return this->m_palette; } + private: MxRect32 m_rect; MxPalette *m_palette; diff --git a/LEGO1/mxvideoparamflags.h b/LEGO1/mxvideoparamflags.h index 3897c788..f25ab4bd 100644 --- a/LEGO1/mxvideoparamflags.h +++ b/LEGO1/mxvideoparamflags.h @@ -1,7 +1,7 @@ #ifndef MXVIDEOPARAMFLAGS_H #define MXVIDEOPARAMFLAGS_H -#include "legoinc.h" +#include // Must be union with struct for match. typedef union { @@ -40,6 +40,23 @@ class MxVideoParamFlags inline void Set_f2bit6(BOOL e) { m_flags2.bit6 = e; } inline void Set_f2bit7(BOOL e) { m_flags2.bit7 = e; } + inline BYTE GetFullScreen() { return m_flags1.bit0; } + inline BYTE GetFlipSurfaces() { return m_flags1.bit1; } + inline BYTE GetBackBuffers() { return m_flags1.bit2; } + inline BYTE Get_f1bit3() { return m_flags1.bit3; } + inline BYTE Get_f1bit4() { return m_flags1.bit4; } + inline BYTE Get16Bit() { return m_flags1.bit5; } + inline BYTE GetWideViewAngle() { return m_flags1.bit6; } + inline BYTE Get_f1bit7() { return m_flags1.bit7; } + inline BYTE Get_f2bit0() { return m_flags2.bit0; } + inline BYTE Get_f2bit1() { return m_flags2.bit1; } + inline BYTE Get_f2bit2() { return m_flags2.bit2; } + inline BYTE Get_f2bit3() { return m_flags2.bit3; } + inline BYTE Get_f2bit4() { return m_flags2.bit4; } + inline BYTE Get_f2bit5() { return m_flags2.bit5; } + inline BYTE Get_f2bit6() { return m_flags2.bit6; } + inline BYTE Get_f2bit7() { return m_flags2.bit7; } + private: flag_bitfield m_flags1; flag_bitfield m_flags2; diff --git a/LEGO1/mxvideopresenter.cpp b/LEGO1/mxvideopresenter.cpp new file mode 100644 index 00000000..894b1e9c --- /dev/null +++ b/LEGO1/mxvideopresenter.cpp @@ -0,0 +1 @@ +#include "mxvideopresenter.h" diff --git a/LEGO1/mxvideopresenter.h b/LEGO1/mxvideopresenter.h new file mode 100644 index 00000000..eba5040c --- /dev/null +++ b/LEGO1/mxvideopresenter.h @@ -0,0 +1,23 @@ +#ifndef MXVIDEOPRESENTER_H +#define MXVIDEOPRESENTER_H + +#include "mxmediapresenter.h" + +class MxVideoPresenter : public MxMediaPresenter +{ +public: + // OFFSET: LEGO1 0x1000c820 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0760 + return "MxVideoPresenter"; + } + + // OFFSET: LEGO1 0x1000c830 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxVideoPresenter::ClassName()) || MxMediaPresenter::IsA(name); + } +}; + +#endif // MXVIDEOPRESENTER_H diff --git a/LEGO1/mxwavepresenter.cpp b/LEGO1/mxwavepresenter.cpp new file mode 100644 index 00000000..bfd69c5f --- /dev/null +++ b/LEGO1/mxwavepresenter.cpp @@ -0,0 +1,7 @@ +#include "mxwavepresenter.h" + +// OFFSET: LEGO1 0x100b1ad0 STUB +void MxWavePresenter::Init() +{ + // TODO +} diff --git a/LEGO1/mxwavepresenter.h b/LEGO1/mxwavepresenter.h new file mode 100644 index 00000000..c00d978d --- /dev/null +++ b/LEGO1/mxwavepresenter.h @@ -0,0 +1,16 @@ +#ifndef MXWAVEPRESENTER_H +#define MXWAVEPRESENTER_H + +#include "mxsoundpresenter.h" + +// VTABLE 0x100d49a8 +// SIZE 0x6c +class MxWavePresenter : public MxSoundPresenter +{ +private: + void Init(); + +public: +}; + +#endif // MXWAVEPRESENTER_H diff --git a/LEGO1/pizza.cpp b/LEGO1/pizza.cpp new file mode 100644 index 00000000..e7e9c552 --- /dev/null +++ b/LEGO1/pizza.cpp @@ -0,0 +1,13 @@ +#include "pizza.h" + +// OFFSET: LEGO1 0x10037ef0 STUB +Pizza::Pizza() +{ + // TODO +} + +// OFFSET: LEGO1 0x10038100 STUB +Pizza::~Pizza() +{ + // TODO +} diff --git a/LEGO1/pizza.h b/LEGO1/pizza.h new file mode 100644 index 00000000..c47ef40e --- /dev/null +++ b/LEGO1/pizza.h @@ -0,0 +1,16 @@ +#ifndef PIZZA_H +#define PIZZA_H + +#include "isleactor.h" + +// VTABLE 0x100d7380 +// SIZE 0x9c +class Pizza : public IsleActor +{ +public: + Pizza(); + virtual ~Pizza() override; + +}; + +#endif // PIZZA_H diff --git a/LEGO1/pizzamissionstate.cpp b/LEGO1/pizzamissionstate.cpp new file mode 100644 index 00000000..5dc85dcc --- /dev/null +++ b/LEGO1/pizzamissionstate.cpp @@ -0,0 +1 @@ +#include "pizzamissionstate.h" diff --git a/LEGO1/pizzamissionstate.h b/LEGO1/pizzamissionstate.h new file mode 100644 index 00000000..575c4972 --- /dev/null +++ b/LEGO1/pizzamissionstate.h @@ -0,0 +1,25 @@ +#ifndef PIZZAMISSIONSTATE_H +#define PIZZAMISSIONSTATE_H + +#include "legostate.h" + +// VTABLE 0x100d7408 +class PizzaMissionState : public LegoState +{ +public: + // OFFSET: LEGO1 0x10039290 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f00d4 + return "PizzaMissionState"; + } + + // OFFSET: LEGO1 0x100392a0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, PizzaMissionState::ClassName()) || LegoState::IsA(name); + } + +}; + +#endif // PIZZAMISSIONSTATE_H diff --git a/LEGO1/pizzeria.cpp b/LEGO1/pizzeria.cpp new file mode 100644 index 00000000..3b6e8d41 --- /dev/null +++ b/LEGO1/pizzeria.cpp @@ -0,0 +1 @@ +#include "pizzeria.h" diff --git a/LEGO1/pizzeria.h b/LEGO1/pizzeria.h new file mode 100644 index 00000000..54f1a200 --- /dev/null +++ b/LEGO1/pizzeria.h @@ -0,0 +1,13 @@ +#ifndef PIZZERIASTATE_H +#define PIZZERIASTATE_H + +#include "isleactor.h" + +// VTABLE 0x100d5520 +// SIZE 0x84 +class Pizzeria : public IsleActor +{ +public: +}; + +#endif // PIZZERIASTATE_H diff --git a/LEGO1/pizzeriastate.cpp b/LEGO1/pizzeriastate.cpp new file mode 100644 index 00000000..85f8aef0 --- /dev/null +++ b/LEGO1/pizzeriastate.cpp @@ -0,0 +1,7 @@ +#include "pizzeriastate.h" + +// OFFSET: LEGO1 0x10017af0 STUB +PizzeriaState::PizzeriaState() +{ + // TODO +} diff --git a/LEGO1/pizzeriastate.h b/LEGO1/pizzeriastate.h new file mode 100644 index 00000000..70b1f127 --- /dev/null +++ b/LEGO1/pizzeriastate.h @@ -0,0 +1,15 @@ +#ifndef PIZZERIASTATE_H +#define PIZZERIASTATE_H + +#include "legostate.h" + +// VTABLE 0x100d5ee8 +// SIZE 0xb4 +class PizzeriaState : public LegoState +{ +public: + PizzeriaState(); + +}; + +#endif // PIZZERIASTATE_H diff --git a/LEGO1/police.cpp b/LEGO1/police.cpp new file mode 100644 index 00000000..bd268411 --- /dev/null +++ b/LEGO1/police.cpp @@ -0,0 +1,21 @@ +#include "police.h" + +// OFFSET: LEGO1 0x1005e130 STUB +Police::Police() +{ + // TODO +} + +// OFFSET: LEGO1 0x1005e320 STUB +Police::~Police() +{ + // TODO +} + +// OFFSET: LEGO1 0x1005e480 STUB +long Police::Notify(MxParam &p) +{ + // TODO + + return 0; +} diff --git a/LEGO1/police.h b/LEGO1/police.h new file mode 100644 index 00000000..c4bea1cf --- /dev/null +++ b/LEGO1/police.h @@ -0,0 +1,19 @@ +#ifndef POLICE_H +#define POLICE_H + +#include "legoworld.h" + +// VTABLE 0x100d8a80 +// SIZE 0x110 +// Radio at 0xf8 +class Police : public LegoWorld +{ +public: + Police(); + virtual ~Police() override; // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x4 + +}; + +#endif // POLICE_H diff --git a/LEGO1/policeentity.cpp b/LEGO1/policeentity.cpp new file mode 100644 index 00000000..b4492be5 --- /dev/null +++ b/LEGO1/policeentity.cpp @@ -0,0 +1 @@ +#include "policeentity.h" diff --git a/LEGO1/policeentity.h b/LEGO1/policeentity.h new file mode 100644 index 00000000..a23cced4 --- /dev/null +++ b/LEGO1/policeentity.h @@ -0,0 +1,13 @@ +#ifndef POLICEENTITY_H +#define POLICEENTITY_H + +#include "buildingentity.h" + +// VTABLE 0x100d4ab0 +// SIZE 0x68 +class PoliceEntity : public BuildingEntity +{ + +}; + +#endif // POLICEENTITY_H diff --git a/LEGO1/policestate.cpp b/LEGO1/policestate.cpp new file mode 100644 index 00000000..e0995f35 --- /dev/null +++ b/LEGO1/policestate.cpp @@ -0,0 +1,7 @@ +#include "policestate.h" + +// OFFSET: LEGO1 0x1005e7c0 STUB +PoliceState::PoliceState() +{ + // TODO +} diff --git a/LEGO1/policestate.h b/LEGO1/policestate.h new file mode 100644 index 00000000..e43b5c5a --- /dev/null +++ b/LEGO1/policestate.h @@ -0,0 +1,27 @@ +#ifndef POLICESTATE_H +#define POLICESTATE_H + +#include "legostate.h" + +// VTABLE 0x100d8af0 +// SIZE 0x10 +class PoliceState : public LegoState +{ +public: + PoliceState(); + + // OFFSET: LEGO1 0x1005e860 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0444 + return "PoliceState"; + } + + // OFFSET: LEGO1 0x1005e870 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, PoliceState::ClassName()) || LegoState::IsA(name); + } +}; + +#endif // POLICESTATE_H diff --git a/LEGO1/racecar.cpp b/LEGO1/racecar.cpp new file mode 100644 index 00000000..59bb5146 --- /dev/null +++ b/LEGO1/racecar.cpp @@ -0,0 +1,13 @@ +#include "racecar.h" + +// OFFSET: LEGO1 0x10028200 STUB +RaceCar::RaceCar() +{ + // TODO +} + +// OFFSET: LEGO1 0x10028420 STUB +RaceCar::~RaceCar() +{ + // TODO +} diff --git a/LEGO1/racecar.h b/LEGO1/racecar.h new file mode 100644 index 00000000..f8bd6ccf --- /dev/null +++ b/LEGO1/racecar.h @@ -0,0 +1,15 @@ +#ifndef RACECAR_H +#define RACECAR_H + +#include "islepathactor.h" + +// VTABLE 0x100d6918 +// SIZE 0x164 +class RaceCar : public IslePathActor +{ +public: + RaceCar(); + virtual ~RaceCar() override; // vtable+0x0 +}; + +#endif // RACECAR_H diff --git a/LEGO1/racestandsentity.cpp b/LEGO1/racestandsentity.cpp new file mode 100644 index 00000000..13e65bb4 --- /dev/null +++ b/LEGO1/racestandsentity.cpp @@ -0,0 +1 @@ +#include "racestandsentity.h" diff --git a/LEGO1/racestandsentity.h b/LEGO1/racestandsentity.h new file mode 100644 index 00000000..cbf0946c --- /dev/null +++ b/LEGO1/racestandsentity.h @@ -0,0 +1,12 @@ +#ifndef RACESTANDSENTITY_H +#define RACESTANDSENTITY_H + +#include "buildingentity.h" + +// VTABLE 0x100d48a8 +// SIZE 0x68 +class RaceStandsEntity : public BuildingEntity +{ +}; + +#endif // RACESTANDSENTITY_H diff --git a/LEGO1/racestate.cpp b/LEGO1/racestate.cpp new file mode 100644 index 00000000..4eeb21b7 --- /dev/null +++ b/LEGO1/racestate.cpp @@ -0,0 +1,7 @@ +#include "racestate.h" + +// OFFSET: LEGO1 0x10015f30 STUB +RaceState::RaceState() +{ + // TODO +} diff --git a/LEGO1/racestate.h b/LEGO1/racestate.h new file mode 100644 index 00000000..b9415051 --- /dev/null +++ b/LEGO1/racestate.h @@ -0,0 +1,28 @@ +#ifndef RACESTATE_H +#define RACESTATE_H + +#include "legostate.h" + +// VTABLE 0x100d5e30 +// SIZE probably 0x2c +class RaceState : public LegoState +{ +public: + RaceState(); + + // OFFSET: LEGO1 0x10016010 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f07d0 + return "RaceState"; + } + + // OFFSET: LEGO1 0x10016020 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, RaceState::ClassName()) || LegoState::IsA(name); + } + +}; + +#endif // RACESTATE_H diff --git a/LEGO1/radio.cpp b/LEGO1/radio.cpp new file mode 100644 index 00000000..935fb141 --- /dev/null +++ b/LEGO1/radio.cpp @@ -0,0 +1,7 @@ +#include "radio.h" + +// OFFSET: LEGO1 0x1002c990 STUB +Radio::~Radio() +{ + // TODO +} \ No newline at end of file diff --git a/LEGO1/radio.h b/LEGO1/radio.h new file mode 100644 index 00000000..83b3a445 --- /dev/null +++ b/LEGO1/radio.h @@ -0,0 +1,14 @@ +#ifndef RADIO_H +#define RADIO_H + +#include "mxcore.h" + +// VTABLE 0x100d6d10 +class Radio : public MxCore +{ +public: + virtual ~Radio() override; + +}; + +#endif // RADIO_H diff --git a/LEGO1/radiostate.cpp b/LEGO1/radiostate.cpp new file mode 100644 index 00000000..e6ce8782 --- /dev/null +++ b/LEGO1/radiostate.cpp @@ -0,0 +1,7 @@ +#include "radiostate.h" + +// OFFSET: LEGO1 0x1002ce10 STUB +RadioState::RadioState() +{ + // TODO +} diff --git a/LEGO1/radiostate.h b/LEGO1/radiostate.h new file mode 100644 index 00000000..99c1c925 --- /dev/null +++ b/LEGO1/radiostate.h @@ -0,0 +1,28 @@ +#ifndef RADIOSTATE_H +#define RADIOSTATE_H + +#include "legostate.h" + +// VTABLE 0x100d6d28 +// SIZE 0x30 +class RadioState : public LegoState +{ +public: + RadioState(); + + // OFFSET: LEGO1 0x1002cf60 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f04f8 + return "RadioState"; + } + + // OFFSET: LEGO1 0x1002cf70 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, RadioState::ClassName()) || LegoState::IsA(name); + } + +}; + +#endif // RADIOSTATE_H diff --git a/LEGO1/registrationbook.cpp b/LEGO1/registrationbook.cpp new file mode 100644 index 00000000..5668d31c --- /dev/null +++ b/LEGO1/registrationbook.cpp @@ -0,0 +1,21 @@ +#include "registrationbook.h" + +// OFFSET: LEGO1 0x10076d20 STUB +RegistrationBook::RegistrationBook() +{ + // TODO +} + +// OFFSET: LEGO1 0x10076f50 STUB +RegistrationBook::~RegistrationBook() +{ + // TODO +} + +// OFFSET: LEGO1 0x100770e0 STUB +long RegistrationBook::Notify(MxParam &p) +{ + // TODO + + return 0; +} diff --git a/LEGO1/registrationbook.h b/LEGO1/registrationbook.h new file mode 100644 index 00000000..4dba2173 --- /dev/null +++ b/LEGO1/registrationbook.h @@ -0,0 +1,18 @@ +#ifndef REGISTRATIONBOOK_H +#define REGISTRATIONBOOK_H + +#include "legoworld.h" + +// VTABLE 0x100d9928 +// SIZE 0x2d0 +class RegistrationBook : public LegoWorld +{ +public: + RegistrationBook(); + virtual ~RegistrationBook() override; // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x4 + +}; + +#endif // REGISTRATIONBOOK_H diff --git a/LEGO1/score.cpp b/LEGO1/score.cpp new file mode 100644 index 00000000..4e3c7801 --- /dev/null +++ b/LEGO1/score.cpp @@ -0,0 +1,21 @@ +#include "score.h" + +// OFFSET: LEGO1 0x10001000 STUB +Score::Score() +{ + // TODO +} + +// OFFSET: LEGO1 0x10001200 STUB +Score::~Score() +{ + // TODO +} + +// OFFSET: LEGO1 0x10001410 STUB +long Score::Notify(MxParam &p) +{ + // TODO + + return 0; +} diff --git a/LEGO1/score.h b/LEGO1/score.h new file mode 100644 index 00000000..d2a7a7f6 --- /dev/null +++ b/LEGO1/score.h @@ -0,0 +1,18 @@ +#ifndef SCORE_H +#define SCORE_H + +#include "legoworld.h" + +// VTABLE 0x100d4018 +// SIZE 0x104 +class Score : public LegoWorld +{ +public: + Score(); + virtual ~Score() override; // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x4 + +}; + +#endif // SCORE_H diff --git a/LEGO1/scorestate.cpp b/LEGO1/scorestate.cpp new file mode 100644 index 00000000..826ab482 --- /dev/null +++ b/LEGO1/scorestate.cpp @@ -0,0 +1 @@ +#include "scorestate.h" diff --git a/LEGO1/scorestate.h b/LEGO1/scorestate.h new file mode 100644 index 00000000..4f5a8dc2 --- /dev/null +++ b/LEGO1/scorestate.h @@ -0,0 +1,26 @@ +#ifndef SCORESTATE_H +#define SCORESTATE_H + +#include "legostate.h" + +// VTABLE 0x100d53f8 +// SIZE 0xc +class ScoreState : public LegoState +{ +public: + // OFFSET: LEGO1 0x1000de40 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0084 + return "ScoreState"; + }; + + // OFFSET: LEGO1 0x1000de50 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, ScoreState::ClassName()) || LegoState::IsA(name); + }; + +}; + +#endif // SCORESTATE_H diff --git a/LEGO1/skateboard.cpp b/LEGO1/skateboard.cpp new file mode 100644 index 00000000..42466206 --- /dev/null +++ b/LEGO1/skateboard.cpp @@ -0,0 +1,7 @@ +#include "skateboard.h" + +// OFFSET: LEGO1 0x1000fd40 STUB +SkateBoard::SkateBoard() +{ + // TODO +} diff --git a/LEGO1/skateboard.h b/LEGO1/skateboard.h new file mode 100644 index 00000000..f290dc7b --- /dev/null +++ b/LEGO1/skateboard.h @@ -0,0 +1,15 @@ +#ifndef SKATEBOARD_H +#define SKATEBOARD_H + +#include "islepathactor.h" + +// VTABLE 0x100d55f0 +// SIZE 0x168 +class SkateBoard : public IslePathActor +{ +public: + SkateBoard(); + +}; + +#endif // SKATEBOARD_H diff --git a/LEGO1/towtrack.cpp b/LEGO1/towtrack.cpp new file mode 100644 index 00000000..90d3d018 --- /dev/null +++ b/LEGO1/towtrack.cpp @@ -0,0 +1,7 @@ +#include "towtrack.h" + +// OFFSET: LEGO1 0x1004c720 STUB +TowTrack::TowTrack() +{ + // TODO +} diff --git a/LEGO1/towtrack.h b/LEGO1/towtrack.h new file mode 100644 index 00000000..95e6885a --- /dev/null +++ b/LEGO1/towtrack.h @@ -0,0 +1,16 @@ +#ifndef TOWTRACK_H +#define TOWTRACK_H + +#include "islepathactor.h" + +// VTABLE 0x100d7ee0 +// SIZE 0x180 +class TowTrack : public IslePathActor +{ +public: + TowTrack(); + +}; + + +#endif // TOWTRACK_H diff --git a/LEGO1/towtrackmissionstate.cpp b/LEGO1/towtrackmissionstate.cpp new file mode 100644 index 00000000..b85c40cc --- /dev/null +++ b/LEGO1/towtrackmissionstate.cpp @@ -0,0 +1,7 @@ +#include "towtrackmissionstate.h" + +// OFFSET: LEGO1 0x1004dd30 STUB +TowTrackMissionState::TowTrackMissionState() +{ + // TODO +} diff --git a/LEGO1/towtrackmissionstate.h b/LEGO1/towtrackmissionstate.h new file mode 100644 index 00000000..a335584f --- /dev/null +++ b/LEGO1/towtrackmissionstate.h @@ -0,0 +1,28 @@ +#ifndef TOWTRACKMISSIONSTATE_H +#define TOWTRACKMISSIONSTATE_H + +#include "legostate.h" + +// VTABLE 0x100d7fd8 +// SIZE 0x28 +class TowTrackMissionState : LegoState +{ +public: + TowTrackMissionState(); + + // OFFSET: LEGO1 0x1004dfa0 + inline virtual const char *ClassName() const // vtable+0x0c + { + // 0x100f00bc + return "TowTrackMissionState"; + }; + + // OFFSET: LEGO1 0x1004dfb0 + inline virtual MxBool IsA(const char *name) const // vtable+0x10 + { + return !strcmp(name, TowTrackMissionState::ClassName()) || LegoState::IsA(name); + }; + +}; + +#endif // TOWTRACKMISSIONSTATE_H diff --git a/README.md b/README.md index 14b0f424..f89f1f15 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ This is a **work-in-progress** decompilation of LEGO Island version 1.1. It aims ## Status -*TODO: A progress bar showing the percentage progress of this decompilation.* + Currently `ISLE.EXE` is completely decompiled, however there are some known inaccuracies. It should work if you pair it with the original game's `LEGO1.DLL` (and other files), however small things may not work correctly yet. Work on decompiling `LEGO1.DLL` has only just started and currently it is too incomplete to be usable. diff --git a/isle.mak b/isle.mak index 78b41308..90a2cead 100644 --- a/isle.mak +++ b/isle.mak @@ -34,7 +34,7 @@ NULL=nul !ENDIF ################################################################################ # Begin Project -# PROP Target_Last_Scanned "isle - Win32 Debug" +# PROP Target_Last_Scanned "ISLE - Win32 Debug" !IF "$(CFG)" == "LEGO1 - Win32 Release" @@ -54,22 +54,153 @@ INTDIR=.\LEGO1\Release ALL : ".\Release\LEGO1.DLL" CLEAN : + -@erase "$(INTDIR)\act1state.obj" + -@erase "$(INTDIR)\act2brick.obj" + -@erase "$(INTDIR)\act2policestation.obj" + -@erase "$(INTDIR)\act3.obj" + -@erase "$(INTDIR)\act3shark.obj" + -@erase "$(INTDIR)\act3state.obj" + -@erase "$(INTDIR)\ambulance.obj" + -@erase "$(INTDIR)\ambulancemissionstate.obj" + -@erase "$(INTDIR)\animstate.obj" + -@erase "$(INTDIR)\beachhouseentity.obj" + -@erase "$(INTDIR)\bike.obj" + -@erase "$(INTDIR)\buildingentity.obj" + -@erase "$(INTDIR)\bumpbouy.obj" + -@erase "$(INTDIR)\carrace.obj" -@erase "$(INTDIR)\dllmain.obj" + -@erase "$(INTDIR)\dunebuggy.obj" + -@erase "$(INTDIR)\elevatorbottom.obj" + -@erase "$(INTDIR)\gasstation.obj" + -@erase "$(INTDIR)\gasstationentity.obj" + -@erase "$(INTDIR)\gasstationstate.obj" + -@erase "$(INTDIR)\helicopter.obj" + -@erase "$(INTDIR)\helicopterstate.obj" + -@erase "$(INTDIR)\historybook.obj" + -@erase "$(INTDIR)\hospital.obj" + -@erase "$(INTDIR)\hospitalentity.obj" + -@erase "$(INTDIR)\hospitalstate.obj" + -@erase "$(INTDIR)\infocenter.obj" + -@erase "$(INTDIR)\infocenterdoor.obj" + -@erase "$(INTDIR)\infocenterentity.obj" + -@erase "$(INTDIR)\infocenterstate.obj" + -@erase "$(INTDIR)\isle.obj" + -@erase "$(INTDIR)\isleactor.obj" + -@erase "$(INTDIR)\islepathactor.obj" + -@erase "$(INTDIR)\jetski.obj" + -@erase "$(INTDIR)\jetskiRace.obj" + -@erase "$(INTDIR)\jukebox.obj" + -@erase "$(INTDIR)\jukeboxentity.obj" + -@erase "$(INTDIR)\jukeboxstate.obj" + -@erase "$(INTDIR)\legoact2state.obj" + -@erase "$(INTDIR)\legoactioncontrolpresenter.obj" + -@erase "$(INTDIR)\legoanimactor.obj" + -@erase "$(INTDIR)\legoanimationmanager.obj" + -@erase "$(INTDIR)\legoanimmmpresenter.obj" + -@erase "$(INTDIR)\legoanimpresenter.obj" + -@erase "$(INTDIR)\legobuildingmanager.obj" + -@erase "$(INTDIR)\legocachesound.obj" + -@erase "$(INTDIR)\legocameracontroller.obj" + -@erase "$(INTDIR)\legocarbuild.obj" + -@erase "$(INTDIR)\legocarbuildanimpresenter.obj" + -@erase "$(INTDIR)\legocontrolmanager.obj" + -@erase "$(INTDIR)\legoentity.obj" + -@erase "$(INTDIR)\legoentitypresenter.obj" + -@erase "$(INTDIR)\legoflctexturepresenter.obj" + -@erase "$(INTDIR)\legohideanimpresenter.obj" + -@erase "$(INTDIR)\legoinputmanager.obj" + -@erase "$(INTDIR)\legojetski.obj" + -@erase "$(INTDIR)\legoloadcachesoundpresenter.obj" + -@erase "$(INTDIR)\legolocomotionanimpresenter.obj" -@erase "$(INTDIR)\legonavcontroller.obj" -@erase "$(INTDIR)\legoomni.obj" + -@erase "$(INTDIR)\legopalettepresenter.obj" + -@erase "$(INTDIR)\legopathactor.obj" + -@erase "$(INTDIR)\legopathcontroller.obj" + -@erase "$(INTDIR)\legopathpresenter.obj" + -@erase "$(INTDIR)\legophonemepresenter.obj" + -@erase "$(INTDIR)\legoplantmanager.obj" + -@erase "$(INTDIR)\legorace.obj" + -@erase "$(INTDIR)\legosoundmanager.obj" + -@erase "$(INTDIR)\legostate.obj" + -@erase "$(INTDIR)\legotexturepresenter.obj" + -@erase "$(INTDIR)\legovideomanager.obj" + -@erase "$(INTDIR)\legoworld.obj" + -@erase "$(INTDIR)\legoworldpresenter.obj" + -@erase "$(INTDIR)\motorcycle.obj" -@erase "$(INTDIR)\mxatomid.obj" + -@erase "$(INTDIR)\mxaudiopresenter.obj" -@erase "$(INTDIR)\mxautolocker.obj" + -@erase "$(INTDIR)\mxbackgroundaudiomanager.obj" + -@erase "$(INTDIR)\mxcompositemediapresenter.obj" + -@erase "$(INTDIR)\mxcompositepresenter.obj" + -@erase "$(INTDIR)\mxcontrolpresenter.obj" -@erase "$(INTDIR)\mxcore.obj" -@erase "$(INTDIR)\mxcriticalsection.obj" + -@erase "$(INTDIR)\mxdiskstreamcontroller.obj" + -@erase "$(INTDIR)\mxdiskstreamprovider.obj" + -@erase "$(INTDIR)\mxdsaction.obj" + -@erase "$(INTDIR)\mxdsanim.obj" + -@erase "$(INTDIR)\mxdschunk.obj" + -@erase "$(INTDIR)\mxdsevent.obj" + -@erase "$(INTDIR)\mxdsfile.obj" + -@erase "$(INTDIR)\mxdsmediaaction.obj" + -@erase "$(INTDIR)\mxdsmultiaction.obj" -@erase "$(INTDIR)\mxdsobject.obj" + -@erase "$(INTDIR)\mxdsobjectaction.obj" + -@erase "$(INTDIR)\mxdsparallelaction.obj" + -@erase "$(INTDIR)\mxdsselectaction.obj" + -@erase "$(INTDIR)\mxdsserialaction.obj" + -@erase "$(INTDIR)\mxdssound.obj" + -@erase "$(INTDIR)\mxdssource.obj" + -@erase "$(INTDIR)\mxdsstill.obj" + -@erase "$(INTDIR)\mxdssubscriber.obj" + -@erase "$(INTDIR)\mxentity.obj" + -@erase "$(INTDIR)\mxeventmanager.obj" + -@erase "$(INTDIR)\mxeventpresenter.obj" + -@erase "$(INTDIR)\mxflcpresenter.obj" + -@erase "$(INTDIR)\mxioinfo.obj" + -@erase "$(INTDIR)\mxloopingflcpresenter.obj" + -@erase "$(INTDIR)\mxloopingsmkpresenter.obj" + -@erase "$(INTDIR)\mxmediapresenter.obj" + -@erase "$(INTDIR)\mxmusicpresenter.obj" + -@erase "$(INTDIR)\mxnotificationmanager.obj" -@erase "$(INTDIR)\mxomni.obj" -@erase "$(INTDIR)\mxomnicreateflags.obj" -@erase "$(INTDIR)\mxomnicreateparam.obj" -@erase "$(INTDIR)\mxomnicreateparambase.obj" + -@erase "$(INTDIR)\mxpalette.obj" + -@erase "$(INTDIR)\mxpresenter.obj" + -@erase "$(INTDIR)\mxsmkpresenter.obj" + -@erase "$(INTDIR)\mxsoundmanager.obj" + -@erase "$(INTDIR)\mxsoundpresenter.obj" + -@erase "$(INTDIR)\mxstillpresenter.obj" + -@erase "$(INTDIR)\mxstreamer.obj" -@erase "$(INTDIR)\mxstring.obj" -@erase "$(INTDIR)\mxtimer.obj" + -@erase "$(INTDIR)\mxtransitionmanager.obj" + -@erase "$(INTDIR)\mxunknown100dc6b0.obj" + -@erase "$(INTDIR)\mxvideomanager.obj" -@erase "$(INTDIR)\mxvideoparam.obj" -@erase "$(INTDIR)\mxvideoparamflags.obj" + -@erase "$(INTDIR)\mxvideopresenter.obj" + -@erase "$(INTDIR)\mxwavepresenter.obj" + -@erase "$(INTDIR)\pizza.obj" + -@erase "$(INTDIR)\pizzeria.obj" + -@erase "$(INTDIR)\pizzeriastate.obj" + -@erase "$(INTDIR)\police.obj" + -@erase "$(INTDIR)\policeentity.obj" + -@erase "$(INTDIR)\policestate.obj" + -@erase "$(INTDIR)\racecar.obj" + -@erase "$(INTDIR)\racestandsentity.obj" + -@erase "$(INTDIR)\racestate.obj" + -@erase "$(INTDIR)\radio.obj" + -@erase "$(INTDIR)\radiostate.obj" + -@erase "$(INTDIR)\registrationbook.obj" + -@erase "$(INTDIR)\score.obj" + -@erase "$(INTDIR)\skateboard.obj" + -@erase "$(INTDIR)\towtrack.obj" + -@erase "$(INTDIR)\towtrackmissionstate.obj" -@erase "$(INTDIR)\vc40.pdb" -@erase ".\Release\LEGO1.DLL" -@erase ".\Release\LEGO1.EXP" @@ -128,22 +259,153 @@ LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ /pdb:"Release/LEGO1.PDB" /debug /machine:I386 /out:"Release/LEGO1.DLL"\ /implib:"Release/LEGO1.LIB" LINK32_OBJS= \ + "$(INTDIR)\act1state.obj" \ + "$(INTDIR)\act2brick.obj" \ + "$(INTDIR)\act2policestation.obj" \ + "$(INTDIR)\act3.obj" \ + "$(INTDIR)\act3shark.obj" \ + "$(INTDIR)\act3state.obj" \ + "$(INTDIR)\ambulance.obj" \ + "$(INTDIR)\ambulancemissionstate.obj" \ + "$(INTDIR)\animstate.obj" \ + "$(INTDIR)\beachhouseentity.obj" \ + "$(INTDIR)\bike.obj" \ + "$(INTDIR)\buildingentity.obj" \ + "$(INTDIR)\bumpbouy.obj" \ + "$(INTDIR)\carrace.obj" \ "$(INTDIR)\dllmain.obj" \ + "$(INTDIR)\dunebuggy.obj" \ + "$(INTDIR)\elevatorbottom.obj" \ + "$(INTDIR)\gasstation.obj" \ + "$(INTDIR)\gasstationentity.obj" \ + "$(INTDIR)\gasstationstate.obj" \ + "$(INTDIR)\helicopter.obj" \ + "$(INTDIR)\helicopterstate.obj" \ + "$(INTDIR)\historybook.obj" \ + "$(INTDIR)\hospital.obj" \ + "$(INTDIR)\hospitalentity.obj" \ + "$(INTDIR)\hospitalstate.obj" \ + "$(INTDIR)\infocenter.obj" \ + "$(INTDIR)\infocenterdoor.obj" \ + "$(INTDIR)\infocenterentity.obj" \ + "$(INTDIR)\infocenterstate.obj" \ + "$(INTDIR)\isle.obj" \ + "$(INTDIR)\isleactor.obj" \ + "$(INTDIR)\islepathactor.obj" \ + "$(INTDIR)\jetski.obj" \ + "$(INTDIR)\jetskiRace.obj" \ + "$(INTDIR)\jukebox.obj" \ + "$(INTDIR)\jukeboxentity.obj" \ + "$(INTDIR)\jukeboxstate.obj" \ + "$(INTDIR)\legoact2state.obj" \ + "$(INTDIR)\legoactioncontrolpresenter.obj" \ + "$(INTDIR)\legoanimactor.obj" \ + "$(INTDIR)\legoanimationmanager.obj" \ + "$(INTDIR)\legoanimmmpresenter.obj" \ + "$(INTDIR)\legoanimpresenter.obj" \ + "$(INTDIR)\legobuildingmanager.obj" \ + "$(INTDIR)\legocachesound.obj" \ + "$(INTDIR)\legocameracontroller.obj" \ + "$(INTDIR)\legocarbuild.obj" \ + "$(INTDIR)\legocarbuildanimpresenter.obj" \ + "$(INTDIR)\legocontrolmanager.obj" \ + "$(INTDIR)\legoentity.obj" \ + "$(INTDIR)\legoentitypresenter.obj" \ + "$(INTDIR)\legoflctexturepresenter.obj" \ + "$(INTDIR)\legohideanimpresenter.obj" \ + "$(INTDIR)\legoinputmanager.obj" \ + "$(INTDIR)\legojetski.obj" \ + "$(INTDIR)\legoloadcachesoundpresenter.obj" \ + "$(INTDIR)\legolocomotionanimpresenter.obj" \ "$(INTDIR)\legonavcontroller.obj" \ "$(INTDIR)\legoomni.obj" \ + "$(INTDIR)\legopalettepresenter.obj" \ + "$(INTDIR)\legopathactor.obj" \ + "$(INTDIR)\legopathcontroller.obj" \ + "$(INTDIR)\legopathpresenter.obj" \ + "$(INTDIR)\legophonemepresenter.obj" \ + "$(INTDIR)\legoplantmanager.obj" \ + "$(INTDIR)\legorace.obj" \ + "$(INTDIR)\legosoundmanager.obj" \ + "$(INTDIR)\legostate.obj" \ + "$(INTDIR)\legotexturepresenter.obj" \ + "$(INTDIR)\legovideomanager.obj" \ + "$(INTDIR)\legoworld.obj" \ + "$(INTDIR)\legoworldpresenter.obj" \ + "$(INTDIR)\motorcycle.obj" \ "$(INTDIR)\mxatomid.obj" \ + "$(INTDIR)\mxaudiopresenter.obj" \ "$(INTDIR)\mxautolocker.obj" \ + "$(INTDIR)\mxbackgroundaudiomanager.obj" \ + "$(INTDIR)\mxcompositemediapresenter.obj" \ + "$(INTDIR)\mxcompositepresenter.obj" \ + "$(INTDIR)\mxcontrolpresenter.obj" \ "$(INTDIR)\mxcore.obj" \ "$(INTDIR)\mxcriticalsection.obj" \ + "$(INTDIR)\mxdiskstreamcontroller.obj" \ + "$(INTDIR)\mxdiskstreamprovider.obj" \ + "$(INTDIR)\mxdsaction.obj" \ + "$(INTDIR)\mxdsanim.obj" \ + "$(INTDIR)\mxdschunk.obj" \ + "$(INTDIR)\mxdsevent.obj" \ + "$(INTDIR)\mxdsfile.obj" \ + "$(INTDIR)\mxdsmediaaction.obj" \ + "$(INTDIR)\mxdsmultiaction.obj" \ "$(INTDIR)\mxdsobject.obj" \ + "$(INTDIR)\mxdsobjectaction.obj" \ + "$(INTDIR)\mxdsparallelaction.obj" \ + "$(INTDIR)\mxdsselectaction.obj" \ + "$(INTDIR)\mxdsserialaction.obj" \ + "$(INTDIR)\mxdssound.obj" \ + "$(INTDIR)\mxdssource.obj" \ + "$(INTDIR)\mxdsstill.obj" \ + "$(INTDIR)\mxdssubscriber.obj" \ + "$(INTDIR)\mxentity.obj" \ + "$(INTDIR)\mxeventmanager.obj" \ + "$(INTDIR)\mxeventpresenter.obj" \ + "$(INTDIR)\mxflcpresenter.obj" \ + "$(INTDIR)\mxioinfo.obj" \ + "$(INTDIR)\mxloopingflcpresenter.obj" \ + "$(INTDIR)\mxloopingsmkpresenter.obj" \ + "$(INTDIR)\mxmediapresenter.obj" \ + "$(INTDIR)\mxmusicpresenter.obj" \ + "$(INTDIR)\mxnotificationmanager.obj" \ "$(INTDIR)\mxomni.obj" \ "$(INTDIR)\mxomnicreateflags.obj" \ "$(INTDIR)\mxomnicreateparam.obj" \ "$(INTDIR)\mxomnicreateparambase.obj" \ + "$(INTDIR)\mxpalette.obj" \ + "$(INTDIR)\mxpresenter.obj" \ + "$(INTDIR)\mxsmkpresenter.obj" \ + "$(INTDIR)\mxsoundmanager.obj" \ + "$(INTDIR)\mxsoundpresenter.obj" \ + "$(INTDIR)\mxstillpresenter.obj" \ + "$(INTDIR)\mxstreamer.obj" \ "$(INTDIR)\mxstring.obj" \ "$(INTDIR)\mxtimer.obj" \ + "$(INTDIR)\mxtransitionmanager.obj" \ + "$(INTDIR)\mxunknown100dc6b0.obj" \ + "$(INTDIR)\mxvideomanager.obj" \ "$(INTDIR)\mxvideoparam.obj" \ - "$(INTDIR)\mxvideoparamflags.obj" + "$(INTDIR)\mxvideoparamflags.obj" \ + "$(INTDIR)\mxvideopresenter.obj" \ + "$(INTDIR)\mxwavepresenter.obj" \ + "$(INTDIR)\pizza.obj" \ + "$(INTDIR)\pizzeria.obj" \ + "$(INTDIR)\pizzeriastate.obj" \ + "$(INTDIR)\police.obj" \ + "$(INTDIR)\policeentity.obj" \ + "$(INTDIR)\policestate.obj" \ + "$(INTDIR)\racecar.obj" \ + "$(INTDIR)\racestandsentity.obj" \ + "$(INTDIR)\racestate.obj" \ + "$(INTDIR)\radio.obj" \ + "$(INTDIR)\radiostate.obj" \ + "$(INTDIR)\registrationbook.obj" \ + "$(INTDIR)\score.obj" \ + "$(INTDIR)\skateboard.obj" \ + "$(INTDIR)\towtrack.obj" \ + "$(INTDIR)\towtrackmissionstate.obj" ".\Release\LEGO1.DLL" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< @@ -168,22 +430,153 @@ INTDIR=.\LEGO1\Debug ALL : ".\Debug\LEGO1.DLL" CLEAN : + -@erase "$(INTDIR)\act1state.obj" + -@erase "$(INTDIR)\act2brick.obj" + -@erase "$(INTDIR)\act2policestation.obj" + -@erase "$(INTDIR)\act3.obj" + -@erase "$(INTDIR)\act3shark.obj" + -@erase "$(INTDIR)\act3state.obj" + -@erase "$(INTDIR)\ambulance.obj" + -@erase "$(INTDIR)\ambulancemissionstate.obj" + -@erase "$(INTDIR)\animstate.obj" + -@erase "$(INTDIR)\beachhouseentity.obj" + -@erase "$(INTDIR)\bike.obj" + -@erase "$(INTDIR)\buildingentity.obj" + -@erase "$(INTDIR)\bumpbouy.obj" + -@erase "$(INTDIR)\carrace.obj" -@erase "$(INTDIR)\dllmain.obj" + -@erase "$(INTDIR)\dunebuggy.obj" + -@erase "$(INTDIR)\elevatorbottom.obj" + -@erase "$(INTDIR)\gasstation.obj" + -@erase "$(INTDIR)\gasstationentity.obj" + -@erase "$(INTDIR)\gasstationstate.obj" + -@erase "$(INTDIR)\helicopter.obj" + -@erase "$(INTDIR)\helicopterstate.obj" + -@erase "$(INTDIR)\historybook.obj" + -@erase "$(INTDIR)\hospital.obj" + -@erase "$(INTDIR)\hospitalentity.obj" + -@erase "$(INTDIR)\hospitalstate.obj" + -@erase "$(INTDIR)\infocenter.obj" + -@erase "$(INTDIR)\infocenterdoor.obj" + -@erase "$(INTDIR)\infocenterentity.obj" + -@erase "$(INTDIR)\infocenterstate.obj" + -@erase "$(INTDIR)\isle.obj" + -@erase "$(INTDIR)\isleactor.obj" + -@erase "$(INTDIR)\islepathactor.obj" + -@erase "$(INTDIR)\jetski.obj" + -@erase "$(INTDIR)\jetskiRace.obj" + -@erase "$(INTDIR)\jukebox.obj" + -@erase "$(INTDIR)\jukeboxentity.obj" + -@erase "$(INTDIR)\jukeboxstate.obj" + -@erase "$(INTDIR)\legoact2state.obj" + -@erase "$(INTDIR)\legoactioncontrolpresenter.obj" + -@erase "$(INTDIR)\legoanimactor.obj" + -@erase "$(INTDIR)\legoanimationmanager.obj" + -@erase "$(INTDIR)\legoanimmmpresenter.obj" + -@erase "$(INTDIR)\legoanimpresenter.obj" + -@erase "$(INTDIR)\legobuildingmanager.obj" + -@erase "$(INTDIR)\legocachesound.obj" + -@erase "$(INTDIR)\legocameracontroller.obj" + -@erase "$(INTDIR)\legocarbuild.obj" + -@erase "$(INTDIR)\legocarbuildanimpresenter.obj" + -@erase "$(INTDIR)\legocontrolmanager.obj" + -@erase "$(INTDIR)\legoentity.obj" + -@erase "$(INTDIR)\legoentitypresenter.obj" + -@erase "$(INTDIR)\legoflctexturepresenter.obj" + -@erase "$(INTDIR)\legohideanimpresenter.obj" + -@erase "$(INTDIR)\legoinputmanager.obj" + -@erase "$(INTDIR)\legojetski.obj" + -@erase "$(INTDIR)\legoloadcachesoundpresenter.obj" + -@erase "$(INTDIR)\legolocomotionanimpresenter.obj" -@erase "$(INTDIR)\legonavcontroller.obj" -@erase "$(INTDIR)\legoomni.obj" + -@erase "$(INTDIR)\legopalettepresenter.obj" + -@erase "$(INTDIR)\legopathactor.obj" + -@erase "$(INTDIR)\legopathcontroller.obj" + -@erase "$(INTDIR)\legopathpresenter.obj" + -@erase "$(INTDIR)\legophonemepresenter.obj" + -@erase "$(INTDIR)\legoplantmanager.obj" + -@erase "$(INTDIR)\legorace.obj" + -@erase "$(INTDIR)\legosoundmanager.obj" + -@erase "$(INTDIR)\legostate.obj" + -@erase "$(INTDIR)\legotexturepresenter.obj" + -@erase "$(INTDIR)\legovideomanager.obj" + -@erase "$(INTDIR)\legoworld.obj" + -@erase "$(INTDIR)\legoworldpresenter.obj" + -@erase "$(INTDIR)\motorcycle.obj" -@erase "$(INTDIR)\mxatomid.obj" + -@erase "$(INTDIR)\mxaudiopresenter.obj" -@erase "$(INTDIR)\mxautolocker.obj" + -@erase "$(INTDIR)\mxbackgroundaudiomanager.obj" + -@erase "$(INTDIR)\mxcompositemediapresenter.obj" + -@erase "$(INTDIR)\mxcompositepresenter.obj" + -@erase "$(INTDIR)\mxcontrolpresenter.obj" -@erase "$(INTDIR)\mxcore.obj" -@erase "$(INTDIR)\mxcriticalsection.obj" + -@erase "$(INTDIR)\mxdiskstreamcontroller.obj" + -@erase "$(INTDIR)\mxdiskstreamprovider.obj" + -@erase "$(INTDIR)\mxdsaction.obj" + -@erase "$(INTDIR)\mxdsanim.obj" + -@erase "$(INTDIR)\mxdschunk.obj" + -@erase "$(INTDIR)\mxdsevent.obj" + -@erase "$(INTDIR)\mxdsfile.obj" + -@erase "$(INTDIR)\mxdsmediaaction.obj" + -@erase "$(INTDIR)\mxdsmultiaction.obj" -@erase "$(INTDIR)\mxdsobject.obj" + -@erase "$(INTDIR)\mxdsobjectaction.obj" + -@erase "$(INTDIR)\mxdsparallelaction.obj" + -@erase "$(INTDIR)\mxdsselectaction.obj" + -@erase "$(INTDIR)\mxdsserialaction.obj" + -@erase "$(INTDIR)\mxdssound.obj" + -@erase "$(INTDIR)\mxdssource.obj" + -@erase "$(INTDIR)\mxdsstill.obj" + -@erase "$(INTDIR)\mxdssubscriber.obj" + -@erase "$(INTDIR)\mxentity.obj" + -@erase "$(INTDIR)\mxeventmanager.obj" + -@erase "$(INTDIR)\mxeventpresenter.obj" + -@erase "$(INTDIR)\mxflcpresenter.obj" + -@erase "$(INTDIR)\mxioinfo.obj" + -@erase "$(INTDIR)\mxloopingflcpresenter.obj" + -@erase "$(INTDIR)\mxloopingsmkpresenter.obj" + -@erase "$(INTDIR)\mxmediapresenter.obj" + -@erase "$(INTDIR)\mxmusicpresenter.obj" + -@erase "$(INTDIR)\mxnotificationmanager.obj" -@erase "$(INTDIR)\mxomni.obj" -@erase "$(INTDIR)\mxomnicreateflags.obj" -@erase "$(INTDIR)\mxomnicreateparam.obj" -@erase "$(INTDIR)\mxomnicreateparambase.obj" + -@erase "$(INTDIR)\mxpalette.obj" + -@erase "$(INTDIR)\mxpresenter.obj" + -@erase "$(INTDIR)\mxsmkpresenter.obj" + -@erase "$(INTDIR)\mxsoundmanager.obj" + -@erase "$(INTDIR)\mxsoundpresenter.obj" + -@erase "$(INTDIR)\mxstillpresenter.obj" + -@erase "$(INTDIR)\mxstreamer.obj" -@erase "$(INTDIR)\mxstring.obj" -@erase "$(INTDIR)\mxtimer.obj" + -@erase "$(INTDIR)\mxtransitionmanager.obj" + -@erase "$(INTDIR)\mxunknown100dc6b0.obj" + -@erase "$(INTDIR)\mxvideomanager.obj" -@erase "$(INTDIR)\mxvideoparam.obj" -@erase "$(INTDIR)\mxvideoparamflags.obj" + -@erase "$(INTDIR)\mxvideopresenter.obj" + -@erase "$(INTDIR)\mxwavepresenter.obj" + -@erase "$(INTDIR)\pizza.obj" + -@erase "$(INTDIR)\pizzeria.obj" + -@erase "$(INTDIR)\pizzeriastate.obj" + -@erase "$(INTDIR)\police.obj" + -@erase "$(INTDIR)\policeentity.obj" + -@erase "$(INTDIR)\policestate.obj" + -@erase "$(INTDIR)\racecar.obj" + -@erase "$(INTDIR)\racestandsentity.obj" + -@erase "$(INTDIR)\racestate.obj" + -@erase "$(INTDIR)\radio.obj" + -@erase "$(INTDIR)\radiostate.obj" + -@erase "$(INTDIR)\registrationbook.obj" + -@erase "$(INTDIR)\score.obj" + -@erase "$(INTDIR)\skateboard.obj" + -@erase "$(INTDIR)\towtrack.obj" + -@erase "$(INTDIR)\towtrackmissionstate.obj" -@erase "$(INTDIR)\vc40.idb" -@erase "$(INTDIR)\vc40.pdb" -@erase "$(OUTDIR)\LEGO1.exp" @@ -244,22 +637,153 @@ LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ /pdb:"$(OUTDIR)/LEGO1.pdb" /debug /machine:I386 /out:"Debug/LEGO1.DLL"\ /implib:"$(OUTDIR)/LEGO1.lib" LINK32_OBJS= \ + "$(INTDIR)\act1state.obj" \ + "$(INTDIR)\act2brick.obj" \ + "$(INTDIR)\act2policestation.obj" \ + "$(INTDIR)\act3.obj" \ + "$(INTDIR)\act3shark.obj" \ + "$(INTDIR)\act3state.obj" \ + "$(INTDIR)\ambulance.obj" \ + "$(INTDIR)\ambulancemissionstate.obj" \ + "$(INTDIR)\animstate.obj" \ + "$(INTDIR)\beachhouseentity.obj" \ + "$(INTDIR)\bike.obj" \ + "$(INTDIR)\buildingentity.obj" \ + "$(INTDIR)\bumpbouy.obj" \ + "$(INTDIR)\carrace.obj" \ "$(INTDIR)\dllmain.obj" \ + "$(INTDIR)\dunebuggy.obj" \ + "$(INTDIR)\elevatorbottom.obj" \ + "$(INTDIR)\gasstation.obj" \ + "$(INTDIR)\gasstationentity.obj" \ + "$(INTDIR)\gasstationstate.obj" \ + "$(INTDIR)\helicopter.obj" \ + "$(INTDIR)\helicopterstate.obj" \ + "$(INTDIR)\historybook.obj" \ + "$(INTDIR)\hospital.obj" \ + "$(INTDIR)\hospitalentity.obj" \ + "$(INTDIR)\hospitalstate.obj" \ + "$(INTDIR)\infocenter.obj" \ + "$(INTDIR)\infocenterdoor.obj" \ + "$(INTDIR)\infocenterentity.obj" \ + "$(INTDIR)\infocenterstate.obj" \ + "$(INTDIR)\isle.obj" \ + "$(INTDIR)\isleactor.obj" \ + "$(INTDIR)\islepathactor.obj" \ + "$(INTDIR)\jetski.obj" \ + "$(INTDIR)\jetskiRace.obj" \ + "$(INTDIR)\jukebox.obj" \ + "$(INTDIR)\jukeboxentity.obj" \ + "$(INTDIR)\jukeboxstate.obj" \ + "$(INTDIR)\legoact2state.obj" \ + "$(INTDIR)\legoactioncontrolpresenter.obj" \ + "$(INTDIR)\legoanimactor.obj" \ + "$(INTDIR)\legoanimationmanager.obj" \ + "$(INTDIR)\legoanimmmpresenter.obj" \ + "$(INTDIR)\legoanimpresenter.obj" \ + "$(INTDIR)\legobuildingmanager.obj" \ + "$(INTDIR)\legocachesound.obj" \ + "$(INTDIR)\legocameracontroller.obj" \ + "$(INTDIR)\legocarbuild.obj" \ + "$(INTDIR)\legocarbuildanimpresenter.obj" \ + "$(INTDIR)\legocontrolmanager.obj" \ + "$(INTDIR)\legoentity.obj" \ + "$(INTDIR)\legoentitypresenter.obj" \ + "$(INTDIR)\legoflctexturepresenter.obj" \ + "$(INTDIR)\legohideanimpresenter.obj" \ + "$(INTDIR)\legoinputmanager.obj" \ + "$(INTDIR)\legojetski.obj" \ + "$(INTDIR)\legoloadcachesoundpresenter.obj" \ + "$(INTDIR)\legolocomotionanimpresenter.obj" \ "$(INTDIR)\legonavcontroller.obj" \ "$(INTDIR)\legoomni.obj" \ + "$(INTDIR)\legopalettepresenter.obj" \ + "$(INTDIR)\legopathactor.obj" \ + "$(INTDIR)\legopathcontroller.obj" \ + "$(INTDIR)\legopathpresenter.obj" \ + "$(INTDIR)\legophonemepresenter.obj" \ + "$(INTDIR)\legoplantmanager.obj" \ + "$(INTDIR)\legorace.obj" \ + "$(INTDIR)\legosoundmanager.obj" \ + "$(INTDIR)\legostate.obj" \ + "$(INTDIR)\legotexturepresenter.obj" \ + "$(INTDIR)\legovideomanager.obj" \ + "$(INTDIR)\legoworld.obj" \ + "$(INTDIR)\legoworldpresenter.obj" \ + "$(INTDIR)\motorcycle.obj" \ "$(INTDIR)\mxatomid.obj" \ + "$(INTDIR)\mxaudiopresenter.obj" \ "$(INTDIR)\mxautolocker.obj" \ + "$(INTDIR)\mxbackgroundaudiomanager.obj" \ + "$(INTDIR)\mxcompositemediapresenter.obj" \ + "$(INTDIR)\mxcompositepresenter.obj" \ + "$(INTDIR)\mxcontrolpresenter.obj" \ "$(INTDIR)\mxcore.obj" \ "$(INTDIR)\mxcriticalsection.obj" \ + "$(INTDIR)\mxdiskstreamcontroller.obj" \ + "$(INTDIR)\mxdiskstreamprovider.obj" \ + "$(INTDIR)\mxdsaction.obj" \ + "$(INTDIR)\mxdsanim.obj" \ + "$(INTDIR)\mxdschunk.obj" \ + "$(INTDIR)\mxdsevent.obj" \ + "$(INTDIR)\mxdsfile.obj" \ + "$(INTDIR)\mxdsmediaaction.obj" \ + "$(INTDIR)\mxdsmultiaction.obj" \ "$(INTDIR)\mxdsobject.obj" \ + "$(INTDIR)\mxdsobjectaction.obj" \ + "$(INTDIR)\mxdsparallelaction.obj" \ + "$(INTDIR)\mxdsselectaction.obj" \ + "$(INTDIR)\mxdsserialaction.obj" \ + "$(INTDIR)\mxdssound.obj" \ + "$(INTDIR)\mxdssource.obj" \ + "$(INTDIR)\mxdsstill.obj" \ + "$(INTDIR)\mxdssubscriber.obj" \ + "$(INTDIR)\mxentity.obj" \ + "$(INTDIR)\mxeventmanager.obj" \ + "$(INTDIR)\mxeventpresenter.obj" \ + "$(INTDIR)\mxflcpresenter.obj" \ + "$(INTDIR)\mxioinfo.obj" \ + "$(INTDIR)\mxloopingflcpresenter.obj" \ + "$(INTDIR)\mxloopingsmkpresenter.obj" \ + "$(INTDIR)\mxmediapresenter.obj" \ + "$(INTDIR)\mxmusicpresenter.obj" \ + "$(INTDIR)\mxnotificationmanager.obj" \ "$(INTDIR)\mxomni.obj" \ "$(INTDIR)\mxomnicreateflags.obj" \ "$(INTDIR)\mxomnicreateparam.obj" \ "$(INTDIR)\mxomnicreateparambase.obj" \ + "$(INTDIR)\mxpalette.obj" \ + "$(INTDIR)\mxpresenter.obj" \ + "$(INTDIR)\mxsmkpresenter.obj" \ + "$(INTDIR)\mxsoundmanager.obj" \ + "$(INTDIR)\mxsoundpresenter.obj" \ + "$(INTDIR)\mxstillpresenter.obj" \ + "$(INTDIR)\mxstreamer.obj" \ "$(INTDIR)\mxstring.obj" \ "$(INTDIR)\mxtimer.obj" \ + "$(INTDIR)\mxtransitionmanager.obj" \ + "$(INTDIR)\mxunknown100dc6b0.obj" \ + "$(INTDIR)\mxvideomanager.obj" \ "$(INTDIR)\mxvideoparam.obj" \ - "$(INTDIR)\mxvideoparamflags.obj" + "$(INTDIR)\mxvideoparamflags.obj" \ + "$(INTDIR)\mxvideopresenter.obj" \ + "$(INTDIR)\mxwavepresenter.obj" \ + "$(INTDIR)\pizza.obj" \ + "$(INTDIR)\pizzeria.obj" \ + "$(INTDIR)\pizzeriastate.obj" \ + "$(INTDIR)\police.obj" \ + "$(INTDIR)\policeentity.obj" \ + "$(INTDIR)\policestate.obj" \ + "$(INTDIR)\racecar.obj" \ + "$(INTDIR)\racestandsentity.obj" \ + "$(INTDIR)\racestate.obj" \ + "$(INTDIR)\radio.obj" \ + "$(INTDIR)\radiostate.obj" \ + "$(INTDIR)\registrationbook.obj" \ + "$(INTDIR)\score.obj" \ + "$(INTDIR)\skateboard.obj" \ + "$(INTDIR)\towtrack.obj" \ + "$(INTDIR)\towtrackmissionstate.obj" ".\Debug\LEGO1.DLL" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< @@ -285,9 +809,8 @@ ALL : "LEGO1 - Win32 Release" ".\Release\ISLE.EXE" CLEAN : -@erase "$(INTDIR)\define.obj" - -@erase "$(INTDIR)\isle.obj" -@erase "$(INTDIR)\isle.res" - -@erase "$(INTDIR)\main.obj" + -@erase "$(INTDIR)\isleapp.obj" -@erase "$(INTDIR)\vc40.pdb" -@erase ".\Release\ISLE.EXE" -@erase ".\Release\ISLE.PDB" @@ -346,9 +869,8 @@ LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ /out:"Release/ISLE.EXE" /LIBPATH:"ISLE/ext" LINK32_OBJS= \ "$(INTDIR)\define.obj" \ - "$(INTDIR)\isle.obj" \ "$(INTDIR)\isle.res" \ - "$(INTDIR)\main.obj" \ + "$(INTDIR)\isleapp.obj" \ ".\Release\LEGO1.LIB" ".\Release\ISLE.EXE" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) @@ -375,9 +897,8 @@ ALL : "LEGO1 - Win32 Debug" ".\Debug\ISLE.EXE" CLEAN : -@erase "$(INTDIR)\define.obj" - -@erase "$(INTDIR)\isle.obj" -@erase "$(INTDIR)\isle.res" - -@erase "$(INTDIR)\main.obj" + -@erase "$(INTDIR)\isleapp.obj" -@erase "$(INTDIR)\vc40.idb" -@erase "$(INTDIR)\vc40.pdb" -@erase ".\Debug\ISLE.EXE" @@ -438,9 +959,8 @@ LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ /out:"Debug/ISLE.EXE" /LIBPATH:"ISLE/ext" LINK32_OBJS= \ "$(INTDIR)\define.obj" \ - "$(INTDIR)\isle.obj" \ "$(INTDIR)\isle.res" \ - "$(INTDIR)\main.obj" \ + "$(INTDIR)\isleapp.obj" \ ".\LEGO1\Debug\LEGO1.lib" ".\Debug\ISLE.EXE" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) @@ -467,8 +987,8 @@ LINK32_OBJS= \ SOURCE=.\LEGO1\mxcore.cpp DEP_CPP_MXCOR=\ - ".\LEGO1\mxbool.h"\ ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ "$(INTDIR)\mxcore.obj" : $(SOURCE) $(DEP_CPP_MXCOR) "$(INTDIR)" @@ -480,11 +1000,8 @@ DEP_CPP_MXCOR=\ # Begin Source File SOURCE=.\LEGO1\dllmain.cpp -DEP_CPP_DLLMA=\ - ".\LEGO1\legoinc.h"\ - -"$(INTDIR)\dllmain.obj" : $(SOURCE) $(DEP_CPP_DLLMA) "$(INTDIR)" +"$(INTDIR)\dllmain.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) @@ -494,25 +1011,30 @@ DEP_CPP_DLLMA=\ SOURCE=.\LEGO1\legoomni.cpp DEP_CPP_LEGOO=\ + ".\LEGO1\isle.h"\ ".\LEGO1\lego3dmanager.h"\ ".\LEGO1\lego3dview.h"\ + ".\LEGO1\legobuildingmanager.h"\ ".\LEGO1\legoentity.h"\ ".\LEGO1\legogamestate.h"\ - ".\LEGO1\legoinc.h"\ ".\LEGO1\legoinputmanager.h"\ ".\LEGO1\legonavcontroller.h"\ ".\LEGO1\legoomni.h"\ + ".\LEGO1\legoplantmanager.h"\ ".\LEGO1\legoroi.h"\ ".\LEGO1\legovideomanager.h"\ + ".\LEGO1\legoworld.h"\ ".\LEGO1\mxatomid.h"\ ".\LEGO1\mxbackgroundaudiomanager.h"\ - ".\LEGO1\mxbool.h"\ ".\LEGO1\mxcore.h"\ ".\LEGO1\mxcriticalsection.h"\ ".\LEGO1\mxdsaction.h"\ ".\LEGO1\mxdsfile.h"\ ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdssource.h"\ + ".\LEGO1\mxentity.h"\ ".\LEGO1\mxeventmanager.h"\ + ".\LEGO1\mxioinfo.h"\ ".\LEGO1\mxmusicmanager.h"\ ".\LEGO1\mxnotificationmanager.h"\ ".\LEGO1\mxobjectfactory.h"\ @@ -522,7 +1044,6 @@ DEP_CPP_LEGOO=\ ".\LEGO1\mxomnicreateparambase.h"\ ".\LEGO1\mxpalette.h"\ ".\LEGO1\mxrect32.h"\ - ".\LEGO1\mxresult.h"\ ".\LEGO1\mxsoundmanager.h"\ ".\LEGO1\mxstreamcontroller.h"\ ".\LEGO1\mxstreamer.h"\ @@ -530,6 +1051,8 @@ DEP_CPP_LEGOO=\ ".\LEGO1\mxticklemanager.h"\ ".\LEGO1\mxtimer.h"\ ".\LEGO1\mxtransitionmanager.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxunknown100dc6b0.h"\ ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideomanager.h"\ ".\LEGO1\mxvideoparam.h"\ @@ -547,7 +1070,6 @@ DEP_CPP_LEGOO=\ SOURCE=.\LEGO1\mxcriticalsection.cpp DEP_CPP_MXCRI=\ - ".\LEGO1\legoinc.h"\ ".\LEGO1\mxcriticalsection.h"\ @@ -561,7 +1083,6 @@ DEP_CPP_MXCRI=\ SOURCE=.\LEGO1\mxautolocker.cpp DEP_CPP_MXAUT=\ - ".\LEGO1\legoinc.h"\ ".\LEGO1\mxautolocker.h"\ ".\LEGO1\mxcriticalsection.h"\ @@ -576,10 +1097,9 @@ DEP_CPP_MXAUT=\ SOURCE=.\LEGO1\mxtimer.cpp DEP_CPP_MXTIM=\ - ".\LEGO1\legoinc.h"\ - ".\LEGO1\mxbool.h"\ ".\LEGO1\mxcore.h"\ ".\LEGO1\mxtimer.h"\ + ".\LEGO1\mxtypes.h"\ "$(INTDIR)\mxtimer.obj" : $(SOURCE) $(DEP_CPP_MXTIM) "$(INTDIR)" @@ -592,9 +1112,7 @@ DEP_CPP_MXTIM=\ SOURCE=.\LEGO1\mxomni.cpp DEP_CPP_MXOMN=\ - ".\LEGO1\legoinc.h"\ ".\LEGO1\mxatomid.h"\ - ".\LEGO1\mxbool.h"\ ".\LEGO1\mxcore.h"\ ".\LEGO1\mxcriticalsection.h"\ ".\LEGO1\mxeventmanager.h"\ @@ -607,13 +1125,14 @@ DEP_CPP_MXOMN=\ ".\LEGO1\mxomnicreateparambase.h"\ ".\LEGO1\mxpalette.h"\ ".\LEGO1\mxrect32.h"\ - ".\LEGO1\mxresult.h"\ ".\LEGO1\mxsoundmanager.h"\ ".\LEGO1\mxstreamcontroller.h"\ ".\LEGO1\mxstreamer.h"\ ".\LEGO1\mxstring.h"\ ".\LEGO1\mxticklemanager.h"\ ".\LEGO1\mxtimer.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxunknown100dc6b0.h"\ ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideomanager.h"\ ".\LEGO1\mxvideoparam.h"\ @@ -630,9 +1149,10 @@ DEP_CPP_MXOMN=\ SOURCE=.\LEGO1\mxvideoparam.cpp DEP_CPP_MXVID=\ - ".\LEGO1\legoinc.h"\ + ".\LEGO1\mxcore.h"\ ".\LEGO1\mxpalette.h"\ ".\LEGO1\mxrect32.h"\ + ".\LEGO1\mxtypes.h"\ ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideoparam.h"\ ".\LEGO1\mxvideoparamflags.h"\ @@ -648,7 +1168,6 @@ DEP_CPP_MXVID=\ SOURCE=.\LEGO1\mxvideoparamflags.cpp DEP_CPP_MXVIDE=\ - ".\LEGO1\legoinc.h"\ ".\LEGO1\mxvideoparamflags.h"\ @@ -662,8 +1181,6 @@ DEP_CPP_MXVIDE=\ SOURCE=.\LEGO1\mxomnicreateparam.cpp DEP_CPP_MXOMNI=\ - ".\LEGO1\legoinc.h"\ - ".\LEGO1\mxbool.h"\ ".\LEGO1\mxcore.h"\ ".\LEGO1\mxomnicreateflags.h"\ ".\LEGO1\mxomnicreateparam.h"\ @@ -671,6 +1188,7 @@ DEP_CPP_MXOMNI=\ ".\LEGO1\mxpalette.h"\ ".\LEGO1\mxrect32.h"\ ".\LEGO1\mxstring.h"\ + ".\LEGO1\mxtypes.h"\ ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideoparam.h"\ ".\LEGO1\mxvideoparamflags.h"\ @@ -686,8 +1204,6 @@ DEP_CPP_MXOMNI=\ SOURCE=.\LEGO1\mxomnicreateparambase.cpp DEP_CPP_MXOMNIC=\ - ".\LEGO1\legoinc.h"\ - ".\LEGO1\mxbool.h"\ ".\LEGO1\mxcore.h"\ ".\LEGO1\mxomnicreateflags.h"\ ".\LEGO1\mxomnicreateparam.h"\ @@ -695,6 +1211,7 @@ DEP_CPP_MXOMNIC=\ ".\LEGO1\mxpalette.h"\ ".\LEGO1\mxrect32.h"\ ".\LEGO1\mxstring.h"\ + ".\LEGO1\mxtypes.h"\ ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideoparam.h"\ ".\LEGO1\mxvideoparamflags.h"\ @@ -711,9 +1228,9 @@ DEP_CPP_MXOMNIC=\ SOURCE=.\LEGO1\mxstring.cpp DEP_CPP_MXSTR=\ - ".\LEGO1\mxbool.h"\ ".\LEGO1\mxcore.h"\ ".\LEGO1\mxstring.h"\ + ".\LEGO1\mxtypes.h"\ "$(INTDIR)\mxstring.obj" : $(SOURCE) $(DEP_CPP_MXSTR) "$(INTDIR)" @@ -726,8 +1243,8 @@ DEP_CPP_MXSTR=\ SOURCE=.\LEGO1\mxomnicreateflags.cpp DEP_CPP_MXOMNICR=\ - ".\LEGO1\mxbool.h"\ ".\LEGO1\mxomnicreateflags.h"\ + ".\LEGO1\mxtypes.h"\ "$(INTDIR)\mxomnicreateflags.obj" : $(SOURCE) $(DEP_CPP_MXOMNICR) "$(INTDIR)" @@ -740,26 +1257,31 @@ DEP_CPP_MXOMNICR=\ SOURCE=.\LEGO1\legonavcontroller.cpp DEP_CPP_LEGON=\ + ".\LEGO1\isle.h"\ ".\LEGO1\lego3dmanager.h"\ ".\LEGO1\lego3dview.h"\ + ".\LEGO1\legobuildingmanager.h"\ ".\LEGO1\legoentity.h"\ ".\LEGO1\legogamestate.h"\ - ".\LEGO1\legoinc.h"\ ".\LEGO1\legoinputmanager.h"\ ".\LEGO1\legonavcontroller.h"\ ".\LEGO1\legoomni.h"\ + ".\LEGO1\legoplantmanager.h"\ ".\LEGO1\legoroi.h"\ ".\LEGO1\legoutil.h"\ ".\LEGO1\legovideomanager.h"\ + ".\LEGO1\legoworld.h"\ ".\LEGO1\mxatomid.h"\ ".\LEGO1\mxbackgroundaudiomanager.h"\ - ".\LEGO1\mxbool.h"\ ".\LEGO1\mxcore.h"\ ".\LEGO1\mxcriticalsection.h"\ ".\LEGO1\mxdsaction.h"\ ".\LEGO1\mxdsfile.h"\ ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdssource.h"\ + ".\LEGO1\mxentity.h"\ ".\LEGO1\mxeventmanager.h"\ + ".\LEGO1\mxioinfo.h"\ ".\LEGO1\mxmusicmanager.h"\ ".\LEGO1\mxnotificationmanager.h"\ ".\LEGO1\mxobjectfactory.h"\ @@ -769,7 +1291,6 @@ DEP_CPP_LEGON=\ ".\LEGO1\mxomnicreateparambase.h"\ ".\LEGO1\mxpalette.h"\ ".\LEGO1\mxrect32.h"\ - ".\LEGO1\mxresult.h"\ ".\LEGO1\mxsoundmanager.h"\ ".\LEGO1\mxstreamcontroller.h"\ ".\LEGO1\mxstreamer.h"\ @@ -777,6 +1298,8 @@ DEP_CPP_LEGON=\ ".\LEGO1\mxticklemanager.h"\ ".\LEGO1\mxtimer.h"\ ".\LEGO1\mxtransitionmanager.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxunknown100dc6b0.h"\ ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideomanager.h"\ ".\LEGO1\mxvideoparam.h"\ @@ -795,9 +1318,9 @@ DEP_CPP_LEGON=\ SOURCE=.\LEGO1\mxdsobject.cpp DEP_CPP_MXDSO=\ ".\LEGO1\mxatomid.h"\ - ".\LEGO1\mxbool.h"\ ".\LEGO1\mxcore.h"\ ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxtypes.h"\ "$(INTDIR)\mxdsobject.obj" : $(SOURCE) $(DEP_CPP_MXDSO) "$(INTDIR)" @@ -817,6 +1340,2804 @@ DEP_CPP_MXATO=\ $(CPP) $(CPP_PROJ) $(SOURCE) +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxunknown100dc6b0.cpp +DEP_CPP_MXUNK=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxunknown100dc6b0.h"\ + + +"$(INTDIR)\mxunknown100dc6b0.obj" : $(SOURCE) $(DEP_CPP_MXUNK) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxvideomanager.cpp +DEP_CPP_MXVIDEO=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxpalette.h"\ + ".\LEGO1\mxrect32.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxunknown100dc6b0.h"\ + ".\LEGO1\mxvariabletable.h"\ + ".\LEGO1\mxvideomanager.h"\ + ".\LEGO1\mxvideoparam.h"\ + ".\LEGO1\mxvideoparamflags.h"\ + + +"$(INTDIR)\mxvideomanager.obj" : $(SOURCE) $(DEP_CPP_MXVIDEO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxpalette.cpp +DEP_CPP_MXPAL=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxpalette.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxpalette.obj" : $(SOURCE) $(DEP_CPP_MXPAL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\act1state.cpp +DEP_CPP_ACT1S=\ + ".\LEGO1\act1state.h"\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\act1state.obj" : $(SOURCE) $(DEP_CPP_ACT1S) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\act2brick.cpp +DEP_CPP_ACT2B=\ + ".\LEGO1\act2brick.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\act2brick.obj" : $(SOURCE) $(DEP_CPP_ACT2B) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\act2policestation.cpp +DEP_CPP_ACT2P=\ + ".\LEGO1\act2policestation.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\act2policestation.obj" : $(SOURCE) $(DEP_CPP_ACT2P) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\act3.cpp +DEP_CPP_ACT3_=\ + ".\LEGO1\act3.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\act3.obj" : $(SOURCE) $(DEP_CPP_ACT3_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\act3shark.cpp +DEP_CPP_ACT3S=\ + ".\LEGO1\act3shark.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoanimactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\act3shark.obj" : $(SOURCE) $(DEP_CPP_ACT3S) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\ambulance.cpp +DEP_CPP_AMBUL=\ + ".\LEGO1\ambulance.h"\ + ".\LEGO1\islepathactor.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\ambulance.obj" : $(SOURCE) $(DEP_CPP_AMBUL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\ambulancemissionstate.cpp +DEP_CPP_AMBULA=\ + ".\LEGO1\ambulancemissionstate.h"\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\ambulancemissionstate.obj" : $(SOURCE) $(DEP_CPP_AMBULA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\animstate.cpp +DEP_CPP_ANIMS=\ + ".\LEGO1\animstate.h"\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\animstate.obj" : $(SOURCE) $(DEP_CPP_ANIMS) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\beachhouseentity.cpp +DEP_CPP_BEACH=\ + ".\LEGO1\beachhouseentity.h"\ + ".\LEGO1\buildingentity.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\beachhouseentity.obj" : $(SOURCE) $(DEP_CPP_BEACH) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\bike.cpp +DEP_CPP_BIKE_=\ + ".\LEGO1\bike.h"\ + ".\LEGO1\islepathactor.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\bike.obj" : $(SOURCE) $(DEP_CPP_BIKE_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\buildingentity.cpp +DEP_CPP_BUILD=\ + ".\LEGO1\buildingentity.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\buildingentity.obj" : $(SOURCE) $(DEP_CPP_BUILD) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\bumpbouy.cpp +DEP_CPP_BUMPB=\ + ".\LEGO1\bumpbouy.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoanimactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\bumpbouy.obj" : $(SOURCE) $(DEP_CPP_BUMPB) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\carrace.cpp +DEP_CPP_CARRA=\ + ".\LEGO1\carrace.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legorace.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\carrace.obj" : $(SOURCE) $(DEP_CPP_CARRA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\dunebuggy.cpp +DEP_CPP_DUNEB=\ + ".\LEGO1\dunebuggy.h"\ + ".\LEGO1\islepathactor.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\dunebuggy.obj" : $(SOURCE) $(DEP_CPP_DUNEB) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\elevatorbottom.cpp +DEP_CPP_ELEVA=\ + ".\LEGO1\elevatorbottom.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\elevatorbottom.obj" : $(SOURCE) $(DEP_CPP_ELEVA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\gasstation.cpp +DEP_CPP_GASST=\ + ".\LEGO1\gasstation.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\gasstation.obj" : $(SOURCE) $(DEP_CPP_GASST) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\gasstationentity.cpp +DEP_CPP_GASSTA=\ + ".\LEGO1\buildingentity.h"\ + ".\LEGO1\gasstationentity.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\gasstationentity.obj" : $(SOURCE) $(DEP_CPP_GASSTA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\gasstationstate.cpp +DEP_CPP_GASSTAT=\ + ".\LEGO1\gasstationstate.h"\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\gasstationstate.obj" : $(SOURCE) $(DEP_CPP_GASSTAT) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\helicopter.cpp +DEP_CPP_HELIC=\ + ".\LEGO1\helicopter.h"\ + ".\LEGO1\islepathactor.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\helicopter.obj" : $(SOURCE) $(DEP_CPP_HELIC) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\historybook.cpp +DEP_CPP_HISTO=\ + ".\LEGO1\historybook.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\historybook.obj" : $(SOURCE) $(DEP_CPP_HISTO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\hospital.cpp +DEP_CPP_HOSPI=\ + ".\LEGO1\hospital.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\hospital.obj" : $(SOURCE) $(DEP_CPP_HOSPI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\hospitalentity.cpp +DEP_CPP_HOSPIT=\ + ".\LEGO1\buildingentity.h"\ + ".\LEGO1\hospitalentity.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\hospitalentity.obj" : $(SOURCE) $(DEP_CPP_HOSPIT) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\hospitalstate.cpp +DEP_CPP_HOSPITA=\ + ".\LEGO1\hospitalstate.h"\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\hospitalstate.obj" : $(SOURCE) $(DEP_CPP_HOSPITA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\infocenter.cpp +DEP_CPP_INFOC=\ + ".\LEGO1\infocenter.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\infocenter.obj" : $(SOURCE) $(DEP_CPP_INFOC) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\infocenterdoor.cpp +DEP_CPP_INFOCE=\ + ".\LEGO1\infocenterdoor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\infocenterdoor.obj" : $(SOURCE) $(DEP_CPP_INFOCE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\infocenterentity.cpp +DEP_CPP_INFOCEN=\ + ".\LEGO1\buildingentity.h"\ + ".\LEGO1\infocenterentity.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\infocenterentity.obj" : $(SOURCE) $(DEP_CPP_INFOCEN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\infocenterstate.cpp +DEP_CPP_INFOCENT=\ + ".\LEGO1\infocenterstate.h"\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\infocenterstate.obj" : $(SOURCE) $(DEP_CPP_INFOCENT) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\isle.cpp +DEP_CPP_ISLE_=\ + ".\LEGO1\isle.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\isle.obj" : $(SOURCE) $(DEP_CPP_ISLE_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\isleactor.cpp +DEP_CPP_ISLEA=\ + ".\LEGO1\isleactor.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\isleactor.obj" : $(SOURCE) $(DEP_CPP_ISLEA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\islepathactor.cpp +DEP_CPP_ISLEP=\ + ".\LEGO1\islepathactor.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\islepathactor.obj" : $(SOURCE) $(DEP_CPP_ISLEP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\jetski.cpp +DEP_CPP_JETSK=\ + ".\LEGO1\islepathactor.h"\ + ".\LEGO1\jetski.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\jetski.obj" : $(SOURCE) $(DEP_CPP_JETSK) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\jetskiRace.cpp +DEP_CPP_JETSKI=\ + ".\LEGO1\jetskiRace.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legorace.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\jetskiRace.obj" : $(SOURCE) $(DEP_CPP_JETSKI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\jukebox.cpp +DEP_CPP_JUKEB=\ + ".\LEGO1\jukebox.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\jukebox.obj" : $(SOURCE) $(DEP_CPP_JUKEB) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\jukeboxentity.cpp +DEP_CPP_JUKEBO=\ + ".\LEGO1\jukeboxentity.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\jukeboxentity.obj" : $(SOURCE) $(DEP_CPP_JUKEBO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legoactioncontrolpresenter.cpp +DEP_CPP_LEGOA=\ + ".\LEGO1\legoactioncontrolpresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legoactioncontrolpresenter.obj" : $(SOURCE) $(DEP_CPP_LEGOA)\ + "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legoanimactor.cpp +DEP_CPP_LEGOAN=\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoanimactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legoanimactor.obj" : $(SOURCE) $(DEP_CPP_LEGOAN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legoanimationmanager.cpp +DEP_CPP_LEGOANI=\ + ".\LEGO1\legoanimationmanager.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legoanimationmanager.obj" : $(SOURCE) $(DEP_CPP_LEGOANI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legoanimmmpresenter.cpp +DEP_CPP_LEGOANIM=\ + ".\LEGO1\legoanimmmpresenter.h"\ + ".\LEGO1\mxcompositepresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legoanimmmpresenter.obj" : $(SOURCE) $(DEP_CPP_LEGOANIM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legoanimpresenter.cpp +DEP_CPP_LEGOANIMP=\ + ".\LEGO1\legoanimpresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\legoanimpresenter.obj" : $(SOURCE) $(DEP_CPP_LEGOANIMP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legobuildingmanager.cpp +DEP_CPP_LEGOB=\ + ".\LEGO1\legobuildingmanager.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legobuildingmanager.obj" : $(SOURCE) $(DEP_CPP_LEGOB) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legocachesound.cpp +DEP_CPP_LEGOC=\ + ".\LEGO1\legocachesound.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legocachesound.obj" : $(SOURCE) $(DEP_CPP_LEGOC) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legocameracontroller.cpp +DEP_CPP_LEGOCA=\ + ".\LEGO1\legocameracontroller.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legocameracontroller.obj" : $(SOURCE) $(DEP_CPP_LEGOCA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legocarbuild.cpp +DEP_CPP_LEGOCAR=\ + ".\LEGO1\legocarbuild.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legocarbuild.obj" : $(SOURCE) $(DEP_CPP_LEGOCAR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legocarbuildanimpresenter.cpp +DEP_CPP_LEGOCARB=\ + ".\LEGO1\legoanimpresenter.h"\ + ".\LEGO1\legocarbuildanimpresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\legocarbuildanimpresenter.obj" : $(SOURCE) $(DEP_CPP_LEGOCARB)\ + "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legocontrolmanager.cpp +DEP_CPP_LEGOCO=\ + ".\LEGO1\legocontrolmanager.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legocontrolmanager.obj" : $(SOURCE) $(DEP_CPP_LEGOCO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legoentity.cpp +DEP_CPP_LEGOE=\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legoentity.obj" : $(SOURCE) $(DEP_CPP_LEGOE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legoentitypresenter.cpp +DEP_CPP_LEGOEN=\ + ".\LEGO1\legoentitypresenter.h"\ + ".\LEGO1\mxcompositepresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legoentitypresenter.obj" : $(SOURCE) $(DEP_CPP_LEGOEN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legoflctexturepresenter.cpp +DEP_CPP_LEGOF=\ + ".\LEGO1\legoflctexturepresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxflcpresenter.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\legoflctexturepresenter.obj" : $(SOURCE) $(DEP_CPP_LEGOF)\ + "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legohideanimpresenter.cpp +DEP_CPP_LEGOH=\ + ".\LEGO1\legoanimpresenter.h"\ + ".\LEGO1\legohideanimpresenter.h"\ + ".\LEGO1\legoloopinganimpresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\legohideanimpresenter.obj" : $(SOURCE) $(DEP_CPP_LEGOH) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legoinputmanager.cpp +DEP_CPP_LEGOI=\ + ".\LEGO1\legoinputmanager.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legoinputmanager.obj" : $(SOURCE) $(DEP_CPP_LEGOI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legojetski.cpp +DEP_CPP_LEGOJ=\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoanimactor.h"\ + ".\LEGO1\legocarraceactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legojetski.h"\ + ".\LEGO1\legojetskiraceactor.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\legoraceactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legojetski.obj" : $(SOURCE) $(DEP_CPP_LEGOJ) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legoloadcachesoundpresenter.cpp +DEP_CPP_LEGOL=\ + ".\LEGO1\legoloadcachesoundpresenter.h"\ + ".\LEGO1\mxaudiopresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxsoundpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxwavepresenter.h"\ + + +"$(INTDIR)\legoloadcachesoundpresenter.obj" : $(SOURCE) $(DEP_CPP_LEGOL)\ + "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legolocomotionanimpresenter.cpp +DEP_CPP_LEGOLO=\ + ".\LEGO1\legoanimpresenter.h"\ + ".\LEGO1\legolocomotionanimpresenter.h"\ + ".\LEGO1\legoloopinganimpresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\legolocomotionanimpresenter.obj" : $(SOURCE) $(DEP_CPP_LEGOLO)\ + "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legopalettepresenter.cpp +DEP_CPP_LEGOP=\ + ".\LEGO1\legopalettepresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\legopalettepresenter.obj" : $(SOURCE) $(DEP_CPP_LEGOP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legopathactor.cpp +DEP_CPP_LEGOPA=\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legopathactor.obj" : $(SOURCE) $(DEP_CPP_LEGOPA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legopathpresenter.cpp +DEP_CPP_LEGOPAT=\ + ".\LEGO1\legopathpresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legopathpresenter.obj" : $(SOURCE) $(DEP_CPP_LEGOPAT) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legophonemepresenter.cpp +DEP_CPP_LEGOPH=\ + ".\LEGO1\legophonemepresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxflcpresenter.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\legophonemepresenter.obj" : $(SOURCE) $(DEP_CPP_LEGOPH) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legoplantmanager.cpp +DEP_CPP_LEGOPL=\ + ".\LEGO1\legoplantmanager.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legoplantmanager.obj" : $(SOURCE) $(DEP_CPP_LEGOPL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legorace.cpp +DEP_CPP_LEGOR=\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legorace.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legorace.obj" : $(SOURCE) $(DEP_CPP_LEGOR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legosoundmanager.cpp +DEP_CPP_LEGOS=\ + ".\LEGO1\legosoundmanager.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxsoundmanager.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legosoundmanager.obj" : $(SOURCE) $(DEP_CPP_LEGOS) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legotexturepresenter.cpp +DEP_CPP_LEGOT=\ + ".\LEGO1\legotexturepresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legotexturepresenter.obj" : $(SOURCE) $(DEP_CPP_LEGOT) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legoworld.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_LEGOW=\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legoworld.obj" : $(SOURCE) $(DEP_CPP_LEGOW) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_LEGOW=\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legoworld.obj" : $(SOURCE) $(DEP_CPP_LEGOW) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legoworldpresenter.cpp +DEP_CPP_LEGOWO=\ + ".\LEGO1\legoentitypresenter.h"\ + ".\LEGO1\legoworldpresenter.h"\ + ".\LEGO1\mxcompositepresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legoworldpresenter.obj" : $(SOURCE) $(DEP_CPP_LEGOWO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\motorcycle.cpp +DEP_CPP_MOTOR=\ + ".\LEGO1\islepathactor.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\motorcycle.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\motorcycle.obj" : $(SOURCE) $(DEP_CPP_MOTOR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxcontrolpresenter.cpp +DEP_CPP_MXCON=\ + ".\LEGO1\mxcompositepresenter.h"\ + ".\LEGO1\mxcontrolpresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxcontrolpresenter.obj" : $(SOURCE) $(DEP_CPP_MXCON) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdiskstreamcontroller.cpp +DEP_CPP_MXDIS=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdiskstreamcontroller.h"\ + ".\LEGO1\mxstreamcontroller.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdiskstreamcontroller.obj" : $(SOURCE) $(DEP_CPP_MXDIS) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdschunk.cpp +DEP_CPP_MXDSC=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdschunk.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdschunk.obj" : $(SOURCE) $(DEP_CPP_MXDSC) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdsfile.cpp +DEP_CPP_MXDSF=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsfile.h"\ + ".\LEGO1\mxdssource.h"\ + ".\LEGO1\mxioinfo.h"\ + ".\LEGO1\mxstring.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsfile.obj" : $(SOURCE) $(DEP_CPP_MXDSF) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxentity.cpp +DEP_CPP_MXENT=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxentity.obj" : $(SOURCE) $(DEP_CPP_MXENT) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxeventmanager.cpp +DEP_CPP_MXEVE=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxeventmanager.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxunknown100dc6b0.h"\ + + +"$(INTDIR)\mxeventmanager.obj" : $(SOURCE) $(DEP_CPP_MXEVE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxeventpresenter.cpp +DEP_CPP_MXEVEN=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxeventpresenter.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxeventpresenter.obj" : $(SOURCE) $(DEP_CPP_MXEVEN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxflcpresenter.cpp +DEP_CPP_MXFLC=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxflcpresenter.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\mxflcpresenter.obj" : $(SOURCE) $(DEP_CPP_MXFLC) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxloopingsmkpresenter.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXLOO=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxloopingsmkpresenter.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxsmkpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\mxloopingsmkpresenter.obj" : $(SOURCE) $(DEP_CPP_MXLOO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXLOO=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxloopingsmkpresenter.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxsmkpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\mxloopingsmkpresenter.obj" : $(SOURCE) $(DEP_CPP_MXLOO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxmediapresenter.cpp +DEP_CPP_MXMED=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxmediapresenter.obj" : $(SOURCE) $(DEP_CPP_MXMED) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxmusicpresenter.cpp +DEP_CPP_MXMUS=\ + ".\LEGO1\mxaudiopresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxmusicpresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxmusicpresenter.obj" : $(SOURCE) $(DEP_CPP_MXMUS) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxnotificationmanager.cpp +DEP_CPP_MXNOT=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxnotificationmanager.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxnotificationmanager.obj" : $(SOURCE) $(DEP_CPP_MXNOT) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxpresenter.cpp +DEP_CPP_MXPRE=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxpresenter.obj" : $(SOURCE) $(DEP_CPP_MXPRE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxsmkpresenter.cpp +DEP_CPP_MXSMK=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxsmkpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\mxsmkpresenter.obj" : $(SOURCE) $(DEP_CPP_MXSMK) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxsoundmanager.cpp +DEP_CPP_MXSOU=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxsoundmanager.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxsoundmanager.obj" : $(SOURCE) $(DEP_CPP_MXSOU) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxstillpresenter.cpp +DEP_CPP_MXSTI=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxstillpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\mxstillpresenter.obj" : $(SOURCE) $(DEP_CPP_MXSTI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxstreamer.cpp +DEP_CPP_MXSTRE=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxstreamcontroller.h"\ + ".\LEGO1\mxstreamer.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxstreamer.obj" : $(SOURCE) $(DEP_CPP_MXSTRE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxtransitionmanager.cpp +DEP_CPP_MXTRA=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtransitionmanager.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxtransitionmanager.obj" : $(SOURCE) $(DEP_CPP_MXTRA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxvideopresenter.cpp +DEP_CPP_MXVIDEOP=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\mxvideopresenter.obj" : $(SOURCE) $(DEP_CPP_MXVIDEOP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxwavepresenter.cpp +DEP_CPP_MXWAV=\ + ".\LEGO1\mxaudiopresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxsoundpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxwavepresenter.h"\ + + +"$(INTDIR)\mxwavepresenter.obj" : $(SOURCE) $(DEP_CPP_MXWAV) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\pizza.cpp +DEP_CPP_PIZZA=\ + ".\LEGO1\isleactor.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\pizza.h"\ + + +"$(INTDIR)\pizza.obj" : $(SOURCE) $(DEP_CPP_PIZZA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\pizzeria.cpp +DEP_CPP_PIZZE=\ + ".\LEGO1\isleactor.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\pizzeria.h"\ + + +"$(INTDIR)\pizzeria.obj" : $(SOURCE) $(DEP_CPP_PIZZE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\pizzeriastate.cpp +DEP_CPP_PIZZER=\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\pizzeriastate.h"\ + + +"$(INTDIR)\pizzeriastate.obj" : $(SOURCE) $(DEP_CPP_PIZZER) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\police.cpp +DEP_CPP_POLIC=\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\police.h"\ + + +"$(INTDIR)\police.obj" : $(SOURCE) $(DEP_CPP_POLIC) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\policeentity.cpp +DEP_CPP_POLICE=\ + ".\LEGO1\buildingentity.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\policeentity.h"\ + + +"$(INTDIR)\policeentity.obj" : $(SOURCE) $(DEP_CPP_POLICE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\policestate.cpp +DEP_CPP_POLICES=\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\policestate.h"\ + + +"$(INTDIR)\policestate.obj" : $(SOURCE) $(DEP_CPP_POLICES) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\racecar.cpp +DEP_CPP_RACEC=\ + ".\LEGO1\islepathactor.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\racecar.h"\ + + +"$(INTDIR)\racecar.obj" : $(SOURCE) $(DEP_CPP_RACEC) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\racestandsentity.cpp +DEP_CPP_RACES=\ + ".\LEGO1\buildingentity.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\racestandsentity.h"\ + + +"$(INTDIR)\racestandsentity.obj" : $(SOURCE) $(DEP_CPP_RACES) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\racestate.cpp +DEP_CPP_RACEST=\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\racestate.h"\ + + +"$(INTDIR)\racestate.obj" : $(SOURCE) $(DEP_CPP_RACEST) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\radio.cpp +DEP_CPP_RADIO=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\radio.h"\ + + +"$(INTDIR)\radio.obj" : $(SOURCE) $(DEP_CPP_RADIO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\radiostate.cpp +DEP_CPP_RADIOS=\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\radiostate.h"\ + + +"$(INTDIR)\radiostate.obj" : $(SOURCE) $(DEP_CPP_RADIOS) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\registrationbook.cpp +DEP_CPP_REGIS=\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\registrationbook.h"\ + + +"$(INTDIR)\registrationbook.obj" : $(SOURCE) $(DEP_CPP_REGIS) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\score.cpp +DEP_CPP_SCORE=\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\score.h"\ + + +"$(INTDIR)\score.obj" : $(SOURCE) $(DEP_CPP_SCORE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\skateboard.cpp +DEP_CPP_SKATE=\ + ".\LEGO1\islepathactor.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\skateboard.h"\ + + +"$(INTDIR)\skateboard.obj" : $(SOURCE) $(DEP_CPP_SKATE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\towtrack.cpp +DEP_CPP_TOWTR=\ + ".\LEGO1\islepathactor.h"\ + ".\LEGO1\legoactor.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legopathactor.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\towtrack.h"\ + + +"$(INTDIR)\towtrack.obj" : $(SOURCE) $(DEP_CPP_TOWTR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\towtrackmissionstate.cpp +DEP_CPP_TOWTRA=\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\towtrackmissionstate.h"\ + + +"$(INTDIR)\towtrackmissionstate.obj" : $(SOURCE) $(DEP_CPP_TOWTRA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxcompositemediapresenter.cpp +DEP_CPP_MXCOM=\ + ".\LEGO1\mxcompositemediapresenter.h"\ + ".\LEGO1\mxcompositepresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxcompositemediapresenter.obj" : $(SOURCE) $(DEP_CPP_MXCOM)\ + "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxcompositepresenter.cpp +DEP_CPP_MXCOMP=\ + ".\LEGO1\mxcompositepresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxcompositepresenter.obj" : $(SOURCE) $(DEP_CPP_MXCOMP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legostate.cpp +DEP_CPP_LEGOST=\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legostate.obj" : $(SOURCE) $(DEP_CPP_LEGOST) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxaudiopresenter.cpp +DEP_CPP_MXAUD=\ + ".\LEGO1\mxaudiopresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxaudiopresenter.obj" : $(SOURCE) $(DEP_CPP_MXAUD) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxsoundpresenter.cpp +DEP_CPP_MXSOUN=\ + ".\LEGO1\mxaudiopresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxsoundpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxsoundpresenter.obj" : $(SOURCE) $(DEP_CPP_MXSOUN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxioinfo.cpp +DEP_CPP_MXIOI=\ + ".\LEGO1\mxioinfo.h"\ + + +"$(INTDIR)\mxioinfo.obj" : $(SOURCE) $(DEP_CPP_MXIOI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdssource.cpp +DEP_CPP_MXDSS=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdssource.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdssource.obj" : $(SOURCE) $(DEP_CPP_MXDSS) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\act3state.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_ACT3ST=\ + ".\LEGO1\act3state.h"\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\act3state.obj" : $(SOURCE) $(DEP_CPP_ACT3ST) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_ACT3ST=\ + ".\LEGO1\act3state.h"\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\act3state.obj" : $(SOURCE) $(DEP_CPP_ACT3ST) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\helicopterstate.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_HELICO=\ + ".\LEGO1\helicopterstate.h"\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\helicopterstate.obj" : $(SOURCE) $(DEP_CPP_HELICO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_HELICO=\ + ".\LEGO1\helicopterstate.h"\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\helicopterstate.obj" : $(SOURCE) $(DEP_CPP_HELICO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\jukeboxstate.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_JUKEBOX=\ + ".\LEGO1\jukeboxstate.h"\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\jukeboxstate.obj" : $(SOURCE) $(DEP_CPP_JUKEBOX) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_JUKEBOX=\ + ".\LEGO1\jukeboxstate.h"\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\jukeboxstate.obj" : $(SOURCE) $(DEP_CPP_JUKEBOX) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legoact2state.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_LEGOAC=\ + ".\LEGO1\legoact2state.h"\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legoact2state.obj" : $(SOURCE) $(DEP_CPP_LEGOAC) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_LEGOAC=\ + ".\LEGO1\legoact2state.h"\ + ".\LEGO1\legostate.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legoact2state.obj" : $(SOURCE) $(DEP_CPP_LEGOAC) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legopathcontroller.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_LEGOPATH=\ + ".\LEGO1\legopathcontroller.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legopathcontroller.obj" : $(SOURCE) $(DEP_CPP_LEGOPATH) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_LEGOPATH=\ + ".\LEGO1\legopathcontroller.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\legopathcontroller.obj" : $(SOURCE) $(DEP_CPP_LEGOPATH) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\legovideomanager.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_LEGOV=\ + ".\LEGO1\lego3dmanager.h"\ + ".\LEGO1\lego3dview.h"\ + ".\LEGO1\legovideomanager.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxpalette.h"\ + ".\LEGO1\mxrect32.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxunknown100dc6b0.h"\ + ".\LEGO1\mxvariabletable.h"\ + ".\LEGO1\mxvideomanager.h"\ + ".\LEGO1\mxvideoparam.h"\ + ".\LEGO1\mxvideoparamflags.h"\ + ".\LEGO1\viewmanager.h"\ + + +"$(INTDIR)\legovideomanager.obj" : $(SOURCE) $(DEP_CPP_LEGOV) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_LEGOV=\ + ".\LEGO1\lego3dmanager.h"\ + ".\LEGO1\lego3dview.h"\ + ".\LEGO1\legovideomanager.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxpalette.h"\ + ".\LEGO1\mxrect32.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxunknown100dc6b0.h"\ + ".\LEGO1\mxvariabletable.h"\ + ".\LEGO1\mxvideomanager.h"\ + ".\LEGO1\mxvideoparam.h"\ + ".\LEGO1\mxvideoparamflags.h"\ + ".\LEGO1\viewmanager.h"\ + + +"$(INTDIR)\legovideomanager.obj" : $(SOURCE) $(DEP_CPP_LEGOV) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxbackgroundaudiomanager.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXBAC=\ + ".\LEGO1\mxbackgroundaudiomanager.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxbackgroundaudiomanager.obj" : $(SOURCE) $(DEP_CPP_MXBAC)\ + "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXBAC=\ + ".\LEGO1\mxbackgroundaudiomanager.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxbackgroundaudiomanager.obj" : $(SOURCE) $(DEP_CPP_MXBAC)\ + "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdiskstreamprovider.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXDISK=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdiskstreamprovider.h"\ + ".\LEGO1\mxstreamprovider.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdiskstreamprovider.obj" : $(SOURCE) $(DEP_CPP_MXDISK) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXDISK=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdiskstreamprovider.h"\ + ".\LEGO1\mxstreamprovider.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdiskstreamprovider.obj" : $(SOURCE) $(DEP_CPP_MXDISK) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdsaction.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXDSA=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsaction.obj" : $(SOURCE) $(DEP_CPP_MXDSA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXDSA=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsaction.obj" : $(SOURCE) $(DEP_CPP_MXDSA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdsanim.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXDSAN=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsanim.h"\ + ".\LEGO1\mxdsmediaaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsanim.obj" : $(SOURCE) $(DEP_CPP_MXDSAN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXDSAN=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsanim.h"\ + ".\LEGO1\mxdsmediaaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsanim.obj" : $(SOURCE) $(DEP_CPP_MXDSAN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdsevent.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXDSE=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsevent.h"\ + ".\LEGO1\mxdsmediaaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsevent.obj" : $(SOURCE) $(DEP_CPP_MXDSE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXDSE=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsevent.h"\ + ".\LEGO1\mxdsmediaaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsevent.obj" : $(SOURCE) $(DEP_CPP_MXDSE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdsmediaaction.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXDSM=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmediaaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsmediaaction.obj" : $(SOURCE) $(DEP_CPP_MXDSM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXDSM=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmediaaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsmediaaction.obj" : $(SOURCE) $(DEP_CPP_MXDSM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdsmultiaction.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXDSMU=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmultiaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsmultiaction.obj" : $(SOURCE) $(DEP_CPP_MXDSMU) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXDSMU=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmultiaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsmultiaction.obj" : $(SOURCE) $(DEP_CPP_MXDSMU) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdsobjectaction.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXDSOB=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmediaaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdsobjectaction.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsobjectaction.obj" : $(SOURCE) $(DEP_CPP_MXDSOB) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXDSOB=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmediaaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdsobjectaction.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsobjectaction.obj" : $(SOURCE) $(DEP_CPP_MXDSOB) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdsparallelaction.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXDSP=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmultiaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdsparallelaction.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsparallelaction.obj" : $(SOURCE) $(DEP_CPP_MXDSP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXDSP=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmultiaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdsparallelaction.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsparallelaction.obj" : $(SOURCE) $(DEP_CPP_MXDSP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdsselectaction.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXDSSE=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmultiaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdsparallelaction.h"\ + ".\LEGO1\mxdsselectaction.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsselectaction.obj" : $(SOURCE) $(DEP_CPP_MXDSSE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXDSSE=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmultiaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdsparallelaction.h"\ + ".\LEGO1\mxdsselectaction.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsselectaction.obj" : $(SOURCE) $(DEP_CPP_MXDSSE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdsserialaction.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXDSSER=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmultiaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdsserialaction.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsserialaction.obj" : $(SOURCE) $(DEP_CPP_MXDSSER) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXDSSER=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmultiaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdsserialaction.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsserialaction.obj" : $(SOURCE) $(DEP_CPP_MXDSSER) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdssound.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXDSSO=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmediaaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdssound.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdssound.obj" : $(SOURCE) $(DEP_CPP_MXDSSO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXDSSO=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmediaaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdssound.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdssound.obj" : $(SOURCE) $(DEP_CPP_MXDSSO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdsstill.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXDSST=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmediaaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdsstill.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsstill.obj" : $(SOURCE) $(DEP_CPP_MXDSST) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXDSST=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsmediaaction.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdsstill.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdsstill.obj" : $(SOURCE) $(DEP_CPP_MXDSST) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdssubscriber.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXDSSU=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdssubscriber.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdssubscriber.obj" : $(SOURCE) $(DEP_CPP_MXDSSU) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXDSSU=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdssubscriber.h"\ + ".\LEGO1\mxtypes.h"\ + + +"$(INTDIR)\mxdssubscriber.obj" : $(SOURCE) $(DEP_CPP_MXDSSU) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxloopingflcpresenter.cpp + +!IF "$(CFG)" == "LEGO1 - Win32 Release" + +DEP_CPP_MXLOOP=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxflcpresenter.h"\ + ".\LEGO1\mxloopingflcpresenter.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\mxloopingflcpresenter.obj" : $(SOURCE) $(DEP_CPP_MXLOOP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug" + +DEP_CPP_MXLOOP=\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxflcpresenter.h"\ + ".\LEGO1\mxloopingflcpresenter.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxvideopresenter.h"\ + + +"$(INTDIR)\mxloopingflcpresenter.obj" : $(SOURCE) $(DEP_CPP_MXLOOP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + # End Source File # End Target ################################################################################ @@ -843,123 +4164,6 @@ DEP_CPP_DEFIN=\ $(CPP) $(CPP_PROJ) $(SOURCE) -# End Source File -################################################################################ -# Begin Source File - -SOURCE=.\ISLE\isle.cpp -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"\ - ".\LEGO1\legogamestate.h"\ - ".\LEGO1\legoinc.h"\ - ".\LEGO1\legoinputmanager.h"\ - ".\LEGO1\legomodelpresenter.h"\ - ".\LEGO1\legonavcontroller.h"\ - ".\LEGO1\legoomni.h"\ - ".\LEGO1\legopartpresenter.h"\ - ".\LEGO1\legoroi.h"\ - ".\LEGO1\legovideomanager.h"\ - ".\LEGO1\legoworldpresenter.h"\ - ".\LEGO1\mxatomid.h"\ - ".\LEGO1\mxbackgroundaudiomanager.h"\ - ".\LEGO1\mxbool.h"\ - ".\LEGO1\mxcore.h"\ - ".\LEGO1\mxcriticalsection.h"\ - ".\LEGO1\mxdirectdraw.h"\ - ".\LEGO1\mxdsaction.h"\ - ".\LEGO1\mxdsfile.h"\ - ".\LEGO1\mxdsobject.h"\ - ".\LEGO1\mxeventmanager.h"\ - ".\LEGO1\mxmusicmanager.h"\ - ".\LEGO1\mxnotificationmanager.h"\ - ".\LEGO1\mxobjectfactory.h"\ - ".\LEGO1\mxomni.h"\ - ".\LEGO1\mxomnicreateflags.h"\ - ".\LEGO1\mxomnicreateparam.h"\ - ".\LEGO1\mxomnicreateparambase.h"\ - ".\LEGO1\mxpalette.h"\ - ".\LEGO1\mxrect32.h"\ - ".\LEGO1\mxresult.h"\ - ".\LEGO1\mxsoundmanager.h"\ - ".\LEGO1\mxstreamcontroller.h"\ - ".\LEGO1\mxstreamer.h"\ - ".\LEGO1\mxstring.h"\ - ".\LEGO1\mxticklemanager.h"\ - ".\LEGO1\mxtimer.h"\ - ".\LEGO1\mxtransitionmanager.h"\ - ".\LEGO1\mxvariabletable.h"\ - ".\LEGO1\mxvideomanager.h"\ - ".\LEGO1\mxvideoparam.h"\ - ".\LEGO1\mxvideoparamflags.h"\ - ".\LEGO1\viewmanager.h"\ - - -"$(INTDIR)\isle.obj" : $(SOURCE) $(DEP_CPP_ISLE_) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -# End Source File -################################################################################ -# Begin Source File - -SOURCE=.\ISLE\main.cpp -DEP_CPP_MAIN_=\ - ".\ISLE\define.h"\ - ".\ISLE\isle.h"\ - ".\LEGO1\lego3dmanager.h"\ - ".\LEGO1\lego3dview.h"\ - ".\LEGO1\legoentity.h"\ - ".\LEGO1\legogamestate.h"\ - ".\LEGO1\legoinc.h"\ - ".\LEGO1\legoinputmanager.h"\ - ".\LEGO1\legonavcontroller.h"\ - ".\LEGO1\legoomni.h"\ - ".\LEGO1\legoroi.h"\ - ".\LEGO1\legovideomanager.h"\ - ".\LEGO1\mxatomid.h"\ - ".\LEGO1\mxbackgroundaudiomanager.h"\ - ".\LEGO1\mxbool.h"\ - ".\LEGO1\mxcore.h"\ - ".\LEGO1\mxcriticalsection.h"\ - ".\LEGO1\mxdsaction.h"\ - ".\LEGO1\mxdsfile.h"\ - ".\LEGO1\mxdsobject.h"\ - ".\LEGO1\mxeventmanager.h"\ - ".\LEGO1\mxmusicmanager.h"\ - ".\LEGO1\mxnotificationmanager.h"\ - ".\LEGO1\mxobjectfactory.h"\ - ".\LEGO1\mxomni.h"\ - ".\LEGO1\mxomnicreateflags.h"\ - ".\LEGO1\mxomnicreateparam.h"\ - ".\LEGO1\mxomnicreateparambase.h"\ - ".\LEGO1\mxpalette.h"\ - ".\LEGO1\mxrect32.h"\ - ".\LEGO1\mxresult.h"\ - ".\LEGO1\mxsoundmanager.h"\ - ".\LEGO1\mxstreamcontroller.h"\ - ".\LEGO1\mxstreamer.h"\ - ".\LEGO1\mxstring.h"\ - ".\LEGO1\mxticklemanager.h"\ - ".\LEGO1\mxtimer.h"\ - ".\LEGO1\mxtransitionmanager.h"\ - ".\LEGO1\mxvariabletable.h"\ - ".\LEGO1\mxvideomanager.h"\ - ".\LEGO1\mxvideoparam.h"\ - ".\LEGO1\mxvideoparamflags.h"\ - ".\LEGO1\viewmanager.h"\ - - -"$(INTDIR)\main.obj" : $(SOURCE) $(DEP_CPP_MAIN_) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - # End Source File ################################################################################ # Begin Source File @@ -1400,6 +4604,78 @@ SOURCE=.\LEGO1\mxvideoparamflags.h !ENDIF # End Project Dependency +################################################################################ +# Begin Source File + +SOURCE=.\ISLE\isleapp.cpp +DEP_CPP_ISLEAP=\ + ".\ISLE\define.h"\ + ".\ISLE\isleapp.h"\ + ".\ISLE\res\resource.h"\ + ".\LEGO1\isle.h"\ + ".\LEGO1\lego3dmanager.h"\ + ".\LEGO1\lego3dview.h"\ + ".\LEGO1\legoanimationmanager.h"\ + ".\LEGO1\legobuildingmanager.h"\ + ".\LEGO1\legoentity.h"\ + ".\LEGO1\legoentitypresenter.h"\ + ".\LEGO1\legogamestate.h"\ + ".\LEGO1\legoinputmanager.h"\ + ".\LEGO1\legomodelpresenter.h"\ + ".\LEGO1\legonavcontroller.h"\ + ".\LEGO1\legoomni.h"\ + ".\LEGO1\legopartpresenter.h"\ + ".\LEGO1\legoplantmanager.h"\ + ".\LEGO1\legoroi.h"\ + ".\LEGO1\legovideomanager.h"\ + ".\LEGO1\legoworld.h"\ + ".\LEGO1\legoworldpresenter.h"\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxbackgroundaudiomanager.h"\ + ".\LEGO1\mxcompositepresenter.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxcriticalsection.h"\ + ".\LEGO1\mxdirectdraw.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsfile.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxdssource.h"\ + ".\LEGO1\mxentity.h"\ + ".\LEGO1\mxeventmanager.h"\ + ".\LEGO1\mxioinfo.h"\ + ".\LEGO1\mxmediapresenter.h"\ + ".\LEGO1\mxmusicmanager.h"\ + ".\LEGO1\mxnotificationmanager.h"\ + ".\LEGO1\mxobjectfactory.h"\ + ".\LEGO1\mxomni.h"\ + ".\LEGO1\mxomnicreateflags.h"\ + ".\LEGO1\mxomnicreateparam.h"\ + ".\LEGO1\mxomnicreateparambase.h"\ + ".\LEGO1\mxpalette.h"\ + ".\LEGO1\mxpresenter.h"\ + ".\LEGO1\mxrect32.h"\ + ".\LEGO1\mxsoundmanager.h"\ + ".\LEGO1\mxstreamcontroller.h"\ + ".\LEGO1\mxstreamer.h"\ + ".\LEGO1\mxstring.h"\ + ".\LEGO1\mxticklemanager.h"\ + ".\LEGO1\mxtimer.h"\ + ".\LEGO1\mxtransitionmanager.h"\ + ".\LEGO1\mxtypes.h"\ + ".\LEGO1\mxunknown100dc6b0.h"\ + ".\LEGO1\mxvariabletable.h"\ + ".\LEGO1\mxvideomanager.h"\ + ".\LEGO1\mxvideoparam.h"\ + ".\LEGO1\mxvideoparamflags.h"\ + ".\LEGO1\mxvideopresenter.h"\ + ".\LEGO1\viewmanager.h"\ + + +"$(INTDIR)\isleapp.obj" : $(SOURCE) $(DEP_CPP_ISLEAP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File # End Target # End Project ################################################################################ diff --git a/isle.mdp b/isle.mdp index 375126de..a5fc4336 100644 Binary files a/isle.mdp and b/isle.mdp differ diff --git a/tools/reccmp/isle.png b/tools/reccmp/isle.png new file mode 100644 index 00000000..cfa26a23 Binary files /dev/null and b/tools/reccmp/isle.png differ diff --git a/tools/reccmp/lego1.png b/tools/reccmp/lego1.png new file mode 100755 index 00000000..f76a54da Binary files /dev/null and b/tools/reccmp/lego1.png differ diff --git a/tools/reccmp/reccmp.py b/tools/reccmp/reccmp.py index 6e9826ce..abfe71a7 100755 --- a/tools/reccmp/reccmp.py +++ b/tools/reccmp/reccmp.py @@ -1,12 +1,14 @@ #!/usr/bin/env python3 import argparse +import base64 from capstone import * import difflib import struct import subprocess import os import sys +import colorama parser = argparse.ArgumentParser(allow_abbrev=False, description='Recompilation Compare: compare an original EXE with a recompiled EXE + PDB.') @@ -14,12 +16,20 @@ parser.add_argument('recompiled', metavar='recompiled-binary', help='The recompiled binary') parser.add_argument('pdb', metavar='recompiled-pdb', help='The PDB of the recompiled binary') parser.add_argument('decomp_dir', metavar='decomp-dir', help='The decompiled source tree') -parser.add_argument('--verbose', '-v', metavar='offset', help='Print assembly diff for specific function (original file\'s offset)') -parser.add_argument('--html', '-H', metavar='output-file', help='Generate searchable HTML summary of status and diffs') +parser.add_argument('--total', '-T', metavar='', help='Total number of expected functions (improves total accuracy statistic)') +parser.add_argument('--verbose', '-v', metavar='', help='Print assembly diff for specific function (original file\'s offset)') +parser.add_argument('--html', '-H', metavar='', help='Generate searchable HTML summary of status and diffs') +parser.add_argument('--no-color', '-n', action='store_true', help='Do not color the output') +parser.add_argument('--svg', '-S', metavar='', help='Generate SVG graphic of progress') +parser.add_argument('--svg-icon', metavar='icon', help='Icon to use in SVG (PNG)') +parser.add_argument('--print-rec-addr', action='store_true', help='Print addresses of recompiled functions too') args = parser.parse_args() +colorama.init() + verbose = None +found_verbose_target = False if args.verbose: try: verbose = int(args.verbose, 16) @@ -27,6 +37,8 @@ parser.error('invalid verbose argument') html = args.html +plain = args.no_color + original = args.original if not os.path.isfile(original): parser.error('Original binary does not exist') @@ -43,6 +55,8 @@ if not os.path.isdir(source): parser.error('Source directory does not exist') +svg = args.svg + # Declare a class that can automatically convert virtual executable addresses # to file addresses class Bin: @@ -279,7 +293,7 @@ def parse_asm(file, addr, size): line = line.strip() - if line.startswith(pattern): + if line.startswith(pattern) and not line.endswith("STUB"): par = line[len(pattern):].strip().split() module = par[0] if module != basename: @@ -287,6 +301,13 @@ def parse_asm(file, addr, size): addr = int(par[1], 16) + # Verbose flag handling + if verbose: + if addr == verbose: + found_verbose_target = True + else: + continue + find_open_bracket = line while '{' not in find_open_bracket: find_open_bracket = srcfile.readline() @@ -305,23 +326,58 @@ def parse_asm(file, addr, size): else: ratio = 0 - print(' %s (%s / %s) is %.2f%% similar to the original' % (recinfo.name, hex(addr), hex(recinfo.addr), ratio * 100)) + percenttext = "%.2f%%" % (ratio * 100) + if not plain: + if ratio == 1.0: + percenttext = colorama.Fore.GREEN + percenttext + colorama.Style.RESET_ALL + elif ratio > 0.8: + percenttext = colorama.Fore.YELLOW + percenttext + colorama.Style.RESET_ALL + else: + percenttext = colorama.Fore.RED + percenttext + colorama.Style.RESET_ALL + + if not verbose: + if args.print_rec_addr: + addrs = '%s / %s' % (hex(addr), hex(recinfo.addr)) + else: + addrs = hex(addr) + print(' %s (%s) is %s similar to the original' % (recinfo.name, addrs, percenttext)) function_count += 1 total_accuracy += ratio if recinfo.size: - if verbose == addr or html: - udiff = difflib.unified_diff(origasm, recompasm) + udiff = difflib.unified_diff(origasm, recompasm, n=10) - if verbose == addr: + # If verbose, print the diff for that funciton to the output + if verbose: + if ratio == 1.0: + print("%s: %s 100%% match.\n\nOK!" % (hex(addr), recinfo.name)) + else: for line in udiff: - print(line) - print() - print() + if line.startswith("++") or line.startswith("@@") or line.startswith("--"): + # Skip unneeded parts of the diff for the brief view + pass + elif line.startswith("+"): + if plain: + print(line) + else: + print(colorama.Fore.GREEN + line) + elif line.startswith("-"): + if plain: + print(line) + else: + print(colorama.Fore.RED + line) + else: + print(line) + if not plain: + print(colorama.Style.RESET_ALL, end='') - if html: - htmlinsert.append('{address: "%s", name: "%s", matching: %s, diff: "%s"}' % (hex(addr), recinfo.name, str(ratio), '\\n'.join(udiff).replace('"', '\\"').replace('\n', '\\n'))) + print("\n%s is only %s similar to the original, diff above" % (recinfo.name, percenttext)) + + # If html, record the diffs to an HTML file + if html: + escaped = '\\n'.join(udiff).replace('"', '\\"').replace('\n', '\\n').replace('<', '<').replace('>', '>') + htmlinsert.append('{address: "%s", name: "%s", matching: %s, diff: "%s"}' % (hex(addr), recinfo.name, str(ratio), escaped)) except UnicodeDecodeError: break @@ -345,8 +401,63 @@ def gen_html(html, data): htmlfile.write(templatedata) htmlfile.close() +def gen_svg(svg, name, icon, implemented_funcs, total_funcs, raw_accuracy): + templatefile = open(get_file_in_script_dir('template.svg'), 'r') + if not templatefile: + print('Failed to find SVG template file, can\'t generate SVG summary') + return + + templatedata = templatefile.read() + templatefile.close() + + # Replace icon + if args.svg_icon: + iconfile = open(args.svg_icon, 'rb') + templatedata = templatedata.replace('{icon}', base64.b64encode(iconfile.read()).decode('utf-8'), 1) + iconfile.close() + + # Replace name + templatedata = templatedata.replace('{name}', name, 1) + + # Replace implemented statistic + templatedata = templatedata.replace('{implemented}', '%.2f%% (%i/%i)' % (implemented_funcs / total_funcs * 100, implemented_funcs, total_funcs), 1) + + # Replace accuracy statistic + templatedata = templatedata.replace('{accuracy}', '%.2f%%' % (raw_accuracy / implemented_funcs * 100), 1) + + # Generate progress bar width + total_statistic = raw_accuracy / total_funcs + percenttemplate = '{progbar' + percentstart = templatedata.index(percenttemplate) + percentend = templatedata.index('}', percentstart) + progwidth = float(templatedata[percentstart + len(percenttemplate) + 1:percentend]) * total_statistic + templatedata = templatedata[0:percentstart] + str(progwidth) + templatedata[percentend + 1:] + + # Replace percentage statistic + templatedata = templatedata.replace('{percent}', '%.2f%%' % (total_statistic * 100), 2) + + svgfile = open(svg, 'w') + if not svgfile: + print('Failed to write to SVG file %s' % svg) + return + + svgfile.write(templatedata) + svgfile.close() + if html: gen_html(html, htmlinsert) -if function_count > 0: - print('\nTotal accuracy %.2f%% across %i functions' % (total_accuracy / function_count * 100, function_count)) +if verbose: + if not found_verbose_target: + print('Failed to find the function with address %s' % hex(verbose)) +else: + implemented_funcs = function_count + + if args.total: + function_count = int(args.total) + + if function_count > 0: + print('\nTotal accuracy %.2f%% across %i functions' % (total_accuracy / function_count * 100, function_count)) + + if svg: + gen_svg(svg, os.path.basename(original), args.svg_icon, implemented_funcs, function_count, total_accuracy) diff --git a/tools/reccmp/requirements.txt b/tools/reccmp/requirements.txt new file mode 100644 index 00000000..31469c4c --- /dev/null +++ b/tools/reccmp/requirements.txt @@ -0,0 +1,2 @@ +colorama +capstone \ No newline at end of file diff --git a/tools/reccmp/template.svg b/tools/reccmp/template.svg new file mode 100644 index 00000000..bd36e9b2 --- /dev/null +++ b/tools/reccmp/template.svg @@ -0,0 +1,119 @@ + + + + + + + + {name}{percent}{percent}Implemented: {implemented}Accuracy: {accuracy}