ところで、このように何も考えずにスクロールに逆らってスプライトのy座標をずらしていくと、スプライトが突然消えてしまう怪奇現象(?)が発生することがあります。 ユーザーやメーカーに捨てられたMSXのたたりでしょうか??
タネを明かすと、スプライトのy座標が216(SCREEN 3以下なら208)となったときに、その番号以降のスプライトが消えてしまうのです。
この座標は通常画面下の方に隠れていて、スプライト消去用に使われるものなのですが(スプライト(ゴミ)の消し方参照)、ハードウェアスクロールによって、本来スプライトが消えてしまう座標まで現れてしまいます。
で、運悪くその座標とスプライトの座標が一致すると、その番号以降のスプライトが神隠しに遭ってしまうわけです。
こわいですね。
実のところ、TAKERUで発売中の某市販のゲームでも、この神隠しが見られたりします(^^;)。 名前は伏せときますけど。
対策としては、スプライトのy座標が計算上216(SCREEN 3以下なら208)となる場合は、それに1足し引きしたものをy座標とするのが一般的のようです。
こうすると、スプライトのy座標が問題の値になったときに、一瞬1ドット上下にずれることになりますが、基本的にそれほど大きな問題ではないでしょう。
市販のゲームで、縦スクロール中にスプライトが微妙に上下にずれるものがありますが、このような対策を取っているためでしょう。
なかには、あらかじめ縦方向に1ドットずらしたスプライトパターンを用意しておき、上記の方法と組み合わせて、一瞬でもスプライトが(見かけ上)ずれるのを防いでいるものもあるそうです。
要は、ハードウェアによる縦スクロール中は原則として、スプライトのy座標が216(SCREEN 3以下なら208)にならないように注意、ということでしょうか。
なお、MSX2+ 以降のハードウェア「横」スクロールの場合は、画面上のスプライトの位置は変化しません。