Перейти к содержимому
PS5PCEM
РаботаетПрошивка и HLE

Savedata

Смонтированный слот сохранения становится записываемым /savedata0. Игра пользуется обычным файловым API, а следующий запуск находит те же файлы под кодом продукта, который публикует игра.

Заметки репозитория по 10 октября 2026 г.

Где живёт сохранение

Установка игры доступна только для чтения, может лежать на съёмном носителе и при патче заменяется целиком. Сохранение должно пережить все три случая. PS5PCEM хранит слоты в savedata/<titleId>/<slot>/ под домашним каталогом эмулятора, с ключом по коду продукта, который сообщает игра. Два дампа одной игры делят сохранения. Две разные игры — нет.

Имя слота приходит от гостя и очищается, прежде чем стать каталогом. Разделители, двоеточие диска и ссылки на родительский каталог становятся подчёркиваниями. Если эти символы просто отбросить, два разных имени схлопнутся в один каталог. Имя, которое вообще не может быть каталогом, откатывается к фиксированному имени, потому что потерять сохранение хуже, чем положить его в предсказуемое место.

Монтирование и проверки существования

Монтирование разрешает слот и направляет на него /savedata0. Отсутствующий слот создаётся только если игра этого попросила. Проба сохранения, которое игра никогда не писала, даёт результат отсутствия: именно этого ждёт игра. Всё, что шло вместе с игрой, остаётся только для чтения. Монтирование сохранения — это место для записи.

Существование отвечает путь метаданных, а не открытие файла. Монтирование, которое удавалось только в момент открытия, заставляло каждую проверку существования проваливаться, и Jets 'n' Guns 2 из-за этого переписывала профиль при каждом запуске. Перечень слотов, которые игра записала, тоже возвращается. Монтирование также сообщает, открыло ли оно существующее сохранение или создало новое. Блочный API сохранений использует отдельный блоб на игру в sce_sdmemory: он загружается, когда игра его резервирует, и записывается, когда игра просит синхронизацию.

Неполные слоты

Поиск при запуске скрывает прерванные слоты, в которых только метаданные прошивки или пустые промежуточные файлы. У Cat Quest III воспроизводился слот настроек, где был только path.txt. Затем игра падала на отсутствующем Data.dat и ждала бесконечно после стартового кадра. Теперь поиск пропускает этот неполный слот и идёт дальше.

Лаунчер группирует каждый локальный слот по идентификатору игры на странице сохранений, включая сохранения, записанные плиткой другой библиотеки. Сборка разработки под zig-out разрешает домашний каталог эмулятора в корень репозитория. Упакованная сборка использует собственный каталог. Поэтому запуски одного пакета из командной строки и из лаунчера делят один корень сохранений.

Что реализовано

  • Записываемые монтирования /savedata0 с ключом по идентификатору игры и очищенными именами слотов.
  • Проверки существования, перечень слотов и сообщение о том, создало ли монтирование сохранение.
  • Блоб sce_sdmemory на игру для блочного API сохранений.
  • Скрытие прерванных слотов, в которых нет настоящей полезной нагрузки сохранения.

Чего ещё нет

  • Сохранения — это каталоги хоста. Диалог данных сохранения консоли и облачная синхронизация не показываются.
  • Слот, который игра не просила создать, сообщается как отсутствующий.
  • Трофеи, активности и другие записи, привязанные к учётной записи, лежат вне этого монтирования.

Связанные механизмы

Чему посвящены эти страницы

Текст следует архитектурным заметкам и отчётам октября 2026 года в репозитории PS5PCEM. Пройденный точечный тест — это не новая частота кадров и не новое прохождение.

Все технологии