Running the Win95 game on "Windows"
3 years ago
Finland

Howdy, fellow bugstompers.

So, some people (myself included) have had varying success in running this game on their modern windows 10 gaming rigs. Any legacy-support features that windows offers on its own haven't worked for me, and I guess not for some other people as well. Additionally, virtual machines running on windows are limited to running the game in "software rendering" mode, which severely limits the visual quality of your gameplay experience.

Save for one. The best way of running the game I have found thus far: Run it on Linux. Through Wine, everything except the cutscene quicktime videos work fine out of the box.

  • But wait, my gaming rig runs Windows 10 like any sane person's?! And dual-booting is such a pain in the ass. What do?

Well, there is one thing you can do, and that I just confirmed a viable option. The recent godsend from microsoft - the WSL 2 (Windows Subsystem for Linux TWO). However, it only offers a command-line interface for running cmd applets out of the box, so some setup is needed. Let's get down to it.

#Step 1 - Install WSL 2

You need to have a recent enough version of Windows 10 for this. As far as I know, WSL 1 won't do, as you need multiarch support for running 32-bit binaries, such as our beloved game of collecting seed and stompin' evil spiders. You can prob find a ton of guides on how to do this with google, but here, I just googled one for you: https://docs.microsoft.com/en-us/windows/wsl/install-win10

Ubuntu is likely the distro you would like to use for this, but if you know your way around your favorite distro then ofc go for it.

#Step 2 - Install required packages on WSL

Basically you'll need wine, winecfg and wine32 on your WSL to run the game. Additionally libpulse0 if you want sounds to work later. A text editor like nano will come in handy as well (I prefer vim, but if you are not familiar with its keymaps and dont want to bother learning it for this, then just use nano).

For wine32 (and thus 32-bit win binaries) to work, you need to enable multiarch support. You can do it with:

sudo dpkg --add-architecture i386 && sudo apt update

To install the packages, in case you are not familiar with installing packages on a linux cmd, just do:

sudo apt install <package names>

in this case: sudo apt install wine wine32 winecfg libpulse0 nano

#Step 3 - Set up the graphics

Now, as mentioned, WSL only has a cmd interface. In order to create application windows and draw graphics, your WSL needs to connect to a Window System. The commonly used X Window system uses a client-server architecture, which allows the server (endpoint that actually draws the windows) to run on a different machine than the software that generates the graphics to be drawn in it. As it happens, you can find the X server as a precompiled binary to be run on your windows machine, and connect it to the virtual linux in your WSL.

Follow the instructions in this thread: https://virtualizationreview.com/articles/2017/02/08/graphical-programs-on-windows-subsystem-on-linux.aspx

