Commit graph

193 commits

Author SHA1 Message Date
Randy Heit
1acc3d00c4 - Discovered that Shader Model 1.4 clamps my constants, so I can't use
palettes smaller than 256 entries with the shader I wrote for it. Is there
  a list of gotchas like this listed some where? I'd really like to see it.
  
  Well, when compiled with SM2.0, the PalTex shader seems to be every-so-
  slightly faster on my GF7950GT than the SM1.4 version, so I guess it's a
  minor win for cards that support it.
- Fixed: ST_Endoom() failed to free the bitmap it used.
- Added the DTA_ColorOverlay attribute to blend a color with the texture
  being drawn. For software, this (currently) only works with black. For
  hardware, it works with any color. The motiviation for this was so I could
  rewrite the status bar calls that passed DIM_MAP to DTA_Translation to
  draw darker icons into something that didn't require making a whole new
  remap table.
- After having an "OMG! How could I have been so stupid?" moment, I have
  removed the off-by-one check from D3DFB. I had thought the off-by-one error
  was caused by rounding errors by the shader hardware. Not so. Rather, I
  wasn't sampling what I thought I was sampling. A texture that uses palette
  index 255 passes the value 1.0 to the shader. The shader needs to adjust the
  range of its palette indexes, or it will end up trying to read color 256
  from the palette texture when it should be reading color 255. Doh!
- The TranslationToTable() function has been added to map from translation
  numbers used by actors to the tables those numbers represent. This function
  performs validation for the input and returns NULL if the input value
  is invalid.
- Major changes to the way translation tables work: No longer are they each a
  256-byte array. Instead, the FRemapTable structure is used to represent each
  one. It includes a remap array for the software renderer, a palette array
  for a hardware renderer, and a native texture pointer for D3DFB. The
  translationtables array itself is now an array of TArrays that point to the
  real tables. The DTA_Translation attribute must also be passed a pointer
  to a FRemapTable, not a byte array as previously.
- Modified DFrameBuffer::DrawRateStuff() so that it can do its thing properly
  for D3DFB's 2D mode. Before, any fullscreen graphics (like help images)
  covered it up.


SVN r640 (trunk)
2007-12-26 04:42:15 +00:00
Christoph Oelckers
219aaeed03 - re-committed p_enemy_a_lookex.cpp to remove UTF-8 BOM.
SVN r614 (trunk)
2007-12-20 22:43:23 +00:00
Randy Heit
2e56925c36 - Fixed: The Linux makefile should use the include files for the system FLAC
installation, not the bundled copies which might not match what is installed.
- Upgraded bundled FLAC from version 1.1.2 to version 1.2.1.


SVN r575 (trunk)
2007-12-06 04:10:26 +00:00
Christoph Oelckers
725c6d195e - DamageFactor fixed
SVN r520 (trunk)
2007-04-28 22:03:18 +00:00
Randy Heit
ea0c7395de - Added a new fixrtext tool that sets the IMAGE_SCN_MEM_WRITE flag for
.rtext files in the assembly object files. Now I can avoid doing this at
  runtime, which means that ZDoom is now UPX-compatible if anyone wants to
  pack it.
  
  You will need to do a rebuild or manually delete the old assembly .obj files
  for the first build from this revision to succeed, since there are no
  changes to the assembly files themselves, and the build process will not be
  able to automatically detect that they need to be rebuilt.


SVN r473 (trunk)
2007-02-03 02:51:13 +00:00
Randy Heit
095b11bc36 - Added an operator += for FString that takes an FName as input, since GCC
is unable to synthesize one.
- Converted xlatcc to use lemon during its build process. Now you don't need
  bison to rebuild everything anymore.


SVN r470 (trunk)
2007-01-31 00:30:42 +00:00
Randy Heit
e8495e90f5 Fixed some lemon bugs:
* "Symbol name missing after %destructor keyword" error message displayed incorrectly.
* Line numbers in the generated file for lines that came from the template were off.
* The parser did not immediately reduce after a shift. There always needed to be
  another token input first before a reduce would occur, and then the token would
  sometimes be lost.

SVN r469 (trunk)
2007-01-31 00:15:08 +00:00
Randy Heit
323034af74 Forgot to update lempar.c with lemon.c, so here is version 1.23 from the SQLite CVS.
SVN r468 (trunk)
2007-01-30 20:33:57 +00:00
Randy Heit
b06f4423b9 Updated lemon.c to version 1.43 from the SQLite source.
SVN r467 (trunk)
2007-01-30 20:05:39 +00:00
Randy Heit
83373fba88 Note: I have not tried compiling these recent changes under Linux. I wouldn't
be surprised if it doesn't work.

- Reorganized the network startup loops so now they are event driven. There is
  a single function that gets called to drive it, and it uses callbacks to
  perform the different stages of the synchronization. This lets me have a nice,
  responsive abort button instead of the previous unannounced hit-escape-to-
  abort behavior, and I think the rearranged code is slightly easier to
  understand too.
- Increased the number of bytes for version info during D_ArbitrateNetStart(),
  in preparation for the day when NETGAMEVERSION requires more than one byte.
- I noticed an issue with Vista RC1 and the new fatal error setup. Even after
  releasing a DirectDraw or Direct3D interface, the DWM can still use the
  last image drawn using them when it composites the window. It doesn't always
  do it but it does often enough that it is a real problem. At this point, I
  don't know if it's a problem with the release version of Vista or not.
  After messing around, I discovered the problem was caused by ~Win32Video()
  hiding the window and then having it immediately shown soon after. The DWM
  kept an image of the window to do the transition effect with, and then when
  it didn't get a chance to do the transition, it didn't properly forget about
  its saved image and kept plastering it on top of everything else
  underneath.
- Added a network synchronization panel to the window during netgame startup.
- Fixed: PClass::CreateDerivedClass() must initialize StateList to NULL.
  Otherwise, classic DECORATE definitions generate a big, fat crash.
- Resurrected the R_Init progress bar, now as a standard Windows control.
- Removed the sound failure dialog. The FMOD setup already defaulted to no
  sound if initialization failed, so this only applies when snd_output is set
  to "alternate" which now also falls back to no sound. In addition, it wasn't
  working right, and I didn't feel like fixing it for the probably 0% of users
  it affected.
- Fixed: The edit control used for logging output added text in reverse order
  on Win9x.
- Went back to the roots and made graphics initialization one of the last
  things to happen during setup. Now the startup text is visible again. More
  importantly, the main window is no longer created invisible, which seems
  to cause trouble with it not always appearing in the taskbar. The fatal
  error dialog is now also embedded in the main window instead of being a
  separate modal dialog, so you can play with the log window to see any
  problems that might be reported there.
  
  Rather than completely restoring the original startup order, I tried to
  keep things as close to the way they were with early graphics startup. In
  particular, V_Init() now creates a dummy screen so that things that need
  screen dimensions can get them. It gets replaced by the real screen later
  in I_InitGraphics(). Will need to check this under Linux to make sure it
  didn't cause any problems there.
- Removed the following stubs that just called functions in Video:
    - I_StartModeIterator()
    - I_NextMode()
    - I_DisplayType()
  I_FullscreenChanged() was also removed, and a new fullscreen parameter
  was added to IVideo::StartModeIterator(), since that's all it controlled.
- Renamed I_InitHardware() back to I_InitGraphics(), since that's all it's
  initialized post-1.22.


SVN r416 (trunk)
2006-12-19 04:09:10 +00:00
Christoph Oelckers
e9c68df94e - Fixed: The smartaim logic was incorrect. Also added another mode: Autoaim only
at monsters.


SVN r415 (trunk)
2006-12-16 16:34:39 +00:00
Randy Heit
41de448add - Fixed some warnings flagged by GCC 4.1.1, which brings up an interesting
observation. The following code works with VC++ 2005. It aborts with GCC:
    FString str = "This is a string.";
    Printf ("%s\n", str);

SVN r408 (trunk)
2006-12-09 00:16:10 +00:00
Christoph Oelckers
b599eda17d - Moved A_ThrowGrenade from Inventory to Actor because it can also be used by
monsters
- Added velocity multiplicators to A_SpawnDebris.
- Changed: A_JumpIfNoAmmo should have no effect for CustomInventory items.
- Fixed: DECORATE jump commands must set the call state's result to 0
  even when they have to return prematurely.
