他のエミュレータのセーブを取り込めるように
DeltaのDSセーブを取り込めないという報告がありました。ファイル形式だけでなく、N-EMUの取り込みが受け付けるファイルも確認する必要がありました。
Deltaを使っていた方から、N-EMUにDSのセーブを取り込めないと教えていただきました。
まず保存形式を確認しました。N-EMUのDSコアはmelonDSです。取り込もうとした.dsvファイルはDeSmuME形式で、N-EMUの保存ファイルとは拡張子や末尾に付く情報が異なっていました。
取り込み機能にも制約がありました。N-EMUのバックアップにしか対応せず、他のアプリのゲーム内セーブを直接取り込めませんでした。保存先はアプリ専用領域なので、利用者が手動で移すのも困難です。これはDS以外の機種でも同じでした。
DeSmuMEの.dsvファイルはゲーム内セーブの後ろに40バイトの付加情報を持ちます。これを確認して除くと、N-EMUで読める保存データになります。
別の変換ツールを使わずに済むよう、取り込み時に形式を判定するようにしました。DeSmuMEの付加情報があれば検証して除き、通常の保存ファイルはそのまま読みます。
取り込み時にはファイルサイズが対応範囲内かも確認し、不適合なファイルは受け付けません。スーパーファミコンとPSPは複数ファイルで保存するため、単一ファイルでは復元できず、今回は対象外です。
対応する機種と形式なら、他のエミュレータのゲーム内セーブを取り込んで続きを遊べます。実際に使った方の報告が、取り込み機能の改善につながりました。ご報告ありがとうございました。
あわせて読みたい開発の話
- 開発の話v0.9.5アルファテスト
アカウントなしでセーブを移す
複数ゲームのセーブと設定を1つのファイルにまとめ、既存データを変更する前に確認できるようにしました。
- 開発の話v0.5.1初期開発
セーブデータをファイルで保管
Google Driveを接続しなくても、セーブデータを書き出して保管したり、別の端末に移したりできます。