Hitman Contracts PRM

From XentaxWiki
Jump to: navigation, search

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)
}

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
}
}

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
}

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
}
}


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