News: 11 March 2016 - Forum Rules, Mobile Version
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia

Author Topic: Dancing Mad - Final Fantasy VI MSU-1 Hack for Higan and SD2SNES - Public Beta  (Read 1940 times)

Insidious611

  • Newbie
  • *
  • Posts: 4
    • View Profile
This is mostly cross-posted from my thread on Qhimm. Apologies if it seems a bit too broad in what it covers, but I was originally shopping this around to a community with a familiarity with modding but not necessarily rom hacking. This hack hasn't been getting enough testers, so I figured (upon suggestion from a friend) I'd promote it here as well. Honestly, I should have done so earlier, but I must admit as a complete newcomer to doing my own romhacks, heck, to programming assembly, I felt intimidated by the idea of showing this off in a community that has so many talented people in it. The hack is definitely in a playable state, and IMO it sounds amazing, though to be honest I'm kind of stuck as things are and might need some help to get it towards a final release.

I also became aware that there's another, unrelated FF6 hack named Dancing Mad, but it's a bit late in the project's life for me to change the name, honestly.

What is this?

Dancing Mad is an Open Beta mod to enhance the audio of the SNES game Final Fantasy 6 (3 in the US). Put simply, it replaces the SPC (SNES sound chip) based audio of FF6/FF3 with the official OST, or optionally, FinalFanTim's remixes or the OCRemix tracks.

Why?

Two reasons, really. For one, I have been feeling lately like I want to give myself challenging projects that involve areas outside of my comfort zone. I've not done much ROM hacking (at least, without tools) before, and my experience with ASM is mostly 6502 and a smattering of x86. So this is new territory, and that's exciting and promising. It's my belief that you should always endeavor to learn new things.

The second is that there are a fairly large number of really good remixes, arrangements, etc of the Final Fantasy VI soundtrack that fit well with the game but sound better than the original SPCs, and I wanted to see these as part of the game itself and give the game a little modern color and flavor.

Of course, in terms of the OSV, the difference is admittedly somewhat minor. As far as I can tell, the OSV tracks were essentially rendered *from* the SPCs in a way. The difference in quality is there, mostly coming from slightly cleaner samples, better resampling and a samplerate of 44100Hz instead of 32000Hz, but it's quite hard to notice.

Where can I download it?

The open beta is currently available on my GitHub, which is at https://github.com/Insidious611/DancingMadFF6. It uses an installer to simplify acquiring the music and installing the hack for novice users, many of my initial testers having no prior familiarity with romhacks. The installer and indeed all code in the project is open source. A tar file is available for *nix users containing the installer. It depends on qt5, curl, and python-ips

What Songs?

This mod contains audio from at least these 4 sources, converted to MSU-1 PCM format.

1. FLACs of the official FF6 OST.
2. MP3s of FinalFanTim's "Unreleased Tracks" FFVI Remaster project.
3. FLACs of the OCRemix Balance & Ruin remix album.
4. FLACs of Sean Schafianski's Final Fantasy VI Remastered project. (Buy it! It's on iTunes and Loudr and it is glorious)

You will be able to choose which specific audio files you want to install, or you can choose one of 4 predefined selections:

1. The FF6 OST itself
2. The FinalFanTim MP3s plus the OST
3. The OCRemix Album, plus the OST for Grand Finale?, What?, and Celes.
4. The Sean Schafianski Remaster plus the OST
5. My own selection of a mix of the four, based on what I feel best captures Nobuo Uematsu's original intent. Entirely subjective here, don't like my selections, don't use them.

I may also include some misceallaneous tracks if I find good ones, such as OCRemix tracks that aren't bart of Balance & Ruin, or orchestral/piano tracks, etc.


What will I need?

You'll need a copy of FF3us to start with, I plan on supporting FF6j later. Patched versions should work, unless they touch the audio code or move things around addresswise. (No translations that extend script size!)

As far as playing this, you will need either bsnes/higan (I plan on targetting bsnes v075 as a baseline as people seem to have had the most success with this version as far as MSU-1), or the actual SNES hardware and an SD2SNES flash cart. (I do not by any means have the money to purchase one of these for myself, so I'm going to need people's help testing this.)

How?

This project uses the MSU-1 "addon" developed by Byuu. This addon is much like the SuperFX, S-DD1, or SA-1 chips in released SNES games, except that, other than in the case of the SD2SNES, there is no physical hardware implementation. This addon allows me to stream data, in this case audio, at 2.68Mbit/s from a data file seperate to the ROM itself. This add-on is essentially intended to be everything the SNES CD was supposed to be, and more. Other people have added remastered BGM to other games before (See A Link To The Past for one of the few publically released versions... I have no idea why people are so guarded with their MSU-1 hacks.), and a few have even added FMVs to SNES games. (I may eventually try to port the PSX FMVs, but that would be a seperate, compatible mod.)

I will point out that I admittedly have little to no grasp of SNES ASM beyond basic SPC routines, the MSU-1 documentation, and my knowledge of how ASM works in general. So the patching part of this project is expected to be slow going, initially buggy, and potentially arduous. But, from what I've seen the MSU routines are relatively simple, and I don't plan on giving up, as I would personally love to see FF6 modded with better music.

This project has been completed before by someone by the handle of Drakon (see YouTube) but he refuses to release his IPS file, sources, documentation, or literally anything that would actually allow you to play his efforts, so in the spirit of the Open Source community, I'm going to redo it and release it to everyone.

This project is going to end up being one of two things on the user end. 1. A rather large download or 2. A rather long install, as either I'm going to have to pack in the uncompressed raw PCM files or a script to manually decode and convert them on the fly.

How Can I Help?

Testers, *especially* SD2SNES testers, of the Open Beta are NEEDED. In addition, I really am having a hard time figuring out how to do the fading in the NMI in a way that doesn't cause major glitching, FF6's NMI is really, really tight and I am 100% new to this whole thing. This is the first romhack I've ever done, and actually the first ASM I've ever coded of any sort.
In addition, I need someone to make sure my little hackish fix for the Dancing Mad tracks is stable and workable and that there's not an easier way to do it, and I need help figuring out what to do about the Opera.
I realize asking people to do things for you is frowned upon here, but that's not my intent. My intent is to let people know what's holding things up and how it can be sped along if they have the skill and knowledge to assist.

Project History To Date

2015-04-25
We have liftoff! The project is working, we have officially succeeded in getting FF6 to play our songs! See the video section.

2015-09-28
We have a private alpha! Complete with a convenient installer (with dynamic track downloader), readme (with credits), and all the files necessary for playing the game besides the ROM itself (please supply your own unheadered FF3 US V1.0 ROM). See this post for details.

2016-06-03
We have an Open Beta! See links above.

2016-08-15
Release of Beta 2, a minor bugfix working around some reported bugs. Opera songs stubbed out for the time being due to a timing bug with Celes's lines.

This is taking too long! When is it going to be done?

When it's done. Any replies to this effect will be ignored, summarily. This is a project I definitely want to do, as an educational project for myself if nothing else, but I have other projects, other obligations in life in general, a fiancee, contract work, game development, and other things I also work on. So progress may at times be slow, or may halt altogether. Be assured, I'm not going to give up on it.

Progress Videos!

Alpha
https://www.youtube.com/watch?v=4WHT98HBgpE

First working proof of concept
https://www.youtube.com/watch?v=vKgSqG2Tbfc
« Last Edit: October 08, 2017, 04:19:45 pm by Insidious611 »

Madsiur

  • RHDN Patreon Supporter!
  • Full Member
  • *****
  • Posts: 163
  • FF6 enthusiast!
    • View Profile
    • madsiur's lair
I tried to implement song fading but I had some lags outside battle. I'm not sure if I missed something or if the code hooked to NMI is too big...

Grimlock

  • Sr. Member
  • ****
  • Posts: 357
  • Graphics Artist, Level Designer
    • View Profile
For SD2SNES beta testers you should go to Krizz's everdrive website, access the forum and post in the SD2SNES area.  I'm sure you'll find some willing participants there.  Good luck, MSU-1 hacks are pretty awesome on real hardware.
Rogue Dawn official release date set: Saturday 1/14/2017

Insidious611

  • Newbie
  • *
  • Posts: 4
    • View Profile
There've been a few updates to the installer and the project has moved to GitHub from BitBucket. Edits to the audio are proceeding. I've still yet to figure out the fading or opera issues. The project now has a discord as well, a link to which is in my signature.

Insidious611

  • Newbie
  • *
  • Posts: 4
    • View Profile
A new, final Beta version has been released. Anything after this will be hotfixes for the remaining bugs (or to add/change songs), or the final release. The final release will come after I've worked out the fading.

Release is here: https://github.com/Insidious611/DancingMadFF6/releases/tag/20171108

Remaining confirmed bugs:
 * "Select a Scenario" screen plays last MSU-1 track upon load. Will be fixed in a coming hotfix.
 * Fading not yet implemented. Will be fixed for final release.

