• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.

Bizon

Lt. General
39 Badges
Apr 4, 2004
1.479
123
  • Hearts of Iron IV: Cadet
  • 500k Club
  • Cities: Skylines
  • Europa Universalis IV: El Dorado
  • Europa Universalis IV: Common Sense
  • Crusader Kings II: Horse Lords
  • Cities: Skylines - After Dark
  • Cities: Skylines - Snowfall
  • Hearts of Iron IV Sign-up
  • Stellaris Sign-up
  • 200k Club
  • Hearts of Iron IV: Together for Victory
  • Cities: Skylines - Mass Transit
  • Hearts of Iron IV: Death or Dishonor
  • Age of Wonders III
  • Cities: Skylines - Green Cities
  • Hearts of Iron IV: Expansion Pass
  • Cities: Skylines - Parklife
  • Cities: Skylines Industries
  • Cities: Skylines - Campus
  • Europa Universalis IV
  • Hearts of Iron II: Armageddon
  • Crusader Kings II
  • Crusader Kings II: Charlemagne
  • Crusader Kings II: Legacy of Rome
  • Crusader Kings II: The Old Gods
  • Crusader Kings II: The Republic
  • Crusader Kings II: Sons of Abraham
  • Crusader Kings II: Sword of Islam
  • Europa Universalis III: Chronicles
  • Arsenal of Democracy
  • Europa Universalis IV: Art of War
  • Europa Universalis IV: Conquest of Paradise
  • Europa Universalis IV: Wealth of Nations
  • For The Glory
  • Hearts of Iron III
  • Europa Universalis IV: Res Publica
  • Victoria: Revolutions
  • Victoria 2
Ironmelt - for Crusader Kings II
Download

6gHGJPc.png

Note: Because CK2 tends to write all savegames in text format (albeit compressed) this program might not be necessary anymore. If you get 'unsupported binary format' please check first if a savegame isn't a compressed text file.

Ironmelt is a program designed to decode binary savegame files generated by some Clausewitz Engine games (mainly for Ironman games) to save them in human-readable text format and be able to still load them in the game.
The program currently supports converting binary savegames of Crusader Kings II, Europa Universalis IV and Hearts of Iron IV. Compressed files are supported.

So if you ever started an Ironman game but in the middle of your play wanted to change something in your savegame, even at the cost of the game to lose its Ironman status, this tool should be for you.

The program currently requires the newest .NET Framework version to be installed to run.

Credits

Decoding routines are in major part based on the work of PreXident for his Java Save Game Replayer.

Known Issues

The art of decoding is a bit of hit-and-miss scenario and sometimes the savegame can be decoded in 99% only - it will be read by the game but you might lose some fraction of information, often inconsequential to the game. The decoder will report you about such missing pieces of information.

Important

This might be needless to say, but even if the program doesn't report any problem and everything appears OK after reloading the savegame, there may be some unforeseen issues with the converted games. Please don't use converted savegames as a base for reporting bugs in the game itself.

Hope this helps! :)
 
Last edited:
  • 14
  • 1
Reactions:
Yes, it's a tool that should be doing 'de-ironmanning' that a couple of Reddit threads talk about ;) Apparently a couple of those known methods don't work anymore or are limited to some special circumstances like the one that requires Common Sense. Also, my program outputs a traditional text save so you will not only be able to switch nations, use console and observer mode but also edit the savegame like in the good old days.

The downside is that the set of binary constructs that make up an Ironman savegame is well open and before I'll fill all the possibilities up, you'll probably need to help me a bit (see 'Reporting bugs' portion). Before that, some savegames may not convert fully, but it's a matter of time ;)

And I use the same very methods for decoding binary savegames for my Chronicle program, so I'll be improving this program alongside just because of this synergy :)
 
It always writes to the current folder and I suspect it's not really about writing permissions - the error message is poorly worded. At best, it could mean that the resulting file is open and cannot be written to but it can be also a couple of other problems - I'll rewrite this portion of the program when I'm home to be more helpful.
 
