A measured description of one directory: 110 files, 598,782 bytes, holding the MS-DOS conversion of SEGA's OUT RUN (arcade 1986; this port by Unlimited Software Inc., English, 1989). The object is not published here. What is published is what could be counted, decoded, rendered and checked — and this time that meant writing the decompressor first, because the object arrived legible in principle and mute in fact.
| what it is | the DOS port of OUT RUN: a red Testarossa down a branching coast road against the clock, four video modes, five rival cars to overtake — and 85 % of it was compressed sprites nobody here had decoded, opened this session |
| studio | SEGA (arcade original); conversion by Unlimited Software Inc. — PROGRAMMERS: PETE GARDNER with THE OLD KID, GRAPHIC ARTIST: TONY LEE, read out of CREDITS.PES |
| year | 1989 — three ways: DOS build stamps (Feb–May 1989), dated compilers (Turbo-C 1988, MS C 1987), and a © 1989 rendered on the boot screen |
| platform | MS-DOS; CGA/Tandy 4-colour, Tandy 16-colour, EGA/VGA 16-colour, Hercules; two floppies |
| files | 110, one flat directory, 0 subdirectories |
| bytes | 598,782 |
| distinct sha1 | 109 — one pair (HJKA.0OK == SEGA.PES, the SEGA logo twice) |
| DOS-date waves | six layers, 1980 to 2024, build a dense fortnight in Feb–Mar 1989 |
| coverage | specified 37.7371 %, derived 51.2415 %, opaque 11.0214 %, residue 0 |
| the shapes | one two-stage container at two colour depths, 93 members, decoded to the byte, 93 of 93, and rendered for the first time |
| crossings | 0 of 109 hashes over 112 repositories — the fifth zero in a row |
| tools | 587 Python files: 586 inherited (1 changed), 1 written |
The work this time was a decompressor, and the framing it overturned. The
pre-briefing called the shapes RLE and the three MZ-headed files "sprite
sheets". Both were wrong. The container is a canonical Huffman stage feeding
a run stage, and its grammar could not be read off the bytes — it was read
out of the game's own decoder, because the three MZ files are not sprites but
the three EXEPACK'd road engines, one per video mode, a third of the object.
exepack.py unpacked them, dosdis.py read 1,115 bytes of 8086 at 100 %
coverage, and pes.py — the new reader — decodes all 93 shape members to every
size they declare, closing on a shape directory the decoder was never shown.
Out came the game: a Testarossa in forty-four attitudes, five rival cars at six
scales, a course map, a dashboard radio tuned to Passing Breeze, and the
credits that name the porter.
The classifier was repaired on the eager side — the opposite of last
session's blind-side fix. _is(b"MZ") fired on two ASCII bytes; it now reads
the header arithmetic behind them, so the four MZ files pass because they are
programs and a text file beginning "MZ" would not.
Provenance is three layers and only one is the object's: a 1989 build; an
ARC-era distribution argued from the bundled PKARC.COM but not present; and a
modern re-ZIP that added two 2024 high-score files. The 2024 is a player's, not
the game's. There is no witness, and ALBERTO in a 1991 score file is a
player, not one.
Ten, and the count is the object's. Two chapters carry the 85.8 % that is shapes — the three engines that had to be unpacked to read the format, and the decoder itself — because a container whose grammar lives inside an executable takes both to open. One carries the front-end, its assembly checksum protection, and the archiver in the box.
| 01 — OUT RUN: a famous game nobody had looked in the face | what it is, the denominators, and why the classifier was right for the wrong reason |
| 02 — The technical sheet | every figure with the command that makes it again |
| 03 — Three cars that are engines | CORV/CHEVY/BEETLE.PES are EXEPACK executables, not sprites — the game itself |
| 04 — The decoder | two stages, a grammar read out of the engine, 93 of 93 closing |
| 05 — What the shapes show | a Testarossa, the rivals, the coast that forks, the course map |
| 06 — The front-end, the protection, and PKARC | a 17 KB Turbo-C menu, a checksum in assembly, and the archiver that packed it |
| 07 — Two clocks | six DOS-date layers, and the 2024 that is a player's, not the game's |
| 08 — The box | the new reader, the classifier repaired on the eager side, the selftests |
| 09 — Corrections, predictions, calibration | four corrections, six predictions scored (two right, three wrong), +9.00 |
| 10 — What is not measured | the opaque eighth, the road engine, and no witness |
Every figure is reproducible from the repository root with the object beside it;
the commands are in docs/02, and the tool runs
they came from are in notes/. Nothing was executed, installed or emulated:
the three engines were unpacked by reading their bytes as data, and the shape
decoder was written by reading the engine's decompressor as data with a
disassembler — decompression is arithmetic on a byte string, not a program run.
The object, the ZIP, _pre/, _work/, prompt.txt and .claude/ are not
published; README, docs/, notes/, tools/ and .gitignore are.