A measured description of one folder: 57 files, 743,759 bytes, 0
subdirectories, copied from the owner's drive as a 1992 download directory
holding BUMPY'S ARCADE FANTASY (MS-DOS; BUMPY (C) LORICIEL 1992
printed by its own program and painted with the studio's panther on its
presentation screen) — a French bouncing-ball arcade in nine levels of
fifteen or twelve platforms, wrapped in a Fairlight release of 18 July 1992
with its NFO, the NFO's blank form, a BBS advert, an anti-virus receipt,
a 2-byte disk key and three empty files that spell a board. The program is
not packed and says almost nothing; every picture and every level sits
behind a 12-byte head whose length is big-endian on a PC, and two level
files were left in the clear as the key. The object is not published.
What is published is what could be counted, read out of the loader,
unpacked, rendered and checked — all of it from the object's own bytes,
none of it from outside.
| what it is | a platform arcade of a red ball with eyes and blue gloves, bouncing across screens of platforms — bars, springs, spiked bars, broken ones — collecting fruit and gifts among monsters; nine worlds (teddy bears and balloons, hedgehogs in sunglasses …), each a map of rings joined by paths, each a .BUM/.DEC/.PAV triple of 15 or 12 platforms on 8 × 6 grids; a password per level and a copy protection that asks for a platform number from the manual — cracked in two bytes |
| title | BUMPY'S ARCADE FANTASY — painted with the apostrophe on TITRE.VEC and BUMPRESE.VEC; BUMPY in the program's two menus and its file names; Fairlight typed BUMPY ARCADE FANTASY |
| studio | Loriciel — BUMPY (C) LORICIEL 1992 at 1684Ch and 17DF0h of BUMPY.EXE, the video and sound menus; the panther and the word LORICIEL painted on the presentation screen; Fairlight's Loreciel is a misspelling. The people, painted on the last screen: auteur JF Streife, programmation F Spada, M Winogradoff, musique C Perrotin, graphisme I Maury, P Jarry, and R.D |
| year | 1992 — the copyright line in the program, twice; the release 1992-07-18 by its NFO; twelve files dated June–July 1992; seventeen dated 1987-04-22 by a clock, twenty-four by a broken one (2052, 2055) |
| language | French — the installer (Insérez la disquette, Bon amusement), the joystick errors (Erreur dans TstJoy), the file names (MONDE, TITRE, DESSFIN, FLECHE, BUMSPJEU), the credits (AUTEUR, GRAPHISME); the game's own texts English (ENTER YOUR PASSWORD, HALL OF FAME, EASY / MEDIUM / HARD) |
| platform | IBM PC, 8086 code, Turbo C++ 1990; CGA/EGA/VGA/Tandy/MCGA/VGA256 offered, EGA and VGA in BIOS mode 0Dh 320 × 200 × 16; Ad Lib (OPL2 at 388h) and MT-32 (MPU-401 at 330h); joystick (201h) and mouse (int 33h); two floppies, a and b, or a hard disk with QUELDISK = z |
| files | 57: 14 .VEC screens, 9 × .BUM/.DEC/.PAV levels, 2 sprite banks, 1 font, 1 MIDI, 1 Ad Lib bank, 1 program, 2 batches, 2 NFOs, 1 TheDraw .COM, 1 CPAV checklist, QUELDISK, 3 empty |
| bytes | 743,759 — behind the 12-byte head 443,827 (59.67 %, 38 files → 812,935 unpacked), program 112,704, sprites 91,304, MIDI 35,141, SCORE.VEC 32,099, release 14,209, bank 6,748, the two plaintext levels 5,242, font 1,981, installer and QUELDISK 504 |
| distinct sha1 | 55 — the empty file three times |
| the head | u32 BE unpacked length, u32 BE unused, u16 BE method (4 = RLE with escape, 12 = bit mask over the output; bit 15 = last stage), u16 BE XOR of the five; read out of the module at 0C28h:0000 with dosdis.py; 38 of 38 close, up to three stages deep (93 in all), and the two plaintext .BUM are the shapes they close on |
| the screens | 14 × 32,099 = 51 zero bytes + 48 DAC bytes (6-bit, into DAC 0–7 and 16–23) + four planes of 8,000; title, presentation with the panther, credits, difficulty overlay, nine worlds, the HALL OF FAME frame — all fourteen confirmed by the owner |
| the game | 126 platforms: 194-byte records of three 8 × 6 tables (a floor row of eight 1s, a staircase diagonal) + 6 parameters; 812-byte décor records of 270 triplets; 320 × 192 four-plane backgrounds; 511 sprites (40 sizes, 16 × 16 to 48 × 27) behind a 512-entry big-endian table with 12-byte heads below the pointers; a 7 × 8 font of 86 glyphs padded to even addresses; eight passwords; seven default scores from 5,000,000 down to 500 |
| the protection | Enter the platform number: a random sprite from a 16-entry table, the manual's number from another (4, 6, 7, 5, 15 …), three tries — and at cs:4219 the entered number is written over the expected one and a jmp skips the ERROR branch nothing else reaches: 88 46 FC EB 1D where 3A 46 FC 74 1D would compare; no disk check anywhere (int 13h ×0) |
| the music | BUMPY.MID SMF 1, 7 tracks (xylo, harpsi, bass2, bells, pompe, programs), 192 ppqn, 75 bpm, 3,863 notes, ≈ 3′45″; BUMPY.BNK Ad Lib v1.0, 129 of 160 instruments named rol000..rol128_ |
| the release | Fairlight, Cracked By: Sleepwalker, Packaged By: Grimstalk, 07/18/92; FLT.BAK the form with the fields blank (261 bytes differ); LIMITS.COM = The Outer Limits BBS, Fairlight Member Board, 313, the board the NFO lists with SysOp FlashBack; CHKLIST.CPS CPAV's record of this BUMPY.EXE, 07-17; BIO-TECH'S WORLD in three file names |
| crossings | 0 of 55 over 116 repositories |
| coverage | specified 22.7597 %, derived 77.2403 %, opaque 0 bytes (3 empty files), residue 0 — from 78.36 % opaque and two NFOs filed as Shift-JIS before this session |
| tools | 605 Python files: 598 inherited (1 repaired: coverage.py's cp437 probe, fourth appearance of its defect), 7 written — five readers from listings, a MIDI walker and a bank census |
The work this time was one decompressor, one blitter read as far as its
palette, five readers, one repair — and a program that would not speak
until its loader was followed. The codec was read whole: a head reader
that swaps every word, a dispatcher that loops while bit 15 is clear, and
two handlers out of eighteen — run-length behind an escape, and a bit mask
that writes one chosen byte where a flag is set. Out came fourteen screens,
and the first render decided sequential planes over interleaved ones; out
came the title with its apostrophe, the panther, and a credits screen the
owner had never reached. Then the program gave up what the pre-briefing
had missed in its own string dump — BUMPY (C) LORICIEL 1992, twice — and
what nobody had asked: a loader keyed to two floppies by a 2-byte file, a
resource table with five files nothing opens, a copy protection built on
the manual's platform numbers, and the two bytes that turn its comparison
into an assignment.
The pre-briefing's figures were corrected twelve times, from 70 % to 59.67 % for the headed bytes to "no studio, no year in the program". Its five hunches score three halves, a third and a sixth, and no whole truth.
Eight, and the count is the content's: the codec had to be one because it is 60 % of the bytes and every picture; the screens one because the title and the studio are pixels; the game one because the owner played it and the levels are what they never saw; the program one because the protection, the crack and the two-disk loader are its story; the release and the clocks one because a download directory of 1992 is its own object; and the tools one because a repair came before the first reader.
| chapter | what it says |
|---|---|
| 01 — What this is | the folder, the split, what the object says in the clear, the denominators, coverage |
| 02 — The technical sheet | every figure with its command |
| 03 — The codec | the 12-byte head, the dispatcher, method 4 and method 12, the closure on 38 of 38 and on the two plaintexts |
| 04 — The screens | the layout from the blitter and the palette loader, the fourteen renders, the title that names the game and the panther that names the studio |
| 05 — The game | nine levels in three files each, 126 platforms, the 8 × 6 grids, the backgrounds, 511 sprites, the font |
| 06 — The program | the strings, the two record tables and two floppies, QUELDISK, the copy protection and its two bytes, the ports |
| 07 — The release and the clocks | Fairlight's NFO and form, The Outer Limits, CPAV, the empty names, the MIDI and the bank, seven clocks, zero crossings |
| 08 — Tools, predictions and calibration | the cp437 repair, the seven tools, rule 0, the five hunches scored, twelve corrections, the term +9.00 |
605 Python files in tools\; the seven of this object and the repaired one:
| tool | reads | closes on |
|---|---|---|
bumpack.py |
the 12-byte compressed head, methods 4 and 12, stacked stages | the XOR check on every head, the declared length of every stage, 38 of 38 |
vecscreen.py |
the 32,099-byte screen: 51 + 48 palette bytes, four planes | DAC bytes ≤ 63, registers into DAC 0–7/16–23, exactly 32,099 |
bumsprite.py |
the 512-entry big-endian table, 12-byte heads below the pointers | table + heads + pixels + slack = file, offsets rising, h4 a multiple of 4 |
carfont.py |
the .CAR font: 224 absolute offsets, glyphs padded EVEN |
the first offset = the table's end, every record 3 + (8 − top) + pad, residue 0 |
bumlevel.py |
.BUM 2 + n × 194, .DEC 2 + n × 812, .PAV 6 + 4 × 7,680 |
the three lengths; prints the 8 × 6 grids; renders the backgrounds |
midiwalk.py, adlibbnk.py |
Standard MIDI (running status, meta, text names), the Ad Lib bank | the chunk walk on the file; 28 + 12n + 30n on the file |
coverage.py |
+ _cp437_text, _cp437_art repaired; + 9 probes for this object |
187 selftest checks |
Every tool has a selftest on built specimens, refuses a directory
through dirguard, and prints names through nameguard. notes\ holds
the output of every command the chapters cite; the renders stay in
_work\ and are described, not published.
The folder arrived as a copy of the owner's, modification times kept; its
location is not written here. INSTALL.BAT says C:\BUMPY, and that is
the object's. Nothing outside the object was consulted — not Loriciel's
history, not another platform's version, not a recording of the levels
the owner never reached. What the bytes do not say, these documents say
they do not.