Files
psxrecomp/tools/cycle_testrom/game.toml
T
Shokunin bfc4056fdc cycle_testrom: build ruler #2 on current master and without mkpsxiso
Ruler #2 no longer built from master:
- game.toml's text_size 0x800 is now rejected by the EXE parser ("a
  truncated text_size must be 4 KiB page-aligned"). Use 0x2000, the
  page-rounded size of the 0x1800-byte text. The icache_miss victim block
  at +0x1000 is now inside the analysed range and compiled too.
- psxrecomp-game writes the text as shards (<exe>_full_NN.c), but
  CMakeLists.txt still named a single <exe>_full.c. Glob the shards and
  fail with the regeneration hint when there are none.

Add mkdisc.py, a pure-Python stand-in for mkpsxiso (Windows-only here):
it writes the ISO9660 boot disc as MODE2/2352 sectors with a correct
EDC/ECC and copies the license area from a disc the developer owns. The
built image stays gitignored.

README: the macOS/Linux flow (headless on both backends), and why
icache_miss reads +16 on the current ROM but +14 in the 2026-06-27 log:
the mmio loops moved the loop top from word 1 to word 0 of its cache
line, so each of its two misses refills one more word. Records the
Beetle values re-measured on macOS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 10:59:31 -07:00

22 lines
748 B
TOML

# Cycle-isolation micro-benchmark test ROM — ruler #2 (in-tree).
# Paths are relative to the psxrecomp worktree root (find_project_root walks up
# to it). Generated EXE: gen_testrom.py. Recompiled by psxrecomp-game for the
# native cost-model side; sideloaded raw into Beetle for the HW-oracle side.
[game]
name = "CycleTestROM"
id = "CYCT-00101"
exe = "cycle_testrom.exe"
disc = "disc/cyctest.cue" # synthetic licensed disc (gen via tools/mkpsxiso)
load_address = "0x80010000"
entry_pc = "0x80010000"
text_size = "0x00002000" # whole 0x1800-byte text, page-rounded (the parser rejects an unaligned truncation)
[recompiler]
seeds = "seeds.txt"
out_dir = "generated"
strict = true
[runtime]
debug_port = 4600
window_title = "Cycle Test ROM"