I'm sure's this has probably been done before, but here is a useful little function to rotate a sprite around it's centre regardless of it's shape. I've included a bit of demo code to give you an idea how to use it.
sync rate 50
cls rgb(255,255,255)
get image 1,0,0,10,100,1
do
cls 0
if leftkey()=1 then dec ang#
if rightkey()=1 then inc ang#
ang#=wrapvalue(ang#)
updatesprite(1,mousex(),mousey(),ang#,1)
loop
Function updatesprite(sn,sx#,sy#,ang#,imnum)
if sprite exist(sn)=0
sprite sn,sx#-image width(imnum)/2,sy#-image height(imnum)/2,imnum
endif
X#=sprite x(sn)
Y#=sprite y(sn)
R#=sqrt(((x#+sprite width(sn)/2)-x#)^2+((y#+sprite height(sn)/2)-y#)^2)
ofsetang#=atanfull((x#+sprite width(sn)/2)-x#,(y#+sprite height(sn)/2)-y#)
nx#=sx#-sin(-ang#+ofsetang#)*r#
ny#=sy#-cos(-ang#+ofsetang#)*r#
sprite sn,nx#,ny#,imnum
rotate sprite sn,ang#
endfunction
EDIT:
Alternatively it turns out you just use:
Offset sprite 1,sprite width(1)/2,sprite height(1)/2
...Well this is embarrassing