Merge pull request #257 from icenine451/cooker-0.6.2b-icenine451

Cooker 0.6.2b icenine451
This commit is contained in:
XargonWan 2023-03-09 13:55:23 +01:00 committed by GitHub
commit 34dd0117df
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 889 additions and 493 deletions

View file

@ -38,7 +38,7 @@ EnableWideScreenPatches = false
EnableNoInterlacingPatches = false
EnableRecordingTools = true
EnableGameFixes = true
SaveStateOnShutdown = false
SaveStateOnShutdown = true
EnableDiscordPresence = false
InhibitScreensaver = true
ConsoleToStdio = false

View file

@ -324,7 +324,7 @@ Paths\gamedirs\3\deep_scan=false
Paths\gamedirs\3\deep_scan\default=true
Paths\gamedirs\3\expanded=true
Paths\gamedirs\3\expanded\default=true
Paths\gamedirs\3\path=/run/user/1000/doc/a3fd0df5/n3ds
Paths\gamedirs\3\path=/home/deck/retrodeck/roms/n3ds
Paths\gamedirs\size=3
Paths\language=en
Paths\language\default=false

View file

@ -0,0 +1,12 @@
version=
rdhome=/home/deck/retrodeck
roms_folder=/home/deck/retrodeck/roms
saves_folder=/home/deck/retrodeck/saves
states_folder=/home/deck/retrodeck/states
bios_folder=/home/deck/retrodeck/bios
media_folder=/home/deck/retrodeck/downloaded_media
themes_folder=/home/deck/retrodeck/themes
logs_folder=/home/deck/retrodeck/.logs
sdcard=/run/media/mmcblk0p1
power_user=false

View file

@ -43,7 +43,7 @@ FastmemMode = true
[GPU]
Renderer = Vulkan
ResolutionScale = 1
ResolutionScale = 3
Multisamples = 1
UseDebugDevice = false
UseSoftwareRendererForReadbacks = false
@ -127,21 +127,27 @@ PatchFastBoot = false
[Controller1]
Type = DigitalController
ButtonUp = Keyboard/W
ButtonDown = Keyboard/S
ButtonLeft = Keyboard/A
ButtonRight = Keyboard/D
ButtonSelect = Keyboard/Backspace
ButtonStart = Keyboard/Return
ButtonTriangle = Keyboard/Keypad+8
ButtonCross = Keyboard/Keypad+2
ButtonSquare = Keyboard/Keypad+4
ButtonCircle = Keyboard/Keypad+6
ButtonL1 = Keyboard/Q
ButtonL2 = Keyboard/1
ButtonR1 = Keyboard/E
ButtonR2 = Keyboard/3
Type = AnalogController
ButtonUp = Controller0/Button11
ButtonDown = Controller0/Button12
ButtonLeft = Controller0/Button13
ButtonRight = Controller0/Button14
ButtonSelect = Controller0/Button4
ButtonStart = Controller0/Button6
ButtonTriangle = Controller0/Button3
ButtonCross = Controller0/Button0
ButtonCircle = Controller0/Button1
ButtonSquare = Controller0/Button2
ButtonL1 = Controller0/Button9
ButtonL2 = Controller0/+Axis4
ButtonR1 = Controller0/Button10
ButtonR2 = Controller0/+Axis5
ButtonL3 = Controller0/Button7
ButtonR3 = Controller0/Button8
AxisLeftX = Controller0/Axis0
AxisLeftY = Controller0/Axis1
AxisRightX = Controller0/Axis2
AxisRightY = Controller0/Axis3
[Controller2]
@ -176,6 +182,9 @@ Type = None
Card1Type = PerGameTitle
Card2Type = None
UsePlaylistTitle = true
Card1Path = /var/data/duckstation/memcards/shared_card_1.mcd
Card2Path = /var/data/duckstation/memcards/shared_card_2.mcd
Directory = /var/data/duckstation/memcards
[ControllerPorts]
@ -211,11 +220,7 @@ GPUMaxRunAhead = 128
[Hotkeys]
FastForward = Keyboard/Tab
TogglePause = Keyboard/Space
ToggleFullscreen = Keyboard/Alt+Return
Screenshot = Keyboard/F10
OpenQuickMenu = Keyboard/Escape
PowerOff = Keyboard/R
[Cheevos]
@ -226,5 +231,9 @@ UseFirstDiscFromPlaylist = true
[UI]
MainWindowGeometry = AdnQywADAAAAAADrAAAAEQAABAoAAALpAAAA6wAAAC4AAAQKAAAC6QAAAAAAAAAABQAAAADrAAAALgAABAoAAALp
MainWindowGeometry = AdnQywADAAAAAAAAAAAAAAAAAx8AAALYAAAAAAAAAB0AAAMfAAAC2AAAAAAAAAAABQAAAAAAAAAAHQAAAx8AAALY
MainWindowState = AAAA/wAAAAD9AAAAAAAAAyAAAAI9AAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAEAAAAOAHQAbwBvAGwAQgBhAHIBAAAAAP////8AAAAAAAAAAA==
[GameList]
RecursivePaths = /home/deck/retrodeck/roms/psx

View file

@ -33,6 +33,7 @@ WiiKeyboard = False
WiiSDCard = True
WiiSDCardAllowWrites = True
WiiSDCardEnableFolderSync = False
GFXBackend = Vulkan
[NetPlay]
TraversalChoice = direct
[General]
@ -45,8 +46,9 @@ ISOPaths = 1
[Display]
DisableScreenSaver = True
KeepWindowOnTop = False
Fullscreen = True
[Interface]
ConfirmStop = True
ConfirmStop = False
LanguageCode =
OnScreenDisplayMessages = True
PauseOnFocusLost = False
@ -59,6 +61,7 @@ CursorVisibility = 2
[DSP]
Backend = No Audio Output
EnableJIT = False
DSPThread = True
[GBA]
BIOS = /var/data/primehack/GBA/gba_bios.bin
Rom1 =

View file

@ -1,32 +1,37 @@
[GCPad1]
Device = SDL/0/Microsoft X-Box 360 pad 0
Buttons/A = `Button 0`
Buttons/A = `Full Axis 5+` | `Button 0`
Buttons/B = `Button 1`
Buttons/X = `Button 2`
Buttons/Y = `Button 3`
Buttons/Z = `Button 6`
Buttons/Start = `Button 7`
Main Stick/Up = `Axis 4-`
Main Stick/Down = `Axis 4+`
Main Stick/Left = `Axis 3-`
Main Stick/Right = `Axis 3+`
Main Stick/Dead Zone = 10.0
Main Stick/Up = `Axis 1-`
Main Stick/Down = `Axis 1+`
Main Stick/Left = `Axis 0-`
Main Stick/Right = `Axis 0+`
Main Stick/Modifier/Range = 50.0
Main Stick/Calibration = 100.00 141.42 100.00 141.42 100.00 141.42 100.00 141.42
C-Stick/Up = `Axis 1-`
C-Stick/Down = `Axis 1+`
C-Stick/Left = `Axis 0-`
C-Stick/Right = `Axis 0+`
C-Stick/Up = `Button 5` & `Hat 0 N`
C-Stick/Down = `Button 5` & `Hat 0 S`
C-Stick/Left = `Button 5` & `Hat 0 W`
C-Stick/Right = `Button 5` & `Hat 0 E`
C-Stick/Modifier/Range = 50.0
C-Stick/Calibration = 100.00 141.42 100.00 141.42 100.00 141.42 100.00 141.42
Triggers/L = `Button 4`
D-Pad/Up = `Hat 0 N`
D-Pad/Down = `Hat 0 S`
D-Pad/Left = `Hat 0 W`
D-Pad/Right = `Hat 0 E`
Camera Control/Modifier/Range = 50.0
Triggers/L = `Full Axis 2+`
Triggers/L-Analog = `Full Axis 2+`
Triggers/R-Analog = `Full Axis 5+`
Triggers/R = `Button 5`
D-Pad/Up = !`Button 5` & `Hat 0 N`
D-Pad/Down = !`Button 5` & `Hat 0 S`
D-Pad/Left = !`Button 5` & `Hat 0 W`
D-Pad/Right = !`Button 5` & `Hat 0 E`
Camera Control/Dead Zone = 10.0
Camera Control/Up = `Axis 4-`
Camera Control/Down = `Axis 4+`
Camera Control/Left = `Axis 3-`
Camera Control/Right = `Axis 3+`
Camera Control/Modifier/Range = 50.0
PrimeHack/Mode = 1
[GCPad2]
Device = XInput2/0/Virtual core pointer
Main Stick/Modifier/Range = 50.0

View file

@ -0,0 +1,25 @@
[Enhancements]
ArbitraryMipmapDetection = True
DisableCopyFilter = True
ForceTrueColor = True
[Hacks]
BBoxEnable = False
DeferEFBCopies = True
EFBEmulateFormatChanges = False
EFBScaledCopy = True
EFBToTextureEnable = True
ImmediateXFBEnable = True
SkipDuplicateXFBs = True
XFBToTextureEnable = True
[PrimeHack Misc]
Lock Camera in Motion Puzzles = True
ReduceBloom = True
ToggleArmRePosition = True
[Settings]
AspectRatio = 3
BackendMultithreading = True
DumpBaseTextures = True
DumpMipTextures = True
FastDepthCalc = True
InternalResolution = 2
SaveTextureCacheToState = True

View file

@ -0,0 +1,3 @@
[Hotkeys]
Device = SDL/0/Microsoft X-Box 360 pad 0
General/Stop = `Button 6`&`Button 7`

View file

