ONYX

A 486 PC emulator that runs DOS games as they ran on the machines they were made for, from the text adventures of the early eighties to Doom and Quake. Onyx boots a real copy of FreeDOS on its own BIOS, so games find a genuine DOS, with its drivers and CD-ROM extensions, and run unmodified.

Its CPU translates each block of x86 code once into compact instructions of its own and reuses them every time that code runs again, which makes it fast enough to run a 133 MHz 486 inside a web browser, as the demo on this page does. The clock is a setting, from the 4.77 MHz of the original IBM PC up to 2.4 GHz, so a game can run at the speed it was written for or far faster than any real 486 could manage.

Real, protected and virtual-8086 modes, paging and the x87 FPU are all there, so DOS extenders such as DOS/4GW work through DPMI. Graphics cover text mode, CGA, EGA, VGA Mode 13h, unchained Mode X, and VESA SVGA with a linear framebuffer.

Sound comes from a Sound Blaster 16 with OPL3 FM synthesis, plus the PC speaker, CD audio, and General MIDI through an MPU-401 interface. The MIDI synth handles all sixteen channels, including percussion, program and bank changes, pitch bend, and the General MIDI controllers (volume, pan, expression, sustain, mod wheel, reverb and chorus). Its state is included in save states, so after loading one the music carries on with the right instruments. Each sound source has its own volume control.

Memory managers are built in: LIM EMS 4.0 expanded memory with an 8 MB pool, and XMS 2.0 extended memory with the high memory area for DOS=HIGH and upper memory blocks for loading drivers and TSRs high. There is also a Microsoft-compatible mouse, a game port for two joysticks, and an ISO 9660 CD-ROM driver for MSCDEX, and you can mount a folder from your computer as a drive in DOS. Save states capture the whole PC, and the disk images you load are never modified: whatever a game writes to them is kept in the save state instead.

Available on Windows, Linux, macOS, Android, iOS, and WebAssembly. Onyx is written in plain, portable C11 with no unusual dependencies, so porting it to game consoles is straightforward. Contact us if you are interested.

Retro City Skyline

Onyx in Action

Unmodified commercial games running on Onyx.

Doom running on Onyx
Doom © 1993 id Software
Indiana Jones and the Fate of Atlantis running on Onyx
Indiana Jones and the Fate of Atlantis © 1992 LucasArts Entertainment Company
Prince of Persia running on Onyx
Prince of Persia © 1990 Broderbund Software
Quake running on Onyx
Quake © 1996 id Software

Onyx Options

Third-Party Software