Emulator Issues #7228


Star Wars Rogue Leader screeches in HLE Audio

Added by JMC4789 over 8 years ago. Updated 7 months ago.

% Done:


Operating system:
Issue type:
Relates to usability:
Relates to performance:
Relates to maintainability:
Regression start:
Fixed in:


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?


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?


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

Audio Dumps -

Actions #1

Updated by JMC4789 over 8 years ago

Fixing the title

Actions #2

Updated by JMC4789 about 8 years ago

  • Status changed from New to Accepted
  • Category deleted (dsphle)
  • 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.


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


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.

Actions #3

Updated by JMC4789 almost 8 years ago

  • Category set to dsphle 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
Actions #4

Updated by JMC4789 almost 8 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.
Actions #5

Updated by JMC4789 almost 8 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.
Actions #6

Updated by delroth almost 8 years ago

It has nothing to do with LPF.

Actions #7

Updated by JosJuice over 6 years ago

  • Milestone set to Current
Actions #8

Updated by JMC4789 over 5 years ago

  • Status changed from Accepted to Fix pending
Actions #9

Updated by JosJuice over 5 years ago

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

Updated by pokechu22 7 months ago

A word of warning that this also affected Star Wars Rogue Squadron III: Rebel Strike (GLRE64) in 5.0 (although 5.0 has a gameini that uses LLE audio for both Rogue Squadron 2 and Rogue Squadron 3, so this only happens if you modify the gameini).


Also available in: Atom PDF