MOO save file layout

sargon0

Warlord
Joined
May 30, 2007
Messages
109
Location
England
[EDIT] New fields added and ship data added in post 2 - enough to fix negative fleets!

If you want to analyse internal game data in MOO there are some editors available but some important data is still elusive so I use freeware hex editor XVI32 to analyse the save file. Of course this voids any game you are playing but can give you a better understanding of how the game operates, allow you to create a particularly challenging setup for others or even fix the negative fleet bug (see post 2). Let me know if you find any errors or have additional info which can be added (& credited).

The save file begins with the Planet data – ‘B8’ bytes per planet with enough space for 108 planets whatever galaxy size actually used. Players 0-5 below refer to the races in order as they appear on the map screen.


Planetary Data (loc relative to Planet name)
loc size contents
00 var. Planet name
0C 04 x,y co-ordinates <new>
2C 02 BC towards next ship(s)
2E 01 factory tenths
30 02 reserve <new>
34 02 waste
3A 02 population
3E 02 factories
40 02 actual production after maint
42 02 total production
50 02 SHIP slider percentage
52 02 DEF slider percentage
54 02 IND slider percentage
56 02 ECO slider percentage
58 02 TECH slider percentage
5C 02 Planetary index number <new>
5E 02 missile bases
60 02 BC towards next MB or shield
70 01 population tenths


Empire Data (Player 0)
loc--size-contents
73EC 02 Security percentage in tenths
73FA 02 Trade BC
73FC 02 Ship maint BC
73FE 02 Bases maint BC
7404 02 Spying maint BC
7406 02 Percentage to convert total production to actual
7408 04 Total maint BC (can be negative)
7410 04 Total empire production BC
7414 04 Reserve BC

Player1 data starts at 81C0, Player2 at 8F94, Player3 at 9D68, Player4 at AB3C & Player5 at B910.


Tech Data (Player 0)
loc---size--contents
744A 02x6 Tech level &#8211; Comp/Const/FF/Plan/Prop/Weap
7456 02x6 Tech slider percentage for 6 fields
7462 04x6 Current research investment in project in 6 fields
747A 02x6 Tech level of current research project in 6 fields
7486 04x6 Full tech cost of current project in 6 fields
749E 02x6 Number of completed projects (including level 1) in 6 fields

Player1 data starts at 821E, Player2 at 8FF2, Player3 at 9DC6, Player4 at AB9A & Player5 at B96E.


Research List
loc---size-----contents
C638 03x10x6 Player 0 Limited Research List &#8211; 3 bytes per quadrant, 10 quadrants per field, 6 fields
C6EC ---60x6 Player 0 completed research &#8211; 60 bytes per field (see 749E above for number active)
CAA0 03x10x6 Player 1 Limited Research List
CB54 ---60x6 Player 1 completed research
CF08 03x10x6 Player 2 Limited Research List
CFBC ---60x6 Player 2 completed research
D370 03x10x6 Player 3 Limited Research List
D424 ---60x6 Player 3 completed research
D7D8 03x10x6 Player 4 Limited Research List
D88C ---60x6 Player 4 completed research
DC40 03x10x6 Player 5 Limited Research List
DCF4 ---60x6 Player 5 completed research

[continued]
 
Ship data
loc---size-----contents
4DA0 28x260 Fleets enroute to planets - maximum of 260 apparently!
74BA 24x108 Player 0 fleets at planets for 108 planets (huge galaxy) - similarly Player1-5 at 828E, 9062, 9E36, AC0A, B9DE
C410 68x6-- Player 0 ship designs for 6 types - similarly Player 1-5 at C878, CCE0, D148, D5B0, DA18
C86C -2x6-- Player 0 total ship counts for 6 types - similarly Player 1-5 at CCD4, D13C, D5A4, DA0C, DE74
E642 68x1-- Player 0 current new ship design

Fleet enroute entry
loc size contents
00 01 Race (0-5) - entry not used if this value is x'80'+
02 04 x,y co-ordinates
06 02 destination as planetary index number
0A 02x6 ship counts for 6 ship types

Fleet at Planet entry
0C 02x6 ship counts for 6 ship types

Ship design entry
00 var Ship name
14 02 Ship cost

Negative fleet bug fix
So to cure negative fleet bug for ships enroute scan from 4DA0 looking for fleet for offending race number with count of 007D (little endian form of 32,000) or above and reset this to zero. For fleets at planets scan planet fleet data for offending race (eg. AC0A for Player 4) with similar count and reset to zero (if you know planet index number you can compute exact location of fleet data eg. planet number 17 times 24 = 408 added to AC0A is ADA2).
 
No problem about the wait--thank you for providing this information!! :)
 
I don't think it will hurt any more than editors to have the knowledge. You can already do much of the stuff with editors.

BTW you did not mention it, but the Planets starts at 00 and that is the name of the planet.
 
Thanks for the comments, vmxa.

I thought I had covered the Planet layout by saying loc relative to name.
 
You kind of did, but it was not clear to me, until now. I actually thought you were saying it started at 2C and it took me a while to realize the planet names where there.

Anyway it is a nice little chart, thanks for your trouble. I had not taken out my hex calculator in about 20 years and it still worked.
 
Yes, it was confusing so I've added Planet name as a field to hopefully make it clearer.

My hex calculator long since died so I have to rely on my mental powers (& Windows Calculator!).
 
I was doing with fingers as well, then looked and looked and found it and it still works, but I had forgotten how small the numbers are or how bad my vision has become.

Now it is plain even for me to see, thanks for the work.
 
Added some new fields to planetary data for co-ordinates and index number, renumbered Players to 0-5 (from 1-6) and added post 2 with ship data. Includes details of how to deal with negative fleet bug!
 
I have not run into the negative fleet in a bit, but I kind of like to see if I can kill them off. Anyway I am not sure what they should have for a fleet and I do not want to set them to zero.

Would the game have an issue with a fleet going to zero? Now if you kill one and they show up with another, that is the time I would zap them. It is too much work to kill them all again.
 
I have not run into the negative fleet in a bit, but I kind of like to see if I can kill them off. Anyway I am not sure what they should have for a fleet and I do not want to set them to zero.

Would the game have an issue with a fleet going to zero? Now if you kill one and they show up with another, that is the time I would zap them. It is too much work to kill them all again.

Certainly it can be a nice challenge to take on a huge fleet! However some may find it frustrating so hopefully this gives them another option for dealing with it. You can reset individual ship groups in fleets to zero or all ship groups to zero removing the entire fleet and it does not cause a problem to the game. It will recalculate ship totals and maintenance.

It is still unclear what is happening in-game when a negative fleet occurs. One theory is that it happened because the AI tried to scrap a fleet, wrapped to negative and is not paying any maintenance for this mega-fleet. In which case resetting to zero would seem fair. However I do not have any savegames with this naturally occuring so cannot confirm if this scenario is likely. In artificially created saves I have seen AI paying negative maintenance for 65,000+ ships! Trying to remember what the correct fleet size is could prove impossible so a removal is possibly the only practical option. Bugs are not easy to correct!
 
Now all I got to do is find another game with it and then remember to use the workaround, but as you say it is good to have in the bag.
 
Top Bottom