
===========
SDL on OS/2
===========

Last updated on May. 17, 2006.


1. How to compile?
------------------

To compile this, you'll need the followings installed:
- The OS/2 Developer's Toolkit
- The OpenWatcom compiler 
  (http://www.openwatcom.org)

First of all, you have to unzip the Watcom-OS2.zip file. This will result in a 
file called "makefile" and a file called "setvars.cmd" in this folder (and some
more files...).

Please edit the second, fourth and fifth lines of setvars.cmd file
to set the folders where the toolkit, the OW compiler and the FSLib are. 
You won't need NASM yet (The Netwide Assembler), you can leave that line.
Run setvars.cmd, and you should get a shell in which you can
compile SDL.

Check the "makefile" file. There is a line in there which determines if the 
resulting SDL.DLL will be a 'debug' or a 'release' build. The 'debug' version 
is full of printf()'s, so if something goes wrong, its output can help a lot
for debugging.

Then run "wmake".
This should create the SDL12.DLL and the corresponding SDL12.LIB file here.

To test applications, it's a good idea to use the 'debug' build of SDL, and
redirect the standard output and standard error output to files, to see what
happens internally in SDL.
(like: testsprite >stdout.txt 2>stderr.txt)

To rebuild SDL, use the following commands in this folder:
wmake clean
wmake



2. How to compile the testapps?
-------------------------------

Once you have SDL12.DLL compiled, navigate into the 'test' folder, copy in 
there the newly built SDL12.DLL, and copy in there FSLib.DLL.

Then run "wmake" in there to compile some of the testapps.



3. What is missing?
-------------------

The following things are missing from this SDL implementation:
- MMX, SSE and 3DNOW! optimized video blitters?
- HW Video surfaces
- OpenGL support



4. Special Keys / Full-Screen support
-------------------------------------

There are two special hot-keys implemented:
- Alt+Home switches between fullscreen and windowed mode
- Alt+End simulates closing the window (can be used as a Panic key)
Only the LEFT Alt key will work.



5. Joysticks on SDL/2
---------------------

The Joystick detection only works for standard joysticks (2 buttons, 2 axes
and the like). Therefore, if you use a non-standard joystick, you should
specify its features in the SDL_OS2_JOYSTICK environment variable in a batch
file or CONFIG.SYS, so SDL applications can provide full capability to your
device. The syntax is:

SET SDL_OS2_JOYSTICK=[JOYSTICK_NAME] [AXES] [BUTTONS] [HATS] [BALLS]

So, it you have a Gravis GamePad with 4 axes, 2 buttons, 2 hats and 0 balls,
the line should be:

SET SDL_OS2_JOYSTICK=Gravis_GamePad 4 2 2 0

If you want to add spaces in your joystick name, just surround it with
quotes or double-quotes:

SET SDL_OS2_JOYSTICK='Gravis GamePad' 4 2 2 0

or

SET SDL_OS2_JOYSTICK="Gravis GamePad" 4 2 2 0

   Notive However that Balls and Hats are not supported under OS/2, and the
value will be ignored... but it is wise to define these correctly because 
in the future those can be supported.
   Also the number of buttons is limited to 2 when using two joysticks,
4 when using one joystick with 4 axes, 6 when using a joystick with 3 axes
and 8 when using a joystick with 2 axes. Notice however these are limitations 
of the Joystick Port hardware, not OS/2.



6. Proportional windows
-----------------------

For some SDL applications it can be handy to have proportional windows, so
the windows will keep their aspect ratio when resized.
This can be achieved in two ways:

- Before starting the given SDL application, set the
  SDL_USE_PROPORTIONAL_WINDOW environment variable to something, e.g.:

  SET SDL_USE_PROPORTIONAL_WINDOW=1
  dosbox.exe

- If you have a HOME environment variable set, then SDL will look for a file
  in there called ".sdl.proportionals". If that file contains the name of the
  currently running SDL executable, then that process will have proportional
  windows automatically.

  Please note that this file is created automatically with default values
  at the first run.



7. Audio in SDL applications
----------------------------

Audio effects are one of the most important features in games. Creating audio
effects in sync with the game and without hickups and pauses in the audio are
very important things.

However there are multithreaded SDL applications that have tight loops as their
main logic loop. This kills performance in OS/2, and takes too much CPU from
other threads in the same process, for example from the thread to create the 
sound effects.

For this reason, the OS/2 port of SDL can be instructed to run the audio thread
in high priority, which makes sure that there will be enough time for the 
processing of the audio data.

At default, SDL/2 runs the audio thread at ForegroundServer+0 priority. Well 
written and well behaving SDL applications should work well in this mode.
For other applications, you can tell SDL/2 to run the audio thread at 
TimeCritical priority by setting an env.variable before starting the SDL app:

    SET SDL_USE_TIMECRITICAL_AUDIO=1

Please note that this is a bit risky, because if the SDL application runs a
tight infinite loop in this thread, this will make the whole system 
unresponsive, so use it with care, and only for applications that need it!



8. Next steps...
----------------

Things to do:
- Implement missing stuffs (look for 'TODO' string in source code!)
- Finish video driver (the 'wincommon' can be a good example for missing
  things like application icon and so on...)
- Enable MMX/SSE/SSE2 acceleration functions
- Rewrite CDROM support using DOS Ioctl for better support.



9. Contacts
-----------

   You can contact the developers for bugs:

   Area					Developer		email
   General (Audio/Video/System)		Doodle			doodle@scenergy.dfmk.hu
   CDROM and Joystick			Caetano			daniel@caetano.eng.br

   Notice however that SDL/2 is 'in development' stage so ... if you want to help,
please, be our guest and contact us!



10. Changelog of the OS/2 port
------------------------------

Version 1.2.10 - 2006-05-17  - Doodle
 - Small modifications for v1.2.10 release
 - Changed DLL name to include version info (currently SDL12.dll)

Version 1.2 - 2006-05-01  - Doodle
 - Modified makefile system to have only one makefile
 - Included FSLib headers, DLL and LIB file

Version 1.2 - 2006-02-26  - Doodle
 - Updated the official SDL version with the OS/2 specific changes.
 - Added support for real unicode keycode conversion.

Version 1.2.7 - 2006-01-20  - Doodle
 - Added support for selectively using timecritical priority for
   audio threads by SDL_USE_TIMECRITICAL_AUDIO environment variable.
   (e.g.: 
    SET SDL_USE_TIMECRITICAL_AUDIO=1
    dosbox.exe
   )

Version 1.2.7 - 2005-12-22  - Doodle
 - Added support for proportional SDL windows.
   There are two ways to have proportional (aspect-keeping) windows for
   a given SDL application: Either set the SDL_USE_PROPORTIONAL_WINDOW
   environment variable to something before starting the application
   (e.g.: 
    SET SDL_USE_PROPORTIONAL_WINDOW=1
    dosbox.exe
   )
   or, if you have the HOME environment variable set, then SDL12.DLL will
   create a file in that directory called .sdl.proportionals, and you can
   put there the name of executable files that will be automatically made
   proportional.

Version 1.2.7 - 2005-10-14  - Doodle
 - Enabled Exception handler code in FSLib to be able to restore original
   desktop video mode in case the application crashes.
 - Added the missing FSLib_Uninitialize() call into SDL.
   (The lack of it did not cause problems, but it's cleaner this way.)
 - Fixed a mouse problem in Fullscreen mode where any mouse click
   re-centered the mouse.

Version 1.2.7 - 2005-10-09  - Doodle
 - Implemented window icon support

Version 1.2.7 - 2005-10-03  - Doodle
 - Reworked semaphore support again
 - Tuned thread priorities

Version 1.2.7 - 2005-10-02  - Doodle
 - Added support for custom mouse pointers
 - Fixed WM_CLOSE processing: give a chance to SDL app to ask user...
 - Added support for MMX-accelerated audio mixers
 - Other small fixes

Version 1.2.7 - 2005-09-12  - Doodle
 - Small fixes for DosBox incorporated into public release
 - Fixed semaphore support (SDL_syssem.c)
 - Fixed FSLib to have good clipping in scaled window mode,
   and to prevent occasional desktop freezes.

Version 1.2.7 - 2004-09-08a - Caetano
	- Improved joystick support (general verifications about hardware).
	- Added support up to 8 buttons in 2 axes joysticks and 6 buttons in 3 axes joysticks.
	- Added support to environment variable SDL_OS2_JOYSTICK to specify a joystick.
	- Improved Joystick test to handle every type of joystick and display only relevant information.
	- Merged with Doodle 2004-09-08
	- Little tid up in README.OS2
	- Added explanation about SDL_OS2_JOYSTICK environment variable on README.OS2

Version 1.2.7 - 2004-09-07 - Caetano
	- Merged with changes in headers for GCC compiling.
	- Added Joystick support using basic IBM GAME$ support, allowing it to work with all joystick drivers since OS/2 2.1.
	- Improved joystick detection (hacked!). OS/2 do not allow real joystick detection, so... 
	- Modified makefile in test to compile "testjoystick". Anyway, it's useless, since it seems to cause a lot of trouble in OS/2 (because os video routines, not Joystick support).
	- Created separated Joystick test program to test only joystick functions.
	- Improved joystick auto-centering.
	- Improved the coordinate correction routine to use two scale factors for each axis.

Version 1.2.7 - 2004-07-05 - Caetano
	- Corrected the time returned by status in CDROM support (it was incorrect)
	- Added the testcdrom.c and corrected the linking directive (it was causing an error)

Version 1.2.7 - 2004-07-02a - Caetano
	- Corrected a little problem in a comment at SDL-1.2.7\test\torturethread.c, line 18 (missing */, nested comment)
	- Added CDROM support to tree (SDL-1.2.7\src\cdrom\os2\SDL_syscdrom.c)
	- Modified makefile (SDL-1.2.7\src\makefiles.wat and SDL-1.2.7\watcom.mif) to build with CDROM support
	- Added the "extra" SDL_types.h forgotten in 2004-07-02 version.

<End-Of-File>
