PMD rom-hacking weekly

Update on the rom hacking scene of pokémon mystery dungeon (all games)

Follow with RSS.

How to use custom music during cutscenes (US/EU)

This tutorial will explain to you how to use custom music in your game. For a bit of background the first example of music in-game is some prototype with the sound engine. However, here, I'll show how to use an alternative sound engine (that can be used alongside the original, so the base game music still work). The first apparition of this kind of sound is by Irdkwia, in a secret part of his hack ( see the video – spoiler warning – here : ). The second use of this one is by techticks (with the same sound engine) in his City of Light hacks. Please note that this engine isn't perfect, and have the following issue that I'm aware of :

  • It only only accept uncompressed sound (but that's probably not a big deal)
  • It only support mono sound, while I think the DS support stereo (but that's also probably not of a big deal)
  • It have sometimes audio crackling. This is related to some timing issue (I think it's due to the game not providing the data fast enought to the audio process due to how it measure timing). That can be quite problematic. If you want to compare, here is a recording from the game (note that the start time is different of a few second between the two, nor they have the same volume) (played with No$GBA, replacing the intro sequence music) : test_quality_audio_eos_patch.ogg and here is the original audio test_quality_audio_eos_patch_original.ogg ( music from Explorers of Sky, remix by Kamex, original link )
  • It does loop audio, but doesn't seems to support seeking a specific point of time when looping. When looping, it play the audio file again, preventing having a music which loop with an intro sequence (or you need to time this manually with script).

All of those point (in particular the last 2) could possibly be fixed with enhancement of the patch (I may try to take a look at that, but I'm not really good when it comes to audio processing).

The actual how-to part

So, first, you will need to make sure you know the basic of using the command line (powershell on windows, whatever shell you use on Linux (it's usually Bash by default), or whatever is MacOS's default (I think it's bash, but seeing how MacOS is hard to set-up in a VM, I won't test on it)). You will need to make sure you know :

  • start your shell
  • check the current directory
  • change directory
  • execute command

Quick and Ugly mini shell tutorial

A shell (sometimes called console or terminal) allow you to execute command by typing lines (and a bit more, but that's out of scope). You communicate with the shell by writing a line of command, then pressing enter to validate (like when you discuss with a bot in Discord/IRC/whatever. Or minecraft command.).

One important notion with shells is the Current Directory. Your shell have a folder it is in, like a file explorer have a displayed folder. This is then used for deciding which file to modify if you specify a path that don't start with ``C:/`` (or similar), ``/`` or whatever is used on MacOS. For example, if you are in the Directory ``C:/Users/marius/something``, specifying the file ``hello`` will use the file at ``C:/Users/marius/something/hello``.
Keep in mind that space is what separate the different part of a command. If you have a space in your file name, you need to put an \ before the space and an ``“``, so that ``file with space”.txt`` is typed as ``file\ with\ space\“.txt``.
You can :

  • Display the current directory with ``pwd``
  • List files and folder in the current directory with ``ls``
  • change folder with ``cd ``, then the folder name. You can use .. to go to the parent directory. You can use a relative or absolute (a.k.a not relative) path.