diff --git a/README.md b/README.md index f95129d..b4712c5 100644 --- a/README.md +++ b/README.md @@ -230,6 +230,7 @@ Some games may require additional steps before they can be used with cnc-ddraw, - Poseidon: Master of Atlantis - Pro Pinball - Big Race USA - Pro Pinball - Fantastic Journey +- Putt-Putt Saves The Zoo - Quest for Glory 5 - Rage of Mages 2 - Railroad Tycoon II diff --git a/src/config.c b/src/config.c index 8611dc5..93cb282 100644 --- a/src/config.c +++ b/src/config.c @@ -1048,6 +1048,11 @@ static void cfg_create_ini() "[Pharaoh]\n" "adjmouse=true\n" "\n" + "; Putt-Putt Saves The Zoo\n" + "[PUTTZOO]\n" + "renderer=gdi\n" + "hook=3\n" + "\n" "; Pax Imperia\n" "[Pax Imperia]\n" "nonexclusive=true\n" diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c index 2e457ea..09a8a9e 100644 --- a/src/winapi_hooks.c +++ b/src/winapi_hooks.c @@ -858,10 +858,10 @@ BOOL WINAPI fake_StretchBlt( { return real_StretchBlt( hwnd == g_ddraw.hwnd ? hdcDest : g_ddraw.render.hdc, - (int)(xDest * g_ddraw.render.scale_w) + g_ddraw.render.viewport.x, - (int)(yDest * g_ddraw.render.scale_h) + g_ddraw.render.viewport.y, - (int)(wDest * g_ddraw.render.scale_w), - (int)(hDest * g_ddraw.render.scale_h), + (int)(roundf(xDest * g_ddraw.render.scale_w)) + g_ddraw.render.viewport.x, + (int)(roundf(yDest * g_ddraw.render.scale_h)) + g_ddraw.render.viewport.y, + (int)(roundf(wDest * g_ddraw.render.scale_w)), + (int)(roundf(hDest * g_ddraw.render.scale_h)), hdcSrc, xSrc, ySrc, @@ -936,10 +936,10 @@ BOOL WINAPI fake_BitBlt( { return real_StretchBlt( hwnd == g_ddraw.hwnd ? hdc : g_ddraw.render.hdc, - (int)(x * g_ddraw.render.scale_w) + g_ddraw.render.viewport.x, - (int)(y * g_ddraw.render.scale_h) + g_ddraw.render.viewport.y, - (int)(cx * g_ddraw.render.scale_w), - (int)(cy * g_ddraw.render.scale_h), + (int)(roundf(x * g_ddraw.render.scale_w)) + g_ddraw.render.viewport.x, + (int)(roundf(y * g_ddraw.render.scale_h)) + g_ddraw.render.viewport.y, + (int)(roundf(cx * g_ddraw.render.scale_w)), + (int)(roundf(cy * g_ddraw.render.scale_h)), hdcSrc, x1, y1, @@ -1079,10 +1079,10 @@ int WINAPI fake_StretchDIBits( return real_StretchDIBits( hwnd == g_ddraw.hwnd ? hdc : g_ddraw.render.hdc, - (int)(xDest * g_ddraw.render.scale_w) + g_ddraw.render.viewport.x, - (int)(yDest * g_ddraw.render.scale_h) + g_ddraw.render.viewport.y, - (int)(DestWidth * g_ddraw.render.scale_w), - (int)(DestHeight * g_ddraw.render.scale_h), + (int)(roundf(xDest * g_ddraw.render.scale_w)) + g_ddraw.render.viewport.x, + (int)(roundf(yDest * g_ddraw.render.scale_h)) + g_ddraw.render.viewport.y, + (int)(roundf(DestWidth * g_ddraw.render.scale_w)), + (int)(roundf(DestHeight * g_ddraw.render.scale_h)), xSrc, ySrc, SrcWidth,