The Wintel Retro Landscape

I started this project before the massive boom in Claude-enabled decomps started rushing the scene, so this may now be mostly of historical rather than practical interest. I planned on comparing more applications but see little point now; I’m publishing more or less as it was last time I touched it. It should also be noted that when I wrote this, the Pi 5 was a lot more affordable!

Windows On Intel dominated the late PC era, and there’s a wealth of software available for the platform, especially from the 90s and 2000s, right in the sweet spot when desktop games had matured but not bet become totally entangled in Steam and DRM. Microsoft has done an impressive job keeping legacy applications running on the platform. It’s a platform I hoped you could keep stable indefinitely, even if WINE was required.

However, Wintel and desktop in general have been slowly falling out of favor. Apple, ever the trend setter, has switched away from Intel for its desktop machines. Microsoft has been shipping ARM tablets for a while. The Raspberry Pi is the common denominator hobbyist platform. People are hopping mad about Windows 11. And overall, computing has switched from something you do on a desktop with a keyboard and mouse running an Intel processor to being something you do with a mobile device with an ARM processor.

What do we do when platforms are retired and try to make us give up our software? We persist!

Meet the Test Applications:

I’ve tried to assemble a grab bag of applications you should be able to find if you look hard enough but nonetheless are personally nostalgic.

EV Nova (Windows Port) (2003)

The definitive 2D space trader. One of my favorite games and one of those “I want to be able to play this forever” emulation targets. Previous attempts to run in WINE have been difficult due to font weirdness, but with the advent of the CE binary patch have gotten within reach.

Space Invaders (Windows, 1999)

2.5d Shmup based on the ur-shmup. If you speed run it, it plays like a puzzle game.

Lego Loco (1998)

2d sandbox/toy. Charming pixel art graphics. Like a Lego Sim City but without any Sim elements; the only real ‘game’ is to hunt for all of the whimsical easter eggs they programmed in, including some that only appear on certain dates (for example, on Halloween all characters spawn as skeletons.)

Star Craft: Broodwar (1998)

The classic sprite RTS and once the most popular esport.

Command & Conquer Tiberian Sun

https://cnc-comm.com/tiberian-sun/downloads/the-game/installer

An eclectic mix of technologies and killer atmosphere create a memorable RTS experience.

Test Environments:

Raspberry Pi 4/5: Wine + Box64

PI 5 only: change kernel page size:

The PI 5 has a larger kernel page size than legacy programs expect. You need to downgrade your kernel to make it work. This is only a problem on the PI5. Be pretty cool if this could be emulated too though.

https://github.com/ptitSeb/box86/issues/993

Edit your config.txt:

sudo vi /boot/firmware/config.txt

(or sudo nano if you don’t like vi)

add the following to that file:

kernel=kernel8.img

Reboot.

Compile Box64

https://github.com/ptitSeb/box64/blob/main/docs/COMPILE.md

git clone https://github.com/ptitSeb/box64
cd box64
mkdir build; cd build; cmake .. -D ARM_DYNAREC=ON -D CMAKE_BUILD_TYPE=RelWithDebInfo -D BOX32=ON -D BOX32_BINFMT=ON -D RPI4ARM64=1 #Change the last line according to your PI version
# This takes a while
make -j4
sudo make install
sudo systemctl restart systemd-binfmt

Install bundle libraries

https://github.com/ptitSeb/box64/blob/main/docs/BUNDLE-X86-LIBS.md

sudo apt-get install binutils coreutils curl rpm2cpio tar zstd

/box64-bundle-x86-libs.sh

Install x86 WINE

download wine here: https://github.com/Kron4ek/Wine-Builds/releases (wow64)

Run the program

bin/wine <program.exe>

Remarks

This setup isn’t too bad, but it required some knowledge of Linux, googling, and assembling multiple parts. Nothing I expect the average Raspberry Pi user to be intimidated by, not not something I can recommend to the general public in the way you can with Steam.

For CD ROM games

You’ll need to mount the ISO of the CD ROM:

“`mkdir ~/cdrom0

sudo mount -o loop -t iso9660 <my_iso>.ISO ~/cdrom0

EV Nova

PI 4: Runs albeit at a framerate slightly below the original OS9 play speed (and well below the default Windows play speed.) ~25 FPS.

PI 5: Acceptable performance. Fonts still slightly jank.

Space Invaders

PI 4: Runs stable, with some graphical glitches. You need to install it from the CD then run from Wine’s C drive (easy to find with winefile.) Couldn’t figure out how to make the window bigger.

Tiberian Sun

PI 5: Runs great. Initial startup was wonky and need multiple tries. Make sure you change the screen resolution asap because any space outside the resolution gets an awful flashing pattern (Photosensitive warning!)

Android: Winlator

Winlator is distributed as an APK here: https://github.com/brunodev85/winlator/releases/

Installing APKs on android requires clicking through several security warnings because it’s opening up your device to possible compromise in a way that most activity on an Android device does not. But, if you’re pretty sure you know what you’re doing, Winlator packages WINE, Box86/64, and several other tools together into an android app that lets you run some wintel programs on an android ARM device.

For best results you’re going to want an external Bluetooth keyboard and at least a stylus.

EV Nova

Can’t keep a consistent frame rate. Some text missing. Semi-Playable, but only if you’re a diehard fan.

C&C: Tiberian Sun

Way too slow to be playable. Radar didn’t work. Froze on campaign start, but was able to start a skirmish. LMB controls meant you could still sort of play slowly.

CD Games

Winlator is unable to run games that require a CD in the tray to run because it lacks CD emulation.

Remark

It’s simply not ready. Maybe never will be.

Linux on x86 (Virtual Box)

I consider WINE on Lin86 a mature enough technology that I don’t feel the need to discuss it here, instead I wanted to compare it to Virtual Box.

I used Lubuntu on an old ThinkCentre. Similar instructions are out there for other Linux distros. There are some well known Windows XP installs you can use. Make sure you enable virtualization in your BIOS.

https://www.virtualbox.org/wiki/Linux_Downloads

sudo apt install gcc make perl
sudo /sbin/vboxconfig

sudo rmmod kvm_intel

# You may need to configure these to run at startup
sudo modprobe -r kvm
sudo modprobe -r kvm_intel

But there are issues:

https://forums.virtualbox.org/viewtopic.php?t=106674

After 6.x, Virtual box dropped support for 3d acceleration in WinXP guests.

Installing 6.x on Ubuntu 24.x turned out to be difficult as well, but your mileage may vary.

CD support is very nice; you just load each CD as a virtual dive. I’ve found this the most straightforward way to run non-game applications if you need them.

OS9 on Ubuntu

The first thing to know about emulating macs from The Before Time is that if you where using Classic Mac OS at the turn of the millennium, you probably used an iMac G3. This machine was ubiquitous-at least at schools in my area. This machine used a PowerPC chip rather than a 68k, so the emulator you want to use is SheepShaver. If you want to use a 68k there’s Basilisk II, which has a very similar setup, and just needs to be installed via apt.

In order to run SheepShaver you’ll need to download some additional stuff, so you might as well do it up front. Redundant Robot has become the de-facto distributor of these files (email me if this ever goes down, I’ll host’em.) Specifically you’ll want the New World ROM and A pre-made bootable OS9 install.

Next you’ll want to compile a copy of SheepShaver. This is thankfully very easy thanks to StackOverflow:

Install dependencies:

sudo apt install build-essential libgtk2.0-dev x11proto-xf86dga-dev libesd0-dev libxxf86dga-dev libxxf86dga1 libsdl1.2-dev osspd git

clone the macemu repo from github:
git clone https://github.com/cebix/macemu.git

Build SheepShaver:

cd macemu/SheepShaver
make links
cd src/Unix/
./autogen.sh
make -j3

Install the binary into your path

sudo cp SheepShaver /usr/bin

Run Sheepshaver with

sudo padsp SheepShaver

This will get you to the setup menu. In the Memory/Misc tab, add the new world ROM file. Then, back in the Volumes tab, add the .img file you downloaded, and create a new (big) empty volume to store your apps. Next add a valid directory that you do not care about because it will be consumed by sudo-enabled fire as “unix root.” Now you should be able to boot into the machine by hitting “start.”

In order to get apps working, you’ll generally want to first get them out of your unix folder and only then unpack them (most vintage mac files are in Stuffit format, so you’ll want a copy of Stuffit Expander to be your first install.)

Unfortunately, the Redundant Robot image is too small to fit many apps. What you’ll want to do is make your own image. Make a blank disc with SheepShaver’s interface download  this disc (you’ll need an account.) In order to boot from a file, it needs to be read-only (in fact it will render any writable file that it tries to boot from unbootable.) But you need to run SheepShaver as root. So to render the file unwritable to root, you need to make it immutable with

chattr +i ~/Downloads/Mac_OS_9.0.4.toast

Then add it to the boot list and it’ll boot to the installer.