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.

Closed Thread
 
Thread Tools
  #1    
Old May 6th, 2007, 12:01 AM
Coolboyman's Avatar
Coolboyman
Veteran Hacker
 
Join Date: Sep 2003
Location: The East Bay
Age: 26
Gender: Male
Nature: Bold
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.
__________________
Check out my Youtube channel. All about ROM Hacks, Indie Games and more!

Brown:


Prism : - Four Gym Summer 2010 Beta available now!

Twitter

Last edited by Coolboyman; May 7th, 2007 at 03:05 AM.
  #2    
Old May 6th, 2007, 07:09 PM
Hedgehogger's Avatar
Hedgehogger
Learning ASM, but struggling
 
Join Date: Feb 2007
Location: Somewhere near a box.
Gender: Male
Nature: Quiet
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!
  #3    
Old May 6th, 2007, 11:15 PM
Coolboyman's Avatar
Coolboyman
Veteran Hacker
 
Join Date: Sep 2003
Location: The East Bay
Age: 26
Gender: Male
Nature: Bold
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!
Attached Files
File Type: ips steeldarkred.ips‎ (463 Bytes, 124 views) (Save to Dropbox)
__________________
Check out my Youtube channel. All about ROM Hacks, Indie Games and more!

Brown:


Prism : - Four Gym Summer 2010 Beta available now!

Twitter
  #4    
Old May 9th, 2007, 01:12 PM
>Bent<'s Avatar
>Bent<
awhups
 
Join Date: Oct 2006
Location: Reading the Psalms.
Age: 24
Gender:
Nature: Adamant
Send a message via AIM to >Bent<
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).
__________________
  #5    
Old May 9th, 2007, 05:32 PM
Coolboyman's Avatar
Coolboyman
Veteran Hacker
 
Join Date: Sep 2003
Location: The East Bay
Age: 26
Gender: Male
Nature: Bold
I'm not sure, it doesn't seem to affect anything.

Last edited by Coolboyman; May 11th, 2007 at 10:25 PM.
  #6    
Old May 26th, 2007, 03:33 AM
Prof. 9
 
Join Date: Jun 2006
Location: The Netherlands
Gender: Male
If you repoint the weaknesses and strengths to free space, can you add more type advantages and disadvantages at the end?
  #7    
Old May 31st, 2007, 11:34 AM
>Bent<'s Avatar
>Bent<
awhups
 
Join Date: Oct 2006
Location: Reading the Psalms.
Age: 24
Gender:
Nature: Adamant
Send a message via AIM to >Bent<
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").
__________________
  #8    
Old July 21st, 2007, 12:43 PM
GARGLE!'s Avatar
GARGLE!
Dopeymon Master
 
Join Date: Sep 2005
Age: 28
Gender:
Nature: Quirky
Quote:
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.
  #9    
Old July 22nd, 2007, 05:41 AM
>Bent<'s Avatar
>Bent<
awhups
 
Join Date: Oct 2006
Location: Reading the Psalms.
Age: 24
Gender:
Nature: Adamant
Send a message via AIM to >Bent<
Quote:
Originally Posted by GARGLE! View Post
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 by >Bent<; July 22nd, 2007 at 05:49 AM.
  #10    
Old August 15th, 2007, 02:29 PM
lookoutapiano's Avatar
lookoutapiano
Booted out - don't be like me!
 
Join Date: Jul 2007
Location: United Kingdom
Gender:
Nature: Quiet
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.
  #11    
Old August 26th, 2007, 01:49 PM
SilverPlatinum's Avatar
SilverPlatinum
Beginner
 
Join Date: Aug 2007
Location: London
Age: 21
Gender: Male
Nature: Relaxed
this is a bit confusing but i think ill get the hang of it
__________________

Silver's Blaze the level 13 Ninetales!
  #12    
Old January 4th, 2008, 03:43 PM
ferrarib0y's Avatar
ferrarib0y
Beginning Trainer
 
Join Date: Jan 2008
Location: somewhere in the unknown
Age: 21
Gender:
Nature: Bold
Send a message via AIM to ferrarib0y
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 by ferrarib0y; January 4th, 2008 at 04:05 PM.
  #13    
Old January 4th, 2008, 05:37 PM
Godot's Avatar
Godot
That's one of my rules.
 
Join Date: Sep 2007
Location: The prosecutor's bench
Age: 21
Send a message via Windows Live Messenger to Godot
You shouldn't revive old threads. I am assuming this will be closed as soon as a mod catches it.
__________________
  #14    
Old March 17th, 2008, 04:07 PM
Hat?
Booted out - don't be like me!
 
Join Date: Jan 2007
...
...


What's this "Bird" type?
  #15    
Old March 17th, 2008, 04:16 PM
Coolboyman's Avatar
Coolboyman
Veteran Hacker
 
Join Date: Sep 2003
Location: The East Bay
Age: 26
Gender: Male
Nature: Bold
Missingno's type... you should have googled it first, seriously.
__________________
Check out my Youtube channel. All about ROM Hacks, Indie Games and more!

Brown:


Prism : - Four Gym Summer 2010 Beta available now!

Twitter
  #16    
Old March 17th, 2008, 04:25 PM
Hat?
Booted out - don't be like me!
 
