Lucignolo — Il Videogioco, 7Th Sense s.r.l. A point-and-click adventure
built on OGRE 1.2.4, tied to a late-night Italia 1 magazine programme, whose
content was finished on 22 November 2007 and whose entire copy protection is a
six-byte file containing the word codice.
This repository measures a disc image. It does not modify the game, port it, reverse-engineer it towards a re-release, or distribute any of its content: no asset from this disc is committed here, and the tools work on a copy you supply yourself.
Eight files. One of them is 96.7857 % of the disc, and everything below chapter 05 is inside it.
There is no pressed disc, and there is no subchannel. The user was asked, before any measurement was taken, whether an original pressed disc existed: it does not. What exists is a cooked ISO — 544,320 sectors of exactly 2,048 bytes, no sync patterns, no headers, no EDC, no P channel — whose volume says
application identifier : WWW.BURN4FREE.COM
volume identifier : DISC 13 291107
data preparer : (blank)
publisher : (blank)
creation date : 2007-11-29 12:36:16
Burn4Free is a free consumer burning program and DISC 13 291107 is disc
thirteen, 29/11/07. Every volume-level figure in this repository describes a
home re-master made by an unidentified third party, not the product. This is
a regression in what can be known relative to pc-grandefratello-doc, which
had a real subchannel dump and could say things about a disc as an object;
rawsect.py, ccd.py and subch.py have nothing to read here and say so in
the tools chapter instead of being run to fill a table.
The file contents are the game's, and the eight file timestamps turn out to be trustworthy for a reason that can be demonstrated to the second — chapter 07.
What this repository measures, and what it does not. It reads a stopped disc: how many files there are, of what formats and sizes, with what dates, in what order on the medium, and what their headers say about themselves. It does not install the game, run it, or play it, and therefore it says nothing about whether the game is any good, whether its puzzles work, or whether it crashes — those are observations at runtime, and pretending otherwise would be the worst thing these documents could do. The rule that governs them is every figure with the command that reproduces it, and there is no command that returns a verdict.
That other half has been covered, seriously and publicly, by Fraws of Parliamo di Videogiochi, in the series Giochi brutti. His measurement and this one do not overlap and do not compete: he installed it and played it, and this read a disc that never started. Where his account and these figures both touch the same object they are answering different questions about it, and the figures here are offered as the half he did not need and could not get from playing.
Six bytes. Installer\Installer.spf contains the ASCII word codice and
nothing else. The game's executable holds the strings LUCIGNOLO CD CHECK,
%c:\Installer\Installer.spf, three Italian insert the DVD messages, and
the literal codice. That is the whole disc check, and the word occurs
exactly twice in everything this session extracted: once as the file, once as
the constant it is compared against
(04).
Sector 544,319 is not a mystery. The image is 544,320 sectors and the volume declares 544,319. The extra sector, and the sector padding after all eight files, is a byte-exact copy of the data 65,536 bytes earlier in the image — eight files out of eight, bounded exactly by the padding and not one byte more. The image is exactly 17,010 × 64 KiB, which is why (02).
The clocks agree to one second. The volume descriptor declares GMT+0 and the directory records declare UTC+1 for the same instant. Inno Setup records its 2,440 source timestamps in local time and flags that it does so; the game executable's PE COFF timestamp is UTC by definition. The difference is 59 minutes 59 seconds — one hour of time zone and one second of link-to-close lag — which settles the zone by measurement rather than inference, and makes the installer's build time computable at 54 minutes 10 seconds (07).
The engine names itself. The developers shipped a 475-line Ogre.log from
a machine with an ATI Mobility Radeon X1600, and it says Version 1.2.4 (Dagon). It shipped with ogre.cfg, Crash.log, OgrePlatform.dll.backup
and a resources.cfg still carrying D:/VGData
(06).
Cinepak, in 2008. Eight AVI files, 295,563,076 bytes, 6 minutes 37.5 seconds, all of them Cinepak — a 1991 codec — at 512 × 512, with uncompressed PCM audio that is 22.041 % of the video's bytes. The tie-in on the bigger disc has 56 % as much television in it as Grande Fratello had (08).
Nothing is hidden. 1,609 images, 1,609 correct magic numbers, zero
exceptions; the private extensions .sgi and .ssd are XML; levels.db is a
text file with one field per line; and the XOR experiment that took a chapter
on the previous disc comes back empty in one command
(09).
And the four-disc comparison says less than the three-disc one did. Not
one file on this disc is byte-identical to any file on the other three Italian
discs, the set of filenames common to all four is empty, and fmod.dll — the
only thing the first three shared — does not survive: this game uses Audiere
(10).
$ python tools/accounting.py "Lucignolo Il Videogioco.iso" _work/iso _work/game
image bytes 1114767360 544,320 sectors, 17,010 x 64 KiB
files written by the installer 1411108085 2,440 files
EXPANDED TREE 2135360919 with the 55 archives opened
expansion over the image 1.9155x
DDS textures inside archives 1089630304 51.028 % of the expanded tree
video 295563076 13.841 %
Ogg Vorbis audio 89194854 4.177 %
everything in bin/ 11922644 0.558 %
the game executable 492032 0.02304 %
Half of the tree is texture. The program that manages all of it is one part in 4,340.
| 00 — Predictions | 83 clauses, written before the image was opened, never edited |
| 01 — A disc that names its burner, and nobody else | Burn4Free, the two descriptors that disagree about capital letters, and five filenames broken in the primary namespace |
| 02 — The sixty-four kilobyte echo | the extra sector, explained to the byte, and what that does and does not say about the 155 |
| 03 — Two installers, one of which installs nothing | Inno Setup 5.2.1 twice, an accounting that closes exactly, and the only name on the disc |
04 — Six bytes that say codice |
the six small files, and the copy protection of a 1.11 GB DVD |
| 05 — Opening a gigabyte | the Inno reader, the two mistakes it made first, one solid LZMA chunk, and 2,440 files |
| 06 — OGRE 1.2.4 "Dagon" | the middleware stack, the log that came with it, CEGUI that never loads, and 0.713 % of SDK samples |
| 07 — Three clocks, and one second | 59 min 59 s, and a note back to pc-grandefratello-doc |
| 08 — Six minutes of Cinepak | eight clips, a 1991 codec, and 65 MB of uncompressed sound |
| 09 — 1,387 sentences, 1,002 steps, and 102 minutes of voice | the dialogue, the script language, 48 scenes, six minigames, and five paths that are not there |
| 10 — Four Italian discs, and nothing at all | zero shared files, zero shared names, and the end of fmod.dll |
| 11 — Open questions | ten, each with the measurement and the attempts that failed |
| 12 — Prediction scoring | 45 hits, 13 mixed, 25 misses — and ten of the misses are one wrong belief |
| 13 — Tools | what each one measures, and which ones did not apply |
| 14 — Leftovers | a car from another game, a tool the studio wrote, and a runtime that is named and not shipped |
Python 3, standard library only. Put the image in the repository root and run:
python tools/iso9660.py "Lucignolo Il Videogioco.iso" --vd
python tools/padecho.py "Lucignolo Il Videogioco.iso"
python tools/iso9660.py "Lucignolo Il Videogioco.iso" --extract _work/iso --joliet
python tools/inno.py _work/iso/Installer/Lucignolo.exe --verify-entries
python tools/inno.py _work/iso/Installer/Lucignolo.exe --extract _work/game
python tools/accounting.py "Lucignolo Il Videogioco.iso" _work/iso _work/game
python tools/clocks.py "Lucignolo Il Videogioco.iso" \
_work/iso/Installer/Lucignolo.exe _work/game/bin/release/Lucignolo.exe
python tools/gamestats.py _work/game --all
The full list is in chapter 13 and the saved output of
every run the documents cite is in notes/. _work/ reaches
2.53 GB and is not committed; neither is the image.
The index is
pc-gamelist-doc. The three
Italian discs measured before this one, with the same tools, are
pc-zerocomico-doc,
pc-bloodandlace-doc and
pc-grandefratello-doc.
Lucignolo shares nothing with any of them
(10), which took two
minutes to establish and is the most useful thing the comparison produced.
Two facts here come from outside the disc and are kept separate from every figure above, because nothing in the image corroborates them:
- the game is credited to 7th Sense, published by 2lite and distributed by Halifax, with a stated publication date of 30 January 2008. The disc names only 7Th Sense — no publisher, no distributor, no broadcaster appears in any of the 2,440 installed files — and every clock on it predates that date by about two months, which is an open question and not a contradiction;
- Lucignolo was an Italia 1 programme, and The Games Machine reviewed the game and scored it 25 while praising its voice actors. This repository measured 102 minutes 29 seconds of recorded voice across 1,215 files and 1,387 written lines of which 81.3 % are voiced. Those are two statements about the same recordings and only one of them is a judgement; they are put next to each other rather than against each other.