Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pc-losthorizon-doc

A measured description of one directory: 42 files, 1 subdirectory, 4,040,878,658 bytes, 42 distinct hashes, copied from the owner's GOG Galaxy installation of LOST HORIZON (Windows, 32-bit; Fusionsphere Systems / Deep Silver / 2010-08-27 in the object's own Game Definition File) — a point-and-click adventure of 2010 on the studio's own engine, in which 99.75 % of the bytes are six archives whose contents are in the clear and whose file names are behind a lock nobody here opened. The work was to repair a coverage table that called those six archives opaque and three text files audio, to read the card out of a DLL, and then to walk four gigabytes by magic — Bink, Ogg, PNG, JPEG, Lua 5.0, Granny, and the engine's own LZ77 — until every payload region tiled to the byte and the count of payloads matched the count of locked entries, 15,177 to 15,177. The object is not published. What is published is what could be counted, closed on, decoded, rendered and confirmed — all of it from the object's own bytes, none of it from outside.

The short card

what it is a point-and-click across Tibet, Hong Kong, Berlin, Morocco, India, China and Shambala (the screen folders and the sentence files name the chapters), played by Fenton (4,079 lines of 7,564) with Kim (401), Richard, Hanna, Hayes, Weston, Mun Tong, a Countess and fifty-odd others; cursors, an inventory, a diary (Tagebuch), 289 dialogues, 44 cutscenes
title LOST HORIZON — <Name>Lost Horizon</Name> in six GDF blocks, GOG's .info, the registry key, the save folder; lost_horizon_hauptmenue.jpg is the menu's background
studio Fusionsphere Systems<Developer URI="http://www.fusionsphere.de/"> in 6 of 6 GDF blocks; the engine's source tree d:\fssprojects\; no other studio named in 541 INIs, 2,720 Lua chunks or the script. Publisher Deep Silver by the same file; the certificates on six binaries say Koch Media GmbH; "the creators of the Secret Files Series" is a phrase of the object, not resolved
year 2010<ReleaseDate>2010-08-27</ReleaseDate> in 6 of 6; the studio's four binaries linked 2010-04-24 … 07-23; the install is 2024-09-26, eight minutes; no file keeps a 2010 mtime
engine FSAS, by its own fifteen CFSAS* classes: Direct3D 9 (d3dx9_30), Lua 5.0.2 compiled in with twenty-six Lua* entries, RAD's Bink 1.9.1 and Granny 2.7.0.28, DirectSound through fsassound.dll; written in German (TagebuchEintrag.ogg, Interface_Tooltip_HG_center.PNG, innenhof, kreuzung)
files 42: 6 .spr archives, 9 PE, 8 TrueType fonts, 3 icons, 5 .dat (three UTF-16 string tables, an Inno log, an empty reg.dat), 6 .ini, GOG's .info / .script / .hashdb / .msg / .lnk
bytes 4,040,878,658 — the six archives 4,030,829,851 (99.7513 %): data.spr 1,649,126,958, video.spr 1,432,943,204, loca.spr 575,545,561, music.spr 370,217,680, data_patch.spr 2,171,719, loca_patch.spr 824,729; everything else 10,048,807 (0.2487 %)
distinct sha1 42 of 42
the archives SPCR: a 56-byte head, payloads stored whole from byte 56, three tables at the end that tile to the last byte on 6 of 6 and are 7.8–8.0 bits per byte — a directory of 15,177 entries of 52 bytes (44 + 139 + 6,955 + 6,539 + 1,360 + 140) that no cheap test opened (inflate, XOR with the head word, per-column entropy, autocorrelation, distinct records: all reported) and that was not forced
the walk every payload found by its magic and read to its own end: 100.0000 % of all six payload regions, 0 gaps, 0 residue, 0 refused, 15,177 payloads = 15,177 entries; 17 of them bounded by the next magic instead of a length of their own (sixteen compiled D3DX effects, one Word document)
the pictures 2,002 PNG in data.spr (96 × 96 ×352 inventory objects, 2048 × 1344 ×52, 64 × 64 ×46) + 13; 221 + 10 JPEG (2048 × 1344 ×151: the backgrounds); one TGA out of 3ds Max; eight renders sent and all eight confirmed by the owner — the GDF thumbnail (the two leads), the cursor at byte 240, a roll of tape, a golden frame, a menu, a puzzle piece on a wall, two game backgrounds they remembered
the films 506 Bink at 25 fps: 44 cutscenes in video.spr (31,892 frames, 21.3 min, 1024 × 512 and 1280 × 640, 32 with sound), 461 silent animations in data.spr (40.7 min), one in loca.spr
the sound 6,848 Ogg Vorbis streams, 6,848 ending on an EOS page: 139 music pieces (385.5 min, stereo 44.1 kHz), 6,063 speech lines (433.7 min, mean 4.3 s, ENCODER=FSASEditor), 287 more in loca.spr, 356 atmospheres (47.8 min), 3 in the patch; 98 RIFF WAVE
the models 1,886 Granny 2 files (version 7 ×1,179, 6 ×707) selected by the two 16-byte magics granny2.dll carries in its own bytes, sized by their +36 word
the text 840 SLZX blocks, an LZ77 of the engine's own read from a hex dump — flag byte, (position, length, next) triples, a 2,048-byte sliding window — decoded 840 of 840 to N bytes and a parse: 541 INIs (2,005 [GameObject#], 289 dialogues, 125 [Background] rooms, [Cursor], [Inventory], [Fonts]) and 153 UTF-16 tab-separated tables that are the whole script: key, line, speech file, code, stage direction — English, one language (the 4,578, le/il/el 0), 63 speakers
the Lua 1,360 Lua 5.0 chunks in data.spr and 1,360 in data_patch.spr, all stripped (=(none)), all read to closure: 10,787 functions, 142,901 instructions, 63,336 constants; 123 global names (GameVars, SceneObjects, Dialog, Inventory, ViewFenton, ViewKim); the patch changes one chunk (#447, the Hong Kong office safe, two GameScreen.BlockUserInput calls); loca_patch changes two lines of 7,309 ("Yes" → "Jawohl")
the names locked in the tables — but the content speaks 4,681 distinct data\… paths and 6,158 speech paths, 71.4 % of 15,177, without their offsets
the programs fsasgame.exe in the clear and unsigned, 14 DLLs, 332 imports; fsasgame-x86.dll — not a second engine but X86Runtime.dll, exporting CertificateStore, Protect, Protect2, 98.15 % one packed section ACE2 at 7.9986 bits/byte, signed Protect Software GmbH, named by nothing but GOG's manifest, left shut; ConfigTool.exe; LostHorizonGDF.dll with six cards and one 256 × 256 picture; eight fonts all by Ray Larabie
GOG's manifest 190 entries: 32 present + 10 undeclared = 42, 158 absent (157 DirectX cabinets); .info gameId 1196011241, en-US; .hashdb a ZIP; Inno 5.6.2's stub; goglog.ini with one account name, counted, masked; archives.ini promising eleven archives and the disk holding six; no save, no log, no crash: no diary
crossings 4 of 42 over 118 repositories, all GOG's; not a byte of the game
coverage specified 0.2487 %, derived 99.7513 % (the six archives, by the tables' closure — a position, not a reading), opaque 1 file, 0 bytes, residue 0 — from 99.7513 % opaque before the repair; the tables themselves, 1,168,178 bytes, 0.0289 %, are the one thing not read
tools 614 Python files: 609 inherited from pc-monstrum-doc (0 differing on arrival; coverage.py changed by three probes, pe.py mended for PE32 thunks), 5 written (spcr.py, slzx.py, luac50.py, gdf.py, sfntname.py); 306 selftest checks, 0 failures

The work this time was a repair, a card, a walk and two decoders — on an object behind a lock that turned out to be on the names only. The last object was behind nothing; this one is behind a directory nobody reads over four gigabytes anybody can, and what changed is where the reading had to go: not through the lock but around it. Every payload states its own length, so the archives were tiled without a name in hand; the engine's LZ77 was read from a hex dump and closed on a parse rather than a length, which is what caught its three wrong drafts; Lua 5.0's undumper was written from lundump.c and refused by the first chunk until its test number was the header file's and not the memory's. Out came the script — Fenton Paddock, Kim, Mun Tong's Hong Kong, the Tibet escape, a Countess, Shambala — the rooms by chapter, the safe the patch fixes, the two words the other patch fixes, the cursor, the tape, the corridor the owner remembered, and a "second engine" that names itself as a copy protection's runtime and is called by nothing. The directory stayed shut, and its price is written as a number: 15,177 bindings, of which the content already speaks 10,839 names.

The pre-briefing's figures were corrected ten times, one of them about the box (it did have a Bink reader that took an offset), one about a reader that had been wrong on every PE32 it had ever counted. Its five hunches score one wrong — the one the naming hung on, as it foresaw — one half, one four-fifths and two right.

The chapters

Eight, and the count is the content's: the archives had to be one because they are 99.75 % of the bytes and the walk is the method; the text one because the script, the INIs and the Lua are the game in writing and share one wrapper; the media one because pictures, films, sound, models and fonts are five censuses of the same shape; the programs one because the question of the second engine lives in sections and exports; the card, GOG and the clocks one because they are what the object says about itself and what the shop wrapped around it; and the tools one because a repair came before the first reader and a term has to be written.

chapter what it says
01 — What this is the install, the split by magic, what it says in the clear, the four denominators, coverage
02 — The technical sheet every figure with its command
03 — The SPCR archives and the walk the head and its free closure, fourteen readers, 100.0000 % on six regions, 15,177 = 15,177, the cheap tests on the lock and what they say
04 — The text of the game SLZX read from a hex dump, 541 INIs, the English script with 63 speakers, 2,720 Lua chunks to their constants, one chunk and two lines changed, 71.4 % of the names spoken by the content
05 — The pictures, the films and the sound 2,246 PNG and JPEG, 506 Bink, 6,848 Vorbis streams, 1,886 Granny, a TGA, a Word document, eight fonts by one designer, eight renders confirmed
06 — The programs the engine in the clear and in German, the DLL that is a protection runtime and not an engine, nine signatures and one missing
07 — The card, GOG and the clocks six cards and one picture, Studio and Year with their witnesses, the manifest both ways, eleven archives promised, the clocks, no diary
08 — Tools, predictions and calibration the coverage repair, five tools written and one mended, rule 0, ten corrections, five hunches scored, the term +8.00

notes/ holds the raw output of every command cited; tools/ the box. The object, the renders, the pre-briefing and the working directory are not published; the notes were checked for this machine's paths and for the object's account name before commit.

About

LOST HORIZON (Fusionsphere Systems / Deep Silver, 2010) from a GOG Galaxy install: six SPCR archives walked by magic to 15,177 of 15,177 payloads, the engine's LZ77 and Lua 5.0 decoded to the English script, the directory left locked and priced. Bytes only, nothing from outside.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages