原因はだにえるさんの答え通りです。 ただ他にも気になる点が多いですね…。とくにメインループの中で毎回SPSETしているのが気になりました。SPSETやSPSCALEなどは変更しないのであれば一度実行すればいいです。とくにSPSETには初期化の処理も含まれているので毎回実行すると毎回初期化されることになるので無駄も多くなります。 上記のプログラムでいえば、SPOFS以外はセット後の変化が無いのでWHILEより前に持ってきた方がいいと思います。 あとメインループの中にVSYNCが無いようなので、WHILEの下かWENDの上あたりにVSYNCを入れておいた方がいいと思いますよ。