Doc.9 マルチブート

マルチブートとは、カードリッジの入っていない状態でプログラムを動かす仕組みのことです。元々はカードリッジの持っていない友達と対戦ゲームをすることを想定していたように思います。そう考えると大昔、初代ゲームボーイのテトリス対戦はかなり白熱していたことでしょう。今では対戦のため、というより自作プログラムを単体で動かすという趣旨に代わってきてるように思います。解析が進みプラットフォームも多様化を極めておりぶっちゃけますと3.3vでGPIO出来ればなんでも動きます。

raspberry pi

IoTの覇者とえいばraspberry pi。情報も豊富で使い方は様々、売上台数は累計4,600万台(2022年2月28日時点)とのことです(因みにGBAは世界で8,151万台)。世界に対して売りさばいているシングルボードコンピュータでこの分野に叶う相手はそうそういないでしょう。まだ使ったことのない方(特に学生さん)がもしいらっしゃるのでしたら早めに触っておくことをお勧めします。ここではセットアップの説明を大幅に省略してraspberry pi上のコンパイル環境やwiringPiライブラリが導入済みであることを想定して書いています。

用意するもの

通信ケーブル製作

通信ケーブルについてはAGB-005以外でも問題ないです。ポイントはGBAのシリアルポートに刺さるコネクタ部品と、そこから伸びている4本の線がmbedとspi通信できれば大丈夫です。配線は以下のとおり。

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)
1.png

製作例

2.png
3.png

使い方

mbed

#ref(): File not found: "clip_1.png" at page "doc.9"

左がGBA本体、右がケーブルプラグの拡大写真となっています。ちなみにspi通信が16bit単位であり、モード3でないとダメっぽいです。

Dev'rs GBA Dev FAQs

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)

Raspberry pi

mbedのコードを流用して作りました。
セーブデータのバックアップ、リストアにも対応しています。
https://github.com/akkera102/gba_01_multiboot

Arudino

Arudinoでも動作報告を頂きました(thanks kos-さん!)。
インターネットアーカイブからの発掘でしたので検索に引っかからず?
ロストテクノロジー寸前だったかもしれないです。

簡単な流れは以下のとおりとなっています。

GBA --- Arudino --- Linux PC(or Raspberry pi)

ソースコードはArudinoと、Linux PC用の2つがあります。

履歴


トップ   一覧 検索 最終更新   ヘルプ   最終更新のRSS