From dc0204cf71b8796aa6d4d6dee639e03b5109e27f Mon Sep 17 00:00:00 2001
From: FunkyFr3sh <cc.red.alert.1@gmail.com>
Date: Tue, 13 Sep 2022 09:34:48 +0200
Subject: [PATCH] remove fixpitch setting

---
 inc/dd.h        |  1 -
 src/config.c    | 22 ----------------------
 src/dd.c        |  1 +
 src/ddsurface.c | 14 +++-----------
 4 files changed, 4 insertions(+), 34 deletions(-)

diff --git a/inc/dd.h b/inc/dd.h
index 0c6219c..a72aea0 100644
--- a/inc/dd.h
+++ b/inc/dd.h
@@ -142,7 +142,6 @@ typedef struct CNCDDRAW
     BOOL accurate_timers;
     BOOL resizable;
     BOOL nonexclusive;
-    BOOL fixpitch;
     int fixchilds;
     BOOL fixwndprochook;
     BOOL fixnotresponding;
diff --git a/src/config.c b/src/config.c
index 295059b..215d702 100644
--- a/src/config.c
+++ b/src/config.c
@@ -36,7 +36,6 @@ void cfg_load()
     g_ddraw->accurate_timers = cfg_get_bool("accuratetimers", FALSE);
     g_ddraw->resizable = cfg_get_bool("resizable", TRUE);
     g_ddraw->nonexclusive = cfg_get_bool("nonexclusive", FALSE);
-    g_ddraw->fixpitch = cfg_get_bool("fixpitch", TRUE);
     g_ddraw->fixchilds = cfg_get_int("fixchilds", FIX_CHILDS_DETECT_PAINT);
     g_ddraw->fixwndprochook = cfg_get_bool("fixwndprochook", FALSE);
     g_ddraw->flipclear = cfg_get_bool("flipclear", FALSE);
@@ -404,7 +403,6 @@ static void cfg_create_ini()
             "[empires]\n"
             "renderer=opengl\n"
             "nonexclusive=true\n"
-            "fixpitch=true\n"
             "adjmouse=true\n"
             "resolutions=2\n"
             "\n"
@@ -412,7 +410,6 @@ static void cfg_create_ini()
             "[empiresx]\n"
             "renderer=opengl\n"
             "nonexclusive=true\n"
-            "fixpitch=true\n"
             "adjmouse=true\n"
             "resolutions=2\n"
             "\n"
@@ -420,14 +417,12 @@ static void cfg_create_ini()
             "[EMPIRES2]\n"
             "renderer=opengl\n"
             "nonexclusive=true\n"
-            "fixpitch=true\n"
             "adjmouse=true\n"
             "\n"
             "; Age of Empires II: The Conquerors\n"
             "[age2_x1]\n"
             "renderer=opengl\n"
             "nonexclusive=true\n"
-            "fixpitch=true\n"
             "adjmouse=true\n"
             "\n"
             "; American Conquest\n"
@@ -478,7 +473,6 @@ static void cfg_create_ini()
             "[comeon]\n"
             "maxgameticks=62\n"
             "fixchilds=3\n"
-            "fixpitch=true\n"
             "\n"
             "; Blood II - The Chosen / Shogo - Mobile Armor Division\n"
             "[Client]\n"
@@ -658,35 +652,27 @@ static void cfg_create_ini()
             "; Close Combat 2: A Bridge Too Far\n"
             "[cc2]\n"
             "adjmouse=true\n"
-            "fixpitch=true\n"
             "renderer=opengl\n"
             "nonexclusive=true\n"
             "\n"
             "; Close Combat 3: The Russian Front\n"
             "[cc3]\n"
             "adjmouse=true\n"
-            "fixpitch=true\n"
             "renderer=opengl\n"
             "nonexclusive=true\n"
             "\n"
             "; Close Combat 4: The Battle of the Bulge\n"
             "[cc4]\n"
             "adjmouse=true\n"
-            "fixpitch=true\n"
             "renderer=opengl\n"
             "nonexclusive=true\n"
             "\n"
             "; Close Combat 5: Invasion: Normandy\n"
             "[cc5]\n"
             "adjmouse=true\n"
-            "fixpitch=true\n"
             "renderer=opengl\n"
             "nonexclusive=true\n"
             "\n"
-            "; Commandos\n"
-            "[Comandos]\n"
-            "fixpitch=true\n"
-            "\n"
             "; Call To Power 2\n"
             "[ctp2]\n"
             "maintas=false\n"
@@ -733,10 +719,6 @@ static void cfg_create_ini()
             "maintas=false\n"
             "boxing=false\n"
             "\n"
-            "; Eggsucker\n"
-            "[eggsucker]\n"
-            "fixpitch=true\n"
-            "\n"
             "; Economic War\n"
             "[EcoW]\n"
             "maxgameticks=60\n"
@@ -933,14 +915,12 @@ static void cfg_create_ini()
             "[battlegrounds]\n"
             "renderer=opengl\n"
             "nonexclusive=true\n"
-            "fixpitch=true\n"
             "adjmouse=true\n"
             "\n"
             "; Star Wars: Galactic Battlegrounds: Clone Campaigns\n"
             "[battlegrounds_x1]\n"
             "renderer=opengl\n"
             "nonexclusive=true\n"
-            "fixpitch=true\n"
             "adjmouse=true\n"
             "\n"
             "; Stronghold Crusader HD\n"
@@ -970,7 +950,6 @@ static void cfg_create_ini()
             "\n"
             "; Shadow Watch\n"
             "[sw]\n"
-            "fixpitch=true\n"
             "adjmouse=true\n"
             "\n"
             "; Shadow Flare\n"
@@ -1016,7 +995,6 @@ static void cfg_create_ini()
             "; Uprising\n"
             "[uprising]\n"
             "renderer=opengl\n"
-            "fixpitch=true\n"
             "adjmouse=true\n"
             "\n"
             "; Uprising 2\n"
diff --git a/src/dd.c b/src/dd.c
index eec51ac..d8fe35e 100644
--- a/src/dd.c
+++ b/src/dd.c
@@ -12,6 +12,7 @@
 #include "fps_limiter.h"
 #include "debug.h"
 #include "utils.h"
+#include "blt.h"
 
 
 CNCDDRAW* g_ddraw = NULL;
diff --git a/src/ddsurface.c b/src/ddsurface.c
index 99eb515..5edbb21 100644
--- a/src/ddsurface.c
+++ b/src/ddsurface.c
@@ -1036,19 +1036,11 @@ HRESULT dd_CreateSurface(
 
     if (dst_surface->width && dst_surface->height)
     {
-        DWORD bmp_width = dst_surface->width;
-        DWORD bmp_height = dst_surface->height;
-
         dst_surface->lx_pitch = dst_surface->bpp / 8;
-        dst_surface->l_pitch = bmp_width * dst_surface->lx_pitch;
+        dst_surface->l_pitch = ((dst_surface->width * dst_surface->bpp + 31) & ~31) >> 3;
 
-        if (g_ddraw->fixpitch)
-        {
-            while (dst_surface->l_pitch % 4)
-            {
-                dst_surface->l_pitch = ++bmp_width * dst_surface->lx_pitch;
-            }
-        }
+        DWORD bmp_width = dst_surface->l_pitch / dst_surface->lx_pitch;
+        DWORD bmp_height = dst_surface->height;
 
         dst_surface->bmi =
             HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256);