| |
| =========== |
| 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> |