[NTVDM]
authorAleksandar Andrejevic <aandrejevic@reactos.org>
Sat, 2 Nov 2013 01:51:27 +0000 (01:51 +0000)
committerAleksandar Andrejevic <aandrejevic@reactos.org>
Sat, 2 Nov 2013 01:51:27 +0000 (01:51 +0000)
Fix resolution calculation when scanline doubling is enabled.

svn path=/branches/ntvdm/; revision=60827

subsystems/ntvdm/vga.c
subsystems/ntvdm/vga.h

index d4616a7..d788b84 100644 (file)
@@ -802,6 +802,12 @@ COORD VgaGetDisplayResolution(VOID)
         if (VgaAcRegisters[VGA_AC_CONTROL_REG] & VGA_AC_CONTROL_8BIT) Resolution.X /= 2;
     }
 
         if (VgaAcRegisters[VGA_AC_CONTROL_REG] & VGA_AC_CONTROL_8BIT) Resolution.X /= 2;
     }
 
+    if (VgaCrtcRegisters[VGA_CRTC_MAX_SCAN_LINE_REG] & VGA_CRTC_MAXSCANLINE_DOUBLE)
+    {
+        /* Halve the vertical resolution */
+        Resolution.Y >>= 1;
+    }
+
     /* Divide the vertical resolution by the maximum scan line (== font size in text mode) */
     Resolution.Y /= MaximumScanLine;
 
     /* Divide the vertical resolution by the maximum scan line (== font size in text mode) */
     Resolution.Y /= MaximumScanLine;
 
index 23b5a3a..4fff78e 100644 (file)
@@ -80,6 +80,9 @@
 /* CRTC underline register bits */
 #define VGA_CRTC_UNDERLINE_DWORD (1 << 6)
 
 /* CRTC underline register bits */
 #define VGA_CRTC_UNDERLINE_DWORD (1 << 6)
 
+/* CRTC max scanline register bits */
+#define VGA_CRTC_MAXSCANLINE_DOUBLE (1 << 7)
+
 /* CRTC mode control register bits */
 #define VGA_CRTC_MODE_CONTROL_WRAP (1 << 5)
 #define VGA_CRTC_MODE_CONTROL_BYTE (1 << 6)
 /* CRTC mode control register bits */
 #define VGA_CRTC_MODE_CONTROL_WRAP (1 << 5)
 #define VGA_CRTC_MODE_CONTROL_BYTE (1 << 6)