- Added obituaries for Strife's and Hexen's monsters.
- Converted Strife's Bishop to DECORATE.
- Added momx, momy and momz variables to the DECORATE expression evaluator.


SVN r404 (trunk)
2006-12-06 10:38:47 +00:00
Randy Heit
511e11e8b4 SVN r402 (trunk) 2006-12-04 03:23:02 +00:00
Randy Heit
4467cd6563 - Started adding action function declarations to objects.
- Added integer constant declarations to objects.
- Added some new token-based functions to sc_man.cpp that know about keywords
  and record proper type information, so parsers don't need to treat
  everything as strings.
- Added a simple symbol table to PClass.


SVN r394 (trunk)
2006-11-29 04:51:16 +00:00
Christoph Oelckers
a90ba9deb6 - Converted Ettin and Centaur to DECORATE.
- Made the Ettin's and Centaur's howling sound an actor property.
- Added A_CustomComboAttack function to finally have something that can
  replace the old A_ComboAttack function.
- Added A_SpawnItemEx function that removes the problems with A_SpawnItem
  and which also should make most of the A_CustomMissile abuse unnecessary.
- Added A_QueueCorpse to the list of DECORATE code pointers.
- Made the size of Hexen's corpse queue configurable by CVAR
  (sv_corpsequeuesize.) Setting this CVAR to -1 will disable corpse 
  queuing completely so that even in Hexen all corpses will stay forever.


SVN r392 (trunk)
2006-11-27 00:01:30 +00:00
Randy Heit
04b80f8de5 - Reverted updaterevision.vcproj to r385 and added a note as a build event
explaining the need to use mt.exe 6.0 or newer. Here is the note:
  VERY IMPORTANT: You must copy the mt.exe from %VSINSTALLDIR%\Common7\Tools\bin
  on top of the version in %VSINSTALLDIR%\VC\bin or your computer may restart
  while building.
- Changed the ASecretTrigger::Activate() fix: There's no reason open scripts
  shouldn't be able to activate secret triggers; players just won't get
  credit for it in coop.
- Added a NULL actor check to R_SetupFrame().
- Fixed: The player sounds in DEHSUPP were defined incorrectly.


SVN r390 (trunk)
2006-11-26 01:30:34 +00:00
Christoph Oelckers
beca482a68 - Fixed: SecretTriggers that were activated in an OPEN script caused a crash.
SVN r389 (trunk)
2006-11-26 00:09:17 +00:00
Randy Heit
86ed101522 - Added a manifest with a trustinfo section to updaterevision.exe so that
the build process can run uninterrupted under Vista.
- Fixed: DIRECT3DCREATE9FUNC needs WINAPI added to its prototype so that it
  works properly in release build, which defaults to __fastcall.


SVN r385 (trunk)
2006-11-23 02:16:43 +00:00
Randy Heit
55e299e4b3 Upgraded ccdv-win32.c and the Makefiles so that they are fully functional under MSYS.
SVN r286 (trunk)
2006-08-11 03:07:32 +00:00
Randy Heit
c32afb8b4c - Fixes for GCC on Linux.
SVN r202 (trunk)
2006-06-20 22:26:04 +00:00
Randy Heit
c54f2f66fc - Unlimited the monster pain sounds in Hexen after playing as the Cleric a
while and killing centaurs with the flechette.
- Fixed: Moving to an old level in a hub caused the old player's inventory to
  spawn owned by the current player (but still hanging off the old player), so
  the game would hang when trying to delete it.
- Modified re2c so that it doesn't add a date to the file it generates. Thus,
  if it regenerates a file during a full rebuild, SVN won't see it as a change.
  Also updated it to 0.10.5.
- Fixed: SC_GetString() did not properly terminate sc_String when the last
  token in the file had no white space after it. Since I could not actually
  find the problem (it works fine in debug mode and I saw no logic errors),
  I decided to take this opportunity to reimplement it using an re2c-generated
  scanner. Now it's 1.6x faster than before and correctness is easier to
  verify.
- Fixed: FMODSoundRenderer::Shutdown() also needs to reset NumChannels.
- Added back the Manifest to zdoom.rc for non-VC8 Windows compilers.
- Fixed MinGW compilation again. Now it uses the same method as Makefile.linux
  to find all the source files so that it doesn't need to be manually updated
  each time source files are added or removed.
