X68000に限らず、モニタディスプレイに映像を表示するコンピュータシステムを 使う上で、「走査線」を意識することは必須です。
走査線はディスプレイに映っている映像を1ドットずつ描いているものの正体で、 非常に高速に、規則正しい動きをしています。
肉眼では見えませんが、CPUからその動きを監視でき、タイミング調整に有用なので、 理解を深めておくことをおすすめします。
走査線を理解するのに「光の色が変化する電球を掲げた台車」をイメージしてみます。
この台車は、表示画面の左端から右端まで、直線レールを比較的のんびりと等速直線運動で転がります。
右端についたら、台車ごと背負って左端まで猛ダッシュで戻り、折り返して助走します。
もう少し厳密に言うと、
これは高解像度モードの場合で、1周期は約31.75マイクロ秒、周波数はその逆数の31.5キロヘルツになります。
また、「のんびり直線運動」の間を「水平表示期間(データ表示期間)」と言い、 「猛ダッシュ折返し助走」は「フロントポーチ」「同期パルス」「バックポーチ」の合計です。
横の動きをしているレール全体も、上から下へ等速で降ろし、下の端に達したら猛ダッシュで上に巻き返します。
これも厳密に言うと、
これも合計で1周期は約18ミリ秒、周波数は55.46ヘルツです。60ヘルツよりも1割くらい遅いことに注目です。
横の動きをH-SYNC(水平同期)、縦の動きをV-SYNC(垂直同期)と言います。
1画面分の描画開始と終了は、V-SYNC状態を監視すれば分かるため、 この動きにメインルーチンの周期を一致させると、ゲームの動きが安定します。
vsync: @@: btst.b #4,$e88001 * 帰線期間から抜けることを確認 beq @b @@: btst.b #4,$e88001 * 表示期間が終わるまで待つ bne @b rts
$e88001は、MFP(マルチファンクションペリフェラル)のGPIPデータレジスタで、 4ビット目に、垂直表示期間なら1、垂直帰線期間なら0が反映されています。
上記のvsyncをメインルーチンからスーパーバイザーモードで呼び出せば、垂直帰線期間の一定のタイミングまで 待ってくれますので、フレームレートが安定することが期待できます。
ただ、この方法では空ループで毎フレーム最長18ミリ秒もCPUを無駄にしてしまいますので、 実用上は、割り込みを使って合わせる方法を使います。 その説明は長くなりそうなので、一旦区切ります。
Copyright©2026 カピバラ父さん