Dreamcast Factory — actual Lua AppMain host captures

All PNGs are unscaled 240x240 captures of the shipped render.lua drawing calls,
including its own font.lua and art.lua. gameplay-host.gif records the same
scripted fresh-save session. These are desktop host captures, not VMUPro
emulator output, physical hardware screenshots, or performance measurements.

Unprefixed captures: a new factory starts at zero credits, manual assembly
pays for the first robot, the upgrade is purchased, menus are navigated, and
Save and Exit writes and verifies a persistent snapshot.

fixture-* captures: an explicitly constructed advanced factory save starts
one hour earlier. The real application loads it, credits offline income,
opens the launch confirmation, prestiges, purchases all three permanent
research tracks, and saves/exits. The fixture was not earned through a full
playthrough. capture-report.json records page/state and fixture labels.

Reproduce: python3 tests/play.py --replay
Play interactively: python3 tests/play.py
Desktop controls: arrows=D-pad; Z=A; X=B; Enter=MODE.
Desktop saves are isolated in host-saves/. A custom --save-dir is supported.
Closing the window requests Save and Exit. If a write fails, closing again
allows leaving safely with the previous verified save.

Requirements: Python3, Pillow, Lua5.4 shared library; Tk for interactive mode.
No display is required for --replay.
