Emulator Issues #7228

Star Wars Rogue Leader screeches in HLE Audio

Added by JMC4789 over 3 years ago. Updated 5 months ago.

Status:Fixed% Done:

0%

Priority:Normal
Assignee:-
Category:DSPHLE
Target version:-
Operating system:N/A Relates to performance:No
Issue type:Bug Easy:No
Milestone:Current Relates to maintainability:No
Regression:No Regression start:
Relates to usability:No Fixed in:5.0-3260

Description

Game Name?

Star Wars Rogue Squadron 2: Rogue Leader - GSWE64

What's the problem? Describe what went wrong in few words.

It screeches at me in HLE audio. I don't like that. It happens during the opening, it happens during cutscenes, it happens whenever it feels like. But it's always consistent when it happens.

What did you expect to happen instead?

The audio should play right.

What steps will reproduce the problem?
1.Start up the game with volume not muted. HLE displays glitches, LLE won't.

Dolphin 3.5 and 3.5-367 are old versions of Dolphin that have
known issues and bugs, so don't report issues about them and test the
latest Dolphin version first.
Which versions of Dolphin did you test on?

It's been around since the NEW-AX-HLE merges

Does using an older version of Dolphin solve your issue? If yes, which
versions of Dolphin used to work?

no

What are your PC specifications? (including, but not limited to: Operating
System, CPU and GPU)

Core i5 3570K, GTX 760, Windows 7 x64

Are you using the 32 or the 64 bit version of Dolphin?

x64

Is there any other relevant information? (e.g. logs, screenshots,
configuration files)

Audio Dumps - http://www.mediafire.com/download/6qjlm3vraz5fp2m/StarWarsRogueSquadronAudio.7z

History

#1 Updated by JMC4789 over 3 years ago

Fixing the title

#2 Updated by JMC4789 about 3 years ago

  • Category deleted (dsphle)
  • Status changed from New to Accepted
  • Milestone deleted (Current)

So, I did a bit more research on this, and it's actually be around since before the New-AX-HLE merges (since I finally got into game on an older build.)

This happened before the New-AX-HLE merge, so removing the regression tag, removing the milestone current. Now onto the meat of things.

It seems that the behavior is also a bit weirder than I originally thought. For most songs, it will play for a few seconds then garbage... but a few of the stage songs don't do that. I'll demonstrate. It appears to play the first part in one ear, then the other. It's also playing the end of the track from the cutscene, rather than the song from the level.

HLE - https://dl.dropboxusercontent.com/u/484730/DolphinRogueLeader%202014-09-17%2017-59-57-71.ogg

I left the end of the cutscene in the LLE recording so you could hear that.

LLE - https://dl.dropboxusercontent.com/u/484730/DolphinRogueLeader%202014-09-17%2018-08-42-08.ogg

If someone would check this out, I think it's likely a pretty interesting audio bug. Also, removing delroth as owner since it is confirmed to exist before the new-AX-HLE merger.

#3 Updated by JMC4789 over 2 years ago

  • Category set to dsphle

http://pastie.org/private/n6b3zs5kodpg0otgigubq fixes the issue, but apparently needs to be cleaned up or something if anyone is interested.

<delroth> I'll let someone who cares more than me fix it properly
<delroth> for UCode versions that have LPF, the "loop_count" thing is offset by the size of the lpf params structure
<delroth> where current we have padding

<delroth> also I'm not sure if the yn1/yn2 update should happen all the time for all the versions

<delroth> and I'm not sure how axwii does it

#4 Updated by JMC4789 over 2 years ago

<delroth> btw, if my fix makes it into a progress report somehow, here is how I fixed the audio:
<delroth> - since it started well and just started breaking after some time, I looked at the input data being read by the DSP
<delroth> - input samples seemed garbled too, so I looked at the addresses it was being read from
<delroth> - rs2 is using looping sound for streams (which is common), but when the loop point was reached, the end point of the voice wasn't reset, causing it to read out of bounds at some point
<delroth> - I compared with addresses on LLE and confirmed that on LLE the end point was being changed when the loop point was reached
<delroth> - I looked at the accelerator overflow exception handler in the AX UCode (which is called when the accelerator reaches its end address and loops back) and noticed this LR/INC/SR thing which wasn't implemented in AXVoice.h
<delroth> so it's one of these fixes that are trivial when you have context around how audio emulation works on gc.

#5 Updated by JMC4789 over 2 years ago

the Low Pass Filter code is currently broken in HLE audio right now.

// TODO: LPF code is currently broken, causing Super Monkey Ball sound
// corruption. Disabled until someone figures out what is wrong with it.
if (0 && pb.lpf.enabled)
{
pb.lpf.yn1 = LowPassFilter(samples, count, pb.lpf.yn1, pb.lpf.a0, pb.lpf.b0);
}
// Mix LRS, AUXA and AUXB depending on mixer_control
// TODO: Handle DPL2 on AUXB.

#6 Updated by delroth over 2 years ago

It has nothing to do with LPF.

#7 Updated by JosJuice about 1 year ago

  • Milestone set to Current

#8 Updated by JMC4789 5 months ago

  • Status changed from Accepted to Fix pending

#9 Updated by JosJuice 5 months ago

  • Fixed in set to 5.0-3260
  • Status changed from Fix pending to Fixed

Also available in: Atom PDF