Raising the Bar for IBM PC/XT Emulation: MartyPC

See here for details of the newest latest and most cycle-accurate PC/XT emulator, MartyPC. (Also available in-browser)

Here’s an image from the startling CGA-mode demo, Area 5150:
R7 glitch test: first pass results

MartyPC has a cycle-exact implementation of the 8088 CPU, which has been a holy grail of sorts in PC emulation. Right off the bat, it could boast of running both 8088 MPH and Area 5150 all the way through without hitches.1 Of course, I’m personally somewhat biased when it comes to these two demos, but they’ve become litmus tests for accuracy - and MartyPC is the first to pull it off so admirably.


It took 42 years, but we finally have a decent 4.77 MHz 8088 + CGA emulator. And if you’re into that sort of thing, you can even run it in your web browser.

Here’s the Area 5150 demo, filmed on a real monitor:

Another amazing demo from the makers of 8088MPH. This demo heavily abuses text mode to produce some striking 16 color effects on the CGA.

Edit: announcement and discussion on VOGONS here. Developer blog here. Via


I was wondering why cycle-exact timing would have been particularly challenging for the 8088. Turns out this is more a “historical baggage” and a question of alignment:

See, cycle-accurate emulation had been achieved for a number of other systems (computers and game consoles), but for a long while it wasn’t really on anyone’s radar for the PC. Partly because there wasn’t much incentive: more than any other platform, the PC was always a moving target in terms of hardware. (…)

PC programmers (…) dealt with an evolving set of standards (if they could even be called that), where it was much more typical to tell you to get a new CPU or some more RAM. This kept providing developers with fresh forms of headache, and forced them to err on the side of compatibility. You already had to worry whether the whole thing will run too fast or too slow, keel over when certain graphics or sound hardware wasn’t there, or choke on ‘extended’ vs. ‘expanded’ memory. Getting down to the cycle level - even just spending your time on learning how - would’ve been an excellent way to decimate your user base. And when no software relies on cycle accuracy, emulators have little reason to implement it.

(Raising the Bar for IBM PC/XT Emulation: MartyPC)