- 22
- Posts
- 16
- Years
- Seen Nov 1, 2020
Pokemon D/P - Changing EVERY aspect of a Pokemon
aka inserting a fakemon/5th gen pokemon into D/P seemlessly
by Stratocaster
... leave no trace.
Hey I'm Strat, new to posting in this community, but far from new to forums, pokemon, rom hacking, etc. I like this forum though best and I didn't exactly have a home forum so I wanted to post my guide here. This guide encompasses all my research into how to insert a fakemon into D/P without even being able to tell what pokemon was replaced. I think I've succeeded in that goal. Sorry there are no pictures or anything. I didn't link to how to get the software either, but some googling can solve that easily. I hope someone will take what I've learned and run with it... I'd love to see this community collaborate on a fakemon project or even just some new tools made that make what I'm showing is doable and making it more streamlined. Anyway without further to do. The first section is not "spoiler tagged" cause it's important to know about that for the rest of the guide to make sense. Anyway, I hope you enjoy and learn a lot! I put lots of time and effort into making this possible.
Extracting and Reinserting Narcs
I say suggest in this guide to use extract and reinsert narcs. There are two methods for this. The 'reinsert' button on NitroExplorer2b or unpacking the ROM completely in dsbuff. The former is easier for the short-term, but has been found to sometimes not work as expected... the latter is better for long-term projects because all the narcs are already extracted and you just have to replace the narc in the folder. It has also been the more reliable option, typically giving the expected results. Feel free to try both, but that's my opinion. I still often use the Nitro Explorer method for reinserting my sprites and there are merits to both methods which are why they're both listed.
~Sprites~
~Palettes~
~Base Stats, level-up, evolutions, etc.~
~Changing the number of level-up moves:~
~Pokemon Icons~
~Pokemon Icons Palettes~
(thanks to 2and2makes5)
"Programs needed are CrystalTile and a Hex editor; I use Hex Workshop.
First, open the Rom file in CrystalTile, and click the small picture of a DS to bring up the filesystem menu. Extract the arm9.bin file, and open the extracted file with your Hex editor. Each icon only uses one out of three palettes, and so their usage data is stored with the numbers 00, 01, and 02 for the three palettes respectively. The list begins with Bulbasaur's palette at offset 0x000FFC11. You should find the numbers 01 01 01 00 00 00 00 02 02, which is the palettes used in order from Bulbasaur to Blastoise. You can just enter those numbers in Ctrl+F and it should be the only result to come up. There's where you change your palettes. It's annoying, but I just had to count my way to the Pokemon palette I wanted to change. Simply change the number, and save. Then compress the arm9.bin file back into the rom in CrystalTile, and it should work.
Some things I've noticed about the palettes (in case you want to identify what palette an icon would use): the first palette is the only one with an orange color, the second is the only one with green, and the third is the only one with purple."
~Overworld Sprites~
(for HG/SS, thanks to 2and2makes5)
Watch a tutorial at:
youtube (dot) com/watch?v=IanpeTRdp24
~Pokemon Cries~
~4th Gen Cry #'s~
~Pokemon Names~
~Pokedex~
~Pokemon Egg Moves~
~Pokemon Eggmove ID's~
(only those which can hatch from an egg have an ID)
~Pokemon Animations~
~Pokemon Animation offsets~
~Battle Scene Sprite Placement
~Credits~
~Index of status of progress~
~Why did I do this?~
I think this is a pretty legit question considering I have so few posts and
no one knows me or anything.
I got bored and this was a challenge.
It seems to me everyone's been stuck on advanced hacks too long... I wanted to help further research into the 4th gen hacking scene.
I like fakemon and making my own. I'd love to see a collaborate effort to
create a completely fakemon game... where there is a high standard and
competition to get each pokemon into to the game. Also, I started making
advanced sprites one day and was like... wow it'd help so much to just have
a few more sprites to mess with...
:) have fun!!
aka inserting a fakemon/5th gen pokemon into D/P seemlessly
by Stratocaster
... leave no trace.
Hey I'm Strat, new to posting in this community, but far from new to forums, pokemon, rom hacking, etc. I like this forum though best and I didn't exactly have a home forum so I wanted to post my guide here. This guide encompasses all my research into how to insert a fakemon into D/P without even being able to tell what pokemon was replaced. I think I've succeeded in that goal. Sorry there are no pictures or anything. I didn't link to how to get the software either, but some googling can solve that easily. I hope someone will take what I've learned and run with it... I'd love to see this community collaborate on a fakemon project or even just some new tools made that make what I'm showing is doable and making it more streamlined. Anyway without further to do. The first section is not "spoiler tagged" cause it's important to know about that for the rest of the guide to make sense. Anyway, I hope you enjoy and learn a lot! I put lots of time and effort into making this possible.
Extracting and Reinserting Narcs
I say suggest in this guide to use extract and reinsert narcs. There are two methods for this. The 'reinsert' button on NitroExplorer2b or unpacking the ROM completely in dsbuff. The former is easier for the short-term, but has been found to sometimes not work as expected... the latter is better for long-term projects because all the narcs are already extracted and you just have to replace the narc in the folder. It has also been the more reliable option, typically giving the expected results. Feel free to try both, but that's my opinion. I still often use the Nitro Explorer method for reinserting my sprites and there are merits to both methods which are why they're both listed.
~Sprites~
Spoiler:
needed:
dsbuff/NitroExplorer2b
ImageConverter (aka Pokemon DS/Pic)
any image editor (GraphicsGale is free and suggested)
1.Go to poketool/pokegra/pokegra.narc and extract pokegra.narc
2.Open pokegra.narc in ImageConverter. Scroll down through and you should see
images of pokemon starting with with Item6. Go to the one you would like to
change (note each pokemon's forward and back sprite are in there multiple times
due to gender changes and such).
3.Click SavePng.. and edit the image.
4.Click OpenPng.. and then File>Write to narc.. Repeat this a few times to
replace all the images of that pokemon.
5.Reinsert the new pokegra file were the old one was.
dsbuff/NitroExplorer2b
ImageConverter (aka Pokemon DS/Pic)
any image editor (GraphicsGale is free and suggested)
1.Go to poketool/pokegra/pokegra.narc and extract pokegra.narc
2.Open pokegra.narc in ImageConverter. Scroll down through and you should see
images of pokemon starting with with Item6. Go to the one you would like to
change (note each pokemon's forward and back sprite are in there multiple times
due to gender changes and such).
3.Click SavePng.. and edit the image.
4.Click OpenPng.. and then File>Write to narc.. Repeat this a few times to
replace all the images of that pokemon.
5.Reinsert the new pokegra file were the old one was.
~Palettes~
Spoiler:
needed:
dsbuff/NitroExplorer2b
ImageConverter
DPPaletteEditorEng
1.Go to Root/poketool/pokegra/pokegra.narc and extract pokegra.narc
2.Open pokegra.narc in ImageConverter. As you scroll down the items, note how
some have (1930) and some have (48). The (48) is where the palettes are saved.
3.Choose one of these, and click Expert>Save Pal Direct and save it as whatever
helps you identify it. Now go to the file and resave it from .bin to .nds.
4.Open DPPaletteEditorEng and open the new .nds file. Put in "28" where it says
Offset Palette and click Find. 16 colors will come up. These are the 16 colors
of the sprite, the first one being the background which is transparent in-game.
5.Select Tools>Color Picker and select a color. The magnifying glass and dropper
on the right are useful tools for color selecting. If you have made a new image
already, you can find precisely what colors you used by dragging the dropper to
it. Once you know what color you want, type the GBA color code into one of the
palette boxes. Repeat this until you have the palette you want and press "OK".
6.Go back to imageconverter and click Expert>Open Pal Direct where you would
like the new palette. Then go to File>write to narc..
7.Reinsert the new pokegra file were the old one was.
dsbuff/NitroExplorer2b
ImageConverter
DPPaletteEditorEng
1.Go to Root/poketool/pokegra/pokegra.narc and extract pokegra.narc
2.Open pokegra.narc in ImageConverter. As you scroll down the items, note how
some have (1930) and some have (48). The (48) is where the palettes are saved.
3.Choose one of these, and click Expert>Save Pal Direct and save it as whatever
helps you identify it. Now go to the file and resave it from .bin to .nds.
4.Open DPPaletteEditorEng and open the new .nds file. Put in "28" where it says
Offset Palette and click Find. 16 colors will come up. These are the 16 colors
of the sprite, the first one being the background which is transparent in-game.
5.Select Tools>Color Picker and select a color. The magnifying glass and dropper
on the right are useful tools for color selecting. If you have made a new image
already, you can find precisely what colors you used by dragging the dropper to
it. Once you know what color you want, type the GBA color code into one of the
palette boxes. Repeat this until you have the palette you want and press "OK".
6.Go back to imageconverter and click Expert>Open Pal Direct where you would
like the new palette. Then go to File>write to narc..
7.Reinsert the new pokegra file were the old one was.
~Base Stats, level-up, evolutions, etc.~
Spoiler:
needed:
dsbuff/NitroExplorer2b
PDEDS (Pokemon Data Editor DS)
PMEDS (Pokemon Move Editor DS)
EEDP (Evolution Editor DP)
For the most part this is the easiest thing to do. These tools are available
to do all the work. You just have to extract and reinsert the narcs used.
They are personal.narc for PDEDS AND wotbl for PMEDS and can be found under
(poketool/personal)
PDEDS (Pokemon Data Editor DS)
Base Stats
Learnable TMs/HMs
Types
Abilities
Held Items
Exp Data
Gender Ratio
Breeding groups and steps
EV's given
Base Happinness
Color
Catch Rate
Safari Run Chance
PMEDS (Pokemon Move Editor DS)
Level-up moves *see next spoiler for how to add/remove a move slot
EEDP (Evolution Editor DP)
Evolutions
dsbuff/NitroExplorer2b
PDEDS (Pokemon Data Editor DS)
PMEDS (Pokemon Move Editor DS)
EEDP (Evolution Editor DP)
For the most part this is the easiest thing to do. These tools are available
to do all the work. You just have to extract and reinsert the narcs used.
They are personal.narc for PDEDS AND wotbl for PMEDS and can be found under
(poketool/personal)
PDEDS (Pokemon Data Editor DS)
Base Stats
Learnable TMs/HMs
Types
Abilities
Held Items
Exp Data
Gender Ratio
Breeding groups and steps
EV's given
Base Happinness
Color
Catch Rate
Safari Run Chance
PMEDS (Pokemon Move Editor DS)
Level-up moves *see next spoiler for how to add/remove a move slot
EEDP (Evolution Editor DP)
Evolutions
~Changing the number of level-up moves:~
Spoiler:
needed:
Hex Editor (HxD suggested)
PMEDS
*There is however a limitation on PMEDS, there isn't the ability to add or
remove level-up move slots. To do this load wotbl.narc on a hex editor. Now
you're going to search for where the pokemon's data is located.
before moving on, open this guide by thethethethe:
https://www.pokecommunity.com/threads/131283
and see the list of attacks at the bottom of the page
Ok he explains everything for you there, but there's stuff you don't need to
know so I'll summarize what you need. Your goal is simply to find the location
of a pokemon's move data.
The level-up moves are stored in a list like this one (Bulbasaur's):
2102 2D06 490E 1612 4D1A 4F1A 241E 4B26 E62A 4A32 2636 843F EB42 924B FFFF
Every one of those stores a move, except the last byte, which signals the
end of the list of moves. This is always FFFF. At this point, if you wanted,
you coud search for part of this string and find Bulbasaur's data, and then,
search FFFF again and again, counting each time. If you want to edit Arceus
though, that may not be the best idea...
Instead I'll show you how a move is constructed in the hex.
Ok, let's take one apart first.
Take 843F, this is actually 8401 and 003E added together.
8401 is the move, flip the bytes (every 2 characters is a byte)
and you get 0184, this is Worry Seed according to the list.
003E is the level, but doubled. Convert to decimal and half 3E>62>31
So bulbasaur learns Worry Seed at level 31! Great.
Now find Turtwig. I did a little research and he's the only one who learns
leaf storm at lvl 45 (this is easy to find out on serebii)
So according to our list leaf storm's number is 01B5. Reversed: B501
45>90>5A so 005A, B501+005A=B55B, search that to find Turtwig.
Ok, now finally to add a slot. When you've found your pokemon, go to the next
FFFF you find. Insert 2 bytes (easy in HxD, under 'edit') and then just copy
the move before it in again. When you open it back up in PMEDS, it will have
2 of the last move. Insert and remove bytes as necessary to get the right
amount of moves you require. You do have to put some move into the new slot
though or PMEDS will not identify it.
You may also have to take out some filler space below in order for the ROM to work... I'm really not completely sure because so far it seems to work, but sometimes when you insert bytes it messes the game up. I just haven't tested this enough. Make sure you backup your game before inserting bytes for sure. Even though you always should of course
Hex Editor (HxD suggested)
PMEDS
*There is however a limitation on PMEDS, there isn't the ability to add or
remove level-up move slots. To do this load wotbl.narc on a hex editor. Now
you're going to search for where the pokemon's data is located.
before moving on, open this guide by thethethethe:
https://www.pokecommunity.com/threads/131283
and see the list of attacks at the bottom of the page
Ok he explains everything for you there, but there's stuff you don't need to
know so I'll summarize what you need. Your goal is simply to find the location
of a pokemon's move data.
The level-up moves are stored in a list like this one (Bulbasaur's):
2102 2D06 490E 1612 4D1A 4F1A 241E 4B26 E62A 4A32 2636 843F EB42 924B FFFF
Every one of those stores a move, except the last byte, which signals the
end of the list of moves. This is always FFFF. At this point, if you wanted,
you coud search for part of this string and find Bulbasaur's data, and then,
search FFFF again and again, counting each time. If you want to edit Arceus
though, that may not be the best idea...
Instead I'll show you how a move is constructed in the hex.
Ok, let's take one apart first.
Take 843F, this is actually 8401 and 003E added together.
8401 is the move, flip the bytes (every 2 characters is a byte)
and you get 0184, this is Worry Seed according to the list.
003E is the level, but doubled. Convert to decimal and half 3E>62>31
So bulbasaur learns Worry Seed at level 31! Great.
Now find Turtwig. I did a little research and he's the only one who learns
leaf storm at lvl 45 (this is easy to find out on serebii)
So according to our list leaf storm's number is 01B5. Reversed: B501
45>90>5A so 005A, B501+005A=B55B, search that to find Turtwig.
Ok, now finally to add a slot. When you've found your pokemon, go to the next
FFFF you find. Insert 2 bytes (easy in HxD, under 'edit') and then just copy
the move before it in again. When you open it back up in PMEDS, it will have
2 of the last move. Insert and remove bytes as necessary to get the right
amount of moves you require. You do have to put some move into the new slot
though or PMEDS will not identify it.
You may also have to take out some filler space below in order for the ROM to work... I'm really not completely sure because so far it seems to work, but sometimes when you insert bytes it messes the game up. I just haven't tested this enough. Make sure you backup your game before inserting bytes for sure. Even though you always should of course
~Pokemon Icons~
Spoiler:
needed:
NitroExplorer2b/dsbuff
kiwi NDSeditor
CrystalTile2
GraphicsGale (highly suggested)
Extract poke_icon.narc from poketool>icongra. I suggest putting this narc
into a folder with no other narcs before the next step. Open kiwi and go to
Tools>Batch Unpack Narc... In this window select the folder you put the narc
in and where you would like the new folder with the unpacked files to go.
Kiwi will unpack all narcs in the selected folder
(thats why it was suggested there were no other narcs)
Icon Sprites (RGCN files)
007 ? mark symbol
008 Bulbasaur
009-499 national dex # + 7
500 Arceus
501 Egg
502 Manaphy Egg
503 Deoxys Attack
504 Deoxys Defence
505 Deoxys Speed
506-533 Unown A-Z,!,? (some glitchy)
534 ?
535 ?glichty wormadam?
536 Wormadam Sandy Cloak
537 ?
538 Shellos East
539 Gastrodon East
I included the last few icons just fyi, I doubt you'll use them. Mostly
all you need to know is take the national dex # and add 7 to find the one you
want.
Ok so now open up CrystalTile2, and use the 2010.09.06 version, because it
probably won't work right otherwise. Open the RGCN file you want to edit and
it'll come up as a bunch of hex. Take these steps to make it look right:
1. Click the icon with the mountain on it to enter tile mode.
2. Under the properties tab, change the offset to 30
3. Change the tile form to GBA 4bpp
4. The first file in the poke_icon folder you made is poke_icon_000.rlcn,
change the extention to .nclr (yeah thats just backwards) Now under the
palette tab, press import, and in the poke_icon folder select the file you
changed. You had to change it because it only accepts .nclr's.
5. Click View>Fit Window to Tile, and then drag the window and make it smaller
until the image is 4 tiles wide, or until it fits together.
6. Go back to the palette, each row is a seperate palette, choose the one that
looks right. NOTE: if the palette you used to create the new sprite is
different than the old one... well this doesn't work then...
Ok at this point you can edit it directly in CrystalTile2 if you want...
which is hard and sometimes crashes randomly on me OR lets say you use
one of the templates I've provided (remind me if they aren't available),
edit it in graphicsgale and import it. To import an image, go to
Edit>Import Image, select the image and make sure it's placed directly on
top of the previous one. Then double click it to lock it in place and save.
Go back to Kiwi and click Tools>Make Narc file. Choose the poke_icon
folder that was edited to make a new poke_icon.narc and insert that
into your ROM.
***Ok so only one thing left: changing which of the 3 palettes shows up in-game.
Right now... I'm still looking into that. If you find anything on the subject,
let me know.
NitroExplorer2b/dsbuff
kiwi NDSeditor
CrystalTile2
GraphicsGale (highly suggested)
Extract poke_icon.narc from poketool>icongra. I suggest putting this narc
into a folder with no other narcs before the next step. Open kiwi and go to
Tools>Batch Unpack Narc... In this window select the folder you put the narc
in and where you would like the new folder with the unpacked files to go.
Kiwi will unpack all narcs in the selected folder
(thats why it was suggested there were no other narcs)
Icon Sprites (RGCN files)
007 ? mark symbol
008 Bulbasaur
009-499 national dex # + 7
500 Arceus
501 Egg
502 Manaphy Egg
503 Deoxys Attack
504 Deoxys Defence
505 Deoxys Speed
506-533 Unown A-Z,!,? (some glitchy)
534 ?
535 ?glichty wormadam?
536 Wormadam Sandy Cloak
537 ?
538 Shellos East
539 Gastrodon East
I included the last few icons just fyi, I doubt you'll use them. Mostly
all you need to know is take the national dex # and add 7 to find the one you
want.
Ok so now open up CrystalTile2, and use the 2010.09.06 version, because it
probably won't work right otherwise. Open the RGCN file you want to edit and
it'll come up as a bunch of hex. Take these steps to make it look right:
1. Click the icon with the mountain on it to enter tile mode.
2. Under the properties tab, change the offset to 30
3. Change the tile form to GBA 4bpp
4. The first file in the poke_icon folder you made is poke_icon_000.rlcn,
change the extention to .nclr (yeah thats just backwards) Now under the
palette tab, press import, and in the poke_icon folder select the file you
changed. You had to change it because it only accepts .nclr's.
5. Click View>Fit Window to Tile, and then drag the window and make it smaller
until the image is 4 tiles wide, or until it fits together.
6. Go back to the palette, each row is a seperate palette, choose the one that
looks right. NOTE: if the palette you used to create the new sprite is
different than the old one... well this doesn't work then...
Ok at this point you can edit it directly in CrystalTile2 if you want...
which is hard and sometimes crashes randomly on me OR lets say you use
one of the templates I've provided (remind me if they aren't available),
edit it in graphicsgale and import it. To import an image, go to
Edit>Import Image, select the image and make sure it's placed directly on
top of the previous one. Then double click it to lock it in place and save.
Go back to Kiwi and click Tools>Make Narc file. Choose the poke_icon
folder that was edited to make a new poke_icon.narc and insert that
into your ROM.
***Ok so only one thing left: changing which of the 3 palettes shows up in-game.
Right now... I'm still looking into that. If you find anything on the subject,
let me know.
~Pokemon Icons Palettes~
(thanks to 2and2makes5)
Spoiler:
"Programs needed are CrystalTile and a Hex editor; I use Hex Workshop.
First, open the Rom file in CrystalTile, and click the small picture of a DS to bring up the filesystem menu. Extract the arm9.bin file, and open the extracted file with your Hex editor. Each icon only uses one out of three palettes, and so their usage data is stored with the numbers 00, 01, and 02 for the three palettes respectively. The list begins with Bulbasaur's palette at offset 0x000FFC11. You should find the numbers 01 01 01 00 00 00 00 02 02, which is the palettes used in order from Bulbasaur to Blastoise. You can just enter those numbers in Ctrl+F and it should be the only result to come up. There's where you change your palettes. It's annoying, but I just had to count my way to the Pokemon palette I wanted to change. Simply change the number, and save. Then compress the arm9.bin file back into the rom in CrystalTile, and it should work.
Some things I've noticed about the palettes (in case you want to identify what palette an icon would use): the first palette is the only one with an orange color, the second is the only one with green, and the third is the only one with purple."
~Overworld Sprites~
(for HG/SS, thanks to 2and2makes5)
Spoiler:
Watch a tutorial at:
youtube (dot) com/watch?v=IanpeTRdp24
~Pokemon Cries~
Spoiler:
needed
dsbuff/nitroexplorer2b
kiwi ndseditor
Audacity
wav2swav
swav2swar
Hex Editor (HxD highly recommended, the guide uses that one)
Extract data>sound>sound_data.sdat.
Extract the data from sound_data.sdat. To do this, open it up in kiwi, and
double click it to open it up in a seperate window. At the top click the
check all button, and also the button to the left of it, the extract button
that looks like a notepad.
Go to the sound_data>Wave Archive folder.The files named WAVE_ARC_PV***.swar.
Now you need to identify the number you want to replace. Everyone up to Deoxys
is listed by thier national dex #, all the 4th gen pokemon are not in order
and can be looked up in the chart provided.
Once you know what to replace, you're going to need to need something to replace
it with. You have two options:
1. Pick a swar file from another pokemon to replace the one you want replaced.
2. Create a new swar from scratch...
So to do #2 you're going to need a few things. First you need to make a wav
file that is a fitting pokemon cry. One way you can do that is use this site:
https://www.bfxr.net/
or this one:
https://www.superflashbros.net/as3sfxr/
Just click randomize until you get something similar to what you're looking
for, then move the sliders around. It's something you can mess with. Turn the
volume to max, and then export as a wav.
Another option is to download "Sound Effects Generator" this is a really powerful
tool based on my experience with the demo. You can really produce that sound in
your head... it's also $20 so only download it if you're serious about making a
game or something. There are other ways to make these effects, but those are some
simple ones...
Ok, now open up Audacity, highlight any extra material at the end that is
practically silent, and edit>cut. Then, even if you outputed it at max volume,
you still may want to use the effects>amplify and amplify it as much as you
it will let you without checking the "allow clipping" box. I suggest at least
amplifying it a little as you'll probably be surprised at how quiet the sound
can come out in-game. Also amplifying doesn't make the file bigger which is
important.
Now you need to use wav2swav and swav2swar. If you put these in the same folder,
and open swav2swar, then wav2swav will also open up in it. Otherwise, just drag,
the wav onto the wav2swav application and it'll generate your swav. In swav2swar,
press add and create to make your swar. This is a pretty simple process, so I'm
not going to go into further detail.
Finally, you have a new swar file... now inserting it back into the ROM is a
whole different story. Kiwi has a method to create sdat files... but it doesn't
really work correctly from my testing. So you're going to have to hex it in,
which is easier than it sounds, really. Here it goes:
Open HxD and you need to open 3 files: the file your going to hex edit (this is
either the rom directly, or sound_data.sdat), the swar of the pokemon to replace,
and your new swar. Go to the bottom of both of your swar files, and make sure
that the new one is smaller than the original. If it's not quite smaller, there's
still hope... more on that later. Select all (learn the 'ctrl' shortcuts) of the
swar to replace, copy it, and using the search tool, search for the whole piece
of data in the rom/sdat. Now if the new data is smaller, go to edit>fill
selection and if you press ok, it should fill it with all 00's. Now USING THE
UP ARROW, scroll up to the top of the red 00's.(Yes this takes a little time,
but afaik there's no other way, and if you as much as touch the scroll bar,
you'll lose your spot forever, and you'll have to undo and start over) Once
you're there, Select all, of the new file, copy it, and, clicking at the very
beginning of the red 00's, use edit>paste write. And that does it!
If your new file is a little too big...
Instead of selecting all of it, go to the end of the old file, and take note
of what the last line's offset (numbers and letters to the lefthand side) is.
Use search>go to and highlight backwards starting from the rightmost of that
line. THen when you go to paste it in, there is no 00 filling required, because
it should fit in exactly. So after you find it, just paste it in. It'll sound
cut off though if too much was left out, so use sparingly.
dsbuff/nitroexplorer2b
kiwi ndseditor
Audacity
wav2swav
swav2swar
Hex Editor (HxD highly recommended, the guide uses that one)
Extract data>sound>sound_data.sdat.
Extract the data from sound_data.sdat. To do this, open it up in kiwi, and
double click it to open it up in a seperate window. At the top click the
check all button, and also the button to the left of it, the extract button
that looks like a notepad.
Go to the sound_data>Wave Archive folder.The files named WAVE_ARC_PV***.swar.
Now you need to identify the number you want to replace. Everyone up to Deoxys
is listed by thier national dex #, all the 4th gen pokemon are not in order
and can be looked up in the chart provided.
Once you know what to replace, you're going to need to need something to replace
it with. You have two options:
1. Pick a swar file from another pokemon to replace the one you want replaced.
2. Create a new swar from scratch...
So to do #2 you're going to need a few things. First you need to make a wav
file that is a fitting pokemon cry. One way you can do that is use this site:
https://www.bfxr.net/
or this one:
https://www.superflashbros.net/as3sfxr/
Just click randomize until you get something similar to what you're looking
for, then move the sliders around. It's something you can mess with. Turn the
volume to max, and then export as a wav.
Another option is to download "Sound Effects Generator" this is a really powerful
tool based on my experience with the demo. You can really produce that sound in
your head... it's also $20 so only download it if you're serious about making a
game or something. There are other ways to make these effects, but those are some
simple ones...
Ok, now open up Audacity, highlight any extra material at the end that is
practically silent, and edit>cut. Then, even if you outputed it at max volume,
you still may want to use the effects>amplify and amplify it as much as you
it will let you without checking the "allow clipping" box. I suggest at least
amplifying it a little as you'll probably be surprised at how quiet the sound
can come out in-game. Also amplifying doesn't make the file bigger which is
important.
Now you need to use wav2swav and swav2swar. If you put these in the same folder,
and open swav2swar, then wav2swav will also open up in it. Otherwise, just drag,
the wav onto the wav2swav application and it'll generate your swav. In swav2swar,
press add and create to make your swar. This is a pretty simple process, so I'm
not going to go into further detail.
Finally, you have a new swar file... now inserting it back into the ROM is a
whole different story. Kiwi has a method to create sdat files... but it doesn't
really work correctly from my testing. So you're going to have to hex it in,
which is easier than it sounds, really. Here it goes:
Open HxD and you need to open 3 files: the file your going to hex edit (this is
either the rom directly, or sound_data.sdat), the swar of the pokemon to replace,
and your new swar. Go to the bottom of both of your swar files, and make sure
that the new one is smaller than the original. If it's not quite smaller, there's
still hope... more on that later. Select all (learn the 'ctrl' shortcuts) of the
swar to replace, copy it, and using the search tool, search for the whole piece
of data in the rom/sdat. Now if the new data is smaller, go to edit>fill
selection and if you press ok, it should fill it with all 00's. Now USING THE
UP ARROW, scroll up to the top of the red 00's.(Yes this takes a little time,
but afaik there's no other way, and if you as much as touch the scroll bar,
you'll lose your spot forever, and you'll have to undo and start over) Once
you're there, Select all, of the new file, copy it, and, clicking at the very
beginning of the red 00's, use edit>paste write. And that does it!
If your new file is a little too big...
Instead of selecting all of it, go to the end of the old file, and take note
of what the last line's offset (numbers and letters to the lefthand side) is.
Use search>go to and highlight backwards starting from the rightmost of that
line. THen when you go to paste it in, there is no 00 filling required, because
it should fit in exactly. So after you find it, just paste it in. It'll sound
cut off though if too much was left out, so use sparingly.
~4th Gen Cry #'s~
Spoiler:
Code:
1-386 bulbasaur to deoxys by national dex #
432 Turtwig
433 Grotle
434 Torterra
430 Chimcharr
435 Monferno
436 Infernape
431 Piplup
437 Prinplup
438 Infernape
429 Starly
448 Staravia
449 Staraptor
461 Bidoof
462 Bibarel
480 Kricketot
481 Kricketune
472 Shinx
473 Luxio
474 Luxray
428 Budew
421 Roserade
489 Cranidos
490 Rampardos
487 Shieldon
488 Bastiodon
455 Burmy
457 Wormadam
456 Mothim
470 Combee
471 Vespiquen
477 Pachirisu
418 Buizel
440 Floatzel
482 Cherubi
483 Cherrim
458 Shellos
459 Gastrodon
496 Ambipom
450 Drifloon
451 Drifblim
420 Buneary
454 Lopunny
500 Mismagius
494 Honchkrow
426 Glameow
463 Purugly
445 Chingling
468 Stunky
469 Skuntank
478 Bronzor
479 Bronzong
413 Bonsly
414 Mime Jr.
444 Happiny
419 Chatot
460 Spritomb
491 Gible
492 Gabite
493 Gachomp
412 Munchlax
439 Riolu
416 Lucario
464 Hippopotas
465 Hippowdon
485 Skorupi
486 Drapion
452 Croagunk
453 Toxicroak
484 Carnivine
466 Finneon
467 Lumineon
417 Mantyke
475 Snover
476 Abomasnow
415 Weavile
443 Magnezone
501 Lickilicky
446 Rhyperior
422 Tangrowth
427 Electivire
502 Magmortar
495 Togekiss
499 Yanmega
505 Leafeon
506 Glaceon
447 Gliscor
424 Mamoswine
504 Porygon-Z
498 Gallade
497 Probopass
423 Dusknoir
425 Froslass
519 Rotom
511 Uxie
512 Mesprit
513 Azelf
514 Dialga
515 Palkia
508 Heatran
510 Regigigas
509 Giratina
507 Cresselia
441 Phione
442 Manaphy
517 Darkrai
516 Shaymin
518 Arceus
~Pokemon Names~
Spoiler:
needed:
thenewpoketext
xml editer (Notepad++ suggested)
Dsbuff/Nitroexplorer2b isn't listed? What? Ok they can be used to put the ROM
together, but thenewpoketext actually puts the ROM back together for you so
not much point. The narc edited is msg.narc in the msgdata folder, in case you
want to do all your text editing seperate from your main file, you could then
move the msg.narc from the "tmp" folder made to the folder of your ROM. That may
make more sense later.
Make sure you're thenewpoketext has 'ndseditor' in it or it won't work. My
suggestion is find a download of thenewpoketext that already has it in it. Put
the rom file you want to edit in the same folder as thenewpoketext.
Opening thenewpoketext, it'll ask for the "Romname:", put in the full title
(including .nds) of your ROM and it'll extract it making a "tmp" or temporary
folder.
These next commands are important. Type these into thenewpoketext window.
You can change where it says name/name_edited/newromname to your desired names.
getall name.xml (this dumps the game's text)
OR make 2 dumps of just where the names are located like this:
get 362 name1.xml
get 363 name2.xml
[this is when you edit your text, more on that later]
patch name_edited.xml (patches the msg.narc based on your edits)
do this multiple times if you seperated your dumps
mkrom newromname.nds
thats it!
As for actually editing the xml, it's pretty simple:
Copy the original dump and rename it.
Open in xml editor (Notepad++)
search for the name of the pokemon you want to change. You should find it
at least two times. If you find it in any sentences, you can ignore it, because
that's a pokedex entry. After you've found it, type in the name you want, then
search for the word "false" and set to search "up"
Here you'll find something like this:
<file id="362" change="false">
change "false" to "true" or it won't patch that file.
If you seperated it into two files, the "false" will be at the top the of the
page and you only search for the name and replace it once a piece.
You have to go through at least the first 2 commands to get to the patch,
even if you've already dumped the files before. So if want to edit again,
just put in the same data you did before and it won't make a big difference.
It just has to go through those steps...
thenewpoketext
xml editer (Notepad++ suggested)
Dsbuff/Nitroexplorer2b isn't listed? What? Ok they can be used to put the ROM
together, but thenewpoketext actually puts the ROM back together for you so
not much point. The narc edited is msg.narc in the msgdata folder, in case you
want to do all your text editing seperate from your main file, you could then
move the msg.narc from the "tmp" folder made to the folder of your ROM. That may
make more sense later.
Make sure you're thenewpoketext has 'ndseditor' in it or it won't work. My
suggestion is find a download of thenewpoketext that already has it in it. Put
the rom file you want to edit in the same folder as thenewpoketext.
Opening thenewpoketext, it'll ask for the "Romname:", put in the full title
(including .nds) of your ROM and it'll extract it making a "tmp" or temporary
folder.
These next commands are important. Type these into thenewpoketext window.
You can change where it says name/name_edited/newromname to your desired names.
getall name.xml (this dumps the game's text)
OR make 2 dumps of just where the names are located like this:
get 362 name1.xml
get 363 name2.xml
[this is when you edit your text, more on that later]
patch name_edited.xml (patches the msg.narc based on your edits)
do this multiple times if you seperated your dumps
mkrom newromname.nds
thats it!
As for actually editing the xml, it's pretty simple:
Copy the original dump and rename it.
Open in xml editor (Notepad++)
search for the name of the pokemon you want to change. You should find it
at least two times. If you find it in any sentences, you can ignore it, because
that's a pokedex entry. After you've found it, type in the name you want, then
search for the word "false" and set to search "up"
Here you'll find something like this:
<file id="362" change="false">
change "false" to "true" or it won't patch that file.
If you seperated it into two files, the "false" will be at the top the of the
page and you only search for the name and replace it once a piece.
You have to go through at least the first 2 commands to get to the patch,
even if you've already dumped the files before. So if want to edit again,
just put in the same data you did before and it won't make a big difference.
It just has to go through those steps...
~Pokedex~
Spoiler:
needed:
thenewpoketext
xml editor
*hex editor
Read the "Pokemon Names" section for how to use thenewpoketext.
Provided is the file id numbers to help you find various pokedex data:
615 Pokedex entry
619 Weight (not in-game weight)
620 Height
621 Classification (_________ Pokemon)
Make sure to put in \n every 35 characters or less to make a new line
Change what comes after the "\x01E2\x01E2" for weight and height
Just search:
file id="***" and insert the id # for the stars.
Typically searching thier national dex # will get you to them after that.
*This page shows how to change a lot of the really random pokedex features
including size comparisons and such. Notably it stores the weight value,
I have yet to determine if this is the same weight value used when calculating
the power of grassknot, lowkick, etc.
https://projectpokemon.org/forums/s...ight-Weight-Camparisons-amp-Results-of-Search
thenewpoketext
xml editor
*hex editor
Read the "Pokemon Names" section for how to use thenewpoketext.
Provided is the file id numbers to help you find various pokedex data:
615 Pokedex entry
619 Weight (not in-game weight)
620 Height
621 Classification (_________ Pokemon)
Make sure to put in \n every 35 characters or less to make a new line
Change what comes after the "\x01E2\x01E2" for weight and height
Just search:
file id="***" and insert the id # for the stars.
Typically searching thier national dex # will get you to them after that.
*This page shows how to change a lot of the really random pokedex features
including size comparisons and such. Notably it stores the weight value,
I have yet to determine if this is the same weight value used when calculating
the power of grassknot, lowkick, etc.
https://projectpokemon.org/forums/s...ight-Weight-Camparisons-amp-Results-of-Search
~Pokemon Egg Moves~
Spoiler:
needed:
Hex Editor (practically any one will do)
dsbuff (optional) nitroexplorer2b is useless for this
If you want to edit it directly in the ROM, the data starts at offset 00165A60
If you want to edit it seperate from the ROM, and pack the ROM afterwards, go
to the overlay folder. The egg move data is in overlay_0005.bin starting at
offset 00020660
Once you're at the offset, look for "21 4E". This is bulbasaur's number. Follow
the code down about 2 lines and you should find "24 4E". Notice how it skipped
2 and went right to charmander, since ivysaur and venusaur can't hatch from an
egg directly, this makes sense. Also take note that the bytes are switched. As
in "21 4E" is actually "4E 21", and you have to count up from there, which
explains why charmander is "24 4E" instead of "21 51" ... if you get what I
mean (look up how to count up in hexadecimal if you don't know"
Anyway.
That's important because all of the bytes are inverted like that. After
bulbasaur's identifyer "21 4E" it says "71 00", inverted thats "00 71"
looking back at thethethethe's list of attacks:
https://www.pokecommunity.com/threads/131283
we find that's light screen. Now follow the rest of it as this example
shows.
example:
Bulbasaur eggmoves: 71008200DB00CC00500059014001AE0013010B018500B501
light screen 071
skull bash 082
safeguard 0DB
charm 0CC
petal dance 050
magical leaf 159
grasswhistle 140
curse 0AE
ingrain 113
nature power 10B
amnesia 085
leaf storm 1B5
After the identifyer (214E) you should find that string of hex
Easy right? So to give Bulbasaur the eggmove... let's see how about...
OVERHEAT
looking it up, overheat is 13B > 013B > 3B01
So to replace lets say skull bash with overheat, the new string would be:
71003B01DB00CC00500059014001AE0013010B018500B501
and that's all there is to replacing an eggmove.
So all that's left is finding the pokemon you want to edit. To do that,
first go to the beginning offset given earlier, then use the search tool
from there to find the pokemon's identifyer, which the string of eggmoves
immediately follows of course. The list of identifyers is given. Also, one
last tip. The moves are listed in the same order as they are on serebii.
Hex Editor (practically any one will do)
dsbuff (optional) nitroexplorer2b is useless for this
If you want to edit it directly in the ROM, the data starts at offset 00165A60
If you want to edit it seperate from the ROM, and pack the ROM afterwards, go
to the overlay folder. The egg move data is in overlay_0005.bin starting at
offset 00020660
Once you're at the offset, look for "21 4E". This is bulbasaur's number. Follow
the code down about 2 lines and you should find "24 4E". Notice how it skipped
2 and went right to charmander, since ivysaur and venusaur can't hatch from an
egg directly, this makes sense. Also take note that the bytes are switched. As
in "21 4E" is actually "4E 21", and you have to count up from there, which
explains why charmander is "24 4E" instead of "21 51" ... if you get what I
mean (look up how to count up in hexadecimal if you don't know"
Anyway.
That's important because all of the bytes are inverted like that. After
bulbasaur's identifyer "21 4E" it says "71 00", inverted thats "00 71"
looking back at thethethethe's list of attacks:
https://www.pokecommunity.com/threads/131283
we find that's light screen. Now follow the rest of it as this example
shows.
example:
Bulbasaur eggmoves: 71008200DB00CC00500059014001AE0013010B018500B501
light screen 071
skull bash 082
safeguard 0DB
charm 0CC
petal dance 050
magical leaf 159
grasswhistle 140
curse 0AE
ingrain 113
nature power 10B
amnesia 085
leaf storm 1B5
After the identifyer (214E) you should find that string of hex
Easy right? So to give Bulbasaur the eggmove... let's see how about...
OVERHEAT
looking it up, overheat is 13B > 013B > 3B01
So to replace lets say skull bash with overheat, the new string would be:
71003B01DB00CC00500059014001AE0013010B018500B501
and that's all there is to replacing an eggmove.
So all that's left is finding the pokemon you want to edit. To do that,
first go to the beginning offset given earlier, then use the search tool
from there to find the pokemon's identifyer, which the string of eggmoves
immediately follows of course. The list of identifyers is given. Also, one
last tip. The moves are listed in the same order as they are on serebii.
~Pokemon Eggmove ID's~
(only those which can hatch from an egg have an ID)
Spoiler:
PKMN EGGMOVE IDs
offsets on overlay_0005.bin
00020660-00021550
offsets on ROM
00165A60-0016****
offsets on overlay_0005.bin
00020660-00021550
offsets on ROM
00165A60-0016****
Code:
214E BULBASAUR
244E CHARMANDER
274E SQUIRTLE
304E PIDGEY
334E RATTATA
354E SPEAROW
374E EKANS
3B4E SANDSHREW
3D4E NIDORAN (F)
404E NIDORAN (M)
454E VULPIX
494E ZUBAT
4B4E ODDISH
4E4E PARAS
504E VENONAT
524E DIGLETT
544E MEOWTH
564E PSYDUCK
584E MANKEY
5A4E GROWLITHE
5C4E POLIWAG
5F4E ABRA
624E MACHOP
654E BELLSPROUT
684E TENTACOOL
6A4E GEODUDE
6D4E PONYTA
6F4E SLOWPOKE
734E FARFETCH'D
744E DODUO
764E SEEL
784E GRIMER
7A4E SHELLDER
7C4E GASTLY
7F4E ONIX
804E DROWZEE
824E KRABBY
864E EXEGGCUTE
884E CUBONE
8C4E LICKITUNG
8D4E KOFFING
8F4E RHYHORN
914E CHANSEY
924E TANGELA
934E KANGASKHAN
944E HORSEA
964E GOLDEEN
9A4E MR MIME
9B4E SCYTHER
9F4E PINSIR
A34E LAPRAS
A54E EEVEE
AA4E OMANYTE
AC4E KABUTO
AE4E AERODACTYL
AF4E SNORLAX
B34E DRATINI
B84E CHIKORITA
BB4E CYNDAQUIL
BE4E TOTODILE
C14E SENTRET
C34E HOOTHOOT
C54E LEDYBA
C74E SPINARAK
CA4E CHINCHOU
CC4E PICHU
CD4E CLEFFA
CE4E IGGLYBUFF
CF4E TOGEPI
D14E NATU
D34E MAREEP
D74E MARILL
D94E SUDOWOODO
DB4E HOPPIP
DE4E AIPOM
DF4E SUNKERN
E14E YANMA
E24E WOOPER
E64E MURKROW
E84E MISDREAVUS
EB4E GIRAFARIG
EC4E PINECO
EE4E DUNSPARCE
EF4E GLIGAR
F14E SNUBBULL
F34E QWILFISH
F54E SHUCKLE
F64E HERACROSS
F74E SNEASEL
F84E TEDDIURSA
FA4E SLUGMA
FC4E SWINUB
FE4E CORSOLA
FF4E REMORAID
014F MANTINE
024F DELIBIRD
034F SKARMORY
044F HOUNDOUR
074F PHANPY
0A4F STANTLER
0C4F TYROGUE
0E4F SMOOCHUM
0F4F ELEKID
104F MAGBY
114F MILTANK
164F LARVITAR
1C4F TREECKO
1F4F TORCHIC
224F MUDKIP
254F POOCHYENA
274F ZIGZAGOON
2E4F LOTAD
314F SEEDOT
344F TAILLOW
364F WINGULL
384F RALTS
3B4F SURSKIT
3D4F SHROOMISH
3F4F SLAKOTH
424F NINCADA
454F WHISMUR
484F MAKUHITA
4A4F AZURILL
4B4F NOSEPASS
4C4F SKITTY
4E4F SABLEYE
4F4F MAWILE
504F ARON
534F MEDITITE
554F ELECTRIKE
574F PLUSLE
584F MINUN
594F VOLBEAT
5A4F ILLUMISE
5B4F ROSELIA
5C4F GULPIN
5E4F CARVANHA
604F WAILMER
624F NUMEL
644F TORKOAL
654F SPOINK
674F SPINDA
684F TRAPINCH
6B4F CACNEA
6D4F SWABLU
6F4F ZANGOOSE
704F SEVIPER
734F BARBOACH
754F CORPHISH
794F LILEEP
7B4F ANORITH
7D4F FEEBAS
7F4F CASTFORM
804F KECLEON
814F SHUPPET
834F DUSKULL
854F TROPIUS
864F CHIMECHO
874F ABSOL
894F SNORUNT
8B4F SPHEAL
8E4F CLAMPERL
914F RELICANTH
924F LUVDISC
934F BAGON
A34F TURTWIG
A64F CHIMCHAR
A94F PIPLUP
AC4F STARLY
AF4F BIDOOF
B34F SHINX
B64F BUDEW
B84F CRANIDOS
BA4F SHIELDON
C14F PACHIRISU
C24F BUIZEL
C44F CHERUBI
C64F SHELLOS
C94F DRIFLOON
CB4F BUNEARY
CF4F GLAMEOW
D14F CHINGLING
D24F STUNKY
D64F BONSLY
D74F MIME JR
D84F HAPPINY
D94F CHATOT
DA4F SPIRITOMB
DB4F GIBLE
DE4F MUNCHLAX
DF4F RIOLU
E14F HIPPOPOTAS
E34F SKORUPI
E54F CROAGUNK
E74F CARNIVINE
E84F FINNEON
EA4F MANTYKE
EB4F SNOVER
END
~Pokemon Animations~
Spoiler:
needed:
nitroexplorer2b/dsbuff
Hex Editor (HxD recommended)
This is actually surprisingly easy.
That is to switch pokemon's animations with eachother, making one from scratch
seems... possible, but not worth the effort really. There are 493 animations
to choose from, so I figure one of them probably already does anything you
could possibly want. Let's talk about how the animations are stored and how
they work.
There is the poke_anm.narc, which is in the pokeanime folder, and then there
is the pokeanm.narc, which is in the poketool>pokeanm folder. The former, the
poke_anm.narc, holds all the data for each of the singular movements, and the
latter, pokeanm.narc, holds the data for how each pokemon combines these moves
into a full animation. Messing with poke_anm.narc would create kinds of wide-
spread changes that you don't want. All you need to mess with is the
pokeanm.narc. Remember the difference between these two. Please don't confuse
them.
Ok so extract the pokeanm.narc file and open it up in a hex editor.
The important stuff starts at offset 58. From there to the end of the narc
every pokemon's animation is stored in exactly 28 bytes (sets of 2 characters)
This makes it really easy to switch them out, because unlike their cries, the
animation data is the same size for every pokemon. There is just more buffer
on the end for the smaller files (buffer is filler and looks like "FF 00").
So to switch one animation from one pokemon to another, just copy the 28 bytes
from the one over the other's 28 bytes. This means using 'Paste write' and not
'Paste insert' in HxD. The only issue now is finding the pokemon you want to
change and the one you want changed.
Ok so as stated earlier the beginning offset is 58 and each one is 28 bytes
from the last one. So the 58 offset is in hex and 28 a decimal number. Convert
the offset to decimal to get 88. Then multiply 28 by the pokemon's national
dex # - 1.
That formula is like this:
88+(28*(nd#-1))= convert this number to hex for offset
That offset is the beginning of the pokemon's 28 bytes, also, just fyi, you
have a calculator on your windows computer that can work in and convert hex.
Just go to view > Programmer.
Or you could just use the list I made... ya that too
nitroexplorer2b/dsbuff
Hex Editor (HxD recommended)
This is actually surprisingly easy.
That is to switch pokemon's animations with eachother, making one from scratch
seems... possible, but not worth the effort really. There are 493 animations
to choose from, so I figure one of them probably already does anything you
could possibly want. Let's talk about how the animations are stored and how
they work.
There is the poke_anm.narc, which is in the pokeanime folder, and then there
is the pokeanm.narc, which is in the poketool>pokeanm folder. The former, the
poke_anm.narc, holds all the data for each of the singular movements, and the
latter, pokeanm.narc, holds the data for how each pokemon combines these moves
into a full animation. Messing with poke_anm.narc would create kinds of wide-
spread changes that you don't want. All you need to mess with is the
pokeanm.narc. Remember the difference between these two. Please don't confuse
them.
Ok so extract the pokeanm.narc file and open it up in a hex editor.
The important stuff starts at offset 58. From there to the end of the narc
every pokemon's animation is stored in exactly 28 bytes (sets of 2 characters)
This makes it really easy to switch them out, because unlike their cries, the
animation data is the same size for every pokemon. There is just more buffer
on the end for the smaller files (buffer is filler and looks like "FF 00").
So to switch one animation from one pokemon to another, just copy the 28 bytes
from the one over the other's 28 bytes. This means using 'Paste write' and not
'Paste insert' in HxD. The only issue now is finding the pokemon you want to
change and the one you want changed.
Ok so as stated earlier the beginning offset is 58 and each one is 28 bytes
from the last one. So the 58 offset is in hex and 28 a decimal number. Convert
the offset to decimal to get 88. Then multiply 28 by the pokemon's national
dex # - 1.
That formula is like this:
88+(28*(nd#-1))= convert this number to hex for offset
That offset is the beginning of the pokemon's 28 bytes, also, just fyi, you
have a calculator on your windows computer that can work in and convert hex.
Just go to view > Programmer.
Or you could just use the list I made... ya that too
~Pokemon Animation offsets~
Spoiler:
Code:
OFFSET DEX# NAME
0058 001.BULBASAUR
0074 002.IVYSAUR
0090 003.VENUSAUR
00AC 004.CHARMANDER
00C8 005.CHARMELEON
00E4 006.CHARIZARD
0100 007.SQUIRTLE
011C 008.WARTORTLE
0138 009.BLASTOISE
0154 010.CATERPIE
0170 011.METAPOD
018C 012.BUTTERFREE
01A8 013.WEEDLE
01C4 014.KAKUNA
01E0 015.BEEDRILL
01FC 016.PIDGEY
0218 017.PIDGEOTTO
0234 018.PIDGEOT
0250 019.RATTATA
026C 020.RATICATE
0288 021.SPEAROW
02A4 022.FEAROW
02C0 023.EKANS
02DC 024.ARBOK
02F8 025.PIKACHU
0314 026.RAICHU
0330 027.SANDSHREW
034C 028.SANDSLASH
0368 029.NIDORAN (F)
0384 030.NIDORINA
03A0 031.NIDOQUEEN
03BC 032.NIDORAN
03D8 033.NIDORINO
03F4 034.NIDOKING
0410 035.CLEFAIRY
042C 036.CLEFABLE
0448 037.VULPIX
0464 038.NINETALES
0480 039.JIGGLYPUFF
049C 040.WIGGLYTUFF
04B8 041.ZUBAT
04D4 042.GOLBAT
04F0 043.ODDISH
050C 044.GLOOM
0528 045.VILEPLUME
0544 046.PARAS
0560 047.PARASECT
057C 048.VENONAT
0598 049.VENOMOTH
05B4 050.DIGLETT
05D0 051.DUGTRIO
05EC 052.MEOWTH
0608 053.PERSIAN
0624 054.PSYDUCK
0640 055.GOLDUCK
065C 056.MANKEY
0678 057.PRIMEAPE
0694 058.GROWLITHE
06B0 059.ARCANINE
06CC 060.POLIWAG
06E8 061.POLIWHIRL
0704 062.POLIWRATH
0720 063.ABRA
073C 064.KADABRA
0758 065.ALAKAZAM
0774 066.MACHOP
0790 067.MACHOKE
07AC 068.MACHAMP
07C8 069.BELLSPROUT
07E4 070.WEEPINBELL
0800 071.VICTREEBEL
081C 072.TENTACOOL
0838 073.TENTACRUEL
0854 074.GEODUDE
0870 075.GRAVELER
088C 076.GOLEM
08A8 077.PONYTA
08C4 078.RAPIDASH
08E0 079.SLOWPOKE
08FC 080.SLOWBRO
0918 081.MAGNEMITE
0934 082.MAGNETON
0950 083.FARFETCH'D
096C 084.DODUO
0988 085.DODRIO
09A4 086.SEEL
09C0 087.DEWGONG
09DC 088.GRIMER
09F8 089.MUK
0A14 090.SHELLDER
0A30 091.CLOYSTER
0A4C 092.GASTLY
0A68 093.HAUNTER
0A84 094.GENGAR
0AA0 095.ONIX
0ABC 096.DROWZEE
0AD8 097.HYPNO
0AF4 098.KRABBY
0B10 099.KINGLER
0B2C 100.VOLTORB
0B48 101.ELECTRODE
0B64 102.EXEGGCUTE
0B80 103.EXEGGUTOR
0B9C 104.CUBONE
0BB8 105.MAROWAK
0BD4 106.HITMONLEE
0BF0 107.HITMONCHAN
0C0C 108.LICKITUNG
0C28 109.KOFFING
0C44 110.WEEZING
0C60 111.RHYHORN
0C7C 112.RHYDON
0C98 113.CHANSEY
0CB4 114.TANGELA
0CD0 115.KANGASKHAN
0CEC 116.HORSEA
0D08 117.SEADRA
0D24 118.GOLDEEN
0D40 119.SEAKING
0D5C 120.STARYU
0D78 121.STARMIE
0D94 122.MR MIME
0DB0 123.SCYTHER
0DCC 124.JYNX
0DE8 125.ELECTABUZZ
0E04 126.MAGMAR
0E20 127.PINSIR
0E3C 128.TAUROS
0E58 129.MAGIKARP
0E74 130.GYARADOS
0E90 131.LAPRAS
0EAC 132.DITTO
0EC8 133.EEVEE
0EE4 134.VAPOREON
0F00 135.JOLTEON
0F1C 136.FLAREON
0F38 137.PORYGON
0F54 138.OMANYTE
0F70 139.OMASTAR
0F8C 140.KABUTO
0FA8 141.KABUTOPS
0FC4 142.AERODACTYLE
0FE0 143.SNORLAX
0FFC 144.ARTICUNO
1018 145.ZAPDOS
1034 146.MOLTRES
1050 147.DRATINI
106C 148.DRAGONAIR
1088 149.DRAGONITE
10A4 150.MEWTWO
10C0 151.MEW
10DC 152.CHIKORITA
10F8 153.BAYLEEF
1114 154.MEGANIUM
1130 155.CYNDAQUIL
114C 156.QUILAVA
1168 157.TYPHLOSION
1184 158.TOTODILE
11A0 159.CROCONAW
11BC 160.FERALIGATR
11D8 161.SENTRET
11F4 162.FURRET
1210 163.HOOTHOOT
122C 164.NOCTOWL
1248 165.LEDYBA
1264 166.LEDIAN
1280 167.SPINARAK
129C 168.ARIADOS
12B8 169.CROBAT
12D4 170.CHINCHOU
12F0 171.LANTURN
130C 172.PICHU
1328 173.CLEFFA
1344 174.IGGLYBUFF
1360 175.TOGEPI
137C 176.TOGETIC
1398 177.NATU
13B4 178.XATU
13D0 179.MAREEP
13EC 180.FLAAFFY
1408 181.AMPHAROS
1424 182.BELLOSSOM
1440 183.MARILL
145C 184.AZUMARILL
1478 185.SUDOWOODO
1494 186.POLITOED
14B0 187.HOPPIP
14CC 188.SKIPLOOM
14E8 189.JUMPLUFF
1504 190.AIPOM
1520 191.SUNKERN
153C 192.SUNFLORA
1558 193.YANMA
1574 194.WOOPER
1590 195.QUAGSIRE
15AC 196.ESPEON
15C8 197.UMBREON
15E4 198.MURKROW
1600 199.SLOWKING
161C 200.MISDREAVUS
1638 201.UNOWN
1654 202.WOBBUFFET
1670 203.GIRAFARIG
168C 204.PINECO
16A8 205.FORRETRESS
16C4 206.DUNSPARCE
16E0 207.GLIGAR
16FC 208.STEELIX
1718 209.SNUBBULL
1734 210.GRANBULL
1750 211.QUILFISH
176C 212.SCIZOR
1788 213.SHUCKLE
17A4 214.HERACROSS
17C0 215.SNEASEL
17DC 216.TEDDIURSA
17F8 217.URSARING
1814 218.SLUGMA
1830 219.MAGCARGO
184C 220.SWINUB
1868 221.PILOSWINE
1884 222.CORSOLA
18A0 223.REMORAID
18BC 224.OCTILLERY
18D8 225.DELIBIRD
18F4 226.MANTINE
1910 227.SKARMORY
192C 228.HOUNDOUR
1948 229.HOUNDOOM
1964 230.KINGDRA
1980 231.PHANPY
199C 232.DONPHAN
19B8 233.PORYGON2
19D4 234.STANTLER
19F0 235.SMEARGLE
1A0C 236.TYROGUE
1A28 237.HITMONTOP
1A44 238.SMOOCHUM
1A60 239.ELEKID
1A7C 240.MAGBY
1A98 241.MILTANK
1AB4 242.BLISSEY
1AD0 243.RAIKOU
1AEC 244.ENTEI
1B08 245.SUICUNE
1B24 246.LARVITAR
1B40 247.PUPITAR
1B5C 248.TYRANITAR
1B78 249.LUGIA
1B94 250.HO-OH
1BB0 251.CELEBI
1BCC 252.TREECKO
1BE8 253.GROVYLE
1C04 254.SCEPTILE
1C20 255.TORCHIC
1C3C 256.COMBUSKEN
1C58 257.BLAZIKEN
1C74 258.MUDKIP
1C90 259.MARSHTOMP
1CAC 260.SWAMPERT
1CC8 261.POOCHYENA
1CE4 262.MIGHTYENA
1D00 263.ZIGZAGOON
1D1C 264.LINOONE
1D38 265.WURMPLE
1D54 266.SILCOON
1D70 267.BEAUTIFLY
1D8C 268.CASCOON
1DA8 269.DUSTOX
1DC4 270.LOTAD
1DE0 271.LOMBRE
1DFC 272.LUDICOLO
1E18 273.SEEDOT
1E34 274.NUZLEAF
1E50 275.SHIFTRY
1E6C 276.TAILLOW
1E88 277.SWELLOW
1EA4 278.WINGULL
1EC0 279.PELIPPER
1EDC 280.RALTS
1EF8 281.KIRLIA
1F14 282.GARDEVOIR
1F30 283.SURSKIT
1F4C 284.MASQUERAIN
1F68 285.SHROOMISH
1F84 286.BRELOOM
1FA0 287.SLAKOTH
1FBC 288.VIGOROTH
1FD8 289.SLAKING
1FF4 290.NINCADA
2010 291.NINJASK
202C 292.SHEDINJA
2048 293.WHISMUR
2064 294.LOUDRED
2080 295.EXPLOUD
209C 296.MAKUHITA
20B8 297.HARIYAMA
20D4 298.AZURILL
20F0 299.NOSEPASS
210C 300.SKITTY
2128 301.DELCATTY
2144 302.SABLEYE
2160 303.MAWILE
217C 304.ARON
2198 305.LAIRON
21B4 306.AGGRON
21D0 307.MEDITITE
21EC 308.MEDICHAM
2208 309.ELECTRIKE
2224 310.MANECTRIC
2240 311.PLUSLE
225C 312.MINUN
2278 313.VOLBEAT
2294 314.ILLUMISE
22B0 315.ROSELIA
22CC 316.GULPIN
22E8 317.SWALOT
2304 318.CARVANHA
2320 319.SHARPEDO
233C 320.WAILMER
2358 321.WAILORD
2374 322.NUMEL
2390 323.CAMERUPT
23AC 324.TORKOAL
23C8 325.SPOINK
23E4 326.GRUMPIG
2400 327.SPINDA
241C 328.TRAPINCH
2438 329.VIBRAVA
2454 330.FLYGON
2470 331.CACNEA
248C 332.CACTURNE
24A8 333.SWABLU
24C4 334.ALTARIA
24E0 335.ZANGOOSE
24FC 336.SEVIPER
2518 337.LUNATONE
2534 338.SOLROCK
2550 339.BARBOACH
256C 340.WHISCASH
2588 341.CORPHISH
25A4 342.CRAWDAUNT
25C0 343.BALTOY
25DC 344.CLAYDOL
25F8 345.LILEEP
2614 346.CRADILY
2630 347.ANORITH
264C 348.ARMALDO
2668 349.FEEBAS
2684 350.MILOTIC
26A0 351.CASTFORM
26BC 352.KECLEON
26D8 353.SHUPPET
26F4 354.BANETTE
2710 355.DUSKULL
272C 356.DUSCLOPS
2748 357.TROPIUS
2764 358.CHIMECHO
2780 359.ABSOL
279C 360.WYNAUT
27B8 361.SNORUNT
27D4 362.GLALIE
27F0 363.SPHEAL
280C 364.SEALEO
2828 365.WALREIN
2844 366.CLAMPERL
2860 367.HUNTAIL
287C 368.GOREBYSS
2898 369.RELICANTH
28B4 370.LUVDISC
28D0 371.BAGON
28EC 372.SHELGON
2908 373.SALAMENCE
2924 374.BELDUM
2940 375.METANG
295C 376.METAGROSS
2978 377.REGIROCK
2994 378.REGICE
29B0 379.REGISTEEL
29CC 380.LATIAS
29E8 381.LATIOS
2A04 382.KYOGRE
2A20 383.GROUDON
2A3C 384.RAYQUAZA
2A58 385.JIRACHI
2A74 386.DEOXYS
2A90 387.TURTWIG
2AAC 388.GROTLE
2AC8 389.TORTERRA
2AE4 390.CHIMCHAR
2B00 391.MONFERNO
2B1C 392.INFERNAPE
2B38 393.PIPLUP
2B54 394.PRINPLUP
2B70 395.EMPOLEON
2B8C 396.STARLY
2BA8 397.STARAVIA
2BC4 398.STARAPTOR
2BE0 399.BIDOOF
2BFC 400.BIBAREL
2C18 401.KRICKETOT
2C34 402.KRICKETUNE
2C50 403.SHINX
2C6C 404.LUXIO
2C88 405.LUXRAY
2CA4 406.BUDEW
2CC0 407.ROSERADE
2CDC 408.CRANIDOS
2CF8 409.RAMPARDOS
2D14 410.SHIELDON
2D30 411.BASTIODON
2D4C 412.BURMY
2D68 413.WORMADAM
2D84 414.MOTHIM
2DA0 415.COMBEE
2DBC 416.VESPIQUEN
2DD8 417.PACHIRISU
2DF4 418.BUIZEL
2E10 419.FLOATZEL
2E2C 420.CHERUBI
2E48 421.CHERRIM
2E64 422.SHELLOS
2E80 423.GASTRODON
2E9C 424.AMBIPOM
2EB8 425.DRIFLOON
2ED4 426.DRIFBLIM
2EF0 427.BUNEARY
2F0C 428.LOPUNNY
2F28 429.MISMAGIUS
2F44 430.HONCHKROW
2F60 431.GLAMEOW
2F7C 432.PURUGLY
2F98 433.CHINGLING
2FB4 434.STUNKY
2FD0 435.SKUNTANK
2FEC 436.BRONZOR
3008 437.BRONZONG
3024 438.BONSLY
3040 439.MIME JR.
305C 440.HAPPINY
3078 441.CHATOT
3094 442.SPIRITOMB
30B0 443.GIBLE
30CC 444.GABITE
30E8 445.GARCHOMP
3104 446.MUNCHLAX
3120 447.RIOLU
313C 448.LUCARIO
3158 449.HIPPOPOTAS
3174 450.HIPPOWDON
3190 451.SKORUPI
31AC 452.DRAPION
31C8 453.CROAGUNK
31E4 454.TOXICROAK
3200 455.CARNIVINE
321C 456.FINNEON
3238 457.LUMINEON
3254 458.MANTYKE
3270 459.SNOVER
328C 460.ABOMASNOW
32A8 461.WEAVILE
32C4 462.MAGNEZONE
32E0 463.LICKILICKY
32FC 464.RHYPERIOR
3318 465.TANGROWTH
3334 466.ELECTIVIRE
3350 467.MAGMORTAR
336C 468.TOGEKISS
3388 469.YANMEGA
33A4 470.LEAFEON
33C0 471.GLACEON
33DC 472.GLISCOR
33F8 473.MAMOSWINE
3414 474.PORYGON-Z
3430 475.GALLADE
344C 476.PROBOPASS
3468 477.DUSKNOIR
3484 478.FROSLASS
34A0 479.ROTOM
34BC 480.UXIE
34D8 481.MESPRIT
34F4 482.AZELF
3510 483.DIALGA
352C 484.PALKIA
3548 485.HEATRAN
3564 486.REGIGIGAS
3580 487.GIRATINA
359C 488.CRESSELIA
35B8 489.PHIONE
35D4 490.MANAPHY
35F0 491.DARKRAI
360C 492.SHAYMIN
3628 493.ARCEUS
~Battle Scene Sprite Placement
Spoiler:
needed
nitroexplorer2b/dsbuff
Hex Editor (HxD recommended)
You probably didn't even think of this, but if you insert a new sprite for
a pokemon, you'll notice... The sprite isn't quite where you want it when
you fight the pokemon in battle... dang.
So here's how to fix that little problem.
Extract poketools>poketool>poke_yofs.narc
At offset 3D the good stuff starts.
That's bulbasaur's in-battle height offset. It says "01". You could say
that "00" is the standard, baseline, height, and anything heigher than
that raises it a pixel, and anything less lowers it. It's all in hex of
course and anything less than "00" begins with "FF"
FF = -1, FE = -2, FD = -3, etc.
so all you have to do is take 3C, and using a hex calculator, add the
pokemon's national dex number in hex. Then change the value there up
to or down to raise and lower the sprite.
For example. Let's try turtwig #387
3c (60) + 183 (387) = 1BF (447) decimal numbers in parenthesis
So 1BF is the offset you go to in order to change turtwig's values.
No I'm not making a list for this one, it's really easy math...
~Changing the pokemon's shadow position~
THIS ONE'S FOR FREE
oh wait this whole guides for free
You can also change the x position of the shadow, using the exact same
method, offsets, everything. Just know higher values move the shadow to
the right and lower values move it to the left.
For both of these methods the only way to really to know how much to move
it is by counting pixels, or guess and check, a program made for this would
be super helpful if it could preview how a pokemon would look on screen...
but such a thing doesn't exist atm. You should make one ;)
nitroexplorer2b/dsbuff
Hex Editor (HxD recommended)
You probably didn't even think of this, but if you insert a new sprite for
a pokemon, you'll notice... The sprite isn't quite where you want it when
you fight the pokemon in battle... dang.
So here's how to fix that little problem.
Extract poketools>poketool>poke_yofs.narc
At offset 3D the good stuff starts.
That's bulbasaur's in-battle height offset. It says "01". You could say
that "00" is the standard, baseline, height, and anything heigher than
that raises it a pixel, and anything less lowers it. It's all in hex of
course and anything less than "00" begins with "FF"
FF = -1, FE = -2, FD = -3, etc.
so all you have to do is take 3C, and using a hex calculator, add the
pokemon's national dex number in hex. Then change the value there up
to or down to raise and lower the sprite.
For example. Let's try turtwig #387
3c (60) + 183 (387) = 1BF (447) decimal numbers in parenthesis
So 1BF is the offset you go to in order to change turtwig's values.
No I'm not making a list for this one, it's really easy math...
~Changing the pokemon's shadow position~
THIS ONE'S FOR FREE
oh wait this whole guides for free
You can also change the x position of the shadow, using the exact same
method, offsets, everything. Just know higher values move the shadow to
the right and lower values move it to the left.
For both of these methods the only way to really to know how much to move
it is by counting pixels, or guess and check, a program made for this would
be super helpful if it could preview how a pokemon would look on screen...
but such a thing doesn't exist atm. You should make one ;)
~Credits~
Spoiler:
Independent freeware program developers:
WB3000 - author of DSbuff
DarkFader - author of NDSTool (aka kiwi)
Treeki - author of NitroExplorer2b
LoadingNOW - author of ImageConverter and thenewpoketext
HackLars - author of DPPaletteEditorEng
D-Trogh - author of PDEDS AND PMEDS
Pokespam Inc. - author of EEDP
Borra - author of swav2swar (and wav2swav?)
The development teams of these software as well:
GraphicsGale
CrystalTile2
HxD
WindHex (not used in the guide but helped in the research)
Audacity
Some guides that helped me out:
thethethethe - Basic Hex Editing in Pokemon Diamond
Epuls56/I am r4ymond - Thenewpoketext Tutorial
FL00TENKERP - How to hack Pokemon Diamond and Pearl sprites
Poryhack - Analysis of zukan_data.narc - Edit Pokedex...
WB3000 - author of DSbuff
DarkFader - author of NDSTool (aka kiwi)
Treeki - author of NitroExplorer2b
LoadingNOW - author of ImageConverter and thenewpoketext
HackLars - author of DPPaletteEditorEng
D-Trogh - author of PDEDS AND PMEDS
Pokespam Inc. - author of EEDP
Borra - author of swav2swar (and wav2swav?)
The development teams of these software as well:
GraphicsGale
CrystalTile2
HxD
WindHex (not used in the guide but helped in the research)
Audacity
Some guides that helped me out:
thethethethe - Basic Hex Editing in Pokemon Diamond
Epuls56/I am r4ymond - Thenewpoketext Tutorial
FL00TENKERP - How to hack Pokemon Diamond and Pearl sprites
Poryhack - Analysis of zukan_data.narc - Edit Pokedex...
~Index of status of progress~
Spoiler:
Modable with software:
Sprites (2 front and a back)
palettes (normal and shiny)
types
abilities
gender ratio
exp data
wild held items
breeding groups and steps
evs given when defeated
happinness
color
catchrate (and safari run chance)
TMs/HMs
evolutions
level-up attacks
Pokemon Icons (ct2)
Pokemon Icons Palettes
Pokemon Overworld Sprites
Pokemon Cries (kinda)
Name
description, pokedex entry, height, weight
Modable with Hex:
adding/removing level-up moves
eggmoves
Pokemon Cries
Pokemon Animations
Pokemon position on battle screen.
Unknowns:
No more afaik!!
Sprites (2 front and a back)
palettes (normal and shiny)
types
abilities
gender ratio
exp data
wild held items
breeding groups and steps
evs given when defeated
happinness
color
catchrate (and safari run chance)
TMs/HMs
evolutions
level-up attacks
Pokemon Icons (ct2)
Pokemon Icons Palettes
Pokemon Overworld Sprites
Pokemon Cries (kinda)
Name
description, pokedex entry, height, weight
Modable with Hex:
adding/removing level-up moves
eggmoves
Pokemon Cries
Pokemon Animations
Pokemon position on battle screen.
Unknowns:
No more afaik!!
~Why did I do this?~
Spoiler:
I think this is a pretty legit question considering I have so few posts and
no one knows me or anything.
I got bored and this was a challenge.
It seems to me everyone's been stuck on advanced hacks too long... I wanted to help further research into the 4th gen hacking scene.
I like fakemon and making my own. I'd love to see a collaborate effort to
create a completely fakemon game... where there is a high standard and
competition to get each pokemon into to the game. Also, I started making
advanced sprites one day and was like... wow it'd help so much to just have
a few more sprites to mess with...
:) have fun!!
Last edited: