Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Broken Sword 5: The Serpent's Curse — a measured installation

A byte-level description of a live GOG installation of Broken Sword 5: The Serpent's Curse (Revolution Software, 2013–2014), Windows edition, gameId 1207660323. 33 files, 6,608,639,638 bytes, read-only. Nothing was executed, nothing was extracted, and no decoded asset is shipped with this repository.

The short sheet

files / directories / bytes 33 / 2 (both empty) / 6,608,639,638
distinct sha1 33 of 33 — no file is a copy of another
containers 17, holding 99.8996 % of the object
members inside them 71,938 — 15,776 VT7A, 56,162 AUFS
the program BS5.exe, 2,200,064 bytes = 0.0333 % of the disk
the executable PE32+ x86-64, no version resource, PE checksum 0
what the store verifies 3 files, 3,655,704 bytes = 0.0553 %, 3 MD5 of 3
entropy blocks above 7.5 99,285 of 100,860 = 98.44 %
the engine's name, in 6.6 GB Virtual Theatre: 0 — and George: 0 too, until the containers were opened
middleware licences 0. Twelve open-source libraries and nothing else
recorded sound and film 23.0583 % of the disk (31.0952 % without the unused resolution)
leftovers 1,758,685,265 = 26.6119 % — of which 1,708,089,344 is one resolution nobody loads
recordings, all told 50 hours 10 minutes across 57,797 members

What is actually in it

Two container formats, neither published, both derived from the bytes this session and both proved with an external fact rather than with arithmetic:

  • VT7A — seven archives, 93.49 % of the object. 16-byte header, 16-byte record (key, offset, size_raw, size_stored), members aligned to 4,096 bytes, zlib per member and optional. The naive reading of the record overshoots one archive of seven by 201,604 bytes; the derived one fits all seven.
  • AUFS — ten archives, the voice tracks. Eight-byte header, 12-byte record (id, offset, size), members laid end to end with zero slack, and offset[last] + size[last] == file size exactly on ten of ten.

And what the 71,938 members turn out to be:

members bytes share
STRM — 2D animation streams, 401,317 declared frames 3,991 4,481,283,405 67.8095 %
Ogg Theora film, 1280×720, 34:56 12 853,951,984 12.9217 %
WebP still artwork 3,138 545,251,816 8.2506 %
Ogg Opus speech, five languages, 44:22:25 56,162 422,938,723 6.3998 %
Ogg Vorbis music and effects, 5:13:22 1,623 246,947,531 3.7367 %
zlib — the whole script, rules and credits, as XML 6,933 4,552,560 0.0689 %
sdw 79 957,936 0.0145 %

The three findings this session exists for

1. The engine has no name in the object, and that is a measured absence and not a compression artefact. Virtual Theatre occurs zero times in 6,608,639,638 bytes — but so does George, and George Stobbart is certainly in this game. So general.vt7a was inflated: 12,663,529 bytes of XML and string tables in which george occurs 22,475 times, Kickstarter 83 times, and Virtual Theatre still zero. The absence only became evidence once the positive control existed.

2. Three quarters of the object is the same artwork twice, and the pixels had to say so. graphics_720.vt7a and graphics_1080.vt7a share no key and almost no byte — 17 members of 9,042. They are nevertheless the same pictures: pixel-area ratio 2.2890 against the 2.2500 of an exact 1.5×, animation frame counts 200,636 against 200,681, and every large scene in the 1080 archive reconstructible as tiles of the 720 one at a 2,047-pixel limit (2047 + 1023 = 3070 = 2045 × 1.5, exactly).

3. A tool said nineteen where the answer was 290. deps.py walked a 64-bit import table four bytes at a time and reported exactly one imported function from each of nineteen libraries, without erroring. Third session running in which a tool has stated something false with confidence.

The chapters

00 — Predictions 48 clauses, written before a single byte was opened
01 — The object 6.6 GB, 33 files, and a program that is 0.0333 % of it
02 — Spec sheet every number with the command that reproduces it
03 — The two manifests 23 files, 3 MD5, and a folder made ready for nothing
04 — The engine that has no name twelve libraries, four letters, and a zero with a control
05 — VT7A sixteen bytes a record, and the one archive that refused to close
06 — AUFS eight bytes of header, and 56,162 recordings that close to the byte
07 — The members 71,938 things with no names, counted by their first bytes
08 — The two resolutions 76.4 % of the object is the same artwork twice
09 — The moving pictures 401,317 animation frames, twelve films, 34:56
10 — The language five voices, eight subtitle tables, one shared id
11 — The binaries no version resource, and 290 functions the tool said were 19
12 — The paths and the machines thirteen strings, two build trees, one drive letter
13 — Against the collection 291 members crossed eleven years ago, none crossed eight
14 — The tools 262, of which 165 do not apply and one was confidently wrong
15 — The leftovers 1,758,685,265 bytes, and the decision came before the count
16 — The thesis 23.0583 %, and the alternative is 31.0952 %
17 — Corrections fourteen in the briefing, four of mine
18 — Open questions what STRM is, what the key is, 291 known plaintexts
19 — Scoring 40.0 of 48

The series, now three points long

2003 The Sleeping Dragon 2006 The Angel of Death 2014 The Serpent's Curse
bytes 1,724,710,597 2,668,075,144 6,608,639,638
the program 0.1012 % 0.1798 % 0.0333 %
sound and film 71.2028 % 37.6177 % 23.0583 %
engine RenderWare, of Criterion Emmersion, in-house no name in the object
middleware licences 1 2 0
archive keeps names? no full source paths no
absolute paths found 3 26,212 13 (11.78 % sample)
languages of voice shipped 1 1 5
members crossing to the next game 291 0

Method

Every figure names its denominator and its tool. Where a scan sampled rather than censused, the sample is stated on the line that carries the number. Negative results are published with the number of bytes searched beside them. Controls that fired are reported as having fired — three of them did, and two invalidated the tests they were guarding.

Nothing in this repository was executed from the object, no member was ever written to disk, and the installation was never modified.

About

A GOG install of Broken Sword 5 (2014) measured byte by byte: 33 files, 6.6 GB, two undocumented container formats derived and proved, 71,938 members censused, and an engine whose universally-attributed name occurs zero times in the object.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages