From 8ba61859655cf11fb7ff00ef0b7e04c1c7349ca7 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Fri, 2 Nov 2018 02:21:16 +0100 Subject: [PATCH] fix for carmageddon 2 --- inc/main.h | 7 ++++++- src/main.c | 9 +++++++++ src/settings.c | 5 +++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/inc/main.h b/inc/main.h index 5b015cf..10afbfc 100644 --- a/inc/main.h +++ b/inc/main.h @@ -133,7 +133,12 @@ struct IDirectDrawImplVtbl HRESULT(__stdcall *Initialize)(IDirectDrawImpl *, GUID *); HRESULT(__stdcall *RestoreDisplayMode)(IDirectDrawImpl *); HRESULT(__stdcall *SetCooperativeLevel)(IDirectDrawImpl *, HWND, DWORD); - HRESULT(__stdcall *SetDisplayMode)(IDirectDrawImpl *, DWORD, DWORD,DWORD); + union + { + HRESULT(__stdcall *SetDisplayMode1)(IDirectDrawImpl *, DWORD, DWORD, DWORD); + HRESULT(__stdcall *SetDisplayMode2)(IDirectDrawImpl *, DWORD, DWORD, DWORD, DWORD, DWORD); + }; + HRESULT(__stdcall *WaitForVerticalBlank)(IDirectDrawImpl *, DWORD, HANDLE); }; diff --git a/src/main.c b/src/main.c index ebb9ab6..6d3a94f 100644 --- a/src/main.c +++ b/src/main.c @@ -19,6 +19,7 @@ #include #include #include +#include #include "ddraw.h" #include "main.h" #include "opengl.h" @@ -623,6 +624,11 @@ HRESULT __stdcall ddraw_SetDisplayMode(IDirectDrawImpl *This, DWORD width, DWORD return DD_OK; } +HRESULT __stdcall ddraw_SetDisplayMode2(IDirectDrawImpl *This, DWORD width, DWORD height, DWORD bpp, DWORD refreshRate, DWORD flags) +{ + return ddraw_SetDisplayMode(This, width, height, bpp); +} + // LastSetWindowPosTick = Workaround for a wine+gnome bug where each SetWindowPos call triggers a WA_INACTIVE message DWORD LastSetWindowPosTick; @@ -1174,6 +1180,9 @@ HRESULT __stdcall ddraw_QueryInterface(IDirectDrawImpl *This, REFIID riid, void { printf("DirectDraw::QueryInterface(This=%p, riid=%08X, obj=%p)\n", This, (unsigned int)riid, obj); + if (riid && !IsEqualGUID(&IID_IDirectDraw, riid)) + This->lpVtbl->SetDisplayMode2 = ddraw_SetDisplayMode2; + *obj = This; return S_OK; diff --git a/src/settings.c b/src/settings.c index b8b4848..2bda55b 100644 --- a/src/settings.c +++ b/src/settings.c @@ -228,6 +228,11 @@ static void CreateSettingsIni() "[battlegrounds_x1]\n" "hidemouse=false\n" "\n" + "[Carma2_SW]\n" + "renderer=opengl\n" + "noactivateapp=true\n" + "maxgameticks=60\n" + "\n" , fh); fclose(fh);