したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が900を超えています。1000を超えると投稿できなくなるよ。

メガドライブやろうぜ!6

767名無しのメガドライバー:2019/01/26(土) 23:56:56 ID:jdm.WBFY0
>>761
BGをビットマップグラフィック代わりに使う場合だと、座標計算とアドレス計算が面倒だからね。

DMAで一気に転送する為のフレームバッファとして使える領域を用意しておく。
MDの8x8のBGキャラクタはパックドピクセル方式で1ドットは4ビット。1バイトで2ドット分。横8ドットで4バイト。合計32バイト。
1ドットの点を打つ場合はフレームバッファの内容を読み出して上位4bitか下位4bitいずれかを書き換えて書き込みって手順になる。

書きたい画面上の座標を計算した上で、その座標を元にフレームバッファ上のアドレスを計算して
上位下位どちらを書き換えるのかを決めた後に読み出して書き戻す。

問題なのがBGキャラクタだから、VRAM上のアドレスと座標が連続して並ばないって事。
X0,Y0から考えると横8ドットで4バイトなのだけど、次の4バイトはX8,Y0にならず、X0,Y1になっちゃう。さらに次の4バイトはX0,Y2。
33バイト目で次のキャラクタに移るからX8,Y0。

画面上でのX,Y座標をアドレスにする為の計算をCPUでやると負荷が大きすぎる。
規則性はあるからテーブルを用意しておけばある程度は負荷が減らせるとは思うけど。
ハードドライビンやスタークルーザーはこの無茶をやってるけど。

バーチャレーシングやMCDのDSPはBGキャラクタを使う事が前提にして
ハードウェアでデータを生成するから生成自体は早いみたいだけどね。あとはVDPのDMA転送任せと。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板