4 Commits

Author SHA1 Message Date
Danshet f163c1bb39 Only quarantine content when an interrupted write had a commit in flight
The write-in-progress marker was binary. If it is present then it meant quarantine, so a death in the sliver after the last commit, or an antivirus silently blocking the marker's deletion, would quarantine a perfectly consistent save. The marker now records a phase: before any commit rename has run, every file is still its old version, so a stale "writing" marker is cleared and the save kept. Only "committing", the one state where a mixed old/new set is possible, still quarantines. A blocked deletion is retried, then relabeled, loudly.
2026-08-17 21:33:39 +02:00
Danshet 7117b5b24a Make save and content writes atomic so an interrupted write cannot corrupt data
Overwriting a file through the content device used to delete the old file before the first new byte was written, so a crash or kill mid-save destroyed the existing data. A failed first-time save then left a half-written file the game reported as corrupted until it was deleted by hand. Writes now go to a temp file and commit by rename on close, keeping one .bak generation of the previous version. An interrupted write leaves the old data untouched, and a startup sweep resolves any write that died between the commit steps.
2026-08-17 21:18:49 +02:00
Dipshet 9b81d7b7e6 Mount the game from a .iso and DLC from raw containers directly
The game now mounts straight from a .iso beside the exe (selected by
title id; the assets folder still wins, and loose files layer over the
image so mods need no extraction), and DLC mounts straight from raw
STFS containers in a dlc folder, any layout, title updates ignored.
Disc image device ported from Xenia (BSD); one log line per source.
2026-08-06 02:37:42 +02:00
salh ddf7c28587 Initial barebones version 2026-04-17 20:09:41 +03:00