Changelog
0.6.0 — 17 September 2026
Guides and manuals on the lower screen, an app drawer that opens anything on it, and the save sync
rebuilt around what the RomM server says rather than what a timestamp implies.
Guides and manuals
- A guide hub on the lower screen, reached with the same swipe as achievements — which now
cycles: game details, achievements, guides, back round. It works while a game is running,
which is the whole point: a guide you have to quit the game to read is one you don't read. - Attach your own files to a game from its options popup → Guides: PDF, plain text, HTML, CBZ or
images. They stay where they are on disk and stay readable with no connection; nothing is copied
into the app. - Look one up online — GameFAQs, Neoseeker, StrategyWiki, manual and web searches, each opening
already asking about the right game, from the lower screen or the popup. - Save the page you are reading and it joins that game's list for offline. A guide that is one
big block of preformatted text — which is what a GameFAQs walkthrough is — is kept as plain text,
so it reads in the monospaced face those guides are drawn for, without the page around it. - A guide reopens where you left it: the page for a PDF or CBZ, the line for a text guide, the
scroll position for an HTML one. - PDFs use Android's own renderer and CBZ is read as a zip, so none of this made the download bigger.
The lower screen
- An app drawer in the bottom-left corner of every lower-screen view. Open any installed app
on that screen — a browser, a chat client, notes — with the game untouched on the other one.
The DS grid had no controls there at all before. - The lower screen dims to ten percent while a boot video plays and comes back afterwards. Real
hardware goes dark on boot, and a lit panel beside the video pulls the eye off it.
RetroAchievements
- Reachable while a game is running, not only while browsing.
- The grid was rebuilt: the game's own logo behind it at a tenth opacity, the RetroAchievements
wordmark, points earned against the total, and a progress bar — "12 / 40" made you do the
arithmetic yourself. Unlocked achievements sort first, and an earned badge gets a gold edge.
Save sync
- The server decides now, not a timestamp. Sync goes through RomM's own negotiation endpoint,
which is authoritative on whether a save can be uploaded safely or is in conflict. Recommended by
the RomM team, and it replaces a date comparison that could not see a conflict at all. - Fixed: a save state could be overwritten by a battery save. Remote saves were matched on slot
or emulator, and an emulator's save and state folders share a name — so an uploaded.srm
became a candidate for the matching.state, and being newer on the server, replaced it. It then
reported "in sync" forever. No malicious server needed; it could happen on a first sync. - Fixed: a replaced save is swapped in atomically. The old path deleted the target and then
streamed into it, so a failure partway — no space, card pulled, the process killed as a game exits
— left a truncated save where a working one had been, and the error path then deleted the
downloaded copy as well. - Fixed: the server could send the app to a different host, with your API token. A save's
download path is supplied by the server and was used as-is, so a compromised or hostile instance
could name any address, receive the bearer token, and choose the bytes written into a save file.
Every URL is now resolved against the configured server and refused unless the scheme, host and
port match it. - Systems whose saves aren't one file per game are held back. PlayStation and PS2 memory cards
hold many games in one file, GameCube names saves by an internal game code, PSP and Cemu keep a
folder per title. Matching those by filename risks overwriting saves this device never sent, so
they are detected and listed with the reason rather than synced. Proper whole-card sync is what
RomM 5.3.0 adds. - Save sync needs RomM 5.0.0 or newer — the device endpoint it registers with does not exist
before that.
Keyboard
- The on-screen keyboard has a cursor. You could only ever delete from the end, so a typo in the
middle of a long name meant deleting everything after it and typing it again. L1 and R1 move it,
and ◀ ▶ are on the board too.
Also
- The hide-game control in the game popup says "Hide this game" instead of being a bare checkbox.
- The project was reorganised: theme modules moved under
themes/, and the repository gained a
README, contributing and architecture notes.