diff --git a/emu-configs/defaults/citra/citra-qt-config.ini b/emu-configs/defaults/citra/citra-qt-config.ini
index 6e176b83..7a42e448 100644
--- a/emu-configs/defaults/citra/citra-qt-config.ini
+++ b/emu-configs/defaults/citra/citra-qt-config.ini
@@ -332,7 +332,7 @@ Paths\moviePlaybackPath=
 Paths\movieRecordPath=
 Paths\recentFiles=@Invalid()
 Paths\romsPath=
-Paths\screenshotPath=
+Paths\screenshotPath=RETRODECKHOMEDIR/screenshots
 Paths\symbolsPath=
 Paths\videoDumpingPath=
 Shortcuts\Main%20Window\Advance%20Frame\Context=2
diff --git a/emu-configs/defaults/retroarch/retroarch.cfg b/emu-configs/defaults/retroarch/retroarch.cfg
index 042fdacc..c1b10fcb 100644
--- a/emu-configs/defaults/retroarch/retroarch.cfg
+++ b/emu-configs/defaults/retroarch/retroarch.cfg
@@ -3071,7 +3071,7 @@ savestates_in_content_dir = "false"
 scan_without_core_match = "false"
 screen_brightness = "100"
 screen_orientation = "0"
-screenshot_directory = ":\screenshots"
+screenshot_directory = "RETRODECKHOMEDIR/screenshots"
 screenshots_in_content_dir = "false"
 settings_show_accessibility = "true"
 settings_show_achievements = "true"
diff --git a/emu-configs/defaults/yuzu/qt-config.ini b/emu-configs/defaults/yuzu/qt-config.ini
index 0c378fa1..efa6bb94 100644
--- a/emu-configs/defaults/yuzu/qt-config.ini
+++ b/emu-configs/defaults/yuzu/qt-config.ini
@@ -1011,7 +1011,7 @@ Paths\romsPath=
 Paths\symbolsPath=
 Screenshots\enable_screenshot_save_as=true
 Screenshots\enable_screenshot_save_as\default=true
-Screenshots\screenshot_path=/home/deck/.var/app/org.yuzu_emu.yuzu/data/yuzu/screenshots
+Screenshots\screenshot_path=RETRODECKHOMEDIR/screenshots
 Shortcuts\Main%20Window\Audio%20Mute\Unmute\Context=1
 Shortcuts\Main%20Window\Audio%20Mute\Unmute\Context\default=true
 Shortcuts\Main%20Window\Audio%20Mute\Unmute\Controller_KeySeq=Home+Dpad_Right
diff --git a/emu-configs/mame/mame.ini b/emu-configs/mame/mame.ini
index 115e6d2b..1e7e0c40 100644
--- a/emu-configs/mame/mame.ini
+++ b/emu-configs/mame/mame.ini
@@ -28,7 +28,7 @@ cfg_directory             /var/config/mame/cfg
 nvram_directory           /var/config/mame/nvram
 input_directory           /var/config/mame/inp
 state_directory           /var/config/mame/sta
-snapshot_directory        $HOME/retrodeck/screenshots
+snapshot_directory        RETRODECKHOMEDIR/screenshots
 diff_directory            /var/config/mame/diff
 comment_directory         /var/config/mame/comments
 share_directory           /var/config/mame/share
diff --git a/emu-configs/retroarch/retroarch-core-options.cfg b/emu-configs/retroarch/retroarch-core-options.cfg
index 714e740a..06420de7 100644
--- a/emu-configs/retroarch/retroarch-core-options.cfg
+++ b/emu-configs/retroarch/retroarch-core-options.cfg
@@ -159,7 +159,6 @@ dolphin_wait_for_shaders = "disabled"
 dolphin_widescreen = "enabled"
 dolphin_widescreen_hack = "disabled"
 dolphin_wiimote_continuous_scanning = "disabled"
-dosbox_pure_savestate = "off"
 duckstation_BIOS.PatchFastBoot = "true"
 duckstation_BIOS.PathNTSCJ = "scph5500.bin"
 duckstation_BIOS.PathNTSCU = "scph5501.bin"
@@ -597,4 +596,5 @@ ppsspp_texture_replacement = "disabled"
 ppsspp_texture_scaling_level = "Off"
 ppsspp_texture_scaling_type = "xbrz"
 ppsspp_texture_shader = "Off"
-ppsspp_vertex_cache = "disabled"
\ No newline at end of file
+ppsspp_vertex_cache = "disabled"
+swanstation_GPU_Renderer = "Vulkan"
\ No newline at end of file
diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml
index 02dec7c7..59b52bf8 100644
--- a/net.retrodeck.retrodeck.yml
+++ b/net.retrodeck.retrodeck.yml
@@ -777,6 +777,8 @@ modules:
       - type: git
         url: https://github.com/melonDS-emu/melonDS.git
         commit: 430de6b2702bb93faa8c2004aff3fbd084db4a1e
+      - type: patch
+        path: rd-submodules/melonds/hotkeys.patch
 
   # MELONDS - END
 
diff --git a/rd-submodules/melonds/hotkeys.patch b/rd-submodules/melonds/hotkeys.patch
new file mode 100644
index 00000000..8a90570c
--- /dev/null
+++ b/rd-submodules/melonds/hotkeys.patch
@@ -0,0 +1,18 @@
+diff -au1r melonDS/src/frontend/qt_sdl/main.cpp melonDS/src/frontend/qt_sdl/main.cpp
+--- melonDS/src/frontend/qt_sdl/main.cpp	2023-05-06 17:27:24.822375255 +0200
++++ melonDS/src/frontend/qt_sdl/main.cpp	2023-05-06 17:47:19.587498189 +0200
+@@ -1467,3 +1467,3 @@
+             actSaveState[0] = submenu->addAction("File...");
+-            actSaveState[0]->setShortcut(QKeySequence(Qt::ShiftModifier | Qt::Key_F9));
++            actSaveState[0]->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_S));
+             actSaveState[0]->setData(QVariant(0));
+@@ -1483,3 +1483,3 @@
+             actLoadState[0] = submenu->addAction("File...");
+-            actLoadState[0]->setShortcut(QKeySequence(Qt::Key_F9));
++            actLoadState[0]->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_A));
+             actLoadState[0]->setData(QVariant(0));
+@@ -1489,3 +1489,3 @@
+         actUndoStateLoad = menu->addAction("Undo state load");
+-        actUndoStateLoad->setShortcut(QKeySequence(Qt::Key_F12));
++        actUndoStateLoad->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_8));
+         connect(actUndoStateLoad, &QAction::triggered, this, &MainWindow::onUndoStateLoad);
diff --git a/rd-submodules/retroarch b/rd-submodules/retroarch
index 0b1cfb79..717b7809 160000
--- a/rd-submodules/retroarch
+++ b/rd-submodules/retroarch
@@ -1 +1 @@
-Subproject commit 0b1cfb79e591e10488a3262d6b38db843c39a409
+Subproject commit 717b78093797270877ec416e58082f1c71d435d8
diff --git a/rd-submodules/shared-modules b/rd-submodules/shared-modules
index a2441b96..a337dd0c 160000
--- a/rd-submodules/shared-modules
+++ b/rd-submodules/shared-modules
@@ -1 +1 @@
-Subproject commit a2441b964afefd8cd1cebcdf562c7878670daf42
+Subproject commit a337dd0c6b7209a316dc6fa142323972e128c85d