567 lines
40 KiB
Plaintext
567 lines
40 KiB
Plaintext
|
/*
|
||
|
* CHANGELOG.
|
||
|
*
|
||
|
* Please do NOT harrass Ken Silverman about any code modifications
|
||
|
* (including this file) to BUILD.
|
||
|
*/
|
||
|
|
||
|
07112000 - Initial release from icculus. C code compiles, doesn't link, lots
|
||
|
of bastard assembly.
|
||
|
07122000 - LOTS of ASM cleanups by Andrew Henderson.
|
||
|
07132000 - Ryan adds some missing functionality: SDL equivalents for most of
|
||
|
the VESA functions, filelength(), and some other piddly stuff.
|
||
|
07142000 - Dan Olson cleans up the code a bunch, fills in a bunch of the
|
||
|
ASM routines with C equivalents, and puts some VESA replacements
|
||
|
in place. Other good stuff. Ryan cleans up some, too, put some
|
||
|
more stubs/implementations in place, and continues to flesh out
|
||
|
the SDL driver.
|
||
|
07212000 - A BUTTLOAD of updates. "build" links, and segfaults, because I
|
||
|
screwed up all the inline ASM that I did. Will be correcting,
|
||
|
shortly. "game" doesn't link yet. Haven't looked at it in detail.
|
||
|
Moved anything with i/o port calls into dos_driver.c, and put
|
||
|
stub equivalents in sdl_driver.c ... The setupmouse() function got
|
||
|
commented out because it was getting called before the video got
|
||
|
setup, I think. Will check. (never released.)
|
||
|
07272000 - Assembly in pragmas.c was borked (thanks to RYAN.), and is now
|
||
|
halfway fixed. Ryan will be fixing this completely Real Soon Now.
|
||
|
Other ASM may be screwey, too, if Ryan touched it, but the NASM
|
||
|
code that Andrew did is probably fine (mostly because he knows
|
||
|
what he's doing... :) )
|
||
|
07282000 - Fixed borked ASM code. Fixed a text file reading routine that
|
||
|
depended on finding DOS-style newlines. Moved some more stuff to
|
||
|
sdl_driver.c and dos_driver.c ...
|
||
|
07292000 - Fixes in pragmas.c by Dan Olson, who also knows more about this
|
||
|
inline ASM stuff than Ryan. Dan also cleaned up engine.c's ASM.
|
||
|
Thanks to Dan and Ryan, game.c now compiles, albeit with a
|
||
|
thousand warnings. "game" does not link yet.
|
||
|
07312000 - Thanks to Dan, "game" now links, other minor fixups by Ryan. Broke
|
||
|
up CHANGELOG into some standard docs. (README, CREDITS, etc...)
|
||
|
08012000 - Andrew does some graphic porting. Looks like we've got blocks where
|
||
|
fonts should be, and a mouse cursor. Huh. Ryan abstracts 0xa0000
|
||
|
addresses to VIDEOBASE define. Under non-DOS platforms, this is
|
||
|
currently "surface->pixels". Basic events were hooked up. Added
|
||
|
FreeVGA to README. Lots of fun new segfaults.
|
||
|
08042000 - Ryan gets the keyboard working apparently fully, and the mouse
|
||
|
sorta. The grid now draws correctly. No more segfaults on exit.
|
||
|
You can zoom in and out on the grid with the 'Z' and 'A' keys.
|
||
|
Fun, huh? sdl_driver's drawing routines (most notably, drawline16)
|
||
|
are MUCH more robust. Some minor structure changes. Other things
|
||
|
seem to work within build (space draws a line from a point to the
|
||
|
mouse, etc.), but I dunno what any of this means; must find a
|
||
|
BUILD HOWTO. Probably other stuff. Timer is hooked up, but SDL
|
||
|
won't fire a timer faster than every 10ms, or 100 times a second.
|
||
|
BUILD expects this timer to fire every 8.3~ seconds, or 120 times
|
||
|
a second. This may be problematic in the game, but it probably won't
|
||
|
be a problem in the BUILD editor, where it just handles keyboard
|
||
|
updates. An alternate timer system might get swapped in later.
|
||
|
Game still links, but aborts on initing the timer, since I need to
|
||
|
sync with the editor; Ken saw it fit to commit the mortal sin of
|
||
|
cut-and-paste instead of having a unified BUILD_Init() function,
|
||
|
so I need to update it to the new structure (using sdl_driver or
|
||
|
dos_driver, calling _platform_init(), blah blah blah...)
|
||
|
08052000 - Dan fixed an ASM screwup in getkensmessagecrc(). Ryan fixed the
|
||
|
mouse button event code. Added event thread, and some bits of
|
||
|
thread safety in sdl_driver.c. Mouse now seems to move okay if the
|
||
|
X11 cursor is hidden, and we grab the input. Goes to fullscreen
|
||
|
and grabs input by default; export BUILD_WINDOWED=y and
|
||
|
BUILD_NO_MOUSE_GRAB=y, respectively, to disable. Got myself a
|
||
|
copy of Duke3D Atomic Edition for the data files. Fixed the
|
||
|
#pragma packs in build.h. Fixed _platform_init() functions.
|
||
|
Improved SDL driver. Commented out a bunch of self-modifying ASM.
|
||
|
Dan got the fonts to display. Ryan got the correct palette loaded.
|
||
|
Lots of other little cleanups. Good stuff.
|
||
|
08062000 - Ryan fixed clear2dscreen() in SDL driver. It's (hopefully) correct,
|
||
|
now. Also, all that missing text should (hopefully) now display.
|
||
|
drawline16 is more correct now. Other little cleanups and
|
||
|
move-arounds. It seems that "pageoffset" is the big enemy around
|
||
|
here today. Hum.
|
||
|
08072000 - Ryan gets the BUILD title text to stop flickering. Prints our names
|
||
|
at exit (maybe someone will want to hump OUR legs, too). Added the
|
||
|
_idle() function to dos_driver and sdl_driver, and sprinkled some
|
||
|
calls through overheadeditor() in build.c ... ideally, we'd
|
||
|
eventually want to not have the editor wipe the surface and
|
||
|
redraw everything like mad constantly, but rather wipe and draw
|
||
|
as needed to choke the processor even less. Added implementation
|
||
|
of getfilenames() in build.c...seems to work well enough. Got
|
||
|
map loading dialog to appear (in the wrong place), but the arrow
|
||
|
keys don't seem to work to test further. Added caption to window's
|
||
|
title bar. Dan completely the Herculean effort of cleaning up
|
||
|
EVERY compiler warning in the editor. Other tinkering.
|
||
|
Adrian Neill and Christian Zander cleaned up all the compile
|
||
|
warnings in game.c and multi.c. Christian also supplied a shell
|
||
|
script to set the BUILD_* variables for developing. Ryan fixed
|
||
|
permissions of map files in saveboard() in engine.c. game.c had a
|
||
|
static variable called "sync" that conflicted with unistd.h's
|
||
|
sync() function, so the static's been changed to _sync. Fixed
|
||
|
more graphic stuff; pageoffset is just blindly set to zero on
|
||
|
Unix, now, and that seems to fix some stuff. printext16() was
|
||
|
changed to statusbar_printext16() in the appropriate places, so
|
||
|
I could remove my ypos += 336 hack in the actual implementation,
|
||
|
make this #define to regular printext16 on DOS, and be a one-line
|
||
|
function to add 336 to ypos in Unix. sdl_key_filter now has
|
||
|
support for extended keys; in init_new_res_vars(), just add keys
|
||
|
with values of 0xE0** where "**" is the normal value. This allowed
|
||
|
me to add the arrow keys and the keypad enter key. Tried loading
|
||
|
Ken's maps, and they WORK. With today's graphic fixes and the
|
||
|
arrow keys, you can select a file from the loading menu, and
|
||
|
navigate around in 2D mode. Cool. Switching to 3D mode segfaults
|
||
|
immediately. :) Changed sdl_driver to NOT double buffer, and
|
||
|
the SDL_Flip() call is now a screen-wide SDL_UpdateRect(). Added
|
||
|
Ken's maps for his test game to the archive.
|
||
|
08082000 - Added key bindings to sdl_driver: ALT-Enter (or ALT-Return) to
|
||
|
toggle between windowed and fullscreen, and CTRL-G to grab/ungrab
|
||
|
the mouse pointer. Increased sensitivity of mouse movement. Dan
|
||
|
fixed the editor's status bar; it now draws. I think Dan also
|
||
|
squashed the rest of the pageoffset annoyances in the editor.
|
||
|
Dan tracked down the line drawing problem, and Ryan patched some
|
||
|
ASM (clearbufbyte(), specifically), so you can add walls, now.
|
||
|
Things are REALLY starting to look good.
|
||
|
08092000 - ASM day. Fixes and fights from Dan and Ryan, with lots of wisdom
|
||
|
from Andrew. Realized that we were in violation of Ken Silverman's
|
||
|
license by not updating/including his copyright header on all
|
||
|
source files. This has been fixed; sorry, Ken. Other video stuff.
|
||
|
Tweakage. 3D mode no longer segfaults, but is still garbage.
|
||
|
08112000 - Fixed a bug; ALT-Enter wasn't changing sdl_flags, so next time you
|
||
|
changed resolutions, you went back to your original (non)windowed
|
||
|
state. Did the same for mouse grab state. Dan converted the ASM
|
||
|
for some more engine.c functions, and added a missing key to our
|
||
|
SDL scancode table. Hooked up keybindings in the (still not
|
||
|
functional) 3D mode. Discovered that we were missing some data
|
||
|
files. More sdl_driver tinkering. Moved stuff out of dos_driver's
|
||
|
_nextpage(), and back into the abstract engine.c section.
|
||
|
I don't know what I changed, but the sprite and vector squares
|
||
|
don't draw in the correct place anymore in engine.c's
|
||
|
draw2dscreen() ... culprit is something in sdl_driver.c...someone
|
||
|
diff this version against the last. Grrr. Generally, I'd fix this
|
||
|
before sending out a tarball, but it's 5:00a.m., and I need to get
|
||
|
something out the door here. Will fix for tommorow, and it doesn't
|
||
|
otherwise impede your use.
|
||
|
08122000 - Turned optimizations back on, and the broken drawing from last
|
||
|
night works again. Yikes. Dan stubbed out lots of the missing C
|
||
|
functions in a.c (someday, we'll fill really these in, I hope.),
|
||
|
and made mad progress on attacking our palette issues. Some compile
|
||
|
fixes (incomplete) to allow building without SUPERBUILD defined
|
||
|
(for removing voxel support...might be needed for pre-voxel games
|
||
|
like Duke3D...) The self-modifying ASM passes function parameters
|
||
|
in registers, so I needed to do an inline wrapper. This also now
|
||
|
sits in a.c. (Still crashes and otherwise doesn't WORK the same
|
||
|
in 3D mode, but still...) Added tiles000.art to the archive from
|
||
|
Duke3D shareware's duke3d.GRP file. I hope this doesn't violate
|
||
|
anyone's copyrights.
|
||
|
08132000 - (For reference, apparently GCC requires -O2 for inline asm to work.
|
||
|
That would explain the drawing barfs...) Dan fixed the status bar
|
||
|
(after Ryan broke it again. :) ), and moved krecipasm() into
|
||
|
a_linux.asm, since FPU opcodes don't inline correctly. Added Ken's
|
||
|
stuff.dat. As a milestone, 3D mode now seems to work a LITTLE.
|
||
|
Looking in the wrong place causes a segfault, and generally, what
|
||
|
very little draws seems mostly incorrect, but progress is being
|
||
|
made. Changed out all the collected data files with Ken's original
|
||
|
STUFF.DAT. initgroupfile() now aborts the program if it can't
|
||
|
open a data file. (Without stuff.dat, you get a blank surface, and
|
||
|
you have to blindly feel your way out of the program.) Dan also
|
||
|
started work on the command line tools, like kextract. Those are
|
||
|
in a separate tarball on the website.
|
||
|
08152000 - (Stuck at LinuxWorld...sorry for delays.) 3D mode now does not (by
|
||
|
default) segfault, and you can stumble around. Some walls seem to
|
||
|
render correctly. Lots of things cause segfaults. Disabled the MMX
|
||
|
overlays for now, as that is a little less self-modified code in
|
||
|
use. Dan fixed some keyboard scancodes (and also independently
|
||
|
fixed the same 3D mode things. hah. :) )
|
||
|
08192000 - Back from LinuxWorld. Added an obnoxious hall of mirrors detector
|
||
|
for 3D mode. _asm_slopevlin now returns immediately, which for now
|
||
|
stops most 3D mode segfaults. This will have to change, but it
|
||
|
helps for now. Put in a hack for checking frames-per-second.
|
||
|
Added some new keyboard scancodes.
|
||
|
08212000 - Another keyboard scancode added by Dan. Changed 3D mode to prompt
|
||
|
to save changes before dropping out of graphics mode; the stdio
|
||
|
thing was pretty obnoxious. Now we are basically waiting on a copy
|
||
|
of Watcom C to show up, so I can trace through the original code
|
||
|
and verify that I'm getting sane parameters and return values.
|
||
|
Needless to say, productivity has dropped off quite a bit.
|
||
|
08232000 - Dan found a screwup in the inlined dmulscale32()'s return value.
|
||
|
Consequently, now the hall of mirrors are gone. Cool. Walls seem
|
||
|
to render correctly all the time now. Other visual problems, and
|
||
|
no floors or ceilings, but this is a BIG win. Thanks, Dan! (A few
|
||
|
other ASM functions in pragmas.c had this problem. dmulscale32()
|
||
|
was the most noticable fix, though.)
|
||
|
08242000 - Dan added/fixed some more ASM. The SDL parachute is now in place,
|
||
|
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=001318
|
||
|
02132001 - (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.
|
||
|
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.
|
||
|
08232001 - Moved a.c to a_gnu.c and pragmas.c to pragmas_gnu.c. Added
|
||
|
pragmas_visual.c and a_visualc.c, and got everything compiling on
|
||
|
Visual C. Added VisualC.zip. Unzip it and use those files to build
|
||
|
with Visual C. Updated Makefiles, READMEs, etc with the new
|
||
|
*_[gnu|visualc]* files. Cleanups elsewhere. Added a "distclean"
|
||
|
target which just calls "clean". The Visual C project doesn't work
|
||
|
right now; I gave up on it.
|
||
|
06232001 - Fixed a hang when lotagging a wall (closing bugzilla bug #25).
|
||
|
|
||
|
--ryan. (icculus@clutteredmind.org)
|
||
|
|
||
|
/* end of CHANGELOG ... */
|
||
|
|