A one-millisecond sleep that rounded every frame late
The game hosts had a common timing habit: each frame asked QNX to sleep for an integer number of milliseconds. A 60 Hz frame is 16,667 microseconds. When a host reached the wait with 1.4 milliseconds remaining, an integer sleep could round that to two milliseconds and spend the next frame's budget before the emulator ran a single instruction.
Run 12 had shown the shape of that cost. Game Boy Advance reached 56 frames per second with no frame overruns, and a regular SNES title reached 58 with 46 overruns. The cores had work left to do, but their timing loop was donating one or two milliseconds whenever the clock fell on the wrong side of a boundary.
Sleep most of it, then wait precisely
The replacement keeps the CPU asleep until one millisecond before the frame deadline, then polls the microsecond clock for the short final guard. It is a small change in each host, yet it moves the deadline calculation out of millisecond rounding without adding a second scheduler or changing the emulator core's notion of time.
Eleven hosts were rebuilt with that pacing loop. Game Boy Advance also moved
to -O3 with the usual frame-pointer and floating-point trade-offs selected
for this target. Neo Geo received a separate speed change: FBNeo's ordinary
68000 path now uses its Cyclone ARM assembly core, with the existing C core
remaining as a fallback for the interface cases that require it.
PICO-8 had been the remaining silent system after CHIP-8 was removed from the shipped catalogue. Its host now renders the cart's sound effects and music at 22,050 Hz, turns the mono frame into stereo pairs, and sends them through the shared sink. That is a build change at this point in the story; the following run supplies the physical audio result.

The unit answered three questions and created one
Then Run 13 ran. Neo Geo completed 3,156 frames in 67.6 seconds with three overruns, including about 14 seconds of ROM load; PICO-8 completed 685 frames in 13.5 seconds with zero overruns and made fourteen sound-effect or music calls; Game Boy Advance completed 732 frames in 15.5 seconds with zero overruns. The elapsed figures include loading, input initialisation, and audio open, so overrun count is the useful pacing measure. The zero and near-zero counts do not establish that each core has unlimited performance, but they do show that the former millisecond rounding penalty stopped deciding these short runs on the head unit, while the distinct 377-overrun Master System result in the same package gave the comparison a control case that the timing change alone could not explain away.
Radio and the volume control returned after every game exit. The second library cycle reached ready at 12,289 milliseconds, essentially holding the 12.6 to 13.2 second return time from the prior run. Pacing changed game-frame timing without adding a browser-load regression.
Master System broke the neat conclusion. It completed 929 frames in 25.8 seconds, with 377 overruns and a measured rate of 36 frames per second. The feature flag for its fast Z80 was enabled. The shipped host still contained the cycle-stepped Z80.
A feature flag can miss the build
The host recipe bypasses Cargo's build.rs and compiles the C core from an
explicit source list for QNX. The feature flag selects the fast Z80 only
inside Cargo's own build script, so it had no way to alter that fixed list.
Both earlier rollout builds had therefore carried the old cega_z80.c and
z80.c sources, with optimisation and better pacing wrapped around the same
slow interpreter, even though the feature declaration made the intended
replacement look present in the normal build configuration.
The correction is deliberately narrow: the recipe now compiles the
instruction-level Z80 sources and asserts that ExecZ80 exists in the linked
image. That host was staged as r29 after Run 13. It was not measured in this
slice, so the post stops at the proven failure and the prepared correction.
The systems scan remains the next browser-load lever. It consumed 10.2 of the 12.289 seconds in the second cycle, while collections took 0.2 and views plus controller setup took 2.0. The pacing work made games behave better; it did not make a filesystem scan disappear.