Skip to content

About

A measured description of OUT RUN's 1989 MS-DOS port (SEGA arcade 1986; conversion by Unlimited Software Inc.): 110 files, 598,782 bytes. The 85.8% that is compressed .PES/.PCS shapes is decoded to the byte by a two-stage Huffman+run decoder whose grammar was read out of the game's own EXEPACK'd engines.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pc-outrun-doc

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.

The short card

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.

The chapters

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

Method

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.

About

A measured description of OUT RUN's 1989 MS-DOS port (SEGA arcade 1986; conversion by Unlimited Software Inc.): 110 files, 598,782 bytes. The 85.8% that is compressed .PES/.PCS shapes is decoded to the byte by a two-stage Huffman+run decoder whose grammar was read out of the game's own EXEPACK'd engines.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages