Putting the 'role' back in role-playing games since 2002.
Donate to Codex
Good Old Games
  • Welcome to rpgcodex.net, a site dedicated to discussing computer based role-playing games in a free and open fashion. We're less strict than other forums, but please refer to the rules.

    "This message is awaiting moderator approval": All new users must pass through our moderation queue before they will be able to post normally. Until your account has "passed" your posts will only be visible to yourself (and moderators) until they are approved. Give us a week to get around to approving / deleting / ignoring your mundane opinion on crap before hassling us about it. Once you have passed the moderation period (think of it as a test), you will be able to post normally, just like all the other retards.

windows 95/98 emulator for win 10 /11

Rincewind

Magister
Patron
Joined
Feb 8, 2020
Messages
2,471
Location
down under
Codex+ Now Streaming!
You would think that creating f.e ps2 emulator when you must emulate cpu+gpu+ram+os is harder than only os but apparently it is the other way around. Why?
Regarding your above question, start coding today, then 10-20 years later you'll know the exact answer :M
 
Joined
Jan 14, 2018
Messages
50,754
Codex Year of the Donut
The answer is because it's not emulation.
Running a windows 98 program on windows 10 is just a library issue, the same reason wine isn't emulation.

Microsoft has been historically horrible at backwards compatibility, especially with regards to anything related to their various runtime DLL hell.
 

Jigby

Augur
Joined
May 9, 2009
Messages
337
If you really need a high performance Win9x VM, the only thing that's there is qemu-3dfx. You can have a cpu virtualized Win98 with graphics API passthrough to your host OS graphics card. But it's quite janky/duct-taped, requires a lot of fiddling/time investment. Works great for 3dfx glide games though.

https://www.youtube.com/watch?v=j7liRXxGdXo
https://www.vogons.org/viewtopic.php?f=24&t=89763
https://github.com/kjliew/qemu-3dfx/wiki/QEMU-3D-APIs-Pass-Through

You could also use an old graphics card, but I think the last graphics card that's supported on Win98 is Geforce 6000 series.
 

Bad Sector

Arcane
Patron
Joined
Mar 25, 2012
Messages
2,226
Insert Title Here RPG Wokedex Codex Year of the Donut Codex+ Now Streaming! Steve gets a Kidney but I don't even get a tag.
Running a windows 98 program on windows 10 is just a library issue, the same reason wine isn't emulation.

There are more changes between Win9x and Win10 than just libraries, e.g. the memory management has been tightened so that many wrong things (like some use-after-free situations) that happened to work in Win9x's memory manager are not permissible anymore and cause applications to crash.

Microsoft has been historically horrible at backwards compatibility, especially with regards to anything related to their various runtime DLL hell.

