Google Chrome または Safari を使用される事を強くお薦めしますw
他のブラウザでは Javascript の処理が重いです(汗)


2024/02/02

アルフォスを作りたい3

 文字を表示する画面だけ作った。





ここで「お?」と思うことあり。
プレイ画面の左端の黒い縦の帯である。


ただでさえ狭いPC88の画面なのに、なぜここに何も描画しないエリアがあるのか。

この黒帯の幅は32ピクセル。
はは~ん、なるほどね。
これも昔のパソコンゲームではよく使われていたテクニック。
この部分には実は何かが表示されているのだが、その上から黒い「■」の文字を書いてそれを隠しているに違いない。

PC88ではテキストを表示する領域(Text-RAM)はイメージを表示する領域(Graphic-RAM)とは独立していて、Text-RAMの方がGraphic-RAMより上にあるので、イメージは文字に隠されるのである。
文字は縦x横=8x8ピクセルなので、ここには横方向に4列、縦方向に25行黒い「■」が書かれているはず。

なぜここを隠すのかというと、ここを画面転送するイメージのバッファとして使用するためなのだ。
イメージデータをメモリからGraphic-RAMに転送するのは遅いので、表示速度が必要なイメージについてはこの隠した領域に予め描いておいて、それを見える領域にコピーするのである。
同じGraphic-RAM間の転送であれば処理は簡単で速いから。
例えばアドベンチャーゲームやRPGでは会話シーンで登場人物の瞬きや口の動きをアニメーションさせるためにこういうテクニックを使っていた。

アルフォスのキャラクタのほとんどは32x16ピクセルなので(前回記したようにピクセルは縦に長いので縦のピクセル数は少ない)、画面左端に幅32ピクセルの隠し領域を用意して、ここにイメージを配置していると思われる。
プログラムを解析したわけではないので想像でしかないが、恐らく自機(ニーモニック号)や発射する弾、敵キャラなど表示速度が要求されるものがここに描かれているはずである。
右側のスコアなど表示している部分も隙間の黒い部分には裏にキャラクタが描かれているかもしれない。

PC88の実機があればText-RAMを非表示にして化けの皮を剥がすことができるのだけれど、それは叶わないし、ブラウザで再現するにあたってこのテクニックを使う必要はたぶん無い。
でも、自己満足のためにわざとやるかもw
そもそも遊ぶのに何の得もないG外しをわざわざやってる時点で自己満足だし。


0 件のコメント:

コメントを投稿