Dev --> beta 17.5 (#246)

Documentation: 
- Add Xbox to list of consoles
- Add bios to info table
- Added Nintendo / Sega / Sony where appropriate
- Alphabetized the list
- RetroAchievements crashes games if the user has not verified the account 
- Can we add recursive rom parsing tips somewhere? 

Infrastructure:
- All functions now on separate files

Tools:
- CHDMAN: handle rvz files.

New:
- download xbox hdd from xemu site. User only needs to provide files in bios after this.
- Update powertools
- Fix yuzu path
- add xmlstarlet binary from arch repository
- added changedisc hotkey for duckstation
- added changedisc hotkey for duckstation steam input
- migrate to Yuzu AppImage
- Added storage folder in Emulation
  rpcs3, xemu, yuzu are using this for the large blob storage
- cemu.xml won't be reset on update
- Add system names to Emulator selector in expert mode
- widescreen is not enabled by default.
- expert mode tools requiring a password will prompt again if wrong. if the user is wrong both times, the features will be 
  disabled.
- Dolphin wiimote input is now mouse based instead of joystick based, but i left in the joystick too. It will also use gyro for shake / tilt if you have SteamDeckGyroDSU.
- Dolphin load textures and precache is now on by default.
- Dolphin Auto Change disc is now on by default.
- Dolphin cursor is now hidden by default.
- PCSX2 vsync is now on by default.

Fixes:
- Cemu xml changes
  removed the gamepath and use xmlstarlet to add the entry.
  In the case the user has an existing xml file, we will just add our path to the entries.
- Update duckstation config
  quickmenu to esc, so steam + left arrow works
  Added roms path
  use native aspect ratio and fullscreen so the top and bottom bars are gone.
  Add Duckstation SteamInput
- PCSX2 Steam Input Update
  remove m and n keys on full trigger press
- fixed widescreen selection
- fixed emulator selection
- fixed config reset selection
- fixed uninstall script


Co-authored-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
Co-authored-by: Rodrigo <rodrigosedano@me.com>
Co-authored-by: Witherking25 <witherking@withertech.com>
This commit is contained in:
Ramsey Hathout 2022-06-08 19:13:06 -04:00 committed by GitHub
parent 4b8652993e
commit 3650f626b7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
60 changed files with 2917 additions and 1415 deletions

View file

@ -15,43 +15,43 @@ There are two ways of using EmuDeck:
This option gives you all your games presented with their box arts as if they were a regular Steam Game.
EmuDeck has preloaded configurations for Steam Rom Manager for the following systems:
| System | Emulator | Roms format |
| ------------------------- | ------------------------------------ | -------------------------------------------------------------------- |
| Atari 2600 | Retroarch Stella core | .7z .a26 .bin .zip |
| Atari Lynx | Retroarch Beetle Lynx core | .7z .lnx .bin .zip |
| GameBoy | Retroarch Gambatte core | .7z .gb .dmg .zip |
| GameBoy Color | Retroarch Gambatte core | .7z .gb .gbc .dmg .zip |
| GameBoy Advance | Retroarch mGBA core | .7z .gba .zip |
| Dreamcast | Retroarch FlyCast Core | .7z .cdi .chd .cue .gdi |
| Final Burn Neo | Retroarch Fbn core | .zip .7z |
| Mame 2003 Plus | Retroarch Mame 2003 Plus core | .zip |
| Mame 2010 | Retroarch Mame 2010 core | .zip |
| Mame Current | Retroarch Mame Current core | .zip |
| Neo Geo Pocket & Color | Retroarch Beetle NeoPop | .7z .ngp .ngc .bin .zip |
| Nintendo GameCube | Dolphin Standalone | .ciso .dol .elf .gcm .gcz .iso .nkit .iso .rvz .wad .wia |
| Nintendo DS | Retroarch melonDS core | .7z .nds .zip |
| Nintendo 3DS | Citra | .3ds .3dsx .app .axf .cii .cxi .elf .cia |
| Nintendo NES | Retroarch Nestopia core | .7z .nes .fds .unf .unif .zip |
| Nintendo 64 | Retroarch Mupen64plus-Next | .7z .bin .n64 .ndd .u1 .v64 .z64 .zip |
| Nintendo GameCube | Dolphin Standalone | .ciso .dol .elf .gcm .gcz .iso .nkit .iso .rvz .wad .wia .wbfs |
| Nintendo Wii | Dolphin Standalone | .ciso .dol .elf .gcm .gcz .iso .json .nkit .iso .rvz .wad .wia .wbfs |
| Nintendo Wii U | Cemu | .rpx .wud .wux .elf .iso .wad |
| Nintendo Switch | Yuzu | .kp .nca .nro .nso .nsp .xci |
| Super Nintendo | Retroarch Snes9x Current core | .7z .bs .fig .sfc .smc .swx .zip |
| Super Nintendo Widescreen | Retroarch bsnes hd beta Current core | .7z .bs .fig .sfc .smc .swx .zip |
| PrimeHacks | Dolphin PrimeHacks | .ciso .dol .elf .gcm .gcz .iso .json .nkit .iso .rvz .wad .wia .wbfs |
| Playstation | DuckStation | .cue .chd .ecm .iso .m3u .mds .pbp |
| Playstation 2 | RPCSX2 | .bin .chd .cso .dump .gz .img .iso .mdf .nrg |
| Playstation 3 | RPCS3 | /PS3_GAME/USRDIR/eboot.bin |
| PSP | PPSSPP & PPSSPP Retroarch core | .7z .elf .cso .iso .pbp .prx |
| Sega 32X | Retroarch PicoDrive core | .7z .32x .bin .zip |
| Sega CD | Retroarch Genesis Plus GX core | .7z .32x .cue .chd .iso .zip |
| Sega Game Gear | Retroarch Genesis Plus GX core | .7z .gg .zip |
| Sega Genesis / Mega Drive | Retroarch Genesis Plus GX core | .7z .gen .md .smd .zip |
| Sega Genesis Widescreen | Retroarch Genesis Plus GX Wide core | .7z .gen .md .smd .zip |
| Sega Master System | Retroarch Genesis Plus GX core | .7z .gen .sms .zip |
| Sega Saturn | Retroarch Yabause core | .7z .cue .iso .chd .zip |
| Wonderswan & Color | Retroarch Beetle Cygne core | .7z .pc2 .ws .wsc .zip |
| System | Emulator | Roms format | File Required in the base of Emulation/bios (or special consideration) |
| ------------------------- | --------------------------------------------- | ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Atari 2600 | Retroarch Stella core | .7z .a26 .bin .zip | |
| Atari Lynx | Retroarch Beetle Lynx core | .7z .lnx .bin .zip | |
| Final Burn Neo | Retroarch Fbn core | .zip .7z | Bioses will be searched through 3 folders :<br>\* the folder of the current romset<br>\* the Emulation/bios/fbneo/<br>\* the Emulation/bios/ |
| Mame 2003 Plus | Retroarch Mame 2003 Plus core | .zip | |
| Mame 2010 | Retroarch Mame 2010 core | .zip | |
| Mame Current | Retroarch Mame Current core | .zip | |
| Microsoft Xbox | Xemu | .iso (xiso formatted) | Emulation/bios:<br>mcpx\_1.0.bin<br>modified retail "COMPLEX 4627" BIOS<br><br>Emulation/saves/xemu:<br>xbox\_hdd.qcow2 |
| Neo Geo Pocket & Color | Retroarch Beetle NeoPop | .7z .ngp .ngc .bin .zip | |
| Nintendo 3DS | Citra | .3ds .3dsx .app .axf .cii .cxi .elf .cia(FOR INSTALL ONLY) | Title keys required for encrypted rom types |
| Nintendo 64 | Retroarch Mupen64plus-Next | .7z .bin .n64 .ndd .u1 .v64 .z64 .zip | |
| Nintendo DS | Retroarch melonDS core | .7z .nds .zip | bios7.bin<br>bios9.bin<br>firmware.bin |
| Nintendo GameBoy | Retroarch Gambatte core | .7z .gb .dmg .zip | |
| Nintendo GameBoy Advance | Retroarch mGBA core | .7z .gba .zip | |
| Nintendo GameBoy Color | Retroarch Gambatte core | .7z .gb .gbc .dmg .zip | |
| Nintendo GameCube | Dolphin Standalone | .ciso .dol .elf .gcm .gcz .iso .nkit.iso .rvz .wad .wia .wbfs | |
| Nintendo NES | Retroarch Nestopia core | .7z .nes .fds .unf .unif .zip | |
| Nintendo PrimeHack | PrimeHack (Metroid Prime specific) | .ciso .dol .elf .gcm .gcz .iso .json .nkit.iso .rvz .wad .wia .wbfs | |
| Nintendo Switch | Yuzu | .kp .nca .nro .nso .nsp .xci | Title keys required for encrypted rom types<br>firmware installation with valid mii data required for some games |
| Nintendo Wii | Dolphin Standalone | .ciso .dol .elf .gcm .gcz .iso .json .nkit.iso .rvz .wad .wia .wbfs | |
| Nintendo Wii U | Cemu | .rpx .wud .wux .elf .iso .wad | Title keys required for encrypted rom types |
| Sega 32X | Retroarch PicoDrive core | .7z .32x .bin .zip | |
| Sega CD | Retroarch Genesis Plus GX core | .7z .32x .cue .chd .iso .zip | bios\_CD\_E.bin<br>bios\_CD\_U.bin<br>bios\_CD\_J.bin |
| Sega Dreamcast | Retroarch FlyCast Core | .7z .cdi .chd .cue .gdi | dc/dc\_boot.bin |
| Sega Game Gear | Retroarch Genesis Plus GX core | .7z .gg .zip | |
| Sega Genesis / Mega Drive | Retroarch Genesis Plus GX core | .7z .gen .md .smd .zip | |
| Sega Genesis Widescreen | Retroarch Genesis Plus GX Wide core | .7z .gen .md .smd .zip | |
| Sega Master System | Retroarch Genesis Plus GX core | .7z .gen .sms .zip | |
| Sega Saturn | Retroarch Yabause core | .7z .cue .iso .chd .zip | sega\_101.bin<br>mpr-17933.bin |
| Sony Playstation | DuckStation Standalone<br>Retroarch Beetle HW | .cue .chd .ecm .iso .m3u .mds .pbp | scph5500.bin<br>scph5501.bin<br>scph5502.bin |
| Sony Playstation 2 | RPCSX2 | .bin .chd .cso .dump .gz .img .iso .mdf .nrg | Bios files are required. Here is an example set:<br>SCPH-70004\_BIOS\_V12\_EUR\_200.BIN<br>SCPH-70004\_BIOS\_V12\_EUR\_200.EROM<br>SCPH-70004\_BIOS\_V12\_EUR\_200.ROM1<br>SCPH-70004\_BIOS\_V12\_EUR\_200.ROM2 |
| Sony Playstation 3 | RPCS3 | /PS3\_GAME/USRDIR/eboot.bin | Firmware installation in the Emulator is required. |
| Sony Playstation Portable | PPSSPP Standalone<br>PPSSPP Retroarch core | .7z .elf .cso .iso .pbp .prx | The retroarch core requires ppsspp.zip in the bios folder.<br>You can obtain it from within RetroArch's downloader.<br>Standalone PPSSPP does not require anything special. |
| Super Nintendo | Retroarch Snes9x Current core | .7z .bs .fig .sfc .smc .swx .zip | |
| Super Nintendo Widescreen | Retroarch bsnes hd beta Current core | .7z .bs .fig .sfc .smc .swx .zip | |
| Wonderswan & Color | Retroarch Beetle Cygne core | .7z .pc2 .ws .wsc .zip |
## Using EmulationStation DE

View file

@ -240,4 +240,25 @@
- Expert mode will ask about Bezels and Autosave again
- Dolphin set as 16:9 by default on easy mode
- Fix Sega Genesis missing extension and adds Commodore 64
- Add support for holoISO
- Add support for holoISO
0.17.4
- New user interface on install both on Easy and Expert modes
- Rom folder creation will respect user's custom symlinks
- When you first install EmuDeck an you Launch SteamRomManager we will get you back to GamingMode when closing SteamRomManager
- SRM is now located on Emulation/tools and will close Steam automatically for you.
- Fixed RPCS3 Controller not working on new install
- Updated Mupen64Plus-Next defaults for N64. Should be much better now. more accurate, faster, and look better.
- New tool added - proton-launch.sh (for all your non-steam windows app shenanigans, courtesy of Angel)
- Citra left trackpad used now as mouse instead of D-pad on our SteamInput template
- Fix Citra non exiting while pressing R5
- PPSSPP Audio Fix when the Deck goes into Sleep Mode
- Fixed 3ds bad symlink for older installations
- PrimeHack Controller tweaks and performance gain
- Fix PCSX2 Turbo Mode
- Wii nkit.gcz support
- FBNeo fixes on SteamRomManager
- SD card is only available if one is inserted, writable, and supports symlinks
- Expert mode - Fixes RA Autosave selection
- Expert mode - Changed Cemu default controller to gamepad with gyro (gyro requires SteamDeckGyroDSU installation. See Expert mode for more details)
- Expert mode - You can now chose a custom install location. It will be tested for the ability to both write and link, and rejected if either fail.

View file

@ -45,7 +45,6 @@
<RecentLaunchFiles/>
<RecentNFCFiles/>
<GamePaths>
<Entry>Z:/run/media/mmcblk0p1/Emulation/roms/wiiu/roms</Entry>
</GamePaths>
<GameCache/>
<GraphicPack/>

View file

@ -51,7 +51,7 @@ PreBlockCheckIOP=disabled
VsyncQueueSize=2
FrameLimitEnable=enabled
FrameSkipEnable=disabled
VsyncEnable=0
VsyncEnable=1
FramerateNTSC=59.94
FrameratePAL=50
FramesToDraw=2

View file

@ -1,2 +1,3 @@
[Server]
Enabled = False
Enabled = True
Entries = steamdeckgyro:127.0.0.1:26760;

View file

@ -12,7 +12,7 @@ AudioStretchMaxLatency = 80
DPL2Decoder = False
DPL2Quality = 2
DSPHLE = True
AutoDiscChange = False
AutoDiscChange = True
EmulationSpeed = 1.00000000
EnableCheats = True
OverrideRegionSettings = False
@ -44,3 +44,4 @@ UseBuiltinTitleDatabase = True
UsePanicHandlers = False
LanguageCode = en
ThemeName = Clean
CursorVisibility = 0

View file

@ -29,3 +29,5 @@ ShaderCompilationMode = 2
WaitForShadersBeforeStarting = True
MSAA = 0x00000001
SSAA = False
CacheHiresTextures = True
HiresTextures = True

View file

@ -0,0 +1,30 @@
[Profile]
Device = evdev/0/Microsoft X-Box 360 pad 0
Buttons/A = EAST
Buttons/B = SOUTH
Buttons/X = WEST
Buttons/Y = NORTH
Buttons/Z = TL
Buttons/Start = START
Main Stick/Up = `Axis 1-`
Main Stick/Down = `Axis 1+`
Main Stick/Left = `Axis 0-`
Main Stick/Right = `Axis 0+`
Main Stick/Modifier = THUMBL
Main Stick/Modifier/Range = 50.000000000000000
Main Stick/Calibration = 100.00 141.42 100.00 141.42 100.00 141.42 100.00 141.42
C-Stick/Up = `Axis 4-`
C-Stick/Down = `Axis 4+`
C-Stick/Left = `Axis 3-`
C-Stick/Right = `Axis 3+`
C-Stick/Modifier = THUMBR
C-Stick/Modifier/Range = 50.000000000000000
C-Stick/Calibration = 100.00 141.42 100.00 141.42 100.00 141.42 100.00 141.42
Triggers/L = `Full Axis 2+`
Triggers/R = `Full Axis 5+`
Triggers/L-Analog = `Full Axis 2+`
Triggers/R-Analog = `Full Axis 5+`
D-Pad/Up = `Axis 7-`
D-Pad/Down = `Axis 7+`
D-Pad/Left = `Axis 6-`
D-Pad/Right = `Axis 6+`

View file

@ -0,0 +1,75 @@
[Profile]
Device = evdev/0/Microsoft X-Box 360 pad 1
Buttons/A = EAST
Buttons/B = SOUTH
Buttons/1 = WEST
Buttons/2 = NORTH
Buttons/- = SELECT
Buttons/+ = START
Buttons/Home = Return
IR/Up = `Axis 4-`
IR/Down = `Axis 4+`
IR/Left = `Axis 3-`
IR/Right = `Axis 3+`
Tilt/Modifier/Range = 50.0
Shake/Z = `Button 4`
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`
Extension = Nunchuk
Nunchuk/Buttons/C = `Full Axis 5+`
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 = `Click 2`
Nunchuk/Shake/Y = `Click 2`
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/Sideways Toggle = SELECT&THUMBR

View file

@ -0,0 +1,79 @@
[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/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+`
Tilt/Modifier/Range = 50.0
Shake/Z = TL
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/Enabled = False
Extension = Nunchuk
Nunchuk/Buttons/C = `Full Axis 5+`
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 = `Click 2`
Nunchuk/Shake/Y = `Click 2`
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/Sideways Toggle = SELECT&THUMBR

View file

@ -0,0 +1,76 @@
[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/Up = `Axis 4-`
IR/Down = `Axis 4+`
IR/Left = `Axis 3-`
IR/Right = `Axis 3+`
IR/Calibration = 100.00 101.96 108.24 110.79 111.95 112.62 106.00 101.96 100.00 101.96 107.26 115.18 111.73 111.96 106.12 101.96 100.00 101.96 106.83 115.05 118.84 118.68 108.24 101.96 100.00 101.96 107.14 110.19 108.40 108.62 107.61 101.96
Tilt/Modifier/Range = 50.0
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`
Extension = Nunchuk
Nunchuk/Buttons/C = `Full Axis 5+`
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 = `Click 2`
Nunchuk/Shake/Y = `Click 2`
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/Sideways Toggle = SELECT&THUMBR

View file

@ -0,0 +1,83 @@
[Profile]
Device = evdev/0/Microsoft X-Box 360 pad 0
Buttons/A = SOUTH
Buttons/B = EAST|`Full Axis 5+`
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-`
IR/Down = `XInput2/0/Virtual core pointer:Cursor Y+`
IR/Left = `XInput2/0/Virtual core pointer:Cursor X-`
IR/Right = `XInput2/0/Virtual core pointer:Cursor X+`
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/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`
Extension = Nunchuk
Nunchuk/Buttons/C = THUMBR
Nunchuk/Buttons/Z = TR
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 = `Click 2`
Nunchuk/Shake/Y = `Click 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

View file

@ -7,48 +7,46 @@ Buttons/2 = WEST
Buttons/- = SELECT
Buttons/+ = START
Buttons/Home = Return
IR/Up = `Axis 4-`
IR/Down = `Axis 4+`
IR/Left = `Axis 3-`
IR/Right = `Axis 3+`
Tilt/Modifier/Range = 50.000000000000000
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`
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+`
Tilt/Modifier/Range = 50.0
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`
Nunchuk/Buttons/C = `Full Axis 5+`
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.000000000000000
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.000000000000000
Nunchuk/Tilt/Modifier/Range = 50.0
Nunchuk/Shake/X = `Click 2`
Nunchuk/Shake/Y = `Click 2`
Nunchuk/Shake/Z = TR
Classic/Left Stick/Modifier/Range = 50.000000000000000
Classic/Right Stick/Modifier/Range = 50.000000000000000
Guitar/Stick/Modifier/Range = 50.000000000000000
Drums/Stick/Modifier/Range = 50.000000000000000
Turntable/Stick/Modifier/Range = 50.000000000000000
uDraw/Stylus/Modifier/Range = 50.000000000000000
Drawsome/Stylus/Modifier/Range = 50.000000000000000
Classic/Left Stick/Modifier/Range = 50.0
Classic/Right Stick/Modifier/Range = 50.0
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
D-Pad/Up = `Axis 7-`
D-Pad/Down = `Axis 7+`
D-Pad/Left = `Axis 6-`
D-Pad/Right = `Axis 6+`
Source = 1
IR/Calibration = 100.00 101.96 108.24 110.79 111.95 112.62 106.00 101.96 100.00 101.96 107.26 115.18 111.73 111.96 106.12 101.96 100.00 101.96 106.83 115.05 118.84 118.68 108.24 101.96 100.00 101.96 107.14 110.19 108.40 108.62 107.61 101.96
Classic/Buttons/A = EAST
Classic/Buttons/B = SOUTH
Classic/Buttons/X = WEST
@ -75,12 +73,17 @@ Shake/Z = TL
Hotkeys/Sideways Toggle = SELECT&THUMBR
Extension = Nunchuk
Rumble/Motor = Strong
Nunchuk/Shake/Z = TR
IR/Vertical Offset = 12.0
IR/Total Yaw = 19.0
IR/Total Pitch = 22.0
IMUIR/Enabled = False
[Wiimote2]
Device = SDL/0/Wireless Controller
Buttons/A = SOUTH
Buttons/B = EAST
Buttons/1 = NORTH
Buttons/2 = WEST
Device = evdev/0/Microsoft X-Box 360 pad 1
Buttons/A = EAST
Buttons/B = SOUTH
Buttons/1 = WEST
Buttons/2 = NORTH
Buttons/- = SELECT
Buttons/+ = START
Buttons/Home = Return
@ -88,7 +91,7 @@ IR/Up = `Axis 4-`
IR/Down = `Axis 4+`
IR/Left = `Axis 3-`
IR/Right = `Axis 3+`
Tilt/Modifier/Range = 50.000000000000000
Tilt/Modifier/Range = 50.0
IMUAccelerometer/Up = `Accel Up`
IMUAccelerometer/Down = `Accel Down`
IMUAccelerometer/Left = `Accel Left`
@ -107,25 +110,24 @@ 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.000000000000000
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.000000000000000
Nunchuk/Tilt/Modifier/Range = 50.0
Nunchuk/Shake/X = `Click 2`
Nunchuk/Shake/Y = `Click 2`
Nunchuk/Shake/Z = TR
Classic/Left Stick/Modifier/Range = 50.000000000000000
Classic/Right Stick/Modifier/Range = 50.000000000000000
Guitar/Stick/Modifier/Range = 50.000000000000000
Drums/Stick/Modifier/Range = 50.000000000000000
Turntable/Stick/Modifier/Range = 50.000000000000000
uDraw/Stylus/Modifier/Range = 50.000000000000000
Drawsome/Stylus/Modifier/Range = 50.000000000000000
Classic/Left Stick/Modifier/Range = 50.0
Classic/Right Stick/Modifier/Range = 50.0
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
D-Pad/Up = `Axis 7-`
D-Pad/Down = `Axis 7+`
D-Pad/Left = `Axis 6-`
D-Pad/Right = `Axis 6+`
Source = 1
IR/Calibration = 100.00 101.96 108.24 110.79 111.95 112.62 106.00 101.96 100.00 101.96 107.26 115.18 111.73 111.96 106.12 101.96 100.00 101.96 106.83 115.05 118.84 118.68 108.24 101.96 100.00 101.96 107.14 110.19 108.40 108.62 107.61 101.96
Classic/Buttons/A = EAST
Classic/Buttons/B = SOUTH
Classic/Buttons/X = WEST
@ -153,19 +155,19 @@ Hotkeys/Sideways Toggle = SELECT&THUMBR
Extension = Nunchuk
Rumble/Motor = Strong
[Wiimote3]
Device = SDL/1/Wireless Controller
Buttons/A = `Button 1`
Buttons/B = `Button 2`
Buttons/1 = `Button 0`
Buttons/2 = `Button 3`
Buttons/- = `Button 8`
Buttons/+ = `Button 9`
Buttons/Home = `Button 12`
IR/Up = `Axis 5-`
IR/Down = `Axis 5+`
IR/Left = `Axis 2-`
IR/Right = `Axis 2+`
Tilt/Modifier/Range = 50.000000000000000
Device = evdev/0/Microsoft X-Box 360 pad 2
Buttons/A = EAST
Buttons/B = SOUTH
Buttons/1 = WEST
Buttons/2 = NORTH
Buttons/- = SELECT
Buttons/+ = START
Buttons/Home = Return
IR/Up = `Axis 4-`
IR/Down = `Axis 4+`
IR/Left = `Axis 3-`
IR/Right = `Axis 3+`
Tilt/Modifier/Range = 50.0
IMUAccelerometer/Up = `Accel Up`
IMUAccelerometer/Down = `Accel Down`
IMUAccelerometer/Left = `Accel Left`
@ -178,31 +180,30 @@ IMUGyroscope/Roll Left = `Gyro Roll Left`
IMUGyroscope/Roll Right = `Gyro Roll Right`
IMUGyroscope/Yaw Left = `Gyro Yaw Left`
IMUGyroscope/Yaw Right = `Gyro Yaw Right`
Nunchuk/Buttons/C = `Full Axis 4+`
Nunchuk/Buttons/Z = `Full Axis 3+`
Nunchuk/Buttons/C = `Full Axis 5+`
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.000000000000000
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.000000000000000
Nunchuk/Tilt/Modifier/Range = 50.0
Nunchuk/Shake/X = `Click 2`
Nunchuk/Shake/Y = `Click 2`
Nunchuk/Shake/Z = TR
Classic/Left Stick/Modifier/Range = 50.000000000000000
Classic/Right Stick/Modifier/Range = 50.000000000000000
Guitar/Stick/Modifier/Range = 50.000000000000000
Drums/Stick/Modifier/Range = 50.000000000000000
Turntable/Stick/Modifier/Range = 50.000000000000000
uDraw/Stylus/Modifier/Range = 50.000000000000000
Drawsome/Stylus/Modifier/Range = 50.000000000000000
D-Pad/Up = `Hat 0 N`
D-Pad/Down = `Hat 0 S`
D-Pad/Left = `Hat 0 W`
D-Pad/Right = `Hat 0 E`
Classic/Left Stick/Modifier/Range = 50.0
Classic/Right Stick/Modifier/Range = 50.0
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
D-Pad/Up = `Axis 7-`
D-Pad/Down = `Axis 7+`
D-Pad/Left = `Axis 6-`
D-Pad/Right = `Axis 6+`
Source = 1
IR/Calibration = 100.00 101.96 108.24 110.79 111.95 112.62 106.00 101.96 100.00 101.96 107.26 115.18 111.73 111.96 106.12 101.96 100.00 101.96 106.83 115.05 118.84 118.68 108.24 101.96 100.00 101.96 107.14 110.19 108.40 108.62 107.61 101.96
Classic/Buttons/A = EAST
Classic/Buttons/B = SOUTH
Classic/Buttons/X = WEST
@ -230,11 +231,11 @@ Hotkeys/Sideways Toggle = SELECT&THUMBR
Extension = Nunchuk
Rumble/Motor = Strong
[Wiimote4]
Device = SDL/2/Wireless Controller
Buttons/A = SOUTH
Buttons/B = EAST
Buttons/1 = NORTH
Buttons/2 = WEST
Device = evdev/0/Microsoft X-Box 360 pad 3
Buttons/A = EAST
Buttons/B = SOUTH
Buttons/1 = WEST
Buttons/2 = NORTH
Buttons/- = SELECT
Buttons/+ = START
Buttons/Home = Return
@ -242,7 +243,7 @@ IR/Up = `Axis 4-`
IR/Down = `Axis 4+`
IR/Left = `Axis 3-`
IR/Right = `Axis 3+`
Tilt/Modifier/Range = 50.000000000000000
Tilt/Modifier/Range = 50.0
IMUAccelerometer/Up = `Accel Up`
IMUAccelerometer/Down = `Accel Down`
IMUAccelerometer/Left = `Accel Left`
@ -261,25 +262,24 @@ 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.000000000000000
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.000000000000000
Nunchuk/Tilt/Modifier/Range = 50.0
Nunchuk/Shake/X = `Click 2`
Nunchuk/Shake/Y = `Click 2`
Nunchuk/Shake/Z = TR
Classic/Left Stick/Modifier/Range = 50.000000000000000
Classic/Right Stick/Modifier/Range = 50.000000000000000
Guitar/Stick/Modifier/Range = 50.000000000000000
Drums/Stick/Modifier/Range = 50.000000000000000
Turntable/Stick/Modifier/Range = 50.000000000000000
uDraw/Stylus/Modifier/Range = 50.000000000000000
Drawsome/Stylus/Modifier/Range = 50.000000000000000
Classic/Left Stick/Modifier/Range = 50.0
Classic/Right Stick/Modifier/Range = 50.0
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
D-Pad/Up = `Axis 7-`
D-Pad/Down = `Axis 7+`
D-Pad/Left = `Axis 6-`
D-Pad/Right = `Axis 6+`
Source = 0
IR/Calibration = 100.00 101.96 108.24 110.79 111.95 112.62 106.00 101.96 100.00 101.96 107.26 115.18 111.73 111.96 106.12 101.96 100.00 101.96 106.83 115.05 118.84 118.68 108.24 101.96 100.00 101.96 107.14 110.19 108.40 108.62 107.61 101.96
Source = 1
Classic/Buttons/A = EAST
Classic/Buttons/B = SOUTH
Classic/Buttons/X = WEST
@ -302,20 +302,20 @@ Classic/Right Stick/Down = `Axis 4+`
Classic/Right Stick/Left = `Axis 3-`
Classic/Right Stick/Right = `Axis 3+`
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
Shake/Z = TL
Shake/Z = `Button 4`
Hotkeys/Sideways Toggle = SELECT&THUMBR
Extension = Nunchuk
Rumble/Motor = Strong
[BalanceBoard]
Device = XInput2/0/Virtual core pointer
Tilt/Modifier/Range = 50.000000000000000
Nunchuk/Stick/Modifier/Range = 50.000000000000000
Nunchuk/Tilt/Modifier/Range = 50.000000000000000
Classic/Left Stick/Modifier/Range = 50.000000000000000
Classic/Right Stick/Modifier/Range = 50.000000000000000
Guitar/Stick/Modifier/Range = 50.000000000000000
Drums/Stick/Modifier/Range = 50.000000000000000
Turntable/Stick/Modifier/Range = 50.000000000000000
uDraw/Stylus/Modifier/Range = 50.000000000000000
Drawsome/Stylus/Modifier/Range = 50.000000000000000
Tilt/Modifier/Range = 50.0
Nunchuk/Stick/Modifier/Range = 50.0
Nunchuk/Tilt/Modifier/Range = 50.0
Classic/Left Stick/Modifier/Range = 50.0
Classic/Right Stick/Modifier/Range = 50.0
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
Source = 0

View file

@ -7,7 +7,7 @@ SyncToHostRefreshRate = false
IncreaseTimerResolution = true
InhibitScreensaver = true
StartPaused = false
StartFullscreen = false
StartFullscreen = true
PauseOnFocusLoss = false
PauseOnMenu = true
SaveStateOnExit = true
@ -19,7 +19,7 @@ DisableAllEnhancements = false
RewindEnable = false
RewindFrequency = 10.000000
RewindSaveSlots = 10
RunaheadFrameCount = 0.000000
RunaheadFrameCount = 0
ControllerBackend = SDL
ControllerEnhancedMode = false
EnableDiscordPresence = false
@ -39,7 +39,8 @@ OverclockEnable = false
RecompilerMemoryExceptions = false
RecompilerBlockLinking = true
ICache = false
FastmemMode = true
FastmemMode = MMap
RecompilerICache = false
[GPU]
@ -68,6 +69,8 @@ PGXPPreserveProjFP = false
PGXPTolerance = -1.000000
PGXPDepthBuffer = false
PGXPDepthClearThreshold = 300.000000
Adapter = AMD RADV VANGOGH
FullscreenMode =
[Display]
@ -76,7 +79,7 @@ ActiveStartOffset = 0
ActiveEndOffset = 0
LineStartOffset = 0
LineEndOffset = 0
AspectRatio = 16:9
AspectRatio = Auto (Game Native)
CustomAspectRatioNumerator = 4
Force4_3For24Bit = true
LinearFiltering = true
@ -93,7 +96,6 @@ ShowEnhancements = false
Fullscreen = false
VSync = false
DisplayAllFrames = false
PostProcessChain =
MaxFPS = 0.000000
InternalResolutionScreenshots = false
@ -113,7 +115,7 @@ OutputVolume = 100
FastForwardVolume = 100
BufferSize = 2048
Resampling = true
OutputMuted = 0
OutputMuted = false
Sync = true
DumpOnBoot = false
@ -170,11 +172,14 @@ FastForward = Keyboard/Tab
TogglePause = Keyboard/Space
ToggleFullscreen = Keyboard/Alt+Return
Screenshot = Keyboard/F10
PowerOff = Keyboard/Escape
PowerOff = Keyboard/F6
LoadSelectedSaveState = Keyboard/F1
SaveSelectedSaveState = Keyboard/F2
SelectPreviousSaveStateSlot = Keyboard/F3
SelectNextSaveStateSlot = Keyboard/F4
ToggleFastForward = Keyboard/F5
OpenQuickMenu = Keyboard/Escape
ChangeDisc = Keyboard/F7
[Cheevos]
@ -261,3 +266,22 @@ Type = None
[Controller8]
Type = None
[SDLHostInterface]
WindowX = 0
WindowY = 0
WindowWidth = 1280
WindowHeight = 711
[TextureReplacements]
EnableVRAMWriteReplacements = true
PreloadTextures = true
DumpVRAMWrites = false
DumpVRAMWriteForceAlphaChannel = true
DumpVRAMWriteWidthThreshold = 128
DumpVRAMWriteHeightThreshold = 128
[GameList]
RecursivePaths = /run/media/mmcblk0p1/Emulation/roms/psx

View file

@ -793,7 +793,7 @@ cpuopt_unsafe_unfuse_fma=true
cpuopt_unsafe_unfuse_fma\default=true
[Data%20Storage]
dump_directory=/home/deck/.var/app/org.yuzu_emu.yuzu/data/yuzu/dump
dump_directory=/run/media/mmcblk0p1/Emulation/storage/yuzu/dump
dump_directory\default=true
gamecard_current_game=false
gamecard_current_game\default=true
@ -801,13 +801,13 @@ gamecard_inserted=false
gamecard_inserted\default=true
gamecard_path=
gamecard_path\default=true
load_directory=/home/deck/.var/app/org.yuzu_emu.yuzu/data/yuzu/load
load_directory=/run/media/mmcblk0p1/Emulation/storage/yuzu/load
load_directory\default=true
nand_directory=/home/deck/.var/app/org.yuzu_emu.yuzu/data/yuzu/nand
nand_directory=/run/media/mmcblk0p1/Emulation/storage/yuzu/nand
nand_directory\default=true
sdmc_directory=/home/deck/.var/app/org.yuzu_emu.yuzu/data/yuzu/sdmc
sdmc_directory=/run/media/mmcblk0p1/Emulation/storage/yuzu/sdmc
sdmc_directory\default=true
tas_directory=/home/deck/.var/app/org.yuzu_emu.yuzu/data/yuzu/tas
tas_directory=/run/media/mmcblk0p1/Emulation/storage/yuzu/tas
tas_directory\default=true
use_virtual_sd=true
use_virtual_sd\default=true
@ -961,7 +961,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=/run/media/mmcblk0p1/Emulation/storage/yuzu/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=

View file

@ -0,0 +1,886 @@
"controller_mappings"
{
"version" "3"
"revision" "21"
"title" "DuckStation Menu Hotkeys"
"description" "Long press hotkeys to activate."
"creator" "76561198025051816"
"progenitor" ""
"url" "template://duckstation_controller_config.vdf"
"export_type" "template"
"controller_type" "controller_neptune"
"major_revision" "0"
"minor_revision" "0"
"Timestamp" "4"
"localization"
{
"english"
{
"title" "DuckStation Menu Hotkeys"
"description" "DuckStation 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"
"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"
"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"
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "3"
"mode" "joystick_move"
"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"
"description" ""
"inputs"
{
}
"settings"
{
"output_trigger" "1"
}
}
"group"
{
"id" "5"
"mode" "trigger"
"description" ""
"inputs"
{
}
"settings"
{
"output_trigger" "2"
}
}
"group"
{
"id" "6"
"mode" "joystick_move"
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "8"
"mode" "joystick_move"
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "9"
"mode" "dpad"
"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"
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button START"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "11"
"mode" "single_button"
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button SELECT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "12"
"mode" "mouse_joystick"
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "13"
"mode" "disabled"
"description" ""
}
"group"
{
"id" "14"
"mode" "touch_menu"
"description" ""
"inputs"
{
"touch_menu_button_0"
{
"activators"
{
"Long_Press"
{
"bindings"
{
"binding" "key_press F2, Save State, ghost_075_utility_020.png #232323 #0074ad"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_1"
{
"activators"
{
"Long_Press"
{
"bindings"
{
"binding" "controller_action empty_binding"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_2"
{
"activators"
{
"Long_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 Space, Pause/Play, ghost_090_media_0210.png #232323 #E4E4E4"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_4"
{
"activators"
{
"Long_Press"
{
"bindings"
{
"binding" "key_press Escape, Quick Menu, ghost_070_setting_0030.png #232323 #ad0000"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_5"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "key_press F7, Swap Disc, ghost_075_utility_040.png #232323 #E4E4E4"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_6"
{
"activators"
{
"Long_Press"
{
"bindings"
{
"binding" "key_press F3, Prev Slot, ghost_045_move_0409.png #232323 #ad0000"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_7"
{
"activators"
{
"Long_Press"
{
"bindings"
{
"binding" "key_press F5, FFWD, ghost_060_vehicle_0050.png #232323 #00ad00"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_8"
{
"activators"
{
"Long_Press"
{
"bindings"
{
"binding" "key_press F4, Next Slot, ghost_045_move_0408.png #232323 #ad0000"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
"touch_menu_button_count" "9"
"touch_menu_scale" "120"
"touch_menu_show_labels" "0"
}
}
"group"
{
"id" "7"
"mode" "switches"
"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"
"13" "gyro inactive"
}
}
"settings"
{
"left_trackpad_mode" "0"
"right_trackpad_mode" "0"
}
}

View file

@ -362,26 +362,6 @@
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "key_press M"
}
"settings"
{
"haptic_intensity" "2"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
@ -395,26 +375,6 @@
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "key_press N"
}
"settings"
{
"haptic_intensity" "2"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{

View file

@ -75,7 +75,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": true,
"disabled": false,
"advanced": false,
"executable": {
"path": "/usr/bin/bash",
@ -1505,7 +1505,7 @@
"steamDirectory": "/home/deck/.steam/steam",
"startInDirectory": "",
"titleModifier": "${fuzzyTitle}",
"executableArgs": "run org.yuzu_emu.yuzu -f -g \"${filePath}\"",
"executableArgs": "-f -g \"'${filePath}'\"",
"onlineImageQueries": "${${fuzzyTitle}}",
"imagePool": "${fuzzyTitle}",
"imageProviders": ["SteamGridDB"],
@ -1542,7 +1542,7 @@
"removeBrackets": true
},
"executable": {
"path": "/usr/bin/flatpak",
"path": "/run/media/mmcblk0p1/Emulation/tools/launchers/yuzu.sh",
"shortcutPassthrough": false,
"appendArgsToExecutable": true
},
@ -2563,7 +2563,7 @@
"configTitle": "Sony PlayStation 3 - RPCS3(Flatpak) (Installed PKG)",
"steamCategory": "${PS3}",
"steamDirectory": "/home/deck/.steam/steam",
"romDirectory": "/run/media/mmcblk0p1/Emulation/saves/rpcs3/dev_hdd0/game",
"romDirectory": "/run/media/mmcblk0p1/Emulation/storage/rpcs3/dev_hdd0/game",
"executableArgs": "run net.rpcs3.RPCS3 --no-gui \"${filePath}\"",
"executableModifier": "\"${exePath}\"",
"startInDirectory": "",

43
functions/RAAchievment.sh Normal file
View file

@ -0,0 +1,43 @@
#!/bin/bash
RAAchievment(){
#if there is no rap file and we have said to enable retroachieve, we have to ask. Also if the user wants to change their sign in, we ask.
if [[ ! -f ~/emudeck/.rap && $doRAEnable == true ]] || [[ $doRASignIn == true ]]; then
text=$(printf "Do you want to use RetroAchievments on Retroarch?\n\n<b>You need to have an account on https://retroachievements.org</b>\n\nActivating RetroAchievments will disable save states unless you disable hardcore mode\n\n\n\nPress STEAM + X to get the onscreen Keyboard\n\n<b>Make sure your RetroAchievments account is validated on the website or RetroArch will crash</b>")
RAInput=$(zenity --forms \
--title="Retroachievements Sign in" \
--text="$text" \
--add-entry="Username: " \
--add-password="Password: " \
--separator="," 2>/dev/null)
ans=$?
if [ $ans -eq 0 ]; then
echo "RetroAchievment Login"
echo $RAInput | awk -F "," '{print $1}' > ~/emudeck/.rau
echo $RAInput | awk -F "," '{print $2}' > ~/emudeck/.rap
rap=$(cat ~/emudeck/.rap)
rau=$(cat ~/emudeck/.rau)
if [ ${#rap} -lt 1 ]; then
echo "No password"
doRAEnable=false
elif [ ${#rau} -lt 1 ]; then
echo "No username"
doRAEnable=false
else
echo "Valid Username and Password"
fi
else
echo "Cancel RetroAchievment Login"
fi
fi
#if we have a rap file already, and the user wanted to enable retroachievements, but didn't want to set a new username and pw.
if [[ -f ~/emudeck/.rap && $doRAEnable == true ]]; then
rap=$(cat ~/emudeck/.rap)
rau=$(cat ~/emudeck/.rau)
sed -i "s|cheevos_password = \"\"|cheevos_password = \"${rap}\"|g" $raConfigFile
sed -i "s|cheevos_username = \"\"|cheevos_username = \"${rau}\"|g" $raConfigFile
sed -i "s|cheevos_enable = \"false\"|cheevos_enable = \"true\"|g" $raConfigFile
fi
}

8
functions/RABezels.sh Normal file
View file

@ -0,0 +1,8 @@
#!/bin/bash
RABezels(){
if [ $RABezels == true ]; then
find ~/.var/app/org.libretro.RetroArch/config/retroarch/config/ -type f -name "*.bak" | while read f; do mv -v "$f" "${f%.*}.cfg"; done
else
find ~/.var/app/org.libretro.RetroArch/config/retroarch/config/ -type f -name "*.cfg" | while read f; do mv -v "$f" "${f%.*}.bak"; done
fi
}

44
functions/RACores.sh Normal file
View file

@ -0,0 +1,44 @@
#!/bin/bash
RACores(){
mkdir -p ~/.var/app/org.libretro.RetroArch/config/retroarch/cores
raUrl="https://buildbot.libretro.com/nightly/linux/x86_64/latest/"
RAcores=(bsnes_hd_beta_libretro.so flycast_libretro.so gambatte_libretro.so genesis_plus_gx_libretro.so genesis_plus_gx_wide_libretro.so mednafen_lynx_libretro.so mednafen_ngp_libretro.so mednafen_wswan_libretro.so melonds_libretro.so mesen_libretro.so mgba_libretro.so mupen64plus_next_libretro.so nestopia_libretro.so picodrive_libretro.so ppsspp_libretro.so snes9x_libretro.so stella_libretro.so yabasanshiro_libretro.so yabause_libretro.so yabause_libretro.so mame2003_plus_libretro.so mame2010_libretro.so mame_libretro.so melonds_libretro.so fbneo_libretro.so bluemsx_libretro.so desmume_libretro.so sameboy_libretro.so gearsystem_libretro.so mednafen_saturn_libretro.so opera_libretro.so dosbox_core_libretro.so dosbox_pure_libretro.so dosbox_svn_libretro.so puae_libretro.so)
setMSG "Downloading RetroArch Cores for EmuDeck"
for i in "${RAcores[@]}"
do
FILE=~/.var/app/org.libretro.RetroArch/config/retroarch/cores/${i}
if [ -f "$FILE" ]; then
echo "${i}...Already Downloaded"
else
curl $raUrl$i.zip --output ~/.var/app/org.libretro.RetroArch/config/retroarch/cores/${i}.zip
#rm ~/.var/app/org.libretro.RetroArch/config/retroarch/cores/${i}.zip
echo "${i}...Downloaded!"
fi
done
if [ $doInstallESDE == true ]; then
RAcores=(a5200_libretro.so 81_libretro.so atari800_libretro.so bluemsx_libretro.so chailove_libretro.so fbneo_libretro.so freechaf_libretro.so freeintv_libretro.so fuse_libretro.so gearsystem_libretro.so gw_libretro.so hatari_libretro.so lutro_libretro.so mednafen_pcfx_libretro.so mednafen_vb_libretro.so mednafen_wswan_libretro.so mu_libretro.so neocd_libretro.so nestopia_libretro.so nxengine_libretro.so o2em_libretro.so picodrive_libretro.so pokemini_libretro.so prboom_libretro.so prosystem_libretro.so px68k_libretro.so quasi88_libretro.so scummvm_libretro.so squirreljme_libretro.so theodore_libretro.so uzem_libretro.so vecx_libretro.so vice_xvic_libretro.so virtualjaguar_libretro.so x1_libretro.so mednafen_lynx_libretro.so mednafen_ngp_libretro.so mednafen_pce_libretro.so mednafen_pce_fast_libretro.so mednafen_psx_libretro.so mednafen_psx_hw_libretro.so mednafen_saturn_libretro.so mednafen_supafaust_libretro.so mednafen_supergrafx_libretro.so blastem_libretro.so bluemsx_libretro.so bsnes_libretro.so bsnes_mercury_accuracy_libretro.so cap32_libretro.so citra2018_libretro.so citra_libretro.so crocods_libretro.so desmume2015_libretro.so desmume_libretro.so dolphin_libretro.so dosbox_core_libretro.so dosbox_pure_libretro.so dosbox_svn_libretro.so fbalpha2012_cps1_libretro.so fbalpha2012_cps2_libretro.so fbalpha2012_cps3_libretro.so fbalpha2012_libretro.so fbalpha2012_neogeo_libretro.so fceumm_libretro.so fbneo_libretro.so flycast_libretro.so fmsx_libretro.so frodo_libretro.so gambatte_libretro.so gearboy_libretro.so gearsystem_libretro.so genesis_plus_gx_libretro.so genesis_plus_gx_wide_libretro.so gpsp_libretro.so handy_libretro.so kronos_libretro.so mame2000_libretro.so mame2003_plus_libretro.so mame2010_libretro.so mame_libretro.so melonds_libretro.so mesen_libretro.so mesen-s_libretro.so mgba_libretro.so mupen64plus_next_libretro.so nekop2_libretro.so np2kai_libretro.so nestopia_libretro.so parallel_n64_libretro.so pcsx2_libretro.so pcsx_rearmed_libretro.so picodrive_libretro.so ppsspp_libretro.so puae_libretro.so quicknes_libretro.so race_libretro.so sameboy_libretro.so smsplus_libretro.so snes9x2010_libretro.so snes9x_libretro.so stella2014_libretro.so stella_libretro.so tgbdual_libretro.so vbam_libretro.so vba_next_libretro.so vice_x128_libretro.so vice_x64_libretro.so vice_x64sc_libretro.so vice_xscpu64_libretro.so yabasanshiro_libretro.so yabause_libretro.so bsnes_hd_beta_libretro.so swanstation_libretro.so)
setMSG "Downloading RetroArch Cores for EmulationStation DE"
for i in "${RAcores[@]}"
do
FILE=~/.var/app/org.libretro.RetroArch/config/retroarch/cores/${i}
if [ -f "$FILE" ]; then
echo "${i}...Already Downloaded"
else
curl $raUrl$i.zip --output ~/.var/app/org.libretro.RetroArch/config/retroarch/cores/${i}.zip
#rm ~/.var/app/org.libretro.RetroArch/config/retroarch/cores/${i}.zip
echo "${i}...Downloaded!"
fi
done
fi
for entry in ~/.var/app/org.libretro.RetroArch/config/retroarch/cores/*.zip
do
unzip -o "$entry" -d ~/.var/app/org.libretro.RetroArch/config/retroarch/cores/
done
for entry in ~/.var/app/org.libretro.RetroArch/config/retroarch/cores/*.zip
do
rm -f "$entry"
done
}

8
functions/RASNES.sh Normal file
View file

@ -0,0 +1,8 @@
#!/bin/bash
RASNES(){
if [ $SNESAR == 43 ]; then
cp ~/.var/app/org.libretro.RetroArch/config/retroarch/config/Snes9x/snes43.cfg ~/.var/app/org.libretro.RetroArch/config/retroarch/config/Snes9x/snes.cfg
else
cp ~/.var/app/org.libretro.RetroArch/config/retroarch/config/Snes9x/snes87.cfg ~/.var/app/org.libretro.RetroArch/config/retroarch/config/Snes9x/snes.cfg
fi
}

10
functions/RAautoSave.sh Normal file
View file

@ -0,0 +1,10 @@
#!/bin/bash
RAautoSave(){
if [ $RAautoSave == true ]; then
sed -i 's|savestate_auto_load = "false"|savestate_auto_load = "true"|g' $raConfigFile
sed -i 's|savestate_auto_save = "false"|savestate_auto_save = "true"|g' $raConfigFile
else
sed -i 's|savestate_auto_load = "true"|savestate_auto_load = "false"|g' $raConfigFile
sed -i 's|savestate_auto_save = "true"|savestate_auto_save = "false"|g' $raConfigFile
fi
}

2
functions/RunFunc.sh Normal file
View file

@ -0,0 +1,2 @@
#!/bin/bash
source all.sh && "@a"

29
functions/all.sh Normal file
View file

@ -0,0 +1,29 @@
#!/bin/bash
source "$EMUDECKGIT"/functions/checkPSBIOS.sh
source "$EMUDECKGIT"/functions/configEmuAI.sh
source "$EMUDECKGIT"/functions/configEmuFP.sh
source "$EMUDECKGIT"/functions/configESDE.sh
source "$EMUDECKGIT"/functions/configSRM.sh
source "$EMUDECKGIT"/functions/createDesktopIcons.sh
source "$EMUDECKGIT"/functions/createSaveFolders.sh
source "$EMUDECKGIT"/functions/installCHD.sh
source "$EMUDECKGIT"/functions/installEmuFP.sh
source "$EMUDECKGIT"/functions/installESDE.sh
source "$EMUDECKGIT"/functions/installPowerTools.sh
source "$EMUDECKGIT"/functions/installSRM.sh
source "$EMUDECKGIT"/functions/RAAchievment.sh
source "$EMUDECKGIT"/functions/RAautoSave.sh
source "$EMUDECKGIT"/functions/RABezels.sh
source "$EMUDECKGIT"/functions/RACores.sh
source "$EMUDECKGIT"/functions/RASNES.sh
source "$EMUDECKGIT"/functions/setESDEEmus.sh
source "$EMUDECKGIT"/functions/setMSG.sh
source "$EMUDECKGIT"/functions/setUpHolo.sh
source "$EMUDECKGIT"/functions/setWide.sh
source "$EMUDECKGIT"/functions/testLocationValid.sh
source "$EMUDECKGIT"/functions/setSetting.sh
source "$EMUDECKGIT"/functions/linkToSaveFolder.sh
source "$EMUDECKGIT"/functions/installEmuAI.sh
source "$EMUDECKGIT"/functions/getLatestReleaseURLGH.sh
source "$EMUDECKGIT"/functions/migrateAndLinkConfig.sh
source "$EMUDECKGIT"/functions/doMigrations.sh

57
functions/checkPSBIOS.sh Normal file
View file

@ -0,0 +1,57 @@
#!/bin/bash
checkPSBIOS(){
PSXBIOS="NULL"
PS2BIOS="NULL"
for entry in $biosPath/*
do
if [ -f "$entry" ]; then
md5=($(md5sum "$entry"))
if [[ "$PSXBIOS" != true ]]; then
PSBios=(239665b1a3dade1b5a52c06338011044 2118230527a9f51bd9216e32fa912842 849515939161e62f6b866f6853006780 dc2b9bf8da62ec93e868cfd29f0d067d 54847e693405ffeb0359c6287434cbef cba733ceeff5aef5c32254f1d617fa62 da27e8b6dab242d8f91a9b25d80c63b8 417b34706319da7cf001e76e40136c23 57a06303dfa9cf9351222dfcbb4a29d9 81328b966e6dcf7ea1e32e55e1c104bb 924e392ed05558ffdb115408c263dccf e2110b8a2b97a8e0b857a45d32f7e187 ca5cfc321f916756e3f0effbfaeba13b 8dd7d5296a650fac7319bce665a6a53c 490f666e1afb15b7362b406ed1cea246 32736f17079d0b2b7024407c39bd3050 8e4c14f567745eff2f0408c8129f72a6 b84be139db3ee6cbd075630aa20a6553 1e68c231d0896b7eadcad1d7d8e76129 b9d9a0286c33dc6b7237bb13cd46fdee 8abc1b549a4a80954addc48ef02c4521 9a09ab7e49b422c007e6d54d7c49b965 b10f5e0e3d9eb60e5159690680b1e774 6e3735ff4c7dc899ee98981385f6f3d0 de93caec13d1a141a40a79f5c86168d6 c53ca5908936d412331790f4426c6c33 476d68a94ccec3b9c8303bbd1daf2810 d8f485717a5237285e4d7c5f881b7f32 fbb5f59ec332451debccf1e377017237 81bbe60ba7a3d1cea1d48c14cbcc647b)
for i in "${PSBios[@]}"
do
if [[ "$md5" == *"${i}"* ]]; then
PSXBIOS=true
break
else
PSXBIOS=false
fi
done
fi
if [[ "$PS2BIOS" != true ]]; then
PS2Bios=(32f2e4d5ff5ee11072a6bc45530f5765 acf4730ceb38ac9d8c7d8e21f2614600 acf9968c8f596d2b15f42272082513d1 b1459d7446c69e3e97e6ace3ae23dd1c d3f1853a16c2ec18f3cd1ae655213308 63e6fd9b3c72e0d7b920e80cf76645cd a20c97c02210f16678ca3010127caf36 8db2fbbac7413bf3e7154c1e0715e565 91c87cb2f2eb6ce529a2360f80ce2457 3016b3dd42148a67e2c048595ca4d7ce b7fa11e87d51752a98b38e3e691cbf17 f63bc530bd7ad7c026fcd6f7bd0d9525 cee06bd68c333fc5768244eae77e4495 0bf988e9c7aaa4c051805b0fa6eb3387 8accc3c49ac45f5ae2c5db0adc854633 6f9a6feb749f0533aaae2cc45090b0ed 838544f12de9b0abc90811279ee223c8 bb6bbc850458fff08af30e969ffd0175 815ac991d8bc3b364696bead3457de7d b107b5710042abe887c0f6175f6e94bb ab55cceea548303c22c72570cfd4dd71 18bcaadb9ff74ed3add26cdf709fff2e 491209dd815ceee9de02dbbc408c06d6 7200a03d51cacc4c14fcdfdbc4898431 8359638e857c8bc18c3c18ac17d9cc3c 352d2ff9b3f68be7e6fa7e6dd8389346 d5ce2c7d119f563ce04bc04dbc3a323e 0d2228e6fd4fb639c9c39d077a9ec10c 72da56fccb8fcd77bba16d1b6f479914 5b1f47fbeb277c6be2fccdd6344ff2fd 315a4003535dfda689752cb25f24785c 312ad4816c232a9606e56f946bc0678a 666018ffec65c5c7e04796081295c6c7 6e69920fa6eef8522a1d688a11e41bc6 eb960de68f0c0f7f9fa083e9f79d0360 8aa12ce243210128c5074552d3b86251 240d4c5ddd4b54069bdc4a3cd2faf99d 1c6cd089e6c83da618fbf2a081eb4888 463d87789c555a4a7604e97d7db545d1 35461cecaa51712b300b2d6798825048 bd6415094e1ce9e05daabe85de807666 2e70ad008d4ec8549aada8002fdf42fb b53d51edc7fc086685e31b811dc32aad 1b6e631b536247756287b916f9396872 00da1b177096cfd2532c8fa22b43e667 afde410bd026c16be605a1ae4bd651fd 81f4336c1de607dd0865011c0447052e 0eee5d1c779aa50e94edd168b4ebf42e d333558cc14561c1fdc334c75d5f37b7 dc752f160044f2ed5fc1f4964db2a095 63ead1d74893bf7f36880af81f68a82d 3e3e030c0f600442fa05b94f87a1e238 1ad977bb539fc9448a08ab276a836bbc eb4f40fcf4911ede39c1bbfe91e7a89a 9959ad7a8685cad66206e7752ca23f8b 929a14baca1776b00869f983aa6e14d2 573f7d4a430c32b3cc0fd0c41e104bbd df63a604e8bff5b0599bd1a6c2721bd0 5b1ba4bb914406fae75ab8e38901684d cb801b7920a7d536ba07b6534d2433ca af60e6d1a939019d55e5b330d24b1c25 549a66d0c698635ca9fa3ab012da7129 5de9d0d730ff1e7ad122806335332524 21fe4cad111f7dc0f9af29477057f88d 40c11c063b3b9409aa5e4058e984e30c 80bbb237a6af9c611df43b16b930b683 c37bce95d32b2be480f87dd32704e664 80ac46fa7e77b8ab4366e86948e54f83 21038400dc633070a78ad53090c53017 dc69f0643a3030aaa4797501b483d6c4 30d56e79d89fbddf10938fa67fe3f34e 93ea3bcee4252627919175ff1b16a1d9 d3e81e95db25f5a86a7b7474550a2155)
for i in "${PS2Bios[@]}"
do
if [[ "$md5" == *"${i}"* ]]; then
PS2BIOS=true
break
else
PS2BIOS=false
fi
done
fi
fi
done
if [ $PSXBIOS == false ]; then
#text="`printf "<b>PS1 bios not detected</b>\nYou need to copy your BIOS to: ${biosPath}"`"
text="`printf "<b>PS1 bios not detected</b>\nYou need to copy your BIOS to: \n${biosPath}\n\n<b>Make sure they are not in a subdirectory</b>"`"
zenity --error \
--title="EmuDeck" \
--width=400 \
--text="${text}" 2>/dev/null
fi
if [ $PS2BIOS == false ]; then
#text="`printf "<b>PS1 bios not detected</b>\nYou need to copy your BIOS to: ${biosPath}"`"
text="`printf "<b>PS2 bios not detected</b>\nYou need to copy your BIOS to: \n${biosPath}\n\n<b>Make sure they are not in a subdirectory</b>"`"
zenity --error \
--title="EmuDeck" \
--width=400 \
--text="${text}" 2>/dev/null
fi
}

146
functions/configESDE.sh Normal file
View file

@ -0,0 +1,146 @@
#!/bin/bash
configESDE(){
reset=$1
if [[ $reset == 'reset' ]]; then
setMSG "Resetting EmulationStation DE..."
else
setMSG "Configuring EmulationStation DE..."
fi
mkdir -p ~/.emulationstation/
mkdir -p ~/.emulationstation/custom_systems/
es_systemsFile="$HOME/.emulationstation/custom_systems/es_systems.xml"
es_settingsFile="$HOME/.emulationstation/es_settings.xml"
#Custom Systems config Begin
if [[ ! -f "$es_systemsFile" || $reset == "true" ]]; then
cp ~/dragoonDoriseTools/EmuDeck/configs/emulationstation/custom_systems/es_systems.xml $es_systemsFile
fi
#update cemu custom system launcher to correct path by just replacing the line, if it exists.
commandString="/usr/bin/bash ${toolsPath}launchers/cemu.sh -f -g z:%ROM%"
xmlstarlet ed -L -u '/systemList/system/command[@label="Cemu (Proton)"]' -v "$commandString" $es_systemsFile
#insert cemu custom system if it doesn't exist, but the file does
if [[ $(grep -rnw $es_systemsFile -e 'Cemu (Proton)') == "" ]]; then
xmlstarlet ed --inplace --subnode '/systemList' --type elem --name 'system' \
--var newSystem '$prev' \
--subnode '$newSystem' --type elem --name 'name' -v 'wiiu' \
--subnode '$newSystem' --type elem --name 'fullname' -v 'Nintendo Wii U' \
--subnode '$newSystem' --type elem --name 'path' -v '%ROMPATH%/wiiu/roms' \
--subnode '$newSystem' --type elem --name 'extension' -v '.rpx .RPX .wud .WUD .wux .WUX .elf .ELF .iso .ISO .wad .WAD .wua .WUA' \
--subnode '$newSystem' --type elem --name 'command' -v "/usr/bin/bash ${toolsPath}launchers/cemu.sh -f -g z:%ROM%" \
--insert '$newSystem/command' --type attr --name 'label' --value "Cemu (Proton)" \
--subnode '$newSystem' --type elem --name 'platform' -v 'wiiu' \
--subnode '$newSystem' --type elem --name 'theme' -v 'wiiu' \
$es_systemsFile
fi
#Custom Systems config end
#update es_settings.xml
if [[ ! -f "$es_settingsFile" || $reset == 'reset' ]]; then
cp ~/dragoonDoriseTools/EmuDeck/configs/emulationstation/es_settings.xml $es_settingsFile
fi
#configure roms Directory
esDE_romDir="<string name=\"ROMDirectory\" value=\""${romsPath}"\" />"
romDirEmpty=$(grep -rnw $es_settingsFile -e '<string name="ROMDirectory" value="" />')
sed -i "s|/run/media/mmcblk0p1/Emulation/roms/|${romsPath}|g" $es_settingsFile
if [[ ! $romDirEmpty == '' ]]; then
sed -i "/<string name=\"ROMDirectory\" value=\"\" \/>/c\\${esDE_romDir}" $es_settingsFile
fi
#Configure Downloaded_media folder
esDE_MediaDir="<string name=\"MediaDirectory\" value=\""${ESDEscrapData}"\" />"
#search for media dir in xml, if not found, change to ours. If it's blank, also change to ours.
mediaDirFound=$(grep -rnw $es_settingsFile -e 'MediaDirectory')
mediaDirEmpty=$(grep -rnw $es_settingsFile -e '<string name="MediaDirectory" value="" />')
if [[ $mediaDirFound == '' ]]; then
sed -i -e '$a'"${esDE_MediaDir}" $es_settingsFile # use config file instead of link
elif [[ ! $mediaDirEmpty == '' ]]; then
sed -i "/<string name=\"MediaDirectory\" value=\"\" \/>/c\\${esDE_MediaDir}" $es_settingsFile
fi
#We check if we have downloaded_media data on ESDE so we can move it to the SD card
originalESMediaFolder="$HOME/.emulationstation/downloaded_media"
echo "processing $originalESMediaFolder"
if [ -L ${originalESMediaFolder} ] ; then
echo "link found"
unlink ${originalESMediaFolder} && echo "unlinked"
elif [ -e ${originalESMediaFolder} ] ; then
if [ -d "${originalESMediaFolder}" ]; then
echo -e ""
echo -e "Moving EmulationStation-DE downloaded_media to $toolsPath"
echo -e ""
rsync -a $originalESMediaFolder $toolsPath && rm -rf $originalESMediaFolder #move it, merging files if in both locations
fi
else
echo "downloaded_media not found on original location"
fi
if [[ $doESDEThemePicker == true ]]; then
if [[ $expert == true ]]; then
text="Which theme do you want to set as default on EmulationStation DE?"
esdeTheme=$(zenity --list \
--title="EmuDeck" \
--height=250 \
--width=250 \
--ok-label="OK" \
--cancel-label="Exit" \
--text="${text}" \
--radiolist \
--column="" \
--column="Theme" \
1 "EPICNOIR" \
2 "MODERN-DE" \
3 "RBSIMPLE-DE" 2>/dev/null)
ans=$?
if [ $ans -eq 0 ]; then
echo "Theme selected"
fi
fi
fi
mkdir -p ~/.emulationstation/themes/
git clone https://github.com/dragoonDorise/es-theme-epicnoir.git ~/.emulationstation/themes/es-epicnoir &>> /dev/null
cd ~/.emulationstation/themes/es-epicnoir && git pull
echo -e "OK!"
#Do this properly with wildcards
if [[ "$esdeTheme" == *"EPICNOIR"* ]]; then
sed -i "s|rbsimple-DE|es-epicnoir|" $es_settingsFile
sed -i "s|modern-DE|es-epicnoir|" $es_settingsFile
sed -i "s|es-epicnoir|es-epicnoir|" $es_settingsFile
fi
if [[ "$esdeTheme" == *"MODERN-DE"* ]]; then
sed -i "s|rbsimple-DE|modern-DE|" $es_settingsFile
sed -i "s|modern-DE|modern-DE|" $es_settingsFile
sed -i "s|es-epicnoir|modern-DE|" $es_settingsFile
fi
if [[ "$esdeTheme" == *"RBSIMPLE-DE"* ]]; then
sed -i "s|rbsimple-DE|rbsimple-DE|" $es_settingsFile
sed -i "s|modern-DE|rbsimple-DE|" $es_settingsFile
sed -i "s|es-epicnoir|rbsimple-DE|" $es_settingsFile
fi
#ESDE default emulators
mkdir -p ~/.emulationstation/gamelists/
setESDEEmus 'Dolphin (Standalone)' gc
setESDEEmus 'PPSSPP (Standalone)' psp
setESDEEmus 'Dolphin (Standalone)' wii
setESDEEmus 'PCSX2 (Standalone)' ps2
setESDEEmus 'melonDS' nds
setESDEEmus 'Citra (Standalone)' n3ds
#Symlinks for ESDE compatibility
cd $(echo $romsPath | tr -d '\r')
ln -sn gamecube gc
ln -sn 3ds n3ds
ln -sn arcade mamecurrent
ln -sn mame mame2003
ln -sn lynx atarilynx
}

23
functions/configEmuAI.sh Normal file
View file

@ -0,0 +1,23 @@
#!/bin/bash
configEmuAI(){
emu=$1
folderName=$2
folderPath=$3
gitLocation=$4
overwrite=$5
if [[ ! $overwrite == 'true' ]]; then
overwrite="--ignore-existing"
else
overwrite=""
fi
setMSG "Backing up ${emu} ${folderName}..."
rm -rf ${folderPath}_bak
cp -r ${folderPath} ${folderPath}_bak
rsync -avhp $gitLocation/ $folderPath $overwrite
}

21
functions/configEmuFP.sh Normal file
View file

@ -0,0 +1,21 @@
#!/bin/bash
configEmuFP(){
name=$1
ID=$2
FOLDER=~/.var/app/"${ID}"/config_bak
if [ ! -d "$FOLDER" ]; then
setMSG "Backing up ${name} Config..."
cp -r ~/.var/app/"${ID}"/config ~/.var/app/"${ID}"/config_bak
fi
FOLDER=~/.var/app/"${ID}"/data_bak
if [ ! -d "$FOLDER" ]; then
setMSG "Backing up ${name} Data..."
cp -r ~/.var/app/"${ID}"/data ~/.var/app/"${ID}"/data_bak
fi
rsync -avhp ~/dragoonDoriseTools/EmuDeck/configs/"${ID}"/ ~/.var/app/"${ID}"/
}

11
functions/configSRM.sh Normal file
View file

@ -0,0 +1,11 @@
#!/bin/bash
configSRM(){
setMSG "Configuring Steam Rom Manager..."
mkdir -p ~/.config/steam-rom-manager/userData/
cp ~/dragoonDoriseTools/EmuDeck/configs/steam-rom-manager/userData/userConfigurations.json ~/.config/steam-rom-manager/userData/userConfigurations.json
sleep 3
sed -i "s|/run/media/mmcblk0p1/Emulation/roms/|${romsPath}|g" ~/.config/steam-rom-manager/userData/userConfigurations.json
sed -i "s|/run/media/mmcblk0p1/Emulation/tools/|${toolsPath}|g" ~/.config/steam-rom-manager/userData/userConfigurations.json
sed -i "s|/run/media/mmcblk0p1/Emulation/storage/|${storagePath}|g" ~/.config/steam-rom-manager/userData/userConfigurations.json
echo -e "OK!"
}

View file

@ -0,0 +1,27 @@
#!/bin/bash
createDesktopIcons(){
#We create new icons
rm -rf ~/Desktop/EmuDeckUninstall.desktop 2>/dev/null
echo '#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Uninstall EmuDeck
Exec=curl https://raw.githubusercontent.com/dragoonDorise/EmuDeck/main/uninstall.sh | bash -s -- SD
Icon=delete
Terminal=true
Type=Application
StartupNotify=false' > ~/Desktop/EmuDeckUninstall.desktop
chmod +x ~/Desktop/EmuDeckUninstall.desktop
rm -rf ~/Desktop/EmuDeck.desktop 2>/dev/null
rm -rf ~/Desktop/EmuDeckSD.desktop 2>/dev/null
echo "#!/usr/bin/env xdg-open
[Desktop Entry]
Name=EmuDeck (${version})
Exec=curl https://raw.githubusercontent.com/dragoonDorise/EmuDeck/main/install.sh | bash -s -- SD
Icon=steamdeck-gaming-return
Terminal=true
Type=Application
StartupNotify=false" > ~/Desktop/EmuDeck.desktop
chmod +x ~/Desktop/EmuDeck.desktop
}

View file

@ -0,0 +1,46 @@
#!/bin/bash
createSaveFolders(){
#linkToSaveFolder emuname foldername pathtolink
#RA
linkToSaveFolder retroarch states ~/.var/app/org.libretro.RetroArch/config/retroarch/states
linkToSaveFolder retroarch saves ~/.var/app/org.libretro.RetroArch/config/retroarch/saves
#Dolphin
linkToSaveFolder dolphin GC ~/.var/app/org.DolphinEmu.dolphin-emu/data/dolphin-emu/GC
linkToSaveFolder dolphin Wii ~/.var/app/org.DolphinEmu.dolphin-emu/data/dolphin-emu/Wii
linkToSaveFolder dolphin states ~/.var/app/org.DolphinEmu.dolphin-emu/data/dolphin-emu/states
#PrimeHack
linkToSaveFolder primehack GC ~/.var/app/io.github.shiiion.primehack/data/dolphin-emu/GC
linkToSaveFolder primehack Wii ~/.var/app/io.github.shiiion.primehack/data/dolphin-emu/Wii
linkToSaveFolder primehack states ~/.var/app/io.github.shiiion.primehack/data/dolphin-emu/states
#Yuzu
unlink $savesPath/yuzu/saves # Fix for previous bad symlink
linkToSaveFolder yuzu saves $storagePath/yuzu/nand/user/save/
#Duckstation
linkToSaveFolder duckstation saves ~/.var/app/org.duckstation.DuckStation/data/duckstation/memcards
linkToSaveFolder duckstation states ~/.var/app/org.duckstation.DuckStation/data/duckstation/savestates
#PCSX2
linkToSaveFolder pcsx2 saves ~/.var/app/net.pcsx2.PCSX2/config/PCSX2/memcards
linkToSaveFolder pcsx2 states ~/.var/app/net.pcsx2.PCSX2/config/PCSX2/sstates
#Citra
linkToSaveFolder citra saves ~/.var/app/org.citra_emu.citra/data/citra-emu/sdmc
linkToSaveFolder citra states ~/.var/app/org.citra_emu.citra/data/citra-emu/states
#PPSSPP
linkToSaveFolder ppsspp saves ~/.var/app/org.ppsspp.PPSSPP/config/ppsspp/PSP/SAVEDATA
linkToSaveFolder ppsspp states ~/.var/app/org.ppsspp.PPSSPP/config/ppsspp/PSP/PPSSPP_STATE
#xemu
#rpcs3
#add links for the actual saves here.
}

79
functions/doMigrations.sh Normal file
View file

@ -0,0 +1,79 @@
#!/bin/bash
doMigrations(){
##nonstandard##
#Xemu files to storage if we have a xemu app folder
if [ ! -f "$storagePath/xemu/xbox_hdd.qcow2" ] && [ -d "$HOME/.var/app/app.xemu.xemu" ]; then
echo "xbox hdd does not exist in storagepath."
mkdir -p "$storagePath/xemu"
flatpak override app.xemu.xemu --filesystem="$storagePath"xemu:rw --user
xemuConf="$HOME/.var/app/app.xemu.xemu/data/xemu/xemu/xemu.toml"
xemuHDDLine="hdd_path = '${storagePath}xemu/xbox_hdd.qcow2'"
xemuEEPLine="eeprom_path = '${storagePath}xemu/eeprom.bin'"
sed -i "/hdd_path/c\\${xemuHDDLine}" $xemuConf
sed -i "/eeprom_path/c\\${xemuEEPLine}" $xemuConf
echo -e ""
setMSG "Moving Xemu HDD and EEPROM to the Emulation/storage folder"
echo -e ""
if [ -f "${savesPath}xemu/xbox_hdd.qcow2" ]; then
mv -fv ${savesPath}xemu/* ${storagePath}xemu/ && rm -rf ${savesPath}xemu/
elif [ -f "$HOME/.var/app/app.xemu.xemu/data/xemu/xemu/xbox_hdd.qcow2" ]; then
mv "$HOME/.var/app/app.xemu.xemu/data/xemu/xemu/xbox_hdd.qcow2" $storagePath/xemu/
mv "$HOME/.var/app/app.xemu.xemu/data/xemu/xemu/eeprom.bin" $storagePath/xemu/
fi
fi
#RPCS3 files to storage
if [ ! -d "$storagePath"rpcs3/dev_hdd0 ] && [ -d "$HOME/.var/app/net.rpcs3.RPCS3/" ];then
echo "rpcs3 hdd does not exist in storagepath."
#update config file for the new loc $(emulatorDir) is in the file. made this annoying.
rpcs3VFSConf="$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/vfs.yml"
rpcs3DevHDD0Line="/dev_hdd0/: ${storagePath}rpcs3/dev_hdd0/"
sed -i "/dev_hdd0/c\\${rpcs3DevHDD0Line}" $rpcs3VFSConf
echo -e ""
setMSG "Moving rpcs3 HDD to the Emulation/storage folder"
echo -e ""
mkdir -p "$storagePath/rpcs3"
if [ -d "$savesPath/rpcs3/dev_hdd0" ]; then
mv -f "$savesPath"rpcs3/dev_hdd0 "$storagePath"rpcs3/
elif [ -d "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/dev_hdd0" ]; then
rsync -av "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/dev_hdd0" "$storagePath"rpcs3/ && rm -rf "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/dev_hdd0"
fi
fi
#yuzu flatpak to appimage
emu="Yuzu"
#From -- > to
migrationTable=()
migrationTable+=("$HOME/.var/app/org.yuzu_emu.yuzu/data/yuzu" "$HOME/.local/share/yuzu")
migrationTable+=("$HOME/.var/app/org.yuzu_emu.yuzu/config/yuzu" "$HOME/.config/yuzu")
migrateAndLinkConfig $emu $migrationTable
mkdir -p ${storagePath}yuzu/dump
mkdir -p ${storagePath}yuzu/load
mkdir -p ${storagePath}yuzu/sdmc
mkdir -p ${storagePath}yuzu/nand
mkdir -p ${storagePath}yuzu/screenshots
mkdir -p ${storagePath}yuzu/tas
#move data from hidden folders out to these folders in case the user already put stuff here.
origPath="$HOME/.local/share/"
rsync -av ${origPath}yuzu/dump ${storagePath}yuzu/ && rm -rf ${origPath}yuzu/dump
rsync -av ${origPath}yuzu/load ${storagePath}yuzu/ && rm -rf ${origPath}yuzu/load
rsync -av ${origPath}yuzu/sdmc ${storagePath}yuzu/ && rm -rf ${origPath}yuzu/sdmc
rsync -av ${origPath}yuzu/nand ${storagePath}yuzu/ && rm -rf ${origPath}yuzu/nand
rsync -av ${origPath}yuzu/screenshots ${storagePath}yuzu/ && rm -rf ${origPath}yuzu/screenshots
rsync -av ${origPath}yuzu/tas ${storagePath}yuzu/ && rm -rf ${origPath}yuzu/tas
}

View file

@ -0,0 +1,10 @@
#!/bin/bash
getLatestReleaseURLGH(){
repository=$1
fileType=$2
url="$(curl -sL https://api.github.com/repos/${repository}/releases/latest | jq -r ".assets[].browser_download_url" | grep .${fileType}\$)"
echo "$url"
}

21
functions/installCHD.sh Normal file
View file

@ -0,0 +1,21 @@
#!/bin/bash
installCHD(){
mkdir -p "$toolsPath"chdconv/
rsync -avhp ~/dragoonDoriseTools/EmuDeck/tools/chdconv/ "$toolsPath"chdconv/
rm -rf ~/Desktop/EmuDeckCHD.desktop 2>/dev/null
echo "#!/usr/bin/env xdg-open
[Desktop Entry]
Name=EmuDeck CHD Script
Exec=bash "$toolsPath"chdconv/chddeck.sh
Icon=steamdeck-gaming-return
Terminal=true
Type=Application
StartupNotify=false" > ~/Desktop/EmuDeckCHD.desktop
chmod +x ~/Desktop/EmuDeckCHD.desktop
chmod +x "$toolsPath"chdconv/chddeck.sh
chmod +x "$toolsPath"chdconv/chdman5
#update the paths in the script
sed -i "s|/run/media/mmcblk0p1/Emulation/roms/|${romsPath}|g" "$toolsPath"chdconv/chddeck.sh
sed -i "s|/run/media/mmcblk0p1/Emulation/tools/|${toolsPath}|g" "$toolsPath"chdconv/chddeck.sh
}

17
functions/installESDE.sh Normal file
View file

@ -0,0 +1,17 @@
#!/bin/bash
installESDE(){
setMSG "${installString} EmulationStation Desktop Edition"
curl https://gitlab.com/leonstyhre/emulationstation-de/-/raw/master/es-app/assets/latest_steam_deck_appimage.txt --output "$toolsPath"/latesturl.txt
latestURL=$(grep "https://gitlab" "$toolsPath"/latesturl.txt)
#New repo if the other fails
if [ -z $latestURL ]; then
curl https://gitlab.com/es-de/emulationstation-de/-/raw/master/es-app/assets/latest_steam_deck_appimage.txt --output "$toolsPath"/latesturl.txt
latestURL=$(grep "https://gitlab" "$toolsPath"/latesturl.txt)
fi
curl $latestURL --output "$toolsPath"/EmulationStation-DE-x64_SteamDeck.AppImage
rm "$toolsPath"/latesturl.txt
chmod +x "$toolsPath"/EmulationStation-DE-x64_SteamDeck.AppImage
}

24
functions/installEmuAI.sh Normal file
View file

@ -0,0 +1,24 @@
#!/bin/bash
installEmuAI(){
name=$1
url=$2
altName=$3
if [[ $altName == "" ]]; then
altName=$name
fi
mkdir -p $HOME/Applications
cd $HOME/Applications
wget -c "$url" -O "$altName.AppImage"
shName=$(echo "$name" | awk '{print tolower($0)}')
find . -type f -iname $shName.sh | while read f; do echo "deleting $f"; rm -f "$f"; done;
cp "${EMUDECKGIT}"/tools/launchers/"${shName}".sh "${toolsPath}"launchers/"${shName}".sh
}

18
functions/installEmuFP.sh Normal file
View file

@ -0,0 +1,18 @@
#!/bin/bash
installEmuFP(){
name=$1
ID=$2
setMSG "Installing $name"
flatpak install flathub $ID -y --system
flatpak override $ID --filesystem=host --user
flatpak override $ID --share=network --user
shName=$(echo "$name" | awk '{print tolower($0)}')
find . -type f -iname $shName.sh | while read f; do echo "deleting $f"; rm -f "$f"; done;
cp "${EMUDECKGIT}"/tools/launchers/"${shName}".sh "${toolsPath}"launchers/"${shName}".sh
}

View file

@ -0,0 +1,16 @@
#!/bin/bash
installPowerTools(){
#should use sudo password piped into cache earlier.
curl -L https://github.com/SteamDeckHomebrew/PluginLoader/raw/main/dist/install_release.sh | sh
sudo rm -rf ~/homebrew/plugins/PowerTools
sudo git clone https://github.com/NGnius/PowerTools.git ~/homebrew/plugins/PowerTools
sleep 1
cd ~/homebrew/plugins/PowerTools
sudo git checkout tags/v0.6.0
text="$(printf "To finish the installation of PowerTools you will need to go into the Steam UI Settings\n\nUnder System -> System Settings toggle Enable Developer Mode\n\nScroll the sidebar all the way down and click on Developer\n\nUnder Miscellaneous, enable CEF Remote Debugging\n\nIn order to improve performance on Yuzu or Dolphin try configuring Powertools to activate only 4 CPU Cores\n\nYou can Access Powertools by presing the ... button and selecting the new Plugins Menu\n\n
\n\nIMPORTANT - The Powertools menu is touch ONLY.\n\n")"
zenity --info \
--title="EmuDeck" \
--width=450 \
--text="${text}" 2>/dev/null
}

19
functions/installSRM.sh Normal file
View file

@ -0,0 +1,19 @@
#!/bin/bash
installSRM(){
setMSG "${installString} Steam Rom Manager"
rm -f ~/Desktop/Steam-ROM-Manager-2.3.29.AppImage
rm -f ~/Desktop/Steam-ROM-Manager.AppImage
mkdir -p "${toolsPath}"/srm
curl -L "$(curl -s https://api.github.com/repos/SteamGridDB/steam-rom-manager/releases/latest | grep -E 'browser_download_url.*AppImage' | grep -ve 'i386' | cut -d '"' -f 4)" > "${toolsPath}"srm/Steam-ROM-Manager.AppImage
#Nova fix'
echo "#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Steam Rom Manager
Exec=kill -15 \`pidof steam\` & ${toolsPath}srm/Steam-ROM-Manager.AppImage
Icon=steamdeck-gaming-return
Terminal=false
Type=Application
StartupNotify=false" > ~/Desktop/SteamRomManager.desktop
chmod +x ~/Desktop/SteamRomManager.desktop
chmod +x "${toolsPath}"/srm/Steam-ROM-Manager.AppImage
}

View file

@ -0,0 +1,16 @@
#!/bin/bash
linkToSaveFolder(){
emu=$1
folderName=$2
path=$3
if [ ! -d "$savesPath/$emu/$folderName" ]; then
mkdir -p $savesPath/$emu
echo -e ""
echo -e "Linking $emu $folderName to the Emulation/saves folder"
echo -e ""
mkdir -p $path
ln -sn $path $savesPath/$emu/$folderName
fi
}

View file

@ -0,0 +1,118 @@
#!/bin/bash
migrateAndLinkConfig(){
emu=$1
migrationTable=$2
#step 1 should be attempt to unlink everything that gets passed in so we can start fresh.
#for path in $migrationTable[@]
#do
# if [ -L $path ]; then
# echo unlinking $path
# unlink $path
# fi
#done
migrationFlag="$HOME/emudeck/.${emu}MigrationCompleted"
#check if we have a nomigrateflag for $emu
if [ ! -f "$migrationFlag" ]; then
#ask user before migrating data
text="`printf "We would like to migrate data from the flatpak to the AppImage for ${emu}. \
\nNew directories for this emulator will be made, and config changes will point to these new folders regardless of this choice.\
\nYou should allow this migration if you want to move your flatpak data and config to it's new home. \
\nIf you would like to move your files manually, you may decline."`"
doMigrate=$(zenity --info --title "Migrate "${emu}" Data?" \
--text="${text}" \
--width=300 \
--ok-label "Leave ${emu} alone this time" \
--extra-button "Leave ${emu} alone forever" \
--extra-button "Migrate Data" 2>/dev/null)
rc=$?
echo "$emu Do migration? User chose: $doMigrate"
if [ "$doMigrate" == "Migrate Data" ]; then
n=$(( ${#migrationTable[@]} - 1 ))
#odd should be flatpak
#even should be appimage
#determine plan based on first pair
if [[ ! -e ${migrationTable[0]} ]]; then
#no flatpak data. nothing to do. (or should we link it?)
echo "No flatpak data found, continuing."
elif [[ -L ${migrationTable[0]} && -L ${migrationTable[1]} ]]; then
echo "Both sides of migration are symlinks. Stopping migration. User needs to manually resolve."
elif [[ -d ${migrationTable[0]} && -d ${migrationTable[1]} ]]; then
#both locations exist
#ask user which to keep
text="`printf "Data was found for both the appimage and flatpak for ${emu}.\nWe will be using the AppImage from now on.\nPlease choose which data to keep."`"
ans=$(zenity --info --title "Migrate "${emu}" Data?" \
--text="${text}" \
--width=300 \
--ok-label "Don't do anything with my stuff" \
--extra-button "Keep AppImage Data" \
--extra-button "Migrate Flatpak Data" 2>/dev/null)
rc=$?
if [[ ! $ans == "" ]]; then #user didn't cancel
echo "$emu flatpak/appimage data choice. User Chose: $ans"
for ((i=0; i<=n; i=(i+2))) { # for each pair of dirs
if [[ $ans == "Migrate Flatpak Data" ]]; then
fromDir=${migrationTable[i]}
toDir=${migrationTable[i+1]}
echo "Migrating ${fromDir} to ${toDir}"
unlink
#backup destination location, delete it, then sync original over
mv "$toDir" "$toDir.orig" && mkdir -p $toDir && rsync -av "${fromDir}/" "${toDir}"
cd ${fromDir}
cd ..
#backup and remove original
mv "${fromDir}" "${fromDir}.orig" && rm -rf "${fromDir}"
#link .config to .var so flatpak still works
ln -sfn ${toDir} .
elif [[ $ans == "Keep AppImage Data" ]]; then
fromDir=${migrationTable[i+1]}
toDir=${migrationTable[i]}
cd ${toDir}
cd ..
#backup flatpak data
mv "${toDir}" "${toDir}.orig"
#link appimage data to flatpak folder
ln -sfn "${fromDir}" .
else
echo "Something went wrong"
exit
fi
}
else
echo "User doesn't want migration at this time."
fi
elif [[ -L ${migrationTable[0]} && -d ${migrationTable[0]} && -d ${migrationTable[1]} ]]; then
echo "Flatpak already linked"
elif [[ -d ${migrationTable[0]} && ! -e ${migrationTable[1]} ]]; then
echo "No AppImage data found, but flatpak data found. New AppImage install."
for ((i=0; i<=n; i=(i+2))) { # for each pair of dirs
fromDir=${migrationTable[i]}
toDir=${migrationTable[i+1]}
echo "Migrating ${fromDir} to ${toDir}"
cd ${fromDir}/..
#backup destination location, delete it, then sync original over
mkdir -p ${toDir} && rmdir ${toDir} #make the path for todir, but remove the end folder
mv "${fromDir}" "${toDir}" #move the original to the new location
#link .config to .var so flatpak still works
ln -sfn ${toDir} .
}
else
echo "do nothing"
fi
touch $migrationFlag
elif [ $doMigrate == "Leave ${emu} alone forever" ]; then
touch $migrationFlag
fi
fi
}

19
functions/setESDEEmus.sh Normal file
View file

@ -0,0 +1,19 @@
#!/bin/bash
setESDEEmus(){
emu=$1
system=$2
FILE=~/.emulationstation/gamelists/$system/gamelist.xml
if [ ! -f "$FILE" ]; then
mkdir -p ~/.emulationstation/gamelists/$system && cp ~/dragoonDoriseTools/EmuDeck/configs/emulationstation/gamelists/$system/gamelist.xml $FILE
else
gamelistFound=$(grep -rnw $FILE -e 'gameList')
if [[ $gamelistFound == '' ]]; then
sed -i -e '$a\<gameList />' $FILE
fi
alternativeEmu=$(grep -rnw $FILE -e 'alternativeEmulator')
if [[ $alternativeEmu == '' ]]; then
echo "<alternativeEmulator><label>$emu</label></alternativeEmulator>" >> $FILE
fi
sed -i "s|<?xml version=\"1.0\">|<?xml version=\"1.0\"?>|g" $FILE
fi
}

11
functions/setMSG.sh Normal file
View file

@ -0,0 +1,11 @@
#!/bin/bash
setMSG(){
progressBar=$((progressBar + 5))
#We prevent the zenity to close if we have too much MSG, the classic eternal 99%
if [ $progressBar == 95 ]; then
progressBar=90
fi
echo "$progressBar" > ~/emudeck/msg.log
echo "# $1" >> ~/emudeck/msg.log
sleep 0.5
}

16
functions/setSetting.sh Normal file
View file

@ -0,0 +1,16 @@
#!/bin/bash
setSetting () {
var=$1
new_val=$2
file=~/emudeck/settings.sh
settingExists=$(grep -rnw $file -e $var)
if [[ $settingExists == '' ]]; then
#insert setting to end
sed -i -e '$a\'"$var=$new_val" $FILE
elif [[ ! $settingExists == '' ]]; then
#update setting
sed -i "s|^$var *= *.*|$var=$new_val|; s|^$var [^=]*$|$var $new_val|" "$file"
fi
#Update values
source ~/emudeck/settings.sh
}

26
functions/setUpHolo.sh Normal file
View file

@ -0,0 +1,26 @@
#!/bin/bash
setUpHolo(){
#Ensure the dependencies are installed before proceeding.
for package in packagekit-qt5 flatpak rsync unzip jq
do
pacman -Q ${package} || sudo pacman -Sy --noconfirm ${package}
done
#The user must be in the wheel group to install flatpaks successfully.
wheel=$(awk '/'${USER}'/ {if ($1 ~ /wheel/) print}' /etc/group)
if [[ ! "${wheel}" =~ ${USER} ]]; then
text="$(printf "Hey! This is not an SteamDeck. EmuDeck can work just fine, but you need to have a valid user account\n\nThe script will ask for your password to make sure everything works as expected.")"
zenity --info \
--title="EmuDeck" \
--width=450 \
--text="${text}" 2>/dev/null
sudo usermod -a -G wheel ${USER}
newgrp wheel
fi
#Ensure the Desktop directory isn't owned by root
if [[ "$(stat -c %U ${HOME}/Desktop)" =~ root ]]; then
sudo chown -R ${USER}:${USER} ~/Desktop
fi
}

24
functions/setWide.sh Normal file
View file

@ -0,0 +1,24 @@
#!/bin/bash
setWide(){
if [ $duckWide == true ]; then
sed -i "s|WidescreenHack = false|WidescreenHack = true|g" ~/.var/app/org.duckstation.DuckStation/data/duckstation/settings.ini
else
sed -i "s|WidescreenHack = true|WidescreenHack = false|g" ~/.var/app/org.duckstation.DuckStation/data/duckstation/settings.ini
fi
if [ $DolphinWide == true ]; then
sed -i "s|wideScreenHack = False|wideScreenHack = True|g" ~/.var/app/org.DolphinEmu.dolphin-emu/config/dolphin-emu/GFX.ini
else
sed -i "s|wideScreenHack = True|wideScreenHack = False|g" ~/.var/app/org.DolphinEmu.dolphin-emu/config/dolphin-emu/GFX.ini
fi
if [ $DreamcastWide == true ]; then
sed -i "s|reicast_widescreen_hack = \"disabled\"|reicast_widescreen_hack = \"enabled\"|g" ~/.var/app/org.libretro.RetroArch/config/retroarch/config/Flycast/Flycast.opt
else
sed -i "s|reicast_widescreen_hack = \"enabled\"|reicast_widescreen_hack = \"disabled\"|g" ~/.var/app/org.libretro.RetroArch/config/retroarch/config/Flycast/Flycast.opt
fi
if [ $BeetleWide == true ]; then
sed -i "s|beetle_psx_hw_widescreen_hack = \"disabled\"|beetle_psx_hw_widescreen_hack = \"enabled\"|g" "$HOME/.var/app/org.libretro.RetroArch/config/retroarch/config/Beetle PSX HW/Beetle PSX HW.opt"
else
sed -i "s|beetle_psx_hw_widescreen_hack = \"enabled\"|beetle_psx_hw_widescreen_hack = \"disabled\"|g" "$HOME/.var/app/org.libretro.RetroArch/config/retroarch/config/Beetle PSX HW/Beetle PSX HW.opt"
fi
}

View file

@ -0,0 +1,24 @@
#!/bin/bash
testLocationValid(){
testLocation=$2
touch $testLocation/testwrite
return=""
if [ ! -f $testLocation/testwrite ]; then
#echo "$testLocation not writeable"
return="invalid"
else
#echo "$testLocation writable"
ln -s $testLocation/testwrite $testLocation/testwrite.link
if [ ! -f $testLocation/testwrite.link ]; then
#echo "Symlink creation failed in $testLocation"
return="invalid"
else
return="valid"
#doesn't work? scope issue?
#locationTable+=(FALSE "$1" "$testLocation") #valid only if location is writable and linkable
fi
fi
rm -f "$testLocation/testwrite" "$testLocation/testwrite.link"
echo $return
}

1543
install.sh

File diff suppressed because it is too large Load diff

View file

@ -1,20 +1,27 @@
0.17.4
- New user interface on install both on Easy and Expert modes
- Rom folder creation will respect user's custom symlinks
- When you first install EmuDeck an you Launch SteamRomManager we will get you back to GamingMode when closing SteamRomManager
- SRM is now located on Emulation/tools and will close Steam automatically for you.
- Fixed RPCS3 Controller not working on new install
- Updated Mupen64Plus-Next defaults for N64. Should be much better now. more accurate, faster, and look better.
- New tool added - proton-launch.sh (for all your non-steam windows app shenanigans, courtesy of Angel)
- Citra left trackpad used now as mouse instead of D-pad on our SteamInput template
- Fix Citra non exiting while pressing R5
- PPSSPP Audio Fix when the Deck goes into Sleep Mode
- Fixed 3ds bad symlink for older installations
- PrimeHack Controller tweaks and performance gain
- Fix PCSX2 Turbo Mode
- Wii nkit.gcz support
- FBNeo fixes on SteamRomManager
- SD card is only available if one is inserted, writable, and supports symlinks
- Expert mode - Fixes RA Autosave selection
- Expert mode - Changed Cemu default controller to gamepad with gyro (gyro requires SteamDeckGyroDSU installation. See Expert mode for more details)
- Expert mode - You can now chose a custom install location. It will be tested for the ability to both write and link, and rejected if either fail.
0.17.5
- EmuDeck internal fixes and modularity.. setting it up for great things on the future...
- New - Steam Input Template for DuckStation with left trackpad Touchinput (Thanks Moskeeto)
- New - Yuzu AppImage ( Seemingly better performance than the one in discover store, also right click to open menus work! )
It is VERY important you let Emudeck run the updates on Yuzu so the
data migration can happen seamlessly. You will be notified if we find data in the default appimage location
and can choose to keep and migrate the old Flatpak data, or you can use the existing AppImage data you have.
The chosen data will be migrated to the AppImage location, and linked back to the flatpak data location.
Steam Rom Manager users will need to re-parse for Yuzu games to use the new AppImage.
The Flatpak installation is NOT removed, but must be for EmulationStation-DE to use the AppImage instead.
- New - Storage folder to keep Xemu, Yuzu, and RPCS3 data in the Emulation folder. Migration will happen at the start.
You may need to re-parse for rpcs3 installed files.
- New - CHD Script now handles wii / gc iso --> rvz conversion
- Fix - Dolphin pointer is now right trackpad and works more smoothly. If you have SteamGyro setup, motion now works.
*You may need to set the controller to Default Gamepad With Mouse Trackpad if steam decided to use Touchpad as Joystick instead.
- Fix - DuckStation rom path added. New hotkeys added to coincide with Steam Input Template. Changed quickMenu to Esc. (Steam + Dpad Left)
- Fix - Widescreen Hacks are now off by default for all emulators. They can be enabled by running in Expert Mode.
- Fix - PCSX2 Steam Input profile updated so it wont pause on RT. (Thanks Wintermute)
- Fix - Updates won't wipe out EmulationStation-DE custom systems and EmulationStation-DE metadata info anymore.
- Fix - Updates won't wipe out Cemu graphics pack settings anymore.
- Fix - EmulationStation-DE's hidden downloaded_media wouldn't get moved
to the Emulation/tools directory if the setting existed but was blank.
- Fix - Expert Mode: Widescreen Hacks Selection.
- Fix - Expert Mode: Emulator install Selection.
- Fix - Expert Mode: Emulator reconfiguration selection.
- Fix - Expert Mode: Entering a password wrong in the pop up will make it re-pop.
You have 2 chances and then it will disable the Expert mode settings that require a password.

67
settings.sh Normal file
View file

@ -0,0 +1,67 @@
#Expert mode off by default
expert=false
#Default settings for all systems
doSetupRA=true
doSetupDolphin=true
doSetupPCSX2=true
doSetupRPCS3=true
doSetupYuzu=true
doSetupCitra=true
doSetupDuck=true
doSetupCemu=true
doSetupXenia=false
doSetupRyujinx=true
doSetupPrimeHacks=true
doSetupPPSSPP=true
doSetupXemu=true
doSetupESDE=true
doSetupSRM=true
#doSetupMelon=true
#Install all systems by default
doInstallSRM=true
doInstallESDE=true
doInstallRA=false
doInstallDolphin=false
doInstallPCSX2=false
doInstallRPCS3=false
doInstallYuzu=false
doInstallCitra=false
doInstallDuck=false
doInstallCemu=false
doInstallXenia=false
doInstallPrimeHacks=false
doInstallPPSSPP=false
doInstallXemu=false
#doInstallMelon=false
doInstallCHD=false
doInstallPowertools=false
doInstallGyro=false
installString='Installing'
#Default RetroArch configuration
RABezels=true
RAautoSave=false
SNESAR=43
#Default widescreen
duckWide=true
DolphinWide=true
DreamcastWide=true
BeetleWide=true
#Default installation folders
emulationPath=~/Emulation/
romsPath=~/Emulation/roms/
toolsPath=~/Emulation/tools/
biosPath=~/Emulation/bios/
savesPath=~/Emulation/saves/
storagePath=~/Emulation/storage/
#Default ESDE Theme
esdeTheme="EPICNOIR"

BIN
tools/binaries/xmlstarlet Normal file

Binary file not shown.

Binary file not shown.

View file

@ -11,26 +11,33 @@ zenity --question \
ans=$?
if [ $ans -eq 0 ]; then
#paths update via sed in main script
romsPath="/run/media/mmcblk0p1/Emulation/roms/"
chdPath="/run/media/mmcblk0p1/Emulation/tools/chdconv/"
toolsPath="/run/media/mmcblk0p1/Emulation/tools/"
chdPath="${toolsPath}chdconv/"
#initialize log
TIMESTAMP=`date "+%Y%m%d_%H%M%S"`
LOGFILE="$chdPath/chdman-$TIMESTAMP.log"
exec > >(tee ${LOGFILE}) 2>&1
#ask user if they want to pick manually or run a search for eligible files. Manual will need to ask the user to pick a file, and then it will need to ask the type to convert to. (chd, rvz, cso)
echo "Checking $romsPath for files eligible for conversion."
#whitelist
declare -a folderWhiteList=("dreamcast" "psx" "segacd" "3do" "saturn" "tg-cd" "pcenginecd" "pcfx" "amigacd32" "neogeocd" "megacd" "ps2")
declare -a chdfolderWhiteList=("dreamcast" "psx" "segacd" "3do" "saturn" "tg-cd" "pcenginecd" "pcfx" "amigacd32" "neogeocd" "megacd" "ps2")
declare -a rvzfolderWhiteList=("gamecube" "wii")
declare -a searchFolderList
echo $chdfolderWhiteList
export PATH="${chdPath}/:$PATH"
#find file types we support within whitelist of folders
for romfolder in ${folderWhiteList[@]}; do
for romfolder in ${chdfolderWhiteList[@]}; do
echo "Checking ${romsPath}${romfolder}/"
files=(`find "${romsPath}${romfolder}/" -type f -iname "*.gdi" -o -type f -iname "*.cue" -o -type f -iname "*.iso"`)
if [ ${#files[@]} -gt 0 ]; then
@ -38,6 +45,15 @@ if [ $ans -eq 0 ]; then
searchFolderList+=("$romfolder")
fi
done
for romfolder in ${rvzfolderWhiteList[@]}; do
echo "Checking ${romsPath}${romfolder}/"
files=(`find "${romsPath}${romfolder}/" -type f -iname "*.gcm" -o -type f -iname "*.iso"`)
if [ ${#files[@]} -gt 0 ]; then
echo "found in $romfolder"
searchFolderList+=("$romfolder")
fi
done
if (( ${#searchFolderList[@]} == 0 )); then
echo "No eligible files found."
@ -50,6 +66,7 @@ if [ $ans -eq 0 ]; then
exit
fi
declare -i height=(${#searchFolderList[@]}*100)
selectColumnStr="RomFolder "
for (( i=1; i<=${#searchFolderList[@]}; i++ )); do selectColumnStr+="$i ${searchFolderList[$i-1]} " ; done
@ -70,12 +87,39 @@ if [ $ans -eq 0 ]; then
#query user about FileTypes? maybe they only want to convert bin/cue? Iso? Gdi?
#check list here?
# should be able to use grep / bash compare the files in the dir against the cue / gdi file to determine if it should be deleted.
# something like after the processing of the cue / gdi succeeds, then do this
# for file in folder #where file is a foreach variable and folder is some array of the files in the folder being processed.
# if grep -q $file "$f"; then #where $f is the cue / gdi, and $file is a file in the folder.
# rm -rf $file
# fi
#
#CHD
for romfolder in ${romfolders[@]}; do
find "$romsPath$romfolder" -type f -iname "*.cue" | while read f; do echo "Converting: $f"; chdman5 createcd -i "$f" -o "${f%.*}.chd" && rm -rf "$f" && rm -rf "${f%.*}.[bB][iI][nN]"; done;
find "$romsPath$romfolder" -type f -iname "*.gdi" | while read f; do echo "Converting: $f"; chdman5 createcd -i "$f" -o "${f%.*}.chd" && rm -rf "$f"; done; #going to need work
find "$romsPath$romfolder" -type f -iname "*.iso" | while read f; do echo "Converting: $f"; chdman5 createcd -i "$f" -o "${f%.*}.chd" && rm -rf "$f"; done;
if [[ " ${chdfolderWhiteList[*]} " =~ " ${romfolder} " ]]; then
find "$romsPath$romfolder" -type f -iname "*.cue" | while read f; do echo "Converting: $f"; chdman5 createcd -i "$f" -o "${f%.*}.chd" && rm -rf "$f" && rm -rf "${f%.*}.bin"; done;
find "$romsPath$romfolder" -type f -iname "*.gdi" | while read f; do echo "Converting: $f"; chdman5 createcd -i "$f" -o "${f%.*}.chd" && rm -rf "$f"; done; #going to need work
find "$romsPath$romfolder" -type f -iname "*.iso" | while read f; do echo "Converting: $f"; chdman5 createcd -i "$f" -o "${f%.*}.chd" && rm -rf "$f"; done;
fi
done
#rvz
if [[ -f "${toolsPath}proton-launch.sh" && -f "${chdPath}DolphinTool.exe" ]]; then #ensure tools are in place
for romfolder in ${romfolders[@]}; do
if [[ " ${rvzfolderWhiteList[*]} " =~ " ${romfolder} " ]]; then
find "$romsPath$romfolder" -type f -iname "*.iso" | while read f; do echo "Converting: $f"; ${toolsPath}proton-launch.sh ${chdPath}DolphinTool.exe convert -f rvz -b 131072 -c zstd -l 5 -i "z:$f" -o "z:${f%.*}.rvz" && rm -rf "$f"; done;
find "$romsPath$romfolder" -type f -iname "*.gcm" | while read f; do echo "Converting: $f"; ${toolsPath}proton-launch.sh ${chdPath}DolphinTool.exe convert -f rvz -b 131072 -c zstd -l 5 -i "z:$f" -o "z:${f%.*}.rvz" && rm -rf "$f"; done;
fi
done
else
echo "missing tools"
fi
#cso
#
else
exit
fi

View file

@ -1,2 +1,18 @@
#!/bin/sh
/usr/bin/flatpak run org.yuzu_emu.yuzu
emuName="yuzu" #parameterize me
emufolder="$HOME/Applications" # has to be applications for ES-DE to find it
#find full path to emu executable
exe=$(find $emufolder -iname "${emuName}*.AppImage" | sort -n | cut -d' ' -f 2- | tail -n 1 2>/dev/null)
#if appimage doesn't exist fall back to flatpak.
if [[ $exe == '' ]]; then
#flatpak
flatpakApp=$(flatpak list --app --columns=application | grep $emuName)
exe="/usr/bin/flatpak run "$flatpakApp
else
#make sure that file is executable
chmod +x $exe
fi
#run the executable with the params.
eval "${exe} ${@}"

View file

@ -70,7 +70,6 @@ if [ "$doUninstall" == true ]; then
11 "Cemu" \
12 "SteamRomManager" \
13 "EmulationStationDE")
clear
ans=$?
if [ $ans -eq 0 ]; then
@ -123,39 +122,39 @@ if [ "$doUninstall" == true ]; then
#Uninstalling
if [[ "$doUninstallRA" == true ]]; then
flatpak uninstall org.libretro.RetroArch
flatpak uninstall org.libretro.RetroArch --system -y
rm -rf ~/.var/app/org.libretro.RetroArch &>> /dev/null
fi
if [[ "$doUninstallPrimeHacks" == true ]]; then
flatpak uninstall io.github.shiiion.primehack
flatpak uninstall io.github.shiiion.primehack --system -y
rm -rf ~/.var/app/io.github.shiiion.primehack &>> /dev/null
fi
if [[ "$doUninstallPCSX2" == true ]]; then
flatpak uninstall net.pcsx2.PCSX2
flatpak uninstall net.pcsx2.PCSX2 --system -y
rm -rf ~/.var/app/net.pcsx2.PCSX2 &>> /dev/null
fi
if [[ "$doUninstallRPCS3" == true ]]; then
flatpak uninstall net.rpcs3.RPCS3
flatpak uninstall net.rpcs3.RPCS3 --system -y
rm -rf ~/.var/app/net.rpcs3.RPCS3 &>> /dev/null
fi
if [[ "$doUninstallCitra" == true ]]; then
flatpak uninstall org.citra_emu.citra
flatpak uninstall org.citra_emu.citra --system -y
rm -rf ~/.var/app/org.citra_emu.citra &>> /dev/null
fi
if [[ "$doUninstallDolphin" == true ]]; then
flatpak uninstall org.DolphinEmu.dolphin-emu
flatpak uninstall org.DolphinEmu.dolphin-emu --system -y
rm -rf ~/.var/app/org.DolphinEmu.dolphin-emu &>> /dev/null
fi
if [[ "$doUninstallDuck" == true ]]; then
flatpak uninstall org.duckstation.DuckStation
flatpak uninstall org.duckstation.DuckStation --system -y
rm -rf ~/.var/app/org.duckstation.DuckStation &>> /dev/null
fi
if [[ "$doUninstallPPSSPP" == true ]]; then
flatpak uninstall org.ppsspp.PPSSPP
flatpak uninstall org.ppsspp.PPSSPP --system -y
rm -rf ~/.var/app/org.ppsspp.PPSSPP &>> /dev/null
fi
if [[ "$doUninstallYuzu" == true ]]; then
flatpak uninstall org.yuzu_emu.yuzu
flatpak uninstall org.yuzu_emu.yuzu --system -y
rm -rf ~/.var/app/org.yuzu_emu.yuzu &>> /dev/null
fi
if [[ "$doUninstallCemu" == true ]]; then
@ -169,11 +168,11 @@ if [ "$doUninstall" == true ]; then
# rm -f /run/media/mmcblk0p1/Emulation/roms/xbox360/* &>> /dev/null
#fi
if [[ "$doUninstallXemu" == true ]]; then
flatpak uninstall app.xemu.xemu
flatpak uninstall app.xemu.xemu --system -y
rm -rf ~/.var/app/app.xemu.xemu &>> /dev/null
fi
if [[ "$doUninstallSRM" == true ]]; then
rm -rf ~/Desktop/Steam-ROM-Manager.AppImage &>> /dev/null
rm -rf ~/Desktop/SteamRomManager.desktop &>> /dev/null
fi
if [[ "$doUninstallESDE" == true ]]; then
rm -rf ~/.emulationstation &>> /dev/null
@ -183,9 +182,9 @@ if [ "$doUninstall" == true ]; then
rm -rf ~/.steam/steam/controller_base/templates/cemu_controller_config.vdf
rm -rf ~/.steam/steam/controller_base/templates/citra_controller_config.vdf
rm -rf ~/.steam/steam/controller_base/templates/pcsx2_controller_config.vdf
rm -rf ~/.steam/steam/controller_base/templates/duckstation_controller_config.vdf
rm -rf ~/emudeck &>> /dev/null
rm -rf ~/Desktop/EmuDeckCHD.desktop &>> /dev/null
rm -rf ~/Desktop/EmuDeckCHD.desktop &>> /dev/null
rm -rf ~/Desktop/EmuDeckUninstall.desktop &>> /dev/null
rm -rf ~/Desktop/EmuDeck.desktop &>> /dev/null
rm -rf ~/Desktop/EmuDeckSD.desktop &>> /dev/null