28 lines
1.2 KiB
Markdown
28 lines
1.2 KiB
Markdown
# Seed-compatibility golden
|
|
|
|
`item_tables.golden` is the per-seed item appearance tables (potion colors,
|
|
scroll names, ring stones, wand/staff materials) captured from the **C
|
|
reference** on the `modern-rogue` branch, for the seeds in the `seeds` list in
|
|
`TestSeedCompatItemTables`. That test regenerates the same tables from the Go
|
|
port and checks they match byte for byte — proving the LCG and its consumption
|
|
order through the whole init sequence (`init_probs` → `init_player` →
|
|
`init_names` → `init_colors` → `init_stones` → `init_materials`) agree with C.
|
|
|
|
## Regenerating the golden
|
|
|
|
`c_seedcompat.patch` adds a `DUMP` mode to the C `main.c`: with `DUMP` set it
|
|
forces the RNG seed from `SEED`, runs the item-table init in the normal order,
|
|
prints the tables, and exits before `initscr` (so no terminal is needed).
|
|
|
|
```sh
|
|
# from a checkout of the C reference (modern-rogue branch):
|
|
git archive modern-rogue | tar -x -C /tmp/rogue-c
|
|
cd /tmp/rogue-c
|
|
patch -p1 < .../game/testdata/c_seedcompat.patch
|
|
./configure && make
|
|
for s in 1 42 12345 99999; do DUMP=1 SEED=$s ./rogue; done \
|
|
> .../game/testdata/item_tables.golden
|
|
```
|
|
|
|
The seed list must match the `seeds` slice in `TestSeedCompatItemTables`.
|