Port comparisons (FORGE.md section 14): each pair runs an original game from the test library and its Forge port with the same scripted inputs, on the deterministic clock, and prints TRACE lines; the port passes when the two traces agree. They need the library beside the repo (SINGE_LIBRARY, or ~/claude/singetest) and are not part of the reference sweep. ActionMax: actionMaxOriginal.singe and actionMaxPort.singe, with -v /ActionMax/frame_.txt and PORT_GAME= (38AmbushAlley, BlueThunder, Hydrosub2021, PopsGhostly, SonicFury); the descriptions come from util/forgePortActionMax.py. compare.sh runs a pair and says whether the traces agree: testScripts/ports/compare.sh actionMax 38AmbushAlley Karis: karisOriginal.singe and karisPort.singe, driven by karisDrive.singe, with -v the video the game's games.dat names, PORT_GAME= and PORT_SCRIPT=
; the descriptions come from util/forgePortKaris.lua: testScripts/ports/compare.sh karis TimeGal/Timegal.singe ALG: algOriginal.singe and algPort.singe, driven by algDrive.singe, for the American Laser Games titles of the Hypseus library (Mad Dog McCree, Mad Dog II, Crime Patrol, Drug Wars, The Last Bounty Hunter, Space Pirates, both Who Shot Johnny Rocks, and the typing edition of Mad Dog II), with the title's folder as the game: testScripts/ports/compare.sh alg maddog-hd PORT_FRAMES= sets the run's length in engine frames (15000 by default) and PORT_PERFECT=1 plays without a wrong or a missed shot, to walk the whole game. The views hand the drive each level's shoot window and the first hitbox of the frame (aimed at the overlap with the next frame's box, since a press is judged a frame later), the targets of the games' menus and puzzles, and, for the typing edition, the key the game waits for; the drive shoots, misses on schedule, coins and starts, continues once, and types.