You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Give saves a slot, and download into the core's own folder
Two things that between them made save sync a one-way trip.
sync/negotiate only considers saves that carry a slot. We uploaded
without one, so every save this plugin wrote landed on the server
correctly and was then invisible to the sync layer - not offered to any
device, not matched when reported back. Negotiate answered "Save exists
on client but not on server" even for a byte-identical copy of what it
was storing, so the local side always counted as new and won
unconditionally. An empty save could quietly replace a good one; that is
how I lost one while testing this.
Measured against a server holding both kinds: 40 saves with a slot, 27
of them offered for download; 8 without one, none ever offered, to any
device. The slot-less ones were exactly those written by clients that
omit it. Uploading the same file with slot=autosave makes it show up as
a download operation immediately. Other RomM clients use "autosave" for
a game's live save whatever the platform, and the server keys saves by
(rom_id, slot), so a different value here would split one game's save
into two entries that never reconcile.
The second one only surfaces once downloads happen at all. With
sort_savefiles_enable, RetroArch keeps saves in a folder named after the
running core. We resolved the path without a core name, which is
harmless while a local save exists - the recursive search finds it - but
wrong the moment a download has to create the file: it landed beside the
core folders rather than inside one, where RetroArch never looks. The
game then started fresh on a save that was sitting right there, and that
fresh save went back up on exit.
The core comes from the profile Playnite launches with: built-in
RetroArch profiles are named after it, custom ones carry it in the
libretro argument. Where a matching folder already exists its spelling
wins, since RetroArch's own name for a core ("mGBA") is not always how
Playnite spells it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
0 commit comments