スクロール(VSRAM)
スクロール(VSRAM)
プレーンA・プレーンBの水平スクロール量はVRAMに、
垂直スクロール量はVSRAMに配置します。
水平スクロール量はVRAMの任意の位置に下記4bytesのデータを配置します。
bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 AX9 AX8 AX7 AX6 AX5 AX4 AX3 AX2 AX1 AX0 0 0 0 0 0 0 BX9 BX8 BX7 BX6 BX5 BX4 BX3 BX2 BX1 BX0 AXx 0〜1024 = プレーンAの水平方向スクロール量 BXx 0〜1024 = プレーンBの水平方向スクロール量
VDPレジスタで全画面スクロールを設定している場合は上記4bytesだけです。
セル単位スクロール又はライン単位スクロールを設定している場合は、
ライン毎に上記4bytesのデータが必要になるので
4 * 224 = 896bytes 必要になります。
セル単位スクロールの場合VDPは32bytes飛びで値を読みますので、
不要なバイトの値は不特定で構いません。
垂直スクロール量はそれ専用のRAMとしてSVRAMが用意されています。
bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 AY9 AY8 AY7 AY6 AY5 AY4 AY3 AY2 AY1 AY0 0 0 0 0 0 0 BY9 BY8 BY7 BY6 BY5 BY4 BY3 BY2 BY1 BY0 AYx 0〜1024 = プレーンAの垂直方向スクロール量 BYx 0〜1024 = プレーンBの垂直方向スクロール量
全画面スクロールの場合は上記4bytesだけです。
セル単位スクロールの場合はセルの数だけ必要になるので、
320pixel(40cells)の場合は 40 * 4 = 160bytes 必要になります。