Go Back   The PokéCommunity Forums > ROM Hacking > Tools, Tutorials & Resources
Reload this Page [Tutorial] Adding new types into Fire Red without replacing

Notices
For all updates, view the main page.

Tools, Tutorials & Resources Various tools to help you develop your hacks can be found here.
New threads in this forum are to be approved by a moderator before they are displayed.



Reply
 
Thread Tools
  #1    
Old November 28th, 2013 (01:12 AM). Edited January 30th, 2015 by ShyRayq.
ShyRayq's Avatar
ShyRayq ShyRayq is offline
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Posts: 882
Hello Gentlemans and Ladywomans! I am here to bring you this very special tutorial.
With a new type being added in Gen VI, hackers want to stay up to date and add this new type. However, they usually just replace the ??? type but this messes up Struggle and eggs. So, here I am with this tutorial, complementing DestinedJagold's and MrDollSteak's tutorials. Check them out if you're using Ruby or Emerald respectively.

For this tutorial, you need:
1. NSE 2.X
2. A hex editor, I have HxD
3. A Fire Red 1.0 rom
4. Paint XP/Vista

Has been updated as of 31/01/2015

This comes in 3 parts, The Icon, The Chart and The Name.
HERE WE GO! LETS'A GO!

PART 1: THE ICON
Spoiler:

First, open up your Fire Red rom in NSE 2.X


Now, press navigate and a window will pop up. On the right, press the + next to "Pokemon", then "BPRE" which the code for Fire Red, then "Hud", then "PKMN" then finally, click "Status"

You'll get something like this:


Now, the palette is wierd as, so in the Palette section, type in E95DBC. Now press Open, and close the small window as you'll no longer need it.


Now export it. Go to "File", "Export" then "Export Bitmap" or just press "Ctrl + Shift + E"


Save it somewhere, then edit.
Now when you edit your image, only edit the height if you're changing dimension, also if you do edit it, THE DIMENSIONS MUST BE DIVISIBLE BY 8, IF NOT YOU WILL MESS UP THE ICONS. Also, it's suggested that you do not change the colour scheme as it'll make the process easier, but if you have to, be warned that it'll mess up the palette of a couple of other things.

So open up NSE 2.X again, and go to the image but this time, change the "Height" to however tall your image is, divided by 8.
Now, click "File", "Import", "Import Sprite Data" or just press "Ctrl + I".
Press "Load Sprite", click your sprite now.


In this example, I added 3 types, but theoretically, you could add up to ~250 types, but you'd be a mad man if you did.

Now, if you changed the palette, you have to change the dropbox to "Image+Palette". Otherwise, just press 'Save'


Now, you have to insert it into a different part of the rom, as it is now bigger than the original image.
So go to "Insert" than "Image Data". You'll get this window.


Now, if its a new rom, you'll probably get the same offset as me, but if not, it doesn't matter anyway. Once you have an offset you're okay with, press Save.
If you changed the Palette, do the same thing for the "Palette Data"

Close NSE and open up the rom in a hex editor.
Now find DC5DE908 by using Ctrl + F or whatever your program uses.


Press okay, then you get it. Now replace it with your pointer. But first, we need it in a format the game understands. Don't know how to change it? Look below!
Spoiler:

First, take any offset > ABCDEF
Split it into sections of 2 > AB CD EF
Reverse the 3 sections > EF CD AB
Then slap 08 on the end of it > EF CD AB 08
There ya go!


So in my case, I've got 00 00 80 08, which is quite bland. Anyway, now replace the original pointer with the new one. There's only 1 case so that's the only one.

Then, find the palette pointer, which is BC5DE908, and replace it with the reformatted pointer of your palette data.

Anyway, you may think you're done, but now the hardest part comes.

Go to the offset 452C94 using the Ctrl + G or Go to option.
You'll come to a bunch of hex. You need to copy 0x60 bytes.


Go and paste that into free space, preferably right under the image data. You can use a paste-insert option like the one in HxD.


Make a note of the offset. Now, what exactly is this?


This is actually code that assigns a type to an icon. It uses the type icon image, and using a co-ordinate, links a type to its icon. The way this works is complicated so I made a simple image that should help.


Here's how to find the co-ordinate of an icon.
1. Go from left to right. Which column is it in? Look at the top and assign your icon the number of the column, either 0, 4, 8 or C.
2. Go from top to bottom. Which row is it in? Look at the side and assign your icon the number of the row, from 0, 20, 40, 60, 80, A0 and onwards.
3. Take those two numbers and add them together. That's your co-ordinate!

E.g./ In my image, the Fajro Icon is in the column labeled 4 and the row labeled 20.
20+4 > 24. Fajro's co-ordinate is 0x24. Why 0x? Because this is all in hex.
Now what's the co-ordinate of my new icon, Lumo? It's in column 0 and row 100. Therefore, it's co-ordinate is 0x100.

Now how do we add this to the table? The table is made up of 4 bytes.
Byte 1 is the width of the icon. Type icons have width 0x20 which the other icons are width 0x28.
Byte 2 is the height of the icon. All icons have height 0x0C.
Byte 3 and 4 are the co-ordinate, but flipped similarly to the pointer.

E.g/ Take Fajro's co-ordinate. First make it 4 digits by adding 00s to the front if you have to:
24 > 0024. Split it into groups of 2.
0024 > 00 24. Now flip the order around.
00 24 > 24 00. This is the final co-ordinate of Fajro's icon.
For Lumo, it would be 100 > 0100 > 01 00 > 00 01.

Using these rules, we can now add in the co-ordinates of our new icons. Go to the end of the table and add them in: The height, the width, and the formatted co-ordinate. Here's mine for my 3 new icons.


Now we have to repoint. Search for 942C4508 in your hex editor.


Replace it with the reformatted pointer to your new co-ordination table. In my case, it'd be 00 24 80 08.
There's only 1 case so just replace that one.


Now to test it out ingame! You can use a hex editor by going to 0x254784 and editing the type byte of a pokemon. But, what's the type byte of your new type?
In your co-ordinate table, the first NEW entry would be 0x17, the next entry would be 0x18 and so on.
In my case, Lumo would be 0x17 as it is the first new entry in my table.

Success! The Icon has now been added!

Make sure to test out all of your new icons.


PART 2: THE CHART
Spoiler:

Now we come to the hardest part: changing the type effectiveness of your new type.
Okay, we're gonna need to open up our hex editor.

Now go to your "Goto" function and type in 24F050
You'll have a bunch of hex here. Copy 150 bytes.


Now move all this data into freespace. You can put it after the co-ordinate table if you want, as its space-saving. So go there, select 150 bytes and paste.


Hooray! Now, it is time to edit in our new type effectiveness.
First let's examine this data. Take the first entry:
00 05 05

Type effectiveness is placed in 3 bytes.
The first byte is the attacking type, the second the defending type, and the third, the effectiveness.
The types in hex are :
Spoiler:

Normal = 00
Fighting = 01
Flying = 02
Poison = 03
Ground = 04
Rock = 05
Bug = 06
Ghost = 07
Steel = 08
??? = 09
Fire = 0A
Water = 0B
Grass = 0C
Electric = 0D
Psychic = 0E
Ice = 0F
Dragon = 10
Dark = 11
The new type is 0x17 (In my case Lumo)
Any new type after this begins at 0x18 and onwards...


Now using this data, you can see that 00 05 05 translates into Normal, Rock, 05.
If you know pokemon, you'll know that the 05 represents 0.5x damage as Normal is not very effective against Rock.
The other damage multipliers are:
05 = 0.5x
00 = 0x
14 = 2.0x

But you're not restrictly stuck with these. You can go all the way FE or 25.4x damage which is insane! How to figure out new damage multipliers?
Take your multipler, e.g. 5.6x
Multiply by 10 e.g. 56x
Now convert into HEX e.g. 0x38
Be warned as doing this won't bring up a 'It's not very effective!' or 'It's super effective' message. You need ASM for this. Unfortunately, I'm not sure how to do this.

Okay, so you've figured out the way the chart works, now to edit right? Before that...
Let's look at this piece of data at the end.
FE FE 00 00 07 00 01 07 00 FF FF 00

Now the "FE FE 00" signifies that anything after this point is affected by Foresight.
So the 00 07 00 which is Normal Ghost 0x and 01 07 00 Fighting Ghost 0x are affected by Foresight.
Then we have FF FF 00 which signifies the end of the chart.
WE HAVE TO KEEP THESE PARTS AT THE END.

Okay, so to add a new effectiveness, just copy that piece of code, and move it down however many new effectivesnesses you'll add x3. For an example, I'll only move them down 3 spaces.
Now the actually adding. Using the info above, I'm sure you can make your own weaknesses and strengths on your own.
But here's an example.

I want Lumo to hit Super Effectivie on Fire
Okay so this new type is 0x17 and Fire is 0A and 2x/Super Effective Hit is 14.
So my code is 17 0A 14. Insert it into the new space and done!

Hooray!

Now if you want you're new effecvtiness to be affect by Foresight, just move the FF FF 00 at the end 3 bits and add it in.
But make sure the damage multiplier is 0x, which is 00.
Okay save your rom and you're finally done....kinda.

We're gonna have to repoint the chart.
So now, find the pointer: 50 F0 24 08
Now, replace it with your pointer, in my case: 70 24 80 08

There's a 5 occurrences, so keep finding the old pointers and replacing them.

Okay. Once you've replaced all of the pointers. You're done! Now to test it in game. You first have to change a move into your new type. You can go to 0x250C04 and change the type byte of one of the moves.
In this case, I made Tackle into a Lumo type move.


Now to test:


Success! We're now done with the second part!


