Locating Music Tracks in NES, SNES, & N64 ROMs? by Rew at 4:51 PM EST on November 28, 2020
Hi!
So I would like to compile a list of music file locations for certain Mario, Zelda, Kirby, Mega Man, etc. games on NES, Super NES, and N64. The problem is, I have very little knowledge of how to obtain such info. To give you an idea of what I'm wanting to do, here is the N64 spreadsheet I'm putting together: Google Spreadsheet
I only have info for Zelda: OoT & MM thanks to lists I found here and here, respectively.
My question is, how can I locate the music in the ROMs of other games, not only for N64 but also NES and Super NES? It's not that I want anyone to find these for me (though if anyone knows of any other lists like what I linked above, that would be awesome), but I'd like to learn how to find this kind of info for myself. But I have minimal hacking/datamining experience. What do I need to get started? How exactly do I begin? I know each game stores its music differently, even on the same system. I guess I'm looking for a starting point to looking for the tracks.
Here's what I already have: - Hexadecimal editor - ROMs of most of the games I'm interested in - NSF, SPC, & USF plug-ins for Winamp, plus rips of most games of those file types (though I don't think the ROM locations of the tracks are embedded in these ripped music files anywhere that I can see?)
Now I don't have any great, overarching purpose to this project. I'm not interested in rips of the music itself (as I already have most of those). It's just the way game ROMs store their data and how it's all ordered--particularly text and music--has long been strangely interesting to me. So I'd like to compile track lists for all the games I like on these three systems.
For N64 you can find this info for the majority of games through N64 Sound Tool, I think this is the most up to date version of it: N64SoundListToolUpdated. In Release/gameconfigsound.ini there's metadata about what sound engine the game uses and parameters including offsets for the various aspects of the music and sfx in the ROMs. Not sure of all the details, but this is absolutely the place to start.
For the most part you're not going to get even internal track titles out of this, though. With Zelda that's probably coming from debug data that's going to be very specific to each game.
USF isn't too helpful for getting track-by-track info, the .usflib will combine everything from the ROM, and commonly loaded stuff in RAM. If you look through the file (following the specification) you can at least get the range of interesting ROM offsets, but I don't know how helpful that will be.