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

remove old hack

This commit is contained in:
FunkyFr3sh 2021-06-02 23:07:55 +02:00
parent eb25b2aa03
commit 03636f03ad
7 changed files with 32 additions and 23 deletions

View File

@ -12,7 +12,7 @@ ULONG dd_AddRef();
ULONG dd_Release();
HRESULT dd_EnumDisplayModes(DWORD dwFlags, LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK lpEnumModesCallback);
HRESULT dd_WaitForVerticalBlank(DWORD dwFlags, HANDLE h);
HRESULT dd_SetDisplayMode(DWORD width, DWORD height, DWORD bpp);
HRESULT dd_SetDisplayMode(DWORD width, DWORD height, DWORD bpp, BOOL set_by_game);
HRESULT dd_SetCooperativeLevel(HWND hwnd, DWORD dwFlags);
HRESULT dd_RestoreDisplayMode();
HRESULT dd_GetCaps(LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDEmulCaps);
@ -107,7 +107,6 @@ typedef struct cnc_ddraw
BOOL hidecursor;
BOOL accurate_timers;
BOOL resizable;
BOOL sierrahack;
BOOL nonexclusive;
BOOL fixpitch;
BOOL fixchildwindows;

View File

@ -4,6 +4,9 @@
#define WM_AUTORENDERER WM_APP+111
#define WM_WINEFULLSCREEN WM_APP+112
#define WM_D3D9DEVICELOST WM_APP+113
#define WM_SIZE_DDRAW WM_APP+114
#define WM_MOVE_DDRAW WM_APP+115
#define WM_DISPLAYCHANGE_DDRAW WM_APP+116
#define IDT_TIMER_LEAVE_BNET 541287654

View File

@ -316,7 +316,7 @@ HRESULT __stdcall IDirectDraw__SetCooperativeLevel(IDirectDrawImpl* This, HWND h
HRESULT __stdcall IDirectDraw__SetDisplayMode(IDirectDrawImpl* This, DWORD width, DWORD height, DWORD bpp)
{
dprintf("-> %s(This=%p, width=%d, height=%d, bpp=%d)\n", __FUNCTION__, This, (unsigned int)width, (unsigned int)height, (unsigned int)bpp);
HRESULT ret = dd_SetDisplayMode(width, height, bpp);
HRESULT ret = dd_SetDisplayMode(width, height, bpp, TRUE);
dprintf("<- %s\n", __FUNCTION__);
return ret;
}
@ -324,7 +324,7 @@ HRESULT __stdcall IDirectDraw__SetDisplayMode(IDirectDrawImpl* This, DWORD width
HRESULT __stdcall IDirectDraw__SetDisplayModeX(IDirectDrawImpl* This, DWORD width, DWORD height, DWORD bpp, DWORD refreshRate, DWORD flags)
{
dprintf("-> %s(This=%p, width=%d, height=%d, bpp=%d, refreshRate=%d, flags=%d)\n", __FUNCTION__, This, (unsigned int)width, (unsigned int)height, (unsigned int)bpp, (unsigned int)refreshRate, (unsigned int)flags);
HRESULT ret = dd_SetDisplayMode(width, height, bpp);
HRESULT ret = dd_SetDisplayMode(width, height, bpp, TRUE);
dprintf("<- %s\n", __FUNCTION__);
return ret;
}

View File

@ -54,7 +54,6 @@ void cfg_load()
g_ddraw->d3d9linear = cfg_get_bool("d3d9linear", TRUE);
g_ddraw->backbuffer = cfg_get_bool("backbuffer", TRUE);
g_ddraw->passthrough = cfg_get_bool("passthrough", TRUE);
g_ddraw->sierrahack = cfg_get_bool("sierrahack", FALSE); // Sierra Caesar III, Pharaoh, and Zeus hack
g_config.window_rect.right = cfg_get_int("width", 0);
g_config.window_rect.bottom = cfg_get_int("height", 0);
@ -501,17 +500,14 @@ static void cfg_create_ini()
"; Caesar III\n"
"[c3]\n"
"handlemouse=false\n"
"sierrahack=true\n"
"\n"
"; Pharaoh\n"
"[Pharaoh]\n"
"handlemouse=false\n"
"sierrahack=true\n"
"\n"
"; Master of Olympus - Zeus\n"
"[Zeus]\n"
"handlemouse=false\n"
"sierrahack=true\n"
"renderer=gdi\n"
"hook=2\n"
"\n"

View File

@ -294,7 +294,7 @@ HRESULT dd_RestoreDisplayMode()
return DD_OK;
}
HRESULT dd_SetDisplayMode(DWORD width, DWORD height, DWORD bpp)
HRESULT dd_SetDisplayMode(DWORD width, DWORD height, DWORD bpp, BOOL set_by_game)
{
if (bpp != 8 && bpp != 16 && bpp != 32)
return DDERR_INVALIDMODE;
@ -644,7 +644,7 @@ HRESULT dd_SetDisplayMode(DWORD width, DWORD height, DWORD bpp)
{
g_ddraw->render.run = FALSE;
g_ddraw->windowed = TRUE;
return dd_SetDisplayMode(width, height, bpp);
return dd_SetDisplayMode(width, height, bpp, FALSE);
}
if (g_ddraw->wine)
@ -672,10 +672,11 @@ HRESULT dd_SetDisplayMode(DWORD width, DWORD height, DWORD bpp)
g_ddraw->render.thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)g_ddraw->renderer, NULL, 0, NULL);
}
if (g_ddraw->sierrahack)
if (set_by_game)
{
PostMessageA(g_ddraw->hwnd, WM_MOVE, 0, MAKELPARAM(-32000, -32000));
PostMessageA(g_ddraw->hwnd, WM_DISPLAYCHANGE, g_ddraw->bpp, MAKELPARAM(g_ddraw->width, g_ddraw->height));
//real_SendMessageA(g_ddraw->hwnd, WM_SIZE_DDRAW, 0, MAKELPARAM(g_ddraw->width, g_ddraw->height));
real_SendMessageA(g_ddraw->hwnd, WM_MOVE_DDRAW, 0, MAKELPARAM(0, 0));
real_SendMessageA(g_ddraw->hwnd, WM_DISPLAYCHANGE_DDRAW, g_ddraw->bpp, MAKELPARAM(g_ddraw->width, g_ddraw->height));
}
return DD_OK;

View File

@ -231,7 +231,7 @@ void util_toggle_fullscreen()
g_config.window_state = g_ddraw->windowed = FALSE;
real_SetWindowLongA(g_ddraw->hwnd, GWL_STYLE, GetWindowLong(g_ddraw->hwnd, GWL_STYLE) & ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE | WS_MAXIMIZE | WS_SYSMENU));
g_ddraw->altenter = TRUE;
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp);
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp, FALSE);
util_update_bnet_pos(0, 0);
mouse_lock();
@ -250,7 +250,7 @@ void util_toggle_fullscreen()
ChangeDisplaySettings(NULL, g_ddraw->bnet_active ? CDS_FULLSCREEN : 0);
}
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp);
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp, FALSE);
mouse_lock();
}
}
@ -300,7 +300,7 @@ void util_set_window_rect(int x, int y, int width, int height, UINT flags)
g_config.window_rect.right = width;
}
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp);
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp, FALSE);
}
}

View File

@ -39,6 +39,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
case WM_NCLBUTTONUP:
case WM_NCPAINT:
case WM_CANCELMODE:
case WM_DISPLAYCHANGE:
{
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
@ -110,6 +111,21 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
break;
}
case WM_SIZE_DDRAW:
{
uMsg = WM_SIZE;
break;
}
case WM_MOVE_DDRAW:
{
uMsg = WM_MOVE;
break;
}
case WM_DISPLAYCHANGE_DDRAW:
{
uMsg = WM_DISPLAYCHANGE;
break;
}
case WM_D3D9DEVICELOST:
{
if (g_ddraw->renderer == d3d9_render_main && d3d9_on_device_lost())
@ -187,7 +203,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
in_size_move = FALSE;
if (!g_ddraw->render.thread)
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp);
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp, FALSE);
}
break;
}
@ -369,12 +385,6 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
if (!g_ddraw->handlemouse)
RedrawWindow(hWnd, NULL, NULL, RDW_INVALIDATE | RDW_ALLCHILDREN);
if (g_ddraw->sierrahack)
{
lParam = 0;
break;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam); /* Carmageddon fix */
}