PIC32MX HARMONY(7)
更新日:2021年12月17日

PIC32MXbox:PIC32MX MONSTER HOUSE公開
自作ゲーム機「PIC32MXbox」用の第二弾ソフト「MONSTER HOUSE 2021」の公開です。この元ネタは私がPC-8001mk2の時代にI/O誌に掲載されたゲームです。昨年はPC-8001mini用にも作りました。そして今回は自作ゲーム機用としてちょっと張り切って作ってみました。
(PIC32MXboxでMONSTER HOUSE 2021を遊ぶ)
自作ゲーム機の詳細はこちらのページに詳しく説明しています。
VGAモニタ接続ユニットを高速化する
VGAモニタ接続ユニットを作る
ハードウェアは今までと全く同じです。ソフトウェアの書き換えのみで対応しています。今回のゲームは画面が上下左右スクロールします。下図のように画面上にはふたつのVRAMの表示を行っています。上下左右スクロールする部分がVRAM1表示エリアです。VRAM2表示エリアにはスコアなどを表示しています。
(画面上のVRAMの割り当て)
ゲームのキャラクタのサイズは液晶モジュールの画面を考慮して32x32ドットにしています。そのサイズでゲームを構成すると横ドット数が320では足りません。そこで仮想画面のサイズを広く取って上下左右スクロールで画面に表示することにしました。
(仮想画面エリア:VRAM1)
仮想画面エリア:VRAM1は上図の通り、480x352ドット分あります。もっと広く取りたかったのですがPICのRAM容量を考慮してこのようになりました。このVRAM1の一部分が画面に表示されていることになります。ゲームのキャラクタは仮想画面上を動いていますので、今どの部分が画面に表示されているかは全く気にせずにプログラムを組むことが出来ます。上図で薄く黄色くなっている部分が画面に表示されている部分です。
(PIC32MXboxの16色モード)
表示色はゲーム機内部のCPLDに依存していますので、今までと全く同じですが、PC上でキャラクタをデザインする時に若干色のイメージが異なっていることが判ったので、今回その詳細をまとめました。上図を参照下さい。ちょっとよく似た色がありすぎましたね。
(MONSTER HOUSE 2021のEEPROM割り付け)
ゲームを入れ換え時にハイスコアが消えないようにEEPROMの領域を重複しないようにしています。共通で使える部分は同じアドレスで割り付けています。
(MONSTER HOUSE 2021の使用効果音)
効果音は別のPIC24Fに入れていますが、ゲームに依存していますので、その都度入れ換える必要があります。今までの音の種類は8種類だったのですが、今回から16種類出るようにしてみました。勿論ハードウェアはそのままでソフトを改良することで対応しています。しかしながら今回はPICの容量の関係から13種類までしか入りませんでした。それでも従来より5種類も増えているのでゲームが楽しくなります。私の自作ゲーム機を作られる方はいないとは思いますが、作られる方は次のファイルをダウンロードして下さい。
MONSTER HOUSE 2021で使用する効果音が入っているPIC24FのHEXデータ
ここからはMONSTER HOUSE 2021について説明します。
(前面に取り付けた液晶モジュールのみでもゲーム可能です)
液晶モジュールモードでもモニターが接続されているとにぎやかしに静止画ですがモニターにタイトル画面が表示されます。
(PIC32MXboxの全貌はこんな感じです)
電源を投入するとタイトル画面が表示されます。ここのタイトル画面で使用している画像はゲーム中に画面下に表示されているデータを縦横2倍にしたものです。ドットが荒いように見えますがタイトル的には気にいってます。このタイトルの表示方法はPLANET PILOTの時も同じです。
(タイトル画面)
約1分毎に風景と敵キャラが変わるようにしています。ハイスコアはBEST5まで表示しています。敵キャラは10種類、壁の種類は20種類、エサは10種類用意しています。全20面でそれらを組み合わせています。キャラクタは使い回してデザインを少し変えながら使っています。RETURNキーでゲームスタートです。
(ROUND-01:りんご)
上下左右キーでRED EGGを操作しながら敵キャラや敵ミサイル、敵バクダンに当らないように、配置されている果物や野菜を全て取ると1面クリアです。RED EGGはミサイルを持っていて、RETURNキーでRED EGGが動いている方向に発射することが出来ます。このミサイルに敵が当ると一定時間、敵をいじけさせることが出来ます。いじけている時、敵はそん場に留まってうねうねしています。この時にRED EGGは敵をすり抜けることが出来ます。いじけた敵はその後何事もなかったように蘇ってまた動き出します。そうです、このゲームは敵を倒すゲームではないのです。敵を同時に3つ以上いじけさせるとどこかに白いBIG EGGが一定時間だけ登場します。これをRED EGGが取るとボーナスとしてRED EGGのミサイルが20個増えます。オリジナルはこれほども増えなかったのですが、多く増やすと面白いと思いそうしました。またBIG EGGを3回とるとRED EGGがひとつ増えるようにしました。このゲームの面白いところは敵を多くいじけさせてBIG EGGを発生させてミサイルを増やしながらゲームを進めるところにあります。すみません、その昔から個人的な感覚でゲームを作っています。
(RED EGGがミサイルを発射)
(ミサイルが当ると敵はいじけます)
(敵を3つ以上いじけさせるとBIG EGGが登場)
BIG EGGの登場時間は少し長くしていますので、余裕で取りに行くことが出来ます。このゲーム画面の右下には各キャラがドット表示されています。昔の表現をするとここはレーダー画面ということでしょうか。各キャラによって色を変えていますので、どこに敵がいるか、どこにBIG EGGが登場したかを把握してゲームを進めて下さい。と言っても作った本人はほとんどそのレーダー画面を見ている余裕はありませんが。 BIG EGGを取るといじけていた敵は一斉に蘇ります。
(果物・野菜を全て取ると1面クリアです)
正直なところ果物・野菜を全て取ることは極めて簡単です。それでは得点は伸びません。制限時間はありませんので、敵をより多くいじけさせてBIG EGGを取ってミサイルを増やして、の繰り返しが楽しいのです。ミサイルは99個まで増えますが、やたら発射しているとすぐ減ってきます。また20個以上のミサイルが残って面クリアするとそのミサイルの数は引き継がれます。
(ROUND-02:にんじん)
敵は10種類のキャラクタが登場しますが、大きく4種類に分類されます。ただ動くだけの敵、ミサイルを発射する敵、バクダンを置く敵、いじけミサイルを発射する敵。これらが面毎に分かれて登場します。
(ROUND-03:さくらんぼ)
この面くらいから何故か敵をいじけさせやすくなるので、BIG EGGをどんどん取りましょう。
(ROUND-04:いちご)
いじけミサイルを出す敵が登場します。敵はRED EGGと横方向の座標が近くなるとミサイルを発射するようにしています。敵も動いている方向にミサイルを発射しますので、RED EGGが居る方向と逆に発射することも多々あります。いじけミサイルに当るとRED EGG自身が一定時間いじけて動けなくなります。この時RED EGGはミサイルを打てません。いじけている時に敵が当ってきても大丈夫です。
(敵のいじけミサイルでRED EGGがいじけています)
(ROUND-05:なすび)
バクダンを置く敵が登場します。面が進むにつれて置くバクダンの数が増えるようにしています。それでもMAX3個までです。バクダンはRED EGGのミサイルで取り除くことが出来ます。そのまま当ればRED EGGは爆発します。
(ROUND-06:すいか)
この面の敵はミサイルを発射してきます。前のいじけミサイルと同じく、横方向の座標が近くなると発射します。RED EGGが大量になくなる面です。
(ROUND-07であえなくゲームオバー)
RED EGGが無くなるとゲームオーバーです。ハイスコアBEST5を表示してタイトル画面に戻ります。じっくりやれば20面はクリア出来ると思います。慌てると結構早く終わります。
このゲームを作られる方はいないとは思いますが、HEXファイルをダウンロード出来るようにしています。
PIC32MXbox:MONSTER HOUSE 2021のHEXファイル
第二弾のソフトもなかなか楽しめる作品となりました。2021年も暮れてきましたが、まだまだこの自作ゲーム機は面白いです。来年早々にもまた新しい記事を予定しています。それではみなさん楽しい年末年始をお楽しみ下さい。来年もよろしくお願いします。

「PIC32MX HARMONYの表紙」へ戻る