The game loads archives rebuilt from scratch
Measured
Repacking an archive is not the same as editing one. Every member is rewritten by the packing library rather than copied, so the question is whether the result is still something a 1997 engine will read. Across four attended sittings it was, for all five archives the game ships — the scripts, the pictures, the sprites and both sound archives.
The runs covered both of the storage classes the archives use, edits that change a member's size in either direction, several members changed in one build, and a member added to an archive that never contained it. Each run was built with a control: a rung whose expected result is the unmodified screen, read alongside a rung that changes something impossible to miss, so that "the game ignored our file" and "our file is broken" stay distinguishable.
A member added to an archive is not merely tolerated — the game will read one. A probe added a sprite under a name no shipped archive contains, a script asked for that name, and the game registered the sprite and painted its pixels. That measurement is how the palette byte order was settled, since the deliberately authored colours exist in no other file.
This project published the opposite for three days after measuring it. The evidence was filed under the question it answered — palette order — rather than the separate question it also settled, so a limit went on being repeated after its own refutation. It is recorded here because the failure is a filing failure, and those are the ones that recur.
Almost every anonymous archive entry has its name back
Measured
Archives store a hash of each filename rather than the name, so an entry nobody has a name for is addressable only by position. Across the installs studied the number of such entries went from over 23,000 to 21, by probing candidate names against every archive and keeping only the ones the archive's own lookup confirmed.
The check was run with a negative control, which earned its place: the library resolves a positional pseudo-name by block position, which would have manufactured thousands of false confirmations had it gone unnoticed. No block in any archive was confirmed by more than one name.
Two limits: the recovered spelling's capitalisation is not established, because the hashing is case-insensitive, and none of the recovered names has been put in front of the game.
The 3.02 community patch is a focused code change
Measured
It adds three scripts and makes token-level edits in thirteen more. Its picture archive is byte-for-byte identical to the retail one, so nothing visual changed.
It also restores real filenames for 363 archive entries that are anonymous in the retail listing — a cataloguing improvement rather than a gameplay one, and a genuinely useful one for anyone reading the scripts.
GS5R3 is a fork, not an overlay
Measured
The larger balance project replaces whole subsystems with parallel files and adds or replaces hundreds of images. Retail and 3.02 can be diffed script by script; this one has to be studied a subsystem at a time, because names, layout, code and art all moved together.
A detail that bites on macOS
Measured
One archive contains two entries whose names differ only in letter case. Extracting it onto a case-insensitive filesystem silently produces one fewer file than the archive contains, because one overwrites the other. The inventory keeps both entries in its manifest and says which one lost.