summaryrefslogtreecommitdiff
path: root/man
diff options
context:
space:
mode:
Diffstat (limited to 'man')
-rw-r--r--man/INSTALL.template250
-rw-r--r--man/Makefile.am11
-rwxr-xr-xman/simplecpp211
3 files changed, 471 insertions, 1 deletions
diff --git a/man/INSTALL.template b/man/INSTALL.template
new file mode 100644
index 00000000..aab5ff01
--- /dev/null
+++ b/man/INSTALL.template
@@ -0,0 +1,250 @@
+
+Chocolate Doom installation
+===========================
+
+These are instructions for how to install and set up Chocolate Doom
+for play.
+
+#ifn PRECOMPILED
+Building Chocolate Doom
+-----------------------
+
+Before you can play Chocolate Doom, you need to compile a binary that
+you can run. For compilation, Chocolate Doom requires the following
+to be installed:
+
+ * A C compiler (gcc is recommended)
+ * make (GNU make is recommended)
+ * LibSDL (see http://www.libsdl.org/)
+ * SDL_mixer (see http://www.libsdl.org/projects/SDL_mixer/)
+ * SDL_net (see http://www.libsdl.org/projects/SDL_net/)
+ * Python (optional)
+
+Follow the standard instructions for installing an autotools-based
+package:
+
+ 1. Run './configure' to initialize the package.
+ 2. Run 'make' to compile the package.
+ 3. Run 'make install' to install the package.
+
+An automated build script is available that installs the necessary
+dependencies and builds the source code automatically. See the build
+instructions on the website.
+
+Advanced topics such as cross-compilation are beyond the scope of this
+document. Please see the GNU autoconf / automake documentation for more
+information.
+
+#endif
+Obtaining an IWAD file
+----------------------
+
+To play Doom, you need an IWAD file. This file contains the game data
+that is used in gameplay (graphics, sounds, etc). The full versions of
+the Doom games are proprietary and need to be bought. The IWAD file
+has one of the following names:
+
+ doom1.wad (Shareware Doom)
+ doom.wad (Registered / Ultimate Doom)
+ doom2.wad (Doom 2)
+ tnt.wad (Final Doom: TNT: Evilution)
+ plutonia.wad (Final Doom: Plutonia Experiment)
+ chex.wad (Chex Quest)
+
+If you don't have a copy of the commercial version, you can download
+the shareware version (extract the file named doom1.wad):
+
+ * http://www.doomworld.com/idgames/index.php?id=7053
+ (idstuff/doom/win95/doom95.zip in your nearest /idgames mirror)
+
+If you have a commercial version, obtaining the IWAD file may be slightly
+complicated. The method depends on how you obtained your copy of the
+game:
+
+#if _WIN32
+ * The Doom games are available to buy for download on Steam
+ (http://www.steampowered.com/). Chocolate Doom will autodetect
+ IWADs installed by Steam and you do not need to do anything.
+#else
+ * The Doom games are available to buy for download on Steam
+ (http://www.steampowered.com/). To find the IWAD files on a
+ Windows system, look in the Steam directory (usually within
+ "Program Files"), under the "steamapps/common" path.
+#endif
+
+ * There have been several CD-based versions of Doom. Generally, the
+ IWAD files can be found on the CD and copied off directly.
+
+#if _WIN32
+ * If the IWAD files are not directly available on the CD, or you have
+ a floppy disk version, you will need to run the install program to
+ install the game to your hard disk. As the installer is DOS-based,
+ you may not be able to do this on 64-bit versions of Windows. In
+ this case, the best suggestion is to use a DOS emulator (such as
+ DOSbox) to run the installer.
+#else
+ * If the IWAD files are not directly available on the CD, or you have
+ a floppy disk version, installation is more difficult. The best
+ suggestion is to use a DOS emulator (such as DOSbox) to run the
+ installer.
+#endif
+
+ * As an alternative to using an emulator, it is possible to extract
+ the files manually. On the install disk(s), you will find several
+ files with numbered extensions (with CD versions there may be a
+ single large file with the extension .1, eg. "resource.1").
+
+ From the command line it is possible to combine these files into a
+ single large file, using a command similar to the following:
+
+#if _WIN32
+ copy doom_se.1+doom_se.2+doom_se.3+doom_se.4+doom_se.5 doom_se.lha
+#else
+ cat doom_se.1 doom_se.2 doom_se.3 doom_se.4 doom_se.5 > doom_se.lha
+#endif
+
+ The resulting file is an LHA archive file, and it can be extracted
+ using an LHA archive tool (there is one available for almost every
+ operating system).
+
+Running the game
+----------------
+
+#if __MACOSX__
+Once you have an IWAD file, you can specify its location within the
+graphical launcher program. Click the "Configure..." button, and then
+click "Set..." for each IWAD location to choose its location. From
+the main launcher dialog you can then choose which game you want to
+play and click the "Launch" button to start the game.
+
+If you are an advanced user and like to run Doom from the command
+line, you can use the "Open Terminal..." menu item to open a command
+line terminal. The DOOMWADPATH environment variable is preconfigured
+to point to the locations of the IWAD files set within the launcher.
+You can launch the game with a specific IWAD file by typing, for
+example:
+
+ chocolate-doom -iwad tnt.wad
+#else
+Chocolate Doom needs to know where to find your IWAD file. To do this,
+do one of the following:
+
+#if _WIN32
+ * Within Explorer, simply place the IWAD file in the same folder as
+ the Chocolate Doom files, and double-click chocolate-doom.exe.
+
+ * Set the environment variable DOOMWADDIR to the location of a
+ directory containing your IWAD files.
+
+ * If you have multiple IWADs in different directories, set the
+ environment variable DOOMWADPATH to be a semicolon-separated list
+ of directories to search (similar to the PATH environment
+ variable).
+
+ * Run Chocolate Doom from the command prompt with the '-iwad' command
+ line parameter to specify the IWAD file to use, eg.
+
+ chocolate-doom -iwad c:\games\doom2.wad
+#else
+ * Put the file into one of the following directories:
+
+ /usr/share/games/doom
+ /usr/local/share/games/doom
+
+ * Set the environment variable DOOMWADDIR to specify the path to a
+ directory containing your IWAD files.
+
+ * If you have multiple IWADs in different directories, set the
+ environment variable DOOMWADPATH to be a colon-separated list of
+ directories to search (similar to the Unix PATH environment
+ variable).
+
+ * Run Chocolate Doom from the Unix console with the '-iwad' command
+ line parameter to specify the IWAD file to use, eg.
+
+ chocolate-doom -iwad /root/doom2.wad
+#endif
+#endif
+
+Playing with Chex Quest
+-----------------------
+
+Chex Quest is a game based on Doom with some minor modifications that
+was distributed with boxes of Chex cereal in 1997. It is possible to
+play Chex Quest using Chocolate Doom. To do this, the following files
+are needed:
+
+ * The IWAD file 'chex.wad', from the Chex Quest CD.
+
+ * The dehacked patch 'chex.deh', which can be found in the /idgames
+ repository in utils/exe_edit/patches/chexdeh.zip.
+
+Copy these files into a directory together and use the '-iwad' command
+line parameter to specify the Chex Quest IWAD file:
+
+ chocolate-doom -iwad chex.wad
+
+Installing upgrades
+-------------------
+
+Chocolate Doom requires a version 1.9 IWAD file. Generally, if you
+install a recent version of Doom you should have a version 1.9 IWAD.
+However, if you are installing from a very old CD version or from
+floppy disks, you might find you have an older version.
+
+The most obvious symptom of an out of date IWAD file is that the game
+will exit at the title screen before the demo starts, with the message
+"Demo is from a different game version!". If this happens, your IWAD
+file is out of date and you need to upgrade.
+
+Id Software released upgrade patches that will update your game to
+version 1.9. The following sites have the patches:
+
+ http://www.doomworld.com/files/patches.shtml
+ http://www.doom2.net/doom2/utils.html
+ ftp://ftp.idsoftware.com/idstuff/doom2
+
+#if _WIN32
+As the patches are binary patches that run as DOS executables, on
+recent 64-bit versions of Windows you will need to use a DOS emulator
+(such as DOSBox) to run them.
+#else
+As the patches are binary patches that run as DOS executables, you
+will need to use a DOS emulator (such as DOSBox) to run them.
+#endif
+
+Music support
+-------------
+
+Chocolate Doom includes OPL emulation code that accurately reproduces
+the way that the in-game music sounded under DOS when using an
+Adlib/Soundblaster card. This is, however, not to everyone's taste.
+
+#if _WIN32
+Better quality MIDI playback is possible by using Windows' native
+MIDI synthesizer that is part of the operating system. Select "Native
+MIDI" within the sound dialog in the setup tool.
+
+#endif
+#if __MACOSX__
+High quality MIDI playback is possible by using Mac OS X's native MIDI
+synthesizer that is part of the operating system. Select "Native MIDI"
+within the sound dialog in the setup tool.
+
+#endif
+As an alternative it is possible to use Timidity for high quality MIDI
+playback:
+
+ http://timidity.sourceforge.net/
+
+A good set of patches for Timidity is the eawpats collection, which can
+be found here:
+
+ http://www.doomworld.com/idgames/index.php?id=13928
+ (Doom idgames archive, /sounds/eawpats.zip)
+
+#ifn PRECOMPILED
+When compiling from source, be sure to compile and install timidity
+before installing SDL_mixer.
+#endif
+
diff --git a/man/Makefile.am b/man/Makefile.am
index 698c0862..abfe76fd 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -1,6 +1,8 @@
MANPAGE_GEN_FILES=manpage.template docgen default.cfg.template extra.cfg.template
+docdir=$(prefix)/share/doc/@PACKAGE@
+
if HAVE_PYTHON
man_MANS=chocolate-doom.6 \
@@ -9,6 +11,8 @@ man_MANS=chocolate-doom.6 \
default.cfg.5 \
$(PACKAGE).cfg.5
+nodist_doc_DATA=INSTALL
+
chocolate-doom.6: ../src $(MANPAGE_GEN_FILES)
./docgen -m manpage.template ../src > $@
@@ -18,9 +22,14 @@ default.cfg.5: ../src default.cfg.template
$(PACKAGE).cfg.5: ../src extra.cfg.template
./docgen -m extra.cfg.template -c $(PACKAGE).cfg ../src > $@
+INSTALL:
+ ./simplecpp -DPRECOMPILED < INSTALL.template > $@
+
endif
EXTRA_DIST = $(man_MANS) $(MANPAGE_GEN_FILES) \
wikipages \
- CMDLINE.template
+ CMDLINE.template \
+ INSTALL.template \
+ simplecpp
diff --git a/man/simplecpp b/man/simplecpp
new file mode 100755
index 00000000..d277f278
--- /dev/null
+++ b/man/simplecpp
@@ -0,0 +1,211 @@
+#!/usr/bin/env python
+#
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# Contributors to the Freedoom project. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the freedoom project nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#
+# simple cpp-style preprocessor
+#
+# Understands:
+#
+# #define NAME
+#
+# Set an option
+# You can use -D on the command line too
+#
+# #undef NAME
+#
+# Unset an option if it is set
+#
+# #if .. #endif / #ifdef .. #endif
+#
+# Specify a list of options set, eg #ifdef DOOM2 || ULTDOOM || SHAREWARE
+# The block is only displayed if one of the options is set
+#
+# #ifn .. #endif / #ifndef .. #endif
+#
+# Similarly specify a list of options
+# The block is displayed if none of the options are set
+#
+# #include "filename"
+#
+# include the contents of a file
+
+import sys
+import re
+
+debug = False
+defines = {}
+
+command_re = re.compile("\#(\w+)(\s+(.*))?")
+include_re = re.compile("\s*\"(.*)\"\s*")
+
+def debug_msg(message):
+ if debug:
+ sys.stderr.write(message)
+
+# Parse command line options
+
+def parse_cmdline():
+ for arg in sys.argv[1:]:
+ if arg.startswith("-D"):
+ name = arg[2:]
+ defines[name] = True
+
+def parse_stream(stream):
+ result = read_block(stream, False)
+
+ if result is not None:
+ raise Exception("Mismatched #if in '%s'" % stream.name)
+
+def parse_file(filename):
+ f = open(filename)
+
+ try:
+ parse_stream(f)
+ finally:
+ f.close()
+
+# #include
+
+def cmd_include(arg):
+ # Extract the filename
+
+ match = include_re.match(arg)
+
+ if not match:
+ raise Exception("Invalid 'include' command")
+
+ filename = match.group(1)
+
+ # Open the file and process it
+
+ parse_file(filename)
+
+# #define
+
+def cmd_define(arg):
+ defines[arg] = True
+
+# #undef
+
+def cmd_undef(arg):
+ if arg in defines:
+ del defines[arg]
+
+# #ifdef/#ifndef
+
+def cmd_ifdef(arg, command, stream, ignore):
+
+ # Get the define name
+ name = arg.strip()
+
+ debug_msg("%s %s >\n" % (command, arg))
+
+ # Should we ignore the contents of this block?
+
+ sub_ignore = (name not in defines)
+
+ if "n" in command:
+ sub_ignore = not sub_ignore
+
+ # Parse the block
+
+ result = read_block(stream, ignore or sub_ignore)
+
+ debug_msg("%s %s < (%s)\n" % (command, arg, result))
+
+ # There may be a second "else" block to parse:
+
+ if result == "else":
+ debug_msg("%s %s else >\n" % (command, arg))
+ result = read_block(stream, ignore or (not sub_ignore))
+ debug_msg("%s %s else < (%s)\n" % (command, arg, result))
+
+ # Should end in an endif:
+
+ if result != "endif":
+ raise Exception("'if' block did not end in an 'endif'")
+
+commands = {
+ "include" : cmd_include,
+ "define" : cmd_define,
+ "undef" : cmd_undef,
+ "if" : cmd_ifdef,
+ "ifdef" : cmd_ifdef,
+ "ifn" : cmd_ifdef,
+ "ifndef" : cmd_ifdef,
+}
+
+# Recursive block reading function
+# if 'ignore' argument is 1, contents are ignored
+
+def read_block(stream, ignore):
+
+ for line in stream:
+
+ # Remove newline
+
+ line = line[0:-1]
+
+ # Check if this line has a command
+
+ match = command_re.match(line)
+
+ if match:
+ command = match.group(1)
+ arg = match.group(3)
+
+ if command == "else" or command == "endif":
+ return command
+ elif command not in commands:
+ raise Exception("Unknown command: '%s'" % \
+ command)
+
+ # Get the callback function.
+
+ func = commands[command]
+
+ # Invoke the callback function. #ifdef commands
+ # are a special case and need extra arguments.
+ # Other commands are only executed if we are not
+ # ignoring this block.
+
+ if func == cmd_ifdef:
+ cmd_ifdef(arg, command=command,
+ stream=stream,
+ ignore=ignore)
+ elif not ignore:
+ func(arg)
+ else:
+ if not ignore:
+ print(line)
+
+parse_cmdline()
+parse_stream(sys.stdin)
+