destinedjagold
Oh Hai Thar.
- 8,594
- Posts
- 17
- Years
- Stinky/Old/Fart
- On your ceiling...
- Seen Apr 17, 2025
Note...
Things You'll Need...
Steps...
Reference...
[a id]swt[/a id]Strengths And Weaknesses Table Address
Types' Hex Values
Damage Multiplier
Credits...
Resource...
This tutorial will teach you how to add new types to your Ruby ROMs.
However, it will sacrifice the Contest Move types. So if you don't plan on adding the Contests in your ROM, then this tutorial is for you.
Also note that I absolutely have no idea where the type palletes are located.
And if you want a FireRed/LeafGreen version of this tutorial, check out Dragoon's thread.
However, it will sacrifice the Contest Move types. So if you don't plan on adding the Contests in your ROM, then this tutorial is for you.
Also note that I absolutely have no idea where the type palletes are located.
And if you want a FireRed/LeafGreen version of this tutorial, check out Dragoon's thread.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i40.tinypic.com/33f3x2u.jpg)
Things You'll Need...
- Hex Editor
- Unlz-GBA
- Unlz-GBA
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i40.tinypic.com/33f3x2u.jpg)
Steps...
0. Save a back-up copy of your ROM.
1. Open your ROM with Unlz-GBA.
2. Go to 1485 in Unlz-GBA.
For easy editing, I suggest you click the circled buttons.
3. Save the image and open it to any image-editing programs (like MSPaint) and add your new type.
4. Import the new type image back.
If you'll get this message...
...it means that your new image is larger, and needs to be repointed.
To repoint, open your ROM with a hex editor and look for an offset with a lot of free space (FF).
After you found an offset with a lot of free space for repointing, close your Hex Editor...
...and Import your new type image again on Unlz-GBA.
This time, check the [Automatically Fix Pointers] checkbox, and write the offset on the [Image Offset] box.
Click [OK] and done.
6. Close Unlz-GBA and open your ROM with a Hex Editor.
7. Move the strength and weakness table, which is found in address 1F9720, to a new offset.
8. Repoint the strength and weakness table to your new offset.
9. Add new strength/weakness values on your new table.
You'll only need to add 3 bytes to add a new formula in the strengths and weaknesses.
The first value, which is the one who will attack, is 12, because that is where we inserted our new [Fairy] type.
The second value, the defending type, is 10, because that is the hex number of the [Dragon] type.
The third value is the damage multiplier, which is 14, because that is the value of a super-effective.
Note that if two types are neutral against each other, then no need to add them in the table, e.g. Fairy against Normal.
10. Update your editing tool's .ini file.
Note that YAPE will not be able to open your ROM if you'll change your PKMN's type to new ones. YAPE however, can still open your ROM if only the attack's types are only changed.
11. Repoint the type names table.
12. Insert new type names.
Each type name ends with [FF]. The very last type in a Ruby ROM is the [DARK] type, so, obviously, that type will be at the very last.
DARK in hex is BEBBCCC5.
In this tutorial, we added the [FAIRY] type right after the [DARK] type.
So, we will add the [FAIRY] text right after [DARK].
Put the FAIRY text, which is C0BBC3CCD3 in hex.
If you wish to know the hex values of texts, you can simply download my simple tool.
Note that this tool can't convert symbols or spaces.
Save, then test it in game, during a battle, in the attack selection screen.
If nothing shows up, or your new type isn't displaying right, like for example, instead of [Fairy], in-game it only displays as [iry], then you will need to add [00] data.
How many [00] you need to insert depends on how many letters your new type lacks.
1. Open your ROM with Unlz-GBA.
Spoiler:
This message should appear when you open your ROM via Unlz-GBA.
If the tool immediately loads your ROM, then please close Unlz-GBA, and delete the .pal and .spr files.
And then open your ROM with Unlz-GBA once again.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i40.tinypic.com/2gxebnd.jpg)
If the tool immediately loads your ROM, then please close Unlz-GBA, and delete the .pal and .spr files.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i39.tinypic.com/13z0kmc.jpg)
And then open your ROM with Unlz-GBA once again.
2. Go to 1485 in Unlz-GBA.
Spoiler:
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i40.tinypic.com/24c9op0.jpg)
For easy editing, I suggest you click the circled buttons.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i40.tinypic.com/25jxw8o.jpg)
3. Save the image and open it to any image-editing programs (like MSPaint) and add your new type.
Spoiler:
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i43.tinypic.com/32zmm21.jpg)
4. Import the new type image back.
Spoiler:
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i43.tinypic.com/33e7czd.jpg)
If you'll get this message...
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i42.tinypic.com/eb7all.jpg)
...it means that your new image is larger, and needs to be repointed.
To repoint, open your ROM with a hex editor and look for an offset with a lot of free space (FF).
Spoiler:
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i39.tinypic.com/18jgjp.jpg)
After you found an offset with a lot of free space for repointing, close your Hex Editor...
Spoiler:
(because Unlz-GBA will not function properly if there are other programs opening your ROM)
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i42.tinypic.com/148faw.jpg)
...and Import your new type image again on Unlz-GBA.
This time, check the [Automatically Fix Pointers] checkbox, and write the offset on the [Image Offset] box.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i44.tinypic.com/2zhei6c.jpg)
Click [OK] and done.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i44.tinypic.com/122i16v.jpg)
6. Close Unlz-GBA and open your ROM with a Hex Editor.
7. Move the strength and weakness table, which is found in address 1F9720, to a new offset.
Spoiler:
Go to (CTRL + G) the 1F9720 address.
Go to Edit > Select Block, and then choose 333 decimal bytes of data.
Copy the selected area.
Search for free space, then go to Edit > Select Block, and then choose 333 decimal bytes of data.
Paste the copied data to the new selected area.
Go to Edit > Select Block, and then choose 333 decimal bytes of data.
Spoiler:
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i43.tinypic.com/veb0y8.jpg)
Copy the selected area.
Spoiler:
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i42.tinypic.com/bdk6y0.jpg)
Search for free space, then go to Edit > Select Block, and then choose 333 decimal bytes of data.
Spoiler:
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i42.tinypic.com/2ntv60k.jpg)
Paste the copied data to the new selected area.
Spoiler:
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i39.tinypic.com/2qjauzo.jpg)
8. Repoint the strength and weakness table to your new offset.
Spoiler:
Reverse the offset of the type strength and weakness table, and your new offset.
(Swap the red ones and then add 08 at the end)
Old Table: 1F9720 -> 20971F08
New Table: 800A00 -> 000A8008
Hit Ctrl + H on your Hex Editor and put the reversed old table offset on the [Find] field, and your reversed new table offset on the [Replace] field.
Congratulations!
You have successfully repointed the type strengths and weaknesses table to a new offset location.
Now, you can add new type strengths and weaknesses by just adding new ones at the end of the new location.
(Swap the red ones and then add 08 at the end)
Old Table: 1F9720 -> 20971F08
New Table: 800A00 -> 000A8008
Hit Ctrl + H on your Hex Editor and put the reversed old table offset on the [Find] field, and your reversed new table offset on the [Replace] field.
Spoiler:
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i44.tinypic.com/2b5vma.jpg)
Congratulations!
You have successfully repointed the type strengths and weaknesses table to a new offset location.
Now, you can add new type strengths and weaknesses by just adding new ones at the end of the new location.
9. Add new strength/weakness values on your new table.
Spoiler:
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i40.tinypic.com/13z0abb.jpg)
You'll only need to add 3 bytes to add a new formula in the strengths and weaknesses.
So, if we want to add a [Fairy does [Super Effective] against Dragons], we'll add this...Coolboyman said:The first byte is the one attack. The second value is the type being attacked. The final byte is the damage multiplier.
Spoiler:
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i44.tinypic.com/2b33tz.jpg)
The first value, which is the one who will attack, is 12, because that is where we inserted our new [Fairy] type.
Spoiler:
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i40.tinypic.com/2yudlqt.jpg)
The second value, the defending type, is 10, because that is the hex number of the [Dragon] type.
The third value is the damage multiplier, which is 14, because that is the value of a super-effective.
Note that if two types are neutral against each other, then no need to add them in the table, e.g. Fairy against Normal.
10. Update your editing tool's .ini file.
Spoiler:
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i42.tinypic.com/2qa7hbm.jpg)
Note that YAPE will not be able to open your ROM if you'll change your PKMN's type to new ones. YAPE however, can still open your ROM if only the attack's types are only changed.
11. Repoint the type names table.
Spoiler:
Go to 1F9870 and select 7B (hex) bytes of data.
Copy the highlighted data.
Find some free space, select 7B (hex) bytes of data once again, and paste.
Hit [Ctrl + H] and replace [70981F08] with your new table address.
Save.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i41.tinypic.com/2h7j9nd.jpg)
Copy the highlighted data.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i39.tinypic.com/suwuf4.jpg)
Find some free space, select 7B (hex) bytes of data once again, and paste.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i44.tinypic.com/2dboxv9.jpg)
Hit [Ctrl + H] and replace [70981F08] with your new table address.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i39.tinypic.com/2yvl5ib.jpg)
Save.
12. Insert new type names.
Spoiler:
Spoiler:
In case you don't know what I am referring to as [type names].
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i40.tinypic.com/29455wi.jpg)
Each type name ends with [FF]. The very last type in a Ruby ROM is the [DARK] type, so, obviously, that type will be at the very last.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i43.tinypic.com/2qsmexx.jpg)
DARK in hex is BEBBCCC5.
In this tutorial, we added the [FAIRY] type right after the [DARK] type.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i41.tinypic.com/2gxrbiv.jpg)
So, we will add the [FAIRY] text right after [DARK].
Put the FAIRY text, which is C0BBC3CCD3 in hex.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i39.tinypic.com/dm8ket.jpg)
If you wish to know the hex values of texts, you can simply download my simple tool.
Note that this tool can't convert symbols or spaces.
Save, then test it in game, during a battle, in the attack selection screen.
If nothing shows up, or your new type isn't displaying right, like for example, instead of [Fairy], in-game it only displays as [iry], then you will need to add [00] data.
How many [00] you need to insert depends on how many letters your new type lacks.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i42.tinypic.com/vq1o1y.jpg)
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i40.tinypic.com/33f3x2u.jpg)
Reference...
[a id]swt[/a id]Strengths And Weaknesses Table Address
Spoiler:
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
Yellow: 3E62D
Gold and Silver: 34D01
Crystal: 34BB1
Ruby: 1F9720
Sapphire: 1F96B0
Emerald: 31ACE8
Fire Red: 24F050
Leaf Green: 24F02C
Diamond: 1DE1B8
Types' Hex Values
Spoiler:
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
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
Damage Multiplier
Spoiler:
00 - No damage/Immune - e.g. Ground against Flying
05 - Not very effective - e.g. Electric against Grass
0A - Normal damage, but not needed - e.g. Fire against Fighting
14 - Super effective - e.g. Ice against Dragon
FE - Limit of the damage value, which is MURDER.
05 - Not very effective - e.g. Electric against Grass
0A - Normal damage, but not needed - e.g. Fire against Fighting
14 - Super effective - e.g. Ice against Dragon
FE - Limit of the damage value, which is MURDER.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i40.tinypic.com/33f3x2u.jpg)
Credits...
- Coolboyman's Type Strengths and Weaknesses Table Thread.
- Dragoon's contribution in the Adding New Types Research Thread.
- Dragoon's contribution in the Adding New Types Research Thread.
![[PokeCommunity.com] [Ruby] Adding New Types [PokeCommunity.com] [Ruby] Adding New Types](https://i40.tinypic.com/33f3x2u.jpg)
Resource...
- Pokémon Game Editor
- My Text2Hex Tool - Note that this tool can't convert symbols or spaces.
Last edited: