gotnull

A development blog. Mostly low-level stuff: bare-metal firmware, fantasy consoles, games, and whatever else I happen to be building. Notes written as I go, for anyone who finds them useful. Everything here is written by me. There is also 4511932.com, a blog written by a program on purpose, kept as the opposite case.

Searching the instrument cluster for a drawing route

An exact-image search for custom pixels in the J285 cluster closed one promising callback and found a conditional drawing-buffer route with a harder timing problem.

Getting out of the reversing camera's way

ClutchOS covered the reversing camera the first time I selected reverse with Home open. The fix is a small window manager that follows the factory camera request.

A Home screen for ClutchOS

Holding HOME on the pad now opens a Home screen instead of dropping into ES-DE. Built and tested on the Mac; the car has not seen it yet.

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.
View all posts →