diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..55a1eb50 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,62 @@ +name: Build + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v3 + + - uses: actions/checkout@v3 + with: + repository: 'itsmattkc/msvc420' + path: msvc420 + + - name: Restore cached DX5 SDK + id: cache-dx5 + uses: actions/cache/restore@v3 + with: + path: dx5sdk + key: dx5sdk + + - name: Download DX5 SDK + if: steps.cache-dx5.outputs.cache-hit != 'true' + run: | + cd dx5sdk + C:\msys64\usr\bin\wget.exe https://archive.org/download/idx5sdk/idx5sdk.exe + 7z x .\idx5sdk.exe + 7z x .\DX5SDK.EXE + cd cdrom + + - name: Cache DX5 SDK + if: steps.cache-dx5.outputs.cache-hit != 'true' + id: save-dx5 + uses: actions/cache/save@v3 + with: + path: dx5sdk + key: dx5sdk + + - name: Setup DX5 SDK + run: | + cd dx5sdk + cd cdrom + .\SETUP.EXE /s + + - name: Build + shell: cmd + run: | + call .\msvc420\bin\VCVARS32.BAT x86 + mkdir Release + .\msvc420\bin\NMAKE.EXE /f isle.mak CFG="ISLE - Win32 Release" + + - name: Upload Artifact + uses: actions/upload-artifact@master + with: + name: Win32 + path: Release diff --git a/ISLE/define.cpp b/ISLE/define.cpp index f5751c6e..7f574a8c 100644 --- a/ISLE/define.cpp +++ b/ISLE/define.cpp @@ -3,8 +3,7 @@ Isle *g_isle = 0; int g_closed = 0; -const char *WNDCLASS_NAME = "Lego Island MainNoM App"; -const char *WINDOW_TITLE = "LEGO®"; +const char *WINDOW_TITLE = "LEGO®"; unsigned char g_mousedown = 0; unsigned char g_mousemoved = 0; diff --git a/ISLE/define.h b/ISLE/define.h index ffa97a68..b104f239 100644 --- a/ISLE/define.h +++ b/ISLE/define.h @@ -5,7 +5,7 @@ class Isle; extern Isle *g_isle; extern int g_closed; -extern const char *WNDCLASS_NAME; +#define WNDCLASS_NAME "Lego Island MainNoM App" extern const char *WINDOW_TITLE; extern unsigned char g_mousedown; extern unsigned char g_mousemoved; diff --git a/ISLE/isle.cpp b/ISLE/isle.cpp index cc9defe0..61874225 100644 --- a/ISLE/isle.cpp +++ b/ISLE/isle.cpp @@ -119,15 +119,17 @@ BOOL 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, &outSize) == ERROR_SUCCESS) { + if (RegQueryValueExA(hKey, name, NULL, &valueType, (LPBYTE) outValue, &size) == ERROR_SUCCESS) { if (RegCloseKey(hKey) == ERROR_SUCCESS) { - return TRUE; + out = TRUE; } } } - return FALSE; + return out; } int readRegBool(LPCSTR name, BOOL *out) @@ -234,8 +236,8 @@ void Isle::setupVideoFlags(BOOL fullScreen, BOOL flipSurfaces, BOOL backBuffers, m_videoParam.flags().EnableBackBuffers(backBuffers); m_videoParam.flags().EnableUnknown1(param_6); m_videoParam.flags().SetUnknown3(param_7); - m_videoParam.flags().EnableUnknown2(); m_videoParam.flags().EnableWideViewAngle(wideViewAngle); + m_videoParam.flags().EnableUnknown2(); m_videoParam.SetDeviceName(deviceId); if (using8bit) { m_videoParam.flags().Set8Bit(); @@ -324,18 +326,18 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) case WM_ENTERMENULOOP: return DefWindowProcA(hWnd,WM_ENTERMENULOOP,wParam,lParam); case WM_SYSCOMMAND: - if (wParam == 0xf140) { + if (wParam == SC_SCREENSAVE) { return 0; } - if (wParam == 0xf060 && g_closed == 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, 0x10, 0, 0); + PostMessageA(g_isle->m_windowHandle, WM_CLOSE, 0, 0); return 0; } - } else if (g_isle && g_isle->m_fullScreen && (wParam == 0xf010 || wParam == 0xf100)) { + } else if (g_isle && g_isle->m_fullScreen && (wParam == SC_MOVE || wParam == SC_KEYMENU)) { return 0; } return DefWindowProcA(hWnd,WM_SYSCOMMAND,wParam,lParam); diff --git a/ISLE/main.cpp b/ISLE/main.cpp index 51c9b723..a0cd95b1 100644 --- a/ISLE/main.cpp +++ b/ISLE/main.cpp @@ -19,7 +19,7 @@ BOOL findExistingInstance(void) BOOL startDirectSound(void) { - LPDIRECTSOUND lpDS; + LPDIRECTSOUND lpDS = 0; HRESULT ret = DirectSoundCreate(NULL, &lpDS, NULL); if (ret == DS_OK && lpDS != NULL) { lpDS->Release(); diff --git a/dx5sdk/cdrom/setup.iss b/dx5sdk/cdrom/setup.iss new file mode 100644 index 00000000..65d3f56f --- /dev/null +++ b/dx5sdk/cdrom/setup.iss @@ -0,0 +1,34 @@ +[InstallShield Silent] +Version=v5.00.000 +File=Response File +[DlgOrder] +Dlg0=SdWelcome-0 +Count=7 +Dlg1=SdLicense-0 +Dlg2=SdSetupTypeEx-0 +Dlg3=SdAskDestPath-0 +Dlg4=SdSelectFolder-0 +Dlg5=SdStartCopy-0 +Dlg6=SdFinish-0 +[SdWelcome-0] +Result=1 +[SdLicense-0] +Result=1 +[SdSetupTypeEx-0] +Result=Compact +[SdAskDestPath-0] +szDir=C:\dxsdk +Result=1 +[SdSelectFolder-0] +szFolder=Microsoft DirectX 5 SDK +Result=1 +[SdStartCopy-0] +Result=1 +[Application] +Name=the Microsoft DirectX 5 SDK +Version=5 +Company=Microsoft +[SdFinish-0] +Result=1 +bOpt1=0 +bOpt2=0