Share This Page

Since there was no such guide yet, I decided to make one.
This covers all of the ROMs out until now

What you need:
- The distro ROM (illegal to ask, Google is your friend)
- The pcd file(s) of the WonderCard(s) you want to inject
- An Hex Editor (I use UltraEdit on Windows)
- dslazy

General steps:
1) Open the ROM with dslazy and unpack it.
2) In the dslazy folder you will now have a NDS_UNPACK folder
3) Do the necessary modifications with the Hex Editor to arm9.bin and the files in /data (find the specific ROM instructions below)
- The "GGID" is a 4 bytes value that determines the region of the carts that can communicate with the distro ROM.
- The date limit (based on your DS's internal date) determines when the distribution is available
- The WonderCard contains a "mystery gift" for the receiving cartridge. You can edit it with Pokemon Mystery Gift Editor or Pokesav.
4) Repack the ROM and enjoy!

Deoxys/Dragonite American distro ROMs:
These are the easiest to "hack".
- WonderCard file: data\data.bin.
- The GGID is in data\ggid.dat.
- The date limit is in data\limit.bin. The first 4 bytes represent the starting date (YY00MMDD) in hex format (you can just replace them with 00000000), the remaining 4 are the ending date (replace them with FFFFFFFF).
- Unused files: data\decchi.bin, data\debug.lz

Shaymin European distro ROM:
This one actually contains 5 WonderCards and 5 GGIDs, one for each language. A different GGID and WonderCard will be used depending on your DS's language.
- WonderCard files: data\en.bin, it.bin, fr.bin, sp.bin, ge.bin
- arm9.bin contains both the date limit (in hex format) and the 5 GGIDs, here are the offsets:

So, it's impossible to achieve an "unlimited" distribution, you can make it last a year maximum.
- Unused files: data\decchi.bin, data\debug.lz, data\data.bin, data\limit.bin, data\ggid.dat

Pichu+Jirachi American dual distro ROM:
The ROM contains two different WonderCards (it chooses between them depending on the DS date), and obviously only handles one GGID.
- WonderCard files: data\p1.bin, p2.bin
- arm9.bin contains both the date limit (in hex format) and the GGID, here are the offsets:

It's impossible to achieve an "unlimited" distribution for this one too, you can make it last two years (one for each WonderCard) maximum.
- Unused files: data\decchi.bin, data\debug.lz, data\data.bin, data\limit.bin

Arceus European distro ROM:
5 WonderCards and 5 GGIDs in this ROM too, one for each language. A different GGID and WonderCard will be used depending on your DS's language.
- WonderCard files: data\en.bin, it.bin, fr.bin, sp.bin, ge.bin
- arm9.bin contains just the 5 GGIDs, here are the offsets:

- The date limit is in data\limit.bin (again? ). The first 4 bytes represent the starting date (YY00MMDD) in hex format (you can just replace them with 00000000), the remaining 4 are the ending date (replace them with FFFFFFFF).
- Unused files: data\decchi.bin, data\debug.lz, data\growtbl.narc, data\personal.narc, data\waza_tbl.narc, data\wotbl.narc, data\ggid.dat

Editing the WonderCard files:
- Open both the WonderCard ROM file that needs to be edited and the .pcd file.
- Copy the 80 bytes 0x104 - 0x153 in the .pcd to 0x0 - 0x4F in the ROM file:

Warning: Spoilers inside!

to

- Copy the WHOLE .pcd to the remaining part of the ROM file (from 0x50 onwards):

Note: how to convert from decimal to hex (for dates).
If you didn't know, you can do this easily with the Windows/OSX calculator. Just set the "scientific" (programmer in OSX) view, write something in decimal and click on "Hex", and it will output the date in hex

Huge thanks to:
- Chamillionaire for finding half of the GGIDs and for writing the original guide for the first distro ROM;
- Kyohack for his independent research on the Arceus ROM, and for his automatic distro ROM editor.

What is the black screen with "Channel" on it for?
I thought it was for version distribution...

However, I have three different distribution roms that both can only distribute to Platinum.
One of them show "Channel 1", one shows "Channel 7" and one shows "Channel 13"

It's also worth mentionning that the roms I got that can distribute to D/P/Pt all show a different number, while the ones that can only give to D/P also show a different number. I did notice I only get "Channel 1", "Channel 7" and "Channel 13"

I'm just curious about something... in PCDs that've been ripped from save files, obviously the field for "date recieved" is going to have a value. But in the actual distro cart, the value is zeroed out (waiting until it's injected into a game to acquire one, I guess). Do you think it's necessary to zero this value again when patching a new PCD into a distribution cart?

[english]
Hello, thank you very much for posting this. For days I was looking for this.
With regard to hacking the ROM of European Shaymin I can only doubt and I wonder if they have the answer.

I'm trying to replace the "ggid" Italian for "ggid" Japanese, so in this way can distribute the Wonder Card to Japanese version, which has already successfully achieved. But to distribute to Japanese versions, I have to change the language of NDS into Italian.
The question is: Is there any way to modify the ROM to indicate that if the NDS has selected the Japanese Language, Wonder Card that can be distributed to Japanese versions without changes in Italian language?

I hope you can respond and there is some way. In advance thank you very much

P.D. Sorry for my bad English, but I speak Spanish and helped me with a translator

It would be a good Idea Morfeo, but I think it is part of the structure of the rom and It can't be changed... It's like we wanted to make the previous years, making it region free... I think we should have to wait... But there is one thing I think it could be interesting. Shaymin Distribution Cart has 5 WCD... What if we put it 6? (The Japanese one). Between every GGID there are unknown values:
C0 76 02 02 24 74 02 02
2C 74 02 02
34 74 02 02
3C 74 02 02
44 74 02 02

So, i Think that if we put here the japanese GGID and then we add 4C 74 02 02, it should recognise japanese versions! Then, we only have to put the jp.bin, and that's all! What do you have to say? Do you think it is possible? Thanks in advance

Those "unknown values" seem to be some kind of offset for the wondercard files (en.bin, etc). When I messed with them and went to download the wondercard onto Diamond I saw that it was trying to retrieve the wondercard title from somewhere that there wasn't one (it appeared on diamond as a bunch of garbled characters).

I have a feeling there's more to it then this anyway. Everything about this ROM is pretty much hard-coded; you'd have to also find and edit the part that loads the bin files, and probably the part that reads the language settings from the DS's firmware (I'm pretty sure this isn't it).

I did notice one interesting and potentially useful thing when I was messing around though. When the ROM peeks at the DS's language settings it's looking for either French, German, Italian, Spanish, or English. When it doesn't find any of those (aka when it's set to Japanese) it falls back to English. What this means is that you can replace the English GGID with the Japanese one and you will be able to distribute to Japanese clients with the DS language set to Japanese. The only downside to this is that you lose functionality with English clients. Morfeo was willing to lose functionality with Italian clients, so I can't imagine English would be much worse.