2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

MSXスレッド Part 53

636 :ナイコンさん:2021/04/20(火) 23:42:28.24 .net
スプライトダブラーは走査線で割り込んでスプライトネームテーブルを切り替えることで
割り込み1回で2倍表示…と思ってしまうのがニワカ頭で
(他スレの過去スレだが、それに気付いていないアホが独演会やって失笑浴びてた事がある、探してみるといい)
走査線でぶった切って何もフォローしないと文字通り走査線を境界にしてぶった切られてしまうので、
走査線を跨ぐパターンを幾つまで見込むか、というのが実装の際の悩みどころ

もちろん理想的には逐一判別して、必要な分(今まさに割り込みラスターを跨いでいるパターン)だけを次に引き継げれば言うことないが
スプライトダブラーを必要とした頃の処理能力ではそんな事やってる余裕はとてもじゃないが無かったので、
〇パターン分は固定で跨ぐ分と見込んでリザーブしておく、という実装が常識的
たとえば32パターン中16パターンは跨ぐ(割り込みの前後で位置とパターンを引き継ぐ)、とした場合
割り込み1回で増やせる見かけ上のパターンは半数の16パターンのみ
画面内で本来の2倍の見かけ数を実装する場合は、半数引き継ぎのラスター割り込みを2回掛ける必要があり、スプライトネームテーブルは3つ用意する必要がある

MSX2の場合は、裏ページに複数のスプライトテーブルをあらかじめ書き込んでおき、割り込み時には参照アドレスのみ変更することで効率的に切り替えることができるので、
メインループ内でスプライト64枚分のパターンと座標を算出しパターンネームテーブル3枚をあらかじめ仕立てておき、
Vブランク中にスプライトテーブル3枚分をVRAMへ転送、表示期間中にラスター63と91の終端でHブランクで割り込みをかけ
あらかじめVブランク中に書き込んでおいたスプライトテーブルの参照アドレスを0→1→2と切り替えることで、見かけ上2倍の表示スプライトダブラーとなる
(Vブランクでまた参照テーブルを0に戻す。割り込みが禁止されない限り、処理落ち(フレーム落ち)しても表示の破綻などの影響は受けない)

総レス数 1001
224 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200