add back the documentation

This adds back most relevant documentation from the WinMBF
binary and source code releases, file names converted to
lower case. Fixes #32.
This commit is contained in:
Fabian Greffrath 2020-01-13 15:29:26 +01:00
parent 2f9ea0128b
commit 6fa9663ae8
45 changed files with 11011 additions and 2 deletions

339
COPYING Normal file
View File

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@ -1 +1,13 @@
SUBDIRS = Source
dist_doc_DATA = COPYING
dist_pkgdata_DATA = \
betagrph.wad \
betalevl.wad \
watermap.wad
SUBDIRS = \
configs \
docs \
examples \
Source \
toolsrc

BIN
betagrph.wad Normal file

Binary file not shown.

BIN
betalevl.wad Normal file

Binary file not shown.

4
configs/Makefile.am Normal file
View File

@ -0,0 +1,4 @@
EXTRA_DIST = \
common.cfg \
doom17.dat \
doom19.dat

595
configs/common.cfg Normal file
View File

@ -0,0 +1,595 @@
#Doom I, Doom II, and Ultimate Doom Common Elements File
#Included by main Configuration file for all of the above
#The Common Things List is at the *end* of this file
[specials]
##############################################################################
############################# Special Actions List ###########################
##############################################################################
#LineDef Types for any Doom game, version 1.666 or later.
#You can add new menus or revise existing ones; put new menu titles in double
#quotes like the existing ones. Do not make short descriptions longer then 20
#characters (as in the pattern below.)
#Number,"-- Desc-------------", "### -- Long Desc"
"Normal"
0, "-- Normal", "-- Normal [ 0]"
"-"
"Doors"
1, "DR Open Door", "DR Open Door, Wait 4, Close [ 1]"
31, "D1 Open Door & Stay", "D1 Open Door, Stay Open [ 31]"
999, "-", "-"
63, "SR Open Door", "SR Open Door, Wait 4, Close [ 63]"
29, "S1 Open Door", "S1 Open Door, Wait 4, Close [ 29]"
90, "WR Open Door", "WR Open Door, Wait 4, Close [ 90]"
4, "W1 Open Door", "W1 Open Door, Wait 4, Close [ 4]"
999, "-", "-"
61, "SR Open Door & Stay", "SR Open Door, Stay Open [ 61]"
103, "S1 Open Door & Stay", "S1 Open Door, Stay Open [103]"
86, "WR Open Door & Stay", "WR Open Door, Stay Open [ 86]"
2, "W1 Open Door & Stay", "W1 Open Door, Stay Open [ 2]"
46, "G1 Open Door & Stay", "G1 Open Door, Stay Open [ 46]"
999, "-", "-"
42, "SR Close Door", "SR Close Door, Lower Ceiling to Floor [ 42]"
50, "S1 Close Door", "S1 Close Door [ 50]"
75, "WR Close Door", "WR Close Door [ 75]"
3, "W1 Close Door", "W1 Close Door [ 3]"
999, "-", "-"
196, "sR Close Door 30", "sR Close Door, Opens after 30 seconds [196]"
175, "s1 Close Door 30", "s1 Close Door, Opens after 30 seconds [175]"
76, "WR Close Door 30", "WR Close Door, Opens after 30 seconds [ 76]"
16, "W1 Close Door 30", "W1 Close Door, Opens after 30 seconds [ 16]"
999, "-", "-"
26, "DR Open Blue Door", "DR Open Blue Door, Wait 4, Close [ 26]"
32, "D1 Open Blue & Stay", "D1 Open Blue Door, Stay Open [ 32]"
28, "DR Open Red Door", "DR Open Red Door, Wait 4, Close [ 28]"
33, "D1 Open Red & Stay", "D1 Open Red Door, Stay Open [ 33]"
27, "DR Open Yellow Door", "DR Open Yellow Door, Wait 4, Close [ 27]"
34, "D1 Open Yelw & Stay", "D1 Open Yellow Door, Stay Open [ 34]"
"Doors (Fast)"
117, "DR Open Door Fast", "DR Open Door Fast, Wait 4, Close [117]"
118, "D1 Open Door F Stay", "D1 Open Door Fast, Stay Open [118]"
999, "-", "-"
114, "SR Open Door Fast", "SR Open Door Fast, Wait 4, Close [114]"
111, "S1 Open Door Fast", "S1 Open Door Fast, Wait 4, Close [111]"
105, "WR Open Door Fast", "WR Open Door Fast, Wait 4, Close [105]"
108, "W1 Open Door Fast", "W1 Open Door Fast, Wait 4, Close [108]"
999, "-", "-"
115, "SR Open Door F Stay", "SR Open Door Fast, Stay Open [115]"
112, "S1 Open Door F Stay", "S1 Open Door Fast, Stay Open [112]"
106, "WR Open Door F Stay", "WR Open Door Fast, Stay Open [106]"
109, "W1 Open Door F Stay", "W1 Open Door Fast, Stay Open [109]"
999, "-", "-"
116, "SR Close Door Fast", "SR Close Door Fast [116]"
113, "S1 Close Door Fast", "S1 Close Door Fast [113]"
107, "WR Close Door Fast", "WR Close Door Fast [107]"
110, "W1 Close Door Fast", "W1 Close Door Fast [110]"
999, "-", "-"
99, "SR Open Door Blue F", "SR Open Blue Door Fast, Stay Open [ 99]"
133, "S1 Open Door Blue F", "S1 Open Blue Door Fast, Stay Open [133]"
134, "SR Open Door Red F", "SR Open Red Door Fast, Stay Open [134]"
135, "S1 Open Door Red F", "S1 Open Red Door Fast, Stay Open [135]"
136, "SR Open Door Yelw F", "SR Open Yellow Door Fast, Stay Open [136]"
137, "S1 Open Door Yelw F", "S1 Open Yellow Door Fast, Stay Open [137]"
"--"
"Floors (Raise/Lower to Next)"
69, "SR Raise Floor nF", "SR Raise Floor to next Floor [ 69]"
18, "S1 Raise Floor nF", "S1 Raise Floor to next Floor [ 18]"
128, "WR Raise Floor nF", "WR Raise Floor to next Floor [128]"
119, "W1 Raise Floor nF", "W1 Raise Floor to next Floor [119]"
999, "-", "-"
222, "sR Lower Floor nF", "sR Lower Floor to next Floor [222]"
221, "s1 Lower Floor nF", "s1 Lower Floor to next Floor [221]"
220, "wR Lower Floor nF", "wR Lower Floor to next Floor [220]"
219, "w1 Lower Floor nF", "w1 Lower Floor to next Floor [219]"
999, "-", "-"
132, "SR Raise Floor nFF", "SR Raise Floor to next Floor Fast [132]"
131, "S1 Raise Floor nFF", "S1 Raise Floor to next Floor Fast [131]"
129, "WR Raise Floor nFF", "WR Raise Floor to next Floor Fast [129]"
130, "W1 Raise Floor nFF", "W1 Raise Floor to next Floor Fast [130]"
"Floors (Raise to Ceiling)"
64, "SR Set Floor LnC", "SR Set Floor to Lowest neighboring Ceiling [ 64]"
101, "S1 Set Floor LnC", "S1 Set Floor to Lowest neighboring Ceiling [101]"
91, "WR Set Floor LnC", "WR Set Floor to Lowest neighboring Ceiling [ 91]"
5, "W1 Set Floor LnC", "W1 Set Floor to Lowest neighboring Ceiling [ 5]"
24, "G1 Set Floor LnC", "G1 Set Floor to Lowest neighboring Ceiling [ 24]"
999, "-", "-"
65, "SR Set Floor 8uLnC", "SR Set Floor to 8 under Lowest neighboring Ceiling [ 65]"
55, "S1 Set Floor 8uLnC", "S1 Set Floor to 8 under Lowest neighboring Ceiling [ 55]"
94, "WR Set Floor 8uLnC", "WR Set Floor to 8 under Lowest Neighboring Ceiling [ 94]"
56, "W1 Set Floor 8uLnC", "W1 Set Floor to 8 under Lowest neighboring Ceiling [ 56]"
"Floors (Raise Absolute)"
180, "sR Raise Floor 24", "sR Raise Floor 24 [180]"
161, "s1 Raise Floor 24", "s1 Raise Floor 24 [161]"
92, "WR Raise Floor 24", "WR Raise Floor 24 [ 92]"
58, "W1 Raise Floor 24", "W1 Raise Floor 24 [ 58]"
999, "-", "-"
179, "sR Raise Floor 24cTt", "sR Raise Floor 24, change Texture & Type [179]"
160, "s1 Raise Floor 24cTt", "s1 Raise Floor 24, change Texture & Type [160]"
93, "WR Raise Floor 24cTt", "WR Raise Floor 24, change Texture & Type [ 93]"
59, "W1 Raise Floor 24cTt", "W1 Raise Floor 24, change Texture & Type [ 59]"
999, "-", "-"
176, "sR Raise Floor sLT", "sR Raise Floor by shortest lower Texture [176]"
158, "s1 Raise Floor sLT", "s1 Raise Floor by shortest lower Texture [158]"
96, "WR Raise Floor sLT", "WR Raise Floor by shortest lower Texture [147]"
30, "W1 Raise Floor sLT", "W1 Raise Floor by shortest lower Texture [142]"
999, "-", "-"
178, "sR Raise Floor 512", "sR Raise Floor 512 [178]"
140, "S1 Raise Floor 512", "S1 Raise Floor 512 [140]"
147, "wR Raise Floor 512", "wR Raise Floor 512 [147]"
142, "w1 Raise Floor 512", "w1 Raise Floor 512 [142]"
"Floors (Set to Neigbhor)"
60, "SR Set Floor LnF", "SR Floor to Lowest neighboring Floor [ 60]"
23, "S1 Set Floor LnF", "S1 Floor to Lowest neighboring Floor [ 23]"
82, "WR Set Floor LnF", "WR Floor to Lowest neighboring Floor [ 82]"
38, "W1 Set Floor LnF", "W1 Floor to Lowest neighboring Floor [ 38]"
999, "-", "-"
177, "sR Set Floor LnFcTn", "sR Floor to Lowest neighboring Floor, change Texture/Type Numeric [177]"
159, "s1 Set Floor LnFcTn", "s1 Floor to Lowest neighboring Floor, change Texture/Type Numeric [159]"
84, "WR Set Floor LnFcTn", "WR Floor to Lowest neighboring Floor, change Texture/Type Numeric [ 84]"
37, "W1 Set Floor LnFcTn", "W1 Floor to Lowest neighboring Floor, change Texture/Type Numeric [ 37]"
999, "-", "-"
45, "SR Set Floor HnF", "SR Floor to Highest neighboring Floor [ 45]"
102, "S1 Set Floor HnF", "S1 Floor to Highest neighboring Floor [102]"
83, "WR Set Floor HnF", "WR Floor to Highest neighboring Floor [ 83]"
19, "W1 Set Floor HnF", "W1 Floor to Highest neighboring Floor [ 19]"
999, "-", "-"
70, "SR Set Floor 8aHnF", "SR Floor to 8 above Highest neighboring Floor [ 70]"
71, "S1 Set Floor 8aHnF", "S1 Floor to 8 above Highest neighboring Floor [ 71]"
98, "WR Set Floor 8aHnF", "WR Floor to 8 above Highest neighboring Floor [ 98]"
36, "W1 Set Floor 8aHnF", "W1 Floor to 8 above Highest neighboring Floor [ 36]"
"---"
"Floor Changers"
190, "sR Change Floor cTt", "sR Change Floor/Sector Type (Trigger Model) [190]"
189, "s1 Change Floor cTt", "s1 Change Floor/Sector Type (Trigger Model) [189]"
154, "wR Change Floor cTt", "wR Change Floor/Sector Type (Trigger Model) [154]"
153, "w1 Change Floor cTt", "w1 Change Floor/Sector Type (Trigger Model) [153]"
999, "-", "-"
78, "sR Change Floor cTn", "sR Change Floor/Sector Type (Numeric Model) [ 78]"
241, "s1 Change Floor cTn", "s1 Change Floor/Sector Type (Numeric Model) [241]"
240, "wR Change Floor cTn", "wR Change Floor/Sector Type (Numeric Model) [240]"
239, "w1 Change Floor cTn", "w1 Change Floor/Sector Type (Numeric Model) [239]"
"----"
"Platforms (Raise)"
66, "SR Raise Plat 24cTto", "SR Raise Platform 24, change Texture Only [ 66]"
15, "S1 Raise Plat 24cTto", "S1 Raise Platform 24, change Texture Only [ 15]"
148, "wR Raise Plat 24cTto", "wR Raise Platform 24, change Texture Only [148]"
143, "w1 Raise Plat 24cTto", "w1 Raise Platform 24, change Texture Only [143]"
999, "-", "-"
67, "SR Raise Plat 32cTto", "SR Raise Platform 32, change Texture Only [ 67]"
14, "S1 Raise Plat 32cTto", "S1 Raise Platform 32, change Texture Only [ 14]"
149, "wR Raise Plat 32cTto", "wR Raise Platform 32, change Texture Only [149]"
144, "w1 Raise Plat 32cTto", "w1 Raise Platform 32, change Texture Only [144]"
999, "-", "-"
68, "SR Raise Plat nFcTt0", "SR Raise Platform to next Floor, change Texture, Type=0 [ 68]"
20, "S1 Raise Plat nFcTt0", "S1 Raise Platform to next Floor, change Texture, Type=0 [ 20]"
95, "WR Raise Plat nFcTt0", "WR Raise Platform to next Floor, change Texture, Type=0 [ 95]"
22, "W1 Raise Plat nFcTt0", "W1 Raise Platform to next Floor, change Texture, Type=0 [ 22]"
47, "G1 Raise Plat nFcTt0", "G1 Raise Platform to Next Floor, change Texture, Type=0 [ 47]"
"Platforms (Up and Down)"
181, "sR Plat Up & Down", "sR Start Moving Platform Up, wait 3, Down [181]"
162, "s1 Plat Up & Down", "s1 Start Moving Platform Up, wait 3, Down [162]"
87, "WR Plat Up & Down", "WR Start Moving Platform Up, wait 3, Down [ 87]"
53, "W1 Plat Up & Down", "W1 Start Moving Platform Up, wait 3, Down [ 53]"
999, "-", "-"
182, "sR Stop Platform", "sR Stop Moving Platform [182]"
163, "s1 Stop Platform", "s1 Stop Moving Platform [163]"
89, "WR Stop Platform", "WR Stop Moving Platform [ 89]"
54, "W1 Stop Platform", "W1 Stop Moving Platform [ 54]"
999, "-", "-"
211, "sR Toggle Platform", "sR Toggle Floor Between Ceiling and Floor Instantly [211]"
212, "wR Toggle Platform", "wR Toggle Floor Between Ceiling and Floor Instantly [212]"
999, "-", "-"
62, "SR Lower Lift", "SR Lower Lift, wait 3, Rise [ 62]"
21, "S1 Lower Lift", "S1 Lower Lift, wait 3, Rise [ 21]"
88, "WR Lower Lift", "WR Lower Lift, wait 3, Rise [ 88]"
10, "W1 Lower Lift", "W1 Lower Lift, wait 3, Rise [ 10]"
999, "-", "-"
123, "SR Lower Lift Fast", "SR Lower Lift Fast, wait 3, Rise [123]"
122, "S1 Lower Lift Fast", "S1 Lower Lift Fast, wait 3, Rise [122]"
120, "WR Lower Lift Fast", "WR Lower Lift Fast, wait 3, Rise [120]"
121, "W1 Lower Lift Fast", "W1 Lower Lift Fast, wait 3, Rise [121]"
"-----"
"Elevators"
230, "sR Elevator Up Next", "sR Elevator to Next Highest Floor [230]"
229, "s1 Elevator Up Next", "s1 Elevator to Next Highest Floor [229]"
228, "wR Elevator Up Next", "wR Elevator to Next Highest Floor [228]"
227, "w1 Elevator Up Next", "w1 Elevator to Next Highest Floor [227]"
999, "-", "-"
234, "sR Elevator Dn Next", "sR Elevator to Next Lowest Floor [234]"
233, "s1 Elevator Dn Next", "s1 Elevator to Next Lowest Floor [233]"
232, "wR Elevator Dn Next", "wR Elevator to Next Lowest Floor [232]"
231, "w1 Elevator Db Next", "w1 Elevator to Next Lowest Floor [231]"
999, "-", "-"
238, "sR Elevator Current", "sR Elevator to Current Floor [238]"
237, "s1 Elevator Current", "s1 Elevator to Current Floor [227]"
236, "wR Elevator Current", "wR Elevator to Current Floor [236]"
235, "w1 Elevator Current", "w1 Elevator to Current Floor [235]"
"------"
"Ceilings"
43, "SR Lower Ceiling F", "SR Lower Ceiling to Floor [ 43]"
41, "S1 Lower Ceiling F", "S1 Lower Ceiling to Floor [ 41]"
152, "wR Lower Ceiling F", "wR Lower Ceiling to Floor [152]"
145, "w1 Lower Ceiling F", "w1 Lower Ceiling to Floor [145]"
999, "-", "-"
186, "sR Ceil Up to HnC", "sR Ceiling Up to hnC [186]"
166, "s1 Ceil Up to HnC", "s1 Ceiling Up to hnC [166]"
151, "wR Ceil Up to HnC", "wR Ceiling Up to hnC [151]"
40, "W1 Ceil Up to HnC", "W1 Ceiling Up to hnC [ 40]"
999, "-", "-"
187, "sR Lower Ceiling 8aF", "sR Lower Ceiling to 8 above Floor [187]"
167, "s1 Lower Ceiling 8aF", "s1 Lower Ceiling to 8 above Floor [167]"
72, "WR Lower Ceiling 8aF", "WR Lower Ceiling to 8 above Floor [ 72]"
44, "W1 Lower Ceiling 8aF", "W1 Lower Ceiling to 8 above Floor [ 44]"
999, "-", "-"
205, "sR Lower Ceiling LnC", "sR Lower Ceiling to Lowest Neighbor Ceiling [205]"
203, "s1 Lower Ceiling LnC", "s1 Lower Ceiling to Lowest Neighbor Ceiling [203]"
201, "wR Lower Ceiling LnC", "wR Lower Ceiling to Lowest Neighbor Ceiling [201]"
199, "w1 Lower Ceiling LnC", "w1 Lower Ceiling to Lowest Neighbor Ceiling [199]"
999, "-", "-"
206, "sR Lower Ceiling HnF", "sR Lower Ceiling to Highest Neighbor Floor [206]"
204, "s1 Lower Ceiling HnF", "s1 Lower Ceiling to Highest Neighbor Floor [204]"
202, "wR Lower Ceiling HnF", "wR Lower Ceiling to Highest Neighbor Floor [202]"
200, "w1 Lower Ceiling HnF", "w1 Lower Ceiling to Highest Neighbor Floor [200]"
"Crushers"
184, "sR Slow Crusher Fd", "sR Start Slow Crusher - Fast damage [184]"
49, "S1 Slow Crusher Fd", "S1 Start Slow Crusher - Fast damage [ 49]"
73, "WR Slow Crusher Fd", "WR Start Slow Crusher - Fast damage [ 73]"
25, "W1 Slow Crusher Fd", "W1 Start Slow Crusher - Fast damage [ 25]"
999, "-", "-"
183, "sR Fast Crusher Sd", "sR Start Fast Crusher - Slow damage [183]"
164, "s1 Fast Crusher Sd", "s1 Start Fast Crusher - Slow damage [164]"
77, "WR Fast Crusher Sd", "WR Start Fast Crusher - Slow damage [ 77]"
6, "W1 Fast Crusher Sd", "W1 Start Fast Crusher - Slow damage [ 6]"
999, "-", "-"
185, "sR Slow Crusher QFd", "sR Start Slow Quiet Crusher - Fast damage [185]"
165, "s1 Slow Crusher QFd", "s1 Start Slow Quiet Crusher - Fast damage [165]"
150, "wR Slow Crusher QFd", "wR Start Slow Quiet Crusher - Fast damage [150]"
141, "W1 Slow Crusher QFd", "W1 Start Slow Quiet Crusher - Fast damage [141]"
999, "-", "-"
188, "sR Stop Crusher", "sR Stop Crusher [188]"
168, "s1 Stop Crusher", "s1 Stop Crusher [168]"
74, "WR Stop Crusher", "WR Stop Crusher [ 74]"
57, "W1 Stop Crusher", "W1 Stop Crusher [ 57]"
"Stairs"
258, "sR Raise Stairs 8", "sR Raise Stairs 8 [258]"
7, "S1 Raise Stairs 8", "S1 Raise Stairs 8 [ 7]"
256, "wR Raise Stairs 8", "wR Raise Stairs 8 [256]"
8, "W1 Raise Stairs 8", "W1 Raise Stairs 8 [ 8]"
999, "-", "-"
259, "sR Raise Stairs 16F", "sR Raise Stairs 16 Fast [259]"
127, "S1 Raise Stairs 16F", "S1 Raise Stairs 16 Fast [127]"
257, "wR Raise Stairs 16F", "wR Raise Stairs 16 Fast [257]"
100, "W1 Raise Stairs 16F", "W1 Raise Stairs 16 Fast [100]"
"Lighting"
139, "SR Lights to 35", "SR Light Level Drops to 35 [139]"
170, "s1 Lights to 35", "s1 Light Level Drops to 35 [170]"
79, "WR Lights to 35", "WR Light Level Drops to 35 [ 79]"
35, "W1 Lights to 35", "W1 Light Level Drops to 35 [ 35]"
999, "-", "-"
138, "SR Lights to 255", "SR Light Level Increases to 255 [138]"
171, "s1 Lights to 255", "s1 Light Level Increases to 255 [171]"
81, "WR Lights to 255", "WR Light Level Increases to 255 [ 81]"
13, "W1 Lights to 255", "W1 Light Level Increases to 255 [ 13]"
999, "-", "-"
192, "sR Lights Max N", "sR Light to Maximum Neighboring Light Level [192]"
169, "s1 Lights Max N", "s1 Light to Maximum Neighboring Light Level [169]"
80, "WR Lights Max N", "WR Light to Maximum Neighboring Light Level [ 80]"
12, "W1 Lights Max N", "W1 Light to Maximum Neighboring Light Level [ 12]"
999, "-", "-"
194, "sR Lights Min N", "sR Light to Minimum Neighboring Light Level [194]"
173, "s1 Lights Min N", "s1 Light to Minimum Neighboring Light Level [173]"
157, "wR Lights Min N", "wR Light to Minimum Neighboring Light Level [157]"
104, "W1 Lights Min N", "W1 Light to Minimum Neighboring Light Level [104]"
999, "-", "-"
193, "sR Lights Blink 1", "sR Start Lights Blinking every second [193]"
172, "s1 Lights Blink 1", "s1 Start Lights Blinking every second [172]"
156, "wR Lights Blink 1", "wR Start Lights Blinking every second [156]"
17, "W1 Lights Blink 1", "W1 Start Lights Blinking every second [ 17]"
999, "-", "-"
213, "Set Floor LightLev" "Set Tagged Sector's Floor Light Level [213]"
261, "Set Ceil LightLev" "Set Tagged Sector's Ceiling Light Level [261]"
"Teleports"
195, "sR Teleport", "sR Teleport to a Sector containing Teleport Thing [195]"
174, "s1 Teleport", "s1 Teleport to a Sector containing Teleport Thing [174]"
97, "WR Teleport", "WR Teleport to a Sector containing Teleport Thing [ 97]"
39, "W1 Teleport", "W1 Teleport to a Sector containing Teleport Thing [ 39]"
999, "-", "-"
126, "MR Teleport", "MR Teleport Monster Only [126]"
125, "M1 Teleport", "M1 Teleport Monster Only [125]"
999, "-", "-"
210, "sR Silent Teleport", "sR Silent Teleport to a Teleport Thing [210]"
209, "s1 Silent Teleport", "s1 Silent Teleport to a Teleport Thing [209]"
208, "wR Silent Teleport", "wR Silent Teleport to a Teleport Thing [208]"
207, "w1 Silent Teleport", "w1 Silent Teleport to a Teleport Thing [207]"
999, "-", "-"
269, "mR Silent Teleport", "mR Silent Teleport Monster Only to a Teleport Thing [269]"
268, "m1 Silent Teleport", "m1 Silent Teleport Monster Only to a Teleport Thing [268]"
999, "-", "-"
244, "wR Silent Line Tp", "wR Silent Teleport to a Line with Same Tag [244]"
243, "w1 Silent Line Tp", "w1 Silent Teleport to a Line with Same Tag [243]"
263, "wR Silent Line Rev", "wR Silent Teleport to a Line with Same Tag Reversed [263]"
262, "w1 Silent Line Rev", "w1 Silent Teleport to a Line with Same Tag Reversed [262]"
999, "-", "-"
267, "mR Silent Line Tp", "mR Silent Teleport Monster Only Line-Line [267]"
266, "m1 Silent Line Tp", "m1 Silent Teleport Monster Only Line-Line [266]"
265, "mR Silent Line Rev", "mR Silent Teleport Monster Only Line-Line Reversed [265]"
264, "m1 Silent Line Rev", "m1 Silent Teleport Monster Only Line-Line Reversed [264]"
"Exits"
11, "S1 Exit Level", "S1 Exit Level [ 11]"
52, "W1 Exit Level", "W1 Exit Level [ 52]"
197, "g1 Exit Level", "g1 Exit Level [197]"
999, "-", "-"
51, "S1 Exit Level S", "S1 Exit Level & goto Secret Level [ 51]"
124, "W1 Exit level S", "W1 Exit Level & goto Secret Level [124]"
198, "g1 Exit level S", "g1 Exit Level & goto Secret Level [198]"
"Specials"
191, "sR Lwr Pillar rDcTn", "sR Lower Pillar, raise Donut, change Texture/Type Numeric [191]"
9, "S1 Lwr Pillar rDcTn", "S1 Lower Pillar, raise Donut, change Texture/Type Numeric [ 9]"
155, "wR Lwr Pillar rDcTn", "wR Lower Pillar, raise Donut, change Texture/Type Numeric [155]"
146, "w1 Lwr Pillar rDcTn", "w1 Lower Pillar, raise Donut, change Texture/Type Numeric [146]"
999, "-", "-"
48, "** Animated Wall L", "** Animated wall, Scrolls Left [ 48]"
85, ".. Animated Wall R", ".. Animated wall, Scrolls Right [ 85]"
"Vectors"
223, ".. Friction Amount", ".. Sets Friction in Tagged Sector,Sludge<100, Ice>100 [223]"
224, ".. Linear Wind", ".. Sets Wind Force/Direction in Tagged Sectors [224]"
225, ".. Linear Current", ".. Sets Current Force/Direction in Tagged Sectors [225]"
226, ".. Pt. Source Push", ".. Sets Force of Point Push/Pull Field in Tagged Sectors [226]"
999, "-", "-"
242, ".. Sector Heights", ".. Set Tagged Sectors Drawn Heights to 1st Side's [242]"
260, ".. Translucency", ".. Set Tagged Lines (or this one if tag=0) Translucent [260]"
271, ".. Transfer Sky", ".. Set Tagged Sectors' Skies to 1st Side's Upper Texture [271]"
272, ".. Transfer Sky (flip)", ".. Set Tagged Sectors' Skies to 1st Side's Upper Texture, Flipped [272]"
999, "-", "-"
214, ".. Accel Ceiling", ".. Accel Tagged Ceiling w.r.t. 1st Side's Sector [214]"
215, ".. Accel Floor", ".. Accel Tagged Floor w.r.t. 1st Side's Sector [215]"
216, ".. Accel Objects", ".. Accel Objects on Tagged Floor wrt 1st Side's Sector [216]"
217, ".. Accel Flr & Obj", ".. Accel Objects & Tagged Floor wrt 1st Side's Sector [217]"
218, ".. Accel Wall", ".. Accel Tagged Wall w.r.t 1st Side's Sector [218]"
999, "-", "-"
245, ".. Affect Ceiling", ".. Scroll Tagged Ceiling w.r.t. 1st Side's Sector [245]"
246, ".. Affect Floor", ".. Scroll Tagged Floor w.r.t. 1st Side's Sector [246]"
247, ".. Affect Objects", ".. Scroll Objects on Tagged Floor wrt 1st Side's Sector [247]"
248, ".. Affect Flr & Obj", ".. Scroll Objects & Tagged Floor wrt 1st Side's Sector [248]"
249, ".. Affect Wall", ".. Scroll Tagged Wall w.r.t 1st Side's Sector [249]"
999, "-", "-"
250, ".. Scroll Ceiling", ".. Scroll Tagged Ceiling [250]"
251, ".. Scroll Floor", ".. Scroll Tagged Floor [251]"
252, ".. Scroll Objects", ".. Scroll Objects on Tagged Floor [252]"
253, ".. Scroll Flr & Obj", ".. Scroll Tagged Floor, Carry Objects [253]"
254, ".. Scroll Wall", ".. Scroll Tagged Wall, Same as Floor/Ceiling [254]"
999, "-", "-"
255, ".. Scroll by Sdf Off", ".. Scroll Wall Using Sidedef Offsets [255]"
"-------"
[sectors]
##############################################################################
############################### Sector List ##################################
##############################################################################
#Number,"Desc-------------", "### Long Desc"
"Normal"
0, "Normal", "Normal [ 0]"
"Lighting effects"
2, "Blinks 0.5 sec", "Light Blinks every 0.5 second [ 2]"
3, "Blinks 1.0 sec", "Light Blinks every second [ 3]"
13, "Blinks 0.5 sec sync", "Light Blinks every 0.5 second in Sync [13]"
12, "Blinks 1.0 sec sync", "Light Blinks every second in Sync [12]"
1, "Blinks randomly", "Light Blinks Randomly [ 1]"
8, "Pulsates Smoothly", "Light Pulsates Smoothly [ 8]"
17, "Flickers", "Light Flickers [17]"
"Painful floors"
7, "-2/5% health", "Minus 02/05% Health [ 7]"
5, "-5/10% health", "Minus 05/10% Health [ 5]"
16, "-10/20% health", "Minus 10/20% Health [16]"
4, "-10/20% & blinks", "Minus 10/20% Health and Light Blinks every 0.5 seconds [ 4]"
11, "-10/20% & end level", "Minus 10/20% Health and Exit Level when Health <= 10% [11]"
"Specials"
9, "Secret", "Secret Area [ 9]"
10, "Close after 30 secs", "Sector Drops 30 seconds after Starting Level [10]"
14, "Open/Close 5 mins", "Opens then Closes 5 minutes after Starting Level [14]"
"-"
#Color definitions taken from palette 0 of PLAYPAL entry in main IWAD
#You can customize these by changing which names reference which entries in
#the palette
[colors]
WHITE 4
BLACK 0
GRAY 103 "Textures not required" text.
DARKGRAY 100 3D boxes.
LIGHTGRAY 88 Highlight of 3D boxes.
DARKERGRAY 105 Lowlight of 3D boxes.
DARKBLUE 205 Grid.
SECTORTAGGED 176
SECTORSECRET 253
SECTORPAINFUL 118
SECTORLIGHT 193
LINEDEFTAGGED 176
LINEDEFSECRET 253
LINEDEFNOSOUND 185
LINEDEFNOPASS 121
LINEDEFNOMAP 219
MAGENTA 253
LIGHTRED 176
GREEN 118
LIGHTCYAN 193
DARKMAGENTA 253
DARKRED 185
DARKGREEN 121
ORANGE 219
LIGHTBLUE 197
BLUE 202
LIGHTGREEN 114
RED 183
LIGHTMAGENTA 250
CYAN 196
YELLOW 231
BROWN 144
[things]
#Common Things list goes down here so Doom 2 can append its additions -
# DO NOT MOVE THIS LIST FROM THE END OF FILE UNLESS YOU ARE GOING TO DO
# MAJOR RESTRUCTURING, OR THE DOOM II CONFIG MAY NOT WORK!
##############################################################################
############################### Things List ##################################
##############################################################################
#You can add new menus or revise existing ones; put new menu titles in double
#quotes like the existing ones. Thing entries must be in this pattern:
#Number,Color, | Radius, "Desc", "Sprite"
"Starting Positions"
1, LIGHTGREEN, 16, "Player 1 Start", "PLAYA1"
2, LIGHTGREEN, 16, "Player 2 Start", "PLAYB1"
3, LIGHTGREEN, 16, "Player 3 Start", "PLAYC1"
4, LIGHTGREEN, 16, "Player 4 Start", "PLAYD1"
11, LIGHTGREEN, 16, "Death Match Start", "PLAYF1"
14, YELLOW, 16, "Teleport Landing", "TFOGB0"
"Enemies"
3004, RED, 20, "Trooper","POSSF1"
9, RED, 20, "Shotgun Guy","SPOSB1"
58, RED, 30, "Spector","SARGB5"
3001, RED, 20, "Imp","TROOF1"
3002, RED, 30, "Demon","SARGF1"
3006, RED, 16, "Lost Soul","SKULD1"
3005, RED, 32, "Cacodemon","HEADA1"
3003, RED, 24, "Baron of Hell", "BOSSG1"
16, RED, 40, "Cyber Demon","CYBRF1"
7, RED, 80, "Spider Mastermind,"SPIDH1"
"Weapons"
2005, BLUE, 20, "Chainsaw", "CSAWA0"
2001, BLUE, 20, "Shotgun", "SHOTA0"
2002, BLUE, 20, "Chaingun", "MGUNA0"
2003, BLUE, 20, "Rocket Launcher", "LAUNA0"
2004, BLUE, 20, "Plasma Gun", "PLASA0"
2006, BLUE, 20, "BFG9000", "BFUGA0"
2035, ORANGE, 16, "Barrel", "BAR1A0"
"Ammunition"
2007, LIGHTCYAN, 16, "Ammo Clip", "CLIPA0"
2048, LIGHTCYAN, 16, "Box of Ammo", "AMMOA0"
2008, LIGHTCYAN, 16, "Shells", "SHELA0"
2049, LIGHTCYAN, 16, "Box of Shells", "SBOXA0"
2010, LIGHTCYAN, 16, "Rocket", "ROCKA0"
2046, LIGHTCYAN, 16, "Box of Rockets", "BROKA0"
2047, LIGHTCYAN, 16, "Energy Cell", "CELLA0"
17, LIGHTCYAN, 16, "Energy Pack", "CELPA0"
8, LIGHTCYAN, 16, "Backpack", "BPAKA0"
"Armour and Health"
2015, MAGENTA, 16, "Armour Helmet", "BON2D0"
2014, MAGENTA, 16, "Health Potion", "BON1D0"
2011, CYAN, 16, "Stim Pack", "STIMA0"
2012, CYAN, 16, "Medical Kit", "MEDIA0"
2018, CYAN, 16, "Armour (Green)", "ARM1A0"
2019, CYAN, 16, "Mega Armour (Blue)", "ARM2A0"
"Power-ups"
2024, LIGHTMAGENTA, 16, "Partial Invisibility Sphere", "PINSA0"
2013, LIGHTMAGENTA, 16, "Supercharge Sphere", "SOULA0"
2022, LIGHTMAGENTA, 16, "Invunerability Sphere", "PINVA0"
2025, LIGHTMAGENTA, 16, "Radiation Shielding Suit", "SUITA0"
2023, LIGHTMAGENTA, 16, "Berserk Sphere", "PSTRA0"
2045, LIGHTMAGENTA, 16, "Lite Amplification Goggles", "PVISA0"
2026, LIGHTMAGENTA, 16, "Computer Map", "PMAPD0"
"Keys"
13, MAGENTA, 20, "Red KeyCard", "RKEYA0"
38, MAGENTA, 20, "Red Skull Key", "RSKUA0"
5, MAGENTA, 20, "Blue KeyCard", "BKEYA0"
40, MAGENTA, 20, "Blue Skull Key", "BSKUA0"
6, MAGENTA, 20, "Yellow KeyCard", "YKEYA0"
39, MAGENTA, 20, "Yellow Skull Key", "YSKUA0"
"Dead Dudes"
15, BROWN, 16, "Dead Player (Green)", "PLAYN0"
18, BROWN, 16, "Dead ZombieMan", "POSSL0"
19, BROWN, 16, "Dead Shotgun Guy", "SPOSL0"
20, BROWN, 16, "Dead Imp", "TROOM0"
21, BROWN, 16, "Dead Demon", "SARGN0"
23, BROWN, 16, "Dead Lost Soul (Explosion)", "SKULH0"
22, BROWN, 16, "Dead Cacodemon", "HEADL0"
"Tortured Dudes"
25, BROWN, 16, "Impaled Body", "POL1A0"
26, BROWN, 16, "Impaled Twitching Body", "POL6A0"
49, BROWN, 16, "Hanging Swaying Body", "GOR1A0"
63, BROWN, 16, "Hanging Swaying Body *", "GOR1A0"
51, BROWN, 16, "Hanging One-legged Body", "GOR3A0"
61, BROWN, 16, "Hanging One-legged Body *", "GOR3A0"
53, BROWN, 16, "Hanging Leg", "GOR5A0"
62, BROWN, 16, "Hanging Leg *", "GOR5A0"
50, BROWN, 16, "Hanging Body with Arms Out", "GOR2A0"
59, BROWN, 16, "Hanging Body with Arms Out *", "GOR2A0"
52, BROWN, 16, "Hanging Pair of Legs", "GOR4A0"
60, BROWN, 16, "Hanging Pair of Legs *", "GOR4A0"
"Blood and Stuff"
24, BROWN, 16, "Pool of Blood", "POL5A0"
10, BROWN, 16, "Guts and Bones", "PLAYW0"
12, BROWN, 16, "Guts and Bones 2", "PLAYW0"
27, BROWN, 16, "Pole with Skull", "POL4A0"
28, BROWN, 16, "Skewer with Heads", "POL2A0"
42, BROWN, 16, "Skulls in Flames", "FSKUA0"
29, BROWN, 16, "Pile of Skulls", "POL3A0"
"Lighting"
34, WHITE, 10, "Candle", "CANDA0"
2028, WHITE, 16, "Lamp", "COLUA0"
35, WHITE, 16, "Candelabra", "CBRAA0"
57, WHITE, 16, "Small Red Torch", "SMRTA0"
46, WHITE, 16, "Tall Red Torch", "TREDA0"
55, WHITE, 16, "Small Blue Torch", "SMBTA0"
44, WHITE, 16, "Tall Blue Torch", "TBLUA0"
56, WHITE, 16, "Small Green Torch", "SMGTA0"
45, WHITE, 16, "Tall Green Torch", "TGRNA0"
"Miscellaneous"
33, BROWN, 16, "Short Red Pillar", "COL4A0"
32, BROWN, 16, "Tall Red Pillar", "COL3A0"
31, BROWN, 16, "Short Green Pillar", "COL2A0"
30, BROWN, 16, "Tall Green Pillar", "COL1A0"
37, BROWN, 16, "Red Pillar with Skull", "COL6A0"
36, BROWN, 16, "Pillar with Pumping Heart", "COL5B0"
48, BROWN, 16, "Technical Column", "ELECA0"
54, BROWN, 32, "Big Brown Tree", "TRE2A0"
43, BROWN, 16, "Short Grey Tree", "TRE1A0"
47, BROWN, 16, "Grey Tree Stump", "SMITA0"
41, BROWN, 16, "Eye in Symbol", "CEYEA0"
"Controllers"
5001, BROWN, 16, "Push Controller", "CANDA0"
5002, BROWN, 16, "Pull Controller", "CANDA0"
"-"


480
configs/doom17.dat Normal file
View File

@ -0,0 +1,480 @@
# Linetypes for MBF engine
#
# Commented entries below (beginning with #) are supported in Boom,
# but are commented out because DCK2.2-f does not allow more than a
# certain number of linedef types at a time. If uncomment one, you
# must comment out another to avoid the limit from being exceeded.
GAMEDATA
[Lines: Normal]
Normal Line (0); 0
[Lines: Door Open-Close]
DR Door OpenWaitClose (1); 1
SR Door OpenWaitClose (63); 63
S1 Door OpenWaitClose (29); 29
WR Door OpenWaitClose (90); 90
W1 Door OpenWaitClose (4); 4
DR Door OpenWaitClose Blue (26); 26
DR Door OpenWaitClose Red (28); 28
DR Door OpenWaitClose Yellow (27); 27
DR Door OpenWaitClose Blazing (117); 117
SR Door OpenWaitClose Blazing (114); 114
S1 Door OpenWaitClose Blazing (111); 111
WR Door OpenWaitClose Blazing (105); 105
W1 Door OpenWaitClose Blazing (108); 108
[Lines: Door Open-Stay]
DR Door OpenStay (31); 31
SR Door OpenStay (61); 61
S1 Door OpenStay (103); 103
WR Door OpenStay (86); 86
W1 Door OpenStay (2); 2
GR Door OpenStay (46); 46
DR Door OpenStay Blue (32); 32
DR Door OpenStay Red (33); 33
DR Door OpenStay Yellow (34); 34
DR Door OpenStay Blazing (118); 118
SR Door OpenStay Blazing (115); 115
S1 Door OpenStay Blazing (112); 112
WR Door OpenStay Blazing (106); 106
W1 Door OpenStay Blazing (109); 109
S1 Door OpenStay Blazing Blue (133); 133
S1 Door OpenStay Blazing Red (135); 135
S1 Door OpenStay Blazing Yellow (136); 136
[Lines: Door Close]
SR Door Close (42); 42
S1 Door Close (50); 50
WR Door Close (75); 75
W1 Door Close (3); 3
SR Door Close Blazing (116); 116
S1 Door Close Blazing (113); 113
WR Door Close Blazing (107); 107
W1 Door Close Blazing (110); 110
WR Door Close for 30 Seconds (76); 76
W1 Door Close For 30 Seconds (16); 16
SR Door Close for 30 Seconds (196); 196
S1 Door Close For 30 Seconds (175); 175
[Lines: Platforms]
SR Plat DownWaitUpStay (62); 62
S1 Plat DownWaitUpStay (21); 21
WR Plat DownWaitUpStay (88); 88
W1 Plat DownWaitUpStay (10); 10
SR Plat DownWaitUpStay Blazing (123); 123
S1 Plat DownWaitUpStay Blazing (122); 122
WR Plat DownWaitUpStay Blazing (120); 120
W1 Plat DownWaitUpStay Blazing (121); 121
WR Plat Start UpWaitDownWait (87); 87
W1 Plat Start UpWaitDownWait (53); 53
SR Plat Start UpWaitDownWait (181); 181
S1 Plat Start UpWaitDownWait (162); 162
WR Plat Stop UpWaitDownWait (89); 89
W1 Plat Stop UpWaitDownWait (54); 54
SR Plat Stop UpWaitDownWait (182); 182
S1 Plat Stop UpWaitDownWait (163); 163
SR Plat Toggle UpDownInstant (211); 211
WR Plat Toggle UpDownInstant (212); 212
[Lines: Elevators]
#W1 Raise Elevator Next Floor (227); 227
WR Raise Elevator Next Floor (228); 228
S1 Raise Elevator Next Floor (229); 229
SR Raise Elevator Next Floor (230); 230
#W1 Lower Elevator Next Floor (231); 231
WR Lower Elevator Next Floor (232); 232
S1 Lower Elevator Next Floor (233); 233
SR Lower Elevator Next Floor (234); 234
#W1 Elevator To Current Floor (235); 235
WR Elevator To Current Floor (236); 236
S1 Elevator To Current Floor (237); 237
SR Elevator To Current Floor (238); 238
[Lines: Lighting]
WR Lights to 0 (79); 79
W1 Lights to 0 (35); 35
SR Lights to 0 (139); 139
S1 Lights to 0 (170); 170
WR Lights To Dimmest Near (157); 157
W1 Lights To Dimmest Near (104); 104
SR Lights To Dimmest Near (194); 194
S1 Lights To Dimmest Near (173); 173
WR Lights to 255 (81); 81
W1 Lights to 255 (13); 13
SR Lights to 255 (138); 138
S1 Lights to 255 (171); 171
WR Lights to Brightest Near (80); 80
W1 Lights to Brightest Near (12); 12
SR Lights to Brightest Near (192); 192
S1 Lights to Brightest Near (169); 169
W1 Lights Start Strobing (17); 17
WR Lights Start Strobing (156); 156
S1 Lights Start Strobing (172); 172
SR Lights Start Strobing (193); 193
[Lines: Teleports and Stairs]
WR Teleport (97); 97
W1 Teleport (39); 39
SR Teleport (195); 195
S1 Teleport (174); 174
WR Teleport Monster Only (125); 126
W1 Teleport Monster Only (125); 125
WR Silent Teleport (208); 208
W1 Silent Teleport (207); 207
SR Silent Teleport (210); 210
S1 Silent Teleport (209); 209
W1 Silent Line-Line Teleport (243); 243
WR Silent Line-Line Teleport (244); 244
WR Silent Teleport Monster Only (269); 269
#W1 Silent Teleport Monster Only (268); 268
#W1 Silent Line-Line Tele Reversed (262); 262
WR Silent Line-Line Tele Reversed (263); 263
WR Silent Tele Line-Line Monster (266); 267
#W1 Silent Tele Line-Line Monster (266); 266
#WR Silent Tele Line-Line Rev Monster (265); 265
#W1 Silent Tele Line-Line Rev Monster (264); 264
S1 Stairs Build 8 High (7); 7
W1 Stairs Build 8 High (8); 8
S1 Stairs Build 16 Turbo (127); 127
W1 Stairs Build 16 Turbo (100); 100
[Lines: Crushers, etc]
W1 Ceiling Stutter Start FastDmg (141); 141
#WR Ceiling Stutter Start FastDmg (150); 150
S1 Ceiling Stutter Start FastDmg (165); 165
SR Ceiling Stutter Start FastDmg (185); 185
W1 Ceiling Crush Start SlowDmg (6); 6
WR Ceiling Crush Start SlowDmg (73); 73
S1 Ceiling Crush Start SlowDmg (164); 164
SR Ceiling Crush Start SlowDmg (183); 183
W1 Ceiling Crush Start FastDmg (25); 25
WR Ceiling Crush Start FastDmg (77); 77
S1 Ceiling Crush Start FastDmg (49); 49
SR Ceiling Crush Start FastDmg (184); 184
W1 Ceiling Crush Stop (57); 57
WR Ceiling Crush Stop (74); 74
#S1 Ceiling Crush Stop (168); 168
SR Ceiling Crush Stop (188); 188
W1 Ceiling Crush&Stay (44); 44
WR Ceiling Crush&Stay (72); 72
S1 Ceiling Crush&Stay (167); 167
SR Ceiling Crush&Stay (187); 187
W1 Ceiling Lower To Floor (145); 145
WR Ceiling Lower To Floor (152); 152
S1 Ceiling Lower To Floor (41); 41
SR Ceiling Lower To Floor (43); 43
#W1 Ceiling Lower To Highest Floor (200); 200
WR Ceiling Lower To Highest Floor (202); 202
#S1 Ceiling Lower To Highest Floor (204); 204
SR Ceiling Lower To Highest Floor (206); 206
W1 Ceiling Lower To Lowest (199); 199
WR Ceiling Lower To Lowest (201); 201
#S1 Ceiling Lower To Lowest (203); 203
SR Ceiling Lower To Lowest (205); 205
W1 Floor Raise Crush (56); 56
WR Floor Raise Crush (94); 94
S1 Floor Raise Crush (55); 55
SR Floor Raise Crush (65); 65
W1 Floor Lower Ceiling Raise Crush (40); 40
WR Floor Lower Ceiling Raise Crush (151); 151
S1 Floor Lower Ceiling Raise Crush (166); 166
SR Floor Lower Ceiling Raise Crush (186); 186
[Lines: Exits]
S1 Exit Level (11); 11
W1 Exit Level (52); 52
G1 Exit Level (197); 197
W1 Exit To 31 (Secret Level 1) (124); 124
S1 Exit To 32 (Secret Level 2) (51); 51
S1 Exit To 9 (Secret Level) (51); 51
#G1 Exit To Secret Level (198); 198
[Lines: Properties Transfer]
Set Tagged Sector's Draw Heights (242); 242
Set Tagged Skies' Texture (271); 271
Set Tagged Skies' Texture, Flipped (272); 272
Make Tagged Lines Translucent (260); 260
Set Sector's Floor Light Level (213); 213
Set Sector's Ceiling Light Level (261); 261
[Lines: Scroll Effects]
Effect Scrolling First Side (48); 48
Reverse Scrolling First Side (85); 85
Displace Scroll Sector's Ceiling (245); 245
Displace Scroll Sector's Floor (246); 246
Displace Things on Tagged Floor (247); 247
Displ Scroll Floor & Carry Things (248); 248
Displace 1st Side Tagged Line (249); 249
Accel Scroll Sector's Ceiling (214); 214
Accel Scroll Sector's Floor (215); 215
Accel Things on Tagged Floor (216); 216
Accel Scroll Floor & Carry Things (217); 217
Accel Scroll 1st Side Tagged Line (218); 218
Scroll Sector's Ceiling (250); 250
Scroll Sector's Floor (251); 251
Carry Things On Tagged Floor (252); 252
Scroll&Carry Things Sector Floor (253); 253
Scroll First Side of Tagged Line (254); 254
Effect Scrolling From XY Offsets (255); 255
[Lines: Friction, Wind, Current]
Friction, Ice>100, Sludge<100 (223); 223
Wind Force/Direction (224); 224
Current Force/Direction (225); 225
Force of Point Push/Pull Field (226); 226
[Lines: Floor Lowers]
S1 Floor Change Donut (9); 9
#SR Floor Change Donut (191); 191
W1 Floor Change Donut (146); 146
#WR Floor Change Donut (155); 155
W1 Floor Lower To Near (219); 219
WR Floor Lower To Near (220); 220
S1 Floor Lower To Near (221); 221
SR Floor Lower To Near (222); 222
WR Floor Lower To Highest (83); 83
W1 Floor Lower To Highest (19); 19
SR Floor Lower To Highest (45); 45
S1 Floor Lower To Highest (102); 102
SR Floor Lower To Lowest (60); 60
S1 Floor Lower To Lowest (23); 23
WR Floor Lower To Lowest (82); 82
W1 Floor Lower To Lowest (38); 38
WR Floor Lower Turbo (98); 98
W1 Floor Lower Turbo (36); 36
SR Floor Lower Turbo (70); 70
S1 Floor Lower Turbo (71); 71
WR Floor Lower & Change (84); 84
W1 Floor Lower & Change (37); 37
SR Floor Lower & Change (177); 177
S1 Floor Lower & Change (159); 159
[Lines: Floor Raises]
W1 Floor Raise (5); 5
WR Floor Raise (91); 91
S1 Floor Raise (101); 101
SR Floor Raise (64); 64
W1 Floor Raise Turbo (130); 130
WR Floor Raise Turbo (129); 129
S1 Floor Raise Turbo (131); 131
SR Floor Raise Turbo (132); 132
W1 Floor Raise To Nearest (119); 119
WR Floor Raise To Nearest (128); 128
S1 Floor Raise To Nearest (18); 18
SR Floor Raise To Nearest (69); 69
W1 Floor Raise 24 (58); 58
WR Floor Raise 24 (92); 92
S1 Floor Raise 24 (161); 161
SR Floor Raise 24 (180); 180
W1 Floor Raise 24 & Change (59); 59
WR Floor Raise 24 & Change (93); 93
S1 Floor Raise 24 & Change (160); 160
SR Floor Raise 24 & Change (179); 179
W1 Floor Raise 24 & Change Tex (143); 143
#WR Floor Raise 24 & Change Tex (148); 148
S1 Floor Raise 24 & Change Tex (15); 15
SR Floor Raise 24 & Change Tex (66); 66
W1 Floor Raise 32 & Change Tex (144); 144
#WR Floor Raise 32 & Change Tex (149); 149
S1 Floor Raise 32 & Change Tex (14); 14
SR Floor Raise 32 & Change Tex (67); 67
W1 Floor Raise 512 (142); 142
#WR Floor Raise 512 (147); 147
S1 Floor Raise 512 (140); 140
SR Floor Raise 512 (178); 178
W1 Floor Raise Near & Change (22); 22
WR Floor Raise Near & Change (95); 95
S1 Floor Raise Near & Change (20); 20
SR Floor Raise Near & Change (68); 68
W1 Floor Raise To Short Tex (30); 30
WR Floor Raise To Short Tex (96); 96
S1 Floor Raise To Short Tex (158); 158
SR Floor Raise To Short Tex (176); 176
G1 Floor Raise (24); 24
G1 Floor Raise Near & Change (47); 47
[Sectors]
Normal; 0
Light blinks randomly; 1
Light blinks on every 0.5 seconds; 2
Light blinks on every 1.0 seconds; 3
Light pulses smoothly; 8
Light blinks on every 1.0 seconds (Synch); 12
Light blinks on every 0.5 seconds (Synch); 13
Light flickers like fire; 17
Secret credit given; 9
-10% / 20% health; 16
-05% / 10% health; 5
-02% / 05% health; 7
-10% / 20% health & light blinks every 0.5 seconds; 4
-10% / 20% health until 10% left, then ends level; 11
30 seconds after level start, closes like a door; 10
5 minutes after level start, opens and closes; 14
Friction; 256
Pusher; 512
[Angles]
North; 90
South; 270
East; 0
West; 180
Northeast; 45
Northwest; 135
Southeast; 315
Southwest; 225
[Things: Miscellaneous]
Color; Brown
Push Controller; 5001;
Pull Controller; 5002;
Color; Green
Dog; 888;
[TInfo]
# Thing information: Type; Radius; Height; DrawAngleData (0/1)
# Nonspecified things have radius of 19 and height of 16, and don't draw
# angles.
# players, dm, teleport.. etc
1; 20; 56; 1
2; 20; 56; 1
3; 20; 56; 1
4; 20; 56; 1
14; 20; 56; 1
11; 20; 56; 1
# monsters
888; 12; 28; 1
3004; 20; 56; 1
84; 20; 56; 1
9; 20; 56; 1
65; 20; 56; 1
3001; 20; 56; 1
3002; 30; 56; 1
58; 30; 56; 1
3006; 16; 56; 1
3005; 31; 56; 1
69; 24; 64; 1
3003; 24; 64; 1
68; 64; 64; 1
71; 31; 56; 1
66; 20; 56; 1
67; 48; 64; 1
64; 20; 56; 1
7; 128; 100; 1
16; 40; 110; 1
#other items
72; 16; 72; 0
2035; 10; 42; 0
54; 32; 16; 0
#radius of 19 means don't check for thing collisions
#(yah yah, bad i know :)
5; 19; 16; 0
6; 19; 16; 0
13; 19; 16; 0
40; 19; 16; 0
39; 19; 16; 0
38; 19; 16; 0
2012; 19; 16; 0
2011; 19; 16; 0
2018; 19; 16; 0
2019; 19; 16; 0
2025; 19; 16; 0
2015; 19; 16; 0
2014; 19; 16; 0
2013; 19; 16; 0
2026; 19; 16; 0
2024; 19; 16; 0
2023; 19; 16; 0
2022; 19; 16; 0
2045; 19; 16; 0
83; 19; 16; 0
2001; 19; 16; 0
2005; 19; 16; 0
2002; 19; 16; 0
82; 19; 16; 0
2003; 19; 16; 0
2004; 19; 16; 0
2006; 19; 16; 0
2007; 19; 16; 0
2008; 19; 16; 0
2048; 19; 16; 0
2049; 19; 16; 0
2010; 19; 16; 0
2046; 19; 16; 0
2047; 19; 16; 0
17; 19; 16; 0
8; 19; 16; 0
5001; 19; 16; 1
5002; 19; 16; 1
[Lines_NoTag]
# A list of all the line types that don't require tags.
1
99
26
28
27
117
31
32
33
34
118
48
124
11
52
51
197
198
85
255
260
#
# $Id: doom17.dat,v 1.18 1998/05/12 06:15:25 killough Exp $
#
# $Log: doom17.dat,v $
# Revision 1.18 1998/05/12 06:15:25 killough
# Change push/pull controller thing numbers
#
# Revision 1.17 1998/05/11 16:15:08 jim
# changed push things
#
# Revision 1.16 1998/04/17 10:26:41 killough
# Add new silent teleporters, fix problems
#
# Revision 1.13 1998/04/12 02:11:22 killough
# Add types 260-264
#
# Revision 1.12 1998/03/28 17:50:16 killough
# Fix typos and DCK limits exceeded
#
# Revision 1.11 1998/03/23 23:30:34 jim
# update DCK files for push things
#
# Revision 1.9 1998/03/23 03:09:43 killough
# Comment out some linedef types since DCK crashes
#
# Revision 1.8 1998/03/20 02:11:55 jim
# added new friction linedef
#
# Revision 1.7 1998/03/16 15:49:38 killough
# Add accellerative scrollers, merge Jim's changes
#
# Revision 1.4 1998/03/12 21:54:02 jim
# Freed up 12 linedefs for use as vectors
#
# Revision 1.3 1998/03/10 03:15:21 killough
# nothing really
#
# Revision 1.2 1998/03/09 08:00:09 killough
# fix comments
#
#


