Pixel perfect collisions never seemed to work for me so I wrote my own. enjoy:
function DCMSpriteCollision(sprite1,sprite2)
if Sprite Collision(sprite1, sprite2)
collision as boolean
collision=0
memnum=1
while memblock exist(memnum)=1
memnum=memnum+1
endwhile
make memblock from image memnum,sprite image(sprite1)
memnum2=memnum
while memblock exist(memnum2)=1
memnum2=memnum2+1
endwhile
make memblock from image memnum2,sprite image(sprite2)
text 0,0, str$(memnum)
text 0,20, str$(memnum2)
if Sprite X(sprite2)<=Sprite X(sprite1)
s2x=sprite X(sprite1)-sprite x(sprite2)
s1x=0
endif
if Sprite X(sprite1)<Sprite X(sprite2)
s2x=0
s1x=sprite x(sprite2)-sprite x(sprite1)
endif
if Sprite y(sprite2)<=sprite y(sprite1)
s1y=0
s2y=sprite y(sprite1)-sprite y(sprite2)
endif
if sprite y(sprite1)<sprite y(sprite2)
s1y=sprite y(sprite2)-sprite y(sprite1)
s2y=0
endif
if sprite x(sprite1)+sprite width(sprite1)<=sprite x(sprite2)+sprite width(sprite2)
e1x=sprite width(sprite1)
e2x=sprite width(sprite2)-( sprite x(sprite2)+sprite width(sprite2)-( sprite x(sprite1)+sprite width(sprite1) ) )
endif
if sprite x(sprite2)+sprite width(sprite2)<sprite X(sprite1)+sprite width(sprite1)
e2x=sprite width(sprite2)
e1x=sprite width(sprite1)-( sprite x(sprite1)+sprite width(sprite1)-( sprite x(sprite2)+sprite width(sprite2) ) )
endif
if sprite y(sprite1)+sprite height(sprite1)<=sprite y(sprite2)+sprite height(sprite2)
e1y=sprite height(sprite1)
e2y=sprite height(sprite2)-( sprite y(sprite2)+sprite height(sprite2)-( sprite y(sprite1)+sprite height(sprite1) ) )
endif
if sprite y(sprite2)+sprite height(sprite2)<sprite y(sprite1)+sprite height(sprite1)
e2y=sprite height(sprite2)
e1y=sprite height(sprite1)-( sprite y(sprite1)+sprite height(sprite1)-( sprite y(sprite2)+sprite height(sprite2) ) )
endif
//--start at 12--rgbb,rgbg,rgbr,rgba
savex1=s1x
savex2=s2x
for s1y=s1y to e1y-1
s1x=savex1
s2x=savex2
for s1x=s1x to e1x-1
if memblock byte(memnum, 12+(s1y*image width(sprite image(sprite1))+s1x)*4)>0 || memblock byte(memnum, 12+1+(s1y*image width(sprite image(sprite1))+s1x)*4)>0 || memblock byte(memnum, 12+2+(s1y*image width(sprite image(sprite1))+s1x)*4)>0
if memblock byte(memnum2, 12+(s2y*image width(sprite image(sprite2))+s2x)*4)>0 || memblock byte(memnum2, 12+1+(s2y*image width(sprite image(sprite2))+s2x)*4)>0 || memblock byte(memnum2, 12+2+(s2y*image width(sprite image(sprite2))+s2x)*4)>0
collision=1
endif
endif
s2x=s2x+1
next s1x
s2y=s2y+1
next s1y
if memblock exist(memnum)=1
delete memblock memnum
endif
if memblock exist(memnum2)=1
delete memblock memnum2
endif
endif
endfunction collision