ラスタースクロール

これはこのページの過去の版です。Chinman0808 (会話 | 投稿記録) による 2007年7月27日 (金) 07:43個人設定で未設定ならUTC)時点の版であり、現在の版とは大きく異なる場合があります。

ラスタースクロール(raster scroll)とは、主にテレビゲームで用いられる、ビデオ信号の走査タイミングに合わせて画面をスクロールさせる技法、およびそれによって得られる画面効果のことである。

普通の横スクロール・縦スクロールなどを走査タイミングで細かく制御することにより、画像を「縦方向に伸ばしたり縮めたりする」「横方向に歪めたり波打たせたりする」などの特殊効果が得られる。

ポリゴンが採用される前の擬似3Dレースゲームのコース表現や、ドラゴンクエストの「旅のとびら」など、使用例は枚挙にいとまがない。

なお、業務用ゲーム機や家庭用ゲーム機(メガドライブなど)の中には、各ラインごとに個別にスクロールオフセットを指定できるハードウェアもある。つまり、水平帰線期間に割り込みをかけなくても、垂直帰線期間内で普通に画面を描画すればラスタースクロールと同様の画像が得られる(前出のメガドライブでラスタースクロール様の処理が高速なのはこのため)。

逆に、水平帰線期間を割り込みトリガとすることが出来ないハードウェア(ファミコンやFM-TOWNS等)の場合は、ほかの手段で実装する必要がある。 ファミコンの場合は、0番スプライトと走査線の接触を割り込みトリガにできるので、これを応用して実装することが多い。

ポリゴンによるリアルタイムレンダリングが一般的になると、画像の変形は簡単な処理の部類となり、ソフトウェアによる代替処理が主流になった。2005年現在、ラスタースクロールと呼ばれているもののほとんどは、正弦波などを利用して画像を変形させている擬似ラスタースクロール、あるいはラスタースクロールのエミュレーションである。

ハードウェアに依存しているため制限が多いラスタースクロール機能は、スプライトなどと同様に姿を消しつつある。2005年では、ゲームボーイアドバンスなど一部ゲーム機に搭載されているのみとなっている。

原理

以降の説明では便宜上ディスプレイ横置き(長辺が横、短辺が縦)とする。

ディスプレイは、以下の繰り返しで映像を表示している。

  • 左から右へ、横方向に1ライン分の信号を出力する
  • 1ライン下の一番左へ移動する(水平帰線期間)
  • 左から右へ、横方向に1ライン分の信号を出力する

(中略)

  • (最下のライン)左から右へ、横方向に1ライン分の信号を出力する
  • 一番上のラインの一番左へ移動する(垂直帰線期間)

ラスタースクロールは、この水平帰線期間をハードウェア割り込みで検知し、割り込みルーチン内でスクロールレジスタを操作する。 水平帰線期間の度に矢継ぎ早にスクロール量を変化させることによって、実際に描画される画面上では、画面の一部のラインだけが横に移動したように見える。

□□□□□□□□□□□□□□
□□■■■□□□■■■■□□
□■■□■■□□■■□■■□
□■■□■■□□■■■■□□
□■■■■■□□■■□■■□
□■■□■■□□■■■■□□
□□□□□□□□□□□□□□

第4ラインを描画する寸前に右へ1ドットスクロールし、第6ラインを描画する前に元に戻す(左へ1ドットスクロールする)と以下のように見える。

□□□□□□□□□□□□□□
□□■■■□□□■■■■□□
□■■□■■□□■■□■■□
□□■■□■■□□■■■■□
□□■■■■■□□■■□■■
□■■□■■□□■■■■□□
□□□□□□□□□□□□□□

用法

横ラスタースクロール

横方向にスクロールさせて、画像を横方向にずらせたり歪めたりすることができる。

  • 多重横スクロール、奥行きのある地面の表現、擬似3Dレースゲームのコース表現、画面を波打たせて空間や眼前が歪む表現など

縦ラスタースクロール

縦方向にスクロールさせると、画像を縦方向に引き伸ばしたり縮めることができる。

  • 脈打つ細胞などの表現、擬似3Dレースゲームにおける勾配の表現など

画面の上下分割(ステータス表示など)

ファミリーコンピュータなどのレイヤー機能を持たないハードウェアにおいて、画面を上下に分割して、ステータスやスコア表示を行ったままもう一方の画面をスクロールさせる(スーパーマリオブラザーズ3など)手法も走査タイミングによる割り込み処理で行っている。

上下に分割したい位置で割り込みを発生させ、表示ページやスクロール位置などを切り替えることにより画面の上下で別の表示を行うことが可能となる。 これを全ての走査線で行うとラスタスクロールとなるのでラスタスクロールの前身の技術と言えるが、全ての走査線で処理を行うことを想定していない場合は処理が追いつかず「画面が崩れる」ことがある(ファミコン版『ドラゴンクエストIII そして伝説へ…』の旅のとびらなど)。


水平帰線期間割り込みを利用したその他の応用例

スプライトに対しての利用例

見かけのスプライト数の倍増

スプライトは画面上に同時に表示できる枚数に限りがあるが、画面上方で表示したスプライトを画面下方で再利用することにより見かけのスプライト表示数を増やす手法。 なお、水平帰線期間内にスプライトICを操作できないハードウェアでは、この方法は使えない。

スプライトの出現・消滅

スプライト単体にラスタースクロールをかけ、画面外に移動させることにより上から下へ徐々に消えていく・現れるなどの表現が可能。

パレット切り替え

色数の制限が厳しいハードウェアにおいて、画面上部と下部でパレットを切り替えることで見かけ上使用できる色数を増やすことができる。