mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2025-02-16 19:35:39 +00:00
Merge pull request #257 from icenine451/cooker-0.6.2b-icenine451
Cooker 0.6.2b icenine451
This commit is contained in:
commit
34dd0117df
|
@ -38,7 +38,7 @@ EnableWideScreenPatches = false
|
|||
EnableNoInterlacingPatches = false
|
||||
EnableRecordingTools = true
|
||||
EnableGameFixes = true
|
||||
SaveStateOnShutdown = false
|
||||
SaveStateOnShutdown = true
|
||||
EnableDiscordPresence = false
|
||||
InhibitScreensaver = true
|
||||
ConsoleToStdio = false
|
||||
|
|
|
@ -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
|
||||
|
|
12
emu-configs/defaults/retrodeck.cfg
Normal file
12
emu-configs/defaults/retrodeck.cfg
Normal 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
|
|
@ -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
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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
|
||||
|
|
25
emu-configs/primehack/GFX.ini
Normal file
25
emu-configs/primehack/GFX.ini
Normal 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
|
3
emu-configs/primehack/Hotkeys.ini
Normal file
3
emu-configs/primehack/Hotkeys.ini
Normal file
|
@ -0,0 +1,3 @@
|
|||
[Hotkeys]
|
||||
Device = SDL/0/Microsoft X-Box 360 pad 0
|
||||
General/Stop = `Button 6`&`Button 7`
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,3 @@
|
|||
[Profile]
|
||||
Device = SDL/0/Microsoft X-Box 360 pad 0
|
||||
General/Stop = `Button 6`&`Button 7`
|
|
@ -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`
|
|
@ -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`
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
291
functions.sh
291
functions.sh
|
@ -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?"
|
||||
|
|
47
global.sh
47
global.sh
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" \
|
||||
|
|
103
retrodeck.sh
103
retrodeck.sh
|
@ -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
16
tools/bios_checklist.cfg
Normal 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
|
|
@ -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
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in a new issue