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 EnableNoInterlacingPatches = false
EnableRecordingTools = true EnableRecordingTools = true
EnableGameFixes = true EnableGameFixes = true
SaveStateOnShutdown = false SaveStateOnShutdown = true
EnableDiscordPresence = false EnableDiscordPresence = false
InhibitScreensaver = true InhibitScreensaver = true
ConsoleToStdio = false ConsoleToStdio = false

View file

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

View file

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

View file

@ -1,32 +1,37 @@
[GCPad1] [GCPad1]
Device = SDL/0/Microsoft X-Box 360 pad 0 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/B = `Button 1`
Buttons/X = `Button 2` Buttons/X = `Button 2`
Buttons/Y = `Button 3` Buttons/Y = `Button 3`
Buttons/Z = `Button 6` Buttons/Z = `Button 6`
Buttons/Start = `Button 7` Buttons/Start = `Button 7`
Main Stick/Up = `Axis 4-` Main Stick/Dead Zone = 10.0
Main Stick/Down = `Axis 4+` Main Stick/Up = `Axis 1-`
Main Stick/Left = `Axis 3-` Main Stick/Down = `Axis 1+`
Main Stick/Right = `Axis 3+` Main Stick/Left = `Axis 0-`
Main Stick/Right = `Axis 0+`
Main Stick/Modifier/Range = 50.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 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/Up = `Button 5` & `Hat 0 N`
C-Stick/Down = `Axis 1+` C-Stick/Down = `Button 5` & `Hat 0 S`
C-Stick/Left = `Axis 0-` C-Stick/Left = `Button 5` & `Hat 0 W`
C-Stick/Right = `Axis 0+` C-Stick/Right = `Button 5` & `Hat 0 E`
C-Stick/Modifier/Range = 50.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 C-Stick/Calibration = 100.00 141.42 100.00 141.42 100.00 141.42 100.00 141.42
Triggers/L = `Button 4` Triggers/L = `Full Axis 2+`
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-Analog = `Full Axis 2+` Triggers/L-Analog = `Full Axis 2+`
Triggers/R-Analog = `Full Axis 5+` D-Pad/Up = !`Button 5` & `Hat 0 N`
Triggers/R = `Button 5` 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] [GCPad2]
Device = XInput2/0/Virtual core pointer Device = XInput2/0/Virtual core pointer
Main Stick/Modifier/Range = 50.0 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) 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] [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) 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\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) 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] [memorywidget]
addrspace_auxiliary=false 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) 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] [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] [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] [threadwidget]
floating=false floating=false

View file

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

View file

@ -8,16 +8,16 @@
# FUNCTION SECTION # FUNCTION SECTION
#================= #=================
browse() { directory_browse() {
# This function browses for a directory and returns the path chosen # 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 ] while [ $path_selected == false ]
do do
target="$(zenity --file-selection --title="Choose $1" --directory)" local target="$(zenity --file-selection --title="Choose $1" --directory)"
if [ $? == 0 ] #yes if [ ! -z $target ] #yes
then 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" \ 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?" --text="Directory $target chosen, is this correct?"
@ -29,7 +29,37 @@ browse() {
fi fi
else 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" \ 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 ] if [ $? == 0 ]
then then
break break
@ -86,6 +116,64 @@ move() {
fi 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() { set_setting_value() {
# Function for editing settings # Function for editing settings
# USAGE: set_setting_value $setting_file "$setting_name" "$new_setting_value" $system $section_name(optional) # 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//')) mv $(realpath $1.disabled) $(realpath $(echo $1 | sed -e 's/\.disabled//'))
} }
generate_patch() { generate_single_patch() {
# generate_patch $original_file $modified_file $patch_file $system # generate_single_patch $original_file $modified_file $patch_file $system
rm $3 # Remove old patch file (maybe change this to create a backup instead?) rm $3 # Remove old patch file (maybe change this to create a backup instead?)
@ -382,50 +470,106 @@ generate_patch() {
done < $2 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 # 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 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 while IFS="^" read -r action current_section setting_name setting_value system_name
do do
case $action in case $action in
"disable_file" ) "disable_file" )
disable_file $setting_name disable_file $setting_name
;; ;;
"enable_file" ) "enable_file" )
enable_file $setting_name enable_file $setting_name
;; ;;
"add_setting" ) "add_setting" )
add_setting $3 "$setting_name" $system_name $current_section add_setting $3 "$setting_name" $system_name $current_section
;; ;;
"disable_setting" ) "disable_setting" )
disable_setting $3 "$setting_name" $system_name $current_section disable_setting $3 "$setting_name" $system_name $current_section
;; ;;
"enable_setting" ) "enable_setting" )
enable_setting $3 "$setting_name" $system_name $current_section enable_setting $3 "$setting_name" $system_name $current_section
;; ;;
"change" ) "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 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() { conf_write() {
# writes the variables in the retrodeck config file # 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" sed -i "s%themes_folder=.*%themes_folder=$themes_folder%" "$rd_conf"
fi fi
if [ ! -z "$logs_folder" ]
then
sed -i "s%logs_folder=.*%logs_folder=$logs_folder%" "$rd_conf"
fi
if [ ! -z "$sdcard" ] if [ ! -z "$sdcard" ]
then then
sed -i "s%sdcard=.*%sdcard=$sdcard%" "$rd_conf" 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" dir_prep "$rdhome/saves/switch/yuzu/sdmc" "/var/data/yuzu/sdmc"
# configuring Yuzu # configuring Yuzu
dir_prep "$rdhome/.logs/yuzu" "/var/data/yuzu/log" 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/ mkdir -pv /var/config/yuzu/
cp -fvr $emuconfigs/yuzu/* /var/config/yuzu/ cp -fvr $emuconfigs/yuzu/* /var/config/yuzu/
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/yuzu/qt-config.ini sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/yuzu/qt-config.ini
@ -559,6 +710,8 @@ dolphin_init() {
echo "----------------------" echo "----------------------"
echo "Initializing DOLPHIN" echo "Initializing DOLPHIN"
echo "----------------------" echo "----------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/dolphin-emu
mkdir -pv /var/config/dolphin-emu/ mkdir -pv /var/config/dolphin-emu/
cp -fvr "$emuconfigs/dolphin/"* /var/config/dolphin-emu/ cp -fvr "$emuconfigs/dolphin/"* /var/config/dolphin-emu/
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/dolphin-emu/Dolphin.ini sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/dolphin-emu/Dolphin.ini
@ -575,6 +728,8 @@ primehack_init() {
echo "----------------------" echo "----------------------"
echo "Initializing Primehack" echo "Initializing Primehack"
echo "----------------------" echo "----------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/primehack
mkdir -pv /var/config/primehack/ mkdir -pv /var/config/primehack/
cp -fvr "$emuconfigs/primehack/"* /var/config/primehack/ cp -fvr "$emuconfigs/primehack/"* /var/config/primehack/
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/primehack/Dolphin.ini sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/primehack/Dolphin.ini
@ -591,6 +746,8 @@ pcsx2_init() {
echo "----------------------" echo "----------------------"
echo "Initializing PCSX2" echo "Initializing PCSX2"
echo "----------------------" echo "----------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/PCSX2
mkdir -pv "/var/config/PCSX2/inis" mkdir -pv "/var/config/PCSX2/inis"
mkdir -pv "$rdhome/saves/ps2/pcsx2/memcards" mkdir -pv "$rdhome/saves/ps2/pcsx2/memcards"
mkdir -pv "$rdhome/states/ps2/pcsx2" mkdir -pv "$rdhome/states/ps2/pcsx2"
@ -607,6 +764,8 @@ melonds_init() {
echo "----------------------" echo "----------------------"
echo "Initializing MELONDS" echo "Initializing MELONDS"
echo "----------------------" echo "----------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/melonDS
mkdir -pv /var/config/melonDS/ mkdir -pv /var/config/melonDS/
mkdir -pv "$rdhome/saves/nds/melonds" mkdir -pv "$rdhome/saves/nds/melonds"
mkdir -pv "$rdhome/states/nds/melonds" mkdir -pv "$rdhome/states/nds/melonds"
@ -620,6 +779,8 @@ citra_init() {
echo "------------------------" echo "------------------------"
echo "Initializing CITRA" echo "Initializing CITRA"
echo "------------------------" echo "------------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/citra-emu
mkdir -pv /var/config/citra-emu/ mkdir -pv /var/config/citra-emu/
mkdir -pv "$rdhome/saves/n3ds/citra/nand/" mkdir -pv "$rdhome/saves/n3ds/citra/nand/"
mkdir -pv "$rdhome/saves/n3ds/citra/sdmc/" mkdir -pv "$rdhome/saves/n3ds/citra/sdmc/"
@ -636,6 +797,8 @@ rpcs3_init() {
echo "------------------------" echo "------------------------"
echo "Initializing RPCS3" echo "Initializing RPCS3"
echo "------------------------" echo "------------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/rpcs3
mkdir -pv /var/config/rpcs3/ mkdir -pv /var/config/rpcs3/
cp -fvr $emuconfigs/rpcs3/* /var/config/rpcs3/ cp -fvr $emuconfigs/rpcs3/* /var/config/rpcs3/
sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /var/config/rpcs3/vfs.yml sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /var/config/rpcs3/vfs.yml
@ -646,6 +809,8 @@ xemu_init() {
echo "Initializing XEMU" echo "Initializing XEMU"
echo "------------------------" echo "------------------------"
mkdir -pv $rdhome/saves/xbox/xemu/ mkdir -pv $rdhome/saves/xbox/xemu/
# removing config directory to wipe legacy files
rm -rf /var/config/xemu
mkdir -pv /var/data/xemu/ mkdir -pv /var/data/xemu/
cp -fv $emuconfigs/xemu.toml /var/data/xemu/xemu.toml cp -fv $emuconfigs/xemu.toml /var/data/xemu/xemu.toml
sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /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 "------------------------"
echo "Initializing PPSSPPSDL" echo "Initializing PPSSPPSDL"
echo "------------------------" echo "------------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/ppsspp
mkdir -p /var/config/ppsspp/PSP/SYSTEM/ mkdir -p /var/config/ppsspp/PSP/SYSTEM/
cp -fv $emuconfigs/ppssppsdl/* /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 sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /var/config/ppsspp/PSP/SYSTEM/ppsspp.ini
@ -671,6 +838,10 @@ duckstation_init() {
echo "------------------------" echo "------------------------"
echo "Initializing DUCKSTATION" echo "Initializing DUCKSTATION"
echo "------------------------" 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/ mkdir -p /var/data/duckstation/
cp -fv $emuconfigs/duckstation/* /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 sed -i 's#/home/deck/retrodeck/bios#'$rdhome/bios'#g' /var/data/duckstation/settings.ini
@ -680,6 +851,8 @@ ryujinx_init() {
echo "------------------------" echo "------------------------"
echo "Initializing RYUJINX" echo "Initializing RYUJINX"
echo "------------------------" echo "------------------------"
# removing config directory to wipe legacy files
rm -rf /var/config/Ryujinx
mkdir -p /var/config/Ryujinx/system mkdir -p /var/config/Ryujinx/system
cp -fv $emuconfigs/ryujinx/* /var/config/Ryujinx cp -fv $emuconfigs/ryujinx/* /var/config/Ryujinx
sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /var/config/Ryujinx/Config.json sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /var/config/Ryujinx/Config.json
@ -706,6 +879,9 @@ standalones_init() {
} }
ra_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/bios" "/var/config/retroarch/system"
dir_prep "$rdhome/.logs/retroarch" "/var/config/retroarch/logs" dir_prep "$rdhome/.logs/retroarch" "/var/config/retroarch/logs"
mkdir -pv /var/config/retroarch/shaders/ mkdir -pv /var/config/retroarch/shaders/
@ -753,6 +929,52 @@ ra_init() {
rm -rfv $rdhome/bios/MSX 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() { tools_init() {
rm -rfv /var/config/retrodeck/tools/ rm -rfv /var/config/retrodeck/tools/
mkdir -pv /var/config/retrodeck/tools/ mkdir -pv /var/config/retrodeck/tools/
@ -838,7 +1060,26 @@ create_lock() {
conf_write 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() { start_retrodeck() {
echo "Checking to see if today has a surprise..."
easter_eggs
# normal startup # normal startup
echo "Starting RetroDECK v$version" echo "Starting RetroDECK v$version"
emulationstation --home /var/config/emulationstation emulationstation --home /var/config/emulationstation
@ -849,17 +1090,17 @@ finit_browse() {
path_selected=false path_selected=false
while [ $path_selected == false ] while [ $path_selected == false ]
do do
sdcard="$(zenity --file-selection --title="Choose RetroDECK data directory location" --directory)" local target="$(zenity --file-selection --title="Choose RetroDECK data directory location" --directory)"
if [[ $? == 0 ]]; then if [[ ! -z $target ]]; then
if [[ -w $sdcard ]]; then if [[ -w $target ]]; then
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" \ zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" \
--cancel-label="No" \ --cancel-label="No" \
--ok-label "Yes" \ --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 if [ $? == 0 ] #yes
then then
path_selected=true path_selected=true
echo "$sdcard/retrodeck" echo "$target/retrodeck"
break break
else 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?" 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 source /app/libexec/functions.sh
# Static variables # Static variables
rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path
emuconfigs="/app/retrodeck/emu-configs" # folder with all the default emulator configs rd_conf_backup="/var/config/retrodeck/retrodeck.bak" # Backup of RetroDECK config file from update
lockfile="/var/config/retrodeck/.lock" # where the lockfile is located emuconfigs="/app/retrodeck/emu-configs" # folder with all the default emulator configs
default_sd="/run/media/mmcblk0p1" # Steam Deck SD default path rd_defaults="$emuconfigs/defaults/retrodeck.cfg" # A default RetroDECK config file
hard_version="$(cat '/app/retrodeck/version')" # hardcoded version (in the readonly filesystem) 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 # Config files for emulators with single config files
@ -72,32 +76,19 @@ then
# Check if SD card path has changed from SteamOS update # Check if SD card path has changed from SteamOS update
if [[ ! -d $default_sd && "$(ls -A /run/media/deck/)" ]]; then 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\"." 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 fi
rdhome="$HOME/retrodeck" # the retrodeck home, aka ~/retrodeck cp $rd_defaults $rd_conf # Load default settings
roms_folder="$rdhome/roms" # the default roms folder path set_setting_value $rd_conf "version" "$version" retrodeck # Set current version for new installs
saves_folder="$rdhome/saves" # the default saves folder path set_setting_value $rd_conf "sdcard" "$default_sd" retrodeck # Set SD card location if default path has changed
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
echo "Setting config file permissions" echo "Setting config file permissions"
chmod +rw $rd_conf 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) # If the config file is existing i just read the variables (source it)
else else
@ -109,7 +100,7 @@ else
if [[ ! -d $rdhome ]]; then if [[ ! -d $rdhome ]]; then
prev_home_path=$rdhome 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." 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 sed -i 's#'$prev_home_path'#'$new_home_path'#g' $rd_conf
source "$rd_conf" source "$rd_conf"
emulators_post_move emulators_post_move

View file

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

View file

@ -179,12 +179,25 @@ post_update() {
fi fi
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 if [[ $prev_version -le "062" ]]; then
standalones_init # 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 tools_init
update_rd_conf
) | ) |
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \ zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --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] flatpak run [FLATPAK-RUN-OPTION] net.retrodeck-retrodeck [ARGUMENTS]
Arguments: Arguments:
-h, --help Print this help -h, --help Print this help
-v, --version Print RetroDECK version -v, --version Print RetroDECK version
--info-msg Print paths and config informations --info-msg Print paths and config informations
--configure Starts the RetroDECK Configurator --configurator Starts the RetroDECK Configurator
--reset-all Starts the initial RetroDECK installer (backup your data first!) --compress <file> Compresses target file to .chd format. Supports .cue, .iso and .gdi formats
--reset-ra Resets RetroArch's config to the default values --reset-emulator <emulator> Reset one or more emulator configs to the default values
--reset-sa Reset all standalone emulator configs to the default values --reset-tools Reset the RetroDECK Tools section
--reset-tools Recreate the tools section --reset-retrodeck Starts the initial RetroDECK installer (backup your data first!)
For flatpak run specific options please run: flatpak run -h For flatpak run specific options please run: flatpak run -h
@ -30,43 +30,90 @@ https://retrodeck.net
exit exit
;; ;;
--version*|-v*) --version*|-v*)
#conf_init
echo "RetroDECK v$version" echo "RetroDECK v$version"
exit exit
;; ;;
--info-msg*) --info-msg*)
#conf_init
echo "RetroDECK v$version" echo "RetroDECK v$version"
echo "RetroDECK config file is in: $rd_conf" echo "RetroDECK config file is in: $rd_conf"
echo "Contents:" echo "Contents:"
cat $rd_conf cat $rd_conf
exit exit
;; ;;
--reset-ra*) --compress*)
ra_init 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..."
shift # past argument with no value 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*) --configurator*)
standalones_init sh /var/config/retrodeck/tools/configurator.sh
shift # past argument with no value 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*) --reset-tools*)
tools_init echo "You are about to reset the RetroDECK tools."
shift # past argument with no value 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*) --reset-retrodeck*)
rm -f "$lockfile" echo "You are about to reset RetroDECK completely."
shift # past argument with no value read -p "Press 'y' to continue, 'n' to stop: " response
;; if [[ $response == [yY] ]]; then
--configure*) rm -f "$lockfile"
sh /var/config/retrodeck/tools/configurator.sh read -p "The process has been completed, press any key to start the initial RetroDECK setup process."
shift # past argument with no value 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" echo "Unknown option $i"
exit 1 exit 1
;; ;;
*) *)
echo "Please specify a valid option. Use -h for more information."
;; ;;
esac esac
done done
@ -88,6 +135,12 @@ else
finit # Executing First/Force init finit # Executing First/Force init
fi fi
# Check if running in Desktop mode and warn if true
if [[ $XDG_CURRENT_DESKTOP == "KDE" ]]; then
desktop_mode_warning
fi
# Normal Startup # Normal Startup
start_retrodeck 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 # VARIABLES SECTION
#rd_conf="retrodeck.cfg" # uncomment for standalone testing source /app/libexec/global.sh
#source functions.sh # uncomment for standalone testing source /app/libexec/functions.sh
source /app/libexec/global.sh # uncomment for flatpak testing
source /app/libexec/functions.sh # uncomment for flatpak testing
# DIALOG SECTION # DIALOG SECTION
# Configurator Option Tree # Configurator Option Tree
# Welcome # Welcome
# - Move RetroDECK data directory # - Move RetroDECK
# - Migrate everything # - Change RetroArch Options
# - Change Emulator Options # - Enable/Disable Rewind Setting
# - RetroArch # - RetroAchivement Login
# - Change Rewind Setting # - Login prompt
# - RetroAchivement login # - Change Standalone Emulator Options (Behind one-time power user warning dialog)
# - Login prompt # - Launch RetroArch
# - Reset RetroDECK # - Launch Citra
# - Reset RetroArch # - Launch Dolphin
# - Reset Specific Standalone Emulator # - 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 Citra
# - Reset Dolphin # - Reset Dolphin
# - Reset Duckstation # - Reset Duckstation
@ -34,7 +45,7 @@ source /app/libexec/functions.sh # uncomment for flatpak testing
# - Reset Ryujinx # - Reset Ryujinx
# - Reset XEMU # - Reset XEMU
# - Reset Yuzu # - Reset Yuzu
# - Reset All Standalone Emulators # - Reset All Emulators
# - Reset Tools # - Reset Tools
# - Reset All # - Reset All
@ -46,39 +57,38 @@ configurator_reset_dialog() {
choice=$(zenity --list --title="RetroDECK Configurator Utility - Reset Options" --cancel-label="Back" \ 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 \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--column="Choice" --column="Action" \ --column="Choice" --column="Action" \
"Reset RetroArch" "Reset RetroArch to default settings" \ "Reset Specific Emulator" "Reset only one specific emulator to default settings" \
"Reset Specific Standalone" "Reset only one specific standalone emulator to default settings" \ "Reset All Emulators" "Reset all emulators to default settings" \
"Reset All Standalones" "Reset all standalone emulators to default settings" \
"Reset Tools" "Reset Tools menu entries" \ "Reset Tools" "Reset Tools menu entries" \
"Reset All" "Reset RetroDECK to default settings" ) "Reset All" "Reset RetroDECK to default settings" )
case $choice in case $choice in
"Reset RetroArch" ) "Reset Specific Emulator" )
ra_init
configurator_process_complete_dialog "resetting RetroArch"
;;
"Reset Specific Standalone" )
emulator_to_reset=$(zenity --list \ emulator_to_reset=$(zenity --list \
--title "RetroDECK Configurator Utility - Reset Specific Standalone Emulator" --cancel-label="Back" \ --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 \ --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?" \ --text="Which emulator do you want to reset to default?" \
--hide-header \ --column="Emulator" --column="Action" \
--column=emulator \ "RetroArch" "Reset RetroArch to default settings" \
"Citra" \ "Citra" "Reset Citra to default settings" \
"Dolphin" \ "Dolphin" "Reset Dolphin to default settings" \
"Duckstation" \ "Duckstation" "Reset Duckstation to default settings" \
"MelonDS" \ "MelonDS" "Reset MelonDS to default settings" \
"PCSX2" \ "PCSX2" "Reset PCSX2 to default settings" \
"PPSSPP" \ "PPSSPP" "Reset PPSSPP to default settings" \
"Primehack" \ "Primehack" "Reset Primehack to default settings" \
"RPCS3" \ "RPCS3" "Reset RPCS3 to default settings" \
"XEMU" \ "XEMU" "Reset XEMU to default settings" \
"Yuzu") "Yuzu" "Reset Yuzu to default settings" )
case $emulator_to_reset in case $emulator_to_reset in
"RetroArch" )
ra_init
configurator_process_complete_dialog "resetting $emulator_to_reset"
;;
"Citra" ) "Citra" )
citra_init citra_init
configurator_process_complete_dialog "resetting $emulator_to_reset" configurator_process_complete_dialog "resetting $emulator_to_reset"
@ -136,9 +146,10 @@ configurator_reset_dialog() {
esac esac
;; ;;
"Reset All Standalones" ) "Reset All Emulators" )
ra_init
standalones_init standalones_init
configurator_process_complete_dialog "resetting standalone emulators" configurator_process_complete_dialog "resetting all emulators"
;; ;;
"Reset Tools" ) "Reset Tools" )
@ -150,7 +161,7 @@ configurator_reset_dialog() {
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \ zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Configurator Utility - Reset RetroDECK" \ --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" rm -f "$lockfile"
configurator_process_complete_dialog "resetting RetroDECK" configurator_process_complete_dialog "resetting RetroDECK"
;; ;;
@ -183,20 +194,21 @@ configurator_retroachivement_dialog() {
else else
configurator_welcome_dialog configurator_welcome_dialog
fi fi
} }
configurator_update_dialog() { configurator_power_user_warning_dialog() {
configurator_generic_dialog "This feature is not available yet" zenity --title "RetroDECK Configurator Utility - Power User Options" --question --no-wrap --cancel-label="Back" \
configurator_welcome_dialog --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() { configurator_power_user_changes_dialog() {
zenity --title "RetroDECK Configurator Utility - Power User Options" --question --no-wrap --cancel-label="Back" \ if [[ $power_user == "true" ]]; then
--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
emulator=$(zenity --list \ emulator=$(zenity --list \
--title "RetroDECK Configurator Utility - Power User Options" --cancel-label="Back" \ --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 \ --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 "" ) # No selection made or Back button clicked
configurator_options_dialog configurator_welcome_dialog
;; ;;
esac esac
else 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 fi
} }
@ -283,7 +300,7 @@ configurator_retroarch_rewind_dialog() {
set_setting_value $raconf "rewind_enable" "false" retroarch set_setting_value $raconf "rewind_enable" "false" retroarch
configurator_process_complete_dialog "disabling Rewind" configurator_process_complete_dialog "disabling Rewind"
else else
configurator_options_dialog configurator_retroarch_options_dialog
fi fi
else else
zenity --question \ zenity --question \
@ -296,7 +313,7 @@ configurator_retroarch_rewind_dialog() {
set_setting_value $raconf "rewind_enable" "true" retroarch set_setting_value $raconf "rewind_enable" "true" retroarch
configurator_process_complete_dialog "enabling Rewind" configurator_process_complete_dialog "enabling Rewind"
else else
configurator_options_dialog configurator_retroarch_options_dialog
fi fi
fi fi
} }
@ -305,7 +322,8 @@ configurator_retroarch_options_dialog() {
choice=$(zenity --list --title="RetroDECK Configurator Utility - RetroArch Options" --cancel-label="Back" \ 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 \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--column="Choice" --column="Action" \ --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 case $choice in
@ -313,6 +331,10 @@ configurator_retroarch_options_dialog() {
configurator_retroarch_rewind_dialog configurator_retroarch_rewind_dialog
;; ;;
"Log in to RetroAchivements" )
configurator_retroachivement_dialog
;;
"" ) # No selection made or Back button clicked "" ) # No selection made or Back button clicked
configurator_options_dialog configurator_options_dialog
;; ;;
@ -320,21 +342,93 @@ configurator_retroarch_options_dialog() {
esac 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" \ 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 \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--column="Choice" --column="Action" \ --column="Choice" --column="Action" \
"Change RetroArch Settings" "Change settings specific to RetroArch" \ "Multi-file game structure check" "Verify the proper structure of multi-file or multi-disc games" \
"Power User Changes" "Make changes directly in an emulator" ) "BIOS file check" "Verify the existence and file integrity of common BIOS files" )
case $choice in case $choice in
"Change RetroArch Settings" ) "Multi-file game structure check" )
configurator_retroarch_options_dialog configurator_check_multifile_game_structure
;; ;;
"Power User Changes" ) "BIOS file check" )
configurator_power_user_changes_dialog configurator_check_bios_files
;; ;;
"" ) # No selection made or Back button clicked "" ) # No selection made or Back button clicked
@ -433,7 +527,7 @@ configurator_move_dialog() {
"Custom Location" ) "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." 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 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_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 configurator_welcome_dialog
@ -484,7 +578,7 @@ configurator_move_dialog() {
esac esac
else 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." 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" roms_folder="$rdhome/roms"
saves_folder="$rdhome/saves" saves_folder="$rdhome/saves"
states_folder="$rdhome/states" states_folder="$rdhome/states"
@ -509,10 +603,12 @@ configurator_welcome_dialog() {
choice=$(zenity --list --title="RetroDECK Configurator Utility" --cancel-label="Quit" \ 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 \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--column="Choice" --column="Action" \ --column="Choice" --column="Action" \
"Move Files" "Move files between internal/SD card or to custom locations" \ "Move Files" "Move files between internal/SD card or to custom locations." \
"Change Options" "Adjust how RetroDECK behaves" \ "Change RetroArch Options" "Change RetroArch presets, log into RetroAchievements etc." \
"RetroAchivements" "Log in to RetroAchievements" \ "Change Standalone Emulator Options" "Run emulators standalone to make advanced config changes." \
"Reset" "Reset parts of RetroDECK" ) "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 case $choice in
@ -521,22 +617,26 @@ configurator_welcome_dialog() {
configurator_move_dialog configurator_move_dialog
;; ;;
"Change Options" ) "Change RetroArch Options" )
configurator_options_dialog configurator_retroarch_options_dialog
;; ;;
"RetroAchivements" ) "Change Standalone Emulator Options" )
configurator_retroachivement_dialog configurator_power_user_changes_dialog
;;
"Compress Games" )
configurator_compress_games_dialog
;;
"Troubleshooting Tools" )
configurator_troubleshooting_tools_dialog
;; ;;
"Reset" ) "Reset" )
configurator_reset_dialog configurator_reset_dialog
;; ;;
"Quit" )
exit 0
;;
esac 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