ブートチップとは?


上のポケモンカセットには1Mbit FLASH
下の黄金の太陽には512Kbit FLASHが使われている

RPGなどの市販のゲームカセットにはデータセーブ用のセーブデバイスが搭載されています。
最近ではセーブの項目も増加しているためか、このセーブデバイスも大容量化されています。ポケットモンスターでは実に1Mbit(128Kbyte)ものセーブデータが保存できるフラッシュメモリーが搭載されています。
このセーブデバイスにユーザの作ったプログラムを書き込んで実行させるための仕組みがブートチップです。
遊び終わったゲームカセットを自分だけのオリジナルカセットに変えることが出来ます。

こんなことが出来る!


PocketNES+初期のファミコンゲーム2本で約120Kbyteです。
バックアップデバイスに書き込むイメージはThingyなどの結合ツールで作成。
ポケモンのカセットに書き込んだプログラムをGBAに内蔵させたブートチップで起動させている。


ブートチップはGBA本体に組み込まないで外付けで使用することも出来る。


もちろん自作ゲームも動かすことが出来ます。
右側はTeamKNOxの作成しているBONSAI-WAREのリバーシです。
(自作ゲームを動かすのがブートチップの本命です)


仕組みについて

GBAには256KbyteのワークRAMが搭載されています。ブートチップはゲームカセットのバックアップデバイス(SRAM、512K FLASH、1M FLASH)からこのワークRAMに転送してプログラムを起動します。
GBAには通信ケーブルを介して別のGBAにプログラムを転送する機能(通称マルチブート)と呼ばれる機能があります。
ブートチップはGBAの通信ポートに接続され、GBAに対してバックアップデバイスに存在するプログラムを起動するための小さなプログラムを送信します。
GBAはブートチップを通信ケーブルを介して接続された親のGBAと勘違いしてこのプログラムを起動します。
ブートチップ自体は無効な状態(GBAの電源投入時にRボタンを押さないとき)や、ブート完了後は全てのI/Oポートを入力状態に保ってパワーダウンモードに入ります。このときの消費電力は1uA以下になりますので電池寿命を含めGBAに悪影響を与えません。
ブートチップが対応しているバックアップデバイスはSRAM、FLASHです。今のところポケモンのカセットに搭載される1MBitのフラッシュが最大の容量になります。

ブートチップで使用するワンチップマイコンのAVRのTINY12Lと4.19MHzのセラロック。
ATINY12Lはプログラムエリアは1Kbyteで低電圧動作可能。

製作

注意:このページの製作手順はゲームボーイアドバンスを対象としたもので、アドバンスSPでの本体への組み込みは検証しておりません。(ブートチップ自体がアドバンスSPで動作することは確認しています。)
ブートチップの製作にはプログラム済みのAVRマイコンTINY12Lを入手する必要があります。
残念ながらTINY12LというチップはAVRがPICほどメジャーではないためか、秋葉原などでは入手できないようです。(セラロックは秋葉の秋月で売っています)
またチップにプログラムを書き込むためには専用のライターを作る必要があります。ライターの製作はChanNさんが公開されていますのでそちらを参考にしてください。
ライタを使って書き込むバイナリはここに置いておきます。(直リンク・無断転載禁止)
(現在ブートチップのバイナリ公開は見合わせております。いずれ再開するかもしれません。)
手間を省きたいという方のためにキット(1500円)もオプティマイズ パーツショップで扱っています。

ブートチップキット
(プログラム済みTINY12L、セラロック(4.19MHz)、半田、配線ワイヤー)

本体に組み込む

注意:このページの製作手順はゲームボーイアドバンスを対象としたもので、アドバンスSPでの本体への組み込みは検証しておりません。(ブートチップ自体がアドバンスSPで動作することは確認しています。)

GBA本体にブートチップを組み込んで使用するのが簡単で手軽です。
本体にはY字の特殊なねじが使用されているので、このねじを回すY字ドライバーが必要です。
秋葉原や大きなホームセンタであれば置いてあると思いますので探してみてください。(要望があればパーツショップでも扱います)
(1)

これがY字ねじ

(2)

セラロックの真ん中の足(GND)を曲げる

(3)

チップの足に半田を盛っておく

(4)

セラロックをチップに乗せて半田付けする
(チップの向きに注意! 上の写真と同じ向きです)

(5)

セラロックの真ん中と、チップの右下のピンを配線。

(6)

GBAのAMPチップの上にチップの裏面の両面テープでチップを固定する。

(7)

Rボタン(ブートチップを有効・無効をコントロールする)とチップの左下を配線。

(8)

通信ポートの1,3,4,5,6を次の写真の同じ番号に結線。

(9)

チップの1,3,4,5,6を上の写真の同じ番号に結線。

(10)

こんな感じになる。
後はふたを閉めるときにワイヤーが挟まらないように気をつける。

外付けににする(ケーブルの加工が難しいので、初心者には本体組み込みをお勧めします)

本体組み込みと(1)〜(5)までは同じ

(6)

右が全ピン結線のコネクターでこれが入手できればケーブルの加工は不要になる。
通常のケーブルは左のように5ピンなので、このまま使用できない。

(7)

左下のピンを左上に差し替える(+3Vがとれないため)ためにコネクターのシールドを外す。
任天堂純正のケーブルよりパチモノケーブルのほうが作業しやすい。

(8)

ピンは突起部分を押さえながら引き抜く。
大抵失敗してつぶれるので、抜いた後に突起を整形して左上に挿しなす。

(9)

セラロックの真ん中と、チップの左下を結線。
外付けの場合は常にブートチップを有効にするので、予めGNDにしておく。

(10)

ピンを入れ替えた状態(左下のピンが左上に)。
この1,3,4,5,6を次の写真の同じ番号に結線する。
(テスターでチェックしながら作業する)

(11)


(12)


(13)

完成!

動作確認

SRAMあるいはフラッシュをセーブデバイスに使用しているゲームカセットを用意します。
ブートケーブルのdevman.exeを使用してゲームのセーブデータをPCに吸い出しておきます。
吸い出しておけば元に戻してゲームの続きを遊ぶことも出来ます。



下の段の"読み出し"でPCに吸い出して、"書き込み”で書き込むプログラムを指定する。


今回は確認用のパズルゲームをダウンロードして、バックアップデバイスに書き込んでください。(注:絵が1枚だけなので実際にゲームとして遊べません。SRAMの場合は容量が足りないので絵が化けます。)

ブートチップの使用方法

<本体組み込みの場合>
GBAに対象のカセットを挿入して、Rボタンを押しながらGBAの電源を入れます。電源を入れたらすぐにSTARTとSELECTボタンを同時押しします。すぐにピロリロリンという音とともに"NINTENDO"のロゴが表示されてユーザの書き込んだゲームが起動します。
Rボタンを押さないで電源を入れた場合はブートチップの機能が無効になりますので、他に影響を与えないようになります。

<外付けの場合>
ブートチップをGBAの通信ポートに取り付け、GBAに対象のカセットを挿入します。電源を入れたらすぐにSTARTとSELECTボタンを同時押しします。すぐにピロリロリンという音とともに"NINTENDO"のロゴが表示されユーザの書き込んだプログラムが起動します。