From: Eric S. <sun...@cv...> - 2000-02-13 21:52:36
|
Date: Sunday February 13, 2000 @ 13:50 Author: sunshine Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory cvs1.i.sourceforge.net:/tmp/cvs-serv16839/libs/cssys/djgpp Added Files: djgpp.mak Log Message: Eliminated the monolithic and inflexible organization of the platform- specific system makefiles by removing them from the global CS/mk/system directory and placing them in the proper and respective subdirectories of CS/libs/cssys, thus achieving a more modular configuration. |
From: Andrew Z. <an...@cv...> - 2000-02-23 15:08:24
|
Date: Wednesday February 23, 2000 @ 7:05 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory cvs1.i.sourceforge.net:/tmp/cvs-serv20577/libs/cssys/djgpp Modified Files: djgpp.cpp Log Message: Rewritten texture manager and texture cache. Vastly improved software renderer. Lots of changes, too many to list them here. Will post a detailed message on the mailing list. |
From: Andrew Z. <an...@cv...> - 2000-03-06 13:00:53
|
Date: Monday March 6, 2000 @ 4:56 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory cvs1.i.sourceforge.net:/tmp/cvs-serv25837/libs/cssys/djgpp Modified Files: djgpp.cpp djgpp.h Log Message: Fixed the "virtual method called" problem when calling destructors for plugins from csSystemDriver::~csSystemDriver by implementing iBase directly in csSystemDriver class. The derived system drivers can override QueryInterface (and they do it indeed) to provide additional interfaces. |
From: Andrew Z. <an...@cv...> - 2000-03-13 13:31:25
|
Date: Monday March 13, 2000 @ 5:26 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory cvs1.i.sourceforge.net:/tmp/cvs-serv26137/libs/cssys/djgpp Modified Files: djgpp.cpp Log Message: -*- Serious change: Re-implemented DECLARE_TYPED_VECTOR so that it defines a *correct* overriden vector. Previously it worked incorrectly, that is, FreeItem() was incorrect. Because of this declared vectors missed the auto-clean feature. Note that map2cs used that much (mis-)features of the old DECLARE_TYPED_VECTOR that I had to make a local copy of the old-behavioured DECLARE_TYPED_VECTOR inside map2cs. Another user of DECLARE_TYPED_VECTOR is Crystal Clear, but I did not seen any manual cleanup of vectors: this is either a memory leak or possibly a design issue. In the later case Crystal Clear is slightly broken: you should decide whenever you want the auto-clean feature or not, and if not you should override FreeItem() with an empty declaration. -*- cskeys.h & cskeys.cpp: Two new routines for parsing a free-format string into a keyboard event and vice versa. Useful for supporting user-defined hot-keys. -*- I've added four new key codes to csinput: CSKEY_PADPLUS, CSKEY_PADMINUS, CSKEY_PADMULT, CSKEY_PADDIV. I've implemented support for them in OS/2, DOS/DJGPP, Win32. Other platforms will have to implement it. Note that MazeD already uses these keys, so you can use it as a test tool :) -*- Added fully configurable keyboard support in MazeD. You can assign any key combination supported by CS to any of more than 100 commands. You can have different layouts in MazeD.cfg file, this way: [MazeD] Key bindings = My own [My own key bindings] Based on = Default key bindings Q = Nothing Alt+X = Quit Ctrl+Alt+Space = About Ctrl+o = OpenWorld Ctrl+Ins = Nothing Ctrl+c = Copy ... Note that CASE actually MATTERS. I.e. Ctrl+c and Ctrl+C are completely different things (i.e. the second is actually Ctrl+Shift+c). -*- Implemented some more of the texture mapping dialog. Not complete yet but already something to look at :-) |
From: Eric S. <sun...@cv...> - 2000-03-13 20:49:20
|
Date: Monday March 13, 2000 @ 12:44 Author: sunshine Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory cvs1.i.sourceforge.net:/tmp/cvs-serv3450/libs/cssys/djgpp Modified Files: djgpp.mak Log Message: - Created makefile stubs mk/unix.mak and mk/dos.mak. These stubs each define makefile variables common to a particular class of platforms. Platform-specific makefiles now include one of these files (if desired) and possibly override the defined values (if necessary). - Modified all existing platform-specific makefiles to utilize these new stubs. |
From: Andrew Z. <an...@sl...> - 2000-04-17 07:43:13
|
Date: Monday April 17, 2000 @ 0:35 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv26206/libs/cssys/djgpp Removed Files: printf.cpp Log Message: these files are not used anymore |
From: Andrew Z. <an...@sl...> - 2000-04-17 08:44:34
|
Date: Monday April 17, 2000 @ 0:28 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv25653/libs/cssys/djgpp Modified Files: djgpp.cpp djgpp.h djkeysys.h idjgpp.h Log Message: -*- Moved (yet again :-) get_driver_2d() to unix/csosdefs.h. Now it is a static inline function thus it should work for software driver. There is no more system-dependent stuff in soft_g3d.cpp anymore. OS/2 implements its own get_driver_2d() which selects the MGL 2D driver (see below) if the executable is run in a full screen session. -*- Changed a bit one of 2D/3D driver paradigms: previously it was supposed that the pixel format is available before calling Open() (it was supposed to be clarified inside Initialize() call), from now you cannot know which pixel format will be used unless you Open'ed the drivers. This is because there are a lot of hardware environments with this limit, and up to now they just tried to guess the pixel format which will be used after Open(). Besides, this is a preparation to the changes that will allow us to dynamically switch the resolution/screen depth. Changed the csConsole plugin to load textures when system opens the main window rather than in Initialize() (texture manager is not available during Initialize()). Other than that, no other changes were required (to my surprise :-). -*- Finished the new SciTech MGL 2D driver. It is completely system-independent and should work more or less on all platforms supported by MGL (there is a catch though: I don't know how it will work on systems that implement keyboard/mouse input inside the system driver: the MGL event system and the one inside the system driver may interfer on some systems). It works perfectly on OS/2 although it is quite slow for now: I presume it is because I use the backbuffer in video RAM and video RAM is quite slow on my machine. The driver should be enhanced to be able to use back buffer in system memory. The driver supports a lot (I mean A LOT :-) of different resolutions and screen depths. We need some functionality (todo) in the 2D driver to query about available resolutions/screen depths. -*- Redesigned quite significantly the input system. Added preliminary joystick support. It almost works with the new MGL 2D driver (the joystick poll is commented out for now because it is a relatively slow operation). We need some way to enable joystick on demand, also we need a way to implement joystick calibration. The entire csinput library has been merged into cssys library. There is a new driver: csJoystickDriver. The keyboard and mouse drivers were removed from all system drivers, thus there may be minor compilation errors if I forgot something (I hope I didn't but who knows). -*- Redesigned a bit the plugin system: there is no RegisterDriver/ UnregisterDriver paradigm anymore. Instead of that, a new plugin attribute called "functionality identifier" is introduced. Read include/isystem.h for more information about it. -*- And of course lots of changes to the new loader. |
From: Andrew Z. <an...@sl...> - 2000-04-20 10:31:52
|
Date: Thursday April 20, 2000 @ 3:24 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv17744/libs/cssys/djgpp Modified Files: djgpp.cpp djgpp.h djgpp.mak djkeysys.s Log Message: -*- Fixed the DOS/DJGPP that was slightly broken after my last changes to csinput system. -*- Fixed MGL 2D driver. Now it always uses the backbuffer in system memory, now it run at least as fast as RAWDOS VBE 2.0 driver. Hmm... strange I see absolutely no gain by using hardware accelerated BitBlt over memcpy(). -*- Added a simple new tool called "textconv" which can be used to convert text back and forth between Unix and DOS line ending formats. -*- Improved the new loader of course. Now it loads sectors and things, I already see light at the end of tunel. -*- Fixed a lot of 2D drivers. The iGraph2D interface defines a function called GetDoubleBufferState () while some drivers still define the old fashioned DoubleBuffer() function which effectively made the application unable to query the real double-buffering state. This can fix some problems with double-buffering on Windows, for example. -*- Started to fix a part of the infamous Black Borders (BB) problem. The work is not finished so the lightmaps will be for now even worse than they were before, but it will be changed in near future. Please do not spend time fixing it. -*- Added a new macro DEBUG_BREAK in sysdef.h that is handy for setting debugger breakpoints (e.g. the debugger will break when that macro will be invoked). It is defined only in CS_DEBUG mode. |
From: Eric S. <sun...@sl...> - 2000-04-28 12:25:39
|
Date: Friday April 28, 2000 @ 5:17 Author: sunshine Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv21069/libs/cssys/djgpp Modified Files: djgpp.mak Log Message: Eliminated a bunch of out of date references to obsolete 'null' drivers. Network drivers have now moved to CS/plugins directory. |
From: Andrew Z. <an...@sl...> - 2000-05-03 07:19:32
|
Date: Wednesday May 3, 2000 @ 0:10 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv23277/libs/cssys/djgpp Modified Files: djgpp.h Log Message: -*- Removed all stuff related to the old way to do high-quality lightmaps. Removed csPolygon3D::ScaleLightmaps2X, csPolygon3D::UpdateLightmapSize, csLightMap::Scale2X. Removed all stuff required to support 2x lightmaps from csWorld. -*- Implemented a totally new way to do high quality lightmaps. It is supposed to produce more high quality lightmaps. Last but not least the new algorithm removes both infamous Black Borders {tm} problem as well as the old White Borders {tm} problem (WB were resolved in the previous implementation, but my new approach allows to resolve WBs even for dynamic lightmaps! Not done yet though...). My measurements also shows it is a lot faster... maybe it is a result of some bugs that are still left. dmburg level -recalc's with the old algorithm on my machine for 118 seconds, with the new algorithm it takes just 49 seconds. This could be due to bugs that are still existing though (very likely). -*- Fixed typo: frustrum replaced with frustum. There were thousands of such errors. The only thing left is to rename frustrum.cpp and frustrum.h. -*- "fclear on" in walktest now will clear zbuffer on every frame. -*- Separated the "antialiased polygon" code from polytext.cpp into a separate file in libs/csgeom. Now it is useable from any application/library. |
From: Eric S. <sun...@sl...> - 2000-05-07 07:31:38
|
Date: Sunday May 7, 2000 @ 0:31 Author: sunshine Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv7205/libs/cssys/djgpp Modified Files: djgpp.mak Log Message: Hopefully the last of the updates to account for the move of drivers from CS/libs to CS/plugins: cs2d --> video/canvas cs3d --> video/renderer csdnddrv --> sound/driver csdndrdr --> sound/renderer This update includes source code, makefiles, scripts, and documentation. |
From: Eric S. <sun...@sl...> - 2000-05-15 14:18:33
|
Date: Monday May 15, 2000 @ 7:17 Author: sunshine Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv3089/libs/cssys/djgpp Modified Files: djgpp.cpp Log Message: Renamed the following files and fixed references to them throughout the project: def.h --> csdef.h sysdef.h --> cssysdef.h types.h --> cstypes.h frustrum.h --> frustum.h frustrum.cpp --> frustum.cpp |
From: Andrew Z. <an...@us...> - 2000-07-24 11:49:10
|
Date: Monday July 24, 2000 @ 4:49 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv13180/libs/cssys/djgpp Modified Files: djgpp.cpp djgpp.mak Added Files: loadlib.cpp Log Message: -*- Added dynamic loader support for DJGPP. Added required detection routines to bin/dosconf.bat. If you have libdl installed (available from Crystal Space ftp site, and in near future from ftp.simtel.net) it will set USE_SHARED_PLUGINS to yes, otherwise to no. Also you may want to use shared versions of libpng, zlib, libjpeg. The dosconf.bat script looks for these libraries, and if available turns on the usage of shared version of respective libraries. You may have as well just one library in shared version, and other twos - in static version, each one is detected individually. -*- Removed someone's #ifndef YY_NO_NULLIFY_YYVAL from support/gnu/bison.sim. This is a very incorrect change since YYVAL is not always an int, in my case (csstdldr) it is a structure, and as such cannot be assigned NULL. A better approach would be to do: #ifdef YYVAL_ZERO yyval = YYVAL_ZERO; #endif but in any case I don't see the need for it - I don't get any warnings about uninitialized variables, at least with pgcc 2.95.2 in optimize mode. -*- Further work on the new loader. |
From: Andrew Z. <an...@us...> - 2000-08-04 12:58:36
|
Date: Friday August 4, 2000 @ 5:58 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv24123/cssys/djgpp Modified Files: djgpp.cpp djgpp.h djgpp.mak loadlib.cpp Log Message: -*- Implemented a new low-level event system architecture. Most programs won't notice any difference in top-level interface, only low-level interaction has been changed a little. Events are generated by iEventPlug objects. Any event plug plugs into an iEventOutlet which is the "front door" into the system driver event queue for the respective event source. When you register an iEventPlug object with the system driver, you get a pointer to the respective iEventOutlet. The QueueXXXEvent() methods are gone from iSystem. Instead, use the respective methods from iEventOutlet interface. Also there is an default system outlet (the 'back door' :-) which may be queried through GetSystemEventOutlet, use it if you don't consider that your plugin is worth to have a full-fledged connection with the system driver event queue. Note that the new event system allows to write a new generic "record/play" plugin which will, in record mode, record all events that pass through the system queue, and on other hand, emit all recorded events back into the system event queue. Writing one is left as homework for the reader :-) -*- New file: include/ievent.h. It defines the interface for any plugin which desires to generate events into the system event queue. Also it defines the interface for iEventOutlet objects, which are provided by system driver. -*- No more SetSystemDefaults routine in system-dependent drivers. Any settings must be queried from the respective plugins. For example if some canvas needs the "-shm/-noshm" option it should query it itself rather than relying on iUnixSystem driver to do it. Also most system-dependent interfaces (such as iDosSystem, iUnixSystem, iOS2System) are gone. I believe there is no need anymore in a private interface, and if you need just one-two additional system-dependent functions, you can always implement them through the new SystemExtension method of iSystem. -*- Cleaned up the iSystem interface. Lots of methods are gone, several new have been added. -*- The canvas-dependent command-line options have been moved to respective canvas drivers. The respective command-line help have been moved there as well. From now on: if you want to display any plugin-specific help, you should implement HandleEvent and handle the cscmdCommandLineHelp broadcast event. Upon reception of such an event you should display something like: Options for X-Windows 2D graphics driver: -sdepth=<depth> set simulated depth (8, 15, 16, or 32) (default=none) -shm/noshm SHM extension (default 'shm') -[no]sysmouse use/don't use system mouse cursor (default=use) -*- Note that because all QueueXXXEvent methods are gone from iSystem interface, some canvas drivers may not build. Here is the list of canvas drivers that I have fixed, use any of the drivers below for reference when fixing other canvas plugins. Fixed and tested: - CSDIVE canvas. - X-Windows 2D canvas - X-Windows Line2D canvas - OS/2 OpenGL canvas - MGL 2D canvas - AsciiArt canvas Fixed but not tested: - csalleg (cross-platform Allegro) canvas - unixglide canvas - svgalib canvas - gl/x canvas - ggi driver Not fixed at all: - BeOS drivers - Mac drivers Sorry, couldn't understand how they work :-) Some system drivers also can generate events. The following drivers were converted and tested to use new event architecture: - DOS/DJGPP Converted but not tested: - MacOS - Win32 - BeOS Not converted (Objective C :-(): - NeXT -*- Implemented National Keyboard Support. Every event plug has to provide two key codes - one is the "raw" keycode (Event.Key.Code) and one is the "cooked" code (Event.Code.Char). Old programs that use Event.Key.Code will still work but they will get just low-case characters (e.g. even Shift and/or Ctrl will be ignored). This also means that hotkeys like "shift+!" won't work anymore (instead use shift+1). I have fixed autoexec.cfg for this. National Keyboard Support should already work with most canvas drivers. I have tested it with X-Windows driver, OS/2 DIVE driver, MGL driver. If some driver cannot provide the "cooked" keycode (such as the DOS driver) it should provide "-1" as the character code, and the system driver will "cook" it itself. -*- Fixed X-Windows drivers so that they handle correctly the MappingNotify event. This enables support for languages that need more than one keymap (e.g. Cyrillic and others, maybe Japanese). -*- Removed elapsed_time and current_time arguments from NextFrame. Instead, I have added a new method called GetElapsedTime (time_t&, time_t&) into the iSystem interface. Call it if you really need the elapsed time. You can call it any times per frame you need. The time is updated only at the start of every frame. The NextFrame() method has no arguments now. -*- Redesigned the main application loop. The Loop method in system driver is still there, but it is basically just an: while (!Shutdown) NextFrame(); If your application does not need the loop, feel free to call NextFrame without arguments at appropiate times. Fixed all applications in CVS to use the new NextFrame prototype. However, for applications not in the repository you will have to fix this yourself. -*- Added the new -I or --info switch to gfxtest tool. Using this switch you can easily see the cause of translucent cubes in blocks: the respective png files (cubef3 and cubef4) have an alpha channel. -*- Added -a or --strip-alpha switch to same tool. Note that the blocks data file in repository has NOT been fixed; somebody still have to do it. -*- Fixed dependency generation with makedep - instead of $(OUT) prefix it used the expanded value of $(OUT) - thus when switching compilation mode, it was needed to rebuild dependencies. Not it is not the case anymore. -*- Added Z-none counterparts to ALL DrawPFX modes. In this mode the Z-buffer is ignored at all, thus it is the fastest mode. It can be used to display non-3D graphics with DrawPFX, for example user interface elements and so on (and even 3D graphics in depth sorted order). -*- Added Z-none, Z-fill and Z-use modes to per-pixel alpha routines. Now you can do: G3D->SetRenderState (G3DRENDERSTATE_ZBUFFERMODE, CS_ZBUF_ZUSE); G3D->DrawPolygonFX (...) The CS_ZBUF_NONE routine has the lesser overhead, of course. -*- Implemented Z-use and Z-fill modes for alpha-mapped walls (DrawPolygon). -*- Redesigned the iConsole interface. Basically I have tried to simplify it as much as possible; having very sophisticated interfaces does not make easy to write new plugins. Removed the dumb iCursor interface. The cursor should be provided by the console; if you don't like the cursor, write your own console. Redesigned the iConsoleInput interface. -*- Reimplemented cstools/simpcons as a new plugin. cstools library is now empty; don't know if it is really needed. -*- Fixed walktest to use the new console plugin. It is not tied anymore to csSimpleConsole private interface, thus can use any console plugins you will write in future :-) Also walktest will run now without a console at all. -*- Fixed a very seldom happening bug in software 3D driver that leads to crashes due to division overflow. -*- When the palette changes in 256-color modes, the texture manager will emmit an broadcast event so that all interested plugins (including consoles) can intercept it and query the appropiate drivers for new information. -*- Fixed the cscon plugin. The "xstdin" plugin has been removed (use the one in simpcon instead, it has absolutely same functionality), the "console.output.standard" and "console.output.funky" consoles works. You can even enable them in walktest application by uncommenting the respective lines from cryst.cfg. -*- Fixed an strange bug in software texture manager - in 8-bit modes the Scan.GlobalCMap was deleted at the end of PrepareTextures() although it is extensively used while the program is running ... -*- Fixed an very old bug in DrawPolygonFX() for software 8-bit modes. DST was incorrectly missed the screen palette table, thus all modes that involved DST (fixed-value alpha transparency and blending) did not worked. -*- Due to above event system redesign, Crystal Space Windowing System has been redesigned a little as well. The csApp class is now a plugin from system driver's point of view and receives events absolutely same way like any other plugin. Thus the look of the simplest CSWS application has been changed a little. See cswstest for details. -*- Crystal Space Windowing System does not implement its own system driver anymore. Instead, the csApp class is an "almost-normal" plugin now, except that it is created not via SCF (but rather with `new'). Also CSWS works with the system driver completely through the iSystem interface; this means CSWS and system driver don't have to be in the same module anymore. -*- Fixed MazeD so that it works with the new CSWS architecture. No other enhancements though :-( -*- The list of applications that were fixed after my changes: blocks cswstest demonets (at least compiles) dnapp (same) dtsimple makedep (:-) map2cs mazed mdl2spr (I hope) metademo ndrvdemo (compiles) nstp (not tested, but I believe) perftest (same) phyztest (same) pysimp (hell knows) scfreg simple squawk walktest (hah) Still broken: cctest shooter and libs/csgame wscs3d |
From: Andrew Z. <an...@us...> - 2000-08-04 13:52:46
|
Date: Friday August 4, 2000 @ 6:52 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv5446/libs/cssys/djgpp Added Files: printf.cpp Removed Files: idjgpp.h Log Message: -*- Implemented a new low-level event system architecture. Most programs won't notice any difference in top-level interface, only low-level interaction has been changed a little. Events are generated by iEventPlug objects. Any event plug plugs into an iEventOutlet which is the "front door" into the system driver event queue for the respective event source. When you register an iEventPlug object with the system driver, you get a pointer to the respective iEventOutlet. The QueueXXXEvent() methods are gone from iSystem. Instead, use the respective methods from iEventOutlet interface. Also there is an default system outlet (the 'back door' :-) which may be queried through GetSystemEventOutlet, use it if you don't consider that your plugin is worth to have a full-fledged connection with the system driver event queue. Note that the new event system allows to write a new generic "record/play" plugin which will, in record mode, record all events that pass through the system queue, and on other hand, emit all recorded events back into the system event queue. Writing one is left as homework for the reader :-) -*- New file: include/ievent.h. It defines the interface for any plugin which desires to generate events into the system event queue. Also it defines the interface for iEventOutlet objects, which are provided by system driver. -*- No more SetSystemDefaults routine in system-dependent drivers. Any settings must be queried from the respective plugins. For example if some canvas needs the "-shm/-noshm" option it should query it itself rather than relying on iUnixSystem driver to do it. Also most system-dependent interfaces (such as iDosSystem, iUnixSystem, iOS2System) are gone. I believe there is no need anymore in a private interface, and if you need just one-two additional system-dependent functions, you can always implement them through the new SystemExtension method of iSystem. -*- Cleaned up the iSystem interface. Lots of methods are gone, several new have been added. -*- The canvas-dependent command-line options have been moved to respective canvas drivers. The respective command-line help have been moved there as well. From now on: if you want to display any plugin-specific help, you should implement HandleEvent and handle the cscmdCommandLineHelp broadcast event. Upon reception of such an event you should display something like: Options for X-Windows 2D graphics driver: -sdepth=<depth> set simulated depth (8, 15, 16, or 32) (default=none) -shm/noshm SHM extension (default 'shm') -[no]sysmouse use/don't use system mouse cursor (default=use) -*- Note that because all QueueXXXEvent methods are gone from iSystem interface, some canvas drivers may not build. Here is the list of canvas drivers that I have fixed, use any of the drivers below for reference when fixing other canvas plugins. Fixed and tested: - CSDIVE canvas. - X-Windows 2D canvas - X-Windows Line2D canvas - OS/2 OpenGL canvas - MGL 2D canvas - AsciiArt canvas Fixed but not tested: - csalleg (cross-platform Allegro) canvas - unixglide canvas - svgalib canvas - gl/x canvas - ggi driver Not fixed at all: - BeOS drivers - Mac drivers Sorry, couldn't understand how they work :-) Some system drivers also can generate events. The following drivers were converted and tested to use new event architecture: - DOS/DJGPP Converted but not tested: - MacOS - Win32 - BeOS Not converted (Objective C :-(): - NeXT -*- Implemented National Keyboard Support. Every event plug has to provide two key codes - one is the "raw" keycode (Event.Key.Code) and one is the "cooked" code (Event.Code.Char). Old programs that use Event.Key.Code will still work but they will get just low-case characters (e.g. even Shift and/or Ctrl will be ignored). This also means that hotkeys like "shift+!" won't work anymore (instead use shift+1). I have fixed autoexec.cfg for this. National Keyboard Support should already work with most canvas drivers. I have tested it with X-Windows driver, OS/2 DIVE driver, MGL driver. If some driver cannot provide the "cooked" keycode (such as the DOS driver) it should provide "-1" as the character code, and the system driver will "cook" it itself. -*- Fixed X-Windows drivers so that they handle correctly the MappingNotify event. This enables support for languages that need more than one keymap (e.g. Cyrillic and others, maybe Japanese). -*- Removed elapsed_time and current_time arguments from NextFrame. Instead, I have added a new method called GetElapsedTime (time_t&, time_t&) into the iSystem interface. Call it if you really need the elapsed time. You can call it any times per frame you need. The time is updated only at the start of every frame. The NextFrame() method has no arguments now. -*- Redesigned the main application loop. The Loop method in system driver is still there, but it is basically just an: while (!Shutdown) NextFrame(); If your application does not need the loop, feel free to call NextFrame without arguments at appropiate times. Fixed all applications in CVS to use the new NextFrame prototype. However, for applications not in the repository you will have to fix this yourself. -*- Added the new -I or --info switch to gfxtest tool. Using this switch you can easily see the cause of translucent cubes in blocks: the respective png files (cubef3 and cubef4) have an alpha channel. -*- Added -a or --strip-alpha switch to same tool. Note that the blocks data file in repository has NOT been fixed; somebody still have to do it. -*- Fixed dependency generation with makedep - instead of $(OUT) prefix it used the expanded value of $(OUT) - thus when switching compilation mode, it was needed to rebuild dependencies. Not it is not the case anymore. -*- Added Z-none counterparts to ALL DrawPFX modes. In this mode the Z-buffer is ignored at all, thus it is the fastest mode. It can be used to display non-3D graphics with DrawPFX, for example user interface elements and so on (and even 3D graphics in depth sorted order). -*- Added Z-none, Z-fill and Z-use modes to per-pixel alpha routines. Now you can do: G3D->SetRenderState (G3DRENDERSTATE_ZBUFFERMODE, CS_ZBUF_ZUSE); G3D->DrawPolygonFX (...) The CS_ZBUF_NONE routine has the lesser overhead, of course. -*- Implemented Z-use and Z-fill modes for alpha-mapped walls (DrawPolygon). -*- Redesigned the iConsole interface. Basically I have tried to simplify it as much as possible; having very sophisticated interfaces does not make easy to write new plugins. Removed the dumb iCursor interface. The cursor should be provided by the console; if you don't like the cursor, write your own console. Redesigned the iConsoleInput interface. -*- Reimplemented cstools/simpcons as a new plugin. cstools library is now empty; don't know if it is really needed. -*- Fixed walktest to use the new console plugin. It is not tied anymore to csSimpleConsole private interface, thus can use any console plugins you will write in future :-) Also walktest will run now without a console at all. -*- Fixed a very seldom happening bug in software 3D driver that leads to crashes due to division overflow. -*- When the palette changes in 256-color modes, the texture manager will emmit an broadcast event so that all interested plugins (including consoles) can intercept it and query the appropiate drivers for new information. -*- Fixed the cscon plugin. The "xstdin" plugin has been removed (use the one in simpcon instead, it has absolutely same functionality), the "console.output.standard" and "console.output.funky" consoles works. You can even enable them in walktest application by uncommenting the respective lines from cryst.cfg. -*- Fixed an strange bug in software texture manager - in 8-bit modes the Scan.GlobalCMap was deleted at the end of PrepareTextures() although it is extensively used while the program is running ... -*- Fixed an very old bug in DrawPolygonFX() for software 8-bit modes. DST was incorrectly missed the screen palette table, thus all modes that involved DST (fixed-value alpha transparency and blending) did not worked. -*- Due to above event system redesign, Crystal Space Windowing System has been redesigned a little as well. The csApp class is now a plugin from system driver's point of view and receives events absolutely same way like any other plugin. Thus the look of the simplest CSWS application has been changed a little. See cswstest for details. -*- Crystal Space Windowing System does not implement its own system driver anymore. Instead, the csApp class is an "almost-normal" plugin now, except that it is created not via SCF (but rather with `new'). Also CSWS works with the system driver completely through the iSystem interface; this means CSWS and system driver don't have to be in the same module anymore. -*- Fixed MazeD so that it works with the new CSWS architecture. No other enhancements though :-( -*- The list of applications that were fixed after my changes: blocks cswstest demonets (at least compiles) dnapp (same) dtsimple makedep (:-) map2cs mazed mdl2spr (I hope) metademo ndrvdemo (compiles) nstp (not tested, but I believe) perftest (same) phyztest (same) pysimp (hell knows) scfreg simple squawk walktest (hah) Still broken: cctest shooter and libs/csgame wscs3d |
From: Andrew Z. <an...@us...> - 2000-08-07 10:07:51
|
Date: Monday August 7, 2000 @ 3:07 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv4440/libs/cssys/djgpp Modified Files: djgpp.mak Log Message: -*- Enhancements to win32gcc.mak. In fact, win32gcc is a fully working port with same features found in other programming environments: - dynamic libraries are supported - DirectDraw canvas - DirectDraw 6.1 canvas - Software renderer - Direct3D renderer I have not tried other Windows canvases (e.g. glide and OpenGL) but I think they will work as well, with minimum changes required. -*- Fixed makedep to not generate readonly files when they are missing. This is sometimes caused by uninitialized garbage in st_mode member of `struct stat'. -*- I have renamed libs/cssys/win32/printf.cpp into win32printf.cpp because it conflicts with libs/cssys/general/printf.cpp. -*- Moved WinMain() from win32.cpp back to exeentry.cpp. The reason why this is needed (Thomas, hear me!) is that some programs need just the WinMain() routine and don't need the SysSystemDriver (which is in win32.cpp). For example scfreg, makedep, gfxtest and other console programs don't use the SysSystemDriver, thus they don't need to be linked against DirectInput, DirectDraw, GUI libs and so on. They just become a lot smaller. This is also the case with DLLs - for some reason DLLs made with MinGW32 needs the WinMain function, thus every plugin gets the full load of routines in win32.cpp (just because WinMain was there). -*- Enhanced ddraw driver a lot (the one for software render). - setting mouse cursor now works (persistent) - moving window does not cause the image to stay at old position - moving other window on top of CS window does does not leave ugly traces (e.g. non-refreshed portions of window). - the region argument passed to ::Print() is handled properly - the window now has a titlebar and even a minimize button - Alt+Enter now toggles fullscreen/windowed mode - The contents of backbuffer are preserved during fullscreen/ windowed mode toggle. - Fixed the double buffering. In windowed mode only single-buffering is allowed, in fullscreen both double-buffering (page flipping) and single-buffering (blitting from backbuffer) works. CSWS works a lot faster in single-buffering mode. Hmm, strange. Just tried and found that even walktest works A LOT faster with single-buffering. With page flipping it gives about 20fps, when blitting from system memory it runs at 31fps (!!!) I will set double buffering to disabled by default... I have encountered a bug on Windows NT SP3 (with a Matrox Mystique videocard, don't know if this matters) - if you request an 16bpp videomode in fullscreen, you will really get just an 15bpp mode. This leads to strange colors if you started the program in windowed 16bpp mode and then switch with Alt+Enter to fullscreen or vice versa. On Windows98 this does not happen. -*- Applied same enhancements to DX61 driver. Tested only with software renderer though, I hope it will work with D3D renderer as well... -*- Enhancements to Windows system driver: - SetMouseCursor() is implemented now in system driver. From canvas driver you have to call: System->SystemExtension ("SetMouseCursor", CursorID); - When mouse is pressed inside CS window, the pointer is captured. Thus even when you move the cursor outside window the mouse position is continuously tracked. The mouse coordinates are send to system driver as signed values (they were unsigned). - DirectInput keyboard handling is not needed anymore. I have implemented perfect keyboard handling through normal Windows window messages. You can use DirectInput if you like buzzwords, but it won't give you absolutely anything. In fact, DirectInput handling is worse because it does not support national characters right now, and WM_CHAR supports it. In general, CSWS/MazeD works perfectly now with -*- Fixed history in simple console. It used to crash sometimes due to an uninitialized variable. -*- Fixed the Direct3D renderer. Well, my Matrox Mystique lacks alpha blending so I can't see if lightmaps really works, but without them it works. -*- Moved getopt.c && getopt1.c into cssys/general. Also I have unified these two files into one C++ files. Thus we have no plain C anymore anywhere. |
From: Andrew Z. <an...@us...> - 2000-08-09 14:19:17
|
Date: Wednesday August 9, 2000 @ 7:19 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv23135/libs/cssys/djgpp Modified Files: djgpp.mak Log Message: A few fixes |
From: Andrew Z. <an...@us...> - 2000-08-11 18:26:03
|
Date: Friday August 11, 2000 @ 11:26 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv24717/libs/cssys/djgpp Modified Files: printf.cpp Log Message: Removed console_open and console_close from all ports. Every system driver has lots of opportunities for initializing/shutting down its printf system, so there is no need in these. The console in Win32 port is driven by the cryst.cfg file as well as the command line. You may use the -[no]console switch to turn on/off the debug console, and you may set the DebugConsole=yes|no option in the [Microsoft Windows] section of the respective .cfg file. |
From: W.C.A. W. <wo...@us...> - 2000-08-12 06:58:33
|
Date: Friday August 11, 2000 @ 23:58 Author: wouter Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv16213/libs/cssys/djgpp Modified Files: loadlib.cpp Log Message: csLoadLibrary changed. |
From: W.C.A. W. <wo...@us...> - 2000-08-16 10:59:41
|
Date: Wednesday August 16, 2000 @ 3:59 Author: wouter Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv27921/cssys/djgpp Removed Files: djgpp.h Log Message: moving libs/cssys/..h to include |
From: Andrew Z. <an...@us...> - 2000-08-16 11:40:00
|
Date: Wednesday August 16, 2000 @ 4:39 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv13015/libs/cssys/djgpp Modified Files: djgpp.mak loadlib.cpp Log Message: -*- Changed InferInstallPathOf() into GetInstallPath(). Unlike before, the memory is not allocated inside the routine; instead you pass a pointer to a buffer and the size of the buffer; this solves the problem on platforms with different heaps in different modules. -*- Latest changes created the dependency SCF -> cssys which is bad. I have fixed that by adding an additional method called scfAddLibraryPath which should be used to set the directory where SCF should look for shared libraries. The effect of scfAddLibraryPath is incremental, that is, you may call it as many times as you wish; all these directories will be searched by scfLoadLibrary () to find shared libraries, in the order they were passed to scfAddLibraryPath (). The initial contents of this list is system-dependent, but as a general rule of thumb they will prefer the current directory first. This is so that any local installation of CS will override the global one. |
From: Andrew Z. <an...@us...> - 2000-08-16 13:51:17
|
Date: Wednesday August 16, 2000 @ 6:51 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv17063/libs/cssys/djgpp Modified Files: loadlib.cpp Log Message: Changed the way csLoadLibrary works. Now it accepts a full file name. There is a new routine called csFindLoadLibrary which does exactly the same like csLoadLibrary before. |
From: W.C.A. W. <wo...@us...> - 2000-08-21 11:58:34
|
Date: Monday August 21, 2000 @ 4:58 Author: wouter Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv18591/libs/cssys/djgpp Modified Files: djgpp.cpp Log Message: fixes include |
From: Andrew Z. <an...@us...> - 2000-08-21 14:58:06
|
Date: Monday August 21, 2000 @ 7:58 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv8632/libs/cssys/djgpp Modified Files: djkeysys.s loadlib.cpp Log Message: Some fixes for DJGPP. Will work with latest binutils and djgpp (binutils 2.9.5 and gcc 2.95.2). Latest binutils seems to spit on __attribute__((constructor)), thus I have used a C++ class for startup initialization of loadlib.cpp. The keyboard doesn't respond now though... dunno, maybe its related to my (weird) system configuration. |
From: Andrew Z. <an...@us...> - 2000-08-22 09:40:22
|
Date: Tuesday August 22, 2000 @ 2:40 Author: andyz Update of /cvsroot/crystal/CS/libs/cssys/djgpp In directory slayer.i.sourceforge.net:/tmp/cvs-serv26538/libs/cssys/djgpp Modified Files: djgpp.cpp djgpp.mak Log Message: Found one BigBug {tm} and one small bug that prevented DOS port from working. Now it works in both static and dynamic linking mode, with gcc 2.95.2 and binutils 2.9.5. Hurray. FPS for some reason stays at zero, but I'm not sure this is DJGPP-specific. Also for static linking mode csAddLibraryPath() is not called since it is not even present. |