その場合はまず、キャラクタ(SP)の範囲と背景(BG)の領域とがぴったり重なるように移動させないといけないと思います.動きのオフセットを3にされていますが、これを16の約数にする必要があります。その上で、BGの左上位置がXYとも16の倍数になっているときだけ、キャラの上下左右に隣接するBGの情報をとってきて判定をするようにします。BGの縁の部分でBGがないところをBGGETしたときエラーになるかどうか、確認していませんが気になります。BGGETの返り値は,
AND 4096すればキャラ番号だけが残るようなので、それで判定できるかと思います。