RISCOS SDL port API notes
-------------------------

Last update 7th May 2003


Current level of implementation
-------------------------------

The following list is an overview of how much of the SDL is implemented. The areas match the main areas of the SDL.

video - Mostly done. Doesn't cover gamma, YUV-overlay or open gl.
Window Manager - Mostly done. SetIcon/IconifyWindow not implemented.
Events - Mostly done. Resize and some joystick events missing.
Joystick - Currently assumes a single joystick with 4 buttons.
Audio - Requires Digital Renderer module.
CDROM - Not implemented.
Threads - Not implemented.
Timers - Multiple timers not implemented.


SDL API notes
-------------

This section contains additional notes on some specific commands.

SDL_SetVideoMode
  On RISCOS a fullscreen mode directly accesses the screen. This can be modified by the environmental variable (SDL$<appname>$BackBuffer) or by using the SDL_SWSURFACE flag to write to an offscreen buffer that is updated using SDL_UpdateRects.
  Open GL is not supported so SDL_OPENGL and SDL_OPENGLBLIT flags fail.
  SDL_RESIZEABLE and SDL_NOFRAME flags are not supported.

SDL_SetColors
  In a wimp mode the screen colours are not changed for a hardware palette instead the RISCOS sprite colour mapping is used to get the best matching colours.

SDL_CreateCursor
   Inverted colour is not supported.

SDL_WM_ToggleFullScreen
   Currently this won't work if the application starts up in Fullscreen mode.
   Toggling to fullscreen will only work if the monitor is set up to support the exact screen size requested.

SDL_EnableUNICODE
   Unicode translation used here is only really accurate for 7 bit characters.

SDL_NumJoysticks/JoystickName etc.
   Hardcoded to expect only 1 joystick with 4 buttons if the Joystick module is loaded.

SDL_GetTicks
   Timer used has only a centisecond accuracy. This applies to other time related functions.
   
SDL_Delay
   Modified to poll keyboard/mouse and audio during the delay

SDL_SetTimer
   Sets a single non-threaded timer activated during polling so it may be delivered late.


Notes on current implementation
-------------------------------

Keyboard, mouse and audio are all polled so if too long a time is spent between a call to SDL_PumpEvents, functions that use it, or SDL_Delay events can be missed or the sound may sound incorrect or dissappear.

