First post, by nemo
I have been re-implementing the XnGine engine of *Future Shock* and
*SkyNET* on Godot 4, reading the original data at run time. Since this
forum is where such notes belong, the format work in short:
- **BSA** — CTPAX-X archives; the per-variant key is derived from a
passphrase in 28 base-62 mixing rounds.
- **WLD** — the terrain is one 256×256 heightmap per map, not placed
meshes; layer 0 holds the height plus a diagonal flag.
- **TEXTURE.NNN** — pixel rows have a fixed 256-byte stride rather than
the record's own width, and four records can share one interleaved
buffer.
- **.3D** — v2.1 to v2.7; the face record's per-vertex field is a byte
offset in the later versions and a pre-multiplied index in the earlier
ones. The word at +0x30 is a runtime cursor, not the frame-0 vertex
block, which cost me a model.
- **CFA** — two layouts: the 320×200 set is 16-bit with an RLE byte
stream, the 640×480 set is 32-bit with row-based (skip, count) pairs.
- **HMI** music, **FNT** bitmap fonts, **PRS** text, and the mission
scripts as tables of action handlers in the executable.
Code GPL-3.0, no game data included, you point it at your own install.
github.com/nemo22/skynet-godot