VOGONS


Reply 20 of 25, by mgtroyas

User metadata
Rank Newbie
Rank
Newbie

Okay, after spending too many days reinstalling everything, then troubleshooting, I've found the cause of the palette corruption on DirectDraw / early DirectX games like this was a Windows 7 build... not a Windows update, not a DirectX update... it was the program Fences! I'd bet it redraws itself when these games switch resolution on start, and then corrupts the palette after until you do a reboot. Now I can finally go to sleep.

Reply 21 of 25, by mgtroyas

User metadata
Rank Newbie
Rank
Newbie

I finally received the Radeon R7 250 (2GB GDDR3).

Installing the drivers is a little tricky, as Phil explained on his Youtube video. You must install the 14-4-xp32-64-dd-ccc-pack2, but drivers install will fail. Then you must install them manually, selecting the right model.

I also had problems when connecting my CRT to the DVI-I port of the R7 250. All resolutions were capped at 60Hz, no matter what I tried. I though it was a BIOS limitation, but fortunately it was something different, and fixable: the card failed to read the EDID from my monitor, and played safe. So I had to disable automatic detection on Catalyst Control Center and set manually 1280x1024 as max resolution and 120Hz as max refresh rate. Then it honored my CRT drivers and worked as expected. Just remember to tick the "don't show not supported modes" on advanced Display settings, or you'll boot to a blank CRT with an "out of range" error message. Well, it'll probably happen to you anyway, as it did to me, no idea why, so you better have at hand a DisplayPort cable or adapter to connect a modern monitor and change the settings again.

Performance wise, unfortunately the R7 250 is similar to the HD7770 I already had (but I needed the DVI port). Going to the extreme, it struggles with Crysis at 1152x864 and 4x FSAA, while the GTX 750ti was very playable with these settings. The GTX, being more recent has many more shaders, and with the DDR5 memory, can move games from 2012 and later with ease. OTOH, as we know Nvidia drivers broke compatibility with DirectX 6, that's why I'm testing the AMD options, if not this beast would be a perfect GPU for a Windows XP SFF build...

I went to the Catalyst Control Center, AMD Overdrive section, and overclocked the CPU, RAM and power consumption to the max. That made a great performance increase (15-20%?). On Crysis I disabled FSAA and now it's playable, and much snappier if I lower the Shaders from High to Medium. Overlord also runs fantastic, on the HD 7700 it struggled, I don't know if it's only the overclocking or it's somewhat faster on some games.

The good news is DirectX 6 compatibility is perfect, all the problematic games (Colin McRae Rally, Dark Forces II, AVP, etc) run now without any problem. That was the goal... and worked!

Nvidia drivers allow to create custom resolutions with ease, but that's not the case with CCC. But the trick of editing "DALNonStandardModesBCD1" field on the registry worked. I added 640x400@70Hz for DosBox gaming, and 640x480@120, 800x600@100, although perhaps it wasn't necessary.

The card is almost silent on idle, it runs the fan at 25%, not 35% as the HD 7770 did. Anyway it starts ramping up too soon, making it noisy during no so intense loads. The solution was the same for both the HD7700 and the R7 250:
- Dump the BIOS using the GPU-Z feature.
- Edit the BIOS with vBIOS Editor 7.0. Set 20% for <50ºC, instead of 25% for <40ºC, now fan is much quieter, and temps while playing shouldn't be a real problem.
- Flash the BIOS back with the MS-DOS version of AMDVBFlash, with a USB Floppy drive and a bootable floppy.

Now my XP build is 99.9999% compatible with Windows games from Windows 95 to Windows 7 pre-steam, yay! And I can play anything from the MS-DOS era via DosBox-ECE. That makes about 30 years of gaming available on a single build, SFF size, silently, with low power consumption, on a CRT... just fabulous!

Reply 22 of 25, by mgtroyas

User metadata
Rank Newbie
Rank
Newbie

I've been fighting for getting my Radeon HD 7750 SFF working with my VGA monitor, as is the fastest Radeon SFF with XP support. The problem is it only has mini-DisplayPort interfaces (and there's another model but also digital only, with two DVI-D), so I must use a HDMI/DP to VGA adapter. In this case the custom resolutions method is not valid, so I was stuck with 60Hz refresh rate for all the resolutions, a limitation of the EDID/DDC table of the converter.

But... I have found a solution: there's a tool for FirePro cards (the professional versions of the Radeons) called AMD Custom Timing Tool that allows to create custom resolutions, and blindly bypasses/overrides the EDID/DDC. The problem is it only works with FIrePro cards and I have a Radeon. But an user on this thread hacked it to work on any Radeon card, it can be downloaded here.

Since last post I also found a 19 inch Philips 109B6 CRT, capable of 1600x1200@75Hz, and I found all my VGA converters fell short, they're designed only for 1920x1080@60Hz. So I researched and there's one VGA converter, the Startech DP2VGAHD20, made for 4K@60Hz that allows higher refresh rates. I got it and it works in combination with the previous tool! For the adventurers, just reset the configuration of the Radeon drivers using this old DDU version still compatible with XP and the Radeon HD 7750, and use this timing calculator to enter the "Detailed Timing" for the modes that are not being allowed by the tool using the "Basic Timing" mode. The key, after many researching, I found out is:

