Many people have put countless hours of their time into researching the structures contained within Pokemon games over the years. Without the research done by these people, this randomizer would not exist, or would have taken a lot longer to create.
Instead of trying to note where I found every single piece of information used in the randomizer's creation, I will acknowledge the major sources of information that were used, as well as some of the main contributors of said information.
The creators of the external components I used will also be acknowledged. These components have been used appropriately subject to their respective software licenses.
Thanks to the efforts of those acknowledged below, my time spent making the program was mainly focussed on just that - putting the pieces together to create the program itself. I did, however, do my own research where things were too undocumented for my liking, and this research can be seen in the comments of the program's source code where appropriate.
Sources of Information
The Skeetendo community is full of hacking information regarding the GameBoy/GameBoy Color Pokemon games and was an invaluable resource in my development of the randomizers for these games.
Similarly, ProjectPokemon contains a lot of useful information to aid users in hacking the Nintendo DS Pokemon games. The research done by members such as andibad, Kaphotics & Bond697 helped the Generation 5 portions of the randomizer get off the ground.
The Pokecommunity is the largest English-language Pokemon ROM hacking community, and also contains a wealth of useful information, especially information relating to GBA/Generation 3 Pokemon games.
Not all the functionality I was implementing was documented anywhere, but some of the functionality did already have tools available. Analysing the output of the tools below was another important part of the implementation of this program.
- A-Starter & A-Trainer by Hackmew
- Attack Editor Advance by Scizz
- Attack Editor GB & Poke Edit GB by thethethe
- Item Image Editor & Pokemon Red/Blue Trainer Editor, by Swampert Tools
- PPRE by ProjectPokemon.org
- YAPE by Silver314
- NPRE by pichu2000 (here)
- Pokanalysis by Ubitux (here)
- SDSME by Spiky Eared Pichu (here)
- PokeDSPic by loadingNOW
- BWSE by KazoWAR (here)
Libraries/Programs used in the Randomizer
The NDS games introduced a lot of file formats, for which great programs have already been written that handle them. Rather than reinvent the wheel, I have included these programs inside the Randomizer, under the appropriate software licenses.
- Generation 4 text handling is processed by a Java port of loadingNOW's thenewpoketext.
- Generation 5 text handling is processed by a Java port of SCV/ProjectPokemon's pptxt.
- NDS ROM extraction & creation is handled using Java-ported code from ndstool.
- arm9.bin decompression & compression is achieved using a Java port of CUE's BLZ compressor.
- Decompression of LZ10/11-compressed images is achieved using the DSDecmp library.
- Decompression of Gen1/2 Pokemon pictures is achieved using a Java port of code from pokemon-reverse-engineering-tools
The Randomizers that came before
Credit also goes to those who made randomizer programs before this one was released, for the inspiration!