他のエミュレータのセーブに対応する
Deltaを使っている方から、セーブが取り込めないと教わりました。形式の問題かと思いましたが、取り込みがN-EMUの作ったファイルしか受け取っていませんでした。
Deltaを使っていた方がN-EMUを試して教えてくれました。ニンテンドーDSのセーブを取り込みたいのにできない、と。
最初は形式の問題に見えました。DeltaはDeSmuMEというコアを使い、N-EMUはmelonDSを使います。ファイルの拡張子からして違います。
しかし調べてみると、問題はもっと奥にありました。他のアプリが書いたセーブを置く場所がそもそもありませんでした。取り込みはN-EMUが作ったバックアップファイルしか受け取らず、セーブはアプリ専用の場所にゲームごとに別の名前で入っているため、手で移すこともできません。ニンテンドーDSだけでなく他の機種も同じでした。
形式の違いは思ったより小さいものでした。二つのファイルを開くと前半は同じで、DeSmuMEが後ろに40バイトを足しているだけです。その40バイトを外せばそのまま読めます。
そこで変換ツールは別に作りませんでした。「まず変換してください」と言う代わりに、取り込みがファイルを見て自分で判断します。付いていれば外し、なければそのまま入れます。
ただし何でも受け取るわけではありません。セーブは大きさが決まっていて、その大きさでなければ断ります。ゲームファイルや写真を間違えて選ぶとその場で止まります。セーブデータを複数のファイルに分けるスーパーファミコンとPSPは、一つのファイルではどれなのか分からないのでまだ受け取りません。
他のエミュレータを使っていた方がN-EMUに移ってきても、セーブをそのまま持ち込んで、続きからプレイできます。教えてくださった方のおかげで、思いもしなかった問題を見つけて直すことができました。ありがとうございます。
あわせて読みたい開発の話
- 開発の話v0.9.5アルファテスト
アカウントなしでセーブを移す
複数ゲームのセーブと設定を1つのファイルにまとめ、既存データを変更する前に確認できるようにしました。
- 開発の話v0.5.1初期開発
セーブデータをファイルで保管
Google Driveを接続しなくても、セーブデータを書き出して保管したり、別の端末に移したりできます。