"Total" = "H Total" or "V Total"
"Display" = "H Active" or "V Active"
"Sync Start" = "H Active"+"H Front Porch" or "V Active"+"V Front Porch"
"Sync Width" = "H Sync" or "V Sync"

Here's my SFF Windows XP desktop at a whooping 2048x1560 resolution!

OabjDOm.jpeg

7wVlzp7.jpg

Qq9DCLG.jpg

4hPaElr.jpg

Last edited by mgtroyas on 2024-03-16, 21:43. Edited 1 time in total.

Reply 23 of 25, by bZbZbZ

User metadata
Rank Member
Rank
Member

Wow, nice find! Thanks for the tip regarding the Startech DP2VGAHD20, I'm sure that will be handy for people who come across this thread in the future.

What refresh rate does your monitor hit at 2048x1560? Both of my 19" CRTs run 1600x1200 @ 75Hz and 1280x1024 @ 85Hz. I actually prefer the latter, as 85Hz feels noticeably smoother to me than 75Hz.

Reply 24 of 25, by mgtroyas

User metadata
Rank Newbie
Rank
Newbie

Thanx, yep, I spent a lot of time researching so I wanted to share it, probably there are more use cases where it'll become helpful.

At 2048x1536 I can only get 60Hz. At 1920x1440 64Hz is the max as stated in the user manual. It's simple once you understand it, the maximum horizontal frequency of the monitor is the hard limit, for my Philips it's 96kHZ, and using the calculator I linked, 1920x1440@64 corresponds to 95.655Hz.

I also noticed 85Hz resolutions being softer than 75Hz. It's better I suppose for fullscreen gaming, as it's free analog antialiasing, but it's worse for desktop usage, text appears blurrier, I still have to compare with calm.

Anyway, playing a game like Quake 4 at 1600x1200 with that kind of analog softening blew my mind, it's the most beautiful image quality I've ever experienced, looking just "natural" instead of "pixelated". In fact you can find in Youtube lots of videos of people playing modern games on high end CRTs like the Sony GDM-FW900 and praising it, and I couldn't agree more.

Reply 25 of 25, by mgtroyas

User metadata
Rank Newbie
Rank
Newbie

Well, I've digged deeper in the rabbit hole and I've done more interesting findings. One thing that the AMD Custom Timings Tool doesn't allow is defining a resolution below 640x480. I like defining a 640x400@70Hz mode because it allows 320x200 DOS games run under DOSBox exactly as in the original hardware, with an advantage:

  • Either using 640x480 or 640x400 you can disable aspect ratio correction on DOSBox and stretch the image to fill the screen using the CRT monitor adjustments, just as we did back in the day. DOSBox, not finding 640x400 resolution available on your system, will choose 640x480 as the closest one and then use it.
  • But if you have both, you can define 70Hz as the forced resolution for 640x400 on RefreshLock, as this use case is the only one using that mode on modern systems, and set 640x480 at your preferred refresh rate (like 120Hz) for any other program. If you only have a 640x480@70Hz mode, you must switch manually on RefreshLock each time you're using DOSBox and restore it afterward. And in games that use both modes you're screwed.

So, how to define a mode the Custom Timing Tool doesn't like? Well, I've discovered that this tool is exactly what AMD later integrated on their Crimson drivers to allow us defining custom resolutions on later versions of Windows. I monitored the tool with ProcessMonitor from the Sysinternals package for Windows XP while defining a custom resolution, and found out it's writting on this Registry path:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video\{F245CA71-FFDA-40CB-8EF8-69825ECC14A4}\0000\DAL2_DATA__2_0\Common\EDID_8526_F966

Where the video card identifier betheen "{}" is random, and the EDID numbers are dependant on your monitor/adapter. Inside, it creates a binary value called "ModeTimingOverrides_DP_Conn12563" where the last numbers seem to be also random... and this value is the same the Crimson drivers use to save the custom resolutions you create on later versions of Windows. That's why the fields you fill defining a custom resolution on both interfaces are exactly the same.

And luckily for us some user on a forum understood the format this data is being stored, it's hexadecimal but Little-Endian:

LRBoknU.png

So how you can define a 640x400@70Hz mode? You first define the 640x480@70Hz mode using the Custom Timing Tool, then edit the key using the registry editor. I found the values "E0 01" that in reverse order ("01 E0") are 480 in hexadecimal, so as I wanted it to be 400, which in hex is 190, I edited those "E0 01" values to "09 01". Rebooted the PC and... the mode is now available and shows on the Custom Timing Tool as 640x400@70Hz! Of course, the same method is valid for changing other parameters like the refresh rate.

And so, for Windows XP, for AMD video Cards, we finally know the obscure and undocumented registry value ("DALNonStandardModesBCD1") that allows us to define custom video modes for analog (VGA, DVI-I) interfaces, and the even more obscure and undocumented registry value that allows us to do the same but on digital (DVI-D, DisplayPort, HDMI) interfaces.