@ -0,0 +1,34 @@
[Profile]
Device = SDL/0/Microsoft X-Box 360 pad 0
Buttons/A = `Full Axis 5+` | `Button 1`
Buttons/B = `Button 0`
Buttons/X = `Button 3`
Buttons/Y = `Button 2`
Buttons/Z = `Button 6`
Buttons/Start = `Button 7`
Main Stick/Dead Zone = 10.0
Main Stick/Up = `Axis 1-`
Main Stick/Down = `Axis 1+`
Main Stick/Left = `Axis 0-`
Main Stick/Right = `Axis 0+`
Main Stick/Modifier/Range = 50.0
Main Stick/Calibration = 100.00 141.42 100.00 141.42 100.00 141.42 100.00 141.42
C-Stick/Up = `Button 5` & `Hat 0 N`
C-Stick/Down = `Button 5` & `Hat 0 S`
C-Stick/Left = `Button 5` & `Hat 0 W`
C-Stick/Right = `Button 5` & `Hat 0 E`
C-Stick/Modifier/Range = 50.0
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/L-Analog = `Full Axis 2+`
D-Pad/Up = !`Button 5` & `Hat 0 N`
D-Pad/Down = !`Button 5` & `Hat 0 S`
D-Pad/Left = !`Button 5` & `Hat 0 W`
D-Pad/Right = !`Button 5` & `Hat 0 E`
Camera Control/Dead Zone = 10.0
Camera Control/Up = `Axis 4-`
Camera Control/Down = `Axis 4+`
Camera Control/Left = `Axis 3-`
Camera Control/Right = `Axis 3+`
Camera Control/Modifier/Range = 50.0
PrimeHack/Mode = 1

View file

@ -0,0 +1,34 @@
[Profile]
Device = SDL/0/Microsoft X-Box 360 pad 0
Buttons/A = `Full Axis 5+` | `Button 0`
Buttons/B = `Button 1`
Buttons/X = `Button 2`
Buttons/Y = `Button 3`
Buttons/Z = `Button 6`
Buttons/Start = `Button 7`
Main Stick/Dead Zone = 10.0
Main Stick/Up = `Axis 1-`
Main Stick/Down = `Axis 1+`
Main Stick/Left = `Axis 0-`
Main Stick/Right = `Axis 0+`
Main Stick/Modifier/Range = 50.0
Main Stick/Calibration = 100.00 141.42 100.00 141.42 100.00 141.42 100.00 141.42
C-Stick/Up = `Button 5` & `Hat 0 N`
C-Stick/Down = `Button 5` & `Hat 0 S`
C-Stick/Left = `Button 5` & `Hat 0 W`
C-Stick/Right = `Button 5` & `Hat 0 E`
C-Stick/Modifier/Range = 50.0
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/L-Analog = `Full Axis 2+`
D-Pad/Up = !`Button 5` & `Hat 0 N`
D-Pad/Down = !`Button 5` & `Hat 0 S`
D-Pad/Left = !`Button 5` & `Hat 0 W`
D-Pad/Right = !`Button 5` & `Hat 0 E`
Camera Control/Dead Zone = 10.0
Camera Control/Up = `Axis 4-`
Camera Control/Down = `Axis 4+`
Camera Control/Left = `Axis 3-`
Camera Control/Right = `Axis 3+`
Camera Control/Modifier/Range = 50.0
PrimeHack/Mode = 1

View file

@ -1,29 +0,0 @@
[Profile]
Device = SDL/0/Microsoft X-Box 360 pad 0
Buttons/A = `Button 0`
Buttons/B = `Button 1`
Buttons/X = `Button 2`
Buttons/Y = `Button 3`
Buttons/Z = `Button 6`
Buttons/Start = `Button 7`
Main Stick/Up = `Axis 4-`
Main Stick/Down = `Axis 4+`
Main Stick/Left = `Axis 3-`
Main Stick/Right = `Axis 3+`
Main Stick/Modifier/Range = 50.0
Main Stick/Calibration = 100.00 141.42 100.00 141.42 100.00 141.42 100.00 141.42
C-Stick/Up = `Axis 1-`
C-Stick/Down = `Axis 1+`
C-Stick/Left = `Axis 0-`
C-Stick/Right = `Axis 0+`
C-Stick/Modifier/Range = 50.0
C-Stick/Calibration = 100.00 141.42 100.00 141.42 100.00 141.42 100.00 141.42
Triggers/L = `Button 4`
Triggers/R = `Button 5`
Triggers/L-Analog = `Full Axis 2+`
Triggers/R-Analog = `Full Axis 5+`
D-Pad/Up = `Hat 0 N`
D-Pad/Down = `Hat 0 S`
D-Pad/Left = `Hat 0 W`
D-Pad/Right = `Hat 0 E`
Camera Control/Modifier/Range = 50.0

View file

@ -0,0 +1,3 @@
[Profile]
Device = SDL/0/Microsoft X-Box 360 pad 0
General/Stop = `Button 6`&`Button 7`

View file

@ -0,0 +1,51 @@
[Profile]
Device = SDL/0/Microsoft X-Box 360 pad 0
Buttons/A = `Full Axis 5+` | `Button 1`
Buttons/B = `Button 0`
Buttons/1 = `Button 7`
Buttons/2 = `Button 6`
Buttons/- = `Button 4`
Buttons/+ = `Button 5`
Buttons/Down = `Button 3`
D-Pad/Down = `Button 3`
Tilt/Modifier/Range = 50.0
IMUIR/Enabled = False
Extension = Nunchuk
Nunchuk/Buttons/C = `Button 4`
Nunchuk/Buttons/Z = `Full Axis 2+`
Nunchuk/Stick/Dead Zone = 15.0
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 141.42 100.00 141.42 100.00 141.42 100.00 141.42
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
Rumble/Motor = Weak
PrimeHack/Beam 1 = `Button 5` & `Hat 0 N`
PrimeHack/Beam 2 = `Button 5` & `Hat 0 S`
PrimeHack/Beam 3 = `Button 5` & `Hat 0 W`
PrimeHack/Beam 4 = `Button 5` & `Hat 0 E`
PrimeHack/Visor 1 = !`Button 5` & `Hat 0 N`
PrimeHack/Visor 2 = !`Button 5` & `Hat 0 S`
PrimeHack/Visor 3 = !`Button 5` & `Hat 0 W`
PrimeHack/Visor 4 = !`Button 5` & `Hat 0 E`
PrimeHack/AltProfile = Disabled
PrimeHack/Control Reticle When Locked-On = True
Camera Control/Dead Zone = 15.0
Camera Control/Up = `Axis 4-`
Camera Control/Down = `Axis 4+`
Camera Control/Left = `Axis 3-`
Camera Control/Right = `Axis 3+`
Camera Control/Modifier/Range = 50.0
PrimeHack/Mode = 1
PrimeHack/Tap Grapple Repeatedly To Pull = True
PrimeHack/Spring Ball = `Button 10`
PrimeHack/Grapple Lasso = `Button 2`

View file

@ -0,0 +1,51 @@
[Profile]
Device = SDL/0/Microsoft X-Box 360 pad 0
Buttons/A = `Full Axis 5+` | `Button 0`
Buttons/B = `Button 1`
Buttons/1 = `Button 7`
Buttons/2 = `Button 6`
Buttons/- = `Button 4`
Buttons/+ = `Button 5`
Buttons/Down = `Button 3`
D-Pad/Down = `Button 3`
Tilt/Modifier/Range = 50.0
IMUIR/Enabled = False
Extension = Nunchuk
Nunchuk/Buttons/C = `Button 4`
Nunchuk/Buttons/Z = `Full Axis 2+`
Nunchuk/Stick/Dead Zone = 15.0
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 141.42 100.00 141.42 100.00 141.42 100.00 141.42
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
Rumble/Motor = Weak
PrimeHack/Beam 1 = `Button 5` & `Hat 0 N`
PrimeHack/Beam 2 = `Button 5` & `Hat 0 S`
PrimeHack/Beam 3 = `Button 5` & `Hat 0 W`
PrimeHack/Beam 4 = `Button 5` & `Hat 0 E`
PrimeHack/Visor 1 = !`Button 5` & `Hat 0 N`
PrimeHack/Visor 2 = !`Button 5` & `Hat 0 S`
PrimeHack/Visor 3 = !`Button 5` & `Hat 0 W`
PrimeHack/Visor 4 = !`Button 5` & `Hat 0 E`
PrimeHack/AltProfile = Disabled
PrimeHack/Control Reticle When Locked-On = True
Camera Control/Dead Zone = 15.0
Camera Control/Up = `Axis 4-`
Camera Control/Down = `Axis 4+`
Camera Control/Left = `Axis 3-`
Camera Control/Right = `Axis 3+`
Camera Control/Modifier/Range = 50.0
PrimeHack/Mode = 1
PrimeHack/Tap Grapple Repeatedly To Pull = True
PrimeHack/Spring Ball = `Button 10`
PrimeHack/Grapple Lasso = `Button 2`

View file

