From 418b35198680643be760dab4f4b2b8df2696041f Mon Sep 17 00:00:00 2001 From: Nadia Holmquist Pedersen Date: Mon, 16 Aug 2021 23:47:54 +0200 Subject: SPU: Emulate SOUNDBIAS and 10-bit degrade --- src/frontend/qt_sdl/AudioSettingsDialog.cpp | 17 +++++++++++++++++ src/frontend/qt_sdl/AudioSettingsDialog.h | 2 ++ src/frontend/qt_sdl/AudioSettingsDialog.ui | 18 ++++++++++++++++-- src/frontend/qt_sdl/main.cpp | 5 +++++ 4 files changed, 40 insertions(+), 2 deletions(-) (limited to 'src/frontend/qt_sdl') diff --git a/src/frontend/qt_sdl/AudioSettingsDialog.cpp b/src/frontend/qt_sdl/AudioSettingsDialog.cpp index 5ac178a..970b54b 100644 --- a/src/frontend/qt_sdl/AudioSettingsDialog.cpp +++ b/src/frontend/qt_sdl/AudioSettingsDialog.cpp @@ -39,6 +39,7 @@ AudioSettingsDialog::AudioSettingsDialog(QWidget* parent) : QDialog(parent), ui( setAttribute(Qt::WA_DeleteOnClose); oldInterp = Config::AudioInterp; + oldBitrate = Config::AudioBitrate; oldVolume = Config::AudioVolume; ui->cbInterpolation->addItem("None"); @@ -47,6 +48,11 @@ AudioSettingsDialog::AudioSettingsDialog(QWidget* parent) : QDialog(parent), ui( ui->cbInterpolation->addItem("Cubic"); ui->cbInterpolation->setCurrentIndex(Config::AudioInterp); + ui->cbBitrate->addItem("Automatic"); + ui->cbBitrate->addItem("10-bit"); + ui->cbBitrate->addItem("16-bit"); + ui->cbBitrate->setCurrentIndex(Config::AudioBitrate); + ui->slVolume->setValue(Config::AudioVolume); grpMicMode = new QButtonGroup(this); @@ -81,11 +87,22 @@ void AudioSettingsDialog::on_AudioSettingsDialog_accepted() void AudioSettingsDialog::on_AudioSettingsDialog_rejected() { Config::AudioInterp = oldInterp; + Config::AudioBitrate = oldBitrate; Config::AudioVolume = oldVolume; closeDlg(); } +void AudioSettingsDialog::on_cbBitrate_currentIndexChanged(int idx) +{ + // prevent a spurious change + if (ui->cbBitrate->count() < 3) return; + + Config::AudioBitrate = ui->cbBitrate->currentIndex(); + + emit updateAudioSettings(); +} + void AudioSettingsDialog::on_cbInterpolation_currentIndexChanged(int idx) { // prevent a spurious change diff --git a/src/frontend/qt_sdl/AudioSettingsDialog.h b/src/frontend/qt_sdl/AudioSettingsDialog.h index 5139975..0bb32c6 100644 --- a/src/frontend/qt_sdl/AudioSettingsDialog.h +++ b/src/frontend/qt_sdl/AudioSettingsDialog.h @@ -59,6 +59,7 @@ private slots: void on_AudioSettingsDialog_rejected(); void on_cbInterpolation_currentIndexChanged(int idx); + void on_cbBitrate_currentIndexChanged(int idx); void on_slVolume_valueChanged(int val); void onChangeMicMode(int mode); void on_btnMicWavBrowse_clicked(); @@ -67,6 +68,7 @@ private: Ui::AudioSettingsDialog* ui; int oldInterp; + int oldBitrate; int oldVolume; QButtonGroup* grpMicMode; }; diff --git a/src/frontend/qt_sdl/AudioSettingsDialog.ui b/src/frontend/qt_sdl/AudioSettingsDialog.ui index e329523..d7cfadd 100644 --- a/src/frontend/qt_sdl/AudioSettingsDialog.ui +++ b/src/frontend/qt_sdl/AudioSettingsDialog.ui @@ -29,14 +29,14 @@ Audio output - + Volume: - + <html><head/><body><p>Controls the volume of the audio output.</p></body></html> @@ -66,6 +66,20 @@ + + + + Bitrate: + + + + + + + <html><head/><body><p>The bitrate of audio playback. If set to "Automatic" this will be 10-bit for DS mode and 16-bit for DSi mode.</p></body></html> + + + diff --git a/src/frontend/qt_sdl/main.cpp b/src/frontend/qt_sdl/main.cpp index d8eca58..272df3c 100644 --- a/src/frontend/qt_sdl/main.cpp +++ b/src/frontend/qt_sdl/main.cpp @@ -2436,6 +2436,11 @@ void MainWindow::onOpenAudioSettings() void MainWindow::onUpdateAudioSettings() { SPU::SetInterpolation(Config::AudioInterp); + + if (Config::AudioBitrate == 0) + SPU::SetDegrade10Bit(NDS::ConsoleType == 0); + else + SPU::SetDegrade10Bit(Config::AudioBitrate == 1); } void MainWindow::onAudioSettingsFinished(int res) -- cgit v1.2.3