How To Make "Stronger Weapons" Type Game Genie Codes Version 1.0 June 07, 2011 Written by Tony Hedstrom firstname.lastname@example.org http://www.angelfire.com/games2/codehut/ http://codehut.gshi.org/ (no ads on this site) This is a quick guide on how to make Game Genie codes that make your weapons stronger (ie. inflict more damage). I'll explain how to make individual weapons stronger, and also how to make ALL weapons stronger (usually with a single code). Many of these codes are adjustable, so you can make the weapons as strong as you want (up to a point). I'll be using Zelda 2 (NES) as an example, but the method applies to other games and systems as well. This guide is written for people that have at least a basic understanding of 6502 assembly. I'm using fceuxdsp for my emulator/debugger. Part 1 (How to make individual weapons stronger)... Start off by finding a RAM address for an enemies health. In our Zelda 2 example, the RAM address for one of the blue blob things is $00C5. Set a 'Write' breakpoint for $00C5. Hit the blue blob with your level 1 sword and this is where the debugger snaps: $E732:F9 6C E6 SBC $E66C,Y @ $E66D = #$02 (Y = 01) $E735:95 C2 STA $C2,X @ $00C5 = #$03 (X = 03) Codes that make individual weapons stronger are pretty easy. In the assembly above, we can see that the amount of damage that is going to be subtracted from the enemies health is 02, and it is getting that value from CPU address $E66C indexed with Y (Y = 01). So $E66C + 01 = $E66D. If we scroll backwards a little in the debugger, this is what we see at $E66D: $E66D:02 UNDEFINED $E66E:03 UNDEFINED $E66F:04 UNDEFINED $E670:06 09 ASL $0009 = #$50 $E672:0C UNDEFINED $E673:12 UNDEFINED $E674:18 These are all the values for the 8 different levels of swords. Level 1 sword does 02 damage, level 2 sword does 03 damage, etc. Simple enough. You can adjust how much damage you want from 00 to 255. Some sample Game Genie codes: Level 1 sword causes 255 damage = E66D?02:FF = NYVVITZE. Level 2 sword causes 100 damage = E66E?03:64 = GTVVTTLA. And so on. This method should work on lots of games. Part 2 (How to make all weapons stronger)... Making individual weapons stronger is nice, but why not go a step further and make ALL the weapons stronger with a single code. Here's how... Using Zelda 2 again, with the same assembly as above... $E732:F9 6C E6 SBC $E66C,Y @ $E66D = #$02 (Y = 01) $E735:95 C2 STA $C2,X @ $00C5 = #$03 (X = 03) We know that the game is getting the sword damage values from CPU addresses $E66D through $E674 (depending on your sword level). And we know that it's using a SBC (subtract with carry) at CPU address $E66C indexed with Y (where Y is your sword level). If we look at CPU address $E66C, this is what we'll see: $E66A:4C 71 E3 JMP $E371 It's a Jump instruction, but we really don't care what it is. We're just interested in the value at address $E66C (which is E3). All we have to do to make it so that all our levels of swords have E3 damage (227) is simply change the SBC (subtract with carry) instruction so that it's NOT indexed with Y. That way, it ignores Y and goes straight to $E66C and gets the value there (E3) no matter which sword you're using. If you check your 6502 instructions, you'll find that $ED is the replacement instruction we're looking for, so our Game Genie code would be: E732?F9:ED = STUTZNON. All levels of swords will do 227 damage. Obviously, not every game is going to work this way, but this will give you one idea on how to do it. Happy Hacking. Tony H.