- ファミコンのプログラム4
478 :名前は開発中のものです。[sage]:2018/01/19(金) 00:29:11.92 ID:VhnRMljT - ファミコンはBGとスプライトの優先順位の指定をスプライト側で設定しますが
これだとスプライトの下に表示したいBGキャラと スプライトの上に表示したいBGキャラが隣接している場合で スプライトがその両方にまたがっている場合に スプライトの上に表示したいキャラに差し掛かった時点でスプライトの 優先表示を変えてしまうと、スプライトの下に表示したいBGキャラの部分でも BGキャラが上に表示されてしまうと思いますが、どういう処理をすればいいですか? 色々とVDPの仕様を調べると、セガマークIIIなどは、優先順位のフラグをBG側が 持っているので、何も考えなくても思った通りの優先順位で表示されそうですが ファミコンのようにスプライト側で優先順位を持っていると、優先順位が逆のBGに スプライトがまたがっている場合、どうしたらいいか分かりません。
|
- ファミコンのプログラム4
480 :名前は開発中のものです。[sage]:2018/01/19(金) 13:00:25.60 ID:VhnRMljT - >>479
ありがとうございます。そういった感じの解決法なんですね。 でも、なんだかスプライト側が優先順位のフラグを持っているのは 面倒な気もするのですが、スーファミでも変わらず同じ仕様のようですし 何かメリットがあるのですか? BG側が優先順位のフラグを持っていれば、BGキャラを表示する時点で フラグを設定する以外の事はしなくても済みますので、この方が便利で 合理的に感じます。 ところがスプライト側がフラグを持っている場合、スプライトキャラが移動するたびに BGキャラとの重なりチェックをしなければならず、そのBGキャラがスプライトの上に 表示されるべきBGキャラならばフラグを設定し、そうでなければまたフラグを戻すといった 処理がキャラを移動するたびに発生します。しかも、上記のように 優先順位が逆のBGキャラをまたいでいる場合は、様々な工夫が必要です。 それにもかかわらず、スーファミでもこの仕様を継承したということは この方法にもメリットがあるはずですが、さっぱり思いつきません。
|
- ファミコンのプログラム4
483 :名前は開発中のものです。[sage]:2018/01/19(金) 23:52:01.21 ID:VhnRMljT - >>481
ファミコンはVRAMが2KBしかないので よく考えたらそうですね、パレットですら4キャラで1つに 節約してるくらいですし。 何かソフトウェア技術的なメリットがあるのかと思って ここ3か月くらいずっと考えてたんですけど、思いつかなかったもので ここで聞いてみました。 >>482 スプライト側がフラグを持った方がいい場合もあるのですか? 自分はまったく思いつかないのですが・・・。 スプライト側がフラグを持つと、プログラマ側が色々な処理を しなければならず面倒ですけど、BG側がフラグを持ってくれると プログラマは何もしなくてよくてメリットしかないように思います。
|