ec82764bef
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>
51 lines
2.1 KiB
Bash
51 lines
2.1 KiB
Bash
#!/bin/sh
|
|
# retroDE_ps2 — Ch339 host-encoder gate. Compiles ps2_feeder and proves its staging output is
|
|
# BYTE-EQUIVALENT to the golden bake.py fixtures for every representative Ch333-338 scene, then
|
|
# checks that malformed / oversized / out-of-range commands are rejected cleanly. No board needed.
|
|
set -u
|
|
HERE="$(cd "$(dirname "$0")" && pwd)"
|
|
REPO="$(cd "$HERE/.." && pwd)"
|
|
MEM="$REPO/sim/data/top_psmct32_raster_demo"
|
|
BIN="$(mktemp -d)/ps2_feeder"
|
|
fail=0
|
|
|
|
echo "== compile =="
|
|
gcc -O2 -Wall -Werror -o "$BIN" "$HERE/ps2_feeder.c" || { echo "COMPILE FAILED"; exit 1; }
|
|
|
|
echo "== regenerate goldens =="
|
|
python3 "$MEM/bake.py" >/dev/null 2>&1 || { echo "bake.py failed"; exit 1; }
|
|
|
|
echo "== byte-equivalence vs golden .mem =="
|
|
check() { # $1 scene $2 golden.mem
|
|
"$BIN" --dump "$1" > /tmp/_dump.txt 2>/tmp/_err.txt
|
|
tail -n +3 "$MEM/$2" > /tmp/_gold.txt
|
|
if diff /tmp/_dump.txt /tmp/_gold.txt >/dev/null 2>&1; then
|
|
echo " MATCH $1 == $2"
|
|
else
|
|
echo " MISMATCH $1 != $2"; fail=1
|
|
fi
|
|
}
|
|
check color-tri feeder_color_tri.mem
|
|
check native-rect feeder_native_rect.mem
|
|
check gouraud-tri feeder_gouraud_tri.mem
|
|
check accum feeder_accum.mem
|
|
check retrigger-a feeder_scene_a.mem
|
|
check retrigger-b feeder_scene_b.mem
|
|
check zpersist-near feeder_zpersist_near_first.mem
|
|
check zpersist-far feeder_zpersist_far_first.mem
|
|
check zpersist-grad feeder_zpersist_grad.mem
|
|
check sprite feeder_sprite.mem # Ch345a — runtime textured-alpha SPRITE staging
|
|
|
|
echo "== rejection of bad input (each must exit non-zero) =="
|
|
reject() { # $1 label ; rest = file contents on stdin
|
|
cat > /tmp/_sc.txt
|
|
if "$BIN" --dry-run -f /tmp/_sc.txt >/dev/null 2>&1; then echo " NOT-REJECTED $1"; fail=1; else echo " rejected $1"; fi
|
|
}
|
|
yes 'tritile 0 0x5000 255 0 0' | head -28 | reject "oversized (28 tris)"
|
|
printf 'tri 1 2 3\n' | reject "malformed tri"
|
|
printf 'tritile 99 0x5000 255 0 0\n' | reject "tile out of range"
|
|
printf 'bogus 1 2 3\n' | reject "unknown op"
|
|
|
|
echo "RESULT: $([ $fail -eq 0 ] && echo PASS || echo FAIL)"
|
|
exit $fail
|