You can make a windowed game, that will run at any resolution... (yet still retain to a speciffic game resolution)
Global GfxWidth =ClientWidth(Desktop()) Global GfxHeight=ClientHeight(Desktop()) Const ResWidth# =640 Const ResHeight#=480 Win =CreateWindow("Test",0,0,GfxWidth,GfxHeight,0,0) Buffer=CreateCanvas(0,0,ResWidth#,ResHeight#,Win) BackgroundBuffer=CreateCanvas(0,0,GfxWidth,GfxHeight,Win) SetBuffer CanvasBuffer(Buffer) TextString$="This is a test" SetFont(LoadFont("Arial",58,True,False,False)) Color 255,255,255 Text (ResWidth#/2)-(StringWidth(TextString$)/2),(ResHeight#/2)-(StringHeight(TextString$)/2),TextString$ For i=1 To 30 Color Rand(0,255),Rand(0,255),Rand(0,255) Size=Rand(0,250) Oval Rand(0,ResWidth),Rand(0,ResHeight),Size,Size,0 Next SizeVertStep#=Float#(GfxHeight)/Float#(GfxWidth) SizeVert#=0 For SizeHorz#=0 To GfxWidth Step 1 SetBuffer CanvasBuffer(Buffer) SetGadgetShape(Buffer,(GfxWidth/2)-(SizeHorz#/2),(GfxHeight/2)-(SizeVert#/2),SizeHorz#,SizeVert#) SizeVert#=SizeVert#+SizeVertStep# FlipCanvas(Buffer) MoveMouse gfxwidth+200,gfxheight+200 Delay 1 Next SetGadgetShape(Buffer,0,0,GfxWidth,GfxHeight) Repeat Select WaitEvent() Case $803 : End Case $202 Color 255,0,0 Rect 0,0,640,480,0 FlipCanvas(Buffer) Case $203 SetBuffer CanvasBuffer(Buffer) Cls TextString$="MouseX="+MouseX()+" MouseY="+MouseY() SetFont(LoadFont("Arial",58,True,False,False)) Color 255,255,255 Text (ResWidth#/2)-(StringWidth(TextString$)/2),(ResHeight#/2)-(StringHeight(TextString$)/2),TextString$ For i=1 To 5 Color Rand(0,255),Rand(0,255),Rand(0,255) Size=Rand(0,250) Oval Rand(0,ResWidth),Rand(0,ResHeight),Size,Size,0 Next Color 255,255,255 Rect 0,0,reswidth#,resheight#,0 FlipCanvas(Buffer) SetGadgetShape(Buffer,0,0,MouseX(),MouseY()) End Select Forever