TheEbonyRaven09 Posted January 19, 2020 Posted January 19, 2020 Hey it's TheEbonyRaven09, I've recently discovered how to add new Pokemon species to Pokemon Diamond. Thought I'd give you guys a tutorial as I haven't discovered any posts regarding the subject. Tools Used : - Nitro Explorer by Treeki - NARCTool python scripts by CodenamePU (Github) - Hex Editor (HxD) This tutorial assumes you've legally bought a copy of Pokemon Diamond or Pearl and dumped the files to a ROM yourself. Spoiler Step 1 : Extracting files To start open up your Pokemon Diamond ROM in Nitro Explorer 2 and extract the following files : - /application/zukanlist/zkndata/zukan_data.narc - /poketool/personal/personal.narc - /poketool/personal/pms.narc Your folder should look something like this : Copy and paste NARCTool.py and NARC.py into your working folder. Note: In order to run the commands you need Python. Next open command prompt and use NARCTool's extract command on both personal.narc and zukan_data.narc Something like this : "NARCTool.py extract personal.narc personal" and "NARCTool.py extract zukan_data.narc zukan". When asked to decompress enter no. Your folder should look like this now : Now we can get to the editing... Spoiler Step 2 : Editing Data ( zukan_data.narc ) To start we'll edit the zukan_data. Open the zukan folder and you'll see a list of about 58 .bin files labeled 0-57. We only need to worry about files 11 and 12. This data is used to register pokedex entries. File 11 is the national dex ids, while file 12 is the regional dex ids. The last id used in Pokemon Diamond is 493. Your new Pokemon's id must be past this value. Open file 11 and scroll to the bottom. You'll see the last value is ED 01, which if reversed is hex for 01 ED or 493 in decimal. Convert your new Pokemon id to hex (I recommend 501 or 502 to start). In my case 501 and 502 are 1F5 and 1F6 respectively. Then reverse the order of the bytes and insert those bytes after ED 01. You should have something similar : Do the same for file 12. Make sure to save. Your're done editing zukan_data. Spoiler Step 3 : Editing Data ( personal.narc ) Next we'll be editing in personal.narc. Open the personal folder and you'll see 501 .bin files labeled 0-500. Those files represent each Pokemon species. Before you begin, check out this link that documents the structure of those files : https://projectpokemon.org/rawdb/diamond/formats/pokedex.php Starting out, make a copy of file 500. The number of files in your folder should equal [your chosen id]+1. This means that if your new id is 502 you'd have 503 files altogether. Keep in mind that you may need to duplicate files multiple times to equal your id. Also if you want to edit the Pokemon species stats, abilities, etc. consult the link. That's the order of the bytes and the respected values. But in this case, we'll skip that. Almost finished... Spoiler Step 4 : Final edits (pms.narc) Open pms.narc in a hex editor and add your new id in hex after F4 01. Your file should look something like this : Now that's the editing done. Spoiler Step 5 : Recompile and Insert Now that the editing's done its time to recompile the data. Use NARCTool's compile command to recreate the personal.narc and zukan_data.narc files. These are the commands : "NARCTool.py compile ./zukan zukan" and "NARCTool.py compile ./personal personal." This will create a zukan.narc and personal.narc file in the respective folders. Now open the ROM in Nitro Explorer 2 and use the reinsert command to override the original zukan.narc, personal.narc, and pms.narc files with the new edited files. Spoiler Step 6 : Testing it out Alright now here come's the most rewarding part : actually testing it out. With my edited ROM opened in an emulator and this Action Replay code enabled in Cheats... 94000130 FFFB0000 D5000000 00000XXX B21C4D28 00000000 B0000004 00000000 C0000000 0000000B D7000000 00024620 DC000000 00000006 D2000000 00000000 Note : Replace XXX with your new Pokemon's hexadecimal id. (1F5 = 501, and so on) Hold down your Select button, and walk into some tall grass. DISCLAIMER it may freeze from time to time so you may need to reload. If everything was done successfully, you should encounter a glitched Pokemon with no name or sprite. This Pokemon can be captured through normal methods and when you open it's data in the party it should have the Pokedex id you created. If people like this tutorial, I'll probably post a part 2 to show how to edit sprites and abilities. Let me know in the comments if you like this. And just a final disclaimer. I do not condone illegal pokemon/rom hacking. Please use this knowledge for personal/educational use. Don't go online with these Pokemon, as you'll likely get caught. I shared this knowledge knowing these risks, and hope this exceptional community will get some use out of this post. 1
TheEbonyRaven09 Posted January 19, 2020 Author Posted January 19, 2020 (edited) Hey its TheEbonyRaven09 again, I've decided to post a part 2 to my "Adding Pokemon Species" tutorial. This time we'll give our newly registered Pokemon a sprite. Tools Used : - Nitro Explorer by Treeki - NARCTool python scripts by CodenamePU (Github) - GenIV Sprite Editor by loadingNOW and SCV Spoiler Part 1 : Extracting data Open your EDITED Pokemon ROM from part 1 in Nitro Explorer 2. Extract the following file to your working directory : - /poketool/pokegra/pokegra.narc Then use NARCTool.py to extract pokegra.narc. Ex: "NARCTool.py extract pokegra.narc pokegra" If asked to decompress say no. Your directory should look like this now : Spoiler Part 2 : Getting sprites to work Before the actual editing we must create several files in order for the sprites to work properly. Note this will be tedious but bear with me. Open the pokegra folder, and you'll see a lot of .NCGR and .NCLR files. Why so many files you may ask? Well each Pokemon id has 6 files associated with it's sprite data. Now open a calculator and multiply the id created in part 1 by 6. That's where the sprite data starts for your Pokemon. (Ex: if your id is 501, its sprite data starts at file 3,006.) Now for the tedious part. Copy the last 6 files of the folder until you have an amount of files equal to (your id)*6+6. (Ex: 501*6+6 is 3,012. Your folder should have 3,012 files.) Once that's done you can actually move on to editing. I highly recommend a batch renamer as the files have to be in numerical order. Finally, use the following command : "NARCTool.py compile ./pokegra pokegra" to compile the edited .narc file. Spoiler Part 3 : Editing Sprites Open your edited pokegra narc in the GenIV sprite editor. Make sure the Diamond/Pearl checkbox is ticked. Once everything opens up your interface should look something like so : Navigate down to the files you created. This example is using id 501 so I'd navigate to file 3,006. You may get an "Index Out of Bounds Error". If you do, this means the files you created are in an incorrect order. (Make sure they're all in the index of 6. "3,006 <-> 3,012, etc." Now import your sprites accordingly. Back sprites come first followed by the front sprites. Press NO when asked to change pallete, and if prompted again THEN press YES. Seems to be some sort of glitch that happens with the software. If everything is done correctly, your sprite should load the correct colors. This is my example of using a custom sprite. Hit Ctr+W or File -> Write to narc to save your edits. Your done editing. Spoiler Part 4 : Finishing up and testing Now reinsert your edited pokegra file with Nitro Explorer 2 and load your edited ROM file in an emulator. With everything completed the image you imported with GenIV sprite tool should now be a custom Pokemon sprite associated with your new Pokemon. It should work both in battle and in the Pokemon party. That's all for now, hope you enjoyed Part 2 and best of luck. Edited January 19, 2020 by TheEbonyRaven09
Hatsune Miku Posted June 24, 2021 Posted June 24, 2021 Is it the same way to add pokemon in HGSS? How about BW, BW2?
theSLAYER Posted June 24, 2021 Posted June 24, 2021 3 hours ago, Hatsune Miku said: Is it the same way to add pokemon in HGSS? How about BW, BW2? The poster hasn't been around since 2020. So I'm unsure if they'll reply. Anyway the answer is likely no.
ABZB Posted August 10, 2021 Posted August 10, 2021 There are people working on it (allegedly with success), that have been floating around on Discord, so at worst it's only a matter of time
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now