Okay... Installed Steam (~870MB), redeemed a key from Humble Bundle, got the beta FTL (200MB).
Installed C compiling stuff: msys/mingw-w64/yasm (920MB). Downloaded SIL source.
Edited SIL to build with mingw (I'm not a C person)...
- Set an environment var: "export CC=gcc".
- "SIL/tools/Makefile" to work with mingw (I defined a MKDIR_TAKES_ONE_ARG macro).
- "SIL/tools/extract-pkg.c" (an #ifdef to switch "mkdir(path, 0777)" to "mkdir(path)")
- I didn't fetch all the SIL tools' library dependencies, so the build fails eventually, but it compiles the one tool I really want.
So now I've got a 130KB Windows binary of "extract-pkg.exe" to peek inside "ftl.dat".
Good news, images are still individual png files!
I worried they might've been packed together into texture atlas collages in SIL's obscure tex format.
I haven't diff'd, but the extracted contents basically look like "data.dat" and "resource.dat" had been extracted to the same place. XML has <FTL> root tags enclosing everything. The "ftl.dat" format itself is different, so I'll need to write a whole new Java (un)packer class to drop into Slipstream.
From SIL's package-pkg.h
Code: Select all
* The basic format of a PKG file is as follows:
* - Package header (struct PKGHeader).
* - File index (struct PKGIndexEntry * 1 for each file in the package),
* sorted by pathname hash, then by lowercased (y/A-Z/a-z/) pathname
* for files with the same pathname hash.
* - File pathname buffer, containing the pathname of each file (in
* arbitrary order) as a null-terminated string.
* - File data. The start of each file may be freely adjusted to any
* desired alignment as long as the file's index entry points to the
* correct offset.
So the general structure is analogous to the 1.5.13 dat format.