Retro PC Emulation with 86Box (600MHz PII?!)


86Box emulates an outdated PC on the {hardware} stage. CPU timing, chipset behaviour, ISA and PCI buses, graphics chipsets, sound units, and disk controllers all matter to getting interval software program to behave correctly. That doesn’t assure similar efficiency to the unique {hardware}, because the Cinebench outcomes beneath illustrate. Frankly the venture is fascinating and the hassle has me in awe, however that accuracy is dear, and virtually the entire value lands on a single host thread.

The sensible consequence is sort of easy in that core depend barely issues right here. What actually issues is how briskly one core can run, and the way lengthy it could possibly maintain that velocity with out throttling. Luckily for the Mac Mini right here that is precisely the place Apple Silicon has been strongest, and the place the M6 shines.

A little bit overclock… the M6 operating a 650MHz Pentium II in my customized 86Box 6.0 construct, with Cinebench 2000 and Winamp. One or two audio underruns saved 650MHz from passing, so 600MHz stays the steady consequence.

Every 86Box take a look at makes use of the identical machine configurations, the identical disk photographs and emulated {hardware}. The comparability set is:

  • Mac Mini M6 (12-core CPU, 24GB, this evaluation unit)
  • Mac Mini M4 (base 10-core CPU, 16GB)

Testing was utilizing a barely modified construct of 86Box 6.0, launched on May 31, 2026. The group improved CPU emulation efficiency on ARM hosts and added an ARM64 just-in-time recompiler for Voodoo graphics. That second change is especially related right here, for the reason that Windows 98 machine is operating an emulated Voodoo 3. Some credit score definitely belongs to the software program, Apple Silicon has quick cores, however 86Box can also be getting higher at utilizing them.

I’ve not measured the uplift from an older 86Box model, given it is a evaluation of the M6 and never 86Box.

86Box stories an efficient emulation velocity as a proportion of its goal velocity. 100% means the host is protecting tempo with the emulator’s timing mannequin, so something much less is a real drawback. It doesn’t assure {that a} benchmark will rating precisely as it might on a bodily CPU on the identical clock.

Consistency additionally issues greater than the common right here. Even transient dips produce audible artefacts as a result of sound {hardware} is fed in actual time and starved buffers are heard as transient dropouts that are irritating. Basically any 86box setup that frequently dips beneath 100% is not going to really feel proper, and having ample headroom on the system to comfortably emulate the goal velocity shall be a way more steady expertise.

The result’s that turns every host machine right into a ceiling quite than a rating, and for any given emulated configuration there’s a most CPU clock the host can maintain at a flat 100%. Because virtually all of that work falls on one thread, single-threaded efficiency strikes this ceiling considerably, which is the entire motive the M6 is fascinating for this.

To discover the ceiling, I made a customized construct from the identical commit because the 6.0 launch (construct 9001), extending the frequency tables in 50MHz steps as much as 800MHz. The Deschutes frequency table patch is accessible if you wish to attempt it your self in opposition to that tagged launch. It provides 500–800MHz entries with reminiscence and cache timings scaled to retain roughly the identical entry latencies, and retains the AT bus at 8.33MHz. The emulation code is in any other case unchanged. Both Macs used this construct for the prolonged assessments.

Some would possibly argue a Pentium II at these speeds shouldn’t be period applicable. I argue it’s just a bit overclock!

The emulated machine is in any other case fastened throughout each run:

  • Slot 1 motherboard with Pentium II (Deschutes), clock diverse per run
  • 256MB of reminiscence
  • Voodoo 3 emulated VGA with 16MB of video reminiscence (2 threads)
  • Windows 98 SE

86Box CPU configuration for the emulated Pentium II machine
86Box CPU configuration for the emulated Pentium II machine

The load is intentionally just a little awkward, Cinebench 2000 operating its CPU take a look at whereas Winamp 2.76 performs a 16-bit 44,100Hz PCM WAV within the background. The audio is a little bit of an achor as it is a real-time shopper of the emulated {hardware}, so any second it falls behind is instantly audible.

The go situation is in the end subjective however strict. If I hear a dropout, or the reported emulation velocity falls beneath 100% at any level, the run fails.

The base M4 Mac Mini holds 500MHz, with each Macs extraordinarily steady all through the complete Cinebench 2000 and 3DMark 2000 SE runs at that velocity. At 550MHz, the M4 begins to hitch. They are slight interruptions in Cinebench, however extra noticeable through the 3DMark demo, and sufficient to fail the run.

The M6 passes 550MHz and 600MHz, which is unimaginable. At 600MHz it held a flat 100% by each Cinebench 2000 runs and the 3DMark 2000 SE demo, the latter giving it 7–8 minutes of uninterrupted testing. That makes the very best passing clock 20% larger than the M4’s on this setup.

The CB2000 scores, for anybody who cares:

Cinebench 2000 by emulated Pentium II clock

Emulated clock Cinebench 2000 M6 M4
300MHz 4.62 CB Pass Pass
350MHz 5.34 CB Pass Pass
400MHz 6.16 CB Pass Pass
450MHz 7.02 CB Pass Pass
500MHz 7.73 CB Pass Pass
550MHz 8.54 CB Pass Fail
600MHz 9.28 CB Pass Fail
650MHz 10.08 CB Fail Fail

One run per clock on the customized 86Box 6.0 construct. A go requires a flat 100% emulation velocity with no audible dropouts for the entire run. Hover a consequence for the element.

Those scores describe the emulated CPU at every clock. A accomplished render shouldn’t be sufficient to go, the ten.08 CB consequence at 650MHz got here with one or two audible underruns. In actuality, I believe I could also be being too agency on that run, and background exercise may have precipitated the hitches. But staying true to the methodology, 600MHz is the consequence and leaves a lick of headroom. The 800MHz possibility is there to increase the take a look at vary however clearly not a velocity both Mac can maintain.

There is an fascinating wrinkle when evaluating these scores with actual {hardware}. An Ars Technica forum thread collecting Cinebench 2000 results contains the next user-reported figures:

Period {hardware}, user-reported Cinebench 2000 scores

Period {hardware} Cinebench 2000
Pentium II 300MHz 2.38
Pentium II 450MHz 4.35
Celeron 800MHz 7.52
Celeron 533MHz overclocked to 760MHz (95 x 8) 8.03
Pentium III Coppermine 800MHz 9.25
Athlon Classic 600MHz 7.66

User-reported outcomes from the Ars Technica Cinebench 2000 thread. Different programs, reminiscence and working programs, so interval context quite than a managed comparability.

Our emulated 450MHz Pentium II scores 7.02 CB, about 61% larger than that bodily PII 450MHz consequence. At 300MHz the hole is bigger nonetheless, with 4.62 CB in opposition to 2.38 CB. Bizarrely, our 600MHz results of 9.28 CB lands virtually precisely alongside that 800MHz Coppermine. These are particular person discussion board submissions from completely different programs, so they supply interval context quite than a managed comparability, however the discrepancy is substantial. It’s additionally value a point out this benchmark model could be very outdated and lengthy earlier than it turned the favored benchmark it’s right now.

I don’t but know why, it is attainable reminiscence bandwidth and cache timing throughout the emulated machine may need one thing to do with it. There is a few related historical past in 86Box’s v3.0 release notes, which clarify that P6 emulation was not totally correct due to the complexity of out-of-order execution and L2 cache behaviour. Deschutes timings have been tuned to get fairly near actual {hardware}. But yeah, unsure.

The discrepancy is already current at 300MHz and 450MHz, beneath the entries added by my patch. For this evaluation, 600MHz stays the very best passing setting on this 86Box configuration, with a 20% larger steady clock than the M4. The CB2000 scores are helpful for exhibiting how that configuration scales, however I’d not use them to say equal efficiency throughout software program on an actual Pentium II or Pentium III.

Even the M4’s 500MHz is exceptional alongside the overclocked 9950X3D demonstration I used to be utilizing for context. I should not have a matched x86 run on this practice construct, however the base M4 was already a way more succesful retro machine than the unique 450MHz restrict let me set up.

The video beneath is from the sooner 450MHz run on the M6, the place OBS was additionally compositing and encoding 720p30 H.264. It paperwork that run, quite than the brand new 600MHz consequence.

3DMark 2000 SE operating below 86Box on the Mac Mini M6, emulating a 450MHz Pentium II with a Voodoo 3. Emulation velocity holds at 100% whereas OBS encodes the seize.

86Box parks the work on two ‘tremendous’ cores, seen as cpu6 and cpu7, with the remainder of the bundle largely idle. On the M6 these two cores common about 4,483MHz through the 450MHz Cinebench 2000 run and about 4,710MHz through the 600MHz run, peaking at 4,788MHz. Core exercise climbs with the emulated clock too, from roughly 41% on every busy core at 450MHz to 45 to 49% at 600MHz, so there’s nonetheless actual headroom left on the highest passing clock. Whole bundle utilization by no means passes 26%.

The M4 operating the identical configuration retains its busy cores nearer to 3.7GHz, and that hole is probably going many of the motive it stops at 500MHz.

86Box: Pentium II host telemetry