mattials
日本語
iGBA

GBAエミュレータのセーブエラーをFlash 128Kで直す方法

iGBAでGBAのゲームがセーブ失敗を出すとき、原因はほぼ決まっている。本来128Kのフラッシュチップを使うゲームが、半分の64Kで動いている。iGBA 2.14.0以降にすれば、自動がゲームファイル自体から正しいサイズを読む。それでも直らなければ、設定 → セーブでFlash memory sizeをフラッシュ 128Kにして、ゲームを開き直す。

6 分で読めます · 更新日 2026-09-26

App Store からダウンロード Google Play で手に入れよう ★ 4.4 (2,692)

まず試すこと

  1. App StoreでiGBAを更新する。2.14.0でセーブメモリの判定方法が変わり、この種のエラーはほとんど消える。
  2. 設定 → セーブを開き、Flash memory sizeを見る。最初は自動のままにしておく。
  3. ゲームを完全に閉じて、もう一度開く。下に「次回起動時から適用」と出ているのは本当の意味で、プレイ中に変えても何も起きない。
  4. ゲーム自体のメニューでセーブする。まだ失敗するなら、戻ってフラッシュ 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ファイルのサイズ)。

Save diagnosticsパネルの読み方
表示意味対処
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にゲームは付属しない。自分が所有する権利のあるゲームファイルのみ使うこと。

よくある質問

なぜセーブエラーがストーリーの後半になって出るのか?
序盤のセーブはフラッシュチップの1バンク目(64K)に収まる。エラーが出始めるのは、ゲームが初めて2バンク目に書き込むときで、64Kチップでは1バンク目の上に重なってしまう。これは数時間後になることもある。
フラッシュ 128Kは常にオンにしておくべき?
いいえ。iGBA 2.14.0以降なら自動がゲームファイルから128Kを判定する。手動設定は全ゲームに適用され、本当に64Kのゲームもあるので、該当ゲームがセーブできたら自動に戻す。
フラッシュ 128Kで、すでに壊れたセーブは直る?
直らない。この設定が変えるのは次回以降のセーブの書き方だけ。64Kで書かれたセーブはデータの半分が欠けている。ゲーム内セーブの回復、エラー前のセーブステート、またはバックアップから古いコピーを戻すこと。
このフラッシュ設定はGBCのゲームにも関係する?
関係しない。Flash memory sizeはGBAの設定。GBCのゲームは自分のセーブ方式を使い続け、この設定の影響を受けない。

iGBA のその他のガイド