Analogue Pocketをゲームボーイ(GB)、ゲームボーイカラー(GBC)、ゲームボーイアドバンス(GBA)のカートリッジ吸い出し機として利用する非公式openFPGAプロジェクト「openFPGA-CartTools」で、GBAカートリッジのセーブデータをバックアップする機能が実装されました。
●openFPGA-CartTools
https://github.com/kroy-the-rabbit/openfpga-carttools
Kroy(kroy-the-rabbit)氏が開発を進めているもので、2026年9月1日には64KiB Flashを採用する『Golden Sun(黄金の太陽)』と、32KiB SRAMを採用する『Metroid: Zero Mission(メトロイド ゼロミッション)』を使った実機検証にも成功。読み出したセーブデータを、それぞれのROMとともにmGBAへ読み込ませ、ゲーム内の状態を復元できることが確認されています。
当サイトが8月28日に本プロジェクトの初回アルファ版を紹介した時点では、セーブデータのバックアップと復元はいずれも「未着手」でした。それからわずか数日で、GB/GBCに加えてGBAのセーブデータについても実カートリッジでの読み出し確認まで進んだことになります。
GBAの64KiB Flashと32KiB SRAMを実機で確認
GBAのセーブデータバックアップ機能は、9月1日にまず32KiBのSRAM/FRAMを対象とした読み出し機能として実装されました。
GBAではカートリッジによってセーブ方式が異なるため、ROM内部に含まれるSDK由来の文字列を調べて、使用されているセーブ方式を判別する仕組みも追加されています。
その後、64KiB Flashについても、カートリッジへのコマンド書き込みを行わず、そのまま読み出せることが確認されたことから対応が追加されました。
実機検証では『Golden Sun』の64KiB Flashセーブを読み出し、作成された65536バイトのセーブファイルを対応するROMとともにmGBAへロード。ゲームの状態が正常に復元できたことが記録されています。
さらに、その後のコミットでは『Metroid: Zero Mission』を使った32KiB SRAMの実機検証にも成功しています。こちらもmGBAへ読み込ませ、保存されていたゲーム状態が正常に利用できることが確認されました。
これにより、現在のmainブランチではGBAについて、
- 64KiB Flash
- 32KiB SRAM/FRAM
のセーブデータバックアップが実機で確認された状態になっています。
カートリッジへのセーブデータ書き込みは行わない
今回実装されたGBAセーブバックアップで重要なのが、対応している64KiB Flashと32KiB SRAMの読み出しでは、セーブ領域へデータを書き込まない設計になっていることです。
『Golden Sun』の検証でも、64KiB Flashはコマンドを送らず通常の読み出しだけで内容を取得できることが確認されています。開発記録では、読み出し中にカートリッジへの書き込み信号を出していないことも確認されています。
一方で、すべてのGBAセーブ方式に対応したわけではありません。
128KiB Flashでは、後半のバンクへアクセスするためにバンク切り替えコマンドを書き込む必要があります。またEEPROMも、アドレスを指定して読み出すためにカートリッジ側への書き込み操作が必要です。
現在の「openFPGA-CartTools」では、こうした操作を必要とする128KiB FlashとEEPROMについては、誤って一部分だけをバックアップすることなどを防ぐため、対応せず拒否する仕様になっています。
8月28日時点ではセーブ機能そのものが未着手だった
当サイトでは8月28日、最初のアルファ版「v0.1.0-alpha.1」が公開された際に「openFPGA-CartTools」を紹介しています。当時利用できた主な機能は、GB/GBC/GBAカートリッジの識別やROMデータの吸い出し、CRC32の計算などでした。
一方でセーブデータのバックアップと復元、MBC3 RTCへの対応はいずれも未着手。またAnalogue Pocketへそのままコピーして利用できるコンパイル済みの配布パッケージも用意されていませんでした。そこからわずか数日で状況は大きく変化しています。
v0.9999ではインストール可能なZIPとGB/GBCセーブに対応
8月30日には、新たな配布版「v0.9999」が公開されました。こちらはAnalogue PocketのSDカードへコピーして利用するための配布物が用意されたバージョンで、GB/GBCのセーブデータバックアップ機能も追加されています。
Releaseでは、実カートリッジから32KBのセーブデータを読み出し、対応するROMとともにエミュレーターへロードして、ゲーム内の状態が正常に復元されたことが報告されています。
ただし開発者自身も、この段階では同じセーブデータを2回読み出して一致を確認する仕組みなどがまだ存在しないため、重要なデータを完全に信頼できるバックアップとして扱わないよう注意を促しています。
●openFPGA-CartTools v0.9999
https://github.com/kroy-the-rabbit/openfpga-carttools/releases/tag/v0.9999
GBAセーブ対応はまだv0.9999には入っていない
ここで注意したいのが、今回紹介しているGBAセーブバックアップ機能は、v0.9999の公開後に追加されたという点です。GitHub上では、v0.9999から現在のmainブランチまでに複数のコミットが追加されており、その中でGBAセーブの読み出し機能や実機検証が行われています。
そのため、記事執筆時点で配布されているv0.9999をインストールしただけでは、今回のGBAセーブバックアップ機能は利用できません。GBA対応を試すには現時点では更新されたソースから自分でビルドするか、GBAセーブ対応を含んだ次のReleaseが公開されるのを待つ必要があります。
セーブの復元やRTCなどは引き続き未実装
開発はかなりの速度で進んでいますが、まだ完成したカートリッジ管理ツールという段階ではありません。GBAでは前述した128KiB FlashとEEPROMが未対応。また、読み出したセーブデータを実カートリッジへ戻す「セーブ復元」機能そのものも未実装です。
GB/GBCについてもMBC3 RTCへの対応はまだ行われていません。さらに、SDカードへ保存したファイルを再び読み戻して、書き込み前のデータと一致しているか確認する機能も今後の課題として残されています。
セーブデータにはROMのような内容全体を確認できるチェックサムが存在しないため、現在の検証では実際に対応するROMとともにmGBAへ読み込ませ、ゲーム自身がセーブデータを正常に認識することを確認する方法が使われています。
8月28日の段階では「ROMを吸い出せるツール」だった「openFPGA-CartTools」ですが、数日でGB/GBCのセーブバックアップが加わり、さらにGBAの64KiB Flashと32KiB SRAMまで実機で読み出せるところまで進みました。
まだ対応していないセーブ方式や復元機能などは残されているものの、Analogue Pocketだけで実カートリッジからROMとセーブデータの両方を管理できるツールへ、一気に近づいてきたといえそうです。
※「openFPGA-CartTools」は個人によって開発されている非公式openFPGAプロジェクトであり、Analogueが提供する公式機能ではありません。
















ダンジョンズ&ドラゴンズ ビジュアル大全 半世紀を超えるその歴史とアート









ゲームコンソール2.0