Compared to pretty much every other desktop OS Microsoft has been amazing at backwards compatibility. On macOS breaks things pretty much every update and on Linux you can barely run stuff only a few years old because of incompatible ABI and soname changes or libraries getting kicked out by distros. The kernel ABI is stable but the kernel is only a tiny part of a desktop OS and pretty much no application or game uses only the kernel ABI (assuming it uses it at all and doesn't go through some library like glibc). This is also why the Win32 API via Wine tends to be more stable on Linux than any native API.
 
Joined
Jan 14, 2018
Messages
50,754
Codex Year of the Donut
There are more changes between Win9x and Win10 than just libraries, e.g. the memory management has been tightened so that many wrong things (like some use-after-free situations) that happened to work in Win9x's memory manager are not permissible anymore and cause applications to crash.
?
The example you gave is an example of libraries. The C standard library is in charge of memory management.
Compared to pretty much every other desktop OS Microsoft has been amazing at backwards compatibility.
lol no
 

Bad Sector

Arcane
Patron
Joined
Mar 25, 2012
Messages
2,226
Insert Title Here RPG Wokedex Codex Year of the Donut Codex+ Now Streaming! Steve gets a Kidney but I don't even get a tag.
?
The example you gave is an example of libraries. The C standard library is in charge of memory management.

The OS memory manager is separate from the memory management a C library does and handles more things than just memory allocations and releases (which is what a C library's memory manager does), like access rights (the thing that causes incompatibilities with Win9x). I refer to the OS memory manager, not the C library's memory manager. The C memory manager (and other language and/or runtime-specific memory managers) allocates big(ger) blocks from the OS and manages it itself (there are various reasons for that, like performance as going through the OS is much slower). Any misuse within the limits of the C memory manager would not trigger any OS-specific changes (unless the C library/runtime requests it but Win9x applications pretty much never did) since as far as the OS is concerned the application uses the memory properly, however any misuse outside those limits (e.g. trying to use memory just outside the allocated range) depends on the OS memory manager (modern OSes are more restrictive there than Win9x used to be).


Actually yes. Remember that this is in comparison to other OSes, not an absolute statement. Newer Windows versions do break things but when you take into account how often things break in other OSes (e.g. i have an iMac i bought in 2009, pretty much every update until Apple decided to stop supporting it altogether had existing applications stop working in one way or another - similarly with Linux you often get the library incompatibilities and removals i mentioned) the situation on Windows is by far the best.
 
Joined
Jan 14, 2018
Messages
50,754
Codex Year of the Donut
The OS memory manager is separate from the memory management a C library does and handles more things than just memory allocations and releases (which is what a C library's memory manager does), like access rights (the thing that causes incompatibilities with Win9x).
No, the C library implementation would be handling access rights. Do you think the OS knows what pages you want to access through a magical OS fairy in the sky?
Any misuse within the limits of the C memory manager would not trigger any OS-specific changes (unless the C library/runtime requests it but Win9x applications pretty much never did) since as far as the OS is concerned the application uses the memory properly, however any misuse outside those limits (e.g. trying to use memory just outside the allocated range) depends on the OS memory manager (modern OSes are more restrictive there than Win9x used to be).
Again, you seem to not understand what the C library is actually doing. There are open source versions for you to review if you want a better understanding.

the situation on Windows is by far the best.
are they paying you to say this, or are you really just this ignorant?
 

Bad Sector

Arcane
Patron
Joined
Mar 25, 2012
Messages
2,226
Insert Title Here RPG Wokedex Codex Year of the Donut Codex+ Now Streaming! Steve gets a Kidney but I don't even get a tag.
No, the C library implementation would be handling access rights. Do you think the OS knows what pages you want to access through a magical OS fairy in the sky?

"No" to what? C itself does not provide any means for specifying access rights, this is part of the OS-specific APIs. If the underlying systems needs any access rights setup the C library would do it as an implementation detail but that is irrelevant to what i originally wrote.

Again, you seem to not understand what the C library is actually doing. There are open source versions for you to review if you want a better understanding.

Sorry but based on what you are writing, you are the one who does not seem to understand what the C library is doing and seems to be confusing the memory management a C library may have and the memory management functionality an OS will provide by mixing all these separate concepts in your head.

An OS does provide its own memory management functionality. This can be used directly (though that is rarely done unless one needs some specific functionality beyond just allocating memory that the language in use cannot provide) but pretty much all languages provide their own memory management functionality that is built on top of that (the world isn't even about C, though some OSes use the their extended C libraries as the official API to access memory management functionality, but even with those OSes the C library has its own separate memory manager from the memory manager that lies in kernel space).

are they paying you to say this, or are you really just this ignorant?

Or perhaps you have nothing to say on the topic but you just want to argue for the sake of arguing.

Now you can take a step back, read what i wrote from my original reply and try to learn a few things about topics you only have a partial understanding about or you can just let your ego take over and keep on disagreeing and remain ignorant - you'd be alone on that though since TBH i do not really care about having an argument about how the sky is blue and the water feels wet, it is a waste of time.
 
Joined
Jan 14, 2018
Messages
50,754
Codex Year of the Donut
"No" to what? C itself does not provide any means for specifying access rights, this is part of the OS-specific APIs. If the underlying systems needs any access rights setup the C library would do it as an implementation detail but that is irrelevant to what i originally wrote.
No it's not. You flat out implied setting memory page permissions is not the job of the C library when you request memory when it most definitely is. The OS is not some god that knows what pages you want to access.
Sorry but based on what you are writing, you are the one who does not seem to understand what the C library is doing and seems to be confusing the memory management a C library may have and the memory management functionality an OS will provide by mixing all these separate concepts in your head.
Where did I ever imply this?
An OS does provide its own memory management functionality. This can be used directly (though that is rarely done unless one needs some specific functionality beyond just allocating memory that the language in use cannot provide)
:roll:
Yes, mmap is used very rarely on *nix based systems.
but pretty much all languages provide their own memory management functionality that is built on top of that
Go find a non proprietary C++ implementation, the global new and delete operators will be implemented in terms of malloc and free at some level.



Take the Microsoft cock out of your mouth and learn something.
 

Rincewind

Magister
Patron
Joined
Feb 8, 2020
Messages
2,471
Location
down under
Codex+ Now Streaming!
Btw, it's generally best to use the earliest possible OS for these late 90s games (so DOS 6.22 > Win3.1 > Win98 SE). I personally wouldn't bother with Win95 at all.

For those games on your list that have Win3.1 installers, I'd just use DOSBox. I recommend DOSBox Staging. Here's a handy wiki article on setting it up for Win3.1 with S3 video drivers. You can also enable CRT shaders in DOSBox Staging if that's your thing, or just use pixel-perfect scaling (works great for 640x480 games which is what most games from this era use).

Then set up the SB16 Win3.1 drivers, should be pretty straightforward.

I've done all this and saved it as a template for installing Win3.1 games. I always make a copy of this clean Win3.1 template as a starting point and only install a single game into it to minimise conflicts, it doesn't take much more disk space.

PCem can emulate a Pentium MMX 166 satisfactorily on my i7 4790k system, that should be enough for pre-1999 Win98 games that are either 2D or not heavy on 3D.

Also would like to point out that playing earlier Win98/XP games with 3D acceleration passthrough (whatever the method is) has its problems. Many of those earlier games use DirectX 9 or earlier, and with the advent of DirectX 10+ hardware those earlier DX features got kinda neglected. Yes, the support is still there, and most games still work, kinda, but sometimes you get weird rendering glitches. The GPU hardware architecture underwent substantial changes around the introduction of DX10, so the drivers got simplified; some of those earlier features got either dropped wholesale or changed/emulated, and so on. A few notable such features were 8-bit palette support (used in Final Fantasy 7 and 8), fog tables (used in Thief II) and various 16-bit colour modes (used in most games).

Another issue is hardware accelerated positional audio (EAX). WinXP was the last Windows OS that supported it and quite a few games make good use of it (most Infinity Engine games, Thief series, Revenant, etc.) This can add tons of atmosphere to some games (e.g. when you're in a cavern, you can hear an echo on the certain sounds). Creative's own ALchemy software can emulate this in some games on post-XP systems, but if you want the real thing, you need to use a Creative Sound Blaster Live!, Audigy, or X-Fi card in a real Win98/XP PC. I might be wrong on this, but I don't think Wine or anything else can emulate EAX well enough.

So, depending on your desire for authenticity and having the best possible experience, emulation and/or patches for old games can get you 80% there, and for some people this might be good enough (certainly more convenient and cheaper than hardware). But for the best experience real hardware running Win98/XP is the way to go with a period-accurate AGP/PCI-e video card and some Creative SB card variant. Then using a CRT monitor is highly recommended, especially for those fixed resolution 640x480 or 800x600 games that just look like crap with linear interpolation on an LCD (so that would be most if not all 2D adventure games and axonometric RPGs up until about 2005-2007 or so).

EDIT: It turns out PCem can emulate the AudioPCI 128 card with A3D spatialisation, that's something. Not sure about EAX though.
 
Last edited:

sigard

Not Excidium
Joined
Jun 9, 2019
Messages
102
installed hyper-v, seems to be working :)
i once again turned virtualization in my bios and this time my pc did not crash during windows 10 booting :)
Here's hoping that i will be able to play all this awesome fmv games from 1995-1998
Now i have to find find windows 95 iso...
 

sigard

Not Excidium
Joined
Jun 9, 2019
Messages
102
does games created before win98 era so 1995-1998 always work on win98?
cuz i don't know if i should find win95 or win98 iso...
 

Bester

⚰️☠️⚱️
Patron
Vatnik
Joined
Sep 28, 2014
Messages
11,108
Location
USSR
Yeah, pretty much this. I have dual boot with Win98SE/WinXP on my retro rig. I know there's a very short list of games that supposedly only work on Win98 and not XP, but I've yet to encounter such a game. So far I'm installing 94-96 games. Sometimes "compatibility mode" is required to install the game, or the registry records are written incorrectly. But otherwise, WinXP handles it all.
For pre-95 games, Pentium 4 is capable of emulating up to 133 MHz in DosBOX, so I'm good with those too. P4 with WinXP and a CRT monitor is the ultimate retro gaming machine.
 

sigard

Not Excidium
Joined
Jun 9, 2019
Messages
102
There are plenty of ways of emulating Win95, but they're all last desperate hail mary attempts at running the game. All unhappy gamers are unhappy in their own unique ways and all happy gamers are happy in exactly the same way - in that they play Win95 games without emulating Win95. With that said I was playing with winevdm lately so I wanted to look at Johnny Mnemonic and the rest.

A lot of them have Win16 installers, use winevdm to install them.

VoyeurII - This is a DOS game, it even has a DOS installer (install.bat). Unless there's some bad interplay with DOSbox, I don't see the need for Win95. It ran fine on my DOSbox.

Daedalus Encounter DVD - Win32 game, a pain in the butt to get it running, fortunately there's the CD version

Daedalus CD & Johnny Mnemonic - Win16 games, I tried them in winevdm and they ran very nicely. I had to enable a hypervisor in winevdm to get smooth videos though. More on that down below. Still, they'd need to be tested, maybe there are some problems down the road? I only played them a bit.

Days of Oblivion - This is a Win32 game, but it has a 16 bit installer. Also it uses quicktime 2.1.2, but it already comes with it on CD3, you can just install it (with administrator privileges). The game wants to run in 800x600x16. For the 16bit colors just enable them in the compatibility tab. For the resolution, you can change your desktop resolution manually, to get it fullscreen, or play it at a higher res and have it in a 800x600 box. Other than that, there were no problems with the game, it ran 100% on Win10.

Blue Heat - Win16 installer, game is both Win16 and Win32. I haven't tried the 16bit version. The 32bit has a fix online (https://web.archive.org/web/2006050...hlink.net/~jwmuse/walks/blueheat/WINXPFIX.zip). Overwrite the original executable with that. After applying the 640x480 and WinXPSP2 compatibility flags on the exe, the game ran perfectly fine on Win10.

Shadow Company - Safedisc. Copy files from the CD on HDD and replace setup.exe with the installshield launcher (http://toastytech.com/files/Is5Launcher.zip). Install the game, patch to 1.31, extract dgvoodoo2 to make it run and... it works, except for the music. The CD is a mixed mode data+audio, I had it mounted with wincdemu which does not do mixed mode, after mounting it with imgdrive music worked. The logic behind it is a bit dumbfounding though. The game looks for the CDdrive that has the CD from which the videos are played afterwards (logical). But the audio track is played from the first CDdrive in your system, even if that CDdrive is not the ShadowCompany CD. Most likely it's going be to your physical CDdrive, which presuming you got the game from pirate bay is empty. So there's no music! To have music, the image has to be mounted alphabetically as the first CDdrive of all CDdrives. You can change drive letters in Windows drive management. I suppose back in the day with only one physical drive and no virtual drive, this was not noticeable. That said, music is played only in the main menu? Not ingame. So no biggie. Also just to be sure, have some directshow codecs installed like LAVfilters, so that videos are playing.

Riana Rouge - This one had more problems to say the least. A win32 game, but the installer damages the executable during the installation. Win95 doesn't care about that and just runs with the damaged .exe, but XP and newer OS care and they complain. Manually copy riana.exe from the CD to the install dir. Sound was grainy, indirectsound fixes that. And then, the game is filled with Win95 behavior, you have to use Microsoft's Application compatibility toolkit to get that on a modern OS. Just for the sake of reproducibility, the shims I used were:

DisableFilterKeys+DisableThemes - to get the basic Win95 window theme
EmulateCDFS - there are some graphical/audio problems without it
IEUnharden - without it, the game freezes whenever an explorer.exe window is called (like during saving/loading)
ForceDXSetupSuccess - without it audio doesn't play after a load.
Force 640x480x16
ForceDirectDrawEmulation

All of that put together it ran OKayish I thought. There were some graphical glitches, but then I tried the game in a Win95 emulator and there were also graphical glitches. So it's just a poorly coded game. Would definitely benefit from a ScummVM treatment. Certainly better than another zmachine intepreter. This package ->
Code:
https://mega.nz/file/6kFkBA7K#mveUjgpg1vKCURpjwJSDch4W0fbmAgBu36Lcx_j8wvI
has all of that combined, start the game with RianaLauncher.exe with administrator privileges (so that shims can be applied); or apply them manually and run riana.exe.

As far as winevdm is concerned, I've made a winevdm Johnny Mnemonic package ->
Code:
https://mega.nz/file/n8t2VSoL#ykBt-hQ9IVIRhD6IULdSPBsoTxoSlUVxeQBjQRrTL5c
It has quicktime 2.03 installed. You can run the game just by executing start.bat. It's without a hypervisor, so the videos are going to be slow. Winevdm supports 3 hypervisors, HAXM (for Intel CPUs), GVM (for AMD CPUs) and Hyper-V (both CPUs but you want to have Win10+). The setup is really simple, check otvdm-master-2306/otvdm.ini for instructions, but in a nutshell if you want to use HAXM/GVM, Hyper-V has to be disabled (there's a simple GUI app that disables the Hyper-V service -> https://github.com/ygoe/HyperVSwitch/releases, restart PC afterwards; it doesn't uninstall Hyper-V, just the service is disabled, which is good enough).

For Hyper-V, Hyper-V obviously has to be installed (https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v) and the service has to be running (so if you disabled it with the app, reenable and restart). Also there are some Hyper-V specific dll load files (check otvdm.ini), but I already included them in the Johnny Mnemonic package.

If you have the hypervisor correctly installed and setup, enable it in otvdm.ini by uncommenting the line
Code:
;vm=haxmvm.dll
and rename the dll there for the hypervisor you chose.
I wish i could brofist 1000 times.
Thank you Jigby :love::love::love::love:
 

As an Amazon Associate, rpgcodex.net earns from qualifying purchases.
Back
Top Bottom