|
|
|
|
@ -2559,6 +2559,29 @@ void SPU::UpdateEventInterval()
|
|
|
|
|
s_state.tick_event.Schedule(new_downcount);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static constexpr const char* GetReverbModeName(const SPU::ReverbRegisters& reverb_registers)
|
|
|
|
|
{
|
|
|
|
|
const u32 signature =
|
|
|
|
|
(static_cast<u32>(reverb_registers.FB_SRC_A) << 16) | (static_cast<u16>(reverb_registers.IIR_COEF));
|
|
|
|
|
|
|
|
|
|
switch (signature)
|
|
|
|
|
{
|
|
|
|
|
// clang-format off
|
|
|
|
|
case 0x0000'0000: return "Off";
|
|
|
|
|
case 0x007D'BA80: return "Room";
|
|
|
|
|
case 0x0033'9C00: return "Studio Small";
|
|
|
|
|
case 0x00B1'B4C0: return "Studio Medium";
|
|
|
|
|
case 0x00E3'A680: return "Studio Large";
|
|
|
|
|
case 0x01A5'C000: return "Hall";
|
|
|
|
|
case 0x033D'B000: return "Space Echo";
|
|
|
|
|
case 0x0001'8100: return "Chaos Echo";
|
|
|
|
|
case 0x0001'0000: return "Delay";
|
|
|
|
|
case 0x0017'8500: return "Half Echo";
|
|
|
|
|
default: return "Unknown";
|
|
|
|
|
// clang-format on
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SPU::DrawDebugStateWindow(float scale)
|
|
|
|
|
{
|
|
|
|
|
static const ImVec4 active_color{1.0f, 1.0f, 1.0f, 1.0f};
|
|
|
|
|
@ -2761,6 +2784,7 @@ void SPU::DrawDebugStateWindow(float scale)
|
|
|
|
|
ImGui::Text("Current Address: 0x%08X", s_state.reverb_current_address);
|
|
|
|
|
ImGui::Text("Current Amplitude: Input (%d, %d) Output (%d, %d)", s_state.last_reverb_input[0],
|
|
|
|
|
s_state.last_reverb_input[1], s_state.last_reverb_output[0], s_state.last_reverb_output[1]);
|
|
|
|
|
ImGui::Text("Current Mode: %s", GetReverbModeName(s_state.reverb_registers));
|
|
|
|
|
ImGui::Text("Output Volume: Left %d%% Right %d%%", ApplyVolume(100, s_state.reverb_registers.vLOUT),
|
|
|
|
|
ApplyVolume(100, s_state.reverb_registers.vROUT));
|
|
|
|
|
#ifdef SPU_ENABLE_VU_METER
|
|
|
|
|
|