GUST NOTCH? DIARY

スプライトのテスト

海外ユーザーが「スプライトの表示が消えちゃうんだけどどうすればいい?」ということを聞いていたので、あー、多分スプライトの並べすぎだろうなぁ、と思ったので、そのプログラムを見ていたら、スプライトの拡大処理を使っていた。あー、こいつのせいで上限を超えてるんだろうなあ、と思ったんだけど、「マニュアルには99個まで使えるって書いてあるのに、俺は20個しか使ってないんだが」といわれたのでちょっと調べてみた。
マニュアルをみると、確かにスプライトは管理番号が0-99までの100個を管理できることになっている。

だが、拡大縮小できるのは32個まででもある。

あれ?制限しているなら全部表示できてもいいんじゃないの?と思ったので、実際のところどうなのかを試してみた。
こちらがそのテストプログラム。

プチコンが扱えるスプライトパターンは
8x8, 16x8, 8x16, 16x16, 32x8, 8x32, 32x16, 16x32, 32x32, 64x32, 32x64, 64x64
の12パターン。これらのサイズのスプライトを横に並べて見るということと、拡大縮小を伴うとどうなるか、というのを確認。
結論としては、幅が16dot以下のスプライトであれば、横に100個並べても全く問題ない。さすがだねー。
しかし、幅が16dotを超える場合、または幅が16dotでも拡大縮小を用いている場合はスプライトの欠損が生じる。最も右に表示されているものから消えていくようだ。もちろん、表示できていないだけで、そこには存在するし、きちんと管理はできている。
これ、拡大しているときはスプライトの数が増えているのだろうなと納得してたんだけど、縮小の時も同じように消える。とにかくそこにどのサイズでも表示可能な領域、早い話が元のスプライトの200%までの表示が可能なスプライトが確保されて描画されているのだと思う。ただし拡大率が100%の場合はきちんと元のスプライトを表示するようになっているらしい。最適化されてるんですね。