• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

(All Games) Type Weakness/Strength Changing

Status
Not open for further replies.

Coolboyman

Veteran Hacker
471
Posts
20
Years
  • Ever wanted to change the weaknesses and strengths of what types do? (For example, When water attacks fire, it's super effective, this tutorial will teach you how to make it so when Water attacks fire, it isn't very effective or deals no damage at all, and way beyond).

    Step 1: Load up a Pokemon ROM
    Step 2: Go to the address based on which rom you loaded up

    Red and Blue: 3E474
    Yellow: 3E62D
    Gold and Silver: 34D01
    Crystal: 34BB1

    Ruby: 1F9720
    Sapphire: 1F96B0
    Emerald: 31ACE8
    Fire Red: 24F050
    Leaf Green: 24F02C
    Diamond: 1DE1B8

    For Red/Blue/Yellow:
    (All Values are hex)
    00 = Normal
    01 = Fighting
    02 = Flying
    03 = Poison
    04 = Ground
    05 = Rock
    06 = Bird
    07 = Bug
    08 = Ghost
    09-13 = Blank
    14 = Fire
    15 = Water
    16 = Grass
    17 = Electric
    18 = Psychic
    19 = Ice
    1A = Dragon

    For Gold/Silver/Crystal
    (All Values are hex)
    00 = Normal
    01 = Fighting
    02 = Flying
    03 = Poison
    04 = Ground
    05 = Rock
    06 = Bird
    07 = Bug
    08 = Ghost
    09 = Steel
    0A-12 = Blank
    13 = ???
    14 = Fire
    15 = Water
    16 = Grass
    17 = Electric
    18 = Psychic
    19 = Ice
    1A = Dragon
    1B = Shadow

    For Ruby/Sapphire/Emerald/Fire Red/Leaf Green/Diamond/Pearl:
    (All Values are hex)
    00 = Normal
    01 = Fighting
    02 = Flying
    03 = Poison
    04 = Ground
    05 = Rock
    06 = Bug
    07 = Ghost
    08 = Steel
    09 = ???
    0A = Fire
    0B = Water
    0C = Grass
    0D = Electric
    0E = Psychic
    0F = Ice
    10 = Dragon
    11 = Dark

    Step 2: regardless of your version, you will see three bytes, 00 05 05. The first byte is the one attack, so we have the Normal Type attacking.

    The second value is the type being attacked. So 05 = Rock, we have Normal attacking Rock.

    The final byte is the damage multiplier. The 05 stands for *.5
    damage. So the game reads this, and when a Normal Pokemon attacks a Rock Pokemon, half of the normal damage is done. You will see that all are either 05, 14 (in dec is 20, so its *2), and 00 (which is *0 which makes the attack never hit, this is used for Ground Vs. flying and others). Right after that is another strength/weakness definition, and keeps going on until a FF. However, you can mix it up a bit!

    Step 3: Changing
    Lets say you want it so when a Flying Pokemon attacks a Poison Pokemon, it does *2 the damage. Overwrite the bytes with 02 03 14, and it will take effect. You can even do as low as *0.10 (which would be 01), and as high as *25.40 the damage (Which would be FE). That is murder!

    So have some fun, make some new types if you want, or just balance out the system.
     
    Last edited:

    Hedgehogger

    Learning ASM, but struggling
    204
    Posts
    17
    Years
  • Wow. I never would find myself trying this, but you are a genius. Now those who want to make fakemon with different types have their work cut out!
     

    Coolboyman

    Veteran Hacker
    471
    Posts
    20
    Years
  • I made a very simple sample of what can be done with this. I successfully added Dark and Steel types in Pokemon Red! Although Magnemite/Magneton is the only Steel Pokemon, and the move "Bite" is the only Dark attack, it's still useful. All the strengths/weaknesses are included (obviously). Just patch to a clean Red ROM and you're good to go!
     

    >Bent<

    awhups
    51
    Posts
    17
    Years
  • Nice. I was thinking of looking for that, but my hypothesis (which was completely wrong :() was that weakness/resistance was set by four bitflags. At least I didn't spend any time looking for that.

    Heh, maybe I'll mess around with the Bird type now.


    Hmm, I just checked in Crystal. The list is FF-terminated (not surprising). But for some reason, there's an arbitrary FE in there.

    These are the last few values in the list:
    09 09 05
    fe
    00 08 00
    01 08 00
    ff

    I have no idea why that FE would be in there. Wouldn't it mess up the last two items? Unless the list is pointer-based, which I don't believe it would be (or we wouldn't be able to simply add things to the list).
     
    150
    Posts
    17
    Years
  • If you repoint the weaknesses and strengths to free space, can you add more type advantages and disadvantages at the end?
     

    >Bent<

    awhups
    51
    Posts
    17
    Years
  • I was just looking around in Yellow, and the type list there doesn't start at 3E62D. It begins a bit earlier, starting with the string 040200 ("Ground x0 to Flying").
     

    GARGLE!

    Dopeymon Master
    27
    Posts
    18
    Years
    • Age 37
    • Seen Jul 24, 2013
    Hmm, I just checked in Crystal. The list is FF-terminated (not surprising). But for some reason, there's an arbitrary FE in there.

    These are the last few values in the list:
    09 09 05
    fe
    00 08 00
    01 08 00
    ff

    The ones after the FE are Normal and Fighting vs. Ghost.

    So I'm guessing the FE is a marker for where the immunities canceled out by Foresight are listed; Foresight makes Normal and Fighting able to hit Ghost types, but doesn't affect any other immunities at all.
     

    >Bent<

    awhups
    51
    Posts
    17
    Years
  • The ones after the FE are Normal and Fighting vs. Ghost.

    So I'm guessing the FE is a marker for where the immunities canceled out by Foresight are listed; Foresight makes Normal and Fighting able to hit Ghost types, but doesn't affect any other immunities at all.
    That's an excellent observation; I'll go test that.


    EDIT: Gargle's absolutely right. If you want a type weakness/resistance to be set to x1 when using Foresight, put it behind the $FE.
     
    Last edited:

    lookoutapiano

    Banned
    26
    Posts
    16
    Years
  • I was wondering if I could ask a question regarding this tutorial? I managed to locate the bytes and recognise them,(02 01 14, flying X2 damage to fighting etc...) but I wondered how exactly it is possible to add a new type to the game? If you need to edit a old type in order to do this editing 09(???) would be a good choice as you wouldn't lose any of the others but I couldn't see any data regarding types attacking 09, or visa versa. Am just not looking hard enough or is the process of adding new types much more complicated? Sorry if this question sounds dumb, I'm not familiar with hex editing, but sounds fun to learn. I was also wondering what would mean x1 damage? I am hacking Ruby version by the way.
     
    15
    Posts
    16
    Years
  • wat would i put for 4x
    i put in 28 and somethin comes in the box tht shows text i get a (
    Any1 know if this will cause a problem
    is the adress code for pearl the same cuz u didn't post it?
     
    Last edited:

    Hat?

    Banned
    184
    Posts
    17
    Years
    • Seen Dec 11, 2008
    Right, sorry, I don't know too much about all the glitches.
     

    timmy112

    Learning to Hack
    18
    Posts
    16
    Years
    • Seen Jul 27, 2016
    Repointing

    If you repoint the weaknesses and strengths to free space, can you add more type advantages and disadvantages at the end?

    How do you repoint the weaknesses and strengths to free space?
     

    IIMarckus

    J946@5488AA97464
    402
    Posts
    16
    Years
    • Seen Feb 21, 2024
    How do you repoint the weaknesses and strengths to free space?
    You would repoint this like you'd repoint anything: find free space and copy the existing strengths and weaknesses to it, and then change the old pointer to point to the new location.
     

    timmy112

    Learning to Hack
    18
    Posts
    16
    Years
    • Seen Jul 27, 2016
    Pointer change

    How do I change the old pointer to the new location.
     
    Status
    Not open for further replies.
    Back
    Top