mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-14 21:37:52 -07:00
282 lines
10 KiB
Plaintext
282 lines
10 KiB
Plaintext
|
|
||
|
===========
|
||
|
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>
|