SPU: Fix some reverb registers not being saved to state
This commit is contained in:
parent
d47a82d591
commit
7a89c787b8
|
@ -2,4 +2,4 @@
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
static constexpr u32 SAVE_STATE_MAGIC = 0x43435544;
|
static constexpr u32 SAVE_STATE_MAGIC = 0x43435544;
|
||||||
static constexpr u32 SAVE_STATE_VERSION = 10;
|
static constexpr u32 SAVE_STATE_VERSION = 11;
|
||||||
|
|
|
@ -10,9 +10,6 @@
|
||||||
#include <imgui.h>
|
#include <imgui.h>
|
||||||
Log_SetChannel(SPU);
|
Log_SetChannel(SPU);
|
||||||
|
|
||||||
// TODO:
|
|
||||||
// - Noise
|
|
||||||
|
|
||||||
SPU::SPU() = default;
|
SPU::SPU() = default;
|
||||||
|
|
||||||
SPU::~SPU() = default;
|
SPU::~SPU() = default;
|
||||||
|
@ -54,8 +51,12 @@ void SPU::Reset()
|
||||||
|
|
||||||
m_reverb_on_register = 0;
|
m_reverb_on_register = 0;
|
||||||
m_reverb_registers = {};
|
m_reverb_registers = {};
|
||||||
m_reverb_registers.mBASE = 0xE128;
|
m_reverb_registers.mBASE = 0;
|
||||||
m_reverb_current_address = ZeroExtend32(m_reverb_registers.mBASE) * 8;
|
m_reverb_current_address = ZeroExtend32(m_reverb_registers.mBASE) * 8;
|
||||||
|
m_reverb_left_input = 0;
|
||||||
|
m_reverb_left_output = 0;
|
||||||
|
m_reverb_right_input = 0;
|
||||||
|
m_reverb_right_output = 0;
|
||||||
|
|
||||||
for (u32 i = 0; i < NUM_VOICES; i++)
|
for (u32 i = 0; i < NUM_VOICES; i++)
|
||||||
{
|
{
|
||||||
|
@ -102,6 +103,9 @@ bool SPU::DoState(StateWrapper& sw)
|
||||||
sw.Do(&m_noise_level);
|
sw.Do(&m_noise_level);
|
||||||
sw.Do(&m_reverb_on_register);
|
sw.Do(&m_reverb_on_register);
|
||||||
sw.Do(&m_reverb_current_address);
|
sw.Do(&m_reverb_current_address);
|
||||||
|
sw.Do(&m_reverb_registers.vLOUT);
|
||||||
|
sw.Do(&m_reverb_registers.vROUT);
|
||||||
|
sw.Do(&m_reverb_registers.mBASE);
|
||||||
sw.DoArray(m_reverb_registers.rev, NUM_REVERB_REGS);
|
sw.DoArray(m_reverb_registers.rev, NUM_REVERB_REGS);
|
||||||
sw.Do(&m_reverb_left_input);
|
sw.Do(&m_reverb_left_input);
|
||||||
sw.Do(&m_reverb_right_input);
|
sw.Do(&m_reverb_right_input);
|
||||||
|
@ -1243,6 +1247,8 @@ std::tuple<s32, s32> SPU::SampleVoice(u32 voice_index)
|
||||||
sample = voice.Interpolate();
|
sample = voice.Interpolate();
|
||||||
|
|
||||||
const s32 volume = ApplyVolume(sample, voice.regs.adsr_volume);
|
const s32 volume = ApplyVolume(sample, voice.regs.adsr_volume);
|
||||||
|
// if (voice_index == 3 || voice_index == 4)
|
||||||
|
// Log_WarningPrintf("voice %u %d", voice_index, volume);
|
||||||
voice.last_volume = volume;
|
voice.last_volume = volume;
|
||||||
voice.TickADSR();
|
voice.TickADSR();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue