VOGONS

Common searches


First post, by OMORES

User metadata
Rank Member
Rank
Member

What do you know...

Windows NT 3.51 can be convinced to work with modern hardware like Ryzen 3900X! (First, I had a similar talk with NT 4.0)

I.Make NT 3.51 great again bootable:

UniATA v. 0.46e8 seems to be the perfect version for NT 3.51 and SATA drives. On my machine, it boots and 3 SATA drives show up in disk manager. (all, except NVME)

To get it done with SATA you might need at least one file from here: Windows NT 3.51 SuperPack ver.7

II.The drivers part:

*USB emulated keyboard simply works. (This is not the case in Windows 2K/XP/Vista)

*PS2 mouse works as expected (updated: now I use a Microsoft Cordless Wheel mouse with PS2 - serial adapter)

*For video I use a Voodoo 3 3000 PCI which is already installed on my system, and works with Windows 3.11, 9x, NT4/2000/Xp. I used Voodoo Velocity Drivers. Given the fact there is almost no 3D going on... these Velocity drivers are basically a set of 2D drivers for NT 3.51, but it's nice to have 16m colors... 😀

*Audio: I use a M-Audio Audiophile 24/96 PCI card - this is a new and a surprise find to me! You simply install drivers and you have sound. (the card is on the PCI-E bus using an Asmedia bridge chip.) Later update: Delta 24/96 runs well in Windows and 16bit applications but games like Unreal and Hexen II can't detect the card.

Avance Logic ALS4000 seems to be the perfect card for Windows NT 3.51, drivers just do their job. This card is also compatible with 32bit games like Unreal or Hexen II. The MIDI part needs some fiddling.

*LAN - Realtek 8029 PCI. (drivers)In NT 4.0 I use a Broadcom BC57XX PCI-E gigabit card - maybe I'll find some older drivers compatible with NT3.51. Anyways, there are plenty PCI NICs with drivers for NT3.51.

Software:

*16bit software works great! All the 16bit software which I used to ran in 3.11 now is installed on NT 3.51.

* If it is not specifically designed for NT3 most 32bit commercial software will fail at the installation part. But, if you can install it in NT 4.0 then probably will work in 3.51 also. (just copy the installed files and add the missing dlls...)

Internet:

There are some modified versions of Seamonkey, Firefox and Thunderbird which are extremely good if you have low expectations. I uninstalled IE 5.0 because it causes some start up errors. (it seems these errors appear even in emulators: PCTCPAPI083: 4.10 PC/TCP kernel and VxD not loaded.

Now some screen shots:

NT_351_Winamp192.png
Filename
NT_351_Winamp192.png
File size
33.64 KiB
Views
4410 views
File license
CC-BY-4.0
Voodoo3_NT_351_Ryzen.png
Filename
Voodoo3_NT_351_Ryzen.png
File size
28.88 KiB
Views
4410 views
File license
CC-BY-4.0
NT_351_onRyzen3900x_Firefox.png
Filename
NT_351_onRyzen3900x_Firefox.png
File size
105.76 KiB
Views
4410 views
File license
CC-BY-4.0
nt351_siv_hwinfo.png
Filename
nt351_siv_hwinfo.png
File size
31.9 KiB
Views
4410 views
File license
CC-BY-4.0

Yes, Unreal can be played in Windows NT 3.51. There is no DirectX in NT 3.5, so Unreal will start in software mode - which, by the way, is one of the best software rendering engines. This is how finished the game back in 1998 and I was very satisfied with the graphics. I'm curios if I can make it work with a Voodoo 3 by copying the glide2x/3x dlls.

This is a screenshot from my machine Ryzen3900x/Voodoo3 3000 running NT3.51 with real hardware:

Unreal_NT_35.png
Filename
Unreal_NT_35.png
File size
354.7 KiB
Views
4410 views
File license
CC-BY-4.0
Unreal_NT_351_SW.png
Filename
Unreal_NT_351_SW.png
File size
466.51 KiB
Views
4163 views
File license
CC-BY-4.0
Last edited by OMORES on 2022-02-22, 09:35. Edited 6 times in total.

Reply 1 of 46, by mattrock1988

User metadata
Rank Member
Rank
Member

This is incredibly delightful! Thanks for sharing.

I truly wonder if there are other ways to "improve" compatibility with more modern Win32 applications on NT 3.51?

Retro PC: Intel Pentium III @ 1 GHz, Intel SE440BX-2, 32 GB IDE DOM, 384 MB SDRAM, DVD-ROM, 1.44 MB floppy, Nvidia GeForce 4 Ti 4600 AGP, Creative SoundBlaster AWE64 Gold, Aureal Vortex 2
I only rely on 86box these days. My Pentium 3 PC died. 🙁

Reply 2 of 46, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

Mingw-w64 w/ win32 threads can be used on NT3.50+ on Pentium Pro+ if you want something modern.
For less than Pentium Pro you'd need to recompile mingw-w64 to target i386.
Just need to user a newer msvcrt.dll for NT3.5x,9x,NT4,2000.
SDL 1.2 works fine on NT3.51
For SDL 1.2 on NT3.50 you need to compile SDL 1.2 to disable fullscreen (#define NO_CHANGEDISPLAYSETTINGS 1) which just means fullscreen then is a fullscreen window with borders, openGL and DirectX and mabye joystick if you don't use winmm.dll from 3.51
Re: DOSBox Compilation Guides
Mesa3D 7.5.1 might work on NT3.5x (it does for 9x and NT4) for OpenGL 2.1 and below but you'd definetly need a fast CPU. Funnily enough I tried KernelEX with 98SE with Mesa 17.0.0 and it was actually pretty fast compared to the old Mesa3D
Re: DOSBox Compilation Guides

I am thinking of starting a vogons github or similar for things like that but doubt there is much interest.

Of course any other dependencies may have issues but if the game uses SDL 1.2 and works on 9x and doesn't require d3d then likely would work on 3.5x

Last edited by DosFreak on 2021-11-05, 03:23. Edited 1 time in total.

How To Ask Questions The Smart Way
Make your games work offline

Reply 3 of 46, by mattrock1988

User metadata
Rank Member
Rank
Member

Thanks for this detailed response DosFreak. I'm mostly an NT 3.51 fan, as it really just feels like NT 3.x with the most polish. I'm not sure what advantage would be had from running NT 3.5 over NT 3.51.

Retro PC: Intel Pentium III @ 1 GHz, Intel SE440BX-2, 32 GB IDE DOM, 384 MB SDRAM, DVD-ROM, 1.44 MB floppy, Nvidia GeForce 4 Ti 4600 AGP, Creative SoundBlaster AWE64 Gold, Aureal Vortex 2
I only rely on 86box these days. My Pentium 3 PC died. 🙁

Reply 4 of 46, by OMORES

User metadata
Rank Member
Rank
Member

I find Windows NT 3.51 good for Windows 3.x games with sound, especially if you want to run it on PCI only machine and you want to preserve Windows 3x GUI. It's somewhat easier to find a PCI sound card with drivers for NT3.51.

Back to pure 32bit Windows games - there is Unreal and Unreal Tournament. It seems that Unreal was designed on NT 3.51 machines and that's why...

Hexen II seems to work in a window. (didn't try command line for full screen) After a shell update for NT3.51 - Hexen II will come up with new resolutions up to 1280x1024. Also Quake II will start in software mode.

I will keep digging for titles...

Attachments

Reply 5 of 46, by R1600

User metadata
Rank Newbie
Rank
Newbie

This is very impresssive.
Have you try using Windows 95 driver for Broadcom BC57XX Gigabit card?
Since Windows 95 network driver is based on NDIS 3.1 (NT 3.51 supports it), it might be works on NT 3.51.
https://archive.org/details/bcm5702

Reply 6 of 46, by LSS10999

User metadata
Rank Oldbie
Rank
Oldbie
R1600 wrote on 2022-01-16, 14:26:
This is very impresssive. Have you try using Windows 95 driver for Broadcom BC57XX Gigabit card? Since Windows 95 network driver […]
Show full quote

This is very impresssive.
Have you try using Windows 95 driver for Broadcom BC57XX Gigabit card?
Since Windows 95 network driver is based on NDIS 3.1 (NT 3.51 supports it), it might be works on NT 3.51.
https://archive.org/details/bcm5702

I'm also interested in trying NT 3.51 on real HW after experimenting it a bit with VirtualBox, and now I'm at a loss regarding network adapters.

Looks like only vanilla Win95 and NT4 are pure NDIS3 besides NT 3.5x. Since Win95 OSR2 and NT4 SP3 drivers can be NDIS4. Win98SE/ME can even use NDIS5. I inspected the newer Intel and Realtek drivers (for WinNT4 or Win98) using Dependency Walker under NT 3.51 SP5 and found those newer drivers indeed imported something that NT 3.51 doesn't provide.

So far I'm yet to find usable drivers for well-known Gigabit ethernet adapters (discrete or onboard). I once found a driver pack that included e1000nt3.sys (Intel PRO/1000) while googling, but the driver in question seems to only support a select few adapters, that I couldn't even get it working with VirtualBox's emulated Pro 1000/MT (I also have an actual PCI card using it).

The overview of NDIS versions and their respective OSes can be found here.

Reply 7 of 46, by OMORES

User metadata
Rank Member
Rank
Member
R1600 wrote on 2022-01-16, 14:26:

Have you try using Windows 95 driver for Broadcom BC57XX Gigabit card?

Not yet in NT 3.51. Coming soon...

To test Windows 95 driver for Broadcom I installed Windows 95A on the same configuration (3900x) - and I'm glad to report that Win 95 installation was clean, I didn't get a single BSOD while installing PCI bus, video drivers (Voodoo 3) or audio (an original Ensoniq ES1370). Now, Windows 95 almost boots instantly with sound on my secondary 1280x1024 LCD and I love it...

win95A_Ryzen3900x.png
Filename
win95A_Ryzen3900x.png
File size
36.22 KiB
Views
4136 views
File license
Public domain

I might have some troubled BC57xx card (it doesn't show up in Windows 10 anymore, but works fine in Windows NT 4.0) That's why, until I find some better BC57xx card, I'm using a Intel Gigabit CT card which works nice in Windows 3.11, 95, 98.

However, I did plugged my troubled Broadcom gigabit card, it was properly discovered in Windows 95, drivers installed fine (there is a list with different models, including gigabit) - but I got a Windows Protection Error after rebooting. It was something about NDIS... and the error was permanent. (even with the card removed) Might be the wrong Windows 95 version. Didn't try OSR2 because there is more fiddling needed (mhz patch must be applied), but I did installed once OSR2 on this system and I know it works. I will do more testing soon.

Reply 8 of 46, by FuzzyLogic

User metadata
Rank Member
Rank
Member

Very nice! That would be my daily rig if a modern web browser and email client worked on NT3.51.

May I ask what motherboard are you using and how many PCI slots it has? I'm guessing a B350 or B450.

Reply 9 of 46, by OMORES

User metadata
Rank Member
Rank
Member
FuzzyLogic wrote on 2022-01-21, 15:55:

Very nice! That would be my daily rig if a modern web browser and email client worked on NT3.51.

May I ask what motherboard are you using and how many PCI slots it has? I'm guessing a B350 or B450.

The motherboard is a X470 Biostar with 2 PCI slots and, 2 PCI-E 16X, and 2 PCI-E 1x. This MB is compatible with Ryzen 5000 series. I will get soon a 5900x just to run Windows 3.11 and all the classics, including NT.

*PCI slot 1-> Voodoo 3 3000 PCI -> working drivers from Windows 3.1, NT 3.51/4, 95, 98, ME, 2000 etc.
*PCI slot 2 -> Ensoniq ES1370 (original) -> works great in Windows 3.1, including MIDI. This is the only PCI card that worked on Windows 3.11 behind a PCI-E to PCI bridge. The very same card, for some reason does not work for now... under NT 3.51, but works in 95, NT4 and all the rest.
*1 PCI-E 16x to PCI adapter with VIA 6421 for SATA/ATA -Good drivers for 98/NT4/2000/XP, but I'm using it mainly for Windows 3.11 enhanced mode. (on some boards Windows 3.11 can start in ehanced mode using pure AHCI (INT13H)on existing SATA hardware, on some other boards it hangs)
*1 PCI-E 1x with VIA 6212 USB (this card has its own PCI-E to PCI chip) - very compatible with every OS, recognized automatically by Windows 98SE with original files. Works even in Windows 95 after installing the patch. (but kinda useless in '95 because there is no HID support)
* 1 PCI-E 1x with gigabit card Broadcom or Intel. Intel gigabit cards work fine under Windows 3.11. If TCP/IP from Microsoft fails, you need to go with Trumpet TCP/IP which uses a packet driver. Luckily, I found a packet driver and everything else to make it work under 3.1
*1 PCI-E 16X with my main video card used to be an RTX 2070 Super but I had this great idea to sell it ...

There are some PCI VIA USB + SATA + PATA combo cards - I will get one of these to free a PCI slot.

Also, I want to buy a PCI-E to PCI expansion BOX which will add 4 more PCI slots and there will be a fiesta...

Reply 10 of 46, by FuzzyLogic

User metadata
Rank Member
Rank
Member
OMORES wrote on 2022-01-21, 19:24:
The motherboard is a X470 Biostar with 2 PCI slots and, 2 PCI-E 16X, and 2 PCI-E 1x. This MB is compatible with Ryzen 5000 serie […]
Show full quote
FuzzyLogic wrote on 2022-01-21, 15:55:

Very nice! That would be my daily rig if a modern web browser and email client worked on NT3.51.

May I ask what motherboard are you using and how many PCI slots it has? I'm guessing a B350 or B450.

The motherboard is a X470 Biostar with 2 PCI slots and, 2 PCI-E 16X, and 2 PCI-E 1x. This MB is compatible with Ryzen 5000 series. I will get soon a 5900x just to run Windows 3.11 and all the classics, including NT.

*PCI slot 1-> Voodoo 3 3000 PCI -> working drivers from Windows 3.1, NT 3.51/4, 95, 98, ME, 2000 etc.
*PCI slot 2 -> Ensoniq ES1370 (original) -> works great in Windows 3.1, including MIDI. This is the only PCI card that worked on Windows 3.11 behind a PCI-E to PCI bridge. The very same card, for some reason does not work for now... under NT 3.51, but works in 95, NT4 and all the rest.
*1 PCI-E 16x to PCI adapter with VIA 6421 for SATA/ATA -Good drivers for 98/NT4/2000/XP, but I'm using it mainly for Windows 3.11 enhanced mode. (on some boards Windows 3.11 can start in ehanced mode using pure AHCI (INT13H)on existing SATA hardware, on some other boards it hangs)
*1 PCI-E 1x with VIA 6212 USB (this card has its own PCI-E to PCI chip) - very compatible with every OS, recognized automatically by Windows 98SE with original files. Works even in Windows 95 after installing the patch. (but kinda useless in '95 because there is no HID support)
* 1 PCI-E 1x with gigabit card Broadcom or Intel. Intel gigabit cards work fine under Windows 3.11. If TCP/IP from Microsoft fails, you need to go with Trumpet TCP/IP which uses a packet driver. Luckily, I found a packet driver and everything else to make it work under 3.1
*1 PCI-E 16X with my main video card used to be an RTX 2070 Super but I had this great idea to sell it ...

There are some PCI VIA USB + SATA + PATA combo cards - I will get one of these to free a PCI slot.

Also, I want to buy a PCI-E to PCI expansion BOX which will add 4 more PCI slots and there will be a fiesta...

Thanks for the details. Your system is a great mix of old and new, which I love.

One thing I had trouble with is running too many PCIe to PCI bridges when trying to using telephony equipment (Sangoma.) There is a hard limit of two bridges for certain systems. I don't know if it's more or less on others. My motherboard had a built-in bridge and each of the Sangoma cards had a bridge directly on the cards, so I couldn't use more than one of those cards on that system. Maybe you ran into a limit on your system? An easy check is to run a Linux Live USB and lspci. Some bridged cards won't show up or will show up disabled. Remove a working card and the one that wasn't working will show up and work.

Yes, a PCI expansion box looks like a lot of fun. 👍

I sold my nVidia Card as well since I don't play new games; it was overkill for me. Best part was it sold for more than I paid for it! Running an old 660 Ti now.

Reply 11 of 46, by LSS10999

User metadata
Rank Oldbie
Rank
Oldbie

Sorry for the bump but I've a few more questions:

1. Did you try SATA disks with more than 120/128GB in size? With UniATA, can NT 3.51 be made to properly support 48-bit LBA?

2. Can NT 3.51 (with recent UniATA) be booted reliably with the SATA controller set to AHCI mode?

3. Is there a recommended utility to resize NT 3.51 NTFS (v1.1) partitions post-install? On the other hand, is there a good way to overcome the 4GB partition limit during install phase?

4. Is there any good tool to mount ISO (and other images) on NT 3.51? Googling about it leads to all kinds of useless information like mounting images on VBox/VMware and such.
ImDisk (original, not toolkit) claims to support as low as 3.51 but I'm yet to find any good guide on how to install it there, as its installation script is not compatible with 3.51.

Reply 12 of 46, by OMORES

User metadata
Rank Member
Rank
Member
LSS10999 wrote on 2022-02-21, 04:03:
Sorry for the bump but I've a few more questions: […]
Show full quote

Sorry for the bump but I've a few more questions:

1. Did you try SATA disks with more than 120/128GB in size? With UniATA, can NT 3.51 be made to properly support 48-bit LBA?

2. Can NT 3.51 (with recent UniATA) be booted reliably with the SATA controller set to AHCI mode?

3. Is there a recommended utility to resize NT 3.51 NTFS (v1.1) partitions post-install? On the other hand, is there a good way to overcome the 4GB partition limit during install phase?

4. Is there any good tool to mount ISO (and other images) on NT 3.51? Googling about it leads to all kinds of useless information like mounting images on VBox/VMware and such.
ImDisk (original, not toolkit) claims to support as low as 3.51 but I'm yet to find any good guide on how to install it there, as its installation script is not compatible with 3.51.

1. I have 1TB SSD connected which is read correctly (see photo), but I can't delete its contents for testing right now.

Nota bene: I did make some larger partitions on NT 3.51 (like 80GB on a 120GB SSD) - they work fine in NT 3.51 and are accessible in NT 4, 2000, XP, Win 10/11. BUT, they will become unrecognized in NT 3.51 if you modify their contents under NT4 or later. They are still fully functional on NT4 or later. I have to investigate this...

2. Yes, on my motherboard is totally bootable.

3. Didn't try any partitioning utilities.

Actually, you have to install NT 3.51 only once. I have a fresh NT3.51 with SP5 installation on a .zip file - I used those files multiple times. In this regard NT 3.51 is very flexible, it doesn't care if Windows folder is not on "C:", so you can make a fresh partition, copy or move Windows and Program Files folders there and boot from that location. (first make sure that boot.ini points to Windows folder on that particular partition) You can change letters afterwards from disk manager so Windows folder gets on C:.

Using this method, within NT 3.51 I created a 30GB NTFS partition for NT 3.51 (partition 2) and a 30GB partition for NT4 (partition 3). Then I modified boot.ini - partition 1 was for DOS/Windows 3.11, partition 2 for NT 3.51. Partition 3 -> NT 4. (Initially all three OSes were cramped on 2GB FAT16 partition) So, I could boot NT 3.51 and NT4 on different fresh and larger partitions. Sadly, NT3.51 partition got messed up after using it under NT4 and Win 10, but NT 4 stayed strong... and it's still bootable along the DOS partition.

4. Still looking. ImDisk should work in theory but I tried only once and didn't go well from the first try...

Attachments

  • nt351_drives.png
    Filename
    nt351_drives.png
    File size
    16.92 KiB
    Views
    3910 views
    File license
    Public domain

Reply 13 of 46, by LSS10999

User metadata
Rank Oldbie
Rank
Oldbie

Good to know that UniATA should work as expected.

OMORES wrote on 2022-02-21, 14:23:

Nota bene: I did make some larger partitions on NT 3.51 (like 80GB on a 120GB SSD) - they work fine in NT 3.51 and are accessible in NT 4, 2000, XP, Win 10/11. BUT, they will become unrecognized in NT 3.51 if you modify their contents under NT4 or later. They are still fully functional on NT4 or later. I have to investigate this...

Windows NT4 (SP6) or later will automatically upgrade the partition so it will cease to be compatible with NT3.51 and thus inaccessible.

Just tried a not-so-recent GParted Live i686 environment (Debian 11 based) on VBox with the VM I installed NT3.51 on (I think it uses ntfs-3g), and tried to mount the 3.51 NTFS partition ("-t auto" for now). It did report a few errors regarding it doesn't support $LogFile 1.0 (only supports $LogFile 1.1 and 2.0), and attempted to fix "unclean" shutdown. However, I was able to write something into the partition without issues, and after rebooting back to NT3.51, the partition previously mounted on that Linux environment appeared to be still accessible.

I didn't try this on newer Linux kernels (ntfs3 driver, since 5.15), though. At least my current tests indicate the ntfs-3g Linux driver should be safe for older NTFS versions, but still I have to be careful.

OMORES wrote on 2022-02-21, 14:23:

Actually, you have to install NT 3.51 only once. I have a fresh NT3.51 with SP5 installation on a .zip file - I used those files multiple times. In this regard NT 3.51 is very flexible, it doesn't care if Windows folder is not on "C:", so you can make a fresh partition, copy or move Windows and Program Files folders there and boot from that location. (first make sure that boot.ini points to Windows folder on that particular partition) You can change letters afterwards from disk manager so Windows folder gets on C:.

Using this method, within NT 3.51 I created a 30GB NTFS partition for NT 3.51 (partition 2) and a 30GB partition for NT4 (partition 3). Then I modified boot.ini - partition 1 was for DOS/Windows 3.11, partition 2 for NT 3.51. Partition 3 -> NT 4. (Initially all three OSes were cramped on 2GB FAT16 partition) So, I could boot NT 3.51 and NT4 on different fresh and larger partitions. Sadly, NT3.51 partition got messed up after using it under NT4 and Win 10, but NT 4 stayed strong... and it's still bootable along the DOS partition.

This looks interesting. In this case NT3.51 turned out to be even easier to manage and back up.

Reply 14 of 46, by bakemono

User metadata
Rank Oldbie
Rank
Oldbie
LSS10999 wrote on 2022-02-21, 15:49:

Windows NT4 (SP6) or later will automatically upgrade the partition so it will cease to be compatible with NT3.51 and thus inaccessible.

FWIW, if you add the FAT32 filesystem support https://bearwindows.zcm.com.au/winnt351.htm then NT 3.51 can easily share a FAT32 partition with other versions of Windows. It can even boot from it.

again another retro game on itch: https://90soft90.itch.io/shmup-salad

Reply 15 of 46, by BinaryDemon

User metadata
Rank Oldbie
Rank
Oldbie

There’s a ton of reasons other reasons why they might not run but I would try other games that support software renderers like: Half Life 1, Jedi Knight Dark Forces 2, Outlaws, Outwars?, Thief, Tomb Raider 2, almost any racing/simulation game pre-2000, Chocolate Doom or similar port, WinQuake or similar port.

Check out DOSBox Distro:

https://sites.google.com/site/dosboxdistro/ [*]

a lightweight Linux distro (tinycore) which boots off a usb flash drive and goes straight to DOSBox.

Make your dos retrogaming experience portable!

Reply 16 of 46, by LSS10999

User metadata
Rank Oldbie
Rank
Oldbie
OMORES wrote on 2021-11-04, 09:37:

I.Make NT 3.51 great again bootable:

UniATA v. 0.46e8 seems to be the perfect version for NT 3.51 and SATA drives. On my machine, it boots and 3 SATA drives show up in disk manager. (all, except NVME)

Just started experimenting and found out that UniATA 0.46e8 is indeed the right version. 0.47 and onwards (including latest 0.47b version) can't work on NT 3.51. Using those versions would lead to "The file uniata.sys is corrupted" error.

NB: Just put the 0.47b driver on Dependency Walker. It's importing several symbols absent from NT 3.51 NTOSKRNL: _alldiv, _allmul, _aulldiv, _aullrem. Version 0.46e8 does not import those symbols and is all good.

I'm testing this on an AM3 system and its SATA controller doesn't seem to work 100% correctly with 0.46e8 version using AHCI mode. The first SSD (128GB) is reporting only about 8GB unpartitioned space even though the driver correctly shows its total capacity, and the system hung when formatting the 4GB partition I created to install the system on. Maybe I'll try switching all ports to IDE mode and see if it could address the issue, though it might be okay to try rebuilding the MBR of the disk in question (all the disks were already empty anyway).

bakemono wrote on 2022-02-22, 04:05:

FWIW, if you add the FAT32 filesystem support https://bearwindows.zcm.com.au/winnt351.htm then NT 3.51 can easily share a FAT32 partition with other versions of Windows. It can even boot from it.

I'm not sure about the reliability of FAT32 support, as I've seen some warnings about possible corruptions before.

After all, the fastfat driver merely added support for FAT32 but one has to use something else (DOS, or maybe Linux) to check the partitions in case of problems.

BinaryDemon wrote on 2022-02-22, 06:49:

There’s a ton of reasons other reasons why they might not run but I would try other games that support software renderers like: Half Life 1, Jedi Knight Dark Forces 2, Outlaws, Outwars?, Thief, Tomb Raider 2, almost any racing/simulation game pre-2000, Chocolate Doom or similar port, WinQuake or similar port.

Those games probably also explicitly check if OS major version is 4 or above. One can, for example, patch the WinQuake source code to remove the major version check, but for stuffs that don't have source code, you'll have to rely on reverse engineering tools (like Ghidra) to figure out how to patch.

I don't know if there are any compatible wrapper solutions out there to allow NT 3.51 run things that otherwise require real DirectX. I loaded NT4 SP6's ddraw.dll into Dependency Walker and found it importing some "obscure" GDI32.DLL symbols absent from NT 3.51 (GdiEntry1 to GdiEntry14), so I can't really use them anyway.

Apparently if you install NewShell, NT 3.51 will report a OS major version of 4.0, but changing the system behaviors to match that of NT4 kind of defeats the purpose.

Reply 17 of 46, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

UniATA is still active they likely don't know that they broke it so let them know so at the very least they can mention it on their site if not fix it.
For 3.51 possiblyt would be Mesa3D and mabye wined3d that redirected to mesa3d heh.

Mesa3D 7.5.1 can be compiled with VS 2008 and it works on 9x-NT4. You can actually run newer versions of Mesa3D with KernelEX on 98 and ME and they are actually faster so I see no reason why thoretically it couldn't work on 3.51.
WineD3D 1.7.52 works on XP and I know BlackWingCat uses a version of WineD3D for 2000, unknown what APIs are missing in 3.51 for it to work or even if could be made to use Mesa3D.

Issue with DirectX games is it's not just video but everything else as well. Audio, Input, etc so likely not worth messing with WineD3D and sticking with GDI,software OGL and glide and I guess hardware OGL 1.0 if you have the hardware.

I seem to remember Quake 2 and Quake 3 working in NT 3.51 with glide but I've never tried it.

How To Ask Questions The Smart Way
Make your games work offline

Reply 18 of 46, by LSS10999

User metadata
Rank Oldbie
Rank
Oldbie
DosFreak wrote on 2022-02-24, 01:50:
UniATA is still active they likely don't know that they broke it so let them know so at the very least they can mention it on th […]
Show full quote

UniATA is still active they likely don't know that they broke it so let them know so at the very least they can mention it on their site if not fix it.
For 3.51 possiblyt would be Mesa3D and mabye wined3d that redirected to mesa3d heh.

Mesa3D 7.5.1 can be compiled with VS 2008 and it works on 9x-NT4. You can actually run newer versions of Mesa3D with KernelEX on 98 and ME and they are actually faster so I see no reason why thoretically it couldn't work on 3.51.
WineD3D 1.7.52 works on XP and I know BlackWingCat uses a version of WineD3D for 2000, unknown what APIs are missing in 3.51 for it to work or even if could be made to use Mesa3D.

Issue with DirectX games is it's not just video but everything else as well. Audio, Input, etc so likely not worth messing with WineD3D and sticking with GDI,software OGL and glide and I guess hardware OGL 1.0 if you have the hardware.

I seem to remember Quake 2 and Quake 3 working in NT 3.51 with glide but I've never tried it.

Dependency Walker is very useful on very old Windows versions like NT 3.51.

I think the 0.47 driver (and onwards) might have been built with newer toolchains than those used to build the 0.46e8 version, that implicitly imported new symbols and broke support of earlier Windows versions.

It kind of reminds me the time when XP support of WinBtrfs was unexpectedly broken due to the use of a newer MSVC version which added incompatible imports into the binaries. While the XP support was fixed later on, the shell extension still did not work and I ended up building that part myself with mingw-w64 5.0.3, which produced a library usable with XP.

I'm not sure about Mesa3D and WineD3D, but I think I can try walking a few versions of them in Dependency Walker to see whether or not they'll work on 3.51, when I have time.

EDIT: Nope... WineD3D even 1.6.2 isn't going to work. As of 1.6.2, ddraw.dll needs GetModuleHandleExW (KERNEL32.DLL), GetMonitorInfoW, MonitorFromWindow (USER32.DLL).
Additionally, wined3d.dll needs ChangeDisplaySettingsExW, EnumDisplaySettingsExW, MonitorFromPoint (USER32.DLL). Guess it's probably because NT 3.51 doesn't support changing resolutions on-the-fly.

Last edited by LSS10999 on 2022-02-24, 16:16. Edited 1 time in total.

Reply 19 of 46, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

Yup changedisplayettings is in nt3.51 but not ex but shouldnt be too big of a deal to change it, for sdl on 3.50 there is no changedisplaysettings so sdl 1.2 on 3.50 will instead switch to full screen bordered window when you define no_changedisplaysettings
Of course nothing prevents a wrapper/stub like kernelex to implement the ex functionality but unlikely anyone would bother.

How To Ask Questions The Smart Way
Make your games work offline