@ -39,8 +39,8 @@ floating=false
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\0\x5\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31)
[mainwindow]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\x1f\0\0\x2\xcc\0\0\0\0\0\0\0\0\0\0\x3\x1f\0\0\x2\xcc\0\0\0\0\0\0\0\0\x5\0\0\0\0\0\0\0\0\0\0\0\x3\x1f\0\0\x2\xcc)
state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x1\0\0\0\0\0\0\x1\x8f\0\0\x2\x80\xfc\x2\0\0\0\x1\xfc\0\0\0t\0\0\x2\x80\0\0\0\0\0\xff\xff\xff\xfa\xff\xff\xff\xff\x2\0\0\0\n\xfb\0\0\0\x6\0l\0o\0g\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x88\0\xff\xff\xff\xfb\0\0\0\x12\0l\0o\0g\0\x63\0o\0n\0\x66\0i\0g\0\0\0\0\0\xff\xff\xff\xff\0\0\x1\xc3\0\xff\xff\xff\xfb\0\0\0\b\0\x63\0o\0\x64\0\x65\0\0\0\0\0\xff\xff\xff\xff\0\0\x2\x2\0\xff\xff\xff\xfb\0\0\0\x12\0r\0\x65\0g\0i\0s\0t\0\x65\0r\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0]\0\xff\xff\xff\xfb\0\0\0\xe\0t\0h\0r\0\x65\0\x61\0\x64\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\x2\x14\0\xff\xff\xff\xfb\0\0\0\n\0w\0\x61\0t\0\x63\0h\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x84\0\xff\xff\xff\xfb\0\0\0\x16\0\x62\0r\0\x65\0\x61\0k\0p\0o\0i\0n\0t\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x84\0\xff\xff\xff\xfb\0\0\0\f\0m\0\x65\0m\0o\0r\0y\0\0\0\0\0\xff\xff\xff\xff\0\0\0]\0\xff\xff\xff\xfb\0\0\0\xe\0n\0\x65\0t\0w\0o\0r\0k\0\0\0\0\0\xff\xff\xff\xff\0\0\x2\x1d\0\xff\xff\xff\xfb\0\0\0\x12\0j\0i\0t\0w\0i\0\x64\0g\0\x65\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xc4\0\xff\xff\xff\0\0\x3 \0\0\x2w\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x1\0\0\0\x2\0\0\0\x1\0\0\0\xe\0t\0o\0o\0l\0\x62\0\x61\0r\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\x7f\0\0\x1\xdf\0\0\0\0\0\0\0\0\0\0\x2\x7f\0\0\x1\xdf\0\0\0\0\0\0\0\0\x5\0\0\0\0\0\0\0\0\0\0\0\x2\x7f\0\0\x1\xdf)
state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x1\0\0\0\0\0\0\x1\x8f\0\0\x2\x80\xfc\x2\0\0\0\x1\xfc\0\0\0t\0\0\x2\x80\0\0\0\0\0\xff\xff\xff\xfa\xff\xff\xff\xff\x2\0\0\0\n\xfb\0\0\0\x6\0l\0o\0g\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x88\0\xff\xff\xff\xfb\0\0\0\x12\0l\0o\0g\0\x63\0o\0n\0\x66\0i\0g\0\0\0\0\0\xff\xff\xff\xff\0\0\x1\xc3\0\xff\xff\xff\xfb\0\0\0\b\0\x63\0o\0\x64\0\x65\0\0\0\0\0\xff\xff\xff\xff\0\0\x2\x2\0\xff\xff\xff\xfb\0\0\0\x12\0r\0\x65\0g\0i\0s\0t\0\x65\0r\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0]\0\xff\xff\xff\xfb\0\0\0\xe\0t\0h\0r\0\x65\0\x61\0\x64\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\x2\x14\0\xff\xff\xff\xfb\0\0\0\n\0w\0\x61\0t\0\x63\0h\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x84\0\xff\xff\xff\xfb\0\0\0\x16\0\x62\0r\0\x65\0\x61\0k\0p\0o\0i\0n\0t\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x84\0\xff\xff\xff\xfb\0\0\0\f\0m\0\x65\0m\0o\0r\0y\0\0\0\0\0\xff\xff\xff\xff\0\0\0]\0\xff\xff\xff\xfb\0\0\0\xe\0n\0\x65\0t\0w\0o\0r\0k\0\0\0\0\0\xff\xff\xff\xff\0\0\x2\x1d\0\xff\xff\xff\xfb\0\0\0\x12\0j\0i\0t\0w\0i\0\x64\0g\0\x65\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xc4\0\xff\xff\xff\0\0\x2\x80\0\0\x1\x8a\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x1\0\0\0\x2\0\0\0\x1\0\0\0\xe\0t\0o\0o\0l\0\x62\0\x61\0r\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
[memorywidget]
addrspace_auxiliary=false
@ -69,10 +69,10 @@ floating=false
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\0\x5\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31)
[renderwidget]
geometry=@ByteArray()
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\x7f\0\0\x1\xdf\0\0\0\0\0\0\0\0\0\0\x2\x7f\0\0\x1\xdf\0\0\0\0\0\0\0\0\x5\0\0\0\0\0\0\0\0\0\0\0\x2\x7f\0\0\x1\xdf)
[tableheader]
state=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x2\x1\0\0\0\0\0\0\0\0\0\0\0\xe(?\0\0\0\b\0\0\0\t\0\0\0\x64\0\0\0\b\0\0\0\x64\0\0\0\v\0\0\0\x64\0\0\0\n\0\0\0\x64\0\0\0\r\0\0\0\x64\0\0\0\f\0\0\0\x64\0\0\0\x3\0\0\0\x64\0\0\0\x5\0\0\0\x46\0\0\x3\x13\0\0\0\xe\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\0\0\0&\0\0\0\x84\0\0\0\0\0\0\0\xe\0\0\0&\0\0\0\x1\0\0\0\x2\0\0\0\x66\0\0\0\x1\0\0\0\x2\0\0\x1\x6\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x1\x6\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0&\0\0\0\x1\0\0\0\x2\0\0\0U\0\0\0\x1\0\0\0\x2\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\0)
state=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x2\x1\0\0\0\0\0\0\0\0\0\0\0\xe(?\0\0\0\b\0\0\0\f\0\0\0\x64\0\0\0\r\0\0\0\x64\0\0\0\n\0\0\0\x64\0\0\0\v\0\0\0\x64\0\0\0\b\0\0\0\x64\0\0\0\t\0\0\0\x64\0\0\0\x5\0\0\0\x46\0\0\0\x3\0\0\0\x64\0\0\x2s\0\0\0\xe\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\0\0\0&\0\0\0\x84\0\0\0\0\0\0\0\xe\0\0\0&\0\0\0\x1\0\0\0\x2\0\0\0\x66\0\0\0\x1\0\0\0\x2\0\0\0\xb6\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\xb6\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0&\0\0\0\x1\0\0\0\x2\0\0\0U\0\0\0\x1\0\0\0\x2\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\0)
[threadwidget]
floating=false

View file

@ -1,24 +1,26 @@
[Wiimote1]
Device = XInput2/0/Virtual core pointer
Buttons/A = `Click 1` | RETURN
Buttons/B = space
Buttons/1 = Tab
Buttons/2 = `grave`
Buttons/- = E
Buttons/+ = R
Device = SDL/0/Microsoft X-Box 360 pad 0
Buttons/A = `Full Axis 5+` | `Button 0`
Buttons/B = `Button 1`
Buttons/1 = `Button 7`
Buttons/2 = `Button 6`
Buttons/- = `Button 4`
Buttons/+ = `Button 5`
Buttons/Down = `Button 3`
D-Pad/Down = `Button 3`
Tilt/Modifier/Range = 50.0
IMUIR/Enabled = False
Extension = Nunchuk
Nunchuk/Buttons/C = Ctrl
Nunchuk/Buttons/Z = `Click 3`
Nunchuk/Stick/Up = W | UP
Nunchuk/Stick/Down = S | DOWN
Nunchuk/Stick/Left = A | LEFT
Nunchuk/Stick/Right = D | RIGHT
Nunchuk/Buttons/C = `Button 4`
Nunchuk/Buttons/Z = `Full Axis 2+`
Nunchuk/Stick/Dead Zone = 15.0
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 141.42 100.00 141.42 100.00 141.42 100.00 141.42
Nunchuk/Tilt/Modifier/Range = 50.0
Nunchuk/Shake/Y = LSHIFT & (`Axis Y-` | `Axis Y+` | `Axis X-` | `Axis X+`)
Classic/Left Stick/Modifier/Range = 50.0
Classic/Right Stick/Modifier/Range = 50.0
Guitar/Stick/Modifier/Range = 50.0
@ -26,23 +28,27 @@ 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/Down = F
PrimeHack/Beam 1 = `1` & !E
PrimeHack/Beam 2 = `2` & !E
PrimeHack/Beam 3 = `3` & !E
PrimeHack/Beam 4 = `4` & !E
PrimeHack/Next Beam = !E & `Axis Z+`
PrimeHack/Previous Beam = !E & `Axis Z-`
PrimeHack/Visor 1 = E & (!`1` & !`2` & !`3`)
PrimeHack/Visor 2 = E & `1`
PrimeHack/Visor 3 = E & `2`
PrimeHack/Visor 4 = E & `3`
PrimeHack/Next Visor = E & `Axis Z+`
PrimeHack/Previous Visor = E & `Axis Z-`
Rumble/Motor = Weak
PrimeHack/Beam 1 = `Button 5` & `Hat 0 N`
PrimeHack/Beam 2 = `Button 5` & `Hat 0 S`
PrimeHack/Beam 3 = `Button 5` & `Hat 0 W`
PrimeHack/Beam 4 = `Button 5` & `Hat 0 E`
PrimeHack/Visor 1 = !`Button 5` & `Hat 0 N`
PrimeHack/Visor 2 = !`Button 5` & `Hat 0 S`
PrimeHack/Visor 3 = !`Button 5` & `Hat 0 W`
PrimeHack/Visor 4 = !`Button 5` & `Hat 0 E`
PrimeHack/AltProfile = Disabled
PrimeHack/Control Reticle When Locked-On = True
Camera Control/Dead Zone = 15.0
Camera Control/Up = `Axis 4-`
Camera Control/Down = `Axis 4+`
Camera Control/Left = `Axis 3-`
Camera Control/Right = `Axis 3+`
Camera Control/Modifier/Range = 50.0
PrimeHack/Spring Ball = Alt
PrimeHack/Grapple Lasso = Shift
PrimeHack/Mode = 1
PrimeHack/Tap Grapple Repeatedly To Pull = True
PrimeHack/Spring Ball = `Button 10`
PrimeHack/Grapple Lasso = `Button 2`
[Wiimote2]
Device = XInput2/0/Virtual core pointer
Tilt/Modifier/Range = 50.0

View file

