Official 12th gen and up support is now available via official Steam releases https://steamcommunity.com/app/34030/eventcomments/3830916907607927746?snr=1_2108_9__2107&ctp=20 . A little sad that they removed the in-game chat however, it wont be easy to play with strangers if you cant communicate.
A guide on how to patch Napoleon Total War to run on Intel 12th & 13th gen processors, such as the i9-12900k which NTW has been known not to be able to boot on up until now due to DRM issues.
We will be:
- Installing Ghidra - a reverse engineering toolsuite
- Using it to modify the Napoleon.exe executable, namely replace all CPUID 0f a2 instructions with XOR ECX, ECX or 33 c9.
- Play the game on our Intel 12th-gen device. In my case Im testing on an i9-12900k desktop processor.
https://github.com/ItsCubeTime/Napoleon-Total-War-Intel-12th-gen-patch/releases https://terabox.com/s/1gXOUndbPoj1_MHRcUOf5Yg
As an alternative to creating the patch yourself using Ghidra, you can also just install my pre-patched executable. To use it, you simply locate Napoleon.exe in your Napoleon Total War install directory & replace it with the patched executable linked above (and rename it accordingly), aftet that the patch is complete & you should be able to fire up the game like normal (except, this time it wont shut itself down immediately).
On most systems, the executable will be located at C:\Program Files (x86)\Steam\steamapps\common\Napoleon Total War\Napoleon.exe
https://www.youtube.com/watch?v=-gUf6t6yDXo
- Install Ghidra from: https://github.com/NationalSecurityAgency/ghidra/releases
- Run ghidraRun.bat
- Topbar > File > New Project.
- Once you've created a new project, click the green dragon to open it up using the "CodeBrowser".
- CodeBrowser > Topbar > File > Import. Select
steamapps/Napoleon Total War/Napoleon.exe
. - Topbar > Search > Memory
- Set Byte Order to Big Endian, Memory Block Types to All Blocks. "Search All" for
0f a2
. - Replace all "CPUID" instructions with
33 c9
by selecting them one by one in the Search Results window, going into the text editor view of your CodeBrowser main window, rightclicking the CPUID line & selectingPatch Instruction
, then type inXOR ECX, ECX
& select33 c9
by left clicking on it in the dropdown. These instructions are known asAssembly opcode
, see table: http://ref.x86asm.net/coder32.html. - Once all CPUID instructions (and only the CPUID instructions) have been replaced as described above, go to Topbar > File > Export Program, set the
Format
tobinary
and set a file path. - Now you have your patched binary! Navigate to the file path and replace your
steamapps/Napoleon Total War/Napoleon.exe
with your patched file. I recommend making a backup of the old file in case you accidentally modified something else in the process, same goes for your patched file in case Steam ever tries to revert your patch. :)
- Multiplayer appears to require that both players use the patch. See: https://imgur.com/a/eBRXG4p . Please open an issue on our Github page if you find a solution for this https://github.com/ItsCubeTime/Napoleon-Total-War-Intel-12th-gen-patch/issues
- Redditor LogicalMaintenance35 for discovering the patch https://www.reddit.com/r/totalwar/comments/za16n4/comment/j899js4/?utm_source=share&utm_medium=web2x&context=3
- Olliver A, For writing this guide & recording linked video based on Logical's patch.