主人公の座標X,Yを設定した後に@BGPUTを呼び出すと@BGPUTの サブルーチンの中でBGを描画する為に変数X,Yを使ってる為 BGPUT命令でOut of rangeが発生するということですよ。 Y=0を追加したらエラーは出なくなったと報告されていましたが プレイヤーの座標が指定した位置にならなかったと思います。 結論から言うと用途の違う変数に同じ名前を使うと思わぬ バグの原因になるということです。 @BGPUTの中で使っている変数X,Yは_X,_Yに書き換えて変数名が 被らない様にして下さい。