It is problematic trying to run old Windows 98 games on a modern Mac.
The Windows PC then had Intel x86 chip architecture and the Mac M1 has arm64.
You can try and run it using Parallels or qemu but it is problematic.
In the end, I found a simple way that works and gives me a Win98 VM that is able to run old games.
This is using 86Box utility.
My starting point was this Reddit discussion:
https://www.reddit.com/r/macgaming/comments/1ays7u7/windows_98_on_apple_silicon_m1m2_cpu/
which led to this very helpful YouTube video on configuring 86Box for optimum Win98 performance and installing additional graphics and sound drivers:
https://www.youtube.com/watch?v=xghrSaKn7yM
There are full details on there to make it run on a modern Windows 11 laptop.
Some Mac-specific points:
First, install Homebrew on your Mac https://brew.sh/.
Then use that to install 86Box
$ brew install 86Box
The latest ROMs from https://github.com/86Box/roms
need to be installed into:
~/Library/Application Support/net.86box.86Box/roms
$ unzip ~/Downloads/roms-5.3.zip
$ mv roms-5.3/* ~/Library/Application\ Support/net.86box.86Box/roms/
When you are doing the VM setup in 86Box, to do the BIOS changes you are told to press DEL or PgUP. On a Mac the keystrokes are:
FN + Delete
FN + up arrow
The VM I installed, called Win98, lives in:
$ l ~/Library/Application\ Support/86Box/Virtual\ Machines/win98/
./ ../ 86box.cfg nvr/ win98.vhd
The video shows copying in a directory full of folders with additional drivers and files.
Here's the one I prepared. Note that you should unzip the 7.0_directx7.zip to create 7.0_directx7.exe before copying to Win98, as it has not got winzip installed to unpack it.
$ ls -1 install/
4.chipset.3.20.1008
5.voodoo3.amigamerlin-win
6.soundblaster16
7.directx
8.benchmarks
9.gamesdemos
There isn't a simple way to mount a .vhd volume on a Mac.
Instead, I did it like this:
1. convert .vhd to .raw
$ qemu-img convert -f vpc -O raw ~/Library/Application\ Support/86Box/Virtual\ Machines/win98/win98.vhd win98.raw
2. mount the .raw volume
$ hdiutil attach -imagekey diskimage-class=CRawDiskImage win98.raw
/dev/disk4 FDisk_partition_scheme
/dev/disk4s1 DOS_FAT_32 /Volumes/NO NAME
3. copy in directory
copy folder with files to /Volumes/NO NAME
4. unmount the .raw volume
$ hdiutil detach /Volumes/NO\ NAME
"disk4" ejected.
5. convert .raw back to .vhd and overwrite your previous volume
$ qemu-img convert -f raw -O vpc win98.raw ~/Library/Application\ Support/86Box/Virtual\ Machines/win98/win98.vhd
6. reboot and now the folder should be under C:\
7. also following the YouTube video, remember to copy off the mounted CD on D: to C:\win98. Then later on when installing some drivers you can tell Windows to find them in c:\win98 rather than needing to mount the virtual CD of the Win98 ISO again.
The Reddit post suggests optimum .cfg file settings for the 86box VM.
I merged them in to the .cfg file path below:
On macOS with 86Box installed via Homebrew, the per-VM config file is:
~/Library/Application Support/86Box/Virtual Machines/[machine_name]/86box.cfg
For your win98 VM, that’s:
~/Library/Application Support/86Box/Virtual Machines/win98/86box.cfg
Other locations:
Global config: ~/Library/Preferences/86Box/86box_global.cfg (VM manager, default VM directory, etc.)
ROMs: ~/Library/Application Support/net.86box.86Box/roms/
That's it! It all works fine.









