This is a tutorial that is referenced from my YouTube tutorial based on a similar method:
My YouTube Video
Step 1: Step 1: Attach Your Process.
Step 2: Step 2: Find the Address for Your Value.
Step 3: Step 3: Attach a Debugger to Your Process.
Step 4: Step 4: Determine What Writes to the Address.
Step 5: Step 5: Inject the Code Into an Assembler.
This part is the most important of the tutorial since it handles how the toggle affects the address.
The last two images shows the before and after which will support the toggle capability for our assembled code.
A NOP is simply a null value, so instead of removing a bullet every time we fire the gun, it will remove nothing.
This is useful for giving us infinite ammo for the current weapon.
Step 6: Step 6: Write Assembled Code to Your Cheat List.
WARNING: DO NOT EXECUTE THE CODE, THE GAME WILL CRASH IF YOU EXECUTE THE CODE.
Step 7: Step 7: Test the Code and Make Adjustments If Necessary.
Step 8: Conclusion
I did make a mistake in the images for this tutorial...
I shouldn't have replaced the MOV values with a NOP value.
In assembly, the MOV values are responsible for taking a modified value and moving it into the reserved spot in memory which is responsible for handling the selected value. (Bullets in this case)
You should only replace ADD, SUB, MUL, and DIV values with a NOP value.
ADD will take an address and add to the value, SUB will subtract from the value, MUL will multiply the value, and DIV will divide the value.
What happened when I toggled the code in this tutorial; the game froze and wouldn't allow any user inputs. This effectively crashed the game.
Take note from my mistake, and you'll be on your way to working with Cheat Engine.