diff options
author | Nadia Holmquist Pedersen <nadia@nhp.sh> | 2021-08-16 23:47:54 +0200 |
---|---|---|
committer | Nadia Holmquist Pedersen <nadia@nhp.sh> | 2021-08-17 01:01:15 +0200 |
commit | 418b35198680643be760dab4f4b2b8df2696041f (patch) | |
tree | 29f72afaa5bcd25283859e69e1b339af339084de /src/frontend | |
parent | d5a20ad3c85ca09679fdc83feb3814785d1187cf (diff) |
SPU: Emulate SOUNDBIAS and 10-bit degrade
Diffstat (limited to 'src/frontend')
-rw-r--r-- | src/frontend/qt_sdl/AudioSettingsDialog.cpp | 17 | ||||
-rw-r--r-- | src/frontend/qt_sdl/AudioSettingsDialog.h | 2 | ||||
-rw-r--r-- | src/frontend/qt_sdl/AudioSettingsDialog.ui | 18 | ||||
-rw-r--r-- | src/frontend/qt_sdl/main.cpp | 5 |
4 files changed, 40 insertions, 2 deletions
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 @@ <string>Audio output</string> </property> <layout class="QGridLayout" name="gridLayout_2"> - <item row="1" column="0"> + <item row="2" column="0"> <widget class="QLabel" name="label"> <property name="text"> <string>Volume:</string> </property> </widget> </item> - <item row="1" column="1"> + <item row="2" column="1"> <widget class="QSlider" name="slVolume"> <property name="whatsThis"> <string><html><head/><body><p>Controls the volume of the audio output.</p></body></html></string> @@ -66,6 +66,20 @@ </property> </widget> </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Bitrate:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QComboBox" name="cbBitrate"> + <property name="whatsThis"> + <string><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></string> + </property> + </widget> + </item> </layout> </widget> </item> 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) |