From 721cf6616ae3529b2ba6e175bf4b462eb459f085 Mon Sep 17 00:00:00 2001
From: FunkyFr3sh <cc.red.alert.1@googlemail.com>
Date: Fri, 6 Dec 2024 20:01:49 +0100
Subject: [PATCH] make emoon's patch working on windows as well

---
 src/winapi_hooks.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c
index 641adba..a1687f9 100644
--- a/src/winapi_hooks.c
+++ b/src/winapi_hooks.c
@@ -759,6 +759,24 @@ BOOL WINAPI fake_StretchBlt(
         }
         else if (g_ddraw->width > 0 && g_ddraw->render.hdc)
         {
+            // 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;
+                wDest = base_width * scaling_factor;
+                hDest = g_ddraw->render.height;
+                xDest += (g_ddraw->render.width - wDest) / 2;
+            }
+            else // original 4:3 logic
+            {
+                xDest += g_ddraw->render.viewport.x;
+                yDest += g_ddraw->render.viewport.y;
+                wDest = (int)(wDest * g_ddraw->render.scale_w);
+                hDest = (int)(hDest * g_ddraw->render.scale_h);
+            }
+
             return real_StretchBlt(
                 g_ddraw->render.hdc,
                 xDest + g_ddraw->render.viewport.x,