使えないテクニック

MSX2 で中速 SCREEN5 1dot 横スクロール

MSX2+ 以降用に作成するなら VDP レジスタの R#26,#27 を設定すれば簡単。MSX2 でも動作させたい場合は R#18 を使う。BASIC で書くとこんな感じ。

100 DEFINT A-Z
110 SCREEN 5
120 SETPAGE ,1:LINE(0,0)-(255,211),0,BF                ' 裏ページを消去
130 SETPAGE ,0:CIRCLE(128,106),100                     ' テストのパターンを描画
140 A=0                                                ' 表示ページ
150 B=0                                                ' 画面補正位置
160 GOTO 230

197 '------------------------
198 'メインループ
199 '------------------------
200 REM COPY (…)-STEP(16,16),2 TO (240,B*16),1-A,PSET ' ここで新しいパターンを転送
210 COPY(16,B*16)-STEP(240,16),A TO (0,B*16),1-A,PSET  ' 16dot移動した物を裏へコピー
220 B=B+1                                              ' 位置変数更新
230 IF B>=16 THEN B=0:A=1-A:SETPAGE A                  ' ページ切り換え
240 VDP(19) = (VDP(19) AND &HF0) OR ((B - 8) AND 15)   ' 画面位置補正
250 GOTO 200

ポイントは画面転送を16回に分割している所。1回で全画面転送すると 1/60 秒以内に処理できないが、1/16程度ならそれなりの速度で転送できるはず。

実際にはマシン語等を使わないと実用的ではないでしょう。VSYNC で同期とりにくいし。べーしっ君でテストしたら結構滑らかに動いていた記憶が〜(って8年位前の話なんだが)。