Difference between revisions of "Savegame File-Listing"

From BotF-Wiki
Jump to: navigation, search
m (techInfo)
m (GTForceList / GWTForce -> conquer or liberate system order)
Line 695: Line 695:
 
* 0E = attack system
 
* 0E = attack system
 
* >0E = invalid
 
* >0E = invalid
Offset 0x0030 to 0x0033 = unknown<br/>
+
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/>

Revision as of 16:14, 20 February 2011

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!



Most of the following data has been explored by using a vanilla singleplayer savegame at turn 1 with following settings:

  • tech 1
  • small galaxy
  • irregular
  • no minors
  • impossible

At later turns there are additional files stored within the saves. These may have been partially discarded. For turn 1 saves, most unexplored data seems to be relatively unimportant and often can be zero! Please aware that some information might be incomplete or even incorrect.

So, 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 type
  • galaxy size
  • difficulty level
  • 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 0x000D(?) filename (00 terminated)
Offset 0x000D to 0x003E savename (00 terminated)
Offset 0x0040 last turn (for savename)
Offset 0x004C 00 = singleplayer 01 = multiplayer
Offset 0x0250 important but unknown (crash if wrong)
Offset 0x0252 player's race (00 = card, 01 = fed, 02=ferg, 03=kling, 04=rom)
Offset 0x0254 to 0x0258 technology starting levels of the five majors (card, fed, ferg, kling, rom)
Offset 0x0260 galaxytype (00 = irregular, 01 = elliptic, 02 = ring, 03 = spiral)
Offset 0x0264 galaxyszie (00 = small, 01 = middle, 03 = big)
Offset 0x026C difficulty (00 = very easy, 01 = easy, 02 = normal, 03 = hard, 04 = impossible)
Offset 0x0270 to 0x0275(?) 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 0x02A4 strategical timer
Offset 0x02A8 tactical timer
Offset 0x02AC actual 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 empire province list(8 bytes per system), at[+4] number of held systems
Offset 0x0054 to 0x0057 credits (for F1 emps info display)
Offset 0x0058 to 0x005B income (for F1 emps info display, not updated properly for AI players, due to cheats)
Offset 0x005C to 0x005F real ship support cost ? (- pop support)
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 different if changed during that turn AI shows 0
Offset 0x006C to 0x006F population (?main system or total?)
Offset 0x0070 to 0x0073 unknown
Offset 0x0074 to 0x0077 = current morale ?
Offset 0x0078 to 0x007B current intel different if changed during that turn AI shows 0
Offset 0x007C to 0x0093 unknown
Offset 0x0094 to 0x0097 ship-population support (not updated properly for AI players, could be due to cheats ?)
Offset 0x0098 to 0x009B credits
Offset 0x009C to 0x009F empire strength indicator
Offset 0x00A0 to 0x00AB unknown
Offset 0x00AC to 0x00AF = research at end of last turn
Offset 0x00B0 to 0x00B3 temporary store for starting pop(originaly thought to be ship-population support)
Offset 0x00B4 to 0x00B7 unknown
Offset 0x00B8 to 0x00B9 moral shown in empire state (signed integer, little endian! 0xFCFF = rebellious, 0xFFFF = apathetic, 0x0000 = normal, 0x0300 = fanatic)
Offset 0x00BA to 0x00BB unknown
Offset 0x00BC to 0x00BF = intel total
Offset 0x00C0 to 0x010D unknown
Offset 0x010E to 0x010F empire-wide ground combat bonus in percent (from buildings like the 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 0x0157 unknown
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 unknown
Offset 0x01B0 to 0x01B3 random events bitmask
Offset 0x01B4 to 0x01B7 = cumulative build costs of fleet (ship functions 0-4)
Offset 0x01B8 to 0x01BB unknown

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 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 size (small/middle/big)
  • count of sectors
  • count of stars
  • count of anomalies

Offset 0x0008 to 0x000B = galaxy size (00 = small, 01 = middle, 02 = big)
Offset 0x000C to 0x000D = number of stars
Offset 0x000E to 0x000F = number of anomalies
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 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 0x0054 = scanpower of rom (signed, little endian)

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
might be relevant for the influence of systems to mark the territory

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 0x003F = system explored by empires (bitwise XOR with 01 = card, 02 = fed, 04 = ferg, 08 = kling, 10 = rom)
Offset 0x0040 to 0x0041 = population (uninhabited = FF FF)
Offset 0x0044 to 0x0047 = race of population
Offset 0x004C to 0x004D = raceID ( = owner, noone = 23)
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 0x006A to 0x006B = number of planets <= 09 00
Offset 0x006E = dilithium resource level (0, 1, 2, 3, 4, 5, or 10), set by subroutine 4B7A50, if>0 dilithium icon gets shown (F1-map), also used to set the dilithium flag
Offset 0x006F = unknown (majors = 05, uninhabited = 00, ? = 02,...)
Offset 0x0070 unknown
Offset 0x0071 = dilithium flag: 0x08 = Dilithium
Offset 0x0072 to 0x0077 unkown
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 0x0087 = invested industry
Offset 0x0088 to 0x008B = ID of building/ship under construction
Offset 0x008C to 0x00AB unknown
Offset 0x00AC to 0x00AF = ? number of entries in strcInfo ?
Offset 0x00B0 to 0x00BB = base offset of planet entry array ?
Offset 0x00BC to 0x00BD = max population * 10
Offset 0x0220 unknown (=32 for colonys (?))
Offset 0x0298 to 0x029B = FF FF FF FF (used as base offset for moral entries)
Offset 0x02DC to 0x02DD = moral value
Offset 0x02DE to 0x2DF = moral text (signed integer, little endian! : -4 = Rebellious, -3 = Defiant, -2 = Disgruntled, -1= Apathetic, 0 = Content, 1 = Pleased, 2 = Loyal, 3 = Fanatic)
Offset 0x02F0 to 0x02F2 = base morale
Offset 0x02F4 to 0x02F7 unlocks positive/negative morale events if 0(random manipulated starting default 50dec)
Offset 0x0304 to 0x0307 = random events bitmask
Offset 0x0309 unknown (for majors = 01)
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))
] (don't know if and where the number of traderoutes is stored)
[if it's a players system:
Offset afterwards = unknown, 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 0x0009 = number of activated buildings
Offset 0x000A to 0x000B = 00 00 (always?)
]

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 0x???? = unknown list for minors, 8 bytes per minor race in the game (total entries = number of races in the game - 5)

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 = technology level / science level sociology
Offset length 0x0002 = unknown
Offset length 0x0004 = FP done
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
mostly unknown - seems to include intel reports

  • actual intel assignation for every major

Offset 0x0000 to 0x02D7 unknown
[for all five majors: blocklength = 0x2C1C
Offset length 0x0070 = unknown
Offset length 0x0002 = intelligance assignation of internal security
]

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
  • shipIDs

Offset 0x0000 to 0x0003 = number of controled fleets
[for [numberOfRaces]:
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 0x005B = unknown
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
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 = rade
  • 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 = unknown
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

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

  • raceID
  • turn of occurance
  • destination sector row (for fleet movement)
  • destination sector column (for fleet movement)
  • fleetID

has variable blocksizes!
on turn 1 there's only one for each major starsystem with a blocksize of 0x0054
Offset 0x0004 to 0x0007 = turn of occurance
Offset 0x0008 to 0x000B = raceID
Offset 0x0024 to 0x0027 = destination sector row (for fleet movement)
Offset 0x0028 to 0x002B = destination sector column (for fleet movement)
Offset 0x003C to 0x003D = fleetID

SeedInfo

completely unknown

result.lst

completely unknown

incident.dat

completely unknown but normally it's 00 00 00 00