NPA

From Game Research Wiki
Revision as of 21:23, 14 December 2015 by Orin (talk | contribs) (→‎Addition Notes)
Jump to navigation Jump to search

Used in the following game(s):

  • Demonbane
  • Steins;Gate

Structure

Overall
Size Content Description
4 Bytes Index Size
? Bytes Index Data (protected)
? Bytes File Data (protected)
Index Header
Size Content Description
4 Bytes File count Number of index entries
Index Entry
4 Bytes Filename Length
? Bytes Filename Each character is 2 bytes
4 Bytes File Size
4 Bytes Offset
4 Bytes Unknown Always 0x00000000

Addition Notes

This format obscure the data it stores. Both the index and data are protected in the same way. The first data read is 4 bytes at the start of the file. This is the size of the index and it's value is not obscured. Next the full index is read into memory and decoded by XOR'ing it by the key. Once the index is processed, data can be loaded but the data is protected the same way the index is, XOR'ed by a key. The game makes use of the XMM registers (SSE) and the assembly code ends up being a small, tight loop with just a few assembly instructions such as MOVDQA and PXOR.

Key Game(s)
BD AA BC B4 AB B6 BC B4 Steins;Gate (JAST USA)

Tools

Coming soon...