Hello, whenever I try to load the converted save file my CK2 client crashed to desktop. When I try to convert my save file it also inputs "more than 100 errors" under Unknown Tokens and "20 errors" under Parsing verification. Do you maybe know what could be the problem or where could I send you the files, if you'd want to check it out yourself maybe?
 
I'm currently working on a savegame file from Game of Thrones mod and already made a lot of fixes and in general CK2 had less attention because I didn't receive any files earlier.

So:
1. Yes, the current version is far from perfect and will receive fixes shortly.
2. You can post your savegame version so you can be sure (or almost sure) that it will be parsed ok.
 
Oh, my save is really not that important, since I'm fairly early into the game. I mainly wanted to try your program in advance, and since I encountered the errors I thought I'd bug report to "help you out with stuff". But since you're already working on fixes, then there's no need for me to do that. Thanks!
 
Today, I finally managed to get AGOT mod running on my CK2 copy, so there will be another (but smaller than the last time) slew of fixes. And I should have most of CK2 problems covered. You can try out the savegame then when it's more 'advanced' ;)
 
There's a 3.0 release of the program which introduces big changes behind the scenes to decoding and should handle problematic cases much better. I tested it on CK2 with AGOT mod and it was finally able to convert a mid-game save without any crashes.
 
A new version of Ironmelt is out with some important changes that should make it work again on your most recent games :)

In Crusader Kings department, there is a lot of new tokens supported, including the changes made along with the Conclave expansion. I tested it a lot with my own games and I had success with converting games I played for around 150-200 years so I'm pretty confident it's going to work for most of you. There is one nagging token that I am not able to decrypt (5E2B) but as long as you use 'Mitigate errors' function you should be safe, because it results in CtD otherwise.

Also, I added a lot of EU4 tokens but I have yet to play it more extensively lately so there will be probably more things to come. But the basics are covered so you should have high chance of converting your savegames successfully.

And last but not least there's several important functionality fixes as well as two things that the program would no longer be working properly without i.e.:
- Ironmelt now generates all the savegames in Unix end-of-line format because it's the format that Paradox seemingly settled on;
- decoding of EU4 date format works once again.

Information and download
 
I'm going through my v2.5.1.1 Conclave ironman save and figuring out tokens (testing against Ironmelt v3.1).

These two tokens I figured out for horde units and starred characters.
Code:
0x1C2E;horde;Boolean;no;
0x482E;special_interest;Unspecified;no;

The multiplayer_random_seed is wrong based on other save games. It should just be seed. As the same token is used in delayed_events.
Code:
0x9E28;seed;Integer;no;

There was previous work on an Ironman decoder by TheCommieDuck. Just note the tokens are byte swapped compared to Ironmelts. I haven't compared the two token lists yet to see if theres any that can be added to Ironmelt.
https://github.com/TheCommieDuck/CK2Reader/blob/master/CK2Reader/Parser.cs

Edit:

Seems as though v3.1 missing all the Horse Lords and Conclave stuff.

More tokens:
Code:
0xBE2E;cannot_inherit;Boolean;no;
0xE831;nomad_succession;Unspecified;no;
0xC131;nomad;Boolean;no;
0x6533;council_voting;Unspecified;no;
0xB332;coa_dynasty;Integer;no;
0x7C30;custom_graphics;Boolean;no;
0x8B32;maintaining_mercenaries;Boolean;no;
0x6C33;is_zeus_save;Boolean;no;

Edit 2:

I think these token 0x9127 (checked against WoL.5002 delayed events) and 0xDA30 are wrong and should be replaced with these:
Code:
0x9127;province;Integer;no;
0xDA30;de_jure_law_changes;Integer;no;
 
Last edited:
Uploading my ck2bin.csv file as the post with the changes was getting too long. Its got 36 new tokens and 10 fixed tokens. Maybe someone will find it helpful.

One of my saves has trouble changing UNKNOWN_0000 to war_elephants as listed in the file though and I'm not sure why.
 

Attachments

  • ck2bin.zip
    89,3 KB · Views: 11
Cool, I didn't know about TheCommieDuck's program. Unfortunately, I'm usually a bit behind the curve when it comes to newest expansions and I don't own Horse Lords or Conclave yet. Some tokens are introduced at the free patch level so I'm able to be up-to-date with them, while some are not. Thanks for our list, I'll make a quick update.

The multiplayer_random_seed is wrong based on other save games. It should just be seed. As the same token is used in delayed_events.
Thanks. I think that it's one of few tokens that are Ironman-specific IIRC, so I might had some difficulty dealing with that.

There was previous work on an Ironman decoder by TheCommieDuck. Just note the tokens are byte swapped compared to Ironmelts. I haven't compared the two token lists yet to see if theres any that can be added to Ironmelt.
Great, I'll take a look and include the new tokens. My CSV file uses this byte order because when sorted alphanumerically it forms logical patterns of some topic-related tokens going together, so it's easier to read through. You are right that the files themselves have opposite endianness and of course Ironmelt accounts for that. :)
 
Just stumbled across this thread and I'm very excited to see how well this can work. Something like this should really be the first result from you google disabling Ironman mode in CK2.

I'm running the HIP mod with a rolled back install of the 2.4.5 beta. When I select an Ironman save and start decode, I get a message while it's uncompromising that says 'StartIndex cannot be less than zero'. You mentioned AGOT compatibility earlier in the thread, so did I misunderstand that mod support isn't currently universal?
 
Unfortunately, I'm usually a bit behind the curve when it comes to newest expansions and I don't own Horse Lords or Conclave yet. Some tokens are introduced at the free patch level so I'm able to be up-to-date with them, while some are not. Thanks for our list, I'll make a quick update.
No worries, this program makes it easy to add/edit tokens so I'm just happy to help.

There is one nagging token that I am not able to decrypt (5E2B) but as long as you use 'Mitigate errors' function you should be safe, because it results in CtD otherwise.

I think I've figured out the CTD in one of my saves regarding 5E2B. Details in the spoiler:
From Ironmelt:
Code:
  character_action={
  {
  join_ambition_interaction={
  type=2
  actor=516301
  recipient=528402
  character_action=32344
  execute_on_action=yes
  instant_reply=no
  }
  UNKNOWN_5E2B=-13
  date="1123.10.13"
  }
  }

I realised that I could get the characters ambition to fire quickly by deleting the above section and removing the pending_backer from 516301's active_plot.

When it fired in the non-ironman game, I rejected the proposal (as I did in the Ironman game) and saved and got this code out:
Code:
  rejected=
  {

  {
  join_ambition_interaction=
  {
  type=2
  actor=516301
  recipient=528402
  character_action=32842
  execute_on_action=yes
  instant_reply=no
  }
  opinion=-13
  date="1124.9.10"
  }
  }

5E2B was clearly opinion but the game still crashed because Ironmelt decoded rejected as character_action.

My guess is that no two tokens should decode to the same thing, and that tokens can be overloaded (eg character_action can be either a bracketed entry or an integer).

New token:
Code:
0x5E2B;opinion;Integer;no;

Change existing tokens:
Code:
0x612D;rejected;Unspecified;no;
0x352B;character_action;Unspecified;no;

I'd be interested to know if that solution also works on other save games.

While working on CTD problem I also figured out some new tokens:
Code:
0x6432;blood_oath;String;yes;
0xD532;form_alliance_interaction;Unspecified;no;
0x1933;buy_favor_interaction;Unspecified;no;
0x2B33;request_support_interaction;Unspecified;no;
0xF02C;call_ally_interaction;Unspecified;no;
0x4F33;enforce_peace_start;Integer;no;
 
Last edited: