AND演算すると演算する数値をBIN$()で表示して1になってる桁だけ取り出される感じになるので、-65は&B1〜10111111だから、AND演算すると1~63と、65以上の数だと64をマイナスした数が残って、それを3と==判定してるってことになるんですね。
もしかしたら(I MOD 64)==3と同じ結果になりません?
当たり判定をしてるIF文を入れ子にすればいいんじゃないです?
最初のIFはSP同士の距離で判定、次のIFはSP同士の方向で判定って具合に。
スプライトの高さをSPH、SP管理番号0と1のY座標をSPY[0]、SPY[1]とするとして
SPHITSPで判定してるなら
IF SPHITSP(1,0) THEN IF SPY[1]+SPH<SPY[0] THEN そのまま終了 ELSEIF SPY[0]+SPH<SPY[1] THEN 音を鳴らして終了 ENDIF
みたいな。