diff --git a/inc/dd.h b/inc/dd.h index 2c4d5ad..01abeac 100644 --- a/inc/dd.h +++ b/inc/dd.h @@ -100,6 +100,7 @@ typedef struct cnc_ddraw BOOL accurate_timers; BOOL resizable; BOOL sierrahack; + BOOL dk2hack; BOOL nonexclusive; BOOL bnet_active; BOOL bnet_was_fullscreen; diff --git a/src/config.c b/src/config.c index 3e6d285..1ec587f 100644 --- a/src/config.c +++ b/src/config.c @@ -49,6 +49,7 @@ void cfg_load() g_ddraw->resizable = cfg_get_bool("resizable", TRUE); g_ddraw->nonexclusive = cfg_get_bool("nonexclusive", FALSE); g_ddraw->sierrahack = cfg_get_bool("sierrahack", FALSE); // Sierra Caesar III, Pharaoh, and Zeus hack + g_ddraw->dk2hack = cfg_get_bool("dk2hack", FALSE); // Dungeon Keeper 2 hack g_config.window_rect.right = cfg_get_int("width", 0); g_config.window_rect.bottom = cfg_get_int("height", 0); diff --git a/src/dd.c b/src/dd.c index ca2a72a..8c251ad 100644 --- a/src/dd.c +++ b/src/dd.c @@ -739,6 +739,12 @@ ULONG dd_Release() { g_ddraw->ref--; + if (g_ddraw->dk2hack) + { + g_ddraw->dk2hack = FALSE; + g_ddraw->ref--; + } + if (g_ddraw->ref == 0) { if (g_ddraw->bpp)