By: thethethethe
Basic DP Hex editing
Since Pokespam are releasing some programs now, I figure I'd write up a little guide on hex editing some simple things in Pokemon Diamond(Pointers may differ slightly in Pearl). Also, for lists of items/pokemon/attacks look at the bottom of the post.
All those are in an reversed state, and to use them in a hex editor, you'll need to reverse the values. That might sound complicated but it isn't. Here's a few examples, that might help explain it.
5 > 00 05 > reversed > 05 00
B11F > B1 1F > reversed > 1F B1
162 > 01 62 > reversed 62 01
See, simple.
Also, If you already know how to do basic hex editing in GBA, you'll be able to do this easily.
Evolutions Editing
Here's some data on editing the types of evolution. The pointer to the data is found at 0x1C1BFDA. As far as I know, there are 26 different forms of evolution. I'll be explaining all of them.
The basic set up the pokemons evolution is this:
[Type of Evolution (2 bytes)] [Item/Level/Attack/Pokemon] [Pokemon to evolve to]
For each pokemon, there is enough space to include 7 different evolutions for the Certain Pokemon.
Since I'm explaining the types from "0100" to "1A00" I'll start at "0100".
The "0100" evolution is A normal Happiness evolution. In a hex editor go to the pointer 0x1C1C714.
You'll be brought up with this.
01 00 00 00 A9 00 ' Happiness Evolution ; 0000 ; Evolve to Crobat
This is the evolution from Golbat to Crobat.
All that needs to be edited with this is the final two bytes. Which if you refer to my explanation earlier, you'll see the pokemon to evolve to.
Now I'll do the "0200" and the "0300" together. These are Happiness at day, and happiness at night respectively. The best example for these are the Eevee evolutions. Go to 0x1C1D6D6 and you'll see this.
02 00 00 00 C4 00 03 00 00 00 C5 00
I'll seperate these into happiness at day and night respectively.
02 00 00 00 C4 00 ' Happiness at Day Evolution ; 0000 ; Evolve to Espeon
03 00 00 00 C5 00 ' Happiness at Night Evolution ; 0000 ; Evolve to Umbreon
This is similiar to the Happiness evolution of "0100" and you just need to change the last two bytes.
"0400" Evolution is a normal Evolution. Look at the pointer 0x1C1C008.
04 00 10 00 02 00 'Level Up Evolution ; Level to evolve at (16) ; Evolve to Ivysaur
This is the most common evolution stored in the game. To use this you'll need to change the 'Level to evolve at' and the 'Pokemon to evolve to'
"0500" is the evolution through trade. An example can be found at the pointer 0x1C1CADC. You'll see this.
05 00 00 00 41 00 'Trade Evolution ; 0000 ; Evolve to Alakasam
Do I need to explain these anymore. I think you should get the idea now. How about I just show examples, and give a pointer to you for each of them.
Type: 0600, Trade with Item Evolution
Pointer: 0x1C1CA5E
Example: 16 00 DD 00 BA 00 'Trade with Item ; Item (Kings Rock) ; Politoed
Type: 0700, Evolve with Item
Pointer: 0x1C1D6C4
Example: 07 00 53 00 87 00 'Item Evo. ; Item (Thunderstone) ; Jolteon
Type: 0800, Attack>Defense
Pointer: 0x1C1E872
Example: 08 00 14 00 6A 00 'Attack>Defense ; Level (20) ; Hitmonlee
Type: 0900, Attack=Defense
Pointer: 0x1C1E878
Example:09 00 14 00 ED 00 'Attack=Defense ; Level (20) ; Hitmontop
Type: 0A00, Attack<Defense
Pointer: 0x1C1E86C
Example: 0a 00 14 00 6B 00 'Attack<Defense ; Level (20) ; Hitmonchan
Type: 0B00, Personality Value < or = to 4
Pointer: 0x1C1ED68
Example: 0B 00 07 00 0A 01 'Personality Value <= 4 ; Level (7) ; Silcoon
Type: 0C00, Personality Value > or = to 5
Pointer: 0x1C1ED6E
Example: 0C 00 07 00 0C 01 'Personality Value >= 5 ; Level (7) ; Cascoon
Type: 0D00, Special Lvl Evo, goes with 0E00
Pointer: 0x1C1F1B4
Example: 0D 00 14 00 23 01 'Special Lvl Evo ; Level (20) ; Ninjask
Type: 0E00, If spare spot in Party, Poke appears
Pointer: 0x1C1F1BA
Example: 0E 00 14 00 24 01 'If party <=5 ; Level (20); Shedinja
Type: 0F00, Max Beauty
Pointer: 0x1C1FBD8
Example: 0F 00 AA 00 5E 01 'Max Personality ; Beauty ; Miltic
Note: This evolution is just speculation as Feebas>Milotic is the only evolution that uses it. So there is nothing to compare it to.
Type: 1000, Item and Male
Pointer: 0x1C1F02E
Example: 10 00 6D 00 6B 01 'Item and male ; Item (Dawn Stone) ; Gallade
Type: 1100, Item and Female
Pointer: 0x1C1FDEE
Example: 11 00 6D 00 DE 01 'Item and Female ; Item (Dawn Stone) ; Froslass
Type: 1200, Level up holding item at day
Pointer: 0x1C20B7C
Example: 12 00 6E 00 71 00 'Level Holding item at day ; Item (Oval Stone) ; Chansey
Type: 1300, Level up holding item at night
Pointer: 0x1C1E370
Example: 13 00 46 01 CD 01 'Level Holding item at night ; Item (Razor Claw) ; Weavile
Type: 1400, Level up with attack
Pointer: 0x1C1D26C
Example: 14 00 CD 00 CF 01 'Level up with Attack ; Attack (Rollout) ; Lickilicky
Type: 1500, Level up with Pokemon in Party
Pointer: 0x1C20E94
Example: 15 00 DF 00 E2 00 'Level up with Pokemon in Party ; Pokemon (Remoraid) ; Mantine
Type: 1600, Level up Male
Pointer: 0x1C206B2
Example: 16 00 14 00 9E 01 'Level Up male ; Level (20) ; Mothim
Type: 1700, Level Up Female
Pointer: 0x1C206AC
Example: 17 00 14 00 9D 01 'Level Up female ; Level (20) ; Wormadam
Type: 1800, Level Up at Mt. Coronet
Pointer: 0x1C1CDF4
Example: 18 00 00 00 CE 01 'Level at Mt. Coronet ; 0000 ; Magnezone
Type: 1900, Level Up at Eterna Forest
Pointer: 0x1C1D6B8
Example: 19 00 00 00 D6 01 ' Level Up at Eterna Forest ; 0000 ; Leafeon
Type: 1A00, Level Up at Route 217
Pointer: 0x1C1D6BE
Example: 1A 00 00 00 D7 01 'Level Up at Route 217 ; 0000 ; Glaceon
Moveset Editing
With this, I'm going to use Lucario's Moveset to explain. To see Lucario's Moveset go to the pointer 0x1C26B0C.
You should see this.
8F 03 62 02 C1 02 C5 02 E8 02 44 0C 8B 17 6C 1F C6 26 3F 31 7E 3B 0E 42 8C 4B 72 55 96 5F F5 66
That was a long line. Looks like 'gibberish' dosen't it?
I'm going to do something to these first 2 bytes. Look at this.
8F 03
Still not totally clear but maybe a little easier.
I'm going to sepearate this, to make it look "easier".
8F 01 00 02
Let's look at this.
We now have 8F01 and 0002
So what we now have is the attack Dark Pulse and "0x2". This "0x2" is actually the level that it learns the attack. Except there's one problem, Lucario has Dark Pulse at Level 1. The solution is Simple, divide it by two.
Now let's try the last 2 bytes of that line, and see what we get.
F5 00 00 66
F5 00 = Extremspeed ; 0x66 (We have to change it to a decimal value before halving it, so we get 102)
Let's check this on the internet. Go to bulbapedia or serebii and check for Lucario's attack list.
Lucario learns Extremespeed at level 51.
Here's the whole moveset "decoded"
Code:
Lucario
8F03 03=3 Level 1 Dark pulse
6202 02=2 Level 1 Quick Attack
C102 02=2 Level 1 Foresight
C502 02=2 Level 1 Detect
E802 02=2 Level 1 Metal Claw
440C 0C=12 Level 6 Counter
8B17 17=23 Level 11 Force Palm
6C1F 1F=31 Level 15 Feint
C626 26=38 Level 19 Bone Rush
3F31 31=49 Level 24 Metal Sound
7E3B 3B=59 Level 29 Me First
0E42 42=66 Level 33 Swords Dance
8C4B 4B=75 Level 37 Aura Sphere
7255 55=85 Level 42 Close Combat
965F 5F=95 Level 47 Dragon Pulse
F566 66=102 Level 51 ExtremespeedNOTE: The beginning of the moveset data is at 0x1C237DE. This is the ????? Pokemon's attacks.
TM/HM Table
Go to the pointer 0xFC4EC. You should see this.
08 01 51 01 60 01 5B 01 2E 00 5C 00 02 01 53 01 4B 01 ED 00 ...etc.
What's all this mean? It's the attacks contained within each TM/HM. It's ordered down from TM 1 through to HM 8.
But How do we edit this? Let's take the attack table at the bottom of the post and look at the hex again.
We now have:
Focus Punch, Dragon Claw, Water Pulse, Calm Mind, Roar, etc.
All you need to do is edit which attack is in which spot. It's one of the easier things to do.
Sinnoh Pokedex Order
Go to the pointer 0x37B0020. You'll come up with this:
83 01 84 01 85 01 86 01 87 01 88 01 89 01 8A 01 8B 01 8C 01 8D 01 8E 01 8F 01 90 01 91 01 92 01 93 01 94 01 95 01 3F 00 40 00 41 00 81 00 82 00 96 01... etc.
That's enough of, you can look at it yourself, if you want to. We're going to need the list in at the bottom for this. These are the Pokemon. In there order.
Turtwig, Grottle, Torterra, Chimchar, Monferno, Infernape, Piplup, Prinplup, Empoleon, Starly, Staravia, Staraptor, Bidoof, Bibarel, Kricketot, Kricketune, Shinx, Luxio, Luxray, Abra, Kadabra, Alakazam, Magikarp, Gyarados, Budew, etc.
Easily editable. You can have fun with this.
Base Stats
I've going to use Bulbasaur's stats here. These are found at 0x1C15A08.You'll see this.
2D 31 31 2D 41 41 0C 03 2D 40 00 01 00 00 00 00 1D 14 46 03 01 07 41 00 00 03 00 00 20 07 35 84 08 1E 10 02 20 24 66 92 02 00 00 00
Here's just a brief explanation of these.
Code:
2D - HP
31 - Attack
31 - Defense
2D - Speed
41 - Special Attack
41 - Special Defense
0C - Type 1
03 - Type 2
2D - Catch Rate
40 - Base XP
00 - Effort Yield1
01 - Effort Yield2
0000 - Item 1
0000 - Item 2
1D - Gender Chance
14 - Steps for Egg to hatch
46 - Base Happiness?
03 - Experience Type
01 - Egg Type 1
07 - Egg Type 2
41 - Special Ability 1
00 - Special Ability 2
00 - Safari Run Chance
03 - Colour
00 - Padding
00 - Padding
20 - TM Switches 1-8
07 - TM Switches 9-16
35 - TM Switches 17-24
84 - TM Switches 25-32
08 - TM Switches 33-40
1E - TM Switches 41-48
10 - TM Switches 49-56
02 - TM Switches 57-64
20 - TM Switches 65-72
24 - TM Switches 73-80
66 - TM Switches 81-88
92 - TM Switches 89-92 / HM 1-4
02 - HM 5-8
00 - Padding
00 - Padding
00 - PaddingType Weakness/Strength Chart
I guess I'll start with this, the values for the different types.
Code:
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 = DarkNow look at the pointer 0x1DE1B8. You should have this.
00 05 05 00 08 05 0A 0A 05 0A 0B 05 0A 0C 14 ...etc
I'm just going to use the first three bytes. When referring to the above table, what do these first 3 bytes mean?
00 - Normal
05 - Rock
05 - Rock???
The third value isn't Rock type.
The first byte was the type of an attack. The second byte is the type of the Pokemon being attacked, and the third is how much the damage is multiplied by.
So if I were to explain these three bytes, in the English Language it would be this.
When a Normal attack hits a Rock Pokemon, the damage is halved.
So let's use another example. Let's use the Fire attacks Ice.
0A 0F 14
What's 14 mean? 14 in decimal, is 20, which is of course double the damage.
If we wanted to, we could change this to anything from 0 (No damage) to FF (Damage times 26), which would of course be unstoppable against a type.
Trainers
I'll use the first gym leader, as an example here. Go to 0x1C2F854. You'll see this.
3200 0C00 4A00 BE01 5800 0000 0000
3200 0C00 5F00 BE01 5800 6700 0000
3200 0E00 9801 1D00 E400 2B00 0000
What's this mean? Well, here's the layout explained. I'll just use the first row.
3200 - First byte. Don't Touch.
0C00 - The level of the Pokemon
4A00 - The Pokemon
BE01 - Attack 1
5800 - Attack 2
0000 - Attack 3
0000 - Attack 4
So if we were to 'decode' those three lines of hex, we would get this.
Code:
Level;Pokemon Attacks
Level 12 Geodude Stealth Rock; Rock Throw; No Attack; No Attack
Level 12 Onix Stealth Rock; Rock Throw; Screech; No Attack
Level 14 Craniados Headbutt; Pursuit; Leer; No Attack; No AttackLet's also use another battle, just for fun. We'll use the battle with your Rival.
The pointer is at 0x and here's what you see.
< 1E00 > < 0700 > < 8C01 > < 6200 > < 2D00 > < 0000 > < 0000 >
< 1E00 > < 0900 > < 8301 > < 2100 > < 6E00 > < 0000 > < 0000 >
< 1E00 > < 0700 > < 8C01 > < 6200 > < 2D00 > < 0000 > < 0000 >
< 1E00 > < 0900 > < 8601 > < 0A00 > < 2B00 > < 0000 > < 0000 >
< 1E00 > < 0700 > < 8C01 > < 6200 > < 2D00 > < 0000 > < 0000 >
< 1E00 > < 0900 > < 8901 > < 0100 > < 2D00 > < 0000 > < 0000 >
Look, there's three seperate trainerbattles. All the different Rival Pokemon. Might as well 'decode' it.
Code:
Battle 1
Level; Pokemon Attacks
Level 7 Starly Quick Attack; Growl; No Attack; No Attack
Level 9 Turtwig Tackle; Withdraw; No Attack; No Attack
Battle 2
Level 7 Starly Quick Attack; Growl; No Attack; No Attack
Level 9 Chimchar Scratch; Leer; No Attack; No Attack
Battle 3
Level 7 Starly Quick Attack; Growl; No Attack; No Attack
Level 9 Piplup Pound; Growl; No Attack; No AttackAttack Data
I'll explain this similiarly to the way I did the Pokemon Stats. Go to the pointer 0x1D6E95C. You'll see this. This is the data for Fire Punch.
04 00 00 4B 0A 64 0F 0A 00 00 00 13 11 01 00 00
Like the stats, there's more bytes, and I can't solve some of them.
Code:
04 - Effect (Hit + Possible Burn)
00 - ??
00 - ??
4B - Power (75)
0A - Type (Fire)
64 - Accuracy (100)
0F - PP (15)
0A - Chance of Effect (10%)
00 - Target (One Opponent)
00 - Move's Speed (For Quick Attack, and Extremespeed)
00 - ??
13 - Contact
11 - ??
01 - ??
00 - ??
00 - ??Starters
Probably the easiest possible thing to do. Go to 0x2B918A. You'll see this.
83 01 00 00 86 01 00 00 89 01 00 00
Pretty obvious. 83 01 is obviously Turtwig, 86 01 is obviously Chimchar, and 89 01 is of course Piplup. All you need to do is change the two bytes depending on which starter you change.
Well, that's about all that's needed. That's enough for now...
Before I go, here's the list of Attacks.
Basic DP Hex editing
Since Pokespam are releasing some programs now, I figure I'd write up a little guide on hex editing some simple things in Pokemon Diamond(Pointers may differ slightly in Pearl). Also, for lists of items/pokemon/attacks look at the bottom of the post.
All those are in an reversed state, and to use them in a hex editor, you'll need to reverse the values. That might sound complicated but it isn't. Here's a few examples, that might help explain it.
5 > 00 05 > reversed > 05 00
B11F > B1 1F > reversed > 1F B1
162 > 01 62 > reversed 62 01
See, simple.
Also, If you already know how to do basic hex editing in GBA, you'll be able to do this easily.
Evolutions Editing
Here's some data on editing the types of evolution. The pointer to the data is found at 0x1C1BFDA. As far as I know, there are 26 different forms of evolution. I'll be explaining all of them.
The basic set up the pokemons evolution is this:
[Type of Evolution (2 bytes)] [Item/Level/Attack/Pokemon] [Pokemon to evolve to]
For each pokemon, there is enough space to include 7 different evolutions for the Certain Pokemon.
Since I'm explaining the types from "0100" to "1A00" I'll start at "0100".
The "0100" evolution is A normal Happiness evolution. In a hex editor go to the pointer 0x1C1C714.
You'll be brought up with this.
01 00 00 00 A9 00 ' Happiness Evolution ; 0000 ; Evolve to Crobat
This is the evolution from Golbat to Crobat.
All that needs to be edited with this is the final two bytes. Which if you refer to my explanation earlier, you'll see the pokemon to evolve to.
Now I'll do the "0200" and the "0300" together. These are Happiness at day, and happiness at night respectively. The best example for these are the Eevee evolutions. Go to 0x1C1D6D6 and you'll see this.
02 00 00 00 C4 00 03 00 00 00 C5 00
I'll seperate these into happiness at day and night respectively.
02 00 00 00 C4 00 ' Happiness at Day Evolution ; 0000 ; Evolve to Espeon
03 00 00 00 C5 00 ' Happiness at Night Evolution ; 0000 ; Evolve to Umbreon
This is similiar to the Happiness evolution of "0100" and you just need to change the last two bytes.
"0400" Evolution is a normal Evolution. Look at the pointer 0x1C1C008.
04 00 10 00 02 00 'Level Up Evolution ; Level to evolve at (16) ; Evolve to Ivysaur
This is the most common evolution stored in the game. To use this you'll need to change the 'Level to evolve at' and the 'Pokemon to evolve to'
"0500" is the evolution through trade. An example can be found at the pointer 0x1C1CADC. You'll see this.
05 00 00 00 41 00 'Trade Evolution ; 0000 ; Evolve to Alakasam
Do I need to explain these anymore. I think you should get the idea now. How about I just show examples, and give a pointer to you for each of them.
Type: 0600, Trade with Item Evolution
Pointer: 0x1C1CA5E
Example: 16 00 DD 00 BA 00 'Trade with Item ; Item (Kings Rock) ; Politoed
Type: 0700, Evolve with Item
Pointer: 0x1C1D6C4
Example: 07 00 53 00 87 00 'Item Evo. ; Item (Thunderstone) ; Jolteon
Type: 0800, Attack>Defense
Pointer: 0x1C1E872
Example: 08 00 14 00 6A 00 'Attack>Defense ; Level (20) ; Hitmonlee
Type: 0900, Attack=Defense
Pointer: 0x1C1E878
Example:09 00 14 00 ED 00 'Attack=Defense ; Level (20) ; Hitmontop
Type: 0A00, Attack<Defense
Pointer: 0x1C1E86C
Example: 0a 00 14 00 6B 00 'Attack<Defense ; Level (20) ; Hitmonchan
Type: 0B00, Personality Value < or = to 4
Pointer: 0x1C1ED68
Example: 0B 00 07 00 0A 01 'Personality Value <= 4 ; Level (7) ; Silcoon
Type: 0C00, Personality Value > or = to 5
Pointer: 0x1C1ED6E
Example: 0C 00 07 00 0C 01 'Personality Value >= 5 ; Level (7) ; Cascoon
Type: 0D00, Special Lvl Evo, goes with 0E00
Pointer: 0x1C1F1B4
Example: 0D 00 14 00 23 01 'Special Lvl Evo ; Level (20) ; Ninjask
Type: 0E00, If spare spot in Party, Poke appears
Pointer: 0x1C1F1BA
Example: 0E 00 14 00 24 01 'If party <=5 ; Level (20); Shedinja
Type: 0F00, Max Beauty
Pointer: 0x1C1FBD8
Example: 0F 00 AA 00 5E 01 'Max Personality ; Beauty ; Miltic
Note: This evolution is just speculation as Feebas>Milotic is the only evolution that uses it. So there is nothing to compare it to.
Type: 1000, Item and Male
Pointer: 0x1C1F02E
Example: 10 00 6D 00 6B 01 'Item and male ; Item (Dawn Stone) ; Gallade
Type: 1100, Item and Female
Pointer: 0x1C1FDEE
Example: 11 00 6D 00 DE 01 'Item and Female ; Item (Dawn Stone) ; Froslass
Type: 1200, Level up holding item at day
Pointer: 0x1C20B7C
Example: 12 00 6E 00 71 00 'Level Holding item at day ; Item (Oval Stone) ; Chansey
Type: 1300, Level up holding item at night
Pointer: 0x1C1E370
Example: 13 00 46 01 CD 01 'Level Holding item at night ; Item (Razor Claw) ; Weavile
Type: 1400, Level up with attack
Pointer: 0x1C1D26C
Example: 14 00 CD 00 CF 01 'Level up with Attack ; Attack (Rollout) ; Lickilicky
Type: 1500, Level up with Pokemon in Party
Pointer: 0x1C20E94
Example: 15 00 DF 00 E2 00 'Level up with Pokemon in Party ; Pokemon (Remoraid) ; Mantine
Type: 1600, Level up Male
Pointer: 0x1C206B2
Example: 16 00 14 00 9E 01 'Level Up male ; Level (20) ; Mothim
Type: 1700, Level Up Female
Pointer: 0x1C206AC
Example: 17 00 14 00 9D 01 'Level Up female ; Level (20) ; Wormadam
Type: 1800, Level Up at Mt. Coronet
Pointer: 0x1C1CDF4
Example: 18 00 00 00 CE 01 'Level at Mt. Coronet ; 0000 ; Magnezone
Type: 1900, Level Up at Eterna Forest
Pointer: 0x1C1D6B8
Example: 19 00 00 00 D6 01 ' Level Up at Eterna Forest ; 0000 ; Leafeon
Type: 1A00, Level Up at Route 217
Pointer: 0x1C1D6BE
Example: 1A 00 00 00 D7 01 'Level Up at Route 217 ; 0000 ; Glaceon
Moveset Editing
With this, I'm going to use Lucario's Moveset to explain. To see Lucario's Moveset go to the pointer 0x1C26B0C.
You should see this.
8F 03 62 02 C1 02 C5 02 E8 02 44 0C 8B 17 6C 1F C6 26 3F 31 7E 3B 0E 42 8C 4B 72 55 96 5F F5 66
That was a long line. Looks like 'gibberish' dosen't it?
I'm going to do something to these first 2 bytes. Look at this.
8F 03
Still not totally clear but maybe a little easier.
I'm going to sepearate this, to make it look "easier".
8F 01 00 02
Let's look at this.
We now have 8F01 and 0002
So what we now have is the attack Dark Pulse and "0x2". This "0x2" is actually the level that it learns the attack. Except there's one problem, Lucario has Dark Pulse at Level 1. The solution is Simple, divide it by two.
Now let's try the last 2 bytes of that line, and see what we get.
F5 00 00 66
F5 00 = Extremspeed ; 0x66 (We have to change it to a decimal value before halving it, so we get 102)
Let's check this on the internet. Go to bulbapedia or serebii and check for Lucario's attack list.
Lucario learns Extremespeed at level 51.
Here's the whole moveset "decoded"
Code:
Lucario
8F03 03=3 Level 1 Dark pulse
6202 02=2 Level 1 Quick Attack
C102 02=2 Level 1 Foresight
C502 02=2 Level 1 Detect
E802 02=2 Level 1 Metal Claw
440C 0C=12 Level 6 Counter
8B17 17=23 Level 11 Force Palm
6C1F 1F=31 Level 15 Feint
C626 26=38 Level 19 Bone Rush
3F31 31=49 Level 24 Metal Sound
7E3B 3B=59 Level 29 Me First
0E42 42=66 Level 33 Swords Dance
8C4B 4B=75 Level 37 Aura Sphere
7255 55=85 Level 42 Close Combat
965F 5F=95 Level 47 Dragon Pulse
F566 66=102 Level 51 ExtremespeedNOTE: The beginning of the moveset data is at 0x1C237DE. This is the ????? Pokemon's attacks.
TM/HM Table
Go to the pointer 0xFC4EC. You should see this.
08 01 51 01 60 01 5B 01 2E 00 5C 00 02 01 53 01 4B 01 ED 00 ...etc.
What's all this mean? It's the attacks contained within each TM/HM. It's ordered down from TM 1 through to HM 8.
But How do we edit this? Let's take the attack table at the bottom of the post and look at the hex again.
We now have:
Focus Punch, Dragon Claw, Water Pulse, Calm Mind, Roar, etc.
All you need to do is edit which attack is in which spot. It's one of the easier things to do.
Sinnoh Pokedex Order
Go to the pointer 0x37B0020. You'll come up with this:
83 01 84 01 85 01 86 01 87 01 88 01 89 01 8A 01 8B 01 8C 01 8D 01 8E 01 8F 01 90 01 91 01 92 01 93 01 94 01 95 01 3F 00 40 00 41 00 81 00 82 00 96 01... etc.
That's enough of, you can look at it yourself, if you want to. We're going to need the list in at the bottom for this. These are the Pokemon. In there order.
Turtwig, Grottle, Torterra, Chimchar, Monferno, Infernape, Piplup, Prinplup, Empoleon, Starly, Staravia, Staraptor, Bidoof, Bibarel, Kricketot, Kricketune, Shinx, Luxio, Luxray, Abra, Kadabra, Alakazam, Magikarp, Gyarados, Budew, etc.
Easily editable. You can have fun with this.
Base Stats
I've going to use Bulbasaur's stats here. These are found at 0x1C15A08.You'll see this.
2D 31 31 2D 41 41 0C 03 2D 40 00 01 00 00 00 00 1D 14 46 03 01 07 41 00 00 03 00 00 20 07 35 84 08 1E 10 02 20 24 66 92 02 00 00 00
Here's just a brief explanation of these.
Code:
2D - HP
31 - Attack
31 - Defense
2D - Speed
41 - Special Attack
41 - Special Defense
0C - Type 1
03 - Type 2
2D - Catch Rate
40 - Base XP
00 - Effort Yield1
01 - Effort Yield2
0000 - Item 1
0000 - Item 2
1D - Gender Chance
14 - Steps for Egg to hatch
46 - Base Happiness?
03 - Experience Type
01 - Egg Type 1
07 - Egg Type 2
41 - Special Ability 1
00 - Special Ability 2
00 - Safari Run Chance
03 - Colour
00 - Padding
00 - Padding
20 - TM Switches 1-8
07 - TM Switches 9-16
35 - TM Switches 17-24
84 - TM Switches 25-32
08 - TM Switches 33-40
1E - TM Switches 41-48
10 - TM Switches 49-56
02 - TM Switches 57-64
20 - TM Switches 65-72
24 - TM Switches 73-80
66 - TM Switches 81-88
92 - TM Switches 89-92 / HM 1-4
02 - HM 5-8
00 - Padding
00 - Padding
00 - PaddingType Weakness/Strength Chart
I guess I'll start with this, the values for the different types.
Code:
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 = DarkNow look at the pointer 0x1DE1B8. You should have this.
00 05 05 00 08 05 0A 0A 05 0A 0B 05 0A 0C 14 ...etc
I'm just going to use the first three bytes. When referring to the above table, what do these first 3 bytes mean?
00 - Normal
05 - Rock
05 - Rock???
The third value isn't Rock type.
The first byte was the type of an attack. The second byte is the type of the Pokemon being attacked, and the third is how much the damage is multiplied by.
So if I were to explain these three bytes, in the English Language it would be this.
When a Normal attack hits a Rock Pokemon, the damage is halved.
So let's use another example. Let's use the Fire attacks Ice.
0A 0F 14
What's 14 mean? 14 in decimal, is 20, which is of course double the damage.
If we wanted to, we could change this to anything from 0 (No damage) to FF (Damage times 26), which would of course be unstoppable against a type.
Trainers
I'll use the first gym leader, as an example here. Go to 0x1C2F854. You'll see this.
3200 0C00 4A00 BE01 5800 0000 0000
3200 0C00 5F00 BE01 5800 6700 0000
3200 0E00 9801 1D00 E400 2B00 0000
What's this mean? Well, here's the layout explained. I'll just use the first row.
3200 - First byte. Don't Touch.
0C00 - The level of the Pokemon
4A00 - The Pokemon
BE01 - Attack 1
5800 - Attack 2
0000 - Attack 3
0000 - Attack 4
So if we were to 'decode' those three lines of hex, we would get this.
Code:
Level;Pokemon Attacks
Level 12 Geodude Stealth Rock; Rock Throw; No Attack; No Attack
Level 12 Onix Stealth Rock; Rock Throw; Screech; No Attack
Level 14 Craniados Headbutt; Pursuit; Leer; No Attack; No AttackLet's also use another battle, just for fun. We'll use the battle with your Rival.
The pointer is at 0x and here's what you see.
< 1E00 > < 0700 > < 8C01 > < 6200 > < 2D00 > < 0000 > < 0000 >
< 1E00 > < 0900 > < 8301 > < 2100 > < 6E00 > < 0000 > < 0000 >
< 1E00 > < 0700 > < 8C01 > < 6200 > < 2D00 > < 0000 > < 0000 >
< 1E00 > < 0900 > < 8601 > < 0A00 > < 2B00 > < 0000 > < 0000 >
< 1E00 > < 0700 > < 8C01 > < 6200 > < 2D00 > < 0000 > < 0000 >
< 1E00 > < 0900 > < 8901 > < 0100 > < 2D00 > < 0000 > < 0000 >
Look, there's three seperate trainerbattles. All the different Rival Pokemon. Might as well 'decode' it.
Code:
Battle 1
Level; Pokemon Attacks
Level 7 Starly Quick Attack; Growl; No Attack; No Attack
Level 9 Turtwig Tackle; Withdraw; No Attack; No Attack
Battle 2
Level 7 Starly Quick Attack; Growl; No Attack; No Attack
Level 9 Chimchar Scratch; Leer; No Attack; No Attack
Battle 3
Level 7 Starly Quick Attack; Growl; No Attack; No Attack
Level 9 Piplup Pound; Growl; No Attack; No AttackAttack Data
I'll explain this similiarly to the way I did the Pokemon Stats. Go to the pointer 0x1D6E95C. You'll see this. This is the data for Fire Punch.
04 00 00 4B 0A 64 0F 0A 00 00 00 13 11 01 00 00
Like the stats, there's more bytes, and I can't solve some of them.
Code:
04 - Effect (Hit + Possible Burn)
00 - ??
00 - ??
4B - Power (75)
0A - Type (Fire)
64 - Accuracy (100)
0F - PP (15)
0A - Chance of Effect (10%)
00 - Target (One Opponent)
00 - Move's Speed (For Quick Attack, and Extremespeed)
00 - ??
13 - Contact
11 - ??
01 - ??
00 - ??
00 - ??Starters
Probably the easiest possible thing to do. Go to 0x2B918A. You'll see this.
83 01 00 00 86 01 00 00 89 01 00 00
Pretty obvious. 83 01 is obviously Turtwig, 86 01 is obviously Chimchar, and 89 01 is of course Piplup. All you need to do is change the two bytes depending on which starter you change.
Well, that's about all that's needed. That's enough for now...
Before I go, here's the list of Attacks.