PART 3: THE NAME
Spoiler:

Now what we're editing here is hard to explain. So here's an Image.


Here, you can see a bunch of gibberish in the corner, even though the move Tackle is now Lumo type. We're gonna change this.

So open up your hex editor again and go to the "Go To" function. Go to 24F1A0
The data we're concerned with is here:


As before, you're gonna have to move this to free space. Again, putting it under the previous data can save space, so do that.


Okay, so now we've got a bundle of random hex. Except that it isn't. It's actually letters.
Using this reference:
Spoiler:

A = bb
B = bc
C = bd
D = be
E = bf
F = c0
G = c1
H = c2
I = c3
J = c4
K = c5
L = c6
M = c7
N = c8
O = c9
P = ca
Q = cb
R = cc
S = cd
T = ce
U = cf
V = d0
W = d1
X = d2
Y = d3
Z = d4


We can see that these are the names of the types. In this order:
NORMAL, FIGHT, FLYING, POISON, GROUND, ROCK, BUG, GHOST, STEEL, ???, FIRE, WATER, GRASS, ELECTR, PSYCHC, ICE, DRAGON, DARK.
The "FF"s represent the end of the name and the "00"s are for alignment.

Now what happens next is that, Dark is type 0x11, and Lumo is type 0x17, so we need some space between the entries. This is because the "Type", "Power", "PP", "Accuracy" and"Effect" icons are technically types as well, but they don't get used in battle so they don't need names. So, what you need to know is that each entry is 7 bytes long. So, just create a string of 7 bytes that contain 6 00s and 1 FF and that will be alright. Do this 4 more times.


Now add in the new name. Use the hex values for the letters in the spoiler above.


Now, we have to repoint. The original pointer is A0F12408, and replace it.
My new pointer is D0258008 by the way. There are 5 cases so its a short task.


Now to see the results:

Success!
You've now successfully added a new type!


If you wanna edit pokemon or moves using programs, you're gonna have to edit the inis.
There should be 2 things you want to edit.
1. typenames or typenameoffset or something along those lines.
Change the address in this line to the address of where the name table is.
2. number of types.
To change this, first take 22 and add the number of new types you added. In my case, I added 3 new types, so I would change this to 25.

And that's it. If you read all of this, you should be able to create many new types, if you leave enough space. If you see any mistakes, please post it in the thread. Or just comment.

Credit:
coolboyman for the original thread on the type chart
MrDollSteak for his patch that includes the new Fairy type added in, and allowing me to look through the rom.
destinedjagold for his thread, which kind of convinced me to make my thread
__________________
3DS Friend Code: 5069-3944-3902
IGN: Peter, (Pokemon Y, Pokemon OR)
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex (Y) Completed as of 02/03/14 (718), 10/11/14 (719)
Live Pokedex (OR) Completed as of 25/12/14 (719)
Big thanks especially to DestinedJagold, Xerneas_X, Elements1 and ~RNC~

PM me if you want to trade, or add my FC.
Reply With Quote
  #2    
Old November 28th, 2013 (01:57 AM).
Sniper's Avatar
Sniper Sniper is offline
ふゆかい
 
Join Date: Nov 2013
Location: Philippines
Gender: Male
Nature: Quiet
Posts: 1,401
Finally the tutorial for FireRed! :D Hooray. *Happily Jumps*
__________________
Reply With Quote
  #3    
Old November 28th, 2013 (12:55 PM).
Superjub's Avatar
Superjub Superjub is offline
Pokémon Aureolin
Crystal Tier
 
Join Date: Sep 2007
Location: Hoenn
Age: 20
Gender: Male
Nature: Timid
Posts: 2,289
This is amazing and just what I've been wanting! :D Thanks a lot! ^.^
__________________
Reply With Quote
  #4    
Old November 28th, 2013 (06:04 PM).
destinedjagold's Avatar
destinedjagold destinedjagold is offline
Oh Hai Thar~ 'ω'
Silver Tier
 
Join Date: May 2007
Location: Philippines
Gender: Male
Nature: Careful
Posts: 7,027
Quote originally posted by Dragoon:
Credit:
destinedjagold for his thread, which kind of convinced me to make my thread
And it's about time you did! >:3

Seriously, nice tutorial. Hoping that this will help FR/LG hackers out there. :D
__________________

3DS FC: 0061-1111-6462
TSV: 1364(X), 0790(OR)


Reply With Quote
  #5    
Old November 28th, 2013 (06:46 PM).
MrDollSteak's Avatar
MrDollSteak MrDollSteak is offline
Formerly known as 11bayerf1
 
Join Date: Dec 2008
Location: Hong Kong
Age: 20
Gender: Male
Posts: 509
Quote originally posted by Dragoon:
Hello Gentlemans and Ladywomans! I am here to bring you this very special tutorial.
With a new type being added in Gen VI, hackers want to stay up to date and add this new type. However, they usually just replace the ??? type but this messes up Struggle and eggs. So, here I am with this tutorial, complementing DestinedJagold's tutorial. Check it out if you're using Ruby/Emerald

