find_project_root walked up from a release's game.toml to the first
ancestor with a root marker. With a global ~/.gitignore (common) and the
game under ~/Games/<title>, that was the home folder, so [runtime]
memcard_dir = "saves" put memory cards and savestates in ~/saves instead
of beside the game. A folder whose licenses/psxrecomp-LICENSE was staged
by package_game_release.sh now stops the walk.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
settings.toml [bios]/[disc]/[memcard] and the disc.cfg / bios.cfg
sidecars were written as absolute paths. A portable game folder therefore
broke once it was moved or copied to another PC: the launcher asked for
the disc and BIOS again, and saves were not found.
Paths inside the folder that holds settings.toml (the exe directory) are
now written relative to it. Paths outside it (another drive, a network
share) stay absolute. Readers already resolve relative paths against the
exe directory (previous commit), so the folder works wherever it lands.
portable_settings_paths_test checks that a path inside the settings folder
is written relative, a path outside stays absolute, and the relative form
reads back unchanged.