section | file offset | bytes | element name | notes |
header | ||||
0 | 8 | unknown | ||
Map of 128 * 128 elements | ||||
8 | 2 | code represents a tree/door/ped/vehicle/etc | setting to zero makes the object go away | |
People (peds) | repeats 256 times | |||
32776 | 4 | unknown | ||
32780 | 1 | x subtile position | 0 - 256, percentage of tile | |
32781 | 1 | x tile | ||
32782 | 1 | y position in tile | 0 - 256, percentage of tile | |
32783 | 1 | y tile | ||
32784 | 1 | z position in tile | 0 - 256, percentage of tile | |
32785 | 1 | z tile | ||
32786 | 1 | unknown | may have something to do with the minimap | |
32787 | 1 | unknown | something to do with control | |
32788 | 2 | unknown | ||
32790 | 2 | vistype | code for ped type | |
32792 | 2 | currvistype | actual picture code | |
32794 | 1 | unknown | shoot distance? if large, computer just follows and won't shoot until closer | |
32795 | 5 | unknown | ||
32800 | 1 | objtype | minimap, 1 = ped, 2 = car | |
32801 | 5 | unknown | ||
32806 | 8 | unknown | might contain agent ownership flags | |
32814 | 4 | unknown | ||
32818 | 4 | unknown | ||
32822 | 12 | unknown | ||
32834 | 13 | unknown | ||
32847 | 4 | adrenalevels | ||
32851 | 4 | intelilevels | ||
32855 | 4 | perceplevels | ||
32859 | 1 | unknown | ||
32860 | 8 | unknown | ||
Cars (vehicles) | repeats 64 times | |||
56328 | 4 | unknown | ||
56332 | 1 | x subtile position | 0 - 256, percentage of tile | |
56333 | 1 | x tile | ||
56334 | 1 | y position in tile | 0 - 256, percentage of tile | |
56335 | 1 | y tile | ||
56336 | 1 | z position in tile | 0 - 256, percentage of tile | |
56337 | 1 | z tile | ||
56338 | 1 | unknown | if not set to 4, there is no car | |
56339 | 5 | unknown | something to do with total health | |
56344 | 1 | currvistype | actual picture code | |
56345 | 1 | unknown | if not set to 6, there is no car | |
56346 | 3 | unknown | ||
56349 | 3 | unknown | ||
56352 | 1 | status | 2 = can enter car | |
56353 | 1 | type | 13 = civilian vehicle | |
56354 | 4 | direction | setting to all 122 explodes car | |
56358 | 2 | unknown | ||
56360 | 2 | unknown | if both set to 122, there is no car | |
56362 | 6 | unknown | ||
56368 | 1 | speed | 0 = can't move | |
56367 | 1 | unknown | ||
Trees/doors/etc (statics) | repeats 400 times | |||
59016 | 4 | unknown | ||
59020 | 1 | x subtile position | 0 - 256, percentage of tile | |
59021 | 1 | x tile | ||
59022 | 1 | y position in tile | 0 - 256, percentage of tile | |
59023 | 1 | y tile | ||
59024 | 1 | z position in tile | 0 - 256, percentage of tile | |
59025 | 1 | z tile | ||
59026 | 1 | unknown | seems to be set to 4 or 6 | |
59027 | 3 | unknown | always zero | |
59030 | 1 | unknown | first level: 35, 4d, 35, 0, 1 | |
59031 | 1 | unknown | first level: 4, 0 | |
59032 | 1 | unknown | first level: 6e, 8a, 63, 73, 5f, 74 | |
59033 | 1 | unknown | first level: 12, 7, 5 | |
59034 | 1 | unknown | first level: 36, 4d, 35, 3d, 27, e3 | |
59035 | 1 | unknown | first level: 4, 2, 0 | |
59036 | 1 | unknown | first level: 28, 32 | |
59037 | 3 | unknown | always zero | |
59040 | 1 | unknown | first level: 5 | |
59041 | 1 | unknown | first level: 0c, 13, 16 | |
59042 | 1 | unknown | first level: 40, 80, 0 | |
59043 | 3 | unknown | always zero | |
unknown | repeats 725 times | |||
71016 | 36 | unknown | may be weapon info | |
unknown | ||||
97116 | 12 | unknown | ||
unknown | repeats 2048 times | |||
97128 | 8 | unknown | ||
unknown | ||||
113512 | 437 | unknown | ||
mission data | ||||
113949 | 11 | unknown | ||
113960 | 2 | map | which map for this mission | |
113962 | 2 | minx | minimum x scroll on map | |
113964 | 2 | miny | minimum y scroll on map | |
113966 | 2 | maxx | maximum x scroll on map | |
113968 | 2 | maxy | maximum y scroll on map | |
113970 | 4 | unknown | always zero | |
113974 | 2 | objective | see below | |
113976 | 2 | objective data | see below | |
113978 | 97 | unknown | ||
unknown | repeats 129 times | |||
114075 | 15 | unknown | ||
code | objective | data |
1 | persuade | ped = (objective_data - 2) / 0x5c |
2 | assassinate | ped = (objective_data - 2) / 0x5c |
3 | protect | ped = (objective_data - 2) / 0x5c |
5 | equipment aquisition | unknown |
10 | combat sweep (police) | none |
11 | combat sweep | none |
14 | raid and rescue | vehicle = ((objective_data & 0xff) - 2) / 0x2a |
15 | use vehicle | vehicle = ((objective_data & 0xff) - 2) / 0x2a |
ADDITIONAL INFO
If you swap two of these files around (eg rename game01.dat to game02.dat and vice versa) then you will swap over the map your agents fight on and the victory conditions they need to achieve. It is just as if you are playing the other mission.
The briefing remains the same except that the briefing mini map which is also swapped. So it is likely that these files contain all data that the mission engine refers to (map, scripts, objectives, enemies etc). Some of this data may be stored in other files with gameXX.dat containing pointers to that data.
Known facts:
0x01 persuadertron
0x02 pistol
0x03 gauss gun
0x04 shotgun
0x05 uzi
0x06 minigun
0x07 laser
0x08 flamer
0x09 long range
0x0A scanner
0x0B medikit
0x0C time bomb
0x0D access card
0x0E invalid
0x0F invalid
0x10 invalid
0x11 energy shield
These values are also used for the weapons of the player's agents in the saved game files.