SPU: Align starting addresses to two words
Fixes interrupts firing early and occasional broken speech in Valkyrie Profile.
This commit is contained in:
parent
712168cf45
commit
9959440a3a
|
@ -1049,7 +1049,7 @@ bool SPU::StopDumpingAudio()
|
||||||
|
|
||||||
void SPU::Voice::KeyOn()
|
void SPU::Voice::KeyOn()
|
||||||
{
|
{
|
||||||
current_address = regs.adpcm_start_address;
|
current_address = regs.adpcm_start_address & ~u16(1);
|
||||||
regs.adsr_volume = 0;
|
regs.adsr_volume = 0;
|
||||||
has_samples = false;
|
has_samples = false;
|
||||||
ignore_loop_address = false;
|
ignore_loop_address = false;
|
||||||
|
@ -1491,7 +1491,7 @@ std::tuple<s32, s32> SPU::SampleVoice(u32 voice_index)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Log_TracePrintf("Voice %u loop end+repeat @ 0x%08X", voice_index, ZeroExtend32(voice.current_address));
|
Log_TracePrintf("Voice %u loop end+repeat @ 0x%08X", voice_index, ZeroExtend32(voice.current_address));
|
||||||
voice.current_address = voice.regs.adpcm_repeat_address;
|
voice.current_address = voice.regs.adpcm_repeat_address & ~u16(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue