Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

3do-platformnotes-doc

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

3do-platform-notes.md

Each 3DO title I document produces 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 three discs

Crash 'n Burn Crystal Dynamics, 4 October 1993, a launch title sold with the console
Super Street Fighter II Turbo Capcom, late 1994, an arcade port
Wolfenstein 3D Logicware / Interplay, 1995, a port of a 1992 PC game

They were chosen to be as unlike each other as possible: three studios that never spoke, twenty-seven months and two SDK revisions apart, 92.33 %, 45.56 % and 17.03 % of a 74-minute CD, and 0.32 %, 86.25 % and 59.79 % recorded sound.

Every claim carries a mark. [3 of 3] is measured on all three, independently, with the measurements in the text. [1 of 3] and [2 of 3] mean it was measured more than once and differed — those are the most useful lines in the document. [corrected] leaves the wrong version visible beside the right one, and [deleted] means a disc showed a claim was never true of this platform.

Nothing is promoted because nothing contradicted it. Twelve claims went to [3 of 3] and thirty-eight stayed at [2 of 2] because the third disc did not exercise them.

What the third disc changed

Six claims marked [2 of 2] were wrong, and every one of them had gone uncontradicted for fourteen months:

  • block_count is not a multiple of 2,048 blocks. It is a whole number of mebibytes — 600, 296, 110 — which in blocks is a multiple of 1,024. Two even multiples of 4 MiB had been mistaken for a rule. §2;
  • the relocation branch points at ro + rw + debug, not ro + rw. The first two discs shipped debug size 0 on all 127 of their images, so the two sums were the same number. 164 of 164 across three discs. §5;
  • compression is not decided by a size relation. The BL at offset 0 is the test; the declared sizes are below the stored size on eleven of the third disc's twenty compressed images, which no decompressor can do. Replaced by two structural tests that separate the populations with no overlap on 37 of 37. §5;
  • @(#) is not zero. It counts 2, in the game's own binary, in SCCS what-strings from the SDK's audio library. The first two discs simply did not link it. §5;
  • the four junk files are not byte-identical across discs. The 1993 disc's hold 0x0a and the later ones 0x0d. A claim of byte-identity that was never checked with a hash. §4;
  • and the worst one: Cinepak was deleted on a search that could not have found it. CVID is zero on all three discs; the compression field says cvid, in lower case, and the third disc has 550 frames of it. §9.

And one explanation was deleted rather than rewritten. The second disc's seven consecutive root copies were explained by the builder puts them in whatever free space exists and this disc has one region. The third disc has one region and splits them 6 + 1. §3.

What the third disc added

§9 went from [deleted] to a derived format. The Data Streamer exists, its container is id + length chaining like everything else on the platform, its SHDR declares a block size the files are exact multiples of, its timestamps make it interleaved, and the stream clock runs at 240 ticks per second — so the two films on that disc run at exactly 10 and 12 frames per second, which nothing on the disc declares.

The banner screen is answered, after two discs of not found. Its magic is APPSCRN, its format is derived, one disc of three has one, it is the SDK's untouched placeholder reading FICTIONAL DEVELOPER presents BOGUS TITLE, and the other two discs have zero occurrences of the magic over 1.08 gigabytes.

/rom_tags is derived: a table of 32-byte records, 3, 4 and 6 of them across the three discs, with the signing pass patching exactly one word per record. And one of those records is a date — three values, monotone in press order, all three landing in 1993–1995 under a 1904 epoch, with the first twenty-five days before its disc's documented release. §4.

A third answer to what are the graphics in. IMAG, then CCB , then neither: the third disc's art is in an archive format the platform does not define, holding cels with sixteen of their twenty control-block fields thrown away. §7.

What is still open

Nine questions, of which three are new. The oldest is burst and gap — 1 and 0 on 1,107 directory entries across three SDKs, including on 11.6 megabytes of a container whose entire purpose is interleaving. The case that should have exercised them has now arrived twice and did not.

bin/

chdman.exe and its DLLs, for extracting a CHD to a .cue and a .bin. The notes tell you to read the CHD header by hand first anyway; it is fifteen lines and it gives the track count with no intermediary.

About

The canonical 3DO platform checklist, to be carried across documentation pipelines: the Opera filesystem at sector 0 (not ISO 9660), ARM6 big-endian code behind LaunchMe, CELs and Cel Control Blocks, SDX2 audio and the Data Streamer. A scaffold - every claim is marked [unverified] until a disc says otherwise.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors