Commit graph

773 commits

Author SHA1 Message Date
Randy Heit
ca0b61d066 - Added texture packing to D3DFB so that textures that are temporally related
can share the same hardware texture. This greatly reduces the number of
  DrawPrimitive calls that need to be made when drawing text (or any 2D
  graphics in general), so now hardware text is much faster than software text
  all around. (As an example, one scenario went from 315 fps to over 1635 fps
  for hardware, compared to 540 fps for software.)


SVN r687 (trunk)
2008-01-10 04:11:38 +00:00
Randy Heit
9839cbfc82 - Fixed: The mouse was being grabbed in windowed mode again.
- Modified M_DrawFrame() and R_DrawTopBorder() so that they call FlatFill() to
  draw the edges of the frames. This at least seems a bit faster for hardware
  2D.
- Implemented FlatFill() for D3DFB. It seems to be exactly as fast as the
  default implementation that just calls DrawTexture() to tile the pieces onto
  the screen, so I'm not sure it was worth the bother.


SVN r686 (trunk)
2008-01-09 23:04:49 +00:00
Randy Heit
0b4092e98e - Merged the separate line and quad vertex buffers in D3DFB back into a single
vertex buffer, made line batching automatic, and added an index buffer for
  use when batching quads. The index buffer actually offered more of a
  performance boost than simply batching the quads alone did.


SVN r685 (trunk)
2008-01-09 21:04:21 +00:00
Christoph Oelckers
3bd53dafbe - Fixed: 'Painchance' in DECORATE failed when reading custom damage type names.
- Added Karate Chris's patch for menu opening console commands.


SVN r684 (trunk)
2008-01-09 09:01:30 +00:00
Randy Heit
c694c55afd - Fixed: When starting a teamplay netgame, players who did not specify a team
were not informed about which team they ended up joining.
- Added Skulltag's DF2_SAME_SPAWN_SPOT flags.
- Fixed: DF2_YES_DEGENERATION was pretty much guaranteed to go out of sync
  because it used gametic for timing.
- Added DoubleAmmoFactor as a skill property for the DF2_YES_DOUBLEAMMO flag.
- Renumbered the dmflags2 entries to match Skulltag's again.
- Added Karate Chris's infinite ammo patch.


SVN r683 (trunk)
2008-01-09 02:53:38 +00:00
Christoph Oelckers
6b79a75293 GCC re-fix
SVN r682 (trunk)
2008-01-08 16:23:02 +00:00
Christoph Oelckers
fa6a40bdda GCC fix
SVN r681 (trunk)
2008-01-08 14:32:18 +00:00
Randy Heit
0a822bd2da Forgot to add xhairs.txt to the repository.
SVN r680 (trunk)
2008-01-08 04:52:57 +00:00
Randy Heit
761c77d033 - Added support for user-defined crosshairs in the Display Options menu. See
xhairs.txt in zdoom.pk3. It's pretty simple.


SVN r679 (trunk)
2008-01-08 04:00:43 +00:00
Randy Heit
2d4b679fcb - Fixed: P_BounceWall() cannot assume that BlockingLine is the line the actor
should bounce off of. Since the order lines in a blockmap cell are checked
  for collision is essentially undefined, there could be another line closer to
  the actor that it should bounce off of instead.

SVN r678 (trunk)
2008-01-08 03:21:01 +00:00
Randy Heit
bec0d3438f GCC fixes.
SVN r677 (trunk)
2008-01-08 01:48:33 +00:00
Randy Heit
016ac67376 - Fixed: Thing_SetTranslation still used a 16-bit word to hold the translation.
- Bumped the maximum resolution up to 2560x1600.
- Fixed: DCanvas::DrawTexture() only expanded virtual screen sizes for widescreen
  resolutions but left 5:4 modes alone. This fix neccessitated the addition of
  DTA_Bottom320x200 for the status bar to use so that it could be flush with the
  bottom of the screen rather than sitting slightly above it.
- Fixed: FConfigFile::ReadConfig()'s definition of whitespace was too broad.
- Fixed: Defining custom translation ranges in descending order and/or with gaps
  made for crashes.


SVN r676 (trunk)
2008-01-08 01:08:27 +00:00
Christoph Oelckers
ed242b32df - Fixed: translationtables cannot use a TAutoGrowArray because it doesn't
initialize newly added fields when growing.


SVN r675 (trunk)
2008-01-07 22:07:25 +00:00
Christoph Oelckers
9cdd0b98ce - Added fix for Heretic IDKFA cheat by Karate Chris.
- Added fix for Strife's AlienSpectre obituary by Karate Chris.


SVN r674 (trunk)
2008-01-07 08:58:18 +00:00
Christoph Oelckers
f918a43286 - Re-converted icebreak.flac because the old version apparently didn't work.
SVN r673 (trunk)
2008-01-06 20:54:18 +00:00
Christoph Oelckers
1f0fa7c457 - Added SBARINFO update #5 by blzut3:
- Fixed: Playerclass still didn't work due to comparing of improper numbers.
    - Fixed: The arrows on drawinventorybar had a hard coded location instead of
      relative to the specified coordinates.
    - Added noarrows flag to drawinventorybar to remove the blue arrows drawn when
      there are more items to the left or right of the viewable bar.
    - Added forcescaled flag to the statusbar command.  This is ignored on the
      inventory and inventoryfullscreen types.
- Added obituary fix for Strife peasants by Karate Chris.
- Added fix for loading during demo playback by Karate Chris.


SVN r672 (trunk)
2008-01-06 19:10:52 +00:00
Christoph Oelckers
d7add9ce76 - Added scoreboard fix by Karate Chris.
SVN r671 (trunk)
2008-01-06 11:46:01 +00:00
Christoph Oelckers
fdbd18c50e - Added teamgame fix for menu by Karate Chris.
- Added GZDoom's Sector_Outside sector type which forces outside fog
  regardless of ceiling texture.


SVN r670 (trunk)
2008-01-06 10:05:24 +00:00
Randy Heit
59c007d5f4 - Fixed: Since the minimum size for a texture is 2x2, FBarShader can't use
a one-dimensional texture.


SVN r669 (trunk)
2008-01-06 04:20:53 +00:00
Randy Heit
51461aa010 - Added back the code to allow some variation to the players' shades when
players are on teams.
- Set TEAM_None back to 255. Since a player's team has already been accessible
  through ACS, needlessly redefining this is a bad thing to do, since it can
  break existing maps. 255 different teams should still be more than enough.
- Fixed: At certain resolutions, there was a one pixel row between the status
  bar and the rest of the screen, thanks to rounding error.
- Added automatic batching of quads to D3DFB. Screens with a lot of text are
  ever-so-slightly faster now, though still only about half the speed of
  sofware-only text. I suppose the only way to see a marked improvement is
  going to be by stuffing multiple glyphs in a single texture.
- Fixed: Crosshairgrow's animation was not framerate-independent.


SVN r668 (trunk)
2008-01-06 04:03:33 +00:00
Christoph Oelckers
935eeb06f1 - Added: Automap markers are stored in savegames now. Also moved the call
to AM_LevelInit to its proper place in G_DoLoadLevel, right after
  the call to P_SetupLevel to make it work as intended.


SVN r667 (trunk)
2008-01-05 12:15:10 +00:00
Christoph Oelckers
10b71b09c8 - Changed savegame versioning to use the SVN revision number instead of
an arbitrarily defined value. This reduces the amount of relevant values
  that have to be defined in version.h to 1 (the minimum compatible savegame
  version) instead of previously 3.


SVN r666 (trunk)
2008-01-05 09:12:05 +00:00
Randy Heit
3017f7646d - Fixed: FBarShader::PrepareShader() set a member variable to point at a
local variable just before returning. Then I made some more changes so that
  it can be a properly functioning texture. After doing that, I decided to
  rewrite the texture generation to be easier for me to read and hopefully
  faster, since this thing is getting generated every frame. (Please don't
  hurt me if I got it wrong. I'm basing this on the description in the wiki,
  since I couldn't wrap my head around what the code was doing by looking
  at it.) Then I realized that there's really no reason to have more than four
  of these ever, and they can be statically generated, so I simplified it some
  more.
- Added Blzut3's latest SBARINFO patch:
 * Fixed a massive memory leak in SBARINFO. The leak also lead to progressive
   CPU usage.
 * Fixed: Playerclass didn't work in SBARINFO.
 * Fixed: Artiflash was improperly initialized causing it not to display the
   first time.
 * Changed the variable SBarInfoScript to be a pointer to prevent more memory
   leaks.


SVN r665 (trunk)
2008-01-05 04:23:34 +00:00
Christoph Oelckers
aa90336765 - Removed the patches for the Doom/Heretic E1 intermission screens from
R_InitPatches. This isn't needed anymore because all these are loaded through
  an intermission script.
- Fixed: A_SpawnDebris read the third and fourth arguments from the first one's
  address.


SVN r664 (trunk)
2008-01-04 08:51:51 +00:00
Randy Heit
5cbb2bd472 - Moved the pixel shaders' color information out of the constant registers
and into the vertex data.
- Added functions for doing line drawing with Direct3D, including a new pair
  of functions to do batched line drawing so that the map can actually be
  drawn faster in hardware than in software (instead of an order of magnitude
  slower).


SVN r663 (trunk)
2008-01-04 05:22:30 +00:00
Randy Heit
5d9d2a9088 - Tried adding bilinear filtering support for paletted textures, but the
shader seems to be producing crappy output, so it's disabled for now.
  Specifically, it produces distorted output at regular intervals for
  textures that aren't power-of-2-sized, and it's still doing visible
  filtering when the texture is rendered at its original size, so
  obviously it's not doing something right.
- Fixed the use of power-of-2-sized native textures for smaller game
  textures again.
- Fixed: D3DFB did not restore all the state it needed to after resetting
  the device.
- Fixed: R_DrawTopBorder() must clip itself around the 3D view, since it's
  now drawn later.
- With full software rendering, palette flashes once again effect the whole
  screen.

Changes I neglected to put in the previous commit log:

- Moved the view border drawing into the 2D mode part. When using Begin2D()
  now, the only part of the software buffer that gets updated to the screen
  is the part with the actual 3D scene and only if you tell it to.
- Fixed a D3D memory leak on every frame in windowed mode and the same thing
  for the screen wipes. Note to self: If it's an interface, be sure to
  Release it, because it will be AddRef'ed before being returned to you.
- Moved the BlendView() call out of FBaseStatusBar::Draw() so that it can be
  applied before copying the 3D scene to the screen underneath the 2D parts.
- Restored the console's darkening level to its old table-based amount.
- Fixed D3DFB::SetColorOverlay()'s incorrect calculations.
- Fixed the D3D screen wipes for letterboxed modes.

SVN r662 (trunk)
2008-01-03 05:39:36 +00:00
Randy Heit
59c8faa7df - The mouse is no longer grabbed at all unless you're actually in a level,
since I couldn't think of any reason why it should be grabbed at any other
  time. (This only applies to windowed mode, where it makes sense to let the
  OS have control of the pointer.)


SVN r661 (trunk)
2008-01-02 05:21:48 +00:00
Christoph Oelckers
8be8c48585 - Fixed: A_JumpIfTargetInLOS had inconsistent parameter definitions.
SVN r660 (trunk)
2008-01-01 08:47:49 +00:00
Randy Heit
dc98279403 - Removed the screenshot parameter from D_Display(), since it was a relic of
a long-abandoned experiment to write directly to video memory instead of
  to a temporary buffer in system meroy.
- Added Direct3D versions of the melt and burn screenwipes.
- Fixed the strip sizes for the melt screenwipe to match what Doom would have
  produced on a 320x200 screen, rather than producing more, thinner strips
  for wider screens.


SVN r659 (trunk)
2008-01-01 03:07:05 +00:00
Randy Heit
db54c43175 - Started writing Direct3D-friendly wipe code. It's just a Q&D crossfade for
now. More to come later.
- What is it about updaterevision.vcproj that makes it keep changing?

SVN r658 (trunk)
2007-12-30 04:18:39 +00:00
Christoph Oelckers
68e2134f70 SVN r657 (trunk) 2007-12-29 10:25:07 +00:00
Randy Heit
6872bcd3ef - Fixed position of the Doom HUD selectbox as per SnowKate709's guidance.
SVN r656 (trunk)
2007-12-29 03:02:25 +00:00
Christoph Oelckers
5e56a6512a - Changed FImageCollection so that it accepts a matching texture of any type.
This is necessary to load hires sprite replacements for certain icons.


SVN r655 (trunk)
2007-12-28 22:00:41 +00:00
Christoph Oelckers
a329efe9a4 - Added a check to Wads.CheckNumForName to return -1 for names longer than
8 characters which contain path separators.
- Fixed: Hires texture replacement must replace all matching textures, not
  just the first one found. This is particularly important for icons based
  on sprites.
- added a con_alpha CVAR to set the console's translucency.
- Added MartinHowe's submission for A_CustomBulletAttack aimfacing parameter.
- Added MartinHowe's submission for A_PlaySoundEx attenuation parameter.
- Fixed: Bots shouldn't target friendly monsters.
- Fixed a typo in sbarinfo.cpp (noatribox instead of noartibox.)

SVN r654 (trunk)
2007-12-28 11:17:52 +00:00
Randy Heit
37f9c50b4e - Fixed cases where a larger power-of-2-sized native texture had to be
allocated. (I wonder if D3D actually handles this automatically when you use
  D3DPOOL_MANAGED, because I'm pretty sure my laptops's x300 doesn't support
  non-power-of-2 texture sizes, yet it worked just fine before.) 
- Fixed vertical positioning of 2D elements in letterboxed modes.

SVN r653 (trunk)
2007-12-28 03:30:05 +00:00
Randy Heit
522e7fe07f - Removed DCanvas::Blit(), as it's no longer used.
- Added a function to create a texture from a stand-alone PNG file. The save/
  load menus now use this to get their thumbnails.


SVN r652 (trunk)
2007-12-28 01:54:14 +00:00
Christoph Oelckers
c911e995a9 - Changes for MinGW compile.
SVN r651 (trunk)
2007-12-27 14:22:45 +00:00
Christoph Oelckers
e19cd0bec3 - Fixed: DFrameBuffer::CopyPixelData copied data as RGBA instead of BGRA.
- Temporarily changed FPNGTexture and FDDSTexture to always create True Color
  native textures to preserve the original colors.


SVN r650 (trunk)
2007-12-27 11:53:09 +00:00
Christoph Oelckers
f1241099f8 - Darkened the console background a little after finding out that on
very bright title pics it became quite hard to read the console's contents.
- Fixed: PROP_Translation needed to be changed for the new value format.
- Added GZDoom's MAPINFO fog parameters as no op dummies so I can use
  WADs that contain them without constantly having to edit the MAPINFO.
  It also allows using them to optimize hardware fog for WADs that should
  run with ZDoom as well.


SVN r649 (trunk)
2007-12-27 11:25:25 +00:00
Randy Heit
834e4bef32 - Changed the way gamma works for D3DFB: In windowed mode, the display is
drawn to a texture, then that texture is copied to the real back buffer
  using a gamma-correcting pixel shader. In fullscreen mode, SetGammaRamp
  is used.
- Fixed flashing of vid_fps display when fps > 1000.
- Fixed loading of RGB textures for native 2D mode.
- Changed the first rotozoomer's data because it just became too obvious when
  the backdrop is drawn with a full 256 distinct colors available.
- Set the player backdrop to update no more frequently than 35 FPS, so opening
  the player setup menu before starting a game won't produce a very fast
  moving backdrop.
- Changed the player backdrop into a texture so that it can be drawn like
  anything else.


SVN r648 (trunk)
2007-12-27 04:30:12 +00:00
Randy Heit
d1655ca2b9 SVN r647 (trunk) 2007-12-26 22:33:26 +00:00
Christoph Oelckers
5a0009cbab - Fixed: The FSpecialFont constructor copied the untranslated colors directly
from the source palette instead of the font's identity map.


SVN r646 (trunk)
2007-12-26 21:37:00 +00:00
Christoph Oelckers
3df3d6d052 SVN r645 (trunk) 2007-12-26 16:37:27 +00:00
Christoph Oelckers
0535d15df3 - Split off the entire translation code from r_draw.cpp into r_translate.cpp.
- Moved the common code of ACS and DECORATE translation generation into the
  FRemapTable class.
- Fixed: The DECORATE translation code was not changed for the new data structures.
- Expanded range of ACS and DECORATE translations to 65535. 
- Fixed: R_CopyTranslation was not altered for the new functionality.
  I removed the function and replaced the one use with a simple assignment.


SVN r644 (trunk)
2007-12-26 16:06:03 +00:00
Christoph Oelckers
6804e66208 - Replaced 'C:\\ZDOOMDAT' with a #define in version.h.
- Moved screenshot code into DCanvas so that it can be overridden by
  subclasses with a different buffer.


SVN r643 (trunk)
2007-12-26 09:56:09 +00:00
Randy Heit
682e0dbe95 - Fixed: The fullscreen console crashed when opened before starting a game.
SVN r642 (trunk)
2007-12-26 05:20:30 +00:00
Randy Heit
813b59edee - Removed a few new warnings spewed by GCC.
SVN r641 (trunk)
2007-12-26 05:03:14 +00:00
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
6b9f3c8247 - forgot to change 2 files for last commit.
SVN r639 (trunk)
2007-12-25 10:25:43 +00:00
Christoph Oelckers
faa9cc4302 - added a P_PointInSector function and replaced all calls to retrieve an
actor's sector in the game engine code with it. This way there's a clear
  distinction between renderer-specific and game-specific calls.


SVN r638 (trunk)
2007-12-25 10:07:58 +00:00