-
-
Notifications
You must be signed in to change notification settings - Fork 172
Fix a couple issues from the vgaonly
PR
#2424
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
4ada6e1
to
bb1242c
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, that fixed the problem for me. Low-res modes are now properly rendered with double lines (e.g. 320x200 appears as 640x400) when bilinear filtering is on.
vgaonly
PRvgaonly
PR
a119047
to
16536a7
Compare
16536a7
to
83bc4fc
Compare
Thanks @dreamer and @johnnovak. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks OK, works correctly for me - thank you!
Thanks for the test, @FeralChild64 ! |
Regarding the 8px vs 9px font, for completeness - explanation:
|
That's an incredibly thorough explanation and investigation; thanks for that reference, @FeralChild64 ! |
Nice link about the explanations @FeralChild64. The situation on laptops is being mentioned a couple of times, multiple people claim that they default to 8x16 fonts in 640px wide modes. That kinda makes sense if that matches with the native LCD res.
I'm asking again, do you have proof of this? Excluding the special laptop situation.The linked discussion does not say a word about such cards, and my understanding is all non-laptop VGA adapters use 9x16. VileR states the same thing here, and I think we can consider him an expert on DOS fonts. From the DOSBox Requirements section:
Btw I realised you can use the Trident font if you load it with FONTEDIT in your global autoexec. That's a nice way to use any font from any card. |
@FeralChild64 I quite like these 9x16 VGA fonts, btw. All used in the default VGA text modes, as mentioned on their respective pages. https://int10h.org/oldschool-pc-fonts/fontlist/font?phoenixvga_9x16 https://int10h.org/oldschool-pc-fonts/fontlist/font?ati_9x16 https://int10h.org/oldschool-pc-fonts/fontlist/font?toshibasat_9x16 |
@johnnovak I think it got messed up a bit, so - we have 2 flavors of VGA fonts, 8x16 and 9x16, as on picture below:
I mean: when VGA is asked to display 9x16 cells, it does so, but uses 8x16 font. This is how DOSBox Staging started behaving after #2398 was merged. This is how it currently behaves when
I cannot easily find a definite proof that this happens (just someone's words) - and since I don't like this behavior at all I kind-of lack the motivation :)
AFAIK this behavior is not currently emulated, most likely we don't even have 9x16 font built-in. I believe this happens, see this photo (original post). Zoom-in, look at letters V, W, T, m - this is the 9x16 font, there is no doubt.
I mean: no 9x16 cells at all - just 8x16 glyphs in 8x16 cells, always, even if 9x16 is asked by the software. There are reports regarding the laptops, but I'm sure this is not always the case. Check the video https://www.youtube.com/watch?v=QmwDBfFKnvE, timestamp 1:45. Look at lowercase letter w - this definitely is a 8x16 font in 8x16 cells (you can count individual pixels). I don't know if this was caused by specific hardware, specific BIOS, or anything else - but this is definitely also a "historically valid" behavior. |
No, that's not true 😄 To be clear @FeralChild64, I'm quite sure you and I want exactly the same thing and we're vehemently agreeing with each other, but you got a bit confused about what DOSBox is actually doing after #2398 was merged. That's alright, and I'll prove it below why I'm quite certain the current behaviour is correct. Please point out if I made a mistake or misunderstood what you want! 😅 It seems to me that you're advocating for the use of proper 9x16 IBM VGA fonts as the default on all VGA adapters. I want the same! (Not that 8x16 extended with a blank column thing; I don't care about that, and it's unproven... And you seem to care neither. Good! 😅 The guy who made that comment might be totally confused, so let's stick to the verifiable facts). DOSBox output after #2398. That is the proper 9x16 IBM VGA font! And it looks exactly like the font on the DOS LaunchBox screenshot you posted. It's the IBM 9x16 VGA font from VileR's page: Relevant bits from the screenshot you posted—yep, that's the 9x16 IBM VGA font, without a shadow of a doubt! Prior to #2398 we get the 8x16 font (that's weird 8-column MCGA variant). It's the IBM 8x16 VGA font from VileR's page:
But it is emualted, it is emulated correctly, and we do have the 9x16 font built in! 😄 Please see the proof above. You can easily replicate it yourself 😄 It all matches up perfectly with this other image you posted as well:
Great job digging this video up! The description says it's a Tseng Labs ET4000, so now we can consider it proven that some older VGA cards defaulted to the 8x16 font instead of the 9x16 IBM standard. Users can emulate that by setting I'm glad you found this 😄 👍🏻 |
[sdl]
output = opengl
[render]
glshader = crt/aperture.vga-retina
[dosbox]
machine = svga_s3
vga_8dot_font = false Compare the background's shaded columns. At the center of the screen, these columns and the gaps match DOSBox's in width. However as we get to the far right edge, the CRTs colums and gaps are quite a bit narrower, so this is definitely giving it a bit more narrow appearance (atleast off-center). |
Yes, it's visually very close–as it should be, as we're using the correct 9x16 font now, as I explained. I guess it's easy to make mistakes when comparing real screenshots vs the output of DOSBox on a low-res screen without a shader... that can look a bit different. But if you carefully compare the dead giveaways, e.g. the shapes of the letters W, V, T, m, and 0, it becomes obvious whether the 8x16 or the 9x16 font is in use. |
I guess I missed this PR out! Great job @kcgen ! |
@johnnovak , @kcgen OK, I know what happens on my system - it's the CPI/CPX file support! Start with
Right, but we still don't know how ET3000, Paradise and S3 cards behave... And I think we should keep some override option, so that users of various other cards or 3rd party font/keyboard utilities (like me :D) can tune the display to be close to what they remember. |
Would running 86Box, emulating the respective adapters and their matching ROMs not clarify that? |
Sure, I did not propose removing
That's all good and well, but I wouldn't bet my house on the 86box behaviour on anything 😄 |
Could it be that the machine in the video is not in 720x400 mode, but rather in 640x350? I do not see any video mode transition like I had with my 86box runs. Never mind. Found the transition at 0:38 it is when he moves the camera from the screen to the keyboard and back. p.s. based on the #401A0-0207 OEM ID, it seems to be a Asus P/I-P55T2P4 systemboard. |
You may want to check: https://www.vogons.org/viewtopic.php?t=50159 for some ET4000 screenshots. |
By the way, the Trio64 screenshot uses the 8x16 font. Look for the uppercase T letter. The rest are 9x16. Actually, there are surely board revisions of many VGA cards too. E.g. one Tseng ET4000 might do this, another revision of the same card might do something else... Like the infamous S3 brightness bug... I'd say the config override is enough for people who are desperate for the 8px wide fonts. |
Fixes up a couple issues from the vgaonly PR:
Allows config values to be deprecated with alternatives (that can be different than the default). For example:
Using a deprecated option warns:
So now
vgaonly
is actually handled. Thanks @NicknineTheEagle for reporting this.Now draws all 400-lines (low resolution double-scanned) whenever it translates to a visible difference on the output side (code-comment has a more thorough explanation). Thanks @NicknineTheEagle for reporting this.
Lets the user force 8-pixel-wide fonts for VGA machine types. Thanks @FeralChild64 for requesting this.