diff --git a/src/platform/qt/SettingsView.cpp b/src/platform/qt/SettingsView.cpp
index 27d67922b..570b15d6c 100644
--- a/src/platform/qt/SettingsView.cpp
+++ b/src/platform/qt/SettingsView.cpp
@@ -35,16 +35,17 @@ SettingsView::SettingsView(ConfigController* controller, InputController* inputC
m_ui.setupUi(this);
m_pageIndex[Page::AV] = 0;
- m_pageIndex[Page::INTERFACE] = 1;
- m_pageIndex[Page::UPDATE] = 2;
- m_pageIndex[Page::EMULATION] = 3;
- m_pageIndex[Page::ENHANCEMENTS] = 4;
- m_pageIndex[Page::BIOS] = 5;
- m_pageIndex[Page::PATHS] = 6;
- m_pageIndex[Page::LOGGING] = 7;
+ m_pageIndex[Page::GAMEPLAY] = 1;
+ m_pageIndex[Page::INTERFACE] = 2;
+ m_pageIndex[Page::UPDATE] = 3;
+ m_pageIndex[Page::EMULATION] = 4;
+ m_pageIndex[Page::ENHANCEMENTS] = 5;
+ m_pageIndex[Page::BIOS] = 6;
+ m_pageIndex[Page::PATHS] = 7;
+ m_pageIndex[Page::LOGGING] = 8;
#ifdef M_CORE_GB
- m_pageIndex[Page::GB] = 8;
+ m_pageIndex[Page::GB] = 9;
for (auto model : GameBoy::modelList()) {
m_ui.gbModel->addItem(GameBoy::modelName(model), model);
diff --git a/src/platform/qt/SettingsView.h b/src/platform/qt/SettingsView.h
index 1792c8f4b..d13a6b453 100644
--- a/src/platform/qt/SettingsView.h
+++ b/src/platform/qt/SettingsView.h
@@ -34,6 +34,7 @@ public:
enum class Page {
AV,
INTERFACE,
+ GAMEPLAY,
UPDATE,
EMULATION,
ENHANCEMENTS,
diff --git a/src/platform/qt/SettingsView.ui b/src/platform/qt/SettingsView.ui
index 5d07a29d8..40853dfda 100644
--- a/src/platform/qt/SettingsView.ui
+++ b/src/platform/qt/SettingsView.ui
@@ -45,6 +45,11 @@
Audio/Video
+ -
+
+ Gameplay
+
+
-
Interface
@@ -87,337 +92,391 @@
- -
-
-
- QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok
-
-
-
-
- 0
+ 9
-
-
- QFormLayout::FieldsStayAtSizeHint
-
+
+
-
+
+
+ Audio
+
+
+
-
+
+
+ Audio driver:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ Audio buffer:
+
+
+
+ -
+
+
-
+
+
+ true
+
+
+ 1536
+
+
+ 3
+
+
-
+
+ 512
+
+
+ -
+
+ 768
+
+
+ -
+
+ 1024
+
+
+ -
+
+ 1536
+
+
+ -
+
+ 2048
+
+
+ -
+
+ 3072
+
+
+ -
+
+ 4096
+
+
+
+
+ -
+
+
+ samples
+
+
+
+
+
+ -
+
+
+ Sample rate:
+
+
+
+ -
+
+
-
+
+
+ true
+
+
+ 44100
+
+
+ 2
+
+
-
+
+ 22050
+
+
+ -
+
+ 32000
+
+
+ -
+
+ 44100
+
+
+ -
+
+ 48000
+
+
+
+
+ -
+
+
+ Hz
+
+
+
+
+
+ -
+
+
+ Volume:
+
+
+
+ -
+
+
-
+
+
+
+ 128
+ 0
+
+
+
+ 256
+
+
+ 16
+
+
+ 256
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Mute
+
+
+
+
+
+ -
+
+
+ Fast forward volume:
+
+
+
+ -
+
+
-
+
+
+
+ 128
+ 0
+
+
+
+ 256
+
+
+ 16
+
+
+ 256
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Mute
+
+
+
+
+
+ -
+
+
+ Audio in multiplayer:
+
+
+
+ -
+
+
+ All windows
+
+
+ true
+
+
+ multiplayerAudio
+
+
+
+ -
+
+
+ Player 1 window only
+
+
+ multiplayerAudio
+
+
+
+ -
+
+
+ Currently active player window
+
+
+ multiplayerAudio
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+
+
+
+ -
+
+
+ Video
+
+
+
-
+
+
+ Display driver:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ Frameskip:
+
+
+
+ -
+
+
-
+
+
+ Skip every
+
+
+
+ -
+
+
+ -
+
+
+ frames
+
+
+
+
+
+ -
+
+
+ Lock aspect ratio
+
+
+
+ -
+
+
+ Force integer scaling
+
+
+
+ -
+
+
+ Interframe blending
+
+
+
+ -
+
+
+ Bilinear filtering
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+
+
+
+
+
+
+
-
-
-
- Audio driver:
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- -
-
-
- Audio buffer:
-
-
-
- -
-
-
-
-
-
- true
-
-
- 1536
-
-
- 3
-
-
-
-
- 512
-
-
- -
-
- 768
-
-
- -
-
- 1024
-
-
- -
-
- 1536
-
-
- -
-
- 2048
-
-
- -
-
- 3072
-
-
- -
-
- 4096
-
-
-
-
- -
-
-
- samples
-
-
-
-
-
- -
-
-
- Sample rate:
-
-
-
- -
-
-
-
-
-
- true
-
-
- 44100
-
-
- 2
-
-
-
-
- 22050
-
-
- -
-
- 32000
-
-
- -
-
- 44100
-
-
- -
-
- 48000
-
-
-
-
- -
-
-
- Hz
-
-
-
-
-
- -
-
-
- Volume:
-
-
-
- -
-
-
-
-
-
-
- 128
- 0
-
-
-
- 256
-
-
- 16
-
-
- 256
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- Mute
-
-
-
-
-
- -
-
-
- Fast forward volume:
-
-
-
- -
-
-
-
-
-
-
- 128
- 0
-
-
-
- 256
-
-
- 16
-
-
- 256
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- Mute
-
-
-
-
-
- -
-
-
- Audio in multiplayer:
-
-
-
- -
-
-
- All windows
-
-
- true
-
-
- multiplayerAudio
-
-
-
- -
-
-
- Player 1 window only
-
-
- multiplayerAudio
-
-
-
- -
-
-
- Currently active player window
-
-
- multiplayerAudio
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- Display driver:
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- -
-
-
- Frameskip:
-
-
-
- -
-
-
-
-
-
- Skip every
-
-
-
- -
-
-
- -
-
-
- frames
-
-
-
-
-
- -
FPS target:
- -
+
-
-
@@ -444,28 +503,21 @@
- -
+
-
Native (59.7275)
- -
-
-
- Qt::Horizontal
-
-
-
- -
+
-
Sync:
- -
+
-
-
@@ -483,31 +535,160 @@
- -
-
+
-
+
+
+ Qt::Horizontal
+
+
+
+ -
+
- Lock aspect ratio
+ On loading a game:
+
+
+
+ -
+
+
+ Load last state
+
+
+ true
+
+
+
+ -
+
+
+ Load cheats
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Periodally autosave state
+
+
+ true
+
+
+
+ -
+
+
+ Save entered cheats
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Save state extra data:
+
+
+
+ -
+
+
+ Screenshot
+
+
+ true
+
+
+
+ -
+
+
+ Save game
+
+
+ true
+
+
+
+ -
+
+
+ Cheat codes
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Load state extra data:
+
+
+
+ -
+
+
+ Screenshot
+
+
+ true
+
+
+
+ -
+
+
+ Save game
-
-
+
- Force integer scaling
+ Cheat codes
- -
-
-
- Interframe blending
+
-
+
+
+ Qt::Horizontal
-
-
+
- Bilinear filtering
+ Enable Discord Rich Presence
@@ -726,67 +907,6 @@
- -
-
-
- Enable Discord Rich Presence
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- Automatically save state
-
-
- true
-
-
-
- -
-
-
- Automatically load state
-
-
- true
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- Automatically save cheats
-
-
- true
-
-
-
- -
-
-
- Automatically load cheats
-
-
- true
-
-
-
@@ -1097,88 +1217,6 @@
- -
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- Save state extra data:
-
-
-
- -
-
-
- Screenshot
-
-
- true
-
-
-
- -
-
-
- Save game
-
-
- true
-
-
-
- -
-
-
- Cheat codes
-
-
- true
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- Load state extra data:
-
-
-
- -
-
-
- Screenshot
-
-
- true
-
-
-
- -
-
-
- Save game
-
-
-
- -
-
-
- Cheat codes
-
-
-
@@ -2146,6 +2184,13 @@
+ -
+
+
+ QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+