存档
挂载后的存档位成为可写的 /savedata0。游戏使用普通文件 API,下次启动会在游戏所公布的产品代码下找到同一批文件。
仓库笔记截至 2026年10月10日
存档放在哪里
游戏安装是只读的,可以放在可移动介质上,打补丁时会被整体替换。存档必须比这三种情况都活得更久。PS5PCEM 把存档位放在模拟器主目录下的 savedata/<titleId>/<slot>/,以游戏报告的产品代码为键。同一游戏的两份转储共享存档。两款不同的游戏则不共享。
存档位名称来自客户机,成为目录之前会先净化。分隔符、驱动器冒号和上级目录链接都变成下划线。若直接丢掉这些字符,两个不同的名称会塌到同一个目录。完全不能作为目录的名称会退回一个固定名称,因为丢掉存档比放到可预测的位置更糟。
挂载与存在性检查
挂载会解析存档位,并把 /savedata0 指向它。只有游戏要求创建时,才会创建缺失的存档位。探测一个游戏从未写过的存档会得到缺失结果,这正是游戏所期望的。随游戏发行的一切保持只读。存档挂载才是可写的地方。
存在性依据元数据路径回答,而不是靠打开文件。若挂载只在打开时才算成功,每一次存在性检查都会失败,Jets 'n' Guns 2 因此在每次启动时重写自己的配置。游戏已经写过的存档位也可以列出。挂载还会报告它打开的是已有存档,还是新建了一个。块状存档 API 使用 sce_sdmemory 下按游戏分开的数据块,在游戏预留时加载,在游戏要求同步时写回。
不完整的存档位
启动时的发现会藏起那些被中断的存档位,它们只含固件元数据或空的暂存文件。Cat Quest III 有一条已复现的、只有 path.txt 的设置存档位。游戏随后因缺少 Data.dat 而失败,并在启动帧之后永远等待。现在搜索会跳过这个不完整的存档位并继续。
启动器在存档页按 title ID 分组每一个本地存档位,包括另一个库磁贴写下的存档。zig-out 下的开发版本把模拟器主目录解析到仓库根。打包版本使用自己的目录。因此同一安装包的命令行启动和启动器启动共享一个存档根。
已经实现的部分
- 按 title ID 区分的可写 /savedata0 挂载,存档位名称经过净化。
- 存在性检查、存档位列表,以及挂载是否创建了存档的报告。
- 供块状存档 API 使用的、按游戏分开的 sce_sdmemory 数据块。
- 藏起不含真实存档载荷的被中断存档位。
尚未实现的部分
- 存档是主机目录。游戏机的存档对话框和云同步不会呈现。
- 游戏没有要求创建的存档位会被报告为缺失。
- 奖杯、活动以及其他由账号支撑的记录不在这个挂载之内。
相关机制
这些页面说明什么