The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > ROM Hacking > Tools, Tutorials & Resources
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

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
ShyRayq's Avatar
ShyRayq
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
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
4. Paint XP/Vista

PLEASE READ EVERYTHING IN BOLD. THE TUT. HAS BEEN UPDATED

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 in this example, I just inserted the Fairy type. No big deal. 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.

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.


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:

"The last 28 should be a 20"

Due to a post in Mr.DollSteak's rombase thread, it appears that the Effect Icon IS USED. So, you HAVE TO REPOINT THE ICON POSITION TABLE. I repeat: you now have to REPOINT no matter what. Also, any mention of 0x16 from this point onwards should now be 0x17.

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 0x17.
More new types go on from there: 0x18, 0x19, 0x1A...

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 0x17
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

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 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!
Ignore the fact that it says 16 0A 14.

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 0x17, 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.

You'll now need to make one more set of "6 00s and 1 FF", to compensate the change from 0x16 to 0x17.

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
MrDollSteak for his patch that includes the new Fairy type added in, and allowing me to look through the rom, as well as the Icon chart used in the guide.
destinedjagold for his thread, which kind of convinced me to make my thread
__________________
3DS Friend Code: 5069-3944-3902
IGN: Peter, Pokemon Y
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex Completed as of 02/03/14
Big thanks especially to DestinedJagold, Xerneas_X and Elements1

PM me if you want to trade, or add my FC.

Last edited by ShyRayq; June 16th, 2014 at 01:25 AM. Reason: Some HEAVY edits
Reply With Quote
  #2    
Old November 28th, 2013, 01:57 AM
VV's Avatar
VV
ブラック
 
Join Date: Nov 2013
Location: Beyond the Boundary
Gender: Male
Nature: Quiet
Send a message via Skype™ to VV
Finally the tutorial for FireRed! :D Hooray. *Happily Jumps*
__________________
V.V
Reply With Quote
  #3    
Old November 28th, 2013, 12:55 PM
Superjub's Avatar
Superjub
Pokémon Aureolin
Community Supporter
 
Join Date: Sep 2007
Location: Hoenn
Age: 19
Gender: Male
Nature: Timid
This is amazing and just what I've been wanting! :D Thanks a lot! ^.^
__________________


Pokémon Aureolin



Reply With Quote
  #4    
Old November 28th, 2013, 06:04 PM
destinedjagold's Avatar
destinedjagold
Oh Hai Thar~ 'ω'
Community Supporter
 
Join Date: May 2007
Location: Philippines
Gender: Male
Nature: Careful
Quote:
Originally Posted by Dragoon View Post
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
SV: 1364 | Rock Safari: Dwebble, Corsola and Barbaracle
Reply With Quote
  #5    
Old November 28th, 2013, 06:46 PM
MrDollSteak's Avatar
MrDollSteak
Formerly known as 11bayerf1
 
Join Date: Dec 2008
Location: Hong Kong
Age: 19
Gender: Male
Quote:
Originally Posted by Dragoon View Post
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
Truant Trainer
 
Join Date: May 2011
Location: Philippines
Gender: Male
Nature: Careful
Thanks! This will help for my hack! :3
Reply With Quote
  #7    
Old December 1st, 2013, 06:31 PM
misterpoor's Avatar
misterpoor
 
Join Date: Dec 2013
Gender: Male
Quote:
Originally Posted by Dragoon View Post

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
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Quote:
Originally Posted by misterpoor View Post
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
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex Completed as of 02/03/14
Big thanks especially to DestinedJagold, Xerneas_X and Elements1

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
Alpha Wolf
 
Join Date: May 2012
Location: New York
Age: 15
Gender: Male
Nature: Docile
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
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Quote:
Originally Posted by Shadow Wolf View Post
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
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex Completed as of 02/03/14
Big thanks especially to DestinedJagold, Xerneas_X and Elements1

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
 
Join Date: Aug 2013
Gender: Male
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
 
Join Date: Dec 2013
Gender: Male
Which is the offset of Bulbasaur? Thank you
__________________
Reply With Quote
  #13    
Old December 12th, 2013, 04:00 PM
ShyRayq's Avatar
ShyRayq
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Quote:
Originally Posted by misterpoor View Post
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
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex Completed as of 02/03/14
Big thanks especially to DestinedJagold, Xerneas_X and Elements1

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
 
Join Date: Dec 2013
Gender: Male
Quote:
Originally Posted by Dragoon View Post
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
Oh Hai Thar~ 'ω'
Community Supporter
 
Join Date: May 2007
Location: Philippines
Gender: Male
Nature: Careful
Quote:
Originally Posted by misterpoor View Post
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
SV: 1364 | Rock Safari: Dwebble, Corsola and Barbaracle
Reply With Quote
  #16    
Old December 13th, 2013, 12:13 AM
misterpoor's Avatar
misterpoor
 
Join Date: Dec 2013
Gender: Male
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
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Quote:
Originally Posted by misterpoor View Post
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
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex Completed as of 02/03/14
Big thanks especially to DestinedJagold, Xerneas_X and Elements1

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
 
Join Date: Aug 2013
Gender: Male
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
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Quote:
Originally Posted by Abcdefgi View Post
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
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex Completed as of 02/03/14
Big thanks especially to DestinedJagold, Xerneas_X and Elements1

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
 
Join Date: Aug 2013
Gender: Male
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
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Quote:
Originally Posted by Abcdefgi View Post
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
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex Completed as of 02/03/14
Big thanks especially to DestinedJagold, Xerneas_X and Elements1

PM me if you want to trade, or add my FC.
Reply With Quote
  #22    
Old December 15th, 2013, 04:03 PM
Abcdefgi's Avatar
Abcdefgi
 
Join Date: Aug 2013
Gender: Male
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

Last edited by Abcdefgi; December 15th, 2013 at 04:16 PM. Reason: Fix Problem
Reply With Quote
  #23    
Old December 22nd, 2013, 07:59 AM
ezra_ngarbingan's Avatar
ezra_ngarbingan
 
Join Date: Jan 2013
Gender: Male
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
Unprofessional Unprofessional
 
Join Date: Aug 2007
Gender: Male
Nature: Adamant
Quote:
Originally Posted by ezra_ngarbingan View Post
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
Friend Safari: (Fighting) Throh, Meditite, Breloom
Live Pokedex Completed as of 02/03/14
Big thanks especially to DestinedJagold, Xerneas_X and Elements1

PM me if you want to trade, or add my FC.
Reply With Quote
  #25    
Old December 28th, 2013, 07:46 AM
KDS
 
Join Date: Jul 2013
Age: 19
Gender: Male
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
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 05:48 PM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.