Hitman Contracts PRM
PRM
- Format Type : data file - Primitives
- Endian Order : Little Endian
- uk - unknown variable, applicable to the section it’s in.
Format Specifications
Header
uint32 {4} - address of Table 1
uint32 {4} - address of Table 2
uint32 {4} - address of Table 2
uint32 {4} - noRecTable2, number of records in table 2
Table
- index 1 is 55 records long
- { repeat for number of records in section
- uint32 {4} - if > 0, address (A#A)
- uint32 {4} - if > 0, address (A#A)
- }
Address A#A
- Note - 116 byte record, refereced from tables
- uint16 {2} - uk1a
- uint16 {2} - uk1b
- uint16 {2} - refTEX, texture reference in TEX array table 1
- uint16 {2} - uk2b
- uint32 {4} - addressAA, address of another A#A record
- uint16 {2} - uk6a
- uint16 {2} - noRecAC, number of AC records
- uint32 {4} - addressAB, address of A#AB record, model bounding box
- uint32 {4} - addressAC, start address of A#AC records, model coordinates
- uint32 {4} - uk9
- uint32 {4} - uk10
- uint16 {2} - uk11a
- uint16 {2} - uk11b
- uint32 {4} - addressAD, address of A#AD records
- uint32 {4} - addressOCT_CA, address of record in OCT (subtract 5)
- uint16 {2} - uk14a
- uint16 {2} - uk14b
- uint32 {4} - uk17
- uint32 {4} - addressAG, address A#AG, model coordinate order and groups
- uint32 {4} - noRecAG, total number of uint16 for area AG
- uint32 {4} - uk20, 0 or 0x80
- uint32 {4} - uk21, 0
- uint32 {4} - uk22, mostly 1, but also 0x3,4,A,19
- uint32 {4} - noGroupsAC, number of AC groups (following each other)
- float {4} - uk24, 0.0, 1.0, 0.99ish
- float {4} - uk25
- uint32 {4} - uk26, 0 or 1
- uint32 {4} - uk27, 0, discrete int. < 0xFF
- float {4} - uk28, 0.0 to 1.0
- uint32 {4} - uk29, < 0x1FF
- float {4} - uk30, 0.0, 0.5, 0.6, 0.7, 1.0
- float {4} - uk31, 0.0. 0.5, 0.75, 1.0, 2.0, 10.0
- float {4} - uk32, 0.0, 1 value -1.0
- uint16 {2} - uk33a, 0x0 to 0xFFF
- uint16 {2} - uk33b, 0x0, several 0xE
Address A#AB
- Note - 56 byte record, referenced from A#A
- uint32 {4} - uk2, 0x7E 96 76 99
- uint32 {4} - uk3
- float {4} - uk4, several records 1.0, -1.0
- float {4} - uk5, 0.0, several records -100.0 to 217.4
- uint32 {4} - uk6, 0x7E 96 76 99
- uint32 {4} - uk7, 0
- uint32 {4} - uk8, 0
- uint32 {4} - uk9, 0
- float {4} - upper bounding coord, X
- float {4} - upper bounding coord, Y
- float {4} - upper bounding coord, Z
- float {4} - lower bounding coord, X
- float {4} - lower bounding coord, Y
- float {4} - lower bounding coord, Z
Address A#AC
- Note – main records 36 bytes, start refereced from A#A
- { repeat ‘noGroupsAC’ times
- { repeat ‘noRecAC’ times
- float {4} - X
- float {4} - Y
- float {4} - Z
- float {4} - uk4, X factors?
- float {4} - uk5, Y factors?
- float {4} - uk6, Z factors?
- uint32 {4} - uk7
- float {4} - uk8
- float {4} - uk9
- float {4} - X
- }
- { repeat ‘noRecAC’ times
- }
Address A#AD
- Note – main records 16 bytes, start referenced from A#A
- uint32 {4} - noRecAD
- { repeat ‘noRecAD’ times
- float {4} - uk1
- float {4} - uk2
- float {4} - uk3
- float {4} - uk4
- float {4} - uk1
- }
Address A#AG
- model makeup – reference index to AC record
- uint16 {2} - noRecAG
- { repeat ‘noRecAG’ times
- uint16 {2} - noRecAG2, if = 2 (line), >2 (consecutive triangles, abc bcd)
- { repeat ‘noRecAG2’ times
- uint16 {2} - index of coordinate in A#AC
- uint16 {2} - index of coordinate in A#AC
- }
- uint16 {2} - noRecAG2, if = 2 (line), >2 (consecutive triangles, abc bcd)
- }
MultiEx BMS Script
Not written yet
Notes and Comments
This sub file contains the models, all the coordinates for one unit are in A#AC records these are indexed from the A#AG records into the appropriate groups
There are other records in this file, referenced from where is unknown
Compatible Programs
None Yet