Join Date: Jan 2007
Right, sorry, I don't know too much about all the glitches.
  #17    
Old March 17th, 2008, 04:40 PM
Jack of Bl♠des's Avatar
Jack of Bl♠des
Former goderator
 
Join Date: Jan 2008
Location: Temin-ni-Gru
Age: 22
Gender:
Send a message via AIM to Jack of Bl♠des
Also, this goes into a Hex Editor I'm presuming. Sorry, but Hex is absolutely foreign to me and I'm just now trying to get into it.
__________________
Hey guys, I'm still alive. Not really sure if I want to continue Twisted Path though.
  #18    
Old March 23rd, 2008, 07:04 PM
timmy112's Avatar
timmy112
Learning to Hack
 
Join Date: Jul 2007
Gender:
Nature: Adamant
Send a message via Windows Live Messenger to timmy112
Quote:
Originally Posted by Prof. 9 View Post
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?
  #19    
Old March 23rd, 2008, 07:15 PM
IIMarckus's Avatar
IIMarckus
J946@5488AA97464
 
Join Date: Oct 2007
Gender:
Quote:
Originally Posted by timmy112 View Post
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.
  #20    
Old March 23rd, 2008, 07:42 PM
timmy112's Avatar
timmy112
Learning to Hack
 
Join Date: Jul 2007
Gender:
Nature: Adamant
Send a message via Windows Live Messenger to timmy112
How do I change the old pointer to the new location.
  #21    
Old March 23rd, 2008, 08:07 PM
IIMarckus's Avatar
IIMarckus
J946@5488AA97464
 
Join Date: Oct 2007
Gender:
Quote:
Originally Posted by timmy112 View Post
How do I change the old pointer to the new location.
Depends on what system you're hacking. Let's use Crystal as an example. If the offset is >4000, then we can get its pointer by (offset MOD 4000) + 4000.

034BB1 Mod 4000 = 0BB1
0BB1 + 4000 = 4BB1

So 4BB1 is our pointer. Next, we look for the pointer in our ROM. In most cases (not always, but usually), the pointer is in the same bank as the data. Each bank is 4000 bytes long and starts at the offset rounded down to the nearest 4000, which in our case is 034000. So we navigate to 034000 in our hex editor and search for the pointer. GBC pointers are little-endian, which means that the one's place byte goes first. So we search for B14B.

Our result is at 034741. Notice the 21 in front of the pointer. 21, 11, and 01 are assembly commands that mean "load the next two bytes into the CPU registers." If you see one of those while searching for pointer values, it's a good bet that you've found your pointer. (Not to say that a pointer without a 21 in front is less likely to be a pointer -- a lot of the time you'll find pointers in lists, especially when it comes to things like text.)

So we change the value in 034741-034742 to the pointer to our new location for the data. The free space in this bank starts at 037EE2, so let's assume we copied our data there. Like before, we would find the pointer to our new location with ((037EE2 MOD 4000) + 4000), which is 7EE2. Don't forget to byteswap! Our final value will be E27E.

This method will work for GBC pointers, but not GBA pointers. If you're needing those instead, it shouldn't be that hard to find out info on how they work.

Last edited by IIMarckus; March 23rd, 2008 at 08:38 PM.
  #22    
Old March 23rd, 2008, 08:22 PM
timmy112's Avatar
timmy112
Learning to Hack
 
Join Date: Jul 2007
Gender:
Nature: Adamant
Send a message via Windows Live Messenger to timmy112
Thanks , where did you find all of this info, because I need info for gba games. Does anyone know how to change gba pointers and what program do I use?

Last edited by timmy112; March 23rd, 2008 at 10:53 PM.
  #23    
Old June 19th, 2008, 02:39 PM
Blaziken626's Avatar
Blaziken626
Pokemon Black Shadow
 
Join Date: Dec 2006
Age: 20
Gender:
Nature: Mild
Sorry if this sounds kinda stupid, but...

For R/S/E/FR/LG/D/P if you use the value 12, would that work if I wanted to add a new type?
  #24    
Old July 28th, 2008, 04:11 AM
ratchet5's Avatar
ratchet5
Beginning Trainer
 
Join Date: Jul 2007
Nature: Adamant
N00bish Question alert.......

How do you look up the address? 0_o
Yeah, i have VBA, i tried memory viewer but it only has 4 numbers, not 5. So when i look up "34D01", it goes to "4D01" instead.
And the numbers are like 00 09 77 D1 C9 11 etc...... Not really right.......
I'm trying to GBC hack btw.....

Last edited by ratchet5; July 28th, 2008 at 04:23 AM.
  #25    
Old July 28th, 2008, 04:46 AM
thethethethe
Gym Leader
 
Join Date: Jun 2007
Location: Melbourne, Australia
Gender: Male
Quote:
Originally Posted by ratchet5 View Post
N00bish Question alert.......

How do you look up the address? 0_o
Yeah, i have VBA, i tried memory viewer but it only has 4 numbers, not 5. So when i look up "34D01", it goes to "4D01" instead.
And the numbers are like 00 09 77 D1 C9 11 etc...... Not really right.......
I'm trying to GBC hack btw.....
HEX EDITOR!
Memory viewer is different.
__________________
Gone.
Closed Thread
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:40 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.