[Beta release] Ultrasound - sound effect replacement/addition mod

  • Thread starter Thread starter ficedula
  • Start date Start date
Status
Not open for further replies.
We found a snag. There are some lines that multiple characters give depending on who's in your party which all share the same text window (eg in the Gold Saucer play, every one of the potential dates has some lines). Will we have a way to play a different sound effect based on who's in the party, or will we have to find another workaround?

Also, FF7 has a text macro for {PARTY1}, {PARTY2}, and {PARTY3} which will obviously be impossible to voice over individually.
 
Last edited:
You just have to add a small if clause to the script when calling the dialogue to get who is in your party and call the sound effect accordingly. For the protagonist's names you have to record every possible statement and add every possible text to the scene and replace the script command calling the dialogue with a variable in it by another slightly more complex if structure.
 
We wanted to do this without modifying the game's scripting because it causes lots of incompatibilities with some other mods.
 
Oh, I see. In that case I fear that there is no good way around this other than altering the texts removing all variable content so it doesn't matter who says it. For the first issue you probably have to replace all those statements by text that the party leader speaks.
 
Isn't it possible to determine the character by the field model file? The other solution might be to get information about the party constellation.
 
Oh, I see. In that case I fear that there is no good way around this other than altering the texts removing all variable content so it doesn't matter who says it. For the first issue you probably have to replace all those statements by text that the party leader speaks.
No, that isn't the case at all.

I don't see any problem adding support to Ultrasound for having different voice files for the same text box depending on who's in the party. Might take a bit of time to code but there's no technical reason it can't be done; it's already injecting a DLL into the FF7 process, so it can access the necessary information without too much trouble.
 
Ok sure, technically it is possible but it should be a lot simpler to alter the scripting. Shard said that this causes trouble with other mods. Is this really such a big deal to add 2 lines of if structures?
 
Given the choice between modifying every script where there is dialogue said by a 'generic' party member, which breaks compatibility with any other mods that modify the field files; or adding support for it into Ultrasound ... I'm not sure why you think the former is simpler.

Well, I suppose it would require less programming. It's noticeably more work though, given that it involves both having to change all the relevant field scripts and rewrite the dialogue to make sense when spoken by the party leader.
 
Modding the PSX version I learned that difficulty and the required amount of work are two completely different things, Im used to doing some simple hand work on a mass of field files ;)

And it involves more than just getting the variables in the dialogues to work, Shard pointed out that Ultrasound must know which speaker to pick from the start for a statement that is given by multiple potential party members. Both issues he mentioned should cause trouble, if you find it easy to include support for that of course you do not have to touch the scripts.
 
New version: http://www.ficedula.co.uk/voices/Ultrasound_0_40.zip

Changes:
-Use OpenAL output & buffer cache to try and reduce latency
-Support OGG files
-Support selecting voice files based on party members

For the last feature, it lets you change which audio file is played depending on whether a particular character is in the party or not.

The way to set that up in the XML is like this:

Code: [Select]
Code:
  <Entry File="elm\tifa1.wav" ID="119" Part="a" Char1="2">...</Entry>  <Entry File="elm\tifa2.wav" ID="119" Part="a" Char2="2">...</Entry>  <Entry File="elm\tifa3.wav" ID="119" Part="a" Char3="2">...</Entry>  <Entry File="elm\vincent.ogg" ID="119" Part="a" CharAny="7">...</Entry>
What says is that when dialogue 119a is played:
-If the character in position 1 in the party is Tifa, play tifa1.wav
-If the character in position 2 in the party is Tifa, play tifa2.wav
-If the character in position 3 in the party is Tifa, play tifa3.wav
-If Vincent is anywhere in the party, play vincent.ogg

(In the game, Tifa uses character ID 2, and Vincent is ID 7. The IDs are the same as in the savegames, see http://wiki.qhimm.com/view/FF7/Savemap)

That means you can cope with dialogue that includes the {PARTYx} tags by recording multiple versions and having the correct version play back.

Shard - can't remember if we ever discussed this, but how do you want to handle choices? Although Ultrasound doesn't currently support it, it would be possible to work out which option was selected, and play an audio file based on that. The only issue is that of course once the player hits Enter to confirm which option they want, the game (usually!) goes straight onto the next piece of dialog, so you'd have the audio playing 'behind' what was on the screen.

Options I can think of:
-We don't care, we aren't going to voice choices
-Voice the option and just delay any audio for the following window until the option audio is done playing
-...any other suggestions...?
 
Another option would be to voice each choice (in the characters head) as the player highlights the choice with the hand cursor, and silence it when they move to a different choice or they pick one.
 
If that doesn't work, we may just have to never play dialogue choices. There are some places in the game where the character doesn't even speak the choice you make, and other places where they do.
 
Victory; http://www.ficedula.co.uk/voices/Ultrasound_0_41.zip

Only change is that dialogue choices can be voiced now. The tags needed to trigger that in the files are:

Code: [Select]
Code:
  <Entry File="elm\103a.wav" ID="103" Part="a">“Then let me explain  how to use the world map.”</Entry>  <Entry File="elm\103b.wav" ID="103" Part="b">“Well then,what do you want to know?” Changing camera angles Map indicators Operating the buttons</Entry>  <Entry File="elm\103b_0.wav" ID="103" Part="b" Choice="0"></Entry>  <Entry File="elm\103b_1.wav" ID="103" Part="b" Choice="1"></Entry>  <Entry File="elm\103b_2.wav" ID="103" Part="b" Choice="2"></Entry>
Note the first two tags are for 'regular' dialogue; the last three are for the 3 options that are displayed as part of dialogue 103b.

When the prompt is first brought up, whichever option is initially selected will be played after the current 'regular' dialogue has finished speaking. Moving to another option will voice that choice (cancelling any existing choice file that's playing). Selecting an option doesn't automatically silence the choice, but any other dialogue being played will replace the choice (so in practice, selecting a choice usually will silence it since you almost always move onto another dialogue box!)
 
So I want to start to replace the sound with the files I have from the PSX.

First thing: Can you divide the files by their content, please? So I have folders for voice, sound and ambient. Atm. as it is now it is a bit messy.

Second: Is it possible to dump the current played sound with its ID? Ideally it will ignore sound which is already replaced by the tool. This way it's easier for me to find specific sounds.

At last there is a delay when the tool kicks (first time when a replaced sound is played) in but after that it plays perfect. (only as a note)

Edit
Oh, great tool so far!
 
Second: Is it possible to dump the current played sound with its ID? Ideally it will ignore sound which is already replaced by the tool. This way it's easier for me to find specific sounds.
If you run DbgView while the game is running (with Ultrasound), it logs sounds to the debug output along with a note saying whether the sound is being replaced by Ultrasound or not. You should see lines like:

Code: [Select]
Code:
Sound 0 0 102 64...not overridden, allowing default proc
The third number is the sound ID.
 
Very nice. That was quick. When we get some of this stuff edited, I'll let you know if anything needs to be tweaked.
 
If you run DbgView while the game is running (with Ultrasound), it logs sounds to the debug output along with a note saying whether the sound is being replaced by Ultrasound or not. You should see lines like:

Code: [Select]
Code:
Sound 0 0 102 64...not overridden, allowing default proc
The third number is the sound ID.
But it will also dump information I dont need? I have no time to hunt down for information I do need.

@Shard
I hope SE will hire some of the voice artist for their 'Re-Try'!
 
But it will also dump information I dont need? I have no time to hunt down for information I do need.
OK, but Dbgview does have a filter, so if you set the filter to only display messages containing "not overridden", you'll only see output about sound effects that are being played and haven't been replaced by Ultrasound.
 
Status
Not open for further replies.
Back
Top