Validate yaze ROM output against ZScream golden ROMs using ZScreamCLI on macOS. This ensures dungeon, overworld, and graphics saves are compatible with ZScream layout and with Oracle of Secrets / z3dk workflows.
create-test-rom / create-golden-roms.sh.yaze now wires dungeon save into Save ROM (objects, sprites, door marker 0xF0 0xFF, door pointer table) so that File > Save ROM persists dungeon edits. Use ZScreamCLI to confirm output matches expectations.
~/src/hobby/ZScreamCLI or sibling of yaze)libasar.dylib in PATH or next to executable (for ASM/patch commands)Option A – ZScreamCLI only (no Windows):
Uses fixtures under tests/fixtures/input/ (e.g. overworld_empty_maps.json) and writes ROMs to tests/fixtures/golden/. See ZScreamCLI docs/GOLDEN_ROM_QUICK_START.md and docs/PLAN_FOLLOWUPS_2026-01-28.md for base ROM and fixture requirements.
Option B – ZScreamDungeon (Windows/VM):
Open a vanilla ROM in ZScreamDungeon, apply the same edits as your test data, save as e.g. dungeon_simple.sfc in ZScreamCLI/tests/fixtures/golden/.
dungeon_simple.json or as in ZScreamDungeon).From yaze repo (builds yaze if needed, then runs ZScreamCLI):
From ZScreamCLI repo:
Add --json and/or --output=report.json for automation.
| Feature | What is compared |
|---|---|
overworld | Expanded overworld map data, compression, pointers |
entrances | Expanded + starting entrance data |
graphics | GFX pointer and main blocksets |
collision | Custom collision data |
torches | Torch data |
pits | Pit data |
blocks | Block data |
dungeon | Room header/object pointers, door pointers (296×3), message IDs, header data, object sections, sprite region |
all | All of the above |
kSaveDungeonMaps is on), then dungeon editor Save (objects, sprites, door pointers, room headers and message IDs, palettes, torches, pits, blocks, chests, pot items), then overworld, then graphics, then file write.Room::SaveRoomHeader().0xF0 0xFF and the door list; the door pointer table (kDoorPointers) is updated per room so the pointer points to the first byte after the marker (ZScreamDungeon-compatible).SaveAllTorches, SaveAllPits, and SaveAllBlocks run after room saves; torches merge in-memory data with ROM for unloaded rooms; pits and blocks currently preserve existing ROM data.SaveAllChests and SaveAllPotItems write from in-memory rooms, preserving ROM data for rooms not loaded.Use the same golden ROMs and validate-yaze to ensure yaze-produced ROMs keep ZScream layout expectations (door pointers, overworld map count, entrances) so OoS build and z3ed workflows remain valid. ZScreamCLI’s check-oos and extract-* commands can double-check tables and expanded regions.
docs/YAZE_VALIDATION.md, docs/GOLDEN_ROM_QUICK_START.md, README.md