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


2024/02/02

アルフォスを作りたい4

マップを作り始めた。
開始直後の1画面分だけ。スクロールはしない。


背景スクロールなんて、div要素にbackground-imageで背景画像を指定して、background-positionを変化させれば済む話で、ゼビウスではまさにそれをやっているのだけれど、これはアルフォス。PC88に画像ファイルを指定して表示させる機能なんてものはない。
Graphic-RAMにデータを転送し、データのビットが立っている部分が光る、それだけである。

左側の海岸線の部分を拡大するとこんな風。


データの0の箇所が青、1の箇所が黄色になっている。
背景に使用するのは1プレーンだけなので0か1かだけで背景を表現するのだ。

しかし、いくら0と1だけといってもマップ1つ分の背景データとなると膨大な量になる。
なので表示する単位を決め、様々なパターンを用意して、それを配置するのである。

いろんなスクリーンショットを見て回った所、32x2の単位でパターンが用意されているようだった。



上の2段のオレンジ枠の部分、3段目の白枠の部分、一番下の赤枠の部分の内容(ビットパターン)は同じである。

なので仮にオレンジ枠のデータをパターンA、白枠のデータをパターンB、赤枠の部分をパターンCとすると、この部分のマップは
A,A
A,A
B,B
C,C
と表現できる。
こうやってデータ量を減らしているのであるな。
なにせPC88などの8Bit機のメモリは全部で64Kバイトしかないのだ。キロやぞ。ギガでもメガでもない、キロ。
しかもシステムが使用していて使えない領域もあるから、実際使えるのは50Kバイトほど。
PC88の画面(Graphic-RAM)は640x200x3プレーンであるから、ここに画像を表示するためには48キロバイトが必要になる。
画像データ1枚だけで空きメモリがなくなる。

しかし、全パターンの洗い出し、どこにどのパターンが使われているかの調査、などなど考えると気が遠くなる。
完成できない気がしてきたw

ちなみにゼビウスの場合はこういう背景画像を貼り付けてスクロールさせている。

大きさは1024x2048、256色なので1ピクセルが1バイト。なのでデータサイズは2048Kバイト。







0 件のコメント:

コメントを投稿