簡単なファンタジーコンソールを作ってみて非実在マシンの妄想を形にしよう

ファンタジーコンソールは、こんなゲーム機があったら面白いなという開発者の妄想を具現化したものだ。実在しなかった別のゲームボーイファミコンを勝手に考えてPC上で実装して遊ぶ、それがファンタジーコンソール。

ファンタジーコンソールの代表例はなんといってもPICO-8だ。128x128ドットの画面、4音同時再生、256個の8x8スプライトを持ち、Luaでの開発環境やドット絵エディタ、音楽エディタ、マップエディタなどを含むとてもリッチなマシンだ。

ちょっと前にPICO-8 Education Edition: for Webというのがリリースされ、Webブラウザ上からも手軽に試せるようになった。

コンソール(Video game console = ゲーム機)という名前にもかかわらず、ファンタジーコンソールは開発環境を内包した作りになっていることが多い。どちらかというとMSXのようなマイコンファミリーベーシックっぽいものになっている。Switch用のBASICであるプチコンもファンタジーコンソールの一種といえよう。

PICO-8レベルのファンタジーコンソールを作るのはとても大変だ。でも自分でもファンタジーコンソールを作ってみたい。ならば思いっきり仕様を絞る必要がある。例えばそうカセットビジョンみたいに、と言うのはカセットビジョンに失礼だ。カセットビジョンはドットの代わりに三角形などのキャラクタが表示できたり、ちゃんとスプライトを持っていたり、パドルコントローラが付いていたり、結構リッチなのだ。

もっと限られた仕様、ごく小さな画面、単純な音出力、簡素な入力手段しか持たないファンタジーコンソールを目指した結果、PEEKPOKEというファンタジーコンソールを作ってみた。

PCやスマホのブラウザで遊べます(下の画面をクリック)。

BOMB SNAKE

サンプルのスネークゲーム。上下左右 or WASDキーで蛇を動かして赤い爆弾を取って。スマホでも画面下のバーチャルパッドで操作できる。

PEEKPOKE memory map

PEEKPOKEではpeek命令とpoke命令しかマシンの制御に使えない。32x30ドット8色の画面と8x5のテキスト画面、7つのキー入力、単音ブザーのみ、という限定された機能を、メモリから操作できるメモリマップドI/Oです。開発環境は入ってません。普通にJavaScriptで書きます

コンソール独自の機能はすべてメモリに押し込んだうえで、開発環境はJavaScriptに丸投げしたので、作りはかなり簡単にできた。作れるゲームもかなり簡単なものに限られるが、ぎりぎりファンタジーコンソールを名乗れるのではないか。まあファンタジーコンソールに厳密な定義が無いから言える話でもある。あと起動時にスプラッシュスクリーンを入れると、なんとなくファンタジーコンソールっぽくなる。

開発環境抜きであればファンタジーコンソールを作る手間はだいぶ削減できるので、何か面白いスペックのコンソールを妄想して作ってみるのも楽しいかも。今回作ったものはだいぶ素直なアーキテクチャになったけど、もっとユニークな、それこそカセットビジョンのグラフィックスのような、独特の機能を持つコンソールを考えてみるのも良さそう。