-
-
Notifications
You must be signed in to change notification settings - Fork 215
Community Creations
This section will go over how to share and post your Steam Input Layouts on this page.
Tutorial
- Create a new Steam Input Layout in Game Mode.
- After you are finished, press the Gear icon on the controller layout screen, click
Export Layout
, changeExport Type
toNew Personal Save
.- Visual Reference 1:
- Visual Reference 2:
- Visual Reference 3:
- Switch to Desktop Mode.
- Open Konsole.
- In Konsole, enter:
grep --recursive "<yourprofilename>" ~/.steam/steam/userdata
- Replace
<yourprofilename>
entirely with the profile name you created in Step 1. - Visual Reference (Using
Community Creations
as an example):
- Replace
- Open the folder path outputted by the command.
-
~/.steam
is an invisible folder by default, in Dolphin (File Explorer), press the hamburger button in the top right, ☰, pressShow Hidden Files
.
-
- Copy this template to another folder of your choice.
- Rename the copied file to something descriptive, like the profile name created in Step 1.
- Right click, click
Open with Kwrite
or a text editor of your choice. - Edit the top part of the file using the following template:
Template:
"controller_mappings"
{
"version" leave this alone
"revision" leave this alone
"title" leave this alone
"description" leave this alone
"creator" leave this alone
"progenitor" leave this alone
"url" change to: "template://<file name>.vdf"
"export_type" change to: "template"
"controller_type" "controller_neptune"
"major_revision" leave this alone
"minor_revision" leave this alone
"Timestamp" leave this alone
"localization"
Sample:
"controller_mappings"
{
"version" "3"
"revision" "21"
"title" "EmuDeck - PPSSPP Standalone"
"description" "Left Touchpad quick actions. Long press to perform an action"
"creator" "76561198025051816"
"progenitor" ""
"url" "template://ppsspp_controller_config.vdf"
"export_type" "template"
"controller_type" "controller_neptune"
"major_revision" "0"
"minor_revision" "0"
"Timestamp" "4"
"localization"
- Create a new section on this page under Steam Input in the
Table of Contents
, refer toSteam Input Layout 1
as a sample.- Create a Github Account to edit this page first, if you have not done so already.
- At the moment,
Steam Input Layout 4
throughSteam Input Layout 7
can be edited and replaced with your templates.
- Paste the contents of the file into your newly created section, include a brief description and any prerequisites.
- Place ``` at the top and the bottom of the pasted profile, refer to
Steam Input Layout 1
as a sample. - Save the page.
- You have now successfully shared your profile.
Tutorial
- Copy the contents of a profile you would like to use by clicking the copy icon in the top right
- Visual Reference:
- In this folder:
/home/deck/.steam/steam/controller_base/templates
, right click,Create New
,Text File
-
.steam
is an invisible folder by default, click the hamburger menu in the top right, clickShow Hidden Files
to un-hide it.
-
- Paste the contents of a profile you would like to use
- Save the profile, matching the profile name in the section exactly, with a
.vdf
file extension- Without the
.vdf
file extension, the profile will not work
- Without the
- You now have successfully downloaded a profile
Sample Profile
Profile Name: ppsspp_controller_config.vdf
"controller_mappings"
{
"version" "3"
"revision" "21"
"title" "EmuDeck - PPSSPP Standalone"
"description" "Left Touchpad quick actions. Long press to perform an action"
"creator" "76561198025051816"
"progenitor" ""
"url" "template://ppsspp_controller_config.vdf"
"export_type" "template"
"controller_type" "controller_neptune"
"major_revision" "0"
"minor_revision" "0"
"Timestamp" "4"
"localization"
{
"english"
{
"title" "PPSSPP Menu Hotkeys"
"description" "PPSSPP Menu Hotkeys"
}
"czech"
{
"title" "Gamepad s ovládáním kamery"
"description" "Tato šablona je pro většinu her podporujících gamepad a disponujících kamerou z pohledu první nebo třetí osoby. Mezi takové hry patří například akční hry z pohledu první nebo třetí osoby."
}
"danish"
{
"title" "Gamepad med kamerastyring"
"description" "Denne skabelon er til de fleste spil, der allerede har indbygget gamepad-understøttelse og har et første- eller tredjepersonskontrolleret kamera. FPS eller tredjepersons adventure-spil osv."
}
"dutch"
{
"title" "Gamepad met camerabesturing"
"description" "Deze template is voor de meeste spellen die reeds ingebouwde gamepadondersteuning hebben en die een camera hebben die wordt bestuurd in de eerste of derde persoon. FPS, third person-avontuurspellen, etc."
}
"finnish"
{
"title" "Kameraa ohjaava peliohjain"
"description" "Tämä malli on useimmille muita ohjaimia valmiiksi tukeville peleille, joissa on ensimmäisessä tai kolmannessa persoonassa ohjattava kamera. FPS-pelit, kolmannen persoonan seikkailupelit jne."
}
"french"
{
"title" "Manette avec contrôles caméra"
"description" "Ce modèle fonctionne pour la plupart des jeux ayant un support manette intégré et une caméra contrôlée à la première ou à la troisième personne. FPS, jeux d'aventure à la troisième personne, etc."
}
"german"
{
"title" "Gamepad mit Kamerasteuerung"
"description" "Diese Vorlage ist für die meisten Spiele konzipiert, die bereits volle Untersützung für Gamepads mit sich bringen und eine First- oder Third-Person-Kamerasteuerung haben. Gedacht für Ego-Shooter, Third-Person-Abenteuerspiele usw."
}
"hungarian"
{
"title" "Gamepad kamerairányítással"
"description" "Ez a sablon a legtöbb olyan játékhoz való, melyek már rendelkeznek beépített gamepad-támogatással, és van első vagy harmadik személyű kezelésű kamerájuk. Ilyenek az FPS vagy harmadik személyű kalandjátékok stb."
}
"italian"
{
"title" "Gamepad con controlli della telecamera"
"description" "Questo template è pensato per la maggior parte dei giochi che hanno già il supporto per gamepad integrato e hanno la visuale controllata in prima o terza persona. Giochi d'avventura in terza persona, FPS ecc."
}
"japanese"
{
"title" "カメラコントロール機能を持つゲームパッド"
"description" "FPS や、アドベンチャーゲームのような、一人称または三人称のカメラ操作を行うゲームパッドに標準対応したゲーム用のテンプレートです。"
}
"koreana"
{
"title" "카메라 조작 기능이 있는 게임패드"
"description" "이 템플릿은 이미 게임패드 지원이 내장되어 있으며 1인칭 또는 3인칭 시점 카메라 조작을 지원하는 대부분의 게임을 위한 것입니다. FPS, 3인칭 어드벤쳐 게임 및 기타."
}
"polish"
{
"title" "Kontroler obsługujący kamerę"
"description" "Ten szablon jest dla większości gier, które mają wbudowane wsparcie dla kontrolerów, a także kamerę kontrolowaną z perspektywy pierwszej lub trzeciej osoby, np. FPS-y bądź gry przygodowe."
}
"portuguese"
{
"title" "Comando com controlos de câmara"
"description" "Este modelo é indicado para jogos que já têm compatibilidade nativa com comando e têm uma câmara que pode ser controlada. Por exemplo, jogos em primeira ou terceira pessoa, do género de aventura, de tiros, etc."
}
"romanian"
{
"title" "Gamepad cu controale pentru cameră"
"description" "Acest șablon este pentru majoritatea jocurilor care au deja suport pentru gamepad implementat și au o cameră controlată din perspectivă first sau third person. FPS sau jocuri de aventură third person, etc."
}
"russian"
{
"title" "Геймпад с управлением камерой"
"description" "Этот шаблон предназначен для большинства игр от первого или третьего лица, в которых уже есть встроенная поддержка геймпада (например, для шутеров или экшенов)."
}
"spanish"
{
"title" "Mando con controles de cámara"
"description" "Esta plantilla es para la mayoría de juegos que ya incluyen de serie compatibilidad con mando y disponen de cámara controlada en primera o tercera persona: FPS, juegos de aventura en tercera persona, etc."
}
"swedish"
{
"title" "Gamepad med kamerakontroller"
"description" "Denna mall är för de flesta spel som redan har inbyggt stöd för spelkontroller och har en kamera som styrs i första- eller tredjeperson. FPS eller äventyrsspel etc."
}
"schinese"
{
"title" "支持视角控制的手柄"
"description" "该模板适用于已内置手柄支持,并且拥有第一或第三人称控制视角的大多数游戏。包括 FPS 或第三人称冒险游戏等。"
}
"thai"
{
"title" "เกมแพดพร้อมการควบคุมมุมกล้อง"
"description" "แม่แบบนี้ใช้สำหรับเกมส่วนมากที่มีการรองรับเกมแพดมาในตัวอยู่แล้ว และมีการควบคุมมุมกล้องในมุมมองบุคคลที่หนึ่งหรือสาม เช่น เกมยิงมุมมองบุคคลที่หนึ่ง หรือเกมผจญภัยมุมมองบุคคลที่สาม ฯลฯ"
}
"brazilian"
{
"title" "Controle com controle de câmera"
"description" "Este modelo é para jogos já compatíveis com controles que possuem uma câmera controlável, seja em primeira ou terceira pessoa, como jogos de tiro, aventura, etc."
}
"bulgarian"
{
"title" "Геймпад с управление на камерата"
"description" "Този шаблон е за повечето игри, които вече имат вградена поддръжка на геймпад и включват управление на камерата от първо или трето лице. Екшъни от първо лице, приключенски игри от трето лице и т.н."
}
"greek"
{
"title" "Χειριστήριο με πλήκτρα κάμερας"
"description" "Αυτό το πρότυπο είναι για τα περισσότερα παιχνίδια που έχουν ενσωματωμένη υποστήριξη χειριστηρίου και έχουν μια ελεγχόμενη κάμερα πρώτου ή τρίτου προσώπου. FPS ή παιχνίδια περιπέτειας τρίτου προσώπου κλπ."
}
"turkish"
{
"title" "Kamera Kontrollü Oyun Kumandası"
"description" "Bu şablon hali hazırda oyun içi oyun kumandası desteği ve birincil veya üçüncü kişi kontrollü kameraya sahip oyunlar içindir. FPS veya Üçüncü Kişi Macera oyunları vb."
}
"ukrainian"
{
"title" "Ґеймпад з елементами керування камерою"
"description" "Цей шаблон для більшості ігор, що вже мають вбудовану підтримку ґеймпада і у яких камера керується від першої або третьої особи. Шутери від першої особи чи пригодницькі ігри від третьої особи тощо."
}
}
"group"
{
"id" "0"
"mode" "four_buttons"
"name" ""
"description" ""
"inputs"
{
"button_a"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button A"
}
}
}
"disabled_activators"
{
}
}
"button_b"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button B"
}
}
}
"disabled_activators"
{
}
}
"button_x"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button X"
}
}
}
"disabled_activators"
{
}
}
"button_y"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button Y"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "1"
"mode" "dpad"
"name" ""
"description" ""
"inputs"
{
"dpad_north"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_up"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_south"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_down"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_east"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_right"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_west"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_left"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "2"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "3"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_LEFT"
}
"settings"
{
"haptic_intensity" "2"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
"deadzone_inner_radius" "7199"
}
}
"group"
{
"id" "4"
"mode" "trigger"
"name" ""
"description" ""
"inputs"
{
}
"settings"
{
"output_trigger" "1"
}
}
"group"
{
"id" "5"
"mode" "trigger"
"name" ""
"description" ""
"inputs"
{
}
"settings"
{
"output_trigger" "2"
}
}
"group"
{
"id" "6"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "8"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "9"
"mode" "dpad"
"name" ""
"description" ""
"inputs"
{
"dpad_north"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_UP"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_south"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_DOWN"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_east"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_RIGHT"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_west"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_LEFT"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
"requires_click" "0"
"haptic_intensity_override" "0"
}
}
"group"
{
"id" "10"
"mode" "single_button"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button START"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "11"
"mode" "single_button"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button SELECT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "12"
"mode" "mouse_joystick"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "14"
"mode" "radial_menu"
"name" "PPSSPP Hotkeys"
"description" ""
"inputs"
{
"touch_menu_button_1"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "key_press Escape, Quick Menu, ghost_070_setting_0030.png #232323 #E4E4E4"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_2"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "key_press F1, Load State, ghost_075_utility_010.png #232323 #0074ad"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_3"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "key_press F5, Fast Forward, ghost_090_media_0190.png #232323 #00ad00"
}
"settings"
{
"toggle" "1"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_4"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "controller_action empty_binding"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_5"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "key_press F4, Next Save Slot, ghost_045_move_0400.png #232323 #ADA200"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_6"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "key_press F2, Save State, ghost_075_utility_020.png #232323 #0045AD"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
"touchmenu_button_fire_type" "2"
"touch_menu_button_count" "9"
"touch_menu_opacity" "75"
"touch_menu_position_y" "70"
"touch_menu_scale" "120"
}
}
"group"
{
"id" "7"
"mode" "switches"
"name" ""
"description" ""
"inputs"
{
"button_escape"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button start"
}
}
}
"disabled_activators"
{
}
}
"button_menu"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button select"
}
}
}
"disabled_activators"
{
}
}
"left_bumper"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button shoulder_left"
}
}
}
"disabled_activators"
{
}
}
"right_bumper"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button shoulder_right"
}
}
}
"disabled_activators"
{
}
}
"button_capture"
{
"activators"
{
"release"
{
"bindings"
{
"binding" "controller_action system_key_1"
}
}
}
"disabled_activators"
{
}
}
}
}
"preset"
{
"id" "0"
"name" "Default"
"group_source_bindings"
{
"7" "switch active"
"0" "button_diamond active"
"1" "left_trackpad inactive"
"11" "left_trackpad inactive"
"14" "left_trackpad active"
"2" "right_trackpad inactive"
"6" "right_trackpad inactive"
"10" "right_trackpad inactive"
"12" "right_trackpad active"
"3" "joystick active"
"4" "left_trigger active"
"5" "right_trigger active"
"8" "right_joystick active"
"9" "dpad active"
}
}
"settings"
{
"left_trackpad_mode" "0"
"right_trackpad_mode" "0"
}
}
Credit: Piximator
This Steam input profile is for the NSO Nintendo 64 Controller, https://www.nintendo.com/store/products/nintendo-64-controller/.
Profile Name: nintendo switch online n64 controller.vdf
"controller_mappings"
{
"version" "3"
"revision" "20"
"title" "Nintendo Switch Online N64 Controller"
"description" "For use with the official NSO N64 controller in RetroArch. Uses default EmuDeck bindings."
"creator" "76561199036238022"
"progenitor" ""
"url" "template://nintendo switch online n64 controller.vdf"
"export_type" "template"
"controller_type" "controller_neptune"
"major_revision" "0"
"minor_revision" "0"
"Timestamp" "4"
"localization"
{
"english"
{
"title" "Gamepad"
"description" "This template is for games that already have built-in gamepad support. Intended for dual stick games such as twin-stick shooters, side-scrollers, etc."
}
"czech"
{
"title" "Gamepad"
"description" "Tato šablona je pro většinu her podporujících gamepad a byla navržena pro použití ve hrách využívajících dvě páčky, jakými jsou například plošinovky nebo automatové hry."
}
"danish"
{
"title" "Gamepad"
"description" "Denne skabelon er til spil, der allerede har indbygget gamepad-understøttelse. Beregnet til spil med dobbelte styrepinde såsom twin-stick shooters, side-scrollers osv."
}
"dutch"
{
"title" "Gamepad"
"description" "Deze template is voor spellen die al ingebouwde gamepadondersteuning hebben. Bedoeld voor dual-stick spellen zoals twin-stick-shooters, side-scrollers, etc."
}
"finnish"
{
"title" "Ohjain"
"description" "Tämä malli on muita ohjaimia valmiiksi tukeville peleille. Se on tarkoitettu kahta sauvaa käyttäville peleille, kuten twin-stick shooterit, side-scrollerit, jne."
}
"french"
{
"title" "Manette"
"description" "Ce modèle fonctionne pour les jeux conçus pour manettes à deux sticks tels que les jeux de type twin-stick shooter, à défilement horizontal (side-scrollers), etc."
}
"german"
{
"title" "Gamepad"
"description" "Diese Vorlage ist für Spiele konzipiert, die bereits volle Unterstützung für Gamepads mit sich bringen. Gedacht für Zwei-Analogstick-Spiele wie Twin-Stick-Shooter, Side-Scrollers usw."
}
"hungarian"
{
"title" "Gamepad"
"description" "Ez a sablon olyan játékokhoz való, melyek már rendelkeznek beépített gamepad-támogatással. Olyan két karos játékokhoz szánva, mint a kétkaros vagy oldalnézetes lövöldözős játékok stb."
}
"italian"
{
"title" "Controller"
"description" "Questo modello funziona per la maggior parte dei giochi che supportano i controller in modalità nativa."
}
"japanese"
{
"title" "ゲームパッド"
"description" "このテンプレートは、標準でゲームパッドをサポートしているツインスティックシューターや横スクロール等といったデュアルスティックゲームを対象としたゲーム向けです。"
}
"koreana"
{
"title" "게임패드"
"description" "게임 패드를 지원하도록 설계된 게임들을 위한 설정입니다. 이중 스틱 슈팅 게임, 사이드 스크롤 게임 등 스틱을 두 개 쓰는 게임을 염두에 두고 만들어졌습니다."
}
"polish"
{
"title" "Kontroler"
"description" "Ten szablon jest odpowiedni dla gier, które już mają wbudowane wsparcie dla kontrolerów. Przeznaczony dla gier obsługujących dwie gałki, m.in. twin-stick shootery, side-scrollery itp."
}
"portuguese"
{
"title" "Comando"
"description" "Este modelo é indicado para jogos que já têm compatibilidade nativa com comando. Foi concebido para jogos de tiros que usam dois sticks, jogos de plataformas, de naves, etc."
}
"romanian"
{
"title" "Gamepad"
"description" "Șablonul acesta este pentru jocurile care au deja suport pentru gamepad implementat. Destinat pentru jocuri dual stick, precum shooter-e twin-stick, side-scroller, etc."
}
"russian"
{
"title" "Геймпад"
"description" "Этот шаблон подходит для большинства игр с поддержкой геймпада — например, для шутеров с видом сверху или сбоку."
}
"spanish"
{
"title" "Mando"
"description" "Esta plantilla es para juegos que ya incluyen de serie compatibilidad con mando. Está destinada a juegos de doble stick como twin-stick shooters, side-scrollers, etc."
}
"swedish"
{
"title" "Gamepad"
"description" "Denna mall är för spel som redan har inbyggt stöd för spelkontroller. Avsett för spel som använder två styrspakar, som twin-stick shooters och side-scrollers, etc."
}
"schinese"
{
"title" "手柄"
"description" "该模板适用于已内置手柄支持的游戏。针对双摇杆游戏,如双摇杆射击游戏、横版过关游戏等设计。"
}
"thai"
{
"title" "เกมแพด"
}
"brazilian"
{
"title" "Controle padrão"
"description" "Este modelo é para jogos já compatíveis com controle que usam ambas as alavancas, como jogos de nave, etc."
}
"bulgarian"
{
"title" "Геймпад"
"description" "Този шаблон е за игри, които вече имат вградена поддръжка на геймпад. Предназначен e за игри ползващи двата стика. Като например, екшъни за два аналогови стика, странични скролери и т.н."
}
"greek"
{
"title" "Χειριστήριο"
"description" "Αυτό το πρότυπο ορίζεται για παιχνίδια τα οποία έχουν ήδη υποστήριξη χειριστηρίου. Προορίζεται για παιχνίδια dual-stick όπως twin-stick shooters, side-scrollers, κλπ."
}
"turkish"
{
"title" "Oyun Kumandası"
"description" "Bu şablon hali hazırda oyun içi oyun kumandası desteği ve birincil veya üçüncü kişi kontrollü kameraya sahip oyunlar içindir. Çift çubuk kullanılan oyunlar olan ikiz çubuk nişancılık, side-scroller oyunlar vb. içindir."
}
"ukrainian"
{
"title" "Ґеймпад"
"description" "Цей шаблон для більшості ігор, в яких вже вбудовано підтримку ґеймпада. Призначено для ігор з керуванням двома стіками."
}
}
"group"
{
"id" "0"
"mode" "four_buttons"
"name" ""
"description" ""
"inputs"
{
"button_a"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button A"
}
}
}
"disabled_activators"
{
}
}
"button_b"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button X"
}
}
}
"disabled_activators"
{
}
}
"button_x"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button RSTICK_LEFT"
}
}
}
"disabled_activators"
{
}
}
"button_y"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button RSTICK_UP"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "1"
"mode" "dpad"
"name" ""
"description" ""
"inputs"
{
"dpad_north"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_up"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_south"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_down"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_east"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_right"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_west"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_left"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "2"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
"settings"
{
"haptic_intensity" "2"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "3"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_LEFT"
}
"settings"
{
"haptic_intensity" "2"
}
}
"Full_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "4"
"mode" "trigger"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button TRIGGER_LEFT"
}
"settings"
{
"haptic_intensity" "2"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
"output_trigger" "1"
}
}
"group"
{
"id" "5"
"mode" "trigger"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button RSTICK_DOWN"
}
"settings"
{
"haptic_intensity" "2"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
"output_trigger" "2"
}
}
"group"
{
"id" "6"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
"settings"
{
"haptic_intensity" "2"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "8"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "9"
"mode" "dpad"
"name" ""
"description" ""
"inputs"
{
"dpad_north"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_UP"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_south"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_DOWN"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_east"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_RIGHT"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_west"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_LEFT"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
"requires_click" "0"
"haptic_intensity_override" "0"
}
}
"group"
{
"id" "7"
"mode" "switches"
"name" ""
"description" ""
"inputs"
{
"button_escape"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button start"
}
}
}
"disabled_activators"
{
}
}
"button_menu"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button RSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
"left_bumper"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button shoulder_left"
}
}
}
"disabled_activators"
{
}
}
"right_bumper"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button shoulder_right"
}
}
}
"disabled_activators"
{
}
}
"button_back_left"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button RSTICK_LEFT"
}
}
}
"disabled_activators"
{
}
}
"button_back_right"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button A"
}
}
}
"disabled_activators"
{
}
}
"button_back_left_upper"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button RSTICK_UP"
}
}
}
"disabled_activators"
{
}
}
"button_back_right_upper"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button X"
}
}
}
"disabled_activators"
{
}
}
"button_capture"
{
"activators"
{
"release"
{
"bindings"
{
"binding" "controller_action system_key_1"
}
}
}
"disabled_activators"
{
}
}
}
}
"preset"
{
"id" "0"
"name" "Default"
"group_source_bindings"
{
"7" "switch active"
"0" "button_diamond active"
"3" "joystick active"
"4" "left_trigger active"
"5" "right_trigger active"
"8" "right_joystick active"
"9" "dpad active"
}
}
"settings"
{
"left_trackpad_mode" "0"
"right_trackpad_mode" "0"
}
}
Description: This layout uses the trackpad instead of the touch screen for Nintendo DS Games. This layout simply changes the trackpad to a mouse, sets the click to Left Click
, and reduces the sensitivity.
Additional configuration is required in Retroarch:
Tutorial
- Press both
L3
andR3
while playing a DS game -
Quick Menu
>Core Options
>Screen
>Touch Mode
> change fromTouch
toMouse
-
Quick Menu
>Manage Core Options
>Save Content Directory Options
Profile Name: emudeck_melonds_trackpad.vdf
"controller_mappings"
{
"version" "3"
"revision" "8"
"title" "EmuDeck MelonDS Trackpad"
"description" "Trackpad Controls for Nintendo DS Games"
"creator" "76561199036238022"
"progenitor" ""
"url" "template://emudeck_melonds_trackpad"
"export_type" "template"
"controller_type" "controller_neptune"
"major_revision" "0"
"minor_revision" "0"
"Timestamp" "-140252896"
"localization"
{
"english"
{
"title" "Gamepad With Joystick Trackpad"
"description" "This template is for most games that already have built-in gamepad support and have a first or third person controlled camera. FPS or Third Person Adventure games, etc."
}
"czech"
{
"title" "Gamepad s ovládáním kamery"
"description" "Tato šablona je pro většinu her podporujících gamepad a disponujících kamerou z pohledu první nebo třetí osoby. Mezi takové hry patří například akční hry z pohledu první nebo třetí osoby."
}
"danish"
{
"title" "Gamepad med kamerastyring"
"description" "Denne skabelon er til de fleste spil, der allerede har indbygget gamepad-understøttelse og har et første- eller tredjepersonskontrolleret kamera. FPS eller tredjepersons adventure-spil osv."
}
"dutch"
{
"title" "Gamepad met camerabesturing"
"description" "Deze template is voor de meeste spellen die reeds ingebouwde gamepadondersteuning hebben en die een camera hebben die wordt bestuurd in de eerste of derde persoon. FPS, third person-avontuurspellen, etc."
}
"finnish"
{
"title" "Kameraa ohjaava peliohjain"
"description" "Tämä malli on useimmille muita ohjaimia valmiiksi tukeville peleille, joissa on ensimmäisessä tai kolmannessa persoonassa ohjattava kamera. FPS-pelit, kolmannen persoonan seikkailupelit jne."
}
"french"
{
"title" "Manette avec contrôles caméra"
"description" "Ce modèle fonctionne pour la plupart des jeux ayant un support manette intégré et une caméra contrôlée à la première ou à la troisième personne. FPS, jeux d'aventure à la troisième personne, etc."
}
"german"
{
"title" "Gamepad mit Kamerasteuerung"
"description" "Diese Vorlage ist für die meisten Spiele konzipiert, die bereits volle Untersützung für Gamepads mit sich bringen und eine First- oder Third-Person-Kamerasteuerung haben. Gedacht für Ego-Shooter, Third-Person-Abenteuerspiele usw."
}
"hungarian"
{
"title" "Gamepad kamerairányítással"
"description" "Ez a sablon a legtöbb olyan játékhoz való, melyek már rendelkeznek beépített gamepad-támogatással, és van első vagy harmadik személyű kezelésű kamerájuk. Ilyenek az FPS vagy harmadik személyű kalandjátékok stb."
}
"italian"
{
"title" "Gamepad con controlli della telecamera"
"description" "Questo template è pensato per la maggior parte dei giochi che hanno già il supporto per gamepad integrato e hanno la visuale controllata in prima o terza persona. Giochi d'avventura in terza persona, FPS ecc."
}
"japanese"
{
"title" "カメラコントロール機能を持つゲームパッド"
"description" "FPS や、アドベンチャーゲームのような、一人称または三人称のカメラ操作を行うゲームパッドに標準対応したゲーム用のテンプレートです。"
}
"koreana"
{
"title" "카메라 조작 기능이 있는 게임패드"
"description" "이 템플릿은 이미 게임패드 지원이 내장되어 있으며 1인칭 또는 3인칭 시점 카메라 조작을 지원하는 대부분의 게임을 위한 것입니다. FPS, 3인칭 어드벤쳐 게임 및 기타."
}
"polish"
{
"title" "Kontroler obsługujący kamerę"
"description" "Ten szablon jest dla większości gier, które mają wbudowane wsparcie dla kontrolerów, a także kamerę kontrolowaną z perspektywy pierwszej lub trzeciej osoby, np. FPS-y bądź gry przygodowe."
}
"portuguese"
{
"title" "Comando com controlos de câmara"
"description" "Este modelo é indicado para jogos que já têm compatibilidade nativa com comando e têm uma câmara que pode ser controlada. Por exemplo, jogos em primeira ou terceira pessoa, do género de aventura, de tiros, etc."
}
"romanian"
{
"title" "Gamepad cu controale pentru cameră"
"description" "Acest șablon este pentru majoritatea jocurilor care au deja suport pentru gamepad implementat și au o cameră controlată din perspectivă first sau third person. FPS sau jocuri de aventură third person, etc."
}
"russian"
{
"title" "Геймпад с управлением камерой"
"description" "Этот шаблон предназначен для большинства игр от первого или третьего лица, в которых уже есть встроенная поддержка геймпада (например, для шутеров или экшенов)."
}
"spanish"
{
"title" "Mando con controles de cámara"
"description" "Esta plantilla es para la mayoría de juegos que ya incluyen de serie compatibilidad con mando y disponen de cámara controlada en primera o tercera persona: FPS, juegos de aventura en tercera persona, etc."
}
"swedish"
{
"title" "Gamepad med kamerakontroller"
"description" "Denna mall är för de flesta spel som redan har inbyggt stöd för spelkontroller och har en kamera som styrs i första- eller tredjeperson. FPS eller äventyrsspel etc."
}
"schinese"
{
"title" "支持视角控制的手柄"
"description" "该模板适用于已内置手柄支持,并且拥有第一或第三人称控制视角的大多数游戏。包括 FPS 或第三人称冒险游戏等。"
}
"thai"
{
"title" "เกมแพดพร้อมการควบคุมมุมกล้อง"
"description" "แม่แบบนี้ใช้สำหรับเกมส่วนมากที่มีการรองรับเกมแพดมาในตัวอยู่แล้ว และมีการควบคุมมุมกล้องในมุมมองบุคคลที่หนึ่งหรือสาม เช่น เกมยิงมุมมองบุคคลที่หนึ่ง หรือเกมผจญภัยมุมมองบุคคลที่สาม ฯลฯ"
}
"brazilian"
{
"title" "Controle com controle de câmera"
"description" "Este modelo é para jogos já compatíveis com controles que possuem uma câmera controlável, seja em primeira ou terceira pessoa, como jogos de tiro, aventura, etc."
}
"bulgarian"
{
"title" "Геймпад с управление на камерата"
"description" "Този шаблон е за повечето игри, които вече имат вградена поддръжка на геймпад и включват управление на камерата от първо или трето лице. Екшъни от първо лице, приключенски игри от трето лице и т.н."
}
"greek"
{
"title" "Χειριστήριο με πλήκτρα κάμερας"
"description" "Αυτό το πρότυπο είναι για τα περισσότερα παιχνίδια που έχουν ενσωματωμένη υποστήριξη χειριστηρίου και έχουν μια ελεγχόμενη κάμερα πρώτου ή τρίτου προσώπου. FPS ή παιχνίδια περιπέτειας τρίτου προσώπου κλπ."
}
"turkish"
{
"title" "Kamera Kontrollü Oyun Kumandası"
"description" "Bu şablon hali hazırda oyun içi oyun kumandası desteği ve birincil veya üçüncü kişi kontrollü kameraya sahip oyunlar içindir. FPS veya Üçüncü Kişi Macera oyunları vb."
}
"ukrainian"
{
"title" "Ґеймпад з елементами керування камерою"
"description" "Цей шаблон для більшості ігор, що вже мають вбудовану підтримку ґеймпада і у яких камера керується від першої або третьої особи. Шутери від першої особи чи пригодницькі ігри від третьої особи тощо."
}
}
"group"
{
"id" "0"
"mode" "four_buttons"
"name" ""
"description" ""
"inputs"
{
"button_a"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button A"
}
}
}
"disabled_activators"
{
}
}
"button_b"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button B"
}
}
}
"disabled_activators"
{
}
}
"button_x"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button X"
}
}
}
"disabled_activators"
{
}
}
"button_y"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button Y"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "1"
"mode" "dpad"
"name" ""
"description" ""
"inputs"
{
"dpad_north"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_up"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_south"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_down"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_east"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_right"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_west"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_left"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "2"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "3"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_LEFT"
}
"settings"
{
"haptic_intensity" "2"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
"deadzone_inner_radius" "7199"
}
}
"group"
{
"id" "4"
"mode" "trigger"
"name" ""
"description" ""
"inputs"
{
}
"settings"
{
"output_trigger" "1"
}
}
"group"
{
"id" "5"
"mode" "trigger"
"name" ""
"description" ""
"inputs"
{
}
"settings"
{
"output_trigger" "2"
}
}
"group"
{
"id" "6"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "8"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "9"
"mode" "dpad"
"name" ""
"description" ""
"inputs"
{
"dpad_north"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_UP"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_south"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_DOWN"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_east"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_RIGHT"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_west"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_LEFT"
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
"requires_click" "0"
"haptic_intensity_override" "0"
}
}
"group"
{
"id" "10"
"mode" "single_button"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button START"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "11"
"mode" "single_button"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button SELECT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "12"
"mode" "mouse_joystick"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "14"
"mode" "mouse_region"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "mouse_button LEFT"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
"haptic_intensity" "3"
"output_joystick" "3"
"scale" "10"
"position_x" "83"
"position_y" "70"
"sensitivity_horiz_scale" "133"
"sensitivity_vert_scale" "110"
"teleport_start" "0"
"teleport_stop" "0"
}
}
"group"
{
"id" "16"
"mode" "absolute_mouse"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "mouse_button LEFT"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
"sensitivity" "40"
}
}
"group"
{
"id" "7"
"mode" "switches"
"name" ""
"description" ""
"inputs"
{
"button_escape"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button start"
}
}
}
"disabled_activators"
{
}
}
"button_menu"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button select"
}
}
}
"disabled_activators"
{
}
}
"left_bumper"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button shoulder_left"
}
}
}
"disabled_activators"
{
}
}
"right_bumper"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button shoulder_right"
}
}
}
"disabled_activators"
{
}
}
"button_capture"
{
"activators"
{
"release"
{
"bindings"
{
"binding" "controller_action system_key_1"
}
}
}
"disabled_activators"
{
}
}
}
}
"preset"
{
"id" "0"
"name" "Default"
"group_source_bindings"
{
"7" "switch active"
"0" "button_diamond active"
"1" "left_trackpad active"
"11" "left_trackpad inactive"
"2" "right_trackpad inactive"
"6" "right_trackpad inactive"
"10" "right_trackpad inactive"
"12" "right_trackpad inactive"
"14" "right_trackpad inactive"
"16" "right_trackpad active"
"3" "joystick active"
"4" "left_trigger active"
"5" "right_trigger active"
"8" "right_joystick active"
"9" "dpad active"
}
}
"settings"
{
"left_trackpad_mode" "0"
"right_trackpad_mode" "0"
}
}
Replace with your Steam Input Layout and a brief description.
Replace with your Steam Input Layout and a brief description.
Replace with your Steam Input Layout and a brief description.
Replace with your Steam Input Layout and a brief description.
For instructions on how to create Dolphin controller profiles, refer to: https://github.com/dragoonDorise/EmuDeck/wiki/dolphin#how-to-create-per-game-controller-layouts.
For instructions on how to share Dolphin controller profiles, refer to: https://github.com/dragoonDorise/EmuDeck/wiki/community-creations#sharing-dolphin-profiles.
For instructions on how to download Dolphin controller profiles, refer to: https://github.com/dragoonDorise/EmuDeck/wiki/community-creations#downloading-dolphin-profiles.
For instructions on how to set a Dolphin controller profile for a specific game, refer to: https://github.com/dragoonDorise/EmuDeck/wiki/dolphin#how-to-download-dolphin-controller-profiles-and-set-it-for-a-specific-game
This section will go over how to share and post your Dolphin controller layouts on this page.
To begin, locate your profile layout:
Your Gamecube controller layouts are located here: home/deck/.var/app/org.DolphinEmu.dolphin-emu/config/dolphin-emu/Profiles/GCPad
Your Wii controller layouts are located here: /home/deck/.var/app/org.DolphinEmu.dolphin-emu/config/dolphin-emu/Profiles/Wiimote
Note: ~/.var is an invisible folder by default. In Dolphin (file manager), click the ☰ (hamburger menu) in the top right, click view hidden files to see these folders.
Tutorial
- Create a new section on this page under Dolphin in the
Table of Contents
, refer toDolphin Config 1
as a sample- At the moment,
Dolphin Config 4
throughDolphin Config 6
can be edited and replaced with your templates.
- At the moment,
- After locating your profile layout, click
Open with Kwrite
- Either:
- Right click, click
Select All
, right click, clickCopy
- Press
Ctrl
+A
, PressCtrl
+C
- Right click, click
- Paste the contents of the file into your newly created section
- Place ``` at the top and the bottom of the pasted profile, refer to
Dolphin Config 1
as a sample - Save the page
- You have now successfully shared your profile
Tutorial
- Copy the contents of a profile you would like to use by clicking the copy icon in the top right
- Visual Reference:
- In either the
Gamecube
or theWii
profile folders, right click,Create New
,Text File
- Gamecube Profile Folder:
home/deck/.var/app/org.DolphinEmu.dolphin-emu/config/dolphin-emu/Profiles/GCPad
- Wii Profile Folder:
/home/deck/.var/app/org.DolphinEmu.dolphin-emu/config/dolphin-emu/Profiles/Wiimote
- Gamecube Profile Folder:
- Paste the contents of a profile you would like to use
- Save the profile, either matching the profile name or something descriptive with an
.ini
file extension- Without the
.ini
file extension, the profile will not work
- Without the
- You now have successfully downloaded a profile
Note: For instructions on how to set a Dolphin controller profile for a specific game, refer to: https://github.com/dragoonDorise/EmuDeck/wiki/dolphin#how-to-download-dolphin-controller-profiles-and-set-it-for-a-specific-game
Sample Profile
Profile Name: Wii_base_nunchuck_with_touchpad.ini
[Profile]
Device = evdev/0/Microsoft X-Box 360 pad 0
Buttons/A = SOUTH
Buttons/B = EAST
Buttons/1 = NORTH
Buttons/2 = WEST
Buttons/- = SELECT
Buttons/+ = START
Buttons/Home = Return
IR/Vertical Offset = 12.0
IR/Total Yaw = 19.0
IR/Total Pitch = 22.0
IR/Auto-Hide = True
IR/Up = `XInput2/0/Virtual core pointer:Cursor Y-`|`Axis 4-`
IR/Down = `XInput2/0/Virtual core pointer:Cursor Y+`|`Axis 4+`
IR/Left = `XInput2/0/Virtual core pointer:Cursor X-`|`Axis 3-`
IR/Right = `XInput2/0/Virtual core pointer:Cursor X+`|`Axis 3+`
IR/Hide = THUMBR
IR/Calibration = 100.00 101.96 108.24 112.67 116.44 114.62 108.11 101.96 100.00 101.96 108.11 113.10 115.81 113.90 108.24 101.96 100.00 101.96 108.24 114.93 115.13 115.19 108.24 101.96 100.00 101.96 108.13 112.88 112.20 110.97 108.24 101.96
Tilt/Forward = `Full Axis 2+`&`Full Axis 1-`
Tilt/Backward = `Full Axis 2+`&`Full Axis 1+`
Tilt/Left = `Full Axis 2+`&`Full Axis 0-`
Tilt/Right = `Full Axis 2+`&`Full Axis 0+`
Tilt/Modifier/Range = 50.0
Shake/X = TL
Shake/Y = TL
Shake/Z = TL
IMUAccelerometer/Up = `Accel Up`
IMUAccelerometer/Down = `Accel Down`
IMUAccelerometer/Left = `Accel Left`
IMUAccelerometer/Right = `Accel Right`
IMUAccelerometer/Forward = `Accel Forward`
IMUAccelerometer/Backward = `Accel Backward`
IMUGyroscope/Pitch Up = `Gyro Pitch Up`
IMUGyroscope/Pitch Down = `Gyro Pitch Down`
IMUGyroscope/Roll Left = `Gyro Roll Left`
IMUGyroscope/Roll Right = `Gyro Roll Right`
IMUGyroscope/Yaw Left = `Gyro Yaw Left`
IMUGyroscope/Yaw Right = `Gyro Yaw Right`
IMUIR/Enabled = False
Extension = Nunchuk
Nunchuk/Buttons/C = TR
Nunchuk/Buttons/Z = `Full Axis 5+`
Nunchuk/Stick/Up = `Axis 1-`
Nunchuk/Stick/Down = `Axis 1+`
Nunchuk/Stick/Left = `Axis 0-`
Nunchuk/Stick/Right = `Axis 0+`
Nunchuk/Stick/Modifier/Range = 50.0
Nunchuk/Stick/Calibration = 100.00 101.96 107.70 111.02 112.30 107.98 106.91 101.96 100.00 101.96 108.24 113.14 114.55 111.79 108.24 101.96 100.00 101.96 108.24 113.60 114.92 113.33 108.24 101.96 100.00 101.96 108.24 110.60 109.10 108.88 108.24 101.96
Nunchuk/Tilt/Modifier/Range = 50.0
Nunchuk/Shake/X = `Full Axis 2+`
Nunchuk/Shake/Y = `Full Axis 2+`
Nunchuk/Shake/Z = `Full Axis 2+`
Classic/Buttons/A = EAST
Classic/Buttons/B = SOUTH
Classic/Buttons/X = WEST
Classic/Buttons/Y = NORTH
Classic/Buttons/ZL = TL
Classic/Buttons/ZR = TR
Classic/Buttons/- = SELECT
Classic/Buttons/+ = START
Classic/Left Stick/Up = `Axis 1-`
Classic/Left Stick/Down = `Axis 1+`
Classic/Left Stick/Left = `Axis 0-`
Classic/Left Stick/Right = `Axis 0+`
Classic/Left Stick/Modifier/Range = 50.0
Classic/Left Stick/Calibration = 100.00 101.96 107.63 112.05 110.67 111.78 105.49 101.89 100.00 101.96 108.24 112.08 112.34 109.50 107.04 101.96 100.00 101.96 106.95 114.00 115.73 117.91 108.24 101.96 100.00 101.96 108.24 106.97 109.81 109.07 108.24 101.96
Classic/Right Stick/Up = `Axis 4-`
Classic/Right Stick/Down = `Axis 4+`
Classic/Right Stick/Left = `Axis 3-`
Classic/Right Stick/Right = `Axis 3+`
Classic/Right Stick/Modifier/Range = 50.0
Classic/Right Stick/Calibration = 100.00 101.96 107.60 112.29 113.04 111.78 108.24 101.96 100.00 101.96 108.24 109.67 111.62 109.71 104.61 101.96 100.00 101.96 108.12 116.15 116.97 117.85 107.67 101.96 100.00 101.96 108.24 107.11 107.45 110.21 108.24 101.96
Classic/Triggers/L = `Full Axis 2+`
Classic/Triggers/R = `Full Axis 5+`
Classic/Triggers/L-Analog = `Full Axis 2+`
Classic/Triggers/R-Analog = `Full Axis 5+`
Guitar/Stick/Modifier/Range = 50.0
Drums/Stick/Modifier/Range = 50.0
Turntable/Stick/Modifier/Range = 50.0
uDraw/Stylus/Modifier/Range = 50.0
Drawsome/Stylus/Modifier/Range = 50.0
Rumble/Motor = Strong
D-Pad/Up = `Axis 7-`
D-Pad/Down = `Axis 7+`
D-Pad/Left = `Axis 6-`
D-Pad/Right = `Axis 6+`
Options/Upright Wiimote = `Full Axis 2+`
Hotkeys/Sideways Toggle = SELECT&THUMBR
Credit: TrickTrigger
REQUIRES STEAMDECKGYRODSU TO BE INSTALLED
How to Install SteamDeckGyroDSU: https://github.com/dragoonDorise/EmuDeck/wiki/frequently-asked-questions#how-do-i-install-steamdeckgyrodsu
This config is basically the Nunchuck config, with modifications to enable proper, true motion controls. This can be easily converted into a standalone Wii Remote config with motion by simply removing the Nunchuck in the Dolphin menu, but keep in mind that I swapped some buttons around, so you might want to tweak it if you do that.
You are advised to examine the motion inputs so you can learn how to get SDGyroDSU to work properly with Dolphin. It's kind of a pain, since Dolphin registers it as a separate controller from the buttons. This config features workarounds so the issue is resolved.
Profile Name: Wii_base_nunchuck_with_true_motion.ini
[Profile]
Device = evdev/0/Microsoft X-Box 360 pad 0
Buttons/A = SOUTH
Buttons/B = `Full Axis 5+`
Buttons/1 = EAST
Buttons/2 = WEST
Buttons/- = SELECT
Buttons/+ = START
Buttons/Home = Return
IR/Vertical Offset = 12.0
IR/Total Yaw = 19.0
IR/Total Pitch = 22.0
IR/Calibration = 100.00 101.96 108.24 112.67 116.44 114.62 108.11 101.96 100.00 101.96 108.11 113.10 115.81 113.90 108.24 101.96 100.00 101.96 108.24 114.93 115.13 115.19 108.24 101.96 100.00 101.96 108.13 112.88 112.20 110.97 108.24 101.96
Tilt/Modifier/Range = 50.0
Shake/X = NORTH
Shake/Y = NORTH
Shake/Z = NORTH
IMUAccelerometer/Up = `DSUClient/0/steamdeckgyro:Accel Up`
IMUAccelerometer/Down = `DSUClient/0/steamdeckgyro:Accel Down`
IMUAccelerometer/Left = `DSUClient/0/steamdeckgyro:Accel Left`
IMUAccelerometer/Right = `DSUClient/0/steamdeckgyro:Accel Right`
IMUAccelerometer/Forward = `DSUClient/0/steamdeckgyro:Accel Forward`
IMUAccelerometer/Backward = `DSUClient/0/steamdeckgyro:Accel Backward`
IMUGyroscope/Pitch Up = `DSUClient/0/steamdeckgyro:Gyro Pitch Up`
IMUGyroscope/Pitch Down = `DSUClient/0/steamdeckgyro:Gyro Pitch Down`
IMUGyroscope/Roll Left = `DSUClient/0/steamdeckgyro:Gyro Roll Left`
IMUGyroscope/Roll Right = `DSUClient/0/steamdeckgyro:Gyro Roll Right`
IMUGyroscope/Yaw Left = `DSUClient/0/steamdeckgyro:Gyro Yaw Left`
IMUGyroscope/Yaw Right = `DSUClient/0/steamdeckgyro:Gyro Yaw Right`
IMUIR/Recenter = THUMBR
Extension = Nunchuk
Nunchuk/Buttons/C = TL
Nunchuk/Buttons/Z = `Full Axis 2+`
Nunchuk/Stick/Up = `Axis 1-`
Nunchuk/Stick/Down = `Axis 1+`
Nunchuk/Stick/Left = `Axis 0-`
Nunchuk/Stick/Right = `Axis 0+`
Nunchuk/Stick/Modifier/Range = 50.0
Nunchuk/Stick/Calibration = 100.00 101.96 107.70 111.02 112.30 107.98 106.91 101.96 100.00 101.96 108.24 113.14 114.55 111.79 108.24 101.96 100.00 101.96 108.24 113.60 114.92 113.33 108.24 101.96 100.00 101.96 108.24 110.60 109.10 108.88 108.24 101.96
Nunchuk/Tilt/Modifier/Range = 50.0
Nunchuk/Shake/X = TR
Nunchuk/Shake/Y = TR
Nunchuk/Shake/Z = TR
Classic/Buttons/A = EAST
Classic/Buttons/B = SOUTH
Classic/Buttons/X = WEST
Classic/Buttons/Y = NORTH
Classic/Buttons/ZL = TL
Classic/Buttons/ZR = TR
Classic/Buttons/- = SELECT
Classic/Buttons/+ = START
Classic/Left Stick/Up = `Axis 1-`
Classic/Left Stick/Down = `Axis 1+`
Classic/Left Stick/Left = `Axis 0-`
Classic/Left Stick/Right = `Axis 0+`
Classic/Left Stick/Modifier/Range = 50.0
Classic/Left Stick/Calibration = 100.00 101.96 107.63 112.05 110.67 111.78 105.49 101.89 100.00 101.96 108.24 112.08 112.34 109.50 107.04 101.96 100.00 101.96 106.95 114.00 115.73 117.91 108.24 101.96 100.00 101.96 108.24 106.97 109.81 109.07 108.24 101.96
Classic/Right Stick/Up = `Axis 4-`
Classic/Right Stick/Down = `Axis 4+`
Classic/Right Stick/Left = `Axis 3-`
Classic/Right Stick/Right = `Axis 3+`
Classic/Right Stick/Modifier/Range = 50.0
Classic/Right Stick/Calibration = 100.00 101.96 107.60 112.29 113.04 111.78 108.24 101.96 100.00 101.96 108.24 109.67 111.62 109.71 104.61 101.96 100.00 101.96 108.12 116.15 116.97 117.85 107.67 101.96 100.00 101.96 108.24 107.11 107.45 110.21 108.24 101.96
Classic/Triggers/L = `Full Axis 2+`
Classic/Triggers/R = `Full Axis 5+`
Classic/Triggers/L-Analog = `Full Axis 2+`
Classic/Triggers/R-Analog = `Full Axis 5+`
Guitar/Stick/Modifier/Range = 50.0
Drums/Stick/Modifier/Range = 50.0
Turntable/Stick/Modifier/Range = 50.0
uDraw/Stylus/Modifier/Range = 50.0
Drawsome/Stylus/Modifier/Range = 50.0
Rumble/Motor = Strong
D-Pad/Up = `Axis 7-`
D-Pad/Down = `Axis 7+`
D-Pad/Left = `Axis 6-`
D-Pad/Right = `Axis 6+`
Hotkeys/Upright Toggle = SELECT&THUMBR
Credit: Trick Trigger
REQUIRES STEAMDECKGYRODSU TO BE INSTALLED
How to Install SteamDeckGyroDSU: https://github.com/dragoonDorise/EmuDeck/wiki/frequently-asked-questions#how-do-i-install-steamdeckgyrodsu
This config is the Nunchuck config with no attachment, and modifications to enable proper, true motion controls. Keep in mind that I swapped some buttons around, so you might want to tweak it if you do that.
You are advised to examine the motion inputs so you can learn how to get SDGyroDSU to work properly with Dolphin. It's kind of a pain, since Dolphin registers it as a separate controller from the buttons. This config features workarounds so the issue is resolved.
Profile Name: Wii_no_attachment_with_true_motion.ini
[Profile]
Device = evdev/0/Microsoft X-Box 360 pad 0
Buttons/A = SOUTH
Buttons/B = `Full Axis 5+`
Buttons/1 = EAST
Buttons/2 = NORTH
Buttons/- = SELECT
Buttons/+ = START
Buttons/Home = Return
IR/Vertical Offset = 12.0
IR/Total Yaw = 19.0
IR/Total Pitch = 22.0
IR/Auto-Hide = True
IR/Up = `Axis 4-`
IR/Down = `Axis 4+`
IR/Left = `Axis 3-`
IR/Right = `Axis 3+`
IR/Hide = THUMBR
IR/Calibration = 100.00 101.96 108.24 112.67 116.44 114.62 108.11 101.96 100.00 101.96 108.11 113.10 115.81 113.90 108.24 101.96 100.00 101.96 108.24 114.93 115.13 115.19 108.24 101.96 100.00 101.96 108.13 112.88 112.20 110.97 108.24 101.96
Tilt/Modifier/Range = 50.0
Shake/X = EAST
Shake/Y = EAST
Shake/Z = EAST
IMUAccelerometer/Up = `DSUClient/0/steamdeckgyro:Accel Up`
IMUAccelerometer/Down = `DSUClient/0/steamdeckgyro:Accel Down`
IMUAccelerometer/Left = `DSUClient/0/steamdeckgyro:Accel Left`
IMUAccelerometer/Right = `DSUClient/0/steamdeckgyro:Accel Right`
IMUAccelerometer/Forward = `DSUClient/0/steamdeckgyro:Accel Forward`
IMUAccelerometer/Backward = `DSUClient/0/steamdeckgyro:Accel Backward`
IMUGyroscope/Pitch Up = `DSUClient/0/steamdeckgyro:Gyro Pitch Up`
IMUGyroscope/Pitch Down = `DSUClient/0/steamdeckgyro:Gyro Pitch Down`
IMUGyroscope/Roll Left = `DSUClient/0/steamdeckgyro:Gyro Roll Left`
IMUGyroscope/Roll Right = `DSUClient/0/steamdeckgyro:Gyro Roll Right`
IMUGyroscope/Yaw Left = `DSUClient/0/steamdeckgyro:Gyro Yaw Left`
IMUGyroscope/Yaw Right = `DSUClient/0/steamdeckgyro:Gyro Yaw Right`
IMUIR/Recenter = TR
Nunchuk/Buttons/C = TL
Nunchuk/Buttons/Z = `Full Axis 2+`
Nunchuk/Stick/Up = `Axis 1-`
Nunchuk/Stick/Down = `Axis 1+`
Nunchuk/Stick/Left = `Axis 0-`
Nunchuk/Stick/Right = `Axis 0+`
Nunchuk/Stick/Modifier/Range = 50.0
Nunchuk/Stick/Calibration = 100.00 101.96 107.70 111.02 112.30 107.98 106.91 101.96 100.00 101.96 108.24 113.14 114.55 111.79 108.24 101.96 100.00 101.96 108.24 113.60 114.92 113.33 108.24 101.96 100.00 101.96 108.24 110.60 109.10 108.88 108.24 101.96
Nunchuk/Tilt/Modifier/Range = 50.0
Nunchuk/Shake/X = NORTH
Nunchuk/Shake/Y = NORTH
Nunchuk/Shake/Z = NORTH
Classic/Buttons/A = EAST
Classic/Buttons/B = SOUTH
Classic/Buttons/X = WEST
Classic/Buttons/Y = NORTH
Classic/Buttons/ZL = TL
Classic/Buttons/ZR = TR
Classic/Buttons/- = SELECT
Classic/Buttons/+ = START
Classic/Left Stick/Up = `Axis 1-`
Classic/Left Stick/Down = `Axis 1+`
Classic/Left Stick/Left = `Axis 0-`
Classic/Left Stick/Right = `Axis 0+`
Classic/Left Stick/Modifier/Range = 50.0
Classic/Left Stick/Calibration = 100.00 101.96 107.63 112.05 110.67 111.78 105.49 101.89 100.00 101.96 108.24 112.08 112.34 109.50 107.04 101.96 100.00 101.96 106.95 114.00 115.73 117.91 108.24 101.96 100.00 101.96 108.24 106.97 109.81 109.07 108.24 101.96
Classic/Right Stick/Up = `Axis 4-`
Classic/Right Stick/Down = `Axis 4+`
Classic/Right Stick/Left = `Axis 3-`
Classic/Right Stick/Right = `Axis 3+`
Classic/Right Stick/Modifier/Range = 50.0
Classic/Right Stick/Calibration = 100.00 101.96 107.60 112.29 113.04 111.78 108.24 101.96 100.00 101.96 108.24 109.67 111.62 109.71 104.61 101.96 100.00 101.96 108.12 116.15 116.97 117.85 107.67 101.96 100.00 101.96 108.24 107.11 107.45 110.21 108.24 101.96
Classic/Triggers/L = `Full Axis 2+`
Classic/Triggers/R = `Full Axis 5+`
Classic/Triggers/L-Analog = `Full Axis 2+`
Classic/Triggers/R-Analog = `Full Axis 5+`
Guitar/Stick/Modifier/Range = 50.0
Drums/Stick/Modifier/Range = 50.0
Turntable/Stick/Modifier/Range = 50.0
uDraw/Stylus/Modifier/Range = 50.0
Drawsome/Stylus/Modifier/Range = 50.0
Rumble/Motor = Strong
D-Pad/Up = `Axis 7-`
D-Pad/Down = `Axis 7+`
D-Pad/Left = `Axis 6-`
D-Pad/Right = `Axis 6+`
Hotkeys/Sideways Toggle = SELECT&THUMBR
Replace this with your controller config and a brief description.
Replace this with your controller config and a brief description.
Replace this with your controller config and a brief description.
Important: This section is for game configurations that require elaborate setup. For minor tweaks and settings, please use Manacharge's community database. You can link back here in the community database as well.
You can contribute to the community games database here: https://docs.google.com/forms/d/e/1FAIpQLScavGFOuGpEVpyHdRVcPjdrCEquG9ItBaloa8Q0XaiNlu_Afg/viewform
You can view the community database here: https://docs.google.com/spreadsheets/d/1fRqvAh_wW8Ho_8i966CCSBgPJ2R_SuDFIvvKsQCv05w/edit?usp=sharing
How to set up and configure RPCS3: https://github.com/dragoonDorise/EmuDeck/wiki/RPCS3.
Credit: AwkwaBear
NOTE: This guide is just to set up MGS4 and getting it RUNNING WITHOUT CRASHING on Steam Deck, much work is still needed to get it working with an optimized playable configuration free from audio issues and framerate hitching. This page is still a work in progress and will updated as better configuration options are determined
Tutorial
MGS4 when first imported into RPCS3 will freeze natively and needs some work to get functioning.
I believe trying to patch the file using the built in RPCS3 patch manager will not fix the issue and the game needs to be patched manually to get it working. (Let me know if anyone else is able to prove otherwise)
- If you haven't done so already, follow the PS3 setup guide from RGC to get mgs4 added and rpcs3 setup
- Patch using the "Manually adding custom patches" section on this page and the MGS4 patch section in the second link. (You can make the patch yourself using the rpcs3 wiki link or download the one I have made from my github repo linked just below)
- When the instructions say "Save the file in relevant location:" you need to navigate to save it in the flatpack location instead of the usual Linux one.
- The location is:
~/.var/app/net.rpcs3.RPCS3/config/rpcs3/patches
- The location is:
- Open RPCS3 Navigate to the Patch Manager (Select Manage > Game Patches) and tick the checkbox corresponding to the patches you wish to apply.
- Select Metal Gear solid 4: Guns of the Patriots in the game list and click the tab to expand
- expand both tabs for the version of the game you have
- select the
cellspurs urgent commands hack - 4.8x
(where 'x' is the ps3 firmware version you installed) - select
Crash Fix
- select
Disable Shadows
- select
Disable spawned effects
- select
Reduce Stage quality
- select
Unlock FPS
- Apply and Save your patch settings then run the game
The game takes ~2 hours to install initially so be ready for a long wait
I recommend adding all the patches to boost performance as much as possible. This game is really hard to run so you need all the help you can get.
These are just the settings I got to work, maybe mess around with it and let me know if something works better and I can update this guide.
Good luck out there, this game will work now albeit running kinda like trash, there's a lot of frame inconsistencies and audio either cutting out or missing altogether but it is technically able to be played (though I would not consider it above the threshold of "playable") I think the results are promising and with some community tweaking we can get this masterpiece to generally playable state on steam deck.
You can find the guide here: https://github.com/dragoonDorise/EmuDeck/wiki/Metal-Gear-Solid-4---RPCS3-Setup-Guide.
How to set up and configure Yuzu: https://github.com/dragoonDorise/EmuDeck/wiki/Yuzu.
Credit: SardineCat
Recommended Settings
- Yuzu on portable mode (idk if docked loses somes frames)
- accuracy on high, cpu on unsafe,
- make sure you have powertools and then use smt off
- use v1.0.0 of the game
Recommended Mods
- How to install mods: https://github.com/dragoonDorise/EmuDeck/wiki/yuzu#how-to-install-mods
- This mod disables the blur effect which also increases some performance giving you some frames back https://cdn.discordapp.com/attachments/356187763139280896/798516893840965632/Blur_Removal.zip
- the 60fps mod found here https://cdn.discordapp.com/attachments/356187763139280896/724250990928461834/Stable-60fps-v2.zip
How well does the game perform after these tweaks?
- This all equates to 60fps almost everywhere, I lose a couple of frames in Mabe Village and Animal Village but its not a big deal IMO.
- Fixes the invisible Chain Chomp bug
SyncThing is a free self hosted "cloud" solution. There are limitations, the biggest here with the steam deck and the way EmuDeck moves/renames folders and the use of symlinks which is a “virtual file or folder” that can point to another. This is VERY nice, but due to the nature of differing filesystems, there is a reason SyncThing does not support this, and this tutorial avoids symlinks. Emudeck does make a few changes where syncing is not as straightforward as it could be, simply because the devs changed the default folder via the emulator. PCSX2 savestates and memcard folders are not only named differently from default but also moved from their default directory.
On the PC/Mac end, you will want to setup SynctThing to the corresponding location which will differ for each user. Just use your head, and would be wise to copy the same Ignore Patterns
Ryujinx and Yuzu, I find it easiest to share the entire NAND
(Yuzu) / User
(Ryujinx) so that the user ID is the same on your OTHER device, and if the save is locked to an ID, you still have access to it. This does mean, before setting up Syncthing, BACKUP BACKUP BACKUP! Choose your Syncthing File Versioning
as desired. Some systems/games may save often (IE Nintendo Switch) causing more overhead or even problems with a file versioning choice.
Steam Deck Syncthing paths and Ignore Patterns:
MAME SaveData:
path="/home/deck/.mame"
Ignore Patterns
// DO NOT IGNORE
!/nvram
!/sta
// IGNORE
*
.DS_Store
Flycast SaveData:
path="/run/media/mmcblk0p1/Emulation/saves/flycast/saves"
DuckStation MemCards:
path="/run/media/mmcblk0p1/Emulation/saves/duckstation/saves"
RetroArch SaveData:
path="/home/deck/.var/app/org.libretro.RetroArch/config/retroarch"
Ignore Patterns
// DO NOT IGNORE
!/states
!/saves
// IGNORE
*
.DS_Store
Ryujinx SaveData:
path="/home/deck/.config/Ryujinx/bis/user/"
RPCS3 SaveData:
path="/run/media/mmcblk0p1/Emulation/saves/rpcs3/saves"
Dolphin SaveData:
path="/home/deck/.var/app/org.DolphinEmu.dolphin-emu/data/dolphin-emu
Ignore Patterns
// DO NOT IGNORE
!/GC
!/Wii
!/GBA
!/states
!/StateSaves
// IGNORE
*
.DS_Store
PrimeHack SaveData:
path="/home/deck/.var/app/io.github.shiiion.primehack/data/dolphin-emu"
Ignore Patterns
// DO NOT IGNORE
!/GC
!/Wii
!/GBA
!/states
!/StateSaves
// IGNORE
*
.DS_Store
PPSSPP SaveData
path="/home/deck/.var/app/org.ppsspp.PPSSPP/config/ppsspp/PSP"
Ignore Patterns
// DO NOT IGNORE
!/PPSSPP_STATE
!/SAVEDATA
// IGNORE
*
.DS_Store
Citra SaveData:
path="/home/deck/.var/app/org.citra_emu.citra/data/citra-emu"
Ignore Patterns:
// DO NOT IGNORE
!/cheats
!/nand
!/sdmc
!/sysdata
// IGNORE
*
.DS_Store
PCSX2 SaveStates:
path="/run/media/mmcblk0p1/Emulation/saves/pcsx2/states"
PCSX2 MemCards:
path="/run/media/mmcblk0p1/Emulation/saves/pcsx2/saves"
Yuzu NAND:
path="/run/media/mmcblk0p1/Emulation/storage/yuzu/nand/"
Permissions:
Syncthing will need access to any folder in ~/.var
Install then open FlatSeal (A Permissions Editor with nice GUI, can be downloaded/installed via Discover in desktop mode)
Open Flatseal and click on Synching GTK>Filesystem>Other Files
~/.var/app/io.github.shiion.primehack/data/dolphin-emu
~/.var/app/org.citra_emu.citra/data/citra-emu
~/.var/app/org.DolphinEmu.dolphin-emu/data/dolphin-emu
~/.var/app/org.libreto.RetroArch/config/retroarch
~/.var/app/org.ppsspp.PPSSPP/config/ppsspp/PSP
Flatseal example via Steam Deck:
Start Syncthing Automatically:
Quit the Syncthing Daemon
Open Konsole and type
nano ~/.config/systemd/user/syncthing.service
Input this text:
[Unit]
Description=Syncthing
[Service]
Type=simple
ExecStart=flatpak run --command=syncthing me.kozec.syncthingtk
Restart=on-failure
RestartSec=1
SuccessExitStatus=3 4
[Install]
WantedBy=default.target
Save by typing the key command: Control O and pressing enter to confirm.
Continue in Konsole and type:
systemctl --user enable syncthing
systemctl --user start syncthing
If you wish to disable Syncthing starting @ launch:
systemctl --user stop syncthing
systemctl --user disable syncthing
If you use Decky, change the syncthing GUI port so it does not conflict to port 8384
or run this command via Konsole:
systemctl --user stop syncthing
sed -i 's/<address>127\.0\.0\.1:8080<\/address>/<address>127.0.0.1:8384<\/address>/' ~/.var/app/me.kozec.syncthingtk/config/syncthing/config.xml
systemctl --user start syncthing
Anyway, now with this, you have a roadmap to sync anything else that you desire! As to other non-console saves, remember some are not compatible between systems: lookup linux Tomb Raider vs Windows Tomb Raider. Now smack the devs heads for that one. Now if I can figure out a way to share prefixes between non-steam games so that I can sync C:Users/user/Appdata etc etc..... then all my non-steam games do not need individual Syncthing setup outside of a very convoluted Ignore Files list.
ROM Hack Sources
- ROMHacking: https://www.romhacking.net/
- GBAtemp: https://gbatemp.net/
- PokeCommunity: https://www.pokecommunity.com/
- Metroid Construction: https://metroidconstruction.com/hacks.php
- SegaXtreme: https://segaxtreme.net/resources/categories/translations.9/
- GameBanana: https://gamebanana.com/
IMPORTANT
- Everything can be done on the Steam Deck itself
- If you plan on using Steam ROM Manager to add this ROM Hack to Steam, it may not have art yet on https://www.steamgriddb.com/. If it does not have art, create a page here: https://www.steamgriddb.com/ and locate some custom art for the ROM Hack so others can use it in the future as well.
- Not all ROM Hacks can be applied using the following method. For ROM Hacks that do not use the below method and do not have a Linux equivalent program to apply patches, you can either use Wine/Proton (through Lutris or Steam), or you can use a Windows computer to apply these patches and transfer over the patched ROM Hack.
Tutorial
- Locate a ROM Hack you would like to use and its associated game ROM
- Example:
- File 1: A clean ROM of Pokemon Emerald for the Nintendo Gameboy Advance
- File 2: A ROM Hack that turns Pokemon Emerald into a roguelike: https://www.pokecommunity.com/showthread.php?t=479406
- Your ROM Hack may end with one of the following file extensions:
IPS
,UPS
,APS
,BPS
,RUP
,PPF
,MOD
,XDELTA
,VCDIFF
- Example:
- (Optional) Some ROM Hacks expect a specific hash, use https://www.romhacking.net/hash/, to check the hash of your ROM
- You can check hashes in the Dolphin file manager as well in the properties menu of a file.
- Open https://www.romhacking.net/patch/
- For the top field,
ROM File
, browse to your clean ROM - For the bottom field,
Patch File
, browse to your patch - Click
Apply Patch
- Save this newly patched ROM, rename it to match the ROM Hack, and place it in the respective system folder within
Emulation/roms
To submit an emulator for integration into EmuDeck, use the following template:
Create an issue and pull request to add an emulator to EmuDeck.
Include the following configurations:
- Create a .sh file for the emulator in
Emulation/tools/launchers
- Create a Steam ROM Manager Parser
- Create an emulator function, to download the emulator and configure proper permissions
- Create a storage directory, if necessary, in
Emulation/storage
- Configure BIOS directory, if necessary, in
Emulation/bios
- If not doable, create a BIOS link in
Emulation/bios
- If not doable, create a BIOS link in
- Configure emulator saves location in
Emulation/saves
- If not doable, create a saves link in
Emulation/saves
- If not doable, create a saves link in
- Create a controller profile
- Configure hotkeys
- If not doable using Steam Deck buttons, create a Steam input profile mapping keyboard keys to Steam Deck buttons
- Create controller profiles for multiplayer
For a list of standalone emulators that work on Steam Deck, refer to https://gist.github.com/rawdatafeel/9873683285d68025846424adfd5c4296.