Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dc-sonicadventure-doc

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

The five things this disc said that its platform's documentation did not

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

The chapters

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

The tools

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.

The hash lists

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.

Reproducing

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.

About

Sonic Adventure (Dreamcast, 1999, MK-51000) measured from a three-track BIN/CUE GD-ROM: 1ST_READ.BIN is not scrambled, .PRS is LZ77 with no Huffman and closes on 843/843, 17,083 textures, 4,197 ADX streams totalling 5h46m, two ARM7 sound drivers, 244 credited names behind the compressor.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages