From c17db0349ae5d016d863cba534898569a54d2fd0 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Wed, 4 Oct 2023 19:51:53 +0200 Subject: [PATCH] #247 fix color key issues in Kohan: Immortal Sovereigns --- src/dd.c | 2 +- src/ddsurface.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/dd.c b/src/dd.c index 173c846..4075076 100644 --- a/src/dd.c +++ b/src/dd.c @@ -653,7 +653,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl { g_ddraw->render.mode.dmFields |= DM_DISPLAYFREQUENCY; g_ddraw->render.mode.dmDisplayFrequency = g_config.refresh_rate; - + if (ChangeDisplaySettings(&g_ddraw->render.mode, CDS_TEST) != DISP_CHANGE_SUCCESSFUL) { g_config.refresh_rate = 0; diff --git a/src/ddsurface.c b/src/ddsurface.c index 3ca910d..254e09f 100644 --- a/src/ddsurface.c +++ b/src/ddsurface.c @@ -1296,7 +1296,7 @@ HRESULT dd_CreateSurface( if (lpDDSurfaceDesc->ddsCaps.dwCaps & DDSCAPS_OVERLAY) return DDERR_UNSUPPORTED; - if (!(lpDDSurfaceDesc->ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) && + if (!(lpDDSurfaceDesc->ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) && (lpDDSurfaceDesc->dwWidth > 16384 || lpDDSurfaceDesc->dwHeight > 16384)) { return DDERR_INVALIDPARAMS; @@ -1328,6 +1328,12 @@ HRESULT dd_CreateSurface( dst_surface->caps = lpDDSurfaceDesc->ddsCaps.dwCaps; dst_surface->ddraw = This; + if (dst_surface->flags & DDSD_CKSRCBLT) + { + dst_surface->color_key.dwColorSpaceHighValue = lpDDSurfaceDesc->ddckCKSrcBlt.dwColorSpaceHighValue; + dst_surface->color_key.dwColorSpaceLowValue = lpDDSurfaceDesc->ddckCKSrcBlt.dwColorSpaceLowValue; + } + if (dst_surface->flags & DDSD_PIXELFORMAT) { switch (lpDDSurfaceDesc->ddpfPixelFormat.dwRGBBitCount)