N-EMU · レトロゲームエミュレーターv1.10.1
開発の話投稿日 thorv1.2.0

プレイ中にゲーム内セーブを記録する

ゲーム内のセーブは、バックグラウンドへの移行時やゲーム終了時にしかファイルへ記録されていませんでした。1.2.0からは、最後の変化から1秒間変わらなければ記録します。

クローズドベータテスト

ゲーム内でセーブすると、その内容はまずエミュレーターのメモリに残ります。1.1.2までは、アプリがバックグラウンドへ移るときかゲームを終了するときにだけ、このメモリをファイルへ移していました。その間にアプリが止まったり、システムがアプリを終了したり、バッテリーが切れたりすると、最後の切り替え以降のセーブはすべて失われていました。

GBとGBAはさらに不利でした。mGBAは開いたままのセーブファイルに直接書き込みますが、アプリがそのファイルを新しいファイルに差し替えた後も、すでに削除された古いファイルに書き続けていました。そのため最初にバックグラウンドへ移った後は、これらの機種でも次の切り替えまでゲーム内セーブがファイルに届きませんでした。

1.2.0では、各コアにセーブメモリが変わったかを0.5秒ごとに確認します。変化のあと1秒間それ以上変わらなければ、その時点でファイルに記録します。ゲームは1回のセーブを複数のフレームに分けて書くことがあり、変化のたびに記録すると書き込みが増え、書きかけのセーブがファイルに残るおそれがあるためです。一時停止メニューを開いたときは待たずにすぐ記録します。

ファイルの書き方は以前と同じです。まず一時ファイルに書き、まとめて差し替えるので、書き込みの途中でアプリが止まっても前のセーブは残ります。書き込むのはゲームがセーブしたときだけで、毎フレーム書くことはありません。PPSSPPはメモリースティックのフォルダに自分で書き込むため、これまでどおりです。

セーブしてから1秒以内にアプリが止まると、そのセーブは今でも失われることがあります。実機でゲーム中にアプリを強制終了したあとにセーブが残るかは、まだ確認していません。

  1. 開発の話v1.0.7クローズドベータテスト

    他のエミュレータのセーブを取り込めるように

    DeltaのDSセーブを取り込めないという報告がありました。ファイル形式だけでなく、N-EMUの取り込みが受け付けるファイルも確認する必要がありました。

  2. 開発の話v0.4.2初期開発

    違うステートを読み込んだとき

    古いステートを間違えて読み込んでも、直前まで遊んでいた状態に戻れるよう、読み込みの取り消しを加えました。

一覧に戻る対応機種と機能