Graphic and Sound

sdlBasic syntax follows the Amos/darkBasic philosophy. There are some data banks (slots), called by number, where sounds and images are stored. Multimedia files are loaded from disk to slots by a specific set of commands, sdlBasic can handle different file formats for images, sound and music. Can be loaded and stored up to 32768 images and up to 1024 sounds files. Naturally is possible to change parameters values by writing on sources but, for ordinary use, current values should be quite enough.

Specific commands allow you to play sounds stored in sound slots using computer sound card. Sounds can be played through different sound channels so several sounds may be played at the same time. You can dynamically change the
maximum number of channels managed by sdlBasic for playing sounds.

sdlBasic offer two set of instructions for displaying images, that are stored in image slots, on computer monitor: they are called Sprites and Bobs. You can use up to 1024 sprites and 1024 bobs simultaneously on display. Bob and Sprites can be moved around without destroying any existing graphics on background, so they are perfect for the moving objects required by video games. Sprites and Bobs are "refreshed" (re-painted on computer monitor) each time a "screen swap" is performed. By apposite commands is possible to check collisions between sprites or between a bobs.
Sprites are completely independent from screens. If needed, they can be clipped by specific command within desired coordinates.
Bobs are very similar to sprites but, unlike them, they are relative to screens, that means that bob can't exist outside screen surface and that the bobs coordinate system is relative to its screen, so, if screen scrolls screen's bobs follow. You can decide on what screen a particular bob must operate. Bobs are perfect in program using large scrolling screens.


Display is where the graphical output is shown on computer monitor, it could be a window or the full screen. By default sdlBasic open a windows (640 x 480 pixels) with the desktop color depth. With the command setDisplay() you can change display parameters. Graphical output doesn't happen directly on display but it is executed into some virtual screens. sdlBasic allow 8 (0-7) virtual screens. A virtual screen is a sort of digital canvas where all graphic operations are executed . Screen 0 is opened by default with the display dimensions, that way it cover all the display surface. Naturally it's possible to change this parameters and to open and to close more screens. In video games it's common pratice to have a big screen for the game area and a smaller one for scores, lives etc.

Example:
screenOpen(0,640,400,0,0,640,400,0)
screenOpen(1,640,80,0,400,640,80,0)

This way screen 0 will have the size of 640x400 pixels and it will be in the upper side of display, at the same time screen 1, that will be 640x80 pixels, will be shown in the lower side of display, under screen 0.
It's possible to open screens bigger than it's visible size by writing:

Example:
screenOpen(0,6400,400,0,0,640,400,0)

The above example open a  viewport on display of 640x400 pixels but the screen is ten times wider and it contine outside the visible portion.
We can make it scroll by writing following command: 

Example:
offset(640,0)
so the screen will move at the x coordinate 640. Therefore, with the following routine
 for i= 0 to 6400-640
   offset(i,0)
   screenSwap
 next

This way we have a simple and efficient scrolling routine.
To switch from a screen to another, we will use the command screen(n), where n is the screen number 
All graphical commands operate on the current screen, that, if not specified, is last opened.
If, for performance reasons, you want to remove support to screens, you can use command directScreen(). Naturally this choice may bring some unwanted side effects but it will speed up programs considerably, especially on older and slower PC.