Stellaris

Stellaris

232 Bewertungen
How to enable Achievements with ANY mod
Von Chillsmeit und 1 Helfern
This Guide explains how to enable achievements(Ironman) with any mod, even those that modify the checksum.
9
7
6
3
2
2
   
Preis verleihen
Favorisieren
Favorisiert
Entfernen
Intro
You'll be able to use any mod you want, even those that say they're not Ironman compatible.
This way you can still earn achievements while playing the way you want.

I personally only use purely visual and UI mods, but some of them change the checksum...which is a bit annoying.

Backup:
First, go to your Stellaris directory and make a backup of the stellaris executable
I recomend saving it to another folder or just rename the extension to .old (make sure extensions filetypes are visible/enabled in Windows)

Programs you'll need:
Windows:
  • Microsoft Word
  • Notepad++ [notepad-plus-plus.org]
  • HxD[mh-nexus.de]
Linux:
  • Nano (It just works. Gedit and Notepadqq would crash/get unresponsive)
  • Okteta[apps.kde.org]

Automated method
A friend of mine @r0fld4nc3 managed to complete a project (on Github) that basically automates this guide.
The patcher does the same, finds the hex values and alters it in order to enable Ironman with mods.

Here's the patcher link Stellaris Patcher[github.com]

Currently it only supports the Windows version of Stellaris. Linux native version is planned.
If you need it for the Linux Proton version, use the patcher with Wine or Bottles
Any feedback and or issues are best adressed in the github project page in the issues tab.

Windows (Word Method)
First make sure Stellaris isn't running

Open HxD then go to File -> Open and choose the Stellaris.exe

CTRL+A (to select everything) and copy everything to a blank Word file.

Make sure you have the text cursor in the beginning of the document.
Then just do CTRL+F (find/search) and go to advanced find



Enable "Use wildcards"



In the search you can use this:
48 8B 12 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 85 C0

When you find it on word, copy that value



Go back to HxD (with the opened Stellaris.exe)

Search->Find->Hex-values-> Paste the value you just copied from Word and then click "Search All"

After you find the value, change the 85 C0 to 33 C0. Save it and replace the original executable.

Windows (Notepad++ Method)
Make sure Stellaris isn't running

Open HxD then go to File -> Open and choose the Stellaris.exe

CTRL+A (to select everything) and copy everything to a blank Notepad++ file.

Make sure you have the text cursor in the beginning of the document.
Then just do CTRL+F (search->find) and tick at the bottom "Regular Expression"

In the search you can use this and then "Find Next":
48 8B 12 .. .. .. .. .. .. .. .. .. .. .. .. .. .. 85 C0



When you find the value, copy it

Go back to HxD (with the opened Stellaris.exe)

Search->Find->Hex-values-> Paste the value you just copied from Word and then click "Search All"

After you find the value, change the 85 C0 to 33 C0. Save it and replace the original executable.

Linux (Native version)
First make sure Stellaris isn't running

Open Okteta, click "Open" and choose the stellaris executable.
CTRL+A (to select everything), RIGHT-CLICK and select "Copy As"->"Values". In the "Separation" box, remove any space there and then "Copy to Clipboard"



Open your Terminal and enter:
nano hex.txt

Paste your previously copied values to it (CTRL+SHIFT+V)
It will take some time, just wait around 30 secs max

After the values show up, do CTRL+W (Where Is) and ALT+R (Reg.exp.)
Paste the following and enter:
488B30......................................85DB



The value will be highlighted for a few seconds. Copy it.



Go back to Okteta with the stellaris executable opened, CTRL+F and paste the hex value



After you find the value, change the 85 DB to 31 DB. Save it and replace the original executable.

Linux (Proton version)
Since the Proton version is basically the Windows version with a compatibility layer, you can follow the Linux (Native version) steps but use this value instead:
488B12............................85C0

And change the 85 C0 to 33 C0

Explanation & Alternative Methods
If you can't find the value above, you can shorten the amount of ?? or .. you use on your expression
? or . represents one character, any character. So ?? or .. is two characters.

This value can vary depending on your memory allocation, so you can shorten or lengthen the amount of "??" or ".." depending on the program you use

Examples to try (Windows):
48 8B 12 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 85 C0
48 8B 12 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 85 C0
48 8B 12 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 85 C0

Examples to try (Linux):
488B30....................................85DB
488B30..................................85DB
488B30................................85DB

And so on, you get the gist

The Hex value you want to search for always begins with
48 8B 12 and always ends with 85 C0 Windows
48 8B 30 and always ends with 85 DB Linux

The more "complicated" alternative:
If this method ever gets outdated (it can happen due to the way it works) or somehow it just doesn't work for you, you can try and use this guide from class101

It's more time consuming imo and "complicated", especially if you aren't very tech-savvy.
But it's an excelent guide regardless and should be more future proof than what I posted here. (Unless Paradox manages to get some way around it, which I doubt).


AntiVirus Warnings
The original game executable is probably signed with a Digital Signature. This means that your AntiVirus will try and check this Digital Signature on its database to validate its checksum.
Basically, a checksum is a sequence of numbers and letters used to check data for errors and is calculated by the hex values/bytes. It gives a unique identifier ID to your program let's say.
But since you're altering the executable itself with hex editing, the checksum it'll produce will be different from the original exe, thus creating a false positive for antiviruses when they try to validate it.

If you CTD at launch, try adding the modified stellaris executable to the exceptions in your AntiVirus software or the patcher

135 Kommentare
Chillsmeit  [Autor] 26. März um 14:25 
@huzzan01 It doesn't. You'd have to follow the original ghidra guide to find the correct hex code to use
huzzan01 18. März um 7:18 
do this work on hearts of iron 4?
Democracy's Finest #89432473128  [Autor] 30. Jan. um 23:48 
Yes, that's precisely the criteria! Fantastic!! :D
Zeppelin 30. Jan. um 20:42 
It worked! Thanks! BTW the token to search is achievement={ 0 1 2 ..} (without s). And in my save it's sitting under clusters={...}
Democracy's Finest #89432473128  [Autor] 30. Jan. um 15:56 
@Zeppelin, it's ironman=yes AND in the file, there's a line somewhere that reads something like: achievements={ 0 1 2 3 ... } and each number corresponds to the available achievements to receive that you haven't received yet. I think you can just fill from 0 - 190 or 191 (I think) and it should re enable it.

The best way to know where to place this line is to start a new save game that can receive achievements and look at where the achievements={...} line is located in the file in relation to everything else, and try to match that.
Zeppelin 30. Jan. um 13:47 
Watched the video and can reproduce, thanks! But it didn't mention fixing the trait that enables getting achievements. Is this the ironman=yes flag? This is already set to yes for my save (in both gamestate and meta).
Democracy's Finest #89432473128  [Autor] 30. Jan. um 11:30 
Thank you for the kind words @Zeppelin!
Unfortunately I can't find my notes on the matter, but I believe I followed this video at the time to do so:

https://youtu.be/hQG5-IfuYTQ?si=Ih2-0shF9fnbEHQt

I'll keep digging.
Zeppelin 30. Jan. um 11:03 
Thanks a lot @Democracy's Finest, you are the best, looking forward to your github update, if there is a manual way I could follow quickly, you can share here as well and I can help testing it.
Democracy's Finest #89432473128  [Autor] 30. Jan. um 0:17 
Hi @Zeppelin! Thanks for reaching out.
I'm currently doing a feature push to get release a less work in progress version (currently 1.1.0-pre).

I've refactored and rewritten a lot and I've finally been able to release a Linux binary for the new version which is in pre-release mode so it can be previewed by more people.
Democracy's Finest #89432473128  [Autor] 30. Jan. um 0:17 
For 2.0 I also want to add the ability to fix saves whose achievements have been disabled, on a first rollout on Windows only. After, I will attempt to add support for the other platforms. I already have it set up and an automated method that should work but I need to do some more tests to ensure this is true. That's why it's currently disabled for now but hopefully I can roll it out soon enough.

I know I had written down how to fix them manually, I'll try to find these instructions. If I do, I'll post an update here so at least you may enable achievements again for your save without having to wait too long.

Hope this has helped!