1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +01:00

add Dungeon Keeper preset + required hack

This commit is contained in:
FunkyFr3sh 2018-10-30 21:48:01 +01:00
parent 82b245228c
commit 737a26bfb3
4 changed files with 10 additions and 1 deletions

View File

@ -51,5 +51,6 @@ struct IDirectDrawPaletteImplVtbl
} IDirectDrawPaletteImplVtbl;
HRESULT __stdcall ddraw_CreatePalette(IDirectDrawImpl *This, DWORD dwFlags, LPPALETTEENTRY DDColorArray, LPDIRECTDRAWPALETTE FAR * DDPalette, IUnknown FAR * unkOuter);
extern IDirectDrawPaletteImpl *LastFreedPalette;
#endif

View File

@ -19,6 +19,8 @@
#include "palette.h"
#include "surface.h"
IDirectDrawPaletteImpl *LastFreedPalette; // Dungeon Keeper hack
HRESULT __stdcall ddraw_palette_GetEntries(IDirectDrawPaletteImpl *This, DWORD dwFlags, DWORD dwBase, DWORD dwNumEntries, LPPALETTEENTRY lpEntries)
{
int i, x;
@ -91,6 +93,7 @@ ULONG __stdcall ddraw_palette_Release(IDirectDrawPaletteImpl *This)
if(This->Ref == 0)
{
LastFreedPalette = This;
HeapFree(GetProcessHeap(), 0, This);
return 0;
}

View File

@ -236,6 +236,11 @@ static void CreateSettingsIni()
"noactivateapp=true\n"
"sleep=10\n"
"\n"
"[KEEPER95]\n"
"border=false\n"
"posX=0\n"
"posY=0\n"
"\n"
, fh);
fclose(fh);

View File

@ -64,7 +64,7 @@ ULONG __stdcall ddraw_surface_Release(IDirectDrawSurfaceImpl *This)
if (This->bmi)
HeapFree(GetProcessHeap(), 0, This->bmi);
if(This->palette)
if(This->palette && This->palette != LastFreedPalette)
{
IDirectDrawPalette_Release(This->palette);
}