-
Notifications
You must be signed in to change notification settings - Fork 0
Pod 3 Format Reference
Jon Daniel edited this page Nov 2, 2024
·
83 revisions
EPD POD1 POD2 POD3 POD4 POD5 POD6 Terminal Reality Home
namespace tr::pod3
{
struct dependency : std::array<uint8_t, 264>
{
};
struct header
{
c8<4> ident; /* "POD3" */
u32<1> checksum; /* CRC-32/MPEG-2 header checksum of bytes 8 to 288 of size 280 */
c8<80> comment;
u32<1> entry_count;
u32<1> audit_count;
u32<1> revision;
u32<1> priority;
c8<80> author;
c8<80> copyright;
u32<1> entry_offset; /* zero based */
u32<1> entries_crc;
u32<1> names_size; /* (entry_offset + entry_count * sizeof(struct entry)) based */
i32<1> depends_count;
i32<1> depends_crc;
i32<1> audit_crc;
};
u32<1> names_offset = entry_offset + entry_count * sizeof(entry);
u32<1> audit_offset = names_size + names_offset + sizeof(struct dependency) * depends_count;
static constexpr u32<1> BLOCK_SIZE = 2048;
constexpr inline u32<1> ceil2mpow2(u32<1> x, u32<1> pow2)
{
return (x + (pow2 - 1)) & -pow2;
}
struct extra_header : struct header
{
i32<1> pad120;
};
constexpr inline unknown(u8<1>* buf, i32<1> off)
{
struct extra_header* extra_header = reinterpret_cast<struct extra_header*>(buf);
extra_header->pad11c = ceil2mpow2(off + extra_header->pad10c, BLOCK_SIZE) - extra_header->pad10c;
extra_header->pad120 = extra_header->entry_offset - extra_header->pad11c > BLOCK_SIZE ? BLOCK_SIZE : extra_header->entry_offset - extra_header->pad11c;
}
struct entry
{
u32<1> path_offset; /* (entry_offset + entry_count * sizeof(entry)) based */
u32<1> size;
u32<1> offset;
t32<1> timestamp;
u32<1> checksum;
};
};-
PodTools is a powerful utility with support for a variety of Bloodrayne 1/2 formats. Unfortunately, this utility does not take care of checksums and timestamp. The header checksum gets the magic value
84 8E DE 4Eand other fields get0 - br2poded [mirror]. According to this, the Buka localizer used its own game archives format, making changes to the executable file. Therefore, a special utility has been released for the Russian version of Bloodrayne 2.
-
Abyss' POD Tools somewhere on the web, it is possible to find localized versions of Bloodrayne 1, the archives of which will contain a comment starting with
[Abyss' POD Tools]. However, no other evidence of its existence has been found
All information here is to my best knowledge, is is not proven by any official reference manual by Microsoft or Terminal Reality.