Probably most people never noticed, but two of the tracks in StarTropics have always been slightly broken. I decided to disassemble it and fix them. I made a video about it here:
Fixing StartropicsIPS patch:
http://rainwarrior.ca/projects/nes/startropics_music_fix.ipsNSF:
http://rainwarrior.ca/projects/nes/startropics_music_fix.nsfSource:
http://rainwarrior.ca/projects/nes/startropics_music_fix.zipNSF of original soundtrack for comparison:
http://rainwarrior.ca/projects/nes/startropics.nsfThe source is probably of interest to the NESDev crowd. I made a fully labelled disassembly, and documented the process a bit. Anyone looking to hack StarTropics' music should have all the info they need right at hand with this. I suppose you could even borrow its music engine if you wanted (but it's really limited, maybe not great to use, possibly fun as a challenge).
The NSF of the original soundtrack is a new rip I made built from the disassembly to prove I had done it correctly. It's not significantly different than the existing NSF rip of StarTropics, but it doesn't have unused data stripped out.
Will this be posted on romhacking.net? They have a section for bug fixes.
I tried to submit to romhacking.net yesterday, but this morning I got an e-mail telling me that, apparently, I didn't get the submission ritual exactly right and will have to do it again. Site has a lot of usability issues. D:
Great work! Thanks for sharing your disassembly as well!
Always thought the ending music didn't fit the game, but the fixed tune certainly does
Very cool, and thanks for giving a thorough explanation in your video.
(Also, your speaking voice/style sounds a lot like my own... maybe it's a Canadian thing?)
I think it may be buggy, try listening to the music on the first level, a channel cuts out after a while and starts playing weird high notes. Perhaps they shared data with the overworld theme?
All of the music data was accounted for in the disassembly. Nothing is shared between tracks.
Maybe tell me your ROM's CRC and which emulator you were using? I have tested on two Startropics ROMs, the (U) one matched the dump from my own cartridge, and the (Europe) one I have seen has identical music data (so the same IPS works on it).
File matches bootgod's CRC32s, I was using FCEUX (old ppu). Rom's mapper was set to mapper 4 (MMC3).
Crap, it was just the low hearts beeping....
I got to say that it is a pretty awesome job you did. Very interesting! I wonder if the programmer did not notice or didn't think it was a big deal enough to fix.
Now the next time Canada get blamed for Justin Bieber, I'll be able to fight back and state proudly that Canada also fixed StarTropic's soundtrack! Xp
SkinnyV wrote:
I got to say that it is a pretty awesome job you did. Very interesting! I wonder if the programmer did not notice or didn't think it was a big deal enough to fix.
Quoting myself on Twitter:
I'd bet money someone noticed these at the time but deadlines & priorities never allowed for its resolution.
A bit late to this discovery, but I did want to inform everyone that this fix works in both the PowerPak and EverDrive N8 despite the Mapper 4 issue.
It plays nice with any emulator that ignores the MMC3's RAM disable function, since without that it's MMC6 compatible. No MMC3 or MMC6 games actually rely on these bits to function, but they do get used to try and protect the data against accidental corruption, so they'll have an effect if you implement them.
If you don't implement the RAM disable in mapper 4, though, your emulator probably has a problem with Low G Man due to a bug in its music code, which is why I patched it too:
http://forums.nesdev.com/viewtopic.php?f=2&t=13105
Oh, hey! I didn't notice this thread before. Now that I've played & beaten StarTropics I suppose I can partake in this discussion now.
Your, sir Brad Smith, are a gentleman and a scholar. I fell in love with that ending theme since day one, and it's nice to know there's more to it--it's kinda like listening to the Ninja Ryukenden soundtrack release with those extra notes added.
koitsu wrote:
Quoting myself on Twitter: I'd bet money someone noticed these at the time but deadlines & priorities never allowed for its resolution.
It's a shame. This could have been fixed for the Virtual Console release (I take it it wasn't?).