- Added the SVN revision number to the version string. A new tool is used to
  obtain this information from the svnversion command and write it into a
  header file. If you don't have the svn command line tools installed or didn't
  check it out from the repository, you can still build. I added some rules for
  this to Makefile.linux, and I assume they work because they do for
  Makefile.mingw.
- Fixed: MIDISong2 did not delete MusHeader in its destructor.


SVN r200 (trunk)
2006-06-20 20:30:39 +00:00
Randy Heit
c87e2252ed - Finally implemented code to keep some or all of your inventory intact when
respawning in coop. Now the new inventory code should finally be complete. :-)
- Fixed: PROP_Inventory_PickupMessage was improperly defined for non-VC++
  compilation.


SVN r197 (trunk)
2006-06-18 04:10:47 +00:00
Randy Heit
0c62f08a58 - Modified Makefile.linux to use ccdv for easier error spotting and to
make the dependancy files at the same time it makes the object files.


SVN r180 (trunk)
2006-06-08 02:43:35 +00:00
Christoph Oelckers
92dff5f302 Added Jim's and Mannequin's latest Linux makefile submissions.
SVN r154 (trunk)
2006-05-29 09:00:20 +00:00
Randy Heit
12b066ef2e - Fixed: When building GL nodes for Deathkings MAP42, one polyobject had one
of its segs thrown away, so the map could not start. This was because the
  nodebuilder assumed all subsectors would be 2D and could not handle the
  case where a degenerate 1D subsector is created. In this case, that happens
  because that map has three polyobjects in the middle of the void, so the only
  way to assign them to a subsector is to use a 1D subsector.


SVN r153 (trunk)
2006-05-29 03:27:32 +00:00
Christoph Oelckers
96f6cfd18a SVN r148 (trunk) 2006-05-27 10:27:51 +00:00
Randy Heit
67da924a02 - Changed makewad's zip routines so that it simply stores files that cannot be
compressed smaller instead of using deflate anyway. Saves 133 bytes currently.


SVN r147 (trunk)
2006-05-27 02:17:30 +00:00
Randy Heit
90b5130db0 - Fixed: The C code in AltSoundRenderer::CopyAndClip() did not shift the sample
data enough (2 bits instead of 8), so it was super loud and aliased.
- Fixes for GCC 4.1: Several type-punned pointer warnings, but more
  importantly, declaring a friend function inside a class body is no longer
  enough to declare that function globally; you must declare it again outside
  the class.
- Upgraded FArchive::SerializePointer so that it can store 32-bit indices.
- ACS printing pcodes now build their string in an FSttring instead of a fixed
  sized buffer on the stack.


SVN r145 (trunk)
2006-05-26 04:38:22 +00:00
Randy Heit
43abfba723 - Modified ccdv-win32 to show "Generating X" messages when running lemon and
re2c instead of "Linking X".
- Updated lemon and re2c to the latest versions and ported dehsupp to use them
  for code generation. (Xlatcc is next.)
- Added function level linking for Makefile.mingw.


SVN r144 (trunk)
2006-05-25 04:32:20 +00:00
Randy Heit
cccf66f34b - Added missing linker dependencies for Visual C++ 2005 Express Edition and
fixed building of the assembly files when the source is located in a path
  with spaces.

SVN r139 (trunk)
2006-05-23 23:59:41 +00:00
Randy Heit
cb18719d05 - Fixed: The new sound pausing on menu open interrupted Strife conversations.
- Did some very preliminary support for x64 compiling.
- Now I see why makewad is using the __fastcall calling convention by default:
  Because the release zlib is built with it as well.
- Fixed: Conversion from 'const char *' to 'char *' in DEM_SAVEGAME case in
  Net_DoCommand().
- Updated the project files for Visual C++ 2005.


SVN r138 (trunk)
2006-05-23 04:25:49 +00:00
Randy Heit
df799ade24 - Fixed GCC 4 warnings in FNodeBuilder::CreateSubsectorsForReal().
- Changed f_finale.cpp/atkstates[] into a static variable, since its
  anonymous type prevents it from being accessed from other files anyway.
- Fixed: The behavior of the eventtail advancement in d_net.cpp/CheckAbort()
  was compiler-dependant.
