Diablo III Nintendo Switch / emulator cheats

UPDATE: As the Yuzu emulator no longer exists, updated the relevant sections to the (now better) alternative, Ryujinx.

Combining PC and Nintendo Switch, I've spent hundreds of hours playing Diablo III. But sadly there is no cross-platform account support, so my progress in the console (way ahead of PC because I can, and did, play offline a lot) cannot be merged. And this videogame is one of the few ones that are actually played best in console because of two reasons: the controls are really really good (so nice that I prefer them to mouse and keyboard), and the aforementioned offline play (on PC it requires persistent online connectivity even if you play alone).

I also love emulation, and the Switch emulation scene has advanced too much, at least regarding the two main emulators, Yuzu (now defunct) and Ryujinx, that I decided to try it with Diablo III. It worked so well [1] that I set a small goal for myself: If I'm able to somehow hack or edit the game to "recover" my account experience levels at minimum, I will stop playing it on the physical console and play via an emulator (complete with the Pro Controller and all).

My initial goal was done with Yuzu, but the following applies the same to Ryujinx.

Classic cheating

My first approach was the easiest experiment, trying Cheat Engine. I attached it to the Yuzu.exe process and selected "All" as value type. I tried searching for money and was really trivial finding the correct memory address. Having confirmed that it can be used to alter the game, I then went seeking the jackpot: trying to change the experience (to quickly level up again my hundreds of paragon levels). A search yielded some results, but none of them were the real storage for experience, as they were reset back to the original value either after a while or after obtaining more experience points.

Now, how could experience levels work, if they are not the number of points you have? well, they might be what I call "inverted value" or "remainder value": not the experience you have but instead how much is missing for the next level. Each time you level up your current experience resets to 0, and you need an amount X, which decrements upon killing enemies and completing quests. If you search that decrementing X, very often will give you what you seek. For Diablo III, this was the key. You can find the actual amount inside the character inventory, at your character details, scrolling down on the list. Note that Cheat Engine will find 3 values (at least did in my case, in multiple tests), so play around changing one at a time until you find which one controls the actual XP value; Then set it to 1, freeze the memory address, and you're done: 1 kill -> 1 level increase (normal and then paragon).

But, is there any editor?

A friend of mine found that there are savegame editors for the console versions. They are sometimes of no use unless you have a modded device as saves are encrypted or at least signed, but seems that at least in Diablo III's case people know how to circumvent encryption, so after making a backup of the savegame files I tried D3Edit.

It is a Python 3 script, but the GUI (despite pretty basic) requires tkinter, which is not in the base Python install, so if you use Linux do:

sudo apt-get install python3-tk

And if you use Windows, when installing Python ensure the tcl/tk option checkbox is marked.

With that I can confirm that it works and allows a greater deal of edits: character and paragon levels, money, all resource types, and there's an inventory editor. The items editor also works, but is a bit unintuitive (up to the point that I thought editing items was broken). You first need to "add an item", choosing the rarity, type, subtype and number of affixes. Then, after saving/adding it, will appear on the left-most list, and once you click it, you will be able to modify the affixes. For many items, with the "safe mode" checkbox active I was still not able to add affixes to new items, so you should disable/uncheck it.

And also you can add other types of items, like pets (I had +15 on my account). Just have in mind that x-y damage in weapons and x-y armour for shields and gear are a must as by default every item has really low stats for damage/armour. And of course be careful to not spoil the entertainment, as after all the greatest fun (addiction?) of the game is finding better loot and constantly improving your character's equipment.


After this experiments, I've decided to switch to the emulated version (pun intended). I can play at minimum as well as in the real console and have room to explore alternatives if I get bored (maybe improve the item editor?). Plus I can go back to the PC version if I want some online multiplayer.

Extra: Savegames are compatible between Yuzu and Ryujinx

Since I originally wrote this post, Nintendo has taken down the Yuzu emulator. I was already using Ryujinx instead, because it is more accurate and has less breaking workarounds, so it wasn't a big deal. My uneducated guess is that the Switch implements some standard filesystem, because transferring my savegames (characters in this case) was a matter of finding the game save files in one emulator, and overriding the equivalent save folder in the other (after having started a new character in Ryujinx, to ensure files were created). I don't remember exactly if I copied all files, but I would definitely copy all the files inside the heroes subfolder, plus account.dat, prefs.dat and profile.dat.

[1] Another advantage of using an emulator is that you can force 2x resolution rendering and get better textures, instead of the dynamic resolution downscaling that the console applies under heavy load. It won't look as good as the PC version, but still looks excellent.

Tags: Emulation Game Hacks Python Tools Videogames

Diablo III Nintendo Switch / emulator cheats article, written by Kartones. Published on