Author Topic: [FF6] [OPEN BETA] Dancing Mad - FF6 Audio Replacement using MSU-1  (Read 204875 times)

Covarr

  • Covarr-Let
  • Administrator
  • *
  • Posts: 3940
  • Just Covarr. No "n".
    • View Profile
Swapping in the replacement track file is easy. Converting it is less so, since it involves making a custom loop manually. Of course, if you don't mind a CD-style loop (fade out and restart), that becomes much easier, just toss a wav file into wav2msu.

insidious611

  • *
  • Posts: 152
    • View Profile
It's worth noting that in the videos I'm working from almost entirely the OCRemix tracks. My final selection will be a mix, and you can choose to either go with that, go with the OCRemix tracks, go with the OST, or go with the OST supplemented with FinalFanTim's or Sean Schafianski's tracks. Or you can create your own completely custom mix from within the installer. There'll be kind of a table-based interface for choosing which to go with for each track if you choose to do a custom selection.

Also yes, the twitch gameplay video is completely fade-less. I noticed it particularly when the game suddenly switches from a lower volume version of Awakening to the full volume version after you specify Terra's name, but ehh, I guess it's not that obvious to others. :P

monsieur_madeleine

  • *
  • Posts: 5
  • FF1 for NES is my thing
    • View Profile
    • Combe Video - Tumblr
So I've only skimmed this thread, since all the technical stuff is over my head, but are you still having trouble with the Opera? It seems like the biggest roadblock in updating the game soundtrack, and it would take a lot of work, but as far as making it interactive I think would require new recordings/orchestrations from scratch -- particularly the singers. Is that the issue? Or is it more just a technical issue of playing simultaneous CD quality files with emulated SNES hardware?

Anyway I'd be willing to help with the orchestration and singing part if it's needed.

Covarr

  • Covarr-Let
  • Administrator
  • *
  • Posts: 3940
  • Just Covarr. No "n".
    • View Profile
The plan, as I understand it, is to use the opera sequence from the OCRemix album. The problem is that this'll mean hacking in new timings for the scene itself, so that sprites hold the "open mouth" and "closed mouth" positions for different lengths of time. This is not impossible by any means; if Square could time it in the first place, then obviously it will be possible to re-time. But even after figuring out HOW to do this, it'll be immensely annoying and time consuming.

That said, opera tracks that match the game's original timing would almost certainly be welcomed. Ultimately it's up to insidious, not me, but I can't see how additional choices (especially something easier to implement with the game's original timing) would be anything but beneficial. But for that advantage to really make a difference, it'd have to sync perfectly with the existing lip flaps in the game, which might be a lot of effort and be severely limiting in terms of lyrics.

insidious611

  • *
  • Posts: 152
    • View Profile
It'd be a rather grand undertaking in and of itself to redo the actual music for the opera. As Covarr said, we already have the redone music from the OCRemix album, the problem is entirely a programming one. Getting the time cues in the game to sync, not just the mouth flaps but the dialogue timings and the proper "you made the right choice, you made the wrong choice" stuff all working right is going to be a pain in the ass, as this is all stuff that the "new track" handler that we're overwriting in the game's code isn't used to handle, instead there's very specialized code in the game for handling that sequence musically.

This is the bit that's a pain, because we have to have our own very specialized code for this sequence. Our code for most other sequences is very simple and thus very easy to maintain. Dancing Mad and The Phantom Train are also going to need similarly specialized handling (though not as detailed) for only somewhat similar reasons.

To be honest, it's not quite accurate to say we're "still having trouble" with the Opera, though. Code-wise, I haven't even started with the opera. The way our code works, I can choose not to handle certain tracks and the game's native music code will handle it, so I'm having it to do that for the Opera for now, and haven't even begun the runs through the debugger required to set the stage for coding the opera stuff.


In other news, I've completed preliminary work on designing the installer, which is a vital step towards being able to get copies out to our alpha-testers.


insidious611

  • *
  • Posts: 152
    • View Profile
Progress continues slowly. I've been focusing on some other things lately, but the installer is properly downloading tracks from my servers. Once I've finished that, finalized the last of the music (including deciding upon my selection), and run a test on the current patch code to make sure it hasn't been overtaken by gremlins or something (that is to say, to make sure it's still functioning the way it was last time I tested it), I'll be sending out alpha copies.

As far as when this will happen, Douglas Adams said it best when he said  “I love deadlines. I love the whooshing noise they make as they go by.”. That said, I hope to have an Alpha patch out to testers by the end of August.

Madsiur

  • *
  • Posts: 11
    • View Profile
I'm really interested by this project! Good work so far!

I was thinking implementing MSU-1 in FF6 myself, but since you started this project, I was hoping I could use your project as a base for mine (a more extensive hack). I have two question:

1) Have you succeeded in  hijacking the NMI routine in order to fade out tracks? A guy on a FF6 hacking forum reported the same graphical glitches when trying to implement MSU-1, I wonder now if it's possible to implement fading out with the NMI routine...

2) A number of event commands are use for song. Did you modify any or all of them? Here's the list. They are use in event sequence:

Code: [Select]
#  Bytes  Description
-----------------------------------------------------------------------------------------------------------
EF : 3    : Play song A with volume B. Song is actually A AND $7F. Bit 0x80 is unknown.
F0 : 2    : Play song A, full volume.
F1 : 3    : Fade in song A, with transition time B.
F2 : 2    : Fade out current song with transition time A.
F3 : 2    : Fade in previously faded out song with transition time A.
F6 : 4    : Song tweaking, with various subcommands on first parameter. (not sure if can be applied to MSU-1)
F7 : 1    : End most recent loop of currently playing song. (not sure if can be applied to MSU-1)
F9 : 2    : Pause execution until music passes through point A. (Needs investigation, I'm not sure how that actually works).
FA : 1    : Stop temporarily played song.

Once again, Good work!
« Last Edit: 2015-07-13 20:47:17 by Madsiur »

insidious611

  • *
  • Posts: 152
    • View Profile
Thanks for the event commands table! I've actually been hooking around the routine where the song selection and volume are pushed from RAM into the SPC and haven't touched those yet *but* they're probably going to be useful in investigating the current problem-tracks of Dancing Mad and The Phantom Train, which appear to be using maybe the F7 command to transition to various different "subsongs" within one actual in-memory song. We can't actually implement that in MSU-1, *but* we can trap those calls and implement them as transitions to different tracks, enabling the proper handling of those songs.

I haven't touched the NMI stuff too much since mentioning it because I want to get people testing it without the fading first, to make sure we have no major bugs in the current implementation and provide kind of a baseline so I know that if I broke something it's due to the NMI stuff.
« Last Edit: 2015-07-20 18:20:38 by insidious611 »

insidious611

  • *
  • Posts: 152
    • View Profile
With a couple minor exceptions, all audio work is now finished. I need to get the installer functioning 100% and then we'll see about getting it out to testers for feedback.

I have a bit of a problem though, and I'm going to be asking for a bit of feedback on this

The MSU-1 does not support seeking or resuming tracks. Therefore, if I stop one track and start another, it always starts at the beginning. This isn't an issue *except* during battle scenes, where you would maybe hear the first few strains of an area's melody, then the battle music because you got into a battle, then the victory fanfare, and then the area's melody would start over again. This leads to a large portion of different songs not really being hearable due to constantly being restarted. There's two basic solutions to this issue.

The first is basically to ignore the issue, have people just kind of deal with the restarting area music, maybe use a second track type to skip intros so it isn't as obvious.

The second is use the SPC (original style) music for battle and victory themes, merely fading out the MSU-1 area music before battle and then fading it back in afterwards. This isn't perfect either as it means you'll be "missing" a bit of the area melody when it fades back in (since it won't have stopped), but it's much better imo than restarting it every time.

The problem with the second idea off course being that that means the normal battle theme and victory fanfare will not be being replaced. The boss themes will be replaced as normal because they don't happen often enough for this to be a problem, but yeah.

My question is, which do you guys favor? Replacement of all tracks including battle/victory but area music restarting after battles, or leave the battle/victory music as is but have smoother music otherwise.

saftle

  • *
  • Posts: 88
    • View Profile
I'm personally a fan of the second option. A seamless audio experience is better than having to idle in an area to hear the entire song. On the world map, it would get pretty repetitive once you reach higher levels and can down most mobs with a few attacks.

However, both options would be even better, since I'm sure people don't agree with me.

Will you be potentially working on a solution later in order to not need either workaround?

Covarr

  • Covarr-Let
  • Administrator
  • *
  • Posts: 3940
  • Just Covarr. No "n".
    • View Profile
Will you be potentially working on a solution later in order to not need either workaround?
This is a limitation of the MSU1 spec. It doesn't have any seek feature, and can only have one track loaded at once. If you load another, it will run from the beginning. No way around it unless Byuu creates an updated version (MSU2?), and adds support for it to his emulator (Higan/bsnes), as well as the SD2SNES cartridge adding support for the new standard. This isn't impossible, but it's not especially likely.

theonyxphoenix

  • *
  • Posts: 22
    • View Profile
I would also vote for the second option. I know that this is probably a bad idea, but playing through the BNW hack it seems like a lot of the battle music tracks are ignored in certain areas like the Cult of Kefka tower, etc. Would it make it any easier to not have to switch back and forth as often.  Personally I liked this change in the mod in just about all instances.

insidious611

  • *
  • Posts: 152
    • View Profile
Just wanted to pop in and confirm that leaving the battle/victory music using the SPC so that area songs can play all the way through is the direction we're going. The alpha I'll be giving out to select people soon may not have this feature (I'm planning on getting everything wrapped up in a nice package that can be easily tested so that I can make sure there's no bugs in the current implementation before I shake things up)

Progress is slow as I'm currently dealing with some issues in my life that make working on these things difficult. I'm currently on a two week vacation spending time with family away from these issues but it goes without saying I'm not working on my vacation :P. But I also wanted to assure people this is still a priority for me.                                           

theonyxphoenix

  • *
  • Posts: 22
    • View Profile
Enjoy you vacation and look forward to further developments.

RetroDan™

  • *
  • Posts: 9
    • View Profile
I was part of the Zelda MSU-1 and the Mega Man X MSU-1 patch teams, am currently part of the BS Zelda and Ancient Stone Tablets MSU-1 teams, and I am ecstatic to see my favorite Final Fantasy being updated with this patch (especially since Drakon refused to release anything he won't get paid for).

I have an SD2SNES, a deep love of this game, and the single-minded determination to go through the game in its entirety just to test the music tracks.  If there is any way in which I can assist, please let me know.

insidious611

  • *
  • Posts: 152
    • View Profile
There's a few more things to do on the installer, mostly window dressing at this point, but it is now working.

I'm going to finish up the installer and do some basic testing on my end over the next couple days, and once I'm done I'm going to get this out to our Alpha testers.

Silly installer teaser:


insidious611

  • *
  • Posts: 152
    • View Profile
Good news!

http://board.byuu.org/phpbb3/viewtopic.php?f=16&t=700

The MSU-1 spec is going to be updated with Resume support! Which means I can potentially replace the battle/victory music and not interrupt the area music! I am not going to be implementing the version in bsnes-plus, I'm going to wait for a stable implementation in higan v096, so this is not in the cards for this project in the immediate future, and in the immediate future (after the alpha which should be coming out soonish) I'll be implementing the version that uses the SPC for battle/victory.

However, this means that yes, saftle, if things with the emulator developers go as they've said they should, we will eventually have a solution that doesn't need the workaround!

insidious611

  • *
  • Posts: 152
    • View Profile
So at this point I've finished coding and testing the installer (after a 13 hour coding marathon). It is working 100%. Some polishing may be necessary, I'll check it again in the morning when I'm less tired.

I also need to turn it from its current state as a collection of .py files that depends on having Python3.4, PyQt5, and PyCurl installed into an EXE file that can be ran like a normal installer and doesn't depend on any of these being installed (instead bundling in compressed versions of the python interpreter and libraries), but this shouldn't be too difficult.
« Last Edit: 2015-09-28 15:31:44 by insidious611 »

insidious611

  • *
  • Posts: 152
    • View Profile
Alright, the installer seems to be complete enough for an Alpha test. I'll be doing a bit of a stream (which will then be uploaded to youtube) of the mod in its current form (complete with bugs) today, going up to the scene where Terra wakes up in the Old Man's house. Following this I'll start sending the installer out to selected testers. For now, this is Covarr and, provided he's still willing to test (I'll be PMing him first so I can be sure) RetroDan, as well as possibly another person who has PMed me. Anyone else willing to test is encouraged to apply, though I require people with emulation experience, romhack experience, and experience with FF6. You require a Final Fantasy III US ROM, version 1.0, without a header. The installer should detect whether or not you have the right ROM. Optional desires of mine are testers with experience with MSU-1 hacks, experience with a SNES debugger, and/or who own an SD2SNES.


I'm going to put this in big bold text for the people who like to skip over the technical stuff.

The Private Alpha is complete and we are now accepting testers. Please read above for requirements.

Please PM or email me to apply.

My email is

If you are selected to test I am trusting that you will not leak my alpha-grade IPS patch or patched ROM to anyone. Please do not betray this trust.

Source code is available on my private BitBucket which will be opened to testers to view. When we reach public beta and beyond, this BitBucket will be made public and also duplicated on GitHub.
« Last Edit: 2015-09-28 17:16:12 by insidious611 »


insidious611

  • *
  • Posts: 152
    • View Profile
The below is a stream I did earlier. It's a full demonstration of Dancing Mad in its current state, from the intro through to just past when Terra wakes up and remembers her name. I tried to keep the talking to a minimum so that you can hear the music in all its glory, but I did stop to address some questions and explain and point out some of the current known bugs.

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

RetroDan™

  • *
  • Posts: 9
    • View Profile
The below is a stream I did earlier. It's a full demonstration of Dancing Mad in its current state, from the intro through to just past when Terra wakes up and remembers her name. I tried to keep the talking to a minimum so that you can hear the music in all its glory, but I did stop to address some questions and explain and point out some of the current known bugs.

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

I've found several issues with the SD2SNES version, but I can't seem to create issues in the BitBucket, possibly because I'm assigned read-only.  Would you prefer that I list the issues I encounter here, or in the BitBucket?

insidious611

  • *
  • Posts: 152
    • View Profile
Probably in BitBucket. I just gave you write access, lets see if that helps.

EDIT: Oops, I also hadn't turned the issue tracker *on* :D. Fixed that too.
« Last Edit: 2015-09-29 15:47:31 by insidious611 »

EQ2Alyza

  • 7th Heaven Crew
  • Global moderator
  • *
  • Posts: 3191
  • Dilly-Dally Shilly-Shally
    • View Profile
    • EQ2Alyza - YouTube Channel
The below is a stream I did earlier. It's a full demonstration of Dancing Mad in its current state, from the intro through to just past when Terra wakes up and remembers her name. I tried to keep the talking to a minimum so that you can hear the music in all its glory, but I did stop to address some questions and explain and point out some of the current known bugs.

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

Sounds really good. LOVE Terra's Theme, so beautiful. I look forward to playing this when live, especially since I've never played FF6 all the way through.