スプライト(ゴミ)の消し方

BASICにおいて、画面上のスプライトを消すには、以下の方法が考えられます(機械語については後述)。

任意のスプライトを消したい場合

PUT SPRITE sp,(n,y1),n,n

とします。ここで、sp=消したいスプライトの面番号、y1=217(SCREEN 4以上)または209(SCREEN 3以下)、nはどんな値でも構いません。

任意の番号以降のスプライトを消したい場合

方法1

「任意のスプライトを消したい場合」の方法を、任意の番号以降のすべてのスプライト面に対して行います。

方法2

PUT SPRITE sp,(n,y2),n,n

とすると、面番号sp以降のスプライト面は表示されなくなります。 ここで、y2=216(SCREEN 4以上)または 208(SCREEN 3以下)、nはどんな値でも構いません。
y座標をy2以外にすると表示を再開しますが、消えていたほかのスプライトも再び表示されます。 それを避けたい場合は、方法1で消してください。

画面上のすべてのスプライトを消したい場合

方法1

「任意のスプライトを消したい場合」の方法を、すべてのスプライト面に対して行う。

方法2

PUT SPRITE 0,(n,y2),n,n

とします。 ここで、y2=216(SCREEN 4以上)または 208(SCREEN 3以下)、nはどんな値でも構いません。
y座標をy2以外にすると表示を再開しますが、消えていたスプライトが再び元の場所に表示されます。 それを避けたい場合は、方法1で消してください。

方法3

VDP(9)=VDP(9) OR &B10

とします。この方法はMSX2以降の機種でのみ有効です。

VDP(9)=VDP(9) AND &B11111101

とすると表示を再開しますが、消えていたスプライトが再び元の場所に表示されます。 それを避けたい場合は、方法1で消してください。

機械語の場合

スプライトアトリビュート・テーブルのY座標を216(SCREEN 4以上)または208(SCREEN 3以下)にすると、その面番号以降のスプライトが表示されなくなります。

任意のスプライトを表示しないだけなら、スプライトアトリビュート・テーブルのY座標を217(SCREEN 4以上)または209(SCREEN 3以下)にすればよいです。

VDPのコントロールレジスタの8番のビット1を書き換えることによって、スプライト全体の表示/非表示ができます(0:表示 1:非表示)。

BASICによるスプライト消去法も、これらの応用です。


MSXの適当手帳 MSX駅 西山駅