GBAエミュレータのセーブエラーをFlash 128Kで直す方法
iGBAでGBAのゲームがセーブ失敗を出すとき、原因はほぼ決まっている。本来128Kのフラッシュチップを使うゲームが、半分の64Kで動いている。iGBA 2.14.0以降にすれば、自動がゲームファイル自体から正しいサイズを読む。それでも直らなければ、設定 → セーブでFlash memory sizeをフラッシュ 128Kにして、ゲームを開き直す。
まず試すこと
- App StoreでiGBAを更新する。2.14.0でセーブメモリの判定方法が変わり、この種のエラーはほとんど消える。
- 設定 → セーブを開き、Flash memory sizeを見る。最初は自動のままにしておく。
- ゲームを完全に閉じて、もう一度開く。下に「次回起動時から適用」と出ているのは本当の意味で、プレイ中に変えても何も起きない。
- ゲーム自体のメニューでセーブする。まだ失敗するなら、戻ってフラッシュ 128Kを選び、開き直してもう一度セーブする。
一部のGBAゲームが128Kのセーブメモリを必要とする理由
GBAのカートリッジはSRAM、EEPROM、フラッシュのいずれかにセーブしていた。大きいフラッシュチップは64Kのバンク2つで128Kになり、ゲームはコマンドでバンクを切り替える。
そのゲームに64Kチップを与えると、バンク切り替えは行き場を失う。書き込みは1バンク目の上に重なり、ゲームが確認のため読み返すと別のデータが出てくる。そこで自分でセーブエラーを出す。「バックアップメモリに異常があります」のような表示はここから来る。実機では、ゲームにとってそれがカートリッジ側の異常としか説明できなかったからだ。
タイミングの話もややこしくて、しばらく混乱した。序盤のセーブは1バンク目に収まるので、数時間は何の問題もなく動く。エラーが出るのは、ゲームが初めて2バンク目にあたる記録を書き込んだとき。ストーリーの後半であることが多い。
2.14.0より前、iGBAが128Kを使ったのはゲームが内蔵リストに載っている場合と、ディスク上の.savファイルがすでに131,072バイトある場合だけだった。ファンメイドのハック作品や一部の地域版はそこから外れて64Kで動いていた。2.14.0以降、自動はゲームファイル自身が示すフラッシュの種類を読み、128Kと示すゲームでは手動で強制した64K設定も無視される。
今どちらで動いているか確認する
推測しなくていい。セーブに失敗するゲームを開き、設定 → セーブでフラッシュ設定の下にあるSave diagnosticsまでスクロールする。ゲームを開いていないと、まず開くようにとだけ表示される。
重要な行は2つ。core:で始まる行(エミュレータが実際に使っているチップ)と、file:で始まる行(.savファイルのサイズ)。
| 表示 | 意味 | 対処 |
|---|---|---|
core: flash 128Kで131072バイトのファイル | メモリは正しい | それでも失敗するなら、セーブ自体が壊れている。次の節を見る |
終盤で失敗するゲームでcore: flash 64K | 半分のメモリで動いている | 2.14.0以降なら自動、それ以外はフラッシュ 128Kにしてゲームを開き直す |
| 128Kのカートリッジに64Kのファイル | 過去のセッションが64Kでセーブした | そのセーブの半分は一度も書き込まれていない。古いコピーを復元する |
file: no .sav on disk yet | このゲームは一度もセーブしていない | ゲームのメニューで一度セーブしてから、もう一度確認する |
このパネルは読むだけで、自分でコピーしない限りどこにも送られない。こちらに相談するときは、このテキストを貼るのが一番役に立つ。
GBAエミュレータのセーブファイルが壊れた場合に古いセーブを戻す
ここからは気の重い話になる。64Kで動いている間にゲームがすでにセーブを書いてしまった場合、設定を変えてもそのファイルは直らない。設定が決めるのはこれから先のセーブの書き方であって、一度ファイルに届かなかったデータを作り直すことはできない。
やさしい方法から最後の手段まで順に:
- ポーズメニューのゲーム内セーブの回復は自動ロード前のセーブを戻す。iGBAがそのコピーを持っていたときだけ表示されるので、出てこなければ存在しない。
- エラー前のセーブステートをセーブステートからロードし、正しいメモリサイズのままゲーム自体のメニューでセーブし直す。2.14.0では、古いステートでもゲームが必要とするサイズでロードされ、作成時の64Kにはならない。
- 設定 → Backupで作ったバックアップ。復元すると同じ名前のセーブは上書きされるので、先に今のセーブをエクスポートしておく。
- ポーズメニューの再起動とセーブのロードは自動セーブを飛ばして.savから直接起動する。自動セーブ側がおかしいと思うときに使う。
この問題でのセーブとセーブステートの違い
セーブステートは本体全体を丸ごと止めるので、ゲーム自体のセーブのようには失敗しない。だからセーブをやめてステートだけで済ませたくなるが、それは勧めない。エクスポートしたりバックアップしたり他の人と共有したりするのはゲーム自体の.savであって、壊れたものは壊れたままステートの下に居続ける。
他のエミュレータから.savを取り込む
ゲームライブラリーの⋯メニューにあるインポート.savは、対応するゲームにセーブを当てはめる。まずサイズを確認すること。128Kのゲーム用のセーブなら131,072バイトあるはず。他のエミュレータ側が65,536バイトしか書いていなかったなら、そちら側もすでに半分のメモリで動いていた。iGBAはそのゲームを128Kで動かすが、ファイルに元からない半分は作り直せない。
iGBAにゲームは付属しない。自分が所有する権利のあるゲームファイルのみ使うこと。
よくある質問
なぜセーブエラーがストーリーの後半になって出るのか?
フラッシュ 128Kは常にオンにしておくべき?
フラッシュ 128Kで、すでに壊れたセーブは直る?
このフラッシュ設定はGBCのゲームにも関係する?
iGBA のその他のガイド
- GBAエミュレーターでセーブステートを保存・読み込む方法
- GBAエミュレーターのミスの巻き戻しと倍速の方法
- GBAやGBCエミュレーターでのチートコードの使い方
- GBA通信ケーブルを近くでもオンラインでも使う方法、iPhone1台で自分と交換する方法
- iPhoneのGBAエミュレーターでXboxやPS5のコントローラーを使う方法
- Apple WatchでGBAやGBCのゲームをプレイする方法
- 機種変更や再インストール前にGBAセーブファイルをバックアップする方法
- GBAのセーブをiPhoneとAndroidのあいだで引き継ぐ方法
- GBAエミュレーターが黒い画面になったら確認する順番
- iPhoneやiPadでGBAファイルを開く方法
- iPhoneのiGBAでROMにパッチを当て、ハックを遊ぶ方法
- iPhoneでRadical Redを遊ぶ方法 パッチからセーブまで
- iPhoneでUnboundを遊んで、前のセーブも持ってくる
- ROMハックが白画面になる 悪いパッチの症状と直し方
- iGBA に関するすべての質問
- iGBA に戻る