Skip to content

Bpa files

Enrique Somolinos Pérez edited this page May 17, 2017 · 2 revisions

All this information is extractd from http://www.shikadi.net/moddingwiki/Death_Rally_BPA_Format thanks to Ceidwad.

Header

Data type Description
UINT32LE numFiles Number of files in the archive
FILEREC[255] fileRecords Encrypted FAT

Each FILEREC is of the form

Data type Name Description
char[13] encryptedName Encrypted filename, padded with non-encrypted 0x00 bytes
UINT32LE size Size of the file data

The FILEREC table has a fixed size of 255 * 17 bytes, padded with null bytes, and cannot contain more than 255 FILERECs. Compressed file data begins immediately after the table, at offset 0x10F3. Because the header does not store offsets, these must be calculated by accumulating through the table.

The file content is not compressed or encrypted by the archive itself, however many of the files typically found in this archive are already encrypted as part of their respective file formats.

Filename encryption

To restore a filename, subtract 117 - 3 * index from each byte, where index is the 0-based index of the byte in the filename. This will yield a non-null-terminated string in uppercase. The encrypted filename is null-terminated (the terminating/padding null bytes are not encrypted).

Tools

To extract Bpa files you can use the tool called bpaextractor.py in the project.

Clone this wiki locally