ref: 2ec58cfa8becc461bf749e0009f150b1841aba6b
parent: 95ef264ebab11e76adf523f8196b3f3ad5ae34ae
author: Simon Howard <fraggle@gmail.com>
date: Thu Feb 20 00:28:20 EST 2014
Mark 512x400 mode as decent quality. I originally flagged this as a poor quality mode because it doesn't include every original pixel at least once (ie. its dimensions are not >= 640x400 - twice the original resolution). In practise, it's actually okay though. Add long comment adapted from my comment on #339 explaining what the definition of a poor quality mode is.
--- a/src/i_scale.c
+++ b/src/i_scale.c
@@ -1195,7 +1195,7 @@
SCREENWIDTH_4_3 * 2, SCREENHEIGHT * 2,
I_InitStretchTables,
I_Squash2x,
- true,
+ false,
};
--- a/src/i_video.h
+++ b/src/i_video.h
@@ -64,9 +64,35 @@
boolean (*DrawScreen)(int x1, int y1, int x2, int y2);
- // If true, this is a "poor quality" mode. The autoadjust
- // code should always attempt to use a different mode to this
+ // If true, this is a "poor quality" mode. The autoadjust
+ // code should always attempt to use a different mode to this
// mode in fullscreen.
+ //
+ // Some notes about what "poor quality" means in this context:
+ //
+ // The aspect ratio correction works by scaling up to the larger
+ // screen size and then drawing pixels on the edges between the
+ // "virtual" pixels so that an authentic blocky look-and-feel is
+ // achieved.
+ //
+ // For a mode like 640x480, you can imagine the grid of the
+ // "original" pixels spaced out, with extra "blurry" pixels added
+ // in the space between them to fill it out. However, when you're
+ // running at a resolution like 320x240, this is not the case. In
+ // the small screen case, every single pixel has to be a blurry
+ // interpolation of two pixels from the original image.
+ //
+ // If you run in 320x240 and put your face up close to the screen
+ // you can see this: it's particularly visible in the small yellow
+ // status bar numbers for example. Overall it still looks "okay"
+ // but there's an obvious - albeit small - deterioration in
+ // quality.
+ //
+ // Once you get to 640x480, all the original pixels are there at
+ // least once and it's okay (the higher the resolution, the more
+ // accurate it is). When I first wrote the code I was expecting
+ // that even higher resolutions would be needed before it would
+ // look acceptable, but it turned out to be okay even at 640x480.
boolean poor_quality;
} screen_mode_t;