libretro / flycast

Flycast is a multiplatform Sega Dreamcast emulator. NOTE: No longer actively developed, use upstream repo for libretro from now on - https://github.com/flyinghead/flycast
http://reicast.com
GNU General Public License v2.0
155 stars 77 forks source link

Sound volume is wrong in some games #49

Closed marcrobledo closed 4 years ago

marcrobledo commented 6 years ago

Crazy Taxi car engine sounds too low. In Puyo Puyo Fever, player 1 in-game voices sound also too low. Player 2 voices sound fine.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/59714208-sound-volume-is-wrong-in-some-games?utm_campaign=plugin&utm_content=tracker%2F49543223&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F49543223&utm_medium=issues&utm_source=github).
inactive123 commented 6 years ago

The AICA code is still premature (albeit apparently more fleshed out than MAME implementations), and the DSP code right now is a complete stub for anything other than 32bit x86.

flyinghead commented 6 years ago

Here is a first shot at a generic DSP implementation: https://github.com/reicast/reicast-emulator/commit/8c3247d1b2a6ffb4a3a9c8b4b6e1e64208e36881

It's based on the dynarec code and various other sources. Not sure about the performance...

It seems to work and you can now hear the engine, menu sounds and balloons popping in Crazy Taxi. You need to set aica.NoBatch = 1 to enable the DSP (default is 0).

inactive123 commented 6 years ago

Thanks a lot! I backported it just now.

inactive123 commented 6 years ago

The only bug I notice @flyinghead is that for certain sound effects with echo effects, they tend to not properly fade out during transition scenes. For instance, if you are playing as Maxi in Soul Calibur and he makes one last voice sample before you press Start to move to the next round, I think you can briefly still hear that sound clip instead of properly fading out.

I hear some similar issue like that in Code Veronica when you select the lighter at the very beginning of the game in order to illuminate the area, then you press Start to skip the cutscene. You will hear some kind of very distant repeating sound continuing to go on in the background then when on a real DC it would have probably properly faded out. It's hard to describe and you might have to turn the volume up in order to even pick up on it. It is a minor thing but it still stands out nonetheless.

inactive123 commented 6 years ago

Another game to pick up on these potential audio echo issues would be Daytona USA 2001 - at the VMU select screen and the title screen.

flyinghead commented 6 years ago

What's wrong with Daytona?

inactive123 commented 6 years ago

On screens that are supposed to be silent or when sound effects should properly fade out and then not be heard again, you can still hear some residues of sound samples. Not sure if I am explaining this particularly well but you can notice it on VMU screens, title screens, the pause screen, etc.

You might have to watch some Youtube video clips from real Dreamcasts or run a real Dreamcast to pick up on the difference.

flyinghead commented 6 years ago

Daytona uses the DSP on its menus to add a reverb effect to button press sounds. On the VMU screen one on the two sounds is distorted (when you press A), I think. Could be a problem with the DSP but iirc the dynarec one does the same (plus some clicking). But the reverb/echo is normal there.

flyinghead commented 6 years ago

Not the VMU but you can hear the reverb distinctly: https://www.youtube.com/watch?v=4IXtNDbzZso&feature=youtu.be&t=94

inactive123 commented 6 years ago

OK, I'll take your word for it I guess. I do still own an original Dreamcast with a copy of the game Daytona USA 2001. I guess I will run it later this week to see there are any audible differences to be noticed.

flyinghead commented 4 years ago

DSP code should take care of these issues now