なぜかラスタースクロールの話がTLにあるが、ラスタースクロール系の技術を「画面をうねうねさせるもの」としか考えてない人ってわりといるのかな…
2011-09-29 15:04:05スプライトの同時表示枚数を増やしたり、画面同時発色数を増やしたり。これは割り込みでラスター系処理をしている場合。 RT @gorry5: なぜかラスタースクロールの話がTLにあるが、ラスタースクロール系の技術を「画面をうねうねさせるもの」としか考えてない人ってわりといるのかな…
2011-09-29 15:07:45@gorry5 プレーンが1でも画面の上下とかにステータス表示専用エリアをもうけることができる、ってのが一番利用された例かな?
2011-09-29 15:13:08@shinsan68k @gorry5 セガMKIII版「北斗の拳」は良くもまぁあのCPUパワーで遠近感のあるラスタースクロールをしていたものです。MC68000くらいだと1ラスター単位でも全然余裕でしたが。
2011-09-29 15:16:07@117Florian @gorry5 忍者龍剣伝3とかすさまじかったですな。SFC版でラスタースクロール全面カット・・・・え?FCより超劣化w
2011-09-29 15:17:42RT @yunyundetective: スプライトの同時表示枚数を増やしたり、画面同時発色数を増やしたり。これは割り込みでラスター系処理をしている場合。 RT @gorry5: なぜかラスタースクロールの話がTLにあるが、ラスタースクロール系の技術を「画面をうねうねさせるもの」としか考えてない人ってわりといるのかな…
2011-09-29 15:19:38ラスタースクロール=ダライアスボス面のアレ と思ってる人は確かに誤解してそうですね… RT @gorry5: なぜかラスタースクロールの話がTLにあるが、ラスタースクロール系の技術を「画面をうねうねさせるもの」としか考えてない人ってわりといるのかな…
2011-09-29 15:56:55今だと意識しなければいけないシーンはそうそうないが、CRTコントローラが扱うレジスタやメモリをCPUから触るときは「いまCRTが画面上のどこを走査しているか」を把握しなければならない時代があった
2011-09-29 16:20:47最も基本的なこととして、CRTは「1つの点が左から右、上から下に動きながら輝度を変えることで面を表現する」ことを知っておく必要がある。画面制御系のレジスタやメモリ内容をCRTへの信号に変えるのがCRTコントローラの役目
2011-09-29 16:20:54最初期は「画面走査中にCRT系のレジスタやメモリに触るとCRT制御に影響が出てノイズになる」ので「画面走査中はアクセスできないようにハード的に処理する」とか「CPUアクセス時は画面走査そのものを止める」とかだった
2011-09-29 16:21:00少し進むと、「CRTが画面走査中でも適宜CPUが書き込めるように配慮する」ようになり、また「画面走査中でない」ことをCPUで監視できるようにすることで高速転送が可能に。「監視しなくてもいいようにCPU割り込みをかけられる」ものも
2011-09-29 16:21:07「1つの点が左から右、上から下に動きながら面を描く」ということは、その点が右端へ到達したら左端へ戻す必要があり、下端に到達したら上端に戻す必要がある。これにかかる期間を帰線期間といい、それぞれ水平帰線期間・垂直帰線期間という
2011-09-29 16:21:14ゲームは高速大量に画面処理を行う必要があるので、帰線期間、それも比較的長い「垂直帰線期間」にまとめてアクセスすることが重要になる。また監視にCPUを割くのがもったいないので割り込みが重宝される。これが垂直同期(VSYNC)処理
2011-09-29 16:21:31もちろん、水平帰線期間も有効に使おうという考えはあり、同様に水平同期(HSYNC)処理といわれた。ただ、当時のCPUは性能が低くあまりできることがないと考えたのか実装はそれほど多くはなかった
2011-09-29 16:21:39HSYNCが検出できるようになると、「任意の水平帰線期間でCRTコントローラが扱うレジスタやメモリを書き換える」ことで、静的な表示では不可能だった表現を行うようになる。これがラスター処理といわれるもの
2011-09-29 16:21:47HSYNCを検出できないハードは珍しくなかったが、「CRTCがスプライトを描画するときに重なりがあったら割り込みを発する」機能を代替で使ったり、「VSYNCからの経過時間」をポーリングor割り込みで検出して代替することもあった
2011-09-29 16:21:57HSYNC処理でできることは「スクロールレジスタの書き換え」だけに留まらず、スプライト座標やパレットカラーの書き換え、CGの書き換え、画面の色モードや解像度の書き換えなど多岐に渡る
2011-09-29 16:22:08うねうね系のスクロールレジスタ変更は使いやすくてインパクトがあったのでよく使われ、ついにはラスター毎のスクロールレジスタまで持つに到ったと
2011-09-29 16:22:16このへんまでがラインバッファ系の画面表示のしくみで、フレームバッファ系の画面表示になるとこの手の知識はほぼ不要、せいぜい「VSYNCでバッファのフリップを行う」ことくらいしか知らなくてよくなる
2011-09-29 16:22:23ただ、フレームバッファ方式でも「1つのバッファをフリップさせず常に表示させ続け、垂直帰線期間に入ったらバッファの更新を始める」やり方もある
2011-09-29 16:22:41更新が間に合わないと画面が崩れるが、間に合うなら「ラインバッファ方式と同等のレイテンシで描画できる」利点があり、昨日TLに出ていたダブルバッファ方式のレイテンシの欠点はなくなる話につながる、と
2011-09-29 16:22:56@gorry5 ダブルバッファ方式でも、1フレーム分のCPU処理+GPU処理が1/60s内に完了しておりVSyncと同時にフリップ出来れば、原理的にはレイテンシの欠点は出ないですね。
2011-09-29 16:26:49