For this tutorial, you need:
1. NSE 2.X
2. A hex editor, I have HxD
3. A Fire Red 1.0 rom

This comes in 3 parts, The Icon, The Chart and The Name.
HERE WE GO! LETS'A GO!

PART 1: THE ICON
Spoiler:

First, open up your Fire Red rom in NSE 2.X


Now, press navigate and a window will pop up. On the right, press the + next to "Pokemon", then "BPRE" which the code for Fire Red, then "Hud", then "PKMN" then finally, click "Status"

You'll get something like this:


Now, the palette is wierd as, so in the Palette section, type in E95DBC. Now press Open, and close the small window as you'll no longer need it.


Now export it. Go to "File", "Export" then "Export Bitmap" or just press "Ctrl + Shift + E"


Save it somewhere, then edit.


Just do whatever you want. In this case, here's a fairy type icon thingy that is used in 11bayerf1's FR rom base. You can use it if you want, I think.


It is a bit bigger, but don't worry. So open up NSE 2.X again, and go to the image but this time, change the "height" to 18, or however tall your image is, divided by 8.
Now, click "File", "Import", "Import Sprite Data" or just press "Ctrl + I".
Press "Load Sprite", click your sprite now.


Change the drop box to "Image + Palette". Now import it.


Mind the weird palette on mine. I did things in a different order, but the result is the same.

Now, you have to insert it into a different part of the rom, as it is now bigger than the original image.
So go to "Insert" than "Image Data".


Now, if its a new rom, you'll probably get the same offset as me, but if not, it doesn't matter anyway. So do that.

Do the same thing for the "Palette Data"

Close NSE and open up the rom in a hex editor.
Now find DC5DE908 by using Ctrl + F or whatever your program uses.


Press okay, then you get it. Now replace it with your pointer. But first, we need it in a format the game understands. Don't know how to change it? Look below!
Spoiler:

First, take any offset > ABCDEF
Split it into sections of 2 > AB CD EF
Reverse the 3 sections > EF CD AB
Then slap 08 on the end of it > EF CD AB 08
There ya go!


So in my case, I've got 00 00 80 08, which is quite bland. Anyway, now replace the original pointer with the new one. There's only 1 case so that's the only one.

Then, find the palette pointer, which is BC5DE908, and replace it with the reformatted pointer of your palette data.

Anyway, you may think you're done, but now the hardest part comes.

Go to the offset 452C94 using the Ctrl + G or Go to option.
You'll come to a bunch of hex.


This actually states the position of the icon. The code is split into parts of 4, the first 2 bytes are the size of the icon, and the 3rd is the position, the 4th is for alignment I believe. Now, because you expanded and moves the "-Type-" and other icons, you'll only need to edit the last 5 entries. Now, to figure out the co-ordinates, look at the second entry.

"20 0C 20 00" This is the entry for the Normal type. 0x20 and 0xC become a width of 32 and a height of 12, which is the same for every type. The "20" in the 3rd position is the co-ordinate.

So, to get the co-ordinate of, in this case, Fairy, take 20 from the Normal type. Count how many rows beneath the Normal Icon is the Fairy Icon, in this case 4. Multiply this by 20, then add it to the 20, in this case 100. Wait whoops, its in hex, so its 0xA0. Then, Count the amount of columns the Fairy icon is away from the Normal icon, in this case 2. Multiply this number by 4, then add it to the final product. So, the co-ordinates for the fairy icon are 0xA8. You can use this "algorithm" to figure out the other co-ordinates as well.

Anyway, go to the final entry, which is 28 0C E8 00 and change to to 20 0C E8 00, because the size used to correspond to the "-Type-" and other icons which are bigger than the type icons, so change the 28 to a 20 as well. Not done yet, as we also moved the co-ordinates of all of the "-Type-" icons as well, so in this case:

"Ignore the 28 which isn't changed into a 20, I forgot to do it in this shot"

If you added more types then the amount of entries provide, move the entire hex into a new location, add some more entries, then repoint. Simple.
Now to test. In this case, to add the new type, just change any type on any Pokemon to 0x16, any other new types start at 0x18 because Nintendo.

Success! The Icon has now been added!


PART 2: THE CHART
Spoiler:

Now we come to the hardest part: changing the type effectiveness of your new type.
Okay, we're gonna need to open up our hex editor.

Now go to your "Goto" function and type in 24F050
You'll have a bunch of hex here:


Now, we have to move this to free space, as you'll most likely make new entries. So select the entire 150 block, and select "Copy" or just Ctrl + C
Now move to some free space, select 150 blocks, and press "Paste


Hooray! Now, it is time to edit in our new type effectiveness.
First let's examine this data. Take the first entry:
00 05 05

