📄 changelog
字号:
05192001 - Demands SDL_HWPALETTE, which seems to fix 8bit color targets. Added other debugging info to sdl_driver.c, and put the (commented out) starts of hardware surface/double buffering/page flipping support. Updated TODO.05222001 - Updated TODO again. Cleaned up engine.c's forward function references. Put together engine.h, so that the engine's exported functionality can be referenced via one header instead of a list of function declarations plugged into every file. Made everything that shouldn't be exported from engine.c static, but this is an error-prone process, so it'll probably get tweaked as other Build related code gets tried with this engine. Similar cleanups in build.c, display.h, and elsewhere. Laid foundation for an OpenGL renderer. No actual rendering is done, just context creation and library setup when _setgamemode() is called on a system that uses the SDL driver. This work may never get finished, but why not try? Flip the "useopengl" flag in the Makefile to use this code. Cleaned out a commented-out printf in maskwallscan(). Moved New static flag in engine.c: initengine_called is set when (surprise) initengine() is called. This is currently just used with the MMX overlay code...now dommxoverlay is no longer exposed; use setmmxoverlay() and getmmxoverlay() instead. Updated build2.txt with this information. Removed global var: cachedebug in engine.c, and put #define BUILD_CACHEDEBUG 0 at the top of the source. Flip it to 1 if you ever need to tinker in the cache code. Removed krecip() from engine.c, since nothing uses it (it just wrapped krecipasm(), which IS used all over the place). Other cleanups were made, along with update in build.txt. Lots of code was touched in ways not appropriate to mention in polite company.05232001 - Added lookup.dat support code, thanks to TerminX's help. Changed initgroupfile() to not exit() if the groupfile won't open(). instead, we check for failed return values in ExtInit() (bstub.c), like we should have done from the start. Added check in ExtInit() for the environment variable BUILD_GROUPFILE, which will be the groupfile to open if the variable exists. If the variable isn't set, we default to Ken's "stuff.dat". Between this and TerminX's lookup.dat code, we should be able to wander around a Duke3D map without segfaults all over the place. Changed initgroupfile() and kopen4load() to take a (const char *) argument. Should probably show some diligence in adding this elsewhere, too, for the sake of cleanliness and bughunting. Added some more function declarations to engine.h. Updated README with new info on Mapster and Duke3D.05262001 - Finally unearthed a copy of Watcom 11.0! Fixed up all the GNU inline asm so that the Watcom preprocessor wouldn't puke on it, and built new win32 binaries...apparently Watcom 11, unlike 10.6, can make a PE header that WinNT and Win2000 will accept. Moved the Win32 version up to SDL 1.2.0 from SDL-1.1.8, and added a Watcom __cdecl pragma in display.h for SDL_VideoDriverName(). Updated TODO.05272001 - Added engine.h to dos_drvr.c to get the DOS binaries to compile. Added README and CHANGELOG to the win32 and dos bin distros, and updated README-dosbins.txt and README-win32bins.txt. Updated README with info on Watcom 10 vs 11, porting to new OSes, etc. Updated TODO, AGAIN. :) Wrote a hopefully-robust function that toggles the screen surface between windowed and full screen without using SDL_WM_ToggleFullScreen(), so that you can use ALT-Enter on Win32. Accordingly, removed references to SDL_WM_ToggleFullScreen() in display.h and sdl_driver.c ... The new fullscreen toggle code throws up on Windows if you destroy the window (via SDL_SetVideoMode()) while in the middle of handling one of its events...we were processing all events via the SDL event filter during the SDL_PumpEvents() call. I've added handle_events() to sdl_driver.c, and replaced all the PumpEvents calls with that. This gets its events via SDL_PollEvent(), and passes them on to our filter manually. That's just generally better practice anyhow. Put hardcoded environment variables in sdl_driver.c into constants. Hall of mirror debugging, and all the BUILDSDL output to stderr is now all compiled in, and trigged by the existence of the BUILD_SDLDEBUG environment variable. Build now always claims to have standard resolutions (up to the largest your system claims to handle) available, and SDL will fake it if they aren't there. This should fix the Win32 F4 problem, and people without other modelines listed in their XF86Config. Also, by setting the environment variable BUILD_SCREENRES, you can add one window of any dimension to the list. For example, "export BUILD_SCREENRES=666x666".05282001 - Added a maximum screen resolution of 1600x1200. This can be raised or lowered with an environment variable: export BUILD_MAXSCREENRES=1024x768, if you like. Renamed BUILD_NO_MOUSE_GRAB to BUILD_NOMOUSEGRAB for consistency. Renamed BUILD_SCREENRES to BUILD_USERSCREENRES. Rewrote the spaghetti that all this resolution management code had quickly become. The fight with attempt_fullscreen_toggle() continues: gave up, and just called setbrightness() to fix the palettes. Now tries to use SDL_WM_ToggleFullscreen() first before doing it The Hard Way, and just returns if there's no window manager reported by SDL_GetVideoInfo->wm_available. All the debugging output (of which there is still more added today) has been cleaned up and is passed through a function called sdldebug() that is used like fprintf(stderr), but adds the "BUILDSDL: " string to the front, a newline to the end, and prints nothing if debugging is disabled. TODO is, as usual, expanding. Added BUILD_HALLOFMIRRORS environment var, so that it isn't bound to BUILD_SDLDEBUG anymore. The BUILD_SDLDEBUG variable now needs a value: the file to write debug information to. The value can be "-" to write to stdout. This is for that obnoxious win32 platform. :)05292001 - Added a hack for Windows systems using the "windib" driver. Apparently windib has no way to distinguish between the return key and the keypad enter, and they both come up as the former. Now, if you hold down SHIFT while hitting either return or the keypad enter, sdl_driver.c reports to the engine that the keypad enter was pressed. Now I can get into 3D mode on WinNT 4.0. :)05302001 - More toggle_fulscreen work. Check to see if the debug output file was opened, and printf() a warning if not. setbuf(..., NULL) was no longer called on stderr and stdout in sdl_driver.c's version of _platform_init(), but the buffer is set to NULL for the debug file now, which may or may not be stdout. Just for a goof, I added vmWare virtual machine detection code, which returns false in the portable C version, and does some lowlevel voodoo in i386 asm.06012001 - Added sdldebug() output to list the version of SDL we compiled against, and the version we are linked (dynamically) against.06082001 - It's Neurotic Cleanup Day! Started putting support for compiling with Visual C in place, and found how anal their anal settings can be (does this beat -ansi -pendantic on Linux? Probably not.). Converted all the "//" comments to "/*" (ugh), and added explicit casting where needed. Replaced references to "long long" with "__int64", which is #defined appropriately in the compat headers. Now compiling the codebase with -ansi and -pendantic on Linux and Cygwin. Changed PORTSIG in build.h. Moved the sound stubs out of sdl_driver.c and into a #ifndef PLATFORM_DOS block in game.c; it's KenBuild-specific, and I'm not interested in implementing it cleanly, or at all, for non-DOS platforms. Cleaned up rest of the forward references in game.c and build.c. Cleaned up the OpenGL debugging output (it's now unified with the sdldebug() code). Renamed a_linux.asm to a_nasm.asm, since it's used on Linux and Windows (and probably everywhere else that there's an x86 system that isn't using Watcom). Implemented stricmp() on unix (damned -ansi flag). Updated TODO and README. Changed the display driver function _initkeys into initkeys. This will force a link error in Build games, so they can be updated to call the driver's init function; updated this in build.txt, too.06122001 - Made mmulti.c compile with -ansi and -pedantic, as that might be needed later. Testing the OpenGL waters again. Added string_dupe() to replace strdup(), and changed a snprintf() call to sprintf() in sdl_driver.c, so I could remove the _GNU_SOURCE define.06132001 - Changed Unix makefile, so that you can (by setting usedlls=true) compile buildengine.so and buildnet.so, and the game and build binaries only statically link what is absolutely necessary. Setting usedlls=false statically links all the Build code together, although currently external libraries like SDL are still linked dynamically. Platform drivers now need to store _argv and _argc. Commented a few functions in engine.c as I start to grok what each bit of code does.06232001 - Cleaned up some whitespace issues in pragmas.c. The one SDL dependency in engine.c has been abstracted into _updateScreenRect() and implemented in the display drivers. OpenGL should now always be compiled in unless you can't even build it (and thus, I've officially flipped useopengl to "true" in the Makefile). You can now choose your renderer at runtime by setting the BUILD_RENDERER environment variable: Set it to "software" for the usual drill, "opengl2d" for using OpenGL to move the software-rendered framebuffer to the screen (got this idea from zsnes. cool.), and "opengl3d" to try to render an actual 3D scene in OpenGL. Default is "software". The 3D stuff hasn't even been started, since it'll need an actual implementation in engine.c. The gl2D stuff is an hour's work. After the 3D implementation is in there, I'll be adding Makefile flags and code #ifdefs to prevent compilation of the software renderer, which will end the need for most, if not all, of the assembly, and get us running on different platforms. I know, easier said than done. Other little cleanups and enhancements.06242001 - Followed through on my threat, and split off most of the OpenGL code into buildgl.c. :) Added more GL func pointers, and tried (failingly) to get OpenGL2D more working. It's way too slow; I guess all that conversion from 8-bit, through the lookup tables, to 32-bit, back to whatever the screen depth is, etc is expensive. Looks like it's just software rendering and full 3D. Sigh. More SDL cleanups. (committed on Aug 1st).07082001 - Implemented support for PhysicsFS in cache1d.c; this allows you to replace your GRP file with a compressed ZIP file. This is optional, since it's an extra dependency. PhysicsFS is another one of my projects, and information and source for it can be found at: http://www.icculus.org/physfs/ ... (committed on Aug 1st).07162001 - Moved CVS repository to icculus.org. Updated README.08012001 - Committed some stuff, fixed a bug in the PhysicsFS code. Flipped the useopengl flag in the Makefile back to false for now. Added PhysicsFS info to README. Changed all occurances of my email address from linuxgames.com to clutteredmind.org.--ryan. (icculus@clutteredmind.org)/* end of CHANGELOG ... */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -