2014年4月23日
これまでPIC32MXシリーズワンチップで動作する、パックマンやテトリスなどのテレビゲームを作成してきましたが、このページにはより簡単なミニゲームを順次掲載していきたいと思います。ハードウェアはどれも共通です。
ソースプログラムが短い分、理解しやすいので、これからPICでテレビゲームを作成してみたいと思っている方の入門用にも最適です。ぜひ参考にしてください。
映像信号生成に関する部分や、直線、円、文字などの描画については、特に意識しなくてもよいように、ライブラリ化を行いました。プロジェクトにライブラリファイルを追加し、ヘッダーファイルをインクルードするだけで、ビデオ出力が可能となります。
また、SDカードブートローダシステムを使えば、1つのボードでSDカードに入った複数のゲームを楽しむことができます。
2014年4月23日
動作マイコン PIC32MX150F128B PIC32MX250F128B PIC32MX170F128B PIC32MX270F128B |
画像を見てご存知の方も多いと思います。木製の大小の駒を箱の中でスライドさせて、大きな「娘」の駒を一番下の出口まで移動させられれば成功です。(参考)
方向ボタンで赤いカーソル枠を移動し、動かしたい駒で「FIRE」ボタンを押しながら方向ボタンを押すと動かすことができます。初期配置はこのパターンが有名で、なかなか解けないと思います。同じ駒を連続して動かす場合は一手と数えるようで、最短では81手で解けるそうです。
単なる動作紹介ビデオにするつもりが、気付いたら解けてしまいました。270手もかかってしまいましたが・・・
下記よりソースプログラムとHEXファイルがダウンロード可能です。
HEXファイルは、通常用(hakoirimusume.hex)とSDカードブートローダ用(hakomusu.hex)がありますので、システムに合わせてご利用ください。
(2015.11.21)ブートローダRev.2用にファイル更新
関連ファイル一式のダウンロード |
ソースプログラムからコンパイルを行う場合は、以下のファイルをプロジェクトに加えてください。
(XC32 v1.31またはC32 v2.02使用。XC32 v1.33以降には未対応)
■Cソースプログラム
hakoirimusume.c メイン関数を含むゲーム本体
hakomusu_image.c 駒の画像(文字)イメージ
ブートローダ用リンカスクリプトファイルは下記コメント参照
■ライブラリファイルとヘッダーファイル
lib_composite32-high.a ビデオ信号出力ライブラリ。256×224ドット/16色/正方画素システム。英数フォント内蔵。
composite32-high4.h 上記システム関連ヘッダーファイル
lib_composite32-high.h グラフィック描画関連関数定義ファイル
■リンカスクリプトファイル SDカードブートローダ向けにコンパイルする際のみ必要
App_32MX250F128B.ld XC32コンパイラ用、ただしXC32 v1.33以降は未対応
App_32MX250F128B(C32).ld C32コンパイラ用
ソースプログラムにはたっぷりコメントを書きましたので、簡単に読めると思います。ライブラリの使い方の参考にもなると思います。また、ライブラリに含まれる機能(関数)については、ヘッダーファイルに記載しています。
2014年5月1日
動作マイコン PIC32MX120F032B PIC32MX220F032B PIC32MX130F064B PIC32MX230F064B PIC32MX150F128B PIC32MX250F128B PIC32MX170F128B PIC32MX270F128B |
説明不要だと思います。ブロック崩しです。トランジスタ技術1997年5月号で、8ビットのPIC16C84ワンチップでビデオ信号出力をしながらブロック崩しを動作させた記事が話題となったようですが、今どきのPIC32MXならワンチップでカラー対応まで可能です。
今回はテキスト版ビデオ出力システムの作例として作ったので、動きはどうしてもぎこちないところがありますが、テキスト版はとにかくプログラム製作がとても簡単なところが魅力です。今回ライブラリも用意したので、ビデオ出力に関して意識することはほとんどありません。
こちらもソースプログラムとHEXファイルを公開します。HEXファイルは、通常用がbreakout32mx.hex、SDカードブートローダ用はbreakout.hexです。
(2015.11.21)ブートローダRev.2用にファイル更新
関連ファイル一式のダウンロード |
ソースプログラムからコンパイルを行う場合は、以下のファイルをプロジェクトに加えてください。
(XC32 v1.31またはC32 v2.02使用。XC32 v1.33以降には未対応)
ブートローダ用リンカスクリプトファイルは下記コメント参照
■Cソースプログラム
breakout.c メイン関数を含むゲーム本体
■ライブラリファイルとヘッダーファイル
lib_colortext32.a カラーテキストビデオ出力ライブラリ。こちらで実験したシステムをライブラリ化
colortext32.h 関連ヘッダーファイル
■リンカスクリプトファイル SDカードブートローダ向けにコンパイルする際のみ必要
App_32MX250F128B.ld XC32コンパイラ用、ただしXC32 v1.33以降は未対応
App_32MX250F128B(C32).ld C32コンパイラ用
サンプルとして作成したのでゲームはシンプルですが、面ごとのバリエーションを増やすなどチャレンジしてみてはいかがでしょうか。
ちなみに、今回のライブラリに内蔵したキャラクターのコード表は、右図のようになっています。これは1979年発売のNEC PC-8001のコードと同じです。フォントはテレビで見やすいよう、縦線を太くしました。なお、フォントデータはライブラリ上、属性でweak指定しているため、ユーザ独自フォントでオーバーライドすることも可能です。
今後も少しずつ追加していきたいと思います。ご意見、ご質問などありましたら、こちらの掲示板に書き込み願います。