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.