Cooker 0.6.0b icenine451

Merge pull request #219 from icenine451/cooker-0.6.0b-icenine451
This commit is contained in:
XargonWan 2022-11-24 10:17:44 +01:00 committed by GitHub
commit 1a21cf0961
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
37 changed files with 9938 additions and 821 deletions

View file

@ -0,0 +1,446 @@
[UI]
SettingsVersion = 1
InhibitScreensaver = true
ConfirmShutdown = true
StartPaused = false
PauseOnFocusLoss = false
StartFullscreen = true
DoubleClickTogglesFullscreen = true
HideMouseCursor = false
RenderToSeparateWindow = false
HideMainWindowWhenRunning = false
DisableWindowResize = false
Theme = darkfusion
[Folders]
Bios = ~/retrodeck/roms/bios
Snapshots = ~/retrodeck/screenshots
Savestates = ~/retrodeck/states/ps2/pcsx2
MemoryCards = ~/retrodeck/saves/ps2/memcards
Logs = ~/retrodeck/.logs
Cheats = /var/config/PCSX2/cheats
CheatsWS = /var/config/PCSX2/cheats_ws
CheatsNI = cheats_ni
Cache = /var/config/PCSX2/cache
Textures = /var/config/PCSX2/textures
InputProfiles = inputprofiles
[EmuCore]
CdvdVerboseReads = false
CdvdDumpBlocks = false
CdvdShareWrite = false
EnablePatches = true
EnableCheats = false
EnablePINE = false
EnableWideScreenPatches = false
EnableNoInterlacingPatches = false
EnableRecordingTools = true
EnableGameFixes = true
SaveStateOnShutdown = false
EnableDiscordPresence = false
InhibitScreensaver = true
ConsoleToStdio = false
HostFs = false
PatchBios = false
PatchRegion =
BackupSavestate = true
SavestateZstdCompression = true
McdEnableEjection = true
McdFolderAutoManage = true
WarnAboutUnsafeSettings = true
GzipIsoIndexTemplate = $(f).pindex.tmp
BlockDumpSaveDirectory =
EnableFastBoot = true
[EmuCore/Speedhacks]
EECycleRate = 0
EECycleSkip = 0
fastCDVD = false
IntcStat = true
WaitLoop = true
vuFlagHack = true
vuThread = false
vu1Instant = true
[EmuCore/CPU]
FPU.DenormalsAreZero = true
FPU.FlushToZero = true
FPU.Roundmode = 3
AffinityControlMode = 0
VU.DenormalsAreZero = true
VU.FlushToZero = true
VU.Roundmode = 3
[EmuCore/CPU/Recompiler]
EnableEE = true
EnableIOP = true
EnableEECache = false
EnableVU0 = true
EnableVU1 = true
vuOverflow = true
vuExtraOverflow = false
vuSignOverflow = false
vuUnderflow = false
fpuOverflow = true
fpuExtraOverflow = false
fpuFullMode = false
StackFrameChecks = false
PreBlockCheckEE = false
PreBlockCheckIOP = false
[EmuCore/GS]
VsyncQueueSize = 2
FrameLimitEnable = true
VsyncEnable = 0
FramerateNTSC = 59.94
FrameratePAL = 50
SyncToHostRefreshRate = false
AspectRatio = Auto 4:3/3:2
FMVAspectRatioSwitch = Off
Zoom = 100
StretchY = 100
CropLeft = 0
CropTop = 0
CropRight = 0
CropBottom = 0
pcrtc_antiblur = true
disable_interlace_offset = false
pcrtc_offsets = false
pcrtc_overscan = false
IntegerScaling = false
linear_present = true
UseDebugDevice = false
UseBlitSwapChain = false
disable_shader_cache = false
DisableDualSourceBlend = false
DisableFramebufferFetch = false
ThreadedPresentation = false
SkipDuplicateFrames = false
OsdShowMessages = true
OsdShowSpeed = false
OsdShowFPS = false
OsdShowCPU = false
OsdShowGPU = false
OsdShowResolution = false
OsdShowGSStats = false
OsdShowIndicators = true
OsdShowSettings = false
OsdShowInputs = false
HWSpinGPUForReadbacks = false
HWSpinCPUForReadbacks = false
paltex = false
autoflush_sw = true
preload_frame_with_gs_data = false
wrap_gs_mem = false
mipmap = true
UserHacks = false
UserHacks_align_sprite_X = false
UserHacks_AutoFlush = false
UserHacks_CPU_FB_Conversion = false
UserHacks_DisableDepthSupport = false
UserHacks_DisablePartialInvalidation = false
UserHacks_Disable_Safe_Features = false
UserHacks_merge_pp_sprite = false
UserHacks_WildHack = false
UserHacks_TextureInsideRt = false
fxaa = false
ShadeBoost = false
shaderfx = false
dump = false
save = false
savef = false
savet = false
savez = false
DumpReplaceableTextures = false
DumpReplaceableMipmaps = false
DumpTexturesWithFMVActive = false
DumpDirectTextures = true
DumpPaletteTextures = true
LoadTextureReplacements = false
LoadTextureReplacementsAsync = true
PrecacheTextureReplacements = false
deinterlace = 7
OsdScale = 100
Renderer = -1
upscale_multiplier = 1
mipmap_hw = -1
accurate_blending_unit = 1
crc_hack_level = -1
filter = 2
texture_preloading = 2
GSDumpCompression = 1
HWDownloadMode = 0
dithering_ps2 = 2
MaxAnisotropy = 0
extrathreads = 2
extrathreads_height = 4
TVShader = 0
UserHacks_SkipDraw_Start = 0
UserHacks_SkipDraw_End = 0
UserHacks_Half_Bottom_Override = -1
UserHacks_HalfPixelOffset = 0
UserHacks_round_sprite_offset = 0
UserHacks_TCOffsetX = 0
UserHacks_TCOffsetY = 0
UserHacks_CPUSpriteRenderBW = 0
TriFilter = -1
OverrideTextureBarriers = -1
OverrideGeometryShaders = -1
ShadeBoost_Brightness = 50
ShadeBoost_Contrast = 50
ShadeBoost_Saturation = 50
saven = 0
savel = 5000
Adapter =
shaderfx_conf = shaders/GS_FX_Settings.ini
shaderfx_glsl = shaders/GS.fx
[SPU2/Mixing]
Interpolation = 5
FinalVolume = 100
VolumeAdjustC = 0
VolumeAdjustFL = 0
VolumeAdjustFR = 0
VolumeAdjustBL = 0
VolumeAdjustBR = 0
VolumeAdjustSL = 0
VolumeAdjustSR = 0
VolumeAdjustLFE = 0
[SPU2/Output]
OutputModule = cubeb
BackendName =
Latency = 100
SynchMode = 0
SpeakerConfiguration = 0
DplDecodingLevel = 0
[DEV9/Eth]
EthEnable = false
EthApi = Unset
EthDevice =
EthLogDNS = false
InterceptDHCP = false
PS2IP = 0.0.0.0
Mask = 0.0.0.0
Gateway = 0.0.0.0
DNS1 = 0.0.0.0
DNS2 = 0.0.0.0
AutoMask = true
AutoGateway = true
ModeDNS1 = Auto
ModeDNS2 = Auto
[DEV9/Eth/Hosts]
Count = 0
[DEV9/Hdd]
HddEnable = false
HddFile = DEV9hdd.raw
HddSizeSectors = 83886080
[EmuCore/Gamefixes]
VuAddSubHack = false
FpuMulHack = false
FpuNegDivHack = false
XgKickHack = false
EETimingHack = false
SoftwareRendererFMVHack = false
SkipMPEGHack = false
OPHFlagHack = false
DMABusyHack = false
VIFFIFOHack = false
VIF1StallHack = false
GIFFIFOHack = false
GoemonTlbHack = false
IbitHack = false
VUSyncHack = false
VUOverflowHack = false
BlitInternalFPSHack = false
[EmuCore/Profiler]
Enabled = false
RecBlocks_EE = true
RecBlocks_IOP = true
RecBlocks_VU0 = true
RecBlocks_VU1 = true
[EmuCore/Debugger]
ShowDebuggerOnStart = false
AlignMemoryWindowStart = true
FontWidth = 8
FontHeight = 12
WindowWidth = 0
WindowHeight = 0
MemoryViewBytesPerRow = 16
[EmuCore/TraceLog]
Enabled = false
EE.bitset = 0
IOP.bitset = 0
[Achievements]
Enabled = false
TestMode = false
UnofficialTestMode = false
RichPresence = true
ChallengeMode = false
Leaderboards = true
SoundEffects = true
PrimedIndicators = true
[Filenames]
BIOS =
[Framerate]
NominalScalar = 1
TurboScalar = 2
SlomoScalar = 0.5
[MemoryCards]
Slot1_Enable = true
Slot1_Filename = Mcd001.ps2
Slot2_Enable = true
Slot2_Filename = Mcd002.ps2
Multitap1_Slot2_Enable = false
Multitap1_Slot2_Filename = Mcd-Multitap1-Slot02.ps2
Multitap1_Slot3_Enable = false
Multitap1_Slot3_Filename = Mcd-Multitap1-Slot03.ps2
Multitap1_Slot4_Enable = false
Multitap1_Slot4_Filename = Mcd-Multitap1-Slot04.ps2
Multitap2_Slot2_Enable = false
Multitap2_Slot2_Filename = Mcd-Multitap2-Slot02.ps2
Multitap2_Slot3_Enable = false
Multitap2_Slot3_Filename = Mcd-Multitap2-Slot03.ps2
Multitap2_Slot4_Enable = false
Multitap2_Slot4_Filename = Mcd-Multitap2-Slot04.ps2
[Logging]
EnableSystemConsole = false
EnableFileLogging = false
EnableTimestamps = true
EnableVerbose = false
EnableEEConsole = false
EnableIOPConsole = false
EnableInputRecordingLogs = true
EnableControllerLogs = false
[InputSources]
Keyboard = true
Mouse = true
SDL = true
SDLControllerEnhancedMode = false
[Hotkeys]
ToggleFullscreen = Keyboard/Alt & Keyboard/Return
CycleAspectRatio = Keyboard/F6
CycleInterlaceMode = Keyboard/F5
CycleMipmapMode = Keyboard/Insert
GSDumpMultiFrame = Keyboard/Control & Keyboard/Shift & Keyboard/F8
Screenshot = SDL-0/Back & SDL-0/A
GSDumpSingleFrame = Keyboard/Shift & Keyboard/F8
ToggleSoftwareRendering = Keyboard/F9
InputRecToggleMode = Keyboard/Shift & Keyboard/R
LoadStateFromSlot = SDL-0/Back & SDL-0/LeftShoulder
SaveStateToSlot = SDL-0/Back & SDL-0/RightShoulder
NextSaveStateSlot = SDL-0/Back & SDL-0/DPadUp
PreviousSaveStateSlot = SDL-0/Back & SDL-0/DPadDown
OpenPauseMenu = SDL-0/Back & SDL-0/Y
ToggleFrameLimit = Keyboard/F4
TogglePause = SDL-0/Back & SDL-0/B
ToggleSlowMotion = Keyboard/Shift & Keyboard/Backtab
ToggleTurbo = Keyboard/Tab
HoldTurbo = Keyboard/L
ShutdownVM = SDL-0/Start & SDL-0/Back
[Pad]
MultitapPort1 = false
MultitapPort2 = false
PointerXScale = 8
PointerYScale = 8
[Pad1]
Type = DualShock2
Deadzone = 0.000000
AxisScale = 1.330000
LargeMotorScale = 1.000000
SmallMotorScale = 1.000000
PressureModifier = 0.500000
Up = SDL-0/DPadUp
Right = SDL-0/DPadRight
Down = SDL-0/DPadDown
Left = SDL-0/DPadLeft
Triangle = SDL-0/Y
Circle = SDL-0/B
Cross = SDL-0/A
Square = SDL-0/X
Select = SDL-0/Back
Start = SDL-0/Start
L1 = SDL-0/LeftShoulder
L2 = SDL-0/+LeftTrigger
R1 = SDL-0/RightShoulder
R2 = SDL-0/+RightTrigger
L3 = SDL-0/LeftStick
R3 = SDL-0/RightStick
LUp = SDL-0/-LeftY
LRight = SDL-0/+LeftX
LDown = SDL-0/+LeftY
LLeft = SDL-0/-LeftX
RUp = SDL-0/-RightY
RRight = SDL-0/+RightX
RDown = SDL-0/+RightY
RLeft = SDL-0/-RightX
SmallMotor = SDL-0/SmallMotor
LargeMotor = SDL-0/LargeMotor
[Pad2]
Type = None
[Pad3]
Type = None
[Pad4]
Type = None
[Pad5]
Type = None
[Pad6]
Type = None
[Pad7]
Type = None
[Pad8]
Type = None

View file

@ -299,7 +299,7 @@ Multitap2_Slot4_Filename = Mcd-Multitap2-Slot04.ps2
Bios = ~/retrodeck/bios Bios = ~/retrodeck/bios
Snapshots = ~/retrodeck/screenshots Snapshots = ~/retrodeck/screenshots
SaveStates = ~/retrodeck/states/ps2/pcsx2 SaveStates = ~/retrodeck/states/ps2/pcsx2
MemoryCards = ~/retrodeck/saves/ps2/memcards MemoryCards = ~/retrodeck/saves/ps2/pcsx2/memcards
Logs = logs Logs = logs
Cheats = cheats Cheats = cheats
CheatsWS = cheats_ws CheatsWS = cheats_ws

View file

@ -0,0 +1,501 @@
[Audio]
enable_audio_stretching=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=true
mic_input_type=0
mic_input_type\default=true
output_device=auto
output_device\default=true
output_engine=auto
output_engine\default=true
volume=@Variant(\0\0\0\x87?\x80\0\0)
volume\default=true
[Camera]
camera_inner_config=
camera_inner_config\default=true
camera_inner_flip=0
camera_inner_flip\default=true
camera_inner_name=blank
camera_inner_name\default=true
camera_outer_left_config=
camera_outer_left_config\default=true
camera_outer_left_flip=0
camera_outer_left_flip\default=true
camera_outer_left_name=blank
camera_outer_left_name\default=true
camera_outer_right_config=
camera_outer_right_config\default=true
camera_outer_right_flip=0
camera_outer_right_flip\default=true
camera_outer_right_name=blank
camera_outer_right_name\default=true
[Controls]
profile=0
profile\default=true
profiles\1\button_a="code:65,engine:keyboard"
profiles\1\button_a\default=true
profiles\1\button_b="code:83,engine:keyboard"
profiles\1\button_b\default=true
profiles\1\button_debug="code:79,engine:keyboard"
profiles\1\button_debug\default=true
profiles\1\button_down="code:71,engine:keyboard"
profiles\1\button_down\default=true
profiles\1\button_gpio14="code:80,engine:keyboard"
profiles\1\button_gpio14\default=true
profiles\1\button_home="code:66,engine:keyboard"
profiles\1\button_home\default=true
profiles\1\button_l="code:81,engine:keyboard"
profiles\1\button_l\default=true
profiles\1\button_left="code:70,engine:keyboard"
profiles\1\button_left\default=true
profiles\1\button_r="code:87,engine:keyboard"
profiles\1\button_r\default=true
profiles\1\button_right="code:72,engine:keyboard"
profiles\1\button_right\default=true
profiles\1\button_select="code:78,engine:keyboard"
profiles\1\button_select\default=true
profiles\1\button_start="code:77,engine:keyboard"
profiles\1\button_start\default=true
profiles\1\button_up="code:84,engine:keyboard"
profiles\1\button_up\default=true
profiles\1\button_x="code:90,engine:keyboard"
profiles\1\button_x\default=true
profiles\1\button_y="code:88,engine:keyboard"
profiles\1\button_y\default=true
profiles\1\button_zl="code:49,engine:keyboard"
profiles\1\button_zl\default=true
profiles\1\button_zr="code:50,engine:keyboard"
profiles\1\button_zr\default=true
profiles\1\c_stick="down:code$075$1engine$0keyboard,engine:analog_from_button,left:code$074$1engine$0keyboard,modifier:code$068$1engine$0keyboard,modifier_scale:0.500000,right:code$076$1engine$0keyboard,up:code$073$1engine$0keyboard"
profiles\1\c_stick\default=true
profiles\1\circle_pad="down:code$016777237$1engine$0keyboard,engine:analog_from_button,left:code$016777234$1engine$0keyboard,modifier:code$068$1engine$0keyboard,modifier_scale:0.500000,right:code$016777236$1engine$0keyboard,up:code$016777235$1engine$0keyboard"
profiles\1\circle_pad\default=true
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\name=default
profiles\1\name\default=true
profiles\1\touch_device=engine:emu_window
profiles\1\touch_device\default=true
profiles\1\touch_from_button_map=0
profiles\1\touch_from_button_map\default=true
profiles\1\udp_input_address=127.0.0.1
profiles\1\udp_input_address\default=true
profiles\1\udp_input_port=26760
profiles\1\udp_input_port\default=true
profiles\1\udp_pad_index=0
profiles\1\udp_pad_index\default=true
profiles\1\use_touch_from_button=false
profiles\1\use_touch_from_button\default=true
profiles\size=1
touch_from_button_maps\1\entries\size=0
touch_from_button_maps\1\name=default
touch_from_button_maps\1\name\default=true
touch_from_button_maps\size=1
[Core]
cpu_clock_percentage=100
cpu_clock_percentage\default=true
use_cpu_jit=true
use_cpu_jit\default=true
[Data%20Storage]
nand_directory=
nand_directory\default=true
sdmc_directory=
sdmc_directory\default=true
use_virtual_sd=true
use_virtual_sd\default=true
[Debugging]
LLE\AC=false
LLE\AC\default=true
LLE\ACT=false
LLE\ACT\default=true
LLE\AM=false
LLE\AM\default=true
LLE\BOSS=false
LLE\BOSS\default=true
LLE\CAM=false
LLE\CAM\default=true
LLE\CDC=false
LLE\CDC\default=true
LLE\CECD=false
LLE\CECD\default=true
LLE\CFG=false
LLE\CFG\default=true
LLE\CSND=false
LLE\CSND\default=true
LLE\DLP=false
LLE\DLP\default=true
LLE\DSP=false
LLE\DSP\default=true
LLE\ERR=false
LLE\ERR\default=true
LLE\FRD=false
LLE\FRD\default=true
LLE\FS=false
LLE\FS\default=true
LLE\GPIO=false
LLE\GPIO\default=true
LLE\GSP=false
LLE\GSP\default=true
LLE\HID=false
LLE\HID\default=true
LLE\HTTP=false
LLE\HTTP\default=true
LLE\I2C=false
LLE\I2C\default=true
LLE\IR=false
LLE\IR\default=true
LLE\LDR=false
LLE\LDR\default=true
LLE\MCU=false
LLE\MCU\default=true
LLE\MIC=false
LLE\MIC\default=true
LLE\MP=false
LLE\MP\default=true
LLE\MVD=false
LLE\MVD\default=true
LLE\NDM=false
LLE\NDM\default=true
LLE\NEWS=false
LLE\NEWS\default=true
LLE\NFC=false
LLE\NFC\default=true
LLE\NIM=false
LLE\NIM\default=true
LLE\NS=false
LLE\NS\default=true
LLE\NWM=false
LLE\NWM\default=true
LLE\PDN=false
LLE\PDN\default=true
LLE\PM=false
LLE\PM\default=true
LLE\PS=false
LLE\PS\default=true
LLE\PTM=false
LLE\PTM\default=true
LLE\PXI=false
LLE\PXI\default=true
LLE\QTM=false
LLE\QTM\default=true
LLE\SOC=false
LLE\SOC\default=true
LLE\SPI=false
LLE\SPI\default=true
LLE\SSL=false
LLE\SSL\default=true
gdbstub_port=24689
gdbstub_port\default=true
record_frame_times=false
use_gdbstub=false
use_gdbstub\default=true
[Layout]
custom_bottom_bottom=480
custom_bottom_bottom\default=true
custom_bottom_left=40
custom_bottom_left\default=true
custom_bottom_right=360
custom_bottom_right\default=true
custom_bottom_top=240
custom_bottom_top\default=true
custom_layout=false
custom_layout\default=true
custom_top_bottom=240
custom_top_bottom\default=true
custom_top_left=0
custom_top_left\default=true
custom_top_right=400
custom_top_right\default=true
custom_top_top=0
custom_top_top\default=true
factor_3d=0
factor_3d\default=true
filter_mode=true
filter_mode\default=true
layout_option=0
pp_shader_name=none (builtin)
pp_shader_name\default=true
render_3d=0
render_3d\default=true
swap_screen=false
swap_screen\default=true
upright_screen=false
upright_screen\default=true
[Miscellaneous]
log_filter=*:Info
log_filter\default=true
[Renderer]
bg_blue=0
bg_blue\default=true
bg_green=0
bg_green\default=true
bg_red=0
bg_red\default=true
frame_limit=100
frame_limit\default=true
frame_limit_alternate=200
frame_limit_alternate\default=true
resolution_factor=1
resolution_factor\default=true
shaders_accurate_mul=true
shaders_accurate_mul\default=true
texture_filter_name=none
texture_filter_name\default=true
use_disk_shader_cache=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\default=true
use_hw_shader=true
use_hw_shader\default=true
use_shader_jit=true
use_shader_jit\default=true
use_vsync_new=true
use_vsync_new\default=true
[System]
init_clock=0
init_clock\default=true
init_time=946681277
init_time\default=true
is_new_3ds=true
is_new_3ds\default=true
region_value=-1
region_value\default=true
[UI]
GameList\hideNoIcon=false
GameList\hideNoIcon\default=true
GameList\iconSize=2
GameList\iconSize\default=true
GameList\row1=2
GameList\row1\default=true
GameList\row2=0
GameList\row2\default=true
GameList\singleLineMode=false
GameList\singleLineMode\default=true
Multiplayer\game_id=0
Multiplayer\game_id\default=true
Multiplayer\host_type=0
Multiplayer\host_type\default=true
Multiplayer\ip=
Multiplayer\ip\default=true
Multiplayer\ip_ban_list\size=0
Multiplayer\max_player=8
Multiplayer\max_player\default=true
Multiplayer\nickname=
Multiplayer\nickname\default=true
Multiplayer\port=24872
Multiplayer\port\default=true
Multiplayer\room_description=
Multiplayer\room_description\default=true
Multiplayer\room_name=
Multiplayer\room_name\default=true
Multiplayer\room_nickname=
Multiplayer\room_nickname\default=true
Multiplayer\room_port=24872
Multiplayer\room_port\default=true
Multiplayer\username_ban_list\size=0
Paths\gamedirs\1\deep_scan=false
Paths\gamedirs\1\deep_scan\default=true
Paths\gamedirs\1\expanded=true
Paths\gamedirs\1\expanded\default=true
Paths\gamedirs\1\path=INSTALLED
Paths\gamedirs\2\deep_scan=false
Paths\gamedirs\2\deep_scan\default=true
Paths\gamedirs\2\expanded=true
Paths\gamedirs\2\expanded\default=true
Paths\gamedirs\2\path=SYSTEM
Paths\gamedirs\3\deep_scan=false
Paths\gamedirs\3\deep_scan\default=true
Paths\gamedirs\3\expanded=true
Paths\gamedirs\3\expanded\default=true
Paths\gamedirs\3\path=
Paths\gamedirs\size=3
Paths\language=en
Paths\language\default=false
Paths\moviePlaybackPath=
Paths\movieRecordPath=
Paths\recentFiles=@Invalid()
Paths\romsPath=
Paths\screenshotPath=
Paths\symbolsPath=
Paths\videoDumpingPath=
Shortcuts\Main%20Window\Advance%20Frame\Context=2
Shortcuts\Main%20Window\Advance%20Frame\Context\default=true
Shortcuts\Main%20Window\Advance%20Frame\KeySeq=\\
Shortcuts\Main%20Window\Advance%20Frame\KeySeq\default=true
Shortcuts\Main%20Window\Capture%20Screenshot\Context=2
Shortcuts\Main%20Window\Capture%20Screenshot\Context\default=true
Shortcuts\Main%20Window\Capture%20Screenshot\KeySeq=Ctrl+P
Shortcuts\Main%20Window\Capture%20Screenshot\KeySeq\default=true
Shortcuts\Main%20Window\Continue\Pause%20Emulation\Context=1
Shortcuts\Main%20Window\Continue\Pause%20Emulation\Context\default=true
Shortcuts\Main%20Window\Continue\Pause%20Emulation\KeySeq=F4
Shortcuts\Main%20Window\Continue\Pause%20Emulation\KeySeq\default=true
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\Context=2
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\Context\default=true
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\KeySeq=-
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\KeySeq\default=true
Shortcuts\Main%20Window\Exit%20Citra\Context=1
Shortcuts\Main%20Window\Exit%20Citra\Context\default=true
Shortcuts\Main%20Window\Exit%20Citra\KeySeq=Ctrl+Q
Shortcuts\Main%20Window\Exit%20Citra\KeySeq\default=true
Shortcuts\Main%20Window\Exit%20Fullscreen\Context=1
Shortcuts\Main%20Window\Exit%20Fullscreen\Context\default=true
Shortcuts\Main%20Window\Exit%20Fullscreen\KeySeq=Esc
Shortcuts\Main%20Window\Exit%20Fullscreen\KeySeq\default=true
Shortcuts\Main%20Window\Fullscreen\Context=1
Shortcuts\Main%20Window\Fullscreen\Context\default=true
Shortcuts\Main%20Window\Fullscreen\KeySeq=F11
Shortcuts\Main%20Window\Fullscreen\KeySeq\default=true
Shortcuts\Main%20Window\Increase%20Speed%20Limit\Context=2
Shortcuts\Main%20Window\Increase%20Speed%20Limit\Context\default=true
Shortcuts\Main%20Window\Increase%20Speed%20Limit\KeySeq=+
Shortcuts\Main%20Window\Increase%20Speed%20Limit\KeySeq\default=true
Shortcuts\Main%20Window\Load%20Amiibo\Context=2
Shortcuts\Main%20Window\Load%20Amiibo\Context\default=true
Shortcuts\Main%20Window\Load%20Amiibo\KeySeq=F2
Shortcuts\Main%20Window\Load%20Amiibo\KeySeq\default=true
Shortcuts\Main%20Window\Load%20File\Context=1
Shortcuts\Main%20Window\Load%20File\Context\default=true
Shortcuts\Main%20Window\Load%20File\KeySeq=Ctrl+O
Shortcuts\Main%20Window\Load%20File\KeySeq\default=true
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\KeySeq=Ctrl+V
Shortcuts\Main%20Window\Load%20from%20Newest%20Slot\KeySeq\default=true
Shortcuts\Main%20Window\Remove%20Amiibo\Context=2
Shortcuts\Main%20Window\Remove%20Amiibo\Context\default=true
Shortcuts\Main%20Window\Remove%20Amiibo\KeySeq=F3
Shortcuts\Main%20Window\Remove%20Amiibo\KeySeq\default=true
Shortcuts\Main%20Window\Restart%20Emulation\Context=1
Shortcuts\Main%20Window\Restart%20Emulation\Context\default=true
Shortcuts\Main%20Window\Restart%20Emulation\KeySeq=F6
Shortcuts\Main%20Window\Restart%20Emulation\KeySeq\default=true
Shortcuts\Main%20Window\Rotate%20Screens%20Upright\Context=1
Shortcuts\Main%20Window\Rotate%20Screens%20Upright\Context\default=true
Shortcuts\Main%20Window\Rotate%20Screens%20Upright\KeySeq=F8
Shortcuts\Main%20Window\Rotate%20Screens%20Upright\KeySeq\default=true
Shortcuts\Main%20Window\Save%20to%20Oldest%20Slot\Context=1
Shortcuts\Main%20Window\Save%20to%20Oldest%20Slot\Context\default=true
Shortcuts\Main%20Window\Save%20to%20Oldest%20Slot\KeySeq=Ctrl+C
Shortcuts\Main%20Window\Save%20to%20Oldest%20Slot\KeySeq\default=true
Shortcuts\Main%20Window\Stop%20Emulation\Context=1
Shortcuts\Main%20Window\Stop%20Emulation\Context\default=true
Shortcuts\Main%20Window\Stop%20Emulation\KeySeq=F5
Shortcuts\Main%20Window\Stop%20Emulation\KeySeq\default=true
Shortcuts\Main%20Window\Swap%20Screens\Context=1
Shortcuts\Main%20Window\Swap%20Screens\Context\default=true
Shortcuts\Main%20Window\Swap%20Screens\KeySeq=F9
Shortcuts\Main%20Window\Swap%20Screens\KeySeq\default=true
Shortcuts\Main%20Window\Toggle%20Alternate%20Speed\Context=2
Shortcuts\Main%20Window\Toggle%20Alternate%20Speed\Context\default=true
Shortcuts\Main%20Window\Toggle%20Alternate%20Speed\KeySeq=Ctrl+Z
Shortcuts\Main%20Window\Toggle%20Alternate%20Speed\KeySeq\default=true
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\Context=1
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\Context\default=true
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\KeySeq=Ctrl+F
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\KeySeq\default=true
Shortcuts\Main%20Window\Toggle%20Frame%20Advancing\Context=2
Shortcuts\Main%20Window\Toggle%20Frame%20Advancing\Context\default=true
Shortcuts\Main%20Window\Toggle%20Frame%20Advancing\KeySeq=Ctrl+A
Shortcuts\Main%20Window\Toggle%20Frame%20Advancing\KeySeq\default=true
Shortcuts\Main%20Window\Toggle%20Screen%20Layout\Context=1
Shortcuts\Main%20Window\Toggle%20Screen%20Layout\Context\default=true
Shortcuts\Main%20Window\Toggle%20Screen%20Layout\KeySeq=F10
Shortcuts\Main%20Window\Toggle%20Screen%20Layout\KeySeq\default=true
Shortcuts\Main%20Window\Toggle%20Status%20Bar\Context=1
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\default=true
Shortcuts\Main%20Window\Toggle%20Texture%20Dumping\Context=2
Shortcuts\Main%20Window\Toggle%20Texture%20Dumping\Context\default=true
Shortcuts\Main%20Window\Toggle%20Texture%20Dumping\KeySeq=Ctrl+D
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\x33\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\x87\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\x1\r\0\0\0\xbb\0\0\x5?\0\0\x2\xb6\0\0\x1\r\0\0\0\xd8\0\0\x5?\0\0\x2\xb6\0\0\0\0\0\0\0\0\x6M\0\0\x1\r\0\0\0\xd8\0\0\x5?\0\0\x2\xb6)
UILayout\geometryRenderWindow=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\0\x63\0\0\0\x1d\0\0\0\0\0\0\0\0\0\0\0\x63\0\0\0\x1d\0\0\0\0\0\0\0\0\x6M\0\0\0\0\0\0\0\0\0\0\0\x63\0\0\0\x1d)
UILayout\microProfileDialogGeometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\xe7\0\0\x2W\0\0\0\0\0\0\0\0\0\0\x3\xe7\0\0\x2W\0\0\0\0\0\0\0\0\x6M\0\0\0\0\0\0\0\0\0\0\x3\xe7\0\0\x2W)
UILayout\microProfileDialogVisible=false
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\0y\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\0\x85\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\0y\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\xad\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\xad\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\xde\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\0P\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\0y\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\xef\x1\0\0\x3\0\0\x4\x33\0\0\x1\xa2\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\default=true
Updater\update_on_close=false
Updater\update_on_close\default=true
calloutFlags=1
calloutFlags\default=false
confirmClose=true
confirmClose\default=true
displayTitleBars=true
displayTitleBars\default=true
enable_discord_presence=true
enable_discord_presence\default=true
firstStart=false
firstStart\default=false
fullscreen=false
fullscreen\default=true
hideInactiveMouse=false
hideInactiveMouse\default=true
pauseWhenInBackground=false
pauseWhenInBackground\default=true
screenshot_resolution_factor=0
screenshot_resolution_factor\default=true
showConsole=false
showConsole\default=true
showFilterBar=true
showFilterBar\default=true
showStatusBar=true
showStatusBar\default=true
singleWindowMode=true
singleWindowMode\default=true
theme=default
theme\default=true
[Utility]
custom_textures=false
custom_textures\default=true
dump_textures=false
dump_textures\default=true
preload_textures=false
preload_textures\default=true
[VideoDumping]
audio_bitrate=64000
audio_bitrate\default=true
audio_encoder=libvorbis
audio_encoder\default=true
audio_encoder_options=
audio_encoder_options\default=true
format_options=
output_format=webm
output_format\default=true
video_bitrate=2500000
video_bitrate\default=true
video_encoder=libvpx-vp9
video_encoder\default=true
video_encoder_options="quality:realtime,speed:6,tile-columns:4,frame-parallel:1,threads:8,row-mt:1"
video_encoder_options\default=true
[WebService]
citra_token=
citra_username=
enable_telemetry=false
enable_telemetry\default=false
web_api_url=https://api.citra-emu.org
web_api_url\default=true

View file

@ -0,0 +1,80 @@
[Analytics]
ID = 20ba4576ae03327109c65c05b7340909
PermissionAsked = True
[NetPlay]
TraversalChoice = direct
[Core]
GFXBackend = OGL
AutoDiscChange = False
CPUThread = True
EnableCheats = False
OverrideRegionSettings = False
AudioStretch = False
AudioStretchMaxLatency = 80
DPL2Decoder = False
DPL2Quality = 2
DSPHLE = True
MMU = False
SelectedLanguage = 0
SerialPort1 = 255
SkipIPL = True
SlotA = 8
SlotB = 255
WiiKeyboard = False
WiimoteContinuousScanning = False
WiimoteControllerInterface = False
WiimoteEnableSpeaker = False
WiiSDCardAllowWrites = True
WiiSDCardEnableFolderSync = False
SIDevice0 = 6
SIDevice1 = 0
SIDevice2 = 0
SIDevice3 = 0
AudioStretch = False
AudioStretchMaxLatency = 80
DPL2Decoder = False
DPL2Quality = 2
DSPHLE = True
[Display]
Fullscreen = False
DisableScreenSaver = True
[GBA]
BIOS =
Rom1 =
Rom2 =
Rom3 =
Rom4 =
SavesInRomPath = False
SavesPath =
Threads = True
[General]
ISOPath0 =
ISOPath1 =
ISOPaths = 2
WiiSDCardPath =
WirelessMac =
HotkeysRequireFocus = True
RecursiveISOPaths = False
[Interface]
ConfirmStop = True
CursorVisibility = 0
OnScreenDisplayMessages = True
PauseOnFocusLost = False
ShowActiveTitle = True
UseBuiltinTitleDatabase = True
UsePanicHandlers = True
[BluetoothPassthrough]
Enabled = False
[DSP]
EnableJIT = False
[GBA]
BIOS =
Rom1 =
Rom2 =
Rom3 =
Rom4 =
SavesInRomPath = False
SavesPath =
Threads = True
[Input]
BackgroundInput = False

View file

@ -0,0 +1,3 @@
[General]
BackgroundInput = False
Enabled = False

View file

@ -0,0 +1,18 @@
[GBA1]
Device = XInput2/0/Virtual core pointer
Buttons/B = `Z`
Buttons/A = `X`
Buttons/L = `Q`
Buttons/R = `W`
Buttons/SELECT = `Backspace`
Buttons/START = `Return`
D-Pad/Up = `T`
D-Pad/Down = `G`
D-Pad/Left = `F`
D-Pad/Right = `H`
[GBA2]
Device = XInput2/0/Virtual core pointer
[GBA3]
Device = XInput2/0/Virtual core pointer
[GBA4]
Device = XInput2/0/Virtual core pointer

View file

@ -0,0 +1,41 @@
[GCPad1]
Device = XInput2/0/Virtual core pointer
Buttons/A = `X`
Buttons/B = `Z`
Buttons/X = `C`
Buttons/Y = `S`
Buttons/Z = `D`
Buttons/Start = `Return`
Main Stick/Up = `Up`
Main Stick/Down = `Down`
Main Stick/Left = `Left`
Main Stick/Right = `Right`
Main Stick/Modifier = `Shift`
Main Stick/Modifier/Range = 50.0
Main Stick/Calibration = 100.00 141.42 100.00 141.42 100.00 141.42 100.00 141.42
C-Stick/Up = `I`
C-Stick/Down = `K`
C-Stick/Left = `J`
C-Stick/Right = `L`
C-Stick/Modifier = `Ctrl`
C-Stick/Modifier/Range = 50.0
C-Stick/Calibration = 100.00 141.42 100.00 141.42 100.00 141.42 100.00 141.42
Triggers/L = `Q`
Triggers/R = `W`
D-Pad/Up = `T`
D-Pad/Down = `G`
D-Pad/Left = `F`
D-Pad/Right = `H`
Rumble/Motor = Strong
[GCPad2]
Device = XInput2/0/Virtual core pointer
Main Stick/Modifier/Range = 50.0
C-Stick/Modifier/Range = 50.0
[GCPad3]
Device = XInput2/0/Virtual core pointer
Main Stick/Modifier/Range = 50.0
C-Stick/Modifier/Range = 50.0
[GCPad4]
Device = XInput2/0/Virtual core pointer
Main Stick/Modifier/Range = 50.0
C-Stick/Modifier/Range = 50.0

View file

@ -0,0 +1,24 @@
[Enhancements]
ArbitraryMipmapDetection = True
DisableCopyFilter = True
ForceTrueColor = True
ForceFiltering = False
[Hacks]
BBoxEnable = False
DeferEFBCopies = True
EFBEmulateFormatChanges = False
EFBScaledCopy = True
EFBToTextureEnable = True
SkipDuplicateXFBs = True
XFBToTextureEnable = True
EFBAccessEnable = True
[Settings]
BackendMultithreading = True
DumpBaseTextures = True
DumpMipTextures = True
FastDepthCalc = True
InternalResolution = 1
SaveTextureCacheToState = True
WireFrame = False
[Hardware]
VSync = False

View file

@ -0,0 +1,45 @@
[Hotkeys]
Device = XInput2/0/Virtual core pointer
General/Open = @(Ctrl+O)
General/Toggle Pause = F10
General/Stop = Escape
General/Toggle Fullscreen = @(Alt+Return)
General/Take Screenshot = F9
Emulation Speed/Disable Emulation Speed Limit = Tab
Stepping/Step Into = F11
Stepping/Step Over = @(Shift+F10)
Stepping/Step Out = @(Shift+F11)
Breakpoint/Toggle Breakpoint = @(Shift+F9)
Wii/Connect Wii Remote 1 = @(Alt+F5)
Wii/Connect Wii Remote 2 = @(Alt+F6)
Wii/Connect Wii Remote 3 = @(Alt+F7)
Wii/Connect Wii Remote 4 = @(Alt+F8)
Wii/Connect Balance Board = @(Alt+F9)
Load State/Load State Slot 1 = `F1`
Load State/Load State Slot 2 = F2
Load State/Load State Slot 3 = F3
Load State/Load State Slot 4 = F4
Load State/Load State Slot 5 = F5
Load State/Load State Slot 6 = F6
Load State/Load State Slot 7 = F7
Load State/Load State Slot 8 = F8
Save State/Save State Slot 1 = @(Shift+F1)
Save State/Save State Slot 2 = @(Shift+F2)
Save State/Save State Slot 3 = @(Shift+F3)
Save State/Save State Slot 4 = @(Shift+F4)
Save State/Save State Slot 5 = @(Shift+F5)
Save State/Save State Slot 6 = @(Shift+F6)
Save State/Save State Slot 7 = @(Shift+F7)
Save State/Save State Slot 8 = @(Shift+F8)
Other State Hotkeys/Undo Load State = F12
Other State Hotkeys/Undo Save State = @(Shift+F12)
GBA Core/Load ROM = @(`Ctrl`+`Shift`+`O`)
GBA Core/Unload ROM = @(`Ctrl`+`Shift`+`W`)
GBA Core/Reset = @(`Ctrl`+`Shift`+`R`)
GBA Volume/Volume Down = `KP_Subtract`
GBA Volume/Volume Up = `KP_Add`
GBA Volume/Volume Toggle Mute = `M`
GBA Window Size/1x = `KP_1`
GBA Window Size/2x = `KP_2`
GBA Window Size/3x = `KP_3`
GBA Window Size/4x = `KP_4`

View file

@ -0,0 +1,91 @@
[breakpointwidget]
floating=false
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\0\x6M\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31)
[cheatsmanager]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\0\x6M\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31)
[codewidget]
boxsplitter=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x4\0\0\0\x89\0\0\0\x89\0\0\0\x89\0\0\0\x89\x1\xff\xff\xff\xff\x1\0\0\0\x2\0)
codesplitter=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0}\0\0\0W\x1\xff\xff\xff\xff\x1\0\0\0\x1\0)
floating=false
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\0\x6M\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31)
[gridview]
scale=@Variant(\0\0\0\x87?\x80\0\0)
[jitwidget]
asmsplitter=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0W\0\0\0W\x1\xff\xff\xff\xff\x1\0\0\0\x1\0)
floating=false
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\0\x6M\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31)
tablesplitter=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0W\0\0\0W\x1\xff\xff\xff\xff\x1\0\0\0\x2\0)
[logconfigwidget]
floating=false
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\0\x6M\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31)
[logging]
font=0
wraplines=false
[logwidget]
floating=false
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\0\x6M\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31)
[mainwindow]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x1\x96\0\0\0\x8e\0\0\x4\xb5\0\0\x3\x2\0\0\x1\x96\0\0\0\xab\0\0\x4\xb5\0\0\x3\x2\0\0\0\0\0\0\0\0\x6M\0\0\x1\x96\0\0\0\xab\0\0\x4\xb5\0\0\x3\x2)
state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\xfc\x2\0\0\0\x1\xfc\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\xff\xff\xff\xfa\xff\xff\xff\xff\x2\0\0\0\n\xfb\0\0\0\x6\0l\0o\0g\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xad\x1\0\0\x3\xfb\0\0\0\x12\0l\0o\0g\0\x63\0o\0n\0\x66\0i\0g\0\0\0\0\0\xff\xff\xff\xff\0\0\x1\xef\x1\0\0\x3\xfb\0\0\0\b\0\x63\0o\0\x64\0\x65\0\0\0\0\0\xff\xff\xff\xff\0\0\x2l\x1\0\0\x3\xfb\0\0\0\x12\0r\0\x65\0g\0i\0s\0t\0\x65\0r\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0}\x1\0\0\x3\xfb\0\0\0\xe\0t\0h\0r\0\x65\0\x61\0\x64\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\x2q\x1\0\0\x3\xfb\0\0\0\n\0w\0\x61\0t\0\x63\0h\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xab\x1\0\0\x3\xfb\0\0\0\x16\0\x62\0r\0\x65\0\x61\0k\0p\0o\0i\0n\0t\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xab\x1\0\0\x3\xfb\0\0\0\f\0m\0\x65\0m\0o\0r\0y\0\0\0\0\0\xff\xff\xff\xff\0\0\0}\x1\0\0\x3\xfb\0\0\0\xe\0n\0\x65\0t\0w\0o\0r\0k\0\0\0\0\0\xff\xff\xff\xff\0\0\x2\x62\x1\0\0\x3\xfb\0\0\0\x12\0j\0i\0t\0w\0i\0\x64\0g\0\x65\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xfd\x1\0\0\x3\0\0\x3 \0\0\x1\xec\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x1\0\0\0\x2\0\0\0\x1\0\0\0\xe\0t\0o\0o\0l\0\x62\0\x61\0r\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
[memorywidget]
addrspace_auxiliary=false
addrspace_effective=true
addrspace_physical=false
bplog=true
bpread=false
bpreadwrite=true
bpwrite=false
display_type=1
floating=false
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\0\x6M\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31)
searchascii=true
searchhex=false
inputcombo=1
splitter=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\xff\xff\xff\xff\xff\xff\xff\xff\x1\xff\xff\xff\xff\x1\0\0\0\x1\0)
typeascii=false
typefloat=false
typeu16=false
typeu32=false
typeu8=true
[netplaydialog]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\x2\x7f\0\0\x1\xf3\0\0\0\0\0\0\0\x14\0\0\x2\x7f\0\0\x1\xf3\0\0\0\0\0\0\0\0\x6M\0\0\0\0\0\0\0\x14\0\0\x2\x7f\0\0\x1\xf3)
splitter=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\x9f\0\0\0\xcf\x1\xff\xff\xff\xff\x1\0\0\0\x1\0)
[networkwidget]
floating=false
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\0\x6M\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31)
[registerwidget]
floating=false
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\0\x6M\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31)
[renderwidget]
geometry=@ByteArray()
[tableheader]
state=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x2\x1\0\0\0\0\0\0\0\0\0\0\0\xe(?\0\0\0\b\0\0\0\b\0\0\0\x64\0\0\0\t\0\0\0\x64\0\0\0\f\0\0\0\x64\0\0\0\r\0\0\0\x64\0\0\0\x3\0\0\0\x64\0\0\0\x5\0\0\0\x46\0\0\0\n\0\0\0\x64\0\0\0\v\0\0\0\x64\0\0\x3\v\0\0\0\xe\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\0\0\0&\0\0\0\x84\0\0\0\0\0\0\0\xe\0\0\0&\0\0\0\x1\0\0\0\x2\0\0\0\x66\0\0\0\x1\0\0\0\x2\0\0\x1\x2\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x1\x2\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0&\0\0\0\x1\0\0\0\x2\0\0\0U\0\0\0\x1\0\0\0\x2\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\0)
[threadwidget]
floating=false
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\0\x6M\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31)
[toolbar]
visible=true
[userstyle]
enabled=false
name=
[watchwidget]
floating=false
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31\0\0\0\0\0\0\0\0\x6M\0\0\0\0\0\0\0\x14\0\0\0\x63\0\0\0\x31)

View file

@ -0,0 +1,106 @@
[Wiimote1]
Device = XInput2/0/Virtual core pointer
Buttons/A = `Click 1`
Buttons/B = `Click 3`
Buttons/1 = `1`
Buttons/2 = `2`
Buttons/- = Q
Buttons/+ = E
Buttons/Home = Return
IR/Up = `Cursor Y-`
IR/Down = `Cursor Y+`
IR/Left = `Cursor X-`
IR/Right = `Cursor X+`
Tilt/Modifier/Range = 50.0
Shake/X = `Click 2`
Shake/Y = `Click 2`
Shake/Z = `Click 2`
IMUAccelerometer/Up = `Accel Up`
IMUAccelerometer/Down = `Accel Down`
IMUAccelerometer/Left = `Accel Left`
IMUAccelerometer/Right = `Accel Right`
IMUAccelerometer/Forward = `Accel Forward`
IMUAccelerometer/Backward = `Accel Backward`
IMUGyroscope/Pitch Up = `Gyro Pitch Up`
IMUGyroscope/Pitch Down = `Gyro Pitch Down`
IMUGyroscope/Roll Left = `Gyro Roll Left`
IMUGyroscope/Roll Right = `Gyro Roll Right`
IMUGyroscope/Yaw Left = `Gyro Yaw Left`
IMUGyroscope/Yaw Right = `Gyro Yaw Right`
Extension = Nunchuk
Nunchuk/Buttons/C = Control_L
Nunchuk/Buttons/Z = Shift_L
Nunchuk/Stick/Up = W
Nunchuk/Stick/Down = S
Nunchuk/Stick/Left = A
Nunchuk/Stick/Right = D
Nunchuk/Stick/Modifier/Range = 50.0
Nunchuk/Stick/Calibration = 100.00 141.42 100.00 141.42 100.00 141.42 100.00 141.42
Nunchuk/Tilt/Modifier/Range = 50.0
Nunchuk/Shake/X = `Click 2`
Nunchuk/Shake/Y = `Click 2`
Nunchuk/Shake/Z = `Click 2`
Classic/Left Stick/Modifier/Range = 50.0
Classic/Right Stick/Modifier/Range = 50.0
Guitar/Stick/Modifier/Range = 50.0
Drums/Stick/Modifier/Range = 50.0
Turntable/Stick/Modifier/Range = 50.0
uDraw/Stylus/Modifier/Range = 50.0
Drawsome/Stylus/Modifier/Range = 50.0
D-Pad/Up = Up
D-Pad/Down = Down
D-Pad/Left = Left
D-Pad/Right = Right
Source = 1
[Wiimote2]
Device = XInput2/0/Virtual core pointer
Tilt/Modifier/Range = 50.0
Nunchuk/Stick/Modifier/Range = 50.0
Nunchuk/Tilt/Modifier/Range = 50.0
Classic/Left Stick/Modifier/Range = 50.0
Classic/Right Stick/Modifier/Range = 50.0
Guitar/Stick/Modifier/Range = 50.0
Drums/Stick/Modifier/Range = 50.0
Turntable/Stick/Modifier/Range = 50.0
uDraw/Stylus/Modifier/Range = 50.0
Drawsome/Stylus/Modifier/Range = 50.0
Source = 0
[Wiimote3]
Device = XInput2/0/Virtual core pointer
Tilt/Modifier/Range = 50.0
Nunchuk/Stick/Modifier/Range = 50.0
Nunchuk/Tilt/Modifier/Range = 50.0
Classic/Left Stick/Modifier/Range = 50.0
Classic/Right Stick/Modifier/Range = 50.0
Guitar/Stick/Modifier/Range = 50.0
Drums/Stick/Modifier/Range = 50.0
Turntable/Stick/Modifier/Range = 50.0
uDraw/Stylus/Modifier/Range = 50.0
Drawsome/Stylus/Modifier/Range = 50.0
Source = 0
[Wiimote4]
Device = XInput2/0/Virtual core pointer
Tilt/Modifier/Range = 50.0
Nunchuk/Stick/Modifier/Range = 50.0
Nunchuk/Tilt/Modifier/Range = 50.0
Classic/Left Stick/Modifier/Range = 50.0
Classic/Right Stick/Modifier/Range = 50.0
Guitar/Stick/Modifier/Range = 50.0
Drums/Stick/Modifier/Range = 50.0
Turntable/Stick/Modifier/Range = 50.0
uDraw/Stylus/Modifier/Range = 50.0
Drawsome/Stylus/Modifier/Range = 50.0
Source = 0
[BalanceBoard]
Device = XInput2/0/Virtual core pointer
Tilt/Modifier/Range = 50.0
Nunchuk/Stick/Modifier/Range = 50.0
Nunchuk/Tilt/Modifier/Range = 50.0
Classic/Left Stick/Modifier/Range = 50.0
Classic/Right Stick/Modifier/Range = 50.0
Guitar/Stick/Modifier/Range = 50.0
Drums/Stick/Modifier/Range = 50.0
Turntable/Stick/Modifier/Range = 50.0
uDraw/Stylus/Modifier/Range = 50.0
Drawsome/Stylus/Modifier/Range = 50.0
Source = 0

View file

