all about editing savegames
Moderator: thunderchero
- Flocke
- BORG Trouble Maker
- Posts: 3246
- Joined: Sun Apr 27, 2008 2:00 am
- Location: Hamburg, Germany
- Contact:
all about editing savegames
Attention, content moved to:
http://flocke.bplaced.net/botfwiki/inde ... _Savegames
http://flocke.bplaced.net/botfwiki/inde ... le-Listing
---------------------------------
It may not be all yet, but hopefully you all add the missing parts
I've to thank especially DCER for his great UltimateEditor - without it, my work on figuring out all this stuff would have been much more complicated.
Also his UE already included some of the stuff before I began exploring the saves and others may have explored saves as well - so some stuff I've "reexplored" unnecessarily.
I'm not sure when, but I want to continue on exploring the saves when time comes. I've some plans about
But so far, I hope the following stuff helps some people in non-cheating manner.
have fun with it!
I hope some people will use it for creatin' great maps.
I'll try figuring out more about these mysterious saves.
http://flocke.bplaced.net/botfwiki/inde ... _Savegames
http://flocke.bplaced.net/botfwiki/inde ... le-Listing
---------------------------------
It may not be all yet, but hopefully you all add the missing parts
I've to thank especially DCER for his great UltimateEditor - without it, my work on figuring out all this stuff would have been much more complicated.
Also his UE already included some of the stuff before I began exploring the saves and others may have explored saves as well - so some stuff I've "reexplored" unnecessarily.
I'm not sure when, but I want to continue on exploring the saves when time comes. I've some plans about
But so far, I hope the following stuff helps some people in non-cheating manner.
have fun with it!
I hope some people will use it for creatin' great maps.
I'll try figuring out more about these mysterious saves.
Last edited by Flocke on Thu Oct 15, 2009 4:08 pm, edited 7 times in total.
Hehe, I made a backup of this one, too ^^
Really great (and *lots of*) work
And we still need a "thumbs up" smilie
Btw, seeing the race-to-star pointer abbreviated as "RToS" always makes me smirk ^^
Really great (and *lots of*) work
And we still need a "thumbs up" smilie
Btw, seeing the race-to-star pointer abbreviated as "RToS" always makes me smirk ^^
A discovery consists in seeing something everybody has seen and at the same time thinking something nobody has thought yet.
- Flocke
- BORG Trouble Maker
- Posts: 3246
- Joined: Sun Apr 27, 2008 2:00 am
- Location: Hamburg, Germany
- Contact:
thx, nice to hear that from you, one of those 'modding legends' on here!Gowron wrote:Really great (and *lots of*) work
...being a modding noob myself (but with some programming experience). Only have made some minor efforts on modding/analysing games before.
And it's always motivating gettin' good feedback
Unfortunately I have some other stuff to work on for the moment.
- Spocks-cuddly-tribble
- Code Master
- Posts: 1926
- Joined: Sun Apr 27, 2008 2:00 am
Re: all about editing savegames
What means "only in behavior" ?Flocke wrote: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
- fleetIDs
- raceID
- sector row
- sector column
- scanrange
- flightrange
- speed
- order (evade, attack,...)
And are you sure that fragments of old turns get ignored by botf ?
I ask because of the well known strange behavior of taskforces in progressed game - especially after re-loading savegames and/or altering ships movement.
I.e. sometimes a taskforce suddenly returns to starting point of movement and so on...
I don't know how many bugs is too many but that point is reached somewhere before however many in BotF is.
- Flocke
- BORG Trouble Maker
- Posts: 3246
- Joined: Sun Apr 27, 2008 2:00 am
- Location: Hamburg, Germany
- Contact:
Re: all about editing savegames
I meant this:Spocks-cuddly-tribble wrote:What means "only in behavior" ?
The structure of both files is the same it only seemed to differ in the behavior of sector row and column. That means if you set another position in GTForceList the Fleet will occure there (even if on the other side of the map and without of reach) after ending turn.Flocke wrote:Offset 0x0038 to 0x003B = sector row (GTForceList => next turn, GWTForce => actual turn)
Offset 0x003C to 0x003F = sector column (GTForceList => next turn, GWTForce => actual turn)
Cause there are still some unknown values I can't assure that this is the only difference but cause of same structure only the interpretation/behavior should be different.
I've often seen fleets changing flight direction... very annoying.Spocks-cuddly-tribble wrote:And are you sure that fragments of old turns get ignored by botf ?
I ask because of the well known strange behavior of taskforces in progressed game - especially after re-loading savegames and/or altering ships movement.
I.e. sometimes a taskforce suddenly returns to starting point of movement and so on...
The fragments I meant "should" get ignored, as they wouldn't make sense other than causing such bugs
And they got ignored in the test's I've done...
But maybe you're right, didn't test any further if botf may get messed up by them. You would need a save that get's interpretated wrong.
Good idea!
Re: all about editing savegames
Might I add build queue's not completing to that too. I had Romulus go through 20 turns saying alternately 4 then 3 turns to completion after a restart. I had to cancel my Fabricator upgrade (level 9 to 10 ) and restart it.Spocks-cuddly-tribble wrote:Flocke wrote:And are you sure that fragments of old turns get ignored by botf ?
I ask because of the well known strange behavior of taskforces in progressed game - especially after re-loading savegames and/or altering ships movement.
I.e. sometimes a taskforce suddenly returns to starting point of movement and so on...
- Spocks-cuddly-tribble
- Code Master
- Posts: 1926
- Joined: Sun Apr 27, 2008 2:00 am
It seems to happen if the cost of upgrading is larger than 65,536.
Strange, I thought unsigned short 2Bytes has a Value Range of 0 to 65,535
And may I suggest keeping in topic and use the coresponding topics: I.e. UM4
@Flocke
Thanks for your explanation. In particular I wondered how stores BotF the startpoint of all movements (I've often seen fleets “jumpingâ€
Strange, I thought unsigned short 2Bytes has a Value Range of 0 to 65,535
And may I suggest keeping in topic and use the coresponding topics: I.e. UM4
@Flocke
Thanks for your explanation. In particular I wondered how stores BotF the startpoint of all movements (I've often seen fleets “jumpingâ€
I don't know how many bugs is too many but that point is reached somewhere before however many in BotF is.
There's a bug in botf that when a minor has been conquered and then freed itself on it's own through rebellion, no empire can any longer send proposals to it. Only gifts.
If you send a proposal you'll get two entries in your report saying you withdrew the proposal.
I don't know how to prevent this from happening, but here's how to fix the saved game.
Extract alienInfo, find the right block (race id * 0x40) skip 56 bytes then zero out 5 bytes. In my case those bytes were 04 00 00 00 01
After that your proposals will get through.
I'm assuming the game still considers the race conquered and this resets the setting.
If you send a proposal you'll get two entries in your report saying you withdrew the proposal.
I don't know how to prevent this from happening, but here's how to fix the saved game.
Extract alienInfo, find the right block (race id * 0x40) skip 56 bytes then zero out 5 bytes. In my case those bytes were 04 00 00 00 01
After that your proposals will get through.
I'm assuming the game still considers the race conquered and this resets the setting.
-
- Commodore
- Posts: 889
- Joined: Wed Apr 30, 2008 2:00 am
- Location: Zurich, Switzerland
- Contact:
Re: all about editing savegames
i don't understand this...can you give me (or us if im not the only one who deas not find the values) a few examples? where (exact position) would i have to search for romulan computer techlevel? you say there offset length 0x0002 is there no exact position? this seems to be a relative position within the romulan block isn't it? also the position 0x0002 apears about 20 times in your description of this fileFlocke wrote:techInfo
explained only for one race
Offset 0x0000 to 0x0001 = number of races (major + minor)
[for number of races:
Offset length 0x0002 = raceID
]
[for number of races:
Offset length 0x0012 = unknown (always = 00 ... 00 ?)
]
[for number of races:
Offset length 0x0006 = unknown (always = 00 ... 00 ?)
Offset length 0x0002 = science assignation biotec
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 (always = 00 00 ?)
]
[for number of races:
Offset length 0x0002 = raceID
Offset length 0x0002 = unknown
Offset length 0x0002 = science level biotec
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
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 ?)
]
Public BotF / EF2 Teamspeak 3 Server: 83.169.13.55
- Flocke
- BORG Trouble Maker
- Posts: 3246
- Joined: Sun Apr 27, 2008 2:00 am
- Location: Hamburg, Germany
- Contact:
Re: all about editing savegames
sureDr_Breen wrote:i don't understand this...can you give me (or us if im not the only one who deas not find the values) a few examples?
well, it's saved by iterating all the races, including minors, for each category of information to save, so it's in fact stored relative.Dr_Breen wrote:you say there offset length 0x0002 is there no exact position?
In vanilla the romulans have the race ID "04", so that may be the raceID to search for.Dr_Breen wrote:where (exact position) would i have to search for romulan computer techlevel?
I've just had a look to a savegame of bop and it seems to be a little different. I may have overseen something for vanilla as well.
Easiest would be to have a fresh vanilla turn 1 game on tech1, small map, cause that's what I've mainly used to figure the stuff.
Anyway, set your view to a line length of 108 (6C in hex) and you should see the regulary of the main iteration loop of that file.
In vanilla romulan should have "04" as raceID and the main iteration loop always begins with the raceID, so with view set to 108 (6C in hex), all raceIDs should be shown above each other, beginning with "00", the cardassian raceID. With knowing line and position of the raceID, you can easily use the following to figure the offset to edit:
hope that helps[for number of races:
Offset length 0x0002 = raceID
Offset length 0x0002 = unknown
Offset length 0x0002 = science level biotec
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
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)
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 ?)
]
-
- Commodore
- Posts: 889
- Joined: Wed Apr 30, 2008 2:00 am
- Location: Zurich, Switzerland
- Contact:
which he editor are you using? the ones i tried (i allready have a few i used to make my shipmodels) only read 32 or 64 bytes maximum, so it's possible but very anoying to change something.
as i see yours could even read 444 bytes in a row to read empire's info
as i see yours could even read 444 bytes in a row to read empire's info
Public BotF / EF2 Teamspeak 3 Server: 83.169.13.55
- Flocke
- BORG Trouble Maker
- Posts: 3246
- Joined: Sun Apr 27, 2008 2:00 am
- Location: Hamburg, Germany
- Contact:
Seems that I've totally forgotten to mention the editor.Dr_Breen wrote:which he editor are you using?
Sry about.
It's HxD from http://mh-nexus.de/en/hxd/ (Gibt's sogar in Deutsch http://mh-nexus.de/de/hxd/ )
Viewing the hexcode with corresponding row length makes things alot easier!
Re: all about editing savegames
sector.lst
...
Offset 0x0008 to 0x0009 = outpostID from starBaseInfo or -1 if none
...
Flocke update the info
...
Offset 0x0008 to 0x0009 = outpostID from starBaseInfo or -1 if none
...
Flocke update the info