Hi ! I'm fairly new around here, and I'm relatively new to rom hacking and to the NDS scene in general, but I'm working on several little projects for Pokemon Mystery Dungeon Explorers of Sky / Time / Darkness, and I thought it would nice to share it with others ! Especially with others with more technical knowledge than I !
I hope this will be useful ! :biggrin:
And be sure to report any bugs, or tidbits of information you have ! Those would prove invaluable !
Feel free to mention whether it worked for you, or not so much ! Any feedback is always great !
You might need 7zip or another 7z compatible program to open the compressed files on this page.
Looking for:
- Need people to write tutorials for some of the tools !
- Need feedback on the tools!
- Need people to discover what some of the "unk" variables in the character sprites do !
- Need info on the NDS's DSP.
The Tools:
Compression/Decompression:
PPMD UnPX
Description: A quick little implementation of a "PX" compressed data decompressor. Its based on Zhorken's Python script for decompressing the character portraits, which happened to be stored as compressed "PX" files ! Just feed it an AT4PX or PKDPX file by drag and dropping, or use the command line argument for specifying the input file and output folder. The result will have an extension appended, or not, depending on whether its currently possible to guess the content. Again, many thanks to Zhorken for finding out about the compression scheme !
Donwload: Version 0.41 : ppmd_unpx_0_41.zip on Github
PPMD DoPX
Description: A compressor to compress files back into PX compressed files, either PKDPX or AT4PX files. Its still pretty new and experimental, so, watch out for bugs ! By default anything compressed is outputed to a PKDPX. To output to a AT4PX, the output filename has to be specified and to end with ".at4px" !
Donwload: Version 0.31 : ppmd_dopx_0_31.zip on Github
Packing/Unpacking:
PPMD Pack File Utility
Description: This tool unpacks and re-packs "pack files". Those are single file that contains many sub-files. Pack files often end with a .bin extension, and they can contain a lot of different types of files at the same time. Mostly for research purpose.
GUI Image:
Donwload: Version 0.53 + GUI 1.2 : ppmd_packfileutil_gui_1_2-0_53.zip on Github
Graphics:
PPMD KaoUtil
Description: This utility allows to both unpack the kaomado.kao file containing all the pokemon portraits, but also to rebuild the file! Basically, you can add new potraits into the game using this tool ! It just extract everything like a zip file if you want. And you just have to add a properly named 4 bits per pixels/16 colors png or bmp image to the folder matching the pokemon you want, before repacking the parent folder again into a ".kao" fle. The first color in the palette is reserved by the game and is forced to pure black, so you have really 15 colors.
Example: For example, here's a crappy little edit of Poochyena's basic portrait. I inserted it into slot 2, which correspond to the emotion named "Grin"! Poochyena by default doesn't have a portrait for this emotion, but by using the tool, I was able to insert this very easily !
GUI Image:
Donwload: Version 0.41 + GUI : ppmd_kaoutil_gui_1_0-0_41.zip on github
Dowload: Version 0.42 No GUI: ppmd_kaoutil_0.42 on github
PPMD GfxCrunch
Description : Handles converting various image formats from the game, including WAN sprites, BGP images, Compressed Pokemon sprites "*.pkdpx", and more to come! It exports animated sprites to XML for easier editing. It also can handle all at once the entire Pokemon sprites containers "monster.bin", "m_ground.bin", "m_attack.bin".
Currently Supported Graphics Formats:
Individual Pokemon sprites "*.wan" file ( Type 1 ).
Compressed Pokemon sprites "*.pkdpx"
Entire Pokemon sprites container "monster.bin", "m_ground.bin", "m_attack.bin"
Currently Partially Supported Graphics Formats:
Prop sprites with orphaned images "*.wan" file ( usually Type 0 or 3 ). Can extract, but wrong resolution and tile/pixel ordering, and can't be re-packed properly.
WAT sprites "*.wat" file. (basically "*.wan" sprites with a different file extension and with their type byte set to type 3) Not tested.
BGP Images. "*.bgp" files.
Currently Unsupported Graphics Formats:
WTE Image container. "*.wte" file.
WTU Color animation data file ? "*.wtu" file.
kaomado.kao. (Use ppmd_kaoutil instead for now!)
Raw at4px-compressed images. (This will never be perfect, because its raw data.)
Raw images. (This will never be perfect, because its raw data.)
Everything else..
Donwload: Alpha 0.13 : ppmd_gfxcrunch_0_13_alpha on GitHub
Stats/Text/etc..:
PPMD StatUtil
Description: A tool for exporting game statistics to XML, and importing them back into the game's files. Making it easy for third party tools developer to make more complete and user friendly utilities, can also be edited by humans directly and opened with anyone's favorite XML editor.(Notepad++ highly recommended) So far has limited support.
Currently supports editing: Move data, Pokemon Data, Item data, Generic game text, Game scripts + game dialog.
Donwload: Alpha 0.23 : ppmd_statsutil_0.23.2 on GitHub
Tutorial/Example: here, also include a few files and tools to make things easier!
Example Video for the Script Editing :
Audio:
PPMD AudioUtil
Description: A tool for exporting, and eventually importing/modifying, audio to/from games using the DSE audio driver, such as PMD2 ! Can output the samples to wav files, or the samples and music tracks to a soundfont and MIDIs, or to MIDIs only. You can specify your own conversion rules for exporting only MIDIs, such as what instruments the native DSE preset translate to when converted into MIDI ! This program REQUIRE you to read the readme btw. Its a console program only, for now. There is so much stuff going on in it that there won't be a GUI frontend for a while..
Please Note: Its still far from perfect!
Currently supports: Exporting Music to MIDI and soundfonts. Exporting MIDIs only. Exporting samples.
Donwload: Version 0.37 (2017/12/14) : latest ppmd_audioutil on Github
Source Code:
All source code for all utilities is available. Its not always pretty, because this codebase is also used for research, and messing around. But its much better than not sharing anything at all, I guess.
Main repository for the actual utilities : ppmdu
Secondary repository for the GUI frontends : ppmdu_gui_frontends
Research Notes:
For the most reliable, tested, and up to date info, check the Project Pokemon Wiki:
http://projectpokemon.org/wiki/Pok%C3%A9mon_Mystery_Dungeon_Explorers
All my current personal research notes files:
File Formats : https://www.dropbox.com/sh/8on92uax2mf79gv/AADCmlKOD9oC_NhHnRXVdmMSa?dl=0
General notes : https://www.dropbox.com/s/ucy2t9hqgtfn0y0/PMD2_GeneralNotes.txt?dl=0
PMD2_MusicAndSoundFormats: https://www.dropbox.com/s/bw0aym9rn22z4wu/PMD2_MusicAndSoundFormats.txt?dl=0
PMD2_MusicTracksAndInfo : https://www.dropbox.com/s/rwjq0s0fvtiamsv/PMD2_MusicTracksAndInfo.txt?dl=0
A bunch of jumbled notes on scripts : https://www.dropbox.com/s/1roqlwkhfqb9amz/PMD2_Scripts_And_Resources.txt?dl=0
Misc Unsupported Utilities
Here are a few little utilities I made to help with researching the ROMs. They're nothing special, and probably not very stable, but they're really handy:
SIR0PtrOffsetsDecoder : Use this to decode a SIR0 pointer offset list, which can help tremendously in finding out more about what a sir0 file contains! Just copy/paste the SIR0's ptr offset list only, and put it into its own separate file, and drag-and-drop that onto the .bat file, it will output the result in "decoded.txt". The program itself only output the result to the console, so use the batch script, or pipe the output!
IntegerListDecoder : Use this one to decode a list of encoded integers. Things like the stats growths in "m_level.bin", the move lists in "waza_p.bin". You can just put all the lists one after the other in a new file, and drag-and-drop that onto the .bat file and all the decoded lists will be outputed to "decoded.txt" !
Pages of Interest:
Todo