Type effectiveness is placed in 3 bytes.
The first byte is the attacking type, the second the defending type, and the third, the effectiveness.
The types in hex are :
Spoiler:

Normal = 00
Fighting = 01
Flying = 02
Poison = 03
Ground = 04
Rock = 05
Bug = 06
Ghost = 07
Steel = 08
??? = 09
Fire = 0A
Water = 0B
Grass = 0C
Electric = 0D
Psychic = 0E
Ice = 0F
Dragon = 10
Dark = 11
The new type is 0x16
Any new type after this begins at 0x18 and on ward


Now using this data, you can see that 00 05 05 translates into Normal, Rock, 05.
If you know pokemon, you'll know that the 05 represents 0.5x damage as Normal is not very effective against Rock.
The other damage multipliers are:
05 = 0.5x
00 = 0x
14 = 2.0x

But you're not restrictly stuck with these. You can go all the way FE or 25.4x damage which is insane! How to figure out new damage multipliers?
Take your multipler, e.g. 5.6x
Multiply by 10 e.g. 56x
Now convert into HEX e.g. 0x38

Okay, so you've figured out the way the chart works, now to edit right? Now exactly.
Let's look at this piece of data at the end.
FE FE 00 00 07 00 01 07 00 FF FF 00

Now the "FE FE 00" signifies that anything after this point is affected by Foresight.
So the 00 07 00 which is Normal Ghost 0x and 01 07 00 Fighting Ghost 0x are affected by Foresight.
Then we have FF FF 00 which signifies the end of the chart.
WE HAVE TO KEEP THESE PARTS AT THE END.

Okay, so to add a new effectiveness, just copy that piece of code, and move it down however many new effectivesnesses you'll add x3. For an example, I'll only move them down 3 spaces.
Now the actually adding. Using the info above, I'm sure you can make your own weaknesses and strengths on your own.
But here's an example.

I want Fairy to hit Super Effectivie on Fire
Okay so this new type is 0x16 and Grass is 0A and 2x/Super Effective Hit is 14.
So my code is 16 0C 14. Insert it into the new space and done!

Hooray!

Now if you want you're new effecvtiness to be affect by Foresight, just move the FF FF 00 at the end 3 bits and add it in.
But make sure the damage multiplier is 0x, which is 00.
Okay save your rom and you're finally done....kinda.

We're gonna have to repoint the chart.
So now, find the pointer: 50 F0 24 08


Now, replace it with your pointer, in my case: 00 24 80 08

There's a few occurrences, so keep finding the old pointers and replacing them.

Okay. Once you've replaced all of the pointers. You're done! Now to test it in game.

I made "Tackle" into a "Fairy Type" to make this easier.


Now to test:


Success! We're now done with the second part!


PART 3: THE NAME
Spoiler:

Now what we're editing here is hard to explain. So here's a picture.


Here, you can see a bunch of gibberish in the corner, even though the move Tackle is now a Fairy type. We're gonna change this.

So open up your hex editor again and go to the "Go To" function. Go to 24F1A0
The data we're concerned with is here:


Okay, so now we've got a bundle of random hex. Except that it isn't. It's actually letters.
Using this reference:
Spoiler:

A = bb
B = bc
C = bd
D = be
E = bf
F = c0
G = c1
H = c2
I = c3
J = c4
K = c5
L = c6
M = c7
N = c8
O = c9
P = ca
Q = cb
R = cc
S = cd
T = ce
U = cf
V = d0
W = d1
X = d2
Y = d3
Z = d4


We can see that these are the names of the types. In this order:
NORMAL, FIGHT, FLYING, POISON, GROUND, ROCK, BUG, GHOST, STEEL, ???, FIRE, WATER, GRASS, ELECTR, PSYCHC, ICE, DRAGON, DARK.
The "FF"s represent the end of the name and the "00"s are for alignment.

So, in order to edit this, you are gonna have to, guess what, repoint the data to free space.
So I move it to 802560 and now we have:


Now what happens next is that, Dark is type 0x11, and Fairy is type 0x16, so we need some space between the entries. So, what you need to know is that each entry is 7 bytes long. So, just create a string of 7 bytes that contain 6 00s and 1 FF and that will be alright. Do this 3 more times, than add the Fairy name. In this case, you can just copy the data I have.


Now, we have to repoint. The original pointer is A0F12408, and replace it.


My new pointer is 60258008 by the way. There are 5 cases so its a short task.


Now to see the results:

Success!
You've now successfully added a new type!


And that's it. If you read all of this, you should be able to create many new types, if you leave enough space. If you see any mistakes, please post it in the thread. Or just comment.

Credit:
coolboyman for the original thread on the type chart
11bayerf1 for his patch that includes the new Fairy type added in, and allowing me to look through the rom
destinedjagold for his thread, which kind of convinced me to make my thread
Nice to see the offsets I gave you went to good use!

