Gamebuinoつくってみた

Gamebuinoざっくり紹介

GamebuinoはArduinoを利用して作られたゲーム機とその環境です。

http://gamebuino.com/
(下記画像は公式ページのものです)

Arduinoに加えて下記の機能が搭載されています

  • ハードウェア
    • 48px*84pxのLCD(バックライト付き)
    • 十字ボタンとA,B,Cボタン
    • SDカードソケット
    • スピーカ
    • バッテリー
    • 通信対戦用のI2C端子
  • ソフトウェア

ハードウェアはまぁ書いてあるとおりの機能です。ソフトウェアがすばらしくてですね、、

ブートローダ

Arduinoブートローダーとほぼ同じなのですが

  • シリアル経由の書き込み(これはArduinoと同じ)
  • SDカード経由の書き込み
  • Cボタンが押された状態で起動した場合にLOADER.HEXを書き込む

という機能があります。
これにより、パソコンが無くても違うプログラムに書き換えることが出来ます。
ビルドしたバイナリをSDカードに入れておくことで、事実上ほぼ無限のゲームを入れ替えながら遊ぶことができます。
まるでゲーム機みたい!

ゲーム開発用ライブラリ

ゲームづくりにおいて大切なのは良いライブラリです。
ゲームが作りたいのに、円を書くアルゴリズムや直線をひくアルゴリズムの作成に時間を割かれたくありません。

GamebuinoにはよくできたSDKが提供されており、様々な機能が簡単に呼び出せる関数にまとめられています。
一例を以下に列挙

  • 名前入力などに使える文字入力(keyboard)
  • ちょっとした情報をユーザに伝えるpopup(アニメーション付きで表示されます)
  • ちょっとした当たり判定(physics)
  • ボタン周りの処理(キーリピートなど)
  • 8bitサウンドのソフトウェア音源とトラックの管理
  • 各種図形の描画ルーチン
  • 数種類の大きさのアルファベットのフォント

とてもすばらしい

Gamebuinoつくってみた



インベーダーも動きました!


さてさて こういう構成で作れば良いのか

お値段はざっとこんな感じ

LCD 500円 有機ELなら倍くらい
FT232RL 秋月のモジュールが1000円くらい(これは使いまわせるので1つあればOK)
Atmega328 250円
Speaker 100円(なにかしらのおもちゃから取り出してもOK)
ボタン 10個で100円くらい(良いボタンは1個100円くらいする)
レギュレーター 1個30円くらい、周辺にコンデンサが必要、これは1個10円もしない
基板 150円
SDカードスロット 250円
その他 もろもろ

2500円くらいかな

もし2個めを作るならFT232RLは共用できるので1500円くらいです

FT232RL

FT232RLからはシリアルの通信線でAtmega328と接続します。
TX,RXという送りの線と受信の線です。それと書き込み時にリセットを書けるための線を接続します。

シリアル接続は予め転送レートを決めておいて、そのクロックでデータを送り合う方式です。

Button

ボタンは全部で7つあります。
それぞれをAtmega328と接続します。
プルアップはAtmega328の内部で行うので不要です。

LCD

LCDとAtmega328はSPIというインターフェースで接続します。

  • CS(chip select)
  • MOSI(master out, serial in)
  • MISO(moster in, serial out)
  • SCK(serial clock)

SPI

SPIはMasterとSlaveという役割を割り振ります。MasterはAtmega328などのCPUで、Slaveは液晶などの周辺機器であることが多いです。

MasterがSCKからクロック信号(HIGH,LOWを切り替え続ける)を送り、そのクロックに合わせてMOSIを通してMasterからSlaveに、MISOを通してSlaveからMasterにデータを送ります。

また複数のSlaveを接続する際にピンを消費しないように、MOSI,MISO,SCKのピンは他のSlaveと共有することが出来ます。CSがHIGHのものだけがその信号をやり取り出来るようになっています。

Speaker

スピーカーはトランジスタを介して接続します。
たぶん今回の場合は小さいスピーカなので無くても大丈夫だと思います。

SDCard

SDカードとはSPIで接続します。
これはLCDと線を共有します。
ただしCSだけは違う配線で接続します。SPIはCSを使ってどの接続が有効かどうかを切り替えるのです。

  • CS(chip select)
  • MOSI(master out, serial in)
  • MISO(moster in, serial out)
  • SCK(serial clock)
レギュレーター

今回使うLCDやSDカードは3.3Vで動作します。
そのためには乾電池3本から得られる4.5Vを3.3Vにレギュレーターで降圧する必要があります。

普通のArduinoは5Vで動作しますが、Gamebuinoは3.3Vで動作します。

組み上げる

Gamebuinoのサイトを参考に結線します。
本当はブレッドボードにまず組んで、動作を確認してからユニバーサル基板を使うのが良いです。

ブートローダーの書き込み

ブートローダーの書き込みは少し面倒くさいです。
専用の書き込み器を使うか、既に作られてあるArduinoを利用するか、FT232RLを使う方法がありますが、どれも煩雑です。

ココに良い資料があるのでこの方法を使いました。
http://make.kosakalab.com/arduino/bootloader/

エンクロージャ

とりあえず配線の裏側を守るために木の板を用意してネジとナットで基板に固定します。


遊ぼう!

SDカードにHEXファイルを入れておくことで、複数のゲームを切り替えて遊ぶことが出来ます。ただしSDカードはSDHCではなく「SD」カードである必要があります。

これは2G以下のSDカードのことです。
今やあまり売っていないですが、なんとか調達しましょう。

http://gamebuino.com/wiki/index.php?title=Games

ゲームはここにたくさんあるので、ダウンロードしましょう。
液晶がGamebuinoとは別の場合は、液晶の命令セットが異なるためゲームを再度ビルドする必要があります。

まとめ

Gamebuinoは良いので、自分で作るか買ってみてください!

まずは公式ページにアクアセス! → http://gamebuino.com/