Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pc-zerocomico-doc

Zero Comico (Windows, GMM Entertainment for Medusa Games, 2001) — measurements of a 506,378,240-byte CD: what is on it, what its two in-house file formats are, what its 49,163 characters of dialogue say, and how much of the disc is thirteen minutes of video.

No porting, no reverse engineering toward a re-release, no assets. This is a description of one Italian television tie-in's files and the code that produced every number in it.

→ Start at docs/00-predictions.md, written before the disc was opened, and docs/13-prediction-scoring.md, which scores its fifty-eight predictions thirty hits, ten misses and eighteen mixed. Two of the misses are the best pages here: one put 85 % confidence on the wrong side of the session's opening question, and one framed a choice as a coin flip when the answer was "both, for different things".

There is no shared platform checklist for the PC in this collection and there should not be — "PC" spans thirty years. Everything platform-level therefore stays in this repository. The index of the family is pc-gamelist-doc. Zero Comico has no predecessor and no sequel, and nothing here is inherited from another title as fact.

It has a sibling now

pc-bloodandlace-docBlood & Lace, GMM Entertainment, mastered March 2001 — is the same studio running the same engine seven months earlier, and it is the game whose JGF5 files were reported as holding "LZH-compressed data", which is the tip that opened this disc's containers in 07.

Reading the two together corrects three things stated here, and each correction is marked in place where it was originally claimed:

  • char.esc is not a typo. The string .esc is in this executable at 0x000D6B34, and the sibling disc has 108 .esc files. It is an earlier name for the same format, not a misspelling. 08, 11
  • The .p3d chunk length exists, on record type 0xF044. tools/p3d.py now closes on 526 of 526 files and 31,436 records instead of 520 and 27,170. Still no geometry. 10, 12, 14
  • JGF5 pixels are BGRA, not RGBA. Mp2/backgrd/azzurro.tgaazzurro, sky blue — is orange under RGBA. 11

Two things this repository asked and could not answer are also answered there: Silver Raven's networking was not in the engine in December 2000, so it was linked in after Blood & Lace rather than carried since 1999; and PietruZ&DariuZ, the only people named anywhere on this disc, are credited in full inside the sibling's engine DLL.


Before anything else: there are two discs

This repository has two copies of one product, and the difference between them is the first measurement in it.

  • a 506,378,240-byte ISO image, made with WinISO on 2003-05-27;
  • the original pressed CD, read through the drive.

They agree on everything that is the game: 2,862 files, 502,623,549 bytes, and all 2,862 hash identically. They disagree on everything that is the disc. The image's publisher field says WinISO software and the original's is blank; the image's date says 2003 and the original's says 2001-10-08 15:00:00 GMT+2; the image's primary namespace is the Joliet namespace uppercased, in violation of ISO 9660, with four duplicate paths, and the original's is correct with none; and every one of the 2,862 recorded file dates differs between them, because WinISO discarded 660 real timestamps and wrote eleven values in their place, three of which are not dates at all.

Chapters 01 and 02 were written against the image alone, then thrown away and rewritten when the disc arrived. What they said was carefully measured and wrong. docs/15 says what that cost.


Twelve things this disc produced

1. 69.49 % of the CD is thirteen minutes and forty-nine seconds of video. Seven Indeo 5 files at 320×240, 25 fps, averaging 3,370 kbit/s. Six of the seven were encoded with every single frame a keyframe — 9,539 video chunks and 9,539 keyframe flags in intro.avi alone — which is why 320×240 costs 15,687 bytes a frame. The seventh, crediti.avi, has 16 keyframes in 1,206 frames and was encoded four days later, alone, at 23:08 on a Monday. The seven videos are 2.86 times the size of the entire game. 03

2. The retail executable calls itself a playable demo. Zero Comico.exe, version 0.8.0.0, Comments: Playable Demo, OriginalFilename: game_engine.exe, InternalName: agg, ProductName: Giunti Multimedia Entertainment AG&G, LegalCopyright: Copyright © 1999 GMM Entertainment S.r.l. — in a file linked on 28 September 2001. The developer's name appears nowhere on the packaging and nowhere in the readme. 05

3. The engine was built for a different game and still carries it. Lucifer 3D Interface, japotek3d.dll, source headers dating to 1998-08-20, a DirectPlay lobby, the strings Lorenzo, Eloise, Type A, Type B and Silver Raven On-line, a twelve-slot directional sword-fighting system, obj_spada, combat.mp3, and four hard-coded paths to a developer's machine including d:\motore\japotek3d.dll. 06

4. Two in-house magics, one 1989 algorithm. 2,188 files — 76.5 % by count — are inside JFX1 (scripts, models, animations, materials) or JGF5 (images), and both wrap an LZHUF stream: LZSS with a 4,096-byte ring buffer under an adaptive Huffman coder, Haruhiko Okumura, 1989. All 2,188 decode to exactly their declared length. 72,816,045 bytes on the disc become 214,388,887. 07

5. Nothing on this disc is what its extension says. The 1,433 .tga files are not Targa — a Targa reader matched 0 of 1,433 — they are JGF5, 32-bit RGBA, 96.4 % power-of-two. The 25 .flc are not FLIC. The 82 .bsp are not rendering trees. 07, 09, 10

6. The .bsp files are a two-dimensional BSP over the walkable floor. Plain CRLF text, the oldest files on the disc, one grammar across all 80 non-empty ones, and the preorder tree walk closes on every one: N internal nodes and exactly N+1 null children, 80 times. 1,948 convex cells, 3,034 portals, and a 53,518-arc pathfinding graph whose 3,483 nodes are exactly the 3,483 room-outline vertices. Made between June 2000 and July 2001, one or two a day, over twenty-two working days. 09

7. The whole game was re-exported in a single day. From the original disc's real timestamps: 2,191 of 2,862 files — 76.6 % — carry 28 September 2001, the same day the three executables were linked. The linker timestamps and the ISO 9660 dates agree to within one second once you add the two hours of Central European Summer Time. 02

8. A level editor signed by two people. Twenty-three script files open with //Puzzle Files Created by Game Editor by PietruZ&DariuZ. That comment header is the only place on the entire disc where a person who made this game is named. 08

9. Four hundred lines of uninitialised memory shipped. Every non-printable byte in the decoded scripts is the same value — 0xCD, the Microsoft C runtime's debug-build fill for never-written heap — in exactly 400 runs of exactly 56 bytes, each followed by the float -4316020.800000. All 400 are on lines beginning sound:, and there are exactly 400 such lines in the game. None of them is valid. 11

10. Mp3 implements Monkey Island's insult sword-fighting. Sixty-five hand-written insults and ripostes across five opponents — "Impugni la spada come una triglia fritta" against "Se la impugnassi meglio ti umilierei troppo in fretta" — in an engine that has a real sword-fighting system it is not allowed to use. 11

11. Pac-Man introduces himself by his 1980 Japanese name. "Non sono un canarino... BURP!! Sono Puck Man BURP!!" One of his ghosts speaks mock-Japanese and lists four publishers — Paccom, Gase, Manco, Kimona. Two levels later a plumber explains that Mario is his surname, his brother Gigi lives upstairs and always gets to play the good guy, and Don_Kong is in the speaker table. 11

12. The characters complain that the studio never made them a fighting animation, and they are right. The joke runs across three chapters — "Ringrazia che non mi hanno fatto l' animazione per la lotta" — and the twelve hit-reaction slots it refers to are sitting in the executable's string table, inherited from the cancelled game in finding 3. Nine of their twelve error messages name the wrong field, because somebody wrote three cases and copied them nine times. 11


The documents

00-predictions.md fifty-eight predictions, written before the disc was opened, never edited
01-two-discs-one-game.md the 2003 image against the pressed CD, field by field and file by file
02-what-winiso-threw-away.md 660 real timestamps, eleven substituted ones, and fifteen months of a videogame
03-thirteen-minutes-forty-nine-seconds.md the seven videos, and the one that was encoded properly
04-two-installers-and-a-language-you-cannot-choose.md the MSI, the bootstrapper, and 3.2 MB of unreachable English
05-nine-executables-and-a-playable-demo.md PE headers, Rich headers, imports, and a version resource that was never updated
06-lucifer-and-the-game-that-came-before.md what the strings say about an engine begun in 1998
07-two-magics-and-a-1989-algorithm.md JFX1, JGF5, 503 failed attempts, and LZHUF
08-a-script-language-and-the-two-people-who-wrote-its-editor.md 852,701 bytes of script, 469 objects, 698 lines of dialogue
09-floor-plans-and-a-two-dimensional-bsp.md the walkable-area compiler, verified
10-models-images-and-forty-four-minutes-of-audio.md 263 model/animation pairs, 1,433 images, 558 MP3s, and what nothing asks for
11-chicche.md the good stuff, each item with the measurement beside it
12-open-questions.md ten of them, each with what was tried and failed
13-prediction-scoring.md thirty hits, ten misses, eighteen mixed, and where the reasoning went wrong
14-tools.md what each tool measures, what came from where, and what returned zero
15-leftovers.md the rest, and what happened during the session

notes/ holds the saved output of every command the documents cite. tools/ holds eighteen Python files, standard library only.


Reproducing it

You need the disc — either the ISO image or the CD in a drive — and Python 3. Nothing else. tools/iso9660.py takes either an image path or a bare drive letter, and every other mode works on both.

# what the disc says about itself, both copies
python tools/iso9660.py "[Pc Game ITA] Zero Comico.ISO" --vd
python tools/iso9660.py E: --vd
python tools/compare.py "[Pc Game ITA] Zero Comico.ISO" E:

# audit the date parser before believing any date
python tools/iso9660.py "[Pc Game ITA] Zero Comico.ISO" --verify-record CAMERA.GSC

# extract and census
python tools/iso9660.py "[Pc Game ITA] Zero Comico.ISO" --joliet --extract _work/iso
python tools/census.py _work/iso --magic

# open the two containers
python tools/lzhuf.py _work/iso --verify

# read the game
python tools/gsc.py "_work/iso/program files/Medusa Games/Zero Comico" --speakers
python tools/bsp.py "_work/iso/program files/Medusa Games/Zero Comico" --verify
python tools/avi.py _work/iso/Data --summary

The full list is in docs/14-tools.md. Everything runs in seconds except lzhuf.py --verify, which is an adaptive Huffman tree in pure Python decoding 214 MB and takes about eleven minutes.


Provenance, stated plainly

Two things in this repository did not come from the bytes.

The compression was identified from a tip. After 503 documented failed attempts, a report about another game — Blood & Lace, GMM Entertainment's first title — described the same JFX1 and JGF5 magics around "LZH-compressed data". That named the algorithm; tools/lzhuf.py --verify is what turned it into a result, by decoding all 2,188 files to their exact declared lengths.

The sleeve's system requirements were reported by the disc's owner and are used only as corroboration of Leggimi.txt, never as evidence.

Everything else — the studio name, the year, the engine's history, the file formats, the dialogue, the counts — comes from the disc.

About

Zero Comico (Windows, GMM Entertainment / Medusa Games, 2001) documented from the bytes: two in-house containers wrapping a 1989 LZHUF stream, 69.49 % of the CD spent on 13 minutes of all-keyframe Indeo video, an engine still carrying a cancelled game, and a retail executable whose version resource says Playable Demo. No assets.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages