• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Forum moderator applications are now open! Click here for details.
  • Welcome to PokéCommunity! Register now and join one of the best places on the 'net to talk Pokémon and more! Community members will not see the bottom screen advertisements.
  • Want to share your adventures playing Pokémon?
    Check out our new Travel Journals forum for sharing playthroughs of ROM Hacks, Fan Games, and other Pokémon content!
  • IMPORTANT: Following a takedown request, the following hacks have been delisted from PokéCommunity:

    • Pokémon Glazed
    • Pokémon: Giratina Strikes Back
    • Pokémon Flora Sky
    • Pokémon Stranded
    The downloads and discussion threads for these hacks will no longer be accessible, and staff will be unable to return questions regarding accessing this content.

Tool: Advanced Song: GBA Music Editor [Alpha 0.5] ~ Open-Source

Platinum Lucario

The Legendary Master of [color=#D8D48C]Light[/colo
1,607
Posts
16
Years
Well that certainly is a nice idea, and one I have often contemplated doing.
The issue for me is really the lack of available information on the M4A engine (the music engine used in the games) so that will have to come later.

But, thanks! :)

As you might know, not all games use the MusicPlayer2000 engine. The main game of Mario & Luigi: Superstar Saga, Super Mario Advance, Super Mario World: Super Mario Advance 2, Yoshi's Island: Super Mario Advance 3, Super Mario Bros. 3: Super Mario Advance 4 and The Legend of Zelda: A Link to the Past/Four Swords (A Link to the Past side) are examples of (parts of) games in which don't use the MusicPlayer2000 engine and use a completely proprietary type of music engine.

But even so, some of the games like Mario & Luigi: Superstar Saga and The Legend of Zelda: A Link to the Past/Four Swords only partly use the MusicPlayer2000 engine. Such as Mario & Luigi: Superstar Saga only uses the MusicPlayer2000 engine in the Mario Bros. game, and The Legend of Zelda: A Link to the Past/Four Swords uses the MusicPlayer2000 engine only in the Four Swords counterpart, while A Link to the Past counterpart uses a completely proprietary music engine, same goes for the Mario & Luigi counterpart in Mario & Luigi: Superstar Saga.

Edit: Oh and also, all of the information about the MusicPlayer2000 engine is found in the official Nintendo Game Boy Advance SDK. I can't link to it due to the forum rules, but it should be somewhere easy to find by searching online.
 
3,830
Posts
13
Years
  • Age 26
  • OH
  • Seen Feb 26, 2024
As you might know, not all games use the MusicPlayer2000 engine. The main game of Mario & Luigi: Superstar Saga, Super Mario Advance, Super Mario World: Super Mario Advance 2, Yoshi's Island: Super Mario Advance 3, Super Mario Bros. 3: Super Mario Advance 4 and The Legend of Zelda: A Link to the Past/Four Swords (A Link to the Past side) are examples of (parts of) games in which don't use the MusicPlayer2000 engine and use a completely proprietary type of music engine.

But even so, some of the games like Mario & Luigi: Superstar Saga and The Legend of Zelda: A Link to the Past/Four Swords only partly use the MusicPlayer2000 engine. Such as Mario & Luigi: Superstar Saga only uses the MusicPlayer2000 engine in the Mario Bros. game, and The Legend of Zelda: A Link to the Past/Four Swords uses the MusicPlayer2000 engine only in the Four Swords counterpart, while A Link to the Past counterpart uses a completely proprietary music engine, same goes for the Mario & Luigi counterpart in Mario & Luigi: Superstar Saga.

Edit: Oh and also, all of the information about the MusicPlayer2000 engine is found in the official Nintendo Game Boy Advance SDK. I can't link to it due to the forum rules, but it should be somewhere easy to find by searching online.

Yes, I was aware of that info, but thanks anyway.
If you wanna see a Pokémon hack that no longer uses the M4A engine, Touhou Puppet Play Enhanced is the perfect example.

About the SDK: That's quite true. In all honesty, it's pretty hard to find info for the engine outside the SDK, which I don't have, so I've been having to figure it out using an old document and the MPlayDef.s. It's not perfect.
 

Platinum Lucario

The Legendary Master of [color=#D8D48C]Light[/colo
1,607
Posts
16
Years
Yes, I was aware of that info, but thanks anyway.
If you wanna see a Pokémon hack that no longer uses the M4A engine, Touhou Puppet Play Enhanced is the perfect example.

About the SDK: That's quite true. In all honesty, it's pretty hard to find info for the engine outside the SDK, which I don't have, so I've been having to figure it out using an old document and the MPlayDef.s. It's not perfect.
When I was researching the music engine of Mario & Luigi: Superstar Saga in it's Mario & Luigi counterpart, I looked at the location of where the sound data is located, which is somewhere around from 0x18EAD4 - 0x19CF51. When I looked at the data and compared it to a game that had the MusicPlayer2000 engine, the data looked nothing like it. The pattern was completely different. Which leads me to believe that those games don't use a table for pointing to audio, but instead uses pointers from somewhere in the ARM section of the ROM to point directly to the sequences, banks and waves. Perhaps it's a method that was used back in the days of the NES, SNES, Game Boy, N64 and Game Boy Color?

It would be great if there was a way to testing out the audio data, such as playback or something. Like as it is already possible with the games with the MusicPlayer2000 engine in them.
 
3,830
Posts
13
Years
  • Age 26
  • OH
  • Seen Feb 26, 2024
When I was researching the music engine of Mario & Luigi: Superstar Saga in it's Mario & Luigi counterpart, I looked at the location of where the sound data is located, which is somewhere around from 0x18EAD4 - 0x19CF51. When I looked at the data and compared it to a game that had the MusicPlayer2000 engine, the data looked nothing like it. The pattern was completely different. Which leads me to believe that those games don't use a table for pointing to audio, but instead uses pointers from somewhere in the ARM section of the ROM to point directly to the sequences, banks and waves. Perhaps it's a method that was used back in the days of the NES, SNES, Game Boy, N64 and Game Boy Color?

It would be great if there was a way to testing out the audio data, such as playback or something. Like as it is already possible with the games with the MusicPlayer2000 engine in them.

Well, I was doing some research last night about the engine, and I found out that all games that are at least compatible with the engine have a specific ASM code. So, to figure out if the engine is enabled only requires a simple search through the ROM for that ASM.
 
3,830
Posts
13
Years
  • Age 26
  • OH
  • Seen Feb 26, 2024
Ok. I have an one question. You planing to add function of reading other Sound Engines that his used on sappy? <As I know that engine is M4A>

I'm not sure what you mean there.

If you mean: do I plan on adding a way to find the sappy songtable in an unrecognized game? Then yes, I do plan on doing that.
 

ipatix

Sound Expert
145
Posts
15
Years
@Itari:

Have you managed to get the Song Disassembler working?
I'm really looking forward to see it working because it could help me a lot with some stuff I need to do.
 
3,830
Posts
13
Years
  • Age 26
  • OH
  • Seen Feb 26, 2024
@Itari:

Have you managed to get the Song Disassembler working?
I'm really looking forward to see it working because it could help me a lot with some stuff I need to do.

For the most part. It's not perfect, though I doubt it will ever be.
 

ipatix

Sound Expert
145
Posts
15
Years
If Sappy doesn't support the game it's very unlikley that the game uses the m4a engine (aka sappy driver). As far as I know there is only 3 games that don't work with Sappy if you don't enter the songtable manually (Golden Sun 1 + 2, Mario Golf). If Sappy won't find the songtable than the game doesn't use the Sappy driver and this tool won't work either.
 
3,830
Posts
13
Years
  • Age 26
  • OH
  • Seen Feb 26, 2024
If Sappy doesn't support the game it's very unlikley that the game uses the m4a engine (aka sappy driver). As far as I know there is only 3 games that don't work with Sappy if you don't enter the songtable manually (Golden Sun 1 + 2, Mario Golf). If Sappy won't find the songtable than the game doesn't use the Sappy driver and this tool won't work either.

What ipatix says here is true. Only games that use the M4A Engine will actually work with this tool.
 

Kawaii Shoujo Duskull

The Cutest Duskull
276
Posts
10
Years
  • Age 27
  • Seen Sep 10, 2023
If Sappy doesn't support the game it's very unlikley that the game uses the m4a engine (aka sappy driver). As far as I know there is only 3 games that don't work with Sappy if you don't enter the songtable manually (Golden Sun 1 + 2, Mario Golf). If Sappy won't find the songtable than the game doesn't use the Sappy driver and this tool won't work either.
I've found a couple games that Sappy won't recognize unless you enter the songtable offset manually into the Sappy.xml file. They're "Boktai 2: Solar Boy Django" and "Shin Bokura no Taiyou: Gyakushuu no Sabata".
Sappy won't find the songtable offsets for these games. However, its possible to get the offsets using GbaMusRiper(its a tool that can rip midis and soundfonts straight from the rom itself, last I checked it was at V2.1). The tool has a nice feature that can give you the sound engine info about a given rom, like the engine's maximum simultaneous direct sound output(ex: Pokémon Emerald has 5, Boktai 2 had 12 I believe...).
So even if Sappy doesn't find the songtable at all, there's still a way to get the offset and have Sappy use it.
(Not sure if this was useful or not but I thought it might interest somebody.)
 

ipatix

Sound Expert
145
Posts
15
Years
Oh yeah, I know the GbaMusRiper (I used to chat a lot with the maker).
But it's still interesting to see that Sappy doesn't recognize all Sappy games perfectly and there is other ways to find it.
 

xGal

Mhm
241
Posts
12
Years
Hmm I have seen in one of the comments the idea of a song table extender. Seriously, it's not hard, a simple repoint would work. Speaking of extended tables, are you going to add an INI file that we could change, if the song table is already extended?
 

Platinum Lucario

The Legendary Master of [color=#D8D48C]Light[/colo
1,607
Posts
16
Years
What ipatix says here is true. Only games that use the M4A Engine will actually work with this tool.

Would it even be possible to develop Advanced Song to play sound data from games that don't use the M4A engine? Such as part of Mario & Luigi: Superstar Saga and Super Mario Advance?

These games only use M4A in the Mario Bros. counterpart, while the other counterpart uses just generic ASM coding for pointing towards sequences, banks and waves.
 
Back
Top