From 5fa6056a0093915844505016bfc2857f32a736eb Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Fri, 14 Feb 2025 02:32:14 +0200 Subject: [PATCH] PPSSPP: Add RetroAchievements support (#974) * PPSSPP: Add RetroAchievements support Rebased onto cooker * Fix target file rewrite * Fix cheevos logout * Implement disabled state for rewrite case * Fix path to default PPSSPP configs in preset * Fix a comment in global.sh too cause why not? --- config/ppssppsdl/ppsspp_retroachievements.dat | 0 config/retrodeck/presets/ppsspp_presets.cfg | 9 ++++---- config/retrodeck/retrodeck.cfg | 2 ++ functions/global.sh | 3 ++- functions/prepare_component.sh | 4 ++++ functions/presets.sh | 21 +++++++++++++++++++ .../ppsspp/ppsspp_retroachievements.dat | 0 tools/configurator.sh | 2 +- tools/configurator/retrodeck.json | 6 ++++-- 9 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 config/ppssppsdl/ppsspp_retroachievements.dat create mode 100644 old/emu-configs/defaults/ppsspp/ppsspp_retroachievements.dat diff --git a/config/ppssppsdl/ppsspp_retroachievements.dat b/config/ppssppsdl/ppsspp_retroachievements.dat new file mode 100644 index 00000000..e69de29b diff --git a/config/retrodeck/presets/ppsspp_presets.cfg b/config/retrodeck/presets/ppsspp_presets.cfg index 2236fdd2..93e13d17 100644 --- a/config/retrodeck/presets/ppsspp_presets.cfg +++ b/config/retrodeck/presets/ppsspp_presets.cfg @@ -1,5 +1,6 @@ config_file_format^ppsspp -change^savestate_auto_load^AutoLoadSaveState^2^General^$ppssppconf^$config/ppssppdl/ppsspp.ini -change^cheevos^AchievementsEnable^True^Achievements^$ppssppconf^$config/ppssppdl/ppsspp.ini -change^cheevos^AchievementsUserName^Achievements^$cheevos_username^$ppssppconf^$config/ppssppdl/ppsspp.ini -change^cheevos_hardcore^AchievementsChallengeMode^True^Achievements^$ppssppconf^$config/ppssppdl/ppsspp.ini +change^savestate_auto_load^AutoLoadSaveState^2^General^$ppssppconf^$config/ppssppsdl/ppsspp.ini +change^cheevos^AchievementsEnable^True^Achievements^$ppssppconf^$config/ppssppsdl/ppsspp.ini +change^cheevos^AchievementsUserName^$cheevos_username^Achievements^$ppssppconf^$config/ppssppsdl/ppsspp.ini +rewrite^cheevos^^$cheevos_token^^$ppssppcheevosconf^$config/ppssppsdl/ppsspp_retroachievements.dat +change^cheevos_hardcore^AchievementsChallengeMode^True^Achievements^$ppssppconf^$config/ppssppsdl/ppsspp.ini diff --git a/config/retrodeck/retrodeck.cfg b/config/retrodeck/retrodeck.cfg index 94bb59a3..eb924385 100644 --- a/config/retrodeck/retrodeck.cfg +++ b/config/retrodeck/retrodeck.cfg @@ -46,11 +46,13 @@ portmaster_show=true duckstation=false pcsx2=false retroarch=false +ppsspp=false [cheevos_hardcore] duckstation=false pcsx2=false retroarch=false +ppsspp=false [rewind] gb=false diff --git a/functions/global.sh b/functions/global.sh index b3f82c5c..a80e01c6 100644 --- a/functions/global.sh +++ b/functions/global.sh @@ -116,10 +116,11 @@ pcsx2gsconf="/var/config/PCSX2/inis/GS.ini" # This file should be deprecated sin pcsx2uiconf="/var/config/PCSX2/inis/PCSX2_ui.ini" # This file should be deprecated since moving to PCSX2-QT pcsx2vmconf="/var/config/PCSX2/inis/PCSX2_vm.ini" # This file should be deprecated since moving to PCSX2-QT -# PPSSPPDL config files +# PPSSPP-SDL config files ppssppconf="/var/config/ppsspp/PSP/SYSTEM/ppsspp.ini" ppssppcontrolsconf="/var/config/ppsspp/PSP/SYSTEM/controls.ini" +ppssppcheevosconf="/var/config/ppsspp/PSP/SYSTEM/ppsspp_retroachievements.dat" # Primehack config files diff --git a/functions/prepare_component.sh b/functions/prepare_component.sh index c9ad49cd..0aced07c 100644 --- a/functions/prepare_component.sh +++ b/functions/prepare_component.sh @@ -598,6 +598,10 @@ prepare_component() { log i "PPSSPP cheats backed up to $backup_file" fi tar -xzf /app/retrodeck/cheats/ppsspp.tar.gz -C "$cheats_folder/PPSSPP" --overwrite + + # Reset default preset settings + set_setting_value "$rd_conf" "ppsspp" "$(get_setting_value "$rd_defaults" "ppsspp" "retrodeck" "cheevos")" "retrodeck" "cheevos" + set_setting_value "$rd_conf" "ppsspp" "$(get_setting_value "$rd_defaults" "ppsspp" "retrodeck" "cheevos_hardcore")" "retrodeck" "cheevos_hardcore" fi if [[ "$action" == "postmove" ]]; then # Run only post-move commands set_setting_value "$ppssppconf" "CurrentDirectory" "$roms_folder/psp" "ppsspp" "General" diff --git a/functions/presets.sh b/functions/presets.sh index b68cb3df..acb23972 100644 --- a/functions/presets.sh +++ b/functions/presets.sh @@ -267,6 +267,27 @@ build_preset_config() { fi ;; + "rewrite" ) + if [[ "$read_preset" == "$current_preset" ]]; then + if [[ "$target_file" = \$* ]]; then # Read current target file and resolve if it is a variable + eval target_file=$target_file + fi + local read_target_file="$target_file" + if [[ "$defaults_file" = \$* ]]; then #Read current defaults file and resolve if it is a variable + eval defaults_file=$defaults_file + fi + local read_defaults_file="$defaults_file" + if [[ "$read_system_enabled" == "true" ]]; then + if [[ "$new_setting_value" = \$* ]]; then + eval new_setting_value=$new_setting_value + fi + echo -n "$new_setting_value" > "$read_target_file" + else + cat "$read_defaults_file" > "$read_target_file" + fi + fi + ;; + "enable" ) if [[ "$read_preset" == "$current_preset" ]]; then if [[ "$read_system_enabled" == "true" ]]; then diff --git a/old/emu-configs/defaults/ppsspp/ppsspp_retroachievements.dat b/old/emu-configs/defaults/ppsspp/ppsspp_retroachievements.dat new file mode 100644 index 00000000..e69de29b diff --git a/tools/configurator.sh b/tools/configurator.sh index 692b11ab..bb7297db 100755 --- a/tools/configurator.sh +++ b/tools/configurator.sh @@ -224,7 +224,7 @@ configurator_global_presets_and_settings_dialog() { local cheevos_emulators=$(sed -n '/\[cheevos\]/, /\[/{ /\[cheevos\]/! { /\[/! p } }' $rd_conf | sed '/^$/d') for setting_line in $cheevos_emulators; do emulator=$(get_setting_name "$setting_line" "retrodeck") - set_setting_value "$rdconf" "$emulator" "false" "retrodeck" "cheevos" + set_setting_value "$rd_conf" "$emulator" "false" "retrodeck" "cheevos" build_preset_config "$emulator" "cheevos" done configurator_generic_dialog "RetroDECK Configurator Utility - RetroAchievements" "RetroAchievements has been disabled in all supported systems." diff --git a/tools/configurator/retrodeck.json b/tools/configurator/retrodeck.json index 0dde12b8..832a6f90 100644 --- a/tools/configurator/retrodeck.json +++ b/tools/configurator/retrodeck.json @@ -28,12 +28,14 @@ "cheevos": { "duckstation": false, "pcsx2": false, - "retroarch": false + "retroarch": false, + "ppsspp": false }, "cheevos_hardcore": { "duckstation": false, "pcsx2": false, - "retroarch": false + "retroarch": false, + "ppsspp": false }, "options": { "akai_ponzu": false,