Two sessions, unrecorded until now, committed together because their edits share files and cannot be split cleanly after the fact. Session 28 (FINDINGS 60): the container is DLX5 -- every record sector-aligned, 120/120 starting on a boundary where 3/120 did, +0.48% on the wire and zero clocks -- and the ring's release rounds to RECALN so no pad is stranded. Two encoder levers measured and refused: `--spans all` buys +0.19 dB for +67% of the wire, and joint span/lam selection emits byte-identical containers because `lam` never leaves its floor on any of 120 frames. Session 29 (FINDINGS 61): the packed full-frame blit is 27.3% of a 12 fps frame, a channel fills GVRAM in buffer mode off the disc with the CPU halted, and it walks the 1,024 B line stride itself through array chaining. At the 9 clk/B dual-address floor the codec is 110.4% of a frame and a decoder-free packed literal player is 55.2%, at +4.89 dB -- 2.75 dB past a ceiling the codec's scene-wide palette cannot cross. Encoder work is parked; the codec is kept and not built on. check.sh is ALL GREEN before and after, plus one new stage that gates the ORDER of the measured paint costs rather than their values. Claude-Session: https://claude.ai/code/session_01194oWYW8DQXK1SZ2DnChW6
54 lines
2.9 KiB
Bash
Executable File
54 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Build the SCSI VOLUME the P4 rigs read, and the blank card ROM MAME needs to
|
|
# instantiate the card. Sourced-by-calling from tools/bench/scsi_run.sh and
|
|
# tools/bench/pace_run.sh so there is ONE copy of the layout.
|
|
#
|
|
# tools/bench/mkvol.sh [container.dlx]
|
|
#
|
|
# ONE COPY, ON PURPOSE. The volume is tmp/stream_disk.bin -- byte for byte the
|
|
# file the host-file ring rig reads -- laid out as 512 B sectors. If two scripts
|
|
# each built it, a difference between the SCSI rig and the modelled-transport rig
|
|
# could be a difference in what they were reading, and the whole value of running
|
|
# both is that it cannot be. This tree has already paid twice for a transform
|
|
# with two copies of itself (FINDINGS 49.7.5, and check.sh's dlxload note).
|
|
#
|
|
# THE BLANK BOOT ROM is the substitution session 25 argued for and it is
|
|
# unchanged: MAME refuses to instantiate the CZ-6BS1 without an 8 KB
|
|
# `scsiexrom.bin` (CRC 7be488de) that the player never executes, so a zero-filled
|
|
# placeholder goes on a SEPARATE rompath and the user's romset is untouched.
|
|
# MAME prints WRONG CHECKSUMS, as it should. DO NOT reuse this rompath for
|
|
# anything that boots from the card or calls SCSI IOCS -- those DO execute it.
|
|
set -e
|
|
cd "$(dirname "$0")/../.."
|
|
DLX=${1:-tmp/rc_fr_singe_scsi_span.dlx}
|
|
|
|
[ -f tmp/stream_disk.bin ] || python3 tools/bench/prep_stream.py "$DLX" > /dev/null
|
|
if [ ! -f tmp/dlxdisk.chd ] || [ tmp/stream_disk.bin -nt tmp/dlxdisk.chd ]; then
|
|
python3 - <<'PY'
|
|
d = open("tmp/stream_disk.bin", "rb").read()
|
|
n = (len(d) + 511) // 512
|
|
open("tmp/dlxdisk.img", "wb").write(d + b"\0" * (n * 512 - len(d)))
|
|
print(f" disc image: {len(d)} B of records -> {n} sectors")
|
|
PY
|
|
rm -f tmp/dlxdisk.chd
|
|
# -c none IS LOAD-BEARING, and it was found by a gate rather than by taste.
|
|
# Session 28, on the DLX5 volume: with the default (lzma/zlib/huff/flac) MAME
|
|
# 0.277 served the CHD FILE'S OWN BYTES as sector data -- the destination
|
|
# buffer after READ(10) at LBA 0 was byte-for-byte the first 4,096 bytes of
|
|
# dlxdisk.chd, starting "MComprHD" -- while `chdman verify` reported both SHA1s
|
|
# correct. Uncompressed, the identical image reads byte-exact. The trigger is
|
|
# the image's CONTENT: the same 8,768-sector length that works for the DLX4
|
|
# volume fails for the DLX5 one, a conventional 16x63 geometry fails too, and
|
|
# `-c zlib` alone fails as well. The MAME-side cause is NOT diagnosed; what is
|
|
# measured is that compression decides it and uncompressed is sound.
|
|
# Costs 4.5 MB in tmp/ against 1.6 MB. DO NOT restore compression to save the
|
|
# disc space: the failure is SILENT at the transport layer -- every READ(10)
|
|
# reports success and returns the wrong bytes -- and only the byte comparison
|
|
# in tools/bench/scsi.lua catches it.
|
|
chdman createhd -i tmp/dlxdisk.img -o tmp/dlxdisk.chd -ss 512 -c none > /dev/null 2>&1
|
|
fi
|
|
|
|
mkdir -p tmp/p4roms/x68k_cz6bs1
|
|
[ -f tmp/p4roms/x68k_cz6bs1/scsiexrom.bin ] || \
|
|
head -c 8192 /dev/zero > tmp/p4roms/x68k_cz6bs1/scsiexrom.bin
|