mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2024-12-01 18:15:41 +00:00
RetroDECK v0.6.3b
This commit is contained in:
commit
e2f75251de
4
.github/workflows/cooker-selfhosted.yml
vendored
4
.github/workflows/cooker-selfhosted.yml
vendored
|
@ -17,6 +17,7 @@ jobs:
|
||||||
runs-on: self-hosted
|
runs-on: self-hosted
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
|
# Circumventing this bug: https://github.com/flatpak/flatpak-builder/issues/317
|
||||||
- name: Remove stuck mounts
|
- name: Remove stuck mounts
|
||||||
run: sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/*
|
run: sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/*
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
@ -80,7 +81,8 @@ jobs:
|
||||||
artifacts: "RetroDECK.flatpak,RetroDECK-Artifact.tar.gz"
|
artifacts: "RetroDECK.flatpak,RetroDECK-Artifact.tar.gz"
|
||||||
allowUpdates: true
|
allowUpdates: true
|
||||||
#prerelease: true
|
#prerelease: true
|
||||||
draft: false
|
makeLatest: true
|
||||||
|
#draft: true
|
||||||
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
|
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
|
||||||
repo: RetroDECK-cooker
|
repo: RetroDECK-cooker
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
4
.github/workflows/main-selfhosted.yml
vendored
4
.github/workflows/main-selfhosted.yml
vendored
|
@ -17,6 +17,7 @@ jobs:
|
||||||
runs-on: self-hosted
|
runs-on: self-hosted
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
|
# Circumventing this bug: https://github.com/flatpak/flatpak-builder/issues/317
|
||||||
- name: Remove stuck mounts
|
- name: Remove stuck mounts
|
||||||
run: sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/*
|
run: sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/*
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
@ -81,7 +82,8 @@ jobs:
|
||||||
bodyFile: "body.md"
|
bodyFile: "body.md"
|
||||||
artifacts: "RetroDECK.flatpak,RetroDECK-Artifact.tar.gz"
|
artifacts: "RetroDECK.flatpak,RetroDECK-Artifact.tar.gz"
|
||||||
allowUpdates: true
|
allowUpdates: true
|
||||||
prerelease: true
|
#prerelease: true
|
||||||
|
makeLatest: true
|
||||||
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
|
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
|
||||||
repo: RetroDECK
|
repo: RetroDECK
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
|
@ -14,11 +14,11 @@ Theme = darkfusion
|
||||||
|
|
||||||
|
|
||||||
[Folders]
|
[Folders]
|
||||||
Bios = ~/retrodeck/roms/bios
|
Bios = RETRODECKHOMEDIR/roms/bios
|
||||||
Snapshots = ~/retrodeck/screenshots
|
Snapshots = RETRODECKHOMEDIR/screenshots
|
||||||
Savestates = ~/retrodeck/states/ps2/pcsx2
|
Savestates = RETRODECKHOMEDIR/states/ps2/pcsx2
|
||||||
MemoryCards = ~/retrodeck/saves/ps2/memcards
|
MemoryCards = RETRODECKHOMEDIR/saves/ps2/memcards
|
||||||
Logs = ~/retrodeck/.logs
|
Logs = RETRODECKHOMEDIR/.logs
|
||||||
Cheats = /var/config/PCSX2/cheats
|
Cheats = /var/config/PCSX2/cheats
|
||||||
CheatsWS = /var/config/PCSX2/cheats_ws
|
CheatsWS = /var/config/PCSX2/cheats_ws
|
||||||
CheatsNI = cheats_ni
|
CheatsNI = cheats_ni
|
||||||
|
|
|
@ -296,10 +296,10 @@ Multitap2_Slot4_Filename = Mcd-Multitap2-Slot04.ps2
|
||||||
|
|
||||||
|
|
||||||
[Folders]
|
[Folders]
|
||||||
Bios = ~/retrodeck/bios
|
Bios = RETRODECKHOMEDIR/bios
|
||||||
Snapshots = ~/retrodeck/screenshots
|
Snapshots = RETRODECKHOMEDIR/screenshots
|
||||||
SaveStates = ~/retrodeck/states/ps2/pcsx2
|
SaveStates = RETRODECKHOMEDIR/states/ps2/pcsx2
|
||||||
MemoryCards = ~/retrodeck/saves/ps2/pcsx2/memcards
|
MemoryCards = RETRODECKHOMEDIR/saves/ps2/pcsx2/memcards
|
||||||
Logs = logs
|
Logs = logs
|
||||||
Cheats = cheats
|
Cheats = cheats
|
||||||
CheatsWS = cheats_ws
|
CheatsWS = cheats_ws
|
||||||
|
@ -447,4 +447,4 @@ PressureModifier = 0.500000
|
||||||
|
|
||||||
|
|
||||||
[GameList]
|
[GameList]
|
||||||
RecursivePaths = ~/retrodeck/roms/ps2
|
RecursivePaths = RETRODECKHOMEDIR/roms/ps2
|
|
@ -40,11 +40,11 @@ UseDefaultLangs=enabled
|
||||||
UseDefaultCheats=enabled
|
UseDefaultCheats=enabled
|
||||||
UseDefaultCheatsWS=enabled
|
UseDefaultCheatsWS=enabled
|
||||||
UseDefaultTextures=enabled
|
UseDefaultTextures=enabled
|
||||||
Bios=~/retrodeck/roms/bios
|
Bios=RETRODECKHOMEDIR/roms/bios
|
||||||
Snapshots=~/retrodeck/screenshots
|
Snapshots=RETRODECKHOMEDIR/screenshots
|
||||||
Savestates=~/retrodeck/states/ps2/pcsx2
|
Savestates=RETRODECKHOMEDIR/states/ps2/pcsx2
|
||||||
MemoryCards=~/retrodeck/saves/ps2/memcards
|
MemoryCards=RETRODECKHOMEDIR/saves/ps2/memcards
|
||||||
Logs=~/retrodeck/.logs
|
Logs=RETRODECKHOMEDIR/.logs
|
||||||
Langs=/app/share/PCSX2/resources/locale
|
Langs=/app/share/PCSX2/resources/locale
|
||||||
Cheats=/var/config/PCSX2/cheats
|
Cheats=/var/config/PCSX2/cheats
|
||||||
CheatsWS=/var/config/PCSX2/cheats_ws
|
CheatsWS=/var/config/PCSX2/cheats_ws
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
[Audio]
|
[Audio]
|
||||||
|
audio_emulation=0
|
||||||
|
audio_emulation\default=true
|
||||||
enable_audio_stretching=true
|
enable_audio_stretching=true
|
||||||
enable_audio_stretching\default=true
|
enable_audio_stretching\default=true
|
||||||
enable_dsp_lle=false
|
|
||||||
enable_dsp_lle\default=true
|
|
||||||
enable_dsp_lle_multithread=false
|
|
||||||
enable_dsp_lle_multithread\default=true
|
|
||||||
mic_input_device=Default
|
mic_input_device=Default
|
||||||
mic_input_device\default=true
|
mic_input_device\default=true
|
||||||
mic_input_type=0
|
mic_input_type=0
|
||||||
|
@ -39,43 +37,43 @@ camera_outer_right_name\default=true
|
||||||
[Controls]
|
[Controls]
|
||||||
profile=0
|
profile=0
|
||||||
profile\default=true
|
profile\default=true
|
||||||
profiles\1\button_a="button:0,engine:sdl,guid:03000000de280000ff11000001000000,port:0"
|
profiles\1\button_a="button:0,engine:sdl,guid:030079f6de280000ff11000001000000,port:0"
|
||||||
profiles\1\button_a\default=false
|
profiles\1\button_a\default=false
|
||||||
profiles\1\button_b="button:1,engine:sdl,guid:03000000de280000ff11000001000000,port:0"
|
profiles\1\button_b="button:1,engine:sdl,guid:030079f6de280000ff11000001000000,port:0"
|
||||||
profiles\1\button_b\default=false
|
profiles\1\button_b\default=false
|
||||||
profiles\1\button_debug="code:79,engine:keyboard"
|
profiles\1\button_debug="code:79,engine:keyboard"
|
||||||
profiles\1\button_debug\default=true
|
profiles\1\button_debug\default=true
|
||||||
profiles\1\button_down="direction:down,engine:sdl,guid:03000000de280000ff11000001000000,hat:0,port:0"
|
profiles\1\button_down="direction:down,engine:sdl,guid:030079f6de280000ff11000001000000,hat:0,port:0"
|
||||||
profiles\1\button_down\default=false
|
profiles\1\button_down\default=false
|
||||||
profiles\1\button_gpio14="code:80,engine:keyboard"
|
profiles\1\button_gpio14="code:80,engine:keyboard"
|
||||||
profiles\1\button_gpio14\default=true
|
profiles\1\button_gpio14\default=true
|
||||||
profiles\1\button_home="button:8,engine:sdl,guid:03000000de280000ff11000001000000,port:0"
|
profiles\1\button_home="code:66,engine:keyboard"
|
||||||
profiles\1\button_home\default=false
|
profiles\1\button_home\default=true
|
||||||
profiles\1\button_l="button:4,engine:sdl,guid:03000000de280000ff11000001000000,port:0"
|
profiles\1\button_l="button:4,engine:sdl,guid:030079f6de280000ff11000001000000,port:0"
|
||||||
profiles\1\button_l\default=false
|
profiles\1\button_l\default=false
|
||||||
profiles\1\button_left="direction:left,engine:sdl,guid:03000000de280000ff11000001000000,hat:0,port:0"
|
profiles\1\button_left="direction:left,engine:sdl,guid:030079f6de280000ff11000001000000,hat:0,port:0"
|
||||||
profiles\1\button_left\default=false
|
profiles\1\button_left\default=false
|
||||||
profiles\1\button_r="button:5,engine:sdl,guid:03000000de280000ff11000001000000,port:0"
|
profiles\1\button_r="button:5,engine:sdl,guid:030079f6de280000ff11000001000000,port:0"
|
||||||
profiles\1\button_r\default=false
|
profiles\1\button_r\default=false
|
||||||
profiles\1\button_right="direction:right,engine:sdl,guid:03000000de280000ff11000001000000,hat:0,port:0"
|
profiles\1\button_right="direction:right,engine:sdl,guid:030079f6de280000ff11000001000000,hat:0,port:0"
|
||||||
profiles\1\button_right\default=false
|
profiles\1\button_right\default=false
|
||||||
profiles\1\button_select="button:6,engine:sdl,guid:03000000de280000ff11000001000000,port:0"
|
profiles\1\button_select="button:6,engine:sdl,guid:030079f6de280000ff11000001000000,port:0"
|
||||||
profiles\1\button_select\default=false
|
profiles\1\button_select\default=false
|
||||||
profiles\1\button_start="button:7,engine:sdl,guid:03000000de280000ff11000001000000,port:0"
|
profiles\1\button_start="button:7,engine:sdl,guid:030079f6de280000ff11000001000000,port:0"
|
||||||
profiles\1\button_start\default=false
|
profiles\1\button_start\default=false
|
||||||
profiles\1\button_up="direction:up,engine:sdl,guid:03000000de280000ff11000001000000,hat:0,port:0"
|
profiles\1\button_up="direction:up,engine:sdl,guid:030079f6de280000ff11000001000000,hat:0,port:0"
|
||||||
profiles\1\button_up\default=false
|
profiles\1\button_up\default=false
|
||||||
profiles\1\button_x="button:2,engine:sdl,guid:03000000de280000ff11000001000000,port:0"
|
profiles\1\button_x="button:2,engine:sdl,guid:030079f6de280000ff11000001000000,port:0"
|
||||||
profiles\1\button_x\default=false
|
profiles\1\button_x\default=false
|
||||||
profiles\1\button_y="button:3,engine:sdl,guid:03000000de280000ff11000001000000,port:0"
|
profiles\1\button_y="button:3,engine:sdl,guid:030079f6de280000ff11000001000000,port:0"
|
||||||
profiles\1\button_y\default=false
|
profiles\1\button_y\default=false
|
||||||
profiles\1\button_zl="axis:3,direction:-,engine:sdl,guid:03000000de280000ff11000001000000,port:0,threshold:-0.5"
|
profiles\1\button_zl="axis:2,direction:+,engine:sdl,guid:030079f6de280000ff11000001000000,port:0,threshold:0.5"
|
||||||
profiles\1\button_zl\default=false
|
profiles\1\button_zl\default=false
|
||||||
profiles\1\button_zr="axis:5,direction:+,engine:sdl,guid:03000000de280000ff11000001000000,port:0,threshold:0.5"
|
profiles\1\button_zr="axis:5,direction:+,engine:sdl,guid:030079f6de280000ff11000001000000,port:0,threshold:0.5"
|
||||||
profiles\1\button_zr\default=false
|
profiles\1\button_zr\default=false
|
||||||
profiles\1\c_stick="axis_x:3,axis_y:4,deadzone:0.100000,engine:sdl,guid:03000000de280000ff11000001000000,port:0"
|
profiles\1\c_stick="axis_x:3,axis_y:4,deadzone:0.100000,engine:sdl,guid:030079f6de280000ff11000001000000,port:0"
|
||||||
profiles\1\c_stick\default=false
|
profiles\1\c_stick\default=false
|
||||||
profiles\1\circle_pad="axis_x:0,axis_y:1,deadzone:0.100000,engine:sdl,guid:03000000de280000ff11000001000000,port:0"
|
profiles\1\circle_pad="axis_x:0,axis_y:1,deadzone:0.100000,engine:sdl,guid:030079f6de280000ff11000001000000,port:0"
|
||||||
profiles\1\circle_pad\default=false
|
profiles\1\circle_pad\default=false
|
||||||
profiles\1\motion_device="engine:motion_emu,update_period:100,sensitivity:0.01,tilt_clamp:90.0"
|
profiles\1\motion_device="engine:motion_emu,update_period:100,sensitivity:0.01,tilt_clamp:90.0"
|
||||||
profiles\1\motion_device\default=true
|
profiles\1\motion_device\default=true
|
||||||
|
@ -106,10 +104,12 @@ use_cpu_jit=true
|
||||||
use_cpu_jit\default=true
|
use_cpu_jit\default=true
|
||||||
|
|
||||||
[Data%20Storage]
|
[Data%20Storage]
|
||||||
nand_directory=~/retrodeck/saves/n3ds/citra/nand/
|
nand_directory=RETRODECKHOMEDIR/saves/n3ds/citra/nand/
|
||||||
nand_directory\default=false
|
nand_directory\default=false
|
||||||
sdmc_directory=~/retrodeck/saves/n3ds/citra/sdmc/
|
sdmc_directory=RETRODECKHOMEDIR/saves/n3ds/citra/sdmc/
|
||||||
sdmc_directory\default=false
|
sdmc_directory\default=false
|
||||||
|
use_custom_storage=true
|
||||||
|
use_custom_storage\default=false
|
||||||
use_virtual_sd=true
|
use_virtual_sd=true
|
||||||
use_virtual_sd\default=true
|
use_virtual_sd\default=true
|
||||||
|
|
||||||
|
@ -178,6 +178,8 @@ LLE\NWM=false
|
||||||
LLE\NWM\default=true
|
LLE\NWM\default=true
|
||||||
LLE\PDN=false
|
LLE\PDN=false
|
||||||
LLE\PDN\default=true
|
LLE\PDN\default=true
|
||||||
|
LLE\PLGLDR=false
|
||||||
|
LLE\PLGLDR\default=true
|
||||||
LLE\PM=false
|
LLE\PM=false
|
||||||
LLE\PM\default=true
|
LLE\PM\default=true
|
||||||
LLE\PS=false
|
LLE\PS=false
|
||||||
|
@ -194,36 +196,43 @@ LLE\SPI=false
|
||||||
LLE\SPI\default=true
|
LLE\SPI\default=true
|
||||||
LLE\SSL=false
|
LLE\SSL=false
|
||||||
LLE\SSL\default=true
|
LLE\SSL\default=true
|
||||||
gdbstub_port=24689
|
gdbstub_port=@Variant(\0\0\0\x85`q)
|
||||||
gdbstub_port\default=true
|
gdbstub_port\default=true
|
||||||
record_frame_times=false
|
record_frame_times=false
|
||||||
use_gdbstub=false
|
use_gdbstub=false
|
||||||
use_gdbstub\default=true
|
use_gdbstub\default=true
|
||||||
|
|
||||||
[Layout]
|
[Layout]
|
||||||
custom_bottom_bottom=480
|
custom_bottom_bottom=@Variant(\0\0\0\x85\x1\xe0)
|
||||||
custom_bottom_bottom\default=true
|
custom_bottom_bottom\default=true
|
||||||
custom_bottom_left=40
|
custom_bottom_left=@Variant(\0\0\0\x85\0()
|
||||||
custom_bottom_left\default=true
|
custom_bottom_left\default=true
|
||||||
custom_bottom_right=360
|
custom_bottom_right=@Variant(\0\0\0\x85\x1h)
|
||||||
custom_bottom_right\default=true
|
custom_bottom_right\default=true
|
||||||
custom_bottom_top=240
|
custom_bottom_top=@Variant(\0\0\0\x85\0\xf0)
|
||||||
custom_bottom_top\default=true
|
custom_bottom_top\default=true
|
||||||
custom_layout=false
|
custom_layout=false
|
||||||
custom_layout\default=true
|
custom_layout\default=true
|
||||||
custom_top_bottom=240
|
custom_second_layer_opacity=@Variant(\0\0\0\x85\0\x64)
|
||||||
|
custom_second_layer_opacity\default=true
|
||||||
|
custom_top_bottom=@Variant(\0\0\0\x85\0\xf0)
|
||||||
custom_top_bottom\default=true
|
custom_top_bottom\default=true
|
||||||
custom_top_left=0
|
custom_top_left=@Variant(\0\0\0\x85\0\0)
|
||||||
custom_top_left\default=true
|
custom_top_left\default=true
|
||||||
custom_top_right=400
|
custom_top_right=@Variant(\0\0\0\x85\x1\x90)
|
||||||
custom_top_right\default=true
|
custom_top_right\default=true
|
||||||
custom_top_top=0
|
custom_top_top=@Variant(\0\0\0\x85\0\0)
|
||||||
custom_top_top\default=true
|
custom_top_top\default=true
|
||||||
factor_3d=0
|
factor_3d=0
|
||||||
factor_3d\default=true
|
factor_3d\default=true
|
||||||
filter_mode=true
|
filter_mode=true
|
||||||
filter_mode\default=true
|
filter_mode\default=true
|
||||||
|
large_screen_proportion=@Variant(\0\0\0\x87@\x80\0\0)
|
||||||
|
large_screen_proportion\default=true
|
||||||
layout_option=0
|
layout_option=0
|
||||||
|
layout_option\default=true
|
||||||
|
mono_render_option=0
|
||||||
|
mono_render_option\default=true
|
||||||
pp_shader_name=none (builtin)
|
pp_shader_name=none (builtin)
|
||||||
pp_shader_name\default=true
|
pp_shader_name\default=true
|
||||||
render_3d=0
|
render_3d=0
|
||||||
|
@ -244,20 +253,16 @@ bg_green=0
|
||||||
bg_green\default=true
|
bg_green\default=true
|
||||||
bg_red=0
|
bg_red=0
|
||||||
bg_red\default=true
|
bg_red\default=true
|
||||||
frame_limit=100
|
frame_limit=@Variant(\0\0\0\x85\0\x64)
|
||||||
frame_limit\default=true
|
frame_limit\default=true
|
||||||
frame_limit_alternate=200
|
resolution_factor=@Variant(\0\0\0\x85\0\x1)
|
||||||
frame_limit_alternate\default=true
|
|
||||||
resolution_factor=1
|
|
||||||
resolution_factor\default=true
|
resolution_factor\default=true
|
||||||
shaders_accurate_mul=true
|
shaders_accurate_mul=true
|
||||||
shaders_accurate_mul\default=true
|
shaders_accurate_mul\default=true
|
||||||
texture_filter_name=none
|
texture_filter_name=Linear (Default)
|
||||||
texture_filter_name\default=true
|
texture_filter_name\default=false
|
||||||
use_disk_shader_cache=true
|
use_disk_shader_cache=true
|
||||||
use_disk_shader_cache\default=true
|
use_disk_shader_cache\default=true
|
||||||
use_frame_limit_alternate=false
|
|
||||||
use_frame_limit_alternate\default=true
|
|
||||||
use_hw_renderer=true
|
use_hw_renderer=true
|
||||||
use_hw_renderer\default=true
|
use_hw_renderer\default=true
|
||||||
use_hw_shader=true
|
use_hw_shader=true
|
||||||
|
@ -268,12 +273,18 @@ use_vsync_new=true
|
||||||
use_vsync_new\default=true
|
use_vsync_new\default=true
|
||||||
|
|
||||||
[System]
|
[System]
|
||||||
|
allow_plugin_loader=true
|
||||||
|
allow_plugin_loader\default=true
|
||||||
init_clock=0
|
init_clock=0
|
||||||
init_clock\default=true
|
init_clock\default=true
|
||||||
init_time=946681277
|
init_time=@Variant(\0\0\0\x84\0\0\0\0\x38m5\xbd)
|
||||||
init_time\default=true
|
init_time\default=true
|
||||||
|
init_time_offset=@Variant(\0\0\0\x81\0\0\0\0\0\0\0\0)
|
||||||
|
init_time_offset\default=true
|
||||||
is_new_3ds=true
|
is_new_3ds=true
|
||||||
is_new_3ds\default=true
|
is_new_3ds\default=true
|
||||||
|
plugin_loader=false
|
||||||
|
plugin_loader\default=true
|
||||||
region_value=-1
|
region_value=-1
|
||||||
region_value\default=true
|
region_value\default=true
|
||||||
|
|
||||||
|
@ -324,22 +335,23 @@ 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=/home/deck/retrodeck/roms/n3ds
|
Paths\gamedirs\3\path=RETRODECKHOMEDIR/roms/n3ds
|
||||||
Paths\gamedirs\size=3
|
Paths\gamedirs\size=3
|
||||||
Paths\language=en
|
Paths\language=en
|
||||||
Paths\language\default=false
|
Paths\language\default=false
|
||||||
Paths\moviePlaybackPath=
|
Paths\moviePlaybackPath=
|
||||||
Paths\movieRecordPath=
|
Paths\movieRecordPath=
|
||||||
Paths\recentFiles=
|
Paths\recentFiles=@Invalid()
|
||||||
Paths\romsPath=/home/deck/retrodeck/roms/n3ds
|
Paths\romsPath=
|
||||||
Paths\screenshotPath=
|
Paths\screenshotPath=RETRODECKHOMEDIR/screenshots
|
||||||
|
Paths\screenshotPath\default=false
|
||||||
Paths\symbolsPath=
|
Paths\symbolsPath=
|
||||||
Paths\videoDumpingPath=
|
Paths\videoDumpingPath=
|
||||||
Shortcuts\Main%20Window\Advance%20Frame\Context=2
|
Shortcuts\Main%20Window\Advance%20Frame\Context=1
|
||||||
Shortcuts\Main%20Window\Advance%20Frame\Context\default=true
|
Shortcuts\Main%20Window\Advance%20Frame\Context\default=false
|
||||||
Shortcuts\Main%20Window\Advance%20Frame\KeySeq=\\
|
Shortcuts\Main%20Window\Advance%20Frame\KeySeq=
|
||||||
Shortcuts\Main%20Window\Advance%20Frame\KeySeq\default=true
|
Shortcuts\Main%20Window\Advance%20Frame\KeySeq\default=true
|
||||||
Shortcuts\Main%20Window\Capture%20Screenshot\Context=2
|
Shortcuts\Main%20Window\Capture%20Screenshot\Context=3
|
||||||
Shortcuts\Main%20Window\Capture%20Screenshot\Context\default=true
|
Shortcuts\Main%20Window\Capture%20Screenshot\Context\default=true
|
||||||
Shortcuts\Main%20Window\Capture%20Screenshot\KeySeq=Ctrl+P
|
Shortcuts\Main%20Window\Capture%20Screenshot\KeySeq=Ctrl+P
|
||||||
Shortcuts\Main%20Window\Capture%20Screenshot\KeySeq\default=true
|
Shortcuts\Main%20Window\Capture%20Screenshot\KeySeq\default=true
|
||||||
|
@ -347,31 +359,39 @@ Shortcuts\Main%20Window\Continue\Pause%20Emulation\Context=1
|
||||||
Shortcuts\Main%20Window\Continue\Pause%20Emulation\Context\default=true
|
Shortcuts\Main%20Window\Continue\Pause%20Emulation\Context\default=true
|
||||||
Shortcuts\Main%20Window\Continue\Pause%20Emulation\KeySeq=F4
|
Shortcuts\Main%20Window\Continue\Pause%20Emulation\KeySeq=F4
|
||||||
Shortcuts\Main%20Window\Continue\Pause%20Emulation\KeySeq\default=true
|
Shortcuts\Main%20Window\Continue\Pause%20Emulation\KeySeq\default=true
|
||||||
|
Shortcuts\Main%20Window\Decrease%203D%20Factor\Context=2
|
||||||
|
Shortcuts\Main%20Window\Decrease%203D%20Factor\Context\default=true
|
||||||
|
Shortcuts\Main%20Window\Decrease%203D%20Factor\KeySeq=Ctrl+-
|
||||||
|
Shortcuts\Main%20Window\Decrease%203D%20Factor\KeySeq\default=true
|
||||||
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\Context=2
|
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\Context=2
|
||||||
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\Context\default=true
|
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\Context\default=true
|
||||||
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\KeySeq=-
|
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\KeySeq=-
|
||||||
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\KeySeq\default=true
|
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\KeySeq\default=true
|
||||||
Shortcuts\Main%20Window\Exit%20Citra\Context=1
|
Shortcuts\Main%20Window\Exit%20Citra\Context=1
|
||||||
Shortcuts\Main%20Window\Exit%20Citra\Context\default=true
|
Shortcuts\Main%20Window\Exit%20Citra\Context\default=true
|
||||||
Shortcuts\Main%20Window\Exit%20Citra\KeySeq=T
|
Shortcuts\Main%20Window\Exit%20Citra\KeySeq=Ctrl+Q
|
||||||
Shortcuts\Main%20Window\Exit%20Citra\KeySeq\default=false
|
Shortcuts\Main%20Window\Exit%20Citra\KeySeq\default=true
|
||||||
Shortcuts\Main%20Window\Exit%20Fullscreen\Context=1
|
Shortcuts\Main%20Window\Exit%20Fullscreen\Context=1
|
||||||
Shortcuts\Main%20Window\Exit%20Fullscreen\Context\default=true
|
Shortcuts\Main%20Window\Exit%20Fullscreen\Context\default=true
|
||||||
Shortcuts\Main%20Window\Exit%20Fullscreen\KeySeq=Esc
|
Shortcuts\Main%20Window\Exit%20Fullscreen\KeySeq=Y
|
||||||
Shortcuts\Main%20Window\Exit%20Fullscreen\KeySeq\default=true
|
Shortcuts\Main%20Window\Exit%20Fullscreen\KeySeq\default=false
|
||||||
Shortcuts\Main%20Window\Fullscreen\Context=1
|
Shortcuts\Main%20Window\Fullscreen\Context=1
|
||||||
Shortcuts\Main%20Window\Fullscreen\Context\default=true
|
Shortcuts\Main%20Window\Fullscreen\Context\default=true
|
||||||
Shortcuts\Main%20Window\Fullscreen\KeySeq=F11
|
Shortcuts\Main%20Window\Fullscreen\KeySeq=F11
|
||||||
Shortcuts\Main%20Window\Fullscreen\KeySeq\default=true
|
Shortcuts\Main%20Window\Fullscreen\KeySeq\default=true
|
||||||
|
Shortcuts\Main%20Window\Increase%203D%20Factor\Context=2
|
||||||
|
Shortcuts\Main%20Window\Increase%203D%20Factor\Context\default=true
|
||||||
|
Shortcuts\Main%20Window\Increase%203D%20Factor\KeySeq=Ctrl++
|
||||||
|
Shortcuts\Main%20Window\Increase%203D%20Factor\KeySeq\default=true
|
||||||
Shortcuts\Main%20Window\Increase%20Speed%20Limit\Context=2
|
Shortcuts\Main%20Window\Increase%20Speed%20Limit\Context=2
|
||||||
Shortcuts\Main%20Window\Increase%20Speed%20Limit\Context\default=true
|
Shortcuts\Main%20Window\Increase%20Speed%20Limit\Context\default=true
|
||||||
Shortcuts\Main%20Window\Increase%20Speed%20Limit\KeySeq=+
|
Shortcuts\Main%20Window\Increase%20Speed%20Limit\KeySeq=+
|
||||||
Shortcuts\Main%20Window\Increase%20Speed%20Limit\KeySeq\default=true
|
Shortcuts\Main%20Window\Increase%20Speed%20Limit\KeySeq\default=true
|
||||||
Shortcuts\Main%20Window\Load%20Amiibo\Context=2
|
Shortcuts\Main%20Window\Load%20Amiibo\Context=3
|
||||||
Shortcuts\Main%20Window\Load%20Amiibo\Context\default=true
|
Shortcuts\Main%20Window\Load%20Amiibo\Context\default=true
|
||||||
Shortcuts\Main%20Window\Load%20Amiibo\KeySeq=F2
|
Shortcuts\Main%20Window\Load%20Amiibo\KeySeq=F2
|
||||||
Shortcuts\Main%20Window\Load%20Amiibo\KeySeq\default=true
|
Shortcuts\Main%20Window\Load%20Amiibo\KeySeq\default=true
|
||||||
Shortcuts\Main%20Window\Load%20File\Context=1
|
Shortcuts\Main%20Window\Load%20File\Context=3
|
||||||
Shortcuts\Main%20Window\Load%20File\Context\default=true
|
Shortcuts\Main%20Window\Load%20File\Context\default=true
|
||||||
Shortcuts\Main%20Window\Load%20File\KeySeq=Ctrl+O
|
Shortcuts\Main%20Window\Load%20File\KeySeq=Ctrl+O
|
||||||
Shortcuts\Main%20Window\Load%20File\KeySeq\default=true
|
Shortcuts\Main%20Window\Load%20File\KeySeq\default=true
|
||||||
|
@ -379,6 +399,10 @@ Shortcuts\Main%20Window\Load%20from%20Newest%20Slot\Context=1
|
||||||
Shortcuts\Main%20Window\Load%20from%20Newest%20Slot\Context\default=true
|
Shortcuts\Main%20Window\Load%20from%20Newest%20Slot\Context\default=true
|
||||||
Shortcuts\Main%20Window\Load%20from%20Newest%20Slot\KeySeq=R
|
Shortcuts\Main%20Window\Load%20from%20Newest%20Slot\KeySeq=R
|
||||||
Shortcuts\Main%20Window\Load%20from%20Newest%20Slot\KeySeq\default=false
|
Shortcuts\Main%20Window\Load%20from%20Newest%20Slot\KeySeq\default=false
|
||||||
|
Shortcuts\Main%20Window\Mute%20Audio\Context=1
|
||||||
|
Shortcuts\Main%20Window\Mute%20Audio\Context\default=true
|
||||||
|
Shortcuts\Main%20Window\Mute%20Audio\KeySeq=Ctrl+M
|
||||||
|
Shortcuts\Main%20Window\Mute%20Audio\KeySeq\default=true
|
||||||
Shortcuts\Main%20Window\Remove%20Amiibo\Context=2
|
Shortcuts\Main%20Window\Remove%20Amiibo\Context=2
|
||||||
Shortcuts\Main%20Window\Remove%20Amiibo\Context\default=true
|
Shortcuts\Main%20Window\Remove%20Amiibo\Context\default=true
|
||||||
Shortcuts\Main%20Window\Remove%20Amiibo\KeySeq=F3
|
Shortcuts\Main%20Window\Remove%20Amiibo\KeySeq=F3
|
||||||
|
@ -401,20 +425,24 @@ Shortcuts\Main%20Window\Stop%20Emulation\KeySeq=F5
|
||||||
Shortcuts\Main%20Window\Stop%20Emulation\KeySeq\default=true
|
Shortcuts\Main%20Window\Stop%20Emulation\KeySeq\default=true
|
||||||
Shortcuts\Main%20Window\Swap%20Screens\Context=1
|
Shortcuts\Main%20Window\Swap%20Screens\Context=1
|
||||||
Shortcuts\Main%20Window\Swap%20Screens\Context\default=true
|
Shortcuts\Main%20Window\Swap%20Screens\Context\default=true
|
||||||
Shortcuts\Main%20Window\Swap%20Screens\KeySeq=Y
|
Shortcuts\Main%20Window\Swap%20Screens\KeySeq=T
|
||||||
Shortcuts\Main%20Window\Swap%20Screens\KeySeq\default=false
|
Shortcuts\Main%20Window\Swap%20Screens\KeySeq\default=false
|
||||||
Shortcuts\Main%20Window\Toggle%20Alternate%20Speed\Context=2
|
Shortcuts\Main%20Window\Toggle%203D\Context=2
|
||||||
Shortcuts\Main%20Window\Toggle%20Alternate%20Speed\Context\default=true
|
Shortcuts\Main%20Window\Toggle%203D\Context\default=true
|
||||||
Shortcuts\Main%20Window\Toggle%20Alternate%20Speed\KeySeq=Ctrl+Z
|
Shortcuts\Main%20Window\Toggle%203D\KeySeq=Ctrl+3
|
||||||
Shortcuts\Main%20Window\Toggle%20Alternate%20Speed\KeySeq\default=true
|
Shortcuts\Main%20Window\Toggle%203D\KeySeq\default=true
|
||||||
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\Context=1
|
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\Context=1
|
||||||
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\Context\default=true
|
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\Context\default=false
|
||||||
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\KeySeq=Ctrl+F
|
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\KeySeq=Ctrl+F
|
||||||
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\KeySeq\default=true
|
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\KeySeq\default=false
|
||||||
Shortcuts\Main%20Window\Toggle%20Frame%20Advancing\Context=2
|
Shortcuts\Main%20Window\Toggle%20Frame%20Advancing\Context=2
|
||||||
Shortcuts\Main%20Window\Toggle%20Frame%20Advancing\Context\default=true
|
Shortcuts\Main%20Window\Toggle%20Frame%20Advancing\Context\default=false
|
||||||
Shortcuts\Main%20Window\Toggle%20Frame%20Advancing\KeySeq=Ctrl+A
|
Shortcuts\Main%20Window\Toggle%20Frame%20Advancing\KeySeq=Ctrl+A
|
||||||
Shortcuts\Main%20Window\Toggle%20Frame%20Advancing\KeySeq\default=true
|
Shortcuts\Main%20Window\Toggle%20Frame%20Advancing\KeySeq\default=false
|
||||||
|
Shortcuts\Main%20Window\Toggle%20Per-Game%20Speed\Context=2
|
||||||
|
Shortcuts\Main%20Window\Toggle%20Per-Game%20Speed\Context\default=true
|
||||||
|
Shortcuts\Main%20Window\Toggle%20Per-Game%20Speed\KeySeq=Ctrl+Z
|
||||||
|
Shortcuts\Main%20Window\Toggle%20Per-Game%20Speed\KeySeq\default=false
|
||||||
Shortcuts\Main%20Window\Toggle%20Screen%20Layout\Context=1
|
Shortcuts\Main%20Window\Toggle%20Screen%20Layout\Context=1
|
||||||
Shortcuts\Main%20Window\Toggle%20Screen%20Layout\Context\default=true
|
Shortcuts\Main%20Window\Toggle%20Screen%20Layout\Context\default=true
|
||||||
Shortcuts\Main%20Window\Toggle%20Screen%20Layout\KeySeq=F10
|
Shortcuts\Main%20Window\Toggle%20Screen%20Layout\KeySeq=F10
|
||||||
|
@ -423,17 +451,17 @@ Shortcuts\Main%20Window\Toggle%20Status%20Bar\Context=1
|
||||||
Shortcuts\Main%20Window\Toggle%20Status%20Bar\Context\default=true
|
Shortcuts\Main%20Window\Toggle%20Status%20Bar\Context\default=true
|
||||||
Shortcuts\Main%20Window\Toggle%20Status%20Bar\KeySeq=Ctrl+S
|
Shortcuts\Main%20Window\Toggle%20Status%20Bar\KeySeq=Ctrl+S
|
||||||
Shortcuts\Main%20Window\Toggle%20Status%20Bar\KeySeq\default=true
|
Shortcuts\Main%20Window\Toggle%20Status%20Bar\KeySeq\default=true
|
||||||
Shortcuts\Main%20Window\Toggle%20Texture%20Dumping\Context=2
|
Shortcuts\Main%20Window\Toggle%20Texture%20Dumping\Context=1
|
||||||
Shortcuts\Main%20Window\Toggle%20Texture%20Dumping\Context\default=true
|
Shortcuts\Main%20Window\Toggle%20Texture%20Dumping\Context\default=false
|
||||||
Shortcuts\Main%20Window\Toggle%20Texture%20Dumping\KeySeq=Ctrl+D
|
Shortcuts\Main%20Window\Toggle%20Texture%20Dumping\KeySeq=
|
||||||
Shortcuts\Main%20Window\Toggle%20Texture%20Dumping\KeySeq\default=true
|
Shortcuts\Main%20Window\Toggle%20Texture%20Dumping\KeySeq\default=true
|
||||||
UILayout\gameListHeaderState=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\x5\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x4\x9c\0\0\0\x5\x1\x1\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x5\0\0\x2\x80\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\xf0\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64)
|
UILayout\gameListHeaderState=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\x5\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x4 \0\0\0\x5\x1\x1\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x5\0\0\x2\x80\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0t\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64)
|
||||||
UILayout\geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\xd6\0\0\0\x97\0\0\x4*\0\0\x2\x43\0\0\0\xd6\0\0\0\xb4\0\0\x4*\0\0\x2\x43\0\0\0\0\0\0\0\0\x5\0\0\0\0\xd6\0\0\0\xb4\0\0\x4*\0\0\x2\x43)
|
UILayout\geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x4\x1f\0\0\x1\x8f\0\0\0\0\0\0\0\0\0\0\x4\x1f\0\0\x1\x8f\0\0\0\0\0\0\0\0\x4\xfd\0\0\0\0\0\0\0\0\0\0\x4\x1f\0\0\x1\x8f)
|
||||||
UILayout\geometryRenderWindow=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\x1\x8f\0\0\x1\xf3\0\0\0\0\0\0\0\x14\0\0\x1\x8f\0\0\x1\xf3\0\0\0\0\0\0\0\0\x5\0\0\0\0\0\0\0\0\x14\0\0\x1\x8f\0\0\x1\xf3)
|
UILayout\geometryRenderWindow=@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\x4\xfd\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31)
|
||||||
UILayout\microProfileDialogGeometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\x3\xe7\0\0\x2k\0\0\0\0\0\0\0\x14\0\0\x3\xe7\0\0\x2k\0\0\0\0\0\0\0\0\x5\0\0\0\0\0\0\0\0\x14\0\0\x3\xe7\0\0\x2k)
|
UILayout\microProfileDialogGeometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\x3\xe7\0\0\x2k\0\0\0\0\0\0\0\x14\0\0\x3\xe7\0\0\x2k\0\0\0\0\0\0\0\0\x4\xfd\0\0\0\0\0\0\0\x14\0\0\x3\xe7\0\0\x2k)
|
||||||
UILayout\microProfileDialogVisible=false
|
UILayout\microProfileDialogVisible=false
|
||||||
UILayout\microProfileDialogVisible\default=true
|
UILayout\microProfileDialogVisible\default=true
|
||||||
UILayout\state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x2\0\0\0\0\0\0\0\0\0\0\0\0\xfc\x2\0\0\0\x1\xfb\0\0\0\x1c\0W\0\x61\0i\0t\0T\0r\0\x65\0\x65\0W\0i\0\x64\0g\0\x65\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x62\x1\0\0\x3\0\0\0\x1\0\0\0\0\0\0\0\0\xfc\x2\0\0\0\b\xfb\0\0\0\x18\0\x41\0R\0M\0R\0\x65\0g\0i\0s\0t\0\x65\0r\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0n\x1\0\0\x3\xfb\0\0\0 \0G\0r\0\x61\0p\0h\0i\0\x63\0s\0\x44\0\x65\0\x62\0u\0g\0g\0\x65\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x62\x1\0\0\x3\xfb\0\0\0\"\0P\0i\0\x63\0\x61\0 \0\x43\0o\0m\0m\0\x61\0n\0\x64\0 \0L\0i\0s\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x94\x1\0\0\x3\xfb\0\0\0*\0P\0i\0\x63\0\x61\0\x42\0r\0\x65\0\x61\0k\0P\0o\0i\0n\0t\0s\0W\0i\0\x64\0g\0\x65\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x94\x1\0\0\x3\xfb\0\0\0 \0P\0i\0\x63\0\x61\0V\0\x65\0r\0t\0\x65\0x\0S\0h\0\x61\0\x64\0\x65\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\x1\xd2\x1\0\0\x3\xfb\0\0\0\x12\0\x43\0i\0T\0r\0\x61\0\x63\0i\0n\0g\0\0\0\0\0\xff\xff\xff\xff\0\0\0N\x1\0\0\x3\xfb\0\0\0.\0L\0L\0\x45\0S\0\x65\0r\0v\0i\0\x63\0\x65\0M\0o\0\x64\0u\0l\0\x65\0s\0W\0i\0\x64\0g\0\x65\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x62\x1\0\0\x3\xfb\0\0\0\x16\0I\0P\0\x43\0R\0\x65\0\x63\0o\0r\0\x64\0\x65\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xd3\x1\0\0\x3\0\0\x3U\0\0\x1Q\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\0)
|
UILayout\state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x2\0\0\0\0\0\0\0\0\0\0\0\0\xfc\x2\0\0\0\x1\xfb\0\0\0\x1c\0W\0\x61\0i\0t\0T\0r\0\x65\0\x65\0W\0i\0\x64\0g\0\x65\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0V\0\xff\xff\xff\0\0\0\x1\0\0\0\0\0\0\0\0\xfc\x2\0\0\0\b\xfb\0\0\0\x18\0\x41\0R\0M\0R\0\x65\0g\0i\0s\0t\0\x65\0r\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0h\0\xff\xff\xff\xfb\0\0\0 \0G\0r\0\x61\0p\0h\0i\0\x63\0s\0\x44\0\x65\0\x62\0u\0g\0g\0\x65\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0V\0\xff\xff\xff\xfb\0\0\0\"\0P\0i\0\x63\0\x61\0 \0\x43\0o\0m\0m\0\x61\0n\0\x64\0 \0L\0i\0s\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x87\0\xff\xff\xff\xfb\0\0\0*\0P\0i\0\x63\0\x61\0\x42\0r\0\x65\0\x61\0k\0P\0o\0i\0n\0t\0s\0W\0i\0\x64\0g\0\x65\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x87\0\xff\xff\xff\xfb\0\0\0 \0P\0i\0\x63\0\x61\0V\0\x65\0r\0t\0\x65\0x\0S\0h\0\x61\0\x64\0\x65\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\x1\xaa\0\xff\xff\xff\xfb\0\0\0\x12\0\x43\0i\0T\0r\0\x61\0\x63\0i\0n\0g\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x41\0\xff\xff\xff\xfb\0\0\0.\0L\0L\0\x45\0S\0\x65\0r\0v\0i\0\x63\0\x65\0M\0o\0\x64\0u\0l\0\x65\0s\0W\0i\0\x64\0g\0\x65\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0V\0\xff\xff\xff\xfb\0\0\0\x16\0I\0P\0\x43\0R\0\x65\0\x63\0o\0r\0\x64\0\x65\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xc3\0\xff\xff\xff\0\0\x4 \0\0\x1^\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\0)
|
||||||
Updater\check_for_update_on_start=true
|
Updater\check_for_update_on_start=true
|
||||||
Updater\check_for_update_on_start\default=true
|
Updater\check_for_update_on_start\default=true
|
||||||
Updater\update_on_close=false
|
Updater\update_on_close=false
|
||||||
|
@ -448,13 +476,13 @@ enable_discord_presence=true
|
||||||
enable_discord_presence\default=true
|
enable_discord_presence\default=true
|
||||||
firstStart=false
|
firstStart=false
|
||||||
firstStart\default=false
|
firstStart\default=false
|
||||||
fullscreen=true
|
fullscreen=false
|
||||||
fullscreen\default=true
|
fullscreen\default=true
|
||||||
hideInactiveMouse=false
|
hideInactiveMouse=false
|
||||||
hideInactiveMouse\default=true
|
hideInactiveMouse\default=true
|
||||||
pauseWhenInBackground=true
|
pauseWhenInBackground=false
|
||||||
pauseWhenInBackground\default=true
|
pauseWhenInBackground\default=true
|
||||||
screenshot_resolution_factor=0
|
screenshot_resolution_factor=@Variant(\0\0\0\x85\0\0)
|
||||||
screenshot_resolution_factor\default=true
|
screenshot_resolution_factor\default=true
|
||||||
showConsole=false
|
showConsole=false
|
||||||
showConsole\default=true
|
showConsole\default=true
|
||||||
|
@ -494,7 +522,7 @@ video_encoder_options\default=true
|
||||||
|
|
||||||
[WebService]
|
[WebService]
|
||||||
citra_token=
|
citra_token=
|
||||||
citra_username=
|
citra_username=RetroDECK
|
||||||
enable_telemetry=false
|
enable_telemetry=false
|
||||||
enable_telemetry\default=false
|
enable_telemetry\default=false
|
||||||
web_api_url=https://api.citra-emu.org
|
web_api_url=https://api.citra-emu.org
|
38
emu-configs/defaults/retrodeck/compression_targets.cfg
Normal file
38
emu-configs/defaults/retrodeck/compression_targets.cfg
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
[chd]
|
||||||
|
dreamcast
|
||||||
|
psx
|
||||||
|
ps2
|
||||||
|
[chd-maybe]
|
||||||
|
3do
|
||||||
|
amiga
|
||||||
|
amiga1200
|
||||||
|
amiga600
|
||||||
|
amigacd32
|
||||||
|
cdimono1
|
||||||
|
cdtv
|
||||||
|
dreamcast
|
||||||
|
gamegear
|
||||||
|
genesis
|
||||||
|
mame-advmame
|
||||||
|
mame-mame4all
|
||||||
|
mastersystem
|
||||||
|
megacd
|
||||||
|
megacdjp
|
||||||
|
megadrive
|
||||||
|
mess
|
||||||
|
neogeo
|
||||||
|
neogeocd
|
||||||
|
neogeocdjp
|
||||||
|
pcengine
|
||||||
|
pcenginecd
|
||||||
|
pcfx
|
||||||
|
ps2
|
||||||
|
psx
|
||||||
|
saturn
|
||||||
|
saturnjp
|
||||||
|
segacd
|
||||||
|
sg-1000
|
||||||
|
supergrafx
|
||||||
|
tg16
|
||||||
|
tg-cd
|
||||||
|
[zip]
|
|
@ -24,19 +24,19 @@ DSPHLE = True
|
||||||
Fullscreen = True
|
Fullscreen = True
|
||||||
DisableScreenSaver = True
|
DisableScreenSaver = True
|
||||||
[GBA]
|
[GBA]
|
||||||
BIOS = ~/retrodeck/bios
|
BIOS = RETRODECKHOMEDIR/bios
|
||||||
Rom1 =
|
Rom1 =
|
||||||
Rom2 =
|
Rom2 =
|
||||||
Rom3 =
|
Rom3 =
|
||||||
Rom4 =
|
Rom4 =
|
||||||
SavesInRomPath = False
|
SavesInRomPath = False
|
||||||
SavesPath = ~/retrodeck/saves/gba
|
SavesPath = RETRODECKHOMEDIR/saves/gba
|
||||||
Threads = True
|
Threads = True
|
||||||
[General]
|
[General]
|
||||||
ISOPath0 = ~/retrodeck/roms/wii
|
ISOPath0 = RETRODECKHOMEDIR/roms/wii
|
||||||
ISOPath1 = ~/retrodeck/roms/gc
|
ISOPath1 = RETRODECKHOMEDIR/roms/gc
|
||||||
ISOPaths = 2
|
ISOPaths = 2
|
||||||
WiiSDCardPath = ~/retrodeck/saves/wii/dolphin/sd.raw
|
WiiSDCardPath = RETRODECKHOMEDIR/saves/wii/dolphin/sd.raw
|
||||||
WirelessMac = 00:17:ab:83:9b:d4
|
WirelessMac = 00:17:ab:83:9b:d4
|
||||||
HotkeysRequireFocus = True
|
HotkeysRequireFocus = True
|
||||||
RecursiveISOPaths = True
|
RecursiveISOPaths = True
|
||||||
|
|
|
@ -75,9 +75,9 @@ JIT_BranchOptimisations=1
|
||||||
JIT_LiteralOptimisations=1
|
JIT_LiteralOptimisations=1
|
||||||
JIT_FastMemory=1
|
JIT_FastMemory=1
|
||||||
ExternalBIOSEnable=1
|
ExternalBIOSEnable=1
|
||||||
BIOS9Path=~/retrodeck/bios/bios9.bin
|
BIOS9Path=RETRODECKHOMEDIR/bios/bios9.bin
|
||||||
BIOS7Path=~/retrodeck/bios/bios7.bin
|
BIOS7Path=RETRODECKHOMEDIR/bios/bios7.bin
|
||||||
FirmwarePath=~/retrodeck/bios/firmware.bin
|
FirmwarePath=RETRODECKHOMEDIR/bios/firmware.bin
|
||||||
DSiBIOS9Path=
|
DSiBIOS9Path=
|
||||||
DSiBIOS7Path=
|
DSiBIOS7Path=
|
||||||
DSiFirmwarePath=
|
DSiFirmwarePath=
|
||||||
|
@ -123,8 +123,8 @@ RecentROM_6=
|
||||||
RecentROM_7=
|
RecentROM_7=
|
||||||
RecentROM_8=
|
RecentROM_8=
|
||||||
RecentROM_9=
|
RecentROM_9=
|
||||||
SaveFilePath=~/retrodeck/saves/nds/melonds
|
SaveFilePath=RETRODECKHOMEDIR/saves/nds/melonds
|
||||||
SavestatePath=~/retrodeck/states/nds/melonds
|
SavestatePath=RETRODECKHOMEDIR/states/nds/melonds
|
||||||
CheatFilePath=
|
CheatFilePath=
|
||||||
EnableCheats=0
|
EnableCheats=0
|
||||||
MouseHide=0
|
MouseHide=0
|
||||||
|
|
|
@ -3036,12 +3036,12 @@ run_ahead_hide_warnings = "false"
|
||||||
run_ahead_secondary_instance = "true"
|
run_ahead_secondary_instance = "true"
|
||||||
runtime_log_directory = "default"
|
runtime_log_directory = "default"
|
||||||
save_file_compression = "false"
|
save_file_compression = "false"
|
||||||
savefile_directory = "~/retrodeck/saves"
|
savefile_directory = "RETRODECKHOMEDIR/saves"
|
||||||
savefiles_in_content_dir = "false"
|
savefiles_in_content_dir = "false"
|
||||||
savestate_auto_index = "false"
|
savestate_auto_index = "false"
|
||||||
savestate_auto_load = "true"
|
savestate_auto_load = "true"
|
||||||
savestate_auto_save = "true"
|
savestate_auto_save = "true"
|
||||||
savestate_directory = "~/retrodeck/states"
|
savestate_directory = "RETRODECKHOMEDIR/states"
|
||||||
savestate_file_compression = "true"
|
savestate_file_compression = "true"
|
||||||
savestate_max_keep = "0"
|
savestate_max_keep = "0"
|
||||||
savestate_thumbnail_enable = "false"
|
savestate_thumbnail_enable = "false"
|
||||||
|
@ -3049,7 +3049,7 @@ savestates_in_content_dir = "false"
|
||||||
scan_without_core_match = "false"
|
scan_without_core_match = "false"
|
||||||
screen_brightness = "100"
|
screen_brightness = "100"
|
||||||
screen_orientation = "0"
|
screen_orientation = "0"
|
||||||
screenshot_directory = "~/retrodeck/screenshots"
|
screenshot_directory = "RETRODECKHOMEDIR/screenshots"
|
||||||
screenshots_in_content_dir = "false"
|
screenshots_in_content_dir = "false"
|
||||||
settings_show_accessibility = "true"
|
settings_show_accessibility = "true"
|
||||||
settings_show_achievements = "true"
|
settings_show_achievements = "true"
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -327,18 +327,6 @@
|
||||||
<entry>~/bin/pcsx2*-Qt.AppImage</entry>
|
<entry>~/bin/pcsx2*-Qt.AppImage</entry>
|
||||||
</rule>
|
</rule>
|
||||||
</emulator>
|
</emulator>
|
||||||
<emulator name="PCSX2-LEGACY">
|
|
||||||
<!-- Sony PlayStation 2 emulator PCSX2 (legacy) -->
|
|
||||||
<rule type="systempath">
|
|
||||||
<entry>PCSX2</entry>
|
|
||||||
<entry>pcsx2</entry>
|
|
||||||
<entry>net.pcsx2.PCSX2</entry>
|
|
||||||
</rule>
|
|
||||||
<rule type="staticpath">
|
|
||||||
<entry>/var/lib/flatpak/exports/bin/net.pcsx2.PCSX2</entry>
|
|
||||||
<entry>~/.local/share/flatpak/exports/bin/net.pcsx2.PCSX2</entry>
|
|
||||||
</rule>
|
|
||||||
</emulator>
|
|
||||||
<emulator name="PICO-8">
|
<emulator name="PICO-8">
|
||||||
<!-- PICO-8 Fantasy Console (game engine) -->
|
<!-- PICO-8 Fantasy Console (game engine) -->
|
||||||
<rule type="systempath">
|
<rule type="systempath">
|
||||||
|
|
|
@ -1071,7 +1071,6 @@
|
||||||
<command label="PCSX2 (Standalone)">%EMULATOR_PCSX2% -batch %ROM%</command>
|
<command label="PCSX2 (Standalone)">%EMULATOR_PCSX2% -batch %ROM%</command>
|
||||||
<extension>.bin .BIN .chd .CHD .ciso .CISO .cso .CSO .dump .DUMP .elf .ELF .gz .GZ .m3u .M3U .mdf .MDF .img .IMG .iso .ISO .isz .ISZ .ngr .NRG</extension>
|
<extension>.bin .BIN .chd .CHD .ciso .CISO .cso .CSO .dump .DUMP .elf .ELF .gz .GZ .m3u .M3U .mdf .MDF .img .IMG .iso .ISO .isz .ISZ .ngr .NRG</extension>
|
||||||
<command label="PCSX2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx2_libretro.so %ROM%</command>
|
<command label="PCSX2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx2_libretro.so %ROM%</command>
|
||||||
<!-- <command label="PCSX2 Legacy (Standalone)">%EMULATOR_PCSX2-LEGACY% -REMOVEME-nogui %ROM%</command> -->
|
|
||||||
<!-- <command label="Play! (Standalone)">%EMULATOR_PLAY!% --disc %ROM%</command> -->
|
<!-- <command label="Play! (Standalone)">%EMULATOR_PLAY!% --disc %ROM%</command> -->
|
||||||
<platform>ps2</platform>
|
<platform>ps2</platform>
|
||||||
<theme>ps2</theme>
|
<theme>ps2</theme>
|
||||||
|
@ -1614,7 +1613,7 @@
|
||||||
<system>
|
<system>
|
||||||
<name>tools</name>
|
<name>tools</name>
|
||||||
<fullname>RetroDECK Tools</fullname>
|
<fullname>RetroDECK Tools</fullname>
|
||||||
<path>/var/config/retrodeck/tools</path>
|
<path>/app/tools</path>
|
||||||
<extension>.sh .SH</extension>
|
<extension>.sh .SH</extension>
|
||||||
<command>bash %ROM%</command>
|
<command>bash %ROM%</command>
|
||||||
<platform>tools</platform>
|
<platform>tools</platform>
|
||||||
|
|
201
functions.sh
201
functions.sh
|
@ -47,14 +47,14 @@ file_browse() {
|
||||||
while [ $file_selected == false ]
|
while [ $file_selected == false ]
|
||||||
do
|
do
|
||||||
local target="$(zenity --file-selection --title="Choose $1")"
|
local target="$(zenity --file-selection --title="Choose $1")"
|
||||||
if [ ! -z $target ] #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="File $target chosen, is this correct?"
|
--text="File $target chosen, is this correct?"
|
||||||
if [ $? == 0 ]
|
if [ $? == 0 ]
|
||||||
then
|
then
|
||||||
file_selected=true
|
file_selected=true
|
||||||
echo $target
|
echo "$target"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
@ -73,9 +73,9 @@ verify_space() {
|
||||||
# USAGE: verify_space $source_dir $dest_dir
|
# USAGE: verify_space $source_dir $dest_dir
|
||||||
# Function returns "true" if there is enough space, "false" if there is not
|
# Function returns "true" if there is enough space, "false" if there is not
|
||||||
|
|
||||||
source_size=$(du -sk $1 | awk '{print $1}')
|
source_size=$(du -sk "$1" | awk '{print $1}')
|
||||||
source_size=$((source_size+(source_size/10))) # Add 10% to source size for safety
|
source_size=$((source_size+(source_size/10))) # Add 10% to source size for safety
|
||||||
dest_avail=$(df -k --output=avail $2 | tail -1)
|
dest_avail=$(df -k --output=avail "$2" | tail -1)
|
||||||
|
|
||||||
if [[ $source_size -ge $dest_avail ]]; then
|
if [[ $source_size -ge $dest_avail ]]; then
|
||||||
echo "false"
|
echo "false"
|
||||||
|
@ -88,13 +88,13 @@ move() {
|
||||||
# Function to move a directory from one parent to another
|
# Function to move a directory from one parent to another
|
||||||
# USAGE: move $source_dir $dest_dir
|
# USAGE: move $source_dir $dest_dir
|
||||||
|
|
||||||
if [[ ! -d "$2/$(basename $1)" ]]; then
|
if [[ ! -d "$2/$(basename "$1")" ]]; then
|
||||||
if [[ $(verify_space $1 $2) ]]; then
|
if [[ $(verify_space "$1" "$2") ]]; then
|
||||||
(
|
(
|
||||||
if [[ ! -d $2 ]]; then # Create destination directory if it doesn't already exist
|
if [[ ! -d "$2" ]]; then # Create destination directory if it doesn't already exist
|
||||||
mkdir -pv $2
|
mkdir -pv "$2"
|
||||||
fi
|
fi
|
||||||
mv -v -t $2 $1
|
mv -v -t "$2" "$1"
|
||||||
) |
|
) |
|
||||||
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" \
|
||||||
|
@ -121,49 +121,98 @@ compress_to_chd () {
|
||||||
# USAGE: compress_to_chd $full_path_to_input_file $full_path_to_output_file
|
# USAGE: compress_to_chd $full_path_to_input_file $full_path_to_output_file
|
||||||
|
|
||||||
echo "Compressing file $1 to $2.chd"
|
echo "Compressing file $1 to $2.chd"
|
||||||
/app/bin/chdman createcd -i $1 -o $2.chd
|
/app/bin/chdman createcd -i "$1" -o "$2".chd
|
||||||
}
|
}
|
||||||
|
|
||||||
validate_for_chd () {
|
validate_for_chd () {
|
||||||
# Function for validating chd compression candidates, and compresses if validation passes. Supports .cue, .iso and .gdi formats ONLY
|
# Function for validating chd compression candidates, and compresses if validation passes. Supports .cue, .iso and .gdi formats ONLY
|
||||||
# USAGE: validate_for_chd $input_file
|
# USAGE: validate_for_chd $input_file
|
||||||
|
|
||||||
local file=$1
|
local file="$1"
|
||||||
current_run_log_file="chd_compression_"$(date +"%Y_%m_%d_%I_%M_%p").log""
|
local normalized_filename=$(echo "$file" | tr '[:upper:]' '[:lower:]')
|
||||||
echo "Validating file:" $file > "$logs_folder/$current_run_log_file"
|
local file_validated="false"
|
||||||
if [[ "$file" == *".cue" ]] || [[ "$file" == *".gdi" ]] || [[ "$file" == *".iso" ]]; then
|
current_run_log_file="chd_compression_$(basename "$file").log"
|
||||||
echo ".cue/.iso/.gdi file detected" >> $logs_folder/$current_run_log_file
|
echo "Validating file:" "$file" > "$logs_folder/$current_run_log_file"
|
||||||
local file_path=$(dirname $(realpath $file))
|
if [[ "$normalized_filename" == *".cue" ]] || [[ "$normalized_filename" == *".gdi" ]] || [[ "$normalized_filename" == *".iso" ]]; then
|
||||||
local file_base_name=$(basename $file)
|
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%.*}
|
local file_name=${file_base_name%.*}
|
||||||
echo "File base path:" $file_path >> "$logs_folder/$current_run_log_file"
|
if [[ "$normalized_filename" == *".cue" ]]; then # Validate .cue file
|
||||||
echo "File base name:" $file_name >> "$logs_folder/$current_run_log_file"
|
echo "Validating .cue associated .bin files" >> "$logs_folder/$current_run_log_file"
|
||||||
if [[ "$file" == *".cue" ]]; then # Validate .cue file
|
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" $file)
|
echo "Associated bin files read:" >> "$logs_folder/$current_run_log_file"
|
||||||
local cue_validated="false"
|
printf '%s\n' "$cue_bin_files" >> "$logs_folder/$current_run_log_file"
|
||||||
for line in $cue_bin_files
|
while IFS= read -r line
|
||||||
do
|
do
|
||||||
|
echo "looking for $file_path/$line" >> "$logs_folder/$current_run_log_file"
|
||||||
if [[ -f "$file_path/$line" ]]; then
|
if [[ -f "$file_path/$line" ]]; then
|
||||||
echo ".bin file found at $file_path/$line" >> "$logs_folder/$current_run_log_file"
|
echo ".bin file found at $file_path/$line" >> "$logs_folder/$current_run_log_file"
|
||||||
cue_validated="true"
|
file_validated="true"
|
||||||
else
|
else
|
||||||
echo ".bin file NOT found at $file_path/$line" >> "$logs_folder/$current_run_log_file"
|
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"
|
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"
|
file_validated="false"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done < <(printf '%s\n' "$cue_bin_files")
|
||||||
if [[ $cue_validated == "true" ]]; then
|
if [[ $file_validated == "true" ]]; then
|
||||||
echo $cue_validated
|
echo $file_validated
|
||||||
fi
|
fi
|
||||||
else
|
else # If file is a .iso or .gdi
|
||||||
echo $cue_validated
|
file_validated="true"
|
||||||
|
echo $file_validated
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "File type not recognized. Supported file types are .cue, .gdi and .iso" >> "$logs_folder/$current_run_log_file"
|
echo "File type not recognized. Supported file types are .cue, .gdi and .iso" >> "$logs_folder/$current_run_log_file"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cli_compress_file() {
|
||||||
|
# This function will compress a single file passed from the CLI arguments
|
||||||
|
# USAGE: cli_compress_file $full_file_path
|
||||||
|
local file="$1"
|
||||||
|
echo "Looking for" "$file"
|
||||||
|
current_run_log_file="chd_compression_$(basename "$file").log"
|
||||||
|
if [[ ! -z "$file" ]]; then
|
||||||
|
if [[ -f "$file" ]]; then
|
||||||
|
if [[ $(validate_for_chd "$file") == "true" ]]; then
|
||||||
|
read -p "RetroDECK will now attempt to compress your selected game. Press Enter key to continue..."
|
||||||
|
read -p "Do you want to have the original file removed after compression is complete? Please answer y/n and press Enter: " post_compression_cleanup
|
||||||
|
local filename_no_path=$(basename "$file")
|
||||||
|
local filename_no_extension="${filename_no_path%.*}"
|
||||||
|
local source_file=$(dirname "$(realpath "$file")")"/"$(basename "$file")
|
||||||
|
local dest_file=$(dirname "$(realpath "$file")")"/""$filename_no_extension"
|
||||||
|
echo "Compressing $filename_no_path"
|
||||||
|
compress_to_chd "$source_file" "$dest_file"
|
||||||
|
if [[ $post_compression_cleanup == [yY] ]]; then # Remove file(s) if requested
|
||||||
|
if [[ "$file" == *".cue" ]]; then
|
||||||
|
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||||
|
local file_path=$(dirname "$(realpath "$file")")
|
||||||
|
while IFS= read -r line
|
||||||
|
do # Remove associated .bin files
|
||||||
|
echo "Removing file "$line""
|
||||||
|
rm -f "$file_path/$line"
|
||||||
|
done < <(printf '%s\n' "$cue_bin_files") # Remove original .cue file
|
||||||
|
echo "Removing file "$filename_no_path""
|
||||||
|
rm -f $(realpath "$file")
|
||||||
|
else
|
||||||
|
echo "Removing file "$filename_no_path""
|
||||||
|
rm -f $(realpath "$file")
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
desktop_mode_warning() {
|
desktop_mode_warning() {
|
||||||
# This function is a generic warning for issues that happen when running in desktop mode.
|
# 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 == "gamescope" ]]; then
|
# Running in desktop mode can be verified with the following command: if [[ ! $XDG_CURRENT_DESKTOP == "gamescope" ]]; then
|
||||||
|
@ -581,7 +630,6 @@ update_rd_conf() {
|
||||||
deploy_single_patch $rd_defaults $rd_update_patch $rd_conf
|
deploy_single_patch $rd_defaults $rd_update_patch $rd_conf
|
||||||
set_setting_value $rd_conf "version" "$hard_version" retrodeck # Set version of currently running RetroDECK to updated retrodeck.cfg
|
set_setting_value $rd_conf "version" "$hard_version" retrodeck # Set version of currently running RetroDECK to updated retrodeck.cfg
|
||||||
rm -f $rd_update_patch # Cleanup temporary patch file
|
rm -f $rd_update_patch # Cleanup temporary patch file
|
||||||
source $rd_conf # Load new config file variables
|
|
||||||
}
|
}
|
||||||
|
|
||||||
conf_write() {
|
conf_write() {
|
||||||
|
@ -658,6 +706,13 @@ dir_prep() {
|
||||||
|
|
||||||
echo -e "\n[DIR PREP]\nMoving $symlink in $real" #DEBUG
|
echo -e "\n[DIR PREP]\nMoving $symlink in $real" #DEBUG
|
||||||
|
|
||||||
|
# if the symlink dir is already a symlink, unlink it first, to prevent recursion
|
||||||
|
if [ -L "$symlink" ];
|
||||||
|
then
|
||||||
|
echo "$symlink is already a symlink, unlinking to prevent recursives" #DEBUG
|
||||||
|
unlink "$symlink"
|
||||||
|
fi
|
||||||
|
|
||||||
# if the dest dir exists we want to backup it
|
# if the dest dir exists we want to backup it
|
||||||
if [ -d "$symlink" ];
|
if [ -d "$symlink" ];
|
||||||
then
|
then
|
||||||
|
@ -668,6 +723,7 @@ dir_prep() {
|
||||||
# if the real dir is already a symlink, unlink it first
|
# if the real dir is already a symlink, unlink it first
|
||||||
if [ -L "$real" ];
|
if [ -L "$real" ];
|
||||||
then
|
then
|
||||||
|
echo "$real is already a symlink, unlinking to prevent recursives" #DEBUG
|
||||||
unlink "$real"
|
unlink "$real"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -716,7 +772,7 @@ yuzu_init() {
|
||||||
rm -rf /var/config/yuzu
|
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#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/yuzu/qt-config.ini
|
||||||
dir_prep "$rdhome/screenshots" "/var/data/yuzu/screenshots"
|
dir_prep "$rdhome/screenshots" "/var/data/yuzu/screenshots"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -728,12 +784,12 @@ dolphin_init() {
|
||||||
rm -rf /var/config/dolphin-emu
|
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#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/dolphin-emu/Dolphin.ini
|
||||||
dir_prep "$rdhome/saves/gc/dolphin/EUR" "/var/data/dolphin-emu/GC/EUR"
|
dir_prep "$rdhome/saves/gc/dolphin/EUR" "/var/data/dolphin-emu/GC/EUR"
|
||||||
dir_prep "$rdhome/saves/gc/dolphin/USA" "/var/data/dolphin-emu/GC/USA"
|
dir_prep "$rdhome/saves/gc/dolphin/USA" "/var/data/dolphin-emu/GC/USA"
|
||||||
dir_prep "$rdhome/saves/gc/dolphin/JAP" "/var/data/dolphin-emu/GC/JAP"
|
dir_prep "$rdhome/saves/gc/dolphin/JAP" "/var/data/dolphin-emu/GC/JAP"
|
||||||
dir_prep "$rdhome/screenshots" "/var/data/dolphin-emu/ScreenShots"
|
dir_prep "$rdhome/screenshots" "/var/data/dolphin-emu/ScreenShots"
|
||||||
dir_prep "$rdhome/states" "/var/data/dolphin-emu/StateSaves"
|
dir_prep "$rdhome/states/dolphin" "/var/data/dolphin-emu/StateSaves"
|
||||||
mkdir -pv /var/data/dolphin-emu/Wii/
|
mkdir -pv /var/data/dolphin-emu/Wii/
|
||||||
dir_prep "$rdhome/saves/wii/dolphin" "/var/data/dolphin-emu/Wii"
|
dir_prep "$rdhome/saves/wii/dolphin" "/var/data/dolphin-emu/Wii"
|
||||||
}
|
}
|
||||||
|
@ -746,12 +802,12 @@ primehack_init() {
|
||||||
rm -rf /var/config/primehack
|
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#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/primehack/Dolphin.ini
|
||||||
dir_prep "$rdhome/saves/gc/primehack/EUR" "/var/data/primehack/GC/EUR"
|
dir_prep "$rdhome/saves/gc/primehack/EUR" "/var/data/primehack/GC/EUR"
|
||||||
dir_prep "$rdhome/saves/gc/primehack/USA" "/var/data/primehack/GC/USA"
|
dir_prep "$rdhome/saves/gc/primehack/USA" "/var/data/primehack/GC/USA"
|
||||||
dir_prep "$rdhome/saves/gc/primehack/JAP" "/var/data/primehack/GC/JAP"
|
dir_prep "$rdhome/saves/gc/primehack/JAP" "/var/data/primehack/GC/JAP"
|
||||||
dir_prep "$rdhome/screenshots" "/var/data/primehack/ScreenShots"
|
dir_prep "$rdhome/screenshots" "/var/data/primehack/ScreenShots"
|
||||||
dir_prep "$rdhome/states" "/var/data/primehack/StateSaves"
|
dir_prep "$rdhome/states/primehack" "/var/data/primehack/StateSaves"
|
||||||
mkdir -pv /var/data/primehack/Wii/
|
mkdir -pv /var/data/primehack/Wii/
|
||||||
dir_prep "$rdhome/saves/wii/primehack" "/var/data/primehack/Wii"
|
dir_prep "$rdhome/saves/wii/primehack" "/var/data/primehack/Wii"
|
||||||
}
|
}
|
||||||
|
@ -766,8 +822,8 @@ pcsx2_init() {
|
||||||
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"
|
||||||
cp -fvr $emuconfigs/PCSX2/* /var/config/PCSX2/inis/
|
cp -fvr $emuconfigs/PCSX2/* /var/config/PCSX2/inis/
|
||||||
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/PCSX2/inis/PCSX2_ui.ini
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/PCSX2/inis/PCSX2_ui.ini
|
||||||
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/PCSX2/inis/PCSX2.ini
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/PCSX2/inis/PCSX2.ini
|
||||||
#dir_prep "$rdhome/states/ps2/pcsx2" "/var/config/PCSX2/sstates"
|
#dir_prep "$rdhome/states/ps2/pcsx2" "/var/config/PCSX2/sstates"
|
||||||
#dir_prep "$rdhome/screenshots" "/var/config/PCSX2/snaps"
|
#dir_prep "$rdhome/screenshots" "/var/config/PCSX2/snaps"
|
||||||
#dir_prep "$rdhome/.logs" "/var/config/PCSX2/logs"
|
#dir_prep "$rdhome/.logs" "/var/config/PCSX2/logs"
|
||||||
|
@ -785,8 +841,7 @@ melonds_init() {
|
||||||
mkdir -pv "$rdhome/states/nds/melonds"
|
mkdir -pv "$rdhome/states/nds/melonds"
|
||||||
dir_prep "$rdhome/bios" "/var/config/melonDS/bios"
|
dir_prep "$rdhome/bios" "/var/config/melonDS/bios"
|
||||||
cp -fvr $emuconfigs/melonDS.ini /var/config/melonDS/
|
cp -fvr $emuconfigs/melonDS.ini /var/config/melonDS/
|
||||||
# Replace ~/retrodeck with $rdhome as ~ cannot be understood by MelonDS
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/melonDS/melonDS.ini
|
||||||
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/melonDS/melonDS.ini
|
|
||||||
}
|
}
|
||||||
|
|
||||||
citra_init() {
|
citra_init() {
|
||||||
|
@ -800,11 +855,8 @@ citra_init() {
|
||||||
mkdir -pv "$rdhome/saves/n3ds/citra/sdmc/"
|
mkdir -pv "$rdhome/saves/n3ds/citra/sdmc/"
|
||||||
dir_prep "$rdhome/bios/citra/sysdata" "/var/data/citra-emu/sysdata"
|
dir_prep "$rdhome/bios/citra/sysdata" "/var/data/citra-emu/sysdata"
|
||||||
dir_prep "$rdhome/.logs/citra" "/var/data/citra-emu/log"
|
dir_prep "$rdhome/.logs/citra" "/var/data/citra-emu/log"
|
||||||
cp -fv $emuconfigs/citra-qt-config.ini /var/config/citra-emu/qt-config.ini
|
cp -fv $emuconfigs/citra/qt-config.ini /var/config/citra-emu/qt-config.ini
|
||||||
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/citra-emu/qt-config.ini
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/citra-emu/qt-config.ini
|
||||||
#TODO: do the same with roms folders after new variables is pushed (check even the others qt-emu)
|
|
||||||
#But actually everything is always symlinked to retrodeck/roms so it might be not needed
|
|
||||||
#sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/citra-emu/qt-config.ini
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rpcs3_init() {
|
rpcs3_init() {
|
||||||
|
@ -825,9 +877,10 @@ xemu_init() {
|
||||||
mkdir -pv $rdhome/saves/xbox/xemu/
|
mkdir -pv $rdhome/saves/xbox/xemu/
|
||||||
# removing config directory to wipe legacy files
|
# removing config directory to wipe legacy files
|
||||||
rm -rf /var/config/xemu
|
rm -rf /var/config/xemu
|
||||||
mkdir -pv /var/data/xemu/
|
rm -rf /var/data/xemu
|
||||||
cp -fv $emuconfigs/xemu.toml /var/data/xemu/xemu.toml
|
dir_prep "/var/config/xemu" "/var/data/xemu" # Creating config folder in /var/config for consistentcy and linking back to original location where emulator will look
|
||||||
sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /var/data/xemu/xemu.toml
|
cp -fv $emuconfigs/xemu.toml /var/config/xemu/xemu.toml
|
||||||
|
sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /var/config/xemu/xemu.toml
|
||||||
# Preparing HD dummy Image if the image is not found
|
# Preparing HD dummy Image if the image is not found
|
||||||
if [ ! -f $rdhome/bios/xbox_hdd.qcow2 ]
|
if [ ! -f $rdhome/bios/xbox_hdd.qcow2 ]
|
||||||
then
|
then
|
||||||
|
@ -908,7 +961,7 @@ ra_init() {
|
||||||
mkdir -pv /var/config/retroarch/config/
|
mkdir -pv /var/config/retroarch/config/
|
||||||
cp -rf $emuconfigs/retroarch/core-overrides/* /var/config/retroarch/config
|
cp -rf $emuconfigs/retroarch/core-overrides/* /var/config/retroarch/config
|
||||||
#rm -rf $rdhome/bios/bios # in some situations a double bios symlink is created
|
#rm -rf $rdhome/bios/bios # in some situations a double bios symlink is created
|
||||||
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/retroarch/retroarch.cfg
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/retroarch/retroarch.cfg
|
||||||
|
|
||||||
# PPSSPP
|
# PPSSPP
|
||||||
echo "--------------------------------"
|
echo "--------------------------------"
|
||||||
|
@ -989,15 +1042,6 @@ cli_emulator_reset() {
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
tools_init() {
|
|
||||||
rm -rfv /var/config/retrodeck/tools/
|
|
||||||
mkdir -pv /var/config/retrodeck/tools/
|
|
||||||
cp -rfv /app/retrodeck/tools/* /var/config/retrodeck/tools/
|
|
||||||
mkdir -pv /var/config/emulationstation/.emulationstation/custom_systems/tools/
|
|
||||||
rm -rfv /var/config/retrodeck/tools/gamelist.xml
|
|
||||||
cp -fv /app/retrodeck/tools-gamelist.xml /var/config/retrodeck/tools/gamelist.xml
|
|
||||||
}
|
|
||||||
|
|
||||||
emulators_post_move() {
|
emulators_post_move() {
|
||||||
# This script will redo the symlinks for all emulators after moving the $rdhome location without resetting other options
|
# This script will redo the symlinks for all emulators after moving the $rdhome location without resetting other options
|
||||||
# FUTURE WORK: The sed commands here should be replaced with set_setting_value and dir_prep should be replaced with changing paths in config files directly where possible
|
# FUTURE WORK: The sed commands here should be replaced with set_setting_value and dir_prep should be replaced with changing paths in config files directly where possible
|
||||||
|
@ -1009,6 +1053,7 @@ emulators_post_move() {
|
||||||
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"
|
||||||
dir_prep "$rdhome/shaders/retroarch" "/var/config/retroarch/shaders"
|
dir_prep "$rdhome/shaders/retroarch" "/var/config/retroarch/shaders"
|
||||||
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/retroarch/retroarch.cfg
|
||||||
|
|
||||||
# Yuzu section
|
# Yuzu section
|
||||||
dir_prep "$rdhome/bios/switch/keys" "/var/data/yuzu/keys"
|
dir_prep "$rdhome/bios/switch/keys" "/var/data/yuzu/keys"
|
||||||
|
@ -1017,38 +1062,38 @@ emulators_post_move() {
|
||||||
dir_prep "$rdhome/saves/switch/yuzu/sdmc" "/var/data/yuzu/sdmc"
|
dir_prep "$rdhome/saves/switch/yuzu/sdmc" "/var/data/yuzu/sdmc"
|
||||||
dir_prep "$rdhome/.logs/yuzu" "/var/data/yuzu/log"
|
dir_prep "$rdhome/.logs/yuzu" "/var/data/yuzu/log"
|
||||||
dir_prep "$rdhome/screenshots" "/var/data/yuzu/screenshots"
|
dir_prep "$rdhome/screenshots" "/var/data/yuzu/screenshots"
|
||||||
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/yuzu/qt-config.ini
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/yuzu/qt-config.ini
|
||||||
|
|
||||||
# Dolphin section
|
# Dolphin section
|
||||||
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/dolphin-emu/Dolphin.ini
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/dolphin-emu/Dolphin.ini
|
||||||
dir_prep "$rdhome/saves/gc/dolphin/EUR" "/var/data/dolphin-emu/GC/EUR"
|
dir_prep "$rdhome/saves/gc/dolphin/EUR" "/var/data/dolphin-emu/GC/EUR"
|
||||||
dir_prep "$rdhome/saves/gc/dolphin/USA" "/var/data/dolphin-emu/GC/USA"
|
dir_prep "$rdhome/saves/gc/dolphin/USA" "/var/data/dolphin-emu/GC/USA"
|
||||||
dir_prep "$rdhome/saves/gc/dolphin/JAP" "/var/data/dolphin-emu/GC/JAP"
|
dir_prep "$rdhome/saves/gc/dolphin/JAP" "/var/data/dolphin-emu/GC/JAP"
|
||||||
dir_prep "$rdhome/screenshots" "/var/data/dolphin-emu/ScreenShots"
|
dir_prep "$rdhome/screenshots" "/var/data/dolphin-emu/ScreenShots"
|
||||||
dir_prep "$rdhome/states" "/var/data/dolphin-emu/StateSaves"
|
dir_prep "$rdhome/states/dolphin" "/var/data/dolphin-emu/StateSaves"
|
||||||
dir_prep "$rdhome/saves/wii/dolphin" "/var/data/dolphin-emu/Wii/"
|
dir_prep "$rdhome/saves/wii/dolphin" "/var/data/dolphin-emu/Wii/"
|
||||||
|
|
||||||
# Primehack section
|
# Primehack section
|
||||||
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/primehack/Dolphin.ini
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/primehack/Dolphin.ini
|
||||||
dir_prep "$rdhome/saves/gc/primehack/EUR" "/var/data/primehack/GC/EUR"
|
dir_prep "$rdhome/saves/gc/primehack/EUR" "/var/data/primehack/GC/EUR"
|
||||||
dir_prep "$rdhome/saves/gc/primehack/USA" "/var/data/primehack/GC/USA"
|
dir_prep "$rdhome/saves/gc/primehack/USA" "/var/data/primehack/GC/USA"
|
||||||
dir_prep "$rdhome/saves/gc/primehack/JAP" "/var/data/primehack/GC/JAP"
|
dir_prep "$rdhome/saves/gc/primehack/JAP" "/var/data/primehack/GC/JAP"
|
||||||
dir_prep "$rdhome/screenshots" "/var/data/primehack/ScreenShots"
|
dir_prep "$rdhome/screenshots" "/var/data/primehack/ScreenShots"
|
||||||
dir_prep "$rdhome/states" "/var/data/primehack/StateSaves"
|
dir_prep "$rdhome/states/primehack" "/var/data/primehack/StateSaves"
|
||||||
dir_prep "$rdhome/saves/wii/primehack" "/var/data/primehack/Wii/"
|
dir_prep "$rdhome/saves/wii/primehack" "/var/data/primehack/Wii/"
|
||||||
|
|
||||||
# PCSX2 section
|
# PCSX2 section
|
||||||
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/PCSX2/inis/PCSX2_ui.ini
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/PCSX2/inis/PCSX2_ui.ini
|
||||||
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/PCSX2/inis/PCSX2.ini
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/PCSX2/inis/PCSX2.ini
|
||||||
|
|
||||||
# MelonDS section
|
# MelonDS section
|
||||||
dir_prep "$rdhome/bios" "/var/config/melonDS/bios"
|
dir_prep "$rdhome/bios" "/var/config/melonDS/bios"
|
||||||
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/melonDS/melonDS.ini
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/melonDS/melonDS.ini
|
||||||
|
|
||||||
# Citra section
|
# Citra section
|
||||||
dir_prep "$rdhome/bios/citra/sysdata" "/var/data/citra-emu/sysdata"
|
dir_prep "$rdhome/bios/citra/sysdata" "/var/data/citra-emu/sysdata"
|
||||||
dir_prep "$rdhome/.logs/citra" "/var/data/citra-emu/log"
|
dir_prep "$rdhome/.logs/citra" "/var/data/citra-emu/log"
|
||||||
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/citra-emu/qt-config.ini
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/citra-emu/qt-config.ini
|
||||||
|
|
||||||
# RPCS3 section
|
# RPCS3 section
|
||||||
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
|
||||||
|
@ -1242,15 +1287,12 @@ finit() {
|
||||||
|
|
||||||
# Recreating the folder
|
# Recreating the folder
|
||||||
rm -rfv /var/config/emulationstation/
|
rm -rfv /var/config/emulationstation/
|
||||||
rm -rfv /var/config/retrodeck/tools/
|
|
||||||
mkdir -pv /var/config/emulationstation/
|
mkdir -pv /var/config/emulationstation/
|
||||||
|
|
||||||
# Initializing ES-DE
|
# Initializing ES-DE
|
||||||
# TODO: after the next update of ES-DE this will not be needed - let's test it
|
# TODO: after the next update of ES-DE this will not be needed - let's test it
|
||||||
emulationstation --home /var/config/emulationstation --create-system-dirs
|
emulationstation --home /var/config/emulationstation --create-system-dirs
|
||||||
|
|
||||||
mkdir -pv /var/config/retrodeck/tools/
|
|
||||||
|
|
||||||
#zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --text="RetroDECK will now install the needed files.\nPlease wait up to one minute,\nanother message will notify when the process will be finished.\n\nPress OK to continue."
|
#zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --text="RetroDECK will now install the needed files.\nPlease wait up to one minute,\nanother message will notify when the process will be finished.\n\nPress OK to continue."
|
||||||
|
|
||||||
# Initializing ROMs folder - Original in retrodeck home (or SD Card)
|
# Initializing ROMs folder - Original in retrodeck home (or SD Card)
|
||||||
|
@ -1269,14 +1311,13 @@ finit() {
|
||||||
dir_prep "$themes_folder" "/var/config/emulationstation/.emulationstation/themes"
|
dir_prep "$themes_folder" "/var/config/emulationstation/.emulationstation/themes"
|
||||||
|
|
||||||
# PICO-8
|
# PICO-8
|
||||||
dir_prep "$bios_folder/pico-8" "~/.lexaloffle/pico-8" # Store binary and config files together. The .lexaloffle directory is a hard-coded location for the PICO-8 config file, cannot be changed
|
dir_prep "$bios_folder/pico-8" "$HOME/.lexaloffle/pico-8" # Store binary and config files together. The .lexaloffle directory is a hard-coded location for the PICO-8 config file, cannot be changed
|
||||||
dir_prep "$roms_folder/pico8" "$bios_folder/pico-8/carts" # Symlink default game location to RD roms for cleanliness (this location is overridden anyway by the --root_path launch argument anyway)
|
dir_prep "$roms_folder/pico8" "$bios_folder/pico-8/carts" # Symlink default game location to RD roms for cleanliness (this location is overridden anyway by the --root_path launch argument anyway)
|
||||||
dir_prep "$bios_folder/pico-8/cdata" "$saves_folder/pico-8" # PICO-8 saves folder
|
dir_prep "$saves_folder/pico-8" "$bios_folder/pico-8/cdata" # PICO-8 saves folder
|
||||||
|
|
||||||
(
|
(
|
||||||
ra_init
|
ra_init
|
||||||
standalones_init
|
standalones_init
|
||||||
tools_init
|
|
||||||
) |
|
) |
|
||||||
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" \
|
||||||
|
@ -1339,3 +1380,17 @@ configurator_destination_choice_dialog() {
|
||||||
|
|
||||||
echo $choice
|
echo $choice
|
||||||
}
|
}
|
||||||
|
|
||||||
|
configurator_reset_confirmation_dialog() {
|
||||||
|
# This dialog provides a confirmation for any reset functions, before the reset is actually performed.
|
||||||
|
# USAGE: $(configurator_reset_confirmation_dialog "emulator being reset" "action text")
|
||||||
|
# This function will return a "true" if the user clicks Confirm, and "false" if they click Cancel.
|
||||||
|
choice=$(zenity --title "RetroDECK Configurator Utility - Reset $1" --question --no-wrap --cancel-label="Cancel" --ok-label="Confirm" \
|
||||||
|
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||||
|
--text="$2")
|
||||||
|
if [[ $? == "0" ]]; then
|
||||||
|
echo "true"
|
||||||
|
else
|
||||||
|
echo "false"
|
||||||
|
fi
|
||||||
|
}
|
21
global.sh
21
global.sh
|
@ -8,13 +8,14 @@ source /app/libexec/functions.sh
|
||||||
rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path
|
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
|
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
|
emuconfigs="/app/retrodeck/emu-configs" # folder with all the default emulator configs
|
||||||
rd_defaults="$emuconfigs/defaults/retrodeck.cfg" # A default RetroDECK config file
|
rd_defaults="$emuconfigs/defaults/retrodeck/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
|
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
|
bios_checklist="$emuconfigs/defaults/retrodeck/bios_checklist.cfg" # A config file listing BIOS file information that can be verified
|
||||||
easter_egg_checklist="/var/config/retrodeck/tools/easter_egg_checklist.cfg" # A config file listing days and times when special splash screens should show up
|
compression_targets="$emuconfigs/defaults/retrodeck/compression_targets.cfg" # A config file containing supported compression types per system
|
||||||
splashscreen_dir="/var/config/emulationstation/graphics/extra-splashes" # The default location of extra splash screens
|
easter_egg_checklist="$emuconfigs/defaults/retrodeck/easter_egg_checklist.cfg" # A config file listing days and times when special splash screens should show up
|
||||||
current_splash_file="/var/config/emulationstation/graphics/splash.svg" # The active splash file that will be shown on boot
|
splashscreen_dir="/var/config/emulationstation/.emulationstation/resources/graphics/extra-splashes" # The default location of extra splash screens
|
||||||
default_splash_file="/var/config/emulationstation/graphics/splash-orig.svg" # The default RetroDECK splash screen
|
current_splash_file="/var/config/emulationstation/.emulationstation/resources/graphics/splash.svg" # The active splash file that will be shown on boot
|
||||||
|
default_splash_file="/var/config/emulationstation/.emulationstation/resources/graphics/splash-orig.svg" # The default RetroDECK splash screen
|
||||||
lockfile="/var/config/retrodeck/.lock" # where the lockfile is located
|
lockfile="/var/config/retrodeck/.lock" # where the lockfile is located
|
||||||
default_sd="/run/media/mmcblk0p1" # Steam Deck SD default path
|
default_sd="/run/media/mmcblk0p1" # Steam Deck SD default path
|
||||||
hard_version="$(cat '/app/retrodeck/version')" # hardcoded version (in the readonly filesystem)
|
hard_version="$(cat '/app/retrodeck/version')" # hardcoded version (in the readonly filesystem)
|
||||||
|
@ -54,6 +55,14 @@ pcsx2vmconf="/var/config/PCSX2/inis/PCSX2_vm.ini"
|
||||||
|
|
||||||
pcsx2qtconf="/var/config/PCSX2/inis/PCSX2.ini"
|
pcsx2qtconf="/var/config/PCSX2/inis/PCSX2.ini"
|
||||||
|
|
||||||
|
# Primehack config files
|
||||||
|
|
||||||
|
primehackconf="/var/config/primehack/Dolphin.ini"
|
||||||
|
primehackgcpadconf="/var/config/primehack/GCPadNew.ini"
|
||||||
|
primehackgfxconf="/var/config/primehack/GFX.ini"
|
||||||
|
primehackhkconf="/var/config/primehack/Hotkeys.ini"
|
||||||
|
primehackqtconf="/var/config/primehack/Qt.ini"
|
||||||
|
|
||||||
# We moved the lockfile in /var/config/retrodeck in order to solve issue #53 - Remove in a few versions
|
# We moved the lockfile in /var/config/retrodeck in order to solve issue #53 - Remove in a few versions
|
||||||
if [ -f "$HOME/retrodeck/.lock" ]
|
if [ -f "$HOME/retrodeck/.lock" ]
|
||||||
then
|
then
|
||||||
|
|
|
@ -36,15 +36,15 @@
|
||||||
</screenshot>
|
</screenshot>
|
||||||
</screenshots>
|
</screenshots>
|
||||||
<description>
|
<description>
|
||||||
<p>What is Retrodeck?
|
<p>What is Retrodeck?</p>
|
||||||
RetroDECK is an emulation and retro gaming solution to catalog and play your game collection directly from Linux in one unified application.
|
<p>RetroDECK is an emulation and retro gaming solution to catalog and play your game collection directly from Linux in one unified application.
|
||||||
It's inspired by other embedded emulation systems like AmberELEC, EmuELEC, CoreELEC, Lakka, and Batocera.
|
It's inspired by other embedded emulation systems like AmberELEC, EmuELEC, CoreELEC, Lakka, and Batocera.
|
||||||
RetroDECK is powered by EmulationStation Desktop Edition, that uses RetroArch and other standalone emulators to allow you to import and play your favorite games in a tidy environment.
|
RetroDECK is powered by EmulationStation Desktop Edition, that uses RetroArch and other standalone emulators to allow you to import and play your favorite games in a tidy environment.
|
||||||
No other software is needed as everything it's already included in one package!</p>
|
No other software is needed as everything it's already included in one package!</p>
|
||||||
<p>BETA NOTICE: RetroDECK is still in Beta and the team is actively developing and adding more features.</p>
|
<p>BETA NOTICE: RetroDECK is still in Beta and the team is actively developing and adding more features.</p>
|
||||||
<p>About the Beta:
|
<p>About the Beta:
|
||||||
The primary focus during the beta period is on SteamOS and the Steam Deck but we hope to expand to more devices and general Linux desktop in the future (NOTE: It can be run on Linux desktop right now but there will be some manual configurations needed for input, storage location and other tiny hickups).</p>
|
The primary focus during the beta period is on SteamOS and the Steam Deck but we hope to expand to more devices and general Linux desktop in the future</p>
|
||||||
<p>NOTE: Albeit RetroDECK could possibily work on every distro, it's supported only on Steam Deck.</p>
|
<p>NOTE: It can be run on Linux desktop right now but there will be some manual configurations needed for input, storage location and other tiny hickups.</p>
|
||||||
<p>
|
<p>
|
||||||
INSTALLATION INSTRUCTIONS FOR THE STEAM DECK:
|
INSTALLATION INSTRUCTIONS FOR THE STEAM DECK:
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -54,18 +54,46 @@
|
||||||
<li>4. [OPTIONAL] Download Steam Grids graphics for RetroDECK with BoilR</li>
|
<li>4. [OPTIONAL] Download Steam Grids graphics for RetroDECK with BoilR</li>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
<p>For more detailed information check our wiki:
|
<p>For more detailed information check our wiki:</p>
|
||||||
https://github.com/XargonWan/RetroDECK/wiki</p>
|
<p>https://github.com/XargonWan/RetroDECK/wiki</p>
|
||||||
<p>If you want to sponsor the project:
|
<p>If you want to sponsor the project:</p>
|
||||||
https://www.patreon.com/RetroDECK</p>
|
<p>https://www.patreon.com/RetroDECK</p>
|
||||||
<p>If you want to join the RetroDECK community check our:
|
<p>If you want to join the RetroDECK community check our:</p>
|
||||||
Discord: https://discord.gg/Dz3szYsP8g
|
<p>Discord: https://discord.gg/Dz3szYsP8g</p>
|
||||||
Reddit: https://www.reddit.com/r/RetroDECK/</p>
|
<p>Reddit: https://www.reddit.com/r/RetroDECK/</p>
|
||||||
<p>If you want to help out with the project join the "i-want-to-help" channel on our Discord.</p>
|
<p>If you want to help out with the project join the "i-want-to-help" channel on our Discord.</p>
|
||||||
</description>
|
</description>
|
||||||
<project_license>GPL-3.0</project_license>
|
<project_license>GPL-3.0</project_license>
|
||||||
<metadata_license>CC0-1.0</metadata_license>
|
<metadata_license>CC0-1.0</metadata_license>
|
||||||
<releases>
|
<releases>
|
||||||
|
<release version="0.6.3b" date="2023-03-24">
|
||||||
|
<url>https://github.com/XargonWan/RetroDECK/releases/tag/0.6.3b</url>
|
||||||
|
<description>
|
||||||
|
<p>New features - General:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Added support support for multiple file compression via CLI.</li>
|
||||||
|
</ul>
|
||||||
|
<p>RetroDECK Configurator:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Added support support for multiple file compression in the Configurator.</li>
|
||||||
|
<li>Added safety y/n prompts to the reset functions.</li>
|
||||||
|
<li>Fixed some missing layout changes.</li>
|
||||||
|
<li>Renamed "Reset All" to "Reset RetroDECK".</li>
|
||||||
|
<li>Moved configurator into the RO partition for futher enhancements.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Bug fixes and other changes:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Fixed a bug in the compression tool with certain filenames with spaces.</li>
|
||||||
|
<li>Fixed a bug where some folders were recursively symlinked.</li>
|
||||||
|
<li>Fixed a bug where some emulator configs were not correctly deployed.</li>
|
||||||
|
<li>Fixed the Configurator BIOS tool looking in the wrong location (Thanks sofauxboho for the report!).</li>
|
||||||
|
<li>Fixed a manifest bug that caused a conflict between Dolphin and Primehack in certain scenarios.</li>
|
||||||
|
<li>Implemented new configurations for Yuzu and Citra thanks to the big config file changes in the latest emulator updates in both emulators.</li>
|
||||||
|
<li>Removed leftover files from Legacy PCSX2.</li>
|
||||||
|
<li>Removed the legacy "Reset Tools" command from Configurator and CLI.</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
<release version="0.6.2b" date="2023-03-15">
|
<release version="0.6.2b" date="2023-03-15">
|
||||||
<url>https://github.com/XargonWan/RetroDECK/releases/tag/0.6.2b</url>
|
<url>https://github.com/XargonWan/RetroDECK/releases/tag/0.6.2b</url>
|
||||||
<description>
|
<description>
|
||||||
|
|
|
@ -78,7 +78,7 @@ modules:
|
||||||
- |
|
- |
|
||||||
git checkout ${GITHUB_REF_NAME}
|
git checkout ${GITHUB_REF_NAME}
|
||||||
mkdir -p ${FLATPAK_DEST}/retrodeck/
|
mkdir -p ${FLATPAK_DEST}/retrodeck/
|
||||||
VERSION="0.6.2b"
|
VERSION="cooker-0.6.3b"
|
||||||
if [[ $VERSION == *"cooker"* ]];
|
if [[ $VERSION == *"cooker"* ]];
|
||||||
then
|
then
|
||||||
VERSION="$VERSION-[$(git rev-parse --short HEAD)]"
|
VERSION="$VERSION-[$(git rev-parse --short HEAD)]"
|
||||||
|
@ -88,7 +88,7 @@ modules:
|
||||||
sources:
|
sources:
|
||||||
- type: git
|
- type: git
|
||||||
url: https://github.com/XargonWan/RetroDECK.git
|
url: https://github.com/XargonWan/RetroDECK.git
|
||||||
branch: main
|
branch: cooker-0.6.3b
|
||||||
|
|
||||||
- name: xmlstarlet
|
- name: xmlstarlet
|
||||||
config-opts:
|
config-opts:
|
||||||
|
@ -417,7 +417,7 @@ modules:
|
||||||
sources:
|
sources:
|
||||||
- type: archive
|
- type: archive
|
||||||
url: https://buildbot.libretro.com/stable/1.15.0/linux/x86_64/RetroArch_cores.7z
|
url: https://buildbot.libretro.com/stable/1.15.0/linux/x86_64/RetroArch_cores.7z
|
||||||
sha256: 1fdec5c2cbabea4f194ede4a1fb0dd1d17e14e64bf7ef705e3ad763592411073
|
sha256: 2230bc38eaf87406efd0c2b7bdd1cf9e813ba113505600f14a7ef9eb06f8c7c0
|
||||||
|
|
||||||
# PPSSPP - START
|
# PPSSPP - START
|
||||||
# https://github.com/flathub/org.ppsspp.PPSSPP
|
# https://github.com/flathub/org.ppsspp.PPSSPP
|
||||||
|
@ -628,7 +628,9 @@ modules:
|
||||||
- sed -i -e 's/"2048"/"512"/g' /app/share/icons/hicolor/scalable/apps/dolphin-emu.svg
|
- sed -i -e 's/"2048"/"512"/g' /app/share/icons/hicolor/scalable/apps/dolphin-emu.svg
|
||||||
sources:
|
sources:
|
||||||
- type: git
|
- type: git
|
||||||
#url: ssh://git@github.com/dolphin-emu/dolphin.git
|
# Sometimes Dolphin or its submodules clone are failing in https so it must done in ssh
|
||||||
|
# fatal: remote transport reported error
|
||||||
|
# url: ssh://git@github.com/dolphin-emu/dolphin.git
|
||||||
url: https://github.com/dolphin-emu/dolphin.git
|
url: https://github.com/dolphin-emu/dolphin.git
|
||||||
commit: 46b99671d9158e0ca840c1d8ef249db0f321ced7
|
commit: 46b99671d9158e0ca840c1d8ef249db0f321ced7
|
||||||
x-checker-data:
|
x-checker-data:
|
||||||
|
@ -847,8 +849,8 @@ modules:
|
||||||
- install -D primehack-wrapper /app/bin/primehack-wrapper
|
- install -D primehack-wrapper /app/bin/primehack-wrapper
|
||||||
sources:
|
sources:
|
||||||
- type: git
|
- type: git
|
||||||
url: https://github.com/shiiion/dolphin.git
|
url: https://github.com/TheDrifter363/primehack.git
|
||||||
commit: efb99ebfd20b1bc16ea3e51fec409c91e354d8c2
|
commit: 6295c695307a67f11ee202b05cbdd7b5c1edae5c
|
||||||
# detects whether dolphin is running in a flatpak sandbox
|
# detects whether dolphin is running in a flatpak sandbox
|
||||||
# and makes it use xdg directories if it is.
|
# and makes it use xdg directories if it is.
|
||||||
# prevents dolphin from attempting to write conf files
|
# prevents dolphin from attempting to write conf files
|
||||||
|
@ -1059,14 +1061,16 @@ modules:
|
||||||
- cp -f res/splash.svg ${FLATPAK_DEST}/emulationstation/graphics/splash-orig.svg
|
- cp -f res/splash.svg ${FLATPAK_DEST}/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
|
# RetroDECK core script
|
||||||
- mkdir -p ${FLATPAK_DEST}/retrodeck/tools/
|
|
||||||
- cp tools/* ${FLATPAK_DEST}/retrodeck/tools/
|
|
||||||
- mv -f es-configs/tools-gamelist.xml ${FLATPAK_DEST}/retrodeck/
|
|
||||||
|
|
||||||
- cp retrodeck.sh /app/bin/retrodeck.sh
|
- cp retrodeck.sh /app/bin/retrodeck.sh
|
||||||
- chmod +x /app/bin/retrodeck.sh
|
- chmod +x /app/bin/retrodeck.sh
|
||||||
|
|
||||||
|
# Tools
|
||||||
|
- mkdir -p /app/tools
|
||||||
|
- cp tools/configurator.sh /app/tools/configurator.sh
|
||||||
|
- chmod +x /app/tools/configurator.sh
|
||||||
|
- cp es-configs/tools-gamelist.xml /app/tools/gamelist.xml
|
||||||
|
|
||||||
# Function libraries
|
# Function libraries
|
||||||
- mkdir -p /app/libexec
|
- mkdir -p /app/libexec
|
||||||
- cp global.sh /app/libexec/global.sh
|
- cp global.sh /app/libexec/global.sh
|
||||||
|
@ -1091,4 +1095,4 @@ modules:
|
||||||
sources:
|
sources:
|
||||||
- type: git
|
- type: git
|
||||||
url: https://github.com/XargonWan/RetroDECK.git
|
url: https://github.com/XargonWan/RetroDECK.git
|
||||||
branch: main
|
branch: cooker-0.6.3b
|
|
@ -195,20 +195,41 @@ post_update() {
|
||||||
dir_prep "$rdhome/states/duckstation" "/var/data/duckstation/savestates"
|
dir_prep "$rdhome/states/duckstation" "/var/data/duckstation/savestates"
|
||||||
|
|
||||||
mv "$bios_folder/pico8" "$bios_folder/pico8_olddata" # Move legacy (and incorrect / non-functional ) PICO-8 location for future cleanup / less confusion
|
mv "$bios_folder/pico8" "$bios_folder/pico8_olddata" # Move legacy (and incorrect / non-functional ) PICO-8 location for future cleanup / less confusion
|
||||||
dir_prep "$bios_folder/pico-8" "~/.lexaloffle/pico-8" # Store binary and config files together. The .lexaloffle directory is a hard-coded location for the PICO-8 config file, cannot be changed
|
dir_prep "$bios_folder/pico-8" "$HOME/.lexaloffle/pico-8" # Store binary and config files together. The .lexaloffle directory is a hard-coded location for the PICO-8 config file, cannot be changed
|
||||||
dir_prep "$roms_folder/pico8" "$bios_folder/pico-8/carts" # Symlink default game location to RD roms for cleanliness (this location is overridden anyway by the --root_path launch argument anyway)
|
dir_prep "$roms_folder/pico8" "$bios_folder/pico-8/carts" # Symlink default game location to RD roms for cleanliness (this location is overridden anyway by the --root_path launch argument anyway)
|
||||||
dir_prep "$bios_folder/pico-8/cdata" "$saves_folder/pico-8" # PICO-8 saves folder
|
dir_prep "$bios_folder/pico-8/cdata" "$saves_folder/pico-8" # PICO-8 saves folder
|
||||||
fi
|
fi
|
||||||
|
if [[ $prev_version -le "063" ]]; then
|
||||||
|
# In version 0.6.2b, the following changes were made that required config file updates/reset:
|
||||||
|
# - Put Dolphin and Primehack save states in different folders inside $rd_home/states
|
||||||
|
# - Fix symlink to hard-coded PICO-8 config folder (dir_prep doesn't like ~)
|
||||||
|
# - Overwrite Citra and Yuzu configs, as controller mapping was broken due to emulator updates.
|
||||||
|
|
||||||
|
dir_prep "$rdhome/states/dolphin" "/var/data/dolphin-emu/StateSaves"
|
||||||
|
dir_prep "$rdhome/states/primehack" "/var/data/primehack/StateSaves"
|
||||||
|
|
||||||
|
rm -rf "$HOME/~/" # Remove old incorrect location from 0.6.2b
|
||||||
|
rm -f "$HOME/.lexaloffle/pico-8" # Remove old symlink to prevent recursion
|
||||||
|
dir_prep "$bios_folder/pico-8" "$HOME/.lexaloffle/pico-8" # Store binary and config files together. The .lexaloffle directory is a hard-coded location for the PICO-8 config file, cannot be changed
|
||||||
|
dir_prep "$saves_folder/pico-8" "$bios_folder/pico-8/cdata" # PICO-8 saves folder structure was backwards, fixing for consistency.
|
||||||
|
|
||||||
|
cp -fv $emuconfigs/citra/qt-config.ini /var/config/citra-emu/qt-config.ini
|
||||||
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/citra-emu/qt-config.ini
|
||||||
|
cp -fvr $emuconfigs/yuzu/* /var/config/yuzu/
|
||||||
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/yuzu/qt-config.ini
|
||||||
|
|
||||||
|
# Remove unneeded tools folder, as location has changed to RO space
|
||||||
|
rm -rfv /var/config/retrodeck/tools/
|
||||||
|
fi
|
||||||
|
|
||||||
# The following commands are run every time.
|
# The following commands are run every time.
|
||||||
|
|
||||||
tools_init
|
|
||||||
update_rd_conf
|
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" \
|
||||||
--title "RetroDECK Finishing Upgrade" \
|
--title "RetroDECK Finishing Upgrade" \
|
||||||
--text="RetroDECK is finishing the upgrade process, please wait."
|
--text="RetroDECK is finishing the upgrade process, please wait."
|
||||||
|
source $rd_conf # Load new config file variables
|
||||||
create_lock
|
create_lock
|
||||||
}
|
}
|
51
retrodeck.sh
51
retrodeck.sh
|
@ -20,7 +20,6 @@ Arguments:
|
||||||
--configurator Starts the RetroDECK Configurator
|
--configurator Starts the RetroDECK Configurator
|
||||||
--compress <file> Compresses target file to .chd format. Supports .cue, .iso and .gdi formats
|
--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-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!)
|
--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
|
||||||
|
@ -41,28 +40,11 @@ https://retrodeck.net
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
--compress*)
|
--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..."
|
cli_compress_file "$2"
|
||||||
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
|
exit
|
||||||
;;
|
;;
|
||||||
--configurator*)
|
--configurator*)
|
||||||
sh /var/config/retrodeck/tools/configurator.sh
|
sh /app/tools/configurator.sh
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
--reset-emulator*)
|
--reset-emulator*)
|
||||||
|
@ -70,13 +52,13 @@ https://retrodeck.net
|
||||||
echo "Available options are: retroarch citra dolphin duckstation melonds pcsx2 ppsspp primehack rpcs3 xemu yuzu all-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
|
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
|
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
|
read -p "You are about to reset $emulator to default settings. Enter 'y' to continue, 'n' to stop: " response
|
||||||
if [[ $response == [yY] ]]; then
|
if [[ $response == [yY] ]]; then
|
||||||
cli_emulator_reset $emulator
|
cli_emulator_reset $emulator
|
||||||
read -p "The process has been completed, press any key to start RetroDECK."
|
read -p "The process has been completed, press Enter key to start RetroDECK."
|
||||||
shift # Continue launch after previous command is finished
|
shift # Continue launch after previous command is finished
|
||||||
else
|
else
|
||||||
read -p "The process has been cancelled, press any key to exit."
|
read -p "The process has been cancelled, press Enter key to exit."
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
@ -84,27 +66,16 @@ https://retrodeck.net
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
--reset-tools*)
|
|
||||||
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-retrodeck*)
|
--reset-retrodeck*)
|
||||||
echo "You are about to reset RetroDECK completely."
|
echo "You are about to reset RetroDECK completely!"
|
||||||
read -p "Press 'y' to continue, 'n' to stop: " response
|
read -p "Enter 'y' to continue, 'n' to stop: " response
|
||||||
if [[ $response == [yY] ]]; then
|
if [[ $response == [yY] ]]; then
|
||||||
rm -f "$lockfile"
|
rm -f "$lockfile"
|
||||||
read -p "The process has been completed, press any key to start the initial RetroDECK setup process."
|
rm -f "$rd_conf"
|
||||||
|
read -p "The process has been completed, press Enter key to start the initial RetroDECK setup process."
|
||||||
shift # Continue launch after previous command is finished
|
shift # Continue launch after previous command is finished
|
||||||
else
|
else
|
||||||
read -p "The process has been cancelled, press any key to exit."
|
read -p "The process has been cancelled, press Enter key to exit."
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
@ -135,6 +106,8 @@ else
|
||||||
finit # Executing First/Force init
|
finit # Executing First/Force init
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
source $rd_conf # Load latest variable values
|
||||||
|
|
||||||
# Check if running in Desktop mode and warn if true, unless desktop_mode_warning=false in retrodeck.cfg
|
# Check if running in Desktop mode and warn if true, unless desktop_mode_warning=false in retrodeck.cfg
|
||||||
|
|
||||||
desktop_mode_warning
|
desktop_mode_warning
|
||||||
|
|
|
@ -11,11 +11,12 @@ source /app/libexec/functions.sh
|
||||||
|
|
||||||
# Welcome
|
# Welcome
|
||||||
# - Move RetroDECK
|
# - Move RetroDECK
|
||||||
# - Change RetroArch Options
|
# - RetroArch Presets
|
||||||
# - Enable/Disable Rewind Setting
|
# - Change Rewind Setting
|
||||||
|
# - Enable/Disable Rewind
|
||||||
# - RetroAchivement Login
|
# - RetroAchivement Login
|
||||||
# - Login prompt
|
# - Login prompt
|
||||||
# - Change Standalone Emulator Options (Behind one-time power user warning dialog)
|
# - Emulator Options (Behind one-time power user warning dialog)
|
||||||
# - Launch RetroArch
|
# - Launch RetroArch
|
||||||
# - Launch Citra
|
# - Launch Citra
|
||||||
# - Launch Dolphin
|
# - Launch Dolphin
|
||||||
|
@ -27,10 +28,13 @@ source /app/libexec/functions.sh
|
||||||
# - Launch RPCS3
|
# - Launch RPCS3
|
||||||
# - Launch XEMU
|
# - Launch XEMU
|
||||||
# - Launch Yuzu
|
# - Launch Yuzu
|
||||||
|
# - Tools and Troubleshooting
|
||||||
|
# - Multi-file game check
|
||||||
|
# - Basic BIOS file check
|
||||||
|
# - Advanced BIOS file check
|
||||||
# - Compress Games
|
# - Compress Games
|
||||||
# - Manual single-game selection
|
# - Manual single-game selection
|
||||||
# - Troubleshooting Tools
|
# - Multi-file compression (CHD)
|
||||||
# - Multi-file game check
|
|
||||||
# - Reset
|
# - Reset
|
||||||
# - Reset Specific Emulator
|
# - Reset Specific Emulator
|
||||||
# - Reset RetroArch
|
# - Reset RetroArch
|
||||||
|
@ -46,7 +50,6 @@ source /app/libexec/functions.sh
|
||||||
# - Reset XEMU
|
# - Reset XEMU
|
||||||
# - Reset Yuzu
|
# - Reset Yuzu
|
||||||
# - Reset All Emulators
|
# - Reset All Emulators
|
||||||
# - Reset Tools
|
|
||||||
# - Reset All
|
# - Reset All
|
||||||
|
|
||||||
# Code for the menus should be put in reverse order, so functions for sub-menus exists before it is called by the parent menu
|
# Code for the menus should be put in reverse order, so functions for sub-menus exists before it is called by the parent menu
|
||||||
|
@ -59,8 +62,7 @@ configurator_reset_dialog() {
|
||||||
--column="Choice" --column="Action" \
|
--column="Choice" --column="Action" \
|
||||||
"Reset Specific Emulator" "Reset only one specific emulator to default settings" \
|
"Reset Specific Emulator" "Reset only one specific emulator to default settings" \
|
||||||
"Reset All Emulators" "Reset all emulators to default settings" \
|
"Reset All Emulators" "Reset all emulators to default settings" \
|
||||||
"Reset Tools" "Reset Tools menu entries" \
|
"Reset RetroDECK" "Reset RetroDECK to default settings" )
|
||||||
"Reset All" "Reset RetroDECK to default settings" )
|
|
||||||
|
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
|
@ -85,58 +87,113 @@ configurator_reset_dialog() {
|
||||||
case $emulator_to_reset in
|
case $emulator_to_reset in
|
||||||
|
|
||||||
"RetroArch" )
|
"RetroArch" )
|
||||||
|
if [[ $(configurator_reset_confirmation_dialog "RetroArch" "Are you sure you want to reset the RetroArch emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
ra_init
|
ra_init
|
||||||
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
||||||
|
else
|
||||||
|
configurator_generic_dialog "Reset process cancelled."
|
||||||
|
configurator_reset_dialog
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Citra" )
|
"Citra" )
|
||||||
|
if [[ $(configurator_reset_confirmation_dialog "Citra" "Are you sure you want to reset the Citra emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
citra_init
|
citra_init
|
||||||
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
||||||
|
else
|
||||||
|
configurator_generic_dialog "Reset process cancelled."
|
||||||
|
configurator_reset_dialog
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Dolphin" )
|
"Dolphin" )
|
||||||
|
if [[ $(configurator_reset_confirmation_dialog "Dolphin" "Are you sure you want to reset the Dolphin emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
dolphin_init
|
dolphin_init
|
||||||
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
||||||
|
else
|
||||||
|
configurator_generic_dialog "Reset process cancelled."
|
||||||
|
configurator_reset_dialog
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Duckstation" )
|
"Duckstation" )
|
||||||
|
if [[ $(configurator_reset_confirmation_dialog "Duckstation" "Are you sure you want to reset the Duckstation emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
duckstation_init
|
duckstation_init
|
||||||
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
||||||
|
else
|
||||||
|
configurator_generic_dialog "Reset process cancelled."
|
||||||
|
configurator_reset_dialog
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"MelonDS" )
|
"MelonDS" )
|
||||||
|
if [[ $(configurator_reset_confirmation_dialog "MelonDS" "Are you sure you want to reset the MelonDS emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
melonds_init
|
melonds_init
|
||||||
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
||||||
|
else
|
||||||
|
configurator_generic_dialog "Reset process cancelled."
|
||||||
|
configurator_reset_dialog
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"PCSX2" )
|
"PCSX2" )
|
||||||
|
if [[ $(configurator_reset_confirmation_dialog "PCSX2" "Are you sure you want to reset the PCSX2 emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
pcsx2_init
|
pcsx2_init
|
||||||
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
||||||
|
else
|
||||||
|
configurator_generic_dialog "Reset process cancelled."
|
||||||
|
configurator_reset_dialog
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"PPSSPP" )
|
"PPSSPP" )
|
||||||
|
if [[ $(configurator_reset_confirmation_dialog "PPSSPP" "Are you sure you want to reset the PPSSPP emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
ppssppsdl_init
|
ppssppsdl_init
|
||||||
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
||||||
|
else
|
||||||
|
configurator_generic_dialog "Reset process cancelled."
|
||||||
|
configurator_reset_dialog
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Primehack" )
|
"Primehack" )
|
||||||
|
if [[ $(configurator_reset_confirmation_dialog "Primehack" "Are you sure you want to reset the Primehack emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
primehack_init
|
primehack_init
|
||||||
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
||||||
|
else
|
||||||
|
configurator_generic_dialog "Reset process cancelled."
|
||||||
|
configurator_reset_dialog
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"RPCS3" )
|
"RPCS3" )
|
||||||
|
if [[ $(configurator_reset_confirmation_dialog "RPCS3" "Are you sure you want to reset the RPCS3 emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
rpcs3_init
|
rpcs3_init
|
||||||
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
||||||
|
else
|
||||||
|
configurator_generic_dialog "Reset process cancelled."
|
||||||
|
configurator_reset_dialog
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"XEMU" )
|
"XEMU" )
|
||||||
|
if [[ $(configurator_reset_confirmation_dialog "XEMU" "Are you sure you want to reset the XEMU emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
xemu_init
|
xemu_init
|
||||||
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
||||||
|
else
|
||||||
|
configurator_generic_dialog "Reset process cancelled."
|
||||||
|
configurator_reset_dialog
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Yuzu" )
|
"Yuzu" )
|
||||||
|
if [[ $(configurator_reset_confirmation_dialog "Yuzu" "Are you sure you want to reset the Yuzu emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
yuzu_init
|
yuzu_init
|
||||||
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
configurator_process_complete_dialog "resetting $emulator_to_reset"
|
||||||
|
else
|
||||||
|
configurator_generic_dialog "Reset process cancelled."
|
||||||
|
configurator_reset_dialog
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
|
@ -147,23 +204,29 @@ configurator_reset_dialog() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Reset All Emulators" )
|
"Reset All Emulators" )
|
||||||
|
if [[ $(configurator_reset_confirmation_dialog "all emulators" "Are you sure you want to reset all emulators to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
ra_init
|
ra_init
|
||||||
standalones_init
|
standalones_init
|
||||||
configurator_process_complete_dialog "resetting all emulators"
|
configurator_process_complete_dialog "resetting all emulators"
|
||||||
|
else
|
||||||
|
configurator_generic_dialog "Reset process cancelled."
|
||||||
|
configurator_reset_dialog
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Reset Tools" )
|
"Reset RetroDECK" )
|
||||||
tools_init
|
if [[ $(configurator_reset_confirmation_dialog "RetroDECK" "Are you sure you want to reset RetroDECK entirely?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
configurator_process_complete_dialog "resetting the tools menu"
|
|
||||||
;;
|
|
||||||
|
|
||||||
"Reset All" )
|
|
||||||
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, where you will go through the initial setup process 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."
|
||||||
rm -f "$lockfile"
|
rm -f "$lockfile"
|
||||||
|
rm -f "$rd_conf"
|
||||||
configurator_process_complete_dialog "resetting RetroDECK"
|
configurator_process_complete_dialog "resetting RetroDECK"
|
||||||
|
else
|
||||||
|
configurator_generic_dialog "Reset process cancelled."
|
||||||
|
configurator_reset_dialog
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
|
@ -218,9 +281,9 @@ configurator_power_user_warning_dialog() {
|
||||||
|
|
||||||
configurator_power_user_changes_dialog() {
|
configurator_power_user_changes_dialog() {
|
||||||
emulator=$(zenity --list \
|
emulator=$(zenity --list \
|
||||||
--title "RetroDECK Configurator Utility - Power User Options" --cancel-label="Back" \
|
--title "RetroDECK Configurator Utility - Emulator 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 \
|
||||||
--text="Which emulator do you want to configure?" \
|
--text="Which emulator do you want to launch?" \
|
||||||
--hide-header \
|
--hide-header \
|
||||||
--column=emulator \
|
--column=emulator \
|
||||||
"RetroArch" \
|
"RetroArch" \
|
||||||
|
@ -306,7 +369,7 @@ configurator_retroarch_rewind_dialog() {
|
||||||
zenity --question \
|
zenity --question \
|
||||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||||
--title "RetroDECK Configurator - Rewind" \
|
--title "RetroDECK Configurator - Rewind" \
|
||||||
--text="Rewind is currently disabled, do you want to enable it?\n\nNOTE:\nThis may impact performance expecially on the latest systems."
|
--text="Rewind is currently disabled, do you want to enable it?\n\nNOTE:\nThis may impact performance on some more demanding systems."
|
||||||
|
|
||||||
if [ $? == 0 ]
|
if [ $? == 0 ]
|
||||||
then
|
then
|
||||||
|
@ -323,7 +386,7 @@ configurator_retroarch_options_dialog() {
|
||||||
--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." )
|
"RetroAchievements Login" "Log into the RetroAchievements service in RetroArch." )
|
||||||
|
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
|
@ -331,33 +394,54 @@ configurator_retroarch_options_dialog() {
|
||||||
configurator_retroarch_rewind_dialog
|
configurator_retroarch_rewind_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Log in to RetroAchivements" )
|
"RetroAchievements Login" )
|
||||||
configurator_retroachivement_dialog
|
configurator_retroachivement_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
configurator_options_dialog
|
configurator_welcome_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
configurator_compress_single_game_dialog() {
|
configurator_compress_single_game_dialog() {
|
||||||
file_to_compress=$(file_browse "Game to compress")
|
local file=$(file_browse "Game to compress")
|
||||||
if [[ ! -z $file_to_compress ]]; then
|
if [[ ! -z "$file" ]]; then
|
||||||
if [[ $(validate_for_chd $file_to_compress) == "true" ]]; then
|
if [[ $(validate_for_chd "$file") == "true" ]]; then
|
||||||
|
local post_compression_cleanup=$(configurator_compression_cleanup_dialog)
|
||||||
|
local filename_no_path=$(basename "$file")
|
||||||
|
local filename_no_extension="${filename_no_path%.*}"
|
||||||
|
local source_file=$(dirname "$(realpath "$file")")"/"$(basename "$file")
|
||||||
|
local dest_file=$(dirname "$(realpath "$file")")"/""$filename_no_extension"
|
||||||
(
|
(
|
||||||
filename_no_path=$(basename $file_to_compress)
|
echo "# Compressing $filename_no_path, please wait..."
|
||||||
filename_no_extension=${filename_no_path%.*}
|
compress_to_chd "$source_file" "$dest_file"
|
||||||
compress_to_chd $(dirname $(realpath $file_to_compress))/$(basename $file_to_compress) $(dirname $(realpath $file_to_compress))/$filename_no_extension
|
if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested
|
||||||
|
if [[ "$file" == *".cue" ]]; then
|
||||||
|
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||||
|
local file_path=$(dirname "$(realpath "$file")")
|
||||||
|
while IFS= read -r line
|
||||||
|
do
|
||||||
|
echo "# Removing file $line"
|
||||||
|
rm -f "$file_path/$line"
|
||||||
|
done < <(printf '%s\n' "$cue_bin_files")
|
||||||
|
echo "# Removing file $filename_no_path"
|
||||||
|
rm -f "$file"
|
||||||
|
else
|
||||||
|
echo "# Removing file $filename_no_path"
|
||||||
|
rm -f "$file"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
) |
|
) |
|
||||||
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" \
|
||||||
--title "RetroDECK Configurator Utility - Compression in Progress" \
|
--title "RetroDECK Configurator Utility - Compression in Progress"
|
||||||
--text="Compressing game $filename_no_path, please wait."
|
configurator_generic_dialog "The compression process is complete!"
|
||||||
|
configurator_compress_games_dialog
|
||||||
else
|
else
|
||||||
configurator_generic_dialog "File type not recognized. Supported file types are .cue, .gdi and .iso"
|
configurator_generic_dialog "File type not recognized. Supported file types are .cue, .gdi and .iso"
|
||||||
configurator_compress_single_game_dialog
|
configurator_compress_games_dialog
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
configurator_generic_dialog "No file selected, returning to main menu"
|
configurator_generic_dialog "No file selected, returning to main menu"
|
||||||
|
@ -365,11 +449,151 @@ configurator_compress_single_game_dialog() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
configurator_compress_games_dialog() {
|
configurator_compress_multi_game_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.
|
# This dialog will display any games it finds to be compressable, from the systems listed under each compression type in
|
||||||
|
local compression_format=$1
|
||||||
|
local compressable_game=""
|
||||||
|
local compressable_games_list=()
|
||||||
|
local all_compressable_games=()
|
||||||
|
local compressable_systems_list=$(sed -n '/\['"$compression_format"'\]/, /\[/{ /\['"$compression_format"'\]/! { /\[/! p } }' $compression_targets | sed '/^$/d')
|
||||||
|
|
||||||
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."
|
while IFS= read -r system # Find and validate all games that are able to be compressed with this compression type
|
||||||
|
do
|
||||||
|
if [[ $compression_format == "chd" ]]; then
|
||||||
|
compression_candidates=$(find "$roms_folder/$system" -type f \( -name "*.cue" -o -name "*.iso" -o -name "*.gdi" \) ! -path "*.m3u*")
|
||||||
|
# TODO: Add ZIP file compression search here
|
||||||
|
fi
|
||||||
|
while IFS= read -r game
|
||||||
|
do
|
||||||
|
if [[ $(validate_for_chd "$game") == "true" ]]; then
|
||||||
|
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||||
|
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||||
|
fi
|
||||||
|
done < <(printf '%s\n' "$compression_candidates")
|
||||||
|
done < <(printf '%s\n' "$compressable_systems_list")
|
||||||
|
|
||||||
|
choice=$(zenity \
|
||||||
|
--list --width=1200 --height=720 \
|
||||||
|
--checklist --hide-column=3 --ok-label="Compress Selected" --extra-button="Compress All" \
|
||||||
|
--separator="," --print-column=3 \
|
||||||
|
--text="Choose which games to compress:" \
|
||||||
|
--column "Compress?" \
|
||||||
|
--column "Game" \
|
||||||
|
--column "Game Full Path" \
|
||||||
|
"${compressable_games_list[@]}")
|
||||||
|
|
||||||
|
local rc=$?
|
||||||
|
if [[ $rc == "0" && ! -z $choice ]]; then # User clicked "Compress Selected" with at least one game selected
|
||||||
|
local post_compression_cleanup=$(configurator_compression_cleanup_dialog)
|
||||||
|
IFS="," read -ra games_to_compress <<< "$choice"
|
||||||
|
(
|
||||||
|
for file in "${games_to_compress[@]}"; do
|
||||||
|
local filename_no_path=$(basename "$file")
|
||||||
|
local filename_no_extension="${filename_no_path%.*}"
|
||||||
|
local source_file=$(dirname "$(realpath "$file")")"/"$(basename "$file")
|
||||||
|
local dest_file=$(dirname "$(realpath "$file")")"/""$filename_no_extension"
|
||||||
|
echo "# Compressing $filename_no_path" # Update Zenity dialog text
|
||||||
|
compress_to_chd "$source_file" "$dest_file"
|
||||||
|
if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested
|
||||||
|
if [[ "$file" == *".cue" ]]; then
|
||||||
|
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||||
|
local file_path=$(dirname "$(realpath "$file")")
|
||||||
|
while IFS= read -r line
|
||||||
|
do
|
||||||
|
echo "# Removing file $line"
|
||||||
|
rm -f "$file_path/$line"
|
||||||
|
done < <(printf '%s\n' "$cue_bin_files")
|
||||||
|
echo "# Removing file $filename_no_path"
|
||||||
|
rm -f $(realpath "$file")
|
||||||
|
else
|
||||||
|
echo "# Removing file $filename_no_path"
|
||||||
|
rm -f "$(realpath "$file")"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
) |
|
||||||
|
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"
|
||||||
|
configurator_generic_dialog "The compression process is complete!"
|
||||||
|
configurator_compress_games_dialog
|
||||||
|
else
|
||||||
|
if [[ ! -z $choice ]]; then # User clicked "Compress All"
|
||||||
|
local post_compression_cleanup=$(configurator_compression_cleanup_dialog)
|
||||||
|
(
|
||||||
|
for file in "${all_compressable_games[@]}"; do
|
||||||
|
local filename_no_path=$(basename "$file")
|
||||||
|
local filename_no_extension="${filename_no_path%.*}"
|
||||||
|
local source_file=$(dirname "$(realpath "$file")")"/"$(basename "$file")
|
||||||
|
local dest_file=$(dirname "$(realpath "$file")")"/""$filename_no_extension"
|
||||||
|
echo "# Compressing $filename_no_path" # Update Zenity dialog text
|
||||||
|
compress_to_chd "$source_file" "$dest_file"
|
||||||
|
if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested
|
||||||
|
if [[ "$file" == *".cue" ]]; then
|
||||||
|
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||||
|
local file_path=$(dirname "$(realpath "$file")")
|
||||||
|
while IFS= read -r line
|
||||||
|
do
|
||||||
|
echo "# Removing file $line"
|
||||||
|
rm -f "$file_path/$line"
|
||||||
|
done < <(printf '%s\n' "$cue_bin_files")
|
||||||
|
echo "# Removing file $filename_no_path"
|
||||||
|
rm -f $(realpath "$file")
|
||||||
|
else
|
||||||
|
echo "# Removing file $filename_no_path"
|
||||||
|
rm -f $(realpath "$file")
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
) |
|
||||||
|
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"
|
||||||
|
configurator_generic_dialog "The compression process is complete!"
|
||||||
|
configurator_compress_games_dialog
|
||||||
|
else
|
||||||
|
configurator_compress_games_dialog
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
configurator_compression_cleanup_dialog() {
|
||||||
|
zenity --icon-name=net.retrodeck.retrodeck --question --no-wrap --cancel-label="No" --ok-label="Yes" \
|
||||||
|
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||||
|
--title "RetroDECK Compression Cleanup" \
|
||||||
|
--text="Do you want to remove old files after they are compressed?\n\nClicking \"No\" will leave all files behind which will need to be cleaned up manually and may result in game duplicates showing in the RetroDECK library."
|
||||||
|
local rc=$? # Capture return code, as "Yes" button has no text value
|
||||||
|
if [[ $rc == "0" ]]; then # If user clicked "Yes"
|
||||||
|
echo "true"
|
||||||
|
else # If "No" was clicked
|
||||||
|
echo "false"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
configurator_compress_games_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" \
|
||||||
|
"Compress Single Game" "Compress a single game into a compatible format" \
|
||||||
|
"Compress Multiple Games - CHD" "Compress one or more games compatible with the CHD format" )
|
||||||
|
|
||||||
|
case $choice in
|
||||||
|
|
||||||
|
"Compress Single Game" )
|
||||||
configurator_compress_single_game_dialog
|
configurator_compress_single_game_dialog
|
||||||
|
;;
|
||||||
|
|
||||||
|
"Compress Multiple Games - CHD" )
|
||||||
|
configurator_compress_multi_game_dialog "chd"
|
||||||
|
;;
|
||||||
|
|
||||||
|
# TODO: Add ZIP compression option
|
||||||
|
|
||||||
|
"" ) # No selection made or Back button clicked
|
||||||
|
configurator_welcome_dialog
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
configurator_check_multifile_game_structure() {
|
configurator_check_multifile_game_structure() {
|
||||||
|
@ -394,11 +618,11 @@ configurator_check_bios_files_basic() {
|
||||||
do
|
do
|
||||||
bios_file_found="No"
|
bios_file_found="No"
|
||||||
bios_hash_matched="No"
|
bios_hash_matched="No"
|
||||||
if [[ -f "$bios_dir/$bios_subdir$bios_file" ]]; then
|
if [[ -f "$bios_folder/$bios_subdir$bios_file" ]]; then
|
||||||
bios_file_found="Yes"
|
bios_file_found="Yes"
|
||||||
if [[ $bios_hash == "Unknown" ]]; then
|
if [[ $bios_hash == "Unknown" ]]; then
|
||||||
bios_hash_matched="Unknown"
|
bios_hash_matched="Unknown"
|
||||||
elif [[ $(md5sum "$bios_dir/$bios_subdir$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then
|
elif [[ $(md5sum "$bios_folder/$bios_subdir$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then
|
||||||
bios_hash_matched="Yes"
|
bios_hash_matched="Yes"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -421,11 +645,11 @@ configurator_check_bios_files_advanced() {
|
||||||
do
|
do
|
||||||
bios_file_found="No"
|
bios_file_found="No"
|
||||||
bios_hash_matched="No"
|
bios_hash_matched="No"
|
||||||
if [[ -f "$bios_dir/$bios_subdir$bios_file" ]]; then
|
if [[ -f "$bios_folder/$bios_subdir$bios_file" ]]; then
|
||||||
bios_file_found="Yes"
|
bios_file_found="Yes"
|
||||||
if [[ $bios_hash == "Unknown" ]]; then
|
if [[ $bios_hash == "Unknown" ]]; then
|
||||||
bios_hash_matched="Unknown"
|
bios_hash_matched="Unknown"
|
||||||
elif [[ $(md5sum "$bios_dir/$bios_subdir$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then
|
elif [[ $(md5sum "$bios_folder/$bios_subdir$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then
|
||||||
bios_hash_matched="Yes"
|
bios_hash_matched="Yes"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -448,12 +672,19 @@ 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" \
|
||||||
|
"Move RetroDECK" "Move RetroDECK files between internal/SD card or to a custom location" \
|
||||||
"Multi-file game structure check" "Verify the proper structure of multi-file or multi-disc games" \
|
"Multi-file game structure check" "Verify the proper structure of multi-file or multi-disc games" \
|
||||||
"Basic BIOS file check" "Show a list of systems that BIOS files are found for" \
|
"Basic BIOS file check" "Show a list of systems that BIOS files are found for" \
|
||||||
"Advanced BIOS file check" "Show advanced information about common BIOS files" )
|
"Advanced BIOS file check" "Show advanced information about common BIOS files" \
|
||||||
|
"Compress Games" "Compress games to CHD format for systems that support it" )
|
||||||
|
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
|
"Move RetroDECK" )
|
||||||
|
configurator_generic_dialog "This option will move the RetroDECK data folder (ROMs, saves, BIOS etc.) to a new location.\n\nPlease choose where to move the RetroDECK data folder."
|
||||||
|
configurator_move_dialog
|
||||||
|
;;
|
||||||
|
|
||||||
"Multi-file game structure check" )
|
"Multi-file game structure check" )
|
||||||
configurator_check_multifile_game_structure
|
configurator_check_multifile_game_structure
|
||||||
;;
|
;;
|
||||||
|
@ -466,6 +697,10 @@ configurator_troubleshooting_tools_dialog() {
|
||||||
configurator_check_bios_files_advanced
|
configurator_check_bios_files_advanced
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
"Compress Games" )
|
||||||
|
configurator_compress_games_dialog
|
||||||
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
configurator_welcome_dialog
|
configurator_welcome_dialog
|
||||||
;;
|
;;
|
||||||
|
@ -628,43 +863,25 @@ configurator_move_dialog() {
|
||||||
}
|
}
|
||||||
|
|
||||||
configurator_welcome_dialog() {
|
configurator_welcome_dialog() {
|
||||||
# Clear the variables
|
|
||||||
source=
|
|
||||||
destination=
|
|
||||||
action=
|
|
||||||
setting=
|
|
||||||
setting_value=
|
|
||||||
|
|
||||||
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." \
|
"RetroArch Presets" "Change RetroArch presets, log into RetroAchievements etc." \
|
||||||
"Change RetroArch Options" "Change RetroArch presets, log into RetroAchievements etc." \
|
"Emulator Options" "Launch and configure each emulators settings (for advanced users)" \
|
||||||
"Change Standalone Emulator Options" "Run emulators standalone to make advanced config changes." \
|
"Tools and Troubleshooting" "Move RetroDECK to a new location, compress games and perform basic troubleshooting" \
|
||||||
"Compress Games" "Compress games to CHD format for systems that support it." \
|
"Reset" "Reset specific parts or all of RetroDECK" )
|
||||||
"Troubleshooting Tools" "Run RetroDECK troubleshooting tools for common issues." \
|
|
||||||
"Reset" "Reset specific parts or all of RetroDECK." )
|
|
||||||
|
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Move Files" )
|
"RetroArch Presets" )
|
||||||
configurator_generic_dialog "This option will move the RetroDECK data folder (ROMs, saves, BIOS etc.) to a new location.\n\nPlease choose where to move the RetroDECK data folder."
|
|
||||||
configurator_move_dialog
|
|
||||||
;;
|
|
||||||
|
|
||||||
"Change RetroArch Options" )
|
|
||||||
configurator_retroarch_options_dialog
|
configurator_retroarch_options_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Change Standalone Emulator Options" )
|
"Emulator Options" )
|
||||||
configurator_power_user_warning_dialog
|
configurator_power_user_warning_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Compress Games" )
|
"Tools and Troubleshooting" )
|
||||||
configurator_compress_games_dialog
|
|
||||||
;;
|
|
||||||
|
|
||||||
"Troubleshooting Tools" )
|
|
||||||
configurator_troubleshooting_tools_dialog
|
configurator_troubleshooting_tools_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue