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:
parent
eb25b2aa03
commit
03636f03ad
3
inc/dd.h
3
inc/dd.h
@ -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;
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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"
|
||||
|
11
src/dd.c
11
src/dd.c
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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 */
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user