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

add hack for armada

This commit is contained in:
FunkyFr3sh 2021-06-09 07:24:17 +02:00
parent 7bf7d01fcf
commit 093284f565
3 changed files with 43 additions and 0 deletions

View File

@ -115,6 +115,7 @@ typedef struct cnc_ddraw
BOOL gdilinear;
BOOL backbuffer;
BOOL passthrough;
BOOL armadahack;
int maxgameticks;
BOOL alt_key_down;
BOOL bnet_active;

View File

@ -56,6 +56,8 @@ void cfg_load()
g_ddraw->backbuffer = cfg_get_bool("backbuffer", TRUE);
g_ddraw->passthrough = cfg_get_bool("passthrough", TRUE);
g_ddraw->armadahack = cfg_get_bool("armadahack", FALSE);
g_config.window_rect.right = cfg_get_int("width", 0);
g_config.window_rect.bottom = cfg_get_int("height", 0);
g_config.window_rect.left = cfg_get_int("posX", -32000);
@ -706,6 +708,7 @@ static void cfg_create_ini()
"\n"
"; Star Trek - Armada\n"
"[Armada]\n"
"armadahack=true\n"
"renderer=opengl\n"
"nonexclusive=true\n"
"handlemouse=false\n"

View File

@ -1200,6 +1200,45 @@ HRESULT dds_Unlock(IDirectDrawSurfaceImpl *This, LPVOID lpRect)
}
}
hwnd = g_ddraw->armadahack ? FindWindowEx(HWND_DESKTOP, NULL, "#32770", NULL) : NULL;
if (hwnd && (This->caps & DDSCAPS_PRIMARYSURFACE))
{
HDC primary_dc;
dds_GetDC(g_ddraw->primary, &primary_dc);
RECT rc;
if (fake_GetWindowRect(hwnd, &rc))
{
HDC hdc = GetDC(hwnd);
GdiTransparentBlt(
hdc,
0,
0,
rc.right - rc.left,
rc.bottom - rc.top,
primary_dc,
rc.left,
rc.top,
rc.right - rc.left,
rc.bottom - rc.top,
0
);
ReleaseDC(hwnd, hdc);
}
BOOL x = g_ddraw->ticks_limiter.use_blt_or_flip;
DDBLTFX fx = { .dwFillColor = 0 };
IDirectDrawSurface_Blt(This, NULL, NULL, NULL, DDBLT_COLORFILL, &fx);
g_ddraw->ticks_limiter.use_blt_or_flip = x;
}
if ((This->caps & DDSCAPS_PRIMARYSURFACE) && g_ddraw->render.run)
{
InterlockedExchange(&g_ddraw->render.surface_updated, TRUE);