概要
前回は、モノクロ液晶で簡単なゲームを作ってみました。
今回はそこから進化して、液晶がカラーになりました!
折角カラーなので、色を使った落ち物ゲームを作ってみたいと思います。
作るゲーム
下記のようなゲームにしてみたいと思います。
- w6 x h12の盤面
- 2個のピースが繋がったブロックが落ちてくる
- 色は5色
- 同色のピースを縦・横に4つ以上つなげると消える
- 連続して消える(チェイン)と、チェイン数に応じてスコアが2^(chain-1) * 10 ずつ加算される
使用材料
- Arduino UNO R3 (開発とArduinoライタとして)
- ATMEGA328P(秋月で250円)
- カラー液晶 128x128 ICはST7735(ebayで300円)
- 16MHzセラロック(秋月で35円)
- ユニバーサル基板(秋月で60円)
- タクトスイッチ(秋月で1個10円)
- ICソケット
- ロジックレベルコンバーター(ebayで2個100円程度)
前回とカラー液晶以外は全く同じです。
それにしても、1個300円は安い・・。前回のモノクロ液晶の半分以下です。。。
使ったカラー液晶について (ST7735)
使用したカラー液晶には、ST7735というICが積まれていました。
ST7735のライブラリはいくつか有るようなのですが、
今回は、sumotoyさんが作ったライブラリを利用しました。
ただ、128x128のこの液晶向けのコンフィグがなかったので、
コンフィグを追加して利用しています。
githubはこちら。
Arduinoに追加する場合は、githubからZIPでダウンロードし、
[スケッチ] -> [ライブラリをインクルード] -> [.ZIP形式のライブラリをインストール]
でダウンロードしたZIPを選べばOKです。
回路図
ハンダ付けをするときのために、簡単な回路図を作っています。
ソフトには水魚堂さんのBSch3Vを使わせていただいております。
直感的に操作ができ、とても便利です。
今回は下記のようになりました。
※回路図としては、記法的に不正確かもしれませんが、ご了承下さい。。
液晶とタクトスイッチを、atmega328pにつなげただけですね。
ちなみに単三電池2本で動かすので、ロジックレベルコンバータは不要です(開発中のブレッドボードでは使いましたけどね!)。
※本回路図エディタのファイルも、落ち物ゲームのリポジトリに入れております。
ソースコード
今回は、
・Arduino部分
・View部分
・ゲーム処理部分
で分割してみました。
モダンなC++の機能が使えるのは、
普段LLを使っている身としてはありがたいです。
完成品
こんな感じのゲームになりました。
感想
カラー液晶の発色を見た時に、子供の頃初めてゲームボーイカラーの液晶を見た時のことを思い出しました。
当時は、ゲームボーイカラーで表示されたスライム(ドラクエモンスターズ1です!)の青さに、本当にとても感動したものです。。
ところでゲームボーイカラーのスペックは、下記のようなものだったようです。
wikipedia:ゲームボーイカラー#基本仕様から引用
- CPU:カスタムZ80 4MHz / 8MHz(カラー専用カートリッジ用の倍速モード)
- RAM : 32kバイト(カートリッジ側に128kバイトまでの増設メモリを搭載可能)
- VRAM:16kバイト
- ROM:最大64Mビット(=8Mバイト、発売されたソフトの実績値)
- サウンド:ステレオ、PSG音源4チャンネル (波形メモリ1音、矩形波2音、ノイズ1音)
- 画面:TFT液晶ディスプレイ(160×144ドット、32768色中最大56色表示可能)
それに対してarduino仕様のatmega328pは、
- CPU: 8bit RISC 16MHz
- RAM: 2kバイト
- ROM: 32kバイト
CPUは速いですが、RAMは1/16、ROMは 1/512です。
意外とゲームボーイカラーって、RAM多かったんですね。
ということで、カラー液晶を使った工作でした!
さて、次回は「音」を出してみたいと思います!