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:
parent
7bf7d01fcf
commit
093284f565
1
inc/dd.h
1
inc/dd.h
@ -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;
|
||||
|
@ -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"
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user