478
configs/doom19.dat Normal file
View File

@ -0,0 +1,478 @@
# Linetypes for Boom engine (TeamTNT)
#
# Contact killough@classicgaming.com for questions about
# this file (not DCK generally), as Ben Morris no longer
# maintains DCK, and does not use Boom.
#
# No linedef types > 255 are supported with DCK versions
# starting with DCK3.0. Use DCK2.2-f if you want to use
# linedef types > 255, as DCK3.* will ruin wads that use
# such linedefs.
GAMEDATA
[Actions: Normal]
Normal Line (0); 0
[Actions: Door Open-Close]
DR Door OpenWaitClose (1); 1
SR Door OpenWaitClose (63); 63
S1 Door OpenWaitClose (29); 29
WR Door OpenWaitClose (90); 90
W1 Door OpenWaitClose (4); 4
DR Door OpenWaitClose Blue (26); 26
DR Door OpenWaitClose Red (28); 28
DR Door OpenWaitClose Yellow (27); 27
DR Door OpenWaitClose Blazing (117); 117
SR Door OpenWaitClose Blazing (114); 114
S1 Door OpenWaitClose Blazing (111); 111
WR Door OpenWaitClose Blazing (105); 105
W1 Door OpenWaitClose Blazing (108); 108
[Actions: Door Open-Stay]
DR Door OpenStay (31); 31
SR Door OpenStay (61); 61
S1 Door OpenStay (103); 103
WR Door OpenStay (86); 86
W1 Door OpenStay (2); 2
GR Door OpenStay (46); 46
DR Door OpenStay Blue (32); 32
DR Door OpenStay Red (33); 33
DR Door OpenStay Yellow (34); 34
DR Door OpenStay Blazing (118); 118
SR Door OpenStay Blazing (115); 115
S1 Door OpenStay Blazing (112); 112
WR Door OpenStay Blazing (106); 106
W1 Door OpenStay Blazing (109); 109
S1 Door OpenStay Blazing Blue (133); 133
S1 Door OpenStay Blazing Red (135); 135
S1 Door OpenStay Blazing Yellow (136); 136
[Actions: Door Close]
SR Door Close (42); 42
S1 Door Close (50); 50
WR Door Close (75); 75
W1 Door Close (3); 3
SR Door Close Blazing (116); 116
S1 Door Close Blazing (113); 113
WR Door Close Blazing (107); 107
W1 Door Close Blazing (110); 110
WR Door Close for 30 Seconds (76); 76
W1 Door Close For 30 Seconds (16); 16
SR Door Close for 30 Seconds (196); 196
S1 Door Close For 30 Seconds (175); 175
[Actions: Platforms]
SR Plat DownWaitUpStay (62); 62
S1 Plat DownWaitUpStay (21); 21
WR Plat DownWaitUpStay (88); 88
W1 Plat DownWaitUpStay (10); 10
SR Plat DownWaitUpStay Blazing (123); 123
S1 Plat DownWaitUpStay Blazing (122; 122
WR Plat DownWaitUpStay Blazing (120); 120
W1 Plat DownWaitUpStay Blazing (121); 121
WR Plat Start UpWaitDownWait (87); 87
W1 Plat Start UpWaitDownWait (53); 53
SR Plat Start UpWaitDownWait (181); 181
S1 Plat Start UpWaitDownWait (162); 162
WR Plat Stop UpWaitDownWait (89); 89
W1 Plat Stop UpWaitDownWait (54); 54
SR Plat Stop UpWaitDownWait (182); 182
S1 Plat Stop UpWaitDownWait (163); 163
SR Plat Toggle UpDownInstant (211); 211
WR Plat Toggle UpDownInstant (212); 212
[Actions: Elevators]
W1 Raise Elevator Next Floor (227); 227
WR Raise Elevator Next Floor (228); 228
S1 Raise Elevator Next Floor (229); 229
SR Raise Elevator Next Floor (230); 230
W1 Lower Elevator Next Floor (231); 231
WR Lower Elevator Next Floor (232); 232
S1 Lower Elevator Next Floor (233); 233
SR Lower Elevator Next Floor (234); 234
W1 Elevator To Current Floor (235); 235
WR Elevator To Current Floor (236); 236
S1 Elevator To Current Floor (237); 237
SR Elevator To Current Floor (238); 238
[Actions: Lighting]
WR Lights to 0 (79); 79
W1 Lights to 0 (35); 35
SR Lights to 0 (139); 139
S1 Lights to 0 (170); 170
WR Lights To Dimmest Near (157); 157
W1 Lights To Dimmest Near (104); 104
SR Lights To Dimmest Near (194); 194
S1 Lights To Dimmest Near (173); 173
WR Lights to 255 (81); 81
W1 Lights to 255 (13); 13
SR Lights to 255 (138); 138
S1 Lights to 255 (171); 171
WR Lights to Brightest Near (80); 80
W1 Lights to Brightest Near (12); 12
SR Lights to Brightest Near (192); 192
S1 Lights to Brightest Near (169); 169
W1 Lights Start Strobing (17); 17
WR Lights Start Strobing (156); 156
S1 Lights Start Strobing (172); 172
SR Lights Start Strobing (193); 193
Set Sector's Floor Light Level (213); 213
[Actions: Teleports]
WR Teleport (97); 97
W1 Teleport (39); 39
SR Teleport (195); 195
S1 Teleport (174); 174
WR Teleport Monster Only (125); 126
W1 Teleport Monster Only (125); 125
WR Silent Teleport (208); 208
W1 Silent Teleport (207); 207
SR Silent Teleport (210); 210
S1 Silent Teleport (209); 209
W1 Silent Line-Line Teleport (243); 243
WR Silent Line-Line Teleport (244); 244
[Actions: Stairs]
S1 Stairs Build 8 High (7); 7
W1 Stairs Build 8 High (8); 8
S1 Stairs Build 16 Turbo (127); 127
W1 Stairs Build 16 Turbo (100); 100
[Actions: Crushers, etc]
W1 Ceiling Stutter Start FastDmg (141); 141
WR Ceiling Stutter Start FastDmg (150); 150
S1 Ceiling Stutter Start FastDmg (165); 165
SR Ceiling Stutter Start FastDmg (185); 185
W1 Ceiling Crush Start SlowDmg (6); 6
WR Ceiling Crush Start SlowDmg (73); 73
S1 Ceiling Crush Start SlowDmg (164); 164
SR Ceiling Crush Start SlowDmg (183); 183
W1 Ceiling Crush Start FastDmg (25); 25
WR Ceiling Crush Start FastDmg (77); 77
S1 Ceiling Crush Start FastDmg (49); 49
SR Ceiling Crush Start FastDmg (184); 184
W1 Ceiling Crush Stop (57); 57
WR Ceiling Crush Stop (74); 74
S1 Ceiling Crush Stop (168); 168
SR Ceiling Crush Stop (188); 188
W1 Ceiling Crush&Stay (44); 44
WR Ceiling Crush&Stay (72); 72
S1 Ceiling Crush&Stay (167); 167
SR Ceiling Crush&Stay (187); 187
W1 Ceiling Lower To Floor (145); 145
WR Ceiling Lower To Floor (152); 152
S1 Ceiling Lower To Floor (41); 41
SR Ceiling Lower To Floor (43); 43
#W1 Ceiling Lower To Highest Floor (200); 200
#WR Ceiling Lower To Highest Floor (202); 202
#S1 Ceiling Lower To Highest Floor (204); 204
SR Ceiling Lower To Highest Floor (206); 206
W1 Ceiling Lower To Lowest (199); 199
WR Ceiling Lower To Lowest (201); 201
S1 Ceiling Lower To Lowest (203); 203
SR Ceiling Lower To Lowest (205); 205
W1 Floor Raise Crush (56); 56
WR Floor Raise Crush (94); 94
S1 Floor Raise Crush (55); 55
SR Floor Raise Crush (65); 65
W1 Floor Lower Ceiling Raise Crush (40); 40
WR Floor Lower Ceiling Raise Crush (151); 151
S1 Floor Lower Ceiling Raise Crush (166); 166
SR Floor Lower Ceiling Raise Crush (186); 186
[Actions: Exits]
S1 Exit Level (11); 11
W1 Exit Level (52); 52
#G1 Exit Level (197); 197
W1 Exit To 31 (Secret Level 1) (124); 124
S1 Exit To 32 (Secret Level 2) (51); 51
S1 Exit To 9 (Secret Level) (51); 51
#G1 Exit To Secret Level (198); 198
[Actions: Friction, Wind, Current]
Friction, Ice>100, Sludge<100 (223); 223
Wind Force/Direction (224); 224
Current Force/Direction (225); 225
Force of Point Push/Pull Field (226); 226
[Actions: Scroll Effects]
Effect Scrolling First Side (48); 48
Reverse Scrolling First Side (85); 85
Set Tagged Sector's Texture Height (242); 242
Remote Scroll Sector's Ceiling (245); 245
Remote Scroll Sector's Floor (246); 246
Remote Carry Things on Floor (247); 247
Remote Scroll Floor & Carry Things (248); 248
Remote Scroll 1st Side Tagged Line (249); 249
Accel Scroll Sector's Ceiling (214); 214
Accel Scroll Sector's Floor (215); 215
Accel Carry Things on Floor (216); 216
Accel Scroll Floor & Carry Things (217); 217
Accel Scroll 1st Side Tagged Line (218); 218
Scroll Sector's Ceiling (250); 250
Scroll Sector's Floor (251); 251
Carry Things On Sector Floor (252); 252
Scroll&Carry Things Sector Floor (253); 253
Scroll First Side of Tagged Line (254); 254
Effect Scrolling From XY Offsets (255); 255
[Actions: Floor Lowers]
S1 Floor Change Donut (9); 9
#SR Floor Change Donut (191); 191
#W1 Floor Change Donut (146); 146
#WR Floor Change Donut (155); 155
W1 Floor Lower To Near (219); 219
WR Floor Lower To Near (220); 220
S1 Floor Lower To Near (221); 221
SR Floor Lower To Near (222); 222
WR Floor Lower To Highest (83); 83
W1 Floor Lower To Highest (19); 19
SR Floor Lower To Highest (45); 45
S1 Floor Lower To Highest (102); 102
SR Floor Lower To Lowest (60); 60
S1 Floor Lower To Lowest (23); 23
WR Floor Lower To Lowest (82); 82
W1 Floor Lower To Lowest (38); 38
WR Floor Lower Turbo (98); 98
W1 Floor Lower Turbo (36); 36
SR Floor Lower Turbo (70); 70
S1 Floor Lower Turbo (71); 71
WR Floor Lower & Change (84); 84
W1 Floor Lower & Change (37); 37
SR Floor Lower & Change (177); 177
S1 Floor Lower & Change (159); 159
#W1 Floor Change Trig (153); 153
WR Floor Change Trig (154); 154
#S1 Floor Change Trig (189); 189
SR Floor Change Trig (190); 190
#W1 Floor Change Numeric (215); 239
#WR Floor Change Numeric (216); 240
#S1 Floor Change Numeric (217); 241
SR Floor Change Numeric (218); 78
[Actions: Floor Raises]
W1 Floor Raise (5); 5
WR Floor Raise (91); 91
S1 Floor Raise (101); 101
SR Floor Raise (64); 64
W1 Floor Raise Turbo (130); 130
WR Floor Raise Turbo (129); 129
S1 Floor Raise Turbo (131); 131
SR Floor Raise Turbo (132); 132
W1 Floor Raise To Nearest (119); 119
WR Floor Raise To Nearest (128); 128
S1 Floor Raise To Nearest (18); 18
SR Floor Raise To Nearest (69); 69
W1 Floor Raise 24 (58); 58
WR Floor Raise 24 (92); 92
S1 Floor Raise 24 (161); 161
SR Floor Raise 24 (180); 180
W1 Floor Raise 24 & Change (59); 59
WR Floor Raise 24 & Change (93); 93
S1 Floor Raise 24 & Change (160); 160
SR Floor Raise 24 & Change (179); 179
W1 Floor Raise 24 & Change Tex (143); 143
WR Floor Raise 24 & Change Tex (148); 148
S1 Floor Raise 24 & Change Tex (15); 15
SR Floor Raise 24 & Change Tex (66); 66
W1 Floor Raise 32 & Change Tex (144); 144
WR Floor Raise 32 & Change Tex (149); 149
S1 Floor Raise 32 & Change Tex (14); 14
SR Floor Raise 32 & Change Tex (67); 67
W1 Floor Raise 512 (142); 142
WR Floor Raise 512 (147); 147
S1 Floor Raise 512 (140); 140
SR Floor Raise 512 (178); 178
W1 Floor Raise Near & Change (22); 22
WR Floor Raise Near & Change (95); 95
S1 Floor Raise Near & Change (20); 20
SR Floor Raise Near & Change (68); 68
W1 Floor Raise To Short Tex (30); 30
WR Floor Raise To Short Tex (96); 96
S1 Floor Raise To Short Tex (158); 158
SR Floor Raise To Short Tex (176); 176
G1 Floor Raise (24); 24
G1 Floor Raise Near & Change (47); 47
[Sectors]
Normal; 0
Light blinks randomly; 1
Light blinks on every 0.5 seconds; 2
Light blinks on every 1.0 seconds; 3
Light pulses smoothly; 8
Light blinks on every 1.0 seconds (Synch); 12
Light blinks on every 0.5 seconds (Synch); 13
Light flickers like fire; 17
Secret credit given; 9
-10% / 20% health; 16
-05% / 10% health; 5
-02% / 05% health; 7
-10% / 20% health & light blinks every 0.5 seconds; 4
-10% / 20% health until 10% left, then ends level; 11
30 seconds after level start, closes like a door; 10
5 minutes after level start, opens and closes; 14
[Angles]
North; 90
South; 270
East; 0
West; 180
Northeast; 45
Northwest; 135
Southeast; 315
Southwest; 225
[Thing Info]
# Thing information: Type; Radius; Height; AngleClash
# AngleClash: 0 = No angle/clash, 1 = angle, 2 = clash, 3 = angle/clash
# Nonspecified things have radius of 20 and height of 16, and don't draw
# angles or clash.
# players, dm, teleport.. etc
1; 20; 56; 3
2; 20; 56; 3
3; 20; 56; 3
4; 20; 56; 3
14; 20; 56; 3
11; 20; 56; 3
# monsters
3004; 20; 56; 3
84; 20; 56; 3
9; 20; 56; 3
65; 20; 56; 3
3001; 20; 56; 3
3002; 30; 56; 3
58; 30; 56; 3
3006; 16; 56; 3
3005; 31; 56; 3
69; 24; 64; 3
3003; 24; 64; 3
68; 64; 64; 3
71; 31; 56; 3
66; 20; 56; 3
67; 48; 64; 3
64; 20; 56; 3
7; 128; 100; 3
16; 40; 110; 3
#other items
72; 16; 72; 0
2035; 10; 42; 0
54; 32; 16; 2
5; 20; 16; 2
6; 20; 16; 2
13; 20; 16; 2
40; 20; 16; 2
39; 20; 16; 2
38; 20; 16; 2
2012; 20; 16; 2
2011; 20; 16; 2
2018; 20; 16; 2
2019; 20; 16; 2
2025; 20; 16; 2
2015; 20; 16; 2
2014; 20; 16; 2
2013; 20; 16; 2
2026; 20; 16; 2
2024; 20; 16; 2
2023; 20; 16; 2
2022; 20; 16; 2
2045; 20; 16; 2
83; 20; 16; 2
2001; 20; 16; 2
2005; 20; 16; 2
2002; 20; 16; 2
82; 20; 16; 2
2003; 20; 16; 2
2004; 20; 16; 2
2006; 20; 16; 2
2007; 20; 16; 2
2008; 20; 16; 2
2048; 20; 16; 2
2049; 20; 16; 2
2010; 20; 16; 2
2046; 20; 16; 2
2047; 20; 16; 2
17; 20; 16; 2
8; 20; 16; 2
5001; 20; 16; 1
5002; 20; 16; 1
[Things: Miscellaneous]
Color; Brown
Push Controller; 5001; CANDA0
Color; Brown
Pull Controller; 5002; CANDA0
[Actions without Tag]
# A list of all the line types that don't require tags.
1
99
26
28
27
117
31
32
33
34
118
48
124
11
52
51
197
198
85
255
#
# $Id: doom19.dat,v 1.17 1998/05/12 06:15:26 killough Exp $
#
# $Log: doom19.dat,v $
# Revision 1.17 1998/05/12 06:15:26 killough
# Change push/pull controller thing numbers
#
# Revision 1.16 1998/05/11 16:15:10 jim
# changed push things
#
# Revision 1.15 1998/04/17 10:26:43 killough
# Add new silent teleporters, fix problems
#
# Revision 1.14 1998/03/28 17:50:18 killough
# Fix typos and DCK limits exceeded
#
# Revision 1.13 1998/03/23 23:30:36 jim
# update DCK files for push things
#
# Revision 1.11 1998/03/23 03:09:45 killough
# Comment out some linedef types since DCK crashes
#
# Revision 1.10 1998/03/20 02:11:57 jim
# added new friction linedef
#
# Revision 1.9 1998/03/16 18:24:09 jim
# fixed format and renumbered conflicts
#
# Revision 1.6 1998/03/12 21:54:03 jim
# Freed up 12 linedefs for use as vectors
#
# Revision 1.5 1998/03/11 12:24:19 killough
# fix again
#
# Revision 1.4 1998/03/10 02:10:06 killough
# fix all sorts of broken things
#
# Revision 1.3 1998/03/09 08:01:11 killough
# fix comments
#
# Revision 1.2 1998/03/09 08:00:10 killough
# fix comments
#
#


View File

@ -53,5 +53,5 @@ AS_IF([test "x$enable_beta" != "xno"], [AC_DEFINE([BETA], [1], [Support for beta
AC_ARG_ENABLE([werror], AS_HELP_STRING([--enable-werror], [Treat warnings as errors]))
AS_IF([test "x$enable_werror" = "xyes"], [CFLAGS="$CFLAGS -Werror"])
AC_CONFIG_FILES([Makefile Source/Makefile])
AC_CONFIG_FILES([Makefile configs/Makefile docs/Makefile examples/Makefile Source/Makefile toolsrc/Makefile])
AC_OUTPUT

12
docs/Makefile.am Normal file
View File

@ -0,0 +1,12 @@
dist_doc_DATA = \
boom.txt \
boomdeh.txt \
boomref.txt \
dckboom.txt \
mbf.txt \
mbfedit.txt \
mbffaq.txt \
options.txt \
winmbf02.txt
EXTRA_DIST = winmbf02s.txt

1242
docs/boom.txt Normal file

File diff suppressed because it is too large Load Diff

2392
docs/boomdeh.txt Normal file

File diff suppressed because it is too large Load Diff

2434
docs/boomref.txt Normal file

File diff suppressed because it is too large Load Diff

43
docs/dckboom.txt Normal file
View File

@ -0,0 +1,43 @@
Enhanced Boom support for DCK
These copies of doom17.dat and doom19.dat replace the ones which come with
DCK2.2-f and DCK3.*, respectively, and they add most of the linedef, thing,
and sector types new to Boom, except for the "generalized" linedef types
(ones whose function is based on various bitfields in the linedef's type).
DCK2.2-f and later versions have bugs which made it difficult to add support
for Boom's new linedef types:
1) Both DCK2.2-f and DCK3.62 have a limit on the number of linedef types they
can handle at a time, which makes Boom have too many linedef types. Some of
the entries in doom17.dat and doom19.dat are thus commented out -- they were
chosen based on their expected usefulness. When there are too many linedef
types, DCK2.2-f says so, but DCK3.62 prints a cryptic exception traceback.
2) All versions of DCK starting with 3.0, but not DCK2.2-f, have a bug where
the largest linedef type that DCK can process correctly is 255. Somewhere in
DCK3.0 and later, the linedef type is being truncated to a single byte and
thus it becomes reduced MOD 256 (256=0, 257=1, etc.). If you edit wads with
DCK3.0 or later, linedef types >= 256 will be ruined if the wad is saved. The
only workaround is to use DCK2.2-f, or to only use linedef types < 256. Boom
has tried to keep as many useful linedef types under 256 as possible, the
most notable exception being 260 (translucency).
To make use of the new linedef, thing, and sector types available in Boom,
copy either doom17.dat or doom19.dat into your DCK directory, overwriting
the original (DCK2.2-f uses doom17.dat; later versions use doom19.dat).
WATERMAP.WAD is included to allow you to enter WATERMAP as a texture name
for underwater colormap effects. Add WATERMAP.WAD to DCK's list of texture
resources, and WATERMAP will be allowed to be entered as a texture name.
Other colormap names, as well as translucency filter names (see boomref.txt),
may need to be added to a wad as fake texture names, if DCK is to allow you
to enter them in sidedefs.
If you are unfamiliar with DCK2.2-f, it's the last freeware version of DCK,
and it is preferred over later versions by many wad authors including myself.
There is a copy of DCK2.2-f on my web page.
Lee Killough
http://classicgaming.com/doom/
http://www.teamtnt.com

366
docs/mbf.txt Normal file
View File

@ -0,0 +1,366 @@
Marine's Best Friend
-------------------------------------------------------------------------------
Programmer: Lee Killough
Artist: Len Pitre
PlayTesters: Ky (Rez) Moffet, Len Pitre, James (Quasar) Haley
Canine Consulting: Longplain Kennels, Reg'd
Sound Code: Shawn Hargreaves & Allegro Team
Additional Credit: id Software, TeamTNT
Special Thanks To: John Romero, Joel Murdoch
-------------------------------------------------------------------------------
Marine's Best Friend is a modification of the Doom source.
Features
* Friendly Monster AI
+ Friends attack enemies like players
+ Friendliness is a mobj property, like NOGRAVITY or SOLID
+ Friendly single-player helpers (dogs) can fill in coop starts
+ Friendliness is transferred by Arch-Vile, Pain Elemental, and Boss Spawner
+ Player autoaiming avoids friends if enemies are in range
+ Friends with missiles return one shot if shot by friends
+ Friends stay a "comfortable distance" away from players
+ Friends indicated by different color in automap
* AI Improvements
+ Avoid hazards (e.g. crushing ceilings)
+ Stop what they're doing and rescue dying friends
+ Follow enemies up lifts, instead of wandering off randomly
+ Back away from nearby enemies if advantageous
+ Avoid shooting friends who get in their way
+ Infighting when provoked by own kind (i.e. Doom's behavior) made optional
+ (Development) Code and data restructured to allow more efficient AI
* Doom Pre-Beta ("Press Release") Version Emulation
+ Classic BFG, Plasma Rifle, Chaingun, Rocket Launcher
+ Classic BFG allowed in regular (non-emulation) mode
+ Original Flaming Skulls
+ The 3 demo levels, "remastered"
+ Nightvision goggles, skullchests, demonic daggers, unholy bibles, etc.
+ Other Press Release version behaviors (e.g. invisibility, invulnerability)
* Improved Video Options
+ 640x400 high-detail mode, without bad side effects:
- Doom world scenes and automap are rendered in 640x400 for higher detail
- Doom's aspect ratio is preserved exactly (no elongated textures/sprites)
- Status bar, menus, text, intermission screens all remain full-sized
- Optional hardware page-flipping
+ Wait-free page-flipped 320x200 ModeX for smoother play on slow machines
+ Doom flashing disk icon reimplemented (was removed in linux port)
+ Video options can be changed in realtime in General menu
- Hires
- Page-flipping
- Wait for vertical retrace
- Translucency enable
- Translucency percentage
- PCX vs. BMP screenshots
- Doom flashing disk icon
- HOM cheat code optionally flashing or solid red
* DEH/BEX files embedded inside of wads (DEHACKED lump)
* OPTIONS lump for overriding config settings inside wads
+ Allows wad authors to set game options inside wads
+ Options are still editable by player, and are remembered on a per-wad basis
+ Doesn't interfere with the player's own defaults when not playing the wad
* Menu option to load up to two WAD and two DEH/BEX files at program startup
+ -noload command-line override switch
* Improved Menus
+ Informative warnings printed on menu screens when:
- changed option doesn't take effect until next new game or idclev
- changed option doesn't take effect until entire program is restarted
- option's current setting (e.g. loadgame) differs from its default setting
+ New "General" option menu, allows changing of many settings inside game
- Video
- Sound & Music
- Input Devices
- .WAD and .DEH/.BEX Files Preloaded at Startup
- Miscellaneous
+ New "Doom Compatibility" setup menu allows fine-control of all Doom
compatibility settings, instead of having only one "compatibility"
variable.
+ Numeric input improved
- Negative values are allowed
- Setup does not change game variables until input is "committed"
- Illegal or aborted input leaves game variables unchanged
- Backspace allowed during input
+ SSG weapon preferences allowed to be edited while playing Ultimate Doom
+ New hotkey for entering Setup Menu in one stroke during game
+ (Development) Filenames allowed to be entered
+ (Development) Menu items can span multiple lines on the screen
+ (Development) Action functions can be called after items are edited,
such as to change video mode in real-time
* Shotgun and Fist may be selected without toggling with the SSG/Chainsaw
* .lmp extension optional with -file if .wad file doesn't also exist
* Improved Automap
+ Option to display pointer coordinates instead of player coordinates
+ Automap setup menu rearranged for easier use
* Improved Demos
+ Pause allowed during demo playback
+ Single-player games can be saved during demo playback, to take snapshots
+ -recordfrom option added back, allowing demos to start from a saved game
+ Demos don't desync just because menu is accessed during recording
+ During demo playback, automap and menu are easier to use
+ No switching out of automap when player dies during demo playback
+ (Development) demo_version global variable to help preserve demo sync
* Improved Movement Clipping
+ Players can get out of 1s or 2s walls when they are otherwise stuck
+ Monsters do not get stuck hanging partially off of tall ledges
+ Monsters can move up and down stairs more easily (compatibility-optioned)
* More Realism (compatibility-optioned)
+ Non-sentient objects fall down under their own weight when their balance
is upset and they are more than halfway off of a ledge
+ Objects falling off tall ledges follow parabolic trajectory
+ Live monsters may be pushed off ledges, and intelligently try to recover
* New Bouncy Things (mobj) Flag
+ Missiles bounce off of floors and ceilings, such as classic BFG fireballs
+ Floating "bouncy" monsters bounce up and down if under gravity
+ Solid objects bounce off of walls and roll up and down stairs
+ DEH frames support bouncing grenades/pipebombs
* Touchy Things (mobj) Flag
+ Mines which detonate when touched or disturbed
+ Monsters which die when touched
* Doom Bugs Fixed (compatibility-optioned, where appropriate)
+ Fireballs (especially Mancubus) going through walls
+ Monsters stuck at doortracks or hanging over tall ledges
+ Slime trails reduced (caused by WAD coordinate system's limited precision)
+ Zombie players exiting levels, forever remaining zombies
+ Sky is unaffected by invulnerability colormap
+ On MAP30, any monster can telefrag anyone else
+ Boss spawners can't telefrag on any levels except MAP30
+ Soundtargets not remembered across savegames
+ Flickering light not remembered across savegames
+ Fractional floor & ceiling heights and xy offsets not saved in savegames
+ Revenant Tracers' tracking state not preserved across savegames
+ Raise to shortest texture considers "-" == "AASHITTY"
+ SSG shows reload frame while firing frame is still displayed
+ SSG neck is not lit up correctly when SSG is fired in a dark room
+ Demo desync if menu is accessed in the middle of recording a demo
+ Illegal menu activities during demos (e.g. loadgame during recording)
+ Arch-Vile hellfire spawned in wrong position
+ Voodoo dolls push up against wall as long as the real player is moving
+ Deleted thinkers referenced by monster targets/tracers, or soundtargets
+ Top of pistol appears at the bottom of screen when game starts
+ Monsters sometimes fire missiles back at wrong player when hit painfully
+ Extra-hard player death sound not working in Registered / Ultimate Doom
* Boom Bugs Fixed (Note: these are not TeamTNT fixes)
+ Doom incompatibilities fixed, with new option switches
- Stairbuilding
- Cheat code infinite duration
- God mode cheat is absolute
- Linedef effects with tag 0, e.g. all-lights-off effects
+ Bobbing / friction
- Bobbing based only on player-applied thrust, instead of total speed
- Friction algorithm made more efficient, and made sector-based
- Fixed bug which stopped all momentum when up against wall
- Friction (and wall-bouncing on ice) work on all objects, not just players
- Bobbing does not jerk when player moves in and out of icy sectors (v2.02)
- Sludge slowdown fixed
- Wall-running restored to Doom efficiency
+ Wind affects all sentient / shootable objects
+ Player corpse queue =traversal order= (caused weapon pickup problems in DM)
+ Fix opening limit removal
+ Response files
- Optional .rsp extension
- Correct error-handling (page faulted before)
+ Fix underwater slowdown
+ Fix sudden light changes over water sectors
+ Fix things disappearing over water sectors
+ Fix underwater sprite lighting (Two bugs: One in v2.01, another in v2.02)
+ Menu reset-to-defaults code made more robust, to prevent "false resets"
+ Monsters-stuck-on-doortracks have less turning (v2.02 bug)
+ Fixed message review w/ background messing up in smaller screen size
+ Aliasing of wall scrolling speeds > a certain speed, due to silent overflow
+ Fix new map thing flags' causing incompatibility with certain Doom wads
+ Fix filehandle leak in translucency code
+ Default skill level not remembered correctly across multiple games
+ Netgame inconsistencies if options are chosen differently (v2.02)
+ Referencing freed data pointed to by monsters' lastenemy field
+ Tagged DR doors' lighting effects made gradual, instead of totally on/off
+ Menu confirmation messages (yes/no) no longer limited to 40 characters
(Garbage at end of QuickLoad message fixed)
+ Sounds heard randomly in wrong locations (e.g. weapons fire, player death)
+ HUD counter update problem
+ Coop mode slowdown, a.k.a. Monster Medusa
+ Inconsistent use of stdout/stderr in output messages
+ SegViol if key_enter held down during program startup (message review)
+ Verbose "missing patch" error messages not printed unless -devparm used
+ Setup menu backspace
+ Indigo/Brown default chat keys reversed
+ Final Doom support
+ DEH
- Writing to dehout.txt replaced with -dehout option
- Fixed thing flag mnemonics bugs (TRANSLATION1/2, error detection)
- Hex allowed in numeric input (e.g. 0x1234abcd)
- Blank separation-line handling fixed
- Fixed memory leak
- Several SegViols fixed
- -bex may be used as a synonym of -deh
+ Screenshot, .cfg file, and savegame error-handling improved
- User-friendly messages printed when error occurs (e.g. "Disk Full")
- Original .cfg file left intact if new one cannot be written safely
+ Music
- Random noise heard in music (e.g. MM2 MAP23)
- MUS2MID programming errors (array size too small & undefined C behavior)
- Overall music quality improved
* WAD error autocorrection, to prevent game crashes
+ Clear 2s flag in one-sided linedefs
+ Fill in missing right sidedefs with dummy sidedef
* Improved Messages
+ Message review list may scroll up or down
+ Message review list may be temporary or permanent when activated
+ Message review list and normal Doom messages toggled more intuitively
+ Message timers are configurable (normal, review, chat)
* Blockmap
+ Blockmap generation algorithm rewritten (Note: this is not TeamTNT's)
+ Improved dynamic blockmap list maintenance (more robust and faster)
* Multiple -file and -deh options may be used on command-line / response file
* User-comments allowed to be embedded inside of .cfg files, and are preserved
* Performance Tuning
+ Assembly blit routines tuned for machines above and below P6-class
+ Monster target searches made faster by way of a multithreaded target list
+ Fixed-point arithmetic made faster
+ Sprite edge sorting made faster
+ Tuned register allocation and other compiler optimization flags
+ Sound FX code rewritten to be more efficient (in both memory and speed)
+ Gameplay more responsive
* Mobj pointer reference-counting added, to fix bugs and make game faster
* New code pointers
+ Variable-damage explosion
+ Mushroom cloud explosion
+ Linedef activation via code pointers
+ Object spawning code pointer
* New sky property-transfer linedef types (271-272)
+ Arbitrary opaque wall textures can be transferred to skies
+ Unlimited number of sky textures per level
+ No external info lumps necessary, no "per-level" programming required
+ Textures optionally flipped horizontally (as in Doom)
+ Long-period rotating skies (e.g. moon's orbit, starfield)
+ Animated skies
* Removed all references to TeamTNT/Boom (except in source comments and docs)
+ TNT cheat code prefixes removed
- TNTEM replaced with KILLEM
- TNTKA replaced with IDK, without introducing .deh incompatibilities
+ "Boom" filename strings replaced (boomsav[0-7].dsg, boom.cfg, etc.)
+ ENDBOOM lump replaced with ENDOOM, restoring Doom behavior on end screens
-------------------------------------------------------------------------------
MBF Files
File Description
mbf.exe MBF executable
betagrph.wad Graphics for beta emulation
betalevl.wad The 3 Demo levels for beta emulation
mbfedit.txt Describes the WAD/DEH editing features new to MBF
options.txt Describes the command-line/setup menu options new to MBF
mbffaq.txt FAQ about MBF
mbf.txt This file
asetup.exe Allegro setup program
snddrvr.txt Notes concerning sound drivers (from Boom distribution)
doom17.dat DCK2.2-f configuration file for editing MBF wads
common.cfg DETH configuration file for editing MBF wads
cwsdpmi.exe CWS DPMI host
examples.zip Small demonstrations of MBF features
copying.dj DJ Delorie Copyleft stuff
copying GPL license stuff
-------------------------------------------------------------------------------
DISCLAIMERS
MBF is unsupported software. There are no warranties as to its fitness for any
particular purpose. There are also no plans for future updates.
MBF is a single-player game. Multiplayer games may or may not work (some people
say they do work). Support files for multiplayer games (e.g. sersetup.exe) are
not included, but might be available elsewhere.
MBF is based on the Boom v2.02 source, but it is not supported by TeamTNT or
id Software. Don't ask them about MBF.
-------------------------------------------------------------------------------
Lee Killough Last Updated 12/22/1998

334
docs/mbfedit.txt Normal file
View File

@ -0,0 +1,334 @@
Marine's Best Friend Editing Features
Contents
1. New Linedef Types
2. New Thing Types / Flags
3. New Mobj Flags
4. DEH/BEX Mnemonic Names
5. DEH/BEX Code Pointers
6. DEHACKED lump
7. OPTIONS lump
-------------------------------------------------------------------------------
1. New Linedef Types
271: Transfer first sidedef's upper texture to tagged sectors' skies
272: Same as 271, only flipped horizontally
These linedefs transfer wall textures to skies. F_SKY1 must still be used as
the floor or ceiling texture in the sectors for which sky is desired, but the
presence of a 271 or 272 property-transfer linedef can change the sky texture
to something other than a level-based default.
Every sector with F_SKY1 floor or ceiling which shares the same sector tag
as the 271 or 272 linedef will use a sky texture based on the upper texture
of the first sidedef in the 271 or 272 linedef. Sectors with F_SKY1 floors or
ceilings which are not tagged with 271 or 272 linedefs, behave just like Doom.
Horizontal offsets or scrolling in the transferred texture, is converted into
rotation of the sky texture. Vertical offsets or scrolling is transferred as
well, allowing for precise adjustments of sky position. Unpegging in the sky
transfer linedef does not affect the sky texture.
Horizontal scrolling of the transferred upper wall texture is converted into
rotation of the sky texture, but it occurs at a very slow speed relative to
the moving texture, allowing for long-period rotations (such as one complete
revolution per Doom real-time hour).
Effects other than sky-transfer effects are not excluded from the affected
sector(s), and tags can be shared so long as the effects are unambiguous.
For example, a wall-scrolling linedef can share a sector tag with both its
affectee linedef (the one being scrolled), and with the sector that the
latter controls. There is no ambiguity because one effect (scrolling) applies
to a linedef, while the other effect (sky transfer) applies to a sector.
If a sector underneath a special sky needs to be set up to have a different
purpose (for example, if it is a lift or a stairbuilder), then two tags will
need to be created, and the transfer linedef and any scrolling linedefs will
need to be duplicated as well, so that the same effect as far as the sky goes,
is duplicated in two separate sector tags. This will not affect sky appearance,
but it will allow a special sector which needs a unique tag, to sit under such
a sky.
Animated textures may be transferred to skies as well.
In Doom, skies were flipped horizontally. To maintain compatibility with this
practice, the 272 linedef flips the wall image horizontally. The 271 linedef
does not flip the wall image, and it is intended to make it easier to take
existing non-flipped wall textures and transfer them to skies.
Sky textures which are different must be separated by non-sky textures, or
else the results are undefined.
sky.wad is an illustration of the sky effect.
-------------------------------------------------------------------------------
2. New Thing Types / Flags
There are a couple of new Thing types / flags:
A. Friendly monster flag
B. Reserved flag
C. Dogs
2A. Friendly monster flag
At level startup, every object in a level's map is spawned with the FRIEND
mobj flag set if bit 7 (mask 128) is set in the Thing's flag bits. This
allows two of the same species in a map to be marked as being of a different
persuasion. However, for various design reasons, if a thing is marked as being
friendly in its mobj definition, then it will always be friendly when spawned
as a map object, regardless of the Thing's flags.
So far, editor support for this feature is weak, but if a value >= 128 can
be entered for a Thing's flags, then generally speaking, you only need to add
128 to the value to turn it into a friendly thing. Real players are always
considered friendly, regardless of their Thing flags.
2B. Reserved bit
The thing flag bit which is 8 positions left of the least significant bit, and
which has a bitmask value of 256, is reserved to be 0. If this bit is not 0,
then MBF will clear all bits which were unused by Doom, which effectively ANDs
the flags with the value 31. This is to accomodate Doom wads edited by such
editors as HellMaker, which put 1's inside bits that were unused in Doom.
It is designed so that any thing flag bits added since Doom, should be cleared
in order to get Doom behavior. With over 90% of Doom editors out there, unused
(or simply unrecognized) thing flag bits are, by default, set to 0. But in
HellMaker and maybe a few other editors, 1's are used, and with wads developed
under these editors, we assume that the wad is strictly a Doom wad, and hence
none of the flags added to the engine, post-Doom, should be set to '1'.
2C. Dogs
Dogs, which are mobj #140, have Doomednum 888 (i.e. Thing Type #888). They
are not spawned as friendly dogs, unless explicitly marked as friendly by the
friendly thing flag, or unless the entire species (140) is marked friendly.
But this doesn't affect the normal spawning of dogs as friendly coop player
replacements -- players or their bot replacements are always friends.
Dogs have these lumps embedded inside the .exe, which can be modified by wads:
DOGS* sprites with frames A-I (0-8).
SFX # Lump Description
--------------------------------
109 DSDGSIT Waking up bark
110 DSDGATK Attacking bark
111 DSDGACT Roaming bark
112 DSDGDTH Death sound
113 DSDGPAIN Pain sound
-------------------------------------------------------------------------------
3. New Mobj Flags
There are three new Map Object (mobj) flags in MBF:
A. FRIEND (0x40000000)
B. BOUNCES (0x20000000)
C. TOUCHY (0x10000000)
3A. FRIEND (0x40000000) Mobj Flag
When the FRIEND mobj flag is set, a monster becomes the friend of the
player(s), and tries to help them.
Friendliness is a Map Object flag, not merely a Thing flag, because a monster's
friendliness can change during the game. For example, Arch-Viles transfer their
good or evil intentions towards the player, to the victims they resurrect. A
friendly Arch-Vile turns corpses into new friends, no matter what their motives
were when they died, and an unfriendly Arch-Vile turns them into player
enemies. Boss Spawners spawn monsters with the same friendliness as themselves.
Pain Elementals spawn Lost Souls with the same motives.
Friendly monsters with long-range missile capability (missilestates) fire back
only one shot each time they receive a painful hit from a friend such as the
player (monsters with automatic weapons fire back a short burst). Friendly
monsters without long-range missile capability do not retaliate when hit by
friendly fire.
Friendly monsters return to a player if they cannot find any enemy targets, or
if they lack long-range firing capability and they cannot seem to attack any
opponent for a significant period of time.
Player autoaiming does not fire at friends if there are any enemies within
autoaiming range. This avoids accidental shooting of friends by the player,
but does not rule out shooting friends if they are the only ones in sight
or they are the obvious target.
3B. BOUNCES (0x20000000) Mobj Flag
The BOUNCES mobj flag tells MBF that an object is "bouncy". What this means
exactly, depends on the rest of the flags:
BOUNCES + MISSILE:
With BOUNCES + MISSILE, the object behaves like a beta BFG fireball, exploding
on contact with walls and with non-inert objects, but bouncing off of floors
and ceilings. See the "Classic BFG" for an example of this flags combination.
BOUNCES + NOGRAVITY:
Unless it's a MISSILE too, the object generally bounces off of all surfaces
without loss of momentum.
BOUNCES + FLOAT:
Without NOGRAVITY, BOUNCES + FLOAT gives the ability for a monster to jump
when it needs to reach a high target, but to otherwise stay pretty low. See
dogfly.deh for an example of this flags combination.
For non-sentient objects, BOUNCES + FLOAT simply creates a higher bounce back.
BOUNCES + FLOAT + DROPOFF bounces back even higher than BOUNCES + FLOAT.
BOUNCES:
When BOUNCES isn't combined with MISSILE, it causes the object to simply bounce
off of floors and walls. If the object is under gravity (the NOGRAVITY flag is
not set), then its momentum is cut in half at each collision, in the component
of momentum which is perpendicular to the contacted surface. The object also
rolls up and down stairs, if under gravity. This flags combination is
illustrated in grenade.deh.
3C. TOUCHY (0x10000000) Mobj Flag
TOUCHY indicates that an object dies (or explodes) upon contact with a solid
object of a different species. It is used mainly to create mines which detonate
on contact (see mine.deh for an example). Other normal causes of death are not
ruled out, however, by the TOUCHY flag.
Pain Elementals and Lost Souls are considered part of the same species for the
purposes of dying by touch (but Barons and Hell Knights are not), because if
this weren't true, PEs and LSes would die almost immediately. (Also, a touchy
PE guarded by a flock of LSes has a nice ring to it :)
Different players are considered different species, so DM by touch is possible,
and suicide by touch is possible with voodoo dolls.
-------------------------------------------------------------------------------
4. DEH/BEX Mnemonic Names
FRIEND, BOUNCES, and TOUCHY are allowed as DEH/BEX mnemonics for flags. In MBF,
the mnemonics may be arbitrarily separated by + (plus) | (vertical bar) or ,
(comma), as well as optional whitespace. Values are ORed, which means listing
a flag multiple times is the same as listing it once.
TRANSLATION1 and TRANSLATION2 are also allowed as DEH/BEX mnemonics, and are
suggested replacements for the Boom TRANSLATION mnemonic. TRANSLATION1 selects
the least significant bit of the color translation, while TRANSLATION2 selects
the most significant bit. MBF is bug-compatibile with Boom's TRANSLATION
mnemonic, interpreting TRANSLATION to mean the same as TRANSLATION1.
-------------------------------------------------------------------------------
5. DEH/BEX Code Pointers
Several new code pointers have been added:
A_Detonate is similar to A_Explode in that it generate a radius of explosion
damage. However, instead of a fixed radius of 128, the radius is set by
changing the "missile damage" of the object being exploded. This allows
explosion damage to be varied easily.
A_Mushroom creates a mushroom-like explosion, throwing fireballs up in all
directions. There is primary damage from the explosion itself, and then
secondary damage from contact with the fireballs. The missile damage of the
spawning object controls how many fireballs are created. Optionally, the
misc1 ("Unknown 1") and misc2 ("Unknown 2") fields may be used to control
the angle and speed of the fireballs. These fields are fixed-point (16.16),
instead of whole numbers.
A_Spawn spawns an object in the same position as the spawner. The misc1 and
misc2 fields of the code pointer's frame (indicated by "Unknown 1" and
"Unknown 2" in DeHackEd), determine the type and z-position of the spawned
object, respectively. Note that if the spawner and spawnee are both solid,
they might stick together.
A_Turn rotates the object's angle by the number of degrees indicated by the
misc1 ("Unknown 1") field.
A_Face sets the object's angle to number of degrees in the misc1 ("Unknown 1")
field.
A_Scratch performs a melee (close-range) attack on the object's current target.
misc1 ("Unknown 1") indicates damage, while misc2 ("Unknown 2") indicates the
sound effect to use.
A_PlaySound plays a sound effect. misc1 ("Unknown 1") is the sound effect
number, and misc2 ("Unknown 2"), if nonzero, makes the sound full-volume
(like boss wakeup sounds).
A_RandomJump jumps randomly to the state in misc1 ("Unknown 1") with a
probability indicated by the misc2 ("Unknown 2") field (0-255). If the
jump doesn't occur, then it falls through to the next state. Note that
the frame's "tics" field must not be -1, for this to work correctly.
A_LineEffect allows activation of remote linedef effects by objects. misc1
("Unknown 1") indicates the linedef type, while misc2 ("Unknown 2") indicates
the sector tag. The tagged sector(s) are activated as though a player has
activated a linedef of the indicated type and tag. If the linedef is a S1 or
W1 type, then the effect blocks out all further A_LineEffect effects for the
object, no matter whether they are S1/W1 or SR/WR types.
A_Die causes an object to kill itself (i.e. commit suicide). It is primarily
used to make countdown timers in grenades.
-------------------------------------------------------------------------------
6. DEHACKED lump
The DEHACKED lump allows .deh/.bex files to be embedded inside of wads. If
there are multiple wads with DEHACKED lumps, or even multiple DEHACKED lumps
inside the same wad, then the last wad or lump which is read, has priority
where there is a conflict. However, the presence of a DEHACKED lump doesn't
completely invalidate previous DEHACKED lumps -- the effects are cumulative,
although later deh files can undo the effects of earlier ones.
The order in which .deh/.bex files are read and interpreted is:
1. .deh/.bex files listed on the command-line
2. .wad files listed on the command-line with DEHACKED lumps
3. Preincluded .wad files with DEHACKED lumps
4. Preincluded .deh/.bex files (in General menu)
DEHACKED lumps should consist of ordinary .deh/.bex file text.
Include directives are not allowed inside DEHACKED lumps, since the whole
purpose of DEHACKED lumps is to be entirely self-contained within a wad.
-------------------------------------------------------------------------------
7. OPTIONS lump
The OPTIONS lump allows wads to set game options, such as Doom Compatibility
options, chat strings, and enemies options.
The OPTIONS lump has the same format as mbf.cfg: A text file listing option
names and values, optionally separated by blank or comment lines. mbf.cfg
indicates options which are allowed to be set in wads, with asterisks (*).
When OPTIONS are set from wads, they are skipped on the menu screens.
Wad authors are urged to use these options responsibly, because they should
not be used to limit players, but to enhance the game. Many options such as
automap colors are allowed to be set from wads, but they should only be done
so if there are strong reasons to do so.
Players who are offended by wads setting certain options for them, should ask
wad authors not to set them, or should consider playing other wads. As a last
resort, players can use Deutex/Wintex/NWT/etc. to remove or modify the OPTIONS
lump themselves. They can also create a dummy wad with its own OPTIONS lump,
which completely replaces any OPTIONS set in wads. An OPTIONS lump with nothing
but blanks or comments, can be used to effectively nullify earlier ones.
Some options must be set in wads for compatibility reasons (otherwise the
wad may not work and the player might even get stuck in a level), while many
options are not necessary for compatibility.
-------------------------------------------------------------------------------
Lee Killough Last Updated 12/21/1998

148
docs/mbffaq.txt Normal file
View File

@ -0,0 +1,148 @@
Marine's Best Friend
Frequently Asked Questions
-------------------------------------------------------------------------------
Q: Why don't the friendly dogs retaliate when I shoot them?
A1. The dog is a close-attack monster (no missiles), and therefore to attack,
it would need to stop whatever it was doing and return to the player, and
it might not be able to reach the player before being attacked again by
another enemy, which is its prime concern. Even if it could reach the
player, it would only bite the player once, since friendly monsters don't
turn around and become enemies simply because they are hit once -- they
instead use tit-for-tat, returning friendly fire once, for each time they
are hit.
A2. This is normal behavior for real dogs, according to one dog expert.
-------------------------------------------------------------------------------
Q: Why do dogs readily go up steep or narrow stairs, but then sometimes won't
come back down?
A: According to a canine behavioural expert, this is consistent with the
typical behaviour of real dogs.
-------------------------------------------------------------------------------
Q: Why don't I see any new levels with -beta?
A: You must add -file betalevl to your command-line, to load the levels. The
levels in betalevl.wad are E1M2, E2M5, and E3M2, exactly as in the Press
Release Version of Doom. If you only use -beta, you will be enabling the
beta's features, but without the levels.
-------------------------------------------------------------------------------
Q: I get errors when I try to load betalevl.wad
A: betalevl.wad requires Registered Doom I (or Ultimate Doom) as the iwad.
However, the -beta command-line option, which enables the graphics and
game changes, does not require Doom I to be used, and it can emulate beta
features under Doom II.
-------------------------------------------------------------------------------
Q: When using -beta, why is there no teleporter fog? Or, why does player
invisibility look like invulnerability? Why are there no palette changes
when the radsuit is used, and why doesn't it wear off with time?
A: These behaviors are all consistent with the Press Release version of Doom,
alternatively called the "beta". See:
ftp://ftp.cdrom.com/pub/doom/historic/
-------------------------------------------------------------------------------
Q: Why is -beta a command-line option, and why must demos recorded with -beta
be played back with -beta?
A: The betagrph.wad file must be loaded, and several internal data structures
must be modified, prior to game startup. Allowing -beta to be turned on and
off during the game would introduce a lot of complications.
-------------------------------------------------------------------------------
Q: Why is there a separate option for the Classic BFG, but not for all of the
other -beta features?
A1. Not enough popular demand, given the complexity. Making individual beta
features optionable would require storing each one's selection status in
demos, savegames, etc., and it would require work to add them to the menus.
Probably only the Classic BFG is in enough demand to make a separate option
for it.
A2. The features such as the beta plasma rifle and the beta lost souls, or
the green nightvision goggles, require a lot of wad data to be loaded,
which -beta does by loading the betagrph.wad file. The Classic BFG only
requires two extra fireball sprites, which do not take a lot of memory,
and thus can be unconditionally tucked away inside the .exe.
-------------------------------------------------------------------------------
Q: But doesn't the plasma rifle simply need to shoot the alternating fireballs
instead of blue plasma, making it no more difficult than the BFG?
A: Actually, no. The plasma rifle sprites in Doom have some blue plasma
superimposed around the mouth of the plasma rifle. To remove this blue
plasma, new weapon sprites are needed. New weapon sprites are NOT needed
for the BFG, however.
-------------------------------------------------------------------------------
Q: Why can't the Unholy Cathedral beta level (E2M5 in betalevl.wad) be
finished, and why are some areas inaccessible?
A: This is consistent with the original Press Release version's levels.
Wad errors were intentionally not fixed.
-------------------------------------------------------------------------------
Q: But there are some slime trails and HOM in the original levels, which don't
show up in betalevl.wad!!!
A: Blatant rendering errors like HOM and slime trails were fixed. Even if they
weren't fixed, the slime trails would be hard to reproduce exactly because
they are inherently nondeterministic.
The criteria used when making changes were:
Rendering errors (e.g. HOM, slime trails): Fixed.
Aesthetic errors (e.g. wall texture choices, texture alignment): Not Fixed.
Level design errors (e.g. inaccessible areas of map): Not Fixed.
-------------------------------------------------------------------------------
Q: Why does the beta chaingun lower when I fire it in fullscreen mode?
A: This is to workaround a problem with the Press Release version's chaingun
sprites. The sprites were pre-clipped with respect to the status bar, and
the status bar was always turned on in the Press Release version. With
the status bar turned on, the -beta chaingun looks like the original. In
fullscreen mode, however, it must be lowered while it is being fired, or
else parts of the chaingun will not be updated, and it will look funny.
-------------------------------------------------------------------------------
Q: Why is the music quality so bad?
A1: You might have a file named default.cfg in the same directory as MBF.EXE.
Allegro considers this a music configuration file. Refer to Allegro docs.
A2: MBF music on AdLib cards is not the same as Doom, because the FM instrument
definitions are different. You may be able to import .IBK files into
Allegro to improve the music's quality. See the Allegro docs. Also see
snddrvr.txt for other alternatives.
-------------------------------------------------------------------------------
Q: Where do the dogs come from? I don't see any wads!!!
A: Dog sprites & sounds, like many other things, are embedded inside the .exe.
However, you can modify them with wads. See mbfedit.txt for details.
-------------------------------------------------------------------------------
Lee Killough Last Updated 12/22/98

388
docs/options.txt Normal file
View File

@ -0,0 +1,388 @@
Marine's Best Friend Options
This file describes in detail many of MBF's new options.
Refer to mbfedit.txt for the OPTIONS lump, which allows wads to set these
options.
1. Command-line Options
2. General Options
3. Doom Compatibility Options
4. Enemies Options
-------------------------------------------------------------------------------
1. Command-line Options
-noload supresses the loading of the .wad and .deh/.bex files listed on the
second page of the General menu.
-beta enables emulation of the "Press Release" version of Doom, also called
the beta version. It automatically loads betagrph.wad, which must be in the
same directory as mbf.exe. You may additionally use -file betalevl.wad to see
the 3 Press Release levels: E1M2, E2M5, E3M2 (this option requires Doom 1).
-dogs <nnn> Temporarily overrides the number of single-player helper dogs.
-recordfrom <nnn> <file> records a demo starting from a saved game. It is
the same as -loadgame <nnn> -record <file>. -loadgame <nnn> -playdemo <file>
plays back the demo starting from the saved game.
-------------------------------------------------------------------------------
2. General Options
These options are listed in the Options / General setup screen.
* Hires
This option enables 640x400 resolution. Using it requires a VBE2.0 driver
that supports 640x400x8bpp, such as SciTech's (UNIVBE).
* Page-flipping
This option enables page-flipping (sometimes called double-buffering).
In 320x200 mode, this option enables triple buffering, which is the
graphics mode that the original Doom under DOS used.
In 640x400 mode, this option enables hardware page-flipping between two
halves of a 640x800 virtual screen, and may improve performance.
* Wait For Vertical Retrace
If set to YES, this tells MBF to wait before performing page flips or
blitting, to avoid breaks in the screen.
* Enable Translucency
If this option is YES, translucency is enabled. When set to NO, all
translucency is disabled.
* Translucency Percentage
Controls the default translucency filter's foreground/background percentage
(Does not affect in-wad translucency maps which use linedef 260 to apply
them.) Warning: changing the translucency percentage may take several
seconds or even a minute on slow machines.
* PCX Instead of BMP for Screenshots
When set to YES, screenshots generate .PCX files. When set to NO, screenshots
generate .BMP files.
* Flash Disk Icon During Disk IO
This enables the Doom disk icon in the lower-right corner of the screen,
which flashes during disk IO.
* Flashing HOM Indicator
When this option is set to YES, the HOM cheat causes HOM to show up in
flashing red. When this option is set to NO, HOM is displayed as solid red.
* Sound Card
* Music Card
Allegro numbers for the sound cards used for SFX and Music, respectively.
-1 means autodetect, 0 means disabled, >0 is card-specific. Read snddrvr.txt
or consult the Allegro documentation for more details.
* Autodetect Number of Voices
Whether the number of voices divided between SFX and music should be detected
by a special algorithm which consults the Allegro SFX and music driver code.
* Number of Sound Channels
Number of distinct sound channels in Doom. This is the maximum number of
sounds Doom keeps track of at a time, whether or not a sound card is able
to play them all at once or not. This does not control the sound's mixer,
for example -- it simply limits how many distinct sounds Doom keeps track of.
* Enable v1.1 Pitch Effects
Whether the variable-pitch effect which was inside the original Doom source,
and which could be heard in v1.1 of Doom, should be enabled. This option
merely enables id's own variable-pitch effects -- it does not claim to be
very realistic, or claim that the variable-pitch effects are consistent.
* Enable Mouse
* Enable Joystick
* Keyboard LEDs Always Off
Self-explanatory.
* Files Preloaded At Game Startup
A list of up to 2 .wad and 2 .deh/.bex files to be loaded at game startup.
Intended only to be used for permanent game hacks, or long-term playing of
the same wad. Can be suppressed by using the -noload command-line option.
These .wad and .deh/.bex files are added last relative to all other .wad or
.deh/.bex files, so if there is a conflict among .wad file lumps, or among
.deh/.bex behaviors, these files win.
* Maximum Number of Player Corpses
The maximum number of player corpses which are kept around to see during
multiplayer games.
* Game Speed, Percentage of Normal
The speed of the game can be increased or decreased by changing this option,
the primary purpose of which is to fine-tune the game's responsiveness on a
slow system.
(Note: Not to sound apologetic, but it is well-known that some may want to
use this option to cheat at demos. No attempt is made to detect or flag demo
cheating, and demo cheating isn't considered reason enough to disallow this
option, which has other purposes. Demos must be recorded and submitted with
the honors system, in the author's opinion, but that almost goes w/o saying.)
-------------------------------------------------------------------------------
3. Doom Compatibility Options
Doom Compatibility options are options whose main purpose is to provide 100%
compatibility with some aspect of Doom. When these options are set to YES,
then MBF behaves the way Doom does for some aspect of the game. Most of these
options are set to NO by default.
What follows is a list of the options and a brief description of each:
* Any monster can telefrag on MAP30
When this option is set to YES, any monster can telefrag other monsters or
players on MAP30. When this option is set to NO, only Boss Spawners can
telefrag, and they can do this on all levels, not just MAP30.
* Some objects never hang over tall ledges
When this option is set to YES, most objects in Doom's universe without the
DROPOFF mobj flag set (which includes most non-floating objects except for
for players and corpses), cannot be pushed over tall ledges, no matter what
forces are applied to them, and regardless of whether it's voluntary. When
this option is set to NO, non-floating monsters (with the exception of dogs
in some cases) cannot voluntarily jump off of tall ledges, but they can be
pushed off of tall ledges by outside forces, such as gunfire, conveyors, or
wind. Setting this option to NO allows objects to be pushed off ledges by
outside forces.
* Objects don't fall under their own weight
When this option is set to YES, non-sentient objects that fall under gravity
stay seated at the highest height among all floors they contact. When this
option is set to NO, non-sentient objects that fall under gravity will tend
to fall off of ledges if their center of mass is off of it, as if by torque,
and will roll down stairs and ledges.
* Monsters randomly walk off of moving lifts
When this option is set to YES, monsters pay no special attention to lifts,
and may randomly walk on or off of them at any time. When this option is
set to NO, monsters stay on lifts if their targets are on them. This allows
monsters to more intelligently follow their targets on lifts, instead of
randomly leaving them behind. (This option might seem to go better with the
Enemies setup screen than Doom compatibility, but I consider this option a
nit, and I would probably never set it to YES myself. Lee)
* Monsters get stuck on doortracks
When this option is set to YES, monsters can get stuck trying to move at a
doortrack, just as in Doom. When this option is set to NO, monsters are able
to break free of doortracks, and their motions behave as though nothing
special had happened.
* Monsters don't give up pursuit of targets
When this option is set to YES, monsters do not give up pursuit of targets
in favor of closer targets, simply because their current targets have gone
out of sight (unless the target is a player and this is a multiplayer game).
When this option is set to NO, monsters will choose a visible target if their
current target is out of view. However, if they cannot immediately see a
closer target, they will always continue to pursue their original target.
* Arch-Vile resurrects invincible ghosts
When this option is set to YES, Arch-Viles are able to create nearly
invincible ghost monsters if they resurrect what's left of one under a
crusher or a door. When this option is set to NO, all resurrections will
be performed correctly and will avoid creating no-clipping monsters.
* Pain Elemental limited to 20 lost souls
When this option is set to YES, Pain Elementals will stop spawning Lost
Souls when there are 20 or more already in the level.
* Lost souls get stuck behind walls
When this option is set to YES, Lost Souls will be allowed to sometimes
get trapped behind walls. When this option is set to NO, special measures
are taken to make sure Lost Souls are not stuck behind walls.
* Blazing doors make double closing sounds
When this option is set to YES, blazing doors make a sound twice during
closing. When this option is set to NO, blazing doors make only one such
sound during closing.
* Tagged doors don't trigger special lighting
When this option is set to YES, DR door linedefs with non-zero tags do not
create any special lighting effects. When this option is set to NO, a Boom
lighting effect is enabled, in which opening and closing DR door linedefs
with non-zero tags, causes all tagged sectors' lighting to increase as the
door opens, and to decrease when it closes.
* God mode isn't absolute
When this option is set to YES, the iddqd cheat does not stop telefragging
or "Down to 11%" exit sectors from hurting the player. When this option is
set to NO, God mode is absolute, and protects the player from all harm.
* Powerup cheats are not infinite duration
When this option is set to YES, idbehold* powerup cheats behave as they do
in Doom, wearing off in time (except idbeholda, idbeholds). When this option
is set to NO, the cheats are infinite-duration and must be used again to
toggle them off.
* Zombie players can exit levels
When this option is set to YES, zombie players can exit levels. (Zombie
players are players with 0% health, but who are allowed to still play the
game because a "voodoo doll", or extra player start, keeps them alive.) When
a zombie player exits a level, they are unable to play the game anymore. When
this option is set to NO, zombie players are prevented from exiting levels
(except exits triggered by boss deaths, which are impractical to stop and
which end the level anyway).
* Sky is unaffected by invulnerability
When this option is set to YES, sky textures are always drawn using the
fullbright colormap, and are immune from the white invulnerability colormap.
When this option is set to NO, sky textures will use a fixed colormap such
as invulnerability when it's active, but otherwise use fullbright.
* Use exactly Doom's stairbuilding method
When this option is set to YES, stairs will be built using exactly Doom's
method. When this option is set to NO, Boom's method, which to some is more
intuitive, is used.
* Use exactly Doom's floor motion behavior
When this option is set to YES, floor motion clipping will be performed just
as in Doom, with respect to target heights and objects coming in contact
with the moving floors. When this option is set to NO, floor motion will use
Boom's method, which is simpler to understand, uses a faster algorithm, and
usually makes more sense.
* Use exactly Doom's linedef trigger model
This is a very obscure catch-all option, and should only need to be set to
YES in the most unusual cases. When this option is set to YES, linedef and
sector properties will be treated as in Doom with respect to the triggering
of Doom linedef effects. The order in which linedefs are processed, whether
a linedef is really "two-sided", and whether to use a true maximum/minimum
sector or texture height instead of an arbitrary formula that's usually the
maximum/minimum height, but sometimes isn't, are all governed by this flag.
When this option is set to NO, Boom's method, which is more consistent and
easy to understand, is used.
* Linedef effects work with sector tag = 0
When this option is set to YES, linedefs which activate sectors sharing the
same sector tag work for all tags, including 0. When this option is set to
NO, these linedefs are ignored when sector tag = 0, which sometimes self-
corrects wad author's mistakes.
* Use Doom's main menu ordering
When this option is set to YES, Doom's main menu ordering is preserved, which
reads New Game / Options / Load Game / Save Game / [Read This!] / Quit Game.
When this option is set to NO, a different ordering is used: New Game /
Load Game / Save Game / Options / [Read This!] / Quit Game.
-------------------------------------------------------------------------------
4. Enemies Options
The Enemies setup screen deals with enemy bot behavior.
* Monster infighting when provoked
When this option is set to YES, monsters will fight their own kind to the
death if provoked, just as in Doom. When this option is set to NO, monsters
stay more focused on their real enemies, and so it is harder for a player to
trick them into infighting.
* Remember previous enemy
When this option is set to YES, monsters remember past enemies, and are able
to return to them after becoming distracted on a new target. When this option
is set to NO, monsters must be able to see a new target immediately after
killing their current target, or they will fall asleep (this often happened
in Doom -- if a player was able to start infighting, they were often able to
put a monster to sleep by staying out of its view while it finished off the
other monster).
* Monster backing out
When this option is set to YES, monsters are able to back away from enemies
sometimes. (However, as of this writing, they only do so when it leads to an
"offensive" advantage over their opponent -- it is never used for retreating
from danger.) When this option is set to NO, monsters are not allowed to
back out.
* Climb Steep Stairs
When this option is set to YES, monsters may climb stairs just like players
can, as long as they don't move up more than 24 units. When this option is
set to NO, Doom clipping logic is used, which prevents monsters from walking
up steps that cause too big of a dropoff across its entire body (hence the
dependence on the monster's radius). Setting this option to YES also allows
monsters to more easily recover from hanging off tall ledges if they are
pushed off partway by gunfire or other forces.
* Intelligently avoid hazards
When this option is set to YES, monsters intelligently avoid hazards such as
crushing ceilings. When this option is set to NO, monsters are unintelligent
when it comes to avoiding hazards.
* Affected by friction
When this option is set to YES, monsters are affected by friction (ice,
sludge), similar to how the player is affected. When this option is set to
NO, monsters are immune from any friction-modifying influences such as ice
or sludge (as in Boom).
* Rescue dying friends
When this option is set to YES, monsters will attempt to rescue friends
within their line of sight who are under attack and who are dying. When
this option is set to NO, everyone is on their own.
* Number of single-player helper dogs
This option allows anywhere from 0 to 3 player starts to be filled with
friendly dogs in single-player games. These might be considered co-op bots,
although they cannot pick up items or operate keyed doors or the like.
* Distance friends stay away
This option sets a "comfort distance", which is the distance friends of the
player try to stay away from the player, to avoid getting in your feet. Under
reasonable circumstances, such as on a crowded lift, or if the friend is
attacking an enemy that's close by, this distance constraint will sometimes
be violated.
* Allow dogs to jump down
If this option is set to YES, dogs will jump down from taller ledges towards
their owner. If this option is set to NO, dogs cannot jump down from ledges
taller than 24 (unless deh-modified, perhaps).
-------------------------------------------------------------------------------
Lee Killough Last Updated 12/21/1998

132
docs/winmbf02.txt Normal file
View File

@ -0,0 +1,132 @@
===============================================================================
Title : WinMBF v2.03 Build 2
Filename : winmbf02.zip
Author : Team Eternity
Email Address : haleyjd@hotmail.com
Release History : 01/19/05 -- v2.03 Build 2
08/10/04 -- v2.03 Build 1 (Original release)
Programmers : James Haley
Steven McGranahan
Lee Killough (MBF)
Artist : Len Pitre
Play Testers : Ky (Rez) Moffet
Len Pitre
James Haley
Canine Consulting : Longplain Kennels
Additional Credit : id Software
TeamTNT
PrBoom Team
Special Thanks To : John Romero
Joel Murdoch
* Description *
This is the first, highly-requested port of the pure MBF source to Win32. It
uses system code from the Eternity Engine (http://doomworld.com/eternity) and
is therefore supported by the SDL library.
What's New:
You can now select Nightmare mode from the main menu without crashing the game.
* Copyright / Permissions *
Please see the file COPYING to read the license for this program and its source
code. It is covered under the terms of the GNU GPL, and no warranties are given
for this software.
* Misc. Information *
This is unsupported software and will not be actively maintained. Expect a few
possible updates in the future, but they will not be frequent. Please do not
request any known MBF bugs in this port to be fixed, and do not submit feature
requests. If you want bug fixes and new features, please consider using the
Eternity Engine instead.
That said, please feel free to use this port as a bed for Eternity Engine
regression testing. If behaviors differ between Eternity and WinMBF in ways
that you suspect are due to an error in Eternity, please contact us (you can
find Quasar's email address at the page mentioned above).
Do not under any circumstances attempt to contact Lee Killough about this
version of MBF; he was not involved in its creation and will not provide any
support for it. Please do thank him for the wonderful gift that MBF was,
though :)
* Changes from MBF *
New Command-line Options:
* -heapsize: Specify a size between 8 and 255 MB; MBF will attempt to allocate
this amount of memory. The default heap size is 8 MB. The upper limit of
255 MB is a Windows limitation.
* -fullscreen: Enables fullscreen video mode support. This cannot currently be
toggled while the program is running.
New Configuration Options:
* The joystick can be configured via the config file. You can specify the
device number (the first joystick on your system should be number 0), and
provide sensitivity values for either axis.
* Wait at exit: toggle this on or off to give time for you to read any error
messages that may appear in WinMBF's console window. Default is on.
* Force flip pan: you can force reversal of the stereo audio channels if they
are backwards on your machine.
Bug Fixes/Code Changes:
* Massive portability adjustments. All GNU C extensions macroized or removed.
Visual C++ support, some warnings fixed (most not).
* DOS code removed. This build is for SDL platforms only, and has only been
built under Windows. Use the original source or binaries if you need DOS
support.
* DeHackEd support will not cause a crash by trying to close a NULL file
pointer (applies under Windows only).
* Files will be written to the current working directory, not the root
directory, if the program is not started by the operating system with a full
path name (affects Windows XP).
* M_InitExtendedHelp no longer writes into a string constant.
* M_Drawer no longer writes into a string constant. Fixes crash when trying to
play in Nightmare mode, among other possible errors.
Known Problems:
* No netcode yet. Should be much easier to put in than it will be for Eternity.
* Spectre fuzz is still wrong. The MBF source online doesn't have this fixed,
so it's not fixed here either. I'll probably repair this in a future build.
* Writing out the internal resources to a wad file is currently disabled. This
code uses the poorly supported open function and needs to be changed to use
the ANSI stdio functions.
* Stability issues. Program has crashed with no error message, so expect some
problems. Save your game often. These are probably BOOM/MBF bugs and not
issues introduced during porting.
* Print Screen key doesn't work for screenshots under Windows. You can change
this to another key code (they use ASCII codes) in the config file, or you
can use -devparm to enable screenshots using the F1 key. Numpad * key is
also currently disabled -- this may be fixed in a future build.

135
docs/winmbf02s.txt Normal file
View File

@ -0,0 +1,135 @@
===============================================================================
Title : WinMBF v2.03 Build 2
Filename : winmbf02s.zip
Author : Team Eternity
Email Address : haleyjd@hotmail.com
Release History : 01/19/05 -- v2.03 Build 2
08/10/04 -- v2.03 Build 1 (Original release)
Programmers : James Haley
Steven McGranahan
Lee Killough (MBF)
Artist : Len Pitre
Play Testers : Ky (Rez) Moffet
Len Pitre
James Haley
Canine Consulting : Longplain Kennels
Additional Credit : id Software
TeamTNT
PrBoom Team
Special Thanks To : John Romero
Joel Murdoch
* Description *
This is the first, highly-requested port of the pure MBF source to Win32. It
uses system code from the Eternity Engine (http://doomworld.com/eternity) and
is therefore supported by the SDL library.
NOTE: This is the source distribution archive. To run the resulting executable,
you will also need the binary distribution in winmbf02.zip. You will need
Visual C++ 6.0 or later to use the project files included with this source
code, although it should be possible to port the source to other SDL platforms
with minimal effort. SDL 1.2.7 and SDL_mixer 1.2.5 or later are required.
* Copyright / Permissions *
Please see the file COPYING to read the license for this program and its source
code. It is covered under the terms of the GNU GPL, and no warranties are given
for this software.
* Misc. Information *
This is unsupported software and will not be actively maintained. Expect a few
possible updates in the future, but they will not be frequent. Please do not
request any known MBF bugs in this port to be fixed, and do not submit feature
requests. If you want bug fixes and new features, please consider using the
Eternity Engine instead.
That said, please feel free to use this port as a bed for Eternity Engine
regression testing. If behaviors differ between Eternity and WinMBF in ways
that you suspect are due to an error in Eternity, please contact us (you can
find Quasar's email address at the page mentioned above).
Do not under any circumstances attempt to contact Lee Killough about this
version of MBF; he was not involved in its creation and will not provide any
support for it. Please do thank him for the wonderful gift that MBF was,
though :)
* Changes from MBF *
New Command-line Options:
* -heapsize: Specify a size between 8 and 255 MB; MBF will attempt to allocate
this amount of memory. The default heap size is 8 MB. The upper limit of
255 MB is a Windows limitation.
* -fullscreen: Enables fullscreen video mode support. This cannot currently be
toggled while the program is running.
New Configuration Options:
* The joystick can be configured via the config file. You can specify the
device number (the first joystick on your system should be number 0), and
provide sensitivity values for either axis.
* Wait at exit: toggle this on or off to give time for you to read any error
messages that may appear in WinMBF's console window. Default is on.
* Force flip pan: you can force reversal of the stereo audio channels if they
are backwards on your machine.
Bug Fixes/Code Changes:
* Massive portability adjustments. All GNU C extensions macroized or removed.
Visual C++ support, some warnings fixed (most not).
* DOS code removed. This build is for SDL platforms only, and has only been
built under Windows. Use the original source or binaries if you need DOS
support.
* DeHackEd support will not cause a crash by trying to close a NULL file
pointer (applies under Windows only).
* Files will be written to the current working directory, not the root
directory, if the program is not started by the operating system with a full
path name (affects Windows XP).
* M_InitExtendedHelp no longer writes into a string constant.
* M_Drawer no longer writes into a string constant. Fixes crash when trying to
play in Nightmare mode, among other possible error
Known Problems:
* No netcode yet. Should be much easier to put in than it will be for Eternity.
* Spectre fuzz is still wrong. The MBF source online doesn't have this fixed,
so it's not fixed here either. I'll probably repair this in a future build.
* Writing out the internal resources to a wad file is currently disabled. This
code uses the poorly supported open function and needs to be changed to use
the ANSI stdio functions.
* Stability issues. Program has crashed with no error message, so expect some
problems. Save your game often. These are probably BOOM/MBF bugs and not
issues introduced during porting.
* Print Screen key doesn't work for screenshots under Windows. You can change
this to another key code (they use ASCII codes) in the config file, or you
can use -devparm to enable screenshots using the F1 key. Numpad * key is
also currently disabled -- this may be fixed in a future build.

20
examples/Makefile.am Normal file
View File

@ -0,0 +1,20 @@
exampledir = $(docdir)/examples
dist_example_DATA = \
battle.wad \
dogfly.deh \
donut.txt \
donut.wad \
fireplas.deh \
fly.deh \
friend.deh \
grenade.deh \
hockey.wad \
mbfedit.txt \
mbfedit.wad \
mine.deh \
mushroom.deh \
playbud.deh \
possbud.deh \
sky.wad \
touchy.deh

BIN
examples/battle.wad Normal file

Binary file not shown.

6
examples/dogfly.deh Normal file
View File

@ -0,0 +1,6 @@
# Makes dogs "fly" under gravity, in effect jumping.
# By Lee Killough
Thing 140
Bits = BOUNCES | SOLID | SHOOTABLE | FLOAT | COUNTKILL
Mass = 100

46
examples/donut.txt Normal file
View File

@ -0,0 +1,46 @@
==========================================================================
Title : Donut Demo for Marine's Best Friend
Filename : DONUT.WAD
Author : Ky "Rez" Moffet
Email Address : rez@eqcity.ktb.net
Misc. Author Info : 43-year old DOOM fanatic who can't tell
which end of a WAD editor is up
Description : Watch the corpses ride the donuts!
===========================================================================
Additional Credits to : Khoi Pham, who could not find a way to make
a stone roll downhill ... will making a
corpse roll downhill do instead? :)
===========================================================================
* Play Information *
Game : DOOM II
Requires : Marine's Best Friend
(modified DOOM engine by Lee Killough)
Episode and Level # : level 1
Single Player : As a feature demo level only
Cooperative 2-4 Player : Not hardly
Deathmatch 2-4 Player : Only if you like it really cramped
Difficulty Settings : If it's too hard, remove half the imps
New Sounds : NO
New Graphics : NO
New Music : NO
Demos Replaced : NO
* Construction *
Base : INDYJONE.WAD by Khoi Pham
Time : 30 minutes
Editor(s) used : DCK 2.2f, BSP 2.3x
Known Bugs : No way to escape!
* Copyright / Permissions *
You can do whatever you want with this wad, tho I don't recommend
eating it.

BIN
examples/donut.wad Normal file

Binary file not shown.

13
examples/fireplas.deh Normal file
View File

@ -0,0 +1,13 @@
Patch File for DeHackEd v3.0
# Note: Use the pound sign ('#') to start comment lines.
Doom version = 21
Patch format = 6
Pointer 415 (Frame 738)
Codep Frame = 648
Pointer 417 (Frame 740)
Codep Frame = 648

8
examples/fly.deh Normal file
View File

@ -0,0 +1,8 @@
Patch File for DeHackEd v3.0
Doom version = 19
Patch format = 6
# to make the player fly :)
Thing 01
Bits = BOUNCES | FRIEND | NOTDMATCH | DROPOFF | PICKUP | SOLID | SHOOTABLE

18
examples/friend.deh Normal file
View File

@ -0,0 +1,18 @@
Patch File for DeHackEd v3.0
Doom version = 19
Patch format = 6
# Make a monster friendly
#
# 2 = Trooper, 3 = Sergeant, 4 = Arch-Vile, 6 = Revenant, 9 = Mancubus
# 11 = Commando, 12 = Imp, 13 = Demon, 14 = Spectre, 15 = Cacodemon,
# 16 = Baron, 18 = Hell Knight, 19 = Lost Soul, 20 = Spider Mastermind,
# 21 = Arachnotron, 22 = Cyberdemon, 23 = Pain Elemental, 24 = SS Soldier,
# 25 = Keen, 27 = Boss Brain Spawner, 140 = Dog
Thing 4
Bits = FRIEND | COUNTKILL | SHOOTABLE | SOLID
Thing 23
Bits = FRIEND | COUNTKILL | SHOOTABLE | SOLID | DROPOFF | FLOAT | NOGRAVITY

18
examples/grenade.deh Normal file
View File

@ -0,0 +1,18 @@
# Turn a rocket launcher into a grenade launcher
# By Lee Killough
# Works only with MBF
Thing 34
Bits = BOUNCES | DROPOFF
Hit points = 10
Initial frame = 968
Death frame = 969
Missile damage = 128
Mass = 200
# Note: you can use the code pointer in frame 970 (A_Detonate) to explode
# based on the thing's actual damage, rather than by a constant amount.
# Grenade timer delay
Frame 968
Duration = 135

BIN
examples/hockey.wad Normal file

Binary file not shown.

87
examples/mbfedit.txt Normal file
View File

@ -0,0 +1,87 @@
=============================================================================
Title : MBFEdit
Author : Len Pitre
Email Address : I_am_the_archon@hotmail.com
Description : As Boomedit was for Boom, MBFedit shall be for MBF.
: And it was good, and the people were happy.
Special Thanks to : Lee and Rez for their suggestions, it wouldn't be
: half the WAD it currently is without their input.
Additional Credits to : Rogue and Raven for not suing over the Strife and
Hexen stuff I stole.
: Rez for beta testing this mess.:)
: Lee Killough for the MBF engine.
: TeamTNT for the Boom engine.
: Id Software for the Doom engine.
: End of the line.:)
Command line : MBF -file mbfedit! or something similar.
: No other external stuff needed.
=============================================================================
Get freaky! Get freaky! Everybody in the house get freaky!
== Construction =============================================================
Base : New level from scratch
Editor(s) used : DCK 3.62, DCK 2.2f, Wintex, Microsoft paint....
Build Time : Several hundred repetitions of my music collection.
Known Bugs : You think I make bug-ridden WADs? Ha! I mock you!
== Copyright / Permissions ==================================================
Authors MAY use this level as a base to build additional levels, if they
send me a nice e-mail or name their firstborn after me.:)
You MAY distribute this WAD provided you include this file, with no
modifications. You MAY distribute this file in any electronic format
(BBS, Diskette, CD, etc.) as long as you include this file intact. I also
suggest that you let me know about it, or I'll send my goons after you.
== Where to get this WAD ====================================================
Dunno. Probably the same place you got the text file. Look around, it
should be real close to MBF.
== Long Explanation for People Brave Enough to Read this Far ================
Okay, finally, a UAC Base not completely taken over by Hellspawn! Just a
couple of Imps or Cyberdemons or mutant Commander Keens or something like
that, I can't remember. Look around, take a couple of lessons in MBF physics.
Read the signs carefully, and when you're done, nip out the back door to
finish the level.
I'll give a short teaser on some of the rooms, in whatever order I feel like:
Outside: Not really a room, but what the heck. Shows some high-friction nukage
and low-friction ice. These are a bit extreme examples of MBF friction, WAD
authors might want to use more middle-of-the-road settings.
Note how the imps - and dogs, if you take them along - have fun trying to walk
around, as they're also affected.
Grenade testing range: See Grenade fly. See Grenade bounce. See how Grenade
goes up stairs, over small barricades, and around corners. See Grenade blow
up and kill stupid marines who don't stand back. This room will give you a
better idea of how to use grenades, should you ever want to use GRENADE.DEH
(from EXAMPLES.ZIP) for spicing up regular levels, or for a WAD of yours.
Physics 101: Hit the switch, watch torque make the dead imp fall from his
now unstable perch.
Physics 201: Hit the switch, and enjoy slightly more advanced uses of torque.
No conveyors here, folks.
Unstable reactor waste: Hit the switch, watch torque make the barrel fall
from its now unstable perch. But the torque isn't the big thing here, it's
the TOUCHY DeHackEd flag I put on the barrel. Watch and learn.
Wind tunnel: Not only does friction now effect monsters, but the wind does too.
Stained Glass storage: A bit of a steal from Boomedit, but with a smoother
twist. One side of the door is a fast (blazing) door trigger, one is a normal
trigger, so you can see the effect at different speeds. Watch the room's
lighting as the door moves.
Reactor control room: My, my. Doesn't that little valve look harmless, an
easy kill.
Suicide Counseling: No comment. We all need a bit of suspense in our lives.:)
Len Pitre
January 1,1999 A.D.

BIN
examples/mbfedit.wad Normal file

Binary file not shown.

9
examples/mine.deh Normal file
View File

@ -0,0 +1,9 @@
# Turn a rocket launcher into a minelayer
# By Lee Killough
# Works only with MBF
Thing 34
Bits = BOUNCES | DROPOFF | TOUCHY
Death frame = 969
Hit points = 10
Missile damage = 128

21
examples/mushroom.deh Normal file
View File

@ -0,0 +1,21 @@
# Turns explosions into mushroom clouds
# By Lee Killough
Thing 34
Missile Damage = 20
Frame 127
Unknown 1 = 0x00000000
Unknown 2 = 0x00000000
Pointer 0 (x 127)
Codep frame = 1075
Frame 969
Unknown 1 = 0x00000000
Unknown 2 = 0x00000000
Pointer 0 (x 969)
Codep frame = 1075

169
examples/playbud.deh Normal file
View File

@ -0,0 +1,169 @@
Patch File for DeHackEd v3.0
# Note: Use the pound sign ('#') to start comment lines.
Doom version = 21
Patch format = 6
Thing 24 (SS Nazi)
Alert sound = 36
Death sound = 59
Bits = 71303174
Thing 140 (Doggies)
Initial frame = 726
First moving frame = 728
Alert sound = 36
Attack sound = 0
Injury frame = 742
Pain chance = 170
Pain sound = 27
Close attack frame = 0
Far attack frame = 736
Death frame = 744
Exploding frame = 749
Death sound = 59
Width = 1310720
Height = 3670016
Mass = 100
Action sound = 75
Bits = 138412038
Respawn frame = 758
Frame 726
Sprite number = 28
Frame 727
Sprite number = 28
Frame 728
Sprite number = 28
Frame 729
Sprite number = 28
Frame 730
Sprite number = 28
Frame 731
Sprite number = 28
Frame 732
Sprite number = 28
Frame 733
Sprite number = 28
Frame 734
Sprite number = 28
Frame 735
Sprite number = 28
Frame 736
Sprite number = 28
Frame 737
Sprite number = 28
Sprite subnumber = 4
Frame 738
Sprite number = 28
Sprite subnumber = 32773
Frame 739
Sprite number = 28
Sprite subnumber = 4
Frame 740
Sprite number = 28
Sprite subnumber = 32773
Frame 741
Sprite number = 28
Sprite subnumber = 4
Frame 742
Sprite number = 28
Sprite subnumber = 6
Frame 743
Sprite number = 28
Sprite subnumber = 6
Frame 744
Sprite number = 28
Sprite subnumber = 7
Frame 745
Sprite number = 28
Sprite subnumber = 8
Frame 746
Sprite number = 28
Sprite subnumber = 9
Frame 747
Sprite number = 28
Sprite subnumber = 10
Frame 748
Sprite number = 28
Sprite subnumber = 13
Frame 749
Sprite number = 28
Sprite subnumber = 14
Frame 750
Sprite number = 28
Sprite subnumber = 15
Frame 751
Sprite number = 28
Sprite subnumber = 16
Frame 752
Sprite number = 28
Sprite subnumber = 17
Frame 753
Sprite number = 28
Sprite subnumber = 18
Frame 754
Sprite number = 28
Sprite subnumber = 19
Frame 755
Sprite number = 28
Sprite subnumber = 20
Frame 756
Sprite number = 28
Sprite subnumber = 21
Frame 757
Sprite number = 28
Sprite subnumber = 22
Frame 758
Sprite number = 28
Sprite subnumber = 11
Frame 759
Sprite number = 28
Sprite subnumber = 10
Frame 760
Sprite number = 28
Sprite subnumber = 9
Frame 761
Sprite number = 28
Sprite subnumber = 8
Frame 762
Sprite number = 28
Sprite subnumber = 7

184
examples/possbud.deh Normal file
View File

@ -0,0 +1,184 @@
Patch File for DeHackEd v3.0
# Note: Use the pound sign ('#') to start comment lines.
Doom version = 21
Patch format = 6
Thing 140 (Doggies)
Initial frame = 726
First moving frame = 728
Alert sound = 36
Attack sound = 0
Injury frame = 742
Pain chance = 170
Pain sound = 27
Close attack frame = 0
Far attack frame = 736
Death frame = 744
Exploding frame = 749
Death sound = 59
Width = 1310720
Height = 3670016
Mass = 100
Action sound = 75
Bits = 71303174
Respawn frame = 758
Thing 24 (SS Nazi)
Attack sound = 0
Initial frame = 726
First moving frame = 728
Alert sound = 36
Injury frame = 742
Pain chance = 170
Pain sound = 27
Close attack frame = 0
Far attack frame = 736
Death frame = 744
Exploding frame = 749
Death sound = 59
Width = 1310720
Height = 3670016
Mass = 100
Action sound = 75
Respawn frame = 758
Bits = 138412038
Frame 726
Sprite number = 29
Frame 727
Sprite number = 29
Frame 728
Sprite number = 29
Frame 729
Sprite number = 29
Frame 730
Sprite number = 29
Frame 731
Sprite number = 29
Frame 732
Sprite number = 29
Frame 733
Sprite number = 29
Frame 734
Sprite number = 29
Frame 735
Sprite number = 29
Frame 736
Sprite number = 29
Frame 737
Sprite number = 29
Sprite subnumber = 4
Frame 738
Sprite number = 29
Sprite subnumber = 32773
Frame 739
Sprite number = 29
Sprite subnumber = 4
Frame 740
Sprite number = 29
Sprite subnumber = 32773
Frame 741
Sprite number = 29
Sprite subnumber = 4
Frame 742
Sprite number = 29
Sprite subnumber = 6
Frame 743
Sprite number = 29
Sprite subnumber = 6
Frame 744
Sprite number = 29
Sprite subnumber = 7
Frame 745
Sprite number = 29
Sprite subnumber = 8
Frame 746
Sprite number = 29
Sprite subnumber = 9
Frame 747
Sprite number = 29
Sprite subnumber = 10
Frame 748
Sprite number = 29
Sprite subnumber = 11
Frame 749
Sprite number = 29
Sprite subnumber = 12
Frame 750
Sprite number = 29
Sprite subnumber = 13
Frame 751
Sprite number = 29
Sprite subnumber = 14
Frame 752
Sprite number = 29
Sprite subnumber = 15
Frame 753
Sprite number = 29
Sprite subnumber = 16
Frame 754
Sprite number = 29
Sprite subnumber = 17
Frame 755
Sprite number = 29
Sprite subnumber = 18
Frame 756
Sprite number = 29
Sprite subnumber = 19
Frame 757
Sprite number = 29
Sprite subnumber = 20
Frame 758
Sprite number = 29
Sprite subnumber = 11
Frame 759
Sprite number = 29
Sprite subnumber = 10
Frame 760
Sprite number = 29
Sprite subnumber = 9
Frame 761
Sprite number = 29
Sprite subnumber = 8
Frame 762
Sprite number = 29
Sprite subnumber = 7

BIN
examples/sky.wad Normal file

Binary file not shown.

16
examples/touchy.deh Normal file
View File

@ -0,0 +1,16 @@
# Example of TOUCHY mobj flag
#
# Makes Pain Elementals die when touched by
# anyone except themselves or their offspring
#
# By Lee Killough
# Only works with MBF
#
# 2 = Trooper, 3 = Sergeant, 4 = Arch-Vile, 6 = Revenant, 9 = Mancubus
# 11 = Commando, 12 = Imp, 13 = Demon, 14 = Spectre, 15 = Cacodemon,
# 16 = Baron, 18 = Hell Knight, 19 = Lost Soul, 20 = Spider Mastermind,
# 21 = Arachnotron, 22 = Cyberdemon, 23 = Pain Elemental, 24 = SS Soldier,
# 25 = Keen, 27 = Boss Brain Spawner, 140 = Dog
Thing 23
Bits = COUNTKILL | SHOOTABLE | SOLID | DROPOFF | FLOAT | NOGRAVITY | TOUCHY

6
toolsrc/Makefile.am Normal file
View File

@ -0,0 +1,6 @@
EXTRA_DIST = \
bin2c.c \
bmp2c.c \
defswani.dat \
fakedate.asm \
swantbls.c

34
toolsrc/bin2c.c Normal file
View File

@ -0,0 +1,34 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
char buf[256],s[100];
int c;
FILE *fp;
if (argc!=2)
{
fprintf(stderr,"Usage: %s file\n",*argv);
return 1;
}
if (!(fp = fopen(argv[1],"rb")))
{
fputs("Cannot open ",stderr);
perror(argv[1]);
return 1;
}
puts("static unsigned char data[] = {");
strcpy(buf," ");
while ((c=getc(fp))!=EOF)
{
sprintf(s,"%u,",(unsigned char) c);
if (strlen(s)+strlen(buf) >= 80)
puts(buf), strcpy(buf," ");
strcat(buf,s);
}
if (*buf)
strcat(buf,"\n");
printf("%s};\n",buf);
return 0;
}

289
toolsrc/bmp2c.c Normal file
View File

@ -0,0 +1,289 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#define XPARENT (0xf7) /* palette index representing transparent in BMP */
typedef struct stPicData
{
short pwid;
short phgt;
short pxoff;
short pyoff;
long *coloffs;
unsigned char *posts;
long postlen;
} PicData;
#define BI_RGB 0L
#define BI_RLE8 1L
#define BI_RLE4 2L
typedef unsigned short UINT;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef long LONG;
typedef unsigned char BYTE;
typedef unsigned char UBYTE;
typedef struct tagBITMAPFILEHEADER
{
UINT bfType; // 2
DWORD bfSize; // 4
UINT bfReserved1; // 2
UINT bfReserved2; // 2
DWORD bfOffBits; // 4
} __attribute__ ((packed)) BITMAPFILEHEADER; // 14
typedef struct tagBITMAPINFOHEADER
{
DWORD biSize; // 4
LONG biWidth; // 4
LONG biHeight; // 4
WORD biPlanes; // 2
WORD biBitCount; // 2
DWORD biCompression; // 4
DWORD biSizeImage; // 4
LONG biXPelsPerMeter; // 4
LONG biYPelsPerMeter; // 4
DWORD biClrUsed; // 4
DWORD biClrImportant; // 4
} __attribute__ ((packed)) BITMAPINFOHEADER; // 40
typedef struct tagRGBQUAD
{
UBYTE rgbBlue;
UBYTE rgbGreen;
UBYTE rgbRed;
UBYTE rgbReserved;
} __attribute__ ((packed)) RGBQUAD;
// Convert a rectangular array of numbers to a DOOM format picture
// bytes 0-255 represent palette colors as usual, XPARENT is transparency.
//
// memory is allocated on p->coloffs and p->posts
// max: 256k+rwid actual: postlen+4*(1+rwid)
void ConvertToPicture(BYTE *bytes,int logw,int rwid,int logh,PicData *p,int pf)
{
int i,j,n;
int pixcnt;
int postlen;
p->pwid = rwid;
p->phgt = logh;
p->pxoff = pf? rwid/2 - 1 : 0;
p->pyoff = pf? logh - 5 : 0;
p->coloffs = (long *)malloc(logw*sizeof(int));
p->posts = (unsigned char *)malloc(1024*256*sizeof(unsigned char));
n=postlen=0;
for (j=0;j<rwid;j++) // do each column
{
p->coloffs[j] = 4*sizeof(short) + p->pwid*sizeof(int) + postlen;
pixcnt = 0;
for (i=0;i<logh;i++)
{
if (bytes[logw*i+j]==XPARENT)
{
if (pixcnt>0)
{
p->posts[postlen++]=0; // add fill byte at end
pixcnt=0;
}
}
else
{
if (pixcnt==0) // start a post
{
p->posts[postlen++] = i;
n = postlen++;
p->posts[n] = 1;
p->posts[postlen++] = 0; // add fill byte at start
}
else p->posts[n]++;
// add pixel to current post
p->posts[postlen++] = bytes[logw*i+j];
pixcnt++;
}
}
if (pixcnt>0) // terminate last post
p->posts[postlen++]=0;
p->posts[postlen++]=255; // terminate column
}
p->posts = (unsigned char *)realloc(p->posts,postlen);
p->postlen = postlen;
}
// Reads BMP file
// Header is read for real width, and logical height
// Logical width is next multiple of 4 greater than or equal to real width
// Bitmap is written to short array *out, allocated to fit
// *out is allocated and read as logical width by logical height
//
// memory is allocated on *out
// max: logw*logh*sizeof(short)
void ReadBMP(BYTE **out,int *logw,int *realw,int *logh,char *bmpname)
{
int i,n;
BITMAPFILEHEADER bmfh;
BITMAPINFOHEADER bmih;
FILE *st;
char *buffer=NULL;
char *p=NULL;
RGBQUAD pal[256];
*logw = *logh = *realw = 0;
st = fopen(bmpname,"rb");
if (st!=NULL)
{
fread(&bmfh.bfType,sizeof(bmfh.bfType),1,st);
fread(&bmfh.bfSize,sizeof(bmfh.bfSize),1,st);
fread(&bmfh.bfReserved1,sizeof(bmfh.bfReserved1),1,st);
fread(&bmfh.bfReserved2,sizeof(bmfh.bfReserved2),1,st);
fread(&bmfh.bfOffBits,sizeof(bmfh.bfOffBits),1,st);
fread(&bmih.biSize,sizeof(bmih.biSize),1,st);
fread(&bmih.biWidth,sizeof(bmih.biWidth),1,st);
fread(&bmih.biHeight,sizeof(bmih.biHeight),1,st);
fread(&bmih.biPlanes,sizeof(bmih.biPlanes),1,st);
fread(&bmih.biBitCount,sizeof(bmih.biBitCount),1,st);
fread(&bmih.biCompression,sizeof(bmih.biCompression),1,st);
fread(&bmih.biSizeImage,sizeof(bmih.biSizeImage),1,st);
fread(&bmih.biXPelsPerMeter,sizeof(bmih.biXPelsPerMeter),1,st);
fread(&bmih.biYPelsPerMeter,sizeof(bmih.biYPelsPerMeter),1,st);
fread(&bmih.biClrUsed,sizeof(bmih.biClrUsed),1,st);
fread(&bmih.biClrImportant,sizeof(bmih.biClrImportant),1,st);
fread(pal,sizeof(RGBQUAD),256,st);
*realw = bmih.biWidth;
*logw = 4*((bmih.biWidth+3)/4);
*logh = bmih.biHeight;
n = (*logw)*(*logh);
buffer = malloc(n);
fseek(st,bmfh.bfOffBits,SEEK_SET);
fread(buffer,n,1,st);
*out = (BYTE *)malloc(n);
for (i=(*logh)-1;i>=0;i--)
memmove((*out)+((*logh)-1-i)*(*logw),buffer+(*logw)*i,*logw);
fclose(st);
free(buffer);
}
else fprintf(stderr,"ERROR: bitmap file %s not found\n",bmpname);
}
// Read a .BMP file and embed in a wad as a DOOM picture
// memory balanced except directory extension
void WritePic(char *path,FILE *st,int pf)
{
int n,t;
BYTE *out = NULL;
int logw=0,logh=0,rwid=0;
PicData pic;
char name[256],*p;
BYTE *q;
if (path && *path)
{
ReadBMP(&out,&logw,&rwid,&logh,path); // allocs out
if (logw>0)
{
ConvertToPicture(out,logw,rwid,logh,&pic,pf);
strcpy(name,path[1]==':'? path+2 : path); // strip drive, if any
p = strrchr(name,'\\'); // strip dirs, if any
if (p) strcpy(name,p+1);
p = strrchr(name,'.'); // strip ext, if any
if (p) *p='\0';
// code to write pic as C data here
fprintf(st,"static const char %s[]=\n{\n\t",name);
q = (BYTE *)&pic.pwid;
fprintf(st,"%3d,",*q++);
fprintf(st,"%3d,",*q++);
fprintf(st,"%3d,",*q++);
fprintf(st,"%3d,",*q++);
fprintf(st,"%3d,",*q++);
fprintf(st,"%3d,",*q++);
fprintf(st,"%3d,",*q++);
fprintf(st,"%3d,\n\t",*q++);
q = (BYTE *)pic.coloffs;
t = pic.pwid*sizeof(long);
for (n=0;n<t;n++)
{
fprintf(st,"%3d,",*q++);
if ((n&15)==15)
fprintf(st,"\n\t");
}
q = pic.posts;
for (;n<pic.postlen+t;n++)
{
fprintf(st,"%3d,",*q++);
if (n==t+pic.postlen-1)
fprintf(st,"\n};\n\n");
else if ((n&15)==15)
fprintf(st,"\n\t");
}
free(pic.coloffs);
free(pic.posts);
}
else
{
fprintf(stderr,"ERROR: Can't open file: %s\n",path);
return;
}
free(out);
}
}
// write all .BMP files specified as input (possibly wildcarded)
// as a collection of C arrays
int main(int argc,char **argv)
{
int i;
char name[256];
FILE *st;
int pf;
if (argc<2)
{
printf("Usage: BMP2C [/p] name1.bmp...\n");
printf("name may contain wildcards\n");
printf("/p will insert patch style offsets, else 0\n");
exit(1);
}
st = fopen("cdata.c","w");
if (st)
{
pf = 0;
if (argv[1][0] == '-' || argv[1][0]=='/' && tolower(argv[1][1])=='p')
pf = 1;
for (i=1+pf;i<argc;i++)
{
strcpy(name,argv[i]);
WritePic(name,st,pf);
}
}
else
fprintf(stderr,"Cannot open CDATA.C for output\n");
return 0;
}

86
toolsrc/defswani.dat Normal file
View File

@ -0,0 +1,86 @@
#
# This file is input for SWANTBLS.EXE, it specifies the switchnames
# and animated textures and flats usable with BOOM. The output of
# SWANTBLS is two lumps, SWITCHES.LMP and ANIMATED.LMP that should
# be inserted in the PWAD as lumps.
#
#switches usable with each IWAD, 1=SW, 2=registered DOOM, 3=DOOM2
[SWITCHES]
#epi texture1 texture2
1 SW1BRCOM SW2BRCOM
1 SW1BRN1 SW2BRN1
1 SW1BRN2 SW2BRN2
1 SW1BRNGN SW2BRNGN
1 SW1BROWN SW2BROWN
1 SW1COMM SW2COMM
1 SW1COMP SW2COMP
1 SW1DIRT SW2DIRT
1 SW1EXIT SW2EXIT
1 SW1GRAY SW2GRAY
1 SW1GRAY1 SW2GRAY1
1 SW1METAL SW2METAL
1 SW1PIPE SW2PIPE
1 SW1SLAD SW2SLAD
1 SW1STARG SW2STARG
1 SW1STON1 SW2STON1
1 SW1STON2 SW2STON2
1 SW1STONE SW2STONE
1 SW1STRTN SW2STRTN
2 SW1BLUE SW2BLUE
2 SW1CMT SW2CMT
2 SW1GARG SW2GARG
2 SW1GSTON SW2GSTON
2 SW1HOT SW2HOT
2 SW1LION SW2LION
2 SW1SATYR SW2SATYR
2 SW1SKIN SW2SKIN
2 SW1VINE SW2VINE
2 SW1WOOD SW2WOOD
3 SW1PANEL SW2PANEL
3 SW1ROCK SW2ROCK
3 SW1MET2 SW2MET2
3 SW1WDMET SW2WDMET
3 SW1BRIK SW2BRIK
3 SW1MOD1 SW2MOD1
3 SW1ZIM SW2ZIM
3 SW1STON6 SW2STON6
3 SW1TEK SW2TEK
3 SW1MARB SW2MARB
3 SW1SKULL SW2SKULL
#animated flats, spd is number of frames between changes
[FLATS]
#spd last first
8 NUKAGE3 NUKAGE1
8 FWATER4 FWATER1
8 SWATER4 SWATER1
8 LAVA4 LAVA1
8 BLOOD3 BLOOD1
8 RROCK08 RROCK05
8 SLIME04 SLIME01
8 SLIME08 SLIME05
8 SLIME12 SLIME09
#animated textures, spd is number of frames between changes
[TEXTURES]
#spd last first
8 BLODGR4 BLODGR1
8 SLADRIP3 SLADRIP1
8 BLODRIP4 BLODRIP1
8 FIREWALL FIREWALA
8 GSTFONT3 GSTFONT1
8 FIRELAVA FIRELAV3
8 FIREMAG3 FIREMAG1
8 FIREBLU2 FIREBLU1
8 ROCKRED3 ROCKRED1
8 BFALL4 BFALL1
8 SFALL4 SFALL1
8 WFALL4 WFALL1
8 DBRAIN4 DBRAIN1


130
toolsrc/fakedate.asm Normal file
View File

@ -0,0 +1,130 @@
.386
NEED segment use16 at 0
zero proc far
zero endp
NEED ends
cseg segment use16
org 100H
assume cs:cseg,ds:cseg
BEGIN proc near
jmp INIT
setter:
cmp ah,2ah
jne dosjmp
mov cx,1993
mov dx,0a0ah
iret
dosjmp: jmp zero
INIT:
push cs
pop ds
mov ah,9
mov dx,offset fakedate
int 21h
mov ax,3521h
int 21h
mov si,80h
mov cl,byte ptr [si]
lp:
dec cl
jle load
inc si
cmp byte ptr [si],20h
je lp
cmp byte ptr [si],'/'
jne load
cmp byte ptr [si+1],'u'
je ul
cmp byte ptr [si+1],'U'
jne load
ul:
call instaled
mov dx,offset unist
jne sc
push bx
push es
mov dx,word ptr es:[bx+dosjmp-setter+1]
mov ds,word ptr es:[bx+dosjmp-setter+3]
mov ax,2521h
int 21h
push cs
pop ds
mov dx,offset unist
mov ah,9
int 21h
pop ax
pop dx
push cs
pop cx
sub dx,offset setter
jnc f
sub ax,1000h
f:
sub cx,ax
shl cx,4
sub cx,dx
cmp cx,offset INIT
jne noul
mov ds,ax
int 27h
load:
call instaled
jne notinst
mov ah,9
mov dx,offset already
int 21h
mov dx,offset ulinst
sc:
mov ah,9
int 21h
noul: int 20h
notinst:
mov word ptr dosjmp+1,bx
mov word ptr dosjmp+3,es
mov dx,offset setter
mov ax,2521h
int 21h
mov dx,offset inst
mov ah,9
int 21h
mov dx,offset ulinst
int 21h
mov dx,offset INIT
int 27h
instaled:
mov ax,word ptr es:[bx]
cmp ax,word ptr cs:[setter]
jne no
mov ax,word ptr es:[bx+2]
cmp ax,word ptr cs:[setter+2]
jne no
mov ax,word ptr es:[bx+4]
cmp ax,word ptr cs:[setter+4]
jne no
mov ax,word ptr es:[bx+6]
cmp ax,word ptr cs:[setter+6]
jne no
mov ax,word ptr es:[bx+8]
cmp ax,word ptr cs:[setter+8]
no: ret
fakedate db 'Doom Press Release Version FakeDate by Lee Killough',0ah,0dh,'$'
already db 'FakeDate is already installed.',0ah,0dh,'$'
ulinst db 'Type FakeDate /u to uninstall.',0ah,0dh,'$'
inst db 'FakeDate installed.',0ah,0dh,'You can now play the Doom Press Release Version.',0ah,0dh,'$'
unist db 'FakeDate uninstalled.',0ah,0dh,'$'
BEGIN endp
cseg ends
end BEGIN

315
toolsrc/swantbls.c Normal file
View File

@ -0,0 +1,315 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
// trim spaces off left of string
void LeftTrim(char *str)
{
int k,n;
k = strlen(str);
if (k)
{
n = strspn(str," \t");
memmove(str,str+n, k-n+1);
}
}
// trim spaces off right of string
void RightTrim(char *str)
{
int k,n;
n = k = strlen(str);
if (k)
{
n--;
while (n>=0 && (str[n]==' ' || str[n]=='\t')) n--;
str[n+1]='\0';
}
}
// trim spaces off both ends of a string
void Trim(char *str)
{
RightTrim(str);
LeftTrim(str);
}
// If the extension is missing, add the extension ext
// If the extension is present, leave it be
void SupplyExt(char *str,char *ext)
{
char *p,*q;
if (!str || !*str)
return;
p = strrchr(str,'\\'); // last backslash
q = strrchr(str,'.'); // last period
if (p && q && q<p) // if is a backslash, and the . is before it
strcat(str,ext); // add an extension, since there is none
else if (!q)
strcat(str,ext); // if no period, add the extension
}
int main(int argc,char **argv)
{
char inpname[256],*p,*q,*tok;
char secname[256]="";
char string1[9],string2[9];
char buffer[256];
int lineno=0,inum;
short num;
char true=1,false=0;
char zero[9]={0,0,0,0,0,0,0,0,0};
FILE *st=NULL,*outst=NULL;
if (argc<2)
{
printf("\nUsage: SWANTBL swanfile[.DAT]\n");
printf("Creates SWITCHES.LMP and ANIMATED.LMP from text input file\n");
exit(1);
}
strcpy(inpname,argv[1]);
SupplyExt(inpname,".DAT");
st = fopen(inpname,"r");
if (st)
{
while ((p=fgets(buffer,256,st)))
{
lineno++;
Trim(p);
if (p[strlen(p)-1]=='\n') p[strlen(p)-1]='\0';
if (*p=='[')
{
q = strchr(p,']');
if (!q)
{
printf("Unclosed section delimiter in line %d, missing ]\n",lineno);
fclose(st);
exit(1);
}
*q = '\0';
strcpy(secname,p+1);
if (!stricmp(secname,"SWITCHES"))
{
outst=fopen("SWITCHES.LMP","wb");
}
else if (!stricmp(secname,"FLATS"))
{
;
}
else if (!stricmp(secname,"TEXTURES"))
{
;
}
else
{
printf("Bad or duplicate section header in line %d, use [SWITCHES], [FLATS], or [TEXTURES] once\n",lineno);
fclose(st);
exit(1);
}
}
else if (*p=='\n' || *p=='\r' || *p=='#' || *p==';' || *p==0)
{
continue;
}
else if (!isdigit(*p))
{
printf("Bad syntax, line %d does not begin with a number\n",lineno);
exit(1);
}
else if (!stricmp("SWITCHES",secname))
{
tok = strtok(p," \t,");
if (!tok)
{
printf("Bad syntax on line %d, missing first token\n",lineno);
fclose(st);
fclose(outst);
exit(1);
}
else
{
num = inum = atoi(tok);
tok = strtok(NULL," \t,");
if (!tok)
{
printf("Bad syntax on line %d, missing second token\n",lineno);
fclose(st);
fclose(outst);
exit(1);
}
else
{
strncpy(string1,tok,9);
tok = strtok(NULL," \t,");
if (!tok)
{
printf("Bad syntax on line %d, missing third token\n",lineno);
fclose(st);
fclose(outst);
exit(1);
}
else strncpy(string2,tok,9);
}
}
if (!stricmp(secname,"SWITCHES"))
{
fwrite(string1,9,1,outst);
fwrite(string2,9,1,outst);
fwrite(&num,2,1,outst);
}
else
{
printf("Error: data at line %d found outside section\n",lineno);
fclose(st);
fclose(outst);
}
}
}
if (stricmp("SWITCHES",secname))
{
fwrite(zero,9,1,outst);
fwrite(zero,9,1,outst);
fwrite(zero,2,1,outst);
}
if (outst) fclose(outst);
outst=NULL;
fclose(st);
st = fopen(inpname,"r");
while (st && (p=fgets(buffer,256,st)))
{
lineno++;
Trim(p);
if (p[strlen(p)-1]=='\n') p[strlen(p)-1]='\0';
if (*p=='[')
{
q = strchr(p,']');
if (!q)
{
printf("Unclosed section delimiter in line %d, missing ]\n",lineno);
fclose(st);
exit(1);
}
*q = '\0';
strcpy(secname,p+1);
if (!stricmp(secname,"SWITCHES"))
{
;
}
else if (!stricmp(secname,"FLATS"))
{
if (!outst)
outst=fopen("ANIMATED.LMP","wb");
}
else if (!stricmp(secname,"TEXTURES"))
{
if (!outst)
outst=fopen("ANIMATED.LMP","wb");
}
else
{
printf("Bad or section header in line %d, use [SWITCHES], [FLATS], or [TEXTURES] once\n",lineno);
fclose(st);
exit(1);
}
}
else if (*p=='\n' || *p=='\r' || *p=='#' || *p==';' || *p==0)
{
continue;
}
else if (!isdigit(*p))
{
printf("Bad syntax, line %d does not begin with a number\n",lineno);
exit(1);
}
else if (!stricmp("FLATS",secname) || !stricmp("TEXTURES",secname))
{
tok = strtok(p," \t,");
if (!tok)
{
printf("Bad syntax on line %d, missing first token\n",lineno);
fclose(st);
fclose(outst);
exit(1);
}
else
{
num = inum = atoi(tok);
tok = strtok(NULL," \t,");
if (!tok)
{
printf("Bad syntax on line %d, missing second token\n",lineno);
fclose(st);
fclose(outst);
exit(1);
}
else
{
strncpy(string1,tok,9);
tok = strtok(NULL," \t,");
if (!tok)
{
printf("Bad syntax on line %d, missing third token\n",lineno);
fclose(st);
fclose(outst);
exit(1);
}
else strncpy(string2,tok,9);
}
}
if (!stricmp(secname,"FLATS"))
{
fwrite(&false,1,1,outst);
fwrite(string1,9,1,outst);
fwrite(string2,9,1,outst);
fwrite(&inum,4,1,outst);
}
else if (!stricmp(secname,"TEXTURES"))
{
fwrite(&true,1,1,outst);
fwrite(string1,9,1,outst);
fwrite(string2,9,1,outst);
fwrite(&inum,4,1,outst);
}
else
{
printf("Error: data at line %d found outside section\n",lineno);
fclose(st);
fclose(outst);
exit(1);
}
}
}
if (!stricmp(secname,"FLATS"))
{
fwrite("\xff\xff\xff\xff",4,1,outst);
}
else if (!stricmp(secname,"TEXTURES"))
{
fwrite("\xff\xff\xff\xff",4,1,outst);
}
}
else
{
printf("Cannot open %s for reading\n",inpname);
exit(1);
}
if (st) fclose(st);
if (outst)
fclose(outst);
return 0;
}

BIN
watermap.wad Normal file

Binary file not shown.