Sunday, December 6, 2015

How to Enhance an SNES Game With the MSU-1 - Part 3: Failure and Success

Previous entries in this series are part 1 and part 2!

Utter Failure

In my first post in this series, I said I was going to document my foray into the world of SNES romhacking and I did. I learned a lot of assembly and had fun for the most part. But did I successfully create a patch for Zelda 3 to use MSU-1 music? As you may have guessed by the 2+ years between the last entry in this series and this one, the answer is a resounding "no." And that's okay.

It's Not So Bad

Frankly, I just didn't know enough about what I was doing. I didn't know enough about the MSU-1. I didn't know enough about the implementation of it in the SD2SNES. I didn't know enough about the SNES assembly language. I still don't know enough to do this sort of thing! That's okay, I've got plenty of other interests to pursue.

So why am I posting again after all this time? Well, I did want to document what has happened since I wrote the last entry in this series since those two posts are by far the most popular on this blog (and rightly so). I feel obligated. It's just taken me a while to get around to it. If you're reading this to attempt writing your own MSU-1 patch, perhaps I can offer you just a bit more guidance.

What Little Advice I Can Give: Ask For Help

The one thing I didn't do enough of was asking for help. There are plenty of people in the romhacking community who have already done this sort of thing. There are forums where you can post and ask them questions. There is absolutely no guarantee that they'll respond, and nor should there be. I didn't ask for help almost exclusively because I didn't want to bother these people. What right did I, a total newbie, have to ask for help if I hadn't tried myself first? Well, I did try and I wasn't getting anywhere. I should've asked for help. 

I want to stress that I am not one of the people you should ask for help. Everything I know about the MSU-1 I've documented here in these articles. I've provided links to everything I found. Ikari_01, developer of the SD2SNES even reached out to me on the comments offering to help. I should've taken them up on it, but by the time they reached out to me, I was already fed up with romhacking and had moved on to other things. If you're reading this, Ikari, thank you for your offer. If I ever try this sort of thing again, I'll not pass up such opportunities. As it stands, though, I got so frustrated with my lack of knowledge and progress that there's no way I can bring myself to try again.

A Link to the MSU-1

So where does this leave Zelda 3? It's gotten the patch that I always hoped it would, actually! Back in October 2014, Conn79 got in touch with me over GitHub where I'd posted my patch source code telling me that he'd been working (with others) on a similar patch. Luckily for everyone, he had succeeded where I'd failed! You can check out the thread about his patch here!

It turns out that all my work wasn't entirely pointless though, as it gave him the clue they needed to get SD2SNES working. You can read our discussion, with a bit more technical details of how it was accomplished as well as a link to the disassembled patch that was finally produced. And did you catch that bit at the end of our discussion? They asked for help.

Final Thoughts

Romhacking is super cool and I'd love to learn more about it and give it another shot some day, but for now I'm happy to sit on the sidelines as folks who have more experience than I do crank out great translations and cool patches. I'm perfectly happy to focus more on my programming craft for my day job and my hobby game development that I've covered elsewhere on this blog.

If there's any questions I can answer or any notes I can publish from my romhacking attempt, please let me know and I'll make it happen.

Good luck, all you MSU-1 folks! Please make lots of great music patches for me to play!


  1. Thanks for all the information. I know you have now moved to other project but it would be super useful if you could write a quick tutorial on how to find the song trigger point in Zelda 3 for example and change it. Enough so that people could replace one song as this information is almost non-existent online and I feel it is the roadblock of many peoples interested in trying their hand at a MSU1 patch. I'm sure there would be more msu1 project if people would understand that basic part.

    1. The reason that info is almost non-existent online is because there isn't a single way that snes games handle audio. That is, LttP is different from FF6 is different from Super Mario World and so on. I think this is a good idea for an article though, and since folks are still finding these (very incomplete) posts, I'll give it some thought and see what I can do/remember.

    2. In the meantime you should be able to find your way in lttp using the info in the part 1 article under "Editing the Game"