Anyway, first up is a sprite placement routine. It works as follows:
function spriteme(spritenum,imagenum,xres,yres,xpos,ypos,xcen,ycen)
remstart
the breakdown of the varibales is as follows:
spritenum = the sprite being positioned
imagenum = the loaded image that is being used for the sprite
xres = the x resolution, or width, of the screen that the sprite was designed for
yres = the y resolution, or height, of the screen the sprite was designed for
xpos = the original x position of the sprite on screen at the designed resolution
ypos = the original y position of the sprite on screen at the designed resolution
xcen = 1 if sprite to be centered horizontally after any scaling, 0 if not
ycen = 1 if the sprite is to be centered horizontally after any scaling, 0 if not
remend
xscale=100
yscale=100
xposoff=xpos
yposoff=ypos
if sprite exist(spritenum)=1 then delete sprite spritenum
if screen width()<>xres
temp#=(screen width()/(xres+0.0))
temp#=temp#*100
xscale=int(temp#)
temp#=(screen width()/(xres+0.0))
temp#=xpos*temp#
xposoff=int(temp#)
endif
if screen height()<>yres
temp#=(screen height()/(yres+0.0))
temp#=temp#*100
yscale=int(temp#)
temp#=(screen height()/(yres+0.0))
temp#=ypos*temp#
yposoff=int(temp#)
endif
sprite spritenum,xposoff,yposoff,imagenum
stretch sprite spritenum,xscale,yscale
if xcen=1 then sprite spritenum,(screen width()/2)-(sprite width(spritenum)/2),sprite y(spritenum),imagenum
if ycen=1 then sprite spritenum,sprite x(spritenum),(screen height()/2)-(sprite height(spritenum)/2),imagenum
endfunction
Once this function is added, you need only call it with the relevant line
spriteme(1,51,1680,1050,20,614,0,0)
for each sprite. The advantage here is that the sprite will hold it's exact proportions and position regardless of the screen resolution (more or less). I use it for my menu screen. and also for placing on screen text such as time limits, scores etc so that resolution changes aren't an issue. I suppose in theory it could be used for all the sprite placement work of a 2d game too, but it may be slow if you're calling hundreds of sprites 60 times a second - I don;t know, not tried it.
Attached is an example screen of the menu screen of my project, the level selection handled by sprites. In the comparrisons, the same exact same screen coords were passed at different resolutions - as you can see, placement is pretty good.