pax86 - Main Page
What is pax86?
pax86 is the name of my x86 emulator core. The purpose of pax86 is to allow running old DOS games and other x86 processor architecture software on devices that use ARM or MIPS processor architecture. It is available for commercial licensing.
See my blog for latest news about pax86, and see the sections below for more information about pax86.
Here is a video capture of my Asus Nexus 7 Android tablet running Doom in pax86:
Supported platforms
Currently pax86 runs on the following platforms and processor architectures:
CPU architecture | Example Platforms | Example Implementations |
ARMv5 | Nintendo DS | DSx86 |
ARMv6 | Raspberry Pi, Roku 3 | rpix86 |
ARMv7 | Android, iPhone, Windows Phone 8 | Raiden Legacy mobile game by DotEmu |
MIPS32r1 | SuperCard DSTwo | DS2x86 |
MIPS32r2 | GCW Zero | zerox86 |
Features
Here are some feature highlights of pax86:
- Supports Libretro API, so it is easy to call from your device-specific front end. It is also possible to create a proprietary front end for pax86, as was done by DotEmu for their Raiden Legacy mobile game.
- Uses multiple threads (one thread dedicated to CPU emulation, one thread to Sound Blaster emulation, one thread to communicating with the front end UI), so it will run efficiently on contemporary multi-core devices.
- The majority of the code is written in hand-optimized ASM language (with three separate variants: Thumb2 ASM (for Windows Phone 8), ARM ASM (for other ARM platforms), and MIPS ASM). Total Physical Source Lines of Code (SLOC) count is around 100.000, with 90.000 lines written in ASM and 10.000 lines in plain C.
- Is based on a simple interpreter architecture, with no dynamic recompilation. This brings very deterministic performance with a low level of code complexity.
- Runs the emulated software in a virtual IBM PC -compatible environment that has
the following features:
- CPU: 80486 processor, including the protected mode features (for running DOS4GW games) but without virtual memory support (meaning running Windows is not supported).
- Memory: 640KB of low memory, 4MB of EMS memory and 16MB of XMS memory.
- Super-VGA (with VESA BIOS Extensions) graphics, with a maximum resolution of 640x480 with 256 colors.
- SoundBlaster 2.0 (including AdLib-compatible FM sounds) sound card.
- Full 102-key PC keyboard
- Two-button mouse
- Joystick
Performance
The following table lists the Doom timedemo test results on various platforms. Please note that these results also count the platform-specific front end code (drawing the emulated game screen on the device display, playing audio using the device features, etc) which are not part of the actual pax86 emulation core available for licensing.
real tics | avg fps | SoC/CPU Type | Device | Corresponding x86 CPU speed |
2660 | 28.1 | ARMv7 (Tegra 3 @ 1.3 Ghz) | Nexus 7 Tablet | 80486 @ 100MHz |
5387 | 13.8 | ARMv7 (Snapdragon S3 @ 1 Ghz) | Nokia Lumia 520 | 80486 @ 50MHz |
6451 | 11.6 | MIPS32r2 @ 1 Ghz | GCWZero | 80486 @ 40MHz |
14352 | 5.1 | MIPS32r1 @ 396MHz | DSTwo | 80386 @ 33MHz |
24112 | 3.1 | ARMv6 @ 700MHz | Raspberry Pi | 80386 @ 20MHz |
Licensing
pax86 is available for non-exclusive worldwide commercial licensing. Licensing pax86 allows you to re-release your legacy DOS software on contemporary devices with very little porting work. Contact me for licensing details. To avoid spam I don't have a mailto link in here, instead I give you this hint: My email address is simply my first name at my domain name. Domain name meaning "patrickaalto.com".