e14743d1 |
1 | |
2 | =========== |
3 | SDL on OS/2 |
4 | =========== |
5 | |
6 | Last updated on May. 17, 2006. |
7 | |
8 | |
9 | 1. How to compile? |
10 | ------------------ |
11 | |
12 | To compile this, you'll need the followings installed: |
13 | - The OS/2 Developer's Toolkit |
14 | - The OpenWatcom compiler |
15 | (http://www.openwatcom.org) |
16 | |
17 | First of all, you have to unzip the Watcom-OS2.zip file. This will result in a |
18 | file called "makefile" and a file called "setvars.cmd" in this folder (and some |
19 | more files...). |
20 | |
21 | Please edit the second, fourth and fifth lines of setvars.cmd file |
22 | to set the folders where the toolkit, the OW compiler and the FSLib are. |
23 | You won't need NASM yet (The Netwide Assembler), you can leave that line. |
24 | Run setvars.cmd, and you should get a shell in which you can |
25 | compile SDL. |
26 | |
27 | Check the "makefile" file. There is a line in there which determines if the |
28 | resulting SDL.DLL will be a 'debug' or a 'release' build. The 'debug' version |
29 | is full of printf()'s, so if something goes wrong, its output can help a lot |
30 | for debugging. |
31 | |
32 | Then run "wmake". |
33 | This should create the SDL12.DLL and the corresponding SDL12.LIB file here. |
34 | |
35 | To test applications, it's a good idea to use the 'debug' build of SDL, and |
36 | redirect the standard output and standard error output to files, to see what |
37 | happens internally in SDL. |
38 | (like: testsprite >stdout.txt 2>stderr.txt) |
39 | |
40 | To rebuild SDL, use the following commands in this folder: |
41 | wmake clean |
42 | wmake |
43 | |
44 | |
45 | |
46 | 2. How to compile the testapps? |
47 | ------------------------------- |
48 | |
49 | Once you have SDL12.DLL compiled, navigate into the 'test' folder, copy in |
50 | there the newly built SDL12.DLL, and copy in there FSLib.DLL. |
51 | |
52 | Then run "wmake" in there to compile some of the testapps. |
53 | |
54 | |
55 | |
56 | 3. What is missing? |
57 | ------------------- |
58 | |
59 | The following things are missing from this SDL implementation: |
60 | - MMX, SSE and 3DNOW! optimized video blitters? |
61 | - HW Video surfaces |
62 | - OpenGL support |
63 | |
64 | |
65 | |
66 | 4. Special Keys / Full-Screen support |
67 | ------------------------------------- |
68 | |
69 | There are two special hot-keys implemented: |
70 | - Alt+Home switches between fullscreen and windowed mode |
71 | - Alt+End simulates closing the window (can be used as a Panic key) |
72 | Only the LEFT Alt key will work. |
73 | |
74 | |
75 | |
76 | 5. Joysticks on SDL/2 |
77 | --------------------- |
78 | |
79 | The Joystick detection only works for standard joysticks (2 buttons, 2 axes |
80 | and the like). Therefore, if you use a non-standard joystick, you should |
81 | specify its features in the SDL_OS2_JOYSTICK environment variable in a batch |
82 | file or CONFIG.SYS, so SDL applications can provide full capability to your |
83 | device. The syntax is: |
84 | |
85 | SET SDL_OS2_JOYSTICK=[JOYSTICK_NAME] [AXES] [BUTTONS] [HATS] [BALLS] |
86 | |
87 | So, it you have a Gravis GamePad with 4 axes, 2 buttons, 2 hats and 0 balls, |
88 | the line should be: |
89 | |
90 | SET SDL_OS2_JOYSTICK=Gravis_GamePad 4 2 2 0 |
91 | |
92 | If you want to add spaces in your joystick name, just surround it with |
93 | quotes or double-quotes: |
94 | |
95 | SET SDL_OS2_JOYSTICK='Gravis GamePad' 4 2 2 0 |
96 | |
97 | or |
98 | |
99 | SET SDL_OS2_JOYSTICK="Gravis GamePad" 4 2 2 0 |
100 | |
101 | Notive However that Balls and Hats are not supported under OS/2, and the |
102 | value will be ignored... but it is wise to define these correctly because |
103 | in the future those can be supported. |
104 | Also the number of buttons is limited to 2 when using two joysticks, |
105 | 4 when using one joystick with 4 axes, 6 when using a joystick with 3 axes |
106 | and 8 when using a joystick with 2 axes. Notice however these are limitations |
107 | of the Joystick Port hardware, not OS/2. |
108 | |
109 | |
110 | |
111 | 6. Proportional windows |
112 | ----------------------- |
113 | |
114 | For some SDL applications it can be handy to have proportional windows, so |
115 | the windows will keep their aspect ratio when resized. |
116 | This can be achieved in two ways: |
117 | |
118 | - Before starting the given SDL application, set the |
119 | SDL_USE_PROPORTIONAL_WINDOW environment variable to something, e.g.: |
120 | |
121 | SET SDL_USE_PROPORTIONAL_WINDOW=1 |
122 | dosbox.exe |
123 | |
124 | - If you have a HOME environment variable set, then SDL will look for a file |
125 | in there called ".sdl.proportionals". If that file contains the name of the |
126 | currently running SDL executable, then that process will have proportional |
127 | windows automatically. |
128 | |
129 | Please note that this file is created automatically with default values |
130 | at the first run. |
131 | |
132 | |
133 | |
134 | 7. Audio in SDL applications |
135 | ---------------------------- |
136 | |
137 | Audio effects are one of the most important features in games. Creating audio |
138 | effects in sync with the game and without hickups and pauses in the audio are |
139 | very important things. |
140 | |
141 | However there are multithreaded SDL applications that have tight loops as their |
142 | main logic loop. This kills performance in OS/2, and takes too much CPU from |
143 | other threads in the same process, for example from the thread to create the |
144 | sound effects. |
145 | |
146 | For this reason, the OS/2 port of SDL can be instructed to run the audio thread |
147 | in high priority, which makes sure that there will be enough time for the |
148 | processing of the audio data. |
149 | |
150 | At default, SDL/2 runs the audio thread at ForegroundServer+0 priority. Well |
151 | written and well behaving SDL applications should work well in this mode. |
152 | For other applications, you can tell SDL/2 to run the audio thread at |
153 | TimeCritical priority by setting an env.variable before starting the SDL app: |
154 | |
155 | SET SDL_USE_TIMECRITICAL_AUDIO=1 |
156 | |
157 | Please note that this is a bit risky, because if the SDL application runs a |
158 | tight infinite loop in this thread, this will make the whole system |
159 | unresponsive, so use it with care, and only for applications that need it! |
160 | |
161 | |
162 | |
163 | 8. Next steps... |
164 | ---------------- |
165 | |
166 | Things to do: |
167 | - Implement missing stuffs (look for 'TODO' string in source code!) |
168 | - Finish video driver (the 'wincommon' can be a good example for missing |
169 | things like application icon and so on...) |
170 | - Enable MMX/SSE/SSE2 acceleration functions |
171 | - Rewrite CDROM support using DOS Ioctl for better support. |
172 | |
173 | |
174 | |
175 | 9. Contacts |
176 | ----------- |
177 | |
178 | You can contact the developers for bugs: |
179 | |
180 | Area Developer email |
181 | General (Audio/Video/System) Doodle doodle@scenergy.dfmk.hu |
182 | CDROM and Joystick Caetano daniel@caetano.eng.br |
183 | |
184 | Notice however that SDL/2 is 'in development' stage so ... if you want to help, |
185 | please, be our guest and contact us! |
186 | |
187 | |
188 | |
189 | 10. Changelog of the OS/2 port |
190 | ------------------------------ |
191 | |
192 | Version 1.2.10 - 2006-05-17 - Doodle |
193 | - Small modifications for v1.2.10 release |
194 | - Changed DLL name to include version info (currently SDL12.dll) |
195 | |
196 | Version 1.2 - 2006-05-01 - Doodle |
197 | - Modified makefile system to have only one makefile |
198 | - Included FSLib headers, DLL and LIB file |
199 | |
200 | Version 1.2 - 2006-02-26 - Doodle |
201 | - Updated the official SDL version with the OS/2 specific changes. |
202 | - Added support for real unicode keycode conversion. |
203 | |
204 | Version 1.2.7 - 2006-01-20 - Doodle |
205 | - Added support for selectively using timecritical priority for |
206 | audio threads by SDL_USE_TIMECRITICAL_AUDIO environment variable. |
207 | (e.g.: |
208 | SET SDL_USE_TIMECRITICAL_AUDIO=1 |
209 | dosbox.exe |
210 | ) |
211 | |
212 | Version 1.2.7 - 2005-12-22 - Doodle |
213 | - Added support for proportional SDL windows. |
214 | There are two ways to have proportional (aspect-keeping) windows for |
215 | a given SDL application: Either set the SDL_USE_PROPORTIONAL_WINDOW |
216 | environment variable to something before starting the application |
217 | (e.g.: |
218 | SET SDL_USE_PROPORTIONAL_WINDOW=1 |
219 | dosbox.exe |
220 | ) |
221 | or, if you have the HOME environment variable set, then SDL12.DLL will |
222 | create a file in that directory called .sdl.proportionals, and you can |
223 | put there the name of executable files that will be automatically made |
224 | proportional. |
225 | |
226 | Version 1.2.7 - 2005-10-14 - Doodle |
227 | - Enabled Exception handler code in FSLib to be able to restore original |
228 | desktop video mode in case the application crashes. |
229 | - Added the missing FSLib_Uninitialize() call into SDL. |
230 | (The lack of it did not cause problems, but it's cleaner this way.) |
231 | - Fixed a mouse problem in Fullscreen mode where any mouse click |
232 | re-centered the mouse. |
233 | |
234 | Version 1.2.7 - 2005-10-09 - Doodle |
235 | - Implemented window icon support |
236 | |
237 | Version 1.2.7 - 2005-10-03 - Doodle |
238 | - Reworked semaphore support again |
239 | - Tuned thread priorities |
240 | |
241 | Version 1.2.7 - 2005-10-02 - Doodle |
242 | - Added support for custom mouse pointers |
243 | - Fixed WM_CLOSE processing: give a chance to SDL app to ask user... |
244 | - Added support for MMX-accelerated audio mixers |
245 | - Other small fixes |
246 | |
247 | Version 1.2.7 - 2005-09-12 - Doodle |
248 | - Small fixes for DosBox incorporated into public release |
249 | - Fixed semaphore support (SDL_syssem.c) |
250 | - Fixed FSLib to have good clipping in scaled window mode, |
251 | and to prevent occasional desktop freezes. |
252 | |
253 | Version 1.2.7 - 2004-09-08a - Caetano |
254 | - Improved joystick support (general verifications about hardware). |
255 | - Added support up to 8 buttons in 2 axes joysticks and 6 buttons in 3 axes joysticks. |
256 | - Added support to environment variable SDL_OS2_JOYSTICK to specify a joystick. |
257 | - Improved Joystick test to handle every type of joystick and display only relevant information. |
258 | - Merged with Doodle 2004-09-08 |
259 | - Little tid up in README.OS2 |
260 | - Added explanation about SDL_OS2_JOYSTICK environment variable on README.OS2 |
261 | |
262 | Version 1.2.7 - 2004-09-07 - Caetano |
263 | - Merged with changes in headers for GCC compiling. |
264 | - Added Joystick support using basic IBM GAME$ support, allowing it to work with all joystick drivers since OS/2 2.1. |
265 | - Improved joystick detection (hacked!). OS/2 do not allow real joystick detection, so... |
266 | - 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). |
267 | - Created separated Joystick test program to test only joystick functions. |
268 | - Improved joystick auto-centering. |
269 | - Improved the coordinate correction routine to use two scale factors for each axis. |
270 | |
271 | Version 1.2.7 - 2004-07-05 - Caetano |
272 | - Corrected the time returned by status in CDROM support (it was incorrect) |
273 | - Added the testcdrom.c and corrected the linking directive (it was causing an error) |
274 | |
275 | Version 1.2.7 - 2004-07-02a - Caetano |
276 | - Corrected a little problem in a comment at SDL-1.2.7\test\torturethread.c, line 18 (missing */, nested comment) |
277 | - Added CDROM support to tree (SDL-1.2.7\src\cdrom\os2\SDL_syscdrom.c) |
278 | - Modified makefile (SDL-1.2.7\src\makefiles.wat and SDL-1.2.7\watcom.mif) to build with CDROM support |
279 | - Added the "extra" SDL_types.h forgotten in 2004-07-02 version. |
280 | |
281 | <End-Of-File> |