Measurements of Underground (PC, MS-DOS/Windows, Colors Arti Multimediali for Tecniche Nuove Multimedia, 1999) — an eight-player networked game about rats fighting for a sewer in the year 2500, on a CD-ROM that was burned with Nero, not pressed, of which two copies are known and this repository measures one.
Nothing was executed, no network was contacted, and no decoded asset is shipped
with this repository. http://cdrom.tecnet.it/underground, which occurs exactly
once in 141,996,032 bytes, is an artefact and was never opened.
| the object | UNDERGROUND.ISO, 141,996,032 bytes = 69,334 sectors of 2,048 |
| sha1 | 460e81c69869b8fd5a0de92017525ea87a0a2689 |
| filesystem | ISO 9660 + Joliet, volume UNDERGROUND |
| publisher id | TECNICHE NUOVE |
| application id | NERO - BURNING ROM — a burned disc, not a pressing |
| burned | 1999-11-15 11:06:00 GMT+01:00, 134 seconds after its newest file |
| the tree | 148 files, 1 directory, 141,426,916 bytes = 99.5992 % |
| every byte | accounted for, remainder 0, with six controls that fire |
| the game | 94.3230 % — the installer is 0.8268 %, DirectX 7.0 is 4.4477 % |
| the thesis | 61.0193 % of this disc is 24.9167 seconds of rendered film |
| the executable | 474,624 bytes, PE i386, Microsoft linker 5.0, 0.3343 % |
| the network | 57 DPERR_ codes and no DPLAYX import — DirectPlay via COM |
| build paths | 386 occurrences, 26 distinct, all under D:\3d\Maya\ |
| protection | 0 of 11 markers, over 5 MZ files of 148 (3.38 %) |
| crossings | 0 of 143 distinct hashes against 70 repositories |
| the author | not one string, four names in pixels |
One. The biggest file on it cannot be played from it. /INTRO.AVI is
78,345,766 bytes — 55.1746 % of the image — and lasts 12.25 seconds: 800×600
at 12 frames per second in Microsoft Video 1, which is 6,395,573 bytes per
second, 51 Mbit/s, a sustained 41.6× CD-ROM. No drive sold in 1999 could serve
it, and the installer copies it to the hard disk. A twelve-second shot of a rat
in a sewer, at a data rate the medium could not carry, on a disc sold in Italian
newsagents.
Two. The number eight does four jobs here, in six file formats that
cannot see each other: eight factions, eight simultaneous players, eight lower
rooms to conquer, and eight creatures per faction. It is in the readme's
"un massimo di 8 giocatori", in eight letter-pairs of 3D Studio filenames,
eight BARRA_, eight *FUR, eight *HEAD1, eight LIT_, eight BIG_
emblems, eight lines of FAZIONI.TXT, eight entries under FAZIONI / in
MEMORIE.TXT, eight coloured bars on FAZ.BMP and eight chips sampled out of
the main screen. They are the same eight, and MEMORIE.TXT names them:
AZAZEL, BERON, CEZNAH, DREYA, EPATHYA, FI, GEBUREH, HESYOD. The one place
the number is not eight is the save system, where the help text says eight, the
art says six, and six one-byte .SAV files on the disc say who is right.
Three. Ivan Venturi occurs zero times as text, in ASCII and UTF-16,
over every byte of every file. So do Fietta, Baruzzi, Avantaggiato,
Venturi and Colors. And a 371 × 378 bitmap called INTRO_C.BMP, member 121
of 304 inside a 32-megabyte archive with no index of its contents, reads:
Ideato, diretto e prodotto da IVAN VENTURI · Programmazione NATALE FIETTA · Grafica, testi e sonoro IVAN VENTURI · Grafica 2D aggiuntiva TERENZIO AVANTAGGIATO, DANIELE BARUZZI
Four people, none of them a string. And one of the four is the man from whose personal archive this copy came — the disc credits its own donor.
From the Internet Archive record, in the uploader's words: two different copies, a commercial one in ISO from Terenzio Avantaggiato's personal archive and another, possibly a beta, in BIN/CUE from Ivan Venturi's; both authorised publication. Dumped by Antonio Bellotta and Terenzio Avantaggiato, archived by Antonio "exa_starless" Bellotta and Yucali.
This repository measures the commercial ISO. The beta is not in this pipeline, and chapter 18 says what that costs.
| 00 — Predictions | 51 clauses written before the disc was opened, scored 44.0 |
| 01 — The object | what it is, who handed it over, and which denominator |
| 02 — Technical sheet | every row with the command that reproduces it |
| 03 — The volume | two namespaces, 142 case-only differences, one orphan |
| 04 — The sectors | 141,996,032 bytes accounted for, remainder zero |
| 05 — The clocks | one instant written twice, two years of toolchain apart |
| 06 — The movies | 61 % of the disc, and a decoder checked against another |
07 — BANK |
30 % of the disc behind a four-byte magic |
| 08 — The meshes | 36 files, 15,436 triangles, and the map's topology |
| 09 — The eight | one number in four roles, and how the game is built |
| 10 — The executable | 474 KB that speak DirectPlay to a dead address |
| 11 — The installer | 0.83 %, three files 16-bit, a copyright from 1990 |
| 12 — Names crossed | five sets, both directions, every miss inspected |
| 13 — The author | zero strings, four names, one of them the donor |
| 14 — Against the collection | zero shared bytes with anything |
| 15 — Leftovers | 5.6770 %, and six bytes that are save slots |
| 16 — Personal data | two denominators kept apart |
| 17 — Corrections | nine errors in the briefing and ten of my own |
| 18 — What was not done | the gaps, named, with what each would cost |
| 19 — Scorecard | the 51 clauses, scored, wrong ones left standing |
notes/sha1-all.txt— sha1, size, path, for all 148 filesnotes/manifest.tsv— sha1, size, extent, mtime, tz, pathnotes/sha1-iso.txt— the same, asiso9660.pyemits itnotes/bank-2d.txt— 304 members of2D.DATnotes/bank-suoni.txt— 46 members ofSUONI.DATnotes/namecross.txt— the five name sets, crossednotes/crossall.txt— 0 of 143, against 70 repositoriesnotes/rooms.txt— the object names inside the 36 meshes, which are the only description of this game's map that exists
Written for this object: bank.py (the BANK reader, with
--validate before --list), cram.py (a Microsoft Video 1
decoder, 147 of 147 chunks consumed to the byte),
a3ds.py (a 3D Studio chunk reader, 36 of 36 trees closing),
framediff.py (this decoder against another),
isoaccount.py (every byte, remainder zero),
twoclocks.py, locate.py (a count
with an address), namecross.py,
layoutbin.py, manifest.py,
extractcheck.py,
contactsheet.py, strregion.py.
Every one of them has a control that must fail, and --selftest runs it.