diff options
author | Alexey Dokuchaev <danfe@FreeBSD.org> | 2011-08-31 14:55:32 +0000 |
---|---|---|
committer | Alexey Dokuchaev <danfe@FreeBSD.org> | 2011-08-31 14:55:32 +0000 |
commit | 379ce0b1d0a9defef9d7d858f497c6ab58e7770e (patch) | |
tree | 43a742eb07b0e72bb7ab386f24bbba0e05fd4031 /games/lmpc | |
parent | 1e51913b602e62828f97b251bb1d757cb140f78a (diff) | |
download | ports-379ce0b1d0a9defef9d7d858f497c6ab58e7770e.tar.gz ports-379ce0b1d0a9defef9d7d858f497c6ab58e7770e.zip |
- Update to version 3.4.4
- Download pregenerated documentation from the Internet
- Add LICENSE (GPLv2)
- Augment IGNORE statement
- Cleanup the Makefile while here
Notes
Notes:
svn path=/head/; revision=280858
Diffstat (limited to 'games/lmpc')
-rw-r--r-- | games/lmpc/Makefile | 33 | ||||
-rw-r--r-- | games/lmpc/distinfo | 10 | ||||
-rw-r--r-- | games/lmpc/files/lmpc.html | 7893 |
3 files changed, 24 insertions, 7912 deletions
diff --git a/games/lmpc/Makefile b/games/lmpc/Makefile index 26d530f42590..9b1beb2a885c 100644 --- a/games/lmpc/Makefile +++ b/games/lmpc/Makefile @@ -6,46 +6,45 @@ # PORTNAME= lmpc -PORTVERSION= 3.4.2 +PORTVERSION= 3.4.4 CATEGORIES= games -MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${PORTNAME}-${PORTVERSION} +MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${PORTNAME}-${PORTVERSION} \ + http://demospecs.half-empty.de/lmpc-alpha/:doc +DISTFILES= ${DISTNAME}${EXTRACT_SUFX} ${FETCHED_DOCS:S/$/:doc/} +EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} MAINTAINER= danfe@FreeBSD.org COMMENT= A tool to manipulate games demo recordings +LICENSE= GPLv2 + GNU_CONFIGURE= yes USE_GMAKE= yes USE_PERL5_BUILD= yes SCRIPTS= dema dm2cat procdm2.pl PROGRAMS= dbs demcut lmpc -PORTDOCS= README lmpc.html +FETCHED_DOCS= ${PORTNAME}.html ${PORTNAME}.pdf ${PORTNAME}.sgml +PORTDOCS= * PLIST_FILES= ${SCRIPTS:S/^/bin\//} ${PROGRAMS:S/^/bin\//} .include <bsd.port.pre.mk> .if ${ARCH} != "i386" -IGNORE= assumes sizeof(long) == 4 +IGNORE= does not work on ${ARCH}: assumes sizeof(long) == 4 .endif -pre-patch: .SILENT - ${REINPLACE_CMD} -e 's,bin doc src spec,bin src,' ${WRKSRC}/Makefile.in - # Include <sys/types.h> before <sys/shm.h>, at least alpha needs it - ${ECHO_CMD} -e '37t30\n38d\nwq' | ${ED} -s ${WRKSRC}/src/dbs.c +post-patch: + @${REINPLACE_CMD} -e 's,bin doc src spec,bin src,' \ + ${WRKSRC}/Makefile.in do-install: -.for s in ${SCRIPTS} - ${INSTALL_SCRIPT} ${WRKSRC}/bin/${s} ${PREFIX}/bin -.endfor -.for p in ${PROGRAMS} - ${INSTALL_PROGRAM} ${WRKSRC}/src/${p} ${PREFIX}/bin -.endfor + ${INSTALL_SCRIPT} ${SCRIPTS:S,^,${WRKSRC}/bin/,} ${PREFIX}/bin + ${INSTALL_PROGRAM} ${PROGRAMS:S,^,${WRKSRC}/src/,} ${PREFIX}/bin .if !defined(NOPORTDOCS) @${MKDIR} ${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/README ${DOCSDIR} - ${INSTALL_DATA} ${FILESDIR}/lmpc.html ${DOCSDIR} + ${INSTALL_DATA} ${FETCHED_DOCS:S,^,${DISTDIR}/,} ${DOCSDIR} .endif -ED?= /bin/ed - .include <bsd.port.post.mk> diff --git a/games/lmpc/distinfo b/games/lmpc/distinfo index fb07d74c37e6..6a6cd4403bcc 100644 --- a/games/lmpc/distinfo +++ b/games/lmpc/distinfo @@ -1,2 +1,8 @@ -SHA256 (lmpc-3.4.2.tar.gz) = 20189eed91161dcd1dd5b33fcd1bde9c9f50eaee159483fc82fef6bc1e3487be -SIZE (lmpc-3.4.2.tar.gz) = 471977 +SHA256 (lmpc-3.4.4.tar.gz) = 6e2d57d82454b4b1ffd075a29895caeddcde1c1883209378676682bf1da42b3f +SIZE (lmpc-3.4.4.tar.gz) = 484815 +SHA256 (lmpc.html) = 4c4ad9852a5ca7fef644f889853734a156390e5556497b0984ba23e1b6631a13 +SIZE (lmpc.html) = 118470 +SHA256 (lmpc.pdf) = 35dca252dd35c241dbedb350ef1f271c8106a8dd66d909b03492b0b0268e7781 +SIZE (lmpc.pdf) = 468363 +SHA256 (lmpc.sgml) = 19a9922e51e0836e47527633a472520d242536e946ac682a31e6028fe4b092d6 +SIZE (lmpc.sgml) = 127701 diff --git a/games/lmpc/files/lmpc.html b/games/lmpc/files/lmpc.html deleted file mode 100644 index 802561ba4e88..000000000000 --- a/games/lmpc/files/lmpc.html +++ /dev/null @@ -1,7893 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->The Little Movie Processing Centre</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"></HEAD -><BODY -CLASS="ARTICLE" -BGCOLOR="#FFFFFF" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="ARTICLE" -><DIV -CLASS="TITLEPAGE" -><H1 -CLASS="TITLE" -><A -NAME="AEN2" ->The Little Movie Processing Centre</A -></H1 -><H3 -CLASS="AUTHOR" -><A -NAME="AEN4" ->Uwe Girlich,</A -></H3 -><DIV -CLASS="AFFILIATION" -><DIV -CLASS="ADDRESS" -><P -CLASS="ADDRESS" -><CODE -CLASS="EMAIL" -><<A -HREF="mailto:uwe@planetquake.com" ->uwe@planetquake.com</A ->></CODE -></P -></DIV -></DIV -><P -CLASS="PUBDATE" ->v3.4.1, 3/4/2006, (alpha test release)<BR></P -><DIV -><DIV -CLASS="ABSTRACT" -><P -></P -><A -NAME="AEN10" -></A -><P ->This document is the user's guide of The Little Movie Processing Centre -(LMPC). LMPC is a utility to handle DOOM, DOOM ][, HERETIC, HEXEN and -STRIFE LMP files. There is a rudimentary support for Duke Nukem 3D and Redneck -Rampage DMO files. Quake DEM files, QuakeWorld QWD files, Quake II DM2 files -(client recorded, server recorded, relay files), and Quake III Arena DM3 files -are supported too. The DEM file cutter tool (DEMcut), The DEM Text File -Analyser (DEMA), The Demo Broadcasting Server (DBS) and The DM2 file -concatenator (DM2cat) are part of this package as well.</P -><P -></P -></DIV -></DIV -><HR></DIV -><DIV -CLASS="TOC" -><DL -><DT -><B ->Table of Contents</B -></DT -><DT ->1. <A -HREF="#AEN12" ->Introduction</A -></DT -><DT ->2. <A -HREF="#AEN27" ->LMPC, The Little Movie Processing Centre</A -></DT -><DD -><DL -><DT ->2.1. <A -HREF="#AEN29" ->Introduction</A -></DT -><DT ->2.2. <A -HREF="#AEN38" ->Command line parameters</A -></DT -><DD -><DL -><DT ->2.2.1. <A -HREF="#AEN48" ->Syntax description</A -></DT -><DT ->2.2.2. <A -HREF="#AEN62" ->Information about a LMP, DMO, DEM, QWD, DM2 or DM3 file</A -></DT -><DT ->2.2.3. <A -HREF="#AEN89" ->LMP/DMO/DEM/QWD/DM2/DM3 text converter (decompiler)</A -></DT -><DT ->2.2.4. <A -HREF="#AEN142" ->LMP/DEM/QWD/DM2/MD3 binary converter (compiler)</A -></DT -><DT ->2.2.5. <A -HREF="#AEN170" ->LMP file version change</A -></DT -><DT ->2.2.6. <A -HREF="#AEN199" ->LMP file player's view change</A -></DT -><DT ->2.2.7. <A -HREF="#AEN227" ->LMP file ``Wait'' (<TT -CLASS="LITERAL" ->WT</TT ->) tics addition</A -></DT -><DT ->2.2.8. <A -HREF="#AEN264" ->LMP file clean-up: ``Pause'' (<TT -CLASS="LITERAL" ->PS</TT ->, <TT -CLASS="LITERAL" ->PE</TT ->) tics</A -></DT -><DT ->2.2.9. <A -HREF="#AEN305" ->LMP file clean-up: ``Save Game'' (<TT -CLASS="LITERAL" ->SG</TT ->) tics</A -></DT -><DT ->2.2.10. <A -HREF="#AEN336" ->DEM/DM2 file repair: multi-level files</A -></DT -><DT ->2.2.11. <A -HREF="#AEN369" ->Game type determination</A -></DT -></DL -></DD -><DT ->2.3. <A -HREF="#AEN415" ->Bugs and limitations</A -></DT -></DL -></DD -><DT ->3. <A -HREF="#DEMA" ->DEMA, The DEM Text File Analyser</A -></DT -><DT ->4. <A -HREF="#DEMCUT" ->DEMcut, The DEM file cutter tool</A -></DT -><DD -><DL -><DT ->4.1. <A -HREF="#AEN444" ->Introduction</A -></DT -><DT ->4.2. <A -HREF="#AEN449" ->Batch usage</A -></DT -><DT ->4.3. <A -HREF="#AEN454" ->Interactive usage</A -></DT -><DT ->4.4. <A -HREF="#AEN471" ->Commands</A -></DT -><DD -><DL -><DT ->4.4.1. <A -HREF="#AEN476" ->Help</A -></DT -><DT ->4.4.2. <A -HREF="#AEN491" ->Output file</A -></DT -><DT ->4.4.3. <A -HREF="#AEN518" ->DEM file</A -></DT -><DT ->4.4.4. <A -HREF="#AEN548" ->Speed</A -></DT -><DT ->4.4.5. <A -HREF="#AEN581" ->Time</A -></DT -><DT ->4.4.6. <A -HREF="#AEN612" ->Loop</A -></DT -><DT ->4.4.7. <A -HREF="#AEN644" ->CD track</A -></DT -><DT ->4.4.8. <A -HREF="#AEN670" ->Frame</A -></DT -><DT ->4.4.9. <A -HREF="#AEN702" ->Range</A -></DT -><DT ->4.4.10. <A -HREF="#DEMCUTM" ->Multi-player preparing</A -></DT -><DT ->4.4.11. <A -HREF="#AEN776" ->Interactive mode</A -></DT -><DT ->4.4.12. <A -HREF="#AEN810" ->Quit</A -></DT -></DL -></DD -><DT ->4.5. <A -HREF="#AEN823" ->Example</A -></DT -><DT ->4.6. <A -HREF="#AEN832" ->Problems, ideas and everything</A -></DT -></DL -></DD -><DT ->5. <A -HREF="#AEN841" ->DBS, The Demo Broadcasting Server</A -></DT -><DD -><DL -><DT ->5.1. <A -HREF="#AEN843" ->Introduction</A -></DT -><DT ->5.2. <A -HREF="#AEN847" ->Command line parameters</A -></DT -><DD -><DL -><DT ->5.2.1. <A -HREF="#AEN852" ->Syntax description</A -></DT -><DT ->5.2.2. <A -HREF="#AEN866" ->Version</A -></DT -><DT ->5.2.3. <A -HREF="#AEN879" ->Port</A -></DT -><DT ->5.2.4. <A -HREF="#AEN892" ->Maximum number of players</A -></DT -></DL -></DD -><DT ->5.3. <A -HREF="#AEN906" ->What DBS does</A -></DT -></DL -></DD -><DT ->6. <A -HREF="#DM2CAT" ->DM2cat, The DM2 file concatenator</A -></DT -><DT ->7. <A -HREF="#LMPSOURCE" ->LS format</A -></DT -><DD -><DL -><DT ->7.1. <A -HREF="#AEN924" ->Introduction</A -></DT -><DT ->7.2. <A -HREF="#AEN955" ->Header Area</A -></DT -><DT ->7.3. <A -HREF="#AEN1093" ->Data Area</A -></DT -><DD -><DL -><DT ->7.3.1. <A -HREF="#AEN1101" ->Movements</A -></DT -><DT ->7.3.2. <A -HREF="#AEN1198" ->Use (LMP only)</A -></DT -><DT ->7.3.3. <A -HREF="#AEN1241" ->Fly and Look (HERETIC and HEXEN only)</A -></DT -><DT ->7.3.4. <A -HREF="#AEN1282" ->Use Artifact (HERETIC and HEXEN only)</A -></DT -><DT ->7.3.5. <A -HREF="#AEN1415" ->STRIFE Artifacts</A -></DT -><DT ->7.3.6. <A -HREF="#AEN1479" ->Jump (HEXEN and STRIFE only)</A -></DT -><DT ->7.3.7. <A -HREF="#AEN1492" ->STRIFE actions</A -></DT -><DT ->7.3.8. <A -HREF="#AEN1533" ->Use (DMO only)</A -></DT -><DT ->7.3.9. <A -HREF="#AEN1660" ->Special Codes</A -></DT -></DL -></DD -></DL -></DD -><DT ->8. <A -HREF="#DEMSOURCE" ->DEM source format</A -></DT -><DT ->9. <A -HREF="#QWDSOURCE" ->QWD source format</A -></DT -><DT ->10. <A -HREF="#DM2SOURCE" ->DM2 source format</A -></DT -><DT ->11. <A -HREF="#DM3SOURCE" ->DM3 source format</A -></DT -><DT ->12. <A -HREF="#AEN1703" ->Some links and further information</A -></DT -><DT ->13. <A -HREF="#AEN1729" ->History and future of LMPC</A -></DT -></DL -></DIV -><DIV -CLASS="SECT1" -><H2 -CLASS="SECT1" -><A -NAME="AEN12" ->1. Introduction</A -></H2 -><P ->LMPC is the name of the complete package and the name of the biggest -parts in it: The Little Movie Processing Centre.</P -><P ->LMPC is a collection of utilities to handle old (<=1.4) and new DOOM, -DOOM ][, HERETIC, HEXEN and STRIFE LMP files. There is support for -Duke Nukem 3D and Redneck Rampage DMO files, Quake DEM files, -QuakeWorld QWD files, Quake II DM2 files (client recorded, server -recorded, and relay files), and Quake III Arena DM3 files too. For Quake II -relay files, read the home page of the Quake II Relay project by Conor Davis -(<A -HREF="mailto:cedavis@planetquake.com" -TARGET="_top" ->cedavis@planetquake.com</A ->) -<A -HREF="http://www.planetquake.com/relay/" -TARGET="_top" ->http://www.planetquake.com/relay/</A -></P -><P ->You can download the package from my -<A -HREF="http://www.planetquake.com/demospecs" -TARGET="_top" ->Demo Specs page</A ->.</P -><P ->It is based upon the information in the -<A -HREF="http://www.planetquake.com/demospecs/lmp" -TARGET="_top" ->Unofficial LMP format description</A ->, the -<A -HREF="http://www.planetquake.com/demospecs/dmo" -TARGET="_top" ->Unofficial DMO format description</A ->, the -<A -HREF="http://www.planetquake.com/demospecs/dem" -TARGET="_top" ->Unofficial DEM format description</A ->, the -<A -HREF="http://www.planetquake.com/demospecs/qwd" -TARGET="_top" ->Unofficial QWD format description</A -> and the -<A -HREF="http://www.planetquake.com/demospecs/dm2" -TARGET="_top" ->Unofficial DM2 format description</A ->.</P -><P ->Read the apropriate document to find out the exact version numbers -supported by LMPC. I write the format description and the program at the same -time; so if it is described in the specs document, it is in general supported -by the LMPC program.</P -></DIV -><DIV -CLASS="SECT1" -><HR><H2 -CLASS="SECT1" -><A -NAME="AEN27" ->2. LMPC, The Little Movie Processing Centre</A -></H2 -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN29" ->2.1. Introduction</A -></H3 -><P ->With LMPC you can get information about a LMP, DMO, DEM, QWD, DM2, or DM3 -file, change the version -and viewing player's number, add some wait tics at the end, remove the -pause tics, clear the ``Save Game'' tics in LMP files -and (this is the main part) you can compile and -decompile a LMP, DMO, DEM, QWD, DM2, or DM3 from and to a LS file. LS stands -for ``<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->L</I -></SPAN ->MP <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->S</I -></SPAN ->ource''. -To reduce the amount of new abbreviations I call the ``DMO Source'' LS too. -The language is similar and will be treated in the same way. -The real LS language is documented at full -length in the section <A -HREF="#LMPSOURCE" ->Section 7</A ->. -The ``DEM Source'' (see section <A -HREF="#DEMSOURCE" ->Section 8</A ->) -and all the more the ``QWD Source'' (see section <A -HREF="#QWDSOURCE" ->Section 9</A ->) is totally different but I call it LS anyway. -The same holds for Quake II DM2 (see section <A -HREF="#DM2SOURCE" ->Section 10</A ->) and -Quake III Areana DM3 files.</P -></DIV -><DIV -CLASS="SECT2" -><HR><H3 -CLASS="SECT2" -><A -NAME="AEN38" ->2.2. Command line parameters</A -></H3 -><P ->LMPC is a command line oriented program. It uses the -<TT -CLASS="LITERAL" ->getopt_long()</TT -> function for the command line parsing. </P -><P ->The LMP file convert options -(<TT -CLASS="LITERAL" ->--change-version</TT ->, <TT -CLASS="LITERAL" ->--change-player</TT ->, -<TT -CLASS="LITERAL" ->--add-WT</TT ->, <TT -CLASS="LITERAL" ->--remove-pause</TT -> and <TT -CLASS="LITERAL" ->--clear-save</TT ->) can be -used together.</P -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN48" ->2.2.1. Syntax description</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpc</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->If you start LMPC without any command line parameters you -receive the following syntax message: - -<PRE -CLASS="SCREEN" ->Little Movie Processing Centre -LMPC (c) U. Girlich, 1994-2006, Release 3.4.1 3/4/2006 (alpha test release) -lmpc [option ...] filename [filename ...] --h, --help display this help and exit. --V, --version output version information and exit. --i, --info prints out information about the LMP-files. --s, --to-txt binary/text to text conversion. --l, --to-bin binary/text, ... to binary conversion. --v, --change-version VERSION changes the version of a LMP-file to VERSION - (0 means old DOOM). --p, --change-player PLAYER changes the recording player of a LMP-file to - PLAYER (0..3). --w, --add-WT SECONDS adds SECONDS (int) WT game tics to the LMP file --r, --remove-pause removes the game tics between PS and PE. --c, --clear-save clears SG tics. --f, --fix-multi fixes multi-level DEM and DM2 files. --t, --tic FROM(,|:)TO converts only a part of the LMP-file - (in connection with -s only). --g, --game GAME forces game (GAME=DOOM,DOOM2,HERETIC,HEXEN,STRIFE - DUKE,REDNECK,QUAKE,QUAKEWORLD,QUAKE2,QUAKE3) - short: D2HXSNRQWqA (only with -(i|s|v|p|w|r|c)). --m, --mark-step STEP marks every STEPth tic in the LS file (-s only) - STEP=0 doesn't mark any game tic; default: STEP=1.</PRE -> </P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN62" ->2.2.2. Information about a LMP, DMO, DEM, QWD, DM2 or DM3 file</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpc [--info|-i] infile [infile ...]</TT -></P -></DD -><DT ->Input File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->infile</TT ->s</P -></DD -><DT ->Description:</DT -><DD -><P ->LMPC reads each <TT -CLASS="LITERAL" ->infile</TT -> and prints out some information -like game, version number, episode, map, skill, -number of players, deathmatch/altdeath, nomonsters etc. -Please note: in the old DOOM format there is no version -information, so if you check e.g. a 1.2 LMP file you receive -only the vague information v<1.4 instead of v1.2. -LMPC doesn't report any version for HERETIC and HEXEN LMP files.</P -><P ->This option works for DMO files too. They will be detected automatically -but you can use the <TT -CLASS="LITERAL" ->--game DUKE</TT -> option as well.</P -><P ->This option works for DEM, QWD, DM2 and DM3 files too. They will be -detected automatically -but you can use the <TT -CLASS="LITERAL" ->--game QUAKE</TT ->, -<TT -CLASS="LITERAL" ->--game QUAKEWORLD</TT ->, -<TT -CLASS="LITERAL" ->--game QUAKE2</TT ->, and -<TT -CLASS="LITERAL" ->--game QUAKE3</TT ->, -option as well. The information -on DEM, QWD, DM2, and DM3 files nearly zero beside the information that it is -actually a DEM, QWD, DM2, or DM3 file and the number of frames in binary DEM, -QWD, DM2, or DM3 files.</P -><P ->To get more information of a DEM file convert it into a text file and use -DEMA, The DEM Text File Analyser.</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN89" ->2.2.3. LMP/DMO/DEM/QWD/DM2/DM3 text converter (decompiler)</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpc (--to-txt|-s) [(--tic|-t) FROM(,|:)TO] [(--mark-step|-m) STEP] infile txtfile</TT -></P -></DD -><DT ->Input File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->infile</TT -></P -></DD -><DT ->Output File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->txtfile</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->LMPC reads the file <TT -CLASS="LITERAL" ->infile</TT ->, converts it to -the corresponding text format and stores the result in the text file -<TT -CLASS="LITERAL" ->txtfile</TT ->. <TT -CLASS="LITERAL" ->infile</TT -> may -be a LMP binary, DMO binary, DEM binary, DEM text, QWD binary, QWD text, -DM2 binary, DM2 text, DM3 binary or DM3 text file. Most of the additional -options do work with binary LMP files only.</P -><P ->If the <TT -CLASS="LITERAL" ->--tic</TT -> option is used, only the part between gametic -<TT -CLASS="LITERAL" ->FROM</TT -> and <TT -CLASS="LITERAL" ->TO</TT -> (inclusive) will be stored in the LS file. -A missing <TT -CLASS="LITERAL" ->FROM</TT -> means the start of the LMP file and -a missing <TT -CLASS="LITERAL" ->TO</TT -> means the end of the LMP file. -<TT -CLASS="LITERAL" ->FROM</TT -> and <TT -CLASS="LITERAL" ->TO</TT -> are separated by a comma (<TT -CLASS="LITERAL" ->,</TT ->) -or a colon (<TT -CLASS="LITERAL" ->:</TT ->). The MS-DOS version may have difficulties with comma -as a separator because <TT -CLASS="LITERAL" ->COMMAND.COM</TT -> (<TT -CLASS="LITERAL" ->4dos</TT -> as well) -splits a command line at spaces and commas. The <TT -CLASS="LITERAL" ->TO</TT -> part will -become a different argument and might be interpreted as a file name. </P -><P ->LMPC appends at the end of the LS file some useful additional -information. For each player there is a statistics about his -favourite movement codes and the portion of <TT -CLASS="LITERAL" ->WT</TT ->. Since you can -achieve with keyboard/joystick only a few special movement codes, -is is very easy to detect, if the player used a keyboard or a -mouse. Some newbies don't use strafe, so LMPC shows also this -handicap. The statistic takes in account always the full LMP file.</P -><P ->From the favourite movement codes you can easily deduce the -number behind a prospective <TT -CLASS="LITERAL" ->-turbo</TT -> parameter.</P -><P ->If the <TT -CLASS="LITERAL" ->--mark-step</TT -> option is used LMPC will mark every -<TT -CLASS="LITERAL" ->STEP</TT ->th -game tic with the tic-number and the current time. The default <TT -CLASS="LITERAL" ->STEP</TT -> -value is 1. If <TT -CLASS="LITERAL" ->STEP</TT ->=0 no marks are printed at all.</P -><P ->Any <TT -CLASS="LITERAL" ->--mark-step</TT -> option in conjunction with a binary DEM, QWD and -DM2 files is a -special debug-option. It includes in the text file the frame number and the -starting address of all messages. -This option may be removed or changed in future releases.</P -><P ->The <TT -CLASS="LITERAL" ->--fix-multi</TT -> option can be used together with <TT -CLASS="LITERAL" ->--to-txt</TT -> -to repair the broken multi-level DEM and DM2 files.</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN142" ->2.2.4. LMP/DEM/QWD/DM2/MD3 binary converter (compiler)</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpc (--to-bin|-l) infile [infile ...] binfile</TT -></P -></DD -><DT ->Input File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->infile</TT ->s</P -></DD -><DT ->Output File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->binfile</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->LMPC reads the first file, determines the game type and compiles a -binary file out of all the files on the command line. The binary (destination) -file is always the last argument. </P -><P ->This option works with LMP text files, DEM text, DEM binary, QWD text, -QWD binary, DM2 text, DM2 binary, DM3 text, and DM3 binary files as -input files only. LMPC can handle more than 1 input file with LMP text files -only.</P -><P ->For combination of DEM files use DEMcut.</P -><P ->The <TT -CLASS="LITERAL" ->--fix-multi</TT -> option can be used together with <TT -CLASS="LITERAL" ->--to-bin</TT -> -to repair the broken multi-level DEM and DM2 files.</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN170" ->2.2.5. LMP file version change</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpc (--change-version|-v) VERSION lmpfile1 [lmpfile2]</TT -></P -></DD -><DT ->Input File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpfile1</TT -></P -></DD -><DT ->Output File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpfile1</TT -> or <TT -CLASS="LITERAL" ->[lmpfile2]</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->LMPC reads the binary LMP file <TT -CLASS="LITERAL" ->lmpfile1</TT ->, changes the version number -byte in <TT -CLASS="LITERAL" ->lmpfile1</TT -> to the appropriate value or stores the result -in <TT -CLASS="LITERAL" ->lmpfile2</TT ->.</P -><P ->The VERSION can be the version byte itself (0 for the old LMP files) -or anything like 1.4beta, 1.9 or whatever.</P -><P ->There is no guarantee for a special LMP file to work with the new version!!</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN199" ->2.2.6. LMP file player's view change</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpc (--change-player|-p) PLAYER lmpfile1 [lmpfile2]</TT -></P -></DD -><DT ->Input File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpfile1</TT -></P -></DD -><DT ->Output File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpfile1</TT -> or <TT -CLASS="LITERAL" ->[lmpfile2]</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->LMPC reads the LMP file <TT -CLASS="LITERAL" ->lmpfile1</TT ->, changes the number of the -player (0..3: new DOOM, DOOM ][; 0..7: STRIFE) -with the main view (status bar, sound) in <TT -CLASS="LITERAL" ->lmpfile1</TT -> -or stores the result in <TT -CLASS="LITERAL" ->lmpfile2</TT ->.</P -><P ->To change only the main player byte works only with new LMP files, since old -ones are always recorded from the view of the first player (no. 0) and there -is no information about this in the header.</P -></DD -></DL -></DIV -> </P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN227" ->2.2.7. LMP file ``Wait'' (<TT -CLASS="LITERAL" ->WT</TT ->) tics addition</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpc (--add-WT|-w) SECONDS lmpfile1 [lmpfile2]</TT -></P -></DD -><DT ->Input File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpfile1</TT -></P -></DD -><DT ->Output File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpfile1</TT -> or <TT -CLASS="LITERAL" ->[lmpfile2]</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->LMPC reads the <TT -CLASS="LITERAL" ->lmpfile1</TT -> and adds at the end</P -><P -> <PRE -CLASS="SCREEN" -><TT -CLASS="LITERAL" ->SECONDS</TT -> * 35 * player number</PRE -> </P -><P ->empty (<TT -CLASS="LITERAL" ->WT</TT ->) game tics. -This results in a <TT -CLASS="LITERAL" ->SECONDS</TT -> seconds longer LMP file.</P -><P ->With <TT -CLASS="LITERAL" ->lmpfile2</TT -> the result -will be written in <TT -CLASS="LITERAL" ->lmpfile2</TT ->. Without this parameter, -<TT -CLASS="LITERAL" ->lmpfile1</TT -> will be changed.</P -><P ->This option is very useful for contest LMP files with a long visible summary -screen.</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN264" ->2.2.8. LMP file clean-up: ``Pause'' (<TT -CLASS="LITERAL" ->PS</TT ->, <TT -CLASS="LITERAL" ->PE</TT ->) tics</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpc (--remove-pause|-r) lmpfile1 [lmpfile2]</TT -></P -></DD -><DT ->Input File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpfile1</TT -></P -></DD -><DT ->Output File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->[lmpfile2]</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->LMPC reads the <TT -CLASS="LITERAL" ->lmpfile1</TT -> and copies all game tics to -<TT -CLASS="LITERAL" ->lmpfile2</TT ->. During the copy process LMPC scans the contents -for Pause Start game tics (<TT -CLASS="LITERAL" ->PS</TT ->) and Pause End game tics -(<TT -CLASS="LITERAL" ->PE</TT ->).</P -><P ->The <TT -CLASS="LITERAL" ->PS</TT -> game tic will be copied to <TT -CLASS="LITERAL" ->lmpfile2</TT -> but -with an empty ``use byte''; the game tics between <TT -CLASS="LITERAL" ->PS</TT -> and -<TT -CLASS="LITERAL" ->PE</TT -> (inclusive <TT -CLASS="LITERAL" ->PE</TT ->) wont be copied.</P -><P ->Without the second filename LMPC will write to a temporary file and replaces -at the end <TT -CLASS="LITERAL" ->lmpfile1</TT ->.</P -><P ->The game tic numbers of <TT -CLASS="LITERAL" ->PS</TT -> and <TT -CLASS="LITERAL" ->PE</TT -> are -printed during the conversion. </P -><P ->You may have difficulties with the play back of such a patched LMP file. -This is the case if you patch a LMP file of a level with a revenant -(skeleton). The revenant uses a random number generator to choose between a -self controlled rocket and a normal rocket. The input of this generator are the -last two bits of the game tic number. This means you have to make sure that -you cut a number of game tics divisible by 4. In general this is impossible -so do not use pause in levels with a revenant. An arch vile makes similar -difficulties but I don't even know how to prevent it.</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN305" ->2.2.9. LMP file clean-up: ``Save Game'' (<TT -CLASS="LITERAL" ->SG</TT ->) tics</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpc (--clear-save|-c) lmpfile1 [lmpfile2]</TT -></P -></DD -><DT ->Input File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpfile1</TT -></P -></DD -><DT ->Output File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->[lmpfile2]</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->LMPC reads the <TT -CLASS="LITERAL" ->lmpfile1</TT -> and copies all game tics to -<TT -CLASS="LITERAL" ->lmpfile2</TT ->. During the copy process LMPC scans the contents -for Save Game game tics (<TT -CLASS="LITERAL" ->SG</TT ->). Every <TT -CLASS="LITERAL" ->SG</TT -> command will be -cleared. -With <TT -CLASS="LITERAL" ->lmpfile2</TT -> the result -will be written in <TT -CLASS="LITERAL" ->lmpfile2</TT ->. Without this parameter, -<TT -CLASS="LITERAL" ->lmpfile1</TT -> will be changed.</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN336" ->2.2.10. DEM/DM2 file repair: multi-level files</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->lmpc (--fix-multi|-f) demofile</TT -></P -></DD -><DT ->Input File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->demofile</TT -></P -></DD -><DT ->Output File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->demofile</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Quake and Quake II have problems with the playback of multi-level recordings. -They usually stopp at the first level change.</P -><P ->Read more about the background in the <A -HREF="http://www.planetquake.com/demospecs/faq/faq-2.html#ss2.1" -TARGET="_top" ->recording FAQ</A ->.</P -><P ->If the <TT -CLASS="LITERAL" ->--fix-multi</TT -> parameter comes without any conversion option on -the command-line, LMPC repairs the demo file in question "in-place". This -means LMPC overwrites the bad commands with <TT -CLASS="LITERAL" ->nop</TT -> or <TT -CLASS="LITERAL" ->print</TT ->.</P -><P ->The <TT -CLASS="LITERAL" ->--fix-multi</TT -> option can be used together with <TT -CLASS="LITERAL" ->--to-bin</TT -> -and <TT -CLASS="LITERAL" ->--to-txt</TT ->. LMPC removes the offending commands in this case.</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN369" ->2.2.11. Game type determination</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -> <PRE -CLASS="SCREEN" ->lmpc (--info| - --change-version| - --change-player| - --to-txt| - --add-WT| - --remove-pause) (--game|-g) GAME binfile [filename ...]</PRE -> </P -></DD -><DT ->Input File:</DT -><DD -><P -><TT -CLASS="LITERAL" ->binfile</TT -></P -></DD -><DT ->Output File:</DT -><DD -><P ->action dependent</P -></DD -><DT ->Description:</DT -><DD -><P ->LMPC determines the game type of a LMP (binary), DMO (binary), DEM -(text and binary), QWD (text and binary), DM2 (text and binary), -or DM3 (text and binary) file very good. But it can't good -distinguish between HERETIC/HEXEN and old DOOM LMP files. Moreover it -can't distinguish at all between DOOM ][ Map 1-9 and new DOOM -Episode 1 -LMP files. The latter case is not very important but the first is more -severe. To force LMPC to use a particular game type use <TT -CLASS="LITERAL" ->--game</TT ->. -<TT -CLASS="LITERAL" ->GAME</TT -> can be <TT -CLASS="LITERAL" ->DOOM</TT ->, <TT -CLASS="LITERAL" ->DOOM2</TT ->, -<TT -CLASS="LITERAL" ->HERETIC</TT ->, <TT -CLASS="LITERAL" ->HEXEN</TT ->, <TT -CLASS="LITERAL" ->STRIFE</TT ->, <TT -CLASS="LITERAL" ->DUKE</TT ->, -<TT -CLASS="LITERAL" ->REDNECK</TT ->, <TT -CLASS="LITERAL" ->QUAKE</TT ->, -<TT -CLASS="LITERAL" ->QUAKEWORLD</TT ->, -<TT -CLASS="LITERAL" ->QUAKE2</TT -> or -<TT -CLASS="LITERAL" ->QUAKE3</TT -> -or the short form <TT -CLASS="LITERAL" ->D</TT ->, <TT -CLASS="LITERAL" ->2</TT ->, <TT -CLASS="LITERAL" ->H</TT ->, <TT -CLASS="LITERAL" ->X</TT ->, <TT -CLASS="LITERAL" ->S</TT ->, -<TT -CLASS="LITERAL" ->N</TT ->, <TT -CLASS="LITERAL" ->R</TT ->, <TT -CLASS="LITERAL" ->Q</TT ->, <TT -CLASS="LITERAL" ->W</TT ->, -<TT -CLASS="LITERAL" ->q</TT ->, or -<TT -CLASS="LITERAL" ->A</TT ->.</P -></DD -></DL -></DIV -></P -></DIV -></DIV -><DIV -CLASS="SECT2" -><HR><H3 -CLASS="SECT2" -><A -NAME="AEN415" ->2.3. Bugs and limitations</A -></H3 -><P ->To distinguish between old DOOM, HERETIC and HEXEN LMP files I use a simple -turn-byte-average algorithm. This fails, if the LMP file is too short or you -turn -always in the same direction and never go forward. Due to the header -change in HEXEN 1.1, it is nearly impossible to distinguish fast between -HERETIC and HEXEN 1.1 LMP files. LMPC looks then at the file date and treats -files -with an creation year >=1996 as HEXEN and all others as HERETIC files. This -is totally stupid but what else can I do?</P -><P ->LMPC supports client side recorded DM2 files, DM2 files recorded by the -console command <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->serverrecord</I -></SPAN -> (working from Quake II version 3.15) -and the RLA file used by the Quake II Relay project. -One single DM2 file can even contain parts from all these sides. -Quake II may only playback client side recordings.</P -><P ->If you produced a good recording file (at least some minutes and with -some action) and LMPC can not detect the game type, please send it to me. -Up to a corrected version make sure to use the <TT -CLASS="LITERAL" ->--game</TT -> option. -Some hints to solve the problem are welcome as well.</P -><P ->The <TT -CLASS="LITERAL" ->*number</TT -> repeat code in LS files really repeats this line -<TT -CLASS="LITERAL" ->number</TT -> times and does not care about multi player-game tics.</P -><P ->The MS-DOS binary of LMPC converts all file names to lower case to simplify -the name -handling. The <TT -CLASS="LITERAL" ->tolower</TT -> C-function doesn't converts any kind of -special characters like ö or è. This can cause some severe -data lost.</P -><P ->I use a redundancy in DEM files to detect Quake -cheaters. My simple check will -fail if the player gets hit and he gets a medikit at the very same time. -This can happen, if a player is standing over a medikit, when the hit -comes.</P -><P ->Some versions of Quake use a slightly different DEM format. LMPC/DEMcut -can read this ``new'' format but they write the old 1.06 format. -SQuake 1.07 for Linux behaves similar: it writes the old format but can play -back the old and the new format.</P -><P ->Keygrip 2 writes DM2 files with non-conform bit mask values in -<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->sound</I -></SPAN ->, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->spawnbaseline</I -></SPAN -> and <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->packetentities</I -></SPAN -> -messages. LMPC tries its best to decompile even such bad files too but -it may well be, that some other messages with bit masks have the same -problem.</P -><P ->Quake III Arena uses bit fields for all its game messages. A -server-to-client-message (or a block in a DM3 file) uses always full bytes. It -follows, that some bits in the last byte are not used by the game. LMPC set -these bits always to zero but Quake III Arena does not. Therefore it is -impossible for LMPC to reproduce a totally identical DM3 file. The file from -LMPC will behave the same as the original but some bits are zero.</P -><P ->The DM3 text parser is really a joke. I implemented it in about two hours. -It cannot cope with non-ordered entries in any block. Thus be sure not to -shuffle the entries! If this happens, the program will certainly crash or at -least not work as expected. If this is a problem, I can always extend the old -parser to parse DM3 texts too but this would take at least a week of hard -work.</P -></DIV -></DIV -><DIV -CLASS="SECT1" -><HR><H2 -CLASS="SECT1" -><A -NAME="DEMA" ->3. DEMA, The DEM Text File Analyser</A -></H2 -><P ->To analyse a DEM file convert it into a text file and use DEMA. DEMA is a -very simple Perl script, which may give you the time per level, the level name -and the average frame time (client update time).</P -><P ->This Perl script is total incomplete but it may be helpful yet. There are -no command line switches. You have to edit the script to change the summary.</P -><P ->I wrote DEMA in Perl, which is very good at pattern matching and extraction. -I will <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->never</I -></SPAN -> write a C version, so write one yourself or install Perl.</P -><P ->The main aim of DEMA is to show a sample framework for any kind of -DEM text analysing.</P -></DIV -><DIV -CLASS="SECT1" -><HR><H2 -CLASS="SECT1" -><A -NAME="DEMCUT" ->4. DEMcut, The DEM file cutter tool</A -></H2 -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN444" ->4.1. Introduction</A -></H3 -><P ->DEMcut is the DEM file cutter tool. I don't know anything about movie cutting -whatsoever but DEMcut should help you a lot cutting parts out of a DEM file, -putting different DEM files together or using some special effects like -slow-motion or backward moving of particular scenes. </P -><P ->DEMcut does all this and much more in a very easy way: -It gets the names of all DEM files to be processed from the command -line and reads from ``Standard In'' commands to manipulate them. -During the manipulation DEMcut writes one or more DEM files. </P -><P ->A good knowledge of DEM files is required to use DEMcut. DEMcut doesn't do -any checks to prevent you from creating non-working files.</P -></DIV -><DIV -CLASS="SECT2" -><HR><H3 -CLASS="SECT2" -><A -NAME="AEN449" ->4.2. Batch usage</A -></H3 -><P ->The easiest way to use DEMcut is with a cutting list batch file. This -file should contain all commands to be processed and can even have some -comments why you did something like you did it. Use any text editor for this -and start DEMcut with an input redirection. - -<PRE -CLASS="SCREEN" ->demcut demfile1.dem demfile2.dem < commands.txt</PRE -> - -DEMcut starts, reads in all DEM files from the command line and reads the -commands from the command file. All messages (every command produces a -message after completion) from DEMcut go to the screen or may be redirected -to a logging file as well. - -<PRE -CLASS="SCREEN" ->demcut demfile1.dem demfile2.dem < commands.txt > output.log</PRE -> </P -></DIV -><DIV -CLASS="SECT2" -><HR><H3 -CLASS="SECT2" -><A -NAME="AEN454" ->4.3. Interactive usage</A -></H3 -><P ->One of the best feature of DEMcut is the possibility to do an interactive -analysis of DEM files. The interactive mode is not compiled in on systems -without support for named pipes. It runs with Unix and Linux but not -on MS-DOS, Win32 etc.</P -><P ->I will describe now the Linux use. -First you have to create a named pipe in the directory where your Quake copy -reads its DEM files from. - -<PRE -CLASS="SCREEN" ->mkfifo fifo.dem</PRE -> - -Now start Quake (make sure to use <TT -CLASS="LITERAL" ->xquake</TT -> and and not -<TT -CLASS="LITERAL" ->xf86quake</TT ->) in a window -as usual and playdemo this named pipe. - -<PRE -CLASS="SCREEN" ->playdemo fifo</PRE -> - -Quake tries now to read a demo out of <TT -CLASS="LITERAL" ->fifo.dem</TT -> but there is nothing -to read in: it stops.</P -><P ->Now comes the appearance of DEMcut. Open a new window and start DEMcut with the -DEM file of your interest. - -<PRE -CLASS="SCREEN" ->demcut mydem.dem</PRE -> - -DEMcut reads in <TT -CLASS="LITERAL" ->mydem.dem</TT ->, does some preprocessing and waits for -input. The first thing to do is to direct all output to the named pipe. - -<PRE -CLASS="SCREEN" ->o fifo.dem</PRE -> - -Now create the start of a normal DEM file with CD track and level -initialisation. - -<PRE -CLASS="SCREEN" ->c -1\n -r 0 2</PRE -> - -It's unbelievable but Quake starts now the level and waits for further -actions. Now play around with different ranges, speed tests or backward -movements. Don't forget to put the disconnect frame at the end. Quake will -usually play immediately what you intend but the Quake client time stands still -after playing, so all the active sound patches will be repeated over and over -and the Quake doesn't redraw its window.</P -><P ->This is the point where the ``interactive mode'' comes in: -DEMcut changes its behaviour with the command - -<PRE -CLASS="SCREEN" ->i 1</PRE -> - -This repeats the last frame sent to Quake but with an ongoing time. -The interactive mode allows you to type in new commands during a range -command.</P -><P ->Now you can fast forward wind and rewind to find out all the frame numbers of -interest. In another window you can now edit your cutting list batch file -and run this file for cutting the final product.</P -></DIV -><DIV -CLASS="SECT2" -><HR><H3 -CLASS="SECT2" -><A -NAME="AEN471" ->4.4. Commands</A -></H3 -><P ->There are not too many commands but they are very powerful. -The command language is line oriented: one line means one command. Comments -start with `<TT -CLASS="LITERAL" ->#</TT ->', empty lines or lines with wrong commands will be -ignored as well. DEMcut prints a short response after finishing a command -to <TT -CLASS="LITERAL" ->stdout</TT ->.</P -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN476" ->4.4.1. Help</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->h</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->DEMcut prints a <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->very</I -></SPAN -> short online help. If `<TT -CLASS="LITERAL" ->i</TT ->' -(interactive mode) isn't listed, your operating system doesn't support named -pipes and the interactive mode is left out.</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN491" ->4.4.2. Output file</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->o filename</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Writes further output to this file. The old output file (if there was one) -will be closed. If the output file can't be written (permission denied), -DEMcut bombs back to the OS shell without any warning. I may do a check in -the future.</P -></DD -><DT ->Query syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->o</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Prints the current output file name.</P -></DD -><DT ->Default value:</DT -><DD -><P -><TT -CLASS="LITERAL" ->demcut.dem</TT -></P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN518" ->4.4.3. DEM file</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->d filename</TT -></P -></DD -><DT ->Description</DT -><DD -><P ->Selects this DEM file as source.</P -></DD -><DT ->Query syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->d</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Prints the current input DEM file name.</P -></DD -><DT ->Value range:</DT -><DD -><P ->Any DEM file name. DEMcut generates an error, if the file is not a good DEM -file.</P -></DD -><DT ->Default value:</DT -><DD -><P ->First DEM file from the command line. If there was no valid DEM file on the -command line the d query command generates an error.</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN548" ->4.4.4. Speed</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->s speed</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Speeds up all further output by this factor. <TT -CLASS="LITERAL" ->speed</TT ->>1 increases -the play-back speed, <TT -CLASS="LITERAL" ->speed</TT -><1 slows the play-back down. </P -></DD -><DT ->Value range:</DT -><DD -><P -><TT -CLASS="LITERAL" ->speed</TT -> may be any positive float value.</P -></DD -><DT ->Query syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->s</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Prints the current speed.</P -></DD -><DT ->Default value:</DT -><DD -><P ->1.0</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN581" ->4.4.5. Time</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->t time</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Sets the current time. </P -></DD -><DT ->Value range:</DT -><DD -><P -><TT -CLASS="LITERAL" ->time</TT -> may be any positive float value.</P -></DD -><DT ->Query syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->t</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Prints the current time.</P -></DD -><DT ->Default value:</DT -><DD -><P ->0.0</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN612" ->4.4.6. Loop</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->l loop-count</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Sets the loop count. Every further frame will be written <TT -CLASS="LITERAL" ->loop-count</TT -> -times to the output. The time goes forward as usual. </P -></DD -><DT ->Value range:</DT -><DD -><P -><TT -CLASS="LITERAL" ->loop-count</TT -> may be any positive integer value.</P -></DD -><DT ->Query syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->l</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Prints the current loop count.</P -></DD -><DT ->Default value:</DT -><DD -><P ->1</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN644" ->4.4.7. CD track</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->c track</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Write the CD track string to the current output. If the CD track -string doesn't end with whitespace (`\t', `\r', `\n', -`\f'), an `\n' will be silently appended. Don't forget this -command at the beginning of every DEM file (like it happened with -finesc5.dem of the Eschaton movie).</P -></DD -><DT ->Query syntax</DT -><DD -><P -><TT -CLASS="LITERAL" ->c</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Prints the current CD track string.</P -></DD -><DT ->Default value:</DT -><DD -><P ->-1\n</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN670" ->4.4.8. Frame</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->f frame-number</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Writes the selected frame to the output. This frame gets the current time. -The time will be increased afterwards by the frame duration divided by the -current speed. The whole process will be repeated as much as the current loop -count states. </P -><P ->The frame command stops in interactive mode a running range command.</P -></DD -><DT ->Value range:</DT -><DD -><P -><TT -CLASS="LITERAL" ->frame-number</TT -> can be any integer number between 0 -and the maximum frame number in the currently selected DEM input file.</P -></DD -><DT ->Query syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->f</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Prints the current frame number.</P -></DD -><DT ->Default value:</DT -><DD -><P ->0</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN702" ->4.4.9. Range</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->r range-start range-end</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Writes the selected range of frames to the output. Every frame gets the current -time. The time will be increased after each frame by the frame duration -divided by the current speed. Every frame will be repeated as much as the -current loop count states. In interactive mode you can use any commands -during a running range command (i.e. speed change). The range command can be -stopped in interactive mode by a new range command or a frame command.</P -></DD -><DT ->Value Range:</DT -><DD -><P -><TT -CLASS="LITERAL" ->range-start</TT -> and <TT -CLASS="LITERAL" ->range-end</TT -> may -be any integer number between 0 and the maximum frame number in the currently -selected DEM input file. <TT -CLASS="LITERAL" ->range-end</TT -> may even be smaller than -<TT -CLASS="LITERAL" ->range-start</TT ->. If they are equal the result is the same as with the -frame command.</P -></DD -><DT ->Query syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->r</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Prints the current range.</P -></DD -><DT ->Default value:</DT -><DD -><P ->0, last frame number of the first DEM file from the command line.</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="DEMCUTM" ->4.4.10. Multi-player preparing</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->m multi-start multi-end</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Grabs out of the defined frame range all <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->updatename</I -></SPAN -> and -<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->updatecolors</I -></SPAN -> -messages and writes all these messages together with the camera angles of the -last written frame to the output. It doesn't write anything if there -was no <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->updatename</I -></SPAN -> or <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->updatecolors</I -></SPAN -> message in the defined -frame range.</P -><P ->Everyone, who ever tried to concatenate different multi-player DEM files -knows the problem: The ``actors'' log in to the server in a different -order and so they get every time different player numbers. If one tries to -assemble all these files together one will end up with the wrong colour scheme -because all players stick to the colour, number and name from the very first -recording. The only solution is to insert the right name and colour definition -of each part in the final product. And this does the ``<TT -CLASS="LITERAL" ->m</TT ->'' command.</P -></DD -><DT ->Value Range:</DT -><DD -><P -><TT -CLASS="LITERAL" ->multi-start</TT -> and <TT -CLASS="LITERAL" ->multi-end</TT -> may -be any integer number between 0 and the maximum frame number in the currently -selected DEM input file. <TT -CLASS="LITERAL" ->multi-end</TT -> may even be smaller than -<TT -CLASS="LITERAL" ->multi-start</TT ->. </P -></DD -><DT ->Query syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->m</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Prints the current multi-player range.</P -></DD -><DT ->Default value:</DT -><DD -><P ->0, last frame number of the first DEM file from the command line.</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN776" ->4.4.11. Interactive mode</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->i inter</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Toggles the interactive mode. The frame and the range command will be affected -by the interactive mode. This command is not implemented on all systems. -Use the help command (`h') to find it out.</P -><P ->DEMcut continues to write (under certain conditions) the last written frame -with an ongoing time. -This feature is useful for an interactive use only (as the command name -suggests). DEMcut remembers the (real) time, when the last frame written to -Quake is -finished. If up to this time came no new command (this is the normal case in -interactive use) and the interactive mode is on, DEMcut writes the last frame -again. -But the time stamp of this frame goes on and on. So Quake gets always new -frames and doesn't stop. This is extremely important for users with many -overlapping windows (like me): Quake refreshes its window in an normal working -state only. It is very interesting to see what happens in the Quake window, -if it gets always the same frame but the time goes on. This shows us the -different sources of movement: particles (blood traces) are totally moved by -the client (they continue to move ), gibs are frozen in the air (they are -real entities) and the weapon moves up and down as usual (client driven). -DEMcut does not allow to repeat frames which change the <TT -CLASS="LITERAL" ->signon</TT -> number -(frame 0, 1 or 2 of a normal DEM file). Neither does it repeat the -<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->disconnect</I -></SPAN -> frame. </P -><P ->The range command may be interrupted by other commands. You need this for -looking at the current frame number (frame command without new frame number), -for changing the current playback-speed etc. A new frame or range output -command stops the running range command. </P -></DD -><DT ->Value Range:</DT -><DD -><P ->0 (interactive mode off) or 1 (interactive mode on).</P -></DD -><DT ->Query syntax</DT -><DD -><P -><TT -CLASS="LITERAL" ->i</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Prints the current interactive mode.</P -></DD -><DT ->Default value:</DT -><DD -><P ->0</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN810" ->4.4.12. Quit</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->q</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->Closes the output file and quits DEMcut.</P -></DD -></DL -></DIV -></P -></DIV -></DIV -><DIV -CLASS="SECT2" -><HR><H3 -CLASS="SECT2" -><A -NAME="AEN823" ->4.5. Example</A -></H3 -><P ->A very easy task is to create a DEM file, which shows with double speed the -reversed actions of the well-known demo ``Ranger Gone Bad ][: -The Assault'' (created by United Rangers Films).</P -><P ->To do this start DEMcut with - -<PRE -CLASS="SCREEN" ->demcut rgb2.dem</PRE -> - -and type in (or much simpler use a text file and redirection)</P -><P -><TT -CLASS="LITERAL" -># this is a comment, I love comments - -# select the output - -o rgb2rev.dem - -# select the input (not really necessary) - -d rgb2.dem - -# speed things up - -s 2 - -# write the CD track - -c -1\n - -# write the starting frames (level init is in 0,1 and 2) - -r 0 2 - -# write all frames in reversed order (actions are in 3..7330) - -r 7330 3 - -# write the disconnect frame (is the last one) - -f 7331 - -# quit - -q</TT -></P -><P ->This creates the new DEM file <TT -CLASS="LITERAL" ->rgb2rev.dem</TT -> with the desired content.</P -></DIV -><DIV -CLASS="SECT2" -><HR><H3 -CLASS="SECT2" -><A -NAME="AEN832" ->4.6. Problems, ideas and everything</A -></H3 -><P ->The current implementation of DEMcut is full of deficiencies but anyway, it -works. - -<P -></P -><UL -><LI -><P ->The synchronisation between DEM output and the ``real'' time in the -interactive mode is made using polling technique. It should be -<TT -CLASS="LITERAL" ->alarm(2)</TT -> controlled.</P -></LI -><LI -><P ->I'm thinking about the possibility to incorporate the fake Quake -server of DBS in DEMcut to remove the FIFO dependency. -Interactive work could then mean: fiddling at this server and -a Quake client of any architecture serves as a monitoring screen (after -connect to this server at the same or any other machine).</P -></LI -></UL -> </P -></DIV -></DIV -><DIV -CLASS="SECT1" -><HR><H2 -CLASS="SECT1" -><A -NAME="AEN841" ->5. DBS, The Demo Broadcasting Server</A -></H2 -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN843" ->5.1. Introduction</A -></H3 -><P ->DBS is a fake Quake server, which shows every connected client a DEM file. -This server is absolute alpha code. -It prints a hell of debug messages and doesn't know the full Quake -network protocol. I think the name is crap and I will change it. -Please send me ideas.</P -><P ->The source of DBS relies on some low-level Unix network routines. -I may get it to work in Win32 some day with the Cygwin API but don't expect -a plain Win32 version.</P -></DIV -><DIV -CLASS="SECT2" -><HR><H3 -CLASS="SECT2" -><A -NAME="AEN847" ->5.2. Command line parameters</A -></H3 -><P ->DBS is a command line oriented program. It uses the <TT -CLASS="LITERAL" ->getopt_long</TT -> -library for the command line parsing. DBS doesn't stop for itself. Use -<TT -CLASS="LITERAL" ->Control+C</TT -> to stop it.</P -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN852" ->5.2.1. Syntax description</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->dbs [--help|-h]</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->If you start DBS without any command line parameters or the help -parameters you receive the following syntax message: - -<PRE -CLASS="SCREEN" ->Demo Broadcasting Server -DBS (c) U. Girlich, 1997-98, Release 3.4.1 3/4/2006 (alpha test release) -dbs [option ...] demfile --h, --help display this help and exit. --v, --version output version information and exit. --p, --port defines an UDP port for the server. --m, --max-player defines the max. number of players.</PRE -> </P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN866" ->5.2.2. Version</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->dbs (--version|-v)</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->DBS prints a version message and quits.</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN879" ->5.2.3. Port</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->dbs (--port|-p) PORT ...</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->DBS uses by default the UDP port 26000 for the communication. -This value can be overwritten with this option.</P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN892" ->5.2.4. Maximum number of players</A -></H4 -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Syntax:</DT -><DD -><P -><TT -CLASS="LITERAL" ->dbs (--max-players|-m) MAX_PLAYERS ...</TT -></P -></DD -><DT ->Description:</DT -><DD -><P ->DBS allows by default 16 players to connect and view the DEM file. -This value can be overwritten with this option. The internal limit -for the number of players is 255 because the Quake Network protocol -reserves only an <TT -CLASS="LITERAL" ->unsigned char</TT -> for the number of players.</P -></DD -></DL -></DIV -></P -></DIV -></DIV -><DIV -CLASS="SECT2" -><HR><H3 -CLASS="SECT2" -><A -NAME="AEN906" ->5.3. What DBS does</A -></H3 -><P ->Nowadays are so many fake clients out there but not a single fake server. -A proxy is not a real server because it is a client for another server. -So I decided to analyse the network protocol, learnt something about -UDP programming and wrote my own server. I hope to include some parts of -this server into DEMcut, a feature which lacks some GUI DEM file editors up to -now.</P -><P ->DBS mimics the behaviour of a normal Quake server. This means you can -check the server with your favourite spy tool. The next step is to log in. -This works as usual (you get your private UDP port and so on) but DBS ignores -all client movement packets and sends to the client only the converted DEM -packets of a prepared DEM file.</P -><P ->A small problem are the <TT -CLASS="LITERAL" ->camera</TT -> messages in the DEM packets. -They come into the DEM file at the client side and not from -the server over the network. Therefore I included in every packet an -additional <TT -CLASS="LITERAL" ->setangle</TT -> message with the current camera angles.</P -><P ->This means, that you can't get the original DEM file by client (or -proxy) recording.</P -><P ->I hope to stabilise the server much more and think of a selection menu -at the beginning where a client may select the DEM file (``channel'') of -interest. I call it DoD (Demo on Demand).</P -></DIV -></DIV -><DIV -CLASS="SECT1" -><HR><H2 -CLASS="SECT1" -><A -NAME="DM2CAT" ->6. DM2cat, The DM2 file concatenator</A -></H2 -><P ->DM2cat is a simple Perl script to concat multiple binary DM2 files -together to a single multi-level DM2 file.</P -><P ->It does this by simpy removing the last 4 bytes (the <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->endblock</I -></SPAN ->) -from each DM2 file.</P -><P ->The main aim of DM2cat is to show a sample framework for any kind of -binary DM2 file manipulation.</P -></DIV -><DIV -CLASS="SECT1" -><HR><H2 -CLASS="SECT1" -><A -NAME="LMPSOURCE" ->7. LS format</A -></H2 -><P ->This chapter describes the ASCII text based source of a LMP or DMO file. -I created this language for myself. This means neither id Software nor -3D Realms use this for game development or the like. It is simply a way -to show what is in these miraculous recording files.</P -><DIV -CLASS="SECT2" -><HR><H3 -CLASS="SECT2" -><A -NAME="AEN924" ->7.1. Introduction</A -></H3 -><P ->The LMP Source format (LS) is a (ASCII text based) readable description of -the contents of a (binary) LMP or DMO file.</P -><P ->LMPC produces (with <TT -CLASS="LITERAL" ->--to-txt</TT ->) a well formatted LS file. So -you can learn by example. -I hope, that the text parser in LMPC (with <TT -CLASS="LITERAL" ->--to-bin</TT ->) can -parse most LMP source. It can't parse DMO source files. - -<P -></P -><UL -><LI -><P ->The LS language is a line oriented language.</P -></LI -><LI -><P ->Empty lines are ignored.</P -></LI -><LI -><P ->The keywords aren't case sensitive.</P -></LI -><LI -><P ->The characters between <TT -CLASS="LITERAL" ->#</TT -> and ``new line'' will be ignored.</P -></LI -><LI -><P ->``new line'' can be 0x0A or 0x0D0A.</P -></LI -></UL -> </P -><P ->At the very beginning of a LS file (produced by <TT -CLASS="LITERAL" ->lmpc --to-txt</TT ->) -there are some comment lines with derived information: -<P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->LMP</DT -><DD -><P -> <PRE -CLASS="SCREEN" ->DOOM (][) LMP file: filename of the LMP file -Number of players: derived from the number of used colours -Total play time: derived from the number of game tics -Number of game tics: derived from the file length</PRE -> </P -></DD -><DT ->DMO</DT -><DD -><P -> <PRE -CLASS="SCREEN" ->Duke Nukem 3D DMO file: filename of the DMO file -Total play time: derived from the number of game tics -Number of game tics: taken from the header, it stays better in a comment</PRE -> </P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT2" -><HR><H3 -CLASS="SECT2" -><A -NAME="AEN955" ->7.2. Header Area</A -></H3 -><P ->The Header Area starts with the keyword <TT -CLASS="LITERAL" ->HeaderStart</TT -> and ends with -the keyword <TT -CLASS="LITERAL" ->HeaderEnd</TT ->.</P -><P ->Between <TT -CLASS="LITERAL" ->HeaderStart</TT -> and <TT -CLASS="LITERAL" ->HeaderEnd</TT -> there are lines -with general information about the LMP or DMO file: -<P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Game:</DT -><DD -><P ->game type (DOOM, DOOM ][, HERETIC, HEXEN, STRIFE, Duke Nukem 3D, -Redneck Rampage)</P -></DD -><DT ->Version:</DT -><DD -><P ->version number or version byte (new DOOM/DOOM ][, STRIFE) -or 0 (old DOOM/HERETIC/HEXEN), the real version for Duke Nukem 3D and Redneck -Rampage</P -></DD -><DT ->Skill:</DT -><DD -><P ->player skill (LMP: 1-5, DMO: 1-4)</P -></DD -><DT ->Episode:</DT -><DD -><P ->episode (DOOM/HERETIC/Duke Nukem 3D: 1-4, DOOM ][/HEXEN: 1, -not in STRIFE), Redneck Rampage: 1 (I don't know it better yet, should be 1-4)</P -></DD -><DT ->Map:</DT -><DD -><P ->starting map (DOOM/HERETIC/Duke Nukem 3D: 1-9, DOOM ][: 1-32, -HEXEN 1-40, STRIFE: 32-??), Redneck Rampage: 1-11 </P -></DD -></DL -></DIV -> -In multi-player LMP files comes now a table with the colours (0-3) -of the players (0-3) (0-7 in STRIFE and HEXEN 1.1) - -<PRE -CLASS="SCREEN" ->Player0: Colour of player 0 -Player1: Colour of Player 1</PRE -> - -etc. -<P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Player:</DT -><DD -><P ->Number of players (does exist in DMO source only)</P -></DD -></DL -></DIV -></P -><P ->The following lines are special for new DOOM, DOOM ][ and STRIFE LMP -files. -<P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->MultiRule:</DT -><DD -><P ->Multi-Player Playing Rule (Cooperative, DeathMatch or Altdeath)</P -></DD -><DT ->Respawn:</DT -><DD -><P ->number (This line appears only if the LMP was recorded -with <TT -CLASS="LITERAL" ->-respawn</TT ->. The number is the number of the -command line parameter <TT -CLASS="LITERAL" ->-respawn</TT ->.)</P -></DD -><DT ->Fast:</DT -><DD -><P ->number (This line appears only if the LMP was recorded -with <TT -CLASS="LITERAL" ->-fast</TT ->. The number is the number of the -command line parameter <TT -CLASS="LITERAL" ->-fast</TT ->.)</P -></DD -><DT ->NoMonsters:</DT -><DD -><P ->number (This line appears only if the LMP was recorded -with <TT -CLASS="LITERAL" ->-nomonsters</TT ->. The number is the number of the -command line parameter <TT -CLASS="LITERAL" ->-nomonsters</TT ->.)</P -></DD -><DT ->ViewOfPlayer:</DT -><DD -><P ->colour (The LMP is recorded from the view of the player -with this colour, (0<=colour<=3))</P -></DD -></DL -></DIV -> -The following lines are special for new Duke Nukem 3D and Redneck Rampage DMO -files. -<P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->MultiRule:</DT -><DD -><P ->Multi-Player Playing Rule (DukeMatch (RedneckMatch) (with spawn), Coop, -Dukematch (Redneckmatch) (without spawn))</P -></DD -><DT ->Respawn Monsters:</DT -><DD -><P ->number (This line appears only if the DMO file was recorded -with <TT -CLASS="LITERAL" ->/t1</TT ->.) </P -></DD -><DT ->Respawn Items:</DT -><DD -><P ->number (This line appears only if the DMO file was recorded -with <TT -CLASS="LITERAL" ->/t2</TT ->.) </P -></DD -><DT ->Respawn Inventory:</DT -><DD -><P ->number (This line appears only if the DMO file was recorded -with <TT -CLASS="LITERAL" ->/t3</TT ->.) </P -></DD -><DT ->NoMonsters:</DT -><DD -><P ->number (This line appears only if the DMO file was recorded -with <TT -CLASS="LITERAL" ->/m</TT ->.)</P -></DD -></DL -></DIV -> -The following lines are special for Redneck Rampage DMO files. -<P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->FakePlayerAI:</DT -><DD -><P ->number (This line appears only if the DMO was recorded -with <TT -CLASS="LITERAL" ->/a</TT ->.) </P -></DD -><DT ->Name:</DT -><DD -><P ->"string" (The standard name is "LEONARD" but it can be changed with the -<TT -CLASS="LITERAL" ->-name</TT -> option.)</P -></DD -></DL -></DIV -></P -><P ->Sometimes <TT -CLASS="LITERAL" ->lmpc --to-txt</TT -> can't distinguish between new -DOOM and DOOM ][ LMP files: -In the Game line appears ``DOOM or DOOM ][''.</P -><P ->The version byte can easily be derived from the game version. - -<DIV -CLASS="TABLE" -><A -NAME="AEN1057" -></A -><P -><B ->Table 1. LMP version bytes</B -></P -><TABLE -BORDER="1" -CLASS="CALSTABLE" -><COL -WIDTH="1*" -ALIGN="RIGHT"><COL -WIDTH="1*" -ALIGN="LEFT"><TBODY -><TR -><TD ->0 : </TD -><TD ->DOOM 1.1, 1.2</TD -></TR -><TR -><TD ->101: </TD -><TD ->STRIFE 1.0, 1.1</TD -></TR -><TR -><TD ->104: </TD -><TD ->DOOM 1.4beta</TD -></TR -><TR -><TD ->105: </TD -><TD ->DOOM 1.5beta</TD -></TR -><TR -><TD ->106: </TD -><TD ->DOOM 1.6beta, DOOM 1.666, DOOM ][ 1.666</TD -></TR -><TR -><TD ->107: </TD -><TD ->DOOM ][ 1.7, DOOM ][ 1.7a</TD -></TR -><TR -><TD ->108: </TD -><TD ->DOOM 1.8, DOOM ][ 1.8</TD -></TR -><TR -><TD ->109: </TD -><TD ->(Ultimate) DOOM 1.9, DOOM ][ 1.9</TD -></TR -><TR -><TD ->110: </TD -><TD ->published source code</TD -></TR -></TBODY -></TABLE -></DIV -> </P -><P ->In HEXEN LMP files appears the player class (0: fighter, 1: cleric, 2: mage) -too: - -<PRE -CLASS="SCREEN" ->Class: single player class (0-2)</PRE -> - -or in multi-player LMP files: - -<PRE -CLASS="SCREEN" ->Class0: player 0 class -Class1: player 1 class</PRE -> - -etc.</P -></DIV -><DIV -CLASS="SECT2" -><HR><H3 -CLASS="SECT2" -><A -NAME="AEN1093" ->7.3. Data Area</A -></H3 -><P ->The Data Area starts with the keyword <TT -CLASS="LITERAL" ->DataStart</TT -> and ends with -the keyword <TT -CLASS="LITERAL" ->DataEnd</TT ->.</P -><P ->All actions of one game tic have to be in one text line. In a multi-player -LMP there is one line for each player per game tic. </P -><P ->LMPC may append (with the <TT -CLASS="LITERAL" ->--mark-step</TT -> option) a comment with the -game tic and the time passed until this game tic at the line of the first -player.</P -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN1101" ->7.3.1. Movements</A -></H4 -><P ->A movement consists of a 2 letter word and an amount <TT -CLASS="LITERAL" ->n</TT ->. - -<DIV -CLASS="TABLE" -><A -NAME="AEN1105" -></A -><P -><B ->Table 2. Movement commands</B -></P -><TABLE -BORDER="1" -CLASS="CALSTABLE" -><COL -WIDTH="1*" -ALIGN="LEFT"><COL -WIDTH="1*" -ALIGN="LEFT"><COL -WIDTH="1*" -ALIGN="LEFT"><COL -WIDTH="1*" -ALIGN="LEFT"><TBODY -><TR -><TD ->code </TD -><TD ->action </TD -><TD -> game </TD -><TD -> range </TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->GFn</TT -> </TD -><TD ->Go Forward <TT -CLASS="LITERAL" ->n</TT -> </TD -><TD ->LMP </TD -><TD ->1<=<TT -CLASS="LITERAL" ->n</TT -><=127</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->GBn</TT -> </TD -><TD ->Go Backward <TT -CLASS="LITERAL" ->n</TT -> </TD -><TD ->LMP </TD -><TD ->1<=<TT -CLASS="LITERAL" ->n</TT -><=127</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->SLn</TT -> </TD -><TD ->Strafe Left <TT -CLASS="LITERAL" ->n</TT -> </TD -><TD ->LMP </TD -><TD ->1<=<TT -CLASS="LITERAL" ->n</TT -><=127</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->SRn</TT -> </TD -><TD ->Strafe Right <TT -CLASS="LITERAL" ->n</TT -> </TD -><TD ->LMP </TD -><TD ->1<=<TT -CLASS="LITERAL" ->n</TT -><=127</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->GXn</TT -> </TD -><TD ->Go X-direction <TT -CLASS="LITERAL" ->n</TT -> </TD -><TD ->DMO </TD -><TD ->-32768<=<TT -CLASS="LITERAL" ->n</TT -><=32767</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->GYn</TT -> </TD -><TD ->Go Y-direction <TT -CLASS="LITERAL" ->n</TT -> </TD -><TD ->DMO </TD -><TD ->-32768<=<TT -CLASS="LITERAL" ->n</TT -><=32767</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->TLn</TT -> </TD -><TD ->Turn Left <TT -CLASS="LITERAL" ->n</TT -> </TD -><TD ->LMP </TD -><TD ->1<=<TT -CLASS="LITERAL" ->n</TT -><=127</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->TLn</TT -> </TD -><TD ->Turn Left <TT -CLASS="LITERAL" ->n</TT -> </TD -><TD ->DMO </TD -><TD ->1<=<TT -CLASS="LITERAL" ->n</TT -><=32767</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->TRn</TT -> </TD -><TD ->Turn Right <TT -CLASS="LITERAL" ->n</TT -> </TD -><TD ->LMP </TD -><TD ->1<=<TT -CLASS="LITERAL" ->n</TT -><=127</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->TRn</TT -> </TD -><TD ->Turn Right <TT -CLASS="LITERAL" ->n</TT -> </TD -><TD ->DMO </TD -><TD ->1<=<TT -CLASS="LITERAL" ->n</TT -><=32767</TD -></TR -></TBODY -></TABLE -></DIV -> </P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN1198" ->7.3.2. Use (LMP only)</A -></H4 -><P -> <DIV -CLASS="TABLE" -><A -NAME="AEN1201" -></A -><P -><B ->Table 3. Use commands</B -></P -><TABLE -BORDER="1" -CLASS="CALSTABLE" -><COL -WIDTH="1*" -ALIGN="LEFT"><COL -WIDTH="1*" -ALIGN="LEFT"><TBODY -><TR -><TD -><TT -CLASS="LITERAL" ->UT</TT -> </TD -><TD ->Use Thing (press button, open door etc.)</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->NWn</TT -> </TD -><TD ->New Weapon (1<=<TT -CLASS="LITERAL" ->n</TT -><=8) (change the weapon manually)</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->FW</TT -> </TD -><TD ->Fire Weapon</TD -></TR -><TR -><TD -> </TD -><TD -> </TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->PS</TT -> </TD -><TD ->Pause Start</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->PE</TT -> </TD -><TD ->Pause End</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->SGn</TT -> </TD -><TD ->Save Game in slot n (0<=n<=7)</TD -></TR -></TBODY -></TABLE -></DIV -> </P -><P ->You can not combine <TT -CLASS="LITERAL" ->PS</TT ->, <TT -CLASS="LITERAL" ->PE</TT -> and <TT -CLASS="LITERAL" ->SG</TT -> with -other Use commands. But you can combine -the other Use commands (for instance <TT -CLASS="LITERAL" ->UT</TT -> and <TT -CLASS="LITERAL" ->FW</TT -> at the -same time).</P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN1241" ->7.3.3. Fly and Look (HERETIC and HEXEN only)</A -></H4 -><P ->A fly and look command consists of a 2 letter word and an amount -(1<=<TT -CLASS="LITERAL" ->n</TT -><=15) - -<DIV -CLASS="TABLE" -><A -NAME="AEN1245" -></A -><P -><B ->Table 4. Fly and Look commands</B -></P -><TABLE -BORDER="1" -CLASS="CALSTABLE" -><COL -WIDTH="1*" -ALIGN="LEFT"><COL -WIDTH="1*" -ALIGN="LEFT"><TBODY -><TR -><TD -><TT -CLASS="LITERAL" ->FUn</TT -> </TD -><TD ->Fly Up <TT -CLASS="LITERAL" ->n</TT -></TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->FDn</TT -> </TD -><TD ->Fly Down <TT -CLASS="LITERAL" ->n</TT -></TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->LUn</TT -> </TD -><TD ->Look Up <TT -CLASS="LITERAL" ->n</TT -></TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->LDn</TT -> </TD -><TD ->Look Down <TT -CLASS="LITERAL" ->n</TT -></TD -></TR -><TR -><TD -> </TD -><TD -> </TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->FC</TT -> </TD -><TD ->Fly Centre (landing, drop)</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->LC</TT -> </TD -><TD ->Look Centre (look forward)</TD -></TR -></TBODY -></TABLE -></DIV -> </P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN1282" ->7.3.4. Use Artifact (HERETIC and HEXEN only)</A -></H4 -><P ->The Use Artifact command consist of the code <TT -CLASS="LITERAL" ->AT</TT -> and a letter -(<TT -CLASS="LITERAL" ->a</TT ->..<TT -CLASS="LITERAL" ->j</TT ->) -equivalent to the <TT -CLASS="LITERAL" ->gimme</TT ->-cheat of HERETIC. In HEXEN such a cheat code -does not exist but the command remains the same:</P -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->HERETIC:</DT -><DD -><P -> <DIV -CLASS="TABLE" -><A -NAME="AEN1295" -></A -><P -><B ->Table 5. HERETIC artifacts</B -></P -><TABLE -BORDER="1" -CLASS="CALSTABLE" -><COL -WIDTH="1*" -ALIGN="LEFT"><COL -WIDTH="1*" -ALIGN="LEFT"><TBODY -><TR -><TD -><TT -CLASS="LITERAL" ->ATa</TT -> </TD -><TD ->ring of invincibility</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATb</TT -> </TD -><TD ->shadowsphere</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATc</TT -> </TD -><TD ->quartz flask</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATd</TT -> </TD -><TD ->chaos device</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATe</TT -> </TD -><TD ->tome of power</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATf</TT -> </TD -><TD ->torch</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATg</TT -> </TD -><TD ->time bomb of the ancients</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATh</TT -> </TD -><TD ->morph ovum</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATi</TT -> </TD -><TD ->wings of wrath</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATj</TT -> </TD -><TD ->mystic urn</TD -></TR -></TBODY -></TABLE -></DIV -> </P -></DD -><DT ->HEXEN:</DT -><DD -><P -> <DIV -CLASS="TABLE" -><A -NAME="AEN1345" -></A -><P -><B ->Table 6. HEXEN artifacts</B -></P -><TABLE -BORDER="1" -CLASS="CALSTABLE" -><COL -WIDTH="1*" -ALIGN="LEFT"><COL -WIDTH="1*" -ALIGN="LEFT"><TBODY -><TR -><TD -><TT -CLASS="LITERAL" ->ATa</TT -> </TD -><TD ->icon of the defender</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATb</TT -> </TD -><TD ->quartz flask</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATc</TT -> </TD -><TD ->mystic urn</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATd</TT -> </TD -><TD ->clerical healing key</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATe</TT -> </TD -><TD ->dark servant</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATf</TT -> </TD -><TD ->torch</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATg</TT -> </TD -><TD ->porkalator</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATh</TT -> </TD -><TD ->wings of wrath</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATi</TT -> </TD -><TD ->chaos device</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATj</TT -> </TD -><TD ->flechette</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATk</TT -> </TD -><TD ->banishment device</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATl</TT -> </TD -><TD ->boots of speed</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATm</TT -> </TD -><TD ->krater of might</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATn</TT -> </TD -><TD ->dragonskin bracers</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->ATo</TT -> </TD -><TD ->disc of repulsion</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->UA</TT -> </TD -><TD ->use all (panic button)</TD -></TR -></TBODY -></TABLE -></DIV -> </P -></DD -></DL -></DIV -></P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN1415" ->7.3.5. STRIFE Artifacts</A -></H4 -><P ->You can only the use STRIFE artifacts with the <TT -CLASS="LITERAL" ->IN</TT -> or <TT -CLASS="LITERAL" ->DR</TT -> -actions. </P -><P ->The Use Artifact command consist of the code <TT -CLASS="LITERAL" ->A</TT -> and an -artifact number. Up to now I know only 12 artifacts. - -<DIV -CLASS="TABLE" -><A -NAME="AEN1422" -></A -><P -><B ->Table 7. STRIFE artifacts</B -></P -><TABLE -BORDER="1" -CLASS="CALSTABLE" -><COL -WIDTH="1*" -ALIGN="LEFT"><COL -WIDTH="1*" -ALIGN="LEFT"><TBODY -><TR -><TD ->code </TD -><TD ->name</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->0x74</TT -> </TD -><TD ->toughness</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->0x75</TT -> </TD -><TD ->accuracy</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->0x76</TT -> </TD -><TD ->full health</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->0x7B</TT -> </TD -><TD ->teleportor beacon</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->0x7C</TT -> </TD -><TD ->metal armor</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->0x7D</TT -> </TD -><TD ->leather armor</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->0xA1</TT -> </TD -><TD ->med patch</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->0xA2</TT -> </TD -><TD ->medical kit</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->0xA3</TT -> </TD -><TD ->coin</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->0xA7</TT -> </TD -><TD ->shadow armor</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->0xA8</TT -> </TD -><TD ->environmental suit</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->0xB7</TT -> </TD -><TD ->offering chalice</TD -></TR -></TBODY -></TABLE -></DIV -> </P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN1479" ->7.3.6. Jump (HEXEN and STRIFE only)</A -></H4 -><P ->In HEXEN and STRIFE you can jump up. - -<DIV -CLASS="TABLE" -><A -NAME="AEN1482" -></A -><P -><B ->Table 8. Jump command</B -></P -><TABLE -BORDER="1" -CLASS="CALSTABLE" -><COL -WIDTH="1*" -ALIGN="LEFT"><COL -WIDTH="1*" -ALIGN="LEFT"><TBODY -><TR -><TD -><TT -CLASS="LITERAL" ->JU</TT -> </TD -><TD ->jump</TD -></TR -></TBODY -></TABLE -></DIV -> </P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN1492" ->7.3.7. STRIFE actions</A -></H4 -><P ->There are some more STRIFE actions. Remember: no talks are stored in the LMP -file. - -<DIV -CLASS="TABLE" -><A -NAME="AEN1495" -></A -><P -><B ->Table 9. STRIFE actions</B -></P -><TABLE -BORDER="1" -CLASS="CALSTABLE" -><COL -WIDTH="1*" -ALIGN="LEFT"><COL -WIDTH="1*" -ALIGN="LEFT"><TBODY -><TR -><TD -><TT -CLASS="LITERAL" ->LU</TT -> </TD -><TD ->Look Up</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->LD</TT -> </TD -><TD ->Look Down</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->RU</TT -> </TD -><TD ->Run </TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->IN</TT -> </TD -><TD ->Use Inventory</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->DR</TT -> </TD -><TD ->Drop Inventory</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->JU</TT -> </TD -><TD ->Jump Up</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->U6</TT -> </TD -><TD ->Unknown Action Number 6</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->HE</TT -> </TD -><TD ->Use Health</TD -></TR -></TBODY -></TABLE -></DIV -> </P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN1533" ->7.3.8. Use (DMO only)</A -></H4 -><P ->There are 28 actions in DMO files (and 4 bits for weapon change). -As far as it works I use the same codes for the same or similar thing as in -LMP sources. To describe the actions I use the terms for key definitions -in <TT -CLASS="LITERAL" ->DUKE3D.CFG</TT ->. - -<DIV -CLASS="TABLE" -><A -NAME="AEN1537" -></A -><P -><B ->Table 10. DMO actions</B -></P -><TABLE -BORDER="1" -CLASS="CALSTABLE" -><COL -WIDTH="1*" -ALIGN="LEFT"><COL -WIDTH="1*" -ALIGN="LEFT"><TBODY -><TR -><TD -><TT -CLASS="LITERAL" ->JU</TT -> </TD -><TD ->Jump</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->CR</TT -> </TD -><TD ->Crouch</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->FW</TT -> </TD -><TD ->Fire</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->AU</TT -> </TD -><TD ->Aim_Up</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->AD</TT -> </TD -><TD ->Aim_Down</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->RU</TT -> </TD -><TD ->Run</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->LU</TT -> </TD -><TD ->Look_Up</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->LD</TT -> </TD -><TD ->Look_Down</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->VI</TT -> </TD -><TD ->NightVision</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->MK</TT -> </TD -><TD ->MedKit</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->AR</TT -> </TD -><TD ->AutoRun</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->LC</TT -> </TD -><TD ->Center_View</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->HW</TT -> </TD -><TD ->Holster_Weapon</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->IL</TT -> </TD -><TD ->Inventory_Left</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->HD</TT -> </TD -><TD ->Holo_Duke</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->JP</TT -> </TD -><TD ->Jetpack</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->IR</TT -> </TD -><TD ->Inventory_Right</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->TA</TT -> </TD -><TD ->TurnAround</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->UT</TT -> </TD -><TD ->Open</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->IN</TT -> </TD -><TD ->Inventory</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->AC6</TT -> </TD -><TD ->??</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->AC7</TT -> </TD -><TD ->??</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->AC12</TT -> </TD -><TD ->??</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->PA</TT -> </TD -><TD ->Pause</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->AC22</TT -> </TD -><TD ->??</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->AC23</TT -> </TD -><TD ->??</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->AC26</TT -> </TD -><TD ->??</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->AC31</TT -> </TD -><TD ->??</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->NWn</TT -> </TD -><TD ->New Weapon (1<=<TT -CLASS="LITERAL" ->n</TT -><=10) (change the weapon manually)</TD -></TR -></TBODY -></TABLE -></DIV -> </P -></DIV -><DIV -CLASS="SECT3" -><HR><H4 -CLASS="SECT3" -><A -NAME="AEN1660" ->7.3.9. Special Codes</A -></H4 -><P -> <DIV -CLASS="TABLE" -><A -NAME="AEN1663" -></A -><P -><B ->Table 11. Special commands</B -></P -><TABLE -BORDER="1" -CLASS="CALSTABLE" -><COL -WIDTH="1*" -ALIGN="LEFT"><COL -WIDTH="1*" -ALIGN="LEFT"><TBODY -><TR -><TD -><TT -CLASS="LITERAL" ->WT</TT -> </TD -><TD ->Wait a Tic</TD -></TR -><TR -><TD -><TT -CLASS="LITERAL" ->*n</TT -> </TD -><TD ->Repeats the current line <TT -CLASS="LITERAL" ->n</TT -> times</TD -></TR -></TBODY -></TABLE -></DIV -> </P -></DIV -></DIV -></DIV -><DIV -CLASS="SECT1" -><HR><H2 -CLASS="SECT1" -><A -NAME="DEMSOURCE" ->8. DEM source format</A -></H2 -><P ->The DEM format is very complicated. Therefore I don't include a documentation -of the text format here. Please look in the ``Unofficial DEM format -description''. -The current version is available at <A -HREF="http://www.planetquake.com/demospecs/dem" -TARGET="_top" ->http://www.planetquake.com/demospecs/dem</A ->.</P -><P ->You will understand my textual representation of the DEM format -by inspecting a sample file and reading a bit about the structure in the -mentioned document. </P -><P ->If someone is willing to write a documentation of my DEM text format please -inform me and your document will be included right here. For the die-hard -hacker: the lex file <TT -CLASS="LITERAL" ->udeml.l</TT -> and the yacc file <TT -CLASS="LITERAL" ->udemy.y</TT -> -contain the complete language grammar documentation.</P -></DIV -><DIV -CLASS="SECT1" -><HR><H2 -CLASS="SECT1" -><A -NAME="QWDSOURCE" ->9. QWD source format</A -></H2 -><P ->The QWD format is even harder to understand than the DEM format. -Please look in the ``Unofficial QWD format description''. -The current version is -<A -HREF="http://www.planetquake.com/demospecs/qwd" -TARGET="_top" ->http://www.planetquake.com/demospecs/qwd</A ->.</P -><P ->You will understand my textual representation of the QWD format -by inspecting a sample file and reading a bit about the structure in the -mentioned document.</P -><P ->If someone is willing to write a documentation of my QWD text format please -inform me and your document will be included right here. </P -></DIV -><DIV -CLASS="SECT1" -><HR><H2 -CLASS="SECT1" -><A -NAME="DM2SOURCE" ->10. DM2 source format</A -></H2 -><P ->The DM2 format is a nice and compact file format. -Please look in the ``Unofficial DM2 format description''. -The current version is -<A -HREF="http://www.planetquake.com/demospecs/dm2" -TARGET="_top" ->http://www.planetquake.com/demospecs/dm2</A ->.</P -><P ->You will understand my textual representation of the DM2 format -by inspecting a sample file and reading a bit about the structure in the -mentioned document.</P -><P ->If someone is willing to write a documentation of my DM2 text format please -inform me and your document will be included right here. </P -></DIV -><DIV -CLASS="SECT1" -><HR><H2 -CLASS="SECT1" -><A -NAME="DM3SOURCE" ->11. DM3 source format</A -></H2 -><P ->The DM3 format is very sophisticated file format to save every thinkable -bit. It was developed for internet multiplayer action at a time, when highspeed -internet access was rare. There is (not yet) an ``Unofficial DM3 format -description'' but you can easily learn it by looking through the Quake III Arena source code or the LMPC source code.</P -><P ->You will understand my textual representation of the DM3 format -by inspecting a sample file</P -><P ->If someone is willing to write a documentation of my DM3 text format please -inform me and your document will be included right here. </P -></DIV -><DIV -CLASS="SECT1" -><HR><H2 -CLASS="SECT1" -><A -NAME="AEN1703" ->12. Some links and further information</A -></H2 -><P ->For further information on LMP files look in the ``Unofficial LMP format -description''. The current version is -<A -HREF="http://www.planetquake.com/demospecs/lmp" -TARGET="_top" ->http://www.planetquake.com/demospecs/lmp</A ->.</P -><P ->For a huge collection of some great LMP files, look at the -COMPET-N home page -<A -HREF="http://www.hszk.bme.hu/~ha211/compet-n/" -TARGET="_top" ->http://www.hszk.bme.hu/~ha211/compet-n/</A ->.</P -><P ->For further information on DMO files look in the ``Unofficial DMO format -description''. The current version is -<A -HREF="http://www.planetquake.com/demospecs/dmo" -TARGET="_top" ->http://www.planetquake.com/demospecs/dmo</A ->.</P -><P ->For a small collection of DMO files, look at the -<A -HREF="http://www.acs.oakland.edu/~klmatero/duke3d/demos.html" -TARGET="_top" ->http://www.acs.oakland.edu/~klmatero/duke3d/demos.html</A ->.</P -><P ->For further information on DEM files look in the ``Unofficial DEM format -description''. The current version is -<A -HREF="http://www.planetquake.com/demospecs/dem" -TARGET="_top" ->http://www.planetquake.com/demospecs/dem</A ->.</P -><P ->All info you'll ever need on DEM files can be found in the published -Quake source at -<A -HREF="ftp://ftp.idsoftware.com/idstuff/source/q1source.zip" -TARGET="_top" ->ftp://ftp.idsoftware.com/idstuff/source/q1source.zip</A -></P -><P ->A simple DEM file editing guide can be found at -<A -HREF="http://www.Z-Studios.com/archives/filmat11.html" -TARGET="_top" ->http://www.Z-Studios.com/archives/filmat11.html</A ->.</P -><P ->For further information on QWD files look in the ``Unofficial QWD format -description''. The current version is -<A -HREF="http://www.planetquake.com/demospecs/qwd" -TARGET="_top" ->http://www.planetquake.com/demospecs/qwd</A ->.</P -><P ->All info you'll ever need on QWD files can be found in the published -QuakeWorld source at -<A -HREF="ftp://ftp.idsoftware.com/idstuff/source/q1source.zip" -TARGET="_top" ->ftp://ftp.idsoftware.com/idstuff/source/q1source.zip</A -></P -><P ->For further information on DM2 files look in the ``Unofficial DM2 format -description''. The current version is -<A -HREF="http://www.planetquake.com/demospecs/dm2" -TARGET="_top" ->http://www.planetquake.com/demospecs/dm2</A ->.</P -><P ->DM2 file editing tutorials can be found at -<A -HREF="http://www.Z-Studios.com/tutorials/dm2/tut_demo.html" -TARGET="_top" ->http://www.Z-Studios.com/tutorials/dm2/tut_demo.html</A ->.</P -><P ->For further information on Quake II Relay project look at -<A -HREF="http://www.planetquake.com/relay/" -TARGET="_top" ->http://www.planetquake.com/relay/</A ->.</P -></DIV -><DIV -CLASS="SECT1" -><HR><H2 -CLASS="SECT1" -><A -NAME="AEN1729" ->13. History and future of LMPC</A -></H2 -><P ->LMPC started in the good old DOOM days as a very small Turbo Pascal 6.0 -program to show me what's in these LMP files. It is now a ``fat'' C -application and has way too many command-line switches. -DEMcut is not as widely used as LMPC but it started -the DEM editing hype. DBS (I really have to change this name) -gave the Keygrip authors -(<A -HREF="http://www.planetquake.com/keygrip" -TARGET="_top" ->http://www.planetquake.com/keygrip</A ->) the starting point for their -internal fake Quake server.</P -><P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->1.0 (8/30/1994) <TT -CLASS="LITERAL" ->lmpc10.zip</TT -> (8/31/1994 posted in -<A -HREF="news:alt.binaries.doom" -TARGET="_top" ->alt.binaries.doom</A ->, -<A -HREF="news:alt.games.doom" -TARGET="_top" ->alt.games.doom</A ->)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->General: first public version.</P -></LI -></UL -> </P -></DD -><DT ->1.01 (8/31/1994) <TT -CLASS="LITERAL" ->lmpc101.arj</TT -> (9/1/1994 posted in -<A -HREF="news:alt.binaries.doom" -TARGET="_top" ->alt.binaries.doom</A ->, -<A -HREF="news:alt.games.doom" -TARGET="_top" ->alt.games.doom</A ->)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->LMP: bug fixed in <TT -CLASS="LITERAL" ->WT</TT -> statistics.</P -></LI -><LI -><P ->Docu: LS description / LMPC program reference splitted in -LS.DOC / LMPC.DOC.</P -></LI -><LI -><P ->LMP: New heuristic algorithm to discover former version changes.</P -></LI -><LI -><P ->Docu: History added in LMPC.DOC.</P -></LI -><LI -><P ->General: -Terry (<A -HREF="mailto:terry@usis.com" -TARGET="_top" ->terry@usis.com</A ->) -wrote also a DOOM utility (I don't know it) -with the archive name <TT -CLASS="LITERAL" ->lmpc10.zip</TT ->. Therefore I changed to the ARJ -archive.</P -></LI -></UL -> </P -></DD -><DT ->2.0 (10/11/1994) <TT -CLASS="LITERAL" ->lmpc20.arj</TT -> (internal beta test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->LMP: the LMP compiler is ready after all!</P -></LI -></UL -> </P -></DD -><DT ->2.01 (10/12/1994) <TT -CLASS="LITERAL" ->lmpc201.arj</TT -> (internal beta test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->LMP: decompiler bug fixed (<TT -CLASS="LITERAL" ->UT</TT ->/<TT -CLASS="LITERAL" ->FW</TT -> and <TT -CLASS="LITERAL" ->NW</TT -> -in the same game tic).</P -></LI -><LI -><P ->LMP: compiler parser improved (token length test).</P -></LI -><LI -><P ->LMP: <TT -CLASS="LITERAL" ->NW8</TT -> (8 gives you the chain saw directly) added.</P -></LI -></UL -> </P -></DD -><DT ->2.1 (10/24/1994) <TT -CLASS="LITERAL" ->lmpc21.arj</TT -> (10/25/1994 posted in -<A -HREF="news:alt.binaries.doom" -TARGET="_top" ->alt.binaries.doom</A ->)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->General: after a error free beta test phase nothing changed, new public -version.</P -></LI -></UL -> </P -></DD -><DT ->2.20 ... 2.26 (never published)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->General: rewritten from scratch (Turbo Pascal 6.0 -> ANSI C).</P -></LI -></UL -> </P -></DD -><DT ->2.27 (2/25/1995) <TT -CLASS="LITERAL" ->lmpc-2.27.tar.gz</TT -> (internal beta test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->LMP: LS format improved (new HERETIC movements).</P -></LI -><LI -><P ->LMP: can handle DOOM ][ and HERETIC LMP files.</P -></LI -><LI -><P ->LMP: <TT -CLASS="LITERAL" ->GAME</TT ->-token in the LS Header.</P -></LI -><LI -><P ->LMP: version change expects now the real version byte.</P -></LI -><LI -><P ->LMP: 1.5 times faster (2.27/2.1, checked with a >300K LMP).</P -></LI -><LI -><P ->General: includes now an executable for MS-DOS and Linux.</P -></LI -></UL -> </P -></DD -><DT ->2.3 (4/29/1995) <TT -CLASS="LITERAL" ->lmpc-2.3.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc23.zip</TT -></DT -><DD -><P -> <P -></P -><UL -><LI -><P ->General: full source code included.</P -></LI -><LI -><P ->LMP: version change expects a real version string or the version byte.</P -></LI -><LI -><P ->General: zip and tar.gz release.</P -></LI -><LI -><P ->General: includes now go32.exe and stub.exe too.</P -></LI -></UL -> </P -></DD -><DT ->2.4 (8/7/1995) <TT -CLASS="LITERAL" ->lmpc-2.4.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc24.zip</TT -> -(public release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->General: MS-DOS binary cross compiled with go32crs.</P -></LI -><LI -><P ->Docu: documentation in HTML and plain text (created with Mosaic from the -HTML version).</P -></LI -><LI -><P ->LMP: Ultimate DOOM with 4th episode tested (nothing changed).</P -></LI -></UL -> </P -></DD -><DT ->2.5 (8/23/1995) <TT -CLASS="LITERAL" ->lmpc-2.5.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc25.zip</TT -> -(internal beta test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->General: command line parsing now with <TT -CLASS="LITERAL" ->getopt_long</TT -> and long -option names are allowed too.</P -></LI -><LI -><P ->General: to compile lmpc.exe (MS-DOS binary) I included the -getopt-package -from the GNU C library (my copy of djgpp doesn't include getopt).</P -></LI -><LI -><P ->General: <TT -CLASS="LITERAL" ->--info</TT -> can handle many files on the command line.</P -></LI -><LI -><P ->LMP: <TT -CLASS="LITERAL" ->--lmp-to-ls</TT -> can decompile a specific part of the LMP file -(the new <TT -CLASS="LITERAL" ->--tic</TT -> option).</P -></LI -><LI -><P ->LMP: the buggy version number string function repaired.</P -></LI -><LI -><P ->LMP: the new option <TT -CLASS="LITERAL" ->--game</TT -> to force the game type of the LMP -file.</P -></LI -></UL -> </P -></DD -><DT ->2.6 (8/26/1995) <TT -CLASS="LITERAL" ->lmpc-2.6.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc26.zip</TT -> -(internal beta test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->LMP: <TT -CLASS="LITERAL" ->--ls-to-lmp</TT -> converts now several LS files to a LMP file.</P -></LI -><LI -><P ->LMP: new option <TT -CLASS="LITERAL" ->--add-WT</TT -> to add <TT -CLASS="LITERAL" ->WT</TT -> at the end of a -LMP file. </P -></LI -></UL -> </P -></DD -><DT ->2.6.1 (8/28/1995) <TT -CLASS="LITERAL" ->lmpc-2.6.1.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc261.zip</TT -> -(internal beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->General: 3 parts of the version number.</P -></LI -><LI -><P ->LMP: <TT -CLASS="LITERAL" ->--gametic FROM(,|:)TO</TT ->: colon is allowed as a separator too.</P -></LI -><LI -><P ->LMP: <TT -CLASS="LITERAL" ->--ls-to-lmp</TT -> keeps track of <TT -CLASS="LITERAL" ->PS</TT -> and <TT -CLASS="LITERAL" ->PE</TT ->.</P -></LI -><LI -><P ->LMP: <TT -CLASS="LITERAL" ->--remove-pause</TT -> to remove the Pause game tics.</P -></LI -></UL -> </P -></DD -><DT ->2.7.0 (9/3/1995) <TT -CLASS="LITERAL" ->lmpc-2.7.0.tar.gz</TT -> (internal alpha release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->LMP: <TT -CLASS="LITERAL" ->--gametic</TT -> changed to <TT -CLASS="LITERAL" ->--tic</TT -></P -></LI -><LI -><P ->LMP: total new code to convert LMP files (all in one).</P -></LI -><LI -><P ->LMP: do multiple LMP file changes at the same time.</P -></LI -><LI -><P ->LMP: convert LMP files with the help of a temporary file (if necessary).</P -></LI -></UL -> </P -></DD -><DT ->2.7.1 (9/5/1995) <TT -CLASS="LITERAL" ->lmpc-2.7.1.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc271.zip</TT -> -(internal beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->LMP: small bug fixes in the new code.</P -></LI -><LI -><P ->LMP: MS-DOS binary converts now all filenames to lower case.</P -></LI -></UL -> </P -></DD -><DT ->2.7.2 (9/6/1995) <TT -CLASS="LITERAL" ->lmpc-2.7.2.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc272.zip</TT -> -(internal beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->LMP: small bug in the MS-DOS binary corrected.</P -></LI -></UL -> </P -></DD -><DT ->2.8.0 (10/5/1995) <TT -CLASS="LITERAL" ->lmpc-2.8.0.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc280.zip</TT -> -(public release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->General: Nothing important changed after one month of intensive beta -testing. The code is stable. </P -></LI -></UL -> </P -></DD -><DT ->2.9.1 (10/9/1995) <TT -CLASS="LITERAL" ->lmpc-2.9.1.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc291.zip</TT -> -(internal beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->General: from now on I use a version number scheme similar to Linux: -second number odd means test.</P -></LI -><LI -><P ->LMP: HEXEN support (rudimentary).</P -></LI -></UL -> </P -></DD -><DT ->2.9.2 (10/9/1995) <TT -CLASS="LITERAL" ->lmpc-2.9.2.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc292.zip</TT -> -(internal beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->LMP: correct names of all HEXEN artifacts.</P -></LI -></UL -> </P -></DD -><DT ->2.9.3 (11/19/1995) <TT -CLASS="LITERAL" ->lmpc-2.9.3.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc293.zip</TT -> -(internal beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->LMP: new option <TT -CLASS="LITERAL" ->--clear-save</TT -> to clear the <TT -CLASS="LITERAL" ->SG</TT -> tics.</P -></LI -><LI -><P ->Docu: documentation in Linux-SGML.</P -></LI -><LI -><P ->LMP: small multi-player bug corrected, thanks to Rob McCartney -(<A -HREF="mailto:argon@netcom.com" -TARGET="_top" ->argon@netcom.com</A ->) -for his bug report.</P -></LI -></UL -> </P -></DD -><DT ->2.9.4 (12/6/1995) <TT -CLASS="LITERAL" ->lmpc-2.9.4.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc294.zip</TT -> -(internal beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->new option <TT -CLASS="LITERAL" ->--mark-step</TT -> to mark only every <TT -CLASS="LITERAL" ->STEP</TT ->th -game tic</P -></LI -><LI -><P ->General: MS-DOS version uses <TT -CLASS="LITERAL" ->CR/LF</TT -> instead of <TT -CLASS="LITERAL" ->LF</TT -> -for LS files.</P -></LI -></UL -> </P -></DD -><DT ->2.9.5 (2/10/1996) <TT -CLASS="LITERAL" ->lmpc-2.9.5.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc295.zip</TT -> -(internal alpha release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DMO: rudimentary support for Duke Nukem 3D DMO files (alpha code!). </P -></LI -></UL -> </P -></DD -><DT ->2.9.6 (2/12/1996) <TT -CLASS="LITERAL" ->lmpc-2.9.6.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc296.zip</TT -> -(internal alpha release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DMO: reliable version of <TT -CLASS="LITERAL" ->lzw.c</TT ->/<TT -CLASS="LITERAL" ->unlzw.c</TT -> included.</P -></LI -><LI -><P ->DMO: all DMO header bytes decoded.</P -></LI -><LI -><P ->General: new WWW directory structure.</P -></LI -></UL -> </P -></DD -><DT ->2.9.7 (2/13/1996) <TT -CLASS="LITERAL" ->lmpc-2.9.7.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc297.zip</TT -> -(internal beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DMO: version 1.1 of <TT -CLASS="LITERAL" ->lzw.c</TT ->/<TT -CLASS="LITERAL" ->unlzw.c</TT -> included.</P -></LI -><LI -><P ->DMO: DMO support in <TT -CLASS="LITERAL" ->-s</TT -> and <TT -CLASS="LITERAL" ->-i</TT ->.</P -></LI -><LI -><P ->Docu: documentation structure changed.</P -></LI -></UL -> </P -></DD -><DT ->2.9.8 (2/19/1996) <TT -CLASS="LITERAL" ->lmpc-2.9.8.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc298.zip</TT -> -(internal beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DMO: Chunk header removed from DS format.</P -></LI -><LI -><P ->DMO: multi-player size/tics/time corrected.</P -></LI -><LI -><P ->DMO: Pause is AC21.</P -></LI -></UL -> </P -></DD -><DT ->2.9.9 (3/6/1996) <TT -CLASS="LITERAL" ->lmpc-2.9.9.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc299.zip</TT -> -(internal beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->LMP: STRIFE support included.</P -></LI -></UL -> </P -></DD -><DT ->2.9.10 (4/7/1996) <TT -CLASS="LITERAL" ->lmpc-2.9.10.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2910.zip</TT -> -(internal beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->LMP: HEXEN 1.1 (8 player) support included.</P -></LI -><LI -><P ->LMP: considerable changes in the <TT -CLASS="LITERAL" ->-g</TT -> code.</P -></LI -></UL -> </P -></DD -><DT ->2.9.11 (4/14/1996) <TT -CLASS="LITERAL" ->lmpc-2.9.11.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2911.zip</TT -> -(internal bug fix release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->LMP: version string scan routine improved (buggy since 2.9.9).</P -></LI -><LI -><P ->LMP: game type determine routine corrected (buggy since 2.9.10).</P -></LI -><LI -><P ->LMP: HEXEN version change (1.0 <-> 1.1) now possible.</P -></LI -></UL -> </P -></DD -><DT ->2.9.12 (4/21/1996) <TT -CLASS="LITERAL" ->lmpc-2.9.12.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2912.zip</TT -> -(internal beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DMO: macro-block error fixed.</P -></LI -><LI -><P ->LMP: STRIFE player colour names included.</P -></LI -></UL -> </P -></DD -><DT ->2.9.13 (7/1/1996), never released -(internal incomplete alpha release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: coding started for Quake DEM files, nothing completed.</P -></LI -></UL -> </P -></DD -><DT ->2.9.14 (7/2/1996), never released -(internal incomplete alpha release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->Quake DEM files: coding continued, something completed.</P -></LI -></UL -> </P -></DD -><DT ->2.9.15 (7/3/1996), never released -(internal incomplete alpha release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: coding continued, structure mostly completed.</P -></LI -><LI -><P ->General: new recursive Makefiles, MS-DOS compiling not supported anymore.</P -></LI -><LI -><P ->General: new Linuxdoc-SGML 1.5 options.</P -></LI -><LI -><P ->General: Linux binary is ELF finally.</P -></LI -><LI -><P ->General: MS-DOS binary is djgpp V2.0 compatible (and runs in dosemu).</P -></LI -></UL -> </P -></DD -><DT ->2.9.16 (7/4/1996), never released -(internal incomplete alpha release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: CD track identified.</P -></LI -><LI -><P ->DEM: player movement identified.</P -></LI -></UL -> </P -></DD -><DT ->2.9.17 (7/7/1996), <TT -CLASS="LITERAL" ->lmpc-2.9.17.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2917.zip</TT -> -(beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: cross reference to DEM specs.</P -></LI -><LI -><P ->DEM: clientdata with more information.</P -></LI -><LI -><P ->DEM: entities: ModNum with reference to the model names.</P -></LI -></UL -> </P -></DD -><DT ->2.9.18 (7/8/1996), <TT -CLASS="LITERAL" ->lmpc-2.9.18.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2918.zip</TT -> -(beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: stupid spawnstatic error corrected.</P -></LI -><LI -><P ->DEM: code beautified.</P -></LI -></UL -> </P -></DD -><DT ->2.9.19 (7/14/1996), <TT -CLASS="LITERAL" ->lmpc-2.9.19.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2919.zip</TT -> -(beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: many new values explained.</P -></LI -><LI -><P ->DEM: strings can contain unprintable characters. </P -></LI -></UL -> </P -></DD -><DT ->2.9.20 (7/17/1996), <TT -CLASS="LITERAL" ->lmpc-2.9.20.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2920.zip</TT -> -(beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: some new values explained.</P -></LI -><LI -><P ->DEM: code rearranged.</P -></LI -><LI -><P ->DEM: corresponds (more or less) to dem-0.0.5.</P -></LI -></UL -> </P -></DD -><DT ->2.9.21 (7/23/1996), <TT -CLASS="LITERAL" ->lmpc-2.9.21.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2921.zip</TT -> -(beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: some new values explained.</P -></LI -><LI -><P ->DEM: massive code rearrangements.</P -></LI -></UL -> </P -></DD -><DT ->2.9.22 (8/7/1996), <TT -CLASS="LITERAL" ->lmpc-2.9.22.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2922.zip</TT -> -(beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: almost all explained.</P -></LI -><LI -><P ->DEM: text file parser is ready (lex, yacc), first check.</P -></LI -><LI -><P ->DEM: -s may now decompile a DEM txt file to a DEM txt file.</P -></LI -><LI -><P ->DEM: massive code rearrangements.</P -></LI -></UL -> </P -></DD -><DT ->2.9.23 (8/14/1996), <TT -CLASS="LITERAL" ->lmpc-2.9.23.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2923.zip</TT -> -(beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: the ``to bin converter'' is ready. Not very stable.</P -></LI -><LI -><P ->General: all messages (not getopt) go to stderr.</P -></LI -><LI -><P ->DEM: write to - means stdout.</P -></LI -><LI -><P ->General: new command line options: <TT -CLASS="LITERAL" ->--to-txt</TT -> and <TT -CLASS="LITERAL" ->--to-bin</TT -></P -></LI -><LI -><P ->Docu: some terms changed.</P -></LI -></UL -> </P -></DD -><DT ->2.9.24 (10/6/1996), <TT -CLASS="LITERAL" ->lmpc-2.9.24.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2924.zip</TT -> -(beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: all float output (time inclusive) with g-format (9 digits).</P -></LI -><LI -><P ->DEM: more internal errors corrected.</P -></LI -></UL -> </P -></DD -><DT ->2.9.25 (10/13/1996), <TT -CLASS="LITERAL" ->lmpc-2.9.25.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2925.zip</TT -> -(beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: memory problem solved: LMPC needs now only 400-500K RAM.</P -></LI -><LI -><P ->Docu: version table reorganised, README, INSTALL slightly changed.</P -></LI -><LI -><P ->Makefiles: new targets, easier to make packages and my web-page.</P -></LI -><LI -><P ->DEMA: first working version.</P -></LI -></UL -> </P -></DD -><DT ->2.9.26 (11/17/1996), <TT -CLASS="LITERAL" ->lmpc-2.9.26.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2926.zip</TT -> -(bug fix release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: MS-DOS binary can read in DEM text files.</P -></LI -><LI -><P ->DEM: <TT -CLASS="LITERAL" ->attack_state</TT ->-><TT -CLASS="LITERAL" ->effects</TT ->, -<TT -CLASS="LITERAL" ->ang_ofs_1</TT ->-><TT -CLASS="LITERAL" ->punchangle_x</TT ->.</P -></LI -><LI -><P ->LMP: MS-DOS binary prints now the correct statistics.</P -></LI -><LI -><P ->General: new E-mail address.</P -></LI -></UL -> </P -></DD -><DT ->2.9.27 (11/20/1996), <TT -CLASS="LITERAL" ->lmpc-2.9.27.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2927.zip</TT -> -(public beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->General: many thanks to -Eric Gordon Fowler -(<A -HREF="mailto:efowler@jove.acs.unt.edu" -TARGET="_top" ->efowler@jove.acs.unt.edu</A ->) and -Paolo Perrotta -(<A -HREF="mailto:nan0744@iperbole.bologna.it" -TARGET="_top" ->nan0744@iperbole.bologna.it</A ->) -for all their bug reports.</P -></LI -><LI -><P ->DEM: string in and out handles special characters better (not perfect).</P -></LI -><LI -><P ->DEM: text parser allows digits after an octal escape sequence.</P -></LI -><LI -><P ->DEM: \n, \r, \\ and \" are allowed -character escape sequences in DEM text files.</P -></LI -><LI -><P ->DEM: binary file read is byte-order independent (unchecked).</P -></LI -><LI -><P ->DEM: binary file write is byte-order independent (unchecked).</P -></LI -><LI -><P ->DEM: float numbers may contain exponents.</P -></LI -><LI -><P ->DEM: <TT -CLASS="LITERAL" ->updateentity</TT -> with an entity > 255 works.</P -></LI -><LI -><P ->General: my code survives <TT -CLASS="LITERAL" ->-Wall</TT -> <TT -CLASS="LITERAL" ->-pedantic</TT -> without -warnings.</P -></LI -><LI -><P ->Docu: Old LMPC history a bit reformatted.</P -></LI -></UL -> </P -></DD -><DT ->2.9.28 (11/30/1996), <TT -CLASS="LITERAL" ->lmpc-2.9.28.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2928.zip</TT -> -(public beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: put an <TT -CLASS="LITERAL" ->items</TT -> entry in binary DEM files even if it is 0. -This modification enables an error-free decompile/compile of CAMPER3.DEM by -``United Rangers Films'' after all.</P -></LI -></UL -> </P -></DD -><DT ->2.9.29 (12/15/1996), <TT -CLASS="LITERAL" ->lmpc-2.9.29.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2929.zip</TT -> -(public beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: <TT -CLASS="LITERAL" ->--info</TT -> detects DEM text files.</P -></LI -><LI -><P ->DEM: binary file read reorganised (coding just started).</P -></LI -><LI -><P ->DEMcut: coding started. First working version.</P -></LI -></UL -> </P -></DD -><DT ->2.9.30 (1/5/1997), <TT -CLASS="LITERAL" ->lmpc-2.9.30.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2930.zip</TT -> -(alpha test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: binary file read totally rewritten. I use now for binary files the -same internal node tree representation as for text files. The text output part -is a bit slower now but the whole project is much easier to maintain. </P -></LI -><LI -><P ->DEM: <TT -CLASS="LITERAL" ->--to-bin</TT -> can handle binary DEM files too. It should create -an identically copy of the input file (if I didn't make any mistakes).</P -></LI -><LI -><P ->DEM: binary write: last (I hope so) endian-dependence removed.</P -></LI -><LI -><P ->DEM: binary write: suppresses ``camera only'' blocks.</P -></LI -><LI -><P ->DEM: text write: suppresses ``camera only'' blocks.</P -></LI -><LI -><P ->DEM: text write: stops at file write errors (e.g. device full).</P -></LI -><LI -><P ->DEMcut: almost all new coded. The interface remains identical. -I can now include very easy new commands. </P -></LI -><LI -><P ->DEMcut: the time message can be anywhere in a block.</P -></LI -><LI -><P ->DEMcut: new ``m'' command to prepare multi-player DEM file -concatenations.</P -></LI -><LI -><P ->DEMcut: new ``i'' command to improve the interactive work: range may -be interrupted, output is time-synchronised. </P -></LI -><LI -><P ->Docu: Formatted with SGML-Tools 0.99.0.</P -></LI -><LI -><P ->General: Orthographical check with <TT -CLASS="LITERAL" ->ispell</TT -> (British English). </P -></LI -></UL -> </P -></DD -><DT ->2.9.31 (1/7/1997), <TT -CLASS="LITERAL" ->lmpc-2.9.31.tar.gz</TT ->/<TT -CLASS="LITERAL" ->lmpc2931.zip</TT -> -(bug fix release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: text write: CD track was never printed: totally stupid bug.</P -></LI -></UL -> </P -></DD -><DT ->2.9.32 (2/9/1997) (alpha test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEMcut: more info on running ranges in interactive mode.</P -></LI -><LI -><P ->DEMcut: ``d'' command don't need files from the command line.</P -></LI -><LI -><P ->General: includes executables for Win32 (untested).</P -></LI -><LI -><P ->General: new packaging system.</P -></LI -><LI -><P ->General: all messages go to stderr.</P -></LI -></UL -> </P -></DD -><DT ->2.9.33 (2/16/1997) (alpha test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DMO: Redneck Rampage support started. Info works, decompression not.</P -></LI -><LI -><P ->DMO: Duke Nukem 3D 1.3D DMO files supported. This incompatible version -exists since April 1996 but nobody said it to me.</P -></LI -><LI -><P ->DMO: endian-dependence should be removed. Never checked this.</P -></LI -></UL -> </P -></DD -><DT ->2.9.34 (3/23/1997) (beta test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: <TT -CLASS="LITERAL" ->--info</TT -> prints the number of game tics (or frames) -for binary DEM files.</P -></LI -><LI -><P ->DEM: new option <TT -CLASS="LITERAL" ->--fix-multi</TT -> for in-place editing.</P -></LI -><LI -><P ->DEM: new option <TT -CLASS="LITERAL" ->--fix-multi</TT -> as additional option for -<TT -CLASS="LITERAL" ->--to-bin</TT -> and <TT -CLASS="LITERAL" ->--to-txt</TT ->.</P -></LI -><LI -><P ->DEM: bin read: type check was endian-dependent (no longer).</P -></LI -><LI -><P ->DEM: bin read: CD track at the beginning can be anything, that Quake -itself likes. Read the DEM specs (>=1.0.4) for details. The full CD track -string will be included in a DEM text file but LMPC can cope with the old -format as well.</P -></LI -><LI -><P ->DEMcut: CD track commands expects the `\n' character as well. -The old syntax continues to work.</P -></LI -><LI -><P ->Docu: Demolition and DemoStat mentioned.</P -></LI -></UL -> </P -></DD -><DT ->3.0.0 (3/31/1997) (public beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: text read: hours in time stamps didn't work (bug report by -James Stephenson (<A -HREF="mailto:james@BETAus.com" -TARGET="_top" ->james@BETAus.com</A ->)).</P -></LI -><LI -><P ->DEMcut: CD track command works now correctly.</P -></LI -><LI -><P -><TT -CLASS="LITERAL" ->--game</TT -> option repaired.</P -></LI -><LI -><P ->Docu: general clean-up.</P -></LI -></UL -> </P -></DD -><DT ->3.0.1 (5/15/1997) (public release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->General: text write: Win32 versions make MS-DOS style -line breaks (hint by -David Wright (<A -HREF="mailto:wgwright@mnsinc.com" -TARGET="_top" ->wgwright@mnsinc.com</A ->)).</P -></LI -><LI -><P ->General: Minimalist GNU Win32 (Mingw32) version ready (untested).</P -></LI -><LI -><P ->Win32: The <TT -CLASS="LITERAL" ->syserror</TT -> function was always broken. Why didn't -somebody give me a hint?</P -></LI -><LI -><P ->DEM: bin read: `new' (version > 1.06) DEM format.</P -></LI -><LI -><P ->DEM: bin write: stupid error in <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->clientdata</I -></SPAN -> removed. -It was there since 2.9.23 (hint by -Yonatan Donner (<A -HREF="mailto:ruthd@post.tau.ac.il" -TARGET="_top" ->ruthd@post.tau.ac.il</A ->)).</P -></LI -><LI -><P ->DEM: entry clientdata->weapon may contain invalid values -(more than 1 bit set). </P -></LI -><LI -><P ->Packaging: Win32 versions with standard file names. Only the `MS-DOS -Binary Package' use the short 8.3 name scheme.</P -></LI -></UL -> </P -></DD -><DT ->3.1.1 (7/20/1997) (internal alpha test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->QWD: bin read: coding started. Nothing completed. </P -></LI -><LI -><P ->Docu: all tables now floating in TeX.</P -></LI -><LI -><P ->Conf: all is now Autoconf configured.</P -></LI -></UL -> </P -></DD -><DT ->3.1.2 (7/28/1997) (alpha test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEMcut: interactive mode is removed in systems without named pipes.</P -></LI -><LI -><P ->DBS: alpha code.</P -></LI -><LI -><P ->Conf: Autoconf rules newly written. Really everything is Autoconf -configured.</P -></LI -><LI -><P ->Docu: DBS mentioned.</P -></LI -><LI -><P ->Docu: rename INSTALL in COMPILE.</P -></LI -><LI -><P ->Docu: new file: Autoconf generic INSTALL.</P -></LI -></UL -> </P -></DD -><DT ->3.1.3 (8/17/1997) (alpha test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->General: package renamed: LMP/DMO/DEM/QWD Control Centre -> -Little Movie Processing Centre</P -></LI -><LI -><P ->QWD: QuakeWorld 2.00 support included.</P -></LI -><LI -><P ->Docu: back again to SGML-Tools 0.99.0.</P -></LI -><LI -><P ->Docu: chapters restructured.</P -></LI -></UL -> </P -></DD -><DT ->3.1.4 (12/29/1997) (alpha test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->Conf: <TT -CLASS="LITERAL" ->Makefile.in</TT -> created from <TT -CLASS="LITERAL" ->Makefile.am</TT -> by -GNU Automake. Much easier to maintain! </P -></LI -><LI -><P ->General: Hexen II support just started. Not complete. Can't even -decompile correctly a single file.</P -></LI -><LI -><P ->Compile: some general routines in a library.</P -></LI -><LI -><P ->General: Quake II support just started. Not complete. Can't even -decompile deltapacketentities.</P -></LI -></UL -> </P -></DD -><DT ->3.1.5 (1/1/1998) (alpha test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DM2: text output: many comments included.</P -></LI -><LI -><P ->Docu: SGML-Tools 1.0.2 ready after all.</P -></LI -><LI -><P ->Conf: Automake 1.2 compliant. Some yacc/lex changes were needed.</P -></LI -></UL -> </P -></DD -><DT ->3.1.6 (3/12/1998) (alpha test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DM2: binary read: nasty malloc/free bug removed.</P -></LI -><LI -><P ->DM2: some new commands got better names.</P -></LI -><LI -><P ->DEM: binary read: CD track totally rewritten.</P -></LI -><LI -><P ->LMP: can handle -v1.10 (for the released DOOM source code distribution)</P -></LI -><LI -><P ->Web: PlanetQuake is the new home.</P -></LI -><LI -><P ->Docu: SGML-Tools 1.0.5 used.</P -></LI -></UL -> </P -></DD -><DT ->3.1.7 (6/17/1998) (alpha test release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DBS: subtle sync problem solved. Thanks to Paul Baker -(<A -HREF="mailto:pbaker@idle.com" -TARGET="_top" ->pbaker@idle.com</A ->) for his bug -report.</P -></LI -><LI -><P ->DM2: text in: parser implemented.</P -></LI -><LI -><P ->DM2: some command names changed.</P -></LI -><LI -><P ->DM2: binary out: implementation started.</P -></LI -></UL -> </P -></DD -><DT ->3.1.8 (7/15/1998) (intermediate beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DM2: server record files implemented.</P -></LI -><LI -><P ->Conf: dist target for source package is working now.</P -></LI -><LI -><P ->Conf: more checks for more platforms.</P -></LI -><LI -><P ->Docu: SGML-Tools 1.0.7 used.</P -></LI -><LI -><P ->QWD: binary in: up to QuakeWorld 2.29BETA.</P -></LI -></UL -> </P -></DD -><DT ->3.1.9 (8/16/1998) (beta release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->QWD: text in: written.</P -></LI -><LI -><P ->QWD: binary out: written. Due to the ongoing demand by many users -I implemented now the QWD binary write routine. This gives together with the -text read routine the first really working QWD editor.</P -></LI -><LI -><P ->DM2: Visual Weapon (VWep) support.</P -></LI -><LI -><P ->DM2: some really bad errors corrected.</P -></LI -><LI -><P ->Conf: After many fights with the Automake system, `make distcheck' -works finally without problems.</P -></LI -></UL -> </P -></DD -><DT ->3.2.0 (9/6/1998) (stable release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DM2: binary read and binary write: long vwep corrected. Now works -<TT -CLASS="LITERAL" ->massive1.dm2</TT ->.</P -></LI -><LI -><P ->DM2: binary write: <TT -CLASS="LITERAL" ->timeofs</TT -> in <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->sound</I -></SPAN -> wasn't even -implemented.</P -></LI -><LI -><P ->DM2: text read: allows now empty <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->packetentities</I -></SPAN ->. Many users -reported this problem in reease 3.1.9. Thanks to all of you.</P -></LI -><LI -><P ->QWD: text read: allows now empty <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->packetentities</I -></SPAN -> like in DM2 -text read.</P -></LI -><LI -><P ->text read: useless terminals removed.</P -></LI -><LI -><P ->DM2: unused bits in bit mask (<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->sound</I -></SPAN ->, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->spawnbaseline</I -></SPAN ->, -<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->packetentities</I -></SPAN ->) detected. It's a real mess that Keygrip 2 set unused -bits in DM2 files but I implemeted an easy way to cope with it. -Now works <TT -CLASS="LITERAL" ->latenite.dm2</TT ->.</P -></LI -><LI -><P ->DM2: text read: allows now empty <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->playerinfo</I -></SPAN ->. Now works -<TT -CLASS="LITERAL" ->grenbfg.dm2</TT ->.</P -></LI -><LI -><P ->DEM: Hexen II support (it was always only a small subset) totally -removed.</P -></LI -></UL -> </P -></DD -><DT ->3.2.1 (9/8/1998) (stable release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DEM: text write: didn't write the CD track. A stupid integration -error. I know, I actually have to make a software quality test with all my -test demos before the upload.</P -></LI -><LI -><P ->DEM: to text: problems with <TT -CLASS="LITERAL" ->--game QUAKE</TT -> switch. Not really -solved. Just a kludge inserted, which even slows the program down a bit.</P -></LI -></UL -> </P -></DD -><DT ->3.2.2 (1/9/1999) (public release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->QWD: bin read: protocol version 27 (game version 2.29BETA and up) -corrected.</P -></LI -><LI -><P ->QWD: read text: many small but important parsing problems -removed. This was possible because Joel Baxter -(<A -HREF="mailto:jbaxter@lemur.stanford.edu" -TARGET="_top" ->jbaxter@lemur.stanford.edu</A ->) -provided me with a problematic QWD file (recorded with game version 2.21) and -many good hints.</P -></LI -><LI -><P ->QWD: <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->updatepl</I -></SPAN -> better.</P -></LI -><LI -><P ->DM2: updated up to game version 3.20.</P -></LI -><LI -><P ->DM2: bin read: <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->temp_entity</I -></SPAN -> parse code directly -calculated from the DM2 specs.</P -></LI -><LI -><P ->Docu: SGML-Tools 1.0.9 used.</P -></LI -><LI -><P ->Compile: Cygwin and Mingw32 binaries are cross-compiled with the -Cygwin toolset version B20.1.</P -></LI -><LI -><P ->DM2cat: The DM2 file concatenator included.</P -></LI -></UL -> </P -></DD -><DT ->3.2.3 (1/12/1999) (public release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->Compile: udm2-te[123].c are created directly in the source -directory.</P -></LI -><LI -><P ->Package: udm2-te[123].c are included in the source and full -package. -I forgot them in the last release. Thanks to Stefan Schwoon (<A -HREF="mailto:schwoon@informatik.tu-muenchen.de" -TARGET="_top" ->schwoon@informatik.tu-muenchen.de</A ->) for mention this error.</P -></LI -><LI -><P ->The script to extract the C-Source out of the specs file is included -too.</P -></LI -><LI -><P ->WWW: upload script uploads now the packages to the right place to -deliver them to all <A -HREF="http://www.cdrom.com" -TARGET="_top" ->http://www.cdrom.com</A -> mirrors. In the last -release this was totally wrong.</P -></LI -></UL -> </P -></DD -><DT ->3.2.4 (1/19/1999) (public release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->QWD: bin read: new <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->serverinfo</I -></SPAN -> message wrong handled. -Thanks to Michale Hofele (<A -HREF="mailto:michael@i603.hadiko.de" -TARGET="_top" ->michael@i603.hadiko.de</A ->) for the bug-report.</P -></LI -></UL -> </P -></DD -><DT ->3.2.5 (4/6/1999) (public release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->Conf: Autoconf 2.13 and Automake 1.4 used.</P -></LI -><LI -><P ->DEMcut: interactive mode corrected. Thanks to Vasily Kuznetsov -(<A -HREF="mailto:VKuznetsov@microtest.ru" -TARGET="_top" ->VKuznetsov@microtest.ru</A ->) for the bug-report and patch.</P -></LI -><LI -><P ->QWD: bin read: <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->setpause</I -></SPAN -> corrected. -Thanks to Christer Sandin (<A -HREF="mailto:czsuch@ocag.ch" -TARGET="_top" ->czsuch@ocag.ch</A ->) for his bug report.</P -></LI -><LI -><P ->DM2: multi-level repair corrected. Thanks to Zerox -(<A -HREF="mailto:zerox@prism.ne.mediaone.net" -TARGET="_top" ->zerox@prism.ne.mediaone.net</A ->) for the bug-report and a short demo -file.</P -></LI -></UL -> </P -></DD -><DT ->3.2.6 (4/30/1999) (public release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->QWD: bin read: initialization of the precache lists for game version -2.20 and higher corrected.</P -></LI -><LI -><P ->QWD: <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->maxspeed</I -></SPAN -> and <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->entgravity</I -></SPAN -> corrected.</P -></LI -><LI -><P ->Thanks to R. Quaak (<A -HREF="mailto:jaqua00@direct.a2000.nl" -TARGET="_top" ->jaqua00@direct.a2000.nl</A ->) for the <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->useful</I -></SPAN -> bug report and a -short demo file. -Remember: with a good bug report and a short demo file, I can correct a bug -really fast.</P -></LI -></UL -> </P -></DD -><DT ->3.2.7 (5/24/1999) (bug fix release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->Compile: source can be compiled with C++ compilers too. No C++ -specific feature used up to now. Many new C++ related warnings corrected.</P -></LI -><LI -><P ->General: severe buffer overflow problems corrected. -Thanks to Nathan Whitaker (<A -HREF="mailto:naif@3dcoder.freeserve.co.uk" -TARGET="_top" ->naif@3dcoder.freeserve.co.uk</A ->) for the bug report and a demo file.</P -></LI -><LI -><P ->Compile: Linux binaries are glibc finally. I updated my main development -system from SuSE Linux 4.2 (about 4 years old) to SuSE Linux 6.1 to do -this.</P -></LI -></UL -> </P -></DD -><DT ->3.2.8 (6/3/1999) (bug fix release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->QWD: <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->modellist</I -></SPAN -> and <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->soundlist</I -></SPAN -> corrected. -Thanks to Hoffy -(<A -HREF="mailto:ripple@powerup.com.au" -TARGET="_top" ->ripple@powerup.com.au</A ->) -for the bug report and a demo file.</P -></LI -></UL -> </P -></DD -><DT ->3.2.9 (8/18/1999) (public release)</DT -><DD -><P -> <P -></P -><UL -><LI -><P ->DM2: multi-level repair method improved. -Thanks to Mike Dowell -(<A -HREF="mailto:mdowell@Mike-D.com" -TARGET="_top" ->mdowell@Mike-D.com</A ->) -for the bug report and a demo file.</P -></LI -><LI -><P ->DM3: some code fragments prepared but nothing compiled in.</P -></LI -><LI -><P ->Compile: MS-DOS binaries cross-compiled with egcs-2.91.66.</P -></LI -></UL -></P -></DD -><DT ->3.3.0 (1/23/2000) (public release)</DT -><DD -><P -><P -></P -><UL -><LI -><P ->DM2: RLA (Quake II Relay) support.</P -></LI -><LI -><P ->Docu: Some links updated.</P -></LI -></UL -></P -></DD -><DT ->3.4.0 (8/29/2004) (alpha test release)</DT -><DD -><P -><P -></P -><UL -><LI -><P ->Compile: Compiled everything on a current platform.</P -></LI -><LI -><P ->Docu: Used new tools to generate the documentation.</P -></LI -></UL -></P -></DD -><DT ->3.4.1 (3/4/2006) (alpha test release)</DT -><DD -><P -><P -></P -><UL -><LI -><P ->DM3: Support added.</P -></LI -><LI -><P ->Docu: DM3 mentioned.</P -></LI -><LI -><P ->Compile: Compiled everything on SuSE Linux 10.0.</P -></LI -></UL -></P -></DD -></DL -></DIV -></P -><P ->Plan for 4.0.0 in order of importance - -<P -></P -><OL -TYPE="1" -><LI -><P ->Block-oriented rewrite of the text parse routines.</P -></LI -><LI -><P ->Object-oriented demo handling. This is really necesary for further recording -formats.</P -></LI -><LI -><P ->More code generation out of the XML specs source.</P -></LI -><LI -><P ->Strict separation of the different recording types and the main program. -Maybe something like <TT -CLASS="LITERAL" ->librecord.so</TT ->.</P -></LI -><LI -><P -><TT -CLASS="LITERAL" ->--split-multi</TT -> option to split multi-level recordings.</P -></LI -><LI -><P ->Half-Life (DEM), Heretic II (DM2) and Sin (DM2) support.</P -></LI -><LI -><P ->DEMcut and DBS with QWD and DM2 support.</P -></LI -><LI -><P ->File-IO from <TT -CLASS="LITERAL" ->stdin</TT -> and to <TT -CLASS="LITERAL" ->stdout</TT ->, really difficult is the -file type detection. </P -></LI -><LI -><P ->Redneck Rampage decompression.</P -></LI -></OL -> </P -><P ->Ideas finally dropped out: - -<P -></P -><OL -TYPE="1" -><LI -><P ->Hexen II and HexenWorld support.</P -></LI -></OL -> </P -><P ->Open problems - -<P -></P -><OL -TYPE="1" -><LI -><P ->Does someone know the difference between the Redneck Rampage compression -algorithm and the one used in Duke Nukem 3D?</P -></LI -></OL -> </P -><P ->A new regular version of LMPC (like 3.5.0) will be announced on -<A -HREF="http://www.bluesnews.com" -TARGET="_top" ->BluesNews</A -> and on -<A -HREF="http://www.planetquake.com" -TARGET="_top" ->PlanetQuake</A ->.</P -><P ->You can download LMPC from my <A -HREF="http://www.planetquake.com/demospecs" -TARGET="_top" ->Demo Specs page</A ->.</P -><P ->There you will find always the latest release with new features -and brand new bugs.</P -></DIV -></DIV -></BODY -></HTML ->
\ No newline at end of file |