A measurement of one GD-ROM. Sonic Adventure, Sega Dreamcast, 1999,
MK-51000, area U — the first Dreamcast disc in this collection, and the
first to test the twenty-one [unverified] claims that
dc-platformnotes-doc was
built out of.
No disc image and no game asset is in this repository. Only measurements, and the code that reproduces them.
| The object | a three-track BIN/CUE dump, four files, 1,222,515,861 bytes |
| Tracks | MODE1/2352 14,564 · AUDIO 1,063 · MODE1/2352 504,150 — remainder 0 on 3 of 3 |
| Areas | low density from LBA 0, high density from LBA 45,000 |
| Denominator | 1,051,494,320 bytes of declared files — the other two are 1,222,515,861 and 1,064,826,448, a spread of 16.26 %, and docs/01 says why this one |
| Files | 2,826 + 16 = 2,842 declared — and at least 22,987 addressable things once the archives are opened |
| Integrity | EDC, both ECC parities, sync and mode byte correct on 518,714 data sectors of 518,714 |
| Executable | 1ST_READ.BIN, 6,751,168 bytes, not scrambled — entropy 5.5078, 38.46 % zero bytes |
| Middleware | CRI ADX / Sofdec / AFS = 74.02 % of the file bytes; data preparer CRI CD CRAFT VER.2.30 |
| Audio | 4,197 ADX streams, 5 h 46 m 07.72 s |
| Video | 10 MPEG-1 program streams, 10,346 frames, 5 m 44.98 s |
| Textures | 17,083 — 442 loose .PVR and 16,641 inside 582 PVMH archives |
| Padding | 3,436 unclaimed sectors, all zero, no dummy file |
| Dates | 2,842 files on one instant; 75 build stamps inside the binaries, 1998-06-23 → 1999-08-02 |
| The thesis | 79.0009 % of the file bytes are a recording of something |
1. The executable is not scrambled, and the checklist called that its single
most important line. Entropy 5.5078 bits per byte, 38.46 % zero bytes, and the
string Lib Handle Start forty-eight bytes in. The instruction is now inverted:
measure the entropy first. — docs/09
2. .PRS is LZ77 and there is no Huffman stage. The whole format was
decidable from two bytes printed in a head census — 0xff is eight literals,
0x3f is six — and it closes on 843 of 843 files with the input consumed
exactly. — docs/04
3. The 45,000 base is written into the CD sector headers, independently of
the filesystem, on 504,150 sectors of 504,150 — and the packed-BCD minutes field
runs out at 99:59:74 and keeps counting into a, b, c on 99,300 of them, so
a validator that requires BCD reports a hundred thousand corrupt sectors on a
perfect dump. — docs/03
4. There are two ARM7 sound drivers, not one, 33,408 bytes each, eleven days
apart, and their copyright banners carry the only human names in the readable
eleven per cent of a 1.2 GB disc. — docs/08
5. Sonic Team counts zero and SONIC TEAM counts one. Behind the
compressor, in SUMMARY.PRS, are 244 distinct names in plain ASCII. Three
casings out of four is not a search. — docs/13
| 00 — Predictions | 49 clauses written before anything was opened, scored at the end, wrong ones left standing |
| 01 — The object | what the dump is, which of three denominators, and what the form keeps and loses |
| 02 — Technical sheet | every figure with the command that makes it again, and an Engine section |
| 03 — The two areas | a base asserted three times, IP.BIN, a checksum that verifies, and a tool that reported zero files without failing |
| 04 — The compressor | .PRS derived from two bytes, 843 of 843, and a checklist claim corrected |
| 05 — The pictures | 17,083 textures, geometry closing 414 of 414, and five languages on an American disc |
| 06 — The sound | AFS, ADX, big-endian inside little-endian, 4,196 of 4,197, and the one that is cut short |
| 07 — The films | ten MPEG-1 streams, an independent decoder agreeing on the frame count, and why two are 320×448 |
| 08 — The second machine | two ARM7 programs, the only names on the readable disc, and banks crossed by structure |
| 09 — The executables | the scramble that is not there, NEC's debugger in the retail build, and 75 build stamps |
| 10 — Two platforms inside this one | it is a web browser, not a website; 698 of 701 images named by no page; thirteen Windows wallpapers |
| 11 — The clocks | one instant on 2,842 files, and fourteen months inside the binaries |
| 12 — The gigabyte | the thesis, two figures, never added |
| 13 — The author | 244 names, and the count that was zero because of a capital letter |
| 14 — Against the collection | zero crossings on 72 repositories, and five optical families compared at source |
| 15 — Leftovers | 19.69 % of the raw dump, and none of it is a file |
| 16 — Personal data | 246 names, all published by their owners, and nowhere on this object to save anything |
| 17 — Corrections | eight in the briefing, eleven of mine |
| 18 — What was not done | the declared gaps, and the seven questions a second disc answers in ten seconds |
| 19 — Scorecard | the 49 clauses scored, in two totals that are never added |
Six of them did not exist this morning:
| tool | what it does | closes on |
|---|---|---|
tools/prs.py |
the .PRS decompressor, LZ77 with an 8-bit LSB-first control word |
843 of 843, input consumed exactly |
tools/pvm.py |
the PVMH texture archive behind 582 of them |
582 of 582 chained, count matched, 16,641 textures |
tools/pvr.py |
PVRT decoder — twiddled, VQ, three 16-bit pixel formats — and a contact sheet |
442 of 442; geometry 414 of 414 where a rule is stated |
tools/afs.py |
the CRI AFS archive reader |
2 of 2, remainder zero, 4,088 members |
tools/adx.py |
the CRI ADX header, the self-describing footer, and a decoder to WAV |
4,196 of 4,197 |
tools/sfd.py |
the MPEG-1 program stream walker and frame counter | 10 of 10 to the end code, no unparsable byte |
tools/webcross.py |
the browser's pages crossed against the filesystem | 154 attribute values, all published |
and one was fixed:
tools/iso9660.py |
gained --lba-base, and a control that raises when a non-empty root directory record yields no entries. It used to print files : 0 with exit status 0 on this image. |
|---|
notes/sha1-all.txt and three companions — 2,826 high-density files with their
absolute LBAs, 16 low-density files, and 4,088 .AFS members, because a
file-level list of this disc has 2,842 rows and the disc holds at least 22,987
addressable things.
The three that matter most are the ones one disc cannot interpret:
ecc407cacf78c18d9bc85da896c172edfb1a0d58 32,512 IP.BIN bootstrap and logo
0fbfde20b242982862a011ba8ed8031e2c6f24a4 2,500,176 the low-density warning track
e7b98073ce7f9fb33236f727e418cd9aab95d0b1 131,104 0GDTEX.PVR
Whether any of them is a vendor asset pressed verbatim on unrelated discs is the highest-value open question on this platform, and it is unanswerable without a second disc. The first disc's job is to leave them where the second can find them.
python tools/mode1.py "Sonic Adventure (USA) (Track 3).bin" --cook _work/track3.iso
python tools/iso9660.py _work/track3.iso --tree --lba-base 45000
python tools/prs.py --validate _work/hd
python tools/adx.py --census _work/hd
python tools/sfd.py --census _work/hd/SONICADV
The dump itself is not in this repository and is not distributed by it.