A byte-level study of four raw CD images — 2,462,097,418 bytes, 1,046,810 sectors, every one of which verifies its own EDC and both ECC parities — in which 42.6696 % of the object is a container format no repository in this collection had ever named, the duplication figure everybody would have quoted turns out to be very nearly right for the wrong reason, and the owner's question — is this the European release or the American one? — is answered by a spelling count of 69 to 0 and by four pairs of timestamps seven hours apart.
Nothing here is emulation, patching or preservation advocacy. It is measurement: every number carries the command that reproduces it, the sixty predictions were written before a container was opened and are scored whether they won or lost, and the four formats derived here are described in the docstrings of the tools that read them.
Nothing of the object is in this repository. The four images and the four
ZIP archives they arrived in are excluded by directory and by name, not by
extension, and git ls-files is verified in both directions before every
commit. There is no personal data anywhere in the object — a search across
all 662 files and all 83,141 leaves returns two organisations' contact details
and 4,290 equaliser coefficients. The build-machine paths that are here
(C:\lib\src\polygon\tim.cpp, C:\FF7\src\battle\yama\init.cpp) are
directories on a company machine printed into a product pressed in large
numbers, and are findings; the owner was asked before the third of those was
written down.
This is not the owner's copy. It came from a public archive, and the four ZIP files it arrived in say a machine at UTC−5 made them on 7 June 2014 in sixteen minutes. That is a fact about the delivery and it is not evidence about the disc, which is why chapter 10 uses the 1998 clocks instead.
| title | Final Fantasy VII, the 1998 Windows conversion. The volumes call themselves ff7install, FF7DISC1, FF7DISC2, FF7DISC3 |
| the object | 8 files, 2,462,097,418 bytes: four Mode 1/2352 images and four cue sheets, one data track each, no audio, no pregap |
| the physical layer | 1,046,810 sectors, 0 EDC mismatches, 0 ECC P, 0 ECC Q, 0 bad sync, 0 headers ≠ LBA+150. One line that excludes every protection that works by putting something wrong on a disc |
| the four denominators | 2,462,097,418 delivered · 2,140,541,877 in 662 files · 1,434,885,325 in 570 payloads · 2,135,837,676 in 83,092 leaves. The first two close in three terms: 318,230,240 + 3,325,003 + 298 |
| the format nobody had read | .LGP, 49 files, 913,361,406 bytes, 42.6696 %. Derived from the smallest archive and closed with residue 0 on 49 of 49, 82,479 members, overhead 0.5150 %. 05 |
| the field that broke it first | MAGIC.LGP missed by 319,804 bytes, and the shortfall was the missing field: a conflict table holding 2,450 paths of the studio's own source tree, kept because two files shared a name |
| the duplication, at the level that answers it | 83,092 leaves, 32,870 distinct. 33.0221 % by bytes and 60.4414 % by count, against 32.9663 % and 13.9002 % at file level. Going deeper moved the byte figure by 0.0558 points and the count figure by 46.5412 |
| why | this object's redundancy is ten whole archives pressed four times, not leaves repeated inside them. Intra-archive redundancy over nineteen distinct archives is 0.6978 %, and thirteen of the nineteen contain no repeated leaf at all |
| the fifth of the object that is one file | FLEVEL.LGP, 127,963,958 bytes, on all four discs: 511,855,832 bytes, 20.7894 %, pressed four times so that a Standard Install never has to ask for a different CD |
| the most-copied payload | three bytes long — /YAMAHA/DISK1/DISK1.ID … DISK5.ID, five identical files, all five recorded 1995-05-01 11:01:06 |
| the film | 149 movies, 149 of 149 agreeing with their own headers; 50,315 frames, 55 m 45.07 s stored, 49 m 27.67 s distinct. 146 Duck TrueMotion 2, 3 Cinepak, 143 at 320 × 224 — the PlayStation's active line count |
| the drive it asks for and the drive it needs | the README demands 4×; the mean payload rate is 2.03×, 90 of 149 need more than 2×, and exactly one exceeds 4× — LASTMAP.AVI, four seconds at thirty frames a second, 6.66× |
| the file with one name and two contents | GOLD6.AVI. Same codec, same 320 × 224, same 149 frames, same 9.9334 seconds — and 802,232 bytes apart. Two encodes of one shot, 33.36 % apart in bit rate |
| the sound | AUDIO.DAT: 749 Microsoft ADPCM entries at 44,100 Hz mono, tiling 71,738,528 bytes with 0 overlap and 0 unowned past a 2,858-byte preamble the index's own first field names. Decoded here, and confirmed by ear by the owner as effects |
| the twenty-seven allocations nobody filled in | 26 of the 749 index entries are eighteen bytes of 0xCD — the Microsoft C runtime's uninitialised-heap fill — and a twenty-seventh sits at the end of the file. Shipped on a pressed disc |
| the music | 94 sequences in four parallel arrangements — MIDI, AWE, XG, YGM — sharing 94 names and not one byte-identical member. Four SoundFont banks that are three cuts of one bank (full, 2MB, 512K) and one stock Creative user bank |
| the mystery that solved itself | LB2.SF2 is User Bank by Vienna Master, and AWE.LGP has exactly one member the other three containers lack: lb2_awe.mid |
| the console underneath | tim.cpp, rsd.cpp, psx.cpp and psxgraph.cpp in C:\lib\src\; 8 .TMD, 8 .TIM and 21,620 .RSD inside the archives; psxdata.cpp in three of the five minigames; and a software rasteriser in the same directory as the Direct3D one |
| the second format with no prior art | .BOT and .MAP are arrays of 47,104-byte blocks — twenty-three CD sectors exactly — each with a table of sixteen offsets. Residue 0 on 6 of 6, 481 of 481 tables valid |
| the protection | CDCHECK.EXE, 28,672 bytes, GetVolumeInformationA, and FF7DISC1 FF7DISC2 FF7DISC3 DataDrive DiscNo and Software\Square Soft, Inc.\Final Fantasy VII in plain text. No instruction was disassembled |
| the executable with no name in it | FF7.EXE, 5,820,416 bytes, two resources and neither is a version block. No company, no product, no version. 912 build paths, 100 distinct |
| the disc, as a disc | all four spend four sectors on volume descriptors and differ only in which they repeat — the installer duplicates its primary, the game discs duplicate their terminator, and all five duplicates are byte-identical. sectormap.py closes at 100.000 % on all four |
| the time zone that four bytes assert | GMT+12:00 in twelve descriptor bytes, against GMT+00:00 in all 662 file records on the same discs. And four PE files whose ISO dates sit 7:00:00, 7:00:01, 6:59:56 and 6:59:42 under their own UTC link timestamps |
| the region | the North American English build, on nine independent fields, and not a European localised release, which is ruled out by measurement. What the object does not settle is which continent these four pressings were sold on. 10 |
| coverage | 52.5020 % from a public definition, 47.0920 % derived here from the bytes, 0.4060 % read as text or descriptor only — and 0.0229 % in three InstallShield cabinets that were not opened and are named as unaccounted |
| against the collection | 203 of 570 distinct payloads cross, 9,966,798 bytes = 0.6946 %. 198 cross with Final Fantasy VIII and every one of the 198 is Microsoft's. Two games in one series, one publisher, one year apart, sharing not one byte of Square's |
| the boilerplate, proved rather than asserted | LANG.DAT and OS.DAT — the files listing six European languages — are byte-identical to another game's copies in this collection |
| 00 — predictions | sixty clauses, written before a byte of the object was read |
| 01 — the object | four denominators, and the one everybody would have quoted is measured at the wrong level |
| 02 — the technical sheet | every number with the command that makes it again |
| 03 — what applies | the DOS half switches off, the optical half switches on entirely |
| 04 — the volumes and the clocks | four descriptor sectors each, and a time zone four bytes assert and 1,986 deny |
05 — .LGP |
42.6696 % of the object, no prior art, residue 0 on 49 of 49 |
| 06 — the duplication | the level that matters moved the count and left the bytes alone |
| 07 — the films | fifty-five minutes, one a 4× drive cannot deliver, two encodes of one shot |
| 08 — the sound | 749 effects whose index closes at the byte, twenty-six with uninitialised memory in them |
| 09 — the programs | 912 build paths, a 28-kilobyte protection with its answers in plain text |
| 10 — the region | the owner asked, and eleven places answer, and one of them is a clock |
| 11 — the game | a PlayStation with a software rasteriser bolted on |
| 12 — the accounting | 52.5020 % came free and 47.0920 % did not |
| 13 — against the collection | 203 crossings, 198 with the next game, and every one is Microsoft's |
| 14 — the people and the provenance | zero, reported by having looked, and two layers of third party |
| 15 — the tools | seven new readers, and one defect that shows both its halves on one tree |
| 16 — leftovers | what is still open, and the three clauses thrown away before they were written |
| 17 — corrections | seven in the pre-briefing, one in the briefing, eleven of this session's own |
| 18 — prediction scoring | sixty clauses scored, two totals, never added together |
tools/ carries 457 Python files, of which seven were written here and the
rest are the collection's shared box:
lgp.py |
Square's .LGP container. --validate prints the accounting term by term, --census closes 49 of 49, --conflicts prints the source tree, --selftest refuses four specimens on four different guards |
tex.py |
.TEX to PNG. Written so the container reader could be checked against a picture rather than against a residue |
wmblock.py |
the block structure of .BOT and .MAP |
audiodat.py |
AUDIO.FMT as an index into AUDIO.DAT, and any entry out as RIFF/WAVE |
leaves.py |
every addressable thing at every container level, with the definition of leaf printed above the number |
sift.py |
named byte patterns over a whole tree, with the chance rate for every needle width printed before the counts and a positive and a negative control on every run |
riffwalk.py |
a RIFF tree, with residue 0 required |
Nothing was copied from pc-finalfantasy8-doc, which has readers for four of
these problems. Its chapters were read and cited; its code was not, because
copying a reader in is inheriting a hypothesis.
Every count says n of n. Nothing on this object was sampled: 1,046,810 sectors one at a time, 662 files, 82,479 archive members, 83,092 leaves, 149 movies, 749 sound entries, 662 dates, 912 build paths.
Every count that rests on a byte pattern names its needle width and carries
its chance rate. On this object a four-byte needle is expected 0.4984 times in
the file content — so the nine occurrences of ESRB are what chance produces,
and all nine are inside compressed video. The nine occurrences of ELSPA are
inside the RTF control word \levelspace0. The word england in the game's
main executable is in the C runtime's country table, next to america.
Three of this session's four format derivations were wrong first and were caught by their own closure test. That is in 15 and in 17, at the same size as everything else.