Analogue PocketでGB/GBC/GBAカートリッジを吸い出す「openFPGA-CartTools」アルファ公開

Analogue PocketでGB/GBC/GBAカートリッジを吸い出す「openFPGA-CartTools」アルファ公開

Kroy(kroy-the-rabbit)氏は8月28日、Analogue Pocket向けの非公式openFPGAプロジェクト「openFPGA-CartTools」の初となるアルファ版「v0.1.0-alpha.1」のtagを公開しました。

●openFPGA-CartTools
https://github.com/kroy-the-rabbit/openFPGA-CartTools

●v0.1.0-alpha.1
https://github.com/kroy-the-rabbit/openFPGA-CartTools/releases/tag/v0.1.0-alpha.1

本ツールの面白いところは、Analogue Pocketに備えられている実物のカートリッジスロットを利用して、ゲームボーイ(GB)、ゲームボーイカラー(GBC)、ゲームボーイアドバンス(GBA)のカートリッジを識別し、そのROMデータをSDカードに書き出せるところです。

つまりAnalogue Pocketを、ゲーム機やopenFPGA対応ハードとしてだけではなく、カートリッジダンパーとして利用する試みというわけです。なお、Analogueが提供している公式機能ではありません。

カートリッジを識別してSDカードに保存

「openFPGA-CartTools」は、Analogue Pocketのカートリッジスロットに装着されたGB/GBC/GBAカートリッジを判別し、読み出したデータをSDカードに保存するためのopenFPGAコアです。

出力されるファイルの拡張子は、それぞれ.gb.gbc.gbaとなっており、現在の実装では/Assets/carttools/common/以下にカートリッジタイトルを元にしたファイル名で保存されます。

吸い出し時にはGB/GBCとGBAの双方でCRC32を計算。GB/GBCについてはNintendoロゴやヘッダーチェックサム、グローバルチェックサムなどの確認も行われます。

またGBAの場合、ROM容量を示す情報がヘッダーに含まれていないため、バスのopen bus状態を利用してROMサイズを検出する仕組みが実装されています。開発者による実カートリッジを使った動作検証も行われています。

まだ一般利用者向けの完成品ではない

ただし、現時点では「openFPGA-CartToolsをダウンロードしてSDカードにコピーすれば使える」という段階ではありません。

GitHubで公開されている「v0.1.0-alpha.1」はtagで、GitHubが自動生成するソースコードのZIP/tar.gzは用意されていますが、Analogue Pocketでそのまま利用できるコンパイル済みbitstreamや、完成済みの配布パッケージは確認できません。

READMEでは、Quartusをコンテナ上で実行してビルドする手順が案内されており、make cartを実行することでbitstreamやSDカード用ファイル、ZIPなどを生成する仕組みになっています。そのため、現状では基本的に開発者や自分でビルド環境を用意できるユーザー向けと考えた方がよさそうです。

セーブデータやRTCにはまだ未対応

名称には「CartTools」とありますが、現在完成しているのは主にカートリッジの識別とROMの読み出し機能です。

セーブデータのバックアップと復元、MBC3のRTCへの対応はいずれも未着手となっています。また、MBC2やMBC3、一部容量のMBC1はシミュレーションのみで、GBAについても16MBを超えるカートリッジは未検証です。

ほかにも、同じタイトル名を持つカートリッジを続けて吸い出すと後から作成したファイルで上書きされることや、一部GBCカートリッジではメーカーコードがファイル名に含まれてしまうといった既知の問題があります。

さらに重要なのが、SDカードへ書き込んだファイルを再び読み戻して内容を照合する処理がまだ実装されていないことです。

開発者自身もアルファ版としている理由について、過去にはチェックを通過していたにもかかわらず破損していたダンプが存在したことを明らかにしています。その後の修正で正常な読み出しが確認されていますが、まだ信頼性が完全に確立された段階ではありません。

現状では実用品というよりも「Analogue PocketのカートリッジスロットをopenFPGAから直接利用すると、こんなことまでできる」という技術的な実証に近いプロジェクトです。

今後、セーブデータのバックアップや復元、RTC、読み戻しによる検証などが実装されていけば、Analogue Pocketだけで所有するGB/GBC/GBAカートリッジの管理を行える、かなりユニークなツールに発展する可能性がありそうです。

ABOUT US
アバター画像
retrogamer