Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

dc-platformnotes-doc

The canonical Dreamcast platform checklist, to be carried from one documentation pipeline to the next and added to by each.

dc-platform-notes.md

Each Dreamcast title I document will produce two things: a repository about that disc, and whatever it taught me about the format. The second kind of finding does not belong to any one title, and keeping a copy of it in every pipeline is a recipe for three copies that disagree. This repository is the single copy. Pipelines link here rather than fork it.

It covers two discs, and each of them falsified a different important line

This was a scaffold. The CD-i and Amiga CD checklists in this family were written out of their first pipelines; this one was written before its first pipeline, so it had the sections and the questions but none of the measurements.

It has two discs nowSonic Adventure (USA), MK-51000, 1999, and Dino Crisis (Italy), T7019D 13, Capcom, 2000 — and the tally:

[unverified] marks it opened with 21
of which on claims rather than on the procedure 18
converted to [1 of 1] by the first disc 16
corrected in place by the first disc, wrong version left visible 5 (§3, §4, §5, §6, §7)
[1 of 1] promoted to [2 of 2] by the second disc 8
[2 of 2] marks in the document now 16
[0 of 2] — wrong about both discs 1 (§9)
instructions falsified and rewritten by the second disc 1 (§2 point 3)
still [unverified] because untested 2 (§5 load address, §7 renderer)

The first disc falsified section 5. That section used to contain a sentence this document called "the single most important line in this document": that on a retail disc 1ST_READ.BIN is normally scrambled, so descramble before anything else. The first retail disc ever tested against it is not scrambled — entropy 5.5078, 38.46 % zero bytes, Lib Handle Start forty-eight bytes in — and the instruction is now inverted: measure the entropy first, descramble only if the number says to. The second disc confirms not scrambled at 6.9511 and 10.95 %, which is far enough from the first that no single numeric threshold would have covered both — so the inverted instruction survives and any number attached to it would not have.

The second disc falsified section 2 point 3, which after that inversion was the highest-value instruction left in the file: hash the bootstrap and logo region across discs. Two discs, two different hashes — and 99.6893 % of the 32,512 bytes are identical, differing in four patches of 101 bytes: an eight-slot region table indexed by the area-symbol position, one library version stamp, one flag byte, and a pointer that moved because a string moved. The instruction is now diff it, do not hash it. A hash can prove sameness and cannot measure difference, and on this platform the difference is where the platform is.

It also put a [0 of 2] into section 9 for a codec label that is wrong about both discs: stream 0xC0 in a Sofdec film carries CRI ADX, not MPEG audio. That one came in from a tool's own census line and was repeated for a year.

Every claim carries a mark that means one thing: [unverified] is public documentation, not a disc; [1 of 1] and [2 of 2] are that many discs measured it. A mark is never promoted because nothing contradicted it, and the two that stayed [unverified] stayed because neither pipeline disassembled a single SH-4 instruction. And [2 of 2] is not a law: it is a hypothesis with a sample of two, and the third disc's job is to break as many of them as it can.

This platform needs that rule more than the others do. It is the best-documented machine in this collection by a wide margin — homebrew SDKs, emulator sources, twenty-five years of scene notes — and the temptation is to inherit all of it as fact. Inherited fact is exactly what the neighbouring checklists exist to falsify: on Amiga CD, four widely repeated claims about the .TM block turned out to be wrong, and each was wrong because everyone had copied it from everyone rather than opening a disc.

What it covers

A working checklist for opening an unfamiliar Dreamcast disc: what to look at first, what the numbers should be, which traps look likely to cost real time, and — for now — which of it is documentation rather than measurement.

Section
1 The dump is not the disc. GD-ROM's two areas, the high-density base, and what .gdi, .cdi, .chd and a bare .iso each throw away
2 IP.BIN — sixteen sectors in front of the file system, every header field, the checksum, and hashing the bootstrap across discs
3 ISO 9660 on the high-density area: ordinary tools work, which is the convenience and the trap — fix the LBA convention first
4 Censusing the disc, measuring padding rather than estimating it, and the dummy file that makes a capacity figure meaningless
5 1ST_READ.BIN, SH-4 little-endian, and the scramble — descramble first, then prove that you did
6 Middleware fingerprints — CRI's ADX / Sofdec / AFS, Ninja, Kamui, PRS, Windows CE — as counts, before describing any format
7 PowerVR: tile-based deferred rendering, PVRT textures, twiddling and VQ, and proving a geometry when a wrong guess still draws something
8 The AICA — a second program in a second instruction set, uploaded and almost never read — plus ADX, sample banks, and the warning track
9 Sofdec video, chaining a container to validate it, and what fraction of the disc is video
10 Baselines — two rows and seventeen columns, the newest two (Languages, Build stamp span) added by the second disc because the first row asked for them and could not fill them
11 A proposed order of work, thirteen steps, none of them tested
12 The hash lists, and stating which bytes a published hash refers to

Discs it is drawn from

Two. This table fills in one disc at a time, and the full write-up for each lives in the family index: dc-gamelist-doc.

Disc Year What it is
Sonic Adventure (USA) 1999 MK-51000, three-track BIN/CUE, 1,222,515,861 bytes. The scramble is not there. .PRS derived and closed on 843 of 843 — LZ77, not LZ-plus-Huffman. 17,083 textures, 4,197 ADX streams totalling 5 h 46 m, ten MPEG-1 films totalling 5 m 45 s. Two ARM7 sound drivers, 33,408 bytes each, whose copyright banners carry the only human names in the readable 11 %. 2,842 files on one timestamp against seventy-five build stamps inside the binaries. No dummy file: the padding is 3,436 unclaimed zero sectors

| Dino Crisis (Italy) | 2000 | T7019D 13, three-track BIN/CUE, 1,201,166,751 bytes, Capcom, pressed for Italy. The bootstrap block is shared after all — 99.6893 % of 32,512 bytes, in four patches of 101, where two hashes had said otherwise. A third of the high-density track is a hole of 171,491 zero sectors in front of the data, with zero inter-file gap across the 294 files that follow. 276 .DAT opened from the padding string dummy header — 32,361 occurrences on a disc with no DUMMY file — into a load script closing on 265 of 265 and an image container closing on 3,141 of 3,141, every byte of 102,277,632 classified. Italia counts zero because the Italian is painted into 320x240 bitmaps and spoken in a red-book track that is not a file: five blocks, English, French, German, Spanish, Italian. Seven Sofdec films carrying a 0xBF metadata packet with their own authoring minute, which the first disc's ten do not have — and whose audio is ADX, not MPEG, on both discs. 110 names, 108 of them 4-bit palette indices. 867 absolute build paths against the first disc's zero |

The questions this repository was split out to answer

It was split out before it could answer anything, which is unusual here and worth being explicit about. These are what it is for:

  1. How many generations of the IP.BIN bootstrap and logo are there? Two discs in, and the shape of the answer is clear: one block, patched per region and per library version, 99.6893 % identical between a 1999 Sega disc and a 2000 Capcom one. This is the CD-i bumper question transplanted onto a machine that puts a fixed, vendor-supplied block in front of every file system on the platform — and the CD-i method, hashing, is exactly what did not work here. Diff it. The eight-slot region table has six slots nobody has seen filled, and a Japanese disc should fill slot 0.
  2. Is the ARM7 sound driver shared? It is uploaded rather than executed in place, it comes from a small number of sources, and essentially nobody looks at it. If one binary turns up on unrelated titles from unrelated studios, that is a result of exactly the shape of the Amiga CD .TM block.
  3. How much of a typical disc is dummy padding, and did the practice change over a platform that only had three years? Every published "capacity used" figure for this machine is suspect until that question has an answer.
  4. What did the Windows CE titles actually ship? They are a different platform wearing the same case, and the fraction of the library that used them is small enough to enumerate.
  5. Does the header ever lie? Area symbols, peripheral declarations and release dates are assertions made by the build, and all three are checkable against the disc that carries them.

Contributing from a pipeline

When a title turns up something about the format rather than the title:

  1. Add it to the relevant section here rather than to the title's repository.
  2. Convert the mark honestly. [unverified] becomes [1 of 1], [2 of 3] and so on only for claims your disc actually exercised. Everything else stays where it is. Two sessions of postponing a mark turn it into furniture, and a mark promoted without a test is worse than no mark at all.
  3. Cite a disc, not the scene. This platform has an answer available for almost any question, written by someone else, somewhere else. Those answers are leads, not findings, and a lead that enters this document without being re-measured is the failure mode this whole family is built to avoid.
  4. If a finding contradicts what is written, correct the text and say so in place. The neighbouring documents are most useful exactly where a later disc falsified an earlier one.
  5. Update the baseline table in section 10 and the order of work in section 11 — the order of work is a proposal and the first disc has standing to rewrite it — and publish notes/sha1-all.txt for your disc (section 12).
  6. When the preamble's apology is no longer true, delete the preamble.

State what is measured and what is inferred, and keep the measurements in the document. Half of what makes a disc interesting is the list of things that are measurably odd and not yet explained.

About

The canonical Sega Dreamcast platform checklist, to be carried across documentation pipelines: GD-ROM's two areas, IP.BIN in front of the filesystem, the scrambled SH-4 executable, CRI and Sega middleware, PowerVR textures and the ARM7 AICA driver. A scaffold - every claim is marked [unverified] until a disc says otherwise.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors