Files
thejayman77 ec82764bef Initial commit: retroDE_ps2 — first-of-its-kind PS2 GS FPGA core (DE25-Nano / Agilex 5)
RTL (GS rasterizer, EE core stub, platform bridge, LPDDR4B path), sim regression
(272 TBs), docs, and tooling. Copyrighted PS2 content (BIOS, game code, GS dumps,
and all dump-derived textures/traces) is excluded via .gitignore and stays local.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 20:10:50 -04:00

31 lines
2.0 KiB
Bash

#!/bin/sh
# retroDE_ps2 — Ch340 host gate. No board, no real dump needed (uses content-clean synthetic
# fixtures). Proves: (1) byte-exact container/GIF parse, (2) census classifies supported vs
# unsupported, (3) the translator emits a ps2_feeder scene for supported input that the Ch339
# encoder accepts, and (4) fail-closed on unsupported input.
set -u
HERE="$(cd "$(dirname "$0")" && pwd)"
fail=0
echo "== 1. byte-exact parser test =="
python3 "$HERE/test_gs_parse.py" >/tmp/_gp.txt 2>&1
grep -q "RESULT: PASS" /tmp/_gp.txt && echo " parser byte-exact PASS" || { echo " parser FAIL"; tail -5 /tmp/_gp.txt; fail=1; }
echo "== 2. translator chain on the SUPPORTED fixture =="
python3 "$HERE/gs_make_synthetic.py" >/dev/null 2>&1
python3 "$HERE/gs_translate.py" "$HERE/../captures/gs/synthetic/mini_supported.gs" --scene /tmp/_sup.scene > /tmp/_sup.txt 2>&1
grep -q "census classes : translated=2" /tmp/_sup.txt && echo " census: translated=2 OK" || { echo " census wrong"; grep -a "census classes" /tmp/_sup.txt; fail=1; }
grep -q "EARLIEST SUPPORTED SEGMENT: 2 triangles" /tmp/_sup.txt && echo " earliest segment: 2 tris OK" || { echo " segment wrong"; fail=1; }
gcc -O2 -o /tmp/_psf "$HERE/ps2_feeder.c" 2>/dev/null
if /tmp/_psf --dry-run -f /tmp/_sup.scene >/tmp/_psf.txt 2>&1 && grep -q "tris=2 rects=0" /tmp/_psf.txt; then
echo " ps2_feeder accepts the emitted scene (2 tris) OK"
else echo " ps2_feeder rejected the scene"; tail -3 /tmp/_psf.txt; fail=1; fi
echo "== 3. fail-closed on UNSUPPORTED fixture (mini.gs: textured triangle) =="
python3 "$HERE/gs_translate.py" "$HERE/../captures/gs/synthetic/mini.gs" --scene /tmp/_uns.scene > /tmp/_uns.txt 2>&1
grep -q "NO SUPPORTED SEGMENT" /tmp/_uns.txt && echo " no segment + fail-closed OK" || { echo " should have been unsupported"; grep -a "SEGMENT" /tmp/_uns.txt; fail=1; }
[ ! -f /tmp/_uns.scene ] && echo " no scene file written (fail-closed) OK" || { echo " scene wrongly emitted"; fail=1; }
echo "RESULT: $([ $fail -eq 0 ] && echo PASS || echo FAIL)"
exit $fail