I remember having trouble phrasing the SetScale command documentation.
The SetScale command was added to simplify writing graphics programs for any screen size. All the math required to scale graphics is done automatically when you use SetScale correctly.
What you do is decide what resolution you are going to work in and then all screens become that size.
For simple graphics I may use:
This way when I program I can think of the screen coordinates in percentage (sort of). SetScale 100,200 assumes that the screen is (very) roughly twice as tall as wide. Point 50,100 will always put a point at the center of the screen.
The problem with doing all the math internally is that I had to make some scaling decisions for you. It is easy enough to scale 100 to 480 and 200 to 800, but I had to find a way to scale circles, text and bitmaps that did not skew them. A special diagonal ratio is calculated to scale circles, text and bitmaps.
diagonal ratio = actual diagonal screen length in pixels / SetScale diagonal length
The diagonal ratio is then used to scale the circle radius, text font size and Bitmaps (both x and y).
This system works fairly well, but it is not pixel perfect.
For pixel perfect graphics you might have to not use the SetScale command at all and do all the math yourself from the ScreenX() and ScreenY() functions.
Also, if you try to load a bitmap that is larger than the screen, it will be scaled down to the current screen size. This is required to prevent out of memory errors. This feature also allows you to load and display very large bitmaps that would not normally be possible.