@ -0,0 +1,299 @@
[Main]
SettingsVersion = 3
EmulationSpeed = 1.000000
FastForwardSpeed = 0.000000
TurboSpeed = 0.000000
SyncToHostRefreshRate = false
IncreaseTimerResolution = true
InhibitScreensaver = true
StartPaused = false
StartFullscreen = false
PauseOnFocusLoss = false
PauseOnMenu = true
SaveStateOnExit = true
CreateSaveStateBackups = true
CompressSaveStates = true
ConfirmPowerOff = true
LoadDevicesFromSaveStates = false
ApplyCompatibilitySettings = true
ApplyGameSettings = true
AutoLoadCheats = true
DisableAllEnhancements = false
RewindEnable = false
RewindFrequency = 10.000000
RewindSaveSlots = 10
RunaheadFrameCount = 0
ControllerBackend = SDL
ControllerEnhancedMode = false
EnableDiscordPresence = false
[Console]
Region = Auto
Enable8MBRAM = false
[CPU]
ExecutionMode = Recompiler
OverclockEnable = false
OverclockNumerator = 1
OverclockDenominator = 1
OverclockEnable = false
RecompilerMemoryExceptions = false
RecompilerBlockLinking = true
RecompilerICache = false
FastmemMode = MMap
[GPU]
Renderer = OpenGL
Adapter =
ResolutionScale = 1
Multisamples = 1
UseDebugDevice = false
UseSoftwareRendererForReadbacks = false
PerSampleShading = false
UseThread = true
ThreadedPresentation = true
UseSoftwareRendererForReadbacks = false
TrueColor = true
ScaledDithering = true
TextureFilter = Nearest
DownsampleMode = Disabled
DisableInterlacing = true
ForceNTSCTimings = false
WidescreenHack = false
ChromaSmoothing24Bit = false
PGXPEnable = false
PGXPCulling = true
PGXPTextureCorrection = true
PGXPColorCorrection = false
PGXPVertexCache = false
PGXPCPU = false
PGXPPreserveProjFP = false
PGXPTolerance = -1.000000
PGXPDepthBuffer = false
PGXPDepthClearThreshold = 1228800.000000
[Display]
CropMode = Overscan
ActiveStartOffset = 0
ActiveEndOffset = 0
LineStartOffset = 0
LineEndOffset = 0
Force4_3For24Bit = false
AspectRatio = Auto (Game Native)
Alignment = Center
CustomAspectRatioNumerator = 0
LinearFiltering = true
IntegerScaling = false
Stretch = false
PostProcessing = false
ShowOSDMessages = true
ShowFPS = false
ShowVPS = false
ShowSpeed = false
ShowResolution = false
ShowCPU = false
ShowGPU = false
ShowStatusIndicators = true
ShowInputs = false
ShowEnhancements = false
Fullscreen = false
VSync = false
DisplayAllFrames = false
PostProcessChain =
MaxFPS = 0.000000
InternalResolutionScreenshots = false
VSync = false
MaxFPS = 0.000000
OSDScale = 100.000000
[CDROM]
ReadaheadSectors = 8
RegionCheck = false
LoadImageToRAM = false
LoadImagePatches = false
MuteCDAudio = false
ReadSpeedup = 1
SeekSpeedup = 1
[Audio]
Backend = Cubeb
Driver =
StretchMode = TimeStretch
BufferMS = 50
OutputLatencyMS = 20
OutputVolume = 100
FastForwardVolume = 100
OutputMuted = false
DumpOnBoot = false
[Hacks]
DMAMaxSliceTicks = 1000
DMAHaltTicks = 100
GPUFIFOSize = 16
GPUMaxRunAhead = 128
[BIOS]
PatchTTYEnable = false
PatchFastBoot = false
SearchDirectory = bios
PathNTSCU =
PathNTSCJ =
PathPAL =
[MemoryCards]
Card1Type = PerGameTitle
Card2Type = None
UsePlaylistTitle = true
Directory = memcards
[ControllerPorts]
MultitapMode = Disabled
PointerXScale = 8.000000
PointerYScale = 8.000000
PointerXInvert = false
PointerYInvert = false
[Cheevos]
Enabled = false
TestMode = false
UnofficialTestMode = false
UseFirstDiscFromPlaylist = true
RichPresence = true
ChallengeMode = false
Leaderboards = true
SoundEffects = true
PrimedIndicators = true
[Logging]
LogLevel = Info
LogFilter =
LogToConsole = true
LogToDebug = false
LogToWindow = false
LogToFile = false
[Debug]
ShowVRAM = false
DumpCPUToVRAMCopies = false
DumpVRAMToCPUCopies = false
ShowGPUState = false
ShowCDROMState = false
ShowSPUState = false
ShowTimersState = false
ShowMDECState = false
ShowDMAState = false
[TextureReplacements]
EnableVRAMWriteReplacements = false
PreloadTextures = false
DumpVRAMWrites = false
DumpVRAMWriteForceAlphaChannel = true
DumpVRAMWriteWidthThreshold = 128
DumpVRAMWriteHeightThreshold = 128
[Folders]
Cache = cache
Cheats = cheats
Covers = covers
Dumps = dump
GameSettings = gamesettings
InputProfiles = inputprofiles
SaveStates = savestates
Screenshots = screenshots
Shaders = shaders
Textures = textures
[UI]
MainWindowGeometry = AdnQywADAAAAAAGWAAAAeQAABLUAAAM0AAABlgAAAHkAAAS1AAADNAAAAAAAAAAABk0AAAGWAAAAeQAABLUAAAM0
[InputSources]
SDL = true
SDLControllerEnhancedMode = false
Evdev = false
XInput = false
RawInput = false
[Pad1]
Type = AnalogController
Up = Keyboard/Up
Right = Keyboard/Right
Down = Keyboard/Down
Left = Keyboard/Left
Triangle = Keyboard/I
Circle = Keyboard/L
Cross = Keyboard/K
Square = Keyboard/J
Select = Keyboard/Backspace
Start = Keyboard/Return
L1 = Keyboard/Q
R1 = Keyboard/E
L2 = Keyboard/1
R2 = Keyboard/3
L3 = Keyboard/2
R3 = Keyboard/4
LLeft = Keyboard/A
LRight = Keyboard/D
LDown = Keyboard/S
LUp = Keyboard/W
RLeft = Keyboard/F
RRight = Keyboard/H
RDown = Keyboard/G
RUp = Keyboard/T
[Pad2]
Type = None
[Pad3]
Type = None
[Pad4]
Type = None
[Pad5]
Type = None
[Pad6]
Type = None
[Pad7]
Type = None
[Pad8]
Type = None
[Hotkeys]
FastForward = Keyboard/Tab
TogglePause = Keyboard/Space
Screenshot = Keyboard/F10
ToggleFullscreen = Keyboard/F11
OpenPauseMenu = Keyboard/Escape
LoadSelectedSaveState = Keyboard/F1
SaveSelectedSaveState = Keyboard/F2
SelectPreviousSaveStateSlot = Keyboard/F3
SelectNextSaveStateSlot = Keyboard/F4

View file

@ -0,0 +1,135 @@
Key_A=-1
Key_B=-1
Key_Select=-1
Key_Start=-1
Key_Right=-1
Key_Left=-1
Key_Up=-1
Key_Down=-1
Key_R=-1
Key_L=-1
Key_X=-1
Key_Y=-1
Joy_A=-1
Joy_B=-1
Joy_Select=-1
Joy_Start=-1
Joy_Right=-1
Joy_Left=-1
Joy_Up=-1
Joy_Down=-1
Joy_R=-1
Joy_L=-1
Joy_X=-1
Joy_Y=-1
HKKey_Lid=-1
HKKey_Mic=-1
HKKey_Pause=-1
HKKey_Reset=-1
HKKey_FastForward=-1
HKKey_FastForwardToggle=-1
HKKey_FullscreenToggle=-1
HKKey_SwapScreens=-1
HKKey_SolarSensorDecrease=-1
HKKey_SolarSensorIncrease=-1
HKKey_FrameStep=-1
HKJoy_Lid=-1
HKJoy_Mic=-1
HKJoy_Pause=-1
HKJoy_Reset=-1
HKJoy_FastForward=-1
HKJoy_FastForwardToggle=-1
HKJoy_FullscreenToggle=-1
HKJoy_SwapScreens=-1
HKJoy_SolarSensorDecrease=-1
HKJoy_SolarSensorIncrease=-1
HKJoy_FrameStep=-1
JoystickID=0
WindowWidth=256
WindowHeight=414
WindowMax=0
ScreenRotation=0
ScreenGap=0
ScreenLayout=0
ScreenSwap=0
ScreenSizing=0
IntegerScaling=0
ScreenAspectTop=0
ScreenAspectBot=0
ScreenFilter=1
ScreenUseGL=0
ScreenVSync=0
ScreenVSyncInterval=1
3DRenderer=0
Threaded3D=1
GL_ScaleFactor=1
GL_BetterPolygons=0
LimitFPS=1
AudioSync=0
ShowOSD=1
ConsoleType=0
DirectBoot=1
JIT_Enable=0
JIT_MaxBlockSize=32
JIT_BranchOptimisations=1
JIT_LiteralOptimisations=1
JIT_FastMemory=1
ExternalBIOSEnable=0
BIOS9Path=
BIOS7Path=
FirmwarePath=
DSiBIOS9Path=
DSiBIOS7Path=
DSiFirmwarePath=
DSiNANDPath=
DLDIEnable=0
DLDISDPath=dldi.bin
DLDISize=0
DLDIReadOnly=0
DLDIFolderSync=0
DLDIFolderPath=
DSiSDEnable=0
DSiSDPath=dsisd.bin
DSiSDSize=0
DSiSDReadOnly=0
DSiSDFolderSync=0
DSiSDFolderPath=
FirmwareOverrideSettings=0
FirmwareUsername=melonDS
FirmwareLanguage=1
FirmwareBirthdayMonth=1
FirmwareBirthdayDay=1
FirmwareFavouriteColour=0
FirmwareMessage=
FirmwareMAC=
RandomizeMAC=0
SockBindAnyAddr=0
LANDevice=
DirectLAN=0
SavStaRelocSRAM=0
AudioInterp=0
AudioBitrate=0
AudioVolume=256
MicInputType=1
MicWavPath=
LastROMFolder=
RecentROM_0=
RecentROM_1=
RecentROM_2=
RecentROM_3=
RecentROM_4=
RecentROM_5=
RecentROM_6=
RecentROM_7=
RecentROM_8=
RecentROM_9=
SaveFilePath=
SavestatePath=
CheatFilePath=
EnableCheats=0
MouseHide=0
MouseHideSeconds=5
PauseLostFocus=0
DSBatteryLevelOkay=1
DSiBatteryLevel=15
DSiBatteryCharging=1

View file

@ -0,0 +1,446 @@
[UI]
SettingsVersion = 1
InhibitScreensaver = true
ConfirmShutdown = true
StartPaused = false
PauseOnFocusLoss = false
StartFullscreen = false
DoubleClickTogglesFullscreen = true
HideMouseCursor = false
RenderToSeparateWindow = false
HideMainWindowWhenRunning = false
DisableWindowResize = false
Theme = darkfusion
[Folders]
Bios = bios
Snapshots = snaps
Savestates = sstates
MemoryCards = memcards
Logs = logs
Cheats = cheats
CheatsWS = cheats_ws
CheatsNI = cheats_ni
Cache = cache
Textures = textures
InputProfiles = inputprofiles
[EmuCore]
CdvdVerboseReads = false
CdvdDumpBlocks = false
CdvdShareWrite = false
EnablePatches = true
EnableCheats = false
EnablePINE = false
EnableWideScreenPatches = false
EnableNoInterlacingPatches = false
EnableRecordingTools = true
EnableGameFixes = true
SaveStateOnShutdown = false
EnableDiscordPresence = false
InhibitScreensaver = true
ConsoleToStdio = false
HostFs = false
BackupSavestate = true
SavestateZstdCompression = true
McdEnableEjection = true
McdFolderAutoManage = true
WarnAboutUnsafeSettings = true
GzipIsoIndexTemplate = $(f).pindex.tmp
BlockDumpSaveDirectory =
EnableFastBoot = true
[EmuCore/Speedhacks]
EECycleRate = 0
EECycleSkip = 0
fastCDVD = false
IntcStat = true
WaitLoop = true
vuFlagHack = true
vuThread = false
vu1Instant = true
[EmuCore/CPU]
FPU.DenormalsAreZero = true
FPU.FlushToZero = true
FPU.Roundmode = 3
AffinityControlMode = 0
VU.DenormalsAreZero = true
VU.FlushToZero = true
VU.Roundmode = 3
[EmuCore/CPU/Recompiler]
EnableEE = true
EnableIOP = true
EnableEECache = false
EnableVU0 = true
EnableVU1 = true
vuOverflow = true
vuExtraOverflow = false
vuSignOverflow = false
vuUnderflow = false
fpuOverflow = true
fpuExtraOverflow = false
fpuFullMode = false
StackFrameChecks = false
PreBlockCheckEE = false
PreBlockCheckIOP = false
[EmuCore/GS]
VsyncQueueSize = 2
FrameLimitEnable = true
VsyncEnable = 0
FramerateNTSC = 59.94
FrameratePAL = 50
SyncToHostRefreshRate = false
AspectRatio = Auto 4:3/3:2
FMVAspectRatioSwitch = Off
Zoom = 100
StretchY = 100
CropLeft = 0
CropTop = 0
CropRight = 0
CropBottom = 0
pcrtc_antiblur = true
disable_interlace_offset = false
pcrtc_offsets = false
pcrtc_overscan = false
IntegerScaling = false
linear_present = true
UseDebugDevice = false
UseBlitSwapChain = false
disable_shader_cache = false
DisableDualSourceBlend = false
DisableFramebufferFetch = false
ThreadedPresentation = false
SkipDuplicateFrames = false
OsdShowMessages = true
OsdShowSpeed = false
OsdShowFPS = false
OsdShowCPU = false
OsdShowGPU = false
OsdShowResolution = false
OsdShowGSStats = false
OsdShowIndicators = true
OsdShowSettings = false
OsdShowInputs = false
HWSpinGPUForReadbacks = false
HWSpinCPUForReadbacks = false
paltex = false
autoflush_sw = true
preload_frame_with_gs_data = false
wrap_gs_mem = false
mipmap = true
UserHacks = false
UserHacks_align_sprite_X = false
UserHacks_AutoFlush = false
UserHacks_CPU_FB_Conversion = false
UserHacks_DisableDepthSupport = false
UserHacks_DisablePartialInvalidation = false
UserHacks_Disable_Safe_Features = false
UserHacks_merge_pp_sprite = false
UserHacks_WildHack = false
UserHacks_TextureInsideRt = false
fxaa = false
ShadeBoost = false
shaderfx = false
dump = false
save = false
savef = false
savet = false
savez = false
DumpReplaceableTextures = false
DumpReplaceableMipmaps = false
DumpTexturesWithFMVActive = false
DumpDirectTextures = true
DumpPaletteTextures = true
LoadTextureReplacements = false
LoadTextureReplacementsAsync = true
PrecacheTextureReplacements = false
deinterlace = 7
OsdScale = 100
Renderer = -1
upscale_multiplier = 1
mipmap_hw = -1
accurate_blending_unit = 1
crc_hack_level = -1
filter = 2
texture_preloading = 2
GSDumpCompression = 1
HWDownloadMode = 0
dithering_ps2 = 2
MaxAnisotropy = 0
extrathreads = 2
extrathreads_height = 4
TVShader = 0
UserHacks_SkipDraw_Start = 0
UserHacks_SkipDraw_End = 0
UserHacks_Half_Bottom_Override = -1
UserHacks_HalfPixelOffset = 0
UserHacks_round_sprite_offset = 0
UserHacks_TCOffsetX = 0
UserHacks_TCOffsetY = 0
UserHacks_CPUSpriteRenderBW = 0
TriFilter = -1
OverrideTextureBarriers = -1
OverrideGeometryShaders = -1
ShadeBoost_Brightness = 50
ShadeBoost_Contrast = 50
ShadeBoost_Saturation = 50
saven = 0
savel = 5000
Adapter =
shaderfx_conf = shaders/GS_FX_Settings.ini
shaderfx_glsl = shaders/GS.fx
[SPU2/Mixing]
Interpolation = 5
FinalVolume = 100
VolumeAdjustC = 0
VolumeAdjustFL = 0
VolumeAdjustFR = 0
VolumeAdjustBL = 0
VolumeAdjustBR = 0
VolumeAdjustSL = 0
VolumeAdjustSR = 0
VolumeAdjustLFE = 0
[SPU2/Output]
OutputModule = cubeb
BackendName =
Latency = 100
SynchMode = 0
SpeakerConfiguration = 0
DplDecodingLevel = 0
[DEV9/Eth]
EthEnable = false
EthApi = Unset
EthDevice =
EthLogDNS = false
InterceptDHCP = false
PS2IP = 0.0.0.0
Mask = 0.0.0.0
Gateway = 0.0.0.0
DNS1 = 0.0.0.0
DNS2 = 0.0.0.0
AutoMask = true
AutoGateway = true
ModeDNS1 = Auto
ModeDNS2 = Auto
[DEV9/Eth/Hosts]
Count = 0
[DEV9/Hdd]
HddEnable = false
HddFile = DEV9hdd.raw
HddSizeSectors = 83886080
[EmuCore/Gamefixes]
VuAddSubHack = false
FpuMulHack = false
FpuNegDivHack = false
XgKickHack = false
EETimingHack = false
SoftwareRendererFMVHack = false
SkipMPEGHack = false
OPHFlagHack = false
DMABusyHack = false
VIFFIFOHack = false
VIF1StallHack = false
GIFFIFOHack = false
GoemonTlbHack = false
IbitHack = false
VUSyncHack = false
VUOverflowHack = false
BlitInternalFPSHack = false
[EmuCore/Profiler]
Enabled = false
RecBlocks_EE = true
RecBlocks_IOP = true
RecBlocks_VU0 = true
RecBlocks_VU1 = true
[EmuCore/Debugger]
ShowDebuggerOnStart = false
AlignMemoryWindowStart = true
FontWidth = 8
FontHeight = 12
WindowWidth = 0
WindowHeight = 0
MemoryViewBytesPerRow = 16
[EmuCore/TraceLog]
Enabled = false
EE.bitset = 0
IOP.bitset = 0
[Achievements]
Enabled = false
TestMode = false
UnofficialTestMode = false
RichPresence = true
ChallengeMode = false
Leaderboards = true
SoundEffects = true
PrimedIndicators = true
[Filenames]
BIOS =
[Framerate]
NominalScalar = 1
TurboScalar = 2
SlomoScalar = 0.5
[MemoryCards]
Slot1_Enable = true
Slot1_Filename = Mcd001.ps2
Slot2_Enable = true
Slot2_Filename = Mcd002.ps2
Multitap1_Slot2_Enable = false
Multitap1_Slot2_Filename = Mcd-Multitap1-Slot02.ps2
Multitap1_Slot3_Enable = false
Multitap1_Slot3_Filename = Mcd-Multitap1-Slot03.ps2
Multitap1_Slot4_Enable = false
Multitap1_Slot4_Filename = Mcd-Multitap1-Slot04.ps2
Multitap2_Slot2_Enable = false
Multitap2_Slot2_Filename = Mcd-Multitap2-Slot02.ps2
Multitap2_Slot3_Enable = false
Multitap2_Slot3_Filename = Mcd-Multitap2-Slot03.ps2
Multitap2_Slot4_Enable = false
Multitap2_Slot4_Filename = Mcd-Multitap2-Slot04.ps2
[Logging]
EnableSystemConsole = false
EnableFileLogging = false
EnableTimestamps = true
EnableVerbose = false
EnableEEConsole = false
EnableIOPConsole = false
EnableInputRecordingLogs = true
EnableControllerLogs = false
[InputSources]
Keyboard = true
Mouse = true
SDL = true
SDLControllerEnhancedMode = false
[Hotkeys]
ToggleFullscreen = Keyboard/Alt & Keyboard/Return
CycleAspectRatio = Keyboard/F6
CycleInterlaceMode = Keyboard/F5
CycleMipmapMode = Keyboard/Insert
GSDumpMultiFrame = Keyboard/Control & Keyboard/Shift & Keyboard/F8
Screenshot = Keyboard/F8
GSDumpSingleFrame = Keyboard/Shift & Keyboard/F8
ToggleSoftwareRendering = Keyboard/F9
ZoomIn = Keyboard/Control & Keyboard/Plus
ZoomOut = Keyboard/Control & Keyboard/Minus
InputRecToggleMode = Keyboard/Shift & Keyboard/R
LoadStateFromSlot = Keyboard/F3
SaveStateToSlot = Keyboard/F1
NextSaveStateSlot = Keyboard/F2
PreviousSaveStateSlot = Keyboard/Shift & Keyboard/F2
OpenPauseMenu = Keyboard/Escape
ToggleFrameLimit = Keyboard/F4
TogglePause = Keyboard/Space
ToggleSlowMotion = Keyboard/Shift & Keyboard/Backtab
ToggleTurbo = Keyboard/Tab
HoldTurbo = Keyboard/Period
[Pad]
MultitapPort1 = false
MultitapPort2 = false
PointerXScale = 8
PointerYScale = 8
[Pad1]
Type = DualShock2
InvertL = 0
InvertR = 0
Deadzone = 0
AxisScale = 1.33
LargeMotorScale = 1
SmallMotorScale = 1
ButtonDeadzone = 0
PressureModifier = 0.5
Up = Keyboard/Up
Right = Keyboard/Right
Down = Keyboard/Down
Left = Keyboard/Left
Triangle = Keyboard/I
Circle = Keyboard/L
Cross = Keyboard/K
Square = Keyboard/J
Select = Keyboard/Backspace
Start = Keyboard/Return
L1 = Keyboard/Q
L2 = Keyboard/1
R1 = Keyboard/E
R2 = Keyboard/3
L3 = Keyboard/2
R3 = Keyboard/4
LUp = Keyboard/W
LRight = Keyboard/D
LDown = Keyboard/S
LLeft = Keyboard/A
RUp = Keyboard/T
RRight = Keyboard/H
RDown = Keyboard/G
RLeft = Keyboard/F
[Pad2]
Type = None
[Pad3]
Type = None
[Pad4]
Type = None
[Pad5]
Type = None
[Pad6]
Type = None
[Pad7]
Type = None
[Pad8]
Type = None

View file

@ -0,0 +1,26 @@
[ControlMapping]
Up = 1-19,10-19
Down = 1-20,10-20
Left = 1-21,10-21
Right = 1-22,10-22
Circle = 1-52,10-190
Cross = 1-54,10-189
Square = 1-29,10-191
Triangle = 1-47,10-188
Start = 1-62,10-197
Select = 1-66,10-196
L = 1-45,10-194
R = 1-51,10-195
An.Up = 1-37,10-4003
An.Down = 1-39,10-4002
An.Left = 1-38,10-4001
An.Right = 1-40,10-4000
Analog limiter = 1-60
RapidFire = 1-59
Fast-forward = 1-61
SpeedToggle = 1-68
Pause = 1-111,10-109,10-104
Rewind = 1-67
Save State = 1-53
Load State = 1-48
Screenshot = 1-46

View file

@ -0,0 +1,452 @@
[General]
FirstRun = False
RunCount = 5
Enable Logging = True
AutoRun = True
Browse = False
IgnoreBadMemAccess = True
CurrentDirectory = /home/deck/retrodeck/roms/psp
ShowDebuggerOnLoad = False
CheckForNewVersion = True
Language = en_US
ForceLagSync2 = False
DiscordPresence = True
UISound = False
AutoLoadSaveState = 0
EnableCheats = False
CwCheatRefreshRate = 77
CwCheatScrollPosition = 0.000000
GameListScrollPosition = 2056.913086
ScreenshotsAsPNG = False
UseFFV1 = False
DumpFrames = False
DumpVideoOutput = False
DumpAudio = False
SaveLoadResetsAVdumping = False
StateSlot = 0
EnableStateUndo = True
StateLoadUndoGame = NA
StateUndoLastSaveGame = NA
StateUndoLastSaveSlot = -5
RewindFlipFrequency = 0
ShowOnScreenMessage = True
ShowRegionOnGameIcon = False
ShowIDOnGameIcon = False
GameGridScale = 1.000000
GridView1 = True
GridView2 = True
GridView3 = False
RightAnalogUp = 0
RightAnalogDown = 0
RightAnalogLeft = 0
RightAnalogRight = 0
RightAnalogPress = 0
RightAnalogCustom = False
RightAnalogDisableDiagonal = False
SwipeUp = 0
SwipeDown = 0
SwipeLeft = 0
SwipeRight = 0
SwipeSensitivity = 1.000000
SwipeSmoothing = 0.300000
DoubleTapGesture = 0
GestureControlEnabled = False
ReportingHost = default
AutoSaveSymbolMap = False
CacheFullIsoInRam = False
RemoteISOPort = 0
LastRemoteISOServer =
LastRemoteISOPort = 0
RemoteISOManualConfig = False
RemoteShareOnStartup = False
RemoteISOSubdir = /
RemoteDebuggerOnStartup = False
InternalScreenRotation = 1
BackgroundAnimation = 1
UITint = 0.000000
UISaturation = 1.000000
PauseWhenMinimized = False
DumpDecryptedEboots = False
MemStickInserted = True
EnablePlugins = True
IgnoreCompatSettings =
[CPU]
CPUCore = 1
SeparateSASThread = True
SeparateIOThread = True
IOTimingMethod = 0
FastMemoryAccess = True
FunctionReplacements = True
HideSlowWarnings = False
HideStateWarnings = False
PreloadFunctions = False
JitDisableFlags = 0x00000000
CPUSpeed = 0
[Graphics]
EnableCardboardVR = False
CardboardScreenSize = 50
CardboardXShift = 0
CardboardYShift = 0
ShowFPSCounter = 0
GraphicsBackend = 0 (OPENGL)
FailedGraphicsBackends =
DisabledGraphicsBackends =
VulkanDevice =
CameraDevice =
RenderingMode = 1
SoftwareRenderer = False
SoftwareRendererJit = True
HardwareTransform = True
SoftwareSkinning = True
TextureFiltering = 1
BufferFiltering = 1
InternalResolution = 1
AndroidHwScale = 1
HighQualityDepth = 1
FrameSkip = 0
FrameSkipType = 0
AutoFrameSkip = False
FrameRate = 0
FrameRate2 = -1
AnalogFrameRate = 240
AnalogFrameRateMode = 0
UnthrottlingMode = CONTINUOUS
AnisotropyLevel = 4
VertexDecCache = False
TextureBackoffCache = False
TextureSecondaryCache = False
FullScreen = False
FullScreenMulti = False
SmallDisplayZoomType = 2
SmallDisplayOffsetX = 0.500000
SmallDisplayOffsetY = 0.500000
SmallDisplayZoomLevel = 1.000000
ImmersiveMode = True
SustainedPerformanceMode = False
IgnoreScreenInsets = True
ReplaceTextures = True
SaveNewTextures = False
IgnoreTextureFilenames = False
ReplaceTexturesAllowLate = True
TexScalingLevel = 1
TexScalingType = 0
TexDeposterize = False
TexHardwareScaling = False
VSyncInterval = False
BloomHack = 0
SplineBezierQuality = 2
HardwareTessellation = False
TextureShader = Off
ShaderChainRequires60FPS = False
MemBlockTransferGPU = True
DisableSlowFramebufEffects = False
FragmentTestCache = True
LogFrameDrops = False
InflightFrames = 2
RenderDuplicateFrames = False
GpuLogProfiler = False
[Sound]
Enable = True
AudioBackend = 0
ExtraAudioBuffering = False
GlobalVolume = 10
ReverbVolume = 10
AltSpeedVolume = -1
AudioDevice =
AutoAudioDevice = True
[Control]
HapticFeedback = False
ShowTouchCross = True
ShowTouchCircle = True
ShowTouchSquare = True
ShowTouchTriangle = True
Custom0Mapping = 0x0000000000000000
Custom0Image = 0
Custom0Shape = 0
Custom0Toggle = False
Custom0Repeat = False
Custom1Mapping = 0x0000000000000000
Custom1Image = 1
Custom1Shape = 0
Custom1Toggle = False
Custom1Repeat = False
Custom2Mapping = 0x0000000000000000
Custom2Image = 2
Custom2Shape = 0
Custom2Toggle = False
Custom2Repeat = False
Custom3Mapping = 0x0000000000000000
Custom3Image = 3
Custom3Shape = 0
Custom3Toggle = False
Custom3Repeat = False
Custom4Mapping = 0x0000000000000000
Custom4Image = 4
Custom4Shape = 0
Custom4Toggle = False
Custom4Repeat = False
Custom5Mapping = 0x0000000000000000
Custom5Image = 0
Custom5Shape = 1
Custom5Toggle = False
Custom5Repeat = False
Custom6Mapping = 0x0000000000000000
Custom6Image = 1
Custom6Shape = 1
Custom6Toggle = False
Custom6Repeat = False
Custom7Mapping = 0x0000000000000000
Custom7Image = 2
Custom7Shape = 1
Custom7Toggle = False
Custom7Repeat = False
Custom8Mapping = 0x0000000000000000
Custom8Image = 3
Custom8Shape = 1
Custom8Toggle = False
Custom8Repeat = False
Custom9Mapping = 0x0000000000000000
Custom9Image = 4
Custom9Shape = 1
Custom9Toggle = False
Custom9Repeat = False
ShowTouchPause = False
ShowTouchControls = False
DisableDpadDiagonals = False
GamepadOnlyFocused = False
TouchButtonStyle = 1
TouchButtonOpacity = 65
TouchButtonHideSeconds = 20
AutoCenterTouchAnalog = False
AnalogAutoRotSpeed = 8.000000
TouchSnapToGrid = False
TouchSnapGridSize = 64
ActionButtonSpacing2 = 1.000000
ActionButtonCenterX = 0.875000
ActionButtonCenterY = 0.779412
ActionButtonScale = 1.150000
DPadX = 0.148958
DPadY = 0.470588
DPadScale = 1.150000
ShowTouchDpad = True
DPadSpacing = 1.000000
StartKeyX = 0.619792
StartKeyY = 0.873162
StartKeyScale = 1.150000
ShowTouchStart = True
SelectKeyX = 0.500000
SelectKeyY = 0.873162
SelectKeyScale = 1.150000
ShowTouchSelect = True
UnthrottleKeyX = 0.380208
UnthrottleKeyY = 0.873162
UnthrottleKeyScale = 1.150000
ShowTouchUnthrottle = True
LKeyX = 0.071875
LKeyY = 0.196691
LKeyScale = 1.150000
ShowTouchLTrigger = True
RKeyX = 0.928125
RKeyY = 0.196691
RKeyScale = 1.150000
ShowTouchRTrigger = True
AnalogStickX = 0.148958
AnalogStickY = 0.830882
AnalogStickScale = 1.150000
ShowAnalogStick = True
RightAnalogStickX = 0.875000
RightAnalogStickY = 0.830882
RightAnalogStickScale = 1.150000
ShowRightAnalogStick = False
fcombo0X = 0.643750
fcombo0Y = 0.500000
comboKeyScale0 = 1.150000
ShowComboKey0 = False
fcombo1X = 0.763542
fcombo1Y = 0.500000
comboKeyScale1 = 1.150000
ShowComboKey1 = False
fcombo2X = 0.883333
fcombo2Y = 0.500000
comboKeyScale2 = 1.150000
ShowComboKey2 = False
fcombo3X = 0.643750
fcombo3Y = 0.332721
comboKeyScale3 = 1.150000
ShowComboKey3 = False
fcombo4X = 0.763542
fcombo4Y = 0.332721
comboKeyScale4 = 1.150000
ShowComboKey4 = False
fcombo5X = 0.356250
fcombo5Y = 0.500000
comboKeyScale5 = 1.150000
ShowComboKey5 = False
fcombo6X = 0.236458
fcombo6Y = 0.500000
comboKeyScale6 = 1.150000
ShowComboKey6 = False
fcombo7X = 0.116667
fcombo7Y = 0.500000
comboKeyScale7 = 1.150000
ShowComboKey7 = False
fcombo8X = 0.356250
fcombo8Y = 0.332721
comboKeyScale8 = 1.150000
ShowComboKey8 = False
fcombo9X = 0.236458
fcombo9Y = 0.332721
comboKeyScale9 = 1.150000
ShowComboKey9 = False
AnalogDeadzone = 0.150000
AnalogInverseDeadzone = 0.000000
AnalogSensitivity = 1.100000
AnalogIsCircular = False
AnalogLimiterDeadzone = 0.600000
LeftStickHeadScale = 1.000000
RightStickHeadScale = 1.000000
HideStickBackground = False
UseMouse = False
MapMouse = False
ConfineMap = False
MouseSensitivity = 0.100000
MouseSmoothing = 0.900000
SystemControls = True
[Network]
EnableWlan = False
EnableAdhocServer = False
proAdhocServer = socom.cc
PortOffset = 10000
MinTimeout = 0
ForcedFirstConnect = False
EnableUPnP = False
UPnPUseOriginalPort = False
EnableNetworkChat = False
ChatButtonPosition = 0
ChatScreenPosition = 0
EnableQuickChat = True
QuickChat1 = Quick Chat 1
QuickChat2 = Quick Chat 2
QuickChat3 = Quick Chat 3
QuickChat4 = Quick Chat 4
QuickChat5 = Quick Chat 5
[SystemParam]
PSPModel = 1
PSPFirmwareVersion = 660
NickName = PPSSPP
MacAddress = c8:56:7c:5c:fb:eb
Language = 1
ParamTimeFormat = 0
ParamDateFormat = 0
TimeZone = 0
DayLightSavings = False
ButtonPreference = 1
LockParentalLevel = 0
WlanAdhocChannel = 0
WlanPowerSave = False
EncryptSave = True
SavedataUpgradeVersion = True
MemStickSize = 16
[Debugger]
DisasmWindowX = -1
DisasmWindowY = -1
DisasmWindowW = -1
DisasmWindowH = -1
GEWindowX = -1
GEWindowY = -1
GEWindowW = -1
GEWindowH = -1
ConsoleWindowX = -1
ConsoleWindowY = -1
FontWidth = 8
FontHeight = 12
DisplayStatusBar = True
ShowBottomTabTitles = True
ShowDeveloperMenu = False
SkipDeadbeefFilling = False
FuncHashMap = False
MemInfoDetailed = False
DrawFrameGraph = False
[Upgrade]
UpgradeMessage =
UpgradeVersion =
DismissedVersion =
[Theme]
ThemeName = Default
[Recent]
MaxRecent = 60
[Log]
SYSTEMEnabled = True
SYSTEMLevel = 2
BOOTEnabled = True
BOOTLevel = 2
COMMONEnabled = True
COMMONLevel = 2
CPUEnabled = True
CPULevel = 2
FILESYSEnabled = True
FILESYSLevel = 2
G3DEnabled = True
G3DLevel = 2
HLEEnabled = True
HLELevel = 2
JITEnabled = True
JITLevel = 2
LOADEREnabled = True
LOADERLevel = 2
MEEnabled = True
MELevel = 2
MEMMAPEnabled = True
MEMMAPLevel = 2
SASMIXEnabled = True
SASMIXLevel = 2
SAVESTATEEnabled = True
SAVESTATELevel = 2
FRAMEBUFEnabled = True
FRAMEBUFLevel = 2
AUDIOEnabled = True
AUDIOLevel = 2
IOEnabled = True
IOLevel = 2
SCEAUDIOEnabled = True
SCEAUDIOLevel = 2
SCECTRLEnabled = True
SCECTRLLevel = 2
SCEDISPEnabled = True
SCEDISPLevel = 2
SCEFONTEnabled = True
SCEFONTLevel = 2
SCEGEEnabled = True
SCEGELevel = 2
SCEINTCEnabled = True
SCEINTCLevel = 2
SCEIOEnabled = True
SCEIOLevel = 2
SCEKERNELEnabled = True
SCEKERNELLevel = 2
SCEMODULEEnabled = True
SCEMODULELevel = 2
SCENETEnabled = True
SCENETLevel = 2
SCERTCEnabled = True
SCERTCLevel = 2
SCESASEnabled = True
SCESASLevel = 2
SCEUTILEnabled = True
SCEUTILLevel = 2
SCEMISCEnabled = True
SCEMISCLevel = 2
[PostShaderSetting]
BloomSettingValue1 = 0.600000
BloomSettingValue2 = 0.500000
CRTSettingValue1 = 1.000000
CartoonSettingValue1 = 0.500000
ColorCorrectionSettingValue1 = 1.000000
ColorCorrectionSettingValue2 = 1.000000
ColorCorrectionSettingValue3 = 1.000000
ColorCorrectionSettingValue4 = 1.000000
ScanlinesSettingValue1 = 1.000000
ScanlinesSettingValue2 = 0.500000
SharpenSettingValue1 = 1.500000
[PinnedPaths]
Path0 =

View file

@ -0,0 +1,599 @@
beetle_psx_analog_calibration = "disabled"
beetle_psx_analog_toggle = "disabled"
beetle_psx_aspect_ratio = "corrected"
beetle_psx_cd_access_method = "sync"
beetle_psx_cd_fastload = "2x(native)"
beetle_psx_core_timing_fps = "force_progressive"
beetle_psx_cpu_dynarec = "disabled"
beetle_psx_cpu_freq_scale = "100%(native)"
beetle_psx_crop_overscan = "smart"
beetle_psx_crosshair_color_p1 = "red"
beetle_psx_crosshair_color_p2 = "blue"
beetle_psx_display_internal_fps = "disabled"
beetle_psx_dither_mode = "1x(native)"
beetle_psx_dynarec_eventcycles = "128"
beetle_psx_dynarec_invalidate = "full"
beetle_psx_enable_memcard1 = "enabled"
beetle_psx_enable_multitap_port1 = "disabled"
beetle_psx_enable_multitap_port2 = "disabled"
beetle_psx_frame_duping = "disabled"
beetle_psx_gpu_overclock = "1x(native)"
beetle_psx_gte_overclock = "disabled"
beetle_psx_gun_cursor = "cross"
beetle_psx_gun_input_mode = "lightgun"
beetle_psx_image_crop = "disabled"
beetle_psx_image_offset = "disabled"
beetle_psx_initial_scanline = "0"
beetle_psx_initial_scanline_pal = "0"
beetle_psx_internal_resolution = "1x(native)"
beetle_psx_last_scanline = "239"
beetle_psx_last_scanline_pal = "287"
beetle_psx_line_render = "default"
beetle_psx_memcard_left_index = "0"
beetle_psx_memcard_right_index = "1"
beetle_psx_mouse_sensitivity = "100%"
beetle_psx_negcon_deadzone = "0%"
beetle_psx_negcon_response = "linear"
beetle_psx_override_bios = "disabled"
beetle_psx_pal_video_timing_override = "disabled"
beetle_psx_pgxp_2d_tol = "disabled"
beetle_psx_pgxp_mode = "disabled"
beetle_psx_pgxp_nclip = "disabled"
beetle_psx_shared_memory_cards = "disabled"
beetle_psx_skip_bios = "disabled"
beetle_psx_use_mednafen_memcard0_method = "libretro"
beetle_psx_widescreen_hack = "disabled"
beetle_psx_widescreen_hack_aspect_ratio = "16:9"
cap32_advanced_green_phosphor = "15"
cap32_autorun = "enabled"
cap32_combokey = "y"
cap32_db_mapkeys = "enabled"
cap32_floppy_sound = "enabled"
cap32_gfx_colors = "24bit"
cap32_lang_layout = "english"
cap32_model = "6128"
cap32_ram = "128"
cap32_retrojoy0 = "auto"
cap32_retrojoy1 = "auto"
cap32_scr_intensity = "8"
cap32_scr_tube = "color"
cap32_statusbar = "onloading"
citra_analog_function = "C-Stick and Touchscreen Pointer"
citra_custom_textures = "disabled"
citra_deadzone = "15"
citra_dump_textures = "disabled"
citra_is_new_3ds = "Old 3DS"
citra_language = "English"
citra_layout_option = "Default Top-Bottom Screen"
citra_mouse_touchscreen = "enabled"
citra_region_value = "Auto"
citra_render_touchscreen = "disabled"
citra_resolution_factor = "4x"
citra_swap_screen = "Top"
citra_texture_filter = "none"
citra_touch_touchscreen = "enabled"
citra_use_acc_geo_shaders = "enabled"
citra_use_acc_mul = "enabled"
citra_use_cpu_jit = "enabled"
citra_use_gdbstub = "disabled"
citra_use_hw_renderer = "enabled"
citra_use_hw_shader_cache = "enabled"
citra_use_hw_shaders = "enabled"
citra_use_libretro_save_path = "LibRetro Default"
citra_use_shader_jit = "enabled"
citra_use_virtual_sd = "enabled"
desmume_advanced_timing = "enabled"
desmume_boot_into_bios = "disabled"
desmume_color_depth = "16-bit"
desmume_cpu_mode = "jit"
desmume_firmware_language = "Auto"
desmume_frameskip = "0"
desmume_gfx_edgemark = "enabled"
desmume_gfx_highres_interpolate_color = "disabled"
desmume_gfx_linehack = "enabled"
desmume_gfx_multisampling = "disabled"
desmume_gfx_texture_deposterize = "disabled"
desmume_gfx_texture_scaling = "1"
desmume_gfx_texture_smoothing = "disabled"
desmume_gfx_txthack = "disabled"
desmume_hybrid_cursor_always_smallscreen = "enabled"
desmume_hybrid_layout_ratio = "3:1"
desmume_hybrid_layout_scale = "disabled"
desmume_hybrid_showboth_screens = "enabled"
desmume_input_rotation = "0"
desmume_internal_resolution = "256x192"
desmume_jit_block_size = "12"
desmume_load_to_memory = "disabled"
desmume_mic_mode = "pattern"
desmume_mouse_speed = "1.0"
desmume_num_cores = "1"
desmume_opengl_depth_lequal_polygon_facing = "disabled"
desmume_opengl_mode = "disabled"
desmume_opengl_nds_depth_calculation = "enabled"
desmume_opengl_shadow_polygon = "enabled"
desmume_opengl_special_zero_alpha = "enabled"
desmume_pointer_colour = "white"
desmume_pointer_device_acceleration_mod = "0"
desmume_pointer_device_deadzone = "15"
desmume_pointer_device_l = "none"
desmume_pointer_device_r = "none"
desmume_pointer_mouse = "enabled"
desmume_pointer_stylus_pressure = "50"
desmume_pointer_type = "mouse"
desmume_screens_gap = "0"
desmume_screens_layout = "top/bottom"
desmume_use_external_bios = "disabled"
dolphin_alt_gc_ports_on_wii = "disabled"
dolphin_bbox_enabled = "disabled"
dolphin_cheats_enabled = "disabled"
dolphin_cpu_clock_rate = "100%"
dolphin_cpu_core = "JIT64"
dolphin_dsp_hle = "enabled"
dolphin_dsp_jit = "enabled"
dolphin_efb_scale = "x1 (640 x 528)"
dolphin_efb_scaled_copy = "enabled"
dolphin_efb_to_texture = "enabled"
dolphin_efb_to_vram = "disabled"
dolphin_enable_rumble = "enabled"
dolphin_fast_depth_calculation = "enabled"
dolphin_fastmem = "enabled"
dolphin_force_texture_filtering = "disabled"
dolphin_gpu_texture_decoding = "disabled"
dolphin_ir_mode = "Right Stick controls pointer (relative)"
dolphin_ir_offset = "10"
dolphin_ir_pitch = "15"
dolphin_ir_yaw = "15"
dolphin_language = "English"
dolphin_load_custom_textures = "disabled"
dolphin_log_level = "Info"
dolphin_max_anisotropy = "1x"
dolphin_mixer_rate = "32000"
dolphin_osd_enabled = "enabled"
dolphin_pal60 = "enabled"
dolphin_progressive_scan = "enabled"
dolphin_renderer = "Hardware"
dolphin_sensor_bar_position = "Bottom"
dolphin_shader_compilation_mode = "sync"
dolphin_texture_cache_accuracy = "Fast"
dolphin_wait_for_shaders = "disabled"
dolphin_widescreen = "enabled"
dolphin_widescreen_hack = "disabled"
dolphin_wiimote_continuous_scanning = "disabled"
duckstation_BIOS.PatchFastBoot = "true"
duckstation_BIOS.PathNTSCJ = "scph5500.bin"
duckstation_BIOS.PathNTSCU = "scph5501.bin"
duckstation_BIOS.PathPAL = "scph5502.bin"
duckstation_CDROM.LoadImagePatches = "false"
duckstation_CDROM.LoadImageToRAM = "false"
duckstation_CDROM.MuteCDAudio = "false"
duckstation_CDROM.PreCacheCHD = "false"
duckstation_CDROM.ReadaheadSectors = "8"
duckstation_CDROM.ReadSpeedup = "1"
duckstation_CDROM.ReadThread = "true"
duckstation_CDROM.RegionCheck = "false"
duckstation_CDROM.SeekSpeedup = "1"
duckstation_Console.Enable8MBRAM = "false"
duckstation_Console.Region = "Auto"
duckstation_Controller1.AnalogDPadInDigitalMode = "true"
duckstation_Controller1.AxisScale = "1.00f"
duckstation_Controller1.ForceAnalogOnReset = "false"
duckstation_Controller1.SteeringDeadzone = "0.10"
duckstation_Controller1.TwistResponse = "linear"
duckstation_Controller1.VibrationBias = "8"
duckstation_Controller1.XScale = "1.00"
duckstation_Controller2.AnalogDPadInDigitalMode = "true"
duckstation_Controller2.AxisScale = "1.00f"
duckstation_Controller2.ForceAnalogOnReset = "false"
duckstation_Controller2.SteeringDeadzone = "0.00"
duckstation_Controller2.TwistResponse = "linear"
duckstation_Controller2.VibrationBias = "8"
duckstation_Controller2.XScale = "1.00"
duckstation_Controller3.AnalogDPadInDigitalMode = "true"
duckstation_Controller3.AxisScale = "1.00f"
duckstation_Controller3.ForceAnalogOnReset = "false"
duckstation_Controller3.SteeringDeadzone = "0.10"
duckstation_Controller3.TwistResponse = "linear"
duckstation_Controller3.VibrationBias = "8"
duckstation_Controller4.AnalogDPadInDigitalMode = "true"
duckstation_Controller4.AxisScale = "1.00f"
duckstation_Controller4.ForceAnalogOnReset = "false"
duckstation_Controller4.SteeringDeadzone = "0.10"
duckstation_Controller4.TwistResponse = "linear"
duckstation_Controller4.VibrationBias = "8"
duckstation_Controller5.AnalogDPadInDigitalMode = "true"
duckstation_Controller5.AxisScale = "1.00f"
duckstation_Controller5.ForceAnalogOnReset = "false"
duckstation_Controller5.VibrationBias = "8"
duckstation_Controller6.AnalogDPadInDigitalMode = "true"
duckstation_Controller6.AxisScale = "1.00f"
duckstation_Controller6.ForceAnalogOnReset = "false"
duckstation_Controller6.VibrationBias = "8"
duckstation_Controller7.AnalogDPadInDigitalMode = "true"
duckstation_Controller7.AxisScale = "1.00f"
duckstation_Controller7.ForceAnalogOnReset = "false"
duckstation_Controller7.VibrationBias = "8"
duckstation_Controller8.AnalogDPadInDigitalMode = "true"
duckstation_Controller8.AxisScale = "1.00f"
duckstation_Controller8.ForceAnalogOnReset = "false"
duckstation_Controller8.VibrationBias = "8"
duckstation_ControllerPorts.MultitapMode = "Disabled"
duckstation_CPU.ExecutionMode = "Recompiler"
duckstation_CPU.FastmemMode = "MMap"
duckstation_CPU.FastmemRewrite = "false"
duckstation_CPU.Overclock = "100"
duckstation_CPU.RecompilerBlockLinking = "true"
duckstation_CPU.RecompilerICache = "false"
duckstation_Display.ActiveEndOffset = "0"
duckstation_Display.ActiveStartOffset = "0"
duckstation_Display.AspectRatio = "Auto"
duckstation_Display.CropMode = "Borders"
duckstation_Display.CustomAspectRatioDenominator = "3"
duckstation_Display.CustomAspectRatioNumerator = "4"
duckstation_Display.Force4_3For24Bit = "false"
duckstation_Display.LineEndOffset = "0"
duckstation_Display.LineStartOffset = "0"
duckstation_Display.ShowOSDMessages = "true"
duckstation_GPU.ChromaSmoothing24Bit = "false"
duckstation_GPU.DisableInterlacing = "true"
duckstation_GPU.DownsampleMode = "Disabled"
duckstation_GPU.ForceNTSCTimings = "false"
duckstation_GPU.MSAA = "4"
duckstation_GPU.PGXPCPU = "false"
duckstation_GPU.PGXPCulling = "true"
duckstation_GPU.PGXPDepthBuffer = "false"
duckstation_GPU.PGXPEnable = "true"
duckstation_GPU.PGXPPreserveProjFP = "false"
duckstation_GPU.PGXPTextureCorrection = "true"
duckstation_GPU.PGXPTolerance = "-1.0"
duckstation_GPU.PGXPVertexCache = "false"
duckstation_GPU.Renderer = "Vulkan"
duckstation_GPU.ResolutionScale = "3"
duckstation_GPU.ScaledDithering = "true"
duckstation_GPU.TextureFilter = "Bilinear"
duckstation_GPU.TrueColor = "false"
duckstation_GPU.UseSoftwareRendererForReadbacks = "false"
duckstation_GPU.UseThread = "true"
duckstation_GPU.WidescreenHack = "false"
duckstation_Logging.LogLevel = "Info"
duckstation_Main.ApplyGameSettings = "true"
duckstation_Main.LoadDevicesFromSaveStates = "false"
duckstation_Main.RunaheadFrameCount = "0"
duckstation_MemoryCards.Card1Type = "Libretro"
duckstation_MemoryCards.Card2Type = "None"
duckstation_MemoryCards.UsePlaylistTitle = "true"
duckstation_TextureReplacements.EnableVRAMWriteReplacements = "false"
duckstation_TextureReplacements.PreloadTextures = "false"
gambatte_audio_resampler = "sinc"
gambatte_dark_filter_level = "0"
gambatte_gb_bootloader = "enabled"
gambatte_gb_colorization = "internal"
gambatte_gb_hwmode = "Auto"
gambatte_gb_internal_palette = "GB - DMG"
gambatte_gb_link_mode = "Not Connected"
gambatte_gb_link_network_port = "56400"
gambatte_gb_link_network_server_ip_1 = "0"
gambatte_gb_link_network_server_ip_10 = "0"
gambatte_gb_link_network_server_ip_11 = "0"
gambatte_gb_link_network_server_ip_12 = "0"
gambatte_gb_link_network_server_ip_2 = "0"
gambatte_gb_link_network_server_ip_3 = "0"
gambatte_gb_link_network_server_ip_4 = "0"
gambatte_gb_link_network_server_ip_5 = "0"
gambatte_gb_link_network_server_ip_6 = "0"
gambatte_gb_link_network_server_ip_7 = "0"
gambatte_gb_link_network_server_ip_8 = "0"
gambatte_gb_link_network_server_ip_9 = "0"
gambatte_gb_palette_pixelshift_1 = "PixelShift 01 - Arctic Green"
gambatte_gb_palette_twb64_1 = "TWB64 001 - Aqours Blue"
gambatte_gb_palette_twb64_2 = "TWB64 101 - 765PRO Pink"
gambatte_gbc_color_correction = "GBC only"
gambatte_gbc_color_correction_mode = "accurate"
gambatte_gbc_frontlight_position = "central"
gambatte_mix_frames = "disabled"
gambatte_rumble_level = "10"
gambatte_show_gb_link_settings = "disabled"
gambatte_turbo_period = "4"
gambatte_up_down_allowed = "disabled"
genesis_plus_gx_add_on = "auto"
genesis_plus_gx_addr_error = "enabled"
genesis_plus_gx_aspect_ratio = "auto"
genesis_plus_gx_audio_filter = "disabled"
genesis_plus_gx_bios = "disabled"
genesis_plus_gx_blargg_ntsc_filter = "disabled"
genesis_plus_gx_bram = "per game"
genesis_plus_gx_cdda_volume = "100"
genesis_plus_gx_fm_preamp = "100"
genesis_plus_gx_force_dtack = "enabled"
genesis_plus_gx_frameskip = "disabled"
genesis_plus_gx_frameskip_threshold = "33"
genesis_plus_gx_gg_extra = "disabled"
genesis_plus_gx_gun_cursor = "disabled"
genesis_plus_gx_gun_input = "lightgun"
genesis_plus_gx_invert_mouse = "disabled"
genesis_plus_gx_lcd_filter = "disabled"
genesis_plus_gx_left_border = "disabled"
genesis_plus_gx_lock_on = "disabled"
genesis_plus_gx_lowpass_range = "60"
genesis_plus_gx_md_channel_0_volume = "100"
genesis_plus_gx_md_channel_1_volume = "100"
genesis_plus_gx_md_channel_2_volume = "100"
genesis_plus_gx_md_channel_3_volume = "100"
genesis_plus_gx_md_channel_4_volume = "100"
genesis_plus_gx_md_channel_5_volume = "100"
genesis_plus_gx_no_sprite_limit = "disabled"
genesis_plus_gx_overclock = "100%"
genesis_plus_gx_overscan = "disabled"
genesis_plus_gx_pcm_volume = "100"
genesis_plus_gx_psg_channel_0_volume = "100"
genesis_plus_gx_psg_channel_1_volume = "100"
genesis_plus_gx_psg_channel_2_volume = "100"
genesis_plus_gx_psg_channel_3_volume = "100"
genesis_plus_gx_psg_preamp = "150"
genesis_plus_gx_region_detect = "auto"
genesis_plus_gx_render = "single field"
genesis_plus_gx_show_advanced_audio_settings = "disabled"
genesis_plus_gx_sms_fm_channel_0_volume = "100"
genesis_plus_gx_sms_fm_channel_1_volume = "100"
genesis_plus_gx_sms_fm_channel_2_volume = "100"
genesis_plus_gx_sms_fm_channel_3_volume = "100"
genesis_plus_gx_sms_fm_channel_4_volume = "100"
genesis_plus_gx_sms_fm_channel_5_volume = "100"
genesis_plus_gx_sms_fm_channel_6_volume = "100"
genesis_plus_gx_sms_fm_channel_7_volume = "100"
genesis_plus_gx_sms_fm_channel_8_volume = "100"
genesis_plus_gx_sound_output = "stereo"
genesis_plus_gx_system_hw = "auto"
genesis_plus_gx_ym2413 = "auto"
genesis_plus_gx_ym2413_core = "mame"
genesis_plus_gx_ym2612 = "mame (ym2612)"
mame-external_hiscore = "disabled"
mame_alternate_renderer = "disabled"
mame_altres = "640x480"
mame_auto_save = "disabled"
mame_boot_from_cli = "disabled"
mame_boot_to_bios = "disabled"
mame_boot_to_osd = "disabled"
mame_buttons_profiles = "enabled"
mame_cheats_enable = "disabled"
mame_cpu_overclock = "default"
mame_current_adj_brightness = "default"
mame_current_adj_contrast = "default"
mame_current_adj_gamma = "default"
mame_current_aspect_ratio = "DAR"
mame_current_frame_skip = "0"
mame_current_mouse_enable = "enabled"
mame_current_sample_rate = "48000Hz"
mame_current_skip_gameinfo = "disabled"
mame_current_skip_nagscreen = "enabled"
mame_current_skip_warnings = "disabled"
mame_current_turbo_button = "disabled"
mame_current_turbo_delay = "medium"
mame_current_videoapproach1_enable = "disabled"
mame_lightgun_mode = "none"
mame_mame_4way_enable = "disabled"
mame_mame_paths_enable = "disabled"
mame_media_type = "rom"
mame_mouse_enable = "disabled"
mame_read_config = "disabled"
mame_saves = "game"
mame_softlists_auto_media = "enabled"
mame_softlists_enable = "enabled"
mame_throttle = "disabled"
mame_write_config = "disabled"
melonds_audio_bitrate = "Automatic"
melonds_audio_interpolation = "None"
melonds_boot_directly = "enabled"
melonds_console_mode = "DS"
melonds_dsi_sdcard = "disabled"
melonds_hybrid_ratio = "2"
melonds_hybrid_small_screen = "Bottom"
melonds_jit_block_size = "32"
melonds_jit_branch_optimisations = "enabled"
melonds_jit_enable = "enabled"
melonds_jit_fast_memory = "enabled"
melonds_jit_literal_optimisations = "enabled"
melonds_opengl_better_polygons = "disabled"
melonds_opengl_filtering = "nearest"
melonds_opengl_renderer = "disabled"
melonds_opengl_resolution = "1x native (256x192)"
melonds_randomize_mac_address = "disabled"
melonds_screen_gap = "0"
melonds_screen_layout = "Top/Bottom"
melonds_swapscreen_mode = "Toggle"
melonds_threaded_renderer = "disabled"
melonds_touch_mode = "enabled"
mgba_allow_opposing_directions = "no"
mgba_audio_low_pass_filter = "disabled"
mgba_audio_low_pass_range = "60"
mgba_color_correction = "OFF"
mgba_force_gbp = "OFF"
mgba_frameskip = "disabled"
mgba_frameskip_interval = "0"
mgba_frameskip_threshold = "33"
mgba_gb_colors = "Grayscale"
mgba_gb_colors_preset = "0"
mgba_gb_model = "Autodetect"
mgba_idle_optimization = "Remove Known"
mgba_interframe_blending = "OFF"
mgba_sgb_borders = "ON"
mgba_skip_bios = "OFF"
mgba_solar_sensor_level = "0"
mgba_use_bios = "ON"
mupen64plus-169screensize = "960x540"
mupen64plus-43screensize = "640x480"
mupen64plus-alt-map = "False"
mupen64plus-angrylion-multithread = "all threads"
mupen64plus-angrylion-overscan = "disabled"
mupen64plus-angrylion-sync = "Low"
mupen64plus-angrylion-vioverlay = "Filtered"
mupen64plus-aspect = "4:3"
mupen64plus-astick-deadzone = "15"
mupen64plus-astick-sensitivity = "100"
mupen64plus-BackgroundMode = "OnePiece"
mupen64plus-BilinearMode = "standard"
mupen64plus-CorrectTexrectCoords = "Off"
mupen64plus-CountPerOp = "0"
mupen64plus-CountPerOpDenomPot = "0"
mupen64plus-cpucore = "dynamic_recompiler"
mupen64plus-d-cbutton = "C3"
mupen64plus-DitheringPattern = "False"
mupen64plus-DitheringQuantization = "False"
mupen64plus-EnableCopyAuxToRDRAM = "False"
mupen64plus-EnableCopyColorToRDRAM = "Async"
mupen64plus-EnableCopyDepthToRDRAM = "Software"
mupen64plus-EnableEnhancedHighResStorage = "False"
mupen64plus-EnableEnhancedTextureStorage = "False"
mupen64plus-EnableFBEmulation = "True"
mupen64plus-EnableFragmentDepthWrite = "True"
mupen64plus-EnableHiResAltCRC = "False"
mupen64plus-EnableHWLighting = "False"
mupen64plus-EnableInaccurateTextureCoordinates = "False"
mupen64plus-EnableLegacyBlending = "False"
mupen64plus-EnableLODEmulation = "True"
mupen64plus-EnableN64DepthCompare = "False"
mupen64plus-EnableNativeResFactor = "0"
mupen64plus-EnableNativeResTexrects = "Disabled"
mupen64plus-EnableOverscan = "Enabled"
mupen64plus-EnableShadersStorage = "True"
mupen64plus-EnableTexCoordBounds = "False"
mupen64plus-EnableTextureCache = "True"
mupen64plus-ForceDisableExtraMem = "False"
mupen64plus-FrameDuping = "False"
mupen64plus-Framerate = "Original"
mupen64plus-FXAA = "0"
mupen64plus-GLideN64IniBehaviour = "late"
mupen64plus-HybridFilter = "True"
mupen64plus-IgnoreTLBExceptions = "False"
mupen64plus-l-cbutton = "C2"
mupen64plus-MaxHiResTxVramLimit = "0"
mupen64plus-MaxTxCacheSize = "8000"
mupen64plus-MultiSampling = "0"
mupen64plus-OverscanBottom = "0"
mupen64plus-OverscanLeft = "0"
mupen64plus-OverscanRight = "0"
mupen64plus-OverscanTop = "0"
mupen64plus-pak1 = "memory"
mupen64plus-pak2 = "none"
mupen64plus-pak3 = "none"
mupen64plus-pak4 = "none"
mupen64plus-parallel-rdp-deinterlace-method = "Bob"
mupen64plus-parallel-rdp-dither-filter = "True"
mupen64plus-parallel-rdp-divot-filter = "True"
mupen64plus-parallel-rdp-downscaling = "disable"
mupen64plus-parallel-rdp-gamma-dither = "True"
mupen64plus-parallel-rdp-native-tex-rect = "True"
mupen64plus-parallel-rdp-native-texture-lod = "False"
mupen64plus-parallel-rdp-overscan = "0"
mupen64plus-parallel-rdp-super-sampled-read-back = "False"
mupen64plus-parallel-rdp-super-sampled-read-back-dither = "True"
mupen64plus-parallel-rdp-synchronous = "True"
mupen64plus-parallel-rdp-upscaling = "1x"
mupen64plus-parallel-rdp-vi-aa = "True"
mupen64plus-parallel-rdp-vi-bilinear = "True"
mupen64plus-r-cbutton = "C1"
mupen64plus-rdp-plugin = "gliden64"
mupen64plus-RDRAMImageDitheringMode = "False"
mupen64plus-rsp-plugin = "hle"
mupen64plus-ThreadedRenderer = "False"
mupen64plus-txCacheCompression = "True"
mupen64plus-txEnhancementMode = "None"
mupen64plus-txFilterIgnoreBG = "True"
mupen64plus-txFilterMode = "None"
mupen64plus-txHiresEnable = "False"
mupen64plus-txHiresFullAlphaChannel = "False"
mupen64plus-u-cbutton = "C4"
mupen64plus-virefresh = "Auto"
opera_savestate_auto_load = "False"
pcsx2_accurate_date = "enabled"
pcsx2_anisotropic_filter = "0"
pcsx2_aspect_ratio = "0"
pcsx2_bios = "scph10000.bin"
pcsx2_boot_bios = "disabled"
pcsx2_clamping_mode = "1"
pcsx2_conservative_buffer = "enabled"
pcsx2_deinterlace_mode = "7"
pcsx2_dithering = "2"
pcsx2_enable_60fps_patches = "disabled"
pcsx2_enable_cheats = "disabled"
pcsx2_enable_widescreen_patches = "enabled"
pcsx2_fast_invalidation = "disabled"
pcsx2_fastboot = "disabled"
pcsx2_fastcdvd = "disabled"
pcsx2_frames_to_draw = "1"
pcsx2_frames_to_skip = "1"
pcsx2_frameskip = "disabled"
pcsx2_fxaa = "0"
pcsx2_gamepad_l_deadzone = "0"
pcsx2_gamepad_r_deadzone = "0"
pcsx2_memcard_slot_1 = "shared8"
pcsx2_memcard_slot_2 = "empty"
pcsx2_mipmapping = "-1"
pcsx2_palette_conversion = "disabled"
pcsx2_renderer = "Auto"
pcsx2_round_mode = "3"
pcsx2_rumble_enable = "enabled"
pcsx2_rumble_intensity = "100"
pcsx2_speedhacks_presets = "3"
pcsx2_system_language = "English"
pcsx2_texture_filtering = "2"
pcsx2_upscale_multiplier = "1"
pcsx2_userhack_align_sprite = "disabled"
pcsx2_userhack_auto_flush = "disabled"
pcsx2_userhack_fb_conversion = "disabled"
pcsx2_userhack_halfpixel_offset = "0"
pcsx2_userhack_halfscreen_fix = "-1"
pcsx2_userhack_merge_sprite = "disabled"
pcsx2_userhack_round_sprite = "0"
pcsx2_userhack_skipdraw_layers = "0"
pcsx2_userhack_skipdraw_start = "0"
pcsx2_userhack_texture_offset_x_hundreds = "0"
pcsx2_userhack_texture_offset_x_tens = "0"
pcsx2_userhack_texture_offset_y_hundreds = "0"
pcsx2_userhack_texture_offset_y_tens = "0"
pcsx2_userhack_wildarms_offset = "disabled"
pcsx2_vsync_mtgs_queue = "2"
pcsx2_vu_clamping_mode = "1"
pcsx2_vu_round_mode = "3"
pokemini_lcdbright = "0"
pokemini_lcdcontrast = "64"
pokemini_lcdfilter = "dotmatrix"
pokemini_lcdmode = "analog"
pokemini_lowpass_filter = "disabled"
pokemini_lowpass_range = "60"
pokemini_palette = "Default"
pokemini_piezofilter = "enabled"
pokemini_rumble_lv = "10"
pokemini_screen_shake_lv = "3"
pokemini_turbo_period = "18"
pokemini_video_scale = "4x"
ppsspp_auto_frameskip = "disabled"
ppsspp_block_transfer_gpu = "enabled"
ppsspp_button_preference = "Cross"
ppsspp_cheats = "disabled"
ppsspp_cpu_core = "JIT"
ppsspp_disable_slow_framebuffer_effects = "disabled"
ppsspp_fast_memory = "enabled"
ppsspp_force_lag_sync = "disabled"
ppsspp_frameskip = "Off"
ppsspp_frameskiptype = "Number of frames"
ppsspp_gpu_hardware_transform = "enabled"
ppsspp_ignore_bad_memory_access = "enabled"
ppsspp_inflight_frames = "Up to 2"
ppsspp_internal_resolution = "480x272"
ppsspp_io_timing_method = "Fast"
ppsspp_language = "Automatic"
ppsspp_lazy_texture_caching = "disabled"
ppsspp_locked_cpu_speed = "off"
ppsspp_lower_resolution_for_effects = "Off"
ppsspp_rendering_mode = "Buffered"
ppsspp_retain_changed_textures = "disabled"
ppsspp_software_skinning = "enabled"
ppsspp_spline_quality = "Low"
ppsspp_texture_anisotropic_filtering = "off"
ppsspp_texture_deposterize = "disabled"
ppsspp_texture_filtering = "Auto"
ppsspp_texture_replacement = "disabled"
ppsspp_texture_scaling_level = "Off"
ppsspp_texture_scaling_type = "xbrz"
ppsspp_texture_shader = "Off"
ppsspp_vertex_cache = "disabled"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,225 @@
Core:
PPU Decoder: Recompiler (LLVM)
PPU Threads: 2
PPU Debug: false
PPU Calling History: false
Save LLVM logs: false
Use LLVM CPU: ""
Max LLVM Compile Threads: 0
PPU LLVM Greedy Mode: false
PPU LLVM Precompilation: true
Thread Scheduler Mode: Operating System
Set DAZ and FTZ: false
SPU Decoder: Recompiler (LLVM)
SPU Reservation Busy Waiting Percentage: 0
SPU GETLLAR Busy Waiting Percentage: 100
SPU Debug: false
MFC Debug: false
Preferred SPU Threads: 0
SPU delay penalty: 3
SPU loop detection: false
Max SPURS Threads: 6
SPU Block Size: Safe
Accurate GETLLAR: false
Accurate SPU DMA: false
Accurate SPU Reservations: true
Accurate Cache Line Stores: false
Accurate RSX reservation access: false
RSX FIFO Accuracy: Fast
SPU Verification: true
SPU Cache: true
SPU Profiler: false
MFC Commands Shuffling Limit: 0
MFC Commands Timeout: 0
MFC Commands Shuffling In Steps: false
Enable TSX: Disabled
Accurate xfloat: false
Approximate xfloat: true
Relaxed xfloat: true
Accurate PPU 128-byte Reservation Op Max Length: 0
Stub PPU Traps: 0
Full Width AVX-512: false
PPU LLVM Java Mode Handling: true
Use Accurate DFMA: true
PPU Set Saturation Bit: false
PPU Accurate Non-Java Mode: false
PPU Fixup Vector NaN Values: false
PPU Accurate Vector NaN Values: false
PPU Set FPCC Bits: false
Debug Console Mode: false
Hook static functions: false
Libraries Control:
[]
HLE lwmutex: false
SPU LLVM Lower Bound: 0
SPU LLVM Upper Bound: 18446744073709551615
TSX Transaction First Limit: 800
TSX Transaction Second Limit: 2000
Clocks scale: 100
SPU Wake-Up Delay: 0
SPU Wake-Up Delay Thread Mask: 63
Max CPU Preempt Count: 0
Allow RSX CPU Preemptions: true
Sleep Timers Accuracy: As Host
Performance Report Threshold: 500
Enable Performance Report: false
Assume External Debugger: false
VFS:
Enable /host_root/: false
Initialize Directories: true
Limit disk cache size: false
Disk cache maximum size (MB): 5120
Empty /dev_hdd0/tmp/: true
Video:
Renderer: Vulkan
Resolution: 1280x720
Aspect ratio: 16:9
Frame limit: Auto
MSAA: Auto
Shader Mode: Async Shader Recompiler
Shader Precision: High
Write Color Buffers: false
Write Depth Buffer: false
Read Color Buffers: false
Read Depth Buffer: false
Log shader programs: false
VSync: false
Debug output: false
Debug overlay: false
Renderdoc Compatibility Mode: false
Use GPU texture scaling: false
Stretch To Display Area: false
Force High Precision Z buffer: false
Strict Rendering Mode: false
Disable ZCull Occlusion Queries: false
Disable Video Output: false
Disable Vertex Cache: false
Disable FIFO Reordering: false
Enable Frame Skip: false
Force CPU Blit: false
Disable On-Disk Shader Cache: false
Disable Vulkan Memory Allocator: false
Use full RGB output range: true
Strict Texture Flushing: false
Disable native float16 support: true
Multithreaded RSX: false
Relaxed ZCULL Sync: false
Enable 3D: false
Debug Program Analyser: false
Accurate ZCULL stats: true
Consecutive Frames To Draw: 1
Consecutive Frames To Skip: 1
Resolution Scale: 100
Anisotropic Filter Override: 0
Texture LOD Bias Addend: 0
Minimum Scalable Dimension: 16
Shader Compiler Threads: 0
Driver Recovery Timeout: 1000000
Driver Wake-Up Delay: 1
Vblank Rate: 60
Vblank NTSC Fixup: false
DECR memory layout: false
Allow Host GPU Labels: false
Disable MSL Fast Math: false
Software VkSemaphore: false
Vulkan:
Adapter: llvmpipe (LLVM 14.0.6, 256 bits)
Force FIFO present mode: false
Force primitive restart flag: false
Force Disable Exclusive Fullscreen Mode: false
Asynchronous Texture Streaming 2: false
Enable FidelityFX Super Resolution Upscaling: false
FidelityFX CAS Sharpening Intensity: 50
Asynchronous Queue Scheduler: Safe
Performance Overlay:
Enabled: false
Enable Framerate Graph: false
Enable Frametime Graph: false
Framerate datapoints: 50
Frametime datapoints: 170
Detail level: Medium
Framerate graph detail level: All
Frametime graph detail level: All
Metrics update interval (ms): 350
Font size (px): 10
Position: Top Left
Font: n023055ms.ttf
Horizontal Margin (px): 50
Vertical Margin (px): 50
Center Horizontally: false
Center Vertically: false
Opacity (%): 70
Body Color (hex): "#FFE138FF"
Body Background (hex): "#002339FF"
Title Color (hex): "#F26C24FF"
Title Background (hex): "#00000000"
Shader Compilation Hint:
Position X (px): 20
Position Y (px): 690
Shader Loading Dialog:
Allow custom background: true
Darkening effect strength: 30
Blur effect strength: 0
Audio:
Renderer: Cubeb
Audio Provider: CellAudio
RSXAudio Avport: HDMI 0
Dump to file: false
Convert to 16 bit: false
Audio Format: Stereo
Audio Formats: 0
Audio Device: "@@@default@@@"
Master Volume: 100
Enable Buffering: true
Desired Audio Buffer Duration: 100
Enable Time Stretching: false
Time Stretching Threshold: 75
Microphone Type: "Null"
Microphone Devices: "@@@@@@@@@@@@"
Music Handler: Qt
Input/Output:
Keyboard: "Null"
Mouse: Basic
Camera: "Null"
Camera type: Unknown
Camera flip: None
Camera ID: Default
Move: "Null"
Buzz emulated controller: "Null"
Turntable emulated controller: "Null"
GHLtar emulated controller: "Null"
Pad handler mode: Single-threaded
Pad handler sleep (microseconds): 1000
Background input enabled: true
Show move cursor: false
System:
License Area: SCEA
Language: English (US)
Keyboard Type: English keyboard (US standard)
Enter button assignment: Enter with cross
Console time offset (s): 0
PSID high: 0
PSID low: 0
Net:
Internet enabled: Disconnected
IP address: 0.0.0.0
DNS address: 8.8.8.8
IP swap list: ""
PSN status: Disconnected
Savestate:
Start Paused: false
Suspend Emulation Savestate Mode: true
Inspection Mode Savestates: false
Save Disc Game Data: false
Miscellaneous:
Automatically start games after boot: true
Exit RPCS3 when process finishes: false
Start games in fullscreen mode: false
Prevent display sleep while running games: true
Show trophy popups: true
Show shader compilation hint: true
Use native user interface: true
GDB Server: 127.0.0.1:2345
Silence All Logs: false
Window Title Format: "FPS: %F | %R | %V | %T [%t]"
Log: {}

View file

@ -0,0 +1,49 @@
$(EmulatorDir): ""
/dev_hdd0/: $(EmulatorDir)dev_hdd0/
/dev_hdd1/: $(EmulatorDir)dev_hdd1/
/dev_flash/: $(EmulatorDir)dev_flash/
/dev_flash2/: $(EmulatorDir)dev_flash2/
/dev_flash3/: $(EmulatorDir)dev_flash3/
/dev_bdvd/: $(EmulatorDir)dev_bdvd/
/app_home/: ""
/dev_usb***/:
/dev_usb000:
Path: $(EmulatorDir)dev_usb000/
Serial: ""
VID: ""
PID: ""
/dev_usb001:
Path: ""
Serial: ""
VID: ""
PID: ""
/dev_usb002:
Path: ""
Serial: ""
VID: ""
PID: ""
/dev_usb003:
Path: ""
Serial: ""
VID: ""
PID: ""
/dev_usb004:
Path: ""
Serial: ""
VID: ""
PID: ""
/dev_usb005:
Path: ""
Serial: ""
VID: ""
PID: ""
/dev_usb006:
Path: ""
Serial: ""
VID: ""
PID: ""
/dev_usb007:
Path: ""
Serial: ""
VID: ""
PID: ""

View file

@ -0,0 +1,29 @@
[general]
show_welcome = false
screenshot_dir = '/home/deck/retrodeck/screenshots'
[input.bindings]
port1 = '03000000de280000ff11000001000000'
[display.quality]
surface_scale = 2
[display.window]
fullscreen_on_startup = true
startup_size = '1280x800'
last_width = 1620
last_height = 738
[display.ui]
fit = 'scale_16_9'
scale = 2
auto_scale = false
[sys]
mem_limit = '128'
[sys.files]
bootrom_path = ''
flashrom_path = ''
eeprom_path = ''
hdd_path = ''

File diff suppressed because it is too large Load diff

View file

@ -25,10 +25,10 @@ Fullscreen = True
DisableScreenSaver = True DisableScreenSaver = True
[GBA] [GBA]
BIOS = ~/retrodeck/bios BIOS = ~/retrodeck/bios
Rom1 = Rom1 =
Rom2 = Rom2 =
Rom3 = Rom3 =
Rom4 = Rom4 =
SavesInRomPath = False SavesInRomPath = False
SavesPath = ~/retrodeck/saves/gba SavesPath = ~/retrodeck/saves/gba
Threads = True Threads = True

View file

@ -2792,6 +2792,8 @@ memory_show = "false"
memory_update_interval = "256" memory_update_interval = "256"
menu_battery_level_enable = "true" menu_battery_level_enable = "true"
menu_core_enable = "true" menu_core_enable = "true"
menu_disable_info_button = "false"
menu_disable_search_button = "false"
menu_driver = "ozone" menu_driver = "ozone"
menu_dynamic_wallpaper_enable = "true" menu_dynamic_wallpaper_enable = "true"
menu_enable_widgets = "true" menu_enable_widgets = "true"
@ -2862,8 +2864,10 @@ menu_widget_scale_factor_windowed = "1.000000"
menu_xmb_animation_horizontal_highlight = "0" menu_xmb_animation_horizontal_highlight = "0"
menu_xmb_animation_move_up_down = "0" menu_xmb_animation_move_up_down = "0"
menu_xmb_animation_opening_main_menu = "0" menu_xmb_animation_opening_main_menu = "0"
menu_xmb_show_title_header = "true"
menu_xmb_thumbnail_scale_factor = "100" menu_xmb_thumbnail_scale_factor = "100"
menu_xmb_title_margin = "5" menu_xmb_title_margin = "5"
menu_xmb_title_margin_horizontal_offset = "0"
menu_xmb_vertical_fade_factor = "100" menu_xmb_vertical_fade_factor = "100"
midi_driver = "alsa" midi_driver = "alsa"
midi_input = "Off" midi_input = "Off"
@ -2871,6 +2875,8 @@ midi_output = "Off"
midi_volume = "100" midi_volume = "100"
netplay_allow_pausing = "false" netplay_allow_pausing = "false"
netplay_allow_slaves = "true" netplay_allow_slaves = "true"
netplay_chat_color_msg = "16777215"
netplay_chat_color_name = "32768"
netplay_check_frames = "600" netplay_check_frames = "600"
netplay_custom_mitm_server = "" netplay_custom_mitm_server = ""
netplay_fade_chat = "true" netplay_fade_chat = "true"
@ -2906,6 +2912,8 @@ netplay_require_slaves = "false"
netplay_share_analog = "1" netplay_share_analog = "1"
netplay_share_digital = "1" netplay_share_digital = "1"
netplay_show_only_connectable = "true" netplay_show_only_connectable = "true"
netplay_show_only_installed_cores = "false"
netplay_show_passworded = "true"
netplay_spectate_password = "" netplay_spectate_password = ""
netplay_start_as_spectator = "false" netplay_start_as_spectator = "false"
netplay_stateless_mode = "false" netplay_stateless_mode = "false"
@ -2983,6 +2991,7 @@ quick_menu_show_save_content_dir_overrides = "true"
quick_menu_show_save_core_overrides = "true" quick_menu_show_save_core_overrides = "true"
quick_menu_show_save_game_overrides = "true" quick_menu_show_save_game_overrides = "true"
quick_menu_show_save_load_state = "true" quick_menu_show_save_load_state = "true"
quick_menu_show_savestate_submenu = "false"
quick_menu_show_set_core_association = "true" quick_menu_show_set_core_association = "true"
quick_menu_show_shaders = "true" quick_menu_show_shaders = "true"
quick_menu_show_start_recording = "true" quick_menu_show_start_recording = "true"
@ -2995,6 +3004,7 @@ quit_press_twice = "true"
record_driver = "ffmpeg" record_driver = "ffmpeg"
recording_config_directory = "/var/config/retroarch/records_config" recording_config_directory = "/var/config/retroarch/records_config"
recording_output_directory = "/var/config/retroarch/records" recording_output_directory = "/var/config/retroarch/records"
remap_save_on_exit = "true"
resampler_directory = "" resampler_directory = ""
rewind_buffer_size = "20971520" rewind_buffer_size = "20971520"
rewind_buffer_size_step = "10" rewind_buffer_size_step = "10"
@ -3094,6 +3104,7 @@ video_adaptive_vsync = "false"
video_allow_rotate = "true" video_allow_rotate = "true"
video_aspect_ratio = "1.333300" video_aspect_ratio = "1.333300"
video_aspect_ratio_auto = "false" video_aspect_ratio_auto = "false"
video_autoswitch_refresh_rate = "0"
video_black_frame_insertion = "0" video_black_frame_insertion = "0"
video_context_driver = "" video_context_driver = ""
video_crop_overscan = "true" video_crop_overscan = "true"
@ -3162,6 +3173,7 @@ video_stream_url = ""
video_swap_interval = "1" video_swap_interval = "1"
video_threaded = "false" video_threaded = "false"
video_vsync = "true" video_vsync = "true"
video_waitable_swapchains = "true"
video_window_auto_height_max = "1080" video_window_auto_height_max = "1080"
video_window_auto_width_max = "1920" video_window_auto_width_max = "1920"
video_window_custom_size_enable = "false" video_window_custom_size_enable = "false"

View file

@ -26,5 +26,4 @@ mem_limit = '128'
bootrom_path = '/home/deck/retrodeck/bios/mcpx_1.0.bin' bootrom_path = '/home/deck/retrodeck/bios/mcpx_1.0.bin'
flashrom_path = '/home/deck/retrodeck/bios/Complex.bin' flashrom_path = '/home/deck/retrodeck/bios/Complex.bin'
eeprom_path = '/home/deck/retrodeck/saves/xbox/xemu/xbox-eeprom.bin' eeprom_path = '/home/deck/retrodeck/saves/xbox/xemu/xbox-eeprom.bin'
hdd_path = '/home/deck/retrodeck/bios/xbox_hdd.qcow2' hdd_path = '/home/deck/retrodeck/bios/xbox_hdd.qcow2'

View file

@ -1,100 +1,9 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<gameList> <gameList>
<game> <game>
<path>./cheevos.sh</path> <path>./configurator.sh</path>
<name>RetroAchievements Login</name> <name>RetroDECK Configurator</name>
<desc>Enter your RetroAchievements account details.</desc> <desc>Change settings, move folders and more!</desc>
<nogamecount>true</nogamecount>
<nomultiscrape>true</nomultiscrape>
</game>
<!-- <game>
<path>./start-retroarch.sh</path>
<name>Start RetroArch</name>
<desc>Start RetroArch to manually tweak your settings.</desc>
<nogamecount>true</nogamecount>
<nomultiscrape>true</nomultiscrape>
</game>
<game>
<path>./start-yuzu.sh</path>
<name>Start Yuzu</name>
<desc>Start Yuzu to manually tweak your settings.</desc>
<nogamecount>true</nogamecount>
<nomultiscrape>true</nomultiscrape>
</game>
<game>
<path>./start-pcsx2.sh</path>
<name>Start PCSX2 (Standalone)</name>
<desc>Start PCSX2 to manually tweak your settings.</desc>
<nogamecount>true</nogamecount>
<nomultiscrape>true</nomultiscrape>
</game>
<game>
<path>./start-ppsspp.sh</path>
<name>Start PPSSPP (Standalone)</name>
<desc>Start PPSSPP to manually tweak your settings.</desc>
<nogamecount>true</nogamecount>
<nomultiscrape>true</nomultiscrape>
</game>
<game>
<path>./start-dolphin.sh</path>
<name>Start Dolphin (Standalone)</name>
<desc>Start Dolphin to manually tweak your settings.</desc>
<nogamecount>true</nogamecount>
<nomultiscrape>true</nomultiscrape>
</game>
<game>
<path>./start-melonds.sh</path>
<name>Start MelonDS (Standalone)</name>
<desc>Start MelonDS to manually tweak your settings.</desc>
<nogamecount>true</nogamecount>
<nomultiscrape>true</nomultiscrape>
</game>
<game>
<path>./start-citra.sh</path>
<name>Start CITRA (Standalone)</name>
<desc>Start CITRA to manually tweak your settings.</desc>
<nogamecount>true</nogamecount>
<nomultiscrape>true</nomultiscrape>
</game>
<game>
<path>./start-rpcs3.sh</path>
<name>Start RPCS3 (Standalone)</name>
<desc>Start RPCS3 to manually tweak your settings.</desc>
<nogamecount>true</nogamecount>
<nomultiscrape>true</nomultiscrape>
</game> -->
<game>
<path>./start-splore.sh</path>
<name>Start Splore</name>
<desc>Start PICO-8's splore</desc>
<nogamecount>true</nogamecount>
<nomultiscrape>true</nomultiscrape>
</game>
<!-- <game>
<path>./move-roms.sh</path>
<name>Move roms folder</name>
<desc>Move roms folder from internal to external and vice versa.</desc>
<nogamecount>true</nogamecount>
<nomultiscrape>true</nomultiscrape>
</game>
<game>
<path>./overlays.sh</path>
<name>Overlays configuration</name>
<desc>Configure or disable borders and shaders.</desc>
<nogamecount>true</nogamecount>
<nomultiscrape>true</nomultiscrape>
</game> -->
<game>
<path>./configure-emulators.sh</path>
<name>Configure Emulators</name>
<desc>Choose an emulator to configure.</desc>
<nogamecount>true</nogamecount>
<nomultiscrape>true</nomultiscrape>
</game>
<game>
<path>./rewind.sh</path>
<name>Rewind toggler</name>
<desc>Enable or disable the rewind function for some RetroArch cores.</desc>
<nogamecount>true</nogamecount> <nogamecount>true</nogamecount>
<nomultiscrape>true</nomultiscrape> <nomultiscrape>true</nomultiscrape>
</game> </game>

1040
functions.sh Normal file

File diff suppressed because it is too large Load diff

View file

@ -2,6 +2,8 @@
# This file is containing some global function needed for the script such as the config file tools # This file is containing some global function needed for the script such as the config file tools
source /app/libexec/functions.sh
# Static variables # Static variables
rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path
emuconfigs="/app/retrodeck/emu-configs" # folder with all the default emulator configs emuconfigs="/app/retrodeck/emu-configs" # folder with all the default emulator configs
@ -9,77 +11,68 @@ lockfile="/var/config/retrodeck/.lock" # where the lockfile
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)
conf_write() { # Config files for emulators with single config files
# writes the variables in the retrodeck config file
echo "DEBUG: printing the config file content before writing it:" citraconf="/var/config/citra-emu/qt-config.ini"
cat "$rd_conf" melondsconf="/var/config/melonDS/melonDS.ini"
echo "" rpcs3conf="/var/config/rpcs3/config.yml"
yuzuconf="/var/config/yuzu/qt-config.ini"
echo "Writing the config file: $rd_conf" # ES-DE config files
# TODO: this can be optimized with a while and a list of variables to check es_settings="/var/config/emulationstation/.emulationstation/es_settings.xml"
if [ ! -z "$version" ] #if the variable is not null then I update it
then
sed -i "s%version=.*%version=$version%" "$rd_conf"
fi
if [ ! -z "$rdhome" ] # RetroArch config files
then
sed -i "s%rdhome=.*%rdhome=$rdhome%" "$rd_conf"
fi
if [ ! -z "$roms_folder" ] raconf="/var/config/retroarch/retroarch.cfg"
then ra_core_conf="/var/config/retroarch/retroarch-core-options.cfg"
sed -i "s%roms_folder=.*%roms_folder=$roms_folder%" "$rd_conf"
fi
if [ ! -z "$saves_folder" ] # Dolphin config files
then
sed -i "s%saves_folder=.*%saves_folder=$saves_folder%" "$rd_conf"
fi
if [ ! -z "$states_folder" ] dolphinconf="/var/config/dolphin-emu/Dolphin.ini"
then dolphingcpadconf="/var/config/dolphin-emu/GCPadNew.ini"
sed -i "s%states_folder=.*%states_folder=$states_folder%" "$rd_conf" dolphingfxconf="/var/config/dolphin-emu/GFX.ini"
fi dolphinhkconf="/var/config/dolphin-emu/Hotkeys.ini"
dolphinqtconf="/var/config/dolphin-emu/Qt.ini"
if [ ! -z "$media_folder" ] # PCSX2 config files
then
sed -i "s%media_folder=.*%media_folder=$media_folder%" "$rd_conf"
fi
if [ ! -z "$themes_folder" ] pcsx2conf="/var/config/PCSX2/inis/GS.ini"
then pcsx2uiconf="/var/config/PCSX2/inis/PCSX2_ui.ini"
sed -i "s%themes_folder=.*%themes_folder=$themes_folder%" "$rd_conf" pcsx2vmconf="/var/config/PCSX2/inis/PCSX2_vm.ini"
fi
if [ ! -z "$sdcard" ] # PCSX2-QT config file
then
sed -i "s%sdcard=.*%sdcard=$sdcard%" "$rd_conf"
fi
echo "DEBUG: New contents:"
cat "$rd_conf"
echo ""
} pcsx2qtconf="/var/config/PCSX2/inis/PCSX2.ini"
# We moved the lockfile in /var/config/retrodeck in order to solve issue #53 - Remove in a few versions
if [ -f "$HOME/retrodeck/.lock" ]
then
mv "$HOME/retrodeck/.lock" $lockfile
fi
# If there is no config file I initalize the file with the the default values # If there is no config file I initalize the file with the the default values
if [ ! -f "$rd_conf" ] if [ ! -f "$rd_conf" ]
then then
mkdir -p /var/config/retrodeck mkdir -p /var/config/retrodeck
echo "RetroDECK config file not found in $rd_conf" echo "RetroDECK config file not found in $rd_conf"
echo "Initializing" echo "Initializing"
# if we are here means that the we are in a new installation, so the version is valorized with the hardcoded one
# Initializing the variables # Initializing the variables
if [ -z $version]; then if [ -z $version]; then
version="$hard_version" # if we are here means that the we are in a new installation, so the version is valorized with the hardcoded one if [[ $(cat $lockfile) == *"0.4."* ]] || [[ $(cat $lockfile) == *"0.3."* ]] || [[ $(cat $lockfile) == *"0.2."* ]] || [[ $(cat $lockfile) == *"0.1."* ]]; then # If the previous version is very out of date, pre-rd_conf
echo "Running version workaround"
version=$(cat $lockfile)
else
version="$hard_version"
fi
fi fi
rdhome="$HOME/retrodeck" # the retrodeck home, aka ~/retrodeck rdhome="$HOME/retrodeck" # the retrodeck home, aka ~/retrodeck
roms_folder="$rdhome/roms" # the default roms folder path roms_folder="$rdhome/roms" # the default roms folder path
saves_folder="$rdhome/saves" # the default saves folder path saves_folder="$rdhome/saves" # the default saves folder path
states_folder="$rdhome/states" # the default states folder path states_folder="$rdhome/states" # the default states folder path
bios_folder="$rdhome/bios" # the default bios folder
media_folder="$rdhome/downloaded_media" # the media folder, where all the scraped data is downloaded into media_folder="$rdhome/downloaded_media" # the media folder, where all the scraped data is downloaded into
themes_folder="$rdhome/themes" # the themes folder themes_folder="$rdhome/themes" # the themes folder
sdcard="$default_sd" # Steam Deck SD default path sdcard="$default_sd" # Steam Deck SD default path
@ -91,12 +84,13 @@ then
echo "roms_folder=$roms_folder" >> $rd_conf echo "roms_folder=$roms_folder" >> $rd_conf
echo "saves_folder=$saves_folder" >> $rd_conf echo "saves_folder=$saves_folder" >> $rd_conf
echo "states_folder=$states_folder" >> $rd_conf echo "states_folder=$states_folder" >> $rd_conf
echo "bios_folder=$bios_folder" >> $rd_conf
echo "media_folder=$media_folder" >> $rd_conf echo "media_folder=$media_folder" >> $rd_conf
echo "themes_folder=$themes_folder" >> $rd_conf echo "themes_folder=$themes_folder" >> $rd_conf
echo "sdcard=$sdcard" >> $rd_conf echo "sdcard=$sdcard" >> $rd_conf
echo "Setting config file permissions" echo "Setting config file permissions"
chmod +rwx $rd_conf chmod +rw $rd_conf
# If the config file is existing i just read the variables (source it) # If the config file is existing i just read the variables (source it)
else else

View file

@ -17,7 +17,7 @@ finish-args:
- --share=ipc - --share=ipc
- --share=network - --share=network
- --device=all - --device=all
- --filesystem=~/retrodeck:create - --filesystem=home # Needed to be able to relocate / remove / create symlink at ~/retrodeck
- --filesystem=/run/media - --filesystem=/run/media
- --filesystem=/media - --filesystem=/media
- --allow=multiarch - --allow=multiarch
@ -64,7 +64,7 @@ modules:
# If the version is set as cooker it will automatically generate the version tag based on the date # If the version is set as cooker it will automatically generate the version tag based on the date
# else it will just put what is written, "v" is not needed # else it will just put what is written, "v" is not needed
# The version number is hardcoded in /app/retrodeck/version # The version number is hardcoded in /app/retrodeck/version
# #
# UPDATE STEPS FOR MAIN: # UPDATE STEPS FOR MAIN:
# [ ] Update the VERSION variable # [ ] Update the VERSION variable
# [ ] Update the appdata.xml with the version number and notes # [ ] Update the appdata.xml with the version number and notes
@ -138,7 +138,7 @@ modules:
# - sed -e 's@$$QT_MODULE_LIB_BASE@'${FLATPAK_DEST}'/lib@g' -i ${FLATPAK_DEST}/lib/mkspecs/modules/*.pri # - sed -e 's@$$QT_MODULE_LIB_BASE@'${FLATPAK_DEST}'/lib@g' -i ${FLATPAK_DEST}/lib/mkspecs/modules/*.pri
# cleanup: # cleanup:
# - /app/mkspecs # - /app/mkspecs
# mesa repo got a double certificate issue and gnutils cannot handle that so GLU download fails, # mesa repo got a double certificate issue and gnutils cannot handle that so GLU download fails,
# this affects even the shared-modules's glu so I have to replace it temporarly # this affects even the shared-modules's glu so I have to replace it temporarly
# more info there: https://gitlab.com/gnutls/gnutls/-/issues/1335 # more info there: https://gitlab.com/gnutls/gnutls/-/issues/1335
@ -245,7 +245,7 @@ modules:
# ES-DE - END # ES-DE - END
# ES-DE Themes - START # ES-DE Themes - START
- name: art-book-next - name: art-book-next
buildsystem: simple buildsystem: simple
build-commands: build-commands:
@ -255,7 +255,7 @@ modules:
- type: git - type: git
url: https://github.com/anthonycaccese/art-book-next-retropie.git url: https://github.com/anthonycaccese/art-book-next-retropie.git
commit: 23932f484a9949313baf80f92b2fbca38a7a8f37 commit: 23932f484a9949313baf80f92b2fbca38a7a8f37
- name: alekfull-nx-light - name: alekfull-nx-light
buildsystem: simple buildsystem: simple
build-commands: build-commands:
@ -265,7 +265,7 @@ modules:
- type: git - type: git
url: https://github.com/anthonycaccese/alekfull-nx-retropie.git url: https://github.com/anthonycaccese/alekfull-nx-retropie.git
commit: 67c8c8dee086bd06bcdc6dc34bb9bef1e1c11be7 commit: 67c8c8dee086bd06bcdc6dc34bb9bef1e1c11be7
- name: retrofix-revisited - name: retrofix-revisited
buildsystem: simple buildsystem: simple
build-commands: build-commands:
@ -827,42 +827,44 @@ modules:
# # https://github.com/flathub/io.github.shiiion.primehack # # https://github.com/flathub/io.github.shiiion.primehack
# # Disabled because it's overwriting Dolphin # # Disabled because it's overwriting Dolphin
# - name: primehack - name: primehack
# buildsystem: cmake-ninja buildsystem: cmake-ninja
# config-opts: config-opts:
# - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_BUILD_TYPE=Release
# - -DENABLE_ALSA=OFF - -DENABLE_ALSA=OFF
# - -DENABLE_SDL=ON - -DENABLE_SDL=ON
# - -DENABLE_EVDEV=ON - -DENABLE_EVDEV=ON
# - -DDISTRIBUTOR=Flathub - -DDISTRIBUTOR=Flathub
# cleanup: cleanup:
# - /share/man - /share/man
# post-install: post-install:
# - 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
# # in non-writable paths, typically happens when a user # in non-writable paths, typically happens when a user
# # has leftover files from a previous non-flatpak install # has leftover files from a previous non-flatpak install
# - type: patch - type: patch
# path: rd-submodules/dolphin/detectflatpak.patch path: rd-submodules/dolphin/detectflatpak.patch
# # version strings must match exactly for online multiplayer # version strings must match exactly for online multiplayer
# - type: patch - type: patch
# path: rd-submodules/dolphin/nodirtyversion.patch path: rd-submodules/dolphin/nodirtyversion.patch
# - type: script - type: script
# commands: commands:
# - for i in {0..9}; do - for i in {0..9}; do
# - test -S $XDG_RUNTIME_DIR/discord-ipc-$i || ln -sf {app/com.discordapp.Discord,$XDG_RUNTIME_DIR}/discord-ipc-$i; - test -S $XDG_RUNTIME_DIR/discord-ipc-$i || ln -sf {app/com.discordapp.Discord,$XDG_RUNTIME_DIR}/discord-ipc-$i;
# - done - done
# - dolphin-emu "$@" - primehack "$@"
# dest-filename: primehack-wrapper dest-filename: primehack-wrapper
# # PRIMEHACK - END # # PRIMEHACK - END
# # PRIMEHACK APPIMAGE START
# Duckstation - START # Duckstation - START
# https://github.com/flathub/org.duckstation.DuckStation # https://github.com/flathub/org.duckstation.DuckStation
# Disabled until we completely switch to QT6 # Disabled until we completely switch to QT6
@ -888,7 +890,7 @@ modules:
# commit: 6f709468601183083b8581d4952aaba7baf77084 # commit: 6f709468601183083b8581d4952aaba7baf77084
# # Cloning dep/msvc/qt is only necessary for Windows # # Cloning dep/msvc/qt is only necessary for Windows
# disable-submodules: true # disable-submodules: true
# Duckstation - END # Duckstation - END
# Duckstation-DontUpdate - START # Duckstation-DontUpdate - START
@ -986,13 +988,16 @@ modules:
- mkdir -p ${FLATPAK_DEST}/retrodeck/tools/ - mkdir -p ${FLATPAK_DEST}/retrodeck/tools/
- cp tools/* ${FLATPAK_DEST}/retrodeck/tools/ - cp tools/* ${FLATPAK_DEST}/retrodeck/tools/
- mv -f es-configs/tools-gamelist.xml ${FLATPAK_DEST}/retrodeck/ - 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
- cp global.sh /app/bin/global.sh - cp global.sh /app/libexec/global.sh
- chmod +x /app/bin/global.sh
- cp functions.sh /app/libexec/functions.sh
- cp post_update.sh /app/libexec/post_update.sh
# Desktop entry # Desktop entry
- cp net.retrodeck.retrodeck.desktop /app/share/applications/net.retrodeck.retrodeck.desktop - cp net.retrodeck.retrodeck.desktop /app/share/applications/net.retrodeck.retrodeck.desktop
@ -1011,4 +1016,4 @@ modules:
sources: sources:
- type: git - type: git
url: https://github.com/XargonWan/RetroDECK.git url: https://github.com/XargonWan/RetroDECK.git
branch: cooker-0.6.0b branch: cooker-0.6.0b

Binary file not shown.

Before

Width:  |  Height:  |  Size: 349 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 KiB

195
post_update.sh Normal file
View file

@ -0,0 +1,195 @@
#!/bin/bash
post_update() {
# post update script
echo "Executing post-update script"
local prev_version=$(sed -e 's/[\.a-z]//g' <<< $version)
if [[ $prev_version -le "054" ]]; then
# Finding existing ROMs folder
if [ -d "$default_sd/retrodeck" ]
then
# ROMs on SD card
roms_folder="$default_sd/retrodeck/roms"
if [[ ! -L $rdhome && ! -L $rdhome/roms ]]; then # Add a roms folder symlink back to ~/retrodeck if missing, to fix things like PS2 autosaves until user migrates whole ~retrodeck directory
ln -s $roms_folder $rdhome/roms
fi
else
# ROMs on Internal
roms_folder="$HOME/retrodeck/roms"
fi
echo "ROMs folder found at $roms_folder"
# Unhiding downloaded media from the previous versions
if [ -d "$rdhome/.downloaded_media" ]
then
mv -fv "$rdhome/.downloaded_media" "$media_folder"
fi
# Unhiding themes folder from the previous versions
if [ -d "$rdhome/.themes" ]
then
mv -fv "$rdhome/.themes" "$themes_folder"
fi
# Doing the dir prep as we don't know from which version we came
dir_prep "$media_folder" "/var/config/emulationstation/.emulationstation/downloaded_media"
dir_prep "$themes_folder" "/var/config/emulationstation/.emulationstation/themes"
mkdir -pv $rdhome/.logs #this was added later, maybe safe to remove in a few versions
# Resetting es_settings, now we need it but in the future I should think a better solution, maybe with sed
cp -fv /app/retrodeck/es_settings.xml /var/config/emulationstation/.emulationstation/es_settings.xml
# 0.4 -> 0.5
# Perform save and state migration if needed
# Moving PCSX2 Saves
mv -fv /var/config/PCSX2/sstates/* $rdhome/states/ps2/pcsx2
mv -fv /var/config/PCSX2/memcards/* $rdhome/saves/ps2/memcards
# Moving Citra saves from legacy location to 0.5.0b structure
mv -fv $rdhome/saves/Citra/* $rdhome/saves/n3ds/citra
rmdir $rdhome/saves/Citra # Old folder cleanup
versionwheresaveschanged="0.4.5b" # Hardcoded break point between unsorted and sorted saves
if [[ $(sed -e "s/\.//g" <<< $hard_version) > $(sed -e "s/\.//g" <<< $versionwheresaveschanged) ]] && [[ ! $(sed -e "s/\.//g" <<< $version) > $(sed -e "s/\.//g" <<< $versionwheresaveschanged) ]]; then # Check if user is upgrading from the version where save organization was changed. Try not to reuse this, it things 0.4.5b is newer than 0.4.5
migration_logfile=$rdhome/.logs/savemove_"$(date +"%Y_%m_%d_%I_%M_%p").log"
save_backup_file=$rdhome/savebackup_"$(date +"%Y_%m_%d_%I_%M_%p").zip"
state_backup_file=$rdhome/statesbackup_"$(date +"%Y_%m_%d_%I_%M_%p").zip"
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" \
--text="You are updating to a version of RetroDECK where save file locations have changed!\n\nYour existing files will be backed up for safety and then sorted automatically.\n\nIf a file cannot be sorted automatically it will remain where it is for manual sorting.\n\nPLEASE BE PATIENT! This process can take several minutes if you have a large ROM library."
allgames=($(find "$roms_folder" -maxdepth 2 -mindepth 2 ! -name "systeminfo.txt" ! -name "systems.txt" ! -name "gc" ! -name "n3ds" ! -name "nds" ! -name "wii" ! -name "xbox" ! -name "*^*" | sed -e "s/ /\^/g")) # Build an array of all games and multi-disc-game-containing folders, adding whitespace placeholder
allsaves=($(find "$saves_folder" -mindepth 1 -maxdepth 1 -name "*.*" ! -name "gc" ! -name "n3ds" ! -name "nds" ! -name "wii" ! -name "xbox" | sed -e "s/ /\^/g")) # Build an array of all save files, ignoring standalone emulator sub-folders, adding whitespace placeholder
allstates=($(find "$states_folder" -mindepth 1 -maxdepth 1 -name "*.*" ! -name "gc" ! -name "n3ds" ! -name "nds" ! -name "wii" ! -name "xbox" | sed -e "s/ /\^/g")) # Build an array of all state files, ignoring standalone emulator sub-folders, adding whitespace placeholder
totalsaves=${#allsaves[@]}
totalstates=${#allstates[@]}
filesleft=
current_dest_folder=
gamestoskip=
tar -C $rdhome -czf $save_backup_file saves # Backup save directory for safety
echo "Saves backed up to" $save_backup_file >> $migration_logfile
tar -C $rdhome -czf $state_backup_file states # Backup state directory for safety
echo "States backed up to" $state_backup_file >> $migration_logfile
(
movefile() { # Take matching save and rom files and sort save into appropriate system folder
echo "# $filesleft $currentlybeingmoved remaining..." # These lines update the Zenity progress bar
progress=$(( 100 - (( 100 / "$totalfiles" ) * "$filesleft" )))
echo $progress
filesleft=$((filesleft-1))
if [[ ! " ${gamestoskip[*]} " =~ " ${1} " ]]; then # If the current game name exists multiple times in array ie. /roms/snes/Mortal Kombat 3.zip and /roms/genesis/Mortal Kombat 3.zip, skip and alert user to sort manually
game=$(sed -e "s/\^/ /g" <<< "$1") # Remove whitespace placeholder
gamebasename=$(basename "$game" | sed -e 's/\..*//') # Extract pure file name ie. /roms/snes/game1.zip becomes game1
systemdir="$(basename "$(dirname "$1")")" # Extract parent directory identifying system ROM belongs to
matches=($(find "$roms_folder" -maxdepth 2 -mindepth 2 -name "$gamebasename"".*" | sed -e 's/ /^/g' | sed -e 's/\..*//')) # Search for multiple instances of pure game name, adding to skip list if found
if [[ ${#matches[@]} -gt 1 ]]; then
echo "ERROR: Multiple ROMS found with name:" $gamebasename "Please sort saves and states for these ROMS manually" >> $migration_logfile
gamestoskip+=("$1")
return
fi
echo "INFO: Examining ROM file:" "$game" >> $migration_logfile
echo "INFO: System detected as" $systemdir >> $migration_logfile
sosfile=$(sed -e "s/\^/ /g" <<< "$2") # Remove whitespace placeholder from s-ave o-r s-tate file
sospurebasename="$(basename "$sosfile")" # Extract pure file name ie. /saves/game1.sav becomes game1
echo "INFO: Current save or state being examined for match:" $sosfile >> $migration_logfile
echo "INFO: Matching save or state" $sosfile "and game" $game "found." >> $migration_logfile
echo "INFO: Moving save or state to" $current_dest_folder"/"$systemdir"/"$sosbasename >> $migration_logfile
if [[ ! -d $current_dest_folder"/"$systemdir ]]; then # If system directory doesn't exist for save yet, create it
echo "WARNING: Creating missing system directory" $current_dest_folder"/"$systemdir
mkdir $current_dest_folder/$systemdir
fi
mv "$sosfile" -t $current_dest_folder/$systemdir # Move save to appropriate system directory
return
else
echo "WARNING: Game with name" "$(basename "$1" | sed -e "s/\^/ /g")" "already found. Skipping to next game..." >> $migration_logfile # Inform user of game being skipped due to duplicate ROM names
fi
}
find "$roms_folder" -mindepth 2 -maxdepth 2 -name "*\^*" -exec echo "ERROR: Game named" {} "found, please move save manually" \; >> $migration_logfile # Warn user if any of their files have the whitespace replacement character used by the script
totalfiles=$totalsaves #set variables for save file migration
filesleft=$totalsaves
currentlybeingmoved="saves"
current_dest_folder=$saves_folder
for i in "${allsaves[@]}"; do # For each save file, compare to every ROM file name looking for a match
found=
currentsave=($(basename "$i" | sed -e 's/\..*//')) # Extract pure file name ie. /saves/game1.sav becomes game1
for j in "${allgames[@]}"; do
currentgame=($(basename "$j" | sed -e 's/\..*//')) # Extract pure file name ie. /roms/snes/game1.zip becomes game1
[[ $currentgame == $currentsave ]] && { found=1; break; } # If names match move to next stage, otherwise skip
done
[[ -n $found ]] && movefile $j $i || echo "ERROR: No ROM match found for save file" $i | sed -e 's/\^/ /g' >> $migration_logfile # If a match is found, run movefile() otherwise warn user of stranded save file
done
totalfiles=$totalstates #set variables for state file migration
filesleft=$totalstates
currentlybeingmoved="states"
current_dest_folder=$states_folder
for i in "${allstates[@]}"; do # For each state file, compare to every ROM file name looking for a match
found=
currentstate=($(basename "$i" | sed -e 's/\..*//')) # Extract pure file name ie. /states/game1.sav becomes game1
for j in "${allgames[@]}"; do
currentgame=($(basename "$j" | sed -e 's/\..*//')) # Extract pure file name ie. /roms/snes/game1.zip becomes game1
[[ $currentgame == $currentstate ]] && { found=1; break; } # If names match move to next stage, otherwise skip
done
[[ -n $found ]] && movefile $j $i || echo "ERROR: No ROM match found for state file" $i | sed -e 's/\^/ /g' >> $migration_logfile # If a match is found, run movefile() otherwise warn user of stranded state file
done
) |
zenity --progress \
--icon-name=net.retrodeck.retrodeck \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title="Processing Files" \
--text="# files remaining..." \
--percentage=0 \
--no-cancel \
--auto-close
if [[ $(cat $migration_logfile | grep "ERROR" | wc -l) -eq 0 ]]; then
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" \
--text="The migration process has sorted all of your files automatically.\n\nEverything should be working normally, if you experience any issues please check the RetroDECK wiki or contact us directly on the Discord."
else
cat $migration_logfile | grep "ERROR" > "$rdhome/manual_sort_needed.log"
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" \
--text="The migration process was unable to sort $(cat $migration_logfile | grep "ERROR" | wc -l) files automatically.\n\nThese files will need to be moved manually to their new locations, find more detail on the RetroDECK wiki.\n\nA log of the files that need manual sorting can be found at $rdhome/manual_sort_needed.log"
fi
else
echo "Version" $version "is after the save and state organization was changed, no need to sort again"
fi
fi
# These commands are run every time, for now
(
ra_init
standalones_init
tools_init
) |
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 Finishing Upgrade" \
--text="RetroDECK is finishing the upgrade process, please wait."
create_lock
}

View file

@ -1,621 +1,7 @@
#!/bin/bash #!/bin/bash
# workaround to fix a bug when updating to 0.5.0b where the post update is not triggered source /app/libexec/global.sh
# basically from 0.5 it's not reading the version from the lockfile so it doesn't know from which version it came from and the new rule of global.sh is that if version is unknown it's like a first boot source /app/libexec/post_update.sh
# remove it in the future
lockfile="/var/config/retrodeck/.lock"
if [[ $(cat $lockfile) == *"0.4."* ]] || [[ $(cat $lockfile) == *"0.3."* ]] || [[ $(cat $lockfile) == *"0.2."* ]] || [[ $(cat $lockfile) == *"0.1."* ]]
then
echo "Running version workaround"
version=$(cat $lockfile)
fi
source /app/bin/global.sh
# We moved the lockfile in /var/config/retrodeck in order to solve issue #53 - Remove in a few versions
if [ -f "$HOME/retrodeck/.lock" ]
then
mv "$HOME/retrodeck/.lock" $lockfile
fi
# Functions area
dir_prep() {
# This script is creating a symlink preserving old folder contents and moving them in the new one
# Call me with:
# dir prep "real dir" "symlink location"
real="$1"
symlink="$2"
echo -e "\n[DIR PREP]\nMoving $symlink in $real" #DEBUG
# if the dest dir exists we want to backup it
if [ -d "$symlink" ];
then
echo "$symlink found" #DEBUG
mv -fv "$symlink" "$symlink.old"
fi
# if the real dir doesn't exist we create it
if [ ! -d "$real" ];
then
echo "$real not found, creating it" #DEBUG
mkdir -pv "$real"
fi
# creating the symlink
echo "linking $real in $symlink" #DEBUG
mkdir -pv "$(dirname "$symlink")" # creating the full path except the last folder
ln -svf "$real" "$symlink"
# moving everything from the old folder to the new one, delete the old one
if [ -d "$symlink.old" ];
then
echo "Moving the data from $symlink.old to $real" #DEBUG
mv -fv "$symlink".old/* $real
echo "Removing $symlink.old" #DEBUG
rm -rf "$symlink.old"
fi
echo -e "$symlink is now $real\n"
}
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
}
standalones_init() {
# This script is configuring the standalone emulators with the default files present in emuconfigs folder
echo "----------------------"
echo "Initializing standalone emulators"
echo "----------------------"
# Yuzu
echo "----------------------"
echo "Initializing YUZU"
echo "----------------------"
# removing dead symlinks as they were present in a past version
if [ -d $rdhome/bios/switch ]; then
find $rdhome/bios/switch -xtype l -exec rm {} \;
fi
# initializing the keys folder
dir_prep "$rdhome/bios/switch/keys" "/var/data/yuzu/keys"
# initializing the firmware folder
dir_prep "$rdhome/bios/switch/registered" "/var/data/yuzu/nand/system/Contents/registered"
# initializing the save folders
dir_prep "$rdhome/saves/switch/yuzu/nand" "/var/data/yuzu/nand"
dir_prep "$rdhome/saves/switch/yuzy/sdmc" "/var/data/yuzu/sdmc"
# configuring Yuzu
dir_prep "$rdhome/.logs/yuzu" "/var/data/yuzu/log"
mkdir -pv /var/config/yuzu/
cp -fvr $emuconfigs/yuzu/* /var/config/yuzu/
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/yuzu/qt-config.ini
dir_prep "$rdhome/screenshots" "/var/data/yuzu/screenshots"
# Dolphin
echo "----------------------"
echo "Initializing DOLPHIN"
echo "----------------------"
mkdir -pv /var/config/dolphin-emu/
cp -fvr "$emuconfigs/dolphin/"* /var/config/dolphin-emu/
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/dolphin-emu/Dolphin.ini
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/JAP" "/var/data/dolphin-emu/GC/JAP"
dir_prep "$rdhome/screenshots" "/var/data/dolphin-emu/ScreenShots"
dir_prep "$rdhome/states" "/var/data/dolphin-emu/StateSaves"
dir_prep "$rdhome/saves/wii/dolphin" "/var/data/dolphin-emu/Wii/"
# pcsx2
echo "----------------------"
echo "Initializing PCSX2"
echo "----------------------"
mkdir -pv "/var/config/PCSX2/inis"
mkdir -pv "$rdhome/saves/ps2/pcsx2/memcards"
mkdir -pv "$rdhome/states/ps2/pcsx2"
cp -fvr $emuconfigs/PCSX2/* /var/config/PCSX2/inis/
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/PCSX2/inis/PCSX2_ui.ini
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/PCSX2/inis/PCSX2.ini
#dir_prep "$rdhome/states/ps2/pcsx2" "/var/config/PCSX2/sstates"
#dir_prep "$rdhome/screenshots" "/var/config/PCSX2/snaps"
#dir_prep "$rdhome/.logs" "/var/config/PCSX2/logs"
#dir_prep "$rdhome/bios" "$rdhome/bios/pcsx2"
# MelonDS
echo "----------------------"
echo "Initializing MELONDS"
echo "----------------------"
mkdir -pv /var/config/melonDS/
mkdir -pv "$rdhome/saves/nds/melonds"
mkdir -pv "$rdhome/states/nds/melonds"
dir_prep "$rdhome/bios" "/var/config/melonDS/bios"
cp -fvr $emuconfigs/melonDS.ini /var/config/melonDS/
# Replace ~/retrodeck with $rdhome as ~ cannot be understood by MelonDS
sed -i 's#~/retrodeck#'$rdhome'#g' /var/config/melonDS/melonDS.ini
# CITRA
echo "------------------------"
echo "Initializing CITRA"
echo "------------------------"
mkdir -pv /var/config/citra-emu/
mkdir -pv "$rdhome/saves/n3ds/citra/nand/"
mkdir -pv "$rdhome/saves/n3ds/citra/sdmc/"
dir_prep "$rdhome/bios/citra/sysdata" "/var/data/citra-emu/sysdata"
dir_prep "$rdhome/.logs/citra" "/var/data/citra-emu/log"
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
#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
echo "------------------------"
echo "Initializing RPCS3"
echo "------------------------"
mkdir -pv /var/config/rpcs3/
cp -fvr $emuconfigs/rpcs3/* /var/config/rpcs3/
sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /var/config/rpcs3/vfs.yml
# XEMU
echo "------------------------"
echo "Initializing XEMU"
echo "------------------------"
mkdir -pv $rdhome/saves/xbox/xemu/
cp -fv $emuconfigs/xemu.toml /var/data/xemu/xemu.toml
sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /var/data/xemu/xemu.toml
# Preparing HD dummy Image if the image is not found
if [ ! -f $rdhome/bios/xbox_hdd.qcow2 ]
then
wget "https://github.com/mborgerson/xemu-hdd-image/releases/latest/download/xbox_hdd.qcow2.zip" -P $rdhome/bios/
unzip -q $rdhome/bios/xbox_hdd.qcow2.zip $rdhome/bios/
rm -rfv $rdhome/bios/xbox_hdd.qcow2.zip
fi
# PPSSPPSDL
echo "------------------------"
echo "Initializing PPSSPPSDL"
echo "------------------------"
mkdir -p /var/config/ppsspp/PSP/SYSTEM/
cp -fv $emuconfigs/ppssppsdl/* /var/config/ppsspp/PSP/SYSTEM/
sed -i 's#/home/deck/retrodeck#'$rdhome'#g' /var/config/ppsspp/PSP/SYSTEM/ppsspp.ini
# DUCKSTATION
echo "------------------------"
echo "Initializing DUCKSTATION"
echo "------------------------"
mkdir -p /var/config/duckstation/
cp -fv $emuconfigs/duckstation/* /var/config/duckstation
sed -i 's#/home/deck/retrodeck/bios#'$rdhome/bios'#g' /var/config/ppsspp/PSP/SYSTEM/settings.ini
# PICO-8
# Moved PICO-8 stuff in the finit as only it knows here roms folders is
}
ra_init() {
dir_prep "$rdhome/bios" "/var/config/retroarch/system"
dir_prep "$rdhome/.logs/retroarch" "/var/config/retroarch/logs"
mkdir -pv /var/config/retroarch/shaders/
cp -rfv /app/share/libretro/shaders /var/config/retroarch/
dir_prep "$rdhome/shaders/retroarch" "/var/config/retroarch/shaders"
mkdir -pv /var/config/retroarch/cores/
cp /app/share/libretro/cores/* /var/config/retroarch/cores/
cp -fv $emuconfigs/retroarch.cfg /var/config/retroarch/
cp -fv $emuconfigs/retroarch-core-options.cfg /var/config/retroarch/
cp -rfv $emuconfigs/retroarch-core-overrides/* /var/config/retroarch/config
#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
# PPSSPP
echo "--------------------------------"
echo "Initializing PPSSPP_LIBRETRO"
echo "--------------------------------"
if [ -d $rdhome/bios/PPSSPP/flash0/font ]
then
mv -fv $rdhome/bios/PPSSPP/flash0/font $rdhome/bios/PPSSPP/flash0/font.bak
fi
mkdir -p $rdhome/bios/PPSSPP
#if [ ! -f "$rdhome/bios/PPSSPP/ppge_atlas.zim" ]
#then
wget "https://github.com/hrydgard/ppsspp/archive/refs/heads/master.zip" -P $rdhome/bios/PPSSPP
unzip -q "$rdhome/bios/PPSSPP/master.zip" -d $rdhome/bios/PPSSPP/
mv "$rdhome/bios/PPSSPP/ppsspp-master/assets/"* "$rdhome/bios/PPSSPP/"
rm -rfv "$rdhome/bios/PPSSPP/master.zip"
rm -rfv "$rdhome/bios/PPSSPP/ppsspp-master"
#fi
if [ -d $rdhome/bios/PPSSPP/flash0/font.bak ]
then
mv -fv $rdhome/bios/PPSSPP/flash0/font.bak $rdhome/bios/PPSSPP/flash0/font
fi
# MSX / SVI / ColecoVision / SG-1000
echo "-----------------------------------------------------------"
echo "Initializing MSX / SVI / ColecoVision / SG-1000 LIBRETRO"
echo "-----------------------------------------------------------"
wget "http://bluemsx.msxblue.com/rel_download/blueMSXv282full.zip" -P $rdhome/bios/MSX
unzip -q "$rdhome/bios/MSX/blueMSXv282full.zip" $rdhome/bios/MSX
mv -rfv $rdhome/bios/MSX/Databases $rdhome/bios/Databases
mv -rfv $rdhome/bios/MSX/Machines $rdhome/bios/Machines
rm -rfv $rdhome/bios/MSX
}
create_lock() {
# creating RetroDECK's lock file and writing the version in the config file
version=$hard_version
touch "$lockfile"
conf_write
}
post_update() {
# post update script
echo "Executing post-update script"
# Finding existing ROMs folder
if [ -d "$default_sd/retrodeck" ]
then
# ROMs on SD card
roms_folder="$default_sd/retrodeck/roms"
if [[ ! -L $rdhome && ! -L $rdhome/roms ]]; then # Add a roms folder symlink back to ~/retrodeck if missing, to fix things like PS2 autosaves until user migrates whole ~retrodeck directory
ln -s $roms_folder $rdhome/roms
fi
else
# ROMs on Internal
roms_folder="$HOME/retrodeck/roms"
fi
echo "ROMs folder found at $roms_folder"
# Unhiding downloaded media from the previous versions
if [ -d "$rdhome/.downloaded_media" ]
then
mv -fv "$rdhome/.downloaded_media" "$media_folder"
fi
# Unhiding themes folder from the previous versions
if [ -d "$rdhome/.themes" ]
then
mv -fv "$rdhome/.themes" "$themes_folder"
fi
# Doing the dir prep as we don't know from which version we came
dir_prep "$media_folder" "/var/config/emulationstation/.emulationstation/downloaded_media"
dir_prep "$themes_folder" "/var/config/emulationstation/.emulationstation/themes"
mkdir -pv $rdhome/.logs #this was added later, maybe safe to remove in a few versions
# Resetting es_settings, now we need it but in the future I should think a better solution, maybe with sed
cp -fv /app/retrodeck/es_settings.xml /var/config/emulationstation/.emulationstation/es_settings.xml
# 0.4 -> 0.5
# Perform save and state migration if needed
# Moving PCSX2 Saves
mv -fv /var/config/PCSX2/sstates/* $rdhome/states/ps2/pcsx2
mv -fv /var/config/PCSX2/memcards/* $rdhome/saves/ps2/memcards
# Moving Citra saves from legacy location to 0.5.0b structure
mv -fv $rdhome/saves/Citra/* $rdhome/saves/n3ds/citra
rmdir $rdhome/saves/Citra # Old folder cleanup
versionwheresaveschanged="0.4.5b" # Hardcoded break point between unsorted and sorted saves
if [[ $(sed -e "s/\.//g" <<< $hard_version) > $(sed -e "s/\.//g" <<< $versionwheresaveschanged) ]] && [[ ! $(sed -e "s/\.//g" <<< $version) > $(sed -e "s/\.//g" <<< $versionwheresaveschanged) ]]; then # Check if user is upgrading from the version where save organization was changed. Try not to reuse this, it things 0.4.5b is newer than 0.4.5
migration_logfile=$rdhome/.logs/savemove_"$(date +"%Y_%m_%d_%I_%M_%p").log"
save_backup_file=$rdhome/savebackup_"$(date +"%Y_%m_%d_%I_%M_%p").zip"
state_backup_file=$rdhome/statesbackup_"$(date +"%Y_%m_%d_%I_%M_%p").zip"
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" \
--text="You are updating to a version of RetroDECK where save file locations have changed!\n\nYour existing files will be backed up for safety and then sorted automatically.\n\nIf a file cannot be sorted automatically it will remain where it is for manual sorting.\n\nPLEASE BE PATIENT! This process can take several minutes if you have a large ROM library."
allgames=($(find "$roms_folder" -maxdepth 2 -mindepth 2 ! -name "systeminfo.txt" ! -name "systems.txt" ! -name "gc" ! -name "n3ds" ! -name "nds" ! -name "wii" ! -name "xbox" ! -name "*^*" | sed -e "s/ /\^/g")) # Build an array of all games and multi-disc-game-containing folders, adding whitespace placeholder
allsaves=($(find "$saves_folder" -mindepth 1 -maxdepth 1 -name "*.*" ! -name "gc" ! -name "n3ds" ! -name "nds" ! -name "wii" ! -name "xbox" | sed -e "s/ /\^/g")) # Build an array of all save files, ignoring standalone emulator sub-folders, adding whitespace placeholder
allstates=($(find "$states_folder" -mindepth 1 -maxdepth 1 -name "*.*" ! -name "gc" ! -name "n3ds" ! -name "nds" ! -name "wii" ! -name "xbox" | sed -e "s/ /\^/g")) # Build an array of all state files, ignoring standalone emulator sub-folders, adding whitespace placeholder
totalsaves=${#allsaves[@]}
totalstates=${#allstates[@]}
filesleft=
current_dest_folder=
gamestoskip=
tar -C $rdhome -czf $save_backup_file saves # Backup save directory for safety
echo "Saves backed up to" $save_backup_file >> $migration_logfile
tar -C $rdhome -czf $state_backup_file states # Backup state directory for safety
echo "States backed up to" $state_backup_file >> $migration_logfile
(
movefile() { # Take matching save and rom files and sort save into appropriate system folder
echo "# $filesleft $currentlybeingmoved remaining..." # These lines update the Zenity progress bar
progress=$(( 100 - (( 100 / "$totalfiles" ) * "$filesleft" )))
echo $progress
filesleft=$((filesleft-1))
if [[ ! " ${gamestoskip[*]} " =~ " ${1} " ]]; then # If the current game name exists multiple times in array ie. /roms/snes/Mortal Kombat 3.zip and /roms/genesis/Mortal Kombat 3.zip, skip and alert user to sort manually
game=$(sed -e "s/\^/ /g" <<< "$1") # Remove whitespace placeholder
gamebasename=$(basename "$game" | sed -e 's/\..*//') # Extract pure file name ie. /roms/snes/game1.zip becomes game1
systemdir="$(basename "$(dirname "$1")")" # Extract parent directory identifying system ROM belongs to
matches=($(find "$roms_folder" -maxdepth 2 -mindepth 2 -name "$gamebasename"".*" | sed -e 's/ /^/g' | sed -e 's/\..*//')) # Search for multiple instances of pure game name, adding to skip list if found
if [[ ${#matches[@]} -gt 1 ]]; then
echo "ERROR: Multiple ROMS found with name:" $gamebasename "Please sort saves and states for these ROMS manually" >> $migration_logfile
gamestoskip+=("$1")
return
fi
echo "INFO: Examining ROM file:" "$game" >> $migration_logfile
echo "INFO: System detected as" $systemdir >> $migration_logfile
sosfile=$(sed -e "s/\^/ /g" <<< "$2") # Remove whitespace placeholder from s-ave o-r s-tate file
sospurebasename="$(basename "$sosfile")" # Extract pure file name ie. /saves/game1.sav becomes game1
echo "INFO: Current save or state being examined for match:" $sosfile >> $migration_logfile
echo "INFO: Matching save or state" $sosfile "and game" $game "found." >> $migration_logfile
echo "INFO: Moving save or state to" $current_dest_folder"/"$systemdir"/"$sosbasename >> $migration_logfile
if [[ ! -d $current_dest_folder"/"$systemdir ]]; then # If system directory doesn't exist for save yet, create it
echo "WARNING: Creating missing system directory" $current_dest_folder"/"$systemdir
mkdir $current_dest_folder/$systemdir
fi
mv "$sosfile" -t $current_dest_folder/$systemdir # Move save to appropriate system directory
return
else
echo "WARNING: Game with name" "$(basename "$1" | sed -e "s/\^/ /g")" "already found. Skipping to next game..." >> $migration_logfile # Inform user of game being skipped due to duplicate ROM names
fi
}
find "$roms_folder" -mindepth 2 -maxdepth 2 -name "*\^*" -exec echo "ERROR: Game named" {} "found, please move save manually" \; >> $migration_logfile # Warn user if any of their files have the whitespace replacement character used by the script
totalfiles=$totalsaves #set variables for save file migration
filesleft=$totalsaves
currentlybeingmoved="saves"
current_dest_folder=$saves_folder
for i in "${allsaves[@]}"; do # For each save file, compare to every ROM file name looking for a match
found=
currentsave=($(basename "$i" | sed -e 's/\..*//')) # Extract pure file name ie. /saves/game1.sav becomes game1
for j in "${allgames[@]}"; do
currentgame=($(basename "$j" | sed -e 's/\..*//')) # Extract pure file name ie. /roms/snes/game1.zip becomes game1
[[ $currentgame == $currentsave ]] && { found=1; break; } # If names match move to next stage, otherwise skip
done
[[ -n $found ]] && movefile $j $i || echo "ERROR: No ROM match found for save file" $i | sed -e 's/\^/ /g' >> $migration_logfile # If a match is found, run movefile() otherwise warn user of stranded save file
done
totalfiles=$totalstates #set variables for state file migration
filesleft=$totalstates
currentlybeingmoved="states"
current_dest_folder=$states_folder
for i in "${allstates[@]}"; do # For each state file, compare to every ROM file name looking for a match
found=
currentstate=($(basename "$i" | sed -e 's/\..*//')) # Extract pure file name ie. /states/game1.sav becomes game1
for j in "${allgames[@]}"; do
currentgame=($(basename "$j" | sed -e 's/\..*//')) # Extract pure file name ie. /roms/snes/game1.zip becomes game1
[[ $currentgame == $currentstate ]] && { found=1; break; } # If names match move to next stage, otherwise skip
done
[[ -n $found ]] && movefile $j $i || echo "ERROR: No ROM match found for state file" $i | sed -e 's/\^/ /g' >> $migration_logfile # If a match is found, run movefile() otherwise warn user of stranded state file
done
) |
zenity --progress \
--icon-name=net.retrodeck.retrodeck \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title="Processing Files" \
--text="# files remaining..." \
--percentage=0 \
--no-cancel \
--auto-close
if [[ $(cat $migration_logfile | grep "ERROR" | wc -l) -eq 0 ]]; then
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" \
--text="The migration process has sorted all of your files automatically.\n\nEverything should be working normally, if you experience any issues please check the RetroDECK wiki or contact us directly on the Discord."
else
cat $migration_logfile | grep "ERROR" > "$rdhome/manual_sort_needed.log"
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" \
--text="The migration process was unable to sort $(cat $migration_logfile | grep "ERROR" | wc -l) files automatically.\n\nThese files will need to be moved manually to their new locations, find more detail on the RetroDECK wiki.\n\nA log of the files that need manual sorting can be found at $rdhome/manual_sort_needed.log"
fi
else
echo "Version" $version "is after the save and state organization was changed, no need to sort again"
fi
(
ra_init
standalones_init
tools_init
) |
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 Finishing Upgrade" \
--text="RetroDECK is finishing the upgrade process, please wait."
create_lock
}
start_retrodeck() {
# normal startup
echo "Starting RetroDECK v$version"
emulationstation --home /var/config/emulationstation
}
browse(){
# Function for browsing the sd card
path_selected=false
while [ $path_selected == false ]
do
sdcard="$(zenity --file-selection --title="Choose retrodeck folder location" --directory)"
echo "Path choosed: $sdcard, answer=$?"
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" \
--cancel-label="No" \
--ok-label "Yes" \
--text="Your rom folder will be:\n\n$sdcard/retrodeck/roms\n\nis that ok?"
if [ $? == 0 ] #yes
then
sdselected == true
roms_folder="$sdcard/retrodeck/roms"
break
else
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --cancel-label="No" --ok-label "Yes" --text="Do you want to quit?"
if [ $? == 0 ] # yes, quit
then
exit 0
fi
fi
done
}
#advanced(){
# # function to give advanced install options
# echo "Advaced choosed"
#
# choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
# --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" \
# --ok-label "ROMs" \
# --extra-button "Media" \
# --extra-button "Themes" \
# --extra-button "Back" \
# --text="What do you want to change?\n\nROMS folder = $roms_folder\nMedia folder (scraped data) = $media_folder\nThemes folder=$themes_folder" )
# echo "Choice is $choice"
#
# case $choice in
#
# "" ) # Internal (yes)
# echo "ROMs"
# ;;
#
# "Media" )
# echo "Media"
# ;;
#
# "Themes" )
# echo "Themes"
# ;;
#
# "Back" ) # Browse + not found fallback
# echo "Back"
# finit
# ;;
#
# esac
#}
finit() {
# Force/First init, depending on the situation
echo "Executing finit"
# Internal or SD Card?
choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" \
--ok-label "Cancel" \
--extra-button "Internal" \
--extra-button "SD Card" \
--text="Welcome to the first configuration of RetroDECK.\nThe setup will be quick but please READ CAREFULLY each message in order to avoid misconfigurations.\n\nWhere do you want your roms folder to be located?" )
echo "Choice is $choice"
case $choice in
"" ) # Cancel or X button quits
echo "Now quitting"
kill $$
;;
"Internal" ) # Internal
echo "Internal selected"
roms_folder="$rdhome/roms"
;;
"SD Card" )
echo "SD Card selected"
if [ ! -d "$sdcard" ] # SD Card path is not existing
then
echo "Error: SD card not found"
zenity --question --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" --cancel-label="Cancel" \
--ok-label "Browse" \
--text="SD Card was not find in the default location.\nPlease choose the SD Card root.\nA retrodeck/roms folder will be created starting from the directory that you selected."
browse # Calling the browse function
else
roms_folder="$sdcard/retrodeck/roms" # sdcard variable is correct as its given by browse function
echo "ROMs folder = $roms_folder"
fi
;;
#"Advanced" ) # Browse + not found fallback
# echo "Advanced"
# advanced
#;;
esac
mkdir -pv $roms_folder
# TODO: after the next update of ES-DE this will not be needed
#zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --text="EmulationStation will now initialize the system.\nPlease DON'T EDIT THE ROMS LOCATION, just select:\n\nCREATE DIRECTORIES\nYES\nOK\nQUIT\n\nRetroDECK will manage the rest."
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."
# Recreating the folder
rm -rfv /var/config/emulationstation/
rm -rfv /var/config/retrodeck/tools/
mkdir -pv /var/config/emulationstation/
# Initializing ES-DE
# 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
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."
# Initializing ROMs folder - Original in retrodeck home (or SD Card)
dir_prep $roms_folder "/var/config/emulationstation/ROMs"
mkdir -pv $rdhome/saves
mkdir -pv $rdhome/states
mkdir -pv $rdhome/screenshots
mkdir -pv $rdhome/bios/pico8
mkdir -pv $rdhome/.logs
# XMLSTARLET HERE
cp -fv /app/retrodeck/es_settings.xml /var/config/emulationstation/.emulationstation/es_settings.xml
# ES-DE preparing themes and scraped folders
dir_prep "$rdhome/downloaded_media" "/var/config/emulationstation/.emulationstation/downloaded_media"
dir_prep "$rdhome/themes" "/var/config/emulationstation/.emulationstation/themes"
# PICO-8
dir_prep "$roms_folder/pico8" "$rdhome/bios/pico8/bbs/carts" #this is the folder where pico-8 is saving the carts
(
ra_init
standalones_init
tools_init
) |
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 Finishing Upgrade" \
--text="RetroDECK is finishing the upgrade process, please wait."
create_lock
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" \
--text="Installation completed.\nPlease put your roms in:\n\n$roms_folder\n\nand your bioses in\n\n$rdhome/bios\n\nThen start the program again.\nIf you wish to change the roms location, you may use the tool located the tools section of RetroDECK.\n\nIMPORTANT NOTES:\n- RetroDECK must be manually added and launched from your Steam Library in order to work correctly.\n- It's recommended to use the 'RetroDECK Offical Controller Config' from Steam (under community layouts).\n- It's suggested to use BoilR to automatically add the SteamGridDB images to Steam (this will be automated soon).\nhttps://github.com/PhilipK/BoilR"
# TODO: Replace the stuff above with BoilR code when ready
}
# Arguments section # Arguments section
@ -631,7 +17,7 @@ Arguments:
-h, --help Print this help -h, --help Print this help
-v, --version Print RetroDECK version -v, --version Print RetroDECK version
--info-msg Print paths and config informations --info-msg Print paths and config informations
--reset Starts the initial RetroDECK installer (backup your data first!) --reset-all Starts the initial RetroDECK installer (backup your data first!)
--reset-ra Resets RetroArch's config to the default values --reset-ra Resets RetroArch's config to the default values
--reset-sa Reset standalone emulator configs to the default values --reset-sa Reset standalone emulator configs to the default values
--reset-tools Recreate the tools section --reset-tools Recreate the tools section
@ -667,7 +53,7 @@ https://retrodeck.net
tools_init tools_init
shift # past argument with no value shift # past argument with no value
;; ;;
--reset*) --reset-all*)
rm -f "$lockfile" rm -f "$lockfile"
shift # past argument with no value shift # past argument with no value
;; ;;
@ -684,27 +70,17 @@ done
# if lockfile exists # if lockfile exists
if [ -f "$lockfile" ] if [ -f "$lockfile" ]
then then
#conf_init # Initializing/reading the config file (sourced from global.sh)
# ...but the version doesn't match with the config file # ...but the version doesn't match with the config file
if [ "$hard_version" != "$version" ]; if [ "$hard_version" != "$version" ];
then then
echo "Config file's version is $version but the actual version is $hard_version" echo "Config file's version is $version but the actual version is $hard_version"
post_update # Executing post update script post_update # Executing post update script
conf_write # Writing variables in the config file (sourced from global.sh)
start_retrodeck
exit 0
fi fi
# Else, LOCKFILE IS NOT EXISTING (WAS REMOVED) # Else, LOCKFILE IS NOT EXISTING (WAS REMOVED)
# if the lock file doesn't exist at all means that it's a fresh install or a triggered reset # if the lock file doesn't exist at all means that it's a fresh install or a triggered reset
else else
echo "Lockfile not found" echo "Lockfile not found"
#conf_init # Initializing/reading the config file (sourced from global.sh)
finit # Executing First/Force init finit # Executing First/Force init
conf_write # Writing variables in the config file (sourced from global.sh)
exit 0
fi fi
# Normal Startup # Normal Startup

0
tools/cheevos.sh → tools/cheevos.sh.disabled Executable file → Normal file
View file

540
tools/configurator.sh Normal file
View file

@ -0,0 +1,540 @@
#!/bin/bash
# VARIABLES SECTION
#rd_conf="retrodeck.cfg" # uncomment for standalone testing
#source functions.sh # uncomment for standalone testing
source /app/libexec/global.sh # uncomment for flatpak testing
source /app/libexec/functions.sh # uncomment for flatpak testing
# DIALOG SECTION
# Configurator Option Tree
# Welcome
# - Move RetroDECK data directory
# - Migrate everything
# - Change Emulator Options
# - RetroArch
# - Change Rewind Setting
# - RetroAchivement login
# - Login prompt
# - Reset RetroDECK
# - Reset RetroArch
# - Reset Specific Standalone Emulator
# - Reset Yuzu
# - Reset Dolphin
# - Reset PCSX2
# - Reset MelonDS
# - Reset Citra
# - Reset RPCS3
# - Reset XEMU
# - Reset PPSSPP
# - Reset Duckstation
# - Reset All Standalone Emulators
# - Reset Tools
# - 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
# DIALOG TREE FUNCTIONS
configurator_reset_dialog() {
choice=$(zenity --list --title="RetroDECK Configurator Utility - Reset Options" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--column="Choice" --column="Action" \
"Reset RetroArch" "Reset RetroArch to default settings" \
"Reset Specific Standalone" "Reset only one specific standalone emulator to default settings" \
"Reset All Standalones" "Reset all standalone emulators to default settings" \
"Reset Tools" "Reset Tools menu entries" \
"Reset All" "Reset RetroDECK to default settings" )
case $choice in
"Reset RetroArch" )
ra_init
configurator_process_complete_dialog "resetting RetroArch"
;;
"Reset Specific Standalone" )
emulator_to_reset=$(zenity --list \
--title "RetroDECK Configurator Utility - Reset Specific Standalone Emulator" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--text="Which emulator do you want to reset to default?" \
--hide-header \
--column=emulator \
"RetroArch" \
"Citra" \
"Dolphin" \
"Duckstation" \
"MelonDS" \
"PCSX2" \
"PPSSPP" \
"RPCS3" \
"XEMU" \
"Yuzu")
case $emulator_to_reset in
"RetroArch" )
ra_init
configurator_process_complete_dialog "resetting $emulator_to_reset"
;;
"Citra" )
citra_init
configurator_process_complete_dialog "resetting $emulator_to_reset"
;;
"Dolphin" )
dolphin_init
configurator_process_complete_dialog "resetting $emulator_to_reset"
;;
"Duckstation" )
duckstation_init
configurator_process_complete_dialog "resetting $emulator_to_reset"
;;
"MelonDS" )
melonds_init
configurator_process_complete_dialog "resetting $emulator_to_reset"
;;
"PCSX2" )
pcsx2_init
configurator_process_complete_dialog "resetting $emulator_to_reset"
;;
"PPSSPP" )
ppssppsdl_init
configurator_process_complete_dialog "resetting $emulator_to_reset"
;;
"RPCS3" )
rpcs3_init
configurator_process_complete_dialog "resetting $emulator_to_reset"
;;
"XEMU" )
xemu_init
configurator_process_complete_dialog "resetting $emulator_to_reset"
;;
"Yuzu" )
yuzu_init
configurator_process_complete_dialog "resetting $emulator_to_reset"
;;
"" ) # No selection made or Back button clicked
configurator_reset_dialog
;;
esac
;;
"Reset All Standalones" )
standalones_init
configurator_process_complete_dialog "resetting standalone emulators"
;;
"Reset Tools" )
tools_init
configurator_process_complete_dialog "resetting the tools menu"
;;
"Reset All" )
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Configurator Utility - Reset RetroDECK" \
--text="You are resetting RetroDECK to its default state.\n\nAfter the process is complete you will need to exit RetroDECK and run it again."
rm -f "$lockfile"
configurator_process_complete_dialog "resetting RetroDECK"
;;
"" ) # No selection made or Back button clicked
configurator_welcome_dialog
;;
esac
}
configurator_retroachivement_dialog() {
login=$(zenity --forms --title="RetroDECK Configurator Utility - RetroArch RetroAchievements Login" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--text="Enter your RetroAchievements Account details.\n\nBe aware that this tool cannot verify your login details and currently only supports logging in with RetroArch.\nFor registration and more info visit\nhttps://retroachievements.org/\n" \
--separator="=SEP=" \
--add-entry="Username" \
--add-password="Password")
if [ $? == 0 ]; then # OK button clicked
arrIN=(${login//=SEP=/ })
user=${arrIN[0]}
pass=${arrIN[1]}
set_setting_value $raconf cheevos_enable true retroarch
set_setting_value $raconf cheevos_username $user retroarch
set_setting_value $raconf cheevos_password $pass retroarch
configurator_process_complete_dialog "logging in to RetroArch RetroAchievements"
else
configurator_welcome_dialog
fi
}
configurator_update_dialog() {
configurator_generic_dialog "This feature is not available yet"
configurator_welcome_dialog
}
configurator_power_user_changes_dialog() {
zenity --title "RetroDECK Configurator Utility - Power User Options" --question --no-wrap --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--text="Making manual changes to an emulators configuration may create serious issues,\nand some settings may be overwitten during RetroDECK updates.\n\nSome standalone emulator functions may not work properly outside of Desktop mode.\n\nPlease continue only if you know what you're doing.\n\nDo you want to continue?"
if [ $? == 0 ]; then # OK button clicked
emulator=$(zenity --list \
--title "RetroDECK Configurator Utility - Power User Options" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--text="Which emulator do you want to configure?" \
--hide-header \
--column=emulator \
"RetroArch" \
"Citra" \
"Dolphin" \
"Duckstation" \
"MelonDS" \
"PCSX2-QT" \
"PCSX2-Legacy" \
"PPSSPP" \
"RPCS3" \
"XEMU" \
"Yuzu")
case $emulator in
"RetroArch" )
retroarch
;;
"Citra" )
citra-qt
;;
"Dolphin" )
dolphin-emu
;;
"Duckstation" )
duckstation-qt
;;
"MelonDS" )
melonDS
;;
"PCSX2-QT" )
pcsx2-qt
;;
"PCSX2-Legacy" )
pcsx2
;;
"PPSSPP" )
PPSSPPSDL
;;
"RPCS3" )
rpcs3
;;
"XEMU" )
xemu
;;
"Yuzu" )
yuzu
;;
"" ) # No selection made or Back button clicked
configurator_options_dialog
;;
esac
else
configurator_options_dialog
fi
}
configurator_retroarch_rewind_dialog() {
if [[ $(get_setting_value $raconf rewind_enable retroarch) == "true" ]]; then
zenity --question \
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Configurator - Rewind" \
--text="Rewind is currently enabled. Do you want to disable it?."
if [ $? == 0 ]
then
set_setting_value $raconf "rewind_enable" "false" retroarch
configurator_process_complete_dialog "disabling Rewind"
else
configurator_options_dialog
fi
else
zenity --question \
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--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."
if [ $? == 0 ]
then
set_setting_value $raconf "rewind_enable" "true" retroarch
configurator_process_complete_dialog "enabling Rewind"
else
configurator_options_dialog
fi
fi
}
configurator_retroarch_options_dialog() {
choice=$(zenity --list --title="RetroDECK Configurator Utility - RetroArch Options" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--column="Choice" --column="Action" \
"Change Rewind Setting" "Enable or disable the Rewind function in RetroArch" )
case $choice in
"Change Rewind Setting" )
configurator_retroarch_rewind_dialog
;;
"" ) # No selection made or Back button clicked
configurator_options_dialog
;;
esac
}
configurator_options_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" \
--column="Choice" --column="Action" \
"Change RetroArch Settings" "Change settings specific to RetroArch" \
"Power User Changes" "Make changes directly in an emulator" )
case $choice in
"Change RetroArch Settings" )
configurator_retroarch_options_dialog
;;
"Power User Changes" )
configurator_power_user_changes_dialog
;;
"" ) # No selection made or Back button clicked
configurator_welcome_dialog
;;
esac
}
configurator_move_dialog() {
if [[ -d $rdhome ]]; then
destination=$(configurator_destination_choice_dialog "RetroDECK Data" "Please choose a destination for the RetroDECK data folder.")
case $destination in
"Back" )
configurator_move_dialog
;;
"Internal Storage" )
if [[ ! -L "$HOME/retrodeck" && -d "$HOME/retrodeck" ]]; then
configurator_generic_dialog "The RetroDECK data folder is already at that location, please pick a new one."
configurator_move_dialog
else
configurator_generic_dialog "Moving RetroDECK data folder to $destination"
unlink $HOME/retrodeck # Remove symlink for $rdhome
move $rdhome "$HOME"
if [[ ! -d $rdhome && -d $HOME/retrodeck ]]; then # If the move succeeded
rdhome="$HOME/retrodeck"
roms_folder="$rdhome/roms"
saves_folder="$rdhome/saves"
states_folder="$rdhome/states"
bios_folder="$rdhome/bios"
media_folder="$rdhome/downloaded_media"
themes_folder="$rdhome/themes"
emulators_post_move
conf_write
configurator_process_complete_dialog "moving the RetroDECK data directory to internal storage"
else
configurator_generic_dialog "The moving process was not completed, please try again."
fi
fi
;;
"SD Card" )
if [[ -L "$HOME/retrodeck" && -d "$sdcard/retrodeck" && "$rdhome" == "$sdcard/retrodeck" ]]; then
configurator_generic_dialog "The RetroDECK data folder is already configured to that location, please pick a new one."
configurator_move_dialog
else
if [[ ! -w $sdcard ]]; then
configurator_generic_dialog "The SD card was found but is not writable\nThis can happen with cards formatted on PC or for other reasons.\nPlease format the SD card through the Steam Deck's Game Mode and try the moving process again."
configurator_welcome_dialog
else
if [[ $(verify_space $rdhome $sdcard) == "true" ]];then
configurator_generic_dialog "Moving RetroDECK data folder to $destination"
if [[ -L "$HOME/retrodeck/roms" ]]; then # Check for ROMs symlink user may have created
unlink "$HOME/retrodeck/roms"
fi
(
dir_prep "$sdcard/retrodeck" "$rdhome"
) |
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 - Move in Progress" \
--text="Moving directory $rdhome to new location of $sdcard/retrodeck, please wait."
if [[ -L $rdhome && ! $rdhome == "$HOME/retrodeck" ]]; then # Clean up extraneus symlinks from previous moves
unlink $rdhome
fi
if [[ ! -L "$HOME/retrodeck" ]]; then # Always link back to original directory
ln -svf "$sdcard/retrodeck" "$HOME/retrodeck"
fi
rdhome="$sdcard/retrodeck"
roms_folder="$rdhome/roms"
saves_folder="$rdhome/saves"
states_folder="$rdhome/states"
bios_folder="$rdhome/bios"
media_folder="$rdhome/downloaded_media"
themes_folder="$rdhome/themes"
emulators_post_move
conf_write
configurator_process_complete_dialog "moving the RetroDECK data directory to SD card"
else
zenity --icon-name=net.retrodeck.retrodeck --error --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Configurator Utility - Move Directories" \
--text="The destination directory you have selected does not have enough free space for the files you are trying to move.\n\nPlease select a new destination or free up some space."
fi
fi
fi
;;
"Custom Location" )
configurator_generic_dialog "Select the root folder you would like to store the RetroDECK data folder in.\n\nA new folder \"retrodeck\" will be created in the destination chosen."
custom_dest=$(browse "RetroDECK directory location")
if [[ ! -w $custom_dest ]]; then
configurator_generic_dialog "The destination was found but is not writable\nThis can happen if RetroDECK does not have permission to write to this location. This can typically be solved through the utility Flatseal, please make the needed changes and try the moving process again."
configurator_welcome_dialog
else
if [[ $(verify_space $rdhome $custom_dest) ]];then
configurator_generic_dialog "Moving RetroDECK data folder to $custom_dest/retrodeck"
if [[ -L $rdhome/roms ]]; then # Check for ROMs symlink user may have created
unlink $rdhome/roms
fi
(
dir_prep "$custom_dest/retrodeck" "$rdhome"
) |
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 - Move in Progress" \
--text="Moving directory $rdhome to new location of $custom_dest/retrodeck, please wait."
if [[ -L $rdhome && ! $rdhome == "$HOME/retrodeck" ]]; then # Clean up extraneus symlinks from previous moves
unlink $rdhome
fi
if [[ ! -L "$HOME/retrodeck" ]]; then
ln -svf "$custom_dest/retrodeck" "$HOME/retrodeck"
fi
rdhome="$custom_dest/retrodeck"
roms_folder="$rdhome/roms"
saves_folder="$rdhome/saves"
states_folder="$rdhome/states"
bios_folder="$rdhome/bios"
media_folder="$rdhome/downloaded_media"
themes_folder="$rdhome/themes"
emulators_post_move
conf_write
configurator_process_complete_dialog "moving the RetroDECK data directory to SD card"
else
zenity --icon-name=net.retrodeck.retrodeck --error --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Configurator Utility - Move Directories" \
--text="The destination directory you have selected does not have enough free space for the files you are trying to move.\n\nPlease select a new destination or free up some space."
fi
fi
;;
esac
else
configurator_generic_dialog "The RetroDECK data folder was not found at the expected location.\n\nThis may have happened if the folder was moved manually.\n\nPlease select the current location of the RetroDECK data folder."
rdhome=$(browse "RetroDECK directory location")
roms_folder="$rdhome/roms"
saves_folder="$rdhome/saves"
states_folder="$rdhome/states"
bios_folder="$rdhome/bios"
media_folder="$rdhome/downloaded_media"
themes_folder="$rdhome/themes"
emulator_post_move
conf_write
configurator_generic_dialog "RetroDECK data folder now configured at $rdhome. Please start the moving process again."
configurator_move_dialog
fi
}
configurator_welcome_dialog() {
# Clear the variables
source=
destination=
action=
setting=
setting_value=
choice=$(zenity --list --title="RetroDECK Configurator Utility" --cancel-label="Quit" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--column="Choice" --column="Action" \
"Move Files" "Move files between internal/SD card or to custom locations" \
"Change Options" "Adjust how RetroDECK behaves" \
"RetroAchivements" "Log in to RetroAchievements" \
"Reset" "Reset parts of RetroDECK" )
case $choice in
"Move Files" )
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 Options" )
configurator_options_dialog
;;
"RetroAchivements" )
configurator_retroachivement_dialog
;;
"Reset" )
configurator_reset_dialog
;;
"Quit" )
exit 0
;;
esac
}
# START THE CONFIGURATOR
configurator_welcome_dialog

View file

0
tools/rewind.sh → tools/rewind.sh.disabled Executable file → Normal file
View file