The Pink Panther games use only two data files.
These are ORB and BRO.
Structure of ORB file header
1
2
3
4
5
6
7
8
|
char name[4]; // ORB uint16 minorVersion; uint16 majorVersion; uint32 timestamp; uint32 tableOffset; uint32 tableSize; |
After header, we will look at the table. It is located at the end of ORB. It contains descriptions of objects. The names in this table are sorted, so the binary search is used for searching.
1
2
3
4
5
6
7
|
struct ObjectDescription { char name[16]; uint32 objectsOffset; uint32 objectsCount; uint32 resourcesOffset; uint32 resourcesCount; }; |
Let’s look at resources table. Each object description has offset to the resource descriptions table.
1
2
3
4
5
6
|
struct ResourceDescription { char name[16]; uint32 offset; uint32 size; bool inBro; }; |
The last field determines where the resource is located.
BRO file contains only resources and it is only used in Passport to Peril. In Hokus Pokus it is empty.
1
2
3
4
5
6
|
char name[4]; // BRO uint16 minorVersion; uint16 majorVersion; uint32 timestamp; |
The timestamps of BRO and ORB must be equal to each other.