ライン

PIC32MXワンチップテレビゲーム −テトリス編−

ライン

2013年8月23日

 PICによるカラーテキストビデオ出力実験を応用して、今度はテトリスを製作しました。ハードウェアは、パックマンのものと全く同じです。プログラムを書き換えるだけで、パックマンがテトリスになります。時間を忘れて遊んでしまうので、要注意です。

ゲーム画面

 背景の建物の細い線の色が妙なことになっていますが、これがこのシステムの限界です。昔のテレビもこんな感じだった、と思ってください。

ハードウェア

 パックマンのものと全く同じですが、念のため回路図を掲載します。3.58MHzと書かれた発信子は実際には3.579545MHzの水晶を使ってください。
 今回もボタンは方向ボタンとSTARTボタンしか使っておらず、1個は今後の応用への予備です。

基板写真

回路図

プリント基板

(2013.11.4追記)
 私の記事を見て、NASUさんがプリント基板を起こしてくれました。とてもきれいで感激です。ここで頒布もあるようですので、1枚買ってみられてはいかがでしょうか。

ソフトウェア

 今回も全てのソースコードと、念のためにHEXファイルを掲載しておきます。プロジェクトに全てのソースファイル、インクルードファイルを追加して、ビルドしてください。MPLAB XC32 v1.31またはC32 v2.02で動作確認しています。XC32 v1.33以降には対応していません。
 プログラム規模が大きくはないので、特に最適化しなくてもフラッシュメモリに収まり、動作も問題ありませんが、電力消費が多少下がると思いますので、最適化することをお勧めします。

 (2015.11.21)今後のシステム対応のため、設定変更を行いました。

ソースファイルのダウンロード

 各ソースファイルは以下の機能となっています。パックマンの時と構造は同じです。
・colortext32.c
 カラーテキスト表示システム。詳細はこちらのページを参照ください。
・colortext32.h
 上記システムのインクルードファイル。
・tetrisfont.c
 カラーテキスト表示システムで使用するフォントパターン。256個のキャラクターを定義しています。
 背景画像もここで定義しています。
・tetris.c
 main関数を含む、ゲーム本体。
・tetris.h
 テトリスプログラムの定数や構造体などを定義したインクルードファイル。

 ビデオ出力システムの使い方については、パックマンのページで詳しく解説したので、今回は特に解説しません。ほとんど同じ手法で作成しています。
 テトリスのプログラムは多くの方がWebにソースと解説を公開しているので、いくつか参考にさせていただきました。

ゲームについて

 ビデオ端子、音声端子をテレビに接続して、電源オンするとタイトル画面が表示されます。STARTボタンでゲームが始まります。
 ボタン操作は左右のボタンでブロックを動かし、上ボタンが回転、下ボタンで速く落下します。
 20行クリアで音楽が変わり、次のレベルに移ります。積み上がったブロックは全部消去されます。また、レベルが上がると、スピードが徐々に上がっていきます。レベル11くらいになると、私にはもうプレイできません。
 BGMにはテトリスっぽく、よく聞くロシア民謡を入れました。チープな音ですが、レベルごとに曲が切り替わるのでお楽しみください。なお、レベル6は知る人ぞ知るロシア民謡風の日本の曲です。ある年齢層以上(昭和50年頃以前の生まれ?)の関西育ちの方なら必ず知っている有名な曲ですが、それ以外の人には通じなくてごめんなさい。
 背景に使った建物は、実は東京の御茶ノ水にあるニコライ堂です。東京にこんな建物があるのかと驚きました。秋葉原からも歩いて行ける距離なので、興味があれば行ってみてはいかがでしょう。

タイトル画面
タイトル画面

プレイ画面
プレイ画面

最後に

 ようやくこのハードで動作させる2本目のゲームが完成しました。ハードを製作した方はプログラムを書き換えて、こちらも遊んでみてください。グラフィック版の応用プログラムも作りたいのですが、どうしてもテキスト版のほうが使い方が簡単なので、こっちを使いたくなります。
 最後に、またYouTubeに動画を掲載しておきますので、ご覧ください。

ご意見、ご質問、メッセージなどありましたらこちらの掲示板にお願いします。

Copyright (C) KenKen All Rights Reserved.