@ -8,16 +8,16 @@
# FUNCTION SECTION
#=================
browse() {
directory_browse() {
# This function browses for a directory and returns the path chosen
# USAGE: path_to_be_browsed_for=$(browse $action_text)
# USAGE: path_to_be_browsed_for=$(directory_browse $action_text)
path_selected=false
local path_selected=false
while [ $path_selected == false ]
do
target="$(zenity --file-selection --title="Choose $1" --directory)"
if [ $? == 0 ] #yes
local target="$(zenity --file-selection --title="Choose $1" --directory)"
if [ ! -z $target ] #yes
then
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --cancel-label="No" --ok-label "Yes" \
--text="Directory $target chosen, is this correct?"
@ -29,7 +29,37 @@ browse() {
fi
else
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --cancel-label="No" --ok-label "Yes" \
--text="No directory selected. Do you want to exit?"
--text="No directory selected. Do you want to exit the selection process?"
if [ $? == 0 ]
then
break
fi
fi
done
}
file_browse() {
# This function browses for a file and returns the path chosen
# USAGE: file_to_be_browsed_for=$(file_browse $action_text)
local file_selected=false
while [ $file_selected == false ]
do
local target="$(zenity --file-selection --title="Choose $1")"
if [ ! -z $target ] #yes
then
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --cancel-label="No" --ok-label "Yes" \
--text="File $target chosen, is this correct?"
if [ $? == 0 ]
then
file_selected=true
echo $target
break
fi
else
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --cancel-label="No" --ok-label "Yes" \
--text="No file selected. Do you want to exit the selection process?"
if [ $? == 0 ]
then
break
@ -86,6 +116,64 @@ move() {
fi
}
compress_to_chd () {
# Function for compressing one or more files to .chd format
# USAGE: compress_to_chd $full_path_to_input_file $full_path_to_output_file
echo "Compressing file $1 to $2.chd"
/app/bin/chdman createcd -i $1 -o $2.chd
}
validate_for_chd () {
# Function for validating chd compression candidates, and compresses if validation passes. Supports .cue, .iso and .gdi formats ONLY
# USAGE: validate_for_chd $input_file
local file=$1
current_run_log_file="chd_compression_"$(date +"%Y_%m_%d_%I_%M_%p").log""
echo "Validating file:" $file > "$logs_folder/$current_run_log_file"
if [[ "$file" == *".cue" ]] || [[ "$file" == *".gdi" ]] || [[ "$file" == *".iso" ]]; then
echo ".cue/.iso/.gdi file detected" >> $logs_folder/$current_run_log_file
local file_path=$(dirname $(realpath $file))
local file_base_name=$(basename $file)
local file_name=${file_base_name%.*}
echo "File base path:" $file_path >> "$logs_folder/$current_run_log_file"
echo "File base name:" $file_name >> "$logs_folder/$current_run_log_file"
if [[ "$file" == *".cue" ]]; then # Validate .cue file
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" $file)
local cue_validated="false"
for line in $cue_bin_files
do
if [[ -f "$file_path/$line" ]]; then
echo ".bin file found at $file_path/$line" >> "$logs_folder/$current_run_log_file"
cue_validated="true"
else
echo ".bin file NOT found at $file_path/$line" >> "$logs_folder/$current_run_log_file"
echo ".cue file could not be validated. Please verify your .cue file contains the correct corresponding .bin file information and retry." >> "$logs_folder/$current_run_log_file"
cue_validated="false"
break
fi
done
if [[ $cue_validated == "true" ]]; then
echo $cue_validated
fi
else
echo $cue_validated
fi
else
echo "File type not recognized. Supported file types are .cue, .gdi and .iso" >> "$logs_folder/$current_run_log_file"
fi
}
desktop_mode_warning() {
# This function is a generic warning for issues that happen when running in desktop mode.
# Running in desktop mode can be verified with the following command: if [[ $XDG_CURRENT_DESKTOP == "KDE" ]]; then
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Desktop Mode Warning" \
--text="You appear to be running RetroDECK in the Steam Deck's Desktop mode!\n\nSome functions of RetroDECK may not work properly in Desktop mode, such as the Steam Deck's normal controls.\n\nRetroDECK is best enjoyed in Game mode!"
}
set_setting_value() {
# Function for editing settings
# USAGE: set_setting_value $setting_file "$setting_name" "$new_setting_value" $system $section_name(optional)
@ -282,8 +370,8 @@ enable_file() {
mv $(realpath $1.disabled) $(realpath $(echo $1 | sed -e 's/\.disabled//'))
}
generate_patch() {
# generate_patch $original_file $modified_file $patch_file $system
generate_single_patch() {
# generate_single_patch $original_file $modified_file $patch_file $system
rm $3 # Remove old patch file (maybe change this to create a backup instead?)
@ -382,50 +470,106 @@ generate_patch() {
done < $2
}
deploy_patch() {
deploy_single_patch() {
# This function will take an "original" file and a patch file and generate a ready to use modified file
# USAGE: deploy_patch $original_file $patch_file $output_file
# USAGE: deploy_single_patch $original_file $patch_file $output_file
cp -fv $1 $3 # Create a copy of the original file to be patched
while IFS="^" read -r action current_section setting_name setting_value system_name
do
case $action in
case $action in
"disable_file" )
disable_file $setting_name
disable_file $setting_name
;;
"enable_file" )
enable_file $setting_name
enable_file $setting_name
;;
"add_setting" )
add_setting $3 "$setting_name" $system_name $current_section
add_setting $3 "$setting_name" $system_name $current_section
;;
"disable_setting" )
disable_setting $3 "$setting_name" $system_name $current_section
disable_setting $3 "$setting_name" $system_name $current_section
;;
"enable_setting" )
enable_setting $3 "$setting_name" $system_name $current_section
enable_setting $3 "$setting_name" $system_name $current_section
;;
"change" )
set_setting_value $3 "$setting_name" "$setting_value" $system_name $current_section
;;
set_setting_value $3 "$setting_name" "$setting_value" $system_name $current_section
;;
* )
echo "Config file malformed"
echo "Config file malformed"
;;
esac
esac
done < $2
}
deploy_multi_patch() {
# This function will take a single "batch" patch file and run all patches listed in it, across multiple config files
# USAGE: deploy_multi_patch $patch_file
# Patch file format should be as follows, with optional entries in (). Optional settings can be left empty, but must still have ^ dividers:
# $action^($current_section)^$setting_name^$setting_value^$system_name^($config file)
while IFS="^" read -r action current_section setting_name setting_value system_name config_file
do
case $action in
"disable_file" )
disable_file $config_file
;;
"enable_file" )
enable_file $config_file
;;
"add_setting" )
add_setting $config_file "$setting_name" $system_name $current_section
;;
"disable_setting" )
disable_setting $config_file "$setting_name" $system_name $current_section
;;
"enable_setting" )
enable_setting $config_file "$setting_name" $system_name $current_section
;;
"change" )
set_setting_value $config_file "$setting_name" "$setting_value" $system_name $current_section
;;
* )
echo "Config file malformed"
;;
esac
done < $1
}
update_rd_conf() {
# This function will import a default retrodeck.cfg file and update it with any current settings. This will allow us to expand the file over time while retaining current user settings.
# USAGE: update_rd_conf
mv -f $rd_conf $rd_conf_backup # Backup config file before update
generate_single_patch $rd_defaults $rd_conf_backup $rd_update_patch retrodeck
sed -i '/change^^version/d' $rd_update_patch # Remove version line from temporary patch file
deploy_single_patch $rd_defaults $rd_update_patch $rd_conf
rm -f $rd_update_patch # Cleanup temporary patch file
source $rd_conf # Load new config file variables
}
conf_write() {
# writes the variables in the retrodeck config file
@ -476,6 +620,11 @@ conf_write() {
sed -i "s%themes_folder=.*%themes_folder=$themes_folder%" "$rd_conf"
fi
if [ ! -z "$logs_folder" ]
then
sed -i "s%logs_folder=.*%logs_folder=$logs_folder%" "$rd_conf"
fi
if [ ! -z "$sdcard" ]
then
sed -i "s%sdcard=.*%sdcard=$sdcard%" "$rd_conf"
@ -549,6 +698,8 @@ yuzu_init() {
dir_prep "$rdhome/saves/switch/yuzu/sdmc" "/var/data/yuzu/sdmc"
# configuring Yuzu
dir_prep "$rdhome/.logs/yuzu" "/var/data/yuzu/log"
# removing config directory to wipe legacy files
rm -rf /var/config/yuzu
mkdir -pv /var/config/yuzu/
cp -fvr $emuconfigs/yuzu/* /var/config/yuzu/
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/yuzu/qt-config.ini
@ -559,6 +710,8 @@ dolphin_init() {
echo "----------------------"
echo "Initializing DOLPHIN"
echo "----------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/dolphin-emu
mkdir -pv /var/config/dolphin-emu/
cp -fvr "$emuconfigs/dolphin/"* /var/config/dolphin-emu/
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/dolphin-emu/Dolphin.ini
@ -575,6 +728,8 @@ primehack_init() {
echo "----------------------"
echo "Initializing Primehack"
echo "----------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/primehack
mkdir -pv /var/config/primehack/
cp -fvr "$emuconfigs/primehack/"* /var/config/primehack/
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/primehack/Dolphin.ini
@ -591,6 +746,8 @@ pcsx2_init() {
echo "----------------------"
echo "Initializing PCSX2"
echo "----------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/PCSX2
mkdir -pv "/var/config/PCSX2/inis"
mkdir -pv "$rdhome/saves/ps2/pcsx2/memcards"
mkdir -pv "$rdhome/states/ps2/pcsx2"
@ -607,6 +764,8 @@ melonds_init() {
echo "----------------------"
echo "Initializing MELONDS"
echo "----------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/melonDS
mkdir -pv /var/config/melonDS/
mkdir -pv "$rdhome/saves/nds/melonds"
mkdir -pv "$rdhome/states/nds/melonds"
@ -620,6 +779,8 @@ citra_init() {
echo "------------------------"
echo "Initializing CITRA"
echo "------------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/citra-emu
mkdir -pv /var/config/citra-emu/
mkdir -pv "$rdhome/saves/n3ds/citra/nand/"
mkdir -pv "$rdhome/saves/n3ds/citra/sdmc/"
@ -636,6 +797,8 @@ rpcs3_init() {
echo "------------------------"
echo "Initializing RPCS3"
echo "------------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/rpcs3
mkdir -pv /var/config/rpcs3/
cp -fvr $emuconfigs/rpcs3/* /var/config/rpcs3/
sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /var/config/rpcs3/vfs.yml
@ -646,6 +809,8 @@ xemu_init() {
echo "Initializing XEMU"
echo "------------------------"
mkdir -pv $rdhome/saves/xbox/xemu/
# removing config directory to wipe legacy files
rm -rf /var/config/xemu
mkdir -pv /var/data/xemu/
cp -fv $emuconfigs/xemu.toml /var/data/xemu/xemu.toml
sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /var/data/xemu/xemu.toml
@ -662,6 +827,8 @@ ppssppsdl_init() {
echo "------------------------"
echo "Initializing PPSSPPSDL"
echo "------------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/ppsspp
mkdir -p /var/config/ppsspp/PSP/SYSTEM/
cp -fv $emuconfigs/ppssppsdl/* /var/config/ppsspp/PSP/SYSTEM/
sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /var/config/ppsspp/PSP/SYSTEM/ppsspp.ini
@ -671,6 +838,10 @@ duckstation_init() {
echo "------------------------"
echo "Initializing DUCKSTATION"
echo "------------------------"
dir_prep "$rdhome/saves/duckstation" "/var/data/duckstation/memcards" # This was not previously included, so performing first for save data safety.
dir_prep "$rdhome/states/duckstation" "/var/data/duckstation/savestates" # This was not previously included, so performing first for state data safety.
# removing config directory to wipe legacy files
rm -rf /var/config/duckstation
mkdir -p /var/data/duckstation/
cp -fv $emuconfigs/duckstation/* /var/data/duckstation
sed -i 's#/home/deck/retrodeck/bios#'$rdhome/bios'#g' /var/data/duckstation/settings.ini
@ -680,6 +851,8 @@ ryujinx_init() {
echo "------------------------"
echo "Initializing RYUJINX"
echo "------------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/Ryujinx
mkdir -p /var/config/Ryujinx/system
cp -fv $emuconfigs/ryujinx/* /var/config/Ryujinx
sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /var/config/Ryujinx/Config.json
@ -706,6 +879,9 @@ standalones_init() {
}
ra_init() {
# removing config directory to wipe legacy files
rm -rf /var/config/retroarch
mkdir -p /var/config/retroarch
dir_prep "$rdhome/bios" "/var/config/retroarch/system"
dir_prep "$rdhome/.logs/retroarch" "/var/config/retroarch/logs"
mkdir -pv /var/config/retroarch/shaders/
@ -753,6 +929,52 @@ ra_init() {
rm -rfv $rdhome/bios/MSX
}
cli_emulator_reset() {
# This function will reset one or more emulators from the command line arguments.
# USAGE: cli_emulator_reset $emulator
case $1 in
"retroarch" )
ra_init
;;
"citra" )
citra_init
;;
"dolphin" )
dolphin_init
;;
"duckstation" )
duckstation_init
;;
"melonds" )
melonds_init
;;
"pcsx2" )
pcsx2_init
;;
"ppsspp" )
ppssppsdl_init
;;
"primehack" )
primehack_init
;;
"rpcs3" )
rpcs3_init
;;
"xemu" )
xemu_init
;;
"yuzu" )
yuzu_init
;;
"all-emulators" )
ra_init
standalones_init
;;
esac
}
tools_init() {
rm -rfv /var/config/retrodeck/tools/
mkdir -pv /var/config/retrodeck/tools/
@ -838,7 +1060,26 @@ create_lock() {
conf_write
}
easter_eggs() {
today=$(date +"%0m%0d") # Read the current date in a format that can be calculated in ranges
# Set Easter Egg date or ranges here, in mmdd format
if [[ today -eq "0401" ]]; then # An example of a one-day easter egg
echo "Today is April Fools Day!"
# cp -fv /var/config/emulationstation/graphics/splash-aprilfools.svg /var/config/emulationstation/graphics/splash.svg
elif [[ today -ge "1001" && today -le "1031" ]]; then # An example of a multi-day easter egg
echo "Today is in the spooky month!"
# cp -fv /var/config/emulationstation/graphics/splash-spookytime.svg /var/config/emulationstation/graphics/splash.svg
else # Revert to standard splash otherwise
echo "Nothing special happening today"
# cp -fv /var/config/emulationstation/graphics/splash-orig.svg /var/config/emulationstation/graphics/splash.svg
fi
}
start_retrodeck() {
echo "Checking to see if today has a surprise..."
easter_eggs
# normal startup
echo "Starting RetroDECK v$version"
emulationstation --home /var/config/emulationstation
@ -849,17 +1090,17 @@ finit_browse() {
path_selected=false
while [ $path_selected == false ]
do
sdcard="$(zenity --file-selection --title="Choose RetroDECK data directory location" --directory)"
if [[ $? == 0 ]]; then
if [[ -w $sdcard ]]; then
local target="$(zenity --file-selection --title="Choose RetroDECK data directory location" --directory)"
if [[ ! -z $target ]]; then
if [[ -w $target ]]; then
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" \
--cancel-label="No" \
--ok-label "Yes" \
--text="Your RetroDECK data folder will be:\n\n$sdcard/retrodeck\n\nis that ok?"
--text="Your RetroDECK data folder will be:\n\n$target/retrodeck\n\nis that ok?"
if [ $? == 0 ] #yes
then
path_selected=true
echo "$sdcard/retrodeck"
echo "$target/retrodeck"
break
else
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --cancel-label="No" --ok-label "Yes" --text="Do you want to quit?"

View file

@ -5,11 +5,15 @@
source /app/libexec/functions.sh
# Static variables
rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path
emuconfigs="/app/retrodeck/emu-configs" # folder with all the default emulator configs
lockfile="/var/config/retrodeck/.lock" # where the lockfile is located
default_sd="/run/media/mmcblk0p1" # Steam Deck SD default path
hard_version="$(cat '/app/retrodeck/version')" # hardcoded version (in the readonly filesystem)
rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path
rd_conf_backup="/var/config/retrodeck/retrodeck.bak" # Backup of RetroDECK config file from update
emuconfigs="/app/retrodeck/emu-configs" # folder with all the default emulator configs
rd_defaults="$emuconfigs/defaults/retrodeck.cfg" # A default RetroDECK config file
rd_update_patch="/var/config/retrodeck/rd_update.patch" # A static location for the temporary patch file used during retrodeck.cfg updates
bios_checklist="/var/config/retrodeck/tools/bios_checklist.cfg" # A config file listing BIOS file information that can be verified
lockfile="/var/config/retrodeck/.lock" # where the lockfile is located
default_sd="/run/media/mmcblk0p1" # Steam Deck SD default path
hard_version="$(cat '/app/retrodeck/version')" # hardcoded version (in the readonly filesystem)
# Config files for emulators with single config files
@ -72,32 +76,19 @@ then
# Check if SD card path has changed from SteamOS update
if [[ ! -d $default_sd && "$(ls -A /run/media/deck/)" ]]; then
configurator_generic_dialog "The SD card was not found in the expected location.\nThis may happen when SteamOS is updated.\n\nPlease browse to the current location of the SD card.\n\nIf you are not using an SD card, please click \"Cancel\"."
default_sd=$(browse "SD Card Location")
default_sd=$(directory_browse "SD Card Location")
fi
rdhome="$HOME/retrodeck" # the retrodeck home, aka ~/retrodeck
roms_folder="$rdhome/roms" # the default roms folder path
saves_folder="$rdhome/saves" # the default saves folder path
states_folder="$rdhome/states" # the default states folder path
bios_folder="$rdhome/bios" # the default bios folder
media_folder="$rdhome/downloaded_media" # the media folder, where all the scraped data is downloaded into
themes_folder="$rdhome/themes" # the themes folder
sdcard="$default_sd" # Steam Deck SD default path
# Writing the variables for the first time
echo '#!/bin/bash' >> $rd_conf
echo "version=$version" >> $rd_conf
echo "rdhome=$rdhome" >> $rd_conf
echo "roms_folder=$roms_folder" >> $rd_conf
echo "saves_folder=$saves_folder" >> $rd_conf
echo "states_folder=$states_folder" >> $rd_conf
echo "bios_folder=$bios_folder" >> $rd_conf
echo "media_folder=$media_folder" >> $rd_conf
echo "themes_folder=$themes_folder" >> $rd_conf
echo "sdcard=$sdcard" >> $rd_conf
cp $rd_defaults $rd_conf # Load default settings
set_setting_value $rd_conf "version" "$version" retrodeck # Set current version for new installs
set_setting_value $rd_conf "sdcard" "$default_sd" retrodeck # Set SD card location if default path has changed
echo "Setting config file permissions"
chmod +rw $rd_conf
echo "RetroDECK config file initialized. Contents:"
echo
cat $rd_conf
source $rd_conf # Load new variables into memory
# If the config file is existing i just read the variables (source it)
else
@ -109,7 +100,7 @@ else
if [[ ! -d $rdhome ]]; then
prev_home_path=$rdhome
configurator_generic_dialog "The RetroDECK data folder was not found in the expected location.\nThis may happen when SteamOS is updated.\n\nPlease browse to the current location of the \"retrodeck\" folder."
new_home_path=$(browse "RetroDECK folder location")
new_home_path=$(directory_browse "RetroDECK folder location")
sed -i 's#'$prev_home_path'#'$new_home_path'#g' $rd_conf
source "$rd_conf"
emulators_post_move

View file

@ -332,7 +332,8 @@ modules:
- rd-submodules/retroarch/libaio/libaio-0.3.112.json
# certificate issue, check libglu module for more info
#- shared-modules/glu/glu-9.json
- rd-submodules/retroarch/libdecor/libdecor-0.1.1.json
# libdecor no longer needed in RetroArch 1.14
#- rd-submodules/retroarch/libdecor/libdecor-0.1.1.json
- name: retroarch-filers-video
subdir: gfx/video_filters
make-install-args:
@ -1048,9 +1049,12 @@ modules:
# These must be put in home folder, managed by retrodeck.sh
- cp es-configs/es_settings.xml ${FLATPAK_DEST}/retrodeck/es_settings.xml
# Logo, res
- rm -f /app/share/emulationstation/resources/graphics/splash.svg
- cp -f res/splash.svg /app/share/emulationstation/resources/graphics/splash.svg
# Logo, res, move graphics directory to mutable space so splash can be changed after build
- mv -f -t /var/config/emulationstation /app/share/emulationstation/resources/graphics
- ln -s /var/config/emulationstation/graphics /app/share/emulationstation/resources/graphics
- cp -f res/extra-splashes/* /var/config/emulationstation/graphics
- cp -f res/splash.svg /var/config/emulationstation/graphics/splash.svg
- cp -f res/splash.svg /var/config/emulationstation/graphics/splash-orig.svg
- cp -f res/icon.svg /app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg
# Tools

View file

@ -179,12 +179,25 @@ post_update() {
fi
fi
# These commands are run every time, for now
# Everything within the following ( <code> ) will happen behind the Zenity dialog. The save migration was a long process so it has its own individual dialogs.
(
ra_init
standalones_init
if [[ $prev_version -le "062" ]]; then
# In version 0.6.2b, the following changes were made that required config file updates/reset:
# - Primehack preconfiguration completely redone. "Stop emulation" hotkey set to Start+Select, Xbox and Nintendo keymap profiles were created, Xbox set as default.
# - Duckstation save and state locations were dir_prep'd to the rdhome/save and /state folders, which was not previously done. Much safer now!
rm -rf /var/config/primehack # Purge old Primehack config files. Saves are safe as they are linked into /var/data/primehack.
primehack_init
dir_prep "$rdhome/saves/duckstation" "/var/data/duckstation/memcards"
dir_prep "$rdhome/states/duckstation" "/var/data/duckstation/savestates"
fi
# The following commands are run every time.
tools_init
update_rd_conf
) |
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \

View file

@ -14,14 +14,14 @@ for i in "$@"; do
flatpak run [FLATPAK-RUN-OPTION] net.retrodeck-retrodeck [ARGUMENTS]
Arguments:
-h, --help Print this help
-v, --version Print RetroDECK version
--info-msg Print paths and config informations
--configure Starts the RetroDECK Configurator
--reset-all Starts the initial RetroDECK installer (backup your data first!)
--reset-ra Resets RetroArch's config to the default values
--reset-sa Reset all standalone emulator configs to the default values
--reset-tools Recreate the tools section
-h, --help Print this help
-v, --version Print RetroDECK version
--info-msg Print paths and config informations
--configurator Starts the RetroDECK Configurator
--compress <file> Compresses target file to .chd format. Supports .cue, .iso and .gdi formats
--reset-emulator <emulator> Reset one or more emulator configs to the default values
--reset-tools Reset the RetroDECK Tools section
--reset-retrodeck Starts the initial RetroDECK installer (backup your data first!)
For flatpak run specific options please run: flatpak run -h
@ -30,43 +30,90 @@ https://retrodeck.net
exit
;;
--version*|-v*)
#conf_init
echo "RetroDECK v$version"
exit
;;
--info-msg*)
#conf_init
echo "RetroDECK v$version"
echo "RetroDECK config file is in: $rd_conf"
echo "Contents:"
cat $rd_conf
exit
;;
--reset-ra*)
ra_init
shift # past argument with no value
--compress*)
read -p "RetroDECK will now attempt to compress your selected game. The original game will still exist and will need to be removed manually after the process completes. Press any key to continue..."
if [[ ! -z $2 ]]; then
if [[ -f $2 ]]; then
current_run_log_file="chd_compression_"$(date +"%Y_%m_%d_%I_%M_%p").log""
if [[ $(validate_for_chd $2) == "true" ]]; then
filename_no_path=$(basename $2)
filename_no_extension=${filename_no_path%.*}
compress_to_chd $(dirname $(realpath $2))/$(basename $2) $(dirname $(realpath $2))/$filename_no_extension
else
printf "An error occured during the compression process. Please see the following log entries for details:\n\n"
cat $logs_folder/$current_run_log_file
fi
else
echo "File not found, please specify the full path to the file to be compressed."
fi
else
echo "Please use this command format \"--compress <cue/gdi/iso file to compress>\""
fi
exit
;;
--reset-sa*)
standalones_init
shift # past argument with no value
--configurator*)
sh /var/config/retrodeck/tools/configurator.sh
exit
;;
--reset-emulator*)
echo "You are about to reset one or more RetroDECK emulators."
echo "Available options are: retroarch citra dolphin duckstation melonds pcsx2 ppsspp primehack rpcs3 xemu yuzu all-emulators"
read -p "Please enter the emulator you would like to reset: " emulator
if [[ "$emulator" =~ ^(retroarch|citra|dolphin|duckstation|melonds|pcsx2|ppsspp|primehack|rpcs3|xemu|yuzu|all-emulators)$ ]]; then
read -p "You are about to reset $emulator to default settings. Press 'y' to continue, 'n' to stop: " response
if [[ $response == [yY] ]]; then
cli_emulator_reset $emulator
read -p "The process has been completed, press any key to start RetroDECK."
shift # Continue launch after previous command is finished
else
read -p "The process has been cancelled, press any key to exit."
exit
fi
else
echo "$emulator is not a valid selection, exiting..."
exit
fi
;;
--reset-tools*)
tools_init
shift # past argument with no value
echo "You are about to reset the RetroDECK tools."
read -p "Press 'y' to continue, 'n' to stop: " response
if [[ $response == [yY] ]]; then
tools_init
read -p "The process has been completed, press any key to start RetroDECK."
shift # Continue launch after previous command is finished
else
read -p "The process has been cancelled, press any key to exit."
exit
fi
;;
--reset-all*)
rm -f "$lockfile"
shift # past argument with no value
;;
--configure*)
sh /var/config/retrodeck/tools/configurator.sh
shift # past argument with no value
--reset-retrodeck*)
echo "You are about to reset RetroDECK completely."
read -p "Press 'y' to continue, 'n' to stop: " response
if [[ $response == [yY] ]]; then
rm -f "$lockfile"
read -p "The process has been completed, press any key to start the initial RetroDECK setup process."
shift # Continue launch after previous command is finished
else
read -p "The process has been cancelled, press any key to exit."
exit
fi
;;
-*|--*)
echo "Unknown option $i"
exit 1
;;
*)
echo "Please specify a valid option. Use -h for more information."
;;
esac
done
@ -88,6 +135,12 @@ else
finit # Executing First/Force init
fi
# Check if running in Desktop mode and warn if true
if [[ $XDG_CURRENT_DESKTOP == "KDE" ]]; then
desktop_mode_warning
fi
# Normal Startup
start_retrodeck

16
tools/bios_checklist.cfg Normal file
View file

@ -0,0 +1,16 @@
scph5500.bin^8dd7d5296a650fac7319bce665a6a53c^PSX^PS1 JP BIOS
scph5501.bin^490f666e1afb15b7362b406ed1cea246^PSX^PS1 US BIOS
scph5502.bin^32736f17079d0b2b7024407c39bd3050^PSX^PS1 EU BIOS
ps2-0200a-20040614.bin^d333558cc14561c1fdc334c75d5f37b7^PS2^PS2 US BIOS
ps2-0200e-20040614.bin^dc752f160044f2ed5fc1f4964db2a095^PS2^PS2 EU BIOS
ps2-0200j-20040614.bin^0eee5d1c779aa50e94edd168b4ebf42e^PS2^PS2 JP BIOS
bios_CD_E.bin^e66fa1dc5820d254611fdcdba0662372^SegaCD^MegaCD EU BIOS
bios_CD_U.bin^854b9150240a198070150e4566ae1290^SegaCD^SegaCD US BIOS
bios_CD_J.bin^278a9397d192149e84e820ac621a8edd^SegaCD^MegaCD JP BIOS
sega_101.bin^85ec9ca47d8f6807718151cbcca8b964^Sega Saturn^Saturn JP BIOS
mpr-17933.bin^3240872c70984b6cbfda1586cab68dbe^Sega Saturn^Saturn US.mdEU BIOS
mpr-18811-mx.ic1^255113ba943c92a54facd25a10fd780c^Sega Saturn^The King of Fighters 95 ROM Cartridge - Required for this game
mpr-19367-mx.ic1^1cd19988d1d72a3e7caa0b73234c96b4^Sega Saturn^Ultraman: Hikari no Kyojin Densetsu ROM Cartridge - Required for this game
bios7.bin^df692a80a5b1bc90728bc3dfc76cd948^Nintendo DS^Used by MelonDS emulator
bios9.bin^a392174eb3e572fed6447e956bde4b25^Nintendo DS^Used by MelonDS emulator
firmware.bin^93276d8629990f50a90950ea083ab348^Nintendo DS^Used by MelonDS emulator

View file

@ -1,18 +0,0 @@
#!/bin/bash
racfg="/var/config/retroarch/retroarch.cfg"
login=$(zenity --forms --title="RetroAchievements Login" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--text="Enter your RetroAchievements Account details.\n\nBe aware that this tool cannot verify your login details.\nFor registration and more info visit\nhttps://retroachievements.org/\n" \
--separator="=SEP=" \
--add-entry="Username" \
--add-password="Password")
arrIN=(${login//=SEP=/ })
user=${arrIN[0]}
pass=${arrIN[1]}
sed -i "s%cheevos_enable =.*%cheevos_enable = \"true\"%" $racfg
sed -i "s%cheevos_username =.*%cheevos_username = \"$user\"%" $racfg
sed -i "s%cheevos_password =.*%cheevos_password = \"$pass\"%" $racfg

View file

@ -2,27 +2,38 @@
# VARIABLES SECTION
#rd_conf="retrodeck.cfg" # uncomment for standalone testing
#source functions.sh # uncomment for standalone testing
source /app/libexec/global.sh # uncomment for flatpak testing
source /app/libexec/functions.sh # uncomment for flatpak testing
source /app/libexec/global.sh
source /app/libexec/functions.sh
# DIALOG SECTION
# Configurator Option Tree
# Welcome
# - Move RetroDECK data directory
# - Migrate everything
# - Change Emulator Options
# - RetroArch
# - Change Rewind Setting
# - RetroAchivement login
# - Login prompt
# - Reset RetroDECK
# - Reset RetroArch
# - Reset Specific Standalone Emulator
# - Move RetroDECK
# - Change RetroArch Options
# - Enable/Disable Rewind Setting
# - RetroAchivement Login
# - Login prompt
# - Change Standalone Emulator Options (Behind one-time power user warning dialog)
# - Launch RetroArch
# - Launch Citra
# - Launch Dolphin
# - Launch Duckstation
# - Launch MelonDS
# - Launch PCSX2
# - Launch PPSSPP
# - Launch Primehack
# - Launch RPCS3
# - Launch XEMU
# - Launch Yuzu
# - Compress Games
# - Manual single-game selection
# - Troubleshooting Tools
# - Multi-file game check
# - Reset
# - Reset Specific Emulator
# - Reset RetroArch
# - Reset Citra
# - Reset Dolphin
# - Reset Duckstation
@ -34,7 +45,7 @@ source /app/libexec/functions.sh # uncomment for flatpak testing
# - Reset Ryujinx
# - Reset XEMU
# - Reset Yuzu
# - Reset All Standalone Emulators
# - Reset All Emulators
# - Reset Tools
# - Reset All
@ -46,39 +57,38 @@ configurator_reset_dialog() {
choice=$(zenity --list --title="RetroDECK Configurator Utility - Reset Options" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--column="Choice" --column="Action" \
"Reset RetroArch" "Reset RetroArch to default settings" \
"Reset Specific Standalone" "Reset only one specific standalone emulator to default settings" \
"Reset All Standalones" "Reset all standalone emulators to default settings" \
"Reset Specific Emulator" "Reset only one specific emulator to default settings" \
"Reset All Emulators" "Reset all emulators to default settings" \
"Reset Tools" "Reset Tools menu entries" \
"Reset All" "Reset RetroDECK to default settings" )
case $choice in
"Reset RetroArch" )
ra_init
configurator_process_complete_dialog "resetting RetroArch"
;;
"Reset Specific Standalone" )
"Reset Specific Emulator" )
emulator_to_reset=$(zenity --list \
--title "RetroDECK Configurator Utility - Reset Specific Standalone Emulator" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--text="Which emulator do you want to reset to default?" \
--hide-header \
--column=emulator \
"Citra" \
"Dolphin" \
"Duckstation" \
"MelonDS" \
"PCSX2" \
"PPSSPP" \
"Primehack" \
"RPCS3" \
"XEMU" \
"Yuzu")
--column="Emulator" --column="Action" \
"RetroArch" "Reset RetroArch to default settings" \
"Citra" "Reset Citra to default settings" \
"Dolphin" "Reset Dolphin to default settings" \
"Duckstation" "Reset Duckstation to default settings" \
"MelonDS" "Reset MelonDS to default settings" \
"PCSX2" "Reset PCSX2 to default settings" \
"PPSSPP" "Reset PPSSPP to default settings" \
"Primehack" "Reset Primehack to default settings" \
"RPCS3" "Reset RPCS3 to default settings" \
"XEMU" "Reset XEMU to default settings" \
"Yuzu" "Reset Yuzu to default settings" )
case $emulator_to_reset in
"RetroArch" )
ra_init
configurator_process_complete_dialog "resetting $emulator_to_reset"
;;
"Citra" )
citra_init
configurator_process_complete_dialog "resetting $emulator_to_reset"
@ -136,9 +146,10 @@ configurator_reset_dialog() {
esac
;;
"Reset All Standalones" )
"Reset All Emulators" )
ra_init
standalones_init
configurator_process_complete_dialog "resetting standalone emulators"
configurator_process_complete_dialog "resetting all emulators"
;;
"Reset Tools" )
@ -150,7 +161,7 @@ configurator_reset_dialog() {
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Configurator Utility - Reset RetroDECK" \
--text="You are resetting RetroDECK to its default state.\n\nAfter the process is complete you will need to exit RetroDECK and run it again."
--text="You are resetting RetroDECK to its default state.\n\nAfter the process is complete you will need to exit RetroDECK and run it again, where you will go through the initial setup process again."
rm -f "$lockfile"
configurator_process_complete_dialog "resetting RetroDECK"
;;
@ -183,20 +194,21 @@ configurator_retroachivement_dialog() {
else
configurator_welcome_dialog
fi
}
configurator_update_dialog() {
configurator_generic_dialog "This feature is not available yet"
configurator_welcome_dialog
configurator_power_user_warning_dialog() {
zenity --title "RetroDECK Configurator Utility - Power User Options" --question --no-wrap --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--text="Making manual changes to an emulators configuration may create serious issues,\nand some settings may be overwitten during RetroDECK updates.\n\nSome standalone emulator functions may not work properly outside of Desktop mode.\n\nPlease continue only if you know what you're doing.\n\nDo you want to continue?\n\nClicking Yes will set you as a Power User and you will not see this dialog again."
if [ $? == 0 ]; then # OK button clicked
power_user="true"
set_setting_value $rd_conf "power_user" "$power_user" retrodeck # Store power user variable for future checks
fi
}
configurator_power_user_changes_dialog() {
zenity --title "RetroDECK Configurator Utility - Power User Options" --question --no-wrap --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--text="Making manual changes to an emulators configuration may create serious issues,\nand some settings may be overwitten during RetroDECK updates.\n\nSome standalone emulator functions may not work properly outside of Desktop mode.\n\nPlease continue only if you know what you're doing.\n\nDo you want to continue?"
if [ $? == 0 ]; then # OK button clicked
if [[ $power_user == "true" ]]; then
emulator=$(zenity --list \
--title "RetroDECK Configurator Utility - Power User Options" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
@ -262,12 +274,17 @@ configurator_power_user_changes_dialog() {
;;
"" ) # No selection made or Back button clicked
configurator_options_dialog
configurator_welcome_dialog
;;
esac
else
configurator_options_dialog
configurator_power_user_warning_dialog
if [[ $power_user == "true" ]]; then
configurator_power_user_changes_dialog
else
configurator_welcome_dialog
fi
fi
}
@ -283,7 +300,7 @@ configurator_retroarch_rewind_dialog() {
set_setting_value $raconf "rewind_enable" "false" retroarch
configurator_process_complete_dialog "disabling Rewind"
else
configurator_options_dialog
configurator_retroarch_options_dialog
fi
else
zenity --question \
@ -296,7 +313,7 @@ configurator_retroarch_rewind_dialog() {
set_setting_value $raconf "rewind_enable" "true" retroarch
configurator_process_complete_dialog "enabling Rewind"
else
configurator_options_dialog
configurator_retroarch_options_dialog
fi
fi
}
@ -305,7 +322,8 @@ configurator_retroarch_options_dialog() {
choice=$(zenity --list --title="RetroDECK Configurator Utility - RetroArch Options" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--column="Choice" --column="Action" \
"Change Rewind Setting" "Enable or disable the Rewind function in RetroArch" )
"Change Rewind Setting" "Enable or disable the Rewind function in RetroArch." \
"Log in to RetroAchivements" "Log into the RetroAchievements service in RetroArch." )
case $choice in
@ -313,6 +331,10 @@ configurator_retroarch_options_dialog() {
configurator_retroarch_rewind_dialog
;;
"Log in to RetroAchivements" )
configurator_retroachivement_dialog
;;
"" ) # No selection made or Back button clicked
configurator_options_dialog
;;
@ -320,21 +342,93 @@ configurator_retroarch_options_dialog() {
esac
}
configurator_options_dialog() {
configurator_compress_single_game_dialog() {
file_to_compress=$(file_browse "Game to compress")
if [[ ! -z $file_to_compress ]]; then
if [[ $(validate_for_chd $file_to_compress) == "true" ]]; then
(
filename_no_path=$(basename $file_to_compress)
filename_no_extension=${filename_no_path%.*}
compress_to_chd $(dirname $(realpath $file_to_compress))/$(basename $file_to_compress) $(dirname $(realpath $file_to_compress))/$filename_no_extension
) |
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Configurator Utility - Compression in Progress" \
--text="Compressing game $filename_no_path, please wait."
else
configurator_generic_dialog "File type not recognized. Supported file types are .cue, .gdi and .iso"
configurator_compress_single_game_dialog
fi
else
configurator_generic_dialog "No file selected, returning to main menu"
configurator_welcome_dialog
fi
}
configurator_compress_games_dialog() {
# This is currently a placeholder for a dialog where you can compress a single game or multiple at once. Currently only the single game option is available, so is launched by default.
configurator_generic_dialog "This utility will compress a single game into .CHD format.\n\nPlease select the game to be compressed in the next dialog: supported file types are .cue, .iso and .gdi\n\nThe original game files will be untouched and will need to be removed manually."
configurator_compress_single_game_dialog
}
configurator_check_multifile_game_structure() {
local folder_games=($(find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3"))
if [[ ${#folder_games[@]} -gt 1 ]]; then
echo "$(find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3")" > $logs_folder/multi_file_games_"$(date +"%Y_%m_%d_%I_%M_%p").log"
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" \
--text="The following games were found to have the incorrect folder structure:\n\n$(find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3")\n\nIncorrect folder structure can result in failure to launch games or saves being in the incorrect location.\n\nPlease see the RetroDECK wiki for more details!\n\nYou can find this list of games in ~/retrodeck/.logs"
else
configurator_generic_dialog "No incorrect multi-file game folder structures found."
fi
configurator_troubleshooting_tools_dialog
}
configurator_check_bios_files() {
bios_checked_list=()
while IFS="^" read -r bios_file bios_hash bios_system bios_desc
do
bios_file_found="No"
bios_hash_matched="No"
if [[ -f "$bios_folder/$bios_file" ]]; then
bios_file_found="Yes"
if [[ $(md5sum "$bios_folder/$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then
bios_hash_matched="Yes"
fi
fi
bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc")
done < $bios_checklist
zenity --list --title="RetroDECK Configurator Utility - Verify BIOS Files" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--column "BIOS File Name" \
--column "System" \
--column "BIOS File Found" \
--column "BIOS Hash Match" \
--column "BIOS File Description" \
"${bios_checked_list[@]}"
configurator_troubleshooting_tools_dialog
}
configurator_troubleshooting_tools_dialog() {
choice=$(zenity --list --title="RetroDECK Configurator Utility - Change Options" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--column="Choice" --column="Action" \
"Change RetroArch Settings" "Change settings specific to RetroArch" \
"Power User Changes" "Make changes directly in an emulator" )
"Multi-file game structure check" "Verify the proper structure of multi-file or multi-disc games" \
"BIOS file check" "Verify the existence and file integrity of common BIOS files" )
case $choice in
"Change RetroArch Settings" )
configurator_retroarch_options_dialog
"Multi-file game structure check" )
configurator_check_multifile_game_structure
;;
"Power User Changes" )
configurator_power_user_changes_dialog
"BIOS file check" )
configurator_check_bios_files
;;
"" ) # No selection made or Back button clicked
@ -433,7 +527,7 @@ configurator_move_dialog() {
"Custom Location" )
configurator_generic_dialog "Select the root folder you would like to store the RetroDECK data folder in.\n\nA new folder \"retrodeck\" will be created in the destination chosen."
custom_dest=$(browse "RetroDECK directory location")
custom_dest=$(directory_browse "RetroDECK directory location")
if [[ ! -w $custom_dest ]]; then
configurator_generic_dialog "The destination was found but is not writable\n\nThis can happen if RetroDECK does not have permission to write to this location.\n\nThis can typically be solved through the utility Flatseal, please make the needed changes and try the moving process again."
configurator_welcome_dialog
@ -484,7 +578,7 @@ configurator_move_dialog() {
esac
else
configurator_generic_dialog "The RetroDECK data folder was not found at the expected location.\n\nThis may have happened if the folder was moved manually.\n\nPlease select the current location of the RetroDECK data folder."
rdhome=$(browse "RetroDECK directory location")
rdhome=$(directory_browse "RetroDECK directory location")
roms_folder="$rdhome/roms"
saves_folder="$rdhome/saves"
states_folder="$rdhome/states"
@ -509,10 +603,12 @@ configurator_welcome_dialog() {
choice=$(zenity --list --title="RetroDECK Configurator Utility" --cancel-label="Quit" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--column="Choice" --column="Action" \
"Move Files" "Move files between internal/SD card or to custom locations" \
"Change Options" "Adjust how RetroDECK behaves" \
"RetroAchivements" "Log in to RetroAchievements" \
"Reset" "Reset parts of RetroDECK" )
"Move Files" "Move files between internal/SD card or to custom locations." \
"Change RetroArch Options" "Change RetroArch presets, log into RetroAchievements etc." \
"Change Standalone Emulator Options" "Run emulators standalone to make advanced config changes." \
"Compress Games" "Compress games to CHD format for systems that support it." \
"Troubleshooting Tools" "Run RetroDECK troubleshooting tools for common issues." \
"Reset" "Reset specific parts or all of RetroDECK." )
case $choice in
@ -521,22 +617,26 @@ configurator_welcome_dialog() {
configurator_move_dialog
;;
"Change Options" )
configurator_options_dialog
"Change RetroArch Options" )
configurator_retroarch_options_dialog
;;
"RetroAchivements" )
configurator_retroachivement_dialog
"Change Standalone Emulator Options" )
configurator_power_user_changes_dialog
;;
"Compress Games" )
configurator_compress_games_dialog
;;
"Troubleshooting Tools" )
configurator_troubleshooting_tools_dialog
;;
"Reset" )
configurator_reset_dialog
;;
"Quit" )
exit 0
;;
esac
}

View file

@ -1,62 +0,0 @@
#!/bin/bash
zenity --title "RetroDECK" --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --text="Doing some changes in the emulator's configuration may create serious issues,\nplease continue only if you know what you're doing.\n\nDo you want to continue?"
if [ $? == 1 ] #no
then
exit 0
fi
emulator="$(zenity --list \
--width=600 \
--height=350 \
--title "RetroDECK" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--text="Which emulator do you want to configure?" \
--hide-header \
--column=emulator \
"RetroArch" \
"Citra" \
"Dolphin" \
"Duckstation" \
"MelonDS" \
"PCSX2-QT" \
"PCSX2-Legacy" \
"PPSSPP" \
"RPCS3" \
"XEMU" \
"Yuzu")"
if [ $emulator == "RetroArch" ]
then
retroarch
elif [ $emulator == "Citra" ]
then
citra-qt
elif [ $emulator == "Dolphin" ]
then
dolphin-emu
elif [ $emulator == "Duckstation" ]
then
duckstation-qt
elif [ $emulator == "MelonDS" ]
then
melonDS
elif [ $emulator == "PCSX2-Legacy" ]
then
pcsx2
elif [ $emulator == "PCSX2-QT" ]
then
pcsx2-qt
elif [ $emulator == "PPSSPP" ]
then
PPSSPPSDL
elif [ $emulator == "RPCS3" ]
then
rpcs3
elif [ $emulator == "Yuzu" ]
then
yuzu
elif [ $emulator == "XEMU" ]
then
xemu
fi

View file

@ -1,32 +0,0 @@
#!/bin/bash
source global.sh
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --cancel-label="Quit" --ok-label "Continue" --text="WARNING: this script is experimental\nplease be sure to backup your data before continuing.\n\nDo you want to continue?"
if [ $? == 1 ] #cancel
then
exit 0
fi
#conf_init
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --cancel-label="Cancel" --ok-label "Browse" --text="The roms folder is now: $roms_folder\nplease select the new location.\nA retrodeck/roms folder will be created starting from the directory that you selected."
if [ $? == 1 ] #cancel
then
exit 0
fi
new_roms_path="$(zenity --file-selection --title="Choose a new roms folder location" --directory)"/retrodeck/roms
zenity --title "RetroDECK" --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --text="Should I move the roms from\n\n$roms_folder\n\nto\n\n$new_roms_path?"
if [ $? == 0 ] #yes
then
mkdir -p $new_roms_path
mv -f $roms_folder $new_roms_path
rm -f /var/config/emulationstation/ROMs
ln -s $new_roms_path /var/config/emulationstation/ROMs
rm -f $roms_folder
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --text="Done\nYour roms are now located in:\n\n$roms_folder\n\nPress OK to continue."
$roms_folder=$new_roms_path # Updating variable
conf_write # Writing variables in the config file (sourced from global.sh)
fi

View file

@ -1,39 +0,0 @@
#!/bin/bash
border="$(zenity --list \
--title "RetroDECK" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--text="Select the borders type" \
--hide-header \
--column=Border \
"None" \
"Light" \
"Dark")"
if [ $border == "None" ]
then
return
elif [ $border == "Light" ]
then
return
elif [ $border == "Dark" ]
then
return
fi
shader="$(zenity --list \
--title "RetroDECK" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--text="Select the shader type" \
--hide-header \
--column=Border \
"None" \
"Retro")"
if [ $shader == "None" ]
then
return
elif [ $shader == "Retro" ]
then
return
fi

View file

@ -1,23 +0,0 @@
#!/bin/bash
racfg="/var/config/retroarch/retroarch.cfg"
zenity --question \
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" \
--text="Do you want to enable the rewind function in RetroArch cores?\n\nNOTE:\nThis may impact on performances expecially on the latest systems."
if [ $? == 0 ] #yes, enable
then
sed -i 's%rewind_enable = .*%rewind_enable = "true"%' $racfg
zenity --info \
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" \
--text="Rewind enabled\!\nYou can check on Libretro docs to see which cores supports this function."
else # no, disable
sed -i 's%rewind_enable = .*%rewind_enable = "false"%' $racfg
zenity --info \
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" \
--text="Rewind disabled."
fi

View file

@ -1,55 +0,0 @@
#!/bin/bash
THIS MUST BE PUT IN RETRODECK.SH
mkdir -p $rdhome/roms/ps3/emudir
#mkdir -p $rdhome/roms/ps3/dump cannot install in nogui
#user must install via emulator
source global.sh
install_ps3_fw(){
# Implement a check to see if the firmware is already installed then call this function
mkdir -p $rdhome/roms/ps3/.emudir
mkdir -p $rdhome/roms/ps3/tmp
chmod 777 $rdhome/roms/ps3/tmp
wget http://dus01.ps3.update.playstation.net/update/ps3/image/us/2022_0510_95307e1b51d3bcc33a274db91488d29f/PS3UPDAT.PUP -P $rdhome/roms/ps3/tmp/
rpcs3 --installfw $rdhome/roms/ps3/tmp/PS3UPDAT.PUP
rm -rf $rdhome/roms/ps3/tmp
}
zenity: "Hey I will destroy everything in $rdhome/roms/ps3/dump"
zenity: this will take a while, have a coffee
# this seems not to be working as rpcs3 doesn't support installation in --no-gui mode
rpcs3 --installpkg $rdhome/roms/ps3/dump/*
for each folder in $rdhome/roms/ps3/emudir/dev_hdd0/game/
gameid=foldername
if gamename.desktop doesnt exist
gamename=we need a file with ID - names
echo in $rdhome/roms/ps3/$gamname.desktop EOF<<
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Name=$gamename
Exec=rpcs3 --no-gui $rdhome/roms/ps3/emudir/dev_hdd0/game/$gameid
Icon=$rdhome/roms/ps3/emudir/dev_hdd0/game/$gameid/ICON0.PNG
EOF
fi
done
rm -rf $rdhome/roms/ps3/dump/*
zenity: done, restart retrodeck please