8bitパソコンWZ-660マルチライト機能でゲームが高速に!開発中の8bitパソコンWZ-660の紹介。WZ-660のゲーム機としての性能を向上させるためマルチライト機能を追加。シューティングゲームのデモが1.5倍高速に動作した動画です。
マルチライト機能を有効化することで敵機の移動時間が0.75秒から0.50秒になっていることが動画で確認できます。マルチライト機能はゲームのための専用機能ということでもなく汎用的に利用可能な高速化機能です。
1980~1990年代のゲーム機やレトロパソコンのCPUは周波数が2~8MHz程度でした。CPUだけでゲームの画面を作るのは不可能でグラフィック専用のVDPプロセッサやスプライト、DMA転送などを駆使していました。WZ-660のCPU、WZetaは100MHzで動作しています。そのためCPUだけでグラフィックもできるかもしれないと思って、CPUをさらに高速化するための「マルチライト機能」を実装してみました。マルチライト機能はCPUではなくてパソコンのメモリに付加する機能になります。
WZ-660はプログラムメモリ64KB+データメモリ64KBにアクセス可能です。
データメモリの64KBは4KBのメモリ16個で構成されるため、選択した4KBのメモリに同時に同じ値を書き込むことで高速化します。データメモリの後ろから10個はVRAM領域に割り当てられているため、この10個を選択して4KBに0を書き込めば40KBに0を書き込んだことになって全画面が高速に消去できます。
WZ-660に搭載される8bit CPU WZetaは1命令で256バイトを0にするLOOPZERO命令があるため高速に0で初期化できます。マルチライト機能と組み合わせることで圧倒的な性能が出ます。
高速な画面消去が必要なのはスプライトが無いためVRAMを2面持って、交互に書込みをする方式であるため。ビットマップなどCPUでVRAMに直接書き込むためプログラムが容易です。画面を切り替えるごとに、まず全画面消去をして新しく全部を書き込みます。慣れてくれば画面の一部を残して消去することもできるので、さらなる高速化が期待できます。
●オープンソースの8bit CPU WZeta
https://wzeta.idletime.tokyo/
WZetaって、何の役に立つの?という人に
IoTで大量に使われることになるCPUを、できる限り少ない地下資源で製造すること。ゴミから資源を回収するコストを考えるなら最初からという考え。
ファミコンのCPUで説明するとファミコンのCPU 6502はZ80の1/4のトランジスタ数なのです。
いいかげんだけど、同じ資源で4倍のCPUが取れると思える。
2コアのCPUのほうが1コアを時分割するより、プログラムが作りやすい場合があって、WZetaのSDogコアでは少ない資源で作れることがWZetaを推せる点かも。
従来より高度なプログラミングテクニックを駆使すれば、省資源がもっと効果的になるあたりも、これから名声を得たい新しい人向けに向いています。
●動画で使ったビットマップの素材
ビットマップデータは「ゲーム アルゴリズム まるごと図鑑」廣瀬豪(著)にある素材を使って16色に減色したもの。この本に「本を買った人は使って良い」と書かれています。