Tag: emulation

15 posts tagged with "emulation".

Choosing emulator cores by running every game on the card

Five of the head unit's emulator cores came from a microcontroller project. I replaced four of them, chosen by running every game on the card and timing the winners on the car's own Cortex-A9.

Battery saves that survive the emulator

A shared save module restores exact-size battery RAM, writes it only when it changes, and keeps the previous image as a recovery copy.

A one-millisecond sleep that rounded every frame late

Replacing a millisecond sleep with a microsecond deadline removed frame overruns in three hosts. Master System's fast Z80 had never reached the QNX build.

The 92-second return to the game library

The library took 92 seconds to come back after every game. The first plausible fix did nothing; two metadata walks and an eager collection were the cause.

Game audio on a MIB2

Finding the route that puts SNES audio through the dashboard speakers, and the 92-second library load it exposed along the way.

Porting ES-DE to ARM QNX

Cross-compiling the ES-DE frontend for the MIB2 head unit, and what the first native runs got wrong.

Eleven emulators on the head unit

Rusty Nail became a QNX launcher for eleven emulator paths on the MIB2. N64 failed on performance and then on a graphics plugin abort.

NES on the dashboard, and mirroring the screen to the P4

A native NES core reaches nominal cadence on the MIB2, and the factory screen reaches the P4 panel as live video at 54.59 fps.

Speculative execution against the SNES sound chip

The SNES core was losing four million cycles a frame waiting on a sound chip on another board. Predicting the answer lifted Super Mario World from 35 to about 50 fps.

Profiling the SNES core on the H7

The from-scratch SNES core matches the reference emulator to the cycle. Five optimisations measured on hardware, and a profiler that says the problem is memory.

The Amiga gets a mouse and boots Turrican II

Mouse input for the emulated Amiga, then a commercial game whose custom trackloader refused to work until the floppy drive learned to spin.

The emulated Amiga boots Workbench 1.3

The Amiga core on the STM32H753 boots a real Workbench 1.3 floppy to the desktop, and what it took to get the floppy controller right.

Kickstart 1.3 runs under budget on the STM32H753

First hardware numbers for the Amiga core: a real Kickstart 1.3 ROM executing deterministically at a p99 of 2.51M cycles per PAL frame, against a gate of 3.35M.

Mega Drive emulation over an 8 MHz jumper-wire link

A Mega Drive emulator on a 480 MHz Cortex-M7 with perfect music beside a screen that tore in half. The fix was to make a slow frame arrive atomically.

Game Boy first light

Two days from a feasibility study to DMG code on the TV, with the console's SPI video wire carrying two frame geometries at once.