I'm coming from a Windows config that used RocketLauncher with the PCSX2 AHK module that automatically created and utilized per-game configuration files. I'd like to accomplish the same in Linux by having Attract Mode call a similar script, but I'm not much of a coder. Anyone want to tackle this task, or has someone already created a solution for this? I've attached the AHK script for reference.
Creating a new config only requires copying over the defaults to a game-specific folder and then sourcing --cfg-path when loading the game. I want a script that will
- check Game Configs folder for folder matching the name of the input file
- load PCSX2 using that game's config by passing --cfg-path if it exists
- if it doesn't exist, automatically copy Default folder to new GameName folder
- load PCSX2 using the newly-created folder by passing --cfg-path
The Tool won't create configuration on a per-Game base, imo that doesn't make too much sense, because some games can share their configuration. However, you can ofc create configurations per game if desired, and then generate a startscript.
(02-25-2020, 07:46 PM)XXXBold Wrote: [ -> ]The Tool won't create configuration on a per-Game base, imo that doesn't make too much sense, because some games can share their configuration.
It's not the most space-efficient method, but I want something that will load the appropriate configuration transparently and only require being changed once if the game requires adjustments from the default profile.
Added an exit trap so Attract Mode's 'Exit Emulator' hotkey works correctly. attract must be launched via terminal to work correctly with this script.
Code:
#!/bin/bash
## This script makes it possible to user individual per game configuration files for PCSX2.
## Make sure your default PCSX2_ui.ini has Slot1_Filename set to default.ps2.
## This script only seems to work correctly with Attract Mode when attract is launched via terminal.
## Works with PCSX2 1.5.0.
## Credit to parasven for the RetroPie script that was the basis for this.
pcsx2_ini="$HOME/.config/PCSX2/PCSX2-reg.ini"
game_configpath="$HOME/.config/PCSX2/game_configs"
memcardpath="$HOME/.config/PCSX2/memcards"
pcsx2_config_default="$HOME/.config/PCSX2/inis"
fullfilename=$1
filename=$(basename "$fullfilename")
title_id="${filename%.*}"
memcard="$title_id.ps2"
## If no parameter was passed, set default path and exit.
if [[ ! $1 ]]
then
## Exchange the configpath
sed -i s@"^SettingsFolder=.*"@"SettingsFolder=\"$pcsx2_config_default\""@g "$pcsx2_ini"
exit
fi
## When the config folder does not exist, create it and copy over the default inis from the default ini folder.
if [[ ! -e "$game_configpath/$title_id" ]]
then
## Create folder based on the filename of the game.
mkdir -p "$game_configpath/$title_id/"
## Copy over the default inis from default directory for a start.
cp -a "$pcsx2_config_default"/*.ini "$game_configpath/$title_id/"
fi
## If game-specific memory card does not exist, then create it using blank default.
if [[ ! -e "$memcardpath/$memcard" ]]
then
## Copy default memcard
cp "$memcardpath"/default.ps2 "$memcardpath/$memcard"
fi
echo "memcard = $memcard"
# Load relevant memory card.
sed -i "s|default.ps2|$memcard|g" "$game_configpath/$title_id/"PCSX2_ui.ini
# Launch PCSX2 using the relevant config folder.
/usr/games/PCSX2 --fullscreen --fullboot --cfgpath="$game_configpath/$title_id" "$1" &
# Close PCSX2 when Attract Mode's 'Exit Emulator' hotkey is pressed.
cleanup() {
echo "Caugh Signal ... terminating PCSX2."
pkill PCSX2
exit
}
trap cleanup INT TERM
read var
cleanup