Savegame File-Listing: Difference between revisions
m Renamed GTFStasisHd to GTFStasis because it was listed twice |
→systInfo: planet atmospheres bitmask |
||
(53 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
This is a list of the explored content within the save games. | |||
For learning to use this information, also have a look at [[Editing_Savegames]]! | |||
Please aware that some information might be incomplete or even incorrect. | Please aware that some information might be incomplete or even incorrect. | ||
After extracting a savegame with UltimateEditor you get quite a ton of files. Here's an overview about them and the hexcode they contain: | |||
== General Information == | == General Information == | ||
Line 19: | Line 13: | ||
* filename | * filename | ||
* gamesave name | * gamesave name | ||
* galaxy | * galaxy shape | ||
* galaxy size | * galaxy size | ||
* minor race setting | |||
* difficulty level | * difficulty level | ||
* random events on/off | |||
* strategical timer | * strategical timer | ||
* tactical timer | * tactical timer | ||
Line 34: | Line 30: | ||
* player names (if MP) | * player names (if MP) | ||
Offset 0x0000 to | Offset 0x0000 to 0x000C filename (00 terminated)<br/> | ||
Offset 0x000D to | Offset 0x000D to 0x003F savename (00 terminated)<br/> | ||
Offset 0x0040 last turn (for savename)<br/> | Offset 0x0040 last turn (for savename)<br/> | ||
Offset 0x004C 00 = singleplayer 01 = multiplayer<br/> | Offset 0x004C 00 = singleplayer 01 = multiplayer<br/> | ||
Offset 0x0250 | Offset 0x0250 player empires bitmask<br/> | ||
Offset 0x0252 player | Offset 0x0252 player empire (00 = card, 01 = fed, 02=ferg, 03=kling, 04=rom)<br/> | ||
Offset 0x0254 to 0x0258 technology starting levels | Offset 0x0253 predictor for starting EL of minor races<br/> | ||
Offset 0x0260 | Offset 0x0254 to 0x0258 technology starting levels for each major (card, fed, ferg, kling, rom)<br/> | ||
Offset 0x0264 | Offset 0x0260 galaxy shape (00 = irregular, 01 = elliptic, 02 = ring, 03 = spiral)<br/> | ||
Offset 0x026C difficulty (00 = | Offset 0x0264 galaxy size (00 = small, 01 = middle, 03 = big)<br/> | ||
Offset | Offset 0x0268 Minor Races setting (0=none, ..., 3=many)<br /> | ||
Offset 0x026C difficulty level (00 = simple, 01 = easy, 02 = normal, 03 = hard, 04 = impossible; attention, deviation with dynamic key variables)<br/> | |||
Offset 0x026E random events (0=OFF, 1=ON)<br /> | |||
Offset 0x0270 races in game (bitwise XOR, little endian (8bit packets) => order is the same with alienInfo)<br/> | |||
Offset 0x0278 beaten empires (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom)<br/> | Offset 0x0278 beaten empires (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom)<br/> | ||
Offset 0x0280 to 0x0285(?) races with ships<br/> | Offset 0x0280 to 0x0285(?) races with ships<br/> | ||
Offset 0x0290 tactical mode (0=DETAILED, 2=ABSTRACT)<br/> | |||
Offset 0x0294 a cheat button bitmask<br/> | |||
Offset 0x0298 (test nz) 1=trade guild strike, 2=subspace anomaly, 8=end trade strike, 10h=end anomaly<br/> | |||
Offset 0x02A0 generated monsters bitmask ([http://www.armadafleetcommand.com/botf/modules.php?name=Forums&file=viewtopic&t=611&start=22 not loaded by game])<br /> | |||
Offset 0x02A4 strategical timer<br/> | Offset 0x02A4 strategical timer<br/> | ||
Offset 0x02A8 tactical timer<br/> | Offset 0x02A8 tactical timer<br/> | ||
Offset 0x02AC | Offset 0x02AC current turn<br/> | ||
Offset 0x02AE last turn points (for statistic)<br/> | Offset 0x02AE last turn points (for statistic)<br/> | ||
Offset 0x02BA(maybe less)+ statistic of the cards<br/> | Offset 0x02BA(maybe less)+ statistic of the cards<br/> | ||
Line 71: | Line 74: | ||
* number of running dilithium sources | * number of running dilithium sources | ||
* number of ships under construction | * number of ships under construction | ||
* population | * population total | ||
* moral shown in empire state | * moral shown in empire state | ||
* ship-population support | * ship-population support | ||
* empire-wide ground combat bonus | |||
* known empires (for diplomacy) | * known empires (for diplomacy) | ||
Line 80: | Line 84: | ||
Offset 0x0000 to 0x0027 empire name<br/> | Offset 0x0000 to 0x0027 empire name<br/> | ||
Offset 0x0028 to 0x004F emperor name<br/> | Offset 0x0028 to 0x004F emperor name<br/> | ||
Offset 0x0050 to 0x0053 | Offset 0x0050 to 0x0053 address of provInfo (8 bytes per system), at[+4] number of held systems | ||
Offset 0x0054 to 0x0057 credits | ---- | ||
Offset 0x0058 to 0x005B income | => [area 0x54 to 0x97 -> GUI / preview]<br/> | ||
Offset 0x005C to 0x005F real | Offset 0x0054 to 0x0057 credits<br/> | ||
Offset 0x0058 to 0x005B income<br/> | |||
Offset 0x005C to 0x005F real fleet support cost (i.e. -pop support) + building support costs (cf. 0x00A0)<br/> | |||
Offset 0x0060 to 0x0063 number of running dilithium sources<br/> | Offset 0x0060 to 0x0063 number of running dilithium sources<br/> | ||
Offset 0x0064 to 0x0067 number of ships under construction<br/> | Offset 0x0064 to 0x0067 number of ships under construction<br/> | ||
Offset 0x0068 to 0x006B | Offset 0x0068 to 0x006B current research points<br/> | ||
Offset 0x006C to 0x006F population | Offset 0x006C to 0x006F cumulated total population<br/> | ||
Offset 0x0070 to 0x0073 unknown<br/> | Offset 0x0070 to 0x0071 unused<br/> | ||
Offset 0x0074 to 0x0077 | Offset 0x0072 to 0x0073 unknown<br/> | ||
Offset 0x0078 to 0x007B current intel | Offset 0x0074 to 0x0075 morale shown in empire state (cf. 0x00B8)<br/> | ||
Offset 0x007C to 0x0093 | Offset 0x0076 to 0x0077 unknown<br/> | ||
Offset 0x0094 to 0x0097 ship-population support (not | Offset 0x0078 to 0x007B current intel<br/> | ||
Offset 0x007C to 0x0093 (6 tech areas * 4bytes) cumulated research bonus in percent<br/> | |||
Offset 0x0094 to 0x0097 ship-population support (0 if fleetcost is larger i.e. not always the display value)<br/> | |||
=> [area 0x98 to 0xDB -> effective used values (displacement 0x44)]<br/> | |||
Offset 0x0098 to 0x009B credits<br/> | Offset 0x0098 to 0x009B credits<br/> | ||
Offset 0x009C to 0x00AB | Offset 0x009C to 0x009F income (used as empire strength indicator for base of gifts & demands)<br/> | ||
Offset 0x00AC to 0x00AF | Offset 0x00A0 to 0x00A3 real fleet support cost (i.e. -pop support) + building support costs (from edifice.bst+7E, subtracted from credits each turn)<br/> | ||
Offset 0x00B0 to 0x00B3 | Offset 0x00A4 to 0x00A7 number of running dilithium sources<br/> | ||
Offset 0x00B4 to 0x00B7 unknown<br/> | Offset 0x00A8 to 0x00AB number of ships under construction<br/> | ||
Offset 0x00B8 to 0x00B9 | Offset 0x00AC to 0x00AF research total<br/> | ||
Offset 0x00B0 to 0x00B3 cumulated total population (for ship support calculation)<br/> | |||
Offset 0x00B4 to 0x00B5 empire-wide morale effect of current events (not at 0x70)<br/> | |||
Offset 0x00B6 to 0x00B7 unknown<br/> | |||
Offset 0x00B8 to 0x00B9 morale text (signed integer, little endian! -4 =Rebellious, -3 =Defiant, -2 =Disgruntled, -1=Apathetic, 0 =Content, 1 =Pleased, 2 = Loyal, 3 =Fanatic)<br/> | |||
Offset 0x00BA to 0x00BB unknown<br/> | Offset 0x00BA to 0x00BB unknown<br/> | ||
Offset 0x00BC to 0x00BF = intel total<br/> | Offset 0x00BC to 0x00BF intel total<br/> | ||
Offset | Offset 0x00C0 to 0x00D7 (6 tech areas * 4bytes) cumulated research bonus in percent<br/> | ||
Offset 0x00D8 to 0x00DB ship-population support (0 if fleetcost is larger) | |||
---- | |||
=> [area 0xDC to 0xF5 -> GUI / preview]<br/> | |||
Offset 0x00DC to 0x00DD +% credits<br/> | |||
Offset 0x00DE to 0x00DF empire-wide morale bonus<br/> | |||
Offset 0x00E0 to 0x00E1 +% raiding (not working)<br/> | |||
Offset 0x00E2 to 0x00E3 +% industry (missing feature)<br/> | |||
Offset 0x00E4 to 0x00E5 +% research (all areas)<br/> | |||
Offset 0x00E6 to 0x00E7 +% security<br/> | |||
Offset 0x00E8 to 0x00E9 +% espionage total<br/> | |||
Offset 0x00EA to 0x00EB +% sabotage total<br/> | |||
Offset 0x00EC to 0x00ED +% economic intel (not working)<br/> | |||
Offset 0x00EE to 0x00EF +% scientific intel (not working/missing feature)<br/> | |||
Offset 0x00F0 to 0x00F1 +% military intel (not working/missing feature)<br/> | |||
Offset 0x00F2 to 0x00F3 +% traderoute credits<br/> | |||
Offset 0x00F4 to 0x00F5 +% ground combat (e.g. Hall of Warriors)<br/> | |||
=> [area 0xF6 to 0x10F -> effective used values (displacement 0x1A)]<br/> | |||
Offset 0x00F6 to 0x00F7 +% credits<br/> | |||
Offset 0x00F8 to 0x00F9 empire-wide morale bonus<br/> | |||
Offset 0x00FA to 0x00FB +% raiding (not working)<br/> | |||
Offset 0x00FC to 0x00FD +% industry (missing feature)<br/> | |||
Offset 0x00FE to 0x00FF +% research (all areas)<br/> | |||
Offset 0x0100 to 0x0101 +% security<br/> | |||
Offset 0x0102 to 0x0103 +% espionage total<br/> | |||
Offset 0x0104 to 0x0105 +% sabotage total<br/> | |||
Offset 0x0106 to 0x0107 +% economic intel (not working)<br/> | |||
Offset 0x0108 to 0x0109 +% scientific intel (not working/missing feature)<br/> | |||
Offset 0x010A to 0x010B +% military intel (not working/missing feature)<br/> | |||
Offset 0x010C to 0x010D +% traderoute credits<br/> | |||
Offset 0x010E to 0x010F +% ground combat (e.g. Hall of Warriors) | |||
---- | |||
Offset 0x0110 to 0x0123 (5empires * 4bytes) = treaty label: 0=Neutral, 1=War, 2=Alliance, 3=Peace<br/> | Offset 0x0110 to 0x0123 (5empires * 4bytes) = treaty label: 0=Neutral, 1=War, 2=Alliance, 3=Peace<br/> | ||
Offset 0x0124 to 0x0137 (5empires * 4bytes) = territory accessible: 0=No, 1=Yes<br/> | Offset 0x0124 to 0x0137 (5empires * 4bytes) = territory accessible: 0=No, 1=Yes<br/> | ||
Offset 0x0138 to 0x014B (5empires * 4bytes) = trade allowed: 0=No, 1=Yes<br/> | Offset 0x0138 to 0x014B (5empires * 4bytes) = trade allowed: 0=No, 1=Yes<br/> | ||
Offset 0x014C to 0x0157 | Offset 0x014C to 0x014F total number of traderoutes<br/> | ||
Offset 0x0150 unknown<br/> | |||
Offset 0x0151 to 0x0153 unused?<br/> | |||
Offset 0x0154 to 0x0157 address of trdeInfo<br/> | |||
Offset 0x0158 to 0x015F known races (bitwise XOR with 0x01 = card, 0x02 = fed, 0x04 = ferg, 0x08 = kling, 0x10 = rom, 0x20 = acam ...)<br/> | Offset 0x0158 to 0x015F known races (bitwise XOR with 0x01 = card, 0x02 = fed, 0x04 = ferg, 0x08 = kling, 0x10 = rom, 0x20 = acam ...)<br/> | ||
Offset 0x0160 to 0x01B3 | Offset 0x0160 to 0x01AF present (or in production queue) "one per empire" 2 byte building IDs, 40 entries max.<br/> | ||
Offset 0x01B4 to 0x01B7 | Offset 0x01B0 to 0x01B3 random events bitmask<br /> | ||
Offset 0x01B8 to 0x01BB | Offset 0x01B4 to 0x01B7 cumulated build cost of war fleet (ship functions 0-4)<br/> | ||
Offset 0x01B8 to 0x01BB credits lost due to raids, subtracted from [0x98] | |||
== Aliens == | == Aliens == | ||
Line 122: | Line 170: | ||
Offset 0x0000 = 01 if race is alive<br/> | Offset 0x0000 = 01 if race is alive<br/> | ||
Offset 0x0018 = starID of homesystem<br/> | Offset 0x0018 = starID of homesystem<br/> | ||
Offset 0x001C = address of ?[at +4 address of alienTFInfo entry?, number of hold fleets/ships]<br/> | |||
Offset 0x0020 = known races (bitwise XOR with 0x01 = card, 0x02 = fed, 0x04 = ferg, 0x08 = kling, 0x10 = rom, 0x20 = acam ...)<br/> | Offset 0x0020 = known races (bitwise XOR with 0x01 = card, 0x02 = fed, 0x04 = ferg, 0x08 = kling, 0x10 = rom, 0x20 = acam ...)<br/> | ||
Offset 0x0024 = known races (IDs 0x20+)<br/> | Offset 0x0024 = known races (IDs 0x20+)<br/> | ||
Line 129: | Line 178: | ||
== Map == | == Map == | ||
=== galInfo === | === galInfo === | ||
* galaxy size (small | * galaxy shape (irregular, elliptic, ring, spiral) | ||
* galaxy size (small, medium, large) | |||
* count of sectors | * count of sectors | ||
* count of stars | * count of stars | ||
* count of anomalies | * count of anomalies | ||
* count of outposts/starbases | |||
Offset 0x0008 to 0x000B = galaxy size ( | Offset 0x0004 to 0x0007 = galaxy shape (0=irregular, 1=elliptic, 2=ring, 3=spiral)<br/> | ||
Offset 0x0008 to 0x000B = galaxy size (0 = small, 1 = medium, 2 = large)<br/> | |||
Offset 0x000C to 0x000D = number of stars<br/> | Offset 0x000C to 0x000D = number of stars<br/> | ||
Offset 0x000E to 0x000F = number of anomalies<br/> | Offset 0x000E to 0x000F = number of anomalies<br/> | ||
Offset 0x0010 to 0x0011 = number of outposts/starbases<br/> | |||
Offset 0x0014 to 0x0015 = number of sectors | Offset 0x0014 to 0x0015 = number of sectors | ||
Line 170: | Line 223: | ||
Offset 0x0028 to 0x0029 = explored by majors (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom)<br/> | Offset 0x0028 to 0x0029 = explored by majors (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom)<br/> | ||
Offset 0x0030 to 0x0031 = sector scanned by majors (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom, 20 = blackhole)<br/> | Offset 0x0030 to 0x0031 = sector scanned by majors (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom, 20 = blackhole)<br/> | ||
Offset 0x0038 to 0x003B = if >0 sector monster occupied?<br/> | |||
Offset 0x003C to 0x003F = address of ???, lists all task forces in sector (8 bytes/taskforce)<br/> | |||
Offset 0x0040 to 0x0043 = scanpower of card (signed, little endian)<br/> | Offset 0x0040 to 0x0043 = scanpower of card (signed, little endian)<br/> | ||
Offset 0x0044 to 0x0047 = scanpower of fed (signed, little endian)<br/> | Offset 0x0044 to 0x0047 = scanpower of fed (signed, little endian)<br/> | ||
Offset 0x0048 to 0x004B = scanpower of ferg (signed, little endian)<br/> | Offset 0x0048 to 0x004B = scanpower of ferg (signed, little endian)<br/> | ||
Offset 0x004C to 0x004F = scanpower of kling (signed, little endian)<br/> | Offset 0x004C to 0x004F = scanpower of kling (signed, little endian)<br/> | ||
Offset 0x0050 to | Offset 0x0050 to 0x0053 = scanpower of rom (signed, little endian)<br/> | ||
Offset 0x0054 to 0x0067= (5empires * 4bytes) = sector accessible: 0=No, 1=Yes (cf. empsInfo+124h) | |||
=== stellInfo === | === stellInfo === | ||
Line 210: | Line 266: | ||
gives a view of the galaxy map for every empire<br/> | gives a view of the galaxy map for every empire<br/> | ||
decreasing values around home system position<br/> | decreasing values around home system position<br/> | ||
<br/> | |||
Some observations regarding the ownership claim and the sphere of influence value:<br/> | |||
- sectors owned by an empire are only under that empire's influence<br/> | |||
- non-membered minor race sectors can be under the influence of more than one empire<br/> | |||
- disputed sectors are under the influence of at least two empires<br/> | |||
- unclaimed sectors may be under influence of empires as well<br/> | |||
- the value of the influence is not the deciding factor whether a sector is claimed or not, for example a sector with value 10 may or may not be claimed<br/> | |||
- editing sector.lst claim data and setting empire influence in the sector to 0 will not remove the empire's claim of a disputed sector<br/> | |||
== Systems == | == Systems == | ||
Line 253: | Line 317: | ||
* green star = 73 2D 67 2D | * green star = 73 2D 67 2D | ||
* blue star = 73 2D 62 2D | * blue star = 73 2D 62 2D | ||
Offset 0x0036 to 0x003E unknown<br/> | |||
Offset 0x003F = system explored by empires (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom)<br/> | Offset 0x003F = system explored by empires (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom)<br/> | ||
Offset 0x0040 to | Offset 0x0040 to 0x0043 = population (uninhabited 0x40-0x41 = FF FF, but also read as dword)<br/> | ||
Offset 0x0044 to 0x0047 = | Offset 0x0044 to 0x0047 = raceID of population<br/> | ||
Offset 0x004C to | Offset 0x004C to 0x004F = owner raceID (noone, minor & rebel = 23h)<br/> | ||
Offset 0x0050 to 0x0053 = starID<br/> | Offset 0x0050 to 0x0053 = starID<br/> | ||
Offset 0x0054 to 0x0057 = people assigned to economy<br/> | Offset 0x0054 to 0x0057 = people assigned to economy<br/> | ||
Line 263: | Line 328: | ||
Offset 0x0060 to 0x0063 = people assigned to science<br/> | Offset 0x0060 to 0x0063 = people assigned to science<br/> | ||
Offset 0x0064 to 0x0067 = people assigned to intelligence<br/> | Offset 0x0064 to 0x0067 = people assigned to intelligence<br/> | ||
Offset 0x0068 to 0x0069 = random value 0-99 (Minos 0-499) for up to 6 uninhabited systems<br/> | |||
Offset 0x006A to 0x006B = number of planets <= 09 00<br/> | Offset 0x006A to 0x006B = number of planets <= 09 00<br/> | ||
Offset | Offset 0x006C to 0x006D = number of ? (cf. 0x00B8)<br/> | ||
Offset 0x006F = | Offset 0x006E to 0x006F = dilithium resource level (0, 1, 2, 3, 4, 5, or 10), set by subroutine 4B7A50, if>0 dilithium icon gets shown (F1-map)<br/> | ||
Offset 0x0070 | Offset 0x0070 to 0x0073 = given system requirements bitmask for buildings (panet types & dilithium, e.g. 0x71 or 0x8 = dilithium flag)<br/> | ||
Offset 0x0074 to 0x0077 = planet atmospheres bitmask (minor races only, sub_4B49C0)<br/> | |||
Offset | |||
Offset 0x0078 to 0x007B = galaxy map picture position x (5 per sector)<br/> | Offset 0x0078 to 0x007B = galaxy map picture position x (5 per sector)<br/> | ||
Offset 0x007C to 0x007F = galaxy map picture position y (5 per sector)<br/> | Offset 0x007C to 0x007F = galaxy map picture position y (5 per sector)<br/> | ||
Offset 0x0080 to 0x0083 = ORDER ECONOMY (typeID) 1=build building, 2=upgrade building(s), 3=build ship, 5=tradegoods, 7=unrest order<br/> | Offset 0x0080 to 0x0083 = ORDER ECONOMY (typeID) 1=build building, 2=upgrade building(s), 3=build ship, 5=tradegoods, 7=unrest order<br/> | ||
Offset 0x0084 to | Offset 0x0084 to 0x0085 = invested industry<br/> | ||
Offset 0x0088 to 0x008B = ID of | Offset 0x0086 to 0x0087 = turn count for unrest order delay<br/> | ||
Offset | Offset 0x0088 to 0x0089 = edifice.bst ID of building under construction (else 7F FF)<br/> | ||
Offset 0x00AC to 0x00AF = | Offset 0x008A to 0x008B = new edifice.bst building ID for uprgades (else 7F FF)<br/> | ||
Offset 0x00B0 to | Offset 0x008C to 0x008F = total cost of upgrade<br/> | ||
Offset 0x00BC to 0x00BD = max population * 10<br/> | Offset 0x0090 to 0x0091 = shiplist.sst ID of ship under construction (else FF FF)<br/> | ||
Offset 0x0220 unknown (= | Offset 0x0092 to 0x00A7 unknown<br/> | ||
Offset 0x0298 to 0x029B = FF FF FF FF ( | Offset 0x00A8 to 0x00AB = address of GUI data for production Queue, length 0x6C<br/> | ||
Offset 0x00AC to 0x00AF = address of strcInfo<br/> | |||
Offset 0x00B0 to 0x00B3 = address of planet entry array, length 0x4C/planet (cf. 0x0328+)<br/> | |||
Offset 0x00B4 to 0x00B7 = address of ???, length 4bytes/planet<br/> | |||
Offset 0x00B8 to 0x00BB = address of ???, length 0x40 * unknown at [0x006C]<br/> | |||
Offset 0x00BC to 0x00BD = max population * 10 (for a feature of edifice.bst+7A)<br/> | |||
Offset 0x00BE to 0x00BF unknown | |||
---- | |||
=> [area 0xC0 to 0x17F -> GUI / preview]<br/> | |||
Offset 0x00C0 to 0x00C3 = cumulated edifice.bst output of main Food<br/> | |||
Offset 0x00C4 to 0x00C7 = +% food (blg + planet bonuses)<br/> | |||
Offset 0x00C8 to 0x00CB = cumulated edifice.bst output of main Energy<br/> | |||
Offset 0x00CC to 0x00CF = +% energy (blg + planet bonuses)<br/> | |||
Offset 0x00D0 to 0x00D3 = cumulated edifice.bst output of main Industry<br/> | |||
Offset 0x00D4 to 0x00D7 = +% industry<br/> | |||
Offset 0x00D8 to 0x00DB = cumulated edifice.bst output of main Research<br/> | |||
Offset 0x00DC to 0x00DF = +% research (not working)<br/> | |||
Offset 0x00E0 to 0x00E3 = +% research empire-wide (all areas)<br/> | |||
Offset 0x00E4 to 0x00E7 = + Credits (blg output 0x4 = tradegoods -> unused)<br/> | |||
Offset 0x00E8 to 0x00EB = +% credits<br/> | |||
Offset 0x00EC to 0x00EF = +% total credits (i.e. empire-wide)<br/> | |||
Offset 0x00F0 to 0x00F3 = Shield per Energy Tech<br/> | |||
Offset 0x00F4 to 0x00F7 = + Morale (blg output 0x14 -> e.g. Holo Cinema)<br/> | |||
Offset 0x00F8 to 0x00FB = cumulated edifice.bst output of main Intel<br/> | |||
Offset 0x00FC to 0x00FF = +% general intelligence (& +% intel local -> bug)<br/> | |||
Offset 0x0100 to 0x0103 = +% intel total<br/> | |||
Offset 0x0104 to 0x0107 = +% security<br/> | |||
Offset 0x0108 to 0x010B = +% espionage total<br/> | |||
Offset 0x010C to 0x010F = +% sabotage total<br/> | |||
Offset 0x0110 to 0x0113 = +% economic intel (not working)<br/> | |||
Offset 0x0114 to 0x0117 = Anti-Ship Defenses (base output of running OBs)<br/> | |||
Offset 0x0118 to 0x011B = Ship experience<br/> | |||
Offset 0x011C to 0x011F = Builds Ships (i.e. yard output value -> unused)<br/> | |||
Offset 0x0120 to 0x0123 = +% biotech research<br/> | |||
Offset 0x0124 to 0x0127 = +% computer research<br/> | |||
Offset 0x0128 to 0x012B = +% construction research<br/> | |||
Offset 0x012C to 0x012F = +% propulsion research<br/> | |||
Offset 0x0130 to 0x0133 = +% weapon research<br/> | |||
Offset 0x0134 to 0x0137 = +% energy research<br/> | |||
Offset 0x0138 to 0x013B = Scan range<br/> | |||
Offset 0x013C to 0x013F = Dilithium (running)<br/> | |||
Offset 0x0140 to 0x0143 = + Trade routes<br/> | |||
Offset 0x0144 to 0x0147 = unused<br/> | |||
Offset 0x0148 to 0x014B = + Morale empire-wide<br/> | |||
Offset 0x014C to 0x014F = +/- Morale (extra morale [edifice.bst+82h] & unrest order)<br/> | |||
Offset 0x0150 to 0x0153 = +% income on trade route (empire-wide)<br/> | |||
Offset 0x0154 to 0x0157 = +% ground defense<br/> | |||
Offset 0x0158 to 0x015B = +% raiding (not working)<br/> | |||
Offset 0x015C to 0x015F = unused<br/> | |||
Offset 0x0160 to 0x0163 = + Food (local static bonus)<br/> | |||
Offset 0x0164 to 0x0167 = + Energy (local static bonus)<br/> | |||
Offset 0x0168 to 0x016B = + Industry (local static bonus -> missing feature?)<br/> | |||
Offset 0x016C to 0x016F = + Intelligence (local static bonus)<br/> | |||
Offset 0x0170 to 0x0173 = + Research (local static bonus)<br/> | |||
Offset 0x0174 to 0x0177 = Shipbuilding bonus to industry (e.g. utopia planetia)<br/> | |||
Offset 0x0178 to 0x017B = bribe resistance (minor member systems)<br/> | |||
Offset 0x017C to 0x017F = +% ground combat (empire-wide)<br/> | |||
=> [area 0x180 to 0x23F -> effective used values (displacement 0xC0)]<br/> | |||
Offset 0x0180 to 0x0183 = cumulated edifice.bst output of main Food<br/> | |||
Offset 0x0184 to 0x0187 = +% food (blg + planet bonuses)<br/> | |||
Offset 0x0188 to 0x018B = cumulated edifice.bst output of main Energy<br/> | |||
Offset 0x018C to 0x018F = +% energy (blg + planet bonuses)<br/> | |||
Offset 0x0190 to 0x0193 = cumulated edifice.bst output of main Industry<br/> | |||
Offset 0x0194 to 0x0197 = +% industry<br/> | |||
Offset 0x0198 to 0x019B = cumulated edifice.bst output of main Research<br/> | |||
Offset 0x019C to 0x019F = +% research (not working)<br/> | |||
Offset 0x01A0 to 0x01A3 = +% research empire-wide (all areas)<br/> | |||
Offset 0x01A4 to 0x01A7 = + Credits (blg output 0x4 = tradegoods -> unused)<br/> | |||
Offset 0x01A8 to 0x01AB = +% credits<br/> | |||
Offset 0x01AC to 0x01AF = +% total credits (i.e. empire-wide)<br/> | |||
Offset 0x01B0 to 0x01B3 = Shield per Energy Tech<br/> | |||
Offset 0x01B4 to 0x01B7 = + Morale (blg output 0x14 -> e.g. Holo Cinema)<br/> | |||
Offset 0x01B8 to 0x01BB = cumulated edifice.bst output of main Intel<br/> | |||
Offset 0x01BC to 0x01BF = +% general intelligence (& +% intel local -> bug)<br/> | |||
Offset 0x01C0 to 0x01C3 = +% intel total<br/> | |||
Offset 0x01C4 to 0x01C7 = +% security<br/> | |||
Offset 0x01C8 to 0x01CB = +% espionage total<br/> | |||
Offset 0x01CC to 0x01CF = +% sabotage total<br/> | |||
Offset 0x01D0 to 0x01D3 = +% economic intel (not working)<br/> | |||
Offset 0x01D4 to 0x01D7 = Anti-Ship Defenses (base output of running OBs)<br/> | |||
Offset 0x01D8 to 0x01DB = Ship experience<br/> | |||
Offset 0x01DC to 0x01DF = Builds Ships (i.e. yard output value -> unused)<br/> | |||
Offset 0x01E0 to 0x01E3 = +% biotech research<br/> | |||
Offset 0x01E4 to 0x01E7 = +% computer research<br/> | |||
Offset 0x01E8 to 0x01EB = +% construction research<br/> | |||
Offset 0x01EC to 0x01EF = +% propulsion research<br/> | |||
Offset 0x01F0 to 0x01F3 = +% weapon research<br/> | |||
Offset 0x01F4 to 0x01F7 = +% energy research<br/> | |||
Offset 0x01F8 to 0x01FB = Scan range<br/> | |||
Offset 0x01FC to 0x01FF = Dilithium (running)<br/> | |||
Offset 0x0200 to 0x0203 = + Trade routes<br/> | |||
Offset 0x0204 to 0x0207 = unused<br/> | |||
Offset 0x0208 to 0x020B = + Morale empire-wide<br/> | |||
Offset 0x020C to 0x020F = +/- Morale (extra morale [edifice.bst+82h] & unrest order)<br/> | |||
Offset 0x0210 to 0x0213 = +% income on trade route (empire-wide)<br/> | |||
Offset 0x0214 to 0x0217 = +% ground defense<br/> | |||
Offset 0x0218 to 0x021B = +% raiding (not working)<br/> | |||
Offset 0x021C to 0x021F = unused<br/> | |||
Offset 0x0220 to 0x0223 = + Food (local static bonus)<br/> | |||
Offset 0x0224 to 0x0227 = + Energy (local static bonus)<br/> | |||
Offset 0x0228 to 0x022B = + Industry (local static bonus -> missing feature?)<br/> | |||
Offset 0x022C to 0x022F = + Intelligence (local static bonus)<br/> | |||
Offset 0x0230 to 0x0233 = + Research (local static bonus)<br/> | |||
Offset 0x0234 to 0x0237 = Shipbuilding bonus to industry (e.g. utopia planetia)<br/> | |||
Offset 0x0238 to 0x023B = bribe resistance (minor member systems)<br/> | |||
Offset 0x023C to 0x023F = +% ground combat (empire-wide) | |||
---- | |||
=> [area 0x240 to 0x297 -> GUI / preview]<br/> | |||
Offset 0x0240 to 0x0243 = FF FF FF FF (unknown)<br/> | |||
Offset 0x0244 to 0x0245 = unused<br/> | |||
Offset 0x0246 to 0x0247 = % of manned vs total main Industry units<br/> | |||
Offset 0x0248 to 0x0249 = % of manned vs total main Food units<br/> | |||
Offset 0x024A to 0x024B = % of manned vs total main Energy units<br/> | |||
Offset 0x024C to 0x024D = % of manned vs total main Intel units<br/> | |||
Offset 0x024E to 0x024F = % of manned vs total main Research units<br/> | |||
Offset 0x0250 to 0x0251 = unemployed population<br/> | |||
Offset 0x0254 to 0x0255 = Food output total after bonuses<br/> | |||
Offset 0x0258 to 0x0259 = Food surplus or shortfall<br/> | |||
Offset 0x025A to 0x025B = Food consumption<br/> | |||
Offset 0x025C to 0x025D = current pop*2 (for max growth popup -> wrong)<br/> | |||
Offset 0x025E to 0x025F = Energy output total after bonuses<br/> | |||
Offset 0x0260 to 0x0261 = Energy consumption<br/> | |||
Offset 0x0262 to 0x0263 = Energy surplus or shortfall<br/> | |||
Offset 0x0264 to 0x0265 = Credits output total after bonuses<br/> | |||
Offset 0x0268 to 0x0269 = system Credits effective (i.e. -support costs)<br/> | |||
Offset 0x026A to 0x026B = total building support cost of system (from edifice.bst+7E)<br/> | |||
Offset 0x026C to 0x026F = Industry output total after bonuses<br/> | |||
Offset 0x0270 to 0x0273 = Research output total after bonuses<br/> | |||
Offset 0x0274 to 0x0277 = Dilithium (running) -> loaded from 0x013C<br/> | |||
Offset 0x0278 to 0x027B = dilithium shortage indicator (unused)<br/> | |||
Offset 0x027C to 0x027F = build ship marker (? cf. +80 =3)<br/> | |||
Offset 0x0280 to 0x0283 = Intel output total after bonuses<br/> | |||
Offset 0x0284 to 0x0285 = moral value<br/> | |||
Offset 0x0286 to 0x0287 = moral text (cf. 0x02DE)<br/> | |||
Offset 0x0288 to 0x028B = sets Industry output to zero if 1 (e.g. general strike)<br/> | |||
Offset 0x028C to 0x028F = sets Credit output to zero if 1 (e.g. general strike)<br/> | |||
Offset 0x0290 to 0x0293 = sets Research output to zero if 1 (e.g. general strike)<br/> | |||
Offset 0x0294 to 0x0297 = sets Intel output to zero if 1 (e.g. general strike)<br/> | |||
=> [area 0x298 to 0x2EF -> effective used values (displacement 0x58)]<br/> | |||
Offset 0x0298 to 0x029B = FF FF FF FF (unknown)<br/> | |||
Offset 0x029C to 0x029D = pop increase/loss due to growth/starvation<br/> | |||
Offset 0x029E to 0x029F = % of manned vs total main Industry units<br/> | |||
Offset 0x02A0 to 0x02A1 = % of manned vs total main Food units<br/> | |||
Offset 0x02A2 to 0x02A3 = % of manned vs total main Energy units<br/> | |||
Offset 0x02A4 to 0x02A5 = % of manned vs total main Intel units<br/> | |||
Offset 0x02A6 to 0x02A7 = % of manned vs total main Research units<br/> | |||
Offset 0x02A8 to 0x02A9 = unemployed population<br/> | |||
Offset 0x02AC to 0x02AD = Food output total after bonuses<br/> | |||
Offset 0x02B0 to 0x02B1 = Food surplus or shortfall<br/> | |||
Offset 0x02B2 to 0x02B3 = Food consumption<br/> | |||
Offset 0x02B4 to 0x02B5 = current pop*2 (for max growth popup -> wrong)<br/> | |||
Offset 0x02B6 to 0x02B7 = Energy output total after bonuses<br/> | |||
Offset 0x02B8 to 0x02B9 = Energy consumption<br/> | |||
Offset 0x02BA to 0x02BB = Energy surplus or shortfall<br/> | |||
Offset 0x02BC to 0x02BD = Credits output total after bonuses<br/> | |||
Offset 0x02C0 to 0x02C1 = system Credits effective (i.e. -support costs)<br/> | |||
Offset 0x02C2 to 0x02C3 = total building support cost of system (from edifice.bst+7E) + buy costs<br/> | |||
Offset 0x02C4 to 0x02C7 = Industry output total after bonuses<br/> | |||
Offset 0x02C8 to 0x02CB = Research output total after bonuses<br/> | |||
Offset 0x02CC to 0x02CF = Dilithium (running) -> loaded from 0x01FC<br/> | |||
Offset 0x02D0 to 0x02D3 = dilithium shortage indicator (unused)<br/> | |||
Offset 0x02D4 to 0x02D7 = build ship marker (? cf. +80 =3)<br/> | |||
Offset 0x02D8 to 0x02DB = Intel output total after bonuses<br/> | |||
Offset 0x02DC to 0x02DD = moral value<br/> | Offset 0x02DC to 0x02DD = moral value<br/> | ||
Offset 0x02DE to | Offset 0x02DE to 0x02DF = moral text (signed integer, little endian! : -4 = Rebellious, -3 = Defiant, -2 = Disgruntled, -1= Apathetic, 0 = Content, 1 = Pleased, 2 = Loyal, 3 = Fanatic)<br/> | ||
Offset 0x02F0 to | Offset 0x02E0 to 0x02E3 = sets Industry output to zero if 1 (e.g. general strike)<br/> | ||
Offset 0x02F4 | Offset 0x02E4 to 0x02E7 = sets Credit output to zero if 1 (e.g. general strike)<br/> | ||
Offset 0x0309 unknown ( | Offset 0x02E8 to 0x02EB = sets Research output to zero if 1 (e.g. general strike)<br/> | ||
Offset 0x02EC to 0x02EF = sets Intel output to zero if 1 (e.g. general strike) | |||
---- | |||
Offset 0x02F0 to 0x02F1 = base morale<br/> | |||
Offset 0x02F2 to 0x02F3 = unused<br/> | |||
Offset 0x02F4 to 0x02F7 = unlocks positive/negative morale events if 0 (random manipulated, default 32h)<br/> | |||
Offset 0x02F8 to 0x02F9 = edifice.bst ID of main Food (no 7F FF)<br/> | |||
Offset 0x02FA to 0x02FB = edifice.bst ID of main Energy (no 7F FF)<br/> | |||
Offset 0x02FC to 0x02FD = edifice.bst ID of main Industry (no 7F FF)<br/> | |||
Offset 0x02FE to 0x02FF = edifice.bst ID of main Intel (no 7F FF)<br/> | |||
Offset 0x0300 to 0x0301 = edifice.bst ID of main Research (no 7F FF)<br/> | |||
Offset 0x0302 to 0x0303 unknown<br/> | |||
Offset 0x0304 to 0x0307 = random events bitmask<br/> | |||
Offset 0x0308 = number of incoming traderoutes<br/> | |||
Offset 0x0309 = number of system traderoutes<br/> | |||
Offset 0x030A to 0x030B unknown<br/> | |||
Offset 0x030C to 0x030F = address of incoming traderoutes list<br/> | |||
Offset 0x0310 to 0x0313 = address of system traderoutes list<br/> | |||
Offset 0x0314 to 0x0317 = update worker assignments marker (f.e. after pop loss) -> bugged!<br/> | |||
Offset 0x0318 to 0x031B = update powered buildings marker (f.e. after energy output reduction) -> bugged!<br/> | |||
Offset 0x031C to 0x031F = skips traderoute & tradegoods output if not 0 (siege/Blockade marker? unused?)<br/> | |||
Offset 0x0320 to 0x0323 = bombing marker -> skips pop growth if not 0<br/> | |||
Offset 0x0324 to 0x0327 = production queue setting (0=manual, 1=automatic) | |||
Offset 0x0328+ list of all planets of that starsystem | Offset 0x0328+ list of all planets of that starsystem | ||
---- | ---- | ||
Line 298: | Line 548: | ||
Offset 0x036A to 0x036B = population bonus (few = 00 00, normal = 36 01, much = 6C02, else = normal)<br/> | Offset 0x036A to 0x036B = population bonus (few = 00 00, normal = 36 01, much = 6C02, else = normal)<br/> | ||
Offset 0x036C to 0x036D = planetNr<br/> | Offset 0x036C to 0x036D = planetNr<br/> | ||
Offset 0x0370 planet type (00 = arctic, 01 = barren, 02 = desert, 03 = gas giant, 04 = djungle, 05 = oceanic, 06 = earthlike, 07 = vulcanic, 08 = methanic, 09 = AUS, >09 = other)<br/> | Offset 0x0370 planet type (00 = arctic, 01 = barren, 02 = desert, 03 = gas giant, 04 = djungle, 05 = oceanic, 06 = earthlike, 07 = vulcanic, 08 = methanic???, 09 = AUS, >09 = other)<br/> | ||
Offset 0x0372 to 0x0373 = 00 00 | Offset 0x0372 to 0x0373 = 00 00 | ||
---- | ---- | ||
Offset [0x0328+0x004C*numberOfPlanets] to Offset [0x0328+0x004C*numberOfPlanets+0x0004*numberOfPlanets-0x0001]<br/> | Offset [0x0328+0x004C*numberOfPlanets] to Offset [0x0328+0x004C*numberOfPlanets+0x0004*numberOfPlanets-0x0001]<br/> | ||
(for one planet that's Offset 0x0374 to 0x0377) = unknown (mostly 00 ... 00)<br/> | (for one planet that's Offset 0x0374 to 0x0377) = unknown (mostly 00 ... 00)<br/> | ||
[if traderoutes are available:<br/> | [if traderoutes are available:<br/> | ||
Offset afterwards = (number of incoming traderouts + number of system traderoutes) * (0x0002 length (16bit) raceID + 0x0002 length (16bit) tradeRouteNo. (tradeRouteNo + raceID = tradeRouteID) | Offset afterwards = (number of incoming traderouts + number of system traderoutes) * (0x0002 length (16bit) raceID + 0x0002 length (16bit) tradeRouteNo. (tradeRouteNo + raceID = tradeRouteID)]<br/> | ||
[if it's a players system:<br/> | [if it's a players system:<br/> | ||
Offset afterwards = | Offset afterwards = player GUI data for production Queue, length = 0x006C]<br/> | ||
what a complicated file... | what a complicated file... | ||
Line 319: | Line 569: | ||
* building type | * building type | ||
* building count | * building count | ||
* | * number of activated (powered on) buildings (for special buildings and orbitals) | ||
stored in variable blocksizes, depending on number of different building types<br/> | stored in variable blocksizes, depending on number of different building types<br/> | ||
Line 326: | Line 576: | ||
[for number of entrys:<br/> | [for number of entrys:<br/> | ||
Offset 0x0004 to 0x0005 = building count<br/> | Offset 0x0004 to 0x0005 = building count<br/> | ||
Offset 0x0006 to 0x0007 = building type (same order as in stbof.res and UE)<br/> | Offset 0x0006 to 0x0007 = building type (same order as in [[stbof.res]] and UE, it's the building ID in [[edifice.bst]])<br/> | ||
Offset 0x0008 | Offset 0x0008 to 0x000B = number of activated buildings (dword)] | ||
] | |||
== Research == | == Research == | ||
Line 335: | Line 583: | ||
<span style="color:#0000FF">hexview width: 108</span><br/> | <span style="color:#0000FF">hexview width: 108</span><br/> | ||
lists science by raceID | lists science by raceID | ||
Contains: | |||
* science levels | * science levels | ||
* technology | * technology levels | ||
* science points done by science type | * science points done by science type | ||
* actual science assignation | * actual science assignation | ||
* actually buildable buildings | * actually buildable buildings | ||
<br/> | |||
<b>General file structure</b> | |||
Offset 0x0000 to 0x0001 = number of races in the game (major + minor)<br/> | |||
Offset 0x0000 to 0x0001 = number of races (major + minor)<br/> | Offset 0x0002 to 0x0047 = list of tech entry indexes (35 slots for 35 races each 2 bytes in size, slots for races not in the game usually point to the first tech entry index -> 0)<br/> | ||
Offset 0x0048 to 0x00AB = list of empire science assignations (20 bytes per empire)<br/> | |||
Offset | Offset 0x00AC to +8*[minor races in game]= evolution data(2bytes/entry: current EL, advancement chance next turn in %, default chance multiplier, bonus/turn)<br/> | ||
]<br/> | <br/> | ||
[ | followed by a list of tech entries that have the same structure as those in [[racetech.tec]]<br/> | ||
<br/> | |||
<b>List of empire science assignations</b><br/> | |||
Contains 5 entries - one for each empire.<br/> | |||
Offset length 0x0006 = unknown | <br/> | ||
Entry structure:<br/> | |||
<br/> | |||
Offset length 0x0006 = unknown<br/> | |||
Offset length 0x0002 = science assignation biotech<br/> | Offset length 0x0002 = science assignation biotech<br/> | ||
Offset length 0x0002 = science assignation computer<br/> | Offset length 0x0002 = science assignation computer<br/> | ||
Line 358: | Line 613: | ||
Offset length 0x0002 = science assignation engines<br/> | Offset length 0x0002 = science assignation engines<br/> | ||
Offset length 0x0002 = science assignation weapons<br/> | Offset length 0x0002 = science assignation weapons<br/> | ||
Offset length 0x0002 = unknown | Offset length 0x0002 = unknown<br/> | ||
<br/> | |||
<b>List of tech entries</b><br/> | |||
Number of entries equals number of races listed in this file. The list of tech entry indexes links each race to it's tech entry. The first entry carries the index 0, the next 1 and so on.<br/> | |||
<br/> | |||
Entry structure:<br/> | |||
<br/> | |||
Offset length 0x0002 = raceID<br/> | Offset length 0x0002 = raceID<br/> | ||
Offset length 0x0002 = unknown<br/> | Offset length 0x0002 = unknown<br/> | ||
Line 381: | Line 640: | ||
Offset length 0x0002 = unknown<br/> | Offset length 0x0002 = unknown<br/> | ||
Offset length 0x0004 = FP done<br/> | Offset length 0x0004 = FP done<br/> | ||
Offset length 0x0002 = technology level<br/> | Offset length 0x0002 = lowest technology level (for all techs requirement)<br/> | ||
Offset length | Offset length 0x0006 = unknown<br/> | ||
Offset length 0x000B = buildable special buildings (bitwise XOR, same order as in stbof.res and UE, but little endian: mirrored 8bit blocks) | Offset length 0x000B = buildable special buildings (bitwise XOR, same order as in stbof.res and UE, but little endian: mirrored 8bit blocks) | ||
* &0x8000000000000000000000 = phenix device | * &0x8000000000000000000000 = phenix device | ||
Line 474: | Line 733: | ||
* &0x0000000000000000000001 = mythology library (of the Tamarians)Offset length 0x001D = buildable normal buildings / upgrades (bitwise XOR, same order as in stbof.res and UE, but little endian: mirrored 8bit blocks) | * &0x0000000000000000000001 = mythology library (of the Tamarians)Offset length 0x001D = buildable normal buildings / upgrades (bitwise XOR, same order as in stbof.res and UE, but little endian: mirrored 8bit blocks) | ||
Offset length 0x0008 = unknown (always 00 ... 00 ?)<br/> | Offset length 0x0008 = unknown (always 00 ... 00 ?)<br/> | ||
== Intel == | == Intel == | ||
=== intelInfo === | === intelInfo === | ||
<span style="color:#0000FF">hexview width: 16</span><br/> | <span style="color:#0000FF">hexview width: 16</span><br/> | ||
0x0000 to 0x0057 unknown<br/> | |||
[for all | 0x0058 to 0x02D7 (5 empires * 0x80) = empire stats intel screen data (not the stats), structure:<br/> | ||
+0x0 (4 bytes * 4 other empires) = turn number of last update<br/> | |||
+0x10-0x7F = unknown<br/> | |||
0x02D8 to 0xDF63 (5 empires * 0x2C1C) = block structure: (for +0x4 to +0x5B see [http://www.armadafleetcommand.com/botf/phpBB3/viewtopic.php?p=31490&sid=c8f4bdeff8fbc10843ec88f3ccc2368b#p31490 intel.bin])<br/> | |||
+0x0 = index value for all areas output (loops +1/turn 0-13h)<br/> | |||
+0x4 (4 bytes * 5 empires) = base for espionage attack threshold<br/> | |||
+0x18 (4 bytes * 5 empires) = base for sabotage attack threshold<br/> | |||
+0x2C (4 bytes * 8 empsInfo morale labels) = security defense modifier%<br/> | |||
+0x4C (4 bytes * 4 empsInfo treaty labels) = attack threshold modifier%<br/> | |||
+0x5C = unused ?<br/> | |||
+0x60 (4 bytes * 4 enemies) = department setting (0=general, 1=economy, 2=science, 3=military)<br/> | |||
+0x70 (4 bytes * 9 areas -> security 0, espionage 1-4, sabotage 5-8) = percentage assignation<br/> | |||
+0x94-0xA3 = unknown<br/> | |||
+0xA4 (9 areas * 0x58 bytes) = block structure: | |||
+0x0 = turn number of last intel attack (unless security) | |||
+0x4 = stockpile points for attack threshold, re-set to 0 if attack (unless security) | |||
+0x8 (4 bytes * 20 turns) = area output of the last 20 turns | |||
+0x3BC (4 bytes * 4 enemies * 4 departments) = agents training status 1-1Eh (+/- 2 turn)<br/> | |||
+0x3FC = index for reports 41+ (loops 0-27h) -> overwrite/clear old pointer ?<br/> | |||
+0x400 = index for next intel report (loops 0-27h)<br/> | |||
+0x404 = number of intel reports (28h max.)<br/> | |||
+0x408-0x2C07 (up to 40 Intel reports * 0x100 bytes) = block structure: | |||
+0x0 = Index value of report | |||
+0x4 = turn number of event | |||
+0x8 = blamed ? race ID or -1 | |||
+0x9 = opponent race ID ? | |||
+0xA-0xB = unknown | |||
+0xC = index for report list ? | |||
+0x10 = report text | |||
+0x?? to 0xFF = unknown | |||
+0x2C08 (4 bytes * 5 empires) = turn number of last intel attack? | |||
== Diplomacy == | == Diplomacy == | ||
Line 508: | Line 792: | ||
lists fleetIDs of every race | lists fleetIDs of every race | ||
* number of taskforces/fleets | * number of taskforces/fleets | ||
* | * fleet IDs | ||
[for [numberOfRaces]:<br/> | |||
Offset 0x0000 to 0x0003 = number of controled fleets<br/> | Offset 0x0000 to 0x0003 = number of controled fleets<br/> | ||
Offset length 0x0002 = fleetID] | |||
Offset length 0x0002 = fleetID | |||
] | |||
=== shipname.dat === | === shipname.dat === | ||
Line 540: | Line 823: | ||
next fleetID | next fleetID | ||
=== GShipHead = GTForceHd = GWTForceHd === | === GShipHead = GTForceHd = GWTForceHd = GTFStasisHd === | ||
Offset 0x0018 to 0x001B = | These are global list headers. | ||
<table border="1"> | |||
<tr> | |||
<th>Header</th> | |||
<th>List</th> | |||
<th>Contains</th> | |||
</tr> | |||
<tr> | |||
<td>GShipHead</td> | |||
<td>GShipList</td> | |||
<td>Ships</td> | |||
</tr> | |||
<tr> | |||
<td>GTForceHd</td> | |||
<td>GTForceList</td> | |||
<td>Task forces</td> | |||
</tr> | |||
<tr> | |||
<td>GWTForceHd</td> | |||
<td>GWTForce</td> | |||
<td>Task forces</td> | |||
</tr> | |||
<tr> | |||
<td>GTFStasisHd</td> | |||
<td>GTFStasis</td> | |||
<td>Unknown</td> | |||
</tr> | |||
</table> | |||
Identified fields: | |||
* slot size | |||
* total number of slots in list | |||
* number of occupied slots (slots with data) | |||
File structure (40 bytes): | |||
Offset 0x0000 to 0x000F = unknown<br> | |||
Offset 0x0010 to 0x0013 = slot size<br> | |||
Offset 0x0014 to 0x0017 = total number of slots<br> | |||
Offset 0x0018 to 0x001B = number of occupied slots<br> | |||
Offset 0x000C to 0x0027 = unknown | |||
=== GShipList === | === GShipList === | ||
Line 560: | Line 886: | ||
* crew experience value | * crew experience value | ||
* crew experience level | * crew experience level | ||
* base ground combat strength | |||
stored in blocks of 0x0074<br/> | stored in blocks of 0x0074<br/> | ||
Line 574: | Line 901: | ||
Offset 0x0048 to 0x004F = unknown<br/> | Offset 0x0048 to 0x004F = unknown<br/> | ||
Offset 0x0050 to 0x0051 = fleetID<br/> | Offset 0x0050 to 0x0051 = fleetID<br/> | ||
Offset 0x0052 to | Offset 0x0052 to 0x0053 = ship type (manufactoring type, used as shiplistID in stbof.res, e.g. in shiptech.sst and is in same order as in UE)<br/> | ||
Offset | Offset 0x0054 to 0x0057 = unknown<br/> | ||
Offset 0x0058 to 0x005B = cloak indicator for battles 1=yes<br/> | |||
Offset 0x005C to 0x005F = shipfunction/=value:[0/8, 1/10, 2/6, 3/2, 4/4, 5-8/0, 9/1] +shiptech.sst computer +propulsion tech requirements<br/> | |||
Offset 0x0060 to 0x0063 = (for warships only /function 0-4) value at 5C + map speed<br/> | |||
Offset 0x0064 to 0x0067 = (for warships only /function 0-4) shiptech.sst computer + weapon tech requirements, if >0 bombing capable<br/> | |||
Offset 0x0068 to 0x006B = unknown<br/> | |||
Offset 0x006C to 0x006F = (for TTs only) 50 times shiptech.sst construction tech requirement<br/> | |||
Offset 0x0070 to 0x0073 = base ground combat strength (i.e. TT production value /10) | |||
=== GTForceList = GWTForce === | === GTForceList = GWTForce === | ||
Line 587: | Line 921: | ||
* sector row | * sector row | ||
* sector column | * sector column | ||
* | * first Colony ShipID | ||
* | * control category | ||
* contains colony ships | |||
* scan range | |||
* flight range | |||
* speed | * speed | ||
* order (evade, attack,...) | * order (evade, attack,...) | ||
Line 609: | Line 946: | ||
* 01 = terraform | * 01 = terraform | ||
* 02 = colonize | * 02 = colonize | ||
* 03 = | * 03 = raid | ||
* 04 = intercept | * 04 = intercept | ||
* 05 = evade | * 05 = evade | ||
Line 622: | Line 959: | ||
* 0E = attack system | * 0E = attack system | ||
* >0E = invalid | * >0E = invalid | ||
Offset 0x0030 to 0x0033 = | Offset 0x0030 to 0x0033 = for TT based system attacks (1 = conquer, else liberate)<br/> | ||
Offset 0x0034 to 0x0037 = raceID<br/> | Offset 0x0034 to 0x0037 = raceID<br/> | ||
Offset 0x0038 to 0x003B = sector row (GTForceList => next turn, GWTForce => actual turn)<br/> | Offset 0x0038 to 0x003B = sector row (GTForceList => next turn, GWTForce => actual turn)<br/> | ||
Offset 0x003C to 0x003F = sector column (GTForceList => next turn, GWTForce => actual turn)<br/> | Offset 0x003C to 0x003F = sector column (GTForceList => next turn, GWTForce => actual turn)<br/> | ||
Offset 0x0040 to 0x0043 = | Offset 0x0040 to 0x0043 = ability bitmask<br/> | ||
Offset 0x0044 to 0x0047 = | Offset 0x0044 to 0x0047 = first Colony shipID (same as one of the ship slots values)<br/> | ||
Offset 0x0048 to 0x004B = unknown<br/> | Offset 0x0048 to 0x004B = unknown<br/> | ||
Offset 0x004C to 0x004F = | Offset 0x004C to 0x004F = control category (1 - major empire, 2 - minor race, 3 - alien)<br/> | ||
Offset 0x0050 to 0x0051 = | Offset 0x0050 to 0x0051 = contains colony ships (0 - no, 1 - yes)<br/> | ||
Offset 0x0052 to 0x0053 = scan range, keeps only one turn<br/> | Offset 0x0052 to 0x0053 = scan range, keeps only one turn<br/> | ||
Offset 0x0054 to | Offset 0x0054 to 0x0057 = unknown<br/> | ||
Offset | Offset 0x0058 to 0x005F = flight range, keeps only one turn (double precision floating point number; short = 0, middle = 1, high = 2)<br/> | ||
Offset 0x0060 | Offset 0x0060 to 0x0067 = speed, keeps only one turn (double precision floating point number; values 0 to 5)<br/> | ||
Offset 0x0068 to 0x006B = cloaking (01 00 00 00 = cloaked, else 00 00 00 00) | Offset 0x0068 to 0x006B = cloaking (01 00 00 00 = cloaked, else 00 00 00 00) | ||
=== GTFStasis === | === GTFStasis === | ||
number of starbases/outposts | unknown (was thought to be number of starbases/outposts) | ||
=== starBaseInfo === | === starBaseInfo === | ||
Line 651: | Line 984: | ||
* ship function (valid values are 6 for outpost and 7 for starbase) | * ship function (valid values are 6 for outpost and 7 for starbase) | ||
* ship type (links to shiplist.sst entry) | * ship type (links to shiplist.sst entry) | ||
* sector row | |||
* sector column | * sector column | ||
* | * production/build cost (usually same as ship build cost in [[shiplist.sst]]) | ||
* production invested (outpost completion is production invested/production cost) | |||
* hull | * hull | ||
<br/> | <br/> | ||
Line 662: | Line 997: | ||
Offset 0x002C to 0x002D = ship function<br/> | Offset 0x002C to 0x002D = ship function<br/> | ||
Offset 0x002E to 0x002F = ship type<br/> | Offset 0x002E to 0x002F = ship type<br/> | ||
Offset 0x0030 to 0x0033 = sector | Offset 0x0030 to 0x0033 = sector row / y coord<br/> | ||
Offset 0x0034 to 0x0037 = sector | Offset 0x0034 to 0x0037 = sector column / x coord<br/> | ||
Offset 0x0038 to 0x004B = | Offset 0x0038 to 0x003F = production cost (8 byte floating point number - double)<br/> | ||
Offset 0x0040 to 0x0047 = production invested (8 byte floating point number - double)<br/> | |||
Offset 0x0048 to 0x004B = scan range<br/> | |||
Offset 0x004C to 0x004F = hull<br/> | Offset 0x004C to 0x004F = hull<br/> | ||
Offset 0x0050 to 0x005B = unknown<br/> | Offset 0x0050 to 0x005B = unknown<br/> | ||
Line 747: | Line 1,084: | ||
=== ordInfo === | === ordInfo === | ||
<span style="color:#0000FF">hexview width: 84</span><br/> | <span style="color:#0000FF">hexview width: 84</span><br/> | ||
Mostly unknown, includes peace proposals, system and fleet orders... | |||
Each entry in this file contains two segments - a header and a body.<br> | |||
<br> | |||
<b>Header structure</b> | |||
Size of the header is constant for all entries and is 32 bytes. | |||
It contains: | |||
* entry hash | |||
* turn of occurrence | |||
* raceID | * raceID | ||
* | * order type | ||
* | * body size in bytes | ||
<br> | |||
Detailed structure: | |||
Offset 0x0000 to 0x0003 = entry hash - unknown hashing function, applies either to the body only or the whole entry (exluding the hash)<br/> | |||
Offset 0x0004 to 0x0007 = turn of occurrence<br/> | |||
Offset 0x0004 to 0x0007 = turn of | |||
Offset 0x0008 to 0x000B = raceID<br/> | Offset 0x0008 to 0x000B = raceID<br/> | ||
Offset | Offset 0x000C to 0x000F = unknown<br/> | ||
Offset 0x0010 to 0x0013 = order type (0 - system order, 2 - fleet order, others unknown)<br/> | |||
Offset 0x0014 to 0x001B = unknown<br/> | |||
Offset 0x001C to 0x001F = size of the body in bytes<br/> | |||
Size of the body depends on type - it might even vary independent of type. | |||
Body size of orders for fleets and systems seems to be 52 bytes which together with the header amounts to 84 bytes per entry. | |||
<br> | |||
<br> | |||
<b>Fleet order body structure (type 2)</b> | |||
Contains: | |||
* target sector row | |||
* target sector column | |||
* source sector row | |||
* source sector column | |||
* fleetID | |||
* scan range ? | |||
* map speed ? | |||
<br> | |||
Detailed structure: | |||
Offset 0x0000 to 0x0003 = unknown<br/> | |||
Offset 0x0004 to 0x0007 = target sector row<br/> | |||
Offset 0x0008 to 0x000B = target sector column<br/> | |||
Offset 0x000C to 0x000F = source sector row<br/> | |||
Offset 0x0010 to 0x0013 = source sector column<br/> | |||
Offset 0x0014 to 0x001B = unknown<br/> | |||
Offset 0x001C to 0x001D = fleetID<br/> | |||
Offset 0x001E to 0x002B = unknown<br/> | |||
Offset 0x002C to 0x002F = scan range ?<br/> | |||
Offset 0x0030 to 0x0033 = map speed ?<br/> | |||
The source sector row and column mark the sector that the fleet was in when it initially received the order not the current location. For ships terraforming planets the source location is usually set to row -1 and column -1. | |||
=== SeedInfo === | === SeedInfo === |
Latest revision as of 22:08, 17 May 2016
This is a list of the explored content within the save games. For learning to use this information, also have a look at Editing_Savegames!
Please aware that some information might be incomplete or even incorrect.
After extracting a savegame with UltimateEditor you get quite a ton of files. Here's an overview about them and the hexcode they contain:
General Information
version
- for me it's always 08
gameInfo
- filename
- gamesave name
- galaxy shape
- galaxy size
- minor race setting
- difficulty level
- random events on/off
- strategical timer
- tactical timer
- actual and next turn
- player race
- races in game (major + minor)
- races with ships (major + minor)
- races beaten
- goal (vendetta/dominance)
- empire status informations (occupied systems, science, economy, military)
- statistic
- player names (if MP)
Offset 0x0000 to 0x000C filename (00 terminated)
Offset 0x000D to 0x003F savename (00 terminated)
Offset 0x0040 last turn (for savename)
Offset 0x004C 00 = singleplayer 01 = multiplayer
Offset 0x0250 player empires bitmask
Offset 0x0252 player empire (00 = card, 01 = fed, 02=ferg, 03=kling, 04=rom)
Offset 0x0253 predictor for starting EL of minor races
Offset 0x0254 to 0x0258 technology starting levels for each major (card, fed, ferg, kling, rom)
Offset 0x0260 galaxy shape (00 = irregular, 01 = elliptic, 02 = ring, 03 = spiral)
Offset 0x0264 galaxy size (00 = small, 01 = middle, 03 = big)
Offset 0x0268 Minor Races setting (0=none, ..., 3=many)
Offset 0x026C difficulty level (00 = simple, 01 = easy, 02 = normal, 03 = hard, 04 = impossible; attention, deviation with dynamic key variables)
Offset 0x026E random events (0=OFF, 1=ON)
Offset 0x0270 races in game (bitwise XOR, little endian (8bit packets) => order is the same with alienInfo)
Offset 0x0278 beaten empires (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom)
Offset 0x0280 to 0x0285(?) races with ships
Offset 0x0290 tactical mode (0=DETAILED, 2=ABSTRACT)
Offset 0x0294 a cheat button bitmask
Offset 0x0298 (test nz) 1=trade guild strike, 2=subspace anomaly, 8=end trade strike, 10h=end anomaly
Offset 0x02A0 generated monsters bitmask (not loaded by game)
Offset 0x02A4 strategical timer
Offset 0x02A8 tactical timer
Offset 0x02AC current turn
Offset 0x02AE last turn points (for statistic)
Offset 0x02BA(maybe less)+ statistic of the cards
Offset 0x04AE(maybe less)+ statistic of the feds
Offset 0x06A2(maybe less)+ statistic of the fergs
Offset 0x0896(maybe less)+ statistic of the klings
Offset 0x0A8A(maybe less)+ statistic of the roms
Offset 0x0C84+(?) empire state (intelligence)
- Offset 0x0C8E+ military
- Offset 0x0D06+ economy
- Offset 0x0D1A+ science
- Offset 0x0D92+ occupied systemsOffset
0x0DBC victory condition (00=single/Multi player dominance 01=Muilt player team dominance, 02=vendetta)
empsInfo
hexview width: 444
lists information about majors
- empirenames
- name of the emperor
- credits
- number of running dilithium sources
- number of ships under construction
- population total
- moral shown in empire state
- ship-population support
- empire-wide ground combat bonus
- known empires (for diplomacy)
is stored in blocks of 0x01BC length for every major
only the first one (card) gets explained
Offset 0x0000 to 0x0027 empire name
Offset 0x0028 to 0x004F emperor name
Offset 0x0050 to 0x0053 address of provInfo (8 bytes per system), at[+4] number of held systems
=> [area 0x54 to 0x97 -> GUI / preview]
Offset 0x0054 to 0x0057 credits
Offset 0x0058 to 0x005B income
Offset 0x005C to 0x005F real fleet support cost (i.e. -pop support) + building support costs (cf. 0x00A0)
Offset 0x0060 to 0x0063 number of running dilithium sources
Offset 0x0064 to 0x0067 number of ships under construction
Offset 0x0068 to 0x006B current research points
Offset 0x006C to 0x006F cumulated total population
Offset 0x0070 to 0x0071 unused
Offset 0x0072 to 0x0073 unknown
Offset 0x0074 to 0x0075 morale shown in empire state (cf. 0x00B8)
Offset 0x0076 to 0x0077 unknown
Offset 0x0078 to 0x007B current intel
Offset 0x007C to 0x0093 (6 tech areas * 4bytes) cumulated research bonus in percent
Offset 0x0094 to 0x0097 ship-population support (0 if fleetcost is larger i.e. not always the display value)
=> [area 0x98 to 0xDB -> effective used values (displacement 0x44)]
Offset 0x0098 to 0x009B credits
Offset 0x009C to 0x009F income (used as empire strength indicator for base of gifts & demands)
Offset 0x00A0 to 0x00A3 real fleet support cost (i.e. -pop support) + building support costs (from edifice.bst+7E, subtracted from credits each turn)
Offset 0x00A4 to 0x00A7 number of running dilithium sources
Offset 0x00A8 to 0x00AB number of ships under construction
Offset 0x00AC to 0x00AF research total
Offset 0x00B0 to 0x00B3 cumulated total population (for ship support calculation)
Offset 0x00B4 to 0x00B5 empire-wide morale effect of current events (not at 0x70)
Offset 0x00B6 to 0x00B7 unknown
Offset 0x00B8 to 0x00B9 morale text (signed integer, little endian! -4 =Rebellious, -3 =Defiant, -2 =Disgruntled, -1=Apathetic, 0 =Content, 1 =Pleased, 2 = Loyal, 3 =Fanatic)
Offset 0x00BA to 0x00BB unknown
Offset 0x00BC to 0x00BF intel total
Offset 0x00C0 to 0x00D7 (6 tech areas * 4bytes) cumulated research bonus in percent
Offset 0x00D8 to 0x00DB ship-population support (0 if fleetcost is larger)
=> [area 0xDC to 0xF5 -> GUI / preview]
Offset 0x00DC to 0x00DD +% credits
Offset 0x00DE to 0x00DF empire-wide morale bonus
Offset 0x00E0 to 0x00E1 +% raiding (not working)
Offset 0x00E2 to 0x00E3 +% industry (missing feature)
Offset 0x00E4 to 0x00E5 +% research (all areas)
Offset 0x00E6 to 0x00E7 +% security
Offset 0x00E8 to 0x00E9 +% espionage total
Offset 0x00EA to 0x00EB +% sabotage total
Offset 0x00EC to 0x00ED +% economic intel (not working)
Offset 0x00EE to 0x00EF +% scientific intel (not working/missing feature)
Offset 0x00F0 to 0x00F1 +% military intel (not working/missing feature)
Offset 0x00F2 to 0x00F3 +% traderoute credits
Offset 0x00F4 to 0x00F5 +% ground combat (e.g. Hall of Warriors)
=> [area 0xF6 to 0x10F -> effective used values (displacement 0x1A)]
Offset 0x00F6 to 0x00F7 +% credits
Offset 0x00F8 to 0x00F9 empire-wide morale bonus
Offset 0x00FA to 0x00FB +% raiding (not working)
Offset 0x00FC to 0x00FD +% industry (missing feature)
Offset 0x00FE to 0x00FF +% research (all areas)
Offset 0x0100 to 0x0101 +% security
Offset 0x0102 to 0x0103 +% espionage total
Offset 0x0104 to 0x0105 +% sabotage total
Offset 0x0106 to 0x0107 +% economic intel (not working)
Offset 0x0108 to 0x0109 +% scientific intel (not working/missing feature)
Offset 0x010A to 0x010B +% military intel (not working/missing feature)
Offset 0x010C to 0x010D +% traderoute credits
Offset 0x010E to 0x010F +% ground combat (e.g. Hall of Warriors)
Offset 0x0110 to 0x0123 (5empires * 4bytes) = treaty label: 0=Neutral, 1=War, 2=Alliance, 3=Peace
Offset 0x0124 to 0x0137 (5empires * 4bytes) = territory accessible: 0=No, 1=Yes
Offset 0x0138 to 0x014B (5empires * 4bytes) = trade allowed: 0=No, 1=Yes
Offset 0x014C to 0x014F total number of traderoutes
Offset 0x0150 unknown
Offset 0x0151 to 0x0153 unused?
Offset 0x0154 to 0x0157 address of trdeInfo
Offset 0x0158 to 0x015F known races (bitwise XOR with 0x01 = card, 0x02 = fed, 0x04 = ferg, 0x08 = kling, 0x10 = rom, 0x20 = acam ...)
Offset 0x0160 to 0x01AF present (or in production queue) "one per empire" 2 byte building IDs, 40 entries max.
Offset 0x01B0 to 0x01B3 random events bitmask
Offset 0x01B4 to 0x01B7 cumulated build cost of war fleet (ship functions 0-4)
Offset 0x01B8 to 0x01BB credits lost due to raids, subtracted from [0x98]
Aliens
alienInfo
hexview width: 64
- races in game (major + minor)
- starID of homesystem
stored in blocks of 0x0040 for every possible race
in same order as races in stbof.res or UE
only first one gets explained
Offset 0x0000 = 01 if race is alive
Offset 0x0018 = starID of homesystem
Offset 0x001C = address of ?[at +4 address of alienTFInfo entry?, number of hold fleets/ships]
Offset 0x0020 = known races (bitwise XOR with 0x01 = card, 0x02 = fed, 0x04 = ferg, 0x08 = kling, 0x10 = rom, 0x20 = acam ...)
Offset 0x0024 = known races (IDs 0x20+)
Offset 0x0028 (5empires * 4bytes) = treaty level (minors) 0=Neutral, 1=Friendly, 2=Affiliated, 3=Member, 4=War
Offset 0x003C = (for minors) 0=free diplomacy, 1=subjugated, 2=restricted diplomacy(membership)
Map
galInfo
- galaxy shape (irregular, elliptic, ring, spiral)
- galaxy size (small, medium, large)
- count of sectors
- count of stars
- count of anomalies
- count of outposts/starbases
Offset 0x0004 to 0x0007 = galaxy shape (0=irregular, 1=elliptic, 2=ring, 3=spiral)
Offset 0x0008 to 0x000B = galaxy size (0 = small, 1 = medium, 2 = large)
Offset 0x000C to 0x000D = number of stars
Offset 0x000E to 0x000F = number of anomalies
Offset 0x0010 to 0x0011 = number of outposts/starbases
Offset 0x0014 to 0x0015 = number of sectors
sector.lst
hexview width: 104
lists all sectors
- sector row
- sector column
- outpostID
- anomalyID
- starID
- sector scanned by race
- sector explored by race
- sector influenced by anomaly (?)
- claim
- owner of the sector
- actual scan value by race
stored in blocks of 0x0068
only the first one gets explained
Offset 0x0000 to 0x0003 = map row
Offset 0x0004 to 0x0007 = map column
Offset 0x0008 to 0x0009 = outpostID from starBaseInfo or -1 if none
Offset 0x000A to 0x000B = anomalyID
Offset 0x000C to 0x000D = starID
Offset 0x000E to 0x000F = claim (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom)
Offset 0x0010 to 0x0013 = 00 00 00 00 if owned by card, else FF FF FF FF
Offset 0x0014 to 0x0017 = 01 00 00 00 if owned by fed, else FF FF FF FF
Offset 0x0018 to 0x001B = 02 00 00 00 if owned by ferg, else FF FF FF FF
Offset 0x001C to 0x001F = 03 00 00 00 if owned by kling, else FF FF FF FF
Offset 0x0020 to 0x0023 = 04 00 00 00 if owned by rom, else FF FF FF FF
Offset 0x0024 to 0x0027 = [raceID] if owned by minor, else FF FF FF FF
Offset 0x0028 to 0x0029 = explored by majors (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom)
Offset 0x0030 to 0x0031 = sector scanned by majors (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom, 20 = blackhole)
Offset 0x0038 to 0x003B = if >0 sector monster occupied?
Offset 0x003C to 0x003F = address of ???, lists all task forces in sector (8 bytes/taskforce)
Offset 0x0040 to 0x0043 = scanpower of card (signed, little endian)
Offset 0x0044 to 0x0047 = scanpower of fed (signed, little endian)
Offset 0x0048 to 0x004B = scanpower of ferg (signed, little endian)
Offset 0x004C to 0x004F = scanpower of kling (signed, little endian)
Offset 0x0050 to 0x0053 = scanpower of rom (signed, little endian)
Offset 0x0054 to 0x0067= (5empires * 4bytes) = sector accessible: 0=No, 1=Yes (cf. empsInfo+124h)
stellInfo
hexview width: 88
lists all anomalies (in ID order?)
- anomaly type
- anomaly name
- anomaly map picture
- anomaly map picture position (x/y)
- wormhole connections
- visited by majors
stored in blocks of 0x0058
Offset 0x0000 to 0x0003 = type of anomaly (00 00 00 00 = blackhole, 01 00 00 00 = X-ray pulsar, 02 00 00 00 = nebula, 03 00 00 00 = neutron star, 0A 00 00 00 = wormhole, 0B 00 00 00 = radio pulsar)
Offset 0x0004 to 0x002B = anomaly name
Offset 0x002C to 0x003F = galaxy map picture file (00 terminated string: blackhole = "blkh" = 62 6C 6B 68, X-ray pulsar = "xp-" = 78 70 2D, nebula = "neb-" = 6E 65 62 2D, neutron star = "ns" = 6E 73, wormhole = "worm" = 77 6F 72 6D, radio pulsar = "rpls" = 72 70 6C 73)
Offset 0x0040 to 0x0041 = anomalyID for wormhole connection, else FF FF
Offset 0x0042 to 0x0043 = 00 00
Offset 0x0044 to 0x0047 = galaxy map picture position x (5 per sector)
Offset 0x0048 to 0x004B = galaxy map picture position y (5 per sector)
Offset 0x004C to 0x004F = galaxy map picture position x (5 per sector)
Offset 0x0050 to 0x0053 = galaxy map picture position y (5 per sector)
Offset 0x0054 to 0x0057 = sector visited by major (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom)
RToSInfo
RToS = race to star (major + minor)
races are in the following order 1: Card 2: Fed 3: Ferg 4: Kling 5: Rom
- starID of homesystem
lists StarIDs of the homesystems of all races, if not available = FF 00
SphOfIn0 to SphOfIn4
hexview width: [GalaxyMapWidth]
relevance unclear
gives a view of the galaxy map for every empire
decreasing values around home system position
Some observations regarding the ownership claim and the sphere of influence value:
- sectors owned by an empire are only under that empire's influence
- non-membered minor race sectors can be under the influence of more than one empire
- disputed sectors are under the influence of at least two empires
- unclaimed sectors may be under influence of empires as well
- the value of the influence is not the deciding factor whether a sector is claimed or not, for example a sector with value 10 may or may not be claimed
- editing sector.lst claim data and setting empire influence in the sector to 0 will not remove the empire's claim of a disputed sector
Systems
systInfo
hexview width: 76
lists all starsystems
- system name
- race (owner)
- race (population)
- population count
- population orders (work assignation)
- moral (value)
- moral (shown text)
- dilithium
- system visited by race
- star type
- star picture
- star picture position on map (x/y)
- planet count
- planetnames
- planet animations
- planet types
- planet sizes (small/middle/big)
- terraforming value total
- terraforming value done
- planet bonuses (population/energy/food => pure/normal/much)
- incoming traderouts
- traderoutes of the system
stored in variable blocksizes, depending on planetnumber, traderoutes and if it's a player's system
only one example starsystem with a single planet gets explained
Offset 0x0000 to 0x0003 = starID
Offset 0x0004 to 0x0007 uninhabited = 00 00 00 00, AI = 00 00 00 01, player = 00 00 00 02
Offset 0x0008 to 0x002F = system name
Offset 0x0030 = system type (0=home, 1=native, 2=non native, 3=subjugated, 4=affiliated, 5=independent minor, 6=conquered home, 7&8=invalid?, 9=any, A=rebel, B=empty)
Offset 0x0031 = star type (red giant=04, orange=05, yellow=06, white=07, green=08, blue=09)
Offset 0x0032 to 0x0035 = star picture
- red giant = 73 2D 72 2D
- orange star = 73 2D 6F 2D
- yellow star = 73 2D 79 2D
- white star = 73 2D 77 2D
- green star = 73 2D 67 2D
- blue star = 73 2D 62 2D
Offset 0x0036 to 0x003E unknown
Offset 0x003F = system explored by empires (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom)
Offset 0x0040 to 0x0043 = population (uninhabited 0x40-0x41 = FF FF, but also read as dword)
Offset 0x0044 to 0x0047 = raceID of population
Offset 0x004C to 0x004F = owner raceID (noone, minor & rebel = 23h)
Offset 0x0050 to 0x0053 = starID
Offset 0x0054 to 0x0057 = people assigned to economy
Offset 0x0058 to 0x005B = people assigned to energy
Offset 0x005C to 0x005F = people assigned to food production
Offset 0x0060 to 0x0063 = people assigned to science
Offset 0x0064 to 0x0067 = people assigned to intelligence
Offset 0x0068 to 0x0069 = random value 0-99 (Minos 0-499) for up to 6 uninhabited systems
Offset 0x006A to 0x006B = number of planets <= 09 00
Offset 0x006C to 0x006D = number of ? (cf. 0x00B8)
Offset 0x006E to 0x006F = dilithium resource level (0, 1, 2, 3, 4, 5, or 10), set by subroutine 4B7A50, if>0 dilithium icon gets shown (F1-map)
Offset 0x0070 to 0x0073 = given system requirements bitmask for buildings (panet types & dilithium, e.g. 0x71 or 0x8 = dilithium flag)
Offset 0x0074 to 0x0077 = planet atmospheres bitmask (minor races only, sub_4B49C0)
Offset 0x0078 to 0x007B = galaxy map picture position x (5 per sector)
Offset 0x007C to 0x007F = galaxy map picture position y (5 per sector)
Offset 0x0080 to 0x0083 = ORDER ECONOMY (typeID) 1=build building, 2=upgrade building(s), 3=build ship, 5=tradegoods, 7=unrest order
Offset 0x0084 to 0x0085 = invested industry
Offset 0x0086 to 0x0087 = turn count for unrest order delay
Offset 0x0088 to 0x0089 = edifice.bst ID of building under construction (else 7F FF)
Offset 0x008A to 0x008B = new edifice.bst building ID for uprgades (else 7F FF)
Offset 0x008C to 0x008F = total cost of upgrade
Offset 0x0090 to 0x0091 = shiplist.sst ID of ship under construction (else FF FF)
Offset 0x0092 to 0x00A7 unknown
Offset 0x00A8 to 0x00AB = address of GUI data for production Queue, length 0x6C
Offset 0x00AC to 0x00AF = address of strcInfo
Offset 0x00B0 to 0x00B3 = address of planet entry array, length 0x4C/planet (cf. 0x0328+)
Offset 0x00B4 to 0x00B7 = address of ???, length 4bytes/planet
Offset 0x00B8 to 0x00BB = address of ???, length 0x40 * unknown at [0x006C]
Offset 0x00BC to 0x00BD = max population * 10 (for a feature of edifice.bst+7A)
Offset 0x00BE to 0x00BF unknown
=> [area 0xC0 to 0x17F -> GUI / preview]
Offset 0x00C0 to 0x00C3 = cumulated edifice.bst output of main Food
Offset 0x00C4 to 0x00C7 = +% food (blg + planet bonuses)
Offset 0x00C8 to 0x00CB = cumulated edifice.bst output of main Energy
Offset 0x00CC to 0x00CF = +% energy (blg + planet bonuses)
Offset 0x00D0 to 0x00D3 = cumulated edifice.bst output of main Industry
Offset 0x00D4 to 0x00D7 = +% industry
Offset 0x00D8 to 0x00DB = cumulated edifice.bst output of main Research
Offset 0x00DC to 0x00DF = +% research (not working)
Offset 0x00E0 to 0x00E3 = +% research empire-wide (all areas)
Offset 0x00E4 to 0x00E7 = + Credits (blg output 0x4 = tradegoods -> unused)
Offset 0x00E8 to 0x00EB = +% credits
Offset 0x00EC to 0x00EF = +% total credits (i.e. empire-wide)
Offset 0x00F0 to 0x00F3 = Shield per Energy Tech
Offset 0x00F4 to 0x00F7 = + Morale (blg output 0x14 -> e.g. Holo Cinema)
Offset 0x00F8 to 0x00FB = cumulated edifice.bst output of main Intel
Offset 0x00FC to 0x00FF = +% general intelligence (& +% intel local -> bug)
Offset 0x0100 to 0x0103 = +% intel total
Offset 0x0104 to 0x0107 = +% security
Offset 0x0108 to 0x010B = +% espionage total
Offset 0x010C to 0x010F = +% sabotage total
Offset 0x0110 to 0x0113 = +% economic intel (not working)
Offset 0x0114 to 0x0117 = Anti-Ship Defenses (base output of running OBs)
Offset 0x0118 to 0x011B = Ship experience
Offset 0x011C to 0x011F = Builds Ships (i.e. yard output value -> unused)
Offset 0x0120 to 0x0123 = +% biotech research
Offset 0x0124 to 0x0127 = +% computer research
Offset 0x0128 to 0x012B = +% construction research
Offset 0x012C to 0x012F = +% propulsion research
Offset 0x0130 to 0x0133 = +% weapon research
Offset 0x0134 to 0x0137 = +% energy research
Offset 0x0138 to 0x013B = Scan range
Offset 0x013C to 0x013F = Dilithium (running)
Offset 0x0140 to 0x0143 = + Trade routes
Offset 0x0144 to 0x0147 = unused
Offset 0x0148 to 0x014B = + Morale empire-wide
Offset 0x014C to 0x014F = +/- Morale (extra morale [edifice.bst+82h] & unrest order)
Offset 0x0150 to 0x0153 = +% income on trade route (empire-wide)
Offset 0x0154 to 0x0157 = +% ground defense
Offset 0x0158 to 0x015B = +% raiding (not working)
Offset 0x015C to 0x015F = unused
Offset 0x0160 to 0x0163 = + Food (local static bonus)
Offset 0x0164 to 0x0167 = + Energy (local static bonus)
Offset 0x0168 to 0x016B = + Industry (local static bonus -> missing feature?)
Offset 0x016C to 0x016F = + Intelligence (local static bonus)
Offset 0x0170 to 0x0173 = + Research (local static bonus)
Offset 0x0174 to 0x0177 = Shipbuilding bonus to industry (e.g. utopia planetia)
Offset 0x0178 to 0x017B = bribe resistance (minor member systems)
Offset 0x017C to 0x017F = +% ground combat (empire-wide)
=> [area 0x180 to 0x23F -> effective used values (displacement 0xC0)]
Offset 0x0180 to 0x0183 = cumulated edifice.bst output of main Food
Offset 0x0184 to 0x0187 = +% food (blg + planet bonuses)
Offset 0x0188 to 0x018B = cumulated edifice.bst output of main Energy
Offset 0x018C to 0x018F = +% energy (blg + planet bonuses)
Offset 0x0190 to 0x0193 = cumulated edifice.bst output of main Industry
Offset 0x0194 to 0x0197 = +% industry
Offset 0x0198 to 0x019B = cumulated edifice.bst output of main Research
Offset 0x019C to 0x019F = +% research (not working)
Offset 0x01A0 to 0x01A3 = +% research empire-wide (all areas)
Offset 0x01A4 to 0x01A7 = + Credits (blg output 0x4 = tradegoods -> unused)
Offset 0x01A8 to 0x01AB = +% credits
Offset 0x01AC to 0x01AF = +% total credits (i.e. empire-wide)
Offset 0x01B0 to 0x01B3 = Shield per Energy Tech
Offset 0x01B4 to 0x01B7 = + Morale (blg output 0x14 -> e.g. Holo Cinema)
Offset 0x01B8 to 0x01BB = cumulated edifice.bst output of main Intel
Offset 0x01BC to 0x01BF = +% general intelligence (& +% intel local -> bug)
Offset 0x01C0 to 0x01C3 = +% intel total
Offset 0x01C4 to 0x01C7 = +% security
Offset 0x01C8 to 0x01CB = +% espionage total
Offset 0x01CC to 0x01CF = +% sabotage total
Offset 0x01D0 to 0x01D3 = +% economic intel (not working)
Offset 0x01D4 to 0x01D7 = Anti-Ship Defenses (base output of running OBs)
Offset 0x01D8 to 0x01DB = Ship experience
Offset 0x01DC to 0x01DF = Builds Ships (i.e. yard output value -> unused)
Offset 0x01E0 to 0x01E3 = +% biotech research
Offset 0x01E4 to 0x01E7 = +% computer research
Offset 0x01E8 to 0x01EB = +% construction research
Offset 0x01EC to 0x01EF = +% propulsion research
Offset 0x01F0 to 0x01F3 = +% weapon research
Offset 0x01F4 to 0x01F7 = +% energy research
Offset 0x01F8 to 0x01FB = Scan range
Offset 0x01FC to 0x01FF = Dilithium (running)
Offset 0x0200 to 0x0203 = + Trade routes
Offset 0x0204 to 0x0207 = unused
Offset 0x0208 to 0x020B = + Morale empire-wide
Offset 0x020C to 0x020F = +/- Morale (extra morale [edifice.bst+82h] & unrest order)
Offset 0x0210 to 0x0213 = +% income on trade route (empire-wide)
Offset 0x0214 to 0x0217 = +% ground defense
Offset 0x0218 to 0x021B = +% raiding (not working)
Offset 0x021C to 0x021F = unused
Offset 0x0220 to 0x0223 = + Food (local static bonus)
Offset 0x0224 to 0x0227 = + Energy (local static bonus)
Offset 0x0228 to 0x022B = + Industry (local static bonus -> missing feature?)
Offset 0x022C to 0x022F = + Intelligence (local static bonus)
Offset 0x0230 to 0x0233 = + Research (local static bonus)
Offset 0x0234 to 0x0237 = Shipbuilding bonus to industry (e.g. utopia planetia)
Offset 0x0238 to 0x023B = bribe resistance (minor member systems)
Offset 0x023C to 0x023F = +% ground combat (empire-wide)
=> [area 0x240 to 0x297 -> GUI / preview]
Offset 0x0240 to 0x0243 = FF FF FF FF (unknown)
Offset 0x0244 to 0x0245 = unused
Offset 0x0246 to 0x0247 = % of manned vs total main Industry units
Offset 0x0248 to 0x0249 = % of manned vs total main Food units
Offset 0x024A to 0x024B = % of manned vs total main Energy units
Offset 0x024C to 0x024D = % of manned vs total main Intel units
Offset 0x024E to 0x024F = % of manned vs total main Research units
Offset 0x0250 to 0x0251 = unemployed population
Offset 0x0254 to 0x0255 = Food output total after bonuses
Offset 0x0258 to 0x0259 = Food surplus or shortfall
Offset 0x025A to 0x025B = Food consumption
Offset 0x025C to 0x025D = current pop*2 (for max growth popup -> wrong)
Offset 0x025E to 0x025F = Energy output total after bonuses
Offset 0x0260 to 0x0261 = Energy consumption
Offset 0x0262 to 0x0263 = Energy surplus or shortfall
Offset 0x0264 to 0x0265 = Credits output total after bonuses
Offset 0x0268 to 0x0269 = system Credits effective (i.e. -support costs)
Offset 0x026A to 0x026B = total building support cost of system (from edifice.bst+7E)
Offset 0x026C to 0x026F = Industry output total after bonuses
Offset 0x0270 to 0x0273 = Research output total after bonuses
Offset 0x0274 to 0x0277 = Dilithium (running) -> loaded from 0x013C
Offset 0x0278 to 0x027B = dilithium shortage indicator (unused)
Offset 0x027C to 0x027F = build ship marker (? cf. +80 =3)
Offset 0x0280 to 0x0283 = Intel output total after bonuses
Offset 0x0284 to 0x0285 = moral value
Offset 0x0286 to 0x0287 = moral text (cf. 0x02DE)
Offset 0x0288 to 0x028B = sets Industry output to zero if 1 (e.g. general strike)
Offset 0x028C to 0x028F = sets Credit output to zero if 1 (e.g. general strike)
Offset 0x0290 to 0x0293 = sets Research output to zero if 1 (e.g. general strike)
Offset 0x0294 to 0x0297 = sets Intel output to zero if 1 (e.g. general strike)
=> [area 0x298 to 0x2EF -> effective used values (displacement 0x58)]
Offset 0x0298 to 0x029B = FF FF FF FF (unknown)
Offset 0x029C to 0x029D = pop increase/loss due to growth/starvation
Offset 0x029E to 0x029F = % of manned vs total main Industry units
Offset 0x02A0 to 0x02A1 = % of manned vs total main Food units
Offset 0x02A2 to 0x02A3 = % of manned vs total main Energy units
Offset 0x02A4 to 0x02A5 = % of manned vs total main Intel units
Offset 0x02A6 to 0x02A7 = % of manned vs total main Research units
Offset 0x02A8 to 0x02A9 = unemployed population
Offset 0x02AC to 0x02AD = Food output total after bonuses
Offset 0x02B0 to 0x02B1 = Food surplus or shortfall
Offset 0x02B2 to 0x02B3 = Food consumption
Offset 0x02B4 to 0x02B5 = current pop*2 (for max growth popup -> wrong)
Offset 0x02B6 to 0x02B7 = Energy output total after bonuses
Offset 0x02B8 to 0x02B9 = Energy consumption
Offset 0x02BA to 0x02BB = Energy surplus or shortfall
Offset 0x02BC to 0x02BD = Credits output total after bonuses
Offset 0x02C0 to 0x02C1 = system Credits effective (i.e. -support costs)
Offset 0x02C2 to 0x02C3 = total building support cost of system (from edifice.bst+7E) + buy costs
Offset 0x02C4 to 0x02C7 = Industry output total after bonuses
Offset 0x02C8 to 0x02CB = Research output total after bonuses
Offset 0x02CC to 0x02CF = Dilithium (running) -> loaded from 0x01FC
Offset 0x02D0 to 0x02D3 = dilithium shortage indicator (unused)
Offset 0x02D4 to 0x02D7 = build ship marker (? cf. +80 =3)
Offset 0x02D8 to 0x02DB = Intel output total after bonuses
Offset 0x02DC to 0x02DD = moral value
Offset 0x02DE to 0x02DF = moral text (signed integer, little endian! : -4 = Rebellious, -3 = Defiant, -2 = Disgruntled, -1= Apathetic, 0 = Content, 1 = Pleased, 2 = Loyal, 3 = Fanatic)
Offset 0x02E0 to 0x02E3 = sets Industry output to zero if 1 (e.g. general strike)
Offset 0x02E4 to 0x02E7 = sets Credit output to zero if 1 (e.g. general strike)
Offset 0x02E8 to 0x02EB = sets Research output to zero if 1 (e.g. general strike)
Offset 0x02EC to 0x02EF = sets Intel output to zero if 1 (e.g. general strike)
Offset 0x02F0 to 0x02F1 = base morale
Offset 0x02F2 to 0x02F3 = unused
Offset 0x02F4 to 0x02F7 = unlocks positive/negative morale events if 0 (random manipulated, default 32h)
Offset 0x02F8 to 0x02F9 = edifice.bst ID of main Food (no 7F FF)
Offset 0x02FA to 0x02FB = edifice.bst ID of main Energy (no 7F FF)
Offset 0x02FC to 0x02FD = edifice.bst ID of main Industry (no 7F FF)
Offset 0x02FE to 0x02FF = edifice.bst ID of main Intel (no 7F FF)
Offset 0x0300 to 0x0301 = edifice.bst ID of main Research (no 7F FF)
Offset 0x0302 to 0x0303 unknown
Offset 0x0304 to 0x0307 = random events bitmask
Offset 0x0308 = number of incoming traderoutes
Offset 0x0309 = number of system traderoutes
Offset 0x030A to 0x030B unknown
Offset 0x030C to 0x030F = address of incoming traderoutes list
Offset 0x0310 to 0x0313 = address of system traderoutes list
Offset 0x0314 to 0x0317 = update worker assignments marker (f.e. after pop loss) -> bugged!
Offset 0x0318 to 0x031B = update powered buildings marker (f.e. after energy output reduction) -> bugged!
Offset 0x031C to 0x031F = skips traderoute & tradegoods output if not 0 (siege/Blockade marker? unused?)
Offset 0x0320 to 0x0323 = bombing marker -> skips pop growth if not 0
Offset 0x0324 to 0x0327 = production queue setting (0=manual, 1=automatic)
Offset 0x0328+ list of all planets of that starsystem
Offset 0x0328 to 0x034F = planetname (00 terminated)
Offset 0x0350 to 0x0357 = planet animation filename (= ****.ani)
Offset 0x0358 to 0x035D = 00 FB 57 00 30 59 (always?)
Offset 0x035E to 0x035F = planetNr
Offset 0x0360 to 0x0361 = planet size (small = 00 00, middle = 01 00, big = 02 00)
Offset 0x0362 to 0x0363 = terraforming value total
Offset 0x0364 to 0x0365 = terraforming value done
Offset 0x0366 to 0x0367 = food bonus (few = 00 00, normal = 36 01, much = 6C02, else = normal)
Offset 0x0368 to 0x0369 = energy bonus (few = 00 00, normal = 36 01, much = 6C02, else = normal)
Offset 0x036A to 0x036B = population bonus (few = 00 00, normal = 36 01, much = 6C02, else = normal)
Offset 0x036C to 0x036D = planetNr
Offset 0x0370 planet type (00 = arctic, 01 = barren, 02 = desert, 03 = gas giant, 04 = djungle, 05 = oceanic, 06 = earthlike, 07 = vulcanic, 08 = methanic???, 09 = AUS, >09 = other)
Offset 0x0372 to 0x0373 = 00 00
Offset [0x0328+0x004C*numberOfPlanets] to Offset [0x0328+0x004C*numberOfPlanets+0x0004*numberOfPlanets-0x0001]
(for one planet that's Offset 0x0374 to 0x0377) = unknown (mostly 00 ... 00)
[if traderoutes are available:
Offset afterwards = (number of incoming traderouts + number of system traderoutes) * (0x0002 length (16bit) raceID + 0x0002 length (16bit) tradeRouteNo. (tradeRouteNo + raceID = tradeRouteID)]
[if it's a players system:
Offset afterwards = player GUI data for production Queue, length = 0x006C]
what a complicated file...
strcInfo
hexview width: 4
lists all buildings for each star
- starID
- number of entries for each star
- building type
- building count
- number of activated (powered on) buildings (for special buildings and orbitals)
stored in variable blocksizes, depending on number of different building types
Offset 0x0000 to 0x0001 = starID
Offset 0x0002 to 0x0003 = number of entrys
[for number of entrys:
Offset 0x0004 to 0x0005 = building count
Offset 0x0006 to 0x0007 = building type (same order as in stbof.res and UE, it's the building ID in edifice.bst)
Offset 0x0008 to 0x000B = number of activated buildings (dword)]
Research
techInfo
hexview width: 108
lists science by raceID
Contains:
- science levels
- technology levels
- science points done by science type
- actual science assignation
- actually buildable buildings
General file structure
Offset 0x0000 to 0x0001 = number of races in the game (major + minor)
Offset 0x0002 to 0x0047 = list of tech entry indexes (35 slots for 35 races each 2 bytes in size, slots for races not in the game usually point to the first tech entry index -> 0)
Offset 0x0048 to 0x00AB = list of empire science assignations (20 bytes per empire)
Offset 0x00AC to +8*[minor races in game]= evolution data(2bytes/entry: current EL, advancement chance next turn in %, default chance multiplier, bonus/turn)
followed by a list of tech entries that have the same structure as those in racetech.tec
List of empire science assignations
Contains 5 entries - one for each empire.
Entry structure:
Offset length 0x0006 = unknown
Offset length 0x0002 = science assignation biotech
Offset length 0x0002 = science assignation computer
Offset length 0x0002 = science assignation construction
Offset length 0x0002 = science assignation energy
Offset length 0x0002 = science assignation engines
Offset length 0x0002 = science assignation weapons
Offset length 0x0002 = unknown
List of tech entries
Number of entries equals number of races listed in this file. The list of tech entry indexes links each race to it's tech entry. The first entry carries the index 0, the next 1 and so on.
Entry structure:
Offset length 0x0002 = raceID
Offset length 0x0002 = unknown
Offset length 0x0002 = science level biotech
Offset length 0x0002 = unknown
Offset length 0x0004 = FP done
Offset length 0x0002 = science level computer
Offset length 0x0002 = unknown
Offset length 0x0004 = FP done
Offset length 0x0002 = science level construction
Offset length 0x0002 = unknown
Offset length 0x0004 = FP done
Offset length 0x0002 = science level energy
Offset length 0x0002 = unknown
Offset length 0x0004 = FP done
Offset length 0x0002 = science level engines
Offset length 0x0002 = unknown
Offset length 0x0004 = FP done
Offset length 0x0002 = science level weapons
Offset length 0x0002 = unknown
Offset length 0x0004 = FP done
Offset length 0x0002 = lowest technology level (for all techs requirement)
Offset length 0x0006 = unknown
Offset length 0x000B = buildable special buildings (bitwise XOR, same order as in stbof.res and UE, but little endian: mirrored 8bit blocks)
- &0x8000000000000000000000 = phenix device
- &0x4000000000000000000000 = dilithium raffinery
- &0x2000000000000000000000 = orbital cannon
- &0x1000000000000000000000 = communication network
- &0x0800000000000000000000 = charge collector
- &0x0400000000000000000000 = bunker
- &0x0200000000000000000000 = simple replicator
- &0x0100000000000000000000 = improved replicator
- &0x0080000000000000000000 = shipyard
- &0x0040000000000000000000 = isolinear scanner
- &0x0020000000000000000000 = listening post
- &0x0010000000000000000000 = subspace scanner
- &0x0008000000000000000000 = subautomatic simulator
- &0x0004000000000000000000 = thery simulator
- &0x0002000000000000000000 = private farm
- &0x0001000000000000000000 = oceanic farm
- &0x0000800000000000000000 = obsedian congregation
- &0x0000400000000000000000 = reeducation center
- &0x0000200000000000000000 = union yard
- &0x0000100000000000000000 = shield generator
- &0x0000080000000000000000 = wind turbine
- &0x0000040000000000000000 = trade goods
- &0x0000020000000000000000 = trade center
- &0x0000010000000000000000 = agrarian store
- &0x0000008000000000000000 = trade tower
- &0x0000004000000000000000 = trade commission
- &0x0000002000000000000000 = holo cinema
- &0x0000001000000000000000 = fantasy land
- &0x0000000800000000000000 = inquisition
- &0x0000000400000000000000 = work camp
- &0x0000000200000000000000 = command center
- &0x0000000100000000000000 = hidden sensor grid
- &0x0000000080000000000000 = laws of war
- &0x0000000040000000000000 = utopia planetia
- &0x0000000020000000000000 = starfleet academy
- &0x0000000010000000000000 = federation council
- &0x0000000008000000000000 = daystorm institute
- &0x0000000004000000000000 = genesis sciencelab
- &0x0000000002000000000000 = festival of fun
- &0x0000000001000000000000 = franchise office
- &0x0000000000800000000000 = astronomic academy
- &0x0000000000400000000000 = singularity facility
- &0x0000000000200000000000 = center for fighttests
- &0x0000000000100000000000 = police state
- &0x0000000000080000000000 = tactical school
- &0x0000000000040000000000 = big hall
- &0x0000000000020000000000 = prison mine
- &0x0000000000010000000000 = hall of warriors
- &0x0000000000008000000000 = military yard
- &0x0000000000004000000000 = federation yard
- &0x0000000000002000000000 = federation replicator
- &0x0000000000001000000000 = alliance yard
- &0x0000000000000800000000 = tribunal
- &0x0000000000000400000000 = fleet academy
- &0x0000000000000200000000 = talshiar main quater
- &0x0000000000000100000000 = imperial senate
- &0x0000000000000080000000 = industrial center (of the Bencites)
- &0x0000000000000040000000 = architectural center (of the Bandi)
- &0x0000000000000020000000 = bajoran jalanda forum (of the Bajorans)
- &0x0000000000000010000000 = harvest complex (of the Antedians)
- &0x0000000000000008000000 = examination base (of the Anticans)
- &0x0000000000000004000000 = supersoldier academy (of the Angosians)
- &0x0000000000000002000000 = andorian war school (of the Andorians)
- &0x0000000000000001000000 = acamerian clanhall (of the Acamerians)
- &0x0000000000000000800000 = cinetic laboratory (of the Malcorians)
- &0x0000000000000000400000 = ktarian game studio (of the Ktarians)
- &0x0000000000000000200000 = edo palace (of the Edos)
- &0x0000000000000000100000 = gladiator arena (of the Chalnoth)
- &0x0000000000000000080000 = science thinking factory (of the Caldonians)
- &0x0000000000000000040000 = planetary computer (of the Bynare)
- &0x0000000000000000020000 = cosmetic center (of the Bolarians)
- &0x0000000000000000010000 = councelor academy (of the Betazoids)
- &0x0000000000000000008000 = defense network (of the Talarian)
- &0x0000000000000000004000 = physical institute (of the Takarians)
- &0x0000000000000000002000 = biotec center (of the Sheliak)
- &0x0000000000000000001000 = examination base (of the Selay)
- &0x0000000000000000000800 = collector place (of the Pakleds)
- &0x0000000000000000000400 = recruitment center (of the Nausicaans)
- &0x0000000000000000000200 = monument of subjugation (of the Mizarians)
- &0x0000000000000000000100 = mintaca farm (of the Mintacarians)
- &0x0000000000000000000080 = imperial yard
- &0x0000000000000000000040 = orgenic regenerator
- &0x0000000000000000000020 = military academy (of the Zakdorn)
- &0x0000000000000000000010 = intelligence (of the Yridians)
- &0x0000000000000000000008 = science academy (of the Vulcans)
- &0x0000000000000000000004 = archive of psycho history (of the Ullians)
- &0x0000000000000000000002 = science committee (of the Trillian)
- &0x0000000000000000000001 = mythology library (of the Tamarians)Offset length 0x001D = buildable normal buildings / upgrades (bitwise XOR, same order as in stbof.res and UE, but little endian: mirrored 8bit blocks)
Offset length 0x0008 = unknown (always 00 ... 00 ?)
Intel
intelInfo
hexview width: 16
0x0000 to 0x0057 unknown
0x0058 to 0x02D7 (5 empires * 0x80) = empire stats intel screen data (not the stats), structure:
+0x0 (4 bytes * 4 other empires) = turn number of last update
+0x10-0x7F = unknown
0x02D8 to 0xDF63 (5 empires * 0x2C1C) = block structure: (for +0x4 to +0x5B see intel.bin)
+0x0 = index value for all areas output (loops +1/turn 0-13h)
+0x4 (4 bytes * 5 empires) = base for espionage attack threshold
+0x18 (4 bytes * 5 empires) = base for sabotage attack threshold
+0x2C (4 bytes * 8 empsInfo morale labels) = security defense modifier%
+0x4C (4 bytes * 4 empsInfo treaty labels) = attack threshold modifier%
+0x5C = unused ?
+0x60 (4 bytes * 4 enemies) = department setting (0=general, 1=economy, 2=science, 3=military)
+0x70 (4 bytes * 9 areas -> security 0, espionage 1-4, sabotage 5-8) = percentage assignation
+0x94-0xA3 = unknown
+0xA4 (9 areas * 0x58 bytes) = block structure:
+0x0 = turn number of last intel attack (unless security) +0x4 = stockpile points for attack threshold, re-set to 0 if attack (unless security) +0x8 (4 bytes * 20 turns) = area output of the last 20 turns
+0x3BC (4 bytes * 4 enemies * 4 departments) = agents training status 1-1Eh (+/- 2 turn)
+0x3FC = index for reports 41+ (loops 0-27h) -> overwrite/clear old pointer ?
+0x400 = index for next intel report (loops 0-27h)
+0x404 = number of intel reports (28h max.)
+0x408-0x2C07 (up to 40 Intel reports * 0x100 bytes) = block structure:
+0x0 = Index value of report +0x4 = turn number of event +0x8 = blamed ? race ID or -1 +0x9 = opponent race ID ? +0xA-0xB = unknown +0xC = index for report list ? +0x10 = report text +0x?? to 0xFF = unknown
+0x2C08 (4 bytes * 5 empires) = turn number of last intel attack?
Diplomacy
treaty
completely unknown
for turn 1 it's 00 00 00 00 00 00 00 00
Trade
trdeInfo0.cnt to trdeInfo4.cnt
number of traderoutes for each empire
trdeInfo0 to trdeInfo4
partially unexplored
lists traderoutes
- raceID
- traderoute number (+ raceID = traderouteID)
- starIDs
Ships & Task Forces
alienTFInfo0 to alienTFInfo[numberOfRaces]
lists fleetIDs of every race
- number of taskforces/fleets
- fleet IDs
[for [numberOfRaces]:
Offset 0x0000 to 0x0003 = number of controled fleets
Offset length 0x0002 = fleetID]
shipname.dat
hexview width: 12
is divided into several shipname categorys
shipnames aren't in the same order with these in shipname.bin of stbof.res!
this file also influences the shipIDs for newly builded ones
- first given shipname
- next given shipname
- counter of repeatings (for name endings A, B, C,...)
stored in blocks of 0x000C
block position equals shipname category position in shipname.bin of stbof.res as well as category position in UE
Each race has its own categorys, seperated for different ship types
Warning! shipID for new constructed ships gets wrong, if distance between first and next name is wrong! (next name reffering number can be less as well as higher than first, distance is based on list iterations)
If next reffering number reaches first reffering number, counter gets increased
Offset 0x0000 to 0x0003 = first given name reffering number of corresponding shipname category or if none given = FF FF FF FF
Offset 0x0004 to 0x0007 = next given name reffering number of corresponding shipname category or if none given = FF FF FF FF
Offset 0x0008 to 0x0009 = counter of repeating/iteration or if no name of this category has been used yet = FF FF (defines the appendix of the shipname: A, B, ...)
Offset 0x000A to 0x000B = 00 00
ShipCntr
next shipID
TForceCntr
next fleetID
GShipHead = GTForceHd = GWTForceHd = GTFStasisHd
These are global list headers.
Header | List | Contains |
---|---|---|
GShipHead | GShipList | Ships |
GTForceHd | GTForceList | Task forces |
GWTForceHd | GWTForce | Task forces |
GTFStasisHd | GTFStasis | Unknown |
Identified fields:
- slot size
- total number of slots in list
- number of occupied slots (slots with data)
File structure (40 bytes):
Offset 0x0000 to 0x000F = unknown
Offset 0x0010 to 0x0013 = slot size
Offset 0x0014 to 0x0017 = total number of slots
Offset 0x0018 to 0x001B = number of occupied slots
Offset 0x000C to 0x0027 = unknown
GShipList
hexview width: 116
list all ships with
- shipname
- raceID
- shipID
- fleetID
- shield
- hull
- ship type (manufactoring type / =shiplistID in shiplist.sst)
- experience bonus for beam accuracy
- experience bonus for torpedo accuracy
- experience bonus for defense
- crew experience value
- crew experience level
- base ground combat strength
stored in blocks of 0x0074
Offset 0x0000 to 0x0027 = shipname
Offset 0x0028 to 0x0029 = raceID (only for ship icon)
Offset 0x002A to 0x002B = shipID (NOT shiplist.sst ID)
Offset 0x002C to 0x002F = experience bonus for beam accuracy
Offset 0x0030 to 0x0033 = experience bonus for torpedo accuracy
Offset 0x0034 to 0x0037 = experience bonus for defense
Offset 0x0038 to 0x003B = shield (can lead to crash if wrong)
Offset 0x003C to 0x003F = hull (leads to crash in tactical fight if too high)
Offset 0x0040 to 0x0043 = crew experience value
Offset 0x0044 to 0x0047 = crew experience level (0=green,.. , 4=legendary) accessed for stars, raid, intercept & damage control
Offset 0x0048 to 0x004F = unknown
Offset 0x0050 to 0x0051 = fleetID
Offset 0x0052 to 0x0053 = ship type (manufactoring type, used as shiplistID in stbof.res, e.g. in shiptech.sst and is in same order as in UE)
Offset 0x0054 to 0x0057 = unknown
Offset 0x0058 to 0x005B = cloak indicator for battles 1=yes
Offset 0x005C to 0x005F = shipfunction/=value:[0/8, 1/10, 2/6, 3/2, 4/4, 5-8/0, 9/1] +shiptech.sst computer +propulsion tech requirements
Offset 0x0060 to 0x0063 = (for warships only /function 0-4) value at 5C + map speed
Offset 0x0064 to 0x0067 = (for warships only /function 0-4) shiptech.sst computer + weapon tech requirements, if >0 bombing capable
Offset 0x0068 to 0x006B = unknown
Offset 0x006C to 0x006F = (for TTs only) 50 times shiptech.sst construction tech requirement
Offset 0x0070 to 0x0073 = base ground combat strength (i.e. TT production value /10)
GTForceList = GWTForce
hexview width: 108
differences only exist in behavior
in later turns there might remain fragments of old turns at the end of the list - they get ignored by botf
lists all fleets
- fleetID
- shipIDs
- raceID
- sector row
- sector column
- first Colony ShipID
- control category
- contains colony ships
- scan range
- flight range
- speed
- order (evade, attack,...)
stored in blocks of 0x006C
data fragments at the end of the file happen if fleet count decreases
Offset 0x0000 to 0x0003 = fleetID
Offset 0x0004 to 0x0007 = ship count of that fleet
Offset 0x0008 to 0x000B = shipID of first fleet slot, if unused FF FF FF FF
Offset 0x000C to 0x000F = shipID of second fleet slot, if unused FF FF FF FF
Offset 0x0010 to 0x0013 = shipID of third fleet slot, if unused FF FF FF FF
Offset 0x0014 to 0x0017 = shipID of fourth fleet slot, if unused FF FF FF FF
Offset 0x0018 to 0x001B = shipID of fifth fleet slot, if unused FF FF FF FF
Offset 0x001C to 0x001F = shipID of sixth fleet slot, if unused FF FF FF FF
Offset 0x0020 to 0x0023 = shipID of seventh fleet slot, if unused FF FF FF FF
Offset 0x0024 to 0x0027 = shipID of eighth fleet slot, if unused FF FF FF FF
Offset 0x0028 to 0x002B = shipID of ninth fleet slot, if unused FF FF FF FF
Offset 0x002C to 0x002F = order/command - seems only to define the display: systemattack remains if changed
- 00 = invalid
- 01 = terraform
- 02 = colonize
- 03 = raid
- 04 = intercept
- 05 = evade
- 06 = attack
- 07 = build outpost
- 08 = build starbase
- 09 = crew training
- 0A = expand
- 0B = invalid
- 0C = scrap
- 0D = into wormhole
- 0E = attack system
- >0E = invalid
Offset 0x0030 to 0x0033 = for TT based system attacks (1 = conquer, else liberate)
Offset 0x0034 to 0x0037 = raceID
Offset 0x0038 to 0x003B = sector row (GTForceList => next turn, GWTForce => actual turn)
Offset 0x003C to 0x003F = sector column (GTForceList => next turn, GWTForce => actual turn)
Offset 0x0040 to 0x0043 = ability bitmask
Offset 0x0044 to 0x0047 = first Colony shipID (same as one of the ship slots values)
Offset 0x0048 to 0x004B = unknown
Offset 0x004C to 0x004F = control category (1 - major empire, 2 - minor race, 3 - alien)
Offset 0x0050 to 0x0051 = contains colony ships (0 - no, 1 - yes)
Offset 0x0052 to 0x0053 = scan range, keeps only one turn
Offset 0x0054 to 0x0057 = unknown
Offset 0x0058 to 0x005F = flight range, keeps only one turn (double precision floating point number; short = 0, middle = 1, high = 2)
Offset 0x0060 to 0x0067 = speed, keeps only one turn (double precision floating point number; values 0 to 5)
Offset 0x0068 to 0x006B = cloaking (01 00 00 00 = cloaked, else 00 00 00 00)
GTFStasis
unknown (was thought to be number of starbases/outposts)
starBaseInfo
- outpost name
- owner raceID
- outpostID
- ship function (valid values are 6 for outpost and 7 for starbase)
- ship type (links to shiplist.sst entry)
- sector row
- sector column
- production/build cost (usually same as ship build cost in shiplist.sst)
- production invested (outpost completion is production invested/production cost)
- hull
Stored in blocks of 92 bytes.
Offset 0x0000 to 0x0027 = outpost name (ASCII)
Offset 0x0028 to 0x0029 = raceID
Offset 0x002A to 0x002B = outpostID
Offset 0x002C to 0x002D = ship function
Offset 0x002E to 0x002F = ship type
Offset 0x0030 to 0x0033 = sector row / y coord
Offset 0x0034 to 0x0037 = sector column / x coord
Offset 0x0038 to 0x003F = production cost (8 byte floating point number - double)
Offset 0x0040 to 0x0047 = production invested (8 byte floating point number - double)
Offset 0x0048 to 0x004B = scan range
Offset 0x004C to 0x004F = hull
Offset 0x0050 to 0x005B = unknown
monster.lst
unexplored
AI / Agents
AINumAgents
number of AI agents
AIAgtIdCtrl
next agentID (for filenames)
AIAgent0 to AIAgent[NumAgents]
mostly unexplored
- agentID
- raceID
Offset 0x0000 to 0x0003 = agentID
Offset 0x0004 to 0x0007 = 01 00 00 00 if major, 02 00 00 00 if minor
Offset 0x0008 to 0x000B = raceID
Offset 0x000C to 0x00CB = unknown
AgtSy0.cnt to AgtSy[NumAgents].cnt
number of systems to control
AgtSy0 to AgtSy[NumAgents]
starIDs to control
AgtSh0.cnt to AgtSh[NumAgents].cnt
number of ships to control
AgtSh0 to AgtSh[NumAgents]
shipIDs to control
AgtDp0.cnt to AgtDp[NumAgents].cnt
number of entrys in AgtDpxx
AgtDp0 to AgtDp[NumAgents]
hexview width: 266
unknown - mayby diplomatics
AgtTk0.cnt to AgtTk[NumAgents].cnt
number of tasks for that agent
AgtTk0 to AgtTk[NumAgents]
TaskIDs (for TskSh and TskSy filenames)
AISysUnt.cnt
number of AI controled systems
AISysUnt
hexview width: 12
starIDs to manage (for whatever) / partially unexplored
AIShpUnt.cnt
number of AI controled ships
AIShpUnt
hexview width: 24
shipIDs to manage (for whatever) / partially unexplored
stored in blocks of 0x0018
Offset 0x0000 to 0x0001 = shipID
Offset 0x0002 to 0x0003 = unknown (if not 05 00 for colony ships, AI doesn't colonize)
Offset 0x0004 to 0x0017 = unknown
AINumTasks =
number of Tsk-files
= AITaskIDCtr
next TskID for filename (of TskSh/TskSy)
Other
provInfo0 to provInfo4
lists starIDs of every major empire
- star count
- starIDs
ordInfo
hexview width: 84
Mostly unknown, includes peace proposals, system and fleet orders...
Each entry in this file contains two segments - a header and a body.
Header structure
Size of the header is constant for all entries and is 32 bytes.
It contains:
- entry hash
- turn of occurrence
- raceID
- order type
- body size in bytes
Detailed structure:
Offset 0x0000 to 0x0003 = entry hash - unknown hashing function, applies either to the body only or the whole entry (exluding the hash)
Offset 0x0004 to 0x0007 = turn of occurrence
Offset 0x0008 to 0x000B = raceID
Offset 0x000C to 0x000F = unknown
Offset 0x0010 to 0x0013 = order type (0 - system order, 2 - fleet order, others unknown)
Offset 0x0014 to 0x001B = unknown
Offset 0x001C to 0x001F = size of the body in bytes
Size of the body depends on type - it might even vary independent of type.
Body size of orders for fleets and systems seems to be 52 bytes which together with the header amounts to 84 bytes per entry.
Fleet order body structure (type 2)
Contains:
- target sector row
- target sector column
- source sector row
- source sector column
- fleetID
- scan range ?
- map speed ?
Detailed structure:
Offset 0x0000 to 0x0003 = unknown
Offset 0x0004 to 0x0007 = target sector row
Offset 0x0008 to 0x000B = target sector column
Offset 0x000C to 0x000F = source sector row
Offset 0x0010 to 0x0013 = source sector column
Offset 0x0014 to 0x001B = unknown
Offset 0x001C to 0x001D = fleetID
Offset 0x001E to 0x002B = unknown
Offset 0x002C to 0x002F = scan range ?
Offset 0x0030 to 0x0033 = map speed ?
The source sector row and column mark the sector that the fleet was in when it initially received the order not the current location. For ships terraforming planets the source location is usually set to row -1 and column -1.
SeedInfo
completely unknown
result.lst
completely unknown
incident.dat
completely unknown but normally it's 00 00 00 00