P.S I'd just like to say here, using the image and palette I set up is absolutely fine, though credit will need to be given for obvious reasons
__________________
Reply With Quote
  #6    
Old November 30th, 2013 (02:49 AM).
leyn09's Avatar
leyn09 leyn09 is offline
Truant Trainer
 
Join Date: May 2011
Location: Philippines
Gender: Male
Nature: Careful
Posts: 51
Thanks! This will help for my hack! :3
Reply With Quote
  #7    
Old December 1st, 2013 (06:31 PM).
misterpoor's Avatar
misterpoor misterpoor is offline
 
Join Date: Dec 2013
Gender: Male
Posts: 13
Quote originally posted by Dragoon:

PART 1: THE ICON
Spoiler:




If you added more types then the amount of entries provide, move the entire hex into a new location, add some more entries, then repoint. Simple.
Now to test. In this case, to add the new type, just change any type on any Pokemon to 0x16, any other new types start at 0x18 because Nintendo.

Success! The Icon has now been added!

Excuse me I can't understand this, could you guide me by image? (Sorry for my bad English)
Reply With Quote
  #8    
Old December 1st, 2013 (10:29 PM).
ShyRayq's Avatar
ShyRayq ShyRayq is offline
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Posts: 882
Quote originally posted by misterpoor:
Excuse me I can't understand this, could you guide me by image? (Sorry for my bad English)
I actually explain how to do this in the second part, The Chart. Basically, copy the all of the bytes that are used, paste them in some free space near the end of the rom, you'll know because it is filled with FFs. Then, add in your new entries, and repoint, which I show how to do in the second part of the tutorial.
__________________
3DS Friend Code: 5069-3944-3902
IGN: Peter, (Pokemon Y, Pokemon OR)
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex (Y) Completed as of 02/03/14 (718), 10/11/14 (719)
Live Pokedex (OR) Completed as of 25/12/14 (719)
Big thanks especially to DestinedJagold, Xerneas_X, Elements1 and ~RNC~

PM me if you want to trade, or add my FC.
Reply With Quote
  #9    
Old December 9th, 2013 (01:53 PM).
Shadow Wolf's Avatar
Shadow Wolf Shadow Wolf is offline
Alpha Wolf
 
Join Date: May 2012
Location: New York
Age: 16
Gender: Male
Nature: Docile
Posts: 26
Quote:
So, to get the co-ordinate of, in this case, Fairy, take 20 from the Normal type. Count how many rows beneath the Normal Icon is the Fairy Icon, in this case 4. Multiply this by 20, then add it to the 20, in this case 100. Wait whoops, its in hex, so its 0xA0. Then, Count the amount of columns the Fairy icon is away from the Normal icon, in this case 2. Multiply this number by 4, then add it to the final product. So, the co-ordinates for the fairy icon are 0xA8. You can use this "algorithm" to figure out the other co-ordinates as well.

Anyway, go to the final entry, which is 28 0C E8 00 and change to to 20 0C E8 00, because the size used to correspond to the "-Type-" and other icons which are bigger than the type icons, so change the 28 to a 20 as well. Not done yet, as we also moved the co-ordinates of all of the "-Type-" icons as well, so in this case:

"Ignore the 28 which isn't changed into a 20, I forgot to do it in this shot"

If you added more types then the amount of entries provide, move the entire hex into a new location, add some more entries, then repoint. Simple.
Now to test. In this case, to add the new type, just change any type on any Pokemon to 0x16, any other new types start at 0x18 because Nintendo.
i dont really get this part can you explain it to me some more??
Reply With Quote
  #10    
Old December 9th, 2013 (09:09 PM).
ShyRayq's Avatar
ShyRayq ShyRayq is offline
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Posts: 882
Quote originally posted by Shadow Wolf:
i dont really get this part can you explain it to me some more??
Well, to put it as simply as I can, I think you should look at the type icon chart. The first row is Normal, Fire, Water and grass. The co-ordinates are 0x20, 0x24, 0x28 and 0x2C. The next row corresponds to this pattern, except you add 0x20. This is the same for all rows until the -type- row, where they skip the 0xX4 and 0xXC coordinates. So the coordinates for say, rock would be 0x44. And if you place your Fairy type icon when the -Type- icon used to be the coordinate would be 0xA8.
__________________
3DS Friend Code: 5069-3944-3902
IGN: Peter, (Pokemon Y, Pokemon OR)
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex (Y) Completed as of 02/03/14 (718), 10/11/14 (719)
Live Pokedex (OR) Completed as of 25/12/14 (719)
Big thanks especially to DestinedJagold, Xerneas_X, Elements1 and ~RNC~

PM me if you want to trade, or add my FC.
Reply With Quote
  #11    
Old December 10th, 2013 (02:35 AM).
GlaciaTaso's Avatar
GlaciaTaso GlaciaTaso is offline
 
Join Date: Aug 2013
Gender: Male
Posts: 17
Thank you very much.
I learned to editing the effectiveness and resistances of types in D/P/P too.
Reply With Quote
  #12    
Old December 12th, 2013 (08:02 AM).
misterpoor's Avatar
misterpoor misterpoor is offline
 
Join Date: Dec 2013
Gender: Male
Posts: 13
Which is the offset of Bulbasaur? Thank you
__________________
Reply With Quote
  #13    
Old December 12th, 2013 (04:00 PM).
ShyRayq's Avatar
ShyRayq ShyRayq is offline
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Posts: 882
Quote originally posted by misterpoor:
Which is the offset of Bulbasaur? Thank you
You could easily edit the type in YAPE by editing the type constraints in the inis. Making the maximum types 19 and adding in the new type as 18. Otherwise, you can use the offset listed in the YAPE ini as well as using bulbapedia to help edit the type.
__________________
3DS Friend Code: 5069-3944-3902
IGN: Peter, (Pokemon Y, Pokemon OR)
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex (Y) Completed as of 02/03/14 (718), 10/11/14 (719)
Live Pokedex (OR) Completed as of 25/12/14 (719)
Big thanks especially to DestinedJagold, Xerneas_X, Elements1 and ~RNC~

PM me if you want to trade, or add my FC.
Reply With Quote
  #14    
Old December 12th, 2013 (09:40 PM).
misterpoor's Avatar
misterpoor misterpoor is offline
 
Join Date: Dec 2013
Gender: Male
Posts: 13
Quote originally posted by Dragoon:
You could easily edit the type in YAPE by editing the type constraints in the inis. Making the maximum types 19 and adding in the new type as 18. Otherwise, you can use the offset listed in the YAPE ini as well as using bulbapedia to help edit the type.
I opened the romdata.ini file and changed the MaxtypeVal from 17 to 19
but nothing happened in YAPE
. What should I do next?
__________________
Reply With Quote
  #15    
Old December 12th, 2013 (10:39 PM).
destinedjagold's Avatar
destinedjagold destinedjagold is offline
Oh Hai Thar~ 'ω'
Silver Tier
 
Join Date: May 2007
Location: Philippines
Gender: Male
Nature: Careful
Posts: 7,027
Quote originally posted by misterpoor:
I opened the romdata.ini file and changed the MaxtypeVal from 17 to 19
Spoiler:
but nothing happened in YAPE
Spoiler:
. What should I do next?
Edit YAPE's commonvals.ini found in [YAPE\data\en-us] and add your new types.
Spoiler:
__________________

3DS FC: 0061-1111-6462
TSV: 1364(X), 0790(OR)


Reply With Quote
  #16    
Old December 13th, 2013 (12:13 AM).
misterpoor's Avatar
misterpoor misterpoor is offline
 
Join Date: Dec 2013
Gender: Male
Posts: 13
Thank you very much. And how can I change the type of a move?
__________________
Reply With Quote
  #17    
Old December 13th, 2013 (02:28 AM).
ShyRayq's Avatar
ShyRayq ShyRayq is offline
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Posts: 882
Quote originally posted by misterpoor:
Thank you very much. And how can I change the type of a move?
I think one of the 3GT tools in the toolbox allows the usage of new types so I guess you should check it out.
__________________
3DS Friend Code: 5069-3944-3902
IGN: Peter, (Pokemon Y, Pokemon OR)
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex (Y) Completed as of 02/03/14 (718), 10/11/14 (719)
Live Pokedex (OR) Completed as of 25/12/14 (719)
Big thanks especially to DestinedJagold, Xerneas_X, Elements1 and ~RNC~

PM me if you want to trade, or add my FC.
Reply With Quote
  #18    
Old December 13th, 2013 (06:43 PM).
Abcdefgi's Avatar
Abcdefgi Abcdefgi is offline
 
Join Date: Aug 2013
Gender: Male
Posts: 6
Nice Tutorial, really helped a newbie like me, but I have a problem, It says that YAPE Has an error readomg Base Stats every time I make Bulbasaur Fairy Type and save it, Yape cannot read the ROM, why is this? It shows up as Fairy in The game but YAPE apparently cannot read the Base Stats? Help D:
Reply With Quote
  #19    
Old December 13th, 2013 (08:13 PM).
ShyRayq's Avatar
ShyRayq ShyRayq is offline
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Posts: 882
Quote originally posted by Abcdefgi:
Nice Tutorial, really helped a newbie like me, but I have a problem, It says that YAPE Has an error readomg Base Stats every time I make Bulbasaur Fairy Type and save it, Yape cannot read the ROM, why is this? It shows up as Fairy in The game but YAPE apparently cannot read the Base Stats? Help D:
This might happen if you did not change the maximum types in the ini to 19. Look at misterpoor's post above. It shows the change.
__________________
3DS Friend Code: 5069-3944-3902
IGN: Peter, (Pokemon Y, Pokemon OR)
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex (Y) Completed as of 02/03/14 (718), 10/11/14 (719)
Live Pokedex (OR) Completed as of 25/12/14 (719)
Big thanks especially to DestinedJagold, Xerneas_X, Elements1 and ~RNC~

