[Guide] Removing jitter from Grim Dawn in 4 easy bytes

What is jitter - Jitter is the +/- 20% stat deviation from an item or affix’s base bonus values. It is hardcoded into the game logic itself and not exposed via the game’s mod tools.

What will removing jitter do - Removing jitter will make it so that every item that rolls a given affix as well as every copy of a unique/legendary item will be identical. There will be no stat variance. This will remove bad rolls as well as good. Item bonuses will always be at their base value.

What you’ll need - A hex editor. You can get a free and good one from here: https://mh-nexus.de/en/hxd/

Caveats - Following this guide entails modifying core game code. This is NOT a mod and this is NOT officially supported or condoned. Do this at your own risk. That being said, I’ve done it, and it works. Furthermore if you really screw up you can just verify files in Steam/Galaxy and undo any changes you made. Also note that the change made here is retroactive. All items in your inventory will be modified to remove jitter and thus this will change your current stats and bonuses.

The Guide:

  1. Navigate to C:\Program Files (x86)\Steam\steamapps\common\Grim Dawn and make a backup copy of Game.dll. This is the file that we’ll be modifying.
  2. Open Game.dll in HxD. Within HxD hit Ctrl+F for find and then select hex-values for the data type.
  3. Search for this - 9F F6 C4 44 7A 07 D9 45 08 5D C2 0C 00. You should only find two instances of this hex value pattern in the file. Use F3 to find the next instance and Shift+F3 to go back to the previous.
  4. For each instance, position your mouse cursor just before the 7A and type in 9090. This should overwrite the 7A 07 with 90 90 and the numbers should be in red indicating that they’ve been changed.
  5. Hit Ctrl+S to save your changes and you’re done!

Technical details for those familiar with Assembly and disassemblers - What we’re doing is modifying two functions, GAME::DamageAttributeDur::Jitter and GAME::SkillAttribute::Jitter. These are the two core functions that perform jitter for all items and all bonuses. The function names make absolutely zero sense, but that’s the way it is. Each function contains code that tests the AH register against the hex value 44 for whatever reason followed by a conditional jump that performs the jitter functionality if the test passes or returns if it fails. What we do is simply NOP out the conditional jump such that the function always returns immediately. Here’s a screenshot of what this looks like in IDA Pro: https://i.imgur.com/RmsvnBN.png

3 Likes

Why would you want this?

Force every item to be mediocre?

The why doesn’t concern me. I have my own reasons and there have been a few other threads on these forums asking for a way to remove it. I found a way and posted it for the community in case anyone is interested.

1 Like

How would i change the hex so i increase the jitter? For example i’d put 100 jitter for super high randomization

Thanks a lot for this!

Does anyone know how to apply this to the x64 bit version of the DLL?