From dfd37760819ebb94414966364e5580cf5ce3b784 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Wed, 3 Jul 2024 04:24:27 +0200 Subject: [PATCH] add hack for c1 lowres --- inc/config.h | 1 + src/config.c | 3 +++ src/ddsurface.c | 14 +++++++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/inc/config.h b/inc/config.h index f0b8275..3a33eaf 100644 --- a/inc/config.h +++ b/inc/config.h @@ -104,6 +104,7 @@ typedef struct CNCDDRAWCONFIG BOOL mgs_hack; BOOL tlc_hack; BOOL homm_hack; + BOOL carma95_hack; } CNCDDRAWCONFIG; diff --git a/src/config.c b/src/config.c index d9e2fc3..110ac17 100644 --- a/src/config.c +++ b/src/config.c @@ -114,6 +114,7 @@ void cfg_load() GET_BOOL(g_config.mgs_hack, "mgs_hack", FALSE); GET_BOOL(g_config.tlc_hack, "tlc_hack", FALSE); GET_BOOL(g_config.homm_hack, "homm_hack", FALSE); + GET_BOOL(g_config.homm_hack, "carma95_hack", FALSE); GameHandlesClose = GameHandlesClose || g_config.infantryhack; @@ -510,11 +511,13 @@ static void cfg_create_ini() "[CARMA95]\n" "noactivateapp=true\n" "flipclear=true\n" + "carma95_hack=true\n" "\n" "; Carmageddon\n" "[CARM95]\n" "noactivateapp=true\n" "flipclear=true\n" + "carma95_hack=true\n" "\n" "; Carmageddon 2\n" "[Carma2_SW]\n" diff --git a/src/ddsurface.c b/src/ddsurface.c index b6913ed..c392ef9 100644 --- a/src/ddsurface.c +++ b/src/ddsurface.c @@ -755,8 +755,16 @@ HRESULT dds_EnumAttachedSurfaces( if (This->backbuffer) { - dds_GetSurfaceDesc(This->backbuffer, (LPDDSURFACEDESC)&desc); - lpEnumSurfacesCallback((LPDIRECTDRAWSURFACE)This->backbuffer, (LPDDSURFACEDESC)&desc, lpContext); + if (g_config.carma95_hack && g_ddraw.height == 200) + { + dds_GetSurfaceDesc(This, (LPDDSURFACEDESC)&desc); + lpEnumSurfacesCallback((LPDIRECTDRAWSURFACE)This, (LPDDSURFACEDESC)&desc, lpContext); + } + else + { + dds_GetSurfaceDesc(This->backbuffer, (LPDDSURFACEDESC)&desc); + lpEnumSurfacesCallback((LPDIRECTDRAWSURFACE)This->backbuffer, (LPDDSURFACEDESC)&desc, lpContext); + } } return DD_OK; @@ -766,7 +774,7 @@ HRESULT dds_Flip(IDirectDrawSurfaceImpl* This, IDirectDrawSurfaceImpl* lpDDSurfa { dbg_dump_dds_flip_flags(dwFlags); - if (This->backbuffer && !This->skip_flip) + if (This->backbuffer && !This->skip_flip && !(g_config.carma95_hack && g_ddraw.height == 200)) { EnterCriticalSection(&g_ddraw.cs); IDirectDrawSurfaceImpl* backbuffer = lpDDSurfaceTargetOverride ? lpDDSurfaceTargetOverride : This->backbuffer;