📄 changelog
字号:
so we will go back to the correct resolution, and the mouse will ungrab in case of a segfault. A C version (mostly working?) of qinterpolatedown16short() has been added to pragmas.c, and the ASM version had a fix that allows ceilings to show (though they render incorrectly in the correct place, and now certain sprites segfault. Ugh. PageUp/PageDown scancodes now work, so you can raise and lower ceilings and floors. Changed caption in titlebar of windowed mode.08292000 - Matt Helsley contributed some ASM -> C conversions, and some test code to help with further porting. Cleaned up some cruft in the sdl_driver. Dan nailed another clobber list issue in pragmas.c. Thanks to Nicholas Vining, we now have a copy of Watcom C. Ryan sat down and stepped through the ASM in gdb (NOT fun at all), while Nicholas stepped through the DOS version in parallel. Eventually we stumbled upon some misassembled opcodes; we ended up filling some registers with a pointer, and not what the pointer pointed at! Ryan went through a_linux.asm and fixed all these, and now 3D mode is almost entirely FLAWLESS. This is so cool. Bedtime; I hope you all enjoy this. :) Thanks Nicholas!08302000 - GAME now works. There was something awful in multi.c, probably memory corruption with a static initializer, so SDL_Init() would die in XOpenDisplay(NULL). Yikes. I've stubbed out what game.c needs for multiplayer and put it in multi_tcpip.c (guess what THAT'S for. :) ). The original multiplayer code is completely modem and COMit based, and is useless anywhere but DOS, so this isn't a big loss. Added some support for building under Cygwin, but not much. Note that distributing binaries of BUILD built with Cygwin violates the GPL, due to newlib's license, so don't do it. But you can try compiling your own local copies. Where the hell did CONTRIB go? Quick rewrite of that file. Minor glitches and sound (and networking?) are the only things pending.08302000 - Temporary fix; either nsqrtasm() or its tables are not correct (our C rewrite gives exactly the same results as the ASM version, too), so we've replaced it with a call to the C runtime's sqrt() function, which seems to work fine. I hacked at getting better calls to timerhandler(); still not happy with the results. I also fixed some stuff in sdl_driver.c, so you can have resolutions > 320x200 in 3D mode. Use F4 in the game to change modes. Dunno how you change it in the editor, but you'll note that the 3D mode defaults to 640x480 now...this is where the editor SHOULD be, but I had 320, 320 hardcoded in _setgamemode() for some strange reason. Oh, and CONTRIB was lowercased. That's where it went. URL for this project is now listed on Ken's homepage.09012000 - Happy September. Code tree is now available via CVS, thanks to Matt and "witten". Dan fixed another keysym. port i/o macros were being called when changing to 3D mode in the editor; #ifdef'd to PLATFORM_DOS, now. Misassembled opcode in msqrtasm() is now fixed, so the function operates correctly. Removed the #if 0, so that ASM now gets used.09032000 - Dan fixed some printext16 calls in 2D mode. Added a BUILD_NOPENTIUM environment variable: if set, it disables PentiumPro/PentiumII/MMX optimizations. The code runs at more than 10fps less without the Pentium overlays on my box (62fps to 50fps in the start of nukeland.map at 640x480). I tried adding all the crazy compiler optimizations I could think of. First, anything above -O2 causes engine.c's compile to fail with a duplicate label from setgotpic. This is an optimizer bug in inline asm. It cuts and pastes it to inline it into each function, despite __volatile__ and the lack of an inline keyword on the function where the ASM exists, and you get a duplicate label. It's dumb. All the other optimizations I threw at it worked, including pentiumpro compilation, -fexpensive-optimizations, and -funroll-loops, but there was absolutely NO increase in frame rate. I imagine most of the time in 3D mode is being spent in a_linux.asm anyhow. If we ever get this converted to C, those optimizations will be more handy, I imagine, but for now, I've not committed the Makefile. Cleaned up the README. After some tinkering, I managed to get build to compile and RUN on Windows 98 with Cygwin. I can't distribute binaries of this, as it would violate the GPL. However, I will be merging the changes back into the main source once I figure out the best way how. Mostly, the inline ASM needed some hacks, but nothing I can cleanly #ifdef. Amazingly, mprotect() worked identically on Linux and Cygwin. The mind boggles. Changes that have made it into the CVS repository for the Cygwin work follow: Removed dependency on the SDL event thread (SDL_Init() fails on Win32 if you request an event thread), and put SDL_PumpEvents() calls into _idle() and _nextpage(). This seems to work fine, but there can be some breakage if there's a keyboard polling loop somewhere that doesn't call either of these functions. Added some %define macros to a_linux.asm to handle C compilers that append an underscore to C identifiers. Updated the Makefile for cygwin and other improvements.09052000 - Checked if Duke3d maps can be edited. Apparently they can be, but only sorta. Quitting from 2D mode only prompts you to save if you've changed something, now. Fixed the CVS info in README. Added Duke3D and Shadow Warrior data file info to README. Minor cleanups in the Makefile. Moved VIDEOBASE defines to display.h. _platform_init() now takes icon and titlebar titles, and has been updated in all drivers.02102001 - Someone on the 3DRealms Web Forums finds icculus.org: http://www.3drealms.com/cgi-bin/ultimatebb.cgi?ubb=get_topic&f=5&t=00131802132001 - (Five months later...ugh.) Dan noticed that my webpage is being discussed on the 3DRealms forums, so I went back into the code and finished the work to get this running under Cygwin. Here's the list of that work: Makefile is now more robust, added a non-__attribute__ version of asm_prohlineasm4() to a.h, moved some #includes in cache1d.c to prevent a double-definition of O_BINARY. Fixed the inline asm in engine.c and pragmas.c to handle C compilers that add underscores to identifiers. Removed the SDL_HWSURFACE flag in sdl_driver.c (didn't realize this is actually slower on most hardware, and it also breaks fullscreen mode in Win32 on my box). Had to #ifndef CYGWIN the fnmatch stuff in build.c until I find a portable, non-GPL solution.02142001 - Dan Olson nailed an assembly bug that caused segfaults in the 2nd overhead view in Ken's game. After that fix was applied, I tagged the current CVS as "final-non-win32", as I start the effort to make this thing compile as a native win32 executable with (gasp!) Watcom C. Lots of stuff is getting torn around, as assumptions get challenged: PLATFORM_UNIX vs. PLATFORM_DOS? Now there's a PLATFORM_WIN32. unix_compat.h's display stuff has been moved to display.h, and all the files include "platform.h" instead of unix_compat.h, which allows us to choose the correct compatibility header at compile time (win32_compat.h, unix_compat.h, or doscmpat.h). All the platform-specific includes (io.h, and such) have been moved into their respective compat header, which cleaned up a lot of mess. Just to keep it real with Cygwin, the Makefile now autodetects Cygwin, and sets the build properties accordingly. Using a non-Cygwin GCC on Linux doesn't set the Cygwin-related properties. SDL_INC_DIR and SDL_LIB_DIR can be set as environment variables, so you never need to touch the Makefile directly with Cygwin. "make clean" now cleans up various Watcom C output, and vi's annoying "~" backup files. Tons of patches and enhancements and little cleanups just to get this to build on Watcom. Thing builds now, but has lots of problems running, which will be resolved, hopefully, tonight. The Linux version still works fine, and presumably so will the Cygwin version. Overall, the quality of the port's codebase is improving through this effort. I wonder if the DOS version will build now...02152001 - Did initial work to get a protected mode DOS binary running again. Hey, why not? Not complete (compiles clean, no link). Lots of cleanups, and again, this is improving the quality of the port's codebase. As usual, the Linux, and presumably Cygwin, versions still compile clean and run. Haven't tried Watcom/Win32 tonight. Renamed dos_driver.c to dos_drvr.c, so you can build the DOS bits on a regular FAT filesystem. Added a Makefile.dos for use with Watcom C's wmake (based on Ken's original). Lots of other files touched. Added a "make package" rule to the Makefile, to improve the quality of my own life. Added (har) a FILEID.DIZ file, which is really used for the package's zipfile comment, but I always wanted to have one of those. :)02182001 - Removed the ENDLINE_CHAR stuff in build.c; that textfile reading code is now able to handle '\n', '\r', and "\r\n" endlines. The findfirst/findnext/whatnot code now works on Linux, Cygwin, and Watcom C (dos, and win32). It's still kludgy, though. More compat header cleanups. Figured out how to get SDL working fully with Watcom C (-ei command line to wcc386.exe, and declare your SDL callbacks as __cdecl, etc.).02192001 - More Watcom fixes; build.exe's 3D mode is now fully operational. One graphical glitch in 2D mode, still, but otherwise appears fully functional. Put safety checks in a.h. Put a fix in build.c's overheadeditor(), so it doesn't try to reference element -1 in an array when clicking the left mouse button. Other ASM cleanups. Fixed an annoying function declaration in bstub.c. Fixed an incorrect assumption in sdl_driver.c's VBE_setPalette() that was exposed by game.c under Watcom/win32. One quick addition of the keyword "extern" to game.c, and we have a working game.exe under Windows that isn't GPL encumbered. Woohoo! Added a Watcom/win32 Makefile, updated the README, and released win32 binaries.02202001 - Turned on more optimizations in the Watcom makefile, and cleaned it up/abstracted it for public use. Added an nt_win option to that makefile to make it not pop up a console window when started from an icon. Added README-win32bins.txt to the CVS repository. Fixme note to self added in engine.c, and an incorrect use of ASM in pragmas.h was repaired. Now the drawpixel16 function is working, closing the last bug specific to the Watcom/win32 port. Yay.02212001 - Fixed the timer bug! It was a one line change in game.c, pointed out by Matt Saettler. Amen. This led to a better abstraction: PLATFORM_TIMER_HZ, defined in platform.h ... Removed the wedged-in call to SDL_PumpEvents() in game.c...not needed anymore.02222001 - Ported the codebase back to DOS. Point wmake.exe at Makefile.dos.02262001 - Added code to enable write access to self-modified ASM memory pages so this will work on WinNT and Win2K. Discovered it wasn't needed, and the real problem is that Watcom produces an incorrect PE header in the generated EXE files. Steven Fuller dug up a program that fixes this, and did a ton of debugging. Added him to the CONTRIB file. Fixed Makefile.w32 and changed the default builds to optimized and not debug to make binary distribution easier. Automated the packaging of binary releases in Makefile.04262001 - EDuke 2.1 goes into private beta. Will it be the last release based on Ken Silverman's original BUILD object code for Duke Nukem 3D?05102001 - Embedded a Perl interpreter that runs a function in game.pl once per frame into the KenBuild game. This is just a test for a future project, and probably shouldn't be compiled by the average person. Changes to the Makefile, game.c, game.pl, and buildperl.[ch] were added. Changed all occurances of my email address from lokigames.com to linuxgames.com. One or two comment tweaks elsewhere. Updated README with SDL12 CVS instructions.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -