投稿数が回復したので、少しだけコメントをプラスします。 主な改良としては、たくさんある配列がほとんど使い捨て程度にしか使われてなかったのでバッサリと削除しました。スプライトが使用されているかどうかはSPSET前ならSPUSEDという命令が利用出来るので、それを利用して使用スプライト(管理番号)を判別しています。 またCALL SPRITEで呼び出されるスプライトはCALLIDXで管理番号を得られるので、その番号をそのまま生かせば配列は不要になるので、そこも変わっています。 と言うことで今生きている配列は、3秒毎にスプライトを登場させる時に同じ場所(目的地?)に出ないようにチェックする為の配列だけになっています。 改良したプログラムも完全な意味で最適というわけじゃなくて、今の動作をトレースしつつ無駄を省くという感じで書き換えた感じです。その意味での問題は残ってるかも?