DXHexen
-------
											SOURCE Release 11/11/99
								(Binary identical to 7/21/99 release)


Introduction: About this release
---------------------------------
  This is a source-code release of DXHexen, the DirectX port of Raven's Hexen. This source
code falls under the GNU General Public License (see end of this file for details.)
  I have released this code in the hopes that someone will pick up where I left off, but 
even if that doesn't happen I hope a couple of people can learn a little bit from what I've
done here. There's PLENTY of cool things left to do, if you've got the time and the 
inclination. The most interesting tasks left are 1) Conversion to Direct3D and 2) re-enabling
of the network code. 
  Item (1) requires code to convert Doom-engine-based BSP trees into triangle lists. This code
already exists in other Doom-engine ports, but to my knowledge has never been released to 
the public.
  Item (2) requires a Win32 network library to wrap the existing DOS-based one. Again, other
Doom-engine ports already have this code, but to my knowledge none of it has been released 
to the public.
  Hopefully my release of this source will encourage the release of source-code by others to perform 
these (and/or other) tasks. I believe it would be demonstrative of the finest traditions of the
Internet if all of the Doom-engine-based ports would pool their code and resources, and create
libraries to perform all of these types of platform-specific functions. The release of DXHexen's
source could be the beginning...



Quick-Start: About the game
---------------------------
  Remember that for DXHexen to work, you'll need to upgrade your version of Hexen to 1.1. 
You can download the patch to do this on DXHexen's home-page, http://www.raven-games.com/dxhexen/

  You also need DirectX 6.1 or better, which can be downloaded on Microsoft's web page.


Minimum System Requirements:
----------------------------
>  Windows 95/98 (with DirectX 6.1 or better installed), or Windows 2000
>  Pentium-class CPU (although not tested, a 486 might actually work!)
>  32MB of RAM
>  An SVGA card with at least 1MB of memory on-board.

Best-Case System:
-----------------
> The faster the CPU, the better. Frankly, they don't make a CPU fast enough to run at 1600x1200
     decently yet. 1600x1200 is 30 times more pixels than the original -- you'll need a machine
     that is 30 times more powerful (and with a system bus 30 times wider) than the 486 this game 
     was targeted at to run it decently.
>  The higher the resolution you select, the more RAM you will need. 128MB will cover you all the
     way up to the top.
>  A sound card which accelerates 3D sound will relieve your CPU of the burden of doing it itself.


Command-Line options:
---------------------
  DXHexen supports most (almost all) command-line parameters that Hexen supports.

  The following DXHexen-specific command-line parameters are obsolete (due to their availability
within the game's built-in menu system):
	-width <width>		: Set the width and height of the resolution you wish to use. The default
	-height <height>	: is 640x480, but resolutions up to 1600x1200 are supported.
				: Example: DXHexen -width 1024 -height 768

	-mlook			: Turn on "mouse-look" This will allow you to look up and down by
				: moving the mouse up and down. It is currently hardcoded to use
				: "pilot" controls (i.e. moving the mouse up looks down). This flag
				: is of limited usefulness, as Hexen does auto-aiming for you.

  The following DXHexen-specific command-line parameters are currently available:
	-nods3d			: If the sound is not working right for you, you can disable 
				: DirectSound3D using this switch. This will cause DXHexen to fall
				: back to regular DirectSound, and use a modified version of Hexen's
				: original sound engine (which still sounds pretty good.)


Frame-Rate (FPS)
----------------
  You can display the frame-rate you are currently getting by hitting the "Home" key on the
arrow-keypad (NOT the numeric keypad.) The frame-rate is displayed in the upper-left corner,
in the format xxx/yyy, where xxx is the frame rate you are currently getting, and yyy is your
average frame-rate since starting.
  Note that although you may achieve frame-rates higher than 35 (per second), Hexen is 
effectively limited to this number. In other words, if you are getting a frame-rate higher
than 35, DXHexen is occasionally drawing the exact same scene more than once. I recommend
targeting your game resolution such that your machine cranks-out about 25 FPS. It's a
reasonable trade-off between smoothness and beauty.


Known bugs/Missing features:
----------------------------
  > Task-switching (pressing Alt-Tab) while playing DXHexen may not work on some video cards.
  > Saved games from Hexen (even Hexen 1.1) will not work with DXHexen. This is because many
    of the data structures Hexen uses had to be increased in size to support DXHexen's new
    features. If there is demand, I can re-write the loader to compensate for this.
  > Some people still report intermittant sound and/or music problems. I believe these are
    due to the use of older sound cards that are not "100% DirectX compatible", but am not
    positive of this.
  > The map needs to be rendered at the current screen resolution. Right now, it's
    rendered at 320x200 and scaled (I know, it's lame, but the map was never a high priority
    for me.)



About the Source Code
---------------------
  You will find the source code for DXHexen commented, but not overly so. Obviously those
already familiar with Doom-engine game sources will have the easiest time understanding
the code, but others shouldn't have too much trouble since the functionality is pretty
well compartmentalized.
  I am including DXHexen.dsp, which is the Microsoft Visual C++ (version 6.0) project file 
I use to build DXHexen.exe. Other compilers should work as well, since I don't believe I
used any VC++ extensions, but you'll have to create your own Makefile in this case.
  You will need the DirectX SDK (which is freely available from Microsoft) as well in order 
to build it DXHexen (make sure to use DirectX 6.1 or later.)
  Just to get you started, here is a list of files that contain most (but not all) of DXHexen's
custom code. These are listed in no particular order:
	H2_main.c		<-- General startup/shutdown/Win32 stuff
	I_ibm.c			<-- Most of the DirectDraw & DirectInput code
	Mn_menu.c		<-- Tweaking the in-game menu is fun and easy!
	Sb_bar.c		<-- Tweaking the status-bar is painful and hard!
	I_music.c		<-- Most of the DirectMusic code
	I_sound.c		<-- Most of the DirectSound/DirectSound3D code




Legal Stuff
-----------
Major portions of the content in this distribution are Copyright (C) 1998-1999 Joel Hunter
Other portions are Copyright (C) 1995-1999 Raven Software Corporation

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Library 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
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with this program; if not, write to:

	The Free Foundation, Inc.
	59 Temple Place, Suite 330
	Boston, MA  
	02111-1307  
	USA
