aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/qt_sdl
diff options
context:
space:
mode:
authorNadia Holmquist Pedersen <nadia@nhp.sh>2021-08-16 23:47:54 +0200
committerNadia Holmquist Pedersen <nadia@nhp.sh>2021-08-17 01:01:15 +0200
commit418b35198680643be760dab4f4b2b8df2696041f (patch)
tree29f72afaa5bcd25283859e69e1b339af339084de /src/frontend/qt_sdl
parentd5a20ad3c85ca09679fdc83feb3814785d1187cf (diff)
SPU: Emulate SOUNDBIAS and 10-bit degrade
Diffstat (limited to 'src/frontend/qt_sdl')
-rw-r--r--src/frontend/qt_sdl/AudioSettingsDialog.cpp17
-rw-r--r--src/frontend/qt_sdl/AudioSettingsDialog.h2
-rw-r--r--src/frontend/qt_sdl/AudioSettingsDialog.ui18
-rw-r--r--src/frontend/qt_sdl/main.cpp5
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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Controls the volume of the audio output.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The bitrate of audio playback. If set to &quot;Automatic&quot; this will be 10-bit for DS mode and 16-bit for DSi mode.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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)