スカスカになる原因 48行目で、BGの続きを描く条件 SX MOD 16==0 がよくないです。移動量が1よりも大きい場合、16で割った余りが0にならないことがあります。 ぶっちゃけ、今は処理に余裕があり、BGPUTはとても速いので、このIFは無くても問題ありません。 もし無駄な BGPUT を省きたい場合は、48行目を消してこんな感じにします。 MAPX=FLOOR(SX/16) ' マップのマス目 IF MAPX!=OLDMAPX THEN ' 前とマス目が違う  OLDMAPX=MAPX ' 今のマス目を「前のマス目」にする  あとは49行目以降と同じでBGを描きます 左に進めない原因 SXがマイナスになったとき、エラーの出ている53行目でXもマイナスになるからです。対処方法は根本的に作りを変えるしかないかな…