BUT with some slight modifications: The WSL 2 runs in its own virtualized web-socket, so you need to set the destination of the DISPLAY variable to the IP your WSL uses as its default gateway (that being your windows PC from the WSL's perspective). You can do it like:

export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0

which essentially scrapes the IP from a file in /etc/resolv.conf and prints it in the environment variable DISPLAY. If you want this to happen automatically when you start WSL, you can paste it at the end of the script ~/.bashrc

nano ~/.bashrc

#Step 3.5 IN CASE STEP 3 DIDN'T WORK YET

Now then, depending on which X server you picked from the guide, you may or may not run into issues with your Windows firewall blocking the connection from your WSL. I used VcXsrv https://sourceforge.net/projects/vcxsrv/, and this is how I got it to work:

When starting VcXsrv, pick the following settings:

  • Display settings: One large window
  • Display number: 0
  • Start no client
  • DISABLE "Native opengl"
  • ENABLE "Disable access control"

Go to Windows Firewall settings

  • Find any rules in Inbound rules and Outbound rules (allow or block) for the VcXsrv and delete them

  • Create a new Inbound rule

  • select "Custom rule"

  • "This program path" and find the path to your VcXsrv executable

  • Protocol and Ports, set "Protocol type" to TCP

  • In "Scope" you could test your setup with allowing any IP address, but this is not necessarily very secure. You should allow connections only from the WSL address space.

    • Go to Network and internet settings > Network and Sharing Centre > Change adapter settings
    • Find the adapter which says WSL or Hyper-V or smth to do with WSL -> status -> details -> IPv4 address
    • The first 3 segments basically tell you the subnet associated with your WSL network. In my case, the IPv4 address is 192.168.31.209, but as I don't know exactly what is the IP of the WSL in that space, I'm going to use "192.168.31.0/24" with the "/24" to mark that the last segment (or 8 bits) can be anything
    • Back in the firewall rule, add your version of "192.168.31.0/24" in both the "local" and "remote" IP address lists and set the option to allow "These IP addresses"
  • "Action", "Allow connection"

  • "Profile" at least "Public" and "Private" prob need to be enabled, Your WSL adapter might show up as either one in your network settings

  • "Name" Give it a descriptive name so you can easily find the rule later, mine is "WSL X-Server"

Now the X-connection from your WSL to your Windows desktop should work. xeyes is a good program to test it with, it should draw a pair of eyes following your cursor.

#Step 4 - Set up sound

I managed to get sound working by following this post https://discourse.ubuntu.com/t/getting-sound-to-work-on-wsl2/11869

The idea is simlar to the X-server, you run a pulseaudio daemon on your windows machine. You can add the "export PULSE_SERVER=tcp:$(grep nameserver /etc/resolv.conf | awk '{print $2}');" at the end of your ~/.bashrc script similarly to the DISPLAY parameter, if you want to set it automatically at restart. Make a firewall rule similar to Step 3.5 for the pulseaudio.exe if the connection gets blocked.

#Step 5 - Install the game in WSL

If your game is in a CD drive like mine, you should mount that on WSL. First make a mountpoint for it like: sudo mkdir /mnt/d

Then mount it: sudo mount -t drvfs D: /mnt/d (Change the D: if your drive is assigned to some other letter)

You want to configure wine for the game. Run winecfg. If your X-server setup works correctly, you should see a configuration window open there. Change the following settings:

  • Applications > Windows Version: "Windows XP" (I'm not sure if this actually makes any difference, but worked on my machine)
  • Graphics > Emulate a virtual desktop
  • Drives
    • In addition to the main drive C here, you might already have an additional Z. Select it and set its "path" to the path where you mounted your CD drive (/mnt/d/)
    • select "Show Advanced" from drive Z
    • Type -> "CD-ROM"
  • Apply all settings and close winecfg

Now to actually install the game, you could just run it from where it is in your WSL:

wine /mnt/d/SETUP.EXE

and it will install just fine BUT, because the game will be checking for the presence of a CD rom when running it, you might be safer to run:

wine "Z:\SETUP.EXE"

In which case the game MIGHT get a better idea to where is the drive it should look the CD-ROM from in the future. Or it could just quess its the first CD drive in the system, or have a hard-coded drive letter. I got it working with drive "Z", your experience may vary. D is a probable one to try and rename the drive (with winecfg) to.

Anyways, the Installer should be visible in your X-Server on windows now. Just do how you always do it.

#Step 6 - Run the game

If everything worked at the previous steps, this is now pretty straightforward. If the CD is mounted and ready, just do

wine "Z:\bugs.exe"

and you should (after a while) be greeted with a splash-screen asking for "software rendering" or "hardware rendering", select "hardware rendering" (the lower option).

Now, as I think I mentioned, the cutscenes don't work like this. You might be able to get them to work, but personally I don't care for them anyways. But as the game will anyways try to play them, you might need to press [enter] against an empty black screen for a few times before getting to the main menu.

Now if you can see the menu and hear the epic tunes in your windows-pulseaudio, congratz, you most likely made it, and at least for me, it runs really smoothly like this (apart from some minor transparency bugs in-game). Happy bugstomping.

PS. Yes, this most certainly counts as EMU

Edited by the author 3 years ago
Jumpyluff likes this
Finland

Apparently this forum has a brilliant BBCode/markdown system automatically replacing "D:" with an emoji, but not allowing any [code] or [/pre] tags. Just imagine the emojis are "D:"

Destabilize likes this
United Kingdom

If cutscenes aren't working it will be an invalid run due to time differences. Have you tried this method of running it on Windows 10?

papumaja likes this
Colorado, USA

I thought he was referring to the 3 cutscenes that play after selecting hardware acceleration. If the other ingame cutscenes are disabled, that would be problematic.

papumaja likes this
Finland

I hadn't really thought whether this is a 100% legit run-ready setup yet, mostly did it "just 'cause it can be done" :D Indeed the cutscenes in-game work the same as the ones in the beginning - meaning that they don't work and instead show a black screen right now. I'm not sure if it saves any time since it seems to me you still have to press a button (but without knowing exactly when) to get past the "cutscene phase", but I agree it would be good to have them working before submitting any runs with the setup.

Edit: By installing a few additional packages, I managed to get the cutscenes play the first 1sec of audio (still no video). So they seem to be there and get loaded - one probably can get them fully working with some trial and error.

As for Destabilize's comment: I haven't had any luck with dgvoodoo before using my physical copy of the game (Win95 Finnish dub CD) - it did work with the copy linked to that tutorial though. Actually, using my physical CD instead of the .iso with the version of bugs.exe+dgvoodoo linked in the tutorial, I managed to get the game running in a very oddly scuffed mode, where 70% of all text was in finnish, the rest in english and all voice-overs completely missing from the game :DD

Edited by the author 3 years ago
Game stats
Followers
159
Runs
489
Players
88
Latest threads
Posted 1 year ago
Posted 2 years ago
16 replies
Posted 2 years ago
2 replies
Posted 3 years ago
1 reply