Why WipEout Pulse custom skins are named 16034453
Earlier this year, the ship skin editor was released, which allowed once again to create custom liveries for the game (this feature was at some point an official feature by a Flash-based web skin editor, but that editor and server are long gone by now.
The custom skins are basically just a normal PSP-formatted save game, with a file called "16034453" that contains the texture data for the skin. But why is it called like that?
As we know from previous investigations into the WAD format, the "filename" in the WAD header is a 32-bit hash using the CRC-32 algorithm with 0xFFFFFFFF as the initial value (by default, CRC-32 uses 0x00000000 as its value).
The same algorithm is (for some reason) used to hash the
"real" filename that the game looks up. The game is looking
image.dat as the filename. Instead of using the value
of the hash as-is (like with WAD) or using the hexadecimal
representation (which for a 32-bit value would always be 8
characters), the decimal representation is used. For a 32-bit
unsigned integer, the decimal representation might be up to
10 characters (0xFFFFFFFF = 4294967295). Presumably in order to
fit into the 8.3 file naming scheme, the decimal representation
of the hash is therefore cut off to 8 characters, and this ends
up being the 16034453 filename we have seen in the save games:
% python3 >>> import zlib >>> zlib.crc32(b'image.dat', 0xFFFFFFFF) 160344534 >>> str(_)[:8] '16034453'
This might be the reason why you don't see any mentions of
"16034453" in the WipEout Pulse binary, but you DO see
being used to open the ship skin. Given that it's basically using
the same method (CRC-32 with different initial value) as the WAD
file format, one could see this as weird "WAD contents in a folder"
encoding, or maybe just a really simple form of obfuscation.
In any case, when you see
16034453, you now know it's a derived
image.dat, which is what the game is looking for.