PM me if you want to trade, or add my FC.
Reply With Quote
  #20    
Old December 14th, 2013 (08:03 AM).
Abcdefgi's Avatar
Abcdefgi Abcdefgi is offline
 
Join Date: Aug 2013
Gender: Male
Posts: 6
I did that and it still gives me that error , What could I be doing wrong? Btw I have already edited some Pokemon base stats before I looked at the tutorial.
Reply With Quote
  #21    
Old December 14th, 2013 (04:09 PM).
ShyRayq's Avatar
ShyRayq ShyRayq is offline
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Posts: 882
Quote originally posted by Abcdefgi:
I did that and it still gives me that error , What could I be doing wrong? Btw I have already edited some Pokemon base stats before I looked at the tutorial.
Then I guess you should just test the new type, then revert everything back in order to use YAPE, and in order to use the new type, you're gonna have to go the old fashioned way, using a hex editor, which isn't hard if you know where to look for offsets
__________________
3DS Friend Code: 5069-3944-3902
IGN: Peter, (Pokemon Y, Pokemon OR)
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex (Y) Completed as of 02/03/14 (718), 10/11/14 (719)
Live Pokedex (OR) Completed as of 25/12/14 (719)
Big thanks especially to DestinedJagold, Xerneas_X, Elements1 and ~RNC~

PM me if you want to trade, or add my FC.
Reply With Quote
  #22    
Old December 15th, 2013 (04:03 PM). Edited December 15th, 2013 by Abcdefgi.
Abcdefgi's Avatar
Abcdefgi Abcdefgi is offline
 
Join Date: Aug 2013
Gender: Male
Posts: 6
On Part 2 where you find the Type Effectiviness Hex its has nothing but FF which is free space I resumed? D: What do I do know? Where did my Type Effectiviness chart go, it still functions in the rom

Edit: So I'm A newbie and figured out that my Type Effectiveness got repointed because I forgot I tinkered with the type effectiveness beforehand and I added resistances and Weakness to the ??? type and customize Ghost to be immune to Ground(Because Ghost Levitate anyway, look at Chandelure,) lol
Reply With Quote
  #23    
Old December 22nd, 2013 (07:59 AM).
ezra_ngarbingan's Avatar
ezra_ngarbingan ezra_ngarbingan is offline
 
Join Date: Jan 2013
Gender: Male
Posts: 1
How can you change a type or move to become special or physical? for instances i want to make Ghost type special, how do i do that?
Reply With Quote
  #24    
Old December 22nd, 2013 (10:23 PM).
ShyRayq's Avatar
ShyRayq ShyRayq is offline
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Posts: 882
Quote originally posted by ezra_ngarbingan:
How can you change a type or move to become special or physical? for instances i want to make Ghost type special, how do i do that?
Check out the physical/special patch over in the Research/Development section. Or check out MrDollSteak's patch in the resources, which already includes the Fairy type and more!
__________________
3DS Friend Code: 5069-3944-3902
IGN: Peter, (Pokemon Y, Pokemon OR)
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex (Y) Completed as of 02/03/14 (718), 10/11/14 (719)
Live Pokedex (OR) Completed as of 25/12/14 (719)
Big thanks especially to DestinedJagold, Xerneas_X, Elements1 and ~RNC~

PM me if you want to trade, or add my FC.
Reply With Quote
  #25    
Old December 28th, 2013 (07:46 AM).
KDS's Avatar
KDS KDS is online now
 
Join Date: Jul 2013
Age: 20
Gender: Male
Posts: 160
Great tut, sir.
Another good application of adding new types can be to simulate Freeze Dry and Flying Press (and many custom moves like them) without any deep ASM knowledge.
First, we can add new types (say ice+ and fight+).
Then, make separate type effectiveness tables for each of them respectively(according to which these moves damage super effectively, normally and not very effectively and we don't need to care about what ice+ and fight+ resist or not, because we will be only interested in assigning these types to the moves and not pokemon).
Set Freeze Dry to ice+ type and flying press to fight+ type.
Then, give base power Freeze dry to *1.5*70) or (make the type effective table in integrals of 1.5 with base power of 70). Similarly for flying press. Because ice+ won't gain STAB from ice type nor fight+ from fight.

The downside will be that you should only give freeze dry to an ice type pokemon, because the boosted power is only meant to simulate STAB for them (and only pokemon who are ice type or part ice type legally learn it). If you freeze dry to non ice pokemon by this method, then they will also get the boosted power.

Hope this can prove helpful for hackers, who want to add a proper freeze dry or flying press in their games.
Reply With Quote
Reply
Quick Reply

Sponsored Links
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are UTC -8. The time now is 02:22 AM.