Announcement

Collapse
No announcement yet.

"Stronger Weapons" Code Making Guide

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • "Stronger Weapons" Code Making Guide

    Just a simple guide on how to make individual weapons do more damage. Also includes info on how to make a code that affects all weapons.

    ================================

    How To Make "Stronger Weapons" Type Game Genie Codes

    Version 1.0 June 07, 2011


    Written by Tony Hedstrom [email protected]

    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.
    The Code Hut: http://codehut.gshi.org/

  • #2
    Nice! I was wondering how you accomplished that.

    I'll add it to the Library, probably tomorrow. Thanks for sharing it.
    I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...

    Comment


    • #3
      It's always great when one instruction change can be so powerful. Very nice Tony.
      Not taking any requests at this time.

      Bored? Watch some of my hacks here.

      Comment


      • #4
        Excellent Guide as always Tony.
        Spoiler Alert! Click to view...

        THE BAD GUY!!!!!!

        Comment


        • #5
          Added to the Library. Thanks for writing and sharing it.
          I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...

          Comment


          • #6
            Thanks guys.
            The Code Hut: http://codehut.gshi.org/

            Comment

            Working...
            X