diff --git a/polymer/eduke32/Makefile b/polymer/eduke32/Makefile index 561a3c978..686ec5aa2 100644 --- a/polymer/eduke32/Makefile +++ b/polymer/eduke32/Makefile @@ -73,7 +73,8 @@ endif OURCFLAGS=$(debug) -W -Wall -Wimplicit -Werror-implicit-function-declaration \ -funsigned-char -fno-strict-aliasing -DNO_GCC_BUILTINS -DNOCOPYPROTECT \ - -I$(INC) -I$(EINC) -I$(SRC)/jmact -I$(SRC)/jaudiolib + -I$(INC) -I$(EINC) -I$(SRC)/jmact -I$(SRC)/jaudiolib \ +# -march=pentium3 -mtune=generic -mmmx -m3dnow -msse -mfpmath=sse OURCXXFLAGS=-fno-exceptions -fno-rtti LIBS=-lm diff --git a/polymer/eduke32/Makefile.deps b/polymer/eduke32/Makefile.deps index 8656e6ab4..dcf0cd899 100644 --- a/polymer/eduke32/Makefile.deps +++ b/polymer/eduke32/Makefile.deps @@ -58,13 +58,13 @@ $(OBJ)/mvreverb.$o: $(SRC)/jaudiolib/mvreverb.nasm $(OBJ)/mv_mix-c.$o: $(SRC)/jaudiolib/mv_mix-c.c $(OBJ)/mvreverb-c.$o: $(SRC)/jaudiolib/mvreverb-c.c $(OBJ)/pitch.$o: $(SRC)/jaudiolib/pitch.c $(SRC)/jaudiolib/pitch.h -$(OBJ)/multivoc.$o: $(SRC)/jaudiolib/multivoc.c $(SRC)/jaudiolib/usrhooks.h $(SRC)/jaudiolib/linklist.h $(SRC)/jaudiolib/pitch.h $(SRC)/jaudiolib/multivoc.h $(SRC)/jaudiolib/_multivc.h +$(OBJ)/multivoc.$o: $(SRC)/jaudiolib/multivoc.c $(SRC)/jaudiolib/linklist.h $(SRC)/jaudiolib/pitch.h $(SRC)/jaudiolib/multivoc.h $(SRC)/jaudiolib/_multivc.h $(OBJ)/fx_man.$o: $(SRC)/jaudiolib/fx_man.c $(SRC)/jaudiolib/multivoc.h $(SRC)/jaudiolib/ll_man.h $(SRC)/jaudiolib/fx_man.h $(OBJ)/dsoundout.$o: $(SRC)/jaudiolib/dsoundout.c $(SRC)/jaudiolib/dsoundout.h $(OBJ)/openal.$o: $(SRC)/jaudiolib/openal.c $(SRC)/jaudiolib/openal.h $(OBJ)/dsl.$o: $(SRC)/jaudiolib/dsl.c $(SRC)/jaudiolib/dsl.h $(EINC)/compat.h -$(OBJ)/midi.$o: $(SRC)/jaudiolib/midi.c $(SRC)/jaudiolib/standard.h $(SRC)/jaudiolib/usrhooks.h $(SRC)/jaudiolib/music.h $(SRC)/jaudiolib/_midi.h $(SRC)/jaudiolib/midi.h +$(OBJ)/midi.$o: $(SRC)/jaudiolib/midi.c $(SRC)/jaudiolib/standard.h $(SRC)/jaudiolib/music.h $(SRC)/jaudiolib/_midi.h $(SRC)/jaudiolib/midi.h $(OBJ)/mpu401.$o: $(SRC)/jaudiolib/mpu401.c $(SRC)/jaudiolib/mpu401.h $(OBJ)/music.$o: $(SRC)/jaudiolib/music.c $(SRC)/jaudiolib/music.h $(SRC)/jaudiolib/midi.h $(SRC)/jaudiolib/mpu401.h diff --git a/polymer/eduke32/build/ChangeLog b/polymer/eduke32/build/ChangeLog deleted file mode 100644 index d04af939e..000000000 --- a/polymer/eduke32/build/ChangeLog +++ /dev/null @@ -1,495 +0,0 @@ -8 Jun 2004 - - * Transparency bug noticed by Usurper should now be fixed. - * MD2 definition problem noticed by Parkar should also be fixed too. - - -5 Jun 2004 - - * Some foolish bugs in my (JonoF) code in the MD2 stuff now fixed. - * Linux should be fine now. At least, it worked on my machine. - - -3 Jun 2004 - - * MD2 model support is official now. We've also added a script reader - for the new .DEF format. KenBuild uses KENBUILD.DEF for its stuff. - - -26 May 2004 - - * glusecds is set to 0 by default now. The glusecds console variable - can be set to 1 to enable the use of the ChangeDisplaySettings() - function which works better for Intel video chipsets. - - -22 May 2004 - - * Gave things a nice overhaul to cut back the insanity of the - classic/softpolymost/glpolymost stuff. It was beginning to scare - me. The underhanded and behind-the-back tricks are banished. - - The whole rendermethod thing is gone. Now, setgamemode() and - related paraphenalia all accept a 'bits-per-pixel' parameter. - Colour depths > 8 are forced to use GL polymost (naturally). - 8bpp modes can use the regular renderer, and the software polymost - stuff. This means switchrendermethod() is removed from the layers. - - SDLayer.c is back in sync too, so Build on Linux works again. - - -8 May 2004 - - * Finally remembered to add 33%/66% translucency support to hightile - tiles. - - -8 Mar 2004 - - * Added setpalettefadeclamps() to allow continual palette tinting - effects. - * Added back PCX format screenshot saving. The new screenshotformat - console variable selects whether to take PCX format (= 0, default) - or TGA format (= 1). - - -12 Feb 2004 - - * Greyscaling and inverting of tiles in hightile/polymost added. - This makes Duke's nightvision work better for Hightile textures - that use palette 6. - - -11 Feb 2004 - - * Broke out the non-OSD related commands from osd.c into baselayer.c. - * Added alternative display mode setting method using - ChangeDisplayMode() which can optionally be used for OpenGL mode - changes. Set the environment variable BUILD_USEGLCDS=TRUE to use. - * Added the glcolourdepth variable for selection of fullscreen GL - colour depth. - * Changed OSD_HandleKey() to not ignore releases, otherwise the game - world will always think its keys are held down. It ignores presses - though, which we want. - - -10 Feb 2004 - - * Added some protection to [k]?dfread() to indicate whether they - have failed to decompress some bytes so that the game doesn't - crash if a demo or savegame is fragged. - - -7 Feb 2004 - - * Hightile integration seems fine now. New functions to specify - replacement textures and palette tints can be seen in build.h. - * Joystick support is added. Seems to work. - * Hopefully a change I've made to the tile selector in Build when - using OpenGL mode has fixed the problem of the edges being - clipped off the screen... - - -22 Jan 2004 - - * Modified screencapture() to not overwrite existing screenshots. - - -19 Jan 2004 - - * loadboard() got a new second parameter inserted. This tells - kopen4load() where to seek out the map file. The values are: - 0 - anywhere - 1 - the first GRP file (same as setting strlen(fn)-1 to 0xff) - 2 - any grp file - - -17 Jan 2004 - - * Fixed Bcorrectfilename() to handle Win98's different operation - of GetFullPathName() when compared to Win2k. Now Build doesn't - ascend 2 directories at once when running on 98. - - -16 Jan 2004 - - * Undid some stuff which was a little braindamaged in winlayer.c. - I can't for the life of me remember why I was destroying the - window and recreating it when switching rendering modes when it - was entirely unnecessary and could potentially piss off other - services which aren't expecting their window handle to suddenly - be invalid, like DirectSound. - * In typical JonoF style of a couple of years ago, I made an error - when I did the gruntwork to port Build to Windows and as a - sideeffect of my unchecked amateurness I bent the point - highlighting in the editor. It's straightened now. :-( - - -12 Jan 2004 - - * sdlayer.c has been brought into line with winlayer.c. Now - everything that winlayer.c also works in SDL. - - -10 Jan 2004 - - * Added uninitsinglegroupfile() to unload a particular group file. - * Added a mechanism to do a "findfirst/next" over the group files. - * Modified Build.c to include maps inside the GRPs in the file - list. - - -2 Jan 2004 - - * Crash bug on starting Build editor fixed. See list of original - bugs for information. - - -1 Jan 2004 - - * Many Polymost bugs fixed. Mirrors now work. All kinds of funky - stuff. - - -29 Dec 2003 - - * Updated screencapture() to support GL modes. - * Modified 2D mode editor screen capture to keep the status bar - visible. Done with Ken's blessing. - - -23 Dec 2003 - - * Build mouse sensitivity has changed to use a floating point value - in the configuration file to specify the sen - * First public release of Ken's new "Polymost" renderer. 6 degrees - of freedom and full 3D rendering, including OpenGL. - * Palette handling has changed somewhat drastically. The engine now - supports palette fading natively, which means where games used - to manipulate a copy of the palette and send it to the video card, - this manipulation is now done by the engine via a function named - setpalettefade(). See the header for details. In adding this, - setbrightness() gained a third parameter, which is almost always - passed as 0 unless doing a palette fade and adjusting the game - palette immediately before it, in which case pass 1 so that - setbrightness() doesn't apply its base palette, otherwise weird - palette flashes will happen and we don't want that. - This was all necessary in order to let Ken's Polymost code have - access to the basic, unmodified palette for its own purposes. - - -20 Dec 2003 - - * Dynamic player collection has been cleaned up ever so slightly and - seems to work pretty well so far on just my LAN. No internet test - has been performed yet. - * Screen tilting in game.c now uses polymost's tilting abilities if - rendmode > 0 is used. - - -10 Dec 2003 - - * Dynamic player collection works at this stage. It's all implemented - in game-land because it's easier to do at this stage, but I - anticipate moving most of the general stuff into the engine if I - find it necessary. - - -6 Dec 2003 - - * Modified the checkvideomodes() function in winlayer.c to behave - slightly different and return 0x7fffffffl if the video mode passed - is not a recognized mode in windowed operation, otherwise it - returns the video mode index in validmode*[]. Sdlayer.c isn't - modified to do this yet. - * Applied Ken's fix for crashes which ensue when calling rotatesprite - inside drawrooms. See details in bug fixes list below. - - -5 Dec 2003 - - * At 2.50pm today jmulti.c achieved operational capacity and survived - a 15 minute 2-player network game with my father on our LAN. - - -25 Nov 2003 - - * Added a missing "CDECLENDSET 6" on line 504 of a.nasm. Without it - the registers are trashed upon return which made Win98 crash when - running GCC-built executables. - - -24 Nov 2003 - - * Silly typo fixed in winlayer.c. - - -23 Nov 2003 - - * Modified build.c and config.c to use integer arithmetic for mouse - sensitivity stuff. I don't like floating-point all that much out of - a general sense of prejudice. - - -19 Nov 2003 - - * Modified the Build editor such that it no longer is constrained to - 640x480 in 2D mode. It now defaults to using the same resolution - that is selected in 3D mode, but may be overridden by using a - new setting named '2dresolution' in the build.cfg file. It uses the - same mode numbers as the existing 'resolution' setting. - * Ctrl+A, Ctrl+Z, KP2, KP4, KP6, and KP8 in 3D mode, plus A and Z in - 2D mode are now speed limited. - - -19 Oct 2003 - - * Fixed some brain damaged error causing crashes when hitting enter - after entering a filename for Save As. I really am dumb sometimes. - * Added mouse sensitivity to Build editor. Add this to your build.cfg - ; Mouse sensitivity - ; 128 = 1:2 - ; 256 = 1:1 - ; 512 = 2:1 - mousesensitivity = 256 - - -4 Oct 2003 - - * Modified things to allow compilation with Microsoft C. Building - with MSC requires using the C-only configuration, which is how - the makefile is currently configured. - - -13 Sep 2003 - - * Added tab-completion of symbols into the OSD. - * Moved the "dumpbuildinfo" console function from the Duke source - into the OSD as a basic function. - - -11 Sep 2003 - - * Engine now able to build entirely from C source. Assembly - is entirely optional now. - * Engine now compiles with OpenWatcom 1.0. - - -22 May 2003 - - * Fixed a bug where the movement clipping lines array was being - overrun in extreme circumstances. Thanks to BlasterDRP for - pointing this out. See the epilogue for more details. - - -17 May 2003 - - * With Ken's help the rendering performance in 1024x768 is now - dramatically improved. By making scanlines odd lengths the CPU - cache issues associated with multiples of 4096 are now eliminated. - * Modified the 16-colour emulation functions since 640 bytes is no - longer the pitch of one line. - * Added auto-repainting of the frame if WM_PAINT is posted in the - winlayer. The repaint happens on a call to handleevents(); - - -15 May 2003 - - * Rewrote the map menu. - - -11 May 2003 - - * Rewrote the onscreen display. It's now a lot like Quake's console. - - -7 May 2003 - - * Changed CACHE1D.C to open the group file in read-only mode. Why it - was being opened in random-access is a mystery to me. This fixes - problems where the GRP file was read-only and the games would not - start. Thanks to Sean Magiera for this one. - * Added detection of input devices to winlayer.c (and made sdlayer.c - currently enable only keyboard and mouse without testing). Now the - Duke input code can grow a little more intelligent. - - -1 May 2003 - - * Made Ctrl+Tab show sprite stats in the way Alt+Tab does. - * Added task switching disabling to winlayer.c. - - -25 Apr 2003 - - * Modifications here and there, plus I've adjusted the Makefile to - allow code which links against the engine to compile its own copy - in its development tree. Duke uses this to compile the engine - without voxel support. - - -17 Apr 2003 - - * Various changes have been made in order to fully support my Duke3D - port. - - -7 Apr 2003 - - * Quite a few minor changes have been made here and there. - * Added support to the interface layers for game-defined input event - callbacks which are used with the jMACT library I have written for - Duke. - * Fixed a bug which was preventing screen-tilting and savegame screen- - shots from being drawn in Duke3D. Side-effect being windowed render - mode is now more similar to fullscreen in its behaviour, ie. the - frameplace variable is set to NULL when unlocked. - - -1 Apr 2003 - - * Thanks to a report by admin@combatgold1.co.uk these bugs are fixed: - - Alt-key combinations broken. Thankyou for nothing, DirectInput. - - Prompts for menu, 3d-mode quit, etc not being displayed. A little - short-sightedness on my part to blame here. - - Crash on changing palette to a palette mapping that is NULL. - This has been a bug from the very beginning in Ken's original DOS - version too, benign back then but turned malignant now thanks to - the great debugging tool known as the segmentation fault. Fixed now. - * Took a leaf from SDL's book and made the input code not suck anymore - by having buffered keyboard and mouse with event objects to tell when - there's data available. Very nice. Something I should have done from - the start had I had a brain. Mouse is now perfectly smooth. - * Made the flash speed of highlighted sprites and lines in Build derive - from the clock and not the speed at which the frames can be drawn to - the display. In DOS, locking to the display refresh worked fine, but - my haste in porting originally did not take this into account. Fixed - now. - * Fixed a problem in my very amateur DirectDraw code where I wasn't - restoring surfaces once they'd been lost (d'uh). We now have a picture - when Alt-tabbing back to the game/editor. - * Made operation on 8-bit desktops much more sane. It actually kinda - works reliably now. - - -Bugs present in Ken's original source -------------------------------------- - -This epilogue is here for those people wishing to do their own port of -the Build source and wish to save time tracking down bugs in Ken's source. -The bugs here are the ones I found during my travels and the list should -not be considered complete. Thankfully, Ken's code is very solid and the -bugs that do exist did not pose a serious threat under DOS, but they do -make life very interesting these days. - -(Line numbers refer to Ken's original source distribution) - -ENGINE.C (various locations): - Before this fix is applied you may notice crashes in game.exe - if you press Enter (main keyboard). In Ken's words: - - | It crashes in dorotatesprite because it accesses rx1[], ry1[], - | rx2[], and ry2[] - global arrays which were originally intended - | to be used only by drawrooms! When I wrote that code, I must have - | assumed rotatesprite would never be called INSIDE drawrooms... - | which makes sense because I wrote rotatesprite before I wrote - | all that faketimerhandler stuff. - - The solution is to place this line below somewhere, Ken suggests - immediately before clippoly4, but I chose to keep it with the rest - of static variables in ENGINE.C and put it on line 156: - - static long nrx1[8], nry1[8], nrx2[8], nry2[8]; - - Then, all references to rx1[], ry1[], rx2[], and ry2[] in - clippoly4 and dorotatesprite *ONLY* need to be prefixed with an - 'n'. Only those functions need patching, and nothing else. - - -ENGINE.C l1222, l1388, l7225: - palookup[] is accessed from the assembly functions to translate - palette indexes to alternate indexes for palette-shifting of - images. It contains pointers to tables which map the original - palette index to the new index. Unused lookup entries have their - pointer set to NULL. If a NULL palette lookup is referenced then - a null-pointer exception is raised. In DOS this just caused - garbage palette mappings. In Windows/Linux it causes segfaults. - A fix for this is to add a line after the specified ones like: - - if (!globalpalwritten) globalpalwritten = palookup[globalpal]; - - This remaps the NULL palette to the default one. - -ENGINE.C l5691, l5692, l5697, l5698: - drawline16() is used for the 2D map view in the BUILD editor. - In the clipping calculations it sometimes happens that the x- - coordinates are not properly clipped to the left or right of the - video memory and are offscreen by one or two pixels when clipping - against the very top or very bottom rows of video memory. Adding - these checks before the closing braces of the specified lines - makes sure the coordinate does not go negative and segfault. - - Line 5691 and 5698: if (x1 < 0) x1 = 0; - Line 5692 and 5697: if (x2 < 0) x2 = 0; - -ENGINE.C l88, l8326: - slopalookup[] is a table used for drawing sloped sector floors - and ceilings. It holds the palette shading indicies for each - scanline. Problem is, in high resolutions somewhere around - 1024x768, this array is too small and memory corruption happens - when the code writes past the end of this array. The way to fix - it is to rewrite the algorithm. Since that's an unattractive - proposition, increasing the size of this array will hold the - problem off for more typical cases. - - Line 88: long slopalookup[16384]; - Line 8326: ... else shoffs = ((16380-ydimen)<<15); - -ENGINE.C l6773: - The addclipline() macro appends a clipping line for the movement - clipping code to test, but it doesn't attempt to see if adding - the new line would overrun the buffer. Extreme cases exist where - the buffer overruns and the game crashes. The problem can be fixed - by testing if clipnum is less than MAXCLIPNUM before adding the - new line. - - #define addclipline(dax1, day1, dax2, day2, daoval) \ - { \ - if (clipnum < MAXCLIPNUM) { \ - clipit[clipnum].x1 = dax1; clipit[clipnum].y1 = day1; \ - clipit[clipnum].x2 = dax2; clipit[clipnum].y2 = day2; \ - clipobjectval[clipnum] = daoval; \ - clipnum++; \ - } \ - } \ - - This change will increase the possibility of clipping bugs though - because not all possible sprites may being included in the test, - so increasing the MAXCLIPNUM constant on line 31 to 1024 will - decrease the chance of this happening. - -ENGINE.C l7880: - The for loop that reverses the rendered image of a mirror is - iterating one too many times. Change the for loop to read: - - for(dy=mirrorsy2-mirrorsy1-1;dy>=0;dy--) - -BUILD.C l2137: - gettile() sometimes gets handed a tile with an index of -1, and - doesn't adjust this to something safe before it tries to draw the - cursor for the selected tile. This is demonstrated by loading - nukeland.map in Build.exe, and making a 1-way wall on the ledge - to the left of the starting point, and then pressing 'V' on the - now grey-stone wall. Adding this line fixes the crash that ensues. - - Line 2137: if (tilenum < 0) tilenum = 0; - -BUILD.C l2495, l3444: - bstatus, local to overheadeditor() is not initialized to 0 on entry - to the function, which sometimes causes the sprite dragging code to - misfire resulting in a crash immediately on starting the editor. The - following changes will prevent this happening. - - Line 2495: "oldmousebstatus = 0;" should be changed to "bstatus = 0;" - Line 3444: append "if ((pointhighlight&0xc000) == 16384)" to "else" - diff --git a/polymer/eduke32/build/LICENSE b/polymer/eduke32/build/LICENSE deleted file mode 100644 index 8b16ceee0..000000000 --- a/polymer/eduke32/build/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -The source code is covered by the terms of Ken's original license -which can be found in the file "buildlic.txt" or at -http://jonof.edgenetwk.com/buildport/buildlic.txt - -My additions and modifications are covered by the same license. - - -- Jonathon Fowler (10 March 2003) diff --git a/polymer/eduke32/build/Makefile b/polymer/eduke32/build/Makefile index df0e88ad5..38d8b0233 100644 --- a/polymer/eduke32/build/Makefile +++ b/polymer/eduke32/build/Makefile @@ -92,7 +92,8 @@ endif OURCFLAGS=$(debug) -W -Wall -Wimplicit -Wno-char-subscripts \ -funsigned-char -fno-strict-aliasing -DNO_GCC_BUILTINS \ - -DKSFORBUILD -I$(INC) + -DKSFORBUILD -I$(INC) \ +# -march=pentium3 -mtune=generic -mmmx -m3dnow -msse -mfpmath=sse OURCXXFLAGS=-fno-exceptions -fno-rtti LIBS= ASFLAGS=-s #-g diff --git a/polymer/eduke32/build/Makefile.deps b/polymer/eduke32/build/Makefile.deps index 5888c8462..3e7712c71 100644 --- a/polymer/eduke32/build/Makefile.deps +++ b/polymer/eduke32/build/Makefile.deps @@ -29,7 +29,6 @@ $(OBJ)/osd.$o: $(SRC)/osd.c $(INC)/build.h $(INC)/osd.h $(INC)/compat.h $(INC)/b $(OBJ)/pragmas.$o: $(SRC)/pragmas.c $(INC)/compat.h $(OBJ)/scriptfile.$o: $(SRC)/scriptfile.c $(INC)/scriptfile.h $(INC)/cache1d.h $(INC)/compat.h $(OBJ)/sdlayer.$o: $(SRC)/sdlayer.c $(INC)/compat.h $(INC)/sdlayer.h $(INC)/baselayer.h $(INC)/cache1d.h $(INC)/pragmas.h $(INC)/a.h $(INC)/build.h $(INC)/osd.h $(INC)/glbuild.h -$(OBJ)/sound.$o: $(SRC)/sound.c $(INC)/osd.h $(INC)/compat.h $(INC)/cache1d.h $(OBJ)/winlayer.$o: $(SRC)/winlayer.c $(INC)/compat.h $(INC)/winlayer.h $(INC)/baselayer.h $(INC)/pragmas.h $(INC)/build.h $(INC)/a.h $(INC)/osd.h $(INC)/dxdidf.h $(INC)/glbuild.h $(OBJ)/gtkbits.$o: $(SRC)/gtkbits.c $(INC)/baselayer.h $(INC)/build.h $(INC)/dynamicgtk.h $(OBJ)/dynamicgtk.$o: $(SRC)/dynamicgtk.c $(INC)/dynamicgtk.h diff --git a/polymer/eduke32/build/NAMES.H b/polymer/eduke32/build/NAMES.H deleted file mode 100644 index d22fdaecd..000000000 --- a/polymer/eduke32/build/NAMES.H +++ /dev/null @@ -1,49 +0,0 @@ -//Be careful when changing this file - it is parsed by Editart and Build. -#define SWITCH1ON 15 -#define SLIME 34 -#define BACKGROUND 37 -#define KENPICTURE 48 -#define BUILDDISK 49 -#define SWITCH2ON 66 -#define SWITCH2OFF 69 -#define ALPHABET 73 -#define NO 74 -#define DEMOSIGN 75 -#define COIN 76 -#define COINSTACK 77 -#define GIFTBOX 78 -#define DIAMONDS 79 -#define EVILALGRAVE 83 -#define STATUSBAR 87 -#define DAYSKY 89 -#define WATERFOUNTAIN 90 -#define USEWATERFOUNTAIN 91 -#define NIGHTSKY 93 -#define BULLET 98 -#define BOMB 100 -#define CANNON 101 -#define GUNONBOTTOM 102 -#define BOMBEMITTER 103 -#define EXPLOSION 105 -#define SPLASH 106 -#define BROWNMONSTER 110 -#define SKELETON 113 -#define AL 114 -#define EVILAL 115 -#define PLAYER 120 -#define SWITCH3OFF 146 -#define SWITCH3ON 147 -#define AIRPLANE 148 -#define SPIRAL 149 -#define COMPASS 150 -#define FOOTPRINT 156 -#define STATUSBARFILL8 160 -#define STATUSBARFILL4 161 -#define BOUNCYMAT 162 -#define MIRROR 165 -#define FLOORMIRROR 166 -#define GRABBER 167 -#define GRABCANNON 168 -#define MISSILE 169 -#define LAUNCHER 171 -#define MIRRORLABEL 4000 diff --git a/polymer/eduke32/build/README b/polymer/eduke32/build/README deleted file mode 100644 index fb7cac057..000000000 --- a/polymer/eduke32/build/README +++ /dev/null @@ -1,141 +0,0 @@ -Build Source Port by Jonathon Fowler -With contributions by Ken Silverman - -ReadMe Information - - -First Source Release: 9 March 2003 -This Release: 9 October 2005 - - - -A Few Notes and Words ---------------------- - This is a release of the source code to my port of Ken -Silverman's Build game engine [1]. The port intends to bring the engine -source up to speed so that it may be used more easily with modern -operating systems on the x86 platform, like Microsoft Windows and *nix- -like ones such as Linux and BSD. - WinBuild is the name I give to the Windows target of this port. -It uses native Windows APIs like DirectX and the GDI to provide close -interaction with Windows for the sake of performance. - I have also developed a more platform-independant layer for -use on systems other than Windows by way of the Simple Direct-media -Layer (SDL) [2]. This layer should assist as a basis for further system -ports or for easier implementation on the platforms SDL supports. - Work on this port is a continuing process. I welcome the -contributions of programmers who have something they'd like to add (or -fix). - - -Configuration -------------- - Runtime settings for BUILD.EXE and GAME.EXE are set in build.cfg -and game.cfg respectively. These files are normal text files. The -original SETUP.DAT that is used in Ken's original code is not used in -this port. The config files are automatically created on the first run of -the game or editor. - - -Building the Source -------------------- - I build the Windows binaries using the following tools and libraries: - * MSYS ('Current' version) (http://www.mingw.org) - * MinGW ('Current' version) (http://www.mingw.org) - * NASM (http://nasm.sourceforge.net/) - * DirectX 6 or above headers and import libraries - DX6: (http://www.libsdl.org/extras/win32/common/directx-devel.tar.gz) - DX9: (http://www.microsoft.com/downloads/details.aspx?FamilyID=afc15f29-d7c9-4cf7-a8d5-8ab81f14ae1b&DisplayLang=en) - * SDL 1.2 (http://www.libsdl.org/download-1.2.php) - SDL is only used for the SDL interface layer and may be - omitted if building the DirectX version. - * FMOD (http://www.fmod.org) - - Some good MinGW guides and whatnot: - - http://www.libsdl.org/extras/win32/mingw32/README.txt - - http://www.spacejack.org/games/mingw/ - - The engine compiles under Linux, FreeBSD, and NetBSD with minimal/no -modification. - - Building the source involves just typing "make" in the directory -where you have unpacked the source. Windows users should make sure the -directory structure in the ZIP is maintained on extraction. The default -interface layer on Windows is the DirectX interface. This can be overriden -to the SDL one by using the command "make RENDERTYPE=SDL" instead. Linux -builds will always use SDL. - -For compilation on other operating systems, see the addendum "Other OSes". - - -Things Missing --------------- - Nothing much is missing anymore. Networking is being improved as -time passes. - - -Bugs and Whatnot ----------------- - I'm sure during my hacking I've perhaps introduced a bug here or -there. I want to try and nail these as I can. If you think you've found -a bug I would certainly like to hear about it. If you get it to crash, -a crash dump would be extremely helpful. Contact me using the details -found below. - - -Points of Contact ------------------ - The official location for this port on the WWW is at -http://jonof.edgenetwork.org/?p=jfbuild where the latest binaries and -source may be found. You can contact me via email at jonof@edgenetwork.org - - -Credits and Thanks ------------------- -* Ken Silverman for his patience, help, and guidance in this. I -realise my rambling is taxing but your wisdom is invaluable. -* The folks at icculus.org for inspiring me to try and equal their -work done in the first public port of the engine. -* Do I dare mention myself? -* Pimping the edgenetwork (http://www.edgenetwk.com) who host my -site wouldn't go astray. -* Pär Karlsson for his contributions - - -Can't think of anything else at the moment, so, enjoy! - -Jonathon Fowler - - -[1] http://www.advsys.net/ken/buildsrc -[2] http://www.libsdl.org - - -Addendum: Other OSes --------------------- - -QNX 6.2.1: - I got the engine compiling and running on QNX 6.2.1 on the - 23rd November 2005. The QNX 6.2.1 Non-commercial CDROM includes - the GCC 2.95-series compiler (though you do have to install the - package), and the only extra library you need to obtain and - install (probably from source like I did) is SDL 1.2.9 or newer. - You also have to disable linking to fmod and use the - sound_stub.$o in the Makefile. - -SkyOS 5 beta 8.5: - Disabling fmod and using sound_stub.$o in the Makefile will get - it running. - -Solaris 9: - Because of how Solaris seems to set itself up, you need to: - 1. Edit Makefile and change AR to be 'gar' and RANLIB to be - 'granlib' - 2. Edit Makefile.shared and add (I think) /opt/sfw/bin/ - to the start of SDLCONFIG's value - 3. Disable fmod and use sound_stub.$o in Makefile - -BSD: - Disable fmod and use sound_stub.$o in the Makefile. Use 'gmake' - to build. - diff --git a/polymer/eduke32/build/include/build.h b/polymer/eduke32/build/include/build.h index 48a1cc855..58c19f2d7 100644 --- a/polymer/eduke32/build/include/build.h +++ b/polymer/eduke32/build/include/build.h @@ -595,7 +595,7 @@ int loadoldboard(char *filename, char fromwhere, int *daposx, int *daposy, int * // Hash functions struct HASH_item // size is 12/24 bits. { - const char *string; + char *string; int key; struct HASH_item *next; }; diff --git a/polymer/eduke32/build/src/cache1d.c b/polymer/eduke32/build/src/cache1d.c index fcacf726a..8c09d57d6 100644 --- a/polymer/eduke32/build/src/cache1d.c +++ b/polymer/eduke32/build/src/cache1d.c @@ -104,7 +104,7 @@ void initcache(intptr_t dacachestart, int dacachesize) cac[0].lock = &zerochar; cacnum = 1; - initprintf("Initialized %.1f megabyte cache\n", (float)(dacachesize/1024.f/1024.f)); + initprintf("Initialized %.1fM cache\n", (float)(dacachesize/1024.f/1024.f)); } void allocache(intptr_t *newhandle, int newbytes, char *newlockptr) diff --git a/polymer/eduke32/build/src/defs.c b/polymer/eduke32/build/src/defs.c index 05eec3723..cd8d367f5 100644 --- a/polymer/eduke32/build/src/defs.c +++ b/polymer/eduke32/build/src/defs.c @@ -1070,7 +1070,7 @@ static int defsparser(scriptfile *script) char *frametokptr = script->ltextptr; char *frameend, *framename = 0, happy=1; int ftilenume = -1, ltilenume = -1, tilex = 0; - double smoothduration = 0.0f; + double smoothduration = 0.1f; if (scriptfile_getbraces(script,&frameend)) break; while (script->textptr < frameend) @@ -1104,8 +1104,6 @@ static int defsparser(scriptfile *script) ltilenume = tilex; } - smoothduration = 0.1f; - if (lastmodelid < 0) { initprintf("Warning: Ignoring frame definition.\n"); diff --git a/polymer/eduke32/build/src/engine.c b/polymer/eduke32/build/src/engine.c index 5311e14d7..966cb5b04 100644 --- a/polymer/eduke32/build/src/engine.c +++ b/polymer/eduke32/build/src/engine.c @@ -12134,8 +12134,6 @@ void HASH_init(struct HASH_table *t) { HASH_free(t); t->items=Bcalloc(1, t->size * sizeof(struct HASH_item)); - // memset commented because it's redundant with calloc - // Bmemset(t->items,0,t->size * sizeof(struct HASH_item)); } void HASH_free(struct HASH_table *t) @@ -12157,6 +12155,8 @@ void HASH_free(struct HASH_table *t) tmp = cur; cur = cur->next; // initprintf("Free %4d '%s'\n",tmp->key,(tmp->string)?tmp->string:"."); + if (tmp->string) + Bfree(tmp->string); Bfree(tmp); num++; } @@ -12202,7 +12202,7 @@ void HASH_add(struct HASH_table *t, const char *s, int key) return; if (t->items == NULL) { - initprintf("HASH_add: not initalized\n"); + initprintf("HASH_add(): table not initialized!\n"); return; } code = HASH_getcode(s)%t->size; @@ -12211,7 +12211,7 @@ void HASH_add(struct HASH_table *t, const char *s, int key) if (!cur) { cur=Bcalloc(1,sizeof(struct HASH_item)); - cur->string=s; + cur->string=Bstrdup(s); cur->key=key; cur->next=NULL; t->items[code]=cur; @@ -12228,7 +12228,7 @@ void HASH_add(struct HASH_table *t, const char *s, int key) while (cur); cur=Bcalloc(1,sizeof(struct HASH_item)); - cur->string=s; + cur->string=Bstrdup(s); cur->key=key; cur->next=NULL; prev->next=cur; @@ -12239,14 +12239,18 @@ void HASH_replace(struct HASH_table *t, const char *s, int key) struct HASH_item *cur, *prev=NULL; int code; - if (t->items==NULL) {initprintf("HASH_add: not initalized\n");return;} + if (t->items==NULL) + { + initprintf("HASH_replace(): table not initialized!\n"); + return; + } code=HASH_getcode(s)%t->size; cur=t->items[code]; if (!cur) { cur=Bcalloc(1,sizeof(struct HASH_item)); - cur->string=s; + cur->string=Bstrdup(s); cur->key=key; cur->next=NULL; t->items[code]=cur; @@ -12266,7 +12270,7 @@ void HASH_replace(struct HASH_table *t, const char *s, int key) while (cur); cur=Bcalloc(1,sizeof(struct HASH_item)); - cur->string=s; + cur->string=Bstrdup(s); cur->key=key; cur->next=NULL; prev->next=cur; @@ -12278,7 +12282,7 @@ int HASH_find(struct HASH_table *t, const char *s) if (t->items==NULL) { - initprintf("HASH_find: not initalized\n"); + initprintf("HASH_find(): table not initialized!\n"); return -1; } cur=t->items[HASH_getcode(s)%t->size]; @@ -12297,7 +12301,7 @@ int HASH_findcase(struct HASH_table *t, const char *s) if (t->items==NULL) { - initprintf("HASH_findcase: not initalized\n"); + initprintf("HASH_findcase(): table not initialized!\n"); return -1; } cur=t->items[HASH_getcode(s)%t->size]; diff --git a/polymer/eduke32/build/src/osd.c b/polymer/eduke32/build/src/osd.c index 449c795e4..a52b5cd5d 100644 --- a/polymer/eduke32/build/src/osd.c +++ b/polymer/eduke32/build/src/osd.c @@ -105,7 +105,7 @@ static int osdcursorpal=0; */ static symbol_t *osdsymbptrs[MAXSYMBOLS]; static int osdnumsymbols = 0; -static struct HASH_table osdsymbolsH = { MAXSYMBOLS, NULL }; +static struct HASH_table osdsymbolsH = { MAXSYMBOLS<<1, NULL }; // application callbacks static void (*drawosdchar)(int, int, char, int, int) = _internal_drawosdchar; diff --git a/polymer/eduke32/build/src/polymost.c b/polymer/eduke32/build/src/polymost.c index 9268aaee3..74fb944f7 100644 --- a/polymer/eduke32/build/src/polymost.c +++ b/polymer/eduke32/build/src/polymost.c @@ -339,7 +339,7 @@ void drawline2d(float x0, float y0, float x1, float y1, char col) int cachefilehandle = -1; // texture cache file handle FILE *cacheindexptr = NULL; -struct HASH_table cacheH = { MAXTILES<<2, NULL }; +struct HASH_table cacheH = { MAXTILES<<3, NULL }; char TEXCACHEFILE[BMAX_PATH] = "textures"; @@ -1999,7 +1999,6 @@ static int pow2xsplit = 0, skyclamphack = 0; void drawpoly(double *dpx, double *dpy, int n, int method) { -#define PI 3.14159265358979323 double ngdx = 0.0, ngdy = 0.0, ngdo = 0.0, ngux = 0.0, nguy = 0.0, nguo = 0.0; double ngvx = 0.0, ngvy = 0.0, ngvo = 0.0, dp, up, vp, rdp, du0 = 0.0, du1 = 0.0, dui, duj; double ngdx2, ngux2, ngvx2; diff --git a/polymer/eduke32/build/src/sound.c b/polymer/eduke32/build/src/sound.c deleted file mode 100644 index b8ac4b70b..000000000 --- a/polymer/eduke32/build/src/sound.c +++ /dev/null @@ -1,388 +0,0 @@ -// FMOD Sound Interface -// for the Build Engine -// by Jonathon Fowler (jonof@edgenetwk.com) - -#include "fmod.h" -#include "fmod_errors.h" - -#ifndef F_CALLBACKAPI -#define FMOD_PRE370 -#define F_CALLBACKAPI _cdecl -#endif - -// some Linux people may need this if GCC can't find FSOUND_Stream_Open -// #define FMOD_PRE370 - -#include "osd.h" -#include "compat.h" -#include "cache1d.h" - -#define NUMCHANNELS 16 -#define MAXWAVES 256 - - -static int fmod_inited = 0; -static int musicstat = 0; - -// general sample playback -static int numwaves; -static FSOUND_SAMPLE * samples[MAXWAVES]; -static char instname[MAXWAVES][16]; -static int channels[NUMCHANNELS]; - -void loadwaves(void); - - - - -static unsigned int F_CALLBACKAPI f_open(const char *name) -{ - return kopen4load((char *)name, 0) + 1; -} - -static void F_CALLBACKAPI f_close(unsigned int handle) -{ - kclose(handle - 1); -} - -static int F_CALLBACKAPI f_read(void *buffer, int size, unsigned int handle) -{ - return kread(handle - 1, buffer, size); -} - -static int F_CALLBACKAPI f_seek(unsigned int handle, int pos, signed char mode) -{ - return klseek(handle - 1, pos, mode); -} - -static int F_CALLBACKAPI f_tell(unsigned int handle) -{ - return ktell(handle - 1); -} - - -void initsb(char dadigistat, char damusistat, int dasamplerate, char danumspeakers, char dabytespersample, char daintspersec, char daquality) -{ - char *s; - int i,j; - - if (fmod_inited) return; - fmod_inited = 0; - - if (dasamplerate < 6000) dasamplerate = 6000; - else if (dasamplerate > 48000) dasamplerate = 48000; - - musicstat = damusistat; - - printOSD("Initializing FMOD...\n"); - printOSD(" Linked version: %.02f\n", FMOD_VERSION); - printOSD(" DLL version: %.02f\n", FSOUND_GetVersion()); - - if (FSOUND_GetVersion() < FMOD_VERSION) - { - printOSD(" ... Failure: FMOD DLL too old! Sound disabled.\n"); - return; - } - - printOSD(" Samplerate: %d hz\n", dasamplerate); - - //FSOUND_SetOutput(FSOUND_OUTPUT_ASIO); - - if (FSOUND_Init(dasamplerate, NUMCHANNELS, 0)) - { - printOSD(" ... Success\n"); - fmod_inited = 1; - } - else - { - printOSD(" ... Failure: %s\n", FMOD_ErrorString(FSOUND_GetError())); - } - - switch (FSOUND_GetOutput()) - { - case FSOUND_OUTPUT_NOSOUND: - s = "No Sound"; break; - case FSOUND_OUTPUT_WINMM: - s = "WINMM"; break; - case FSOUND_OUTPUT_DSOUND: - s = "DirectSound"; break; - case FSOUND_OUTPUT_OSS: - s = "OSS"; break; - case FSOUND_OUTPUT_ESD: - s = "ESound"; break; - case FSOUND_OUTPUT_ALSA: - s = "ALSA"; break; - case FSOUND_OUTPUT_ASIO: - s = "ASIO"; break; - default: - s = "Other"; break; - } - printOSD("Using FMOD \"%s\" output driver\n", s); - - FSOUND_File_SetCallbacks( - (FSOUND_OPENCALLBACK)f_open, - (FSOUND_CLOSECALLBACK)f_close, - (FSOUND_READCALLBACK)f_read, - (FSOUND_SEEKCALLBACK)f_seek, - (FSOUND_TELLCALLBACK)f_tell); - //FSOUND_SetMemorySystem(fmod_cache, fmod_cachelen, NULL, NULL, NULL); - - loadwaves(); - - for (i=0; i=0;wavnum--) - { - bad = 0; - - i = 0; - while ((dafilename[i] > 0) && (i < 16)) - { - ch1 = dafilename[i]; if ((ch1 >= 97) && (ch1 <= 123)) ch1 -= 32; - ch2 = instname[wavnum][i]; if ((ch2 >= 97) && (ch2 <= 123)) ch2 -= 32; - if (ch1 != ch2) {bad = 1; break;} - i++; - } - if (bad != 0) continue; - - for (i=0; i oldestpos) - { - oldest = i; - oldestpos = FSOUND_GetCurrentPosition(channels[i]); - } - } - - if (free < 0) - { - FSOUND_StopSound(channels[oldest]); - free = oldest; - } - - chan = FSOUND_PlaySoundEx(FSOUND_FREE, samples[wavnum], NULL, 1); - if (chan == -1) return; - FSOUND_SetFrequency(chan, dafreq*11025/4096); - FSOUND_SetVolume(chan, davol); - - FSOUND_SetPaused(chan, 0); - - channels[free] = chan; - return; - } -} - - -void wsay(char *dafilename, int dafreq, int volume1, int volume2) -{ - unsigned char ch1, ch2; - int i, j, bad, free=-1, oldest=0; - unsigned int oldestpos=0; - int chan; - - if (fmod_inited == 0) return; - - i = numwaves-1; - do - { - bad = 0; - - j = 0; - while ((dafilename[j] > 0) && (j < 16)) - { - ch1 = dafilename[j]; if ((ch1 >= 97) && (ch1 <= 123)) ch1 -= 32; - ch2 = instname[i][j]; if ((ch2 >= 97) && (ch2 <= 123)) ch2 -= 32; - if (ch1 != ch2) {bad = 1; break;} - j++; - } - if (bad == 0) - { - for (j=0; j oldestpos) - { - oldest = j; - oldestpos = FSOUND_GetCurrentPosition(channels[j]); - } - } - - if (free < 0) - { - FSOUND_StopSound(channels[oldest]); - free = oldest; - } - - chan = FSOUND_PlaySoundEx(FSOUND_FREE, samples[i], NULL, 1); - if (chan == -1) return; - FSOUND_SetFrequency(chan, dafreq*11025/4096); - FSOUND_SetVolume(chan, (volume1*volume2)>>1); - // set pan - FSOUND_SetPaused(chan, 0); - - channels[free] = chan; - - return; - } - - i--; - } - while (i >= 0); -} - - -void loadwaves(void) -{ - int fil, dawaversionum, i, tmp; - int wavleng[MAXWAVES], repstart[MAXWAVES], repleng[MAXWAVES], finetune[MAXWAVES]; - char *p; - - fil = kopen4load("WAVES.KWV", 0); - - if (fil != -1) - { - kread(fil, &dawaversionum, 4); dawaversionum = B_LITTLE32(dawaversionum); - if (dawaversionum != 0) { kclose(fil); return; } - - kread(fil, &numwaves, 4); numwaves = B_LITTLE32(numwaves); - for (i=0; i #endif -#define BUILDDATE " 20081125" +#define BUILDDATE " 20081210" #define VERSION " 1.2.0devel" static int floor_over_floor; @@ -7587,7 +7587,7 @@ int ExtPreInit(int argc,const char **argv) OSD_SetLogFile("mapster32.log"); OSD_SetVersionString("Mapster32"VERSION,0,2); initprintf("Mapster32"VERSION BUILDDATE"\n"); - initprintf("Copyright (c) 2008 EDuke32 team\n"); +// initprintf("Copyright (c) 2008 EDuke32 team\n"); G_CheckCommandLine(argc,argv); @@ -8583,9 +8583,7 @@ int ExtInit(void) int i; #if 1 i=wm_ynbox("Texture Caching", - "Would you like to enable the on-disk texture cache? This feature will use an undetermined amount of space " - "on your hard disk to store textures in your video card's native format, enabling them to load dramatically " - "faster after the first time they are loaded.\n\n" + "Would you like to enable the on-disk texture cache?\n\n" "You will generally want to say 'yes' here, especially if using the HRP."); #else i = 1; diff --git a/polymer/eduke32/source/config.c b/polymer/eduke32/source/config.c index 83f73ab86..d9e480b8f 100644 --- a/polymer/eduke32/source/config.c +++ b/polymer/eduke32/source/config.c @@ -51,7 +51,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. =================== */ -struct HASH_table gamefuncH = { NUMGAMEFUNCTIONS, NULL }; +struct HASH_table gamefuncH = { NUMGAMEFUNCTIONS<<2, NULL }; int32 CONFIG_FunctionNameToNum(char * func) { @@ -609,11 +609,18 @@ int32 CONFIG_ReadSetup(void) pathsearchmode = 1; if (SafeFileExists(setupfilename) && ud.config.scripthandle < 0) // JBF 20031211 ud.config.scripthandle = SCRIPT_Load(setupfilename); + else if (SafeFileExists(SETUPFILENAME) && ud.config.scripthandle < 0) + { + Bsprintf(tempbuf,"The configuration file \"%s\" was not found. " + "Import configuration data from \"%s\"?",setupfilename,SETUPFILENAME); + + i=wm_ynbox("Import Configuration Settings",tempbuf); + if (i) ud.config.scripthandle = SCRIPT_Load(SETUPFILENAME); + } else if (SafeFileExists("duke3d.cfg") && ud.config.scripthandle < 0) { Bsprintf(tempbuf,"The configuration file \"%s\" was not found. " - "Would you like to import configuration data " - "from \"duke3d.cfg\"?",setupfilename); + "Import configuration data from \"duke3d.cfg\"?",setupfilename); i=wm_ynbox("Import Configuration Settings",tempbuf); if (i) ud.config.scripthandle = SCRIPT_Load("duke3d.cfg"); diff --git a/polymer/eduke32/source/duke3d.h b/polymer/eduke32/source/duke3d.h index f3e4a8758..7c3e6e1e4 100644 --- a/polymer/eduke32/source/duke3d.h +++ b/polymer/eduke32/source/duke3d.h @@ -251,14 +251,6 @@ enum DukeWeapon_t { #define deletesprite A_DeleteSprite void A_DeleteSprite(int s); -#define __USRHOOKS_H - -enum USRHOOKS_Errors { - USRHOOKS_Warning = -2, - USRHOOKS_Error = -1, - USRHOOKS_Ok = 0 -}; - typedef struct { uint32 bits; short fvel, svel; diff --git a/polymer/eduke32/source/game.c b/polymer/eduke32/source/game.c index 2017665ea..9e5bf057a 100644 --- a/polymer/eduke32/source/game.c +++ b/polymer/eduke32/source/game.c @@ -10832,8 +10832,8 @@ void app_main(int argc,const char **argv) initprintf("%s\n",apptitle); // initprintf("Compiled %s\n",datetimestring); - initprintf("Copyright (c) 1996, 2003 3D Realms Entertainment\n"); - initprintf("Copyright (c) 2008 EDuke32 team and contributors\n"); +// initprintf("Copyright (c) 1996, 2003 3D Realms Entertainment\n"); +// initprintf("Copyright (c) 2008 EDuke32 team and contributors\n"); #if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) addsearchpath("/usr/share/games/jfduke3d"); @@ -10934,9 +10934,7 @@ void app_main(int argc,const char **argv) if (glusetexcache == -1 || glusetexcachecompression == -1) { i=wm_ynbox("Texture Caching", - "Would you like to enable the on-disk texture cache? This feature will use an undetermined amount of space " - "on your hard disk to store textures in your video card's native format, enabling them to load dramatically " - "faster after the first time they are loaded.\n\n" + "Would you like to enable the on-disk texture cache?\n\n" "You will generally want to say 'yes' here, especially if using the HRP."); if (i) ud.config.useprecache = glusetexcompr = glusetexcache = glusetexcachecompression = 1; else glusetexcache = glusetexcachecompression = 0; @@ -10946,9 +10944,8 @@ void app_main(int argc,const char **argv) #ifdef _WIN32 if (ud.config.CheckForUpdates == -1) { - i=wm_ynbox("Automatic Release Notification", - "Would you like EDuke32 to automatically check for new releases " - "at startup?"); + i=wm_ynbox("Automatic Update Notifications", + "Would you like to check for new versions of EDuke32 at startup?"); ud.config.CheckForUpdates = 0; if (i) ud.config.CheckForUpdates = 1; } diff --git a/polymer/eduke32/source/gamedef.c b/polymer/eduke32/source/gamedef.c index 95c002549..e46d72166 100644 --- a/polymer/eduke32/source/gamedef.c +++ b/polymer/eduke32/source/gamedef.c @@ -935,20 +935,20 @@ const memberlabel_t InputLabels[]= char *bitptr; // pointer to bitmap of which bytecode positions contain pointers #define BITPTR_POINTER 1 -struct HASH_table gamevarH = { MAXGAMEVARS, NULL }; -struct HASH_table arrayH = { MAXGAMEARRAYS, NULL }; -struct HASH_table labelH = { 11264, NULL }; -struct HASH_table keywH = { CON_END, NULL }; +struct HASH_table gamevarH = { MAXGAMEVARS<<2, NULL }; +struct HASH_table arrayH = { MAXGAMEARRAYS<<2, NULL }; +struct HASH_table labelH = { 11264<<2, NULL }; +struct HASH_table keywH = { CON_END<<2, NULL }; -struct HASH_table sectorH = { SECTOR_END, NULL }; -struct HASH_table wallH = { WALL_END, NULL }; -struct HASH_table userdefH = { USERDEFS_END, NULL }; +struct HASH_table sectorH = { SECTOR_END<<2, NULL }; +struct HASH_table wallH = { WALL_END<<2, NULL }; +struct HASH_table userdefH = { USERDEFS_END<<2, NULL }; -struct HASH_table projectileH = { PROJ_END, NULL }; -struct HASH_table playerH = { PLAYER_END, NULL }; -struct HASH_table inputH = { INPUT_END, NULL }; -struct HASH_table actorH = { ACTOR_END, NULL }; -struct HASH_table tspriteH = { ACTOR_END, NULL }; +struct HASH_table projectileH = { PROJ_END<<2, NULL }; +struct HASH_table playerH = { PLAYER_END<<2, NULL }; +struct HASH_table inputH = { INPUT_END<<2, NULL }; +struct HASH_table actorH = { ACTOR_END<<2, NULL }; +struct HASH_table tspriteH = { ACTOR_END<<2, NULL }; void inithashnames(); void freehashnames(); @@ -1061,16 +1061,8 @@ static int C_IncreaseScriptSize(int size) } //initprintf("offset: %d\n",(unsigned)(g_scriptPtr-script)); - if (size <= osize) - { - g_scriptSize = size; - initprintf("Shrinking bytecode buffer, final size: %d*%d bytes\n",g_scriptSize, sizeof(intptr_t)); - } - else - { - g_scriptSize = size; - initprintf("Increasing bytecode buffer size to %d*%d bytes...\n",g_scriptSize, sizeof(intptr_t)); - } + g_scriptSize = size; + initprintf("Resizing code buffer to %d*%d bytes\n",g_scriptSize, sizeof(intptr_t)); newscript = (intptr_t *)Brealloc(script, g_scriptSize * sizeof(intptr_t)); @@ -2174,7 +2166,7 @@ static int C_ParseCommand(void) if (i == -1) { // printf("Defining Definition '%s' to be '%d'\n",label+(g_numLabels<<6),*(g_scriptPtr-1)); - HASH_replace(&labelH,label+(g_numLabels<<6),g_numLabels); + HASH_add(&labelH,label+(g_numLabels<<6),g_numLabels); labeltype[g_numLabels] = LABEL_DEFINE; labelcode[g_numLabels++] = *(g_scriptPtr-1); if (*(g_scriptPtr-1) >= 0 && *(g_scriptPtr-1) < MAXTILES && g_dynamicTileMapping) @@ -4833,7 +4825,7 @@ repeatcase: j++; } tempbuf[j] = '\0'; - if (Bstrcmp(setupfilename,"duke3d.cfg") == 0) // not set to something else via -cfg + if (Bstrcmp(setupfilename,SETUPFILENAME) == 0) // not set to something else via -cfg { char temp[BMAX_PATH]; struct stat st; diff --git a/polymer/eduke32/source/gamedefs.h b/polymer/eduke32/source/gamedefs.h index 3fe95ac10..70cdf7b41 100644 --- a/polymer/eduke32/source/gamedefs.h +++ b/polymer/eduke32/source/gamedefs.h @@ -45,7 +45,7 @@ extern "C" { // // Setup program defines // -#define SETUPFILENAME "duke3d.cfg" +#define SETUPFILENAME "eduke32.cfg" // Max number of players diff --git a/polymer/eduke32/source/gameexec.c b/polymer/eduke32/source/gameexec.c index 52b6ef8bc..b6e301092 100644 --- a/polymer/eduke32/source/gameexec.c +++ b/polymer/eduke32/source/gameexec.c @@ -787,21 +787,20 @@ static int X_DoExecute(void) // Huh?. This does nothing.... // (the result is always j==0....) - if ((klabs(ActorExtra[g_i].lastvx-g_sp->x)+klabs(ActorExtra[g_i].lastvy-g_sp->y)) < - (klabs(ActorExtra[g_i].lastvx-s->x)+klabs(ActorExtra[g_i].lastvy-s->y))) - j = 0; +// if ((klabs(ActorExtra[g_i].lastvx-g_sp->x)+klabs(ActorExtra[g_i].lastvy-g_sp->y)) < +// (klabs(ActorExtra[g_i].lastvx-s->x)+klabs(ActorExtra[g_i].lastvy-s->y))) + // j = 0; // um yeah, this if() will always fire.... - if (j == 0) + // if (j == 0) { // search around for target player // also modifies 'target' x&y if found.. - j = A_FurthestVisiblePoint(g_i,s,&ActorExtra[g_i].lastvx,&ActorExtra[g_i].lastvy); - - if (j == -1) j = 0; - else j = 1; + j = 1; + if (A_FurthestVisiblePoint(g_i,s,&ActorExtra[g_i].lastvx,&ActorExtra[g_i].lastvy) == -1) + j = 0; } } else @@ -812,10 +811,10 @@ static int X_DoExecute(void) ActorExtra[g_i].lastvy = s->y; } - if (j == 1 && (g_sp->statnum == 1 || g_sp->statnum == 6)) + if (j && (g_sp->statnum == 1 || g_sp->statnum == 6)) ActorExtra[g_i].timetosleep = SLEEPTIME; - X_DoConditional(j == 1); + X_DoConditional(j); break; } @@ -824,14 +823,14 @@ static int X_DoExecute(void) break; case CON_IFSQUISHED: - X_DoConditional(A_CheckSquished(g_i, g_p) == 1); + X_DoConditional(A_CheckSquished(g_i, g_p)); break; case CON_IFDEAD: - j = g_sp->extra; - if (g_sp->picnum == APLAYER) - j--; - X_DoConditional(j < 0); +// j = g_sp->extra; +// if (g_sp->picnum == APLAYER) +// j--; + X_DoConditional(g_sp->extra <= 0); break; case CON_AI: @@ -3206,9 +3205,7 @@ static int X_DoExecute(void) // -1 for none found // int lType=*insptr++, lMaxDist=Gv_GetVar(*insptr++, g_i, g_p), lMaxZDist=Gv_GetVar(*insptr++, g_i, g_p); - int lVarID=*insptr++, lFound=-1, lTemp, lTemp2, j, k; - - k=MAXSTATUS-1; + int lVarID=*insptr++, lFound=-1, lTemp, lTemp2, j, k=MAXSTATUS-1; do { j=headspritestat[tw==CON_FINDNEARACTORZVAR?1:k]; // all sprites @@ -3251,9 +3248,7 @@ static int X_DoExecute(void) // -1 for none found // int lType=*insptr++, lMaxDist=*insptr++, lMaxZDist=*insptr++, lVarID=*insptr++; - int lTemp, lTemp2, lFound=-1, j, k; - - k=MAXSTATUS-1; + int lTemp, lTemp2, lFound=-1, j, k=MAXSTATUS-1; do { j=headspritestat[tw==CON_FINDNEARACTORZ?1:k]; // all sprites @@ -3286,24 +3281,16 @@ static int X_DoExecute(void) } case CON_FINDPLAYER: + insptr++; + Gv_SetVar(g_iReturnVarID, A_FindPlayer(&sprite[g_i],&j), g_i, g_p); + Gv_SetVar(*insptr++, j, g_i, g_p); + break; + case CON_FINDOTHERPLAYER: insptr++; - { - // syntax findnearactorvar - // gets the sprite ID of the nearest actor within max dist - // that is of into - // -1 for none found - // - int var1 = *insptr++, d; - - if (tw == CON_FINDPLAYER) j=A_FindPlayer(&sprite[g_i],&d); - else j=P_FindOtherPlayer(g_i,&d); - - Gv_SetVar(g_iReturnVarID, j, g_i, g_p); - Gv_SetVar(var1, d, g_i, g_p); - - break; - } + Gv_SetVar(g_iReturnVarID, P_FindOtherPlayer(g_p,&j), g_i, g_p); + Gv_SetVar(*insptr++, j, g_i, g_p); + break; case CON_SETPLAYER: case CON_GETPLAYER: diff --git a/polymer/eduke32/source/gamevars.c b/polymer/eduke32/source/gamevars.c index a9098f436..099eb8458 100644 --- a/polymer/eduke32/source/gamevars.c +++ b/polymer/eduke32/source/gamevars.c @@ -519,7 +519,7 @@ int Gv_SetupVar(const char *pszLabel, int lValue, unsigned int dwFlags) if (i==g_gameVarCount) { // we're adding a new one. - HASH_replace(&gamevarH,aGameVars[i].szLabel,i); + HASH_add(&gamevarH,aGameVars[i].szLabel,i); g_gameVarCount++; } diff --git a/polymer/eduke32/source/global.c b/polymer/eduke32/source/global.c index 1cef949c1..471c37332 100644 --- a/polymer/eduke32/source/global.c +++ b/polymer/eduke32/source/global.c @@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. //------------------------------------------------------------------------- #include "duke3d.h" -const char *s_buildDate = "20081125"; +const char *s_buildDate = "20081210"; char *MusicPtr = NULL; int g_musicSize; @@ -175,7 +175,7 @@ int SpriteFlags[MAXTILES]; projectile_t ProjectileData[MAXTILES], DefaultProjectileData[MAXTILES]; char CheatKeys[2] = { sc_D, sc_N }; -char setupfilename[BMAX_PATH]= "duke3d.cfg"; +char setupfilename[BMAX_PATH]= SETUPFILENAME; // char datetimestring[] = ""__DATE__" "__TIME__""; int g_doQuickSave = 0; diff --git a/polymer/eduke32/source/grpscan.c b/polymer/eduke32/source/grpscan.c index 66c5cbcd9..b3645d3df 100644 --- a/polymer/eduke32/source/grpscan.c +++ b/polymer/eduke32/source/grpscan.c @@ -185,7 +185,7 @@ int ScanGroups(void) } fclose(fp); } - initprintf("Found %d recognized GRP %s.\n",i,i>1?"files":"file"); +// initprintf("Found %d recognized GRP %s.\n",i,i>1?"files":"file"); return 0; } initprintf("Found no recognized GRP files!\n"); diff --git a/polymer/eduke32/source/jaudiolib/midi.c b/polymer/eduke32/source/jaudiolib/midi.c index d13ed19ff..c882ac5cf 100644 --- a/polymer/eduke32/source/jaudiolib/midi.c +++ b/polymer/eduke32/source/jaudiolib/midi.c @@ -32,11 +32,11 @@ Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com) #include #include #include "standard.h" -#include "usrhooks.h" #include "music.h" #include "_midi.h" #include "midi.h" #include "mpu401.h" +#include "compat.h" #define WIN32_LEAN_AND_MEAN #include @@ -1169,7 +1169,7 @@ void MIDI_StopSong _MIDI_Funcs->ReleasePatches(); } - USRHOOKS_FreeMem(_MIDI_TrackPtr); + Bfree(_MIDI_TrackPtr); _MIDI_TrackPtr = NULL; _MIDI_NumTracks = 0; @@ -1204,7 +1204,6 @@ int MIDI_PlaySong int tracklength; track *CurrentTrack; unsigned char *ptr; - int status; if (_MIDI_SongLoaded) { @@ -1251,8 +1250,8 @@ int MIDI_PlaySong } _MIDI_TrackMemSize = _MIDI_NumTracks * sizeof(track); - status = USRHOOKS_GetMem((void**)&_MIDI_TrackPtr, _MIDI_TrackMemSize); - if (status != USRHOOKS_Ok) + _MIDI_TrackPtr = Bmalloc(_MIDI_TrackMemSize); + if (_MIDI_TrackPtr == NULL) { return(MIDI_NoMemory); } @@ -1263,7 +1262,7 @@ int MIDI_PlaySong { if (*(unsigned int *)ptr != MIDI_TRACK_SIGNATURE) { - USRHOOKS_FreeMem(_MIDI_TrackPtr); + Bfree(_MIDI_TrackPtr); _MIDI_TrackPtr = NULL; _MIDI_TrackMemSize = 0; diff --git a/polymer/eduke32/source/jaudiolib/multivoc.c b/polymer/eduke32/source/jaudiolib/multivoc.c index 94262cc63..aa304236b 100644 --- a/polymer/eduke32/source/jaudiolib/multivoc.c +++ b/polymer/eduke32/source/jaudiolib/multivoc.c @@ -47,7 +47,6 @@ Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com) #endif #include "compat.h" #include "baselayer.h" -#include "usrhooks.h" #include "linklist.h" #include "pitch.h" #include "multivoc.h" @@ -2794,23 +2793,6 @@ int MV_TestPlayback(void) } #endif -int USRHOOKS_GetMem(void **ptr, unsigned int size) -{ - *ptr = malloc(size); - - if (*ptr == NULL) - return(USRHOOKS_Error); - - return(USRHOOKS_Ok); - -} - -int USRHOOKS_FreeMem(void *ptr) -{ - free(ptr); - return(USRHOOKS_Ok); -} - /*--------------------------------------------------------------------- Function: MV_Init @@ -2835,8 +2817,8 @@ int MV_Init(int soundcard, int MixRate, int Voices, int numchannels, int sampleb MV_SetErrorCode(MV_Ok); MV_TotalMemory = Voices * sizeof(VoiceNode) + sizeof(HARSH_CLIP_TABLE_8); - status = USRHOOKS_GetMem((void **)&ptr, MV_TotalMemory); - if (status != USRHOOKS_Ok) + ptr = Bmalloc(MV_TotalMemory); + if (ptr == NULL) { MV_SetErrorCode(MV_NoMem); return(MV_Error); @@ -2868,7 +2850,7 @@ int MV_Init(int soundcard, int MixRate, int Voices, int numchannels, int sampleb ptr = (char *)Bcalloc(1,TotalBufferSize + 8); // FIXME: temporarily fixes bounds error somewhere... if (!ptr) { - USRHOOKS_FreeMem(MV_Voices); + Bfree(MV_Voices); MV_Voices = NULL; MV_TotalMemory = 0; @@ -2895,7 +2877,7 @@ int MV_Init(int soundcard, int MixRate, int Voices, int numchannels, int sampleb { status = MV_ErrorCode; - USRHOOKS_FreeMem(MV_Voices); + Bfree(MV_Voices); MV_Voices = NULL; MV_TotalMemory = 0; @@ -2987,7 +2969,7 @@ int MV_Shutdown(void) RestoreInterrupts(flags); // Free any voices we allocated - USRHOOKS_FreeMem(MV_Voices); + Bfree(MV_Voices); MV_Voices = NULL; MV_TotalMemory = 0; diff --git a/polymer/eduke32/source/jaudiolib/usrhooks.h b/polymer/eduke32/source/jaudiolib/usrhooks.h deleted file mode 100644 index 40f45010d..000000000 --- a/polymer/eduke32/source/jaudiolib/usrhooks.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -Copyright (C) 1994-1995 Apogee Software, Ltd. - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com) -*/ -/********************************************************************** - module: USRHOOKS.H - - author: James R. Dose - date: July 26, 1994 - - Public header file for USRHOOKS.C. - - This module contains cover functions for operations the library - needs that may be restricted by the calling program. The function - prototypes in this header should not be modified. -**********************************************************************/ - -#ifndef __USRHOOKS_H -#define __USRHOOKS_H - -/*--------------------------------------------------------------------- - Error definitions ----------------------------------------------------------------------*/ - -enum USRHOOKS_Errors - { - USRHOOKS_Warning = -2, - USRHOOKS_Error = -1, - USRHOOKS_Ok = 0 - }; - - -/*--------------------------------------------------------------------- - Function Prototypes ----------------------------------------------------------------------*/ - -int USRHOOKS_GetMem( void **ptr, unsigned int size ); -int USRHOOKS_FreeMem( void *ptr ); - -#endif diff --git a/polymer/eduke32/source/namesdyn.c b/polymer/eduke32/source/namesdyn.c index 9c3cb20ec..eabc6d8bf 100644 --- a/polymer/eduke32/source/namesdyn.c +++ b/polymer/eduke32/source/namesdyn.c @@ -35,7 +35,7 @@ struct dynitem short vstat; short val; }; -struct HASH_table dynnamesH = {4096, NULL}; +struct HASH_table dynnamesH = {4096<<2, NULL}; struct dynitem list[]= { diff --git a/polymer/eduke32/source/player.c b/polymer/eduke32/source/player.c index 0ad8558d6..7c7938031 100644 --- a/polymer/eduke32/source/player.c +++ b/polymer/eduke32/source/player.c @@ -2254,12 +2254,13 @@ void P_DisplayWeapon(int snum) pal = p->palookup; } - + guniqhudid = 100; if (j < 6 || j > 12) G_DrawTileScaled(weapon_xoffset+80-(p->look_ang>>1), looking_arc+250-gun_pos,KNEE,gs,o|4|262144,pal); else G_DrawTileScaled(weapon_xoffset+160-16-(p->look_ang>>1), looking_arc+214-gun_pos,KNEE+1,gs,o|4|262144,pal); + guniqhudid = 0; } if (sprite[p->i].xrepeat < 40) @@ -2302,13 +2303,14 @@ void P_DisplayWeapon(int snum) if (pal == 0) pal = p->palookup; } - + guniqhudid = cw; if ((*kb) < 5 || (*kb) > 9) G_DrawTileScaled(weapon_xoffset+220-(p->look_ang>>1), looking_arc+250-gun_pos,KNEE,gs,o,pal); else G_DrawTileScaled(weapon_xoffset+160-(p->look_ang>>1), looking_arc+214-gun_pos,KNEE+1,gs,o,pal); + guniqhudid = 0; } } break; @@ -2614,7 +2616,7 @@ void P_DisplayWeapon(int snum) else if (p->cursectnum >= 0) pal = sector[p->cursectnum].floorpal; else pal = 0; - + guniqhudid = cw; if ((*kb)) { if ((*kb) < (*aplWeaponTotalTime[p->curr_weapon])) @@ -2635,6 +2637,7 @@ void P_DisplayWeapon(int snum) } else G_DrawWeaponTile(weapon_xoffset+190-(p->look_ang>>1),looking_arc+260-gun_pos,HANDTHROW,gs,o,pal); + guniqhudid = 0; } } break; @@ -2653,10 +2656,12 @@ void P_DisplayWeapon(int snum) else pal = 0; weapon_xoffset = -48; + guniqhudid = cw; if ((*kb)) G_DrawWeaponTile(weapon_xoffset+150-(p->look_ang>>1),looking_arc+258-gun_pos,HANDREMOTE+remote_frames[(*kb)],gs,o,pal); else G_DrawWeaponTile(weapon_xoffset+150-(p->look_ang>>1),looking_arc+258-gun_pos,HANDREMOTE,gs,o,pal); + guniqhudid = 0; } } break; diff --git a/polymer/eduke32/source/premap.c b/polymer/eduke32/source/premap.c index 53ecd9333..5c3bd9121 100644 --- a/polymer/eduke32/source/premap.c +++ b/polymer/eduke32/source/premap.c @@ -330,7 +330,7 @@ static void G_PrecacheSounds(void) } } -static void G_DoLoadScreen(char *statustext) +static void G_DoLoadScreen(char *statustext, int percent) { int i=0,j; @@ -369,7 +369,11 @@ static void G_DoLoadScreen(char *statustext) } if (statustext) gametext(160,180,statustext,0,2+8+16); - + j = usehightile; + usehightile = 0; + rotatesprite(33<<16,140<<16,65536,0,LASERLINE,0,0,2+8+16,0,0,scale(xdim-1,percent,100),ydim-1); + rotatesprite(153<<16,140<<16,65536,0,LASERLINE,0,0,2+8+16,0,0,scale(xdim-1,percent,100),ydim-1); + usehightile = j; X_OnEvent(EVENT_DISPLAYLOADINGSCREEN, g_player[screenpeek].ps->i, screenpeek, -1); nextpage(); @@ -501,8 +505,8 @@ void G_CacheMapData(void) } if (totalclock - tc > TICRATE/4) { - sprintf(tempbuf,"Loading resources... %d%%\n",min(100,100*pc/g_precacheCount)); - G_DoLoadScreen(tempbuf); + sprintf(tempbuf,"%d resources remaining\n",g_precacheCount-pc); + G_DoLoadScreen(tempbuf, min(100,100*pc/g_precacheCount)); tc = totalclock; } } @@ -562,7 +566,9 @@ void G_UpdateScreenArea(void) y1 = scale(y1,ydim,200); y2 = scale(y2,ydim,200); - setview(x1,y1,x2-1,y2-1); + if (getrendermode() >= 3) + setview(x1,y1,x2-1,y2); + else setview(x1,y1,x2-1,y2-1); G_GetCrosshairColor(); G_SetCrosshairColor(CrosshairColors.r, CrosshairColors.g, CrosshairColors.b); @@ -1706,7 +1712,7 @@ int G_EnterLevel(int g) i = ud.screen_size; ud.screen_size = 0; - G_DoLoadScreen(NULL); + G_DoLoadScreen(NULL, -1); G_UpdateScreenArea(); ud.screen_size = i; diff --git a/polymer/eduke32/source/winbits.c b/polymer/eduke32/source/winbits.c index ef7b95921..eb597640a 100644 --- a/polymer/eduke32/source/winbits.c +++ b/polymer/eduke32/source/winbits.c @@ -1,4 +1,3 @@ -//------------------------------------------------------------------------- /* Duke Nukem Copyright (C) 1996, 2003 3D Realms Entertainment @@ -37,36 +36,6 @@ Windows-specific hooks for JonoF's Duke3D port. #include "winlayer.h" - -int Win_YesNoBox(char *name, char *fmt, ...) -{ - char buf[1000]; - va_list va; - int r; - - va_start(va,fmt); - vsprintf(buf,fmt,va); - va_end(va); - - r = MessageBox((HWND)win_gethwnd(),buf,name,MB_YESNO|MB_TASKMODAL); - if (r==IDYES) return 'y'; - return 'n'; -} - -int Win_MsgBox(char *name, char *fmt, ...) -{ - char buf[1000]; - va_list va; - - va_start(va,fmt); - vsprintf(buf,fmt,va); - va_end(va); - - MessageBox((HWND)win_gethwnd(),buf,name,MB_OK|MB_TASKMODAL); - return 'y'; -} - - // this replaces the Error() function in jmact/util_lib.c extern void G_Shutdown(void); // game.c void Error(char *error, ...) @@ -82,16 +51,12 @@ void Error(char *error, ...) vsprintf(buf, error, va); va_end(va); - MessageBox((HWND)win_gethwnd(),buf,"Fatal Error",MB_OK|MB_TASKMODAL); + MessageBox((HWND)win_gethwnd(),buf,"Fatal Error",MB_OK|MB_ICONERROR|MB_TASKMODAL); } exit((error != NULL)); } - -#endif - -#ifdef _WIN32 int G_GetVersionFromWebsite(char *buffer) { int wsainitialized = 0;