Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - insidious611

Pages: 1 2 3 4 [5] 6 7
101
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.

102
Putting in a vote for 4.

103
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

104
First, a reply:

theonyxphoenix: That is actually really helpful since you're the third person to say that, which means that that's more than likely a "bug" we can cross off our list. Which means the only bug currently, other than missing fades, is no music on load of a saved game.

Now that my head is a bit less fuzzy, heres some technical details on the hurdles I'm working to overcome. If you don't want to deal with overly technical stuff, skip to the numbered "workarounds" at the bottom for an idea of the choices we have that *aren't* dangerous.

The NMI, or "Non Maskable Interrupt", is generic computing term for an Interrupt (basically a request to the CPU, literally 'interrupting' its current behavior) that must be handled if it's enabled. On the SNES, the NMI, if enabled, happens every VBlank, so once per field or roughly 60 times per second.

For the most part up until now I've been hooking the routines from the game itself, that is, taking requests the game makes to its own code and rerouting it to mine. For the fading, and for some later things I'm going to have to re: timing (the Opera scene and Dancing Mad during the final battle, among other things), I am now hooking into the game's NMI routine, which means I can run code every frame. I'm using stack manipulation to make sure that I don't harm the game's own NMI handling in the process.

Now, the fading itself is pretty simple. Reduce or increase the volume of the MSU every frame until we've gotten to our desired volume (or close to, since I'm reducing by 5s). The problem comes when fading from one track to another. Currently, we're hooking the game's "new track" routine and immediately switching to an MSU track and playing it, falling back to the game's own SPC routines if a track is missing or unplayable. This allows us to handle looping sound effects like wind and train sounds that are implemented as "songs" in the game but which we don't want to have to do on the MSU. To do the fading, however, we need to, when we're told to switch to a new track, store the requested track and a variable telling my NMI routine that we're fading out and into a new track in RAM, since this needs to be handled over time.

However, this means that the NMI routine, the one that runs every second, needs to handle the actual switching of tracks. Which is a problem for two reasons. One, you need to loop after loading a track and wait for it to be loaded and ready to play before you can play it. This is done because Byuu wanted to make it possible for the MSU-1 to be implemented in cheap, slow flash memory or even as a CD. This loading loop takes less than a second in higan, but we can't assume it will take any specific amount of time. And the NMI only lasts a tiny fraction of a second itself. If I'm still in NMI code when the NMI ends, massive graphical corruption can result, so anything I do during it needs to be only a few instructions long.

We can work around this problem by using the "60 times a second" nature of the NMI. We can set the track to load, set some variable to tell my NMI routine we're waiting for a track to load, and check if it's loaded every frame. On Higan, this might actually be marginally slower than just looping to wait for the track since I'm not sure it even takes 1/60th of a second to load a track, at least on my machine, but it should be fast enough. Then, we would play the track once the MSU states that it's loaded, or, deal with it if it's a bad track.

Which leads to my second problem. Currently, if we detect a "bad track" (one that's missing, in the case of the wind or train scenes, intentionally), we handle it very cleanly: Since we're already in the game's native music loading routine when we're switching tracks, we just return to the routine we were called from without muting the SPC.

However, if we're doing the switching and playing during the NMI, we don't have a routine to return to, so there's no way to fall back to the original SPC routines... Except...

There is a workaround that might work to do this, but it's *extremely* messy and I don't particularly like it:

If we've got a bad track, we can load the correct stuff in the correct RAM spots and registers and "jump" to the original SPC routine, an instruction *after* the point where I hook it into my routine, effectively going into the game's original code to call for a new track in order to deal with our missing track. The problems?

For one, we'd be doing this during an NMI. I'm not sure if the game's SPC code is short enough to be called during an NMI, it's generally called during scene transitions during which the screen is blank and the NMI is disabled (which, we can't very well disable the NMI during the NMI). This could lead to graphical corruption or other bugs.

For another, we'd be at least 2 frames (or 1/30th of a second/0.03 seconds) behind the original call to load the song as far as loading the SPC version, which could throw timing off considerably.



Other workarounds?

Well, there's a few that come to mind at the moment.
1. We can abandon the idea of fading completely, keeping music transitions their current sudden (but working and with simple, easy to debug code) selves.
2. We can do an extremely quick looped fade during our original routine (on the order of less than a frame). This *should* reduce or eliminate popping but won't really sound any less sudden to human ears.
3. We can do a version of the patch that has good fading but that has no fallback routines: Looping sound effects or missing music tracks won't play at all. This is already the case if you're running in BSNES v075 because the "bad track" routine in the MSU-1 was not implemented yet at that point. (which is why I suggest Higan or the SD2SNES when this hack gets released)

105
Hrm.. I'm not sure I'm going to be able to actually fade between tracks... There's two things preventing me from doing it, one of which I might be able to work around but one I know I can't.

The one I might be able to work around is that I need to do anythingthat involves timing during the NMI which is fairly short, and not long enough to wait for a track be loaded and check if it's missing.

The second one, which I can't work around and which is fairly important to keeping things functioning, is that if I'm changing tracks during a time that's not during the SPC loading routine, I can't do the fallback to the normal routine if a track is missing, such as in the case of wind sound effects and other "songs" I don't handle.

So I think we're going to just have to deal with the sudden track changes without fades. :/ That makes me unhappy but I can't really see a way to avoid it atm.

106
Honestly, unless either of those hacks modify the sound routines or a certain, empty portion of ROM I'm using for my own stuff, it's likely they're both compatible. I'll give them a look through though.

I had a graphics card fail on me and that's kind of put a damper on my mood, so I haven't been working too hard on this lately. At the moment what I really need to do is do a comparative runthrough of the game with the mod and without it to see if there are any major issues of music not playing, or the wrong music playing. What I'd counted as a bug, the Narshe music playing until you get to Figaro, someone said might actually be a thing that happens in the original. So it's that kind of thing I need to test for.

Other than that, what I *really* need to do is get fading working so that music transitions aren't so rough, but that requires hooking the NMI so that I can time said transitions, and that's not the easiest thing in the world.

Also, I still really need to figure out how saving and loading works for the music routines, so that I can get it playing the right music on game load.

107
Did a bit of a stream testing the game out earlier.
http://www.twitch.tv/insidious622/b/655660538

Following it, and my dissatisfaction with the fact the music was so loud you couldn't really hear the sound effects in battle, I applied a brute-force scaling of the volume down by 0x40.

This is *still* a bit loud but at least you can hear the sound effects in battle now.

108
I'm probably going to need to put out a call for Alpha testers soon.

However, I need anyone who signs up for this to be aware of a few things vefore doing so.

1. It's an alpha test. In the classic sense, as in shit will be broken and I need you to both understand that and be able to tell me where, when, how, and in what context something broke, providing me with savestates if necessary

2. It's going to be at least a 3 gig download.

3. Nothing is to be released publically until the work is done. I find a subpar leak I strangle you with shielded CAT6

4. I'm going to need you to have a relatively deep familiarity with the game,and specifically any musical cues

109
Today is a good day! We've finished the OCRemix album completely. Well, other than figuring out what to do about the Opera tracks, anyway.

Also, I may have fixed a couple bugs, but I'm not sure yet. Heck, I may have caused a bunch more. We'll see.

110
obesebear: I plan on doing more FF6 improvement after this, but I'm focusing on this for now and am not going to announce my next plan until after this is release-quality. I noticed FF6 getting a lack of love too, and wanted to fix that. :P

111
Current Bugs:

* (Maybe fixed) Playing game music and MSU-1 music together after battle. Hacked around by zeroing the game's internal music playing variables if MSU playing succeeds, that way it doesn't have anywhere to load from. Seems to work. Better fix would be to find out what routine is re-enabling internal music, but I haven't had success with that yet.

* (Not yet fixed, but fix proposed) Silence or looping Prelude (load screen music) on load of saved game. This is likely because  some or all of the internal music variables are being saved on game save and then loaded on game load, and because we've told the internal music routine to mute the music, it's being skipped. The possible fix? Hook the save routines and copy our variables in place of the game's. This *should*, as long as the game is calling the "new track" routine on load, mean we're playing the proper music on load.

I'm not releasing this until we've got three things, roughly in order:

1. Special handling working for at *least* Dancing Mad, we might be able to just work around The Phantom Train but we need to be able to play 3 different loops for the Dancing Mad tiers even though there's only one internal track for it.

2. All of the music for all of the versions looped and trimmed.

3. A full playthrough of the entire game with everything working, on Higan, Bsnes (though on Bsnes SPU fallthrough on missing track won't work) and, if I can find someone with an sd2snes or afford one for myself, sd2snes, with MSU-1 music working for everything *but* the opera. Also, a full playthrough of the game on an emulator that doesn't support MSU, to make sure we aren't breaking things.

The opera is likely going to be left for a second release because it's going to involve *major* hooking of routines and timing issues, so for the first release it's probably going to be left to SPC only.

112
Guess what!

We have liftoff! The game is playing our tracks!

There's a bunch of bugs to fix, but lets celebrate what we have with a video.

https://www.youtube.com/watch?v=vKgSqG2Tbfc

113
Having done some investigations into how FF3's internal music handling works, I had to update a number of the tracks above to reflect new findings.

114
This bit is mostly here to provide notes for myself because I have a nasty habit of losing important info in hard drive crashes:

FF3us Important RAM Map:
$1301: MusSongID
$1302: MusVolume

Important hardware registers:
$2140-$2144: SPC Communications Registers

115
WIP / Re: [In Development] FF8 Voiceover Project
« on: 2015-04-24 08:15:36 »
Oh, I certainly didn't mean to sound impatient, it's more... Stuff like this has been attempted before and then abandoned. :P So I wanted to express my sincere wishes that this be completed.

Glad to see you're already so far along though, that's... extremely impressive.

116
Nezdude's links work for me.

117
So, Covarr and I have been talking about the Opera Sequence, because it's... a mess, in general. Even if we forget the fact that it's musically interactive and rather tightly timed in the original, the OCRemix versions, which I definitely would select because they're *amazing*, concatenate two parts into one in one place, and add or change a bunch of lines.

Not to fear though, I've not given up.

It's likely that the first release will just have the normal SPC sound for this sequence, and that a later release will address these plans, but in any case, the plan is to retime the sequence entirely ourselves for the OCRemix version. The text display will be removed, and the "mouth flaps" will be redone to match the extra lines/words, and the timing fixed. This is going to be a pretty massive undertaking but imo it's necessary. When we get to this point, *ANY* help that *ANYONE* has regarding SNES ASM would be *extremely* welcome.

118
EDIT: Since this progress table was long since out of date it's been removed. All tracks from all the original sources have been looped and tested at this point.


Update! 7/13/15

Due to issues with timing and properly splitting the music, the OCR versions of the Opera tracks have been removed and replaced with another fan remix.These replaced tracks are converted, looped, and tested. These also include replacements for some of the tracks the OCR was missing, such as Grand Finale and iirc What??.

Update! 10/7/17

GitHub user edale2 has been helping normalize the audio, and providing a few more alternate tracks, including some Black Mages covers. Expect these in the next release of the installer.

119
Yeah, but the problem is that it was kind of nerfed hard in the other direction by making it just the number of escapes. Maybe a compromise?

120
I'm headed off to bed, but I've begun the process of creating the .pcm files (which involves rather tedious amounts of trimming, pinpoint exact loop sample checking, and testing.) I have the .pcm files for all 3 versions for track 2 and track 1, though the OCRemix version actually has two options for track 1 (the opening): The native tempo, which is completely out of timing with the actual game past about the 2 minute mark, and uptempoed to almost match the OST.

121
Regarding Big Bang Theory, I have my own reasons for disliking the show. It seems to serve to perpetuate negative stereotypes of intelligent people, and in particular it seems to make fun of certain traits that are common in those with Asperger's Syndrome. I find this sort of... negative stereotype acceptance troubling.

122
So, I was rather inspired by DLPB's soundtrack mods for FF7, and FF8, by this old thread nobody really replied to, by FinalFanTim's remixes, by OCRemix Balanche & Ruin, and by documentation of the MSU-1, to attempt a mod to replace the audio of FF6 with higher fidelity/remixed versions.
So without further ado...
PLEASE NOTE THIS FIRST POST NEEDS UPDATING
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, a number of other sources of remixed/remastered FF6 music.

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.

off 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 NOW AVAILABLE HERE
Development occurs on my GitHub, which is here

What Songs?

This mod will contain audio from at least these 6 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)
5. MP3s of Final Fantasy Acoustic Rendition
6. MP3s of ChrystalChameleon's FF6 remasters.

You will be able to choose which specific audio files you want to install, or you can choose one of 8 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. Alternate loops of the OCRemix album provided by qwertymodo
5. The Sean Schafianski Remaster plus the OST
6. The Final Fantasy Acoustic Rendition plus the OST
7. ChrystalChameleon's FF6 remixes plus the OST
8. 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.

In addition, other tracks are included for you to select from that don't fit any of the above. This includes Opera music by the Tokyo Symphony Orchestra (currently disabled due to coding difficulties :( ) as well as music contributed by fans and other contributors to the project.
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 will use 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 wanted. Specifically, I'd like people to pay special attention to the Opera scenes and make sure those are functioning properly.
In addition, people with experience dealing with SNES assembly, NMI routines, and most helpfully, editing FF6's specific NMI routine without causing issues, are critically needed to help with the fading issue. See the github issue HERE. Please fork and make pull requests!

Current Status?

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.

2017-09-17
After a long hiatus, work is proceeding on fixing some issues with the installer, as well as fixing some project organization issues. Work has moved from BitBucket to GitHub.

2019-01-06
Dancing Mad is currently working and mostly feature-complete on Japanese, and US V1.0 and V1.1 ROMs. madsiur is still working on fading code.


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. I encourage moderators and admins to discourage such talk in general. 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, StreamStatus, 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!

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

First working proof of concept
https://www.youtube.com/watch?v=vKgSqG2Tbfc

123
I haven't seen you on IRC at the same time as me lately, or I'd have poked you about this there since this is very much a minor thing. But I was wondering if it would be possible to have a patch to return Chocobokkle to its Japanese damage calculation (escapes*level, instead of just escapes). This seems like it'd be the sort of thing that would fit in with Reunion, and it just kind of would be a neat change in general, imo.

124
I'm working on mockups for data files for the "genericized" version, in the experimental branch. I have a basic one for FF7 that would produce something similar to (if not exactly like) what the current program outputs. I'm next going to work on one for FF6 (US Version, AKA FF3) running in Higan.

Once I've finished tables for FF6, I think I might add what I learn from it to the wiki.

EDIT: Didn't want to double post. It should be noted that, especially for this kind of purpose, XAMPP is basically "point and shoot" as far as setting up a webserver. If you can install Anxious Heart, you can probably install XAMPP. :P

125
Also, I'd eventually like to create an EXE (or maybe even DLL, loaded in by the updater) version of the image generator that's its own little webserver.
I'd need to find out how to implement GD in C# for this, though, and I'd consider this much further down the road than even genericizing the tool.

If I did do this, it would basically be a matter of "run this tool, then run that tool."

Honestly though, this is a bit of a "poweruser tool" anyway. After all, setting up a stream isn't exactly the easiest thing in the world to begin with, and once this tool becomes genericized, adding more games to it will require a knowledge of memory offsets and a basic idea of how
to layout text based on dynamically generated variables. :P

Pages: 1 2 3 4 [5] 6 7