From 896c2f5def950e7e6350735eabd41dc8606fab53 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Fri, 6 Dec 2024 20:00:58 +0100 Subject: [PATCH] keep old maintas setting working for cutscenes --- src/winapi_hooks.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c index 929a1ff..641adba 100644 --- a/src/winapi_hooks.c +++ b/src/winapi_hooks.c @@ -889,11 +889,23 @@ int WINAPI fake_StretchDIBits( } else if (g_ddraw->width > 0 && g_ddraw->render.hdc) { - int base_width = g_ddraw->height * 4.0/3.0; - double scaling_factor = (double)g_ddraw->render.height / g_ddraw->height; - DestWidth = base_width * scaling_factor; - DestHeight = g_ddraw->render.height; - xDest += (g_ddraw->render.width - DestWidth) / 2; + // new logic by emoon + // g_ddraw->width check detects new widescreen patch + if (g_ddraw->width > 640 && g_config.maintas) + { + int base_width = g_ddraw->height * 4.0 / 3.0; + double scaling_factor = (double)g_ddraw->render.height / g_ddraw->height; + DestWidth = base_width * scaling_factor; + DestHeight = g_ddraw->render.height; + xDest += (g_ddraw->render.width - DestWidth) / 2; + } + else // original 4:3 logic + { + xDest += g_ddraw->render.viewport.x; + yDest += g_ddraw->render.viewport.y; + DestWidth = (int)(DestWidth * g_ddraw->render.scale_w); + DestHeight = (int)(DestHeight * g_ddraw->render.scale_h); + } return real_StretchDIBits(