SRAM telemetry contract
每個 focused AUTOTEST ROM 在完成後,把 magic、schema、pass flag 與 counters 寫到 SRAM,再以測試 SWI 結束。PowerShell host 讀回 little-endian 欄位,任何 golden、budget 或 accounting 不符就讓建置失敗。
這比解析 emulator 畫面或 log 更穩定:ROM 本身知道目前 level position、 event cursor、敵人數、cache miss、music state 與 pending frame。
不是一支超長測試
完整第一關
來源事件、Boss、獎賞、聲音、破關飛行、一次性歌曲、統計與回 Game Menu。
Episode routes
Episode 1 campaign、Episode 2/3/4 routes 與存檔續關案例,驗證 script 轉場、Boss exit 與不同資產 bank。
ROMFS matrix
四個 Episode 共 62 個 playable sections,讀事件、enemy pool、背景與 Sprite2 catalog。
Focused flows
Death、Demo、JukeBox、Arcade equipment、frontend、Next Level camera 與 960 次靜態轉場。
用 accounting 找出「少了什麼」
只檢查 final state 會放過中間偷漏。專案額外要求:
- source events = applied + deferred + skipped;
- spawn attempts = successes + pool full + missing;
- VRAM uploads = cache misses,upload bytes 符合 tile size;
- L2 raw builds = L2 misses,RLE fallback = 0;
- music cue start = 1,natural stop = 1;
- reward/effect/projectile drops = 0。
效能也要有狀態來源
Missed VBlank 分為 gameplay、stats、game over、transition 與 frontend other。v89 LOW 正式版的發佈驗證另固定檢查:
這些數字不是宣稱任何情境永不 drop frame;它們是固定輸入下的 regression baseline。若程式改動讓同一路徑多出 deterministic miss,建置立即失敗。
自動測試仍不能取代視覺 QA
CRC 可證明資產沒變,不能判斷 priority 是否符合人眼預期;event count 也不能判斷字體好不好看。專案同時保留 deterministic screenshot ROM、 pixel comparison 與人工試玩。AI 建議亦必須經這三層證據交叉確認。