- Fixed warnings GCC 4 threw up while compiling re2c and lemon.
- Removed __cdecl from makewad.c again. This is already defined as a builtin
  for MinGW, and redefining it produces a warning. (Why is main explicitly
  declared __cdecl anyway?)
- Fixed building ccdv-win32 with GCC 4. GCC 4 creates a memcpy call, which
  won't work because it doesn't get linked with the standard C library.


SVN r135 (trunk)
2006-05-22 01:34:07 +00:00
Christoph Oelckers
f8bdceab38 - Fixed: The automap code had the check for rotation reversed.
- Changed type PClass::FreeIndices to TArray<unsigned int> because that's
  the type of the indices.
- Fixed: makewad.c needs __cdecl for non-Windows builds.
- Fixed: FinishThingdef didn't check whether the WeaponClass pointer in
  AWeaponPiece was a valid name.



SVN r133 (trunk)
2006-05-20 09:16:08 +00:00
Randy Heit
6cd1e2ce6a - Fixed: CopyPlayer() in p_saveg.cpp should use normal assignment, not
memcpy to copy the player structures.
- Fixed compilation with MinGW again and removed most of the new warnings.

And following is the log that I forgot to paste in for the previous commit:

- Changed the memory management for FString. Instead of using a garbage
  collected heap, it now uses normal heap calls and reference counting to
  implement lazy copying. You may now use bitwise operators to move
  (but not copy!) FStrings around in memory. This means that the
  CopyForTArray template function is gone, since TArrays can now freely
  move their contents around without bothering with their specifics.
  
  There is one important caveat, however. It is not acceptable to blindly 0
  an FString's contents. This necessitated the creation of a proper
  constructor for player_s so that it can be reset without using memset. I
  did a quick scan of all memsets in the source and didn't see anything else
  with a similar problem, but it's possible I missed something.
- Fixed: Build tiles were never deallocated.
- Fixed: Using Build's palette.dat only got half the palette right.


SVN r117 (trunk)
2006-05-16 04:19:20 +00:00
Randy Heit
981f663319 - Updated Jim's Makefile.linux.
- Added support for wrapping midtextures vertically.
- Since zdoom.wad is now zdoom.pk3, the default mapinfos can use full pathnames.
  So now they do.
- Fixed: The DSimpleCanvas constructor used a pitch too narrow on screens wider
  than 640 pixels when using a non-AMD processor and the processor's L1 cache
  line size could not be determined. I think this should fix the issue of
  weirdly rendered 8 pixel wide borders on the left and right of the screen that
  some people experienced.
- Fixed: The secnodes were never freed.


SVN r93 (trunk)
2006-05-09 21:30:31 +00:00
Randy Heit
748d7bf4b1 - The game is now free of leaks up to the point just after the wads are loaded.
- Fixed: Although TypeInfos are now deleted at exit, their FlatPointers or ActorInfo
  data was not freed. I chose not to use a destructor to handle this, because then it
  would no longer be a POD type that can be statically initialized.
- Fixed: Aliases were not deleted at exit.
- Fixed: FWadCollection did not free its hash tables, lump info, full names, or the
  list of open files when destroyed.


SVN r85 (trunk)
2006-05-09 00:02:37 +00:00
Christoph Oelckers
29cd024aba SVN r71 (trunk) 2006-04-30 21:49:18 +00:00
Randy Heit
75aec5dde9 GCC fixes: (courtesy of Jim and zloba)
- default.cbd was missing thingdef_exp.cpp
- tools/makewad/Makefile.mgw was outdated thanks to recently added zip support
- wadsrc/wadmake should not be in the repository, as it needs to use host machine path separator conventions

SVN r69 (trunk)
2006-04-29 04:52:30 +00:00
Christoph Oelckers
283dca5750 Made makewad.c compilable as C.
SVN r61 (trunk)
2006-04-21 20:32:24 +00:00
Randy Heit
2bfc183154 SVN r47 (trunk) 2006-04-16 03:31:40 +00:00
Christoph Oelckers
8a7ba616f4 SVN r46 (trunk) 2006-04-15 15:00:29 +00:00
Randy Heit
cf11cbdb30 Directory restructuring to make it easier to version projects that don't build zdoom.exe.
SVN r4 (trunk)
2006-02-24 04:48:15 +00:00