I have been working on solutions for this for the past month or two now ranging from scaling everything in proportion to the screen from creating my own borders (to replace black borders). I've come to the conclusion that there will always be a 'catch' to run an app on all screen sizes.
I've narrowed it down to 3 basic 'catches':
1: The sprite is either squished or stretched. e.g a circle will become an oval.
Small example (try different resolutions via setup.agc ):
// NOTE: This is for the percentage system. i.e those using SetDisplayAspect.
// set a 'base' resolution where all graphics appear at their normal size.
// For this example our base resolution will be 1024x768 as shown in the thread.
BaseWidth# as float = 1024.0
BaseHeight# as float = 768.0
// Store the physical screen width sizes
ScreenWidth# = GetDeviceWidth()
ScreenHeight# = GetDeviceHeight()
ScreenRatioX# = (100.0 / ScreenWidth#) * ( ScreenWidth# / BaseWidth#)
ScreenRatioY# = (100.0 / ScreenWidth#) * ( ScreenHeight# / BaseHeight#)
// Create a sprite
Spr = CreateSprite( LoadImage("yourimage.png"))
// scale the sprite
SetSpriteScale(Spr, ScreenRatioX#, ScreenRatioY#)
do
sync()
Loop
2: Scale the sprites but keep their sizes in proportion. The problem with this is background sprites may have parts of the image not visible on the screen and other sprites will appear slightly larger or slightly smaller than normal.
3: Put up with borders.
I'm afraid there will always be a catch but if your artist (or yourself) is clever, you can minimize the effects of these issues.