all about editing savegames

editing Savegames files; support/discussion/questions

Moderator: thunderchero

User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 3237
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

all about editing savegames

Post by Flocke »

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. :lol:

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.

8)
Last edited by Flocke on Thu Oct 15, 2009 4:08 pm, edited 7 times in total.
User avatar
Gowron
Code Master
Code Master
Posts: 304
Joined: Sat Apr 26, 2008 2:00 am
Location: 50° N, 11° E

Post by Gowron »

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 ^^
A discovery consists in seeing something everybody has seen and at the same time thinking something nobody has thought yet.
User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 3237
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

Post by Flocke »

Gowron wrote:Really great (and *lots of*) work :)
thx, nice to hear that from you, one of those 'modding legends' on here! ;)
...being a modding noob myself (but with some programming experience). Only have made some minor efforts on modding/analysing games before. :roll:

And it's always motivating gettin' good feedback :)
Unfortunately I have some other stuff to work on for the moment.
User avatar
Spocks-cuddly-tribble
Code Master
Code Master
Posts: 1924
Joined: Sun Apr 27, 2008 2:00 am

Re: all about editing savegames

Post by Spocks-cuddly-tribble »

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,...)
What means "only in behavior" ?

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.
User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 3237
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

Re: all about editing savegames

Post by Flocke »

Spocks-cuddly-tribble wrote:What means "only in behavior" ?
I meant this:
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)
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.
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. :)
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...
I've often seen fleets changing flight direction... very annoying.
The fragments I meant "should" get ignored, as they wouldn't make sense other than causing such bugs :lol:
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! :roll:
User avatar
Oblivion
Ensign
Ensign
Posts: 35
Joined: Sun Aug 31, 2008 2:00 am

Re: all about editing savegames

Post by Oblivion »

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...
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.
User avatar
DCER
Code Master
Code Master
Posts: 683
Joined: Sat Apr 26, 2008 2:00 am

Post by DCER »

That's a known botf bug, it happens because the cost of upgrading is > ~32000 and turns into a negative number. You need to scrap a few factories and it'll work then. Or reduce the difference in price between two levels of factories.
User avatar
Oblivion
Ensign
Ensign
Posts: 35
Joined: Sun Aug 31, 2008 2:00 am

Post by Oblivion »

wow glad I never got round to upgrading the 65 factories on Trill then! Only had like 40 on Romulus (though it was pumping out ships so fast due to fanatic loyalty).

Also Trill has a pop cap of 790 is that normal? I don't mind but it does make it a rather overpowered system. (Using UM Beta 4)
User avatar
Spocks-cuddly-tribble
Code Master
Code Master
Posts: 1924
Joined: Sun Apr 27, 2008 2:00 am

Post by Spocks-cuddly-tribble »

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â€
I don't know how many bugs is too many but that point is reached somewhere before however many in BotF is.
User avatar
DCER
Code Master
Code Master
Posts: 683
Joined: Sat Apr 26, 2008 2:00 am

Post by DCER »

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.
Dr_Breen
Commodore
Commodore
Posts: 889
Joined: Wed Apr 30, 2008 2:00 am
Location: Zurich, Switzerland
Contact:

Re: all about editing savegames

Post by Dr_Breen »

Flocke 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 ?)
]
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 file
Public BotF / EF2 Teamspeak 3 Server: 83.169.13.55
User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 3237
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

Re: all about editing savegames

Post by Flocke »

Dr_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?
sure :)
Dr_Breen wrote:you say there offset length 0x0002 is there no exact position?
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:where (exact position) would i have to search for romulan computer techlevel?
In vanilla the romulans have the race ID "04", so that may be the raceID to search for.
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:
[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 ?)
]
hope that helps :roll:
Dr_Breen
Commodore
Commodore
Posts: 889
Joined: Wed Apr 30, 2008 2:00 am
Location: Zurich, Switzerland
Contact:

Post by Dr_Breen »

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
Public BotF / EF2 Teamspeak 3 Server: 83.169.13.55
User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 3237
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

Post by Flocke »

Dr_Breen wrote:which he editor are you using?
Seems that I've totally forgotten to mention the editor. :roll:
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! 8)
User avatar
DCER
Code Master
Code Master
Posts: 683
Joined: Sat Apr 26, 2008 2:00 am

Re: all about editing savegames

Post by DCER »

sector.lst
...
Offset 0x0008 to 0x0009 = outpostID from starBaseInfo or -1 if none
...

Flocke update the info ;)
Post Reply

Return to “editing Savegames files”