マルチブートとは、カードリッジの入っていない状態でプログラムを動かす仕組みのことです。元々はカードリッジの持っていない友達と対戦ゲームをすることを想定していたように思います。そう考えると大昔、初代ゲームボーイのテトリス対戦はかなり白熱していたことでしょう。今では対戦のため、というより自作プログラムを単体で動かすという趣旨に代わってきてるように思います。解析が進みプラットフォームも多様化を極めておりぶっちゃけますと5v or 3.3vとGPIO出来ればなんでも動きます。
IoTの覇者とえいばraspberry pi。情報も豊富で使い方は様々、売上台数は累計4,600万台(2022年2月28日時点)とのことです(因みにGBAは世界で8,151万台)。世界に対して売りさばいているシングルボードコンピュータでこの分野に叶う相手はそうそういないでしょう。まだ使ったことのない方(特に学生さん)がもしいらっしゃるのでしたら早めに触っておくことをお勧めします。
通信ケーブルについてはAGB-005以外でも問題ないです。ポイントはGBAのシリアルポートに刺さるコネクタ部品と、そこから伸びている4本の線がmbedとspi通信できれば大丈夫です。配線は以下のとおり。左がGBA本体、右がケーブルプラグの拡大写真となっています。
GBA --- raspberry pi b+ 6-GND GND 3-SI GPIO 10 (SPI_MOSI) 2-SO GPIO 9 (SPI_MISO) 5-SC GPIO 11 (SPI_SCLK)
ケーブルが完成したら次はプログラムです。ここではコンパイル環境、GPIO使用可能状態、wiringPiライブラリが導入済みであることを想定して書いています。https://github.com/akkera102/gba_01_multibootにアクセスします。画面中央の緑色アイコンの「code」をクリックしてDownload ZIPしてください。
解凍後、以下のコマンドでコンパイルします。
$ gcc multiboot.c -lwiringPi -o multiboot
実行前にケーブルを接続してGBAをONにします。初代GBAの場合はRボタンを押しつつON、そのあとはSTARTとSELECTボタンを同時押しします。
$ ./multiboot
実行ファイルを起動すれば上記の製作例のように画像ファイルが表示されます。ちなみに仕様的な話をすると、どうも通信はspiが16bit単位であり、モード3でないとダメっぽいようです。
Can you modify a GBA link cable to connect to a COM serial port to support multiboot? There are many reasons you can't easily do this. The first reason is that a standard serial COM port uses 1/8/1 format but GBA multiplayer / multiboot link mode uses 1/16/1 format. (format = Start bit/Data Bits/Stop Bit)
需要があるかわかりませんけれどmbedバージョンもあります。