New in this release:
 * Alternate OCRemix loops courtesy of Qwertymodo
 * Ability to load a preset on the custom track selection screen.
 * Multiple cosmetic improvements to the installer.
 * Confirmed compatibility with "Ted Woolsey Uncensored Edition" patch (apply *after* the MSU-1 patch, with your favorite IPS patcher. Note that the "music player" addon patch works but has some audio hitching issues when leaving menus)
 * PCM sound effects for sounds that play on loop without music (waterfalls, fire, wind (not currently implemented due to a bug), waves)
 * Fully working opera with (mostly) synced voices!
 * Many new tracks from suggestions and contributors!
 * Many many bugfixes.

edale

  • Jr. Member
  • **
  • Posts: 44
    • View Profile
[post removed]

You know it's odd, I refresh the page before making my post about the final beta, nothing new, make my post, nothing new, come back several hours earlier... and Insidious has a post about the beta that's listed as posted an hour before mine...
« Last Edit: November 09, 2017, 09:12:20 am by edale »

Spooniest

  • RHDN Patreon Supporter!
  • Hero Member
  • *****
  • Posts: 3011
    • View Profile
[post removed]

You know it's odd, I refresh the page before making my post about the final beta, nothing new, make my post, nothing new, come back several hours earlier... and Insidious has a post about the beta that's listed as posted an hour before mine...

"With a bit of a mind flip, you're into the time slip. And nothing...will ever be the same."

Mystery to me as much as you...I'm gonna try this out, and use the OST, because, while it won't be that different from what I'm used to, the bass samples presumably won't drop out of the mix when that sound channel is being used for sound effects.

I'll let you know if I run into any problems Insidious. I know this soundtrack very well.

Update: Well, I tested it on whatever version of the standalone Snes9x MSU-1 Build I have, there were some pops and hisses and stereo channel confusion issues with it. I think I need to update or something though, because afterward I loaded it up in the Snes9x Core on RetroArch and it worked fine. I do notice that it doesn't fade in or out where it should, but I trust you'll get it sorted before long. :)

Of note:



I don't know the name of the track that plays in this scene, but it is SOOOOOOO WONDERFUL to not have to deal with the 'ding' sound effect, the 'clang' sound effect, and the whole lightning/fire/explosion sound effects making the bass guitar drop out of the music. The 'knock knock knock' sound effect in the next scene (when the Narshe Guards come for Terra) likewise does not take the bass guitar out of the mix during "Awakening."

"Omen" needs a quick fade at the end, when you figure out fades. I know why, because I used to have the OST you used, and "Omen" and "Terra's Theme" are just faded right into each other. I can hear "Terra's Theme" starting just at the end of "Omen." In addition, and this is probably something you can fix now, I would recommend inserting less than .5 seconds of silence at the start of all the tracks. Maybe less than .25 seconds. Something. They are starting JUST A HAIR too soon, compared to the SNES version. Could even be less than .1 seconds. I don't know. It just sounds like all the tracks start just a tiny bit too early.

I. Love. This.

I won't spoil it for people who want to try it for themselves, but your little 'surprise' when the downloader/patcher gets finished scared the crap out of me. :D
« Last Edit: November 09, 2017, 11:54:32 am by Spooniest »

Insidious611

  • Newbie
  • *
  • Posts: 4
    • View Profile
edale: I'm still at the point where all my posts need to be approved by a moderator, is why. :P

I had never considered that "avoided channel reuse issues" might be a reason to choose the OST version. :). I'm glad you're enjoying for the most part.

The Snes9x MSU-1 build issues definitely sound like emulator problems. One thing to note is that certain versions of the Snes9x-MSU1 (most until recently) will lack support for properly resuming an area song after a battle, due not to missing resume support but to handling the version check incorrectly. If this applies to you, patching with this IPS instead of the one used by the installer will help, as this removes the MSU-1 version check.

The fading is something I've been trying to work on for a while but there's a number of problems in the way, not least of which my relative inexperience with SNES ASM. It's going to be the focus of my efforts going forward, however. Though, I will be taking a short vacation from this project for a while fairly soon as I have other projects that also deserve my attention.

The issue with Omen is likely something that can be repaired even before this however, at least temporarily. The issue with songs in general starting slightly too soon is an interesting one and something I hadn't noticed myself, but would be fairly difficult to repair in the audio itself due to needing to adjust every loop point :/. I will have to look into it.

Glad you liked the little surprise. That's new, something I snuck into the installer at the end of the recent testing round for it just as a way to amuse myself. The same is sort of true of the installer's task bar/window/thumbnail icons, just something I added in that wasn't really necessary because I wanted something silly to break up the monotony of working on the nitty-gritty of the project.

I'm glad you're enjoying the hack, I appreciate all feedback but I especially like to hear that what started as a passion project and a learning experience for me is something people are enjoying :)

edale

  • Jr. Member
  • **
  • Posts: 44
    • View Profile
"With a bit of a mind flip, you're into the time slip. And nothing...will ever be the same."
"LET'S DO THE TIME-WARP AGAIN!!!!!"
Mystery to me as much as you...I'm gonna try this out, and use the OST, because, while it won't be that different from what I'm used to, the bass samples presumably won't drop out of the mix when that sound channel is being used for sound effects.

I'll let you know if I run into any problems Insidious. I know this soundtrack very well.

Update: Well, I tested it on whatever version of the standalone Snes9x MSU-1 Build I have, there were some pops and hisses and stereo channel confusion issues with it. I think I need to update or something though, because afterward I loaded it up in the Snes9x Core on RetroArch and it worked fine. I do notice that it doesn't fade in or out where it should, but I trust you'll get it sorted before long. :)
https://dl.qwertymodo.com/snes9x.zip
That link should have the newest version of the MSU-1 compatible version of Snes9x, including the fix for track resuming.
Of note:



I don't know the name of the track that plays in this scene, but it is SOOOOOOO WONDERFUL to not have to deal with the 'ding' sound effect, the 'clang' sound effect, and the whole lightning/fire/explosion sound effects making the bass guitar drop out of the music. The 'knock knock knock' sound effect in the next scene (when the Narshe Guards come for Terra) likewise does not take the bass guitar out of the mix during "Awakening."
That song would be "Esper World" AKA "Another World of Beasts." It's track 33 with this mod.

You can listen to the PCM audio in Audacity through: "file>import>raw data" then on the resulting dialog (after selecting the track) set:
Encoding: Signed 16-bit PCM
Byte Order: Little-Endian
Channels: 2 Channels (Stereo)
Start Offset:8
Amount to Import: 100
Sample Rate: 44100

*edit- I was 1/2 asleep when I posted this, not quite sure why I included the decoding info here, lol.
"Omen" needs a quick fade at the end, when you figure out fades. I know why, because I used to have the OST you used, and "Omen" and "Terra's Theme" are just faded right into each other. I can hear "Terra's Theme" starting just at the end of "Omen."
https://mega.nz/#!2JYU1ALR!o89BX6bA9r5Q-EWwuYf5N5DUeane8mFBDHYUG6m83eA
Try that version of Omen3. I had to jack up my volume all the way to hear the faintest traces of Terra's Theme in there, and even then I wasn't sure I could hear it. That said, I made the fade at the end of the track a bit more pronounced, so this version should be fine, plz check and verify.

Omen 3 isn't a looping track IIRC, so a direct audio edit should work no problems (with a looping track, I'd have to see if I could find an earlier looping point so I could cut out the end).
In addition, and this is probably something you can fix now, I would recommend inserting less than .5 seconds of silence at the start of all the tracks. Maybe less than .25 seconds. Something. They are starting JUST A HAIR too soon, compared to the SNES version. Could even be less than .1 seconds. I don't know. It just sounds like all the tracks start just a tiny bit too early.
As far as tracks starting early... I don't think they are, I think it just sounds like that to you because the tracks aren't fading in like they should.

That said, if the tracks do need a small chunk of silence ended at the beginning, I have an idea for a relatively simple way to do that without needing to re-loop the audio by modifying a script Insidious made to help normalize the PCM audio.
I. Love. This.

I won't spoil it for people who want to try it for themselves, but your little 'surprise' when the downloader/patcher gets finished scared the crap out of me. :D
When Insidious mentioned putting that little surprise in, he was gonna put it at the start of the installer. Glad to see my suggestion to put it at the end had the desired effect. >:D




Once I figured out that there were no real timing issues with the Opera, I converted the OST Opera to satisfy the FF purists (prior to that, selecting OST would result in the basic SPC audio for the Opera), so you will have PCM audio for the Opera with the OST options. That said, I'd HIGHLY recommend you try the OTH Opera.
https://go.twitch.tv/videos/181781859
You can see the OTH version of the Opera there, but be aware that video was made with the version of the Opera from right after I fixed it up and got it timed decently. The version in the patch has had MUCH more work done on it, and is MUCH better; especially the Aria.
« Last Edit: November 10, 2017, 09:55:08 pm by edale »