mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-26 10:29:23 +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 gdilinear;
|
||||||
BOOL backbuffer;
|
BOOL backbuffer;
|
||||||
BOOL passthrough;
|
BOOL passthrough;
|
||||||
|
BOOL armadahack;
|
||||||
int maxgameticks;
|
int maxgameticks;
|
||||||
BOOL alt_key_down;
|
BOOL alt_key_down;
|
||||||
BOOL bnet_active;
|
BOOL bnet_active;
|
||||||
|
@ -56,6 +56,8 @@ void cfg_load()
|
|||||||
g_ddraw->backbuffer = cfg_get_bool("backbuffer", TRUE);
|
g_ddraw->backbuffer = cfg_get_bool("backbuffer", TRUE);
|
||||||
g_ddraw->passthrough = cfg_get_bool("passthrough", 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.right = cfg_get_int("width", 0);
|
||||||
g_config.window_rect.bottom = cfg_get_int("height", 0);
|
g_config.window_rect.bottom = cfg_get_int("height", 0);
|
||||||
g_config.window_rect.left = cfg_get_int("posX", -32000);
|
g_config.window_rect.left = cfg_get_int("posX", -32000);
|
||||||
@ -706,6 +708,7 @@ static void cfg_create_ini()
|
|||||||
"\n"
|
"\n"
|
||||||
"; Star Trek - Armada\n"
|
"; Star Trek - Armada\n"
|
||||||
"[Armada]\n"
|
"[Armada]\n"
|
||||||
|
"armadahack=true\n"
|
||||||
"renderer=opengl\n"
|
"renderer=opengl\n"
|
||||||
"nonexclusive=true\n"
|
"nonexclusive=true\n"
|
||||||
"handlemouse=false\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)
|
if ((This->caps & DDSCAPS_PRIMARYSURFACE) && g_ddraw->render.run)
|
||||||
{
|
{
|
||||||
InterlockedExchange(&g_ddraw->render.surface_updated, TRUE);
|
InterlockedExchange(&g_ddraw->render.surface_updated, TRUE);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user