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
Describe the bug
Dreamcast save files don't seem to be properly detected for save syncing, at least on Knulli using the default emulator, Flycast. Flycast stores saves four at a time (for some reason) with the following format:
Based on the Grout docs, I think the first issue may be that the save files have a .bin extension, which is not one of the accepted save file extensions. I'm also not exactly sure why there are four save files for each game, or the best way to handle that. I'd guess it's one for each potential virtual VMU across four controllers, not sure what the best solution is there.
Reproduction Steps
Steps to reproduce the behavior:
Following up on this, it looks like the issue seems to actually be down to how it determines the save file name:
Grout tries to generate what it thinks the save file will be based on the rom filename, e.g. dreamcast_game.chd -> dreamcast_game.bin
However, Dreamcast emuators (at least Flycast) embed the VMU slot into the save file, so the actual save file is dreamcast_game.A1.chd, or in the case of Knulli, it generates 4 VMU save files (A1, B1, C1, D1) though only A1 seems to actually be populated.
Even if the save file is manually uploaded to Romm with the correct filename (dreamcast_game.A1.bin), when Grout downloads the save, it's rendered as dreamcast_game.bin, so Flycast never picks it up.
TL;DR: Flycast (on Knulli) looks for dreamcast_game.A1.bin, Grout looks for dreamcast_game.bin, like passing ships in the night
Potential solution would be to recognize the save file suffix as ".[A-D]1.bin" rather than ".bin". Unfortunately, I'm not familiar enough with go to put up a PR, at least at this time.
Just checked how Argosy is syncing dreamcast. It seems that it only take the A1 bin.
The B1/C1/D1 seems to be only blank cartridge. Knulli, Batocera and certainly more cfw set the option reicast_per_content_vmus="All VMUs", that's why the B1/C1/D1 are presents.
Should we do the same way as Argosy, in order to be compatible with the save sync ? @BrandonKowalski ?
Aaaaaand, because it was too simple
In some defautl retroarch configuration (like for example Spruce or MuOS), the reicast_per_content_vmus = "disabled" is set to disabled, so, retroarch or the standalone emu store the saves of all dreamcast game in a single file. In that case it'll be complicated to sync dreamcast save per game.
For now, I propose to only handle the saves that works like Argosy with the .A1.bin / _A1.bin. And just write in the docs this limitations
Activity
chedge commentedon Aug 30, 2026
Following up on this, it looks like the issue seems to actually be down to how it determines the save file name:
Grout tries to generate what it thinks the save file will be based on the rom filename, e.g. dreamcast_game.chd -> dreamcast_game.bin
However, Dreamcast emuators (at least Flycast) embed the VMU slot into the save file, so the actual save file is dreamcast_game.A1.chd, or in the case of Knulli, it generates 4 VMU save files (A1, B1, C1, D1) though only A1 seems to actually be populated.
Even if the save file is manually uploaded to Romm with the correct filename (dreamcast_game.A1.bin), when Grout downloads the save, it's rendered as dreamcast_game.bin, so Flycast never picks it up.
TL;DR: Flycast (on Knulli) looks for dreamcast_game.A1.bin, Grout looks for dreamcast_game.bin, like passing ships in the night
Potential solution would be to recognize the save file suffix as ".[A-D]1.bin" rather than ".bin". Unfortunately, I'm not familiar enough with go to put up a PR, at least at this time.
pawndev commentedon Oct 7, 2026
Just checked how Argosy is syncing dreamcast. It seems that it only take the A1 bin.
The B1/C1/D1 seems to be only blank cartridge. Knulli, Batocera and certainly more cfw set the option
reicast_per_content_vmus="All VMUs", that's why the B1/C1/D1 are presents.Should we do the same way as Argosy, in order to be compatible with the save sync ? @BrandonKowalski ?
sources:
pawndev commentedon Oct 7, 2026
And apparently in some versions of flycast, the game name is not present, like PSP game it's an ID
pawndev commentedon Oct 9, 2026
Aaaaaand, because it was too simple
In some defautl retroarch configuration (like for example Spruce or MuOS), the
reicast_per_content_vmus = "disabled"is set to disabled, so, retroarch or the standalone emu store the saves of all dreamcast game in a single file. In that case it'll be complicated to sync dreamcast save per game.For now, I propose to only handle the saves that works like Argosy with the .A1.bin / _A1.bin. And just write in the docs this limitations
pawndev commentedon Oct 10, 2026
Since RomM 5.3.0 there is another possibility, to sync an entire MemoryCard:
POST /api/memory-cardsfor card creationPOST /api/memory-cards/{id}/versionsfor card updateGET /api/memory-cards/{id}/contentfor card downloadGET /api/memory-cards?emulator={name}for card retrieval accross emulatorschedge commentedon Oct 18, 2026
Can confirm, this seems to be fixed now!