Commit graph

395 commits

Author SHA1 Message Date
Randy Heit
510838c3c1 - Undo accidental commit of win32video.cpp with test resolution in place.
SVN r3483 (trunk)
2012-03-25 03:08:13 +00:00
Randy Heit
23e88c88c9 - Add 17:10 aspect ratio, for 1024x600 screens.
SVN r3482 (trunk)
2012-03-25 02:57:28 +00:00
Randy Heit
162ad601ba - Fixed bug introduced in r3412: The SetStyle() call needs to come after the scissoring check,
because the latter can flush the quads, including the one SetStyle() just set a style for.

SVN r3429 (trunk)
2012-03-12 01:22:19 +00:00
Randy Heit
76b5e7ef60 - Fixed: D3DFB::DrawTextureV() did not disable the scissor test if it was needed but SetStyle()
decided there was nothing to draw. In practical terms, this means that if your weapon is
  completely invisible, the game would not draw anything outside of the main play area because
  the scissor test would be left on for the entire frame and not just the weapon's quad.

  Making the call to SetStyle() before the scissor check is enough to fix this.

SVN r3412 (trunk)
2012-03-09 00:12:04 +00:00
Randy Heit
d54f9c3616 - Added startup screen customization, courtesy of Gez.
SVN r3375 (trunk)
2012-02-21 19:52:40 +00:00
Christoph Oelckers
5bfcaab25c - separation of software renderer from the rest of the code complete. All external access to the renderer is routed through the FRenderer interface class now, with two exceptions (2D texture drawing to a canvas and polymost testing code) that are handled by #defines.
SVN r3263 (trunk)
2011-07-07 15:37:47 +00:00
Christoph Oelckers
463c276014 - removed more r_ header dependencies from the rest of the code.
SVN r3260 (trunk)
2011-07-06 15:31:05 +00:00
Christoph Oelckers
fbff5ca932 - moved r_interpolate.cpp and r_translate.cpp to r_data.
- merged r_jpeg.h into jpegtexture.cpp because that's the only place where it's ever used.


SVN r3255 (trunk)
2011-07-06 08:50:15 +00:00
Christoph Oelckers
5c6fd66ed5 - rename src/resources to src/r_data.
SVN r3254 (trunk)
2011-07-06 07:35:36 +00:00
Christoph Oelckers
17ed7aaabd - moved the code from r_data.cpp to some better fitting places and deleted this file and r_data.h because the remaining parts of it were just a random collection of unrelated functions.
SVN r3248 (trunk)
2011-07-05 10:02:38 +00:00
Christoph Oelckers
4626492f50 - separated all colormap related code from v_palette.cpp and r_data.cpp into its own file.
SVN r3245 (trunk)
2011-07-03 10:47:35 +00:00
Randy Heit
4b78b07aca - Fixed: D3DFB::Draw3DPart() treated the screen's pitch as if it always equaled the width.
Considering this hasn't been guaranteed since before the D3DFB class was even written, this
  should have never made it in as-is.

SVN r3241 (trunk)
2011-06-18 05:18:28 +00:00
Randy Heit
59b6c5ef5c - Removed a couple warnings about implicit vector truncation reported by fxc. (Apparently, it
also decided to compile some other shaders slightly differently, too.)
- Fixed: The InGameColormap had been designed without taking alpha into consideration.
  As the least likely parameter to be used, desaturation has been moved into a constant
  register to make room for the alpha parameter to live in the vertex's color value.

SVN r3208 (trunk)
2011-05-15 22:30:20 +00:00
Randy Heit
11c24334c5 - Fixed: DDrawFB::Lock() should only act on NeedResRecreate when going from LockCount 0 -> 1.
- Fixed: When DDrawFB::Lock() has to recreate resources, it left the LockCount at 0. This causes
  problems if something else locks it before it is unlocked, because the second locker will
  think it is the first. This happens in R_RenderViewToCanvas(). See DDrawFB::PaletteChanged()
  for the most common reason why Lock() would need to recreate resources.
- Fixed: DDrawFB::CreateSurfacesComplex() had debugging cruft left in that skipped all but the
  last attempts.
- Fixed logging of video debug info to a file to not multiply define dbg.


SVN r3195 (trunk)
2011-05-08 04:35:00 +00:00
Randy Heit
619634c1f8 - Move the call to DrawLetterbox() into D3DFB::Flip() so that it is the last thing that happens
before the scene is presented. Now it properly obscures 2D graphics.

SVN r3183 (trunk)
2011-04-17 04:04:34 +00:00
Randy Heit
d3b44a4172 - Fix errors/warnings from MinGW 4.5.0 (tdm-1).
- Disable the missing field initializers warnings that -Wextra produces from GCC.

SVN r3173 (trunk)
2011-03-29 05:20:33 +00:00
Randy Heit
c52d9ec1b9 - Relax the restriction that display resolutions must be a multiple of 8 so that they only need be even. The software wiping code requires multiples of two, so odd resolutions cannot be supported without requiring hardware-acceleration (which can be toggled off at any time with immediate effects). The code that required multiples of 8 no longer seems to be present, so now people with cheapo 1366x768 laptop panels can run fullscreen properly.
SVN r3166 (trunk)
2011-03-13 04:45:35 +00:00
Christoph Oelckers
231e7a1c6d - added a new render style 'Shadow'. Essentially it's just a black translucent stencil with an alpha of 0.3. The purpose of this style is to be used as a software renderer approximation of GZDoom's spectre effect.
- allow setting 'Shadow' as default fuzz effect
- changed CVAR conversion that strings 'false' and 'true' get evaluated as integers 0 and 1 respectively so that changing boolean CVARs to int does not destroy their values.


SVN r3076 (trunk)
2010-12-25 23:27:26 +00:00
Christoph Oelckers
7e503d2f70 - fixed: D3DFB::Clear used the palette index even when a valid color was passed to it.
SVN r3045 (trunk)
2010-12-16 00:21:13 +00:00
Christoph Oelckers
e7eb43a343 - added Gez's automap patch to mark trigger lines.
SVN r3040 (trunk)
2010-12-15 00:14:42 +00:00
Randy Heit
f7fa3c8dbb - Add a SetCursor() call to I_SetCursor() when the pointer is within the window's client area to
make the pointer change instant instead of waiting until the next mouse event.

SVN r3010 (trunk)
2010-11-19 04:20:33 +00:00
Christoph Oelckers
eded2ef345 - Each IWAD can now define its own config section. Hacx, Harmony and Action Doom2 now do that.
- moved IWAD identification data into a lump in zdoom.pk3.
- rewrote IWAD checking code 

SVN r2943 (trunk)
2010-10-15 15:13:53 +00:00
Christoph Oelckers
9abaaa1785 - added a default cursor for Chex Quest.
- set 'cursor' as default for Action Doom 2. Doom's bunny is probably not the best thing here...
- made cursor user-settable in the menu.



SVN r2855 (trunk)
2010-09-26 07:46:34 +00:00
Christoph Oelckers
3f420c97bd - allow setting the startup screen's title through GAMEINFO lump.
SVN r2850 (trunk)
2010-09-24 14:27:52 +00:00
Christoph Oelckers
3424548bec - skip all mouse move events that come right after switching to native mouse.
Windows sends some when the mouseis ungrabbed even when it does not move.
  This caused the currently selected menu item to get unselected.



SVN r2803 (trunk)
2010-09-16 22:45:12 +00:00
Christoph Oelckers
c948fd08f2 - fixed: GUI mouse events did not take letterboxing into account.
SVN r2788 (trunk)
2010-09-15 21:53:12 +00:00
Christoph Oelckers
5fcac9b5f1 - fixed: The default GetPixelDoubling function in DFrameBuffer returned 1 instead of 0.
- copied a NULL pointer check for screen from GZDoom.


SVN r2776 (trunk)
2010-09-14 20:53:12 +00:00
Christoph Oelckers
579502ab74 - merged menu branch back into trunk.
SVN r2768 (trunk)
2010-09-14 17:28:18 +00:00
Christoph Oelckers
ec0b07b5e2 - added Entryway's AM_Rotate optimization.
SVN r2739 (trunk)
2010-09-10 13:49:08 +00:00
Randy Heit
7bf0cd13a6 - Fixed: The mouse pointer stayed hidden on startup because the CursorState variable was not
set until the mouse was grabbed.

SVN r2662 (trunk)
2010-09-01 04:24:56 +00:00
Randy Heit
c25f206fbb - Disable framebuffer debug spew. All those OutputDebugString messages from DCanvas::DrawLine()'s
Lock and Unlock calls were slowing things down extremely when looking at a software-drawn
  automap.

SVN r2661 (trunk)
2010-09-01 04:13:36 +00:00
Randy Heit
a2573e4bb3 - Fixes to compile with GCC 4.5.0.
SVN r2660 (trunk)
2010-09-01 03:30:18 +00:00
Randy Heit
4b817cfd8b - Fix an ICE when compiling with GCC 4.5.0.
SVN r2659 (trunk)
2010-09-01 03:22:43 +00:00
Christoph Oelckers
9a4abe0915 - merged automap branch into trunk.
SVN r2609 (trunk)
2010-08-27 15:20:05 +00:00
Christoph Oelckers
096edb0817 - move vid_listadapters CCMD into common code.
SVN r2509 (trunk)
2010-08-11 06:31:47 +00:00
Randy Heit
ed5a8e597c - Version bump to 2.5.0.
SVN r2507 (trunk)
2010-08-11 04:01:26 +00:00
Randy Heit
3416a7fc47 - Fix compilation with MinGW + w32api and clean up warnings.
SVN r2505 (trunk)
2010-08-11 03:56:31 +00:00
Randy Heit
6234e7445b - Added m_hidepointer cvar to control whether or not the mouse pointer is hidden when it's
grabbed. At least if the pointer is visible when the debugger break happens, I don't worry
  about it getting stuck hidden. (Note that that seems to be related to Alt+Tabbing out of the
  game and coming back. I wish I knew what's going on.)

SVN r2497 (trunk)
2010-08-08 02:04:47 +00:00
Randy Heit
6000217889 - Hide the cursor by overriding WM_SETCURSOR, as seen in the IDirect3DDEvice9::ShowCursor()
example. Do not modify the window class pointer. I still had an instance where I was left with
  an invisible pointer no matter where I moved it, so hopefully this takes care of that. (edit:
  it doesn't.)

SVN r2496 (trunk)
2010-08-08 01:53:41 +00:00
Randy Heit
d32d8b4f9f - Removed TheInvisibleCursor, since passing NULL to SetCursor() has exactly the same effect.
- Two tweaks to raw mouse input to make it better behaved when the window suddenly has focus
  removed (e.g. because of a debugger break):
  * Keep the pointer centered in the window, as for Win32Mouse. Even though it's not generating
    any traditional input events, it's still moving all over the screen. e.g. If we have focus
    yanked away and you're pressing the right mouse button as it happens, you can suddenly find
    yourself with a popup menu open.
  * Use SetCursorState() like the other mouse modes instead of ShowCursor() to hide the
    pointer. This way, we don't need to worry about being stuck with trying to use the system
    with an invisible pointer, because only the game window will be pointer-less.

SVN r2495 (trunk)
2010-08-08 01:28:20 +00:00
Randy Heit
8d5ca6501a - Add a NULL FrontCopySurface check to D3DFB::GetCurrentScreen, because this can apparently
be NULL when starting with -timedemo or -playdemo. (But it never happened for me in the
  debugger.)

SVN r2474 (trunk)
2010-07-30 03:21:13 +00:00
Christoph Oelckers
545a892faa - added Firebrand's patch to rename 'swap' due to naming conflicts in newer MSVC compilers.
SVN r2449 (trunk)
2010-07-23 21:19:59 +00:00
Randy Heit
e379658143 - Added multimonitor support, as per Tom Seddon's code. vid_adapter controls which one to use,
and vid_listadapters prints them.

SVN r2417 (trunk)
2010-07-08 23:59:45 +00:00
Randy Heit
2090c03d88 - Fixed: D3DFB::GetScreenshotBuffer() must not offset the buffer pointer for letterboxed modes,
since the screenwipe speedup fixes also mean that this function no longer operates directly
  with the front buffer, but rather with a copy that is not letterboxed.

SVN r2355 (trunk)
2010-06-06 04:53:19 +00:00
Randy Heit
e9bbe4f1ff - Added more logging for D3DFB CreateDevice() attempts.
SVN r2329 (trunk)
2010-05-14 04:13:59 +00:00
Randy Heit
24f23718b7 - Added GetHR support to D3DFB for querying the error code when device creation fails.
- Should still check for a NULL device when CreateDevice() returns D3DERR_DEVICELOST.

SVN r2328 (trunk)
2010-05-14 04:06:30 +00:00
Randy Heit
30ec646ba5 - Removed spurious log warnings when retrying in CreateFrameBuffer().
SVN r2327 (trunk)
2010-05-14 03:58:23 +00:00
Randy Heit
b2a4ffc718 - Fixed: IDirect3D9::CreateDevice() can return D3DERR_DEVICELOST if you want exclusive mode and
some other application already has it. While technically this is a failure, the device is
  still created, so we can continue using it anyway.

SVN r2326 (trunk)
2010-05-14 03:54:35 +00:00
Christoph Oelckers
72e9a870c2 - added Gez's patch to move Hexen's startup notches out of the EXE.
SVN r2250 (trunk)
2010-03-27 21:12:08 +00:00
Randy Heit
ac042a7e93 - The console separator bars now get converted to something printable in Unicode for the log.
- Fixed: Only the last line of multi-line log output received Unicode treatment.

SVN r2186 (trunk)
2010-03-04 04:45:48 +00:00
Randy Heit
0ebace4883 - Add the game log to the crash report. I don't know why I didn't think to do this sooner.
Since we're already sending everything to a rich edit control hidden in the background,
  we can just grab its contents for the report.
- Use code page 1252 when previewing text files in the crash dialog.

SVN r2185 (trunk)
2010-03-04 02:17:34 +00:00
Randy Heit
5da2885d88 - Changed DArgs to use a TArray of FStrings instead of doing its own string vector management
in preparation for doing GatherFiles the "right" way.

SVN r2183 (trunk)
2010-03-02 04:51:16 +00:00
Randy Heit
d530fd7f90 - Added BMF (ByteMap Font) support. This was complicated somewhat by the fact that BMF can
specify a character advance separately from the glyph width. GetChar and GetCharWidth now
  return this value in place of the glyph width. (For non-BMF fonts, these should still
  return the same values as before.)

SVN r2180 (trunk)
2010-02-26 05:34:30 +00:00
Randy Heit
5523140890 - Explicitly setting the charset for the EM_SETCHARFORMAT message seems to do what I want.
SVN r2178 (trunk)
2010-02-24 04:23:01 +00:00
Randy Heit
0b2c2e1cb3 - Use the Unicode RichEdit control instead of the MBCS version, so as to enforce the use
of code page 1252 for output text. This is noticeable, for example, with the FMOD copyright
  notice where the copyright symbol appears as ゥ (halfwidth katakana small U) with code page 932.

SVN r2177 (trunk)
2010-02-24 04:17:14 +00:00
Randy Heit
ad54cfcf94 - Change the log window to use DejaVu Sans instead of Bitstream Vera Sans, because
Silverex's X-Chat comes with the former now. Unfortunately, I can't seem to actually
  set the font when my system default code page is 932, since it wants to use some Kanji-
  compatible font instead. I wonder if I can still use the Unicode RichEdit control with
  Windows 9x. (Does it even matter? Windows 9x users make up less than 0.1% of all visitors
  to zdoom.org these days.)

SVN r2176 (trunk)
2010-02-24 03:36:42 +00:00
Randy Heit
a1255c059d - Added -nostartup switch to disable the more graphical startup screens of Heretic, Hexen,
and Strife.

SVN r2175 (trunk)
2010-02-24 02:58:48 +00:00
Randy Heit
71b75f0d7a - Consolidated all conversation reply handling into a single function executed on all
machines, so when an NPC need to show the "enough" response, it has enough
  information available to do so.
- Some new Strife Teaser fixes I forgot to commit are in here.
- Moved norawinput check into FindRawInputFunctions().


SVN r2120 (trunk)
2010-01-22 05:17:57 +00:00
Christoph Oelckers
d547e89548 - added a CVAR to disable raw input in case it causes problems (like apparently on Wine.)
SVN r2118 (trunk)
2010-01-18 20:55:49 +00:00
Randy Heit
88b4ab52ad - For windowed and pixel doubled modes, use a chain of two TempRenderTextures and
swap between them each frame. The one that's not the TempRenderTexture is used
  as the FrontCopySurface without the need for a copy operation. This removes the
  performance penalty the previous commit introduced for these modes.

SVN r2014 (trunk)
2009-12-02 05:49:45 +00:00
Randy Heit
d924575b1e - Fixed: After the previous screenwipe changes, the melt type no longer worked
properly in letterboxed modes.
- Added another surface to receive a copy of the top back buffer immediately
  before it is presented. This effectively produces a copy of the front
  buffer without the performance penalty of GetFrontBufferData, so fullscreen
  wipe preparation and screenshots are faster now. At lower resolutions,
  always copying the backbuffer does incur a slight FPS hit, but it's
  practically free at higher resolutions.


SVN r2013 (trunk)
2009-12-02 05:02:40 +00:00
Randy Heit
80034135ef - The initial wipe screen is now kept in video memory. I had previously
assumed that since the wipes only run at 35 FPS, the time spent DMA'ing
  it from system to video memory would be acceptable. Apparently I was wrong.
  In particular, updating the same surface several times probably has to
  synchronize between each one, making melt particularly slower than it
  needs to be.


SVN r2012 (trunk)
2009-12-01 03:15:00 +00:00
Randy Heit
26f14f439b - Fixed: The FPS meter cannot use I_MSTime(), because if the game is started
with +vid_fps 1, it can need the time before the timer is ready to start.


SVN r2009 (trunk)
2009-11-29 02:57:09 +00:00
Randy Heit
a5c8b33f10 - Initialize TempRenderTexture and the back buffer to black upon creation.
SVN r2008 (trunk)
2009-11-29 02:42:20 +00:00
Randy Heit
cdb26a9b28 - Fixed: Windowed mode always needs to draw to the temporary surface, even
when not gamma correcting, so that D3DFB::GetCurrentScreen() can read from
  it.


SVN r2007 (trunk)
2009-11-29 02:33:52 +00:00
Christoph Oelckers
d14faa5f98 - fixed: Morph weapons weren't destroyed because the code checked for
them in the unmorphed player class.
- fixed: With padding the largest texture to fit into a page is 254x254.


SVN r2005 (trunk)
2009-11-28 07:46:30 +00:00
Randy Heit
53b1b7efab - Added Windows 7 (aka Windows NT 6.1) and Server 2008 identification to
I_DetectOS().


SVN r1996 (trunk)
2009-11-24 04:29:36 +00:00
Randy Heit
2b5f765982 - Added padding around packed textures to compensate for apparent NVidia
texture coordinate imprecision.


SVN r1988 (trunk)
2009-11-19 01:49:19 +00:00
Randy Heit
a0e7cdb73d - Cleaned up win32/i_system.cpp.
- Put back the previous event-driven ticker, except now the timer isn't
  started until the first time it is needed.


SVN r1975 (trunk)
2009-11-13 03:55:23 +00:00
Randy Heit
f09420fce7 - Modified the event-driven ticks to use the same code for calculating the
time as the polled timer so that the timer does not start running until the
  first time it is used.
- Removed the srand() call from D_DoomMain(), because it started the game
  timer running prematurely, and we never call rand() anywhere. (Not to
  mention, even if we did use rand(), always seeding it with 0 is rather
  pointless.)


SVN r1974 (trunk)
2009-11-12 03:45:51 +00:00
Randy Heit
a0d6a47daf - Maps inside zips can now satisfy the map checks for IWAD detection.
- Fixed: F7ZFile did not delete its Archive when destroyed.


SVN r1967 (trunk)
2009-11-10 02:29:18 +00:00
Randy Heit
de8ec46c06 - Fixed: R_GetOneSkyColumn() and R_GetTwoSkyColumns are mulscaling an
unsigned integer that can use all 32 bits. They must therefore use
  the unsigned mul instruction rather than the signed imul instruction.
- Fixed several signed/unsigned comparison and possibly uninitialized
  variable warnings flagged by GCC.


SVN r1965 (trunk)
2009-11-08 02:51:22 +00:00
Randy Heit
4ebfdac887 - Changed all coordinates for DrawTexture() to floating point so that the
player sprites will retain the same precision they had when they were
  rendered as part of the 3D view. (needed for propery alignment of flashes
  on top of weapon sprites) It worked just fine for D3D, but software
  rendering was another matter. I consequently did battle with imprecisions
  in the whole masked texture drawing routines that had previously been
  partially masked by only drawing on whole pixel boundaries. Particularly,
  the tops of posts are calculated by multiplying by spryscale, and the
  texture mapping coordinates are calculated by multiplying by dc_iscale
  (where dc_iscale = 1 / spryscale). Since these are both 16.16 fixed point
  values, there is a significant variance. For best results, the drawing
  routines should only use one of these values, but that would mean
  introducing division into the inner loop. If the division removed the
  necessity for the fudge code in R_DrawMaskedColumn(), would it be worth it?
  Or would the divide be slower than the fudging? Or would I be better off
  doing it like Build and using transparent pixel checks instead, not
  bothering with skipping transparent areas? For now, I chop off the
  fractional part of the top coordinate for software drawing, since it was
  the easiest thing to do (even if it wasn't the most correct thing to do).


SVN r1955 (trunk)
2009-11-01 01:27:33 +00:00
Randy Heit
09866b2cff - Reinstated the off-by-one check in D3DFB from r399. I thought I could get by
at just fixing it at a specific value, since the supply of SM14 cards isn't
  all that diverse and all from ATI, but apparently Radeon 8500s and 9000s
  have different precision levels in their pixel shaders. See bug report
  <http://forum.zdoom.org/viewtopic.php?p=444523>
- Removed unused variables FBFormat and PalFormat.

SVN r1901 (trunk)
2009-10-08 23:44:50 +00:00
Randy Heit
da31d9f8a3 - Since I am currently without a primary video card and stuck with this
Mobility Radeon 9000 (on a PCI card, no less!), I have decided to give the
  PS14 support some loving: D3D windowed gamma now works on these cards using
  a texture lookup for the gamma table. Sadly, this halves my framerate, so
  setting gamma to 1 will skip the gamma correction, as it was before, for
  full speed. (On my 8800 GT, the gamma correction was free.)


SVN r1898 (trunk)
2009-10-08 04:03:32 +00:00
Randy Heit
ed8f1ec8db - Fixed: Alt+F4 no longer quit the program.
SVN r1888 (trunk)
2009-09-30 04:44:14 +00:00
Randy Heit
11fbc57178 - Added a technique to try and minimize input lag with vsync enabled: Two
surfaces are alternately locked for read-only access each frame, forcing
  the driver to stop buffering more than one frame at a time. The input lag
  on my system doesn't seem to be as bad as it once was (I can no longer
  see it obviously with my naked eye), but turning antilag on "feels"
  slightly more responsive. The cvar d3d_antilag turns this technique on and
  off. See <http://www.xyzw.de/c120.html> for more details.


SVN r1870 (trunk)
2009-09-22 20:17:54 +00:00
Randy Heit
d502655866 - For hardware 2D, apply fixed colormaps when copying to video memory instead
of doing it directly during the rendering, in order to improve visual
  fidelity for colormaps that aren't grayscale.


SVN r1866 (trunk)
2009-09-22 04:21:27 +00:00
Randy Heit
84a018f05a - Added support for defining the full color range of a special colormap.
SVN r1865 (trunk)
2009-09-22 02:54:19 +00:00
Randy Heit
e9d61a3f46 - Fixed: In letterbox modes, the clipping window needs to be adjusted down.
SVN r1863 (trunk)
2009-09-22 01:28:13 +00:00
Christoph Oelckers
c285f38a02 - Fixed: When drawing with a special colormap the quad's flags weren't cleared
which could cause crashes.
- Added custom special colormaps to DECORATE.
- Cleaned up special colormap code and removed lots of dependencies on the
  knowledge of the tables' contents.



SVN r1860 (trunk)
2009-09-21 13:15:36 +00:00
Randy Heit
b8eb530a0d - Fixed: Wall drawing handled fixed light levels improperly (but did not
completely ignore them, either).
- Separated light level fixing out of player_t's fixedcolormap parameter.
  Using a fixed light level (e.g. PowerTorch) will no longer wipe out
  colored lighting.
- Moved the blending rectangle drawing into a separate discrete stage, since
  doing it while copying the 3D view window to the display now blends
  underneath the weapon instead of on top of it.
- Consolidated the special colormaps into a single 2D table.
- Tweaked the special colormaps slightly to make the true color results more
  closely match the paletted approximations.
- fb_d3d9_shaders.h was getting unwieldy, so I moved the shaders out of the
  executable and into zdoom.pk3. Shaders are still precompiled so I don't need
  to pull in a dependancy on D3DX.
- Added a few more shaders to accomodate drawing weapons with all the in-game
  lighting models. These are accessed with the new DrawTexture tags
  DTA_SpecialColormap and DTA_ColormapStyle.
- Player weapon sprites are now drawn using Direct3D and receive all the
  benefits thereof.


SVN r1858 (trunk)
2009-09-20 03:50:05 +00:00
Christoph Oelckers
93166b86b3 - moved ENDOOM lump name definition into gameinfo.
- moved default item drop style into gameinfo.
- moved default respawn time into gameinfo.
- moved default inventory max amount into gameinfo.
- turned Heretic's blocking of the sector for LS_Plat_RaiseAndStayTx0 into
  a parameter instead of having the game mode decide. 



SVN r1812 (trunk)
2009-09-08 21:01:24 +00:00
Randy Heit
f27b7209e8 - Fixed: R_CreatePlayerTranslation() only initialized the first truecolor
palette entry.


SVN r1795 (trunk)
2009-09-05 03:55:29 +00:00
Randy Heit
3f003e06db - Replaced the use of autoconf's WORDS_BIGENDIAN with __BIG_ENDIAN__, since
latter comes predefined by GCC.


SVN r1779 (trunk)
2009-08-31 21:47:29 +00:00
Randy Heit
4d4e8e89b3 - Changed the DWORDs in dobject.h into uint32s, since they were preventing
edit-and-continue from working for the Windows source files.
- When a WM_KEYDOWN message is received with VK_PROCESSKEY, the scan key is
  now used to retrieve the real virtual key for the message. This fixes the
  previous issue that caused me to completely disable the IME.
- Removed the code that disables the IME, since it also disables the ability
  to switch between keyboard layouts that do not use an IME.
- TranslateMessage() is no longer called if GUI capture mode is off, so no
  dead key processing is performed until it might be useful.


SVN r1758 (trunk)
2009-08-08 00:36:35 +00:00
Randy Heit
93202a5488 - Removed -fno-strict-aliasing from the GCC flags for ZDoom and fixed the
issues that caused its inclusion. Is an optimized GCC build any faster
  for being able to use strict aliasing rules? I dunno. It's still slower
  than a VC++ build.
  
  I did run into two cases where TAutoSegIterator caused intractable problems
  with breaking strict aliasing rules, so I removed the templating from it,
  and the caller is now responsible for casting the probe value from void *.
- Removed #include "autosegs.h" from several files that did not need it
  (in particular, dobject.h when not compiling with VC++).


SVN r1743 (trunk)
2009-08-02 03:38:57 +00:00
Randy Heit
a90bde274e The menu code sucks!
- Joystick devices now send key up events for any buttons that are held
  down when they are destroyed.
- Changed the joystick enable-y menu items to be nonrepeatable so that you
  can't create several device scans per second. Changing them with a
  controller is also disabled so that you can't, for example, toggle XInput
  support using an XInput controller and have things go haywire when the
  game receives an infinite number of key down events when the controller
  is reinitialized with the other input system.
- Changed menu input to use a consolidated set of buttons, so most menus
  can be navigated with a controller as well as a keyboard.
- Changed the way that X/Y analog axes are converted to digital axes.
  Previously, this was done by checking if each axis was outside its deadzone.
  Now they are checked together based on their angle, so straight up/down/
  left/right are much easier to achieve.


SVN r1739 (trunk)
2009-07-26 03:25:18 +00:00
Randy Heit
bc3448e958 - Removed specific Button_Speed handling from the controllers' AddAxes()
methods. Analog axes now respond Button_Speed and cl_run in exactly the
  same way as digital buttons do.
- Changed rounding slightly for analog axis -> integer in G_BuildTiccmd().
- Fixed: FXInputController::ProcessThumbstick() was slightly off when it
  converted to the range [-1.0,+1.0].


SVN r1733 (trunk)
2009-07-23 05:37:03 +00:00
Randy Heit
800b50ff6f - Attempt to add support for Microsoft's SideWinder Strategic Commander.
SVN r1719 (trunk)
2009-07-16 02:45:51 +00:00
Randy Heit
f74f6a1659 - Split the joystick menu into two parts: A top level with general options
and a list of all attached controllers, and a second level for configuring
  an individual controller.
- Fixed: Pressing Up at the top of a menu with more lines than fit on screen
  would find an incorrect bottom position if the menu had a custom top height.
- Added the cvars joy_dinput, joy_ps2raw, and joy_xinput to enable/disable
  specific game controller input systems independant of each other.
- Device change broadcasts are now sent to the Doom event queue, so
  device scanning can be handled in one common place.
- Added a fast version of IsXInputDevice that uses the Raw Input device
  list, because querying WMI for this information is painfully slow.
- Added support for compiling with FMOD Ex 4.26+ and running the game
  with an older DLL. This combination will now produce sound.


SVN r1717 (trunk)
2009-07-15 05:53:06 +00:00
Randy Heit
417779440d - Added joystick config loading and saving support; moved generic joystick
interfaces to m_joy.h.
- Added Raw Input PS2 adapter support.


SVN r1713 (trunk)
2009-07-11 01:40:01 +00:00
Randy Heit
3786ced96e - ZDoom now disables the input method editor, since it has no east-Asian
support, and having it open a composition window when you're only expecting
  a single keypress is not so good.


SVN r1705 (trunk)
2009-07-04 01:47:28 +00:00
Randy Heit
f32b95d3cc - Add missing i_xinput.cpp
SVN r1687 (trunk)
2009-06-28 23:44:37 +00:00
Randy Heit
49b95be4b2 - Fixed some improper preprocessor lines in autostart/autozend.cpp.
- Added XInput support. For the benefit of people compiling with MinGW,
  the CMakeLists.txt checks for xinput.h and disables it if it cannot
  be found. (And much to my surprise, I accidentally discovered that if you
  have the DirectX SDK installed, those headers actually do work with GCC,
  though they add a few extra warnings.)


SVN r1686 (trunk)
2009-06-28 03:09:17 +00:00
Randy Heit
a687a61c76 - Attaching and detaching joysticks once again updates the joystick menu.
SVN r1684 (trunk)
2009-06-27 01:36:10 +00:00
Randy Heit
5dc5a56a17 - Added joystick axis -> button mapping.
SVN r1683 (trunk)
2009-06-27 00:35:41 +00:00
Randy Heit
590eb5cb76 - Joystick axes can be configured in the menu again. TODO: Config saving
and loading, XInput, allow axes to be used as buttons (for the Xbox
  controller's trigger buttons), allow the joystick to move through the
  menus, and my PS2 adapter which has no Vista x64 drivers.
  * I'm sure SDL is broken again. Don't bother reporting it, because I already know.

SVN r1680 (trunk)
2009-06-26 02:45:05 +00:00
Randy Heit
a5b118cf7c - The reorganized DirectInput game controller code finally compiles. (Ugh! It
took far too long to reach this point.) Manual axis configuration is
  currently disabled, since I need to rewrite that, too. The eventual point of
  this is that the code will be modular enough that I can just plop in
  routines for XInput controllers and driver-less PlayStation 2 adapters
  without much fuss, since the old joystick code was very much DirectInput-
  centric.


SVN r1672 (trunk)
2009-06-20 03:16:08 +00:00
Randy Heit
8d83d3791d - Added tagRAWINPUT declaration to i_input.h for support of older Windows SDKs.
SVN r1666 (trunk)
2009-06-11 22:17:50 +00:00
Randy Heit
deff9cfb12 - Moved Raw Input processing into a seperate method of FInputDevice so that
all the devices can share the same setup code.


SVN r1664 (trunk)
2009-06-11 03:41:24 +00:00
Christoph Oelckers
4fcd64d2c1 - Fixed: I_ShutdownInput must NULL all pointers because it can be called twice
if an ENDOOM screen is displayed.



SVN r1660 (trunk)
2009-06-09 07:57:21 +00:00
Randy Heit
9493b5acdd SVN r1653 (trunk) 2009-06-08 22:55:03 +00:00
Randy Heit
bdd3188897 - Added support for horizontal mouse wheels, and set invprev/invnext as
default bindings for it. (Only works with Raw Input on XP. Vista has
  support through Win32 mouse, as well. DirectInput does not support it at
  all, because the DirectInput mouse device does not expose this control.)


SVN r1640 (trunk)
2009-06-06 02:55:58 +00:00
Randy Heit
7df2d40e8f - Added a label for the F16 key and mapped the kp= key on a Mac keyboard to
the PC98 equivalent so it would be recognized as kp=. (Interestingly, F13-
  F16 and kp= only generate events when using Raw Input, not when using
  DirectInput.


SVN r1639 (trunk)
2009-06-06 02:06:38 +00:00
Randy Heit
a8de4fc2da - Fixed compilation of i_keyboard.cpp with MinGW, because w32api still doesn't have
everything that was new for XP.
- Swapped snes_spc out for the full Game Music Emu library.

SVN r1631 (trunk)
2009-06-03 03:05:02 +00:00
Randy Heit
092512c44a - Fixed: The mouse wheel generated no events in GUI mode if you weren't
fullscreen. (e.g. You could no longer scroll the console with the mouse
  buffer.)
- Fixed: Wheeling down was seen as wheeling up with the Win32 mouse.


SVN r1618 (trunk)
2009-05-27 22:57:21 +00:00
Randy Heit
12959a1bd1 - EV_GUI_Key(Down|Up|Repeat) events no longer provide shifted key codes
in data2. This was just unnecessary overhead that wasn't really needed
  anywhere.
- Moved GUI-mode input into a separate function to make the code easier to
  read.


SVN r1617 (trunk)
2009-05-27 22:17:11 +00:00
Randy Heit
a925f7eab6 - Removed HaveFocus variable in preference of using GetForegroundWindow().
SVN r1616 (trunk)
2009-05-27 21:11:06 +00:00
Randy Heit
3f3d677526 - Removed spurious WM_INPUT from the main WndProc.
SVN r1615 (trunk)
2009-05-27 21:05:19 +00:00
Randy Heit
a11073341c - Added Raw Input keyboard handling.
SVN r1614 (trunk)
2009-05-27 20:44:54 +00:00
Randy Heit
7fea07dff7 - Split DirectInput keyboard handling into a separate file and class. I also
switched it to buffered input, and the pause key seems to be properly
  cooked, so I don't need to look for it with WM_KEYDOWN/UP. Tab doesn't
  need to be special-cased either, because buffered input never passes on
  the Tab key when you press Alt+Tab. I have no idea why I special-cased
  Num Lock, but it seems to be working fine. By setting the exclusive mode
  to background, I can also avoid special code for releasing all keys when
  the window loses focus, because I'll still receive those events while the
  window is in the background.


SVN r1613 (trunk)
2009-05-27 03:16:46 +00:00
Randy Heit
0a310b9832 - Fixed compilation on MinGW.
SVN r1612 (trunk)
2009-05-26 22:33:02 +00:00
Randy Heit
5245e8d4dd - I_CheckNativeMouse() now checks the foreground window to determine if the
mouse should be grabbed. This fixes the case where you start the game in
  the background and it grabs the mouse anyway.
- Changed raw mouse grabbing to call ShowCursor() directly instead of through
  SetCursorState(), since changing the pointer isn't working with it
  (probably due to the lack of legacy mouse messages), and the others work
  fine by setting an invisible cursor.
- Fixed: Raw mouse input passes wheel movements in an unsigned field, but the
  value is signed, so it requires a cast to use it.
- Reverted accidental changes to src/sdl/i_input.cpp.

SVN r1605 (trunk)
2009-05-26 00:30:51 +00:00
Christoph Oelckers
dbddb6403f - added #define _WIN32_WINNT 0x0501 to i_mouse.cpp so that the file compiles with the Windows 2003 Server SDK.
SVN r1603 (trunk)
2009-05-24 08:57:58 +00:00
Randy Heit
0c4c90ac89 - SetCursorState() now calls ShowCursor() again, because capturing the mouse
with RIDEV_NOLEGACY apparently prevents SetCursor() from doing anything.
- Split mouse code off from i_input.cpp into i_mouse.cpp and added raw mouse
  handling. (WM_INPUT obsoleted most of DirectInput for XP.)
- Fixed: Similar to the Win32 mouse, using the DirectInput mouse in windowed
  mode, if you alt-tabbed away and then clicked on the window's title bar,
  mouse input would be frozen until the mouse was ungrabbed again.


SVN r1601 (trunk)
2009-05-24 03:15:04 +00:00
Randy Heit
466b6e4535 - Moved SetSoundPaused() out of i_input.cpp and into s_sound.cpp.
SVN r1598 (trunk)
2009-05-23 03:09:50 +00:00
Randy Heit
86023c23ca - Fixed: When using Win32 mouse, windowed mode, alt-tabbing away and then
clicking on the window's title bar moved it practically off the screen.
- Beginnings of i_input.cpp rewrite: Win32 and DirectInput mouse handling has
  been moved into classes.


SVN r1597 (trunk)
2009-05-23 02:22:30 +00:00
Randy Heit
749de6c156 - Fixed: SetSoundPaused() still needs to call S_PauseSound() to pause music
that isn't piped through the digital sound system. (Was removed in r1004.)


SVN r1595 (trunk)
2009-05-20 02:52:07 +00:00
Christoph Oelckers
a732687548 - Changed APlayerPawn::DamageFade to a PalEntry from 3 floats.
- Removed #pragma warnings from cmdlib.h and fixed the places where they were 
  still triggered.
  These #pragmas were responsible for >90% of the GCC warnings that were not
  listed in VC++.
- Fixed one bug in the process: DSeqNode::m_Atten was never adjusted when the
  parameter handling of the sound functions for attenuation was changed.
  Changed m_Atten to a float and fixed the SNDSEQ parser to set proper values. 
  Also added the option to specify attenuation with direct values in addition 
  to the predefined names.

SVN r1583 (trunk)
2009-05-15 10:39:40 +00:00
Christoph Oelckers
a908834a11 - added some default definitions for constants that may miss in some headers.
- replaced __va_copy with va_copy per Chris's suggestion.
- replaced #include <malloc.h> with #include <stdlib.h> where possible.


SVN r1524 (trunk)
2009-04-07 07:06:07 +00:00
Randy Heit
7371c4a516 - Changed random seed initialization so that it uses the system's
cryptographically secure random number generator, if available, instead
  of the current time.
- Changed the random number generator from Lee Killough's algorithm to the
  SFMT607 variant of the Mersenne Twister.

SVN r1507 (trunk)
2009-03-27 04:49:17 +00:00
Randy Heit
cfbf55acab - -norun works without -stdout now.
SVN r1487 (trunk)
2009-03-19 02:12:24 +00:00
Randy Heit
c2aab5dd46 - Added the -norun parameter to quit the game just before video
initialization. To be used to check for errors in scripts without actually
  running the game.
- Added the -stdout parameter to the Windows version to send all output to
  a console, like the Linux version has done all along.


SVN r1486 (trunk)
2009-03-18 05:02:32 +00:00
Randy Heit
75b7db858f - Added support for zip/pk3 files with LZMA and bzip2 compression to ZDoom.
- Added more output to zipdir and a -q option to turn it off.
- Added -u option to zipdir to only recompress those files in a zip that have
  changed. 
- Added -d and -f options to zipdir. -d forces deflate compression, and -f
  forces a write of the zip, even if it's newer than all the files it contains.
- Added support for bzip2 and LZMA compression to zipdir.


SVN r1468 (trunk)
2009-03-10 23:07:37 +00:00
Randy Heit
5eeaa130fd - Went back to using RDTSC for timing on Win32. Ironically,
QueryPerformanceCounter() is obviously using the TSC for its timing on my
  machine, yet the overhead it has to do to keep the timer sane is apparently
  noticeable on a few maps. I suppose I should at some time check
  clock_gettime() and see if it has similar issues on Linux.


SVN r1460 (trunk)
2009-03-04 06:06:31 +00:00
Randy Heit
491abe3a2c - Fixed: DirectInput8Create() used the wrong calling convention.
SVN r1426 (trunk)
2009-02-19 23:12:48 +00:00
Christoph Oelckers
666e40c8bb - Added MF5_CANTSEEK flag to prevent seeker missiles from homing in on
certain actors and added an option to APowerInvisibility to set this
  flag when active.
- Added map specific automap backgrounds.
- Fixed: Voodoo dolls did not play a sound when dying.
- Added colorized error messages to DECORATE and made a few more error
  conditions that do not block further parsing not immediately abort.
- Made all errors in CreateNewActor not immediately fatal so that the
  rest of the DECORATE lump can be parsed normally to look for more errors.
- Fixed: Defining classes with the same name as their immediate base class
  was legal. It should not be allowed that a class has another one with the
  same name in its ancestry.
- Fixed: Formatting of the intermission screen on Heretic, Hexen and Strife
  was broken. Changed it to use WI_Drawpercent which does it properly and
  also allows showing percentage in these games now.
- Fixed: The MAPINFO parser ignored missing terminating braces of the last
  block in the file.

SVN r1425 (trunk)
2009-02-19 14:36:37 +00:00
Randy Heit
0acc6a4ee3 - Moved the V_InitFontColors() call earlier in the startup sequence so that
colored error messages appear colored in the startup window. Also lightened
  up the "Flat" red to contrast better with the startup background.


SVN r1424 (trunk)
2009-02-11 00:16:05 +00:00
Randy Heit
085be22a30 - Changed I_InitInput() to acquire the IDirectInput8A interface by using
DirectInput8Create() instead of CoCreateInstance(). This allows the Steam
  GameOverlayRenderer.dll to properly hook it.


SVN r1422 (trunk)
2009-02-10 03:12:41 +00:00
Randy Heit
035edb32ad - Stopped sending double the number of wheel events as appropriate to the
console under Linux.
- Added middle mouse button selection pasting for X systems.



SVN r1420 (trunk)
2009-02-10 02:16:41 +00:00
Randy Heit
05a8a49ea5 - Added GUICapture mouse events for Win32.
SVN r1415 (trunk)
2009-02-08 03:45:41 +00:00
Randy Heit
025e36ee41 - Changed I_GetFromClipboard() to return an FString.
SVN r1414 (trunk)
2009-02-08 03:32:27 +00:00
Randy Heit
d0e7e574e1 - Added a fflush() call after the logfile write in I_FatalError so that the
error text is visible in the file while the error dialog is displayed.


SVN r1396 (trunk)
2009-02-04 01:23:47 +00:00
Christoph Oelckers
4bcd3faef8 - moved all code related to global ACS variables to p_acs.cpp where it belongs.
- fixed: The nextmap and nextsecret CCMDs need to call G_DeferedInitNew instead of G_InitNew.
- merged MAPINFO branch back into trunk.

SVN r1393 (trunk)
2009-02-03 19:11:43 +00:00
Randy Heit
b680840073 - Fixed clipping in D3DFB::DrawTextureV() for good by using a scissor test.
SVN r1386 (trunk)
2009-02-01 03:39:00 +00:00
Randy Heit
c09d9f0e20 - Fixed: D3DFB::DrawTextureV() did not properly adjust the texture coordinate
for lclip and rclip.


SVN r1384 (trunk)
2009-01-31 03:46:30 +00:00
Randy Heit
30ef6a0c2d - Game time is now frozen during screen wipes. This obsoletes the DEM_WIPEON
and DEM_WIPEOFF commands. Fixes multimap demos desyncing when played back
  or recorded with wipes enabled, and prevents multiplayer games from
  starting until all players' wipes have finished.


SVN r1272 (trunk)
2008-10-21 02:27:21 +00:00
Randy Heit
738e8ca7ad - GCC warning removal.
* This may or may not be a problem, but GCC warned that FStateDefinitions::
    AddStateDefines() does not initialize def.FStateDefine::DefineFlags, so
    I fixed that.


SVN r1262 (trunk)
2008-10-14 03:21:53 +00:00
Christoph Oelckers
760f70d3f1 - Changed compilation for g_doom, g_heretic, g_hexen and g_strife folders
so that all files are included by a central one instead of compiling 
  each one separately. This speeds up the compilation process by 25%
  when doing a complete rebuild in Visual C.
- Cleaned up more header dependencies.

SVN r1226 (trunk)
2008-09-15 14:11:05 +00:00
Christoph Oelckers
b07542ddd6 More header cleanup.
SVN r1225 (trunk)
2008-09-15 00:47:31 +00:00
Christoph Oelckers
db5723997c - Cleaned up some include dependencies.
SVN r1224 (trunk)
2008-09-14 23:54:38 +00:00
Randy Heit
f08e2949dc - Antialiasing of lines is now controlled solely by the vid_hwaalines cvar,
ignoring what the driver reports, since ATI is apparently just as bad as
  NVidia.


SVN r1212 (trunk)
2008-09-12 00:04:15 +00:00
Randy Heit
d22f3ebfa6 - Added a check for D3DLINECAPS_ANTIALIAS, but this is complicated by the
fact that NVidia's don't report it, even though they support it. If there
  are any cards that no longer have antialised lines on the automap, please
  let me know.
- Added vid_hwaalines cvar to force antialiased lines off for the
  Direct3D renderer, in case it doesn't really support them.


SVN r1210 (trunk)
2008-09-10 03:33:02 +00:00
Randy Heit
fae19e87b7 - Implemented some more controllers for the OPL player:
* RPN select (controllers 100 and 101)
  *  RPN 0 (pitch bend sensitivity)
  * NPRN select (controllers 98 and 99)
  * Data entry (controllers 6 and 38)
  * All notes off (controller 123)
  * All sounds off (controller 120)
  * Reset controllers (controller 121)


SVN r1195 (trunk)
2008-09-05 02:04:50 +00:00
Christoph Oelckers
dbcc246cf3 - Added Blzut3's patch for a real Chex Quest game mode.
SVN r1188 (trunk)
2008-08-30 19:44:19 +00:00
Randy Heit
4d56889483 - Added Win64 support to the crash report generator.
SVN r1184 (trunk)
2008-08-24 04:51:15 +00:00
Christoph Oelckers
5ea4b37373 - Added an Active and Inactive state for monsters.
- Made the speed a parameter to A_RaiseMobj and A_SinkMobj and deleted
  GetRaiseSpeed and GetSinkSpeed.
- Added some remaining DECORATE conversions for Hexen by Karate Chris.


SVN r1144 (trunk)
2008-08-10 11:29:19 +00:00
Randy Heit
9ad93639c5 - Changed Windows to use the performance counter instead of rdtsc.
SVN r1143 (trunk)
2008-08-10 03:56:53 +00:00
Randy Heit
ad96225213 - Changed Linux to use clock_gettime for profiling instead of rdtsc. This
avoids potential erroneous results on multicore and variable speed
  processors. Windows will need to be updated accordingly.



SVN r1142 (trunk)
2008-08-10 03:25:08 +00:00