Showing preview only (1,463K chars total). Download the full file or copy to clipboard to get everything.
Repository: id-Software/DOOM
Branch: master
Commit: a77dfb96cb91
Files: 165
Total size: 1.4 MB
Directory structure:
gitextract_2slntpzu/
├── LICENSE.TXT
├── README.TXT
├── ipx/
│ ├── DOOMNET.C
│ ├── DOOMNET.H
│ ├── IPXNET.C
│ ├── IPXNET.H
│ ├── IPXSETUP.C
│ ├── IPXSTR.H
│ ├── IPX_FRCH.H
│ └── README
├── linuxdoom-1.10/
│ ├── CVS/
│ │ ├── Entries
│ │ ├── Repository
│ │ └── Root
│ ├── ChangeLog
│ ├── FILES
│ ├── FILES2
│ ├── Makefile
│ ├── README.asm
│ ├── README.b
│ ├── README.book
│ ├── README.gl
│ ├── README.sound
│ ├── TODO
│ ├── am_map.c
│ ├── am_map.h
│ ├── d_englsh.h
│ ├── d_event.h
│ ├── d_french.h
│ ├── d_items.c
│ ├── d_items.h
│ ├── d_main.c
│ ├── d_main.h
│ ├── d_net.c
│ ├── d_net.h
│ ├── d_player.h
│ ├── d_textur.h
│ ├── d_think.h
│ ├── d_ticcmd.h
│ ├── doomdata.h
│ ├── doomdef.c
│ ├── doomdef.h
│ ├── doomstat.c
│ ├── doomstat.h
│ ├── doomtype.h
│ ├── dstrings.c
│ ├── dstrings.h
│ ├── f_finale.c
│ ├── f_finale.h
│ ├── f_wipe.c
│ ├── f_wipe.h
│ ├── g_game.c
│ ├── g_game.h
│ ├── hu_lib.c
│ ├── hu_lib.h
│ ├── hu_stuff.c
│ ├── hu_stuff.h
│ ├── i_main.c
│ ├── i_net.c
│ ├── i_net.h
│ ├── i_sound.c
│ ├── i_sound.h
│ ├── i_system.c
│ ├── i_system.h
│ ├── i_video.c
│ ├── i_video.h
│ ├── info.c
│ ├── info.h
│ ├── m_argv.c
│ ├── m_argv.h
│ ├── m_bbox.c
│ ├── m_bbox.h
│ ├── m_cheat.c
│ ├── m_cheat.h
│ ├── m_fixed.c
│ ├── m_fixed.h
│ ├── m_menu.c
│ ├── m_menu.h
│ ├── m_misc.c
│ ├── m_misc.h
│ ├── m_random.c
│ ├── m_random.h
│ ├── m_swap.c
│ ├── m_swap.h
│ ├── p_ceilng.c
│ ├── p_doors.c
│ ├── p_enemy.c
│ ├── p_floor.c
│ ├── p_inter.c
│ ├── p_inter.h
│ ├── p_lights.c
│ ├── p_local.h
│ ├── p_map.c
│ ├── p_maputl.c
│ ├── p_mobj.c
│ ├── p_mobj.h
│ ├── p_plats.c
│ ├── p_pspr.c
│ ├── p_pspr.h
│ ├── p_saveg.c
│ ├── p_saveg.h
│ ├── p_setup.c
│ ├── p_setup.h
│ ├── p_sight.c
│ ├── p_spec.c
│ ├── p_spec.h
│ ├── p_switch.c
│ ├── p_telept.c
│ ├── p_tick.c
│ ├── p_tick.h
│ ├── p_user.c
│ ├── r_bsp.c
│ ├── r_bsp.h
│ ├── r_data.c
│ ├── r_data.h
│ ├── r_defs.h
│ ├── r_draw.c
│ ├── r_draw.h
│ ├── r_local.h
│ ├── r_main.c
│ ├── r_main.h
│ ├── r_plane.c
│ ├── r_plane.h
│ ├── r_segs.c
│ ├── r_segs.h
│ ├── r_sky.c
│ ├── r_sky.h
│ ├── r_state.h
│ ├── r_things.c
│ ├── r_things.h
│ ├── s_sound.c
│ ├── s_sound.h
│ ├── sounds.c
│ ├── sounds.h
│ ├── st_lib.c
│ ├── st_lib.h
│ ├── st_stuff.c
│ ├── st_stuff.h
│ ├── tables.c
│ ├── tables.h
│ ├── v_video.c
│ ├── v_video.h
│ ├── w_wad.c
│ ├── w_wad.h
│ ├── wi_stuff.c
│ ├── wi_stuff.h
│ ├── z_zone.c
│ └── z_zone.h
├── sersrc/
│ ├── DOOMNET.C
│ ├── DOOMNET.H
│ ├── PORT.C
│ ├── README.TXT
│ ├── SERSETUP.C
│ ├── SERSETUP.H
│ ├── SERSTR.H
│ └── SER_FRCH.H
└── sndserv/
├── Makefile
├── README.sndserv
├── linux.c
├── sounds.c
├── sounds.h
├── soundsrv.c
├── soundsrv.h
├── soundst.h
├── wadread.c
└── wadread.h
================================================
FILE CONTENTS
================================================
================================================
FILE: LICENSE.TXT
================================================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 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
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) <year> <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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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) year 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.
================================================
FILE: README.TXT
================================================
Here it is, at long last. The DOOM source code is released for your
non-profit use. You still need real DOOM data to work with this code.
If you don't actually own a real copy of one of the DOOMs, you should
still be able to find them at software stores.
Many thanks to Bernd Kreimeier for taking the time to clean up the
project and make sure that it actually works. Projects tends to rot if
you leave it alone for a few years, and it takes effort for someone to
deal with it again.
The bad news: this code only compiles and runs on linux. We couldn't
release the dos code because of a copyrighted sound library we used
(wow, was that a mistake -- I write my own sound code now), and I
honestly don't even know what happened to the port that microsoft did
to windows.
Still, the code is quite portable, and it should be straightforward to
bring it up on just about any platform.
I wrote this code a long, long time ago, and there are plenty of things
that seem downright silly in retrospect (using polar coordinates for
clipping comes to mind), but overall it should still be a usefull base
to experiment and build on.
The basic rendering concept -- horizontal and vertical lines of constant
Z with fixed light shading per band was dead-on, but the implementation
could be improved dramatically from the original code if it were
revisited. The way the rendering proceded from walls to floors to
sprites could be collapsed into a single front-to-back walk of the bsp
tree to collect information, then draw all the contents of a subsector
on the way back up the tree. It requires treating floors and ceilings
as polygons, rather than just the gaps between walls, and it requires
clipping sprite billboards into subsector fragments, but it would be
The Right Thing.
The movement and line of sight checking against the lines is one of the
bigger misses that I look back on. It is messy code that had some
failure cases, and there was a vastly simpler (and faster) solution
sitting in front of my face. I used the BSP tree for rendering things,
but I didn't realize at the time that it could also be used for
environment testing. Replacing the line of sight test with a bsp line
clip would be pretty easy. Sweeping volumes for movement gets a bit
tougher, and touches on many of the challenges faced in quake / quake2
with edge bevels on polyhedrons.
Some project ideas:
Port it to your favorite operating system.
Add some rendering features -- transparency, look up / down, slopes,
etc.
Add some game features -- weapons, jumping, ducking, flying, etc.
Create a packet server based internet game.
Create a client / server based internet game.
Do a 3D accelerated version. On modern hardware (fast pentium + 3DFX)
you probably wouldn't even need to be clever -- you could just draw the
entire level and get reasonable speed. With a touch of effort, it should
easily lock at 60 fps (well, there are some issues with DOOM's 35 hz
timebase...). The biggest issues would probably be the non-power of two
texture sizes and the walls composed of multiple textures.
I don't have a real good guess at how many people are going to be
playing with this, but if significant projects are undertaken, it would
be cool to see a level of community cooperation. I know that most early
projects are going to be rough hacks done in isolation, but I would be
very pleased to see a coordinated 'net release of an improved, backwards
compatable version of DOOM on multiple platforms next year.
Have fun.
John Carmack
12-23-97
Copyright (c) ZeniMax Media Inc.
Licensed under the GNU General Public License 2.0.
================================================
FILE: ipx/DOOMNET.C
================================================
//#define DOOM2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <process.h>
#include <conio.h>
#include <dos.h>
#include "doomnet.h"
//#include "ipxstr.h"
#include "ipx_frch.h" // FRENCH VERSION
doomcom_t doomcom;
int vectorishooked;
void interrupt (*olddoomvect) (void);
/*
=============
=
= LaunchDOOM
=
These fields in doomcom should be filled in before calling:
short numnodes; // console is allways node 0
short ticdup; // 1 = no duplication, 2-5 = dup for
slow nets
short extratics; // 1 = send a backup tic in every
packet
short consoleplayer; // 0-3 = player number
short numplayers; // 1-4
short angleoffset; // 1 = left, 0 = center, -1 = right
short drone; // 1 = drone
=============
*/
void LaunchDOOM (void)
{
char *newargs[99];
char adrstring[10];
long flatadr;
// prepare for DOOM
doomcom.id = DOOMCOM_ID;
// hook the interrupt vector
olddoomvect = getvect (doomcom.intnum);
setvect (doomcom.intnum,(void interrupt (*)(void))MK_FP(_CS,
(int)NetISR));
vectorishooked = 1;
// build the argument list for DOOM, adding a -net &doomcom
memcpy (newargs, _argv, (_argc+1)*2);
newargs[_argc] = "-net";
flatadr = (long)_DS*16 + (unsigned)&doomcom;
sprintf (adrstring,"%lu",flatadr);
newargs[_argc+1] = adrstring;
newargs[_argc+2] = NULL;
if (!access("doom2.exe",0))
spawnv (P_WAIT, "doom2", newargs);
else
spawnv (P_WAIT, "doom", newargs);
#ifdef DOOM2
printf (STR_RETURNED"\n");
#else
printf ("Returned from DOOM\n");
#endif
}
================================================
FILE: ipx/DOOMNET.H
================================================
// doomnet.h
#define PEL_WRITE_ADR 0x3c8
#define PEL_DATA 0x3c9
#define I_ColorBlack(r,g,b) {outp(PEL_WRITE_ADR,0);outp(PEL_DATA,r);outp(PEL_DATA,g);outp(PEL_DATA,b);};
#define MAXNETNODES 8 // max computers in a game
#define MAXPLAYERS 4 // 4 players max + drones
#define CMD_SEND 1
#define CMD_GET 2
#define DOOMCOM_ID 0x12345678l
typedef struct
{
long id;
short intnum; // DOOM executes an int to send commands
// communication between DOOM and the driver
short command; // CMD_SEND or CMD_GET
short remotenode; // dest for send, set by get (-1 = no packet)
short datalength; // bytes in doomdata to be sent / bytes read
// info common to all nodes
short numnodes; // console is allways node 0
short ticdup; // 1 = no duplication, 2-5 = dup for slow nets
short extratics; // 1 = send a backup tic in every packet
short deathmatch; // 1 = deathmatch
short savegame; // -1 = new game, 0-5 = load savegame
short episode; // 1-3
short map; // 1-9
short skill; // 1-5
// info specific to this node
short consoleplayer; // 0-3 = player number
short numplayers; // 1-4
short angleoffset; // 1 = left, 0 = center, -1 = right
short drone; // 1 = drone
// packet data to be sent
char data[512];
} doomcom_t;
extern doomcom_t doomcom;
extern void interrupt (*olddoomvect) (void);
extern int vectorishooked;
int CheckParm (char *check);
void LaunchDOOM (void);
void interrupt NetISR (void);
================================================
FILE: ipx/IPXNET.C
================================================
// ipxnet.c
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <string.h>
#include <process.h>
#include <values.h>
#include "ipxnet.h"
/*
==========================================================================
===
IPX PACKET DRIVER
==========================================================================
===
*/
packet_t packets[NUMPACKETS];
nodeadr_t nodeadr[MAXNETNODES+1]; // first is local, last is broadcast
nodeadr_t remoteadr; // set by each GetPacket
localadr_t localadr; // set at startup
extern int socketid;
void far (*IPX)(void);
long localtime; // for time stamp in packets
long remotetime;
//===========================================================================
int OpenSocket(short socketNumber)
{
_DX = socketNumber;
_BX = 0;
_AL = 0;
IPX();
if(_AL)
Error ("OpenSocket: 0x%x", _AL);
return _DX;
}
void CloseSocket(short socketNumber)
{
_DX = socketNumber;
_BX = 1;
IPX();
}
void ListenForPacket(ECB *ecb)
{
_SI = FP_OFF(ecb);
_ES = FP_SEG(ecb);
_BX = 4;
IPX();
if(_AL)
Error ("ListenForPacket: 0x%x", _AL);
}
void GetLocalAddress (void)
{
_SI = FP_OFF(&localadr);
_ES = FP_SEG(&localadr);
_BX = 9;
IPX();
}
/*
====================
=
= InitNetwork
=
====================
*/
void InitNetwork (void)
{
int i,j;
//
// get IPX function address
//
_AX = 0x7a00;
geninterrupt(0x2f);
if(_AL != 0xff)
Error ("IPX not detected\n");
IPX = MK_FP(_ES, _DI);
//
// allocate a socket for sending and receiving
//
socketid = OpenSocket ( (socketid>>8) + ((socketid&255)<<8) );
GetLocalAddress();
//
// set up several receiving ECBs
//
memset (packets,0,NUMPACKETS*sizeof(packet_t));
for (i=1 ; i<NUMPACKETS ; i++)
{
packets[i].ecb.ECBSocket = socketid;
packets[i].ecb.FragmentCount = 1;
packets[i].ecb.fAddress[0] = FP_OFF(&packets[i].ipx);
packets[i].ecb.fAddress[1] = FP_SEG(&packets[i].ipx);
packets[i].ecb.fSize = sizeof(packet_t)-sizeof(ECB);
ListenForPacket (&packets[i].ecb);
}
//
// set up a sending ECB
//
memset (&packets[0],0,sizeof(packets[0]));
packets[0].ecb.ECBSocket = socketid;
packets[0].ecb.FragmentCount = 2;
packets[0].ecb.fAddress[0] = FP_OFF(&packets[0].ipx);
packets[0].ecb.fAddress[1] = FP_SEG(&packets[0].ipx);
for (j=0 ; j<4 ; j++)
packets[0].ipx.dNetwork[j] = localadr.network[j];
packets[0].ipx.dSocket[0] = socketid&255;
packets[0].ipx.dSocket[1] = socketid>>8;
packets[0].ecb.f2Address[0] = FP_OFF(&doomcom.data);
packets[0].ecb.f2Address[1] = FP_SEG(&doomcom.data);
// known local node at 0
for (i=0 ; i<6 ; i++)
nodeadr[0].node[i] = localadr.node[i];
// broadcast node at MAXNETNODES
for (j=0 ; j<6 ; j++)
nodeadr[MAXNETNODES].node[j] = 0xff;
}
/*
====================
=
= ShutdownNetwork
=
====================
*/
void ShutdownNetwork (void)
{
if (IPX)
CloseSocket (socketid);
}
/*
==============
=
= SendPacket
=
= A destination of MAXNETNODES is a broadcast
==============
*/
void SendPacket (int destination)
{
int j;
// set the time
packets[0].time = localtime;
// set the address
for (j=0 ; j<6 ; j++)
packets[0].ipx.dNode[j] =
packets[0].ecb.ImmediateAddress[j] =
nodeadr[destination].node[j];
// set the length (ipx + time + datalength)
packets[0].ecb.fSize = sizeof(IPXPacket) + 4;
packets[0].ecb.f2Size = doomcom.datalength + 4;
// send the packet
_SI = FP_OFF(&packets[0]);
_ES = FP_SEG(&packets[0]);
_BX = 3;
IPX();
if(_AL)
Error("SendPacket: 0x%x", _AL);
while(packets[0].ecb.InUseFlag != 0)
{
// IPX Relinquish Control - polled drivers MUST have this here!
_BX = 10;
IPX();
}
}
unsigned short ShortSwap (unsigned short i)
{
return ((i&255)<<8) + ((i>>8)&255);
}
/*
==============
=
= GetPacket
=
= Returns false if no packet is waiting
=
==============
*/
int GetPacket (void)
{
int packetnum;
int i, j;
long besttic;
packet_t *packet;
// if multiple packets are waiting, return them in order by time
besttic = MAXLONG;
packetnum = -1;
doomcom.remotenode = -1;
for ( i = 1 ; i < NUMPACKETS ; i++)
{
if (packets[i].ecb.InUseFlag)
{
continue;
}
if (packets[i].time < besttic)
{
besttic = packets[i].time;
packetnum = i;
}
}
if (besttic == MAXLONG)
return 0; // no packets
packet = &packets[packetnum];
if (besttic == -1 && localtime != -1)
{
ListenForPacket (&packet->ecb);
return 0; // setup broadcast from other game
}
remotetime = besttic;
//
// got a good packet
//
if (packet->ecb.CompletionCode)
Error ("GetPacket: ecb.ComletionCode = 0x%x",packet->ecb.CompletionCode);
// set remoteadr to the sender of the packet
memcpy (&remoteadr, packet->ipx.sNode, sizeof(remoteadr));
for (i=0 ; i<doomcom.numnodes ; i++)
if (!memcmp(&remoteadr, &nodeadr[i], sizeof(remoteadr)))
break;
if (i < doomcom.numnodes)
doomcom.remotenode = i;
else
{
if (localtime != -1)
{ // this really shouldn't happen
ListenForPacket (&packet->ecb);
return 0;
}
}
// copy out the data
doomcom.datalength = ShortSwap(packet->ipx.PacketLength) - 38;
memcpy (&doomcom.data, &packet->data, doomcom.datalength);
// repost the ECB
ListenForPacket (&packet->ecb);
return 1;
}
================================================
FILE: ipx/IPXNET.H
================================================
// ipxnet.h
typedef struct
{
char private[512];
} doomdata_t;
#include "DoomNet.h"
//===========================================================================
#define NUMPACKETS 10 // max outstanding packets before loss
// setupdata_t is used as doomdata_t during setup
typedef struct
{
short gameid; // so multiple games can setup at once
short drone;
short nodesfound;
short nodeswanted;
} setupdata_t;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long LONG;
typedef struct IPXPacketStructure
{
WORD PacketCheckSum; /* high-low */
WORD PacketLength; /* high-low */
BYTE PacketTransportControl;
BYTE PacketType;
BYTE dNetwork[4]; /* high-low */
BYTE dNode[6]; /* high-low */
BYTE dSocket[2]; /* high-low */
BYTE sNetwork[4]; /* high-low */
BYTE sNode[6]; /* high-low */
BYTE sSocket[2]; /* high-low */
} IPXPacket;
typedef struct
{
BYTE network[4]; /* high-low */
BYTE node[6]; /* high-low */
} localadr_t;
typedef struct
{
BYTE node[6]; /* high-low */
} nodeadr_t;
typedef struct ECBStructure
{
WORD Link[2]; /* offset-segment */
WORD ESRAddress[2]; /* offset-segment */
BYTE InUseFlag;
BYTE CompletionCode;
WORD ECBSocket; /* high-low */
BYTE IPXWorkspace[4]; /* N/A */
BYTE DriverWorkspace[12]; /* N/A */
BYTE ImmediateAddress[6]; /* high-low */
WORD FragmentCount; /* low-high */
WORD fAddress[2]; /* offset-segment */
WORD fSize; /* low-high */
WORD f2Address[2]; /* offset-segment */
WORD f2Size; /* low-high */
} ECB;
// time is used by the communication driver to sequence packets returned
// to DOOM when more than one is waiting
typedef struct
{
ECB ecb;
IPXPacket ipx;
long time;
doomdata_t data;
} packet_t;
extern doomcom_t doomcom;
extern int gameid;
extern nodeadr_t nodeadr[MAXNETNODES+1];
extern int localnodenum;
extern long localtime; // for time stamp in packets
extern long remotetime; // timestamp of last packet gotten
extern nodeadr_t remoteadr;
extern int myargc;
extern char **myargv;
void Error (char *error, ...);
void InitNetwork (void);
void ShutdownNetwork (void);
void SendPacket (int destination);
int GetPacket (void);
int CheckParm (char *check);
void PrintAddress (nodeadr_t *adr, char *str);
================================================
FILE: ipx/IPXSETUP.C
================================================
// ipxsetup.c
#define DOOM2
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <string.h>
#include <process.h>
#include <stdarg.h>
#include <bios.h>
#include "ipxnet.h"
//#include "ipxstr.h"
#include "ipx_frch.h" // FRENCH VERSION
int gameid;
int numnetnodes;
int socketid = 0x869c; // 0x869c is the official DOOM socket
int myargc;
char **myargv;
setupdata_t nodesetup[MAXNETNODES];
/*
=================
=
= Error
=
= For abnormal program terminations
=
=================
*/
void Error (char *error, ...)
{
va_list argptr;
if (vectorishooked)
setvect (doomcom.intnum,olddoomvect);
va_start (argptr,error);
vprintf (error,argptr);
va_end (argptr);
printf ("\n");
ShutdownNetwork ();
exit (1);
}
/*
=================
=
= CheckParm
=
= Checks for the given parameter in the program's command line arguments
=
= Returns the argument number (1 to argc-1) or 0 if not present
=
=================
*/
int CheckParm(char *parm)
{
int i;
for(i = 1; i < myargc; i++)
if(stricmp(parm, myargv[i]) == 0)
return i;
return 0;
}
/*
=============
=
= NetISR
=
=============
*/
void interrupt NetISR (void)
{
if (doomcom.command == CMD_SEND)
{
localtime++;
SendPacket (doomcom.remotenode);
}
else if (doomcom.command == CMD_GET)
{
GetPacket ();
}
}
/*
===================
=
= LookForNodes
=
= Finds all the nodes for the game and works out player numbers among
them
=
= Exits with nodesetup[0..numnodes] and nodeadr[0..numnodes] filled in
===================
*/
void LookForNodes (void)
{
int i,j,k;
int netids[MAXNETNODES];
int netplayer[MAXNETNODES];
struct time time;
int oldsec;
setupdata_t *setup, *dest;
char str[80];
int total, console;
//
// wait until we get [numnetnodes] packets, then start playing
// the playernumbers are assigned by netid
//
printf(STR_ATTEMPT, numnetnodes);
printf (STR_LOOKING);
oldsec = -1;
setup = (setupdata_t *)&doomcom.data;
localtime = -1; // in setup time, not game time
//
// build local setup info
//
nodesetup[0].nodesfound = 1;
nodesetup[0].nodeswanted = numnetnodes;
doomcom.numnodes = 1;
do
{
//
// check for aborting
//
while ( bioskey(1) )
{
if ( (bioskey (0) & 0xff) == 27)
Error ("\n\n"STR_NETABORT);
}
//
// listen to the network
//
while (GetPacket ())
{
if (doomcom.remotenode == -1)
dest = &nodesetup[doomcom.numnodes];
else
dest = &nodesetup[doomcom.remotenode];
if (remotetime != -1)
{ // an early game packet, not a setup packet
if (doomcom.remotenode == -1)
Error (STR_UNKNOWN);
// if it allready started, it must have found all nodes
dest->nodesfound = dest->nodeswanted;
continue;
}
// update setup ingo
memcpy (dest, setup, sizeof(*dest) );
if (doomcom.remotenode != -1)
continue; // allready know that node address
//
// this is a new node
//
memcpy (&nodeadr[doomcom.numnodes], &remoteadr
, sizeof(nodeadr[doomcom.numnodes]) );
//
// if this node has a lower address, take all startup info
//
if ( memcmp (&remoteadr, &nodeadr[0], sizeof(&remoteadr) )
< 0 )
{
}
doomcom.numnodes++;
printf ("\n"STR_FOUND"\n");
if (doomcom.numnodes < numnetnodes)
printf (STR_LOOKING);
}
//
// we are done if all nodes have found all other nodes
//
for (i=0 ; i<doomcom.numnodes ; i++)
if (nodesetup[i].nodesfound != nodesetup[i].nodeswanted)
break;
if (i == nodesetup[0].nodeswanted)
break; // got them all
//
// send out a broadcast packet every second
//
gettime (&time);
if (time.ti_sec == oldsec)
continue;
oldsec = time.ti_sec;
printf (".");
doomcom.datalength = sizeof(*setup);
nodesetup[0].nodesfound = doomcom.numnodes;
memcpy (&doomcom.data, &nodesetup[0], sizeof(*setup));
SendPacket (MAXNETNODES); // send to all
} while (1);
//
// count players
//
total = 0;
console = 0;
for (i=0 ; i<numnetnodes ; i++)
{
if (nodesetup[i].drone)
continue;
total++;
if (total > MAXPLAYERS)
Error (STR_MORETHAN,MAXPLAYERS);
if (memcmp (&nodeadr[i], &nodeadr[0], sizeof(nodeadr[0])) < 0)
console++;
}
if (!total)
Error (STR_NONESPEC);
doomcom.consoleplayer = console;
doomcom.numplayers = total;
printf (STR_CONSOLEIS"\n", console+1, total);
}
//========================================================
//
// Find a Response File
//
//========================================================
void FindResponseFile (void)
{
int i;
#define MAXARGVS 100
for (i = 1;i < myargc;i++)
if (myargv[i][0] == '@')
{
FILE * handle;
int size;
int k;
int index;
int indexinfile;
char *infile;
char *file;
char *moreargs[20];
char *firstargv;
// READ THE RESPONSE FILE INTO MEMORY
handle = fopen (&myargv[i][1],"rb");
if (!handle)
Error (STR_NORESP);
printf(STR_FOUNDRESP" \"%s\"!\n",strupr(&myargv[i][1]));
fseek (handle,0,SEEK_END);
size = ftell(handle);
fseek (handle,0,SEEK_SET);
file = malloc (size);
fread (file,size,1,handle);
fclose (handle);
// KEEP ALL CMDLINE ARGS FOLLOWING @RESPONSEFILE ARG
for (index = 0,k = i+1; k < myargc; k++)
moreargs[index++] = myargv[k];
firstargv = myargv[0];
myargv = malloc(sizeof(char *)*MAXARGVS);
memset(myargv,0,sizeof(char *)*MAXARGVS);
myargv[0] = firstargv;
infile = file;
indexinfile = k = 0;
indexinfile++; // SKIP PAST ARGV[0] (KEEP IT)
do
{
myargv[indexinfile++] = infile+k;
while(k < size &&
((*(infile+k)>= ' '+1) && (*(infile+k)<='z')))
k++;
*(infile+k) = 0;
while(k < size &&
((*(infile+k)<= ' ') || (*(infile+k)>'z')))
k++;
} while(k < size);
for (k = 0;k < index;k++)
myargv[indexinfile++] = moreargs[k];
myargc = indexinfile;
// DISPLAY ARGS
// printf("%d command-line args:\n",myargc);
// for (k=1;k<myargc;k++)
// printf("%s\n",myargv[k]);
break;
}
}
/*
=============
=
= main
=
=============
*/
void main (void)
{
int i;
unsigned char far *vector;
//
// determine game parameters
//
gameid = 0;
numnetnodes = 2;
doomcom.ticdup = 1;
doomcom.extratics = 1;
doomcom.episode = 1;
doomcom.map = 1;
doomcom.skill = 2;
doomcom.deathmatch = 0;
printf("\n"
"-----------------------------\n"
#ifdef DOOM2
STR_DOOMNETDRV"\n"
#else
"DOOM NETWORK DEVICE DRIVER\n"
#endif
"v1.22\n"
"-----------------------------\n");
myargc = _argc;
myargv = _argv;
FindResponseFile();
if((i = CheckParm("-nodes")) != 0)
numnetnodes = atoi(myargv[i+1]);
if((i = CheckParm("-vector")) != 0)
{
doomcom.intnum = sscanf ("0x%x",myargv[i+1]);
vector = *(char far * far *)(doomcom.intnum*4);
if(vector != NULL && *vector != 0xcf)
{
printf(STR_VECTSPEC"\n", doomcom.intnum);
exit(-1);
}
}
else
{
for(doomcom.intnum = 0x60 ; doomcom.intnum <= 0x66 ;
doomcom.intnum++)
{
vector = *(char far * far *)(doomcom.intnum*4);
if(vector == NULL || *vector == 0xcf)
break;
}
if(doomcom.intnum == 0x67)
{
printf(STR_NONULL"\n");
exit(-1);
}
}
printf(STR_COMMVECT"\n",doomcom.intnum);
if((i = CheckParm("-port")) != 0)
{
socketid = atoi (myargv[i+1]);
printf (STR_USEALT"\n", socketid);
}
InitNetwork ();
LookForNodes ();
localtime = 0;
LaunchDOOM ();
ShutdownNetwork ();
if (vectorishooked)
setvect (doomcom.intnum,olddoomvect);
exit(0);
}
================================================
FILE: ipx/IPXSTR.H
================================================
#define STR_NETABORT "Network game synchronization aborted."
#define STR_UNKNOWN "Got an unknown game packet during setup"
#define STR_FOUND "Found a node!"
#define STR_LOOKING "Looking for a node"
#define STR_MORETHAN "More than %i players specified!"
#define STR_NONESPEC "No players specified for game!"
#define STR_CONSOLEIS "Console is player %i of %i"
#define STR_NORESP "No such response file!"
#define STR_FOUNDRESP "Found response file"
#define STR_DOOMNETDRV "DOOM II NETWORK DEVICE DRIVER"
#define STR_VECTSPEC "The specified vector (0x%02x) was already hooked."
#define STR_NONULL \
"Warning: no NULL or iret interrupt vectors were found in the 0x60 to 0x66\n"\
"range. You can specify a vector with the -vector 0x<num> parameter."
#define STR_COMMVECT "Communicating with interrupt vector 0x%x"
#define STR_USEALT "Using alternate port %i for network"
#define STR_RETURNED "Returned from DOOM II"
#define STR_ATTEMPT "Attempting to find all players for %i player net play. "\
"Press ESC to exit.\n"
================================================
FILE: ipx/IPX_FRCH.H
================================================
#define STR_NETABORT "Synchronisation du jeu sur rseau annule."
#define STR_UNKNOWN "Paquet de jeu inconnu durant la configuration"
#define STR_FOUND "Noeud dtect!"
#define STR_LOOKING "Recherche d'un noeud"
#define STR_MORETHAN "Plus de %i joueurs spcifis!"
#define STR_NONESPEC "Pas de joueurs spcifis pour le jeu!"
#define STR_CONSOLEIS "Console: joueur %i sur %i"
#define STR_NORESP "Ce fichier de rponse n'existe pas!"
#define STR_FOUNDRESP "Fichier de rponse trouv"
#define STR_DOOMNETDRV "GESTIONNAIRE DE RESEAU DOOM II"
#define STR_VECTSPEC "Le vecteur spcifi (0x%02x) tait dj connect."
#define STR_NONULL \
"Attention: pas de vecteurs d'interruption NULL ou iret trouvs entre 0x60 et 0x66.\n"\
"Vous pouvez spcifier un vecteur avec le paramtre -vector 0x<numro>."
#define STR_COMMVECT "Communication avec le vecteur d'interruption 0x%x"
#define STR_USEALT "Utilisation du port alternatif %i pour le rseau"
#define STR_RETURNED "Retour de DOOM II"
#define STR_ATTEMPT \
"Tentatative de recherche de tous les joueurs pour le jeu en riseau `%i jouers\n" \
"Appuyez sur ECHAP pour quitter.\n"
================================================
FILE: ipx/README
================================================
This is the source for the DOOM ipx network driver.
================================================
FILE: linuxdoom-1.10/CVS/Entries
================================================
/ChangeLog/1.14/Mon Feb 3 22:45:08 1997//
/DOOMLIC.TXT/1.3/Sun Jan 26 07:44:56 1997//
/FILES/1.1/Sun Jan 19 17:22:41 1997//
/FILES2/1.1/Sun Jan 19 17:22:42 1997//
/Makefile/1.6/Mon Feb 3 22:45:08 1997//
/am_data.h/1.2/Tue Jan 21 18:59:56 1997//
/am_map.c/1.4/Mon Feb 3 21:24:33 1997//
/am_map.h/1.2/Tue Jan 21 18:59:56 1997//
/d_englsh.h/1.1/Mon Feb 3 21:48:03 1997//
/d_event.h/1.2/Mon Feb 3 22:01:47 1997//
/d_french.h/1.3/Mon Feb 3 21:48:03 1997//
/d_main.c/1.8/Mon Feb 3 22:45:09 1997//
/d_net.c/1.3/Mon Feb 3 22:01:47 1997//
/d_textur.h/1.1/Mon Feb 3 16:47:51 1997//
/doomdata.h/1.5/Mon Feb 3 22:45:09 1997//
/doomdef.h/1.9/Mon Feb 3 22:45:09 1997//
/doomtype.h/1.2/Mon Feb 3 22:45:09 1997//
/dstrings.h/1.4/Mon Feb 3 21:48:03 1997//
/dutils.c/1.5/Mon Feb 3 17:11:23 1997//
/dutils.h/1.4/Mon Feb 3 17:11:23 1997//
/f_finale.c/1.5/Mon Feb 3 21:26:34 1997//
/f_finale.h/1.1/Mon Feb 3 21:26:34 1997//
/f_wipe.c/1.2/Mon Feb 3 22:45:09 1997//
/f_wipe.h/1.1/Mon Feb 3 17:11:23 1997//
/fpfunc.S/1.1/Sun Jan 19 17:22:43 1997//
/g_game.c/1.8/Mon Feb 3 22:45:09 1997//
/g_game.h/1.1/Mon Feb 3 21:34:47 1997//
/hu_lib.c/1.3/Sun Jan 26 07:44:58 1997//
/hu_lib.h/1.4/Mon Feb 3 16:47:52 1997//
/hu_stuff.c/1.4/Mon Feb 3 16:47:52 1997//
/hu_stuff.h/1.3/Sun Jan 26 07:44:58 1997//
/i_dga.c/1.3/Sun Jan 26 07:44:58 1997//
/i_ibm.c/1.3/Sun Jan 26 07:44:58 1997//
/i_main.c/1.4/Mon Feb 3 22:45:10 1997//
/i_pcnet.c/1.3/Sun Jan 26 07:44:59 1997//
/i_sound.c/1.3/Sun Jan 26 07:44:59 1997//
/i_sound.h/1.3/Sun Jan 26 07:44:59 1997//
/i_svga.c/1.3/Sun Jan 26 07:44:59 1997//
/i_unix.c/1.5/Mon Feb 3 22:45:10 1997//
/i_x.c/1.6/Mon Feb 3 22:45:10 1997//
/info.c/1.3/Sun Jan 26 07:45:00 1997//
/info.h/1.3/Sun Jan 26 07:45:00 1997//
/irix.c/1.3/Sun Jan 26 07:45:00 1997//
/irix.h/1.3/Sun Jan 26 07:45:01 1997//
/linux.c/1.3/Sun Jan 26 07:45:01 1997//
/m_argv.c/1.1/Mon Feb 3 22:45:10 1997//
/m_argv.h/1.1/Mon Feb 3 22:45:10 1997//
/m_bbox.c/1.1/Mon Feb 3 22:45:10 1997//
/m_bbox.h/1.1/Mon Feb 3 22:45:10 1997//
/m_cheat.c/1.1/Mon Feb 3 21:24:34 1997//
/m_cheat.h/1.1/Mon Feb 3 21:24:34 1997//
/m_menu.c/1.7/Mon Feb 3 22:45:10 1997//
/m_menu.h/1.1/Mon Feb 3 22:01:49 1997//
/m_misc.c/1.6/Mon Feb 3 22:45:10 1997//
/m_misc.h/1.1/Mon Feb 3 22:45:11 1997//
/m_random.c/1.1/Mon Feb 3 22:45:11 1997//
/m_random.h/1.1/Mon Feb 3 22:45:11 1997//
/p_ceilng.c/1.4/Mon Feb 3 16:47:53 1997//
/p_doors.c/1.4/Mon Feb 3 16:47:53 1997//
/p_enemy.c/1.5/Mon Feb 3 22:45:11 1997//
/p_floor.c/1.4/Mon Feb 3 16:47:54 1997//
/p_inter.c/1.4/Mon Feb 3 22:45:11 1997//
/p_lights.c/1.5/Mon Feb 3 22:45:11 1997//
/p_local.h/1.3/Tue Jan 28 22:08:27 1997//
/p_map.c/1.5/Mon Feb 3 22:45:11 1997//
/p_maputl.c/1.5/Mon Feb 3 22:45:11 1997//
/p_mobj.c/1.5/Mon Feb 3 22:45:12 1997//
/p_plats.c/1.5/Mon Feb 3 22:45:12 1997//
/p_pspr.c/1.5/Mon Feb 3 22:45:12 1997//
/p_setup.c/1.5/Mon Feb 3 22:45:12 1997//
/p_sight.c/1.3/Tue Jan 28 22:08:28 1997//
/p_spec.c/1.6/Mon Feb 3 22:45:12 1997//
/p_spec.h/1.3/Tue Jan 28 22:08:29 1997//
/p_switch.c/1.3/Tue Jan 28 22:08:29 1997//
/p_telept.c/1.3/Tue Jan 28 22:08:29 1997//
/p_tick.c/1.4/Mon Feb 3 16:47:55 1997//
/p_user.c/1.3/Tue Jan 28 22:08:29 1997//
/r_bsp.c/1.4/Mon Feb 3 22:45:12 1997//
/r_data.c/1.4/Mon Feb 3 16:47:55 1997//
/r_draw.c/1.4/Mon Feb 3 16:47:55 1997//
/r_local.h/1.4/Mon Feb 3 21:26:34 1997//
/r_main.c/1.5/Mon Feb 3 22:45:12 1997//
/r_plane.c/1.4/Mon Feb 3 16:47:55 1997//
/r_segs.c/1.3/Wed Jan 29 20:10:19 1997//
/r_things.c/1.5/Mon Feb 3 16:47:56 1997//
/s_sound.c/1.6/Mon Feb 3 22:45:12 1997//
/sounds.c/1.3/Wed Jan 29 22:40:44 1997//
/sounds.h/1.3/Wed Jan 29 22:40:44 1997//
/soundsrv.c/1.3/Wed Jan 29 22:40:44 1997//
/soundsrv.h/1.3/Wed Jan 29 22:40:44 1997//
/soundst.h/1.3/Wed Jan 29 22:40:45 1997//
/st_lib.c/1.4/Mon Feb 3 16:47:56 1997//
/st_lib.h/1.4/Mon Feb 3 16:47:56 1997//
/st_stuff.c/1.6/Mon Feb 3 22:45:13 1997//
/st_stuff.h/1.3/Thu Jan 30 19:54:22 1997//
/sun.c/1.3/Thu Jan 30 19:54:22 1997//
/tables.c/1.4/Mon Feb 3 16:47:57 1997//
/tables.h/1.1/Mon Feb 3 16:47:57 1997//
/tmap.S/1.1/Sun Jan 19 17:22:51 1997//
/v_video.c/1.5/Mon Feb 3 22:45:13 1997//
/v_video.h/1.2/Mon Feb 3 17:11:59 1997//
/w_wad.c/1.5/Mon Feb 3 16:47:57 1997//
/wadread.c/1.3/Thu Jan 30 19:54:23 1997//
/wadread.h/1.3/Thu Jan 30 19:54:23 1997//
/wi_data.h/1.3/Thu Jan 30 19:54:23 1997//
/wi_stuff.c/1.7/Mon Feb 3 22:45:13 1997//
/wi_stuff.h/1.4/Mon Feb 3 16:47:58 1997//
/z_zone.c/1.4/Mon Feb 3 16:47:58 1997//
/z_zone.h/1.1/Mon Feb 3 16:47:58 1997//
================================================
FILE: linuxdoom-1.10/CVS/Repository
================================================
/info/cvsroot/id/id_doom
================================================
FILE: linuxdoom-1.10/CVS/Root
================================================
/info/cvsroot/
================================================
FILE: linuxdoom-1.10/ChangeLog
================================================
* TODO: see below, and in the "TODO" file. Enjoy!
Mon Dec 22 20:29:16 1997 <bk@gamers.org>
* CVS logs and other obsolete stuff removed. Anybody
who wants to keep some revision control now has a
clean slate to start with.
Mon Dec 22 19:53:34 1997 <bk@gamers.org>
* i_sound.c: enabled SNDSERV, as SNDINTR for
some reason just gives ghastly results e.g.
on E4M2. Frankly, I am at a loss. SNDSERV is
now default, until the internal sound driver
is a bit more reliable.
Note that the current redundancy means that
changes like the one below will have to
be propagated manually to the soundserver
sources.
* m_menu.c: the 4th episode is now removed with
the original doom.wad. You need to rename the
Ultimate DOOM/Special Edition retail IWAD to
doomu.wad now, or you won't see the 4th episode
in the menu. The compile time SPECIAL define
is thus gone.
Mon Dec 22 17:08:33 1997 <bk@gamers.org>
* v_video.c (V_DrawPatch): another last minute hack.
While shareware, retail, commercial, and plutonia
(being a full DOOM2 IWAD) seem to work okay now,
TNT gives an error on finishing the first mission:
"Patch at -35, -5 exceeds LFB".
I changed the error abort into a simple return,
thus the patch is ignored. The intermission screen
seems to come up okay.
* TODO: check which patch, and whether it is an IWAD
problem.
* i_sound.c: the sound table is hardwired in
sounds.h/sounds.c. As our current crude
sound handling simply loads *all* sounds at
startup, we are going to miss some with DOOM1
WAD files. I could skip them, but decided to
load a placeholder instead (dspistol). It might
be good to use a distinct default sound for
WAD debug purposes. A zero length sound lump
would work, but would not be noticeable.
Anyway, shareware and retail work now.
* TODO: implement proper handling for missing
lumps, sound and otherwise.
Perhaps move sound table into WAD?
* g_game.c (G_DoPlayDemo): finally removed the
annoying "Demo is from a different game version"
abort. It now simply declines to playback the
demo, and waits for user input on some
do_nothing screen.
* doomdef.h&Cie.: Lesson of the day - do not
replace a bunch of booleans with an enum and
use the same identifiers. Point in case:
"if ( commercial )" will not give an error,
and will always be true as long as the enum
value is greater than zero.
I found that the DOOM2 vs. DOOM differences
are everywhere (weapons, monsters, doors).
Number of episodes varies from shareware/commercial
to registered to retail, while commercial has
a unique set (two of them, counting the german
edition) of maps in one episode. Plus, TNT and
Plutonia add some TITLE strings to the mixture.
Well, Plutonia and TNT are treated as DOOM2 for
now, so you will miss the startup message.
* wi_stuff.h (NUMEPISODES): removed SPECIAL switch.
It is no 4 times 9 for wi_stuff.c internal
static arrays - doesn't matter.
* TODO: unified handling with DOOM 2 - dynamic
allocation of arrays.
* i_sound.c (I_UpdateSound): okay, I separated
the mixing, now done synchonously, along with
a flag signalling the timer that the mixing buffer
has been updated. The handler is now very short,
and I tried several intervals down to 50usecs,
w/o complaints. Now the man page says:
"system timer resolution currently 10ms". Odd.
Anyway, while the double shotgun/plasma rapid
fire problem seems to be a bit less disturbing
at higher refresh, it's still there. I set the
interval to 500usec, which is sufficient for
avoiding any buffer update misses.
Conclusion after just two days of experimentation:
yep, sound driver code isn't fun at all.
As for the bug - well, Dave Taylor suggested
close distance getting into a divide-by-near-zero
situation, screwing up the volume. I can't figure
why latency of an external sound driver or screen
size affect this, but I am running out of ideas.
* i_sound.c:
Some more experimentation with the timer driven
sound. It doesn't work well using an intervall
of less then 30 msecs - there will be artifacts
with say 50 msecs. This is pretty obvious with
a target frame rate of at least 30fps, methinks.
Using the REAL/SIGALRM timer with 30msec gets
rid of the artifacts, it seems - at the expense
of slowing down things on a P133 to a noticeable
jerkiness. Bah.
Mon Dec 22 00:36:54 1997 <bk@gamers.org>
* info.c: and i_video.c and i_sound.c - don't ask
me why some Linux header files are different with
gcc vs. g++, or what the complaint about the g++
complaint info.c state table is all about:
"initializer element for `states[..].action.acp1'
is not constant"
Undid some changes, compiled with gcc, playtested,
seems okay. Done for today... yesterday.
* i_net.c (ntohl): okay, htons/htonl, ntohs,ntohl
are back to haunt me. Copied the macros that
on my box aren't used for whatever reason directly
into the source. Got rid of all other multiple and
undefined references. CC=g++ now compiles (still
many warnings) and links, but the binary dumps a
core after Init PlayLoop. So be it.
Sun Dec 21 12:38:08 1997 <bk@gamers.org>
* p_enemy.c (P_NewChaseDir): changed tdir to int,
removed the LUTs - spurious locks were due to
endless loops created by boneheaded predecessor
map. Has to be a better way to do enum dirtype_t
anyway. Problem seems to be fixed.
* CC=gcc again, this time loads of #includes to
fix "implicit declarations, and one or two
unused variables. DOOM now compiles without
any -Wall warnings left, as C.
* Bug: compiled the reworked code with gcc. Within a
solid while of testing and blasting away, it
locked once. Got a core, which gdb doesn't grok.
Bah.
* TODO: okay, linkage of g++ build modules give loads
of errors, because we have many implicits, plus
missing #pragma implementation causing multiple
definitions. Yet, this is the very first time DOOM
was compiled as C++ without a parsing error. So there.
* sounds.c: included doomtype.h and removed yet another
enum { false, true } definition.
* p_saveg.c (misc): several.
* p_mobj.c (P_SpawnMobj): (actionf_p1)P_MobjThinker
* p_spec.c (EV_DoDonut): (action_p1) T_MoveFloor (twice).
* p_plats.c (EV_DoPlat): (actionf_p1) T_PlatRaise.
* p_plats.c (EV_StopPlat): (actionf_v)NULL.
* p_plats.c (P_ActivateInStasis): same
* p_lights.c (P_SpawnGlowingLight): (actionf_p1) T_Glow.
* p_lights.c (P_SpawnStrobeFlash): (actionf_p1) T_StrobeFlash.
* p_lights.c (P_SpawnLightFlash): (actionf_p1) T_LightFlash.
* p_lights.c (P_SpawnFireFlicker): (actionf_p1) T_FireFlicker.
* p_floor.c (EV_DoFloor): (actionf_p1) T_MoveFloor.
* p_floor.c (EV_BuildStairs): same (twice).
* p_doors.c (EV_VerticalDoor): (actionf_p1)T_VerticalDoor.
* p_doors.c (P_SpawnDoorCloseIn30): same
* p_doors.c (P_SpawnDoorRaiseIn5Mins): same
* p_doors.c (EV_DoDoor): same
* p_ceilng.c (EV_CeilingCrushStop): (actionf_v)NULL.
* p_ceilng.c (EV_DoCeiling): (actionf_p1)T_MoveCeiling.
* p_ceilng.c (P_ActivateInStasisCeiling): same.
These gave g++ errors, but have been ignored by gcc.
* r_data.c (R_PrecacheLevel): (actionf_p1)P_MobjThinker.
* p_saveg.c: conversions (actionf_p1)T_Whatever.
* p_tick.c: cast (actionf_v)(-1).
* p_telept.c: yet another (actionf_p1)P_MobjThinker.
* p_mobj.c (P_MobjThinker): cast (actionf_v)(-1).
* TODO: decent NOP/NULL/Nil function pointer.
I'd introduce a global A_NOP() function that
chokes up an error message.
Why -1 instead of NULL?
* p_enemy.c: conversions (actionf_p1)P_MobjThinker.
* d_think.h/info.h: think_t is essentially
the same action function pointer stuff.
I moved the definitions from info.h to
d_think.h, and aliased them with a typedef.
Now more changes needed.
* p_enemy.c (successor, predecessor): new LUT,
to provide increments/decrements for enum
dirtype_t, as g++ complaints:
"no post-increment/decrement operator for type"
* Makefile (CC): okay, tried "g++" once more.
A few errors (above). Plus shitloads of warnings
(obviously, better "unused" checking with C++,
lots of the usual int2enum suspects, implicit
declarations, the works).
* p_mobj.c: action.acp1 used accordingly.
* p_pspr.c: action.acp2 used accordingly.
* TODO: info.c:144 warning
"missing braces around initializer for `states[0].action'"
* info.h/info.c: some experimental stuff on
action function pointers.
* TODO: still some sound glitches at startup.
* i_sound.c: few more cleanups. Made mixing use
channel loop instead of unroll, set mixbuffer
to zero ot start.
Removed some more DOS leftovers (8bit),
kept some as comment.
* hu_stuff.c (HU_Start):
More gamemode changes. As in d_main.c, I
decided to use DOOM2 as default whenever
one needed - it was sold most, and had the
superset of items, enemies and monsters.
* TODO: the handling of WAD specific messages
like HU_TITLE, HU_TITLE2, HU_TITLEP etc.
should definitely be removed.
* d_main.c (CheckBetaTest):
Removed outdated, DOS specific BETATEST stuff.
d_main.c (IdentifyVersion):
Numerous changes to gamemode handling.
* TODO: currently, french language is enabled by
detecting an doom2f.wad - yet it needs FRENCH
define at compile time. I removed most language
stuff, and propose handling that at runtime,
using a switch in the config file. Well,
mission specific texts won't work outside the
WAD anyway.
* TODO: along the same lines: I suggest removing
the misc. devparm switches as well - lots of
redundancy not needed anymore.
* Makefile: finally added a doomstat.c for all
the global state variables listing internal
engine configuration. Right now, these are
scattered everywhere. Declaration to be found
in doomstat.h header.
* f_finale.c (F_StartFinale):
Reworked the entire finale handling based on
game mode enum.
* doomstat.h:
Global variables for game mode and language.
Removed old booleans.
* doomdef.h: GameMode_t and Language_t enum added.
Boolean for language was kinda limiting to 2
alternatives (french, english), and five boolean
plus #define SPECIAL for game version is just ugly.
* wi_stuff.h: SPECIAL switch compiles two
different EXE's, one for 3 episodes of 9 maps
each (DOOM 1 registered), one for 4 episodes
of 9 maps each (DOOM 1 retail/FinalDOOM).
Implicitely, the DOOM2 config (one episode,
34 missions) is handled. How is the german
edition (32 missions only) done?
Frankly, this is a mess. The problem is that
intermission (animated as in DOOM 1, simple
backdrop as in DOOM2) as well as certain
items (double shotgun) as well as certain
rendering stuff (sky texture) depend on this.
Plus, it ties into runtime flags as "commercial"
as well. Yuck.
Each change will change the game. Postponed.
* d_net.c,m_misc.c: removed last two NeXT remains.
* d_englsh.h,d_french.h,d_main.c,m_misc.c,r_draw.c,v_video.c:
more WATCOM remains removed. Kept some stuff that
handeld the blocky mode/detailshift in DOS, which
is n.a. in Linux - but probably not worth fixing.
Sat Dec 20 15:16:51 1997 <bk@gamers.org>
* Bug: core dump when using doom.wad or doom1.wad
without a "-file UNUSED/doom2.wad". Version
dependend handling of stuff (double shotgun)
comes to mind.
* doomdef.h:
SNDSERV enables external sound server
support. SNDINTR enables internal sound
output with timer (asynchronous). Default
is internal, synchronous.
* i_sound.c (I_HandleSoundTimer):
Okay, the plasma/double shotgun sound bug
(crapyy sund when firing nose-to-wall) is
obviously a problem with blocking at
refresh - smaller screen size makes it go
away.
I won't do threads w/o a proper gdb, and
I can't do whatever Dave Taylor did with
LinuxQuake w/o the sources, thus I broke
down and implemented a timer based solution.
Seems to work fine, given the fact that
this is the first time ever I implemented
sound handling.
Fri Dec 19 10:02:48 1997 <bk@gamers.org>
* m_menu.c/i_sound.c/s_sound.c:
Removed a few more inconsistencies due to
old internal sound handling (DOS),
external (Linux sndserver), and
new internal (the unfinished merge of
both the former).
The Options/Sound/Music volume menu is
accessible now. It was due to an internal
scaling of the menu (effective range 0-15),
up to 0..120, by multiply with 8 scattered
all over the place, that we got a
v_video.c: I_Error ("Bad V_DrawPatch")
Now I am using the menu resolution
everywhere, and scaling should only be done
in the actual mixing/output.
* OK, obviously this hasn't been updated in months.
This is because: a) most of the time nothing
happened, and b) when something got done, it was
too much to keep track of it by CVS and/or ChangeLog.
Basically, what happened in the meantime is that
I did not find a publisher who believed that the book
sales would be worth doing it. Within the limited
amount of time that I could dedicate to a project
that will not generate any revenue whatsoever,
I spent some time on cleaning up the Linux code
base which works, essentially. I might or might not
be able to participate in a Mesa+Voodoo+Glide based
GLDOOM port for Linux. I won't waste a minute on
Win32 without getting paid for it.
Because of the legal issues involved with the
DMX sound library id licensed for DOS DOOM, Linuxdoom
is the only code base that has sound support at all.
Other UNIX ports (SGI, Sun) could probably be revived
and integrated w/o too many problems. There is no
Win32 port - I never had access to WinDOOM or
Jim Dose's GLDOOM sources. There is no Linux
OpenGL (read: Mesa) support yet - that'd involve
internal changes which will best be done after a
public source release.
John Carmack opted for a release of the Linux code.
I have removed all DMX references I could get a
hold of, but preserved some of the original
sound handling within DOOM that interfaced
with DMX. Linuxdoom (like previous UNIX ports)
used a separate sound server binary. I did some
work on putting the sound server module back into
the engine. It works, but shutdown (pending sounds),
and sound output parallel to refresh (blocking)
is crappy, and there is a problem with double
shotgun and plasma at close distance (as well as
with lots of other noises going on). As the
mixing code is identical to the separate
soundserver, and as it doesn't seem to be a
blocking issue, I am currently at a loss - I
wonder whether the IPC communication with the
soundserver process introduced a delay that
changed behaviour, or whether I simply overlooked
a bug. I am currently lacking the time to track
this down, so I am keeping both internal and
soundserver source.
I did remove DOS and Watcom specifics. I did also
remove the texture mapping and fixed point assembly.
From my experience, it isn't worth the trouble
to ue GCC inline assembler, as performance of
the same loop written in C is perfectly sufficient.
On demand I will put both assembly modules into some
documentation, as they are probably of historic
interest.
There is no Sun DGA, Irix, or other non-Linux stuff
in this code base (at least, not intentionally).
They will be back when ports to other UNIX
environments will be merged back (I can't do
testing, and the modules were separate and not
consistent, so I refrained from wasting time on
this prior to a public release).
While I made only minor changes to the actual code
(some fixes, some cleaning up of SHM and audio),
I did a huge amount of shuffling around. I
introduced many more header files and modules,
some of them laughably small (doing these changes
is bound to screw up CVS, so no CVS record anymore
for the time being). I would introduce even more
separation if I had the time. Splitting the
animation/AI/behaviour code that defines
"DOOM - The Game" into a separate game.so (like
Quake2 does) should definitely be done. Separating
a ref_soft.so aka "DOOM - The Engine", and defining
a clean interface prior to introducing a ref_gl.so
is recommended as well.
I am going to purge some more leftovers, remove
the obsolete CVS history except for comments,
and try to clean up the last "implicit declaration"
and "unused variable" warnings. Except for enabling
cheats in nightmare (to have more fun while testing),
I did not change the game mechanics at all. I would
strongly advise against doing so w/o the proper
separations suggested above. I will not waste time
on fixing detail and blocky mode, lack of resize,
or other stuff that it better addressed by a proper
GLDOOM port.
Sat Aug 16 08:07:16 1997 <bk@hal.gamers.org>
* p_pspr.c:
Moved the sprite animation stuff from doomdef.h here.
* info.h:
Added #ifndef __INFO__ for multiple inclusion. I am
not going to deal with multigen, or changing the
original DOOM monster animation anyway.
* p_spec.h/c:
Moved anim_t etc., locally used only. There is
another anim_t in wi_stuff.h/c, now local as well,
so collisions on header inclusion should not occur.
#include "doomdef.h"
#include "doomstat.h"
these should now be topmost includes.
* doomstat.h, doomdef.h, wi_stuff.h, d_player.h:
I moved wbstartstruct_t to d_player.h, and wminfo
to doomstat.h. Basically, I will try to move all
global state related stuff into doomstat.h, and
all data structures defined for state variables
into doomdef.h - this will be kinda greek tragedy,
and never finished, but a body can try.
* wi_stuff.h/c, wi_data.h:
Removed wi_data.h, put all local stuff blah... see
below.
I have found several unused global variables,
started outcommenting them with //U, will remove
them later. It might be Watcom/PC stuff, or
somebody put the actual numbers into the implementation
instead of using STARDIST, ANIMPERIOD & Cie.
* st_stuff.h/c: from doomdef.h, local stuff moved
into st_stuff.c, etc.
In the current revisions, I am tolerating warnings
of the "implicit declaration" kind - the linker
resolves the stuff, and it will be handy in
unmangling the modules once the headers contain
only the globally visible stuff.
* am_map.h/c, am_data.h:
Removed am_data.h, put all local stuff into
am_map.c, moved globally needed headers from
doomdef.h into am_map.h.
* p_saveg.h, p_setup.h, p_tick.h:
created, stuff from doomde.h moved there
* d_main.c, d_net.c, doomdef.h:
Decided to dump mprintf, as only needed for
Watcom support which is not going to happen.
* doomdef.h:
Moved function prototypes to appropriate headers:
d_main.h, d_net.h.
Fri Aug 15 16:38:53 1997 <bk@hal.gamers.org>
* doomstat.h:
added a few more comments, regrouped some of the
state variables.
* doomdata.h: added a few more comments.
Thu Aug 14 10:38:37 1997 <bk@hal.gamers.org>
* g_game.c (G_DoLoadLevel):
copied the skyflatnum determination here, from
the R_InitSkyMap - once should be sufficient.
* Makefile, r_sky.h/c:
added r_sky module. The sky handling was scattered
over r_bsp, r_main, r_plane, doomstat.h...
* r_bsp.c, r_main.c, r_segs.c:
Removed RD_* calls from R_debug.m, NeXT switches.
* r_local.h:
Removed the R_debug.m NeXT specific debugging
code headers. Removed "drawbsp" flag from
here, and r_main.c, too.
* r_data.c:
Started to remove NORMALUNIX switches, using
LINUX instead. Basically, different UNIX
platforms using the same code should simply
be ANDed in the #ifdef switches.
* r_draw.c:
Removed some more, but not all WATCOMC support.
There is an unresolved problem with the fuzzy
blitting in the lowres (blocky) modes - either
the "detailshift" flag triggered lowres mode
will be removed, or the bug has to be fixed.
* r_bsp.h, r_draw.h, r_things.h, r_data.h,
r_segs.h, r_main.h, r_plane.h:
Created from r_local.h.
* Back to work.
Till March 22nd, a lot of source shuffling and addition
of new header files, separating stuff, and creating
new, smaller modules. Some Watcom/PC/DMX/NeXT etc.
related stuff got removed, but not all (yet). None of
this ended up in the Log (sorry) or the revision control
(CVS is not well suited while number of files and
respective names change a lot, especially if stuff gets
deleted and/or re-introduced).
Major change: part of the sound code got copied from the
separate Linux sndserver sources to the linuxdoom source.
Re-integration and removal of sndserver pending.
Nothing of importance happend since then (priorities).
Mon Feb 3 16:41:05 1997 <bk@gamers.org ()>
* m_misc.c:
Created m_argv, m_random and m_bbox, kept remains in m_misc
for the time being. Misc. files changed to include only
necessary modules. Moved bbox definitions from doomdata.h.
* m_menu.h:
Created from doomdef.h. Misc. changes in dependend modules.
I am not going to list every affected file from now on.
See Log entries within each file.
* dstrings.h:
Now handles multi-language support and switches.
So far, only english (default) and french are available.
* d_englsh.h:
Created from dstrings.h.
* g_game.h:
Created, from doomdef.h.
* am_map.c, st_stuff.c, wi_stuff.c:
* Makefile:
Added m_cheat, removed dutils. Doubly linked list stuff unused.
* m_cheat.h, m_cheat.c:
Created, basci cheat string scrambling and check, from dutils.h
and dutils.c.
* doomdef.h
Moved screen declaration to v_video.h.
* dutils.h, dutils.c
Remode code for f_wipe.h and f_wipe.c.
* Makefile
* d_main.c,
Added f_wipe files.
* f_wipe.h, f_wipe.c:
Created, screen wipe/melt at mission begin, from dutils.h
and dutils.c.
* d_textur.h:
Created from doomdata.h. Separates all the patch/texture
defintions. Needed for v_video module.
* r_local.h, wi_stuff.h, st_lib.h, hu_lib.h:
* i_x.c, d_main.c, m_menu.c, m_misc.c:
Added v_video.h.
* v_video.h:
Created. Using headers from doomdef.h. Forward of patch_t.
Moved bool and byte to doomtype.h.
Thu Jan 30 20:50:16 1997 <bk@gamers.org ()>
* doomtype.h:
Created, for fixed_t. Should add angle_t here, too.
* tables.c:
Added SlopeDiv from r_main.c, added all defines and typedefs
related to basic trig table use here, removed it.
Currently "tables.h" is included in doomdef.h and
r_local.h, too. This is not too cleanly separated, but
we have to start somewhere, right?
* tables.h:
Created from doomdef.h.
Note that tables.c had fixed size tables, while doomdef.h
calculated from the value of FINEANGLES. In addition,
entries were given as either "int" or "fixed_t". Bad boys.
* z_zone.c:
* s_sound.c:
* hu_stuff.c:
* st_lib.c, st_stuff.c:
* wi_stuff.c:
* w_wad.c:
* r_things.c, r_plane.c, r_draw.c, r_data.c:
* p_tick.c, p_mobj.c, p_spec.c, p_setup.c, p_lights.c,
p_plats.c, p_floor.c, p_doors.c, p_ceilng.c:
* am_map.c:
* m_misc.c, m_menu.c:
* g_game.c:
* d_main.c:
* f_finale.c:
Added #include "z_zone.h".
* z_zone.h:
Created, from stuff in doomdef.h
* CVS checkin. Reformatting run, last one.
Took a week to go through all the sources, w/o even
looking to closely.
* st_stuff.c (ST_Responder):
Removed a first tiny bit of redundancy (NO_CLIP checks).
Should remove idspispod completely, later.
Wed Jan 29 19:53:43 1997 <bk@gamers.org ()>
* Another one, while we are on it. All S (Sound) files.
* CVS checkin. Reformatting run, all R (Refresh) files.
* r_draw.c (R_DrawSpanLow):
The non-Watcom, non-asm lowres mode was just a copy
of the default mode. As detailshift was used to scale
the image down, lowres mode just filled the left half
of the buffer.
* r_draw.c (R_DrawColumnLow):
Tried the same hack for walls, horribly broken.
Postponed.
Tue Jan 28 19:32:48 1997 <bk@gamers.org ()>
* CVS checkin. Another reformatting run. Did all P files.
* p_spec.c: P_FindNextHighestFloor
The number of adjoining sectors is limited to 20, because
of a temporary LUT needed for determining lowest height
in adjacent sectors. No overflow checking is done.
Sun Jan 26 08:41:21 1997 <bk@gamers.org ()>
* Another CVS checkin of a formatting run.
D,F,G,HU,I,M have been changed.
* Note: in initial and current release,
linuxxdoom -3 -file plutonia.wad, idclev 12
produces a Segmentation fault.
Wed Jan 22 14:03:00 1997 <bk@gamers.org ()>
* m_menu.c:
initializer-string for array of chars is too long (skullName)
warning: unused parameter `int choice' (a couple of times)
* Attempt to compile as C++. Loads of warnings, a couple of errors.
p_enemy.c (P_Move):
r_things.c (R_ProjectSprite)
`catch', `throw', and `try' are all C++ reserved words,
thus changed "try" to "try_ok". Fixed.
p_pspr.c: In function `void P_SetPsprite(struct player_s *, ... )':
too many arguments to function
No convenient fix - state->action is declared void action(),
but called w/o, with one, or with two parameters.
There are more like this. Going to be a tough one.
Union of pointers?
Postponed.
r_plane.c: In function `void R_DrawPlanes()':
s_sound.c: In function `int S_AdjustSoundParams(struct mobj_s *, .. )':
p_map.c: In function `bool PIT_StompThing(struct mobj_s *)':
p_maputl.c: In function `int P_AproxDistance(int, int)':
r_main.c: In function `int R_PointToDist(int, int)':
p_enemy.c: In function `void P_NewChaseDir(struct mobj_s *)':
warning: implicit declaration of function `int abs(...)' <stdlib.h>
Wed Jan 22 12:15:00 1997 <bk@gamers.org ()>
* CVS checkin of purification run. Sources now compile
without any "-Wall" warnings.
* Note: with -file "tnt.wad", we get an "Error: Bad V_DrawPatch"
abort each time we enter an exit. Invalid or missing
intermission screen?
* Makefile (CFLAGS): added -Wall, first purification run.
d_main.c: In function `D_DoomMain':
warning: implicit declaration of function `mkdir' <fcntl.h>
i_unix.c: In function `I_StartSound':
warning: control reaches end of non-void function
i_unix.c: In function `I_InitNetwork':
warning: implicit declaration of function `inet_addr' <arpa/inet.h>
i_unix.c: At top level:
warning: `endianness' defined but not used
i_x.c: In function `I_Error':
warning: unused variable `string'
i_x.c: In function `I_GetEvent':
warning: suggest parentheses around arithmetic in operand of |
i_x.c: In function `I_FinishUpdate':
warning: unused variable `bigscreen'
i_x.c: In function `grabsharedmemory':
warning: implicit declaration of function `getuid' <unistd.h>
warning: unused variable `done'
i_x.c: In function `I_InitGraphics':
warning: suggest parentheses around assignment used as truth value
warning: char format, different type arg (arg 3)
warning: char format, different type arg (arg 5)
warning: implicit declaration of function `XShmGetEventBase'
i_x.c: In function `InitExpand2':
warning: unused variable `jexp'
warning: unused variable `iexp'
m_menu.c: In function `M_ReadSaveStrings':
warning: implicit declaration of function `read' <sys/types.h>
warning: implicit declaration of function `close' <unistd.h>
m_misc.c: In function `M_WriteFile':
warning: implicit declaration of function `write'
warning: implicit declaration of function `close'
m_misc.c: In function `M_ReadFile':
warning: implicit declaration of function `read'
m_misc.c: In function `M_ScreenShot':
warning: implicit declaration of function `access' <unistd.h>
p_pspr.c: In function `P_MovePsprites':
suggest parentheses around assignment used as truth value
p_spec.c: In function `P_SpawnSpecials':
warning: implicit declaration of function `atoi' <stdlib.h>
w_wad.c: In function `strupr':
warning: implicit declaration of function `toupper' <ctype.h>
w_wad.c: In function `W_AddFile':
warning: implicit declaration of function `read' <sys/types.h>
warning: implicit declaration of function `lseek'
warning: implicit declaration of function `close' <unistd.h>
wi_stuff.c: In function `WI_loadData':
warning: unused variable `pic'
wi_stuff.c: At top level:
warning: `background' defined but not used
Tue Jan 21 22:00:00 1997 <bk@gamers.org ()>
* doomdata.h (__BYTEBOOL__):
Use builtin ANSI C++ bool.
* d_main.c (IdentifyVersion):
Bug fix: insufficient malloc created errors in malloc/realloc
calls later on. Welcome to the risks of Copy'n'paste.
Tue Jan 21 13:20:05 1997 <bk@gamers.org ()>
* First formatting checkin.
A word of explanation: prior to making any changes to the
source, a couple of formatting runs will be made, followed
by some purification runs.
For this run, the Emacs mode selection line has been changed
to use C++ style indenting (cc-mode.el). Each file has
been automatically reformatted using Emacs indent-region.
A few files have been changed manually already (i.e.,
comments, use of tabs).
Warning: using "diff" to compare files of different states
during the reformatting will not give useful results.
* hu_stuff.c:
fixed "assignment discard const", the last remaining error
message with default compilation.
Sun Jan 19 14:27:06 1997 <bk@gamers.org ()>
* Makefile:
Minor fix for sndserver target, removed linuxsdoom target
for the time being, added CVS header (kind of).
* Initial CVS checkin.
* soundsrv/irix/linux/sun.c:
Changed includes (irix.h removed, soundsrv.h included).
* i_svga.c:
Changed to DOS 8+3.
* soundsrv.h/c:
Changed to DOS 8+3, included irix.h in soundsrv.h.
* r_local.h:
Same for PI, include math.h with Linux.
* doomdef.h:
Got rid of multiply defined warnings for Linux,
included values.h.
* FILES2:
created a commented list of all files, removed a few
more files (sndserver test, NeXT leftovers, DMX header).
Identified the following main modules (see FILES2):
AM, HU, M, P, R, S, ST, W, WI. Some stuff is separate
(Z, F), some not clearly separable (G, D). System specific
interfaces are in I. Some of the latter replace i_main.c
(i.e. the void/int main(argc,argv) call), e.g. SVGA,
others (X11, SHM, DGA) don't. There is a certain amount
of overlap, and the largest module (with possibly most
overlap) is P - playing, i.e. all the games state and
animation handling.
Dithering is currently not used.
Sat Jan 18 15:14:41 1997 <bk@gamers.org ()>
* r_draw.c:
fixed !defined(USEASM) lines for R_DrawColumn/Span.
Removed fpfunc.o/S from Makefile, now compiling
X11 w/o any assembler.
Got a running linuxxdoom again. We are in business.
This source is going to be used for the initial CVS
check in.
* Tried a quick hack compiling it as COFF a.out instead
of ELF, with "gcc -b i486-linuxaout". Same linker
errors.
Tried removing -DUSE_ASM. Still using fpfunc.S.
* Tried linuxxdoom.
Compile run: some warnings (redefinition of MAX/MIN
SHORT/INT/LONG) in doomdef.h and (PI redefined)
r_local.h.
Link run: crashed, undefined references in
d_main.c: undefined reference to `FixedDiv2'
am_map.c: undefined reference to `FixedMul'
r_main.c: undefined reference to `R_DrawColumn'
r_main.c: undefined reference to `R_DrawSpan'
r_plane.c: undefined reference to `FixedMul'
This stuff is defined in fpfunc.S (Fixed point) and
in r_draw.c (assembler in tmap.S not used).
However, "nm," shows that r_draw.o does not include
the drawing functions (see below - USE_ASM).
Furthermore, the global symbols in fpfunc.S begin
with an underscore, "_FixedMul" and "_FixedDiv2".
More problems within fpfunc.o: undefined references to
`_dc_yl' `_dc_yh'
`_ylookup'
`_centery'
`_dc_x'
`_columnofs'
`_dc_iscale'
`_dc_texturemid'
`_dc_source'
`_dc_colormap'
`_ds_y' `_ds_x1' `_ds_x2'
`_ds_xfrac' `_ds_yfrac'
`_ds_xstep' `_ds_ystep'
`_ds_colormap'
`_ds_source'
Again, underscore problem.
Note: tmap.S currently obsolete, as somebody pasted all
the texture mapping assembly into fpfunc.S. Gotta clean
that up.
* Created initial release from CD sources, created ChangeLog.
Let the games begin.
**************************************************************
DOOM source code ChangeLog file
**************************************************************
================================================
FILE: linuxdoom-1.10/FILES
================================================
total 1258
-rw-r--r-- 1 b1 prog 0 Jan 18 15:08 FILES
-rw-r--r-- 1 b1 prog 5799 Jan 18 15:07 Makefile
-rw-r--r-- 1 b1 prog 1943 Jan 18 15:07 am_data.h
-rw-r--r-- 1 b1 prog 20263 Jan 18 15:07 am_map.c
-rw-r--r-- 1 b1 prog 2494 Jan 18 15:07 am_map.h
-rw-r--r-- 1 b1 prog 1499 Jan 18 15:07 am_oids.c
-rw-r--r-- 1 b1 prog 338 Jan 18 15:07 am_oids.h
-rw-r--r-- 1 b1 prog 14005 Jan 18 15:07 d_french.h
-rw-r--r-- 1 b1 prog 25287 Jan 18 15:07 d_main.c
-rw-r--r-- 1 b1 prog 15586 Jan 18 15:07 d_net.c
-rw-r--r-- 1 b1 prog 744 Jan 18 15:07 defs.inc
-rw-r--r-- 1 b1 prog 3569 Jan 18 15:07 dither.c
-rw-r--r-- 1 b1 prog 355 Jan 18 15:07 dither.h
-rw-r--r-- 1 b1 prog 4234 Jan 18 15:07 doomdata.h
-rw-r--r-- 1 b1 prog 32779 Jan 18 15:07 doomdef.h
-rw-r--r-- 1 b1 prog 192 Jan 18 15:07 drcoord.h
-rw-r--r-- 1 b1 prog 22377 Jan 18 15:07 dstrings.h
-rw-r--r-- 1 b1 prog 6582 Jan 18 15:07 dutils.c
-rw-r--r-- 1 b1 prog 1821 Jan 18 15:07 dutils.h
-rw-r--r-- 1 b1 prog 14072 Jan 18 15:07 f_finale.c
-rw-r--r-- 1 b1 prog 7357 Jan 18 15:07 fpfunc.S
-rw-r--r-- 1 b1 prog 34770 Jan 18 15:07 g_game.c
-rw-r--r-- 1 b1 prog 5394 Jan 18 15:07 hu_lib.c
-rw-r--r-- 1 b1 prog 2878 Jan 18 15:07 hu_lib.h
-rw-r--r-- 1 b1 prog 12040 Jan 18 15:07 hu_stuff.c
-rw-r--r-- 1 b1 prog 934 Jan 18 15:07 hu_stuff.h
-rw-r--r-- 1 b1 prog 6238 Jan 18 15:07 i_cyber.c
-rw-r--r-- 1 b1 prog 18324 Jan 18 15:07 i_dga.c
-rw-r--r-- 1 b1 prog 2499 Jan 18 15:07 i_header.h
-rw-r--r-- 1 b1 prog 32815 Jan 18 15:07 i_ibm.c
-rw-r--r-- 1 b1 prog 1867 Jan 18 15:07 i_ibm_a.asm
-rw-r--r-- 1 b1 prog 121 Jan 18 15:07 i_main.c
-rw-r--r-- 1 b1 prog 8251 Jan 18 15:07 i_pcnet.c
-rw-r--r-- 1 b1 prog 8561 Jan 18 15:07 i_sound.c
-rw-r--r-- 1 b1 prog 439 Jan 18 15:07 i_sound.h
-rw-r--r-- 1 b1 prog 9537 Jan 18 15:07 i_svgalib.c
-rw-r--r-- 1 b1 prog 10886 Jan 18 15:07 i_unix.c
-rw-r--r-- 1 b1 prog 20891 Jan 18 15:07 i_x.c
-rw-r--r-- 1 b1 prog 128797 Jan 18 15:07 info.c
-rw-r--r-- 1 b1 prog 15840 Jan 18 15:07 info.h
-rw-r--r-- 1 b1 prog 3477 Jan 18 15:07 irix.c
-rw-r--r-- 1 b1 prog 240 Jan 18 15:07 irix.h
-rw-r--r-- 1 b1 prog 1363 Jan 18 15:07 linux.c
-rw-r--r-- 1 b1 prog 34628 Jan 18 15:07 m_menu.c
-rw-r--r-- 1 b1 prog 13741 Jan 18 15:07 m_misc.c
-rw-r--r-- 1 b1 prog 6117 Jan 18 15:07 p_ceilng.c
-rw-r--r-- 1 b1 prog 15062 Jan 18 15:07 p_doors.c
-rw-r--r-- 1 b1 prog 33758 Jan 18 15:07 p_enemy.c
-rw-r--r-- 1 b1 prog 11409 Jan 18 15:07 p_floor.c
-rw-r--r-- 1 b1 prog 16265 Jan 18 15:07 p_inter.c
-rw-r--r-- 1 b1 prog 7592 Jan 18 15:07 p_lights.c
-rw-r--r-- 1 b1 prog 6447 Jan 18 15:07 p_local.h
-rw-r--r-- 1 b1 prog 30138 Jan 18 15:07 p_map.c
-rw-r--r-- 1 b1 prog 14672 Jan 18 15:07 p_maputl.c
-rw-r--r-- 1 b1 prog 17276 Jan 18 15:07 p_mobj.c
-rw-r--r-- 1 b1 prog 5940 Jan 18 15:07 p_plats.c
-rw-r--r-- 1 b1 prog 17084 Jan 18 15:07 p_pspr.c
-rw-r--r-- 1 b1 prog 12828 Jan 18 15:07 p_setup.c
-rw-r--r-- 1 b1 prog 5962 Jan 18 15:07 p_sight.c
-rw-r--r-- 1 b1 prog 23846 Jan 18 15:07 p_spec.c
-rw-r--r-- 1 b1 prog 11140 Jan 18 15:07 p_spec.h
-rw-r--r-- 1 b1 prog 14229 Jan 18 15:07 p_switch.c
-rw-r--r-- 1 b1 prog 1910 Jan 18 15:07 p_telept.c
-rw-r--r-- 1 b1 prog 14075 Jan 18 15:07 p_tick.c
-rw-r--r-- 1 b1 prog 7044 Jan 18 15:07 p_user.c
-rw-r--r-- 1 b1 prog 13013 Jan 18 15:07 planar.asm
-rw-r--r-- 1 b1 prog 9811 Jan 18 15:07 r_bsp.c
-rw-r--r-- 1 b1 prog 14619 Jan 18 15:07 r_data.c
-rw-r--r-- 1 b1 prog 13591 Jan 18 15:07 r_draw.c
-rw-r--r-- 1 b1 prog 11378 Jan 18 15:07 r_local.h
-rw-r--r-- 1 b1 prog 14868 Jan 18 15:07 r_main.c
-rw-r--r-- 1 b1 prog 7108 Jan 18 15:07 r_plane.c
-rw-r--r-- 1 b1 prog 15420 Jan 18 15:07 r_segs.c
-rw-r--r-- 1 b1 prog 18969 Jan 18 15:07 r_things.c
-rw-r--r-- 1 b1 prog 12274 Jan 18 15:07 s_sound.c
-rw-r--r-- 1 b1 prog 12812 Jan 18 15:07 sndserver.c
-rw-r--r-- 1 b1 prog 141 Jan 18 15:07 sndserver.h
-rw-r--r-- 1 b1 prog 5811 Jan 18 15:07 sounds.c
-rw-r--r-- 1 b1 prog 2674 Jan 18 15:07 sounds.h
-rw-r--r-- 1 b1 prog 3975 Jan 18 15:07 soundst.h
-rw-r--r-- 1 b1 prog 3461 Jan 18 15:07 st_lib.c
-rw-r--r-- 1 b1 prog 2254 Jan 18 15:07 st_lib.h
-rw-r--r-- 1 b1 prog 22769 Jan 18 15:07 st_stuff.c
-rw-r--r-- 1 b1 prog 4685 Jan 18 15:07 st_stuff.h
-rw-r--r-- 1 b1 prog 1725 Jan 18 15:07 sun.c
-rw-r--r-- 1 b1 prog 75 Jan 18 15:07 t.c
-rw-r--r-- 1 b1 prog 114621 Jan 18 15:07 tables.c
-rw-r--r-- 1 b1 prog 5485 Jan 18 15:07 tmap.S
-rw-r--r-- 1 b1 prog 10904 Jan 18 15:07 v_video.c
-rw-r--r-- 1 b1 prog 268 Jan 18 15:07 vgaview.h
-rw-r--r-- 1 b1 prog 9920 Jan 18 15:07 w_wad.c
-rw-r--r-- 1 b1 prog 3629 Jan 18 15:07 wadread.c
-rw-r--r-- 1 b1 prog 551 Jan 18 15:07 wadread.h
-rw-r--r-- 1 b1 prog 3583 Jan 18 15:07 wi_data.h
-rw-r--r-- 1 b1 prog 25608 Jan 18 15:07 wi_stuff.c
-rw-r--r-- 1 b1 prog 1544 Jan 18 15:07 wi_stuff.h
-rw-r--r-- 1 b1 prog 8501 Jan 18 15:07 z_zone.c
================================================
FILE: linuxdoom-1.10/FILES2
================================================
ChangeLog
FILES
FILES2
Makefile
-----------------------------------------------------------------------
Global and misc. stuff
-----------------------------------------------------------------------
doomdata.h - external data definitions (WAD file structure)
doomdef.h - internal data definitions (game structs)
dstrings.h - printed strings for translation, english
d_french.h - printed strings for translation
info.h
info.c - LUT's for Thing TAB, Frame TAB,
generated by multigen utility
dutils.h
dutils.c - Dave's utilities
including doubly-linked lists & simple state machines.
Used in WI, ST, AM, and d_main.c
------------------------------------------------------------------------
DOOM game loop and top level stuff
------------------------------------------------------------------------
g_game.c - Game loop functions, event handling etc.
boolean G_CheckDemoStatus (void);
void G_ReadDemoTiccmd (ticcmd_t *cmd);
void G_WriteDemoTiccmd (ticcmd_t *cmd);
void G_PlayerReborn (int player);
void G_InitNew (skill_t skill, int episode, int map);
void G_DoReborn (int playernum);
void G_DoLoadLevel (void);
void G_DoNewGame (void);
void G_DoLoadGame (void);
void G_DoPlayDemo (void);
void G_DoCompleted (void);
void G_DoVictory (void);
void G_DoWorldDone (void);
void G_DoSaveGame (void);
d_main.c - event handling, D_DoomMain() and other functions
NOT int main()
d_net.c - high level networking protocol code
------------------------------------------------------------------
I Interfaces, system specifics
------------------------------------------------------------------
i_main.c - main(), calls D_DoomMain().
i_svgalib.c - Linux SVGAlib code, including main(),
replaces i_main.c
i_x.c - X11 with SHM code, use with i_main.c
i_dga.c - X11 DGA code, use with i_main.c
i_unix.c - fixed point, networking, and display stuff for UNIX
i_ibm.c - IBM DOS VGA graphics and key/mouse/joystick,
use with i_main.c
i_pcnet.c - IPX networking, DOS
fpfunc.S - fixed point assembly and (currently) duplicate of
tmap.S - texture mapping assembly (currently unused)
------------------------------------------------------------------
AM AutoMap
------------------------------------------------------------------
am_data.h - vector graphics for the automap
am_map.h
am_map.c - automap code
------------------------------------------------------------------
HU Heads Up
------------------------------------------------------------------
hu_lib.h
hu_lib.c - heads-up text and input code
hu_stuff.h
hu_stuff.c - Heads-up displays
-------------------------------------------------------------------
M Menu
-------------------------------------------------------------------
m_menu.c - DOOM options code and leaving messages
m_misc.c - misc. HUD text display, input checks, and
random table, file I/O
-------------------------------------------------------------------
P Play???
-------------------------------------------------------------------
p_local.h - header for all play modules
p_spec.h - specials, lighting, doors, plats, texture animation
p_spec.c - specials, texture animation
p_doors.c - door code
p_plats.c - platform raising/lowering code
p_ceilng.c - active (e.g. crushing) ceilings
p_floor.c - active (e.g. raising) floors
p_lights.c - dynamic (e.g. flickering) lighting
p_switch.c - button switches and animation
p_enemy.c - enemy AI and animation
p_inter.c - object/object interaction?
p_map.c - movement objects, handling of collisions
p_maputl.c - distance, position etc. utilities for movement
p_mobj.c - mobile objects handling, spawn etc.
p_user.c - more movement, bobbing etc.
p_telept.c - teleportation code
p_sight.c - LOS checks, REJECT
p_pspr.c - weapon overlays, bobbing, raising, sprite tables,
firing, ammo bookkeeping
p_setup.c - load map from WAF file, setup code
p_tick.c - savegame function (archive/unarchive),
thinker list handling, allocation,
game tick execution (updates)
-------------------------------------------------------------------
R Rendering
-------------------------------------------------------------------
r_local.h - header for all rendering modules,
internal map data structure definitions
r_bsp.c - BSP seg's clipping
r_data.c - texture column caching, patch assembly,
flats, colormaps, sprites,
lookup by name
r_draw.c - access to framebuffer API, drawing C functions
r_main.c - geometry functions, trigonometry lookups,
R_RenderPlayerView
r_plane.c - floor/ceiling visplanes, sky
r_segs.c - drawing segs, marking hslices for floors/ceilings
r_things.c - sprite and sprite frame/rotation handling, drawing
tables.c - trigonometry lookup tables, static
v_video.c - gamma correction lookup, patch drawing to rectangle
-------------------------------------------------------------------
S Sound
-------------------------------------------------------------------
s_sound.c - more sound and music handling
soundst.h - sound and music data structures
sounds.h
sounds.c - sound and music lump LUT's (manually maintained)
sndserver.h
sndserver.c - (Irix) sndserver code
irix.h
irix.c - SGI Irix sound/sndserver support code
linux.c - Linux voxware sound/sndserver support code,
replaces irix.c, uses irix.h
sun.c - SUN replacement for irix.c
i_sound.h
i_sound.c - DOS DMX music and sound interface
-------------------------------------------------------------------
ST STatus bar
-------------------------------------------------------------------
st_lib.h
st_lib.c - status bar widget code
st_stuff.c
st_stuff.h - status bar code
-------------------------------------------------------------------
W Wad file I/O
-------------------------------------------------------------------
w_wad.c - lump based functions
wadread.h
wadread.c - lump I/O, get SFX
-------------------------------------------------------------------
WI WIn / level end screens
-------------------------------------------------------------------
wi_data.h - lookups for intermission screens, patch positions
wi_stuff.h
wi_stuff.c - intermission animation patchwork
-------------------------------------------------------------------
Z Zone memory allocation
-------------------------------------------------------------------
z_zone.c
-------------------------------------------------------------------
F Final screen animation
-------------------------------------------------------------------
f_finale.c - DOOM mission end screens? (bunny)
-------------------------------------------------------------------
================================================
FILE: linuxdoom-1.10/Makefile
================================================
################################################################
#
# $Id:$
#
# $Log:$
#
CC= gcc # gcc or g++
CFLAGS=-g -Wall -DNORMALUNIX -DLINUX # -DUSEASM
LDFLAGS=-L/usr/X11R6/lib
LIBS=-lXext -lX11 -lnsl -lm
# subdirectory for objects
O=linux
# not too sophisticated dependency
OBJS= \
$(O)/doomdef.o \
$(O)/doomstat.o \
$(O)/dstrings.o \
$(O)/i_system.o \
$(O)/i_sound.o \
$(O)/i_video.o \
$(O)/i_net.o \
$(O)/tables.o \
$(O)/f_finale.o \
$(O)/f_wipe.o \
$(O)/d_main.o \
$(O)/d_net.o \
$(O)/d_items.o \
$(O)/g_game.o \
$(O)/m_menu.o \
$(O)/m_misc.o \
$(O)/m_argv.o \
$(O)/m_bbox.o \
$(O)/m_fixed.o \
$(O)/m_swap.o \
$(O)/m_cheat.o \
$(O)/m_random.o \
$(O)/am_map.o \
$(O)/p_ceilng.o \
$(O)/p_doors.o \
$(O)/p_enemy.o \
$(O)/p_floor.o \
$(O)/p_inter.o \
$(O)/p_lights.o \
$(O)/p_map.o \
$(O)/p_maputl.o \
$(O)/p_plats.o \
$(O)/p_pspr.o \
$(O)/p_setup.o \
$(O)/p_sight.o \
$(O)/p_spec.o \
$(O)/p_switch.o \
$(O)/p_mobj.o \
$(O)/p_telept.o \
$(O)/p_tick.o \
$(O)/p_saveg.o \
$(O)/p_user.o \
$(O)/r_bsp.o \
$(O)/r_data.o \
$(O)/r_draw.o \
$(O)/r_main.o \
$(O)/r_plane.o \
$(O)/r_segs.o \
$(O)/r_sky.o \
$(O)/r_things.o \
$(O)/w_wad.o \
$(O)/wi_stuff.o \
$(O)/v_video.o \
$(O)/st_lib.o \
$(O)/st_stuff.o \
$(O)/hu_stuff.o \
$(O)/hu_lib.o \
$(O)/s_sound.o \
$(O)/z_zone.o \
$(O)/info.o \
$(O)/sounds.o
all: $(O)/linuxxdoom
clean:
rm -f *.o *~ *.flc
rm -f linux/*
$(O)/linuxxdoom: $(OBJS) $(O)/i_main.o
$(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(O)/i_main.o \
-o $(O)/linuxxdoom $(LIBS)
$(O)/%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
#############################################################
#
#############################################################
================================================
FILE: linuxdoom-1.10/README.asm
================================================
README - DOOM assembly code
Okay, I add the DOS assembly module for the historically
inclined here (may rec.games.programmer suffer). If anyone
feels the urge to port these to GNU GCC; either inline or
as separate modules including Makefile support, be my guest.
Module tmap.S includes the inner loops for texture mapping,
the interesting one being the floor/ceiling span rendering.
There was another module in the source dump, fpfunc.S, that
had both texture mapping and fixed point functions. It
contained implementations both for i386 and M68k. For
brevity, I include only the i386 fixed point stuff below.
//====================================================
// tmap.S as of January 10th, 1997
//================
//
// R_DrawColumn
//
//================
.data
loopcount .long 0
pixelcount .long 0
.text
.align 16
.globl _R_DrawColumn
_R_DrawColumn:
pushad
movl ebp,[_dc_yl]
movl ebx,ebp
movl edi,[_ylookup+ebx*4]
movl ebx,[_dc_x]
addl edi,[_columnofs + ebx*4]
movl eax,[_dc_yh]
incl eax
subl eax,ebp // pixel count
movl [pixelcount],eax // save for final pixel
js done // nothing to scale
shrl eax,1 // double pixel count
movl [loopcount],eax
movl ecx,[_dc_iscale]
movl eax,[_centery]
subl eax,ebp
imull ecx
movl ebp,[_dc_texturemid]
subl ebp,eax
shll ebp,9 // 7 significant bits, 25 frac
movl esi,[_dc_source]
movl ebx,[_dc_iscale]
shll ebx,9
movl eax,OFFSET patch1+2 // convice tasm to modify code...
movl [eax],ebx
movl eax,OFFSET patch2+2 // convice tasm to modify code...
movl [eax],ebx
// eax aligned colormap
// ebx aligned colormap
// ecx,edx scratch
// esi virtual source
// edi moving destination pointer
// ebp frac
movl ecx,ebp // begin calculating first pixel
addl ebp,ebx // advance frac pointer
shrl ecx,25 // finish calculation for first pixel
movl edx,ebp // begin calculating second pixel
addl ebp,ebx // advance frac pointer
shrl edx,25 // finish calculation for second pixel
movl eax,[_dc_colormap]
movl ebx,eax
movb al,[esi+ecx] // get first pixel
movb bl,[esi+edx] // get second pixel
movb al,[eax] // color translate first pixel
movb bl,[ebx] // color translate second pixel
testl [pixelcount],0fffffffeh
jnz doubleloop // at least two pixels to map
jmp checklast
.align 16
doubleloop:
movl ecx,ebp // begin calculating third pixel
patch1:
addl ebp,12345678h // advance frac pointer
movb [edi],al // write first pixel
shrl ecx,25 // finish calculation for third pixel
movl edx,ebp // begin calculating fourth pixel
patch2:
addl ebp,12345678h // advance frac pointer
movl [edi+SCREENWIDTH],bl // write second pixel
shrl edx,25 // finish calculation for fourth pixel
movb al,[esi+ecx] // get third pixel
addl edi,SCREENWIDTH*2 // advance to third pixel destination
movb bl,[esi+edx] // get fourth pixel
decl [loopcount] // done with loop?
movb al,[eax] // color translate third pixel
movb bl,[ebx] // color translate fourth pixel
jnz doubleloop
// check for final pixel
checklast:
testl [pixelcount],1
jz done
movb [edi],al // write final pixel
done:
popad
ret
//================
//
// R_DrawSpan
//
// Horizontal texture mapping
//
//================
.align 16
.globl _R_DrawSpan
_R_DrawSpan:
pushad
//
// find loop count
//
movl eax,[_ds_x2]
incl eax
subl eax,[_ds_x1] // pixel count
movl [pixelcount],eax // save for final pixel
js hdone // nothing to scale
shrl eax,1 // double pixel count
movl [loopcount],eax
//
// build composite position
//
movl ebp,[_ds_xfrac]
shll ebp,10
andl ebp,0ffff0000h
movl eax,[_ds_yfrac]
shrl eax,6
andl eax,0ffffh
orl ebp,eax
movl esi,[_ds_source]
//
// calculate screen dest
//
movl edi,[_ds_y]
movl edi,[_ylookup+edi*4]
movl eax,[_ds_x1]
addl edi,[_columnofs+eax*4]
//
// build composite step
//
movl ebx,[_ds_xstep]
shll ebx,10
andl ebx,0ffff0000h
movl eax,[_ds_ystep]
shrl eax,6
andl eax,0ffffh
orl ebx,eax
movl eax,OFFSET hpatch1+2 // convice tasm to modify code...
movl [eax],ebx
movl eax,OFFSET hpatch2+2 // convice tasm to modify code...
movl [eax],ebx
// eax aligned colormap
// ebx aligned colormap
// ecx,edx scratch
// esi virtual source
// edi moving destination pointer
// ebp frac
shldl ecx,ebp,22 // begin calculating third pixel (y units)
shldl ecx,ebp,6 // begin calculating third pixel (x units)
addl ebp,ebx // advance frac pointer
andl ecx,4095 // finish calculation for third pixel
shldl edx,ebp,22 // begin calculating fourth pixel (y units)
shldl edx,ebp,6 // begin calculating fourth pixel (x units)
addl ebp,ebx // advance frac pointer
andl edx,4095 // finish calculation for fourth pixel
movl eax,[_ds_colormap]
movl ebx,eax
movb al,[esi+ecx] // get first pixel
movb bl,[esi+edx] // get second pixel
movb al,[eax] // color translate first pixel
movb bl,[ebx] // color translate second pixel
testl [pixelcount],0fffffffeh
jnz hdoubleloop // at least two pixels to map
jmp hchecklast
.align 16
hdoubleloop:
shldl ecx,ebp,22 // begin calculating third pixel (y units)
shldl ecx,ebp,6 // begin calculating third pixel (x units)
hpatch1:
addl ebp,12345678h // advance frac pointer
movb [edi],al // write first pixel
andl ecx,4095 // finish calculation for third pixel
shldl edx,ebp,22 // begin calculating fourth pixel (y units)
shldl edx,ebp,6 // begin calculating fourth pixel (x units)
hpatch2:
addl ebp,12345678h // advance frac pointer
movb [edi+1],bl // write second pixel
andl edx,4095 // finish calculation for fourth pixel
movb al,[esi+ecx] // get third pixel
addl edi,2 // advance to third pixel destination
movb bl,[esi+edx] // get fourth pixel
decl [loopcount] // done with loop?
movb al,[eax] // color translate third pixel
movb bl,[ebx] // color translate fourth pixel
jnz hdoubleloop
// check for final pixel
hchecklast:
testl [pixelcount],1
jz hdone
movb [edi],al // write final pixel
hdone:
popad
ret
//====================================================
// fpfunc.S as of January 10th, 1997 (parts)
#ifdef i386
.text
.align 4
.globl _FixedMul
_FixedMul:
pushl %ebp
movl %esp,%ebp
movl 8(%ebp),%eax
imull 12(%ebp)
shrdl $16,%edx,%eax
popl %ebp
ret
.align 4
.globl _FixedDiv2
_FixedDiv2:
pushl %ebp
movl %esp,%ebp
movl 8(%ebp),%eax
cdq
shldl $16,%eax,%edx
sall $16,%eax
idivl 12(%ebp)
popl %ebp
ret
#endif
================================================
FILE: linuxdoom-1.10/README.b
================================================
README for Linux DOOM Source distribution
=========================================
DISCLAIMER
----------
This is not "The DOOM Source Code" dump for a bunch
of reasons. It is based on a DOOM development directory
snapshot as of January 10th, but has been stripped and
changed. Thus it is the DOOM source, but there are many
minor differences to the source as last used by id
Software.
Note that thus neither John Carmack nor Dave Taylor nor
anybody else at id is responsible for the contents of
this archive, or the changes introduced to the original
source.
If there are any questions, contact me at bk@gamers.org,
or preferably post to the mailing list at
doom-editing@gamers.org
(send mail to majordomo@gamers.org, content just
a single "info doom-editing"). I will post any updates
or notifcation of corrections there. I will probably
put some stuff at
http://www.gamers.org/dEngine/doom/
as well. Look there for the "Unofficial DOOM Specs" as
minimal recommended documentation.
REMARKS
-------
I made a few minor bug fixes, added some experimental sound
code, and, and changed the handling of IWAD dependend game
modes. Most of the changes though have been shuffling
around sources in a sometimes futile attempt to separate
modules more cleanly, and make certain parts easier
to locate and modify. There is still much left to do, but
I hope that the current source is a good base to start
with, especially with a cooperative effort in mind. Those
so inclined will find the source prepared for CVS.
There is a list of changes and fixes I did not get around
to in TODO, and an incomplete worklog in ChangeLog, that
also includes some minor ToDo statements scattered throughout
the log.
a) Linux SVGA
There is no SVGA support. For development and debug
purposes, the X11 version seems to be more handy.
b) Sound - see README.sound,
and the sndserver.tgz archive.
c) GLDOOM - see README.gl
d) Win32
There was no Win32 support in the original dump.
e) DOS
Original DOS support (including the texture
mapping and fixed point assembler) has been
removed, mainly because of the lack of sound
support.
f) DoomEd
The NeXTStep DoomEd sources in the dump were
garbled (filenames - prolly an issue of ISO9660
with or w/o extensions). Somehow Bear never got
around to send me a list of the correct filenames,
and I won't bother guessing without a NeXT box
at hand.
There is a plethora of useful editors
for DOOM. I suggest using DEU for X11.
g) BSP Tools
The BSP builder and other tools have
been released by John Carmack long ago,
and since improved/replaced by others.
Again, I recommend taking a pick among
the tools available for Linux.
h) DOOM game tools
There are a number of tools that have
not been released, namely those which
compiled the Things and State Tables,
the frame animation LUT's, sound tables
etc. Basically, they compile similarly
complex LUT's to generate C files. The
tools are omitted from this distribution.
There are some files in the
distribution (info.h/c, sounds.h/c)
that are essentially the output of these
tools. This is the data that defines
DOOM (as a game) for all practical
purposes.
I recommend keeping them, as they are
part of the source. In the long run,
handling them as well as the action/
animation functions as a separate game.so
library (as with Quake2) seems to be a
good idea.
i) Artwork
Neither the original artwork nor the
misc. WAD files are included in this
archive. You will at least need the
shareware WAD file to run the executable,
but it shouldn't be to difficult to get
a hold of that.
Note that the mechanism to detect the
presence of a registered or commercial
version is still in the source, and
homebrew maps are still disabled. This
is easily removed now, but as FinalDOOM,
Ultimate DOOM and DOOM 2 are still in
the shops, it is probably polite not
to distribute a source or binary without
that mechanism.
This version of Linuxdoom supports Plutonia
and TNT WAD from FinalDOOM as well. No
guarantees, though.
Enjoy!
b. 97/12/22
================================================
FILE: linuxdoom-1.10/README.book
================================================
The DOOM Book
Shortly after the Wolfenstein 3D source release,
I sent a mail to Jay Wilbur suggesting a book
about the DOOM engine. I anticipated a similar
release of the DOOM sources within a year or
two, and the obvious problems with the Wolfenstein
sources (lack of accompanying artwork, a code
base not maintained for quite some time) seemed
to demand a better approach. I talked to some
publishing company reps at the Book Fair in 1995,
and while they were cautiously interested, id was
not.
In the last weeks of 1996, following a visit at
id Software two months earlier, and after the
departure of Jay Wilbur, John Carmack asked me
whether I was still interested in doing the book.
I was, Bear sent me a code dump, and Todd
Hollenshead set out to address the legal concerns
(of which were many).
Unfortunately, what might have worked in 1995
turned out to be a doomed attempt in 1997. I won't
go into the details - let's just say that my
leaving university and going back to full time
writing for a living repeatedly forced me to
change priorities on what looked more and more
like a project unlikely to generate any revenue.
By mid of the year, when the legal issues had
finally been settled, it didn't look like I was
going to find a publisher at all. Following the
Book Fair in 1997 and some more discussions
(with about a dozen publishers, total), I gritted
my teeth and decided to abandon the project.
Note that the book project as such wasn't supposed
to hold up the source release to the public.
However, given the legal concerns relating to
the third party sound code in DOS DOOM, and the
lack of Win32 support as well as the advantages of
an OpenGL based release, the idea was to put
together a consistent, stable code base prior to
public release - most of which was supposed to be
an offspring of my reformatting and modifying the
code for the book.
None of this worked out as intended. However, I
hope that, at long last, this distribution
will finally provide a good point to start for
any cooperative effort to extend the already
impressive lifespan of DOOM into the age of
multiplayer servers and hardware-accelerated
clients.
================================================
FILE: linuxdoom-1.10/README.gl
================================================
README: glDOOM
I never got around to do anything with respect to
a Linux glDOOM port except for assembling a Linux3Dfx
HOWTO (which, at that time, was a prerequisite
to get permission to publicly distribute the
already finished LinuxGlide port by Daryll Strauss).
Linux q2test (and soon LinuxQuake2) demonstrate that
Mesa with the MesaVoodoo driver is quite up to the
requirements for a glDOOM port. If anybody wants to
get into Linux glDOOM, please drop me a line.
There is a Win32 GLDOOM port in the works, by Jim Dose.
Quoting a recent posting by him:
"I haven't had as much time lately to really work on
the conversion. I currently have the renderer drawing
the walls and floors as texture spans as the are in
the software renderer. There's lighting on the walls,
but not the floors, and sprites are being drawn, but
not with the right texture. I figure that this is one
nights work to get the game looking "normal". I haven't
tested the game on less than a p200, so I'm not sure
how it will perform under the average machine, but I
don't expect it to be blindingly fast because of the
number of spans that have to be drawn each frame.
Rendering as polys is definitely the way to go.
The reason I chose to do spans first was because it
left the base renderer intact and I could concentrate
on ironing out any Windows compatibility problems.
Actually, the first version I had running was simply
a blit of the 320x200 game screen through Open GL.
Surprisingly, this actually was very playable, but
certainly wasn't taking any advantage of 3D acceleration.
Once the game was running, I started converting all
the span routines over."
Comment: for merging Linuxdoom with Win32, this is
probably the best source for getting the Win32
environment done - before more significant changes
occur.
"One problem with drawing spans is that the engine
doesn't calculate the texture coordinates with
fractional accuracy, so the bilinear filtering works
vertically, but not horizontally on the walls. I may
try to fix this, but since I plan to use polys for
the final version, it's not really high priority.
Also, spans don't really allow for looking up and
down."
Comment: true looking up/down vs. Heretic-style
y-shearing seems to require either a strange kind
of transofrmation matrix (he probably does not use
the OpenGL transformation at all), or rendering
all the spans as textured rectangular slices
instead of using glDrawBitmap. No, polys are the
way to go.
"When I tackle the conversion to polys, one big problem
I'll encounter is drawing floors. Since the world is
stored in a 2D bsp tree, there is no information on
the shape of the floors. In fact the floors can be
concave and may include holes (typically, most renderers
break concave polys down into a collection of convex
polys or triangles). In software, the floors are actually
drawn using an algorithm that's similar to a flood fill
(except that a list of open spans is kept instead of a
buffer of pixels). This makes drawing the floors as
polys fairly difficult."
A polygon based approach will require significant changes
to the data structures used in the refresh module. I
recommend either separating a libref_soft.so first (a
Quake2 like approach), and creating libref_gl afterwards,
or abandoning the software rendering entirely.
John Carmack wrote once upon a time:
"... the U64 DOOM engine is much more what I would consider
The Right Thing now -- it turns the subsector boundaries
into polygons for the floors and ceilings ahead of time,
then for rendering it walks the BSP front to back, doing
visibility determination of subsectors by the one dimensional
occlusion buffer and clipping sprites into subsectors, then
it goes backwards through the visible subsectors, drawing
floors, ceilings, walls, then sorted internal sprite fragments.
It's a ton simpler and a ton faster, although it does suffer
some overdraw when a high subsector overlooks a low one (but
that is more than made up for by the simplicity of everything
else)."
Well, IMO compiling a separate list of floor/ceiling polygons
after having read the WAD file, and thus introducing this as
a completely separate data structure to the current code base
might be the easiest thing to do. Jim Dose writes:
"One method I may use to draw the floors as polys was suggested
by Billy Zelsnack of Rebel Boat Rocker when we were working
at 3D Realms together a few years ago. Basically, Billy was
designing an engine that dealt with the world in a 2D portal
format similar to the one that Build used, except that it had
true looking up and down (no shearing). Since floors were
basically implicit and could be concave, Billy drew them as
if the walls extended downwards to infinity, but fixed the
texture coordinates to appear that they were on the plane of
the floor. The effect was that you could look up and down and
there were no gaps or overdraw. It's a fairly clever method
and allows you to store the world in a simpler data format.
Had perspective texture mapping been fast enough back then,
both Build and Doom could have done this in software."
Perhaps the above is sufficient to get you started.
Other Issues:
1. Occlusion
DOOM uses a per-column lookup (top/bottom index) to do HLHSR.
This works fine with span based rendering (well, getting
horizontal spans of floors/ceilings into the picture is a
separate story). It isn't really mindboggling with polygon
based rendering. GLDOOM should abandon that.
2. Precalculated Visibility
DOOM has the data used by Quake's PVS - in REJECT.
During Quake development, lots of replacements for the
occlusion buffer were tried, and PVS turned out to be best.
I suggest usind the REJECT as PVS.
There have been special effects using a utility named RMB.
REJECT is a lump meant for enemy AI LoS calculation - a
nonstandard REJECT will not work as a PVS, and introduce
rendering errors. I suggest looking for a PVS lump in the
WAD, and using REJECT if none is found. That way, it might
be feasible to eat the cake and keep it.
3. Mipmaps
DOOM does not have mipmapping. As we have 8bit palettized
textures, OpenGL mipmapping might not give the desired
results. Plus, composing textures from patches at runtime
would require runtime mipmapping. Precalculated mipmaps
in the WAD?
4. Sprites
Partly transparent textures and sprites impose another
problem related to mipmapping. Without alpha channel,
this could give strange results. Precalculated, valid
sprite mipmaps (w/o alpha)?
================================================
FILE: linuxdoom-1.10/README.sound
================================================
README: sound in DOOM
1) DOS/Win32 sound
id licensed a third party sound library called
DMX for DOS DOOM. The situation exhibited
many symptons of serious NIH "Not Invented Here"),
and one of the consequences is that the original
DOOM sound code does not work without DMX. As
DMX is not publicly available, the original DOOM
sound support is removed.
Win32 was not supported in the source dump I got.
I have no knowledge how the WinDOOM port did the
sound handling. A Win32 port should probaly rely on
DirectSound. So far, the Win32 glDOOM port Jim Dose
is working on has no sound support.
In consequence, the only target with a working sound
code is UNIX, which I could only verify with Linux
on Intel586.
2) Linux sound
DOOM for Linux used a separate process, sndserver.
Quoting Dave Taylor:
"Sound drivers should be an asychronous model, either
a seperate thread or a seperate process. This is
because sound should always be fed to the card without
interruption or else you get pops and with low latency
or else you get angry players.
Now it turns out that this kind of code isn't too fun
to write. In the days of Linux Doom, threads were not a
happnin thing in Linux. In fact, they still largely
aren't. You can use them these days if you have gnu's
libc installed, but you still can't debug them because
gdb doesn't support them properly yet. I believe the
original seperate process had a bad latency delay
because of the time it took for commands to be flushed
through the pipe used to communicate with the seperate
process. I should have looked into this more thoroughly.
In Quake, I discovered that I could feed multiple
acknowledgements to a SoundBlaster or compatible without
any side-effects such as pops or other malfunctions.
This discovery led me to switch to a completely synchronous
model, much much easier to debug and understand, so I
think this was fairly intelligent. Although we had to
populate the game with calls in the right places to keep
the sound buffers fed, and although it wasn't gauranteed to
be always fed, well over 99% of the time, it was fed, and
your the latency was never worse than the frequency of your
refills (several times per frame) plus a small lead time
(40th of a second?)."
The separate sndserver code base introduced some redundancy
(WAD access for sound lumps) for each UNIX target (Sun, SGI,
Linux) and more differences between DOS and UNIX version.
However, I kept the IPC based parts in the source, and
separated the sndserver target in another directory to avoid
further redundancy. There seem to be a few bug-like things
going on in the sndserver that do not receive penalty as
the program has to do only a simple task. One example would
be a libc realloc mixed with zone memory allocation.
Ungraceful and untimely demise of Linuxdoom (core instead
of I_Error) will leave idle sndserver processes in your
system, blocking /dev/bsp. Kill them manually.
I put the non-redundant parts of the sndserver program
into the i_sound module of doom, and with the SND_SERV
compiler switch you can choose to use the internal sound
support. However, there is a problem with e.g. the
double shotgun and the plasma gun - walk up to a wall,
face it straight, and fire. The sound output is crappy.
This vanishes with decreasing screen size. A similar
problem occurs with trimer driven asynchronous output
enabled by SNDINTR.
I agree with Dave that threads would be preferable.
With respect to Linux ports of John Carmack's next
Trinity engine, this one will rely on Win32
multithreading e.g. for input sampling. So the Linux
community will have to sort out threads anyway :-).
To improve the current sound server, other means of
IPC should take care of the latency. The mixing
buffer/command buffer as shared memory comes to mind.
3) Music support
There is, and was, no music support in Linuxdoom. Fine with
me - I wouldn't give a bat's tail feathers for DOOM music.
Your mileage may vary. There are a few leftovers of the DOS
music support also interfacing DMX, so there is a place
to start. However, in the age of CDROM based music, I
recommend getting e.g. Workman to cooperate with DOOM
(currently, DOOM accessing the soundcard SpekerOut
interferes with Workman controlling the CD drives
SpeakerOut), so musci could be chosen and run completely
independend of the game. You could try Linuxdoom with
Q2 music that way.
================================================
FILE: linuxdoom-1.10/TODO
================================================
- create Web repository for sources, patches,
news, and pointer to doom-editing mailing
list.
- get DOOM Public License from id
-----------------------------------------------
- remove m_fixed, switch to floating point
More stable, and prolly even faster.
- make SCREENWIDTH/HEIGHT work at startup?
Well, the HUD/STBar stuff is tied to the
scales implied by the graphics. Rather do
GLDOOM and use texture mapping.
- fix aspect ratio?
320x200 is nothing viable nowadays.
A 320x240 base (4:3) would be a lot better.
See above on width/height.
- limited look up/down by y-shearing?
Prolly not worth it, rather switch to GLDOOM.
- switch to C++?
The action function pointers have varying
argument lists (no parameter, one, etc.).
C++ doesn't like that much. A major rewrite.
- switch to doommain.c plus libdoom? Have
libref, libgame etc.?
Another major rewrite.
- use XFree86 DGA, prolly not that much faster
than MIT SHM, but allows for directly sampled
mouse (and even freelook). Recommended for
GLDOOM.
- put together an accompanying developer toolkit
source distribution: DEU, RMB, BSP for Linux/X.
- move info.h, info.c, sounds.h, sounds.c and
other data to a separate lump in the WAD,
or into a libgame.so, to separate the
generic stuff (refresh, I/O) from the
DOOM specifics.
- decide whether precaching all sounds is
better than retrieving and releasing
every so often. DOOM seems to do that
frequently (8bit stuff, originally for
DOS), and the Linux sound is 16bit
(conversion in the mixing, requires
some padding) - we prolly got the memory
to spare.
- 16bpp CLUT. The lightmaps and the
framebuffer could be changed to switch
to 64K colors. Prolly better to do
GLDOOM right away.
- remove checks for commercial etc., in
non-essential issues (enabling PWAD's).
- change (simplify) determination of
sky texture (done by game version).
Explicit?
- remove all game version checks
- different handling of Demo - don't
exit on "different game version"
- how about shareware/retail "You are here"
intermission animation? Wasn't in
commercial (DOOM 2).
- double shotgun in DOOM1, all weapons with
shareware
- checks for required lumps. We need fallbacks
for lumps that are not present, that is,
default sounds etc. to be used instead,
or removing THINGS w/o sprites etc.
- client/server? I'd suggest ripping off some stuff
from the abandoned IBM WebView project
- Blockmap
The BLOCKMAP lump might be (partly) redundant,
as the BSP allows for clipping (except certain
LineDefs that will not spawn Segs).
- LOS
REJECT and intersection based LOS checking could be
done using the BSP. In case of REJECT, certain
monster AI special effects would be lost, though.
- correct handling of height in collision. This is
not done, and the checks are scattered around in
many places. It does require handling of "player
on top of monster" situations, too - we have to
make sure the players falls off far enough to
avoid getting "stuck in monster".
- remove obsolete menus (Detail. Music Volume?)
- clip explosion range damage (and sprites) using
REJECT? That is, if one Sector/SSector not
visible from the other, do not apply damage,
not render sprite if player in other sector.
Hmmm - explosion behind small pillar might not be
visible at all, but do we care?
- Ungraceful and untimely demise of Linuxdoom (core
instead of I_Error) will leave idle sndserver
processes in your system, blocking /dev/bsp.
A timeout on lack of input for "sndserver"?
- threaded sndserver? SHM mixing buffer?
Or internal, timer-based?
================================================
FILE: linuxdoom-1.10/am_map.c
================================================
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// $Id:$
//
// Copyright (C) 1993-1996 by id Software, Inc.
//
// This source is available for distribution and/or modification
// only under the terms of the DOOM Source Code License as
// published by id Software. All rights reserved.
//
// The source is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
// for more details.
//
//
// $Log:$
//
// DESCRIPTION: the automap code
//
//-----------------------------------------------------------------------------
static const char rcsid[] = "$Id: am_map.c,v 1.4 1997/02/03 21:24:33 b1 Exp $";
#include <stdio.h>
#include "z_zone.h"
#include "doomdef.h"
#include "st_stuff.h"
#include "p_local.h"
#include "w_wad.h"
#include "m_cheat.h"
#include "i_system.h"
// Needs access to LFB.
#include "v_video.h"
// State.
#include "doomstat.h"
#include "r_state.h"
// Data.
#include "dstrings.h"
#include "am_map.h"
// For use if I do walls with outsides/insides
#define REDS (256-5*16)
#define REDRANGE 16
#define BLUES (256-4*16+8)
#define BLUERANGE 8
#define GREENS (7*16)
#define GREENRANGE 16
#define GRAYS (6*16)
#define GRAYSRANGE 16
#define BROWNS (4*16)
#define BROWNRANGE 16
#define YELLOWS (256-32+7)
#define YELLOWRANGE 1
#define BLACK 0
#define WHITE (256-47)
// Automap colors
#define BACKGROUND BLACK
#define YOURCOLORS WHITE
#define YOURRANGE 0
#define WALLCOLORS REDS
#define WALLRANGE REDRANGE
#define TSWALLCOLORS GRAYS
#define TSWALLRANGE GRAYSRANGE
#define FDWALLCOLORS BROWNS
#define FDWALLRANGE BROWNRANGE
#define CDWALLCOLORS YELLOWS
#define CDWALLRANGE YELLOWRANGE
#define THINGCOLORS GREENS
#define THINGRANGE GREENRANGE
#define SECRETWALLCOLORS WALLCOLORS
#define SECRETWALLRANGE WALLRANGE
#define GRIDCOLORS (GRAYS + GRAYSRANGE/2)
#define GRIDRANGE 0
#define XHAIRCOLORS GRAYS
// drawing stuff
#define FB 0
#define AM_PANDOWNKEY KEY_DOWNARROW
#define AM_PANUPKEY KEY_UPARROW
#define AM_PANRIGHTKEY KEY_RIGHTARROW
#define AM_PANLEFTKEY KEY_LEFTARROW
#define AM_ZOOMINKEY '='
#define AM_ZOOMOUTKEY '-'
#define AM_STARTKEY KEY_TAB
#define AM_ENDKEY KEY_TAB
#define AM_GOBIGKEY '0'
#define AM_FOLLOWKEY 'f'
#define AM_GRIDKEY 'g'
#define AM_MARKKEY 'm'
#define AM_CLEARMARKKEY 'c'
#define AM_NUMMARKPOINTS 10
// scale on entry
#define INITSCALEMTOF (.2*FRACUNIT)
// how much the automap moves window per tic in frame-buffer coordinates
// moves 140 pixels in 1 second
#define F_PANINC 4
// how much zoom-in per tic
// goes to 2x in 1 second
#define M_ZOOMIN ((int) (1.02*FRACUNIT))
// how much zoom-out per tic
// pulls out to 0.5x in 1 second
#define M_ZOOMOUT ((int) (FRACUNIT/1.02))
// translates between frame-buffer and map distances
#define FTOM(x) FixedMul(((x)<<16),scale_ftom)
#define MTOF(x) (FixedMul((x),scale_mtof)>>16)
// translates between frame-buffer and map coordinates
#define CXMTOF(x) (f_x + MTOF((x)-m_x))
#define CYMTOF(y) (f_y + (f_h - MTOF((y)-m_y)))
// the following is crap
#define LINE_NEVERSEE ML_DONTDRAW
typedef struct
{
int x, y;
} fpoint_t;
typedef struct
{
fpoint_t a, b;
} fline_t;
typedef struct
{
fixed_t x,y;
} mpoint_t;
typedef struct
{
mpoint_t a, b;
} mline_t;
typedef struct
{
fixed_t slp, islp;
} islope_t;
//
// The vector graphics for the automap.
// A line drawing of the player pointing right,
// starting from the middle.
//
#define R ((8*PLAYERRADIUS)/7)
mline_t player_arrow[] = {
{ { -R+R/8, 0 }, { R, 0 } }, // -----
{ { R, 0 }, { R-R/2, R/4 } }, // ----->
{ { R, 0 }, { R-R/2, -R/4 } },
{ { -R+R/8, 0 }, { -R-R/8, R/4 } }, // >---->
{ { -R+R/8, 0 }, { -R-R/8, -R/4 } },
{ { -R+3*R/8, 0 }, { -R+R/8, R/4 } }, // >>--->
{ { -R+3*R/8, 0 }, { -R+R/8, -R/4 } }
};
#undef R
#define NUMPLYRLINES (sizeof(player_arrow)/sizeof(mline_t))
#define R ((8*PLAYERRADIUS)/7)
mline_t cheat_player_arrow[] = {
{ { -R+R/8, 0 }, { R, 0 } }, // -----
{ { R, 0 }, { R-R/2, R/6 } }, // ----->
{ { R, 0 }, { R-R/2, -R/6 } },
{ { -R+R/8, 0 }, { -R-R/8, R/6 } }, // >----->
{ { -R+R/8, 0 }, { -R-R/8, -R/6 } },
{ { -R+3*R/8, 0 }, { -R+R/8, R/6 } }, // >>----->
{ { -R+3*R/8, 0 }, { -R+R/8, -R/6 } },
{ { -R/2, 0 }, { -R/2, -R/6 } }, // >>-d--->
{ { -R/2, -R/6 }, { -R/2+R/6, -R/6 } },
{ { -R/2+R/6, -R/6 }, { -R/2+R/6, R/4 } },
{ { -R/6, 0 }, { -R/6, -R/6 } }, // >>-dd-->
{ { -R/6, -R/6 }, { 0, -R/6 } },
{ { 0, -R/6 }, { 0, R/4 } },
{ { R/6, R/4 }, { R/6, -R/7 } }, // >>-ddt->
{ { R/6, -R/7 }, { R/6+R/32, -R/7-R/32 } },
{ { R/6+R/32, -R/7-R/32 }, { R/6+R/10, -R/7 } }
};
#undef R
#define NUMCHEATPLYRLINES (sizeof(cheat_player_arrow)/sizeof(mline_t))
#define R (FRACUNIT)
mline_t triangle_guy[] = {
{ { -.867*R, -.5*R }, { .867*R, -.5*R } },
{ { .867*R, -.5*R } , { 0, R } },
{ { 0, R }, { -.867*R, -.5*R } }
};
#undef R
#define NUMTRIANGLEGUYLINES (sizeof(triangle_guy)/sizeof(mline_t))
#define R (FRACUNIT)
mline_t thintriangle_guy[] = {
{ { -.5*R, -.7*R }, { R, 0 } },
{ { R, 0 }, { -.5*R, .7*R } },
{ { -.5*R, .7*R }, { -.5*R, -.7*R } }
};
#undef R
#define NUMTHINTRIANGLEGUYLINES (sizeof(thintriangle_guy)/sizeof(mline_t))
static int cheating = 0;
static int grid = 0;
static int leveljuststarted = 1; // kluge until AM_LevelInit() is called
boolean automapactive = false;
static int finit_width = SCREENWIDTH;
static int finit_height = SCREENHEIGHT - 32;
// location of window on screen
static int f_x;
static int f_y;
// size of window on screen
static int f_w;
static int f_h;
static int lightlev; // used for funky strobing effect
static byte* fb; // pseudo-frame buffer
static int amclock;
static mpoint_t m_paninc; // how far the window pans each tic (map coords)
static fixed_t mtof_zoommul; // how far the window zooms in each tic (map coords)
static fixed_t ftom_zoommul; // how far the window zooms in each tic (fb coords)
static fixed_t m_x, m_y; // LL x,y where the window is on the map (map coords)
static fixed_t m_x2, m_y2; // UR x,y where the window is on the map (map coords)
//
// width/height of window on map (map coords)
//
static fixed_t m_w;
static fixed_t m_h;
// based on level size
static fixed_t min_x;
static fixed_t min_y;
static fixed_t max_x;
static fixed_t max_y;
static fixed_t max_w; // max_x-min_x,
static fixed_t max_h; // max_y-min_y
// based on player size
static fixed_t min_w;
static fixed_t min_h;
static fixed_t min_scale_mtof; // used to tell when to stop zooming out
static fixed_t max_scale_mtof; // used to tell when to stop zooming in
// old stuff for recovery later
static fixed_t old_m_w, old_m_h;
static fixed_t old_m_x, old_m_y;
// old location used by the Follower routine
static mpoint_t f_oldloc;
// used by MTOF to scale from map-to-frame-buffer coords
static fixed_t scale_mtof = INITSCALEMTOF;
// used by FTOM to scale from frame-buffer-to-map coords (=1/scale_mtof)
static fixed_t scale_ftom;
static player_t *plr; // the player represented by an arrow
static patch_t *marknums[10]; // numbers used for marking by the automap
static mpoint_t markpoints[AM_NUMMARKPOINTS]; // where the points are
static int markpointnum = 0; // next point to be assigned
static int followplayer = 1; // specifies whether to follow the player around
static unsigned char cheat_amap_seq[] = { 0xb2, 0x26, 0x26, 0x2e, 0xff };
static cheatseq_t cheat_amap = { cheat_amap_seq, 0 };
static boolean stopped = true;
extern boolean viewactive;
//extern byte screens[][SCREENWIDTH*SCREENHEIGHT];
void
V_MarkRect
( int x,
int y,
int width,
int height );
// Calculates the slope and slope according to the x-axis of a line
// segment in map coordinates (with the upright y-axis n' all) so
// that it can be used with the brain-dead drawing stuff.
void
AM_getIslope
( mline_t* ml,
islope_t* is )
{
int dx, dy;
dy = ml->a.y - ml->b.y;
dx = ml->b.x - ml->a.x;
if (!dy) is->islp = (dx<0?-MAXINT:MAXINT);
else is->islp = FixedDiv(dx, dy);
if (!dx) is->slp = (dy<0?-MAXINT:MAXINT);
else is->slp = FixedDiv(dy, dx);
}
//
//
//
void AM_activateNewScale(void)
{
m_x += m_w/2;
m_y += m_h/2;
m_w = FTOM(f_w);
m_h = FTOM(f_h);
m_x -= m_w/2;
m_y -= m_h/2;
m_x2 = m_x + m_w;
m_y2 = m_y + m_h;
}
//
//
//
void AM_saveScaleAndLoc(void)
{
old_m_x = m_x;
old_m_y = m_y;
old_m_w = m_w;
old_m_h = m_h;
}
//
//
//
void AM_restoreScaleAndLoc(void)
{
m_w = old_m_w;
m_h = old_m_h;
if (!followplayer)
{
m_x = old_m_x;
m_y = old_m_y;
} else {
m_x = plr->mo->x - m_w/2;
m_y = plr->mo->y - m_h/2;
}
m_x2 = m_x + m_w;
m_y2 = m_y + m_h;
// Change the scaling multipliers
scale_mtof = FixedDiv(f_w<<FRACBITS, m_w);
scale_ftom = FixedDiv(FRACUNIT, scale_mtof);
}
//
// adds a marker at the current location
//
void AM_addMark(void)
{
markpoints[markpointnum].x = m_x + m_w/2;
markpoints[markpointnum].y = m_y + m_h/2;
markpointnum = (markpointnum + 1) % AM_NUMMARKPOINTS;
}
//
// Determines bounding box of all vertices,
// sets global variables controlling zoom range.
//
void AM_findMinMaxBoundaries(void)
{
int i;
fixed_t a;
fixed_t b;
min_x = min_y = MAXINT;
max_x = max_y = -MAXINT;
for (i=0;i<numvertexes;i++)
{
if (vertexes[i].x < min_x)
min_x = vertexes[i].x;
else if (vertexes[i].x > max_x)
max_x = vertexes[i].x;
if (vertexes[i].y < min_y)
min_y = vertexes[i].y;
else if (vertexes[i].y > max_y)
max_y = vertexes[i].y;
}
max_w = max_x - min_x;
max_h = max_y - min_y;
min_w = 2*PLAYERRADIUS; // const? never changed?
min_h = 2*PLAYERRADIUS;
a = FixedDiv(f_w<<FRACBITS, max_w);
b = FixedDiv(f_h<<FRACBITS, max_h);
min_scale_mtof = a < b ? a : b;
max_scale_mtof = FixedDiv(f_h<<FRACBITS, 2*PLAYERRADIUS);
}
//
//
//
void AM_changeWindowLoc(void)
{
if (m_paninc.x || m_paninc.y)
{
followplayer = 0;
f_oldloc.x = MAXINT;
}
m_x += m_paninc.x;
m_y += m_paninc.y;
if (m_x + m_w/2 > max_x)
m_x = max_x - m_w/2;
else if (m_x + m_w/2 < min_x)
m_x = min_x - m_w/2;
if (m_y + m_h/2 > max_y)
m_y = max_y - m_h/2;
else if (m_y + m_h/2 < min_y)
m_y = min_y - m_h/2;
m_x2 = m_x + m_w;
m_y2 = m_y + m_h;
}
//
//
//
void AM_initVariables(void)
{
int pnum;
static event_t st_notify = { ev_keyup, AM_MSGENTERED };
automapactive = true;
fb = screens[0];
f_oldloc.x = MAXINT;
amclock = 0;
lightlev = 0;
m_paninc.x = m_paninc.y = 0;
ftom_zoommul = FRACUNIT;
mtof_zoommul = FRACUNIT;
m_w = FTOM(f_w);
m_h = FTOM(f_h);
// find player to center on initially
if (!playeringame[pnum = consoleplayer])
for (pnum=0;pnum<MAXPLAYERS;pnum++)
if (playeringame[pnum])
break;
plr = &players[pnum];
m_x = plr->mo->x - m_w/2;
m_y = plr->mo->y - m_h/2;
AM_changeWindowLoc();
// for saving & restoring
old_m_x = m_x;
old_m_y = m_y;
old_m_w = m_w;
old_m_h = m_h;
// inform the status bar of the change
ST_Responder(&st_notify);
}
//
//
//
void AM_loadPics(void)
{
int i;
char namebuf[9];
for (i=0;i<10;i++)
{
sprintf(namebuf, "AMMNUM%d", i);
marknums[i] = W_CacheLumpName(namebuf, PU_STATIC);
}
}
void AM_unloadPics(void)
{
int i;
for (i=0;i<10;i++)
Z_ChangeTag(marknums[i], PU_CACHE);
}
void AM_clearMarks(void)
{
int i;
for (i=0;i<AM_NUMMARKPOINTS;i++)
markpoints[i].x = -1; // means empty
markpointnum = 0;
}
//
// should be called at the start of every level
// right now, i figure it out myself
//
void AM_LevelInit(void)
{
leveljuststarted = 0;
f_x = f_y = 0;
f_w = finit_width;
f_h = finit_height;
AM_clearMarks();
AM_findMinMaxBoundaries();
scale_mtof = FixedDiv(min_scale_mtof, (int) (0.7*FRACUNIT));
if (scale_mtof > max_scale_mtof)
scale_mtof = min_scale_mtof;
scale_ftom = FixedDiv(FRACUNIT, scale_mtof);
}
//
//
//
void AM_Stop (void)
{
static event_t st_notify = { 0, ev_keyup, AM_MSGEXITED };
AM_unloadPics();
automapactive = false;
ST_Responder(&st_notify);
stopped = true;
}
//
//
//
void AM_Start (void)
{
static int lastlevel = -1, lastepisode = -1;
if (!stopped) AM_Stop();
stopped = false;
if (lastlevel != gamemap || lastepisode != gameepisode)
{
AM_LevelInit();
lastlevel = gamemap;
lastepisode = gameepisode;
}
AM_initVariables();
AM_loadPics();
}
//
// set the window scale to the maximum size
//
void AM_minOutWindowScale(void)
{
scale_mtof = min_scale_mtof;
scale_ftom = FixedDiv(FRACUNIT, scale_mtof);
AM_activateNewScale();
}
//
// set the window scale to the minimum size
//
void AM_maxOutWindowScale(void)
{
scale_mtof = max_scale_mtof;
scale_ftom = FixedDiv(FRACUNIT, scale_mtof);
AM_activateNewScale();
}
//
// Handle events (user inputs) in automap mode
//
boolean
AM_Responder
( event_t* ev )
{
int rc;
static int cheatstate=0;
static int bigstate=0;
static char buffer[20];
rc = false;
if (!automapactive)
{
if (ev->type == ev_keydown && ev->data1 == AM_STARTKEY)
{
AM_Start ();
viewactive = false;
rc = true;
}
}
else if (ev->type == ev_keydown)
{
rc = true;
switch(ev->data1)
{
case AM_PANRIGHTKEY: // pan right
if (!followplayer) m_paninc.x = FTOM(F_PANINC);
else rc = false;
break;
case AM_PANLEFTKEY: // pan left
if (!followplayer) m_paninc.x = -FTOM(F_PANINC);
else rc = false;
break;
case AM_PANUPKEY: // pan up
if (!followplayer) m_paninc.y = FTOM(F_PANINC);
else rc = false;
break;
case AM_PANDOWNKEY: // pan down
if (!followplayer) m_paninc.y = -FTOM(F_PANINC);
else rc = false;
break;
case AM_ZOOMOUTKEY: // zoom out
mtof_zoommul = M_ZOOMOUT;
ftom_zoommul = M_ZOOMIN;
break;
case AM_ZOOMINKEY: // zoom in
mtof_zoommul = M_ZOOMIN;
ftom_zoommul = M_ZOOMOUT;
break;
case AM_ENDKEY:
bigstate = 0;
viewactive = true;
AM_Stop ();
break;
case AM_GOBIGKEY:
bigstate = !bigstate;
if (bigstate)
{
AM_saveScaleAndLoc();
AM_minOutWindowScale();
}
else AM_restoreScaleAndLoc();
break;
case AM_FOLLOWKEY:
followplayer = !followplayer;
f_oldloc.x = MAXINT;
plr->message = followplayer ? AMSTR_FOLLOWON : AMSTR_FOLLOWOFF;
break;
case AM_GRIDKEY:
grid = !grid;
plr->message = grid ? AMSTR_GRIDON : AMSTR_GRIDOFF;
break;
case AM_MARKKEY:
sprintf(buffer, "%s %d", AMSTR_MARKEDSPOT, markpointnum);
plr->message = buffer;
AM_addMark();
break;
case AM_CLEARMARKKEY:
AM_clearMarks();
plr->message = AMSTR_MARKSCLEARED;
break;
default:
cheatstate=0;
rc = false;
}
if (!deathmatch && cht_CheckCheat(&cheat_amap, ev->data1))
{
rc = false;
cheating = (cheating+1) % 3;
}
}
else if (ev->type == ev_keyup)
{
rc = false;
switch (ev->data1)
{
case AM_PANRIGHTKEY:
if (!followplayer) m_paninc.x = 0;
break;
case AM_PANLEFTKEY:
if (!followplayer) m_paninc.x = 0;
break;
case AM_PANUPKEY:
if (!followplayer) m_paninc.y = 0;
break;
case AM_PANDOWNKEY:
if (!followplayer) m_paninc.y = 0;
break;
case AM_ZOOMOUTKEY:
case AM_ZOOMINKEY:
mtof_zoommul = FRACUNIT;
ftom_zoommul = FRACUNIT;
break;
}
}
return rc;
}
//
// Zooming
//
void AM_changeWindowScale(void)
{
// Change the scaling multipliers
scale_mtof = FixedMul(scale_mtof, mtof_zoommul);
scale_ftom = FixedDiv(FRACUNIT, scale_mtof);
if (scale_mtof < min_scale_mtof)
AM_minOutWindowScale();
else if (scale_mtof > max_scale_mtof)
AM_maxOutWindowScale();
else
AM_activateNewScale();
}
//
//
//
void AM_doFollowPlayer(void)
{
if (f_oldloc.x != plr->mo->x || f_oldloc.y != plr->mo->y)
{
m_x = FTOM(MTOF(plr->mo->x)) - m_w/2;
m_y = FTOM(MTOF(plr->mo->y)) - m_h/2;
m_x2 = m_x + m_w;
m_y2 = m_y + m_h;
f_oldloc.x = plr->mo->x;
f_oldloc.y = plr->mo->y;
// m_x = FTOM(MTOF(plr->mo->x - m_w/2));
// m_y = FTOM(MTOF(plr->mo->y - m_h/2));
// m_x = plr->mo->x - m_w/2;
// m_y = plr->mo->y - m_h/2;
}
}
//
//
//
void AM_updateLightLev(void)
{
static nexttic = 0;
//static int litelevels[] = { 0, 3, 5, 6, 6, 7, 7, 7 };
static int litelevels[] = { 0, 4, 7, 10, 12, 14, 15, 15 };
static int litelevelscnt = 0;
// Change light level
if (amclock>nexttic)
{
lightlev = litelevels[litelevelscnt++];
if (litelevelscnt == sizeof(litelevels)/sizeof(int)) litelevelscnt = 0;
nexttic = amclock + 6 - (amclock % 6);
}
}
//
// Updates on Game Tick
//
void AM_Ticker (void)
{
if (!automapactive)
return;
amclock++;
if (followplayer)
AM_doFollowPlayer();
// Change the zoom if necessary
if (ftom_zoommul != FRACUNIT)
AM_changeWindowScale();
// Change x,y location
if (m_paninc.x || m_paninc.y)
AM_changeWindowLoc();
// Update light level
// AM_updateLightLev();
}
//
// Clear automap frame buffer.
//
void AM_clearFB(int color)
{
memset(fb, color, f_w*f_h);
}
//
// Automap clipping of lines.
//
// Based on Cohen-Sutherland clipping algorithm but with a slightly
// faster reject and precalculated slopes. If the speed is needed,
// use a hash algorithm to handle the common cases.
//
boolean
AM_clipMline
( mline_t* ml,
fline_t* fl )
{
enum
{
LEFT =1,
RIGHT =2,
BOTTOM =4,
TOP =8
};
register outcode1 = 0;
register outcode2 = 0;
register outside;
fpoint_t tmp;
int dx;
int dy;
#define DOOUTCODE(oc, mx, my) \
(oc) = 0; \
if ((my) < 0) (oc) |= TOP; \
else if ((my) >= f_h) (oc) |= BOTTOM; \
if ((mx) < 0) (oc) |= LEFT; \
else if ((mx) >= f_w) (oc) |= RIGHT;
// do trivial rejects and outcodes
if (ml->a.y > m_y2)
outcode1 = TOP;
else if (ml->a.y < m_y)
outcode1 = BOTTOM;
if (ml->b.y > m_y2)
outcode2 = TOP;
else if (ml->b.y < m_y)
outcode2 = BOTTOM;
if (outcode1 & outcode2)
return false; // trivially outside
if (ml->a.x < m_x)
outcode1 |= LEFT;
else if (ml->a.x > m_x2)
outcode1 |= RIGHT;
if (ml->b.x < m_x)
outcode2 |= LEFT;
else if (ml->b.x > m_x2)
outcode2 |= RIGHT;
if (outcode1 & outcode2)
return false; // trivially outside
// transform to frame-buffer coordinates.
fl->a.x = CXMTOF(ml->a.x);
fl->a.y = CYMTOF(ml->a.y);
fl->b.x = CXMTOF(ml->b.x);
fl->b.y = CYMTOF(ml->b.y);
DOOUTCODE(outcode1, fl->a.x, fl->a.y);
DOOUTCODE(outcode2, fl->b.x, fl->b.y);
if (outcode1 & outcode2)
return false;
while (outcode1 | outcode2)
{
// may be partially inside box
// find an outside point
if (outcode1)
outside = outcode1;
else
outside = outcode2;
// clip to each side
if (outside & TOP)
{
dy = fl->a.y - fl->b.y;
dx = fl->b.x - fl->a.x;
tmp.x = fl->a.x + (dx*(fl->a.y))/dy;
tmp.y = 0;
}
else if (outside & BOTTOM)
{
dy = fl->a.y - fl->b.y;
dx = fl->b.x - fl->a.x;
tmp.x = fl->a.x + (dx*(fl->a.y-f_h))/dy;
tmp.y = f_h-1;
}
else if (outside & RIGHT)
{
dy = fl->b.y - fl->a.y;
dx = fl->b.x - fl->a.x;
tmp.y = fl->a.y + (dy*(f_w-1 - fl->a.x))/dx;
tmp.x = f_w-1;
}
else if (outside & LEFT)
{
dy = fl->b.y - fl->a.y;
dx = fl->b.x - fl->a.x;
tmp.y = fl->a.y + (dy*(-fl->a.x))/dx;
tmp.x = 0;
}
if (outside == outcode1)
{
fl->a = tmp;
DOOUTCODE(outcode1, fl->a.x, fl->a.y);
}
else
{
fl->b = tmp;
DOOUTCODE(outcode2, fl->b.x, fl->b.y);
}
if (outcode1 & outcode2)
return false; // trivially outside
}
return true;
}
#undef DOOUTCODE
//
// Classic Bresenham w/ whatever optimizations needed for speed
//
void
AM_drawFline
( fline_t* fl,
int color )
{
register int x;
register int y;
register int dx;
register int dy;
register int sx;
register int sy;
register int ax;
register int ay;
register int d;
static fuck = 0;
// For debugging only
if ( fl->a.x < 0 || fl->a.x >= f_w
|| fl->a.y < 0 || fl->a.y >= f_h
|| fl->b.x < 0 || fl->b.x >= f_w
|| fl->b.y < 0 || fl->b.y >= f_h)
{
fprintf(stderr, "fuck %d \r", fuck++);
return;
}
#define PUTDOT(xx,yy,cc) fb[(yy)*f_w+(xx)]=(cc)
dx = fl->b.x - fl->a.x;
ax = 2 * (dx<0 ? -dx : dx);
sx = dx<0 ? -1 : 1;
dy = fl->b.y - fl->a.y;
ay = 2 * (dy<0 ? -dy : dy);
sy = dy<0 ? -1 : 1;
x = fl->a.x;
y = fl->a.y;
if (ax > ay)
{
d = ay - ax/2;
while (1)
{
PUTDOT(x,y,color);
if (x == fl->b.x) return;
if (d>=0)
{
y += sy;
d -= ax;
}
x += sx;
d += ay;
}
}
else
{
d = ax - ay/2;
while (1)
{
PUTDOT(x, y, color);
if (y == fl->b.y) return;
if (d >= 0)
{
x += sx;
d -= ay;
}
y += sy;
d += ax;
}
}
}
//
// Clip lines, draw visible part sof lines.
//
void
AM_drawMline
( mline_t* ml,
int color )
{
static fline_t fl;
if (AM_clipMline(ml, &fl))
AM_drawFline(&fl, color); // draws it on frame buffer using fb coords
}
//
// Draws flat (floor/ceiling tile) aligned grid lines.
//
void AM_drawGrid(int color)
{
fixed_t x, y;
fixed_t start, end;
mline_t ml;
// Figure out start of vertical gridlines
start = m_x;
if ((start-bmaporgx)%(MAPBLOCKUNITS<<FRACBITS))
start += (MAPBLOCKUNITS<<FRACBITS)
- ((start-bmaporgx)%(MAPBLOCKUNITS<<FRACBITS));
end = m_x + m_w;
// draw vertical gridlines
ml.a.y = m_y;
ml.b.y = m_y+m_h;
for (x=start; x<end; x+=(MAPBLOCKUNITS<<FRACBITS))
{
ml.a.x = x;
ml.b.x = x;
AM_drawMline(&ml, color);
}
// Figure out start of horizontal gridlines
start = m_y;
if ((start-bmaporgy)%(MAPBLOCKUNITS<<FRACBITS))
start += (MAPBLOCKUNITS<<FRACBITS)
- ((start-bmaporgy)%(MAPBLOCKUNITS<<FRACBITS));
end = m_y + m_h;
// draw horizontal gridlines
ml.a.x = m_x;
ml.b.x = m_x + m_w;
for (y=start; y<end; y+=(MAPBLOCKUNITS<<FRACBITS))
{
ml.a.y = y;
ml.b.y = y;
AM_drawMline(&ml, color);
}
}
//
// Determines visible lines, draws them.
// This is LineDef based, not LineSeg based.
//
void AM_drawWalls(void)
{
int i;
static mline_t l;
for (i=0;i<numlines;i++)
{
l.a.x = lines[i].v1->x;
l.a.y = lines[i].v1->y;
l.b.x = lines[i].v2->x;
l.b.y = lines[i].v2->y;
if (cheating || (lines[i].flags & ML_MAPPED))
{
if ((lines[i].flags & LINE_NEVERSEE) && !cheating)
continue;
if (!lines[i].backsector)
{
AM_drawMline(&l, WALLCOLORS+lightlev);
}
else
{
if (lines[i].special == 39)
{ // teleporters
AM_drawMline(&l, WALLCOLORS+WALLRANGE/2);
}
else if (lines[i].flags & ML_SECRET) // secret door
{
if (cheating) AM_drawMline(&l, SECRETWALLCOLORS + lightlev);
else AM_drawMline(&l, WALLCOLORS+lightlev);
}
else if (lines[i].backsector->floorheight
!= lines[i].frontsector->floorheight) {
AM_drawMline(&l, FDWALLCOLORS + lightlev); // floor level change
}
else if (lines[i].backsector->ceilingheight
!= lines[i].frontsector->ceilingheight) {
AM_drawMline(&l, CDWALLCOLORS+lightlev); // ceiling level change
}
else if (cheating) {
AM_drawMline(&l, TSWALLCOLORS+lightlev);
}
}
}
else if (plr->powers[pw_allmap])
{
if (!(lines[i].flags & LINE_NEVERSEE)) AM_drawMline(&l, GRAYS+3);
}
}
}
//
// Rotation in 2D.
// Used to rotate player arrow line character.
//
void
AM_rotate
( fixed_t* x,
fixed_t* y,
angle_t a )
{
fixed_t tmpx;
tmpx =
FixedMul(*x,finecosine[a>>ANGLETOFINESHIFT])
- FixedMul(*y,finesine[a>>ANGLETOFINESHIFT]);
*y =
FixedMul(*x,finesine[a>>ANGLETOFINESHIFT])
+ FixedMul(*y,finecosine[a>>ANGLETOFINESHIFT]);
*x = tmpx;
}
void
AM_drawLineCharacter
( mline_t* lineguy,
int lineguylines,
fixed_t scale,
angle_t angle,
int color,
fixed_t x,
fixed_t y )
{
int i;
mline_t l;
for (i=0;i<lineguylines;i++)
{
l.a.x = lineguy[i].a.x;
l.a.y = lineguy[i].a.y;
if (scale)
{
l.a.x = FixedMul(scale, l.a.x);
l.a.y = FixedMul(scale, l.a.y);
}
if (angle)
AM_rotate(&l.a.x, &l.a.y, angle);
l.a.x += x;
l.a.y += y;
l.b.x = lineguy[i].b.x;
l.b.y = lineguy[i].b.y;
if (scale)
{
l.b.x = FixedMul(scale, l.b.x);
l.b.y = FixedMul(scale, l.b.y);
}
if (angle)
AM_rotate(&l.b.x, &l.b.y, angle);
l.b.x += x;
l.b.y += y;
AM_drawMline(&l, color);
}
}
void AM_drawPlayers(void)
{
int i;
player_t* p;
static int their_colors[] = { GREENS, GRAYS, BROWNS, REDS };
int their_color = -1;
int color;
if (!netgame)
{
if (cheating)
AM_drawLineCharacter
(cheat_player_arrow, NUMCHEATPLYRLINES, 0,
plr->mo->angle, WHITE, plr->mo->x, plr->mo->y);
else
AM_drawLineCharacter
(player_arrow, NUMPLYRLINES, 0, plr->mo->angle,
WHITE, plr->mo->x, plr->mo->y);
return;
}
for (i=0;i<MAXPLAYERS;i++)
{
their_color++;
p = &players[i];
if ( (deathmatch && !singledemo) && p != plr)
continue;
if (!playeringame[i])
continue;
if (p->powers[pw_invisibility])
color = 246; // *close* to black
else
color = their_colors[their_color];
AM_drawLineCharacter
(player_arrow, NUMPLYRLINES, 0, p->mo->angle,
color, p->mo->x, p->mo->y);
}
}
void
AM_drawThings
( int colors,
int colorrange)
{
int i;
mobj_t* t;
for (i=0;i<numsectors;i++)
{
t = sectors[i].thinglist;
while (t)
{
AM_drawLineCharacter
(thintriangle_guy, NUMTHINTRIANGLEGUYLINES,
16<<FRACBITS, t->angle, colors+lightlev, t->x, t->y);
t = t->snext;
}
}
}
void AM_drawMarks(void)
{
int i, fx, fy, w, h;
for (i=0;i<AM_NUMMARKPOINTS;i++)
{
if (markpoints[i].x != -1)
{
// w = SHORT(marknums[i]->width);
// h = SHORT(marknums[i]->height);
w = 5; // because something's wrong with the wad, i guess
h = 6; // because something's wrong with the wad, i guess
fx = CXMTOF(markpoints[i].x);
fy = CYMTOF(markpoints[i].y);
if (fx >= f_x && fx <= f_w - w && fy >= f_y && fy <= f_h - h)
V_DrawPatch(fx, fy, FB, marknums[i]);
}
}
}
void AM_drawCrosshair(int color)
{
fb[(f_w*(f_h+1))/2] = color; // single point for now
}
void AM_Drawer (void)
{
if (!automapactive) return;
AM_clearFB(BACKGROUND);
if (grid)
AM_drawGrid(GRIDCOLORS);
AM_drawWalls();
AM_drawPlayers();
if (cheating==2)
AM_drawThings(THINGCOLORS, THINGRANGE);
AM_drawCrosshair(XHAIRCOLORS);
AM_drawMarks();
V_MarkRect(f_x, f_y, f_w, f_h);
}
================================================
FILE: linuxdoom-1.10/am_map.h
================================================
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// $Id:$
//
// Copyright (C) 1993-1996 by id Software, Inc.
//
// This source is available for distribution and/or modification
// only under the terms of the DOOM Source Code License as
// published by id Software. All rights reserved.
//
// The source is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
// for more details.
//
// DESCRIPTION:
// AutoMap module.
//
//-----------------------------------------------------------------------------
#ifndef __AMMAP_H__
#define __AMMAP_H__
// Used by ST StatusBar stuff.
#define AM_MSGHEADER (('a'<<24)+('m'<<16))
#define AM_MSGENTERED (AM_MSGHEADER | ('e'<<8))
#define AM_MSGEXITED (AM_MSGHEADER | ('x'<<8))
// Called by main loop.
boolean AM_Responder (event_t* ev);
// Called by main loop.
void AM_Ticker (void);
// Called by main loop,
// called instead of view drawer if automap active.
void AM_Drawer (void);
// Called to force the automap to quit
// if the level is completed while it is up.
void AM_Stop (void);
#endif
//-----------------------------------------------------------------------------
//
// $Log:$
//
//-----------------------------------------------------------------------------
================================================
FILE: linuxdoom-1.10/d_englsh.h
================================================
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// $Id:$
//
// Copyright (C) 1993-1996 by id Software, Inc.
//
// This source is available for distribution and/or modification
// only under the terms of the DOOM Source Code License as
// published by id Software. All rights reserved.
//
// The source is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
// for more details.
//
// DESCRIPTION:
// Printed strings for translation.
// English language support (default).
//
//-----------------------------------------------------------------------------
#ifndef __D_ENGLSH__
#define __D_ENGLSH__
//
// Printed strings for translation
//
//
// D_Main.C
//
#define D_DEVSTR "Development mode ON.\n"
#define D_CDROM "CD-ROM Version: default.cfg from c:\\doomdata\n"
//
// M_Menu.C
//
#define PRESSKEY "press a key."
#define PRESSYN "press y or n."
#define QUITMSG "are you sure you want to\nquit this great game?"
#define LOADNET "you can't do load while in a net game!\n\n"PRESSKEY
#define QLOADNET "you can't quickload during a netgame!\n\n"PRESSKEY
#define QSAVESPOT "you haven't picked a quicksave slot yet!\n\n"PRESSKEY
#define SAVEDEAD "you can't save if you aren't playing!\n\n"PRESSKEY
#define QSPROMPT "quicksave over your game named\n\n'%s'?\n\n"PRESSYN
#define QLPROMPT "do you want to quickload the game named\n\n'%s'?\n\n"PRESSYN
#define NEWGAME \
"you can't start a new game\n"\
"while in a network game.\n\n"PRESSKEY
#define NIGHTMARE \
"are you sure? this skill level\n"\
"isn't even remotely fair.\n\n"PRESSYN
#define SWSTRING \
"this is the shareware version of doom.\n\n"\
"you need to order the entire trilogy.\n\n"PRESSKEY
#define MSGOFF "Messages OFF"
#define MSGON "Messages ON"
#define NETEND "you can't end a netgame!\n\n"PRESSKEY
#define ENDGAME "are you sure you want to end the game?\n\n"PRESSYN
#define DOSY "(press y to quit)"
#define DETAILHI "High detail"
#define DETAILLO "Low detail"
#define GAMMALVL0 "Gamma correction OFF"
#define GAMMALVL1 "Gamma correction level 1"
#define GAMMALVL2 "Gamma correction level 2"
#define GAMMALVL3 "Gamma correction level 3"
#define GAMMALVL4 "Gamma correction level 4"
#define EMPTYSTRING "empty slot"
//
// P_inter.C
//
#define GOTARMOR "Picked up the armor."
#define GOTMEGA "Picked up the MegaArmor!"
#define GOTHTHBONUS "Picked up a health bonus."
#define GOTARMBONUS "Picked up an armor bonus."
#define GOTSTIM "Picked up a stimpack."
#define GOTMEDINEED "Picked up a medikit that you REALLY need!"
#define GOTMEDIKIT "Picked up a medikit."
#define GOTSUPER "Supercharge!"
#define GOTBLUECARD "Picked up a blue keycard."
#define GOTYELWCARD "Picked up a yellow keycard."
#define GOTREDCARD "Picked up a red keycard."
#define GOTBLUESKUL "Picked up a blue skull key."
#define GOTYELWSKUL "Picked up a yellow skull key."
#define GOTREDSKULL "Picked up a red skull key."
#define GOTINVUL "Invulnerability!"
#define GOTBERSERK "Berserk!"
#define GOTINVIS "Partial Invisibility"
#define GOTSUIT "Radiation Shielding Suit"
#define GOTMAP "Computer Area Map"
#define GOTVISOR "Light Amplification Visor"
#define GOTMSPHERE "MegaSphere!"
#define GOTCLIP "Picked up a clip."
#define GOTCLIPBOX "Picked up a box of bullets."
#define GOTROCKET "Picked up a rocket."
#define GOTROCKBOX "Picked up a box of rockets."
#define GOTCELL "Picked up an energy cell."
#define GOTCELLBOX "Picked up an energy cell pack."
#define GOTSHELLS "Picked up 4 shotgun shells."
#define GOTSHELLBOX "Picked up a box of shotgun shells."
#define GOTBACKPACK "Picked up a backpack full of ammo!"
#define GOTBFG9000 "You got the BFG9000! Oh, yes."
#define GOTCHAINGUN "You got the chaingun!"
#define GOTCHAINSAW "A chainsaw! Find some meat!"
#define GOTLAUNCHER "You got the rocket launcher!"
#define GOTPLASMA "You got the plasma gun!"
#define GOTSHOTGUN "You got the shotgun!"
#define GOTSHOTGUN2 "You got the super shotgun!"
//
// P_Doors.C
//
#define PD_BLUEO "You need a blue key to activate this object"
#define PD_REDO "You need a red key to activate this object"
#define PD_YELLOWO "You need a yellow key to activate this object"
#define PD_BLUEK "You need a blue key to open this door"
#define PD_REDK "You need a red key to open this door"
#define PD_YELLOWK "You need a yellow key to open this door"
//
// G_game.C
//
#define GGSAVED "game saved."
//
// HU_stuff.C
//
#define HUSTR_MSGU "[Message unsent]"
#define HUSTR_E1M1 "E1M1: Hangar"
#define HUSTR_E1M2 "E1M2: Nuclear Plant"
#define HUSTR_E1M3 "E1M3: Toxin Refinery"
#define HUSTR_E1M4 "E1M4: Command Control"
#define HUSTR_E1M5 "E1M5: Phobos Lab"
#define HUSTR_E1M6 "E1M6: Central Processing"
#define HUSTR_E1M7 "E1M7: Computer Station"
#define HUSTR_E1M8 "E1M8: Phobos Anomaly"
#define HUSTR_E1M9 "E1M9: Military Base"
#define HUSTR_E2M1 "E2M1: Deimos Anomaly"
#define HUSTR_E2M2 "E2M2: Containment Area"
#define HUSTR_E2M3 "E2M3: Refinery"
#define HUSTR_E2M4 "E2M4: Deimos Lab"
#define HUSTR_E2M5 "E2M5: Command Center"
#define HUSTR_E2M6 "E2M6: Halls of the Damned"
#define HUSTR_E2M7 "E2M7: Spawning Vats"
#define HUSTR_E2M8 "E2M8: Tower of Babel"
#define HUSTR_E2M9 "E2M9: Fortress of Mystery"
#define HUSTR_E3M1 "E3M1: Hell Keep"
#define HUSTR_E3M2 "E3M2: Slough of Despair"
#define HUSTR_E3M3 "E3M3: Pandemonium"
#define HUSTR_E3M4 "E3M4: House of Pain"
#define HUSTR_E3M5 "E3M5: Unholy Cathedral"
#define HUSTR_E3M6 "E3M6: Mt. Erebus"
#define HUSTR_E3M7 "E3M7: Limbo"
#define HUSTR_E3M8 "E3M8: Dis"
#define HUSTR_E3M9 "E3M9: Warrens"
#define HUSTR_E4M1 "E4M1: Hell Beneath"
#define HUSTR_E4M2 "E4M2: Perfect Hatred"
#define HUSTR_E4M3 "E4M3: Sever The Wicked"
#define HUSTR_E4M4 "E4M4: Unruly Evil"
#define HUSTR_E4M5 "E4M5: They Will Repent"
#define HUSTR_E4M6 "E4M6: Against Thee Wickedly"
#define HUSTR_E4M7 "E4M7: And Hell Followed"
#define HUSTR_E4M8 "E4M8: Unto The Cruel"
#define HUSTR_E4M9 "E4M9: Fear"
#define HUSTR_1 "level 1: entryway"
#define HUSTR_2 "level 2: underhalls"
#define HUSTR_3 "level 3: the gantlet"
#define HUSTR_4 "level 4: the focus"
#define HUSTR_5 "level 5: the waste tunnels"
#define HUSTR_6 "level 6: the crusher"
#define HUSTR_7 "level 7: dead simple"
#define HUSTR_8 "level 8: tricks and traps"
#define HUSTR_9 "level 9: the pit"
#define HUSTR_10 "level 10: refueling base"
#define HUSTR_11 "level 11: 'o' of destruction!"
#define HUSTR_12 "level 12: the factory"
#define HUSTR_13 "level 13: downtown"
#define HUSTR_14 "level 14: the inmost dens"
#define HUSTR_15 "level 15: industrial zone"
#define HUSTR_16 "level 16: suburbs"
#define HUSTR_17 "level 17: tenements"
#define HUSTR_18 "level 18: the courtyard"
#define HUSTR_19 "level 19: the citadel"
#define HUSTR_20 "level 20: gotcha!"
#define HUSTR_21 "level 21: nirvana"
#define HUSTR_22 "level 22: the catacombs"
#define HUSTR_23 "level 23: barrels o' fun"
#define HUSTR_24 "level 24: the chasm"
#define HUSTR_25 "level 25: bloodfalls"
#define HUSTR_26 "level 26: the abandoned mines"
#define HUSTR_27 "level 27: monster condo"
#define HUSTR_28 "level 28: the spirit world"
#define HUSTR_29 "level 29: the living end"
#define HUSTR_30 "level 30: icon of sin"
#define HUSTR_31 "level 31: wolfenstein"
#define HUSTR_32 "level 32: grosse"
#define PHUSTR_1 "level 1: congo"
#define PHUSTR_2 "level 2: well of souls"
#define PHUSTR_3 "level 3: aztec"
#define PHUSTR_4 "level 4: caged"
#define PHUSTR_5 "level 5: ghost town"
#define PHUSTR_6 "level 6: baron's lair"
#define PHUSTR_7 "level 7: caughtyard"
#define PHUSTR_8 "level 8: realm"
#define PHUSTR_9 "level 9: abattoire"
#define PHUSTR_10 "level 10: onslaught"
#define PHUSTR_11 "level 11: hunted"
#define PHUSTR_12 "level 12: speed"
#define PHUSTR_13 "level 13: the crypt"
#define PHUSTR_14 "level 14: genesis"
#define PHUSTR_15 "level 15: the twilight"
#define PHUSTR_16 "level 16: the omen"
#define PHUSTR_17 "level 17: compound"
#define PHUSTR_18 "level 18: neurosphere"
#define PHUSTR_19 "level 19: nme"
#define PHUSTR_20 "level 20: the death domain"
#define PHUSTR_21 "level 21: slayer"
#define PHUSTR_22 "level 22: impossible mission"
#define PHUSTR_23 "level 23: tombstone"
#define PHUSTR_24 "level 24: the final frontier"
#define PHUSTR_25 "level 25: the temple of darkness"
#define PHUSTR_26 "level 26: bunker"
#define PHUSTR_27 "level 27: anti-christ"
#define PHUSTR_28 "level 28: the sewers"
#define PHUSTR_29 "level 29: odyssey of noises"
#define PHUSTR_30 "level 30: the gateway of hell"
#define PHUSTR_31 "level 31: cyberden"
#define PHUSTR_32 "level 32: go 2 it"
#define THUSTR_1 "level 1: system control"
#define THUSTR_2 "level 2: human bbq"
#define THUSTR_3 "level 3: power control"
#define THUSTR_4 "level 4: wormhole"
#define THUSTR_5 "level 5: hanger"
#define THUSTR_6 "level 6: open season"
#define THUSTR_7 "level 7: prison"
#define THUSTR_8 "level 8: metal"
#define THUSTR_9 "level 9: stronghold"
#define THUSTR_10 "level 10: redemption"
#define THUSTR_11 "level 11: storage facility"
#define THUSTR_12 "level 12: crater"
#define THUSTR_13 "level 13: nukage processing"
#define THUSTR_14 "level 14: steel works"
#define THUSTR_15 "level 15: dead zone"
#define THUSTR_16 "level 16: deepest reaches"
#define THUSTR_17 "level 17: processing area"
#define THUSTR_18 "level 18: mill"
#define THUSTR_19 "level 19: shipping/respawning"
#define THUSTR_20 "level 20: central processing"
#define THUSTR_21 "level 21: administration center"
#define THUSTR_22 "level 22: habitat"
#define THUSTR_23 "level 23: lunar mining project"
#define THUSTR_24 "level 24: quarry"
#define THUSTR_25 "level 25: baron's den"
#define THUSTR_26 "level 26: ballistyx"
#define THUSTR_27 "level 27: mount pain"
#define THUSTR_28 "level 28: heck"
#define THUSTR_29 "level 29: river styx"
#define THUSTR_30 "level 30: last call"
#define THUSTR_31 "level 31: pharaoh"
#define THUSTR_32 "level 32: caribbean"
#define HUSTR_CHATMACRO1 "I'm ready to kick butt!"
#define HUSTR_CHATMACRO2 "I'm OK."
#define HUSTR_CHATMACRO3 "I'm not looking too good!"
#define HUSTR_CHATMACRO4 "Help!"
#define HUSTR_CHATMACRO5 "You suck!"
#define HUSTR_CHATMACRO6 "Next time, scumbag..."
#define HUSTR_CHATMACRO7 "Come here!"
#define HUSTR_CHATMACRO8 "I'll take care of it."
#define HUSTR_CHATMACRO9 "Yes"
#define HUSTR_CHATMACRO0 "No"
#define HUSTR_TALKTOSELF1 "You mumble to yourself"
#define HUSTR_TALKTOSELF2 "Who's there?"
#define HUSTR_TALKTOSELF3 "You scare yourself"
#define HUSTR_TALKTOSELF4 "You start to rave"
#define HUSTR_TALKTOSELF5 "You've lost it..."
#define HUSTR_MESSAGESENT "[Message Sent]"
// The following should NOT be changed unless it seems
// just AWFULLY necessary
#define HUSTR_PLRGREEN "Green: "
#define HUSTR_PLRINDIGO "Indigo: "
#define HUSTR_PLRBROWN "Brown: "
#define HUSTR_PLRRED "Red: "
#define HUSTR_KEYGREEN 'g'
#define HUSTR_KEYINDIGO 'i'
#define HUSTR_KEYBROWN 'b'
#define HUSTR_KEYRED 'r'
//
// AM_map.C
//
#define AMSTR_FOLLOWON "Follow Mode ON"
#define AMSTR_FOLLOWOFF "Follow Mode OFF"
#define AMSTR_GRIDON "Grid ON"
#define AMSTR_GRIDOFF "Grid OFF"
#define AMSTR_MARKEDSPOT "Marked Spot"
#define AMSTR_MARKSCLEARED "All Marks Cleared"
//
// ST_stuff.C
//
#define STSTR_MUS "Music Change"
#define STSTR_NOMUS "IMPOSSIBLE SELECTION"
#define STSTR_DQDON "Degreelessness Mode On"
#define STSTR_DQDOFF "Degreelessness Mode Off"
#define STSTR_KFAADDED "Very Happy Ammo Added"
#define STSTR_FAADDED "Ammo (no keys) Added"
#define STSTR_NCON "No Clipping Mode ON"
#define STSTR_NCOFF "No Clipping Mode OFF"
#define STSTR_BEHOLD "inVuln, Str, Inviso, Rad, Allmap, or Lite-amp"
#define STSTR_BEHOLDX "Power-up Toggled"
#define STSTR_CHOPPERS "... doesn't suck - GM"
#define STSTR_CLEV "Changing Level..."
//
// F_Finale.C
//
#define E1TEXT \
"Once you beat the big badasses and\n"\
"clean out the moon base you're supposed\n"\
"to win, aren't you? Aren't you? Where's\n"\
"your fat reward and ticket home? What\n"\
"the hell is this? It's not supposed to\n"\
"end this way!\n"\
"\n" \
"It stinks like rotten meat, but looks\n"\
"like the lost Deimos base. Looks like\n"\
"you're stuck on The Shores of Hell.\n"\
"The only way out is through.\n"\
"\n"\
"To continue the DOOM experience, play\n"\
"The Shores of Hell and its amazing\n"\
"sequel, Inferno!\n"
#define E2TEXT \
"You've done it! The hideous cyber-\n"\
"demon lord that ruled the lost Deimos\n"\
"moon base has been slain and you\n"\
"are triumphant! But ... where are\n"\
"you? You clamber to the edge of the\n"\
"moon and look down to see the awful\n"\
"truth.\n" \
"\n"\
"Deimos floats above Hell itself!\n"\
"You've never heard of anyone escaping\n"\
"from Hell, but you'll make the bastards\n"\
"sorry they ever heard of you! Quickly,\n"\
"you rappel down to the surface of\n"\
"Hell.\n"\
"\n" \
"Now, it's on to the final chapter of\n"\
"DOOM! -- Inferno."
#define E3TEXT \
"The loathsome spiderdemon that\n"\
"masterminded the invasion of the moon\n"\
"bases and caused so much death has had\n"\
"its ass kicked for all time.\n"\
"\n"\
"A hidden doorway opens and you enter.\n"\
"You've proven too tough for Hell to\n"\
"contain, and now Hell at last plays\n"\
"fair -- for you emerge from the door\n"\
"to see the green fields of Earth!\n"\
"Home at last.\n" \
"\n"\
"You wonder what's been happening on\n"\
"Earth while you were battling evil\n"\
"unleashed. It's good that no Hell-\n"\
"spawn could have come through that\n"\
"door with you ..."
#define E4TEXT \
"the spider mastermind must have sent forth\n"\
"its legions of hellspawn before your\n"\
"final confrontation with that terrible\n"\
"beast from hell. but you stepped forward\n"\
"and brought forth eternal damnation and\n"\
"suffering upon the horde as a true hero\n"\
"would in the face of something so evil.\n"\
"\n"\
"besides, someone was gonna pay for what\n"\
"happened to daisy, your pet rabbit.\n"\
"\n"\
"but now, you see spread before you more\n"\
"potential pain and gibbitude as a nation\n"\
"of demons run amok among our cities.\n"\
"\n"\
"next stop, hell on earth!"
// after level 6, put this:
#define C1TEXT \
"YOU HAVE ENTERED DEEPLY INTO THE INFESTED\n" \
"STARPORT. BUT SOMETHING IS WRONG. THE\n" \
"MONSTERS HAVE BROUGHT THEIR OWN REALITY\n" \
"WITH THEM, AND THE STARPORT'S TECHNOLOGY\n" \
"IS BEING SUBVERTED BY THEIR PRESENCE.\n" \
"\n"\
"AHEAD, YOU SEE AN OUTPOST OF HELL, A\n" \
"FORTIFIED ZONE. IF YOU CAN GET PAST IT,\n" \
"YOU CAN PENETRATE INTO THE HAUNTED HEART\n" \
"OF THE STARBASE AND FIND THE CONTROLLING\n" \
"SWITCH WHICH HOLDS EARTH'S POPULATION\n" \
"HOSTAGE."
// After level 11, put this:
#define C2TEXT \
"YOU HAVE WON! YOUR VICTORY HAS ENABLED\n" \
"HUMANKIND TO EVACUATE EARTH AND ESCAPE\n"\
"THE NIGHTMARE. NOW YOU ARE THE ONLY\n"\
"HUMAN LEFT ON THE FACE OF THE PLANET.\n"\
"CANNIBAL MUTATIONS, CARNIVOROUS ALIENS,\n"\
"AND EVIL SPIRITS ARE YOUR ONLY NEIGHBORS.\n"\
"YOU SIT BACK AND WAIT FOR DEATH, CONTENT\n"\
"THAT YOU HAVE SAVED YOUR SPECIES.\n"\
"\n"\
"BUT THEN, EARTH CONTROL BEAMS DOWN A\n"\
"MESSAGE FROM SPACE: \"SENSORS HAVE LOCATED\n"\
"THE SOURCE OF THE ALIEN INVASION. IF YOU\n"\
"GO THERE, YOU MAY BE ABLE TO BLOCK THEIR\n"\
"ENTRY. THE ALIEN BASE IS IN THE HEART OF\n"\
"YOUR OWN HOME CITY, NOT FAR FROM THE\n"\
"STARPORT.\" SLOWLY AND PAINFULLY YOU GET\n"\
"UP AND RETURN TO THE FRAY."
// After level 20, put this:
#define C3TEXT \
"YOU ARE AT THE CORRUPT HEART OF THE CITY,\n"\
"SURROUNDED BY THE CORPSES OF YOUR ENEMIES.\n"\
"YOU SEE NO WAY TO DESTROY THE CREATURES'\n"\
"ENTRYWAY ON THIS SIDE, SO YOU CLENCH YOUR\n"\
"TEETH AND PLUNGE THROUGH IT.\n"\
"\n"\
"THERE MUST BE A WAY TO CLOSE IT ON THE\n"\
"OTHER SIDE. WHAT DO YOU CARE IF YOU'VE\n"\
"GOT TO GO THROUGH HELL TO GET TO IT?"
// After level 29, put this:
#define C4TEXT \
"THE HORRENDOUS VISAGE OF THE BIGGEST\n"\
"DEMON YOU'VE EVER SEEN CRUMBLES BEFORE\n"\
"YOU, AFTER YOU PUMP YOUR ROCKETS INTO\n"\
"HIS EXPOSED BRAIN. THE MONSTER SHRIVELS\n"\
"UP AND DIES, ITS THRASHING LIMBS\n"\
"DEVASTATING UNTOLD MILES OF HELL'S\n"\
"SURFACE.\n"\
"\n"\
"YOU'VE DONE IT. THE INVASION IS OVER.\n"\
"EARTH IS SAVED. HELL IS A WRECK. YOU\n"\
"WONDER WHERE BAD FOLKS WILL GO WHEN THEY\n"\
"DIE, NOW. WIPING THE SWEAT FROM YOUR\n"\
"FOREHEAD YOU BEGIN THE LONG TREK BACK\n"\
"HOME. REBUILDING EARTH OUGHT TO BE A\n"\
"LOT MORE FUN THAN RUINING IT WAS.\n"
// Before level 31, put this:
#define C5TEXT \
"CONGRATULATIONS, YOU'VE FOUND THE SECRET\n"\
"LEVEL! LOOKS LIKE IT'S BEEN BUILT BY\n"\
"HUMANS, RATHER THAN DEMONS. YOU WONDER\n"\
"WHO THE INMATES OF THIS CORNER OF HELL\n"\
"WILL BE."
// Before level 32, put this:
#define C6TEXT \
"CONGRATULATIONS, YOU'VE FOUND THE\n"\
"SUPER SECRET LEVEL! YOU'D BETTER\n"\
"BLAZE THROUGH THIS ONE!\n"
// after map 06
#define P1TEXT \
"You gloat over the steaming carcass of the\n"\
"Guardian. With its death, you've wrested\n"\
"the Accelerator from the stinking claws\n"\
"of Hell. You relax and glance around the\n"\
"room. Damn! There was supposed to be at\n"\
"least one working prototype, but you can't\n"\
"see it. The demons must have taken it.\n"\
"\n"\
"You must find the prototype, or all your\n"\
"struggles will have been wasted. Keep\n"\
"moving, keep fighting, keep killing.\n"\
"Oh yes, keep living, too."
// after map 11
#define P2TEXT \
"Even the deadly Arch-Vile labyrinth could\n"\
"not stop you, and you've gotten to the\n"\
"prototype Accelerator which is soon\n"\
"efficiently and permanently deactivated.\n"\
"\n"\
"You're good at that kind of thing."
// after map 20
#define P3TEXT \
"You've bashed and battered your way into\n"\
"the heart of the devil-hive. Time for a\n"\
"Search-and-Destroy mission, aimed at the\n"\
"Gatekeeper, whose foul offspring is\n"\
"cascading to Earth. Yeah, he's bad. But\n"\
"you know who's worse!\n"\
"\n"\
"Grinning evilly, you check your gear, and\n"\
"get ready to give the bastard a little Hell\n"\
"of your own making!"
// after map 30
#define P4TEXT \
"The Gatekeeper's evil face is splattered\n"\
"all over the place. As its tattered corpse\n"\
"collapses, an inverted Gate forms and\n"\
"sucks down the shards of the last\n"\
"prototype Accelerator, not to mention the\n"\
"few remaining demons. You're done. Hell\n"\
"has gone back to pounding bad dead folks \n"\
"instead of good live ones. Remember to\n"\
"tell your grandkids to put a rocket\n"\
"launcher in your coffin. If you go to Hell\n"\
"when you die, you'll need it for some\n"\
"final cleaning-up ..."
// before map 31
#define P5TEXT \
"You've found the second-hardest level we\n"\
"got. Hope you have a saved game a level or\n"\
"two previous. If not, be prepared to die\n"\
"aplenty. For master marines only."
// before map 32
#define P6TEXT \
"Betcha wondered just what WAS the hardest\n"\
"level we had ready for ya? Now you know.\n"\
"No one gets out alive."
#define T1TEXT \
"You've fought your way out of the infested\n"\
"experimental labs. It seems that UAC has\n"\
"once again gulped it down. With their\n"\
"high turnover, it must be hard for poor\n"\
"old UAC to buy corporate health insurance\n"\
"nowadays..\n"\
"\n"\
"Ahead lies the military complex, now\n"\
"swarming with diseased horrors hot to get\n"\
"their teeth into you. With luck, the\n"\
"complex still has some warlike ordnance\n"\
"laying around."
#define T2TEXT \
"You hear the grinding of heavy machinery\n"\
"ahead. You sure hope they're not stamping\n"\
"out new hellspawn, but you're ready to\n"\
"ream out a whole herd if you have to.\n"\
"They might be planning a blood feast, but\n"\
"you feel about as mean as two thousand\n"\
"maniacs packed into one mad killer.\n"\
"\n"\
"You don't plan to go down easy."
#define T3TEXT \
"The vista opening ahead looks real damn\n"\
"familiar. Smells familiar, too -- like\n"\
"fried excrement. You didn't like this\n"\
"place before, and you sure as hell ain't\n"\
"planning to like it now. The more you\n"\
"brood on it, the madder you get.\n"\
"Hefting your gun, an evil grin trickles\n"\
"onto your face. Time to take some names."
#define T4TEXT \
"Suddenly, all is silent, from one horizon\n"\
"to the other. The agonizing echo of Hell\n"\
"fades away, the nightmare sky turns to\n"\
"blue, the heaps of monster corpses start \n"\
"to evaporate along with the evil stench \n"\
"that filled the air. Jeeze, maybe you've\n"\
"done it. Have you really won?\n"\
"\n"\
"Something rumbles in the distance.\n"\
"A blue light begins to glow inside the\n"\
"ruined skull of the demon-spitter."
#define T5TEXT \
"What now? Looks totally different. Kind\n"\
"of like King Tut's condo. Well,\n"\
"whatever's here can't be any worse\n"\
"than usual. Can it? Or maybe it's best\n"\
"to let sleeping gods lie.."
#define T6TEXT \
"Time for a vacation. You've burst the\n"\
"bowels of hell and by golly you're ready\n"\
"for a break. You mutter to yourself,\n"\
"Maybe someone else can kick Hell's ass\n"\
"next time around. Ahead lies a quiet town,\n"\
"with peaceful flowing water, quaint\n"\
"buildings, and presumably no Hellspawn.\n"\
"\n"\
"As you step off the transport, you hear\n"\
"the stomp of a cyberdemon's iron shoe."
//
// Character cast strings F_FINALE.C
//
#define CC_ZOMBIE "ZOMBIEMAN"
#define CC_SHOTGUN "SHOTGUN GUY"
#define CC_HEAVY "HEAVY WEAPON DUDE"
#define CC_IMP "IMP"
#define CC_DEMON "DEMON"
#define CC_LOST "LOST SOUL"
#define CC_CACO "CACODEMON"
#define CC_HELL "HELL KNIGHT"
#define CC_BARON "BARON OF HELL"
#define CC_ARACH "ARACHNOTRON"
#define CC_PAIN "PAIN ELEMENTAL"
#define CC_REVEN "REVENANT"
#define CC_MANCU "MANCUBUS"
#define CC_ARCH "ARCH-VILE"
#define CC_SPIDER "THE SPIDER MASTERMIND"
#define CC_CYBER "THE CYBERDEMON"
#define CC_HERO "OUR HERO"
#endif
//-----------------------------------------------------------------------------
//
// $Log:$
//
//-----------------------------------------------------------------------------
================================================
FILE: linuxdoom-1.10/d_event.h
================================================
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// $Id:$
//
// Copyright (C) 1993-1996 by id Software, Inc.
//
// This source is available for distribution and/or modification
// only under the terms of the DOOM Source Code License as
// published by id Software. All rights reserved.
//
// The source is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
// for more details.
//
// DESCRIPTION:
//
//
//-----------------------------------------------------------------------------
#ifndef __D_EVENT__
#define __D_EVENT__
#include "doomtype.h"
//
// Event handling.
//
// Input event types.
typedef enum
{
ev_keydown,
ev_keyup,
ev_mouse,
ev_joystick
} evtype_t;
// Event structure.
typedef struct
{
evtype_t type;
int data1; // keys / mouse/joystick buttons
int data2; // mouse/joystick x move
int data3; // mouse/joystick y move
} event_t;
typedef enum
{
ga_nothing,
ga_loadlevel,
ga_newgame,
ga_loadgame,
ga_savegame,
ga_playdemo,
ga_completed,
ga_victory,
ga_worlddone,
ga_screenshot
} gameaction_t;
//
// Button/action code definitions.
//
typedef enum
{
// Press "Fire".
BT_ATTACK = 1,
// Use button, to open doors, activate switches.
BT_USE = 2,
// Flag: game events, not really buttons.
BT_SPECIAL = 128,
BT_SPECIALMASK = 3,
// Flag, weapon change pending.
// If true, the next 3 bits hold weapon num.
BT_CHANGE = 4,
// The 3bit weapon mask and shift, convenience.
BT_WEAPONMASK = (8+16+32),
BT_WEAPONSHIFT = 3,
// Pause the game.
BTS_PAUSE = 1,
// Save the game at each console.
BTS_SAVEGAME = 2,
// Savegame slot numbers
// occupy the second byte of buttons.
BTS_SAVEMASK = (4+8+16),
BTS_SAVESHIFT = 2,
} buttoncode_t;
//
// GLOBAL VARIABLES
//
#define MAXEVENTS 64
extern event_t events[MAXEVENTS];
extern int eventhead;
extern int eventtail;
extern gameaction_t gameaction;
#endif
//-----------------------------------------------------------------------------
//
// $Log:$
//
//-----------------------------------------------------------------------------
================================================
FILE: linuxdoom-1.10/d_french.h
================================================
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// $Id:$
//
// Copyright (C) 1993-1996 by id Software, Inc.
//
// This source is available for distribution and/or modification
// only under the terms of the DOOM Source Code License as
// published by id Software. All rights reserved.
//
// The source is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
// for more details.
//
// DESCRIPTION:
// Printed strings, french translation.
//
//-----------------------------------------------------------------------------
#ifndef __D_FRENCH__
#define __D_FRENCH__
//
// D_Main.C
//
#define D_DEVSTR "MODE DEVELOPPEMENT ON.\n"
#define D_CDROM "VERSION CD-ROM: DEFAULT.CFG DANS C:\\DOOMDATA\n"
//
// M_Menu.C
//
#define PRESSKEY "APPUYEZ SUR UNE TOUCHE."
#define PRESSYN "APPUYEZ SUR Y OU N"
#define QUITMSG "VOUS VOULEZ VRAIMENT\nQUITTER CE SUPER JEU?"
#define LOADNET "VOUS NE POUVEZ PAS CHARGER\nUN JEU EN RESEAU!\n\n"PRESSKEY
#define QLOADNET "CHARGEMENT RAPIDE INTERDIT EN RESEAU!\n\n"PRESSKEY
#define QSAVESPOT "VOUS N'AVEZ PAS CHOISI UN EMPLACEMENT!\n\n"PRESSKEY
#define SAVEDEAD "VOUS NE POUVEZ PAS SAUVER SI VOUS NE JOUEZ "\
"PAS!\n\n"PRESSKEY
#define QSPROMPT "SAUVEGARDE RAPIDE DANS LE FICHIER \n\n'%s'?\n\n"PRESSYN
#define QLPROMPT "VOULEZ-VOUS CHARGER LA SAUVEGARDE"\
"\n\n'%s'?\n\n"PRESSYN
#define NEWGAME "VOUS NE POUVEZ PAS LANCER\n"\
"UN NOUVEAU JEU SUR RESEAU.\n\n"PRESSKEY
#define NIGHTMARE "VOUS CONFIRMEZ? CE NIVEAU EST\n"\
"VRAIMENT IMPITOYABLE!n"PRESSYN
#define SWSTRING "CECI EST UNE VERSION SHAREWARE DE DOOM.\n\n"\
"VOUS DEVRIEZ COMMANDER LA TRILOGIE COMPLETE.\n\n"PRESSKEY
#define MSGOFF "MESSAGES OFF"
#define MSGON "MESSAGES ON"
#define NETEND "VOUS NE POUVEZ PAS METTRE FIN A UN JEU SUR "\
"RESEAU!\n\n"PRESSKEY
#define ENDGAME "VOUS VOULEZ VRAIMENT METTRE FIN AU JEU?\n\n"PRESSYN
#define DOSY "(APPUYEZ SUR Y POUR REVENIR AU OS.)"
#define DETAILHI "GRAPHISMES MAXIMUM "
#define DETAILLO "GRAPHISMES MINIMUM "
#define GAMMALVL0 "CORRECTION GAMMA OFF"
#define GAMMALVL1 "CORRECTION GAMMA NIVEAU 1"
#define GAMMALVL2 "CORRECTION GAMMA NIVEAU 2"
#define GAMMALVL3 "CORRECTION GAMMA NIVEAU 3"
#define GAMMALVL4 "CORRECTION GAMMA NIVEAU 4"
#define EMPTYSTRING "EMPLACEMENT VIDE"
//
// P_inter.C
//
#define GOTARMOR "ARMURE RECUPEREE."
#define GOTMEGA "MEGA-ARMURE RECUPEREE!"
#define GOTHTHBONUS "BONUS DE SANTE RECUPERE."
#define GOTARMBONUS "BONUS D'ARMURE RECUPERE."
#define GOTSTIM "STIMPACK RECUPERE."
#define GOTMEDINEED "MEDIKIT RECUPERE. VOUS EN AVEZ VRAIMENT BESOIN!"
#define GOTMEDIKIT "MEDIKIT RECUPERE."
#define GOTSUPER "SUPERCHARGE!"
#define GOTBLUECARD "CARTE MAGNETIQUE BLEUE RECUPEREE."
#define GOTYELWCARD "CARTE MAGNETIQUE JAUNE RECUPEREE."
#define GOTREDCARD "CARTE MAGNETIQUE ROUGE RECUPEREE."
#define GOTBLUESKUL "CLEF CRANE BLEUE RECUPEREE."
#define GOTYELWSKUL "CLEF CRANE JAUNE RECUPEREE."
#define GOTREDSKULL "CLEF CRANE ROUGE RECUPEREE."
#define GOTINVUL "INVULNERABILITE!"
#define GOTBERSERK "BERSERK!"
#define GOTINVIS "INVISIBILITE PARTIELLE "
#define GOTSUIT "COMBINAISON ANTI-RADIATIONS "
#define GOTMAP "CARTE INFORMATIQUE "
#define GOTVISOR "VISEUR A AMPLIFICATION DE LUMIERE "
#define GOTMSPHERE "MEGASPHERE!"
#define GOTCLIP "CHARGEUR RECUPERE."
#define GOTCLIPBOX "BOITE DE BALLES RECUPEREE."
#define GOTROCKET "ROQUETTE RECUPEREE."
#define GOTROCKBOX "CAISSE DE ROQUETTES RECUPEREE."
#define GOTCELL "CELLULE D'ENERGIE RECUPEREE."
#define GOTCELLBOX "PACK DE CELLULES D'ENERGIE RECUPERE."
#define GOTSHELLS "4 CARTOUCHES RECUPEREES."
#define GOTSHELLBOX "BOITE DE CARTOUCHES RECUPEREE."
#define GOTBACKPACK "SAC PLEIN DE MUNITIONS RECUPERE!"
#define GOTBFG9000 "VOUS AVEZ UN BFG9000! OH, OUI!"
#define GOTCHAINGUN "VOUS AVEZ LA MITRAILLEUSE!"
#define GOTCHAINSAW "UNE TRONCONNEUSE!"
#define GOTLAUNCHER "VOUS AVEZ UN LANCE-ROQUETTES!"
#define GOTPLASMA "VOUS AVEZ UN FUSIL A PLASMA!"
#define GOTSHOTGUN "VOUS AVEZ UN FUSIL!"
#define GOTSHOTGUN2 "VOUS AVEZ UN SUPER FUSIL!"
//
// P_Doors.C
//
#define PD_BLUEO "IL VOUS FAUT UNE CLEF BLEUE"
#define PD_REDO "IL VOUS FAUT UNE CLEF ROUGE"
#define PD_YELLOWO "IL VOUS FAUT UNE CLEF JAUNE"
#define PD_BLUEK PD_BLUEO
#define PD_REDK PD_REDO
#define PD_YELLOWK PD_YELLOWO
//
// G_game.C
//
#define GGSAVED "JEU SAUVEGARDE."
//
// HU_stuff.C
//
#define HUSTR_MSGU "[MESSAGE NON ENVOYE]"
#define HUSTR_E1M1 "E1M1: HANGAR"
#define HUSTR_E1M2 "E1M2: USINE NUCLEAIRE "
#define HUSTR_E1M3 "E1M3: RAFFINERIE DE TOXINES "
#define HUSTR_E1M4 "E1M4: CENTRE DE CONTROLE "
#define HUSTR_E1M5 "E1M5: LABORATOIRE PHOBOS "
#define HUSTR_E1M6 "E1M6: TRAITEMENT CENTRAL "
#define HUSTR_E1M7 "E1M7: CENTRE INFORMATIQUE "
#define HUSTR_E1M8 "E1M8: ANOMALIE PHOBOS "
#define HUSTR_E1M9 "E1M9: BASE MILITAIRE "
#define HUSTR_E2M1 "E2M1: ANOMALIE DEIMOS "
#define HUSTR_E2M2 "E2M2: ZONE DE CONFINEMENT "
#define HUSTR_E2M3 "E2M3: RAFFINERIE"
#define HUSTR_E2M4 "E2M4: LABORATOIRE DEIMOS "
#define HUSTR_E2M5 "E2M5: CENTRE DE CONTROLE "
#define HUSTR_E2M6 "E2M6: HALLS DES DAMNES "
#define HUSTR_E2M7 "E2M7: CUVES DE REPRODUCTION "
#define HUSTR_E2M8 "E2M8: TOUR DE BABEL "
#define HUSTR_E2M9 "E2M9: FORTERESSE DU MYSTERE "
#define HUSTR_E3M1 "E3M1: DONJON DE L'ENFER "
#define HUSTR_E3M2 "E3M2: BOURBIER DU DESESPOIR "
#define HUSTR_E3M3 "E3M3: PANDEMONIUM"
#define HUSTR_E3M4 "E3M4: MAISON DE LA DOULEUR "
#define HUSTR_E3M5 "E3M5: CATHEDRALE PROFANE "
#define HUSTR_E3M6 "E3M6: MONT EREBUS"
#define HUSTR_E3M7 "E3M7: LIMBES"
#define HUSTR_E3M8 "E3M8: DIS"
#define HUSTR_E3M9 "E3M9: CLAPIERS"
#define HUSTR_1 "NIVEAU 1: ENTREE "
#define HUSTR_2 "NIVEAU 2: HALLS SOUTERRAINS "
#define HUSTR_3 "NIVEAU 3: LE FEU NOURRI "
#define HUSTR_4 "NIVEAU 4: LE FOYER "
#define HUSTR_5 "NIVEAU 5: LES EGOUTS "
#define HUSTR_6 "NIVEAU 6: LE BROYEUR "
#define HUSTR_7 "NIVEAU 7: L'HERBE DE LA MORT"
#define HUSTR_8 "NIVEAU 8: RUSES ET PIEGES "
#define HUSTR_9 "NIVEAU 9: LE PUITS "
#define HUSTR_10 "NIVEAU 10: BASE DE RAVITAILLEMENT "
#define HUSTR_11 "NIVEAU 11: LE CERCLE DE LA MORT!"
#define HUSTR_12 "NIVEAU 12: L'USINE "
#define HUSTR_13 "NIVEAU 13: LE CENTRE VILLE"
#define HUSTR_14 "NIVEAU 14: LES ANTRES PROFONDES "
#define HUSTR_15 "NIVEAU 15: LA ZONE INDUSTRIELLE "
#define HUSTR_16 "NIVEAU 16: LA BANLIEUE"
#define HUSTR_17 "NIVEAU 17: LES IMMEUBLES"
#define HUSTR_18 "NIVEAU 18: LA COUR "
#define HUSTR_19 "NIVEAU 19: LA CITADELLE "
#define HUSTR_20 "NIVEAU 20: JE T'AI EU!"
#define HUSTR_21 "NIVEAU 21: LE NIRVANA"
#define HUSTR_22 "NIVEAU 22: LES CATACOMBES "
#define HUSTR_23 "NIVEAU 23: LA GRANDE FETE "
#define HUSTR_24 "NIVEAU 24: LE GOUFFRE "
#define HUSTR_25 "NIVEAU 25: LES CHUTES DE SANG"
#define HUSTR_26 "NIVEAU 26: LES MINES ABANDONNEES "
#define HUSTR_27 "NIVEAU 27: CHEZ LES MONSTRES "
#define HUSTR_28 "NIVEAU 28: LE MONDE DE L'ESPRIT "
#define HUSTR_29 "NIVEAU 29: LA LIMITE "
#define HUSTR_30 "NIVEAU 30: L'ICONE DU PECHE "
#define HUSTR_31 "NIVEAU 31: WOLFENSTEIN"
#define HUSTR_32 "NIVEAU 32: LE MASSACRE"
#define HUSTR_CHATMACRO1 "JE SUIS PRET A LEUR EN FAIRE BAVER!"
#define HUSTR_CHATMACRO2 "JE VAIS BIEN."
#define HUSTR_CHATMACRO3 "JE N'AI PAS L'AIR EN FORME!"
#define HUSTR_CHATMACRO4 "AU SECOURS!"
#define HUSTR_CHATMACRO5 "TU CRAINS!"
#define HUSTR_CHATMACRO6 "LA PROCHAINE FOIS, MINABLE..."
#define HUSTR_CHATMACRO7 "VIENS ICI!"
#define HUSTR_CHATMACRO8 "JE VAIS M'EN OCCUPER."
#define HUSTR_CHATMACRO9 "OUI"
#define HUSTR_CHATMACRO0 "NON"
#define HUSTR_TALKTOSELF1 "VOUS PARLEZ TOUT SEUL "
#define HUSTR_TALKTOSELF2 "QUI EST LA?"
#define HUSTR_TALKTOSELF3 "VOUS VOUS FAITES PEUR "
#define HUSTR_TALKTOSELF4 "VOUS COMMENCEZ A DELIRER "
#define HUSTR_TALKTOSELF5 "VOUS ETES LARGUE..."
#define HUSTR_MESSAGESENT "[MESSAGE ENVOYE]"
// The following should NOT be changed unless it seems
// just AWFULLY necessary
#define HUSTR_PLRGREEN "VERT: "
#define HUSTR_PLRINDIGO "INDIGO: "
#define HUSTR_PLRBROWN "BRUN: "
#define HUSTR_PLRRED "ROUGE: "
#define HUSTR_KEYGREEN 'g' // french key should be "V"
#define HUSTR_KEYINDIGO 'i'
#define HUSTR_KEYBROWN 'b'
#define HUSTR_KEYRED 'r'
//
// AM_map.C
//
#define AMSTR_FOLLOWON "MODE POURSUITE ON"
#define AMSTR_FOLLOWOFF "MODE POURSUITE OFF"
#define AMSTR_GRIDON "GRILLE ON"
#define AMSTR_GRIDOFF "GRILLE OFF"
#define AMSTR_MARKEDSPOT "REPERE MARQUE "
#define AMSTR_MARKSCLEARED "REPERES EFFACES "
//
// ST_stuff.C
//
#define STSTR_MUS "CHANGEMENT DE MUSIQUE "
#define STSTR_NOMUS "IMPOSSIBLE SELECTION"
#define STSTR_DQDON "INVULNERABILITE ON "
#define STSTR_DQDOFF "INVULNERABILITE OFF"
#define STSTR_KFAADDED "ARMEMENT MAXIMUM! "
#define STSTR_FAADDED "ARMES (SAUF CLEFS) AJOUTEES"
#define STSTR_NCON "BARRIERES ON"
#define STSTR_NCOFF "BARRIERES OFF"
#define STSTR_BEHOLD " inVuln, Str, Inviso, Rad, Allmap, or Lite-amp"
#define STSTR_BEHOLDX "AMELIORATION ACTIVEE"
#define STSTR_CHOPPERS "... DOESN'T SUCK - GM"
#define STSTR_CLEV "CHANGEMENT DE NIVEAU..."
//
// F_Finale.C
//
#define E1TEXT "APRES AVOIR VAINCU LES GROS MECHANTS\n"\
"ET NETTOYE LA BASE LUNAIRE, VOUS AVEZ\n"\
"GAGNE, NON? PAS VRAI? OU EST DONC VOTRE\n"\
" RECOMPENSE ET VOTRE BILLET DE\n"\
"RETOUR? QU'EST-QUE CA VEUT DIRE?CE"\
"N'EST PAS LA FIN ESPEREE!\n"\
"\n" \
"CA SENT LA VIANDE PUTREFIEE, MAIS\n"\
"ON DIRAIT LA BASE DEIMOS. VOUS ETES\n"\
"APPAREMMENT BLOQUE AUX PORTES DE L'ENFER.\n"\
"LA SEULE ISSUE EST DE L'AUTRE COTE.\n"\
"\n"\
"POUR VIVRE LA SUITE DE DOOM, JOUEZ\n"\
"A 'AUX PORTES DE L'ENFER' ET A\n"\
"L'EPISODE SUIVANT, 'L'ENFER'!\n"
#define E2TEXT "VOUS AVEZ REUSSI. L'INFAME DEMON\n"\
"QUI CONTROLAIT LA BASE LUNAIRE DE\n"\
"DEIMOS EST MORT, ET VOUS AVEZ\n"\
"TRIOMPHE! MAIS... OU ETES-VOUS?\n"\
"VOUS GRIMPEZ JUSQU'AU BORD DE LA\n"\
"LUNE ET VOUS DECOUVREZ L'ATROCE\n"\
"VERITE.\n" \
"\n"\
"DEIMOS EST AU-DESSUS DE L'ENFER!\n"\
"VOUS SAVEZ QUE PERSONNE NE S'EN\n"\
"EST JAMAIS ECHAPPE, MAIS CES FUMIERS\n"\
"VONT REGRETTER DE VOUS AVOIR CONNU!\n"\
"VOUS REDESCENDEZ RAPIDEMENT VERS\n"\
"LA SURFACE DE L'ENFER.\n"\
"\n" \
"VOICI MAINTENANT LE CHAPITRE FINAL DE\n"\
"DOOM! -- L'ENFER."
#define E3TEXT "LE DEMON ARACHNEEN ET REPUGNANT\n"\
"QUI A DIRIGE L'INVASION DES BASES\n"\
"LUNAIRES ET SEME LA MORT VIENT DE SE\n"\
"FAIRE PULVERISER UNE FOIS POUR TOUTES.\n"\
"\n"\
"UNE PORTE SECRETE S'OUVRE. VOUS ENTREZ.\n"\
"VOUS AVEZ PROUVE QUE VOUS POUVIEZ\n"\
"RESISTER AUX HORREURS DE L'ENFER.\n"\
"IL SAIT ETRE BEAU JOUEUR, ET LORSQUE\n"\
"VOUS SORTEZ, VOUS REVOYEZ LES VERTES\n"\
"PRAIRIES DE LA TERRE, VOTRE PLANETE.\n"\
"\n"\
"VOUS VOUS DEMANDEZ CE QUI S'EST PASSE\n"\
"SUR TERRE PENDANT QUE VOUS AVEZ\n"\
"COMBATTU LE DEMON. HEUREUSEMENT,\n"\
"AUCUN GERME DU MAL N'A FRANCHI\n"\
"CETTE PORTE AVEC VOUS..."
// after level 6, put this:
#define C1TEXT "VOUS ETES AU PLUS PROFOND DE L'ASTROPORT\n" \
"INFESTE DE MONSTRES, MAIS QUELQUE CHOSE\n" \
"NE VA PAS. ILS ONT APPORTE LEUR PROPRE\n" \
"REALITE, ET LA TECHNOLOGIE DE L'ASTROPORT\n" \
"EST AFFECTEE PAR LEUR PRESENCE.\n" \
"\n"\
"DEVANT VOUS, VOUS VOYEZ UN POSTE AVANCE\n" \
"DE L'ENFER, UNE ZONE FORTIFIEE. SI VOUS\n" \
"POUVEZ PASSER, VOUS POURREZ PENETRER AU\n" \
"COEUR DE LA BASE HANTEE ET TROUVER \n" \
"L'INTERRUPTEUR DE CONTROLE QUI GARDE LA \n" \
"POPULATION DE LA TERRE EN OTAGE."
// After level 11, put this:
#define C2TEXT "VOUS AVEZ GAGNE! VOTRE VICTOIRE A PERMIS\n" \
"A L'HUMANITE D'EVACUER LA TERRE ET \n"\
"D'ECHAPPER AU CAUCHEMAR. VOUS ETES \n"\
"MAINTENANT LE DERNIER HUMAIN A LA SURFACE \n"\
"DE LA PLANETE. VOUS ETES ENTOURE DE \n"\
"MUTANTS CANNIBALES, D'EXTRATERRESTRES \n"\
"CARNIVORES ET D'ESPRITS DU MAL. VOUS \n"\
"ATTENDEZ CALMEMENT LA MORT, HEUREUX \n"\
"D'AVOIR PU SAUVER VOTRE RACE.\n"\
"MAIS UN MESSAGE VOUS PARVIENT SOUDAIN\n"\
"DE L'ESPACE: \"NOS CAPTEURS ONT LOCALISE\n"\
"LA SOURCE DE L'INVASION EXTRATERRESTRE.\n"\
"SI VOUS Y ALLEZ, VOUS POURREZ PEUT-ETRE\n"\
"LES ARRETER. LEUR BASE EST SITUEE AU COEUR\n"\
"DE VOTRE VILLE NATALE, PRES DE L'ASTROPORT.\n"\
"VOUS VOUS RELEVEZ LENTEMENT ET PENIBLEMENT\n"\
"ET VOUS REPARTEZ POUR LE FRONT."
// After level 20, put this:
#define C3TEXT "VOUS ETES AU COEUR DE LA CITE CORROMPUE,\n"\
"ENTOURE PAR LES CADAVRES DE VOS ENNEMIS.\n"\
"VOUS NE VOYEZ PAS COMMENT DETRUIRE LA PORTE\n"\
"DES CREATURES DE CE COTE. VOUS SERREZ\n"\
"LES DENTS ET PLONGEZ DANS L'OUVERTURE.\n"\
"\n"\
"IL DOIT Y AVOIR UN MOYEN DE LA FERMER\n"\
"DE L'AUTRE COTE. VOUS ACCEPTEZ DE\n"\
"TRAVERSER L'ENFER POUR LE FAIRE?"
// After level 29, put this:
#define C4TEXT "LE VISAGE HORRIBLE D'UN DEMON D'UNE\n"\
"TAILLE INCROYABLE S'EFFONDRE DEVANT\n"\
"VOUS LORSQUE VOUS TIREZ UNE SALVE DE\n"\
"ROQUETTES DANS SON CERVEAU. LE MONSTRE\n"\
"SE RATATINE, SES MEMBRES DECHIQUETES\n"\
"SE REPANDANT SUR DES CENTAINES DE\n"\
"KILOMETRES A LA SURFACE DE L'ENFER.\n"\
"\n"\
"VOUS AVEZ REUSSI. L'INVASION N'AURA.\n"\
"PAS LIEU. LA TERRE EST SAUVEE. L'ENFER\n"\
"EST ANEANTI. EN VOUS DEMANDANT OU IRONT\n"\
"MAINTENANT LES DAMNES, VOUS ESSUYEZ\n"\
"VOTRE FRONT COUVERT DE SUEUR ET REPARTEZ\n"\
"VERS LA TERRE. SA RECONSTRUCTION SERA\n"\
"BEAUCOUP PLUS DROLE QUE SA DESTRUCTION.\n"
// Before level 31, put this:
#define C5TEXT "FELICITATIONS! VOUS AVEZ TROUVE LE\n"\
"NIVEAU SECRET! IL SEMBLE AVOIR ETE\n"\
"CONSTRUIT PAR LES HUMAINS. VOUS VOUS\n"\
"DEMANDEZ QUELS PEUVENT ETRE LES\n"\
"HABITANTS DE CE COIN PERDU DE L'ENFER."
// Before level 32, put this:
#define C6TEXT "FELICITATIONS! VOUS AVEZ DECOUVERT\n"\
"LE NIVEAU SUPER SECRET! VOUS FERIEZ\n"\
"MIEUX DE FONCER DANS CELUI-LA!\n"
//
// Character cast strings F_FINALE.C
//
#define CC_ZOMBIE "ZOMBIE"
#define CC_SHOTGUN "TYPE AU FUSIL"
#define CC_HEAVY "MEC SUPER-ARME"
#define CC_IMP "DIABLOTIN"
#define CC_DEMON "DEMON"
#define CC_LOST "AME PERDUE"
#define CC_CACO "CACODEMON"
#define CC_HELL "CHEVALIER DE L'ENFER"
#define CC_BARON "BARON DE L'ENFER"
#define CC_ARACH "ARACHNOTRON"
#define CC_PAIN "ELEMENTAIRE DE LA DOULEUR"
#define CC_REVEN "REVENANT"
#define CC_MANCU "MANCUBUS"
#define CC_ARCH "ARCHI-INFAME"
#define CC_SPIDER "L'ARAIGNEE CERVEAU"
#define CC_CYBER "LE CYBERDEMON"
#define CC_HERO "NOTRE HEROS"
#endif
//-----------------------------------------------------------------------------
//
// $Log:$
//
//-----------------------------------------------------------------------------
================================================
FILE: linuxdoom-1.10/d_items.c
================================================
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// $Id:$
//
// Copyright (C) 1993-1996 by id Software, Inc.
//
// This source is available for distribution and/or modification
// only under the terms of the DOOM Source Code License as
// published by id Software. All rights reserved.
//
// The source is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
// for more details.
//
// $Log:$
//
// DESCRIPTION:
//
//-----------------------------------------------------------------------------
static const char
rcsid[] = "$Id:$";
// We are referring to sprite numbers.
#include "info.h"
#ifdef __GNUG__
#pragma implementation "d_items.h"
#endif
#include "d_items.h"
//
// PSPRITE ACTIONS for waepons.
// This struct controls the weapon animations.
//
// Each entry is:
// ammo/amunition type
// upstate
// downstate
// readystate
// atkstate, i.e. attack/fire/hit frame
// flashstate, muzzle flash
//
weaponinfo_t weaponinfo[NUMWEAPONS] =
{
{
// fist
am_noammo,
S_PUNCHUP,
S_PUNCHDOWN,
S_PUNCH,
S_PUNCH1,
S_NULL
},
{
// pistol
am_clip,
S_PISTOLUP,
S_PISTOLDOWN,
S_PISTOL,
S_PISTOL1,
S_PISTOLFLASH
},
{
// shotgun
am_shell,
S_SGUNUP,
S_SGUNDOWN,
S_SGUN,
S_SGUN1,
S_SGUNFLASH1
},
{
// chaingun
am_clip,
S_CHAINUP,
S_CHAINDOWN,
S_CHAIN,
S_CHAIN1,
S_CHAINFLASH1
},
{
// missile launcher
am_misl,
S_MISSILEUP,
S_MISSILEDOWN,
S_MISSILE,
S_MISSILE1,
S_MISSILEFLASH1
},
{
// plasma rifle
am_cell,
S_PLASMAUP,
S_PLASMADOWN,
S_PLASMA,
S_PLASMA1,
S_PLASMAFLASH1
},
{
// bfg 9000
am_cell,
S_BFGUP,
S_BFGDOWN,
S_BFG,
S_BFG1,
S_BFGFLASH1
},
{
// chainsaw
am_noammo,
S_SAWUP,
S_SAWDOWN,
S_SAW,
S_SAW1,
S_NULL
},
{
// super shotgun
am_shell,
S_DSGUNUP,
S_DSGUNDOWN,
S_DSGUN,
S_DSGUN1,
S_DSGUNFLASH1
},
};
================================================
FILE: linuxdoom-1.10/d_items.h
================================================
// Emacs style mode select -*- C++ -*-
//-------------------------------------------------------------------
gitextract_2slntpzu/
├── LICENSE.TXT
├── README.TXT
├── ipx/
│ ├── DOOMNET.C
│ ├── DOOMNET.H
│ ├── IPXNET.C
│ ├── IPXNET.H
│ ├── IPXSETUP.C
│ ├── IPXSTR.H
│ ├── IPX_FRCH.H
│ └── README
├── linuxdoom-1.10/
│ ├── CVS/
│ │ ├── Entries
│ │ ├── Repository
│ │ └── Root
│ ├── ChangeLog
│ ├── FILES
│ ├── FILES2
│ ├── Makefile
│ ├── README.asm
│ ├── README.b
│ ├── README.book
│ ├── README.gl
│ ├── README.sound
│ ├── TODO
│ ├── am_map.c
│ ├── am_map.h
│ ├── d_englsh.h
│ ├── d_event.h
│ ├── d_french.h
│ ├── d_items.c
│ ├── d_items.h
│ ├── d_main.c
│ ├── d_main.h
│ ├── d_net.c
│ ├── d_net.h
│ ├── d_player.h
│ ├── d_textur.h
│ ├── d_think.h
│ ├── d_ticcmd.h
│ ├── doomdata.h
│ ├── doomdef.c
│ ├── doomdef.h
│ ├── doomstat.c
│ ├── doomstat.h
│ ├── doomtype.h
│ ├── dstrings.c
│ ├── dstrings.h
│ ├── f_finale.c
│ ├── f_finale.h
│ ├── f_wipe.c
│ ├── f_wipe.h
│ ├── g_game.c
│ ├── g_game.h
│ ├── hu_lib.c
│ ├── hu_lib.h
│ ├── hu_stuff.c
│ ├── hu_stuff.h
│ ├── i_main.c
│ ├── i_net.c
│ ├── i_net.h
│ ├── i_sound.c
│ ├── i_sound.h
│ ├── i_system.c
│ ├── i_system.h
│ ├── i_video.c
│ ├── i_video.h
│ ├── info.c
│ ├── info.h
│ ├── m_argv.c
│ ├── m_argv.h
│ ├── m_bbox.c
│ ├── m_bbox.h
│ ├── m_cheat.c
│ ├── m_cheat.h
│ ├── m_fixed.c
│ ├── m_fixed.h
│ ├── m_menu.c
│ ├── m_menu.h
│ ├── m_misc.c
│ ├── m_misc.h
│ ├── m_random.c
│ ├── m_random.h
│ ├── m_swap.c
│ ├── m_swap.h
│ ├── p_ceilng.c
│ ├── p_doors.c
│ ├── p_enemy.c
│ ├── p_floor.c
│ ├── p_inter.c
│ ├── p_inter.h
│ ├── p_lights.c
│ ├── p_local.h
│ ├── p_map.c
│ ├── p_maputl.c
│ ├── p_mobj.c
│ ├── p_mobj.h
│ ├── p_plats.c
│ ├── p_pspr.c
│ ├── p_pspr.h
│ ├── p_saveg.c
│ ├── p_saveg.h
│ ├── p_setup.c
│ ├── p_setup.h
│ ├── p_sight.c
│ ├── p_spec.c
│ ├── p_spec.h
│ ├── p_switch.c
│ ├── p_telept.c
│ ├── p_tick.c
│ ├── p_tick.h
│ ├── p_user.c
│ ├── r_bsp.c
│ ├── r_bsp.h
│ ├── r_data.c
│ ├── r_data.h
│ ├── r_defs.h
│ ├── r_draw.c
│ ├── r_draw.h
│ ├── r_local.h
│ ├── r_main.c
│ ├── r_main.h
│ ├── r_plane.c
│ ├── r_plane.h
│ ├── r_segs.c
│ ├── r_segs.h
│ ├── r_sky.c
│ ├── r_sky.h
│ ├── r_state.h
│ ├── r_things.c
│ ├── r_things.h
│ ├── s_sound.c
│ ├── s_sound.h
│ ├── sounds.c
│ ├── sounds.h
│ ├── st_lib.c
│ ├── st_lib.h
│ ├── st_stuff.c
│ ├── st_stuff.h
│ ├── tables.c
│ ├── tables.h
│ ├── v_video.c
│ ├── v_video.h
│ ├── w_wad.c
│ ├── w_wad.h
│ ├── wi_stuff.c
│ ├── wi_stuff.h
│ ├── z_zone.c
│ └── z_zone.h
├── sersrc/
│ ├── DOOMNET.C
│ ├── DOOMNET.H
│ ├── PORT.C
│ ├── README.TXT
│ ├── SERSETUP.C
│ ├── SERSETUP.H
│ ├── SERSTR.H
│ └── SER_FRCH.H
└── sndserv/
├── Makefile
├── README.sndserv
├── linux.c
├── sounds.c
├── sounds.h
├── soundsrv.c
├── soundsrv.h
├── soundst.h
├── wadread.c
└── wadread.h
SYMBOL INDEX (951 symbols across 97 files)
FILE: ipx/DOOMNET.C
function LaunchDOOM (line 40) | void LaunchDOOM (void)
FILE: ipx/DOOMNET.H
type doomcom_t (line 19) | typedef struct
FILE: ipx/IPXNET.C
function OpenSocket (line 39) | int OpenSocket(short socketNumber)
function CloseSocket (line 51) | void CloseSocket(short socketNumber)
function ListenForPacket (line 58) | void ListenForPacket(ECB *ecb)
function GetLocalAddress (line 69) | void GetLocalAddress (void)
function InitNetwork (line 87) | void InitNetwork (void)
function ShutdownNetwork (line 158) | void ShutdownNetwork (void)
function SendPacket (line 174) | void SendPacket (int destination)
function ShortSwap (line 208) | unsigned short ShortSwap (unsigned short i)
function GetPacket (line 223) | int GetPacket (void)
FILE: ipx/IPXNET.H
type doomdata_t (line 4) | typedef struct
type setupdata_t (line 17) | typedef struct
type BYTE (line 27) | typedef unsigned char BYTE;
type WORD (line 28) | typedef unsigned short WORD;
type LONG (line 29) | typedef unsigned long LONG;
type IPXPacket (line 31) | typedef struct IPXPacketStructure
type localadr_t (line 48) | typedef struct
type nodeadr_t (line 54) | typedef struct
type ECB (line 59) | typedef struct ECBStructure
type packet_t (line 82) | typedef struct
FILE: ipx/IPXSETUP.C
function Error (line 37) | void Error (char *error, ...)
function CheckParm (line 65) | int CheckParm(char *parm)
function interrupt (line 85) | void interrupt NetISR (void)
function LookForNodes (line 112) | void LookForNodes (void)
function FindResponseFile (line 261) | void FindResponseFile (void)
function main (line 337) | void main (void)
FILE: linuxdoom-1.10/am_map.c
type fpoint_t (line 128) | typedef struct
type fline_t (line 133) | typedef struct
type mpoint_t (line 138) | typedef struct
type mline_t (line 143) | typedef struct
type islope_t (line 148) | typedef struct
function AM_getIslope (line 308) | void
function AM_activateNewScale (line 327) | void AM_activateNewScale(void)
function AM_saveScaleAndLoc (line 342) | void AM_saveScaleAndLoc(void)
function AM_restoreScaleAndLoc (line 353) | void AM_restoreScaleAndLoc(void)
function AM_addMark (line 377) | void AM_addMark(void)
function AM_findMinMaxBoundaries (line 389) | void AM_findMinMaxBoundaries(void)
function AM_changeWindowLoc (line 429) | void AM_changeWindowLoc(void)
function AM_initVariables (line 458) | void AM_initVariables(void)
function AM_loadPics (line 502) | void AM_loadPics(void)
function AM_unloadPics (line 515) | void AM_unloadPics(void)
function AM_clearMarks (line 524) | void AM_clearMarks(void)
function AM_LevelInit (line 537) | void AM_LevelInit(void)
function AM_Stop (line 560) | void AM_Stop (void)
function AM_Start (line 573) | void AM_Start (void)
function AM_minOutWindowScale (line 592) | void AM_minOutWindowScale(void)
function AM_maxOutWindowScale (line 602) | void AM_maxOutWindowScale(void)
function boolean (line 613) | boolean
function AM_changeWindowScale (line 741) | void AM_changeWindowScale(void)
function AM_doFollowPlayer (line 760) | void AM_doFollowPlayer(void)
function AM_updateLightLev (line 784) | void AM_updateLightLev(void)
function AM_Ticker (line 805) | void AM_Ticker (void)
function AM_clearFB (line 833) | void AM_clearFB(int color)
function boolean (line 846) | boolean
function AM_drawFline (line 977) | void
function AM_drawMline (line 1055) | void
function AM_drawGrid (line 1071) | void AM_drawGrid(int color)
function AM_drawWalls (line 1117) | void AM_drawWalls(void)
function AM_rotate (line 1172) | void
function AM_drawLineCharacter (line 1191) | void
function AM_drawPlayers (line 1240) | void AM_drawPlayers(void)
function AM_drawThings (line 1284) | void
function AM_drawMarks (line 1305) | void AM_drawMarks(void)
function AM_drawCrosshair (line 1326) | void AM_drawCrosshair(int color)
function AM_Drawer (line 1332) | void AM_Drawer (void)
FILE: linuxdoom-1.10/d_event.h
type evtype_t (line 35) | typedef enum
type event_t (line 44) | typedef struct
type gameaction_t (line 53) | typedef enum
type buttoncode_t (line 72) | typedef enum
FILE: linuxdoom-1.10/d_items.h
type weaponinfo_t (line 34) | typedef struct
FILE: linuxdoom-1.10/d_main.c
function D_PostEvent (line 150) | void D_PostEvent (event_t* ev)
function D_ProcessEvents (line 161) | void D_ProcessEvents (void)
function D_Display (line 193) | void D_Display (void)
function D_DoomLoop (line 354) | void D_DoomLoop (void)
function D_PageTicker (line 423) | void D_PageTicker (void)
function D_PageDrawer (line 434) | void D_PageDrawer (void)
function D_AdvanceDemo (line 444) | void D_AdvanceDemo (void)
function D_DoAdvanceDemo (line 454) | void D_DoAdvanceDemo (void)
function D_StartTitle (line 525) | void D_StartTitle (void)
function D_AddFile (line 543) | void D_AddFile (char *file)
function IdentifyVersion (line 563) | void IdentifyVersion (void)
function FindResponseFile (line 722) | void FindResponseFile (void)
function D_DoomMain (line 796) | void D_DoomMain (void)
FILE: linuxdoom-1.10/d_net.c
function NetbufferSize (line 90) | int NetbufferSize (void)
function NetbufferChecksum (line 98) | unsigned NetbufferChecksum (void)
function ExpandTics (line 120) | int ExpandTics (int low)
function HSendPacket (line 142) | void
function boolean (line 192) | boolean HGetPacket (void)
function GetPackets (line 261) | void GetPackets (void)
function NetUpdate (line 368) | void NetUpdate (void)
function CheckAbort (line 453) | void CheckAbort (void)
function D_ArbitrateNetStart (line 476) | void D_ArbitrateNetStart (void)
function D_CheckNetGame (line 555) | void D_CheckNetGame (void)
function D_QuitNetGame (line 602) | void D_QuitNetGame (void)
function TryRunTics (line 636) | void TryRunTics (void)
FILE: linuxdoom-1.10/d_net.h
type command_t (line 51) | typedef enum
type doomdata_t (line 62) | typedef struct
type doomcom_t (line 79) | typedef struct
FILE: linuxdoom-1.10/d_player.h
type playerstate_t (line 53) | typedef enum
type cheat_t (line 68) | typedef enum
type player_t (line 83) | typedef struct player_s
type wbplayerstruct_t (line 173) | typedef struct
type wbstartstruct_t (line 187) | typedef struct
FILE: linuxdoom-1.10/d_textur.h
type pic_t (line 36) | typedef struct
FILE: linuxdoom-1.10/d_think.h
type actionf_t (line 45) | typedef union
type actionf_t (line 60) | typedef actionf_t think_t;
type thinker_t (line 64) | typedef struct thinker_s
FILE: linuxdoom-1.10/d_ticcmd.h
type ticcmd_t (line 36) | typedef struct
FILE: linuxdoom-1.10/doomdata.h
type mapvertex_t (line 60) | typedef struct
type mapsidedef_t (line 69) | typedef struct
type maplinedef_t (line 84) | typedef struct
type mapsector_t (line 141) | typedef struct
type mapsubsector_t (line 153) | typedef struct
type mapseg_t (line 163) | typedef struct
type mapnode_t (line 180) | typedef struct
type mapthing_t (line 203) | typedef struct
FILE: linuxdoom-1.10/doomdef.h
type GameMode_t (line 38) | typedef enum
type GameMission_t (line 51) | typedef enum
type Language_t (line 63) | typedef enum
type gamestate_t (line 127) | typedef enum
type skill_t (line 147) | typedef enum
type card_t (line 162) | typedef enum
type weapontype_t (line 180) | typedef enum
type ammotype_t (line 201) | typedef enum
type powertype_t (line 214) | typedef enum
type powerduration_t (line 233) | typedef enum
FILE: linuxdoom-1.10/doomtype.h
type boolean (line 32) | typedef bool boolean;
type boolean (line 34) | typedef enum {false, true} boolean;
type byte (line 36) | typedef unsigned char byte;
FILE: linuxdoom-1.10/f_finale.c
function F_StartFinale (line 96) | void F_StartFinale (void)
function boolean (line 195) | boolean F_Responder (event_t *event)
function F_Ticker (line 207) | void F_Ticker (void)
function F_TextWrite (line 261) | void F_TextWrite (void)
type castinfo_t (line 334) | typedef struct
function F_StartCast (line 377) | void F_StartCast (void)
function F_CastTicker (line 395) | void F_CastTicker (void)
function boolean (line 502) | boolean F_CastResponder (event_t* ev)
function F_CastPrint (line 523) | void F_CastPrint (char* text)
function F_CastDrawer (line 579) | void F_CastDrawer (void)
function F_DrawPatchCol (line 609) | void
function F_BunnyScroll (line 644) | void F_BunnyScroll (void)
function F_Drawer (line 700) | void F_Drawer (void)
FILE: linuxdoom-1.10/f_wipe.c
function wipe_shittyColMajorXform (line 50) | void
function wipe_initColorXForm (line 72) | int
function wipe_doColorXForm (line 82) | int
function wipe_exitColorXForm (line 128) | int
function wipe_initMelt (line 140) | int
function wipe_doMelt (line 171) | int
function wipe_exitMelt (line 226) | int
function wipe_StartScreen (line 236) | int
function wipe_EndScreen (line 248) | int
function wipe_ScreenWipe (line 261) | int
FILE: linuxdoom-1.10/g_game.c
function G_CmdChecksum (line 219) | int G_CmdChecksum (ticcmd_t* cmd)
function G_BuildTiccmd (line 237) | void G_BuildTiccmd (ticcmd_t* cmd)
function G_DoLoadLevel (line 445) | void G_DoLoadLevel (void)
function boolean (line 504) | boolean G_Responder (event_t* ev)
function G_Ticker (line 605) | void G_Ticker (void)
function G_InitPlayer (line 761) | void G_InitPlayer (int player)
function G_PlayerFinishLevel (line 779) | void G_PlayerFinishLevel (int player)
function G_PlayerReborn (line 800) | void G_PlayerReborn (int player)
function boolean (line 843) | boolean
function G_DeathMatchSpawnPlayer (line 897) | void G_DeathMatchSpawnPlayer (int playernum)
function G_DoReborn (line 924) | void G_DoReborn (int playernum)
function G_ScreenShot (line 970) | void G_ScreenShot (void)
function G_ExitLevel (line 1002) | void G_ExitLevel (void)
function G_SecretExitLevel (line 1009) | void G_SecretExitLevel (void)
function G_DoCompleted (line 1020) | void G_DoCompleted (void)
function G_WorldDone (line 1147) | void G_WorldDone (void)
function G_DoWorldDone (line 1172) | void G_DoWorldDone (void)
function G_LoadGame (line 1192) | void G_LoadGame (char* name)
function G_DoLoadGame (line 1201) | void G_DoLoadGame (void)
function G_SaveGame (line 1260) | void
function G_DoSaveGame (line 1270) | void G_DoSaveGame (void)
function G_DeferedInitNew (line 1332) | void
function G_DoNewGame (line 1345) | void G_DoNewGame (void)
function G_InitNew (line 1364) | void
function G_ReadDemoTiccmd (line 1491) | void G_ReadDemoTiccmd (ticcmd_t* cmd)
function G_WriteDemoTiccmd (line 1506) | void G_WriteDemoTiccmd (ticcmd_t* cmd)
function G_RecordDemo (line 1530) | void G_RecordDemo (char* name)
function G_BeginRecording (line 1549) | void G_BeginRecording (void)
function G_DeferedPlayDemo (line 1576) | void G_DeferedPlayDemo (char* name)
function G_DoPlayDemo (line 1582) | void G_DoPlayDemo (void)
function G_TimeDemo (line 1625) | void G_TimeDemo (char* name)
function boolean (line 1647) | boolean G_CheckDemoStatus (void)
FILE: linuxdoom-1.10/hu_lib.c
function HUlib_init (line 42) | void HUlib_init(void)
function HUlib_clearTextLine (line 46) | void HUlib_clearTextLine(hu_textline_t* t)
function HUlib_initTextLine (line 53) | void
function boolean (line 68) | boolean
function boolean (line 86) | boolean HUlib_delCharFromTextLine(hu_textline_t* t)
function HUlib_drawTextLine (line 99) | void
function HUlib_eraseTextLine (line 143) | void HUlib_eraseTextLine(hu_textline_t* l)
function HUlib_initSText (line 176) | void
function HUlib_addLineToSText (line 200) | void HUlib_addLineToSText(hu_stext_t* s)
function HUlib_addMessageToSText (line 216) | void
function HUlib_drawSText (line 231) | void HUlib_drawSText(hu_stext_t* s)
function HUlib_eraseSText (line 254) | void HUlib_eraseSText(hu_stext_t* s)
function HUlib_initIText (line 269) | void
function HUlib_delCharFromIText (line 286) | void HUlib_delCharFromIText(hu_itext_t* it)
function HUlib_eraseLineFromIText (line 292) | void HUlib_eraseLineFromIText(hu_itext_t* it)
function HUlib_resetIText (line 299) | void HUlib_resetIText(hu_itext_t* it)
function HUlib_addPrefixToIText (line 305) | void
function boolean (line 317) | boolean
function HUlib_drawIText (line 336) | void HUlib_drawIText(hu_itext_t* it)
function HUlib_eraseIText (line 347) | void HUlib_eraseIText(hu_itext_t* it)
FILE: linuxdoom-1.10/hu_lib.h
type hu_textline_t (line 45) | typedef struct
type hu_stext_t (line 65) | typedef struct
type hu_itext_t (line 81) | typedef struct
FILE: linuxdoom-1.10/hu_stuff.c
function ForeignTranslation (line 387) | char ForeignTranslation(unsigned char ch)
function HU_Init (line 392) | void HU_Init(void)
function HU_Stop (line 414) | void HU_Stop(void)
function HU_Start (line 419) | void HU_Start(void)
function HU_Drawer (line 486) | void HU_Drawer(void)
function HU_Erase (line 496) | void HU_Erase(void)
function HU_Ticker (line 505) | void HU_Ticker(void)
function HU_queueChatChar (line 587) | void HU_queueChatChar(char c)
function HU_dequeueChatChar (line 600) | char HU_dequeueChatChar(void)
function boolean (line 617) | boolean HU_Responder(event_t *ev)
FILE: linuxdoom-1.10/i_main.c
function main (line 34) | int
FILE: linuxdoom-1.10/i_net.c
type sockaddr_in (line 81) | struct sockaddr_in
function UDPsocket (line 90) | int UDPsocket (void)
function BindToLocalPort (line 105) | void
function PacketSend (line 127) | void PacketSend (void)
function PacketGet (line 161) | void PacketGet (void)
function GetLocalAddress (line 222) | int GetLocalAddress (void)
function I_InitNetwork (line 244) | void I_InitNetwork (void)
function I_NetCmd (line 335) | void I_NetCmd (void)
FILE: linuxdoom-1.10/i_sound.c
function myioctl (line 159) | void
function addsfx (line 264) | int
function I_SetChannels (line 396) | void I_SetChannels()
function I_SetSfxVolume (line 427) | void I_SetSfxVolume(int volume)
function I_SetMusicVolume (line 438) | void I_SetMusicVolume(int volume)
function I_GetSfxLumpNum (line 451) | int I_GetSfxLumpNum(sfxinfo_t* sfx)
function I_StartSound (line 470) | int
function I_StopSound (line 505) | void I_StopSound (int handle)
function I_SoundIsPlaying (line 517) | int I_SoundIsPlaying(int handle)
function I_UpdateSound (line 539) | void I_UpdateSound( void )
function I_SubmitSound (line 665) | void
function I_UpdateSoundParams (line 674) | void
function I_ShutdownSound (line 693) | void I_ShutdownSound(void)
function I_InitSound (line 737) | void
function I_InitMusic (line 835) | void I_InitMusic(void) { }
function I_ShutdownMusic (line 836) | void I_ShutdownMusic(void) { }
function I_PlaySong (line 841) | void I_PlaySong(int handle, int looping)
function I_PauseSong (line 848) | void I_PauseSong (int handle)
function I_ResumeSong (line 854) | void I_ResumeSong (int handle)
function I_StopSong (line 860) | void I_StopSong(int handle)
function I_UnRegisterSong (line 869) | void I_UnRegisterSong(int handle)
function I_RegisterSong (line 875) | int I_RegisterSong(void* data)
function I_QrySongPlaying (line 884) | int I_QrySongPlaying(int handle)
type sigset_t (line 902) | typedef sigset_t tSigSet;
type tSigSet (line 904) | typedef int tSigSet;
function I_HandleSoundTimer (line 917) | void I_HandleSoundTimer( int ignore )
function I_SoundSetTimer (line 941) | int I_SoundSetTimer( int duration_of_tick )
function I_SoundDelTimer (line 980) | void I_SoundDelTimer()
FILE: linuxdoom-1.10/i_system.c
function I_Tactile (line 54) | void
function ticcmd_t (line 65) | ticcmd_t* I_BaseTiccmd(void)
function I_GetHeapSize (line 71) | int I_GetHeapSize (void)
function byte (line 76) | byte* I_ZoneBase (int* size)
function I_GetTime (line 88) | int I_GetTime (void)
function I_Init (line 107) | void I_Init (void)
function I_Quit (line 116) | void I_Quit (void)
function I_WaitVBL (line 126) | void I_WaitVBL(int count)
function I_BeginRead (line 139) | void I_BeginRead(void)
function I_EndRead (line 143) | void I_EndRead(void)
function byte (line 147) | byte* I_AllocLow(int length)
function I_Error (line 162) | void I_Error (char *error, ...)
FILE: linuxdoom-1.10/i_video.c
function xlatekey (line 97) | int xlatekey(void)
function I_ShutdownGraphics (line 164) | void I_ShutdownGraphics(void)
function I_StartFrame (line 183) | void I_StartFrame (void)
function I_GetEvent (line 194) | void I_GetEvent(void)
function Cursor (line 281) | Cursor
function I_StartTic (line 309) | void I_StartTic (void)
function I_UpdateNoBlit (line 344) | void I_UpdateNoBlit (void)
function I_FinishUpdate (line 352) | void I_FinishUpdate (void)
function I_ReadScreen (line 527) | void I_ReadScreen (byte* scr)
function UploadNewPalette (line 538) | void UploadNewPalette(Colormap cmap, byte *palette)
function I_SetPalette (line 582) | void I_SetPalette (byte* palette)
function grabsharedmemory (line 595) | void grabsharedmemory(int size)
function I_InitGraphics (line 692) | void I_InitGraphics(void)
function InitExpand (line 920) | void InitExpand (void)
function InitExpand2 (line 930) | void InitExpand2 (void)
function Expand4 (line 958) | void
FILE: linuxdoom-1.10/info.h
type spritenum_t (line 30) | typedef enum
type statenum_t (line 174) | typedef enum
type state_t (line 1147) | typedef struct
type mobjtype_t (line 1163) | typedef enum {
type mobjinfo_t (line 1305) | typedef struct
FILE: linuxdoom-1.10/m_argv.c
function M_CheckParm (line 41) | int M_CheckParm (char *check)
FILE: linuxdoom-1.10/m_bbox.c
function M_ClearBox (line 39) | void M_ClearBox (fixed_t *box)
function M_AddToBox (line 45) | void
FILE: linuxdoom-1.10/m_cheat.c
function cht_CheckCheat (line 42) | int
function cht_GetParam (line 77) | void
FILE: linuxdoom-1.10/m_cheat.h
type cheatseq_t (line 34) | typedef struct
FILE: linuxdoom-1.10/m_fixed.c
function fixed_t (line 43) | fixed_t
function fixed_t (line 57) | fixed_t
function fixed_t (line 69) | fixed_t
FILE: linuxdoom-1.10/m_fixed.h
type fixed_t (line 38) | typedef int fixed_t;
FILE: linuxdoom-1.10/m_menu.c
type menuitem_t (line 140) | typedef struct
type menu_t (line 158) | typedef struct menu_s
function M_ReadSaveStrings (line 511) | void M_ReadSaveStrings(void)
function M_DrawLoad (line 542) | void M_DrawLoad(void)
function M_DrawSaveLoadBorder (line 559) | void M_DrawSaveLoadBorder(int x,int y)
function M_LoadSelect (line 579) | void M_LoadSelect(int choice)
function M_LoadGame (line 594) | void M_LoadGame (int choice)
function M_DrawSave (line 610) | void M_DrawSave(void)
function M_DoSave (line 631) | void M_DoSave(int slot)
function M_SaveSelect (line 644) | void M_SaveSelect(int choice)
function M_SaveGame (line 659) | void M_SaveGame (int choice)
function M_QuickSaveResponse (line 681) | void M_QuickSaveResponse(int ch)
function M_QuickSave (line 690) | void M_QuickSave(void)
function M_QuickLoadResponse (line 718) | void M_QuickLoadResponse(int ch)
function M_QuickLoad (line 728) | void M_QuickLoad(void)
function M_DrawReadThis1 (line 752) | void M_DrawReadThis1(void)
function M_DrawReadThis2 (line 776) | void M_DrawReadThis2(void)
function M_DrawSound (line 800) | void M_DrawSound(void)
function M_Sound (line 811) | void M_Sound(int choice)
function M_SfxVol (line 816) | void M_SfxVol(int choice)
function M_MusicVol (line 833) | void M_MusicVol(int choice)
function M_DrawMainMenu (line 856) | void M_DrawMainMenu(void)
function M_DrawNewGame (line 867) | void M_DrawNewGame(void)
function M_NewGame (line 873) | void M_NewGame(int choice)
function M_DrawEpisode (line 893) | void M_DrawEpisode(void)
function M_VerifyNightmare (line 898) | void M_VerifyNightmare(int ch)
function M_ChooseSkill (line 907) | void M_ChooseSkill(int choice)
function M_Episode (line 919) | void M_Episode(int choice)
function M_DrawOptions (line 951) | void M_DrawOptions(void)
function M_Options (line 968) | void M_Options(int choice)
function M_ChangeMessages (line 978) | void M_ChangeMessages(int choice)
function M_EndGameResponse (line 996) | void M_EndGameResponse(int ch)
function M_EndGame (line 1006) | void M_EndGame(int choice)
function M_ReadThis (line 1030) | void M_ReadThis(int choice)
function M_ReadThis2 (line 1036) | void M_ReadThis2(int choice)
function M_FinishReadThis (line 1042) | void M_FinishReadThis(int choice)
function M_QuitResponse (line 1080) | void M_QuitResponse(int ch)
function M_QuitDOOM (line 1098) | void M_QuitDOOM(int choice)
function M_ChangeSensitivity (line 1113) | void M_ChangeSensitivity(int choice)
function M_ChangeDetail (line 1131) | void M_ChangeDetail(int choice)
function M_SizeDisplay (line 1152) | void M_SizeDisplay(int choice)
function M_DrawThermo (line 1182) | void
function M_DrawEmptyCell (line 1208) | void
function M_DrawSelCell (line 1217) | void
function M_StartMessage (line 1227) | void
function M_StopMessage (line 1244) | void M_StopMessage(void)
function M_StringWidth (line 1255) | int M_StringWidth(char* string)
function M_StringHeight (line 1278) | int M_StringHeight(char* string)
function M_WriteText (line 1296) | void
function boolean (line 1349) | boolean M_Responder (event_t* ev)
function M_StartControlPanel (line 1723) | void M_StartControlPanel (void)
function M_Drawer (line 1740) | void M_Drawer (void)
function M_ClearMenus (line 1811) | void M_ClearMenus (void)
function M_SetupNextMenu (line 1824) | void M_SetupNextMenu(menu_t *menudef)
function M_Ticker (line 1834) | void M_Ticker (void)
function M_Init (line 1847) | void M_Init (void)
FILE: linuxdoom-1.10/m_misc.c
function M_DrawText (line 69) | int
function boolean (line 112) | boolean
function M_ReadFile (line 139) | int
type default_t (line 225) | typedef struct
function M_SaveDefaults (line 308) | void M_SaveDefaults (void)
function M_LoadDefaults (line 340) | void M_LoadDefaults (void)
type pcx_t (line 411) | typedef struct
function WritePCXfile (line 441) | void
function M_ScreenShot (line 503) | void M_ScreenShot (void)
FILE: linuxdoom-1.10/m_random.c
function P_Random (line 57) | int P_Random (void)
function M_Random (line 63) | int M_Random (void)
function M_ClearRandom (line 69) | void M_ClearRandom (void)
FILE: linuxdoom-1.10/m_swap.c
function SwapSHORT (line 38) | unsigned short SwapSHORT(unsigned short x)
function SwapLONG (line 45) | unsigned long SwapLONG( unsigned long x)
FILE: linuxdoom-1.10/p_ceilng.c
function T_MoveCeiling (line 52) | void T_MoveCeiling (ceiling_t* ceiling)
function EV_DoCeiling (line 171) | int
function P_AddActiveCeiling (line 251) | void P_AddActiveCeiling(ceiling_t* c)
function P_RemoveActiveCeiling (line 270) | void P_RemoveActiveCeiling(ceiling_t* c)
function P_ActivateInStasisCeiling (line 291) | void P_ActivateInStasisCeiling(line_t* line)
function EV_CeilingCrushStop (line 314) | int EV_CeilingCrushStop(line_t *line)
FILE: linuxdoom-1.10/p_doors.c
function T_VerticalDoor (line 63) | void T_VerticalDoor (vldoor_t* door)
function EV_DoLockedDoor (line 206) | int
function EV_DoDoor (line 263) | int
function EV_VerticalDoor (line 353) | void
function P_SpawnDoorCloseIn30 (line 505) | void P_SpawnDoorCloseIn30 (sector_t* sec)
function P_SpawnDoorRaiseIn5Mins (line 527) | void
function P_InitSlidingDoorFrames (line 566) | void P_InitSlidingDoorFrames(void)
function P_FindSlidingDoorType (line 610) | int P_FindSlidingDoorType(line_t* line)
function T_SlidingDoor (line 625) | void T_SlidingDoor (slidedoor_t* door)
function EV_SlidingDoor (line 712) | void
FILE: linuxdoom-1.10/p_enemy.c
type dirtype_t (line 51) | typedef enum
function P_RecursiveSound (line 105) | void
function P_NoiseAlert (line 158) | void
function boolean (line 174) | boolean P_CheckMeleeRange (mobj_t* actor)
function boolean (line 197) | boolean P_CheckMissileRange (mobj_t* actor)
function boolean (line 272) | boolean P_Move (mobj_t* actor)
function boolean (line 349) | boolean P_TryWalk (mobj_t* actor)
function P_NewChaseDir (line 363) | void P_NewChaseDir (mobj_t* actor)
function boolean (line 498) | boolean
function A_KeenDie (line 566) | void A_KeenDie (mobj_t* mo)
function A_Look (line 604) | void A_Look (mobj_t* actor)
function A_Chase (line 672) | void A_Chase (mobj_t* actor)
function A_FaceTarget (line 782) | void A_FaceTarget (mobj_t* actor)
function A_PosAttack (line 802) | void A_PosAttack (mobj_t* actor)
function A_SPosAttack (line 821) | void A_SPosAttack (mobj_t* actor)
function A_CPosAttack (line 845) | void A_CPosAttack (mobj_t* actor)
function A_CPosRefire (line 865) | void A_CPosRefire (mobj_t* actor)
function A_SpidRefire (line 882) | void A_SpidRefire (mobj_t* actor)
function A_BspiAttack (line 898) | void A_BspiAttack (mobj_t *actor)
function A_TroopAttack (line 913) | void A_TroopAttack (mobj_t* actor)
function A_SargAttack (line 935) | void A_SargAttack (mobj_t* actor)
function A_HeadAttack (line 950) | void A_HeadAttack (mobj_t* actor)
function A_CyberAttack (line 969) | void A_CyberAttack (mobj_t* actor)
function A_BruisAttack (line 979) | void A_BruisAttack (mobj_t* actor)
function A_SkelMissile (line 1002) | void A_SkelMissile (mobj_t* actor)
function A_Tracer (line 1021) | void A_Tracer (mobj_t* actor)
function A_SkelWhoosh (line 1093) | void A_SkelWhoosh (mobj_t* actor)
function A_SkelFist (line 1101) | void A_SkelFist (mobj_t* actor)
function boolean (line 1129) | boolean PIT_VileCheck (mobj_t* thing)
function A_VileChase (line 1167) | void A_VileChase (mobj_t* actor)
function A_VileStart (line 1233) | void A_VileStart (mobj_t* actor)
function A_StartFire (line 1245) | void A_StartFire (mobj_t* actor)
function A_FireCrackle (line 1251) | void A_FireCrackle (mobj_t* actor)
function A_Fire (line 1257) | void A_Fire (mobj_t* actor)
function A_VileTarget (line 1285) | void A_VileTarget (mobj_t* actor)
function A_VileAttack (line 1310) | void A_VileAttack (mobj_t* actor)
function A_FatRaise (line 1351) | void A_FatRaise (mobj_t *actor)
function A_FatAttack1 (line 1358) | void A_FatAttack1 (mobj_t* actor)
function A_FatAttack2 (line 1375) | void A_FatAttack2 (mobj_t* actor)
function A_FatAttack3 (line 1392) | void A_FatAttack3 (mobj_t* actor)
function A_SkullAttack (line 1419) | void A_SkullAttack (mobj_t* actor)
function A_PainShootSkull (line 1449) | void
function A_PainAttack (line 1512) | void A_PainAttack (mobj_t* actor)
function A_PainDie (line 1522) | void A_PainDie (mobj_t* actor)
function A_Scream (line 1535) | void A_Scream (mobj_t* actor)
function A_XScream (line 1572) | void A_XScream (mobj_t* actor)
function A_Pain (line 1577) | void A_Pain (mobj_t* actor)
function A_Fall (line 1585) | void A_Fall (mobj_t *actor)
function A_Explode (line 1598) | void A_Explode (mobj_t* thingy)
function A_BossDeath (line 1609) | void A_BossDeath (mobj_t* mo)
function A_Hoof (line 1759) | void A_Hoof (mobj_t* mo)
function A_Metal (line 1765) | void A_Metal (mobj_t* mo)
function A_BabyMetal (line 1771) | void A_BabyMetal (mobj_t* mo)
function A_OpenShotgun2 (line 1777) | void
function A_LoadShotgun2 (line 1785) | void
function A_CloseShotgun2 (line 1798) | void
function A_BrainAwake (line 1813) | void A_BrainAwake (mobj_t* mo)
function A_BrainPain (line 1843) | void A_BrainPain (mobj_t* mo)
function A_BrainScream (line 1849) | void A_BrainScream (mobj_t* mo)
function A_BrainExplode (line 1875) | void A_BrainExplode (mobj_t* mo)
function A_BrainDie (line 1896) | void A_BrainDie (mobj_t* mo)
function A_BrainSpit (line 1901) | void A_BrainSpit (mobj_t* mo)
function A_SpawnSound (line 1930) | void A_SpawnSound (mobj_t* mo)
function A_SpawnFly (line 1936) | void A_SpawnFly (mobj_t* mo)
function A_PlayerScream (line 1994) | void A_PlayerScream (mobj_t* mo)
FILE: linuxdoom-1.10/p_floor.c
function result_e (line 48) | result_e
function T_MoveFloor (line 209) | void T_MoveFloor(floormove_t* floor)
function EV_DoFloor (line 259) | int
function EV_BuildStairs (line 452) | int
FILE: linuxdoom-1.10/p_inter.c
function boolean (line 73) | boolean
function boolean (line 167) | boolean
function boolean (line 228) | boolean
function boolean (line 251) | boolean
function P_GiveCard (line 273) | void
function boolean (line 289) | boolean
function P_TouchSpecialThing (line 338) | void
function P_KillMobj (line 667) | void
function P_DamageMobj (line 774) | void
FILE: linuxdoom-1.10/p_lights.c
function T_FireFlicker (line 46) | void T_FireFlicker (fireflicker_t* flick)
function P_SpawnFireFlicker (line 68) | void P_SpawnFireFlicker (sector_t* sector)
function T_LightFlash (line 98) | void T_LightFlash (lightflash_t* flash)
function P_SpawnLightFlash (line 124) | void P_SpawnLightFlash (sector_t* sector)
function T_StrobeFlash (line 155) | void T_StrobeFlash (strobe_t* flash)
function P_SpawnStrobeFlash (line 180) | void
function EV_StartLightStrobing (line 215) | void EV_StartLightStrobing(line_t* line)
function EV_TurnTagLightsOff (line 236) | void EV_TurnTagLightsOff(line_t* line)
function EV_LightTurnOn (line 270) | void
function T_Glow (line 314) | void T_Glow(glow_t* g)
function P_SpawnGlowingLight (line 341) | void P_SpawnGlowingLight(sector_t* sector)
FILE: linuxdoom-1.10/p_local.h
type divline_t (line 135) | typedef struct
type intercept_t (line 144) | typedef struct
type boolean (line 159) | typedef boolean (*traverser_t) (intercept_t *in);
FILE: linuxdoom-1.10/p_map.c
function boolean (line 81) | boolean PIT_StompThing (mobj_t* thing)
function boolean (line 114) | boolean
function boolean (line 189) | boolean PIT_CheckLine (line_t* ld)
function boolean (line 252) | boolean PIT_CheckThing (mobj_t* thing)
function boolean (line 374) | boolean
function boolean (line 450) | boolean
function boolean (line 530) | boolean P_ThingHeightClip (mobj_t* thing)
function P_HitSlideLine (line 584) | void P_HitSlideLine (line_t* ld)
function boolean (line 636) | boolean PTR_SlideTraverse (intercept_t* in)
function P_SlideMove (line 695) | void P_SlideMove (mobj_t* mo)
function boolean (line 815) | boolean
function boolean (line 899) | boolean PTR_ShootTraverse (intercept_t* in)
function fixed_t (line 1022) | fixed_t
function P_LineAttack (line 1062) | void
function boolean (line 1095) | boolean PTR_UseTraverse (intercept_t* in)
function P_UseLines (line 1130) | void P_UseLines (player_t* player)
function boolean (line 1164) | boolean PIT_RadiusAttack (mobj_t* thing)
function P_RadiusAttack (line 1205) | void
function boolean (line 1257) | boolean PIT_ChangeSector (mobj_t* thing)
function boolean (line 1320) | boolean
FILE: linuxdoom-1.10/p_maputl.c
function fixed_t (line 48) | fixed_t
function P_PointOnLineSide (line 65) | int
function P_BoxOnLineSide (line 109) | int
function P_PointOnDivlineSide (line 160) | int
function P_MakeDivline (line 210) | void
function fixed_t (line 230) | fixed_t
function P_LineOpening (line 300) | void P_LineOpening (line_t* linedef)
function P_UnsetThingPosition (line 347) | void P_UnsetThingPosition (mobj_t* thing)
function P_SetThingPosition (line 395) | void
function boolean (line 471) | boolean
function boolean (line 512) | boolean
function boolean (line 561) | boolean
function boolean (line 616) | boolean PIT_AddThingIntercepts (mobj_t* thing)
function boolean (line 682) | boolean
function boolean (line 742) | boolean
FILE: linuxdoom-1.10/p_mobj.c
function boolean (line 53) | boolean
function P_ExplodeMissile (line 90) | void P_ExplodeMissile (mobj_t* mo)
function P_XYMovement (line 114) | void P_XYMovement (mobj_t* mo)
function P_ZMovement (line 246) | void P_ZMovement (mobj_t* mo)
function P_NightmareRespawn (line 356) | void
function P_MobjThinker (line 415) | void P_MobjThinker (mobj_t* mobj)
function mobj_t (line 479) | mobj_t*
function P_RemoveMobj (line 546) | void P_RemoveMobj (mobj_t* mobj)
function P_RespawnSpecials (line 578) | void P_RespawnSpecials (void)
function P_SpawnPlayer (line 642) | void P_SpawnPlayer (mapthing_t* mthing)
function P_SpawnMapThing (line 708) | void P_SpawnMapThing (mapthing_t* mthing)
function P_SpawnPuff (line 811) | void
function P_SpawnBlood (line 838) | void
function P_CheckMissileSpawn (line 868) | void P_CheckMissileSpawn (mobj_t* th)
function mobj_t (line 888) | mobj_t*
function P_SpawnPlayerMissile (line 934) | void
FILE: linuxdoom-1.10/p_mobj.h
type mobjflag_t (line 117) | typedef enum
type mobj_t (line 207) | typedef struct mobj_s
FILE: linuxdoom-1.10/p_plats.c
function T_PlatRaise (line 52) | void T_PlatRaise(plat_t* plat)
function EV_DoPlat (line 138) | int
function P_ActivateInStasis (line 258) | void P_ActivateInStasis(int tag)
function EV_StopPlat (line 273) | void EV_StopPlat(line_t* line)
function P_AddActivePlat (line 288) | void P_AddActivePlat(plat_t* plat)
function P_RemoveActivePlat (line 301) | void P_RemoveActivePlat(plat_t* plat)
FILE: linuxdoom-1.10/p_pspr.c
function P_SetPsprite (line 58) | void
function P_CalcSwing (line 112) | void P_CalcSwing (player_t* player)
function P_BringUpWeapon (line 138) | void P_BringUpWeapon (player_t* player)
function boolean (line 161) | boolean P_CheckAmmo (player_t* player)
function P_FireWeapon (line 246) | void P_FireWeapon (player_t* player)
function P_DropWeapon (line 265) | void P_DropWeapon (player_t* player)
function A_WeaponReady (line 281) | void
function A_ReFire (line 343) | void A_ReFire
function A_CheckReload (line 365) | void
function A_Lower (line 384) | void
function A_Raise (line 422) | void
function A_GunFlash (line 448) | void
function A_Punch (line 467) | void
function A_Saw (line 501) | void
function A_FireMissile (line 550) | void
function A_FireBFG (line 563) | void
function A_FirePlasma (line 577) | void
function P_BulletSlope (line 601) | void P_BulletSlope (mobj_t* mo)
function P_GunShot (line 625) | void
function A_FirePistol (line 646) | void
function A_FireShotgun (line 668) | void
function A_FireShotgun2 (line 695) | void
function A_FireCGun (line 732) | void
function A_Light0 (line 761) | void A_Light0 (player_t *player, pspdef_t *psp)
function A_Light1 (line 766) | void A_Light1 (player_t *player, pspdef_t *psp)
function A_Light2 (line 771) | void A_Light2 (player_t *player, pspdef_t *psp)
function A_BFGSpray (line 781) | void A_BFGSpray (mobj_t* mo)
function A_BFGsound (line 817) | void
function P_SetupPsprites (line 831) | void P_SetupPsprites (player_t* player)
function P_MovePsprites (line 851) | void P_MovePsprites (player_t* player)
FILE: linuxdoom-1.10/p_pspr.h
type psprnum_t (line 60) | typedef enum
type pspdef_t (line 68) | typedef struct
FILE: linuxdoom-1.10/p_saveg.c
function P_ArchivePlayers (line 47) | void P_ArchivePlayers (void)
function P_UnArchivePlayers (line 79) | void P_UnArchivePlayers (void)
function P_ArchiveWorld (line 114) | void P_ArchiveWorld (void)
function P_UnArchiveWorld (line 167) | void P_UnArchiveWorld (void)
type thinkerclass_t (line 220) | typedef enum
function P_ArchiveThinkers (line 232) | void P_ArchiveThinkers (void)
function P_UnArchiveThinkers (line 266) | void P_UnArchiveThinkers (void)
function P_ArchiveSpecials (line 355) | void P_ArchiveSpecials (void)
function P_UnArchiveSpecials (line 475) | void P_UnArchiveSpecials (void)
FILE: linuxdoom-1.10/p_setup.c
function P_LoadVertexes (line 122) | void P_LoadVertexes (int lump)
function P_LoadSegs (line 159) | void P_LoadSegs (int lump)
function P_LoadSubsectors (line 202) | void P_LoadSubsectors (int lump)
function P_LoadSectors (line 231) | void P_LoadSectors (int lump)
function P_LoadNodes (line 264) | void P_LoadNodes (int lump)
function P_LoadThings (line 301) | void P_LoadThings (int lump)
function P_LoadLineDefs (line 357) | void P_LoadLineDefs (int lump)
function P_LoadSideDefs (line 438) | void P_LoadSideDefs (int lump)
function P_LoadBlockMap (line 469) | void P_LoadBlockMap (int lump)
function P_GroupLines (line 499) | void P_GroupLines (void)
function P_SetupLevel (line 583) | void
function P_Init (line 700) | void P_Init (void)
FILE: linuxdoom-1.10/p_sight.c
function P_DivlineSide (line 54) | int
function fixed_t (line 108) | fixed_t
function boolean (line 135) | boolean P_CrossSubsector (int num)
function boolean (line 257) | boolean P_CrossBSPNode (int bspnum)
function boolean (line 299) | boolean
FILE: linuxdoom-1.10/p_spec.c
type anim_t (line 60) | typedef struct
type animdef_t (line 73) | typedef struct
function P_InitPicAnims (line 148) | void P_InitPicAnims (void)
function side_t (line 203) | side_t*
function sector_t (line 219) | sector_t*
function twoSided (line 234) | int
function sector_t (line 250) | sector_t*
function fixed_t (line 270) | fixed_t P_FindLowestFloorSurrounding(sector_t* sec)
function fixed_t (line 297) | fixed_t P_FindHighestFloorSurrounding(sector_t *sec)
function fixed_t (line 328) | fixed_t
function fixed_t (line 381) | fixed_t
function fixed_t (line 407) | fixed_t P_FindHighestCeilingSurrounding(sector_t* sec)
function P_FindSectorFromLineTag (line 433) | int
function P_FindMinSurroundingLight (line 453) | int
function P_CrossSpecialLine (line 491) | void
function P_ShootSpecialLine (line 958) | void
function P_PlayerInSpecialSector (line 1009) | void P_PlayerInSpecialSector (player_t* player)
function P_UpdateSpecials (line 1083) | void P_UpdateSpecials (void)
function EV_DoDonut (line 1163) | int EV_DoDonut(line_t* line)
function P_SpawnSpecials (line 1239) | void P_SpawnSpecials (void)
FILE: linuxdoom-1.10/p_spec.h
type fireflicker_t (line 124) | typedef struct
type lightflash_t (line 136) | typedef struct
type strobe_t (line 150) | typedef struct
type glow_t (line 165) | typedef struct
type switchlist_t (line 209) | typedef struct
type bwhere_e (line 218) | typedef enum
type button_t (line 227) | typedef struct
type plat_e (line 262) | typedef enum
type plattype_e (line 273) | typedef enum
type plat_t (line 285) | typedef struct
type vldoor_e (line 328) | typedef enum
type vldoor_t (line 343) | typedef struct
type sd_e (line 397) | typedef enum
type sdt_e (line 407) | typedef enum
type slidedoor_t (line 418) | typedef struct
type slidename_t (line 434) | typedef struct
type slideframe_t (line 449) | typedef struct
type ceiling_e (line 480) | typedef enum
type ceiling_t (line 493) | typedef struct
type floor_e (line 537) | typedef enum
type stair_e (line 575) | typedef enum
type floormove_t (line 584) | typedef struct
type result_e (line 602) | typedef enum
FILE: linuxdoom-1.10/p_switch.c
function P_InitSwitchList (line 107) | void P_InitSwitchList(void)
function P_StartButton (line 154) | void
function P_ChangeSwitchTexture (line 200) | void
function boolean (line 275) | boolean
FILE: linuxdoom-1.10/p_telept.c
function EV_Teleport (line 47) | int
FILE: linuxdoom-1.10/p_tick.c
function P_InitThinkers (line 53) | void P_InitThinkers (void)
function P_AddThinker (line 65) | void P_AddThinker (thinker_t* thinker)
function P_RemoveThinker (line 80) | void P_RemoveThinker (thinker_t* thinker)
function P_AllocateThinker (line 92) | void P_AllocateThinker (thinker_t* thinker)
function P_RunThinkers (line 101) | void P_RunThinkers (void)
function P_Ticker (line 130) | void P_Ticker (void)
FILE: linuxdoom-1.10/p_user.c
function P_Thrust (line 58) | void
function P_CalcHeight (line 77) | void P_CalcHeight (player_t* player)
function P_MovePlayer (line 148) | void P_MovePlayer (player_t* player)
function P_DeathThink (line 182) | void P_DeathThink (player_t* player)
function P_PlayerThink (line 236) | void P_PlayerThink (player_t* player)
FILE: linuxdoom-1.10/r_bsp.c
function R_ClearDrawSegs (line 68) | void R_ClearDrawSegs (void)
type cliprange_t (line 80) | typedef struct
function R_ClipSolidWallSegment (line 103) | void
function R_ClipPassWallSegment (line 196) | void
function R_ClearClipSegs (line 245) | void R_ClearClipSegs (void)
function R_AddLine (line 259) | void R_AddLine (seg_t* line)
function boolean (line 381) | boolean R_CheckBBox (fixed_t* bspcoord)
function R_Subsector (line 497) | void R_Subsector (int num)
function R_RenderBSPNode (line 552) | void R_RenderBSPNode (int bspnum)
FILE: linuxdoom-1.10/r_data.c
type mappatch_t (line 69) | typedef struct
type maptexture_t (line 84) | typedef struct
type texpatch_t (line 99) | typedef struct
type texture_t (line 113) | typedef struct
function R_DrawColumnInCache (line 184) | void
function R_GenerateComposite (line 228) | void R_GenerateComposite (int texnum)
function R_GenerateLookup (line 296) | void R_GenerateLookup (int texnum)
function byte (line 382) | byte*
function R_InitTextures (line 411) | void R_InitTextures (void)
function R_InitFlats (line 581) | void R_InitFlats (void)
function R_InitSpriteLumps (line 603) | void R_InitSpriteLumps (void)
function R_InitColormaps (line 633) | void R_InitColormaps (void)
function R_InitData (line 654) | void R_InitData (void)
function R_FlatNumForName (line 672) | int R_FlatNumForName (char* name)
function R_CheckTextureNumForName (line 696) | int R_CheckTextureNumForName (char *name)
function R_TextureNumForName (line 718) | int R_TextureNumForName (char* name)
function R_PrecacheLevel (line 743) | void R_PrecacheLevel (void)
FILE: linuxdoom-1.10/r_defs.h
type vertex_t (line 71) | typedef struct
type line_s (line 80) | struct line_s
type degenmobj_t (line 88) | typedef struct
type sector_t (line 101) | typedef struct
type side_t (line 144) | typedef struct
type slopetype_t (line 168) | typedef enum
type line_t (line 179) | typedef struct line_s
type subsector_t (line 227) | typedef struct subsector_s
type seg_t (line 240) | typedef struct
type node_t (line 265) | typedef struct
type post_t (line 285) | typedef struct
type post_t (line 292) | typedef post_t column_t;
type byte (line 314) | typedef byte lighttable_t;
type drawseg_t (line 322) | typedef struct drawseg_s
type patch_t (line 356) | typedef struct
type vissprite_t (line 375) | typedef struct vissprite_s
type spriteframe_t (line 427) | typedef struct
type spritedef_t (line 448) | typedef struct
type visplane_t (line 460) | typedef struct
FILE: linuxdoom-1.10/r_draw.c
function R_DrawColumn (line 105) | void R_DrawColumn (void)
function R_DrawColumn (line 155) | void R_DrawColumn (void)
function R_DrawColumnLow (line 211) | void R_DrawColumnLow (void)
function R_DrawFuzzColumn (line 285) | void R_DrawFuzzColumn (void)
function R_DrawTranslatedColumn (line 385) | void R_DrawTranslatedColumn (void)
function R_InitTranslationTables (line 459) | void R_InitTranslationTables (void)
function R_DrawSpan (line 520) | void R_DrawSpan (void)
function R_DrawSpan (line 570) | void R_DrawSpan (void)
function R_DrawSpanLow (line 643) | void R_DrawSpanLow (void)
function R_InitBuffer (line 695) | void
function R_FillBackScreen (line 731) | void R_FillBackScreen (void)
function R_VideoErase (line 817) | void
function R_DrawViewBorder (line 843) | void R_DrawViewBorder (void)
FILE: linuxdoom-1.10/r_main.c
function R_AddPointToBox (line 138) | void
function R_PointOnSide (line 161) | int
function R_PointOnSegSide (line 214) | int
function angle_t (line 291) | angle_t
function angle_t (line 377) | angle_t
function fixed_t (line 391) | fixed_t
function R_InitPointToAngle (line 426) | void R_InitPointToAngle (void)
function fixed_t (line 453) | fixed_t R_ScaleFromGlobalAngle (angle_t visangle)
function R_InitTables (line 509) | void R_InitTables (void)
function R_InitTextureMapping (line 544) | void R_InitTextureMapping (void)
function R_InitLightTables (line 614) | void R_InitLightTables (void)
function R_SetViewSize (line 657) | void
function R_ExecuteSetViewSize (line 671) | void R_ExecuteSetViewSize (void)
function R_Init (line 773) | void R_Init (void)
function subsector_t (line 800) | subsector_t*
function R_SetupFrame (line 830) | void R_SetupFrame (player_t* player)
function R_RenderPlayerView (line 870) | void R_RenderPlayerView (player_t* player)
FILE: linuxdoom-1.10/r_plane.c
function R_InitPlanes (line 101) | void R_InitPlanes (void)
function R_MapPlane (line 120) | void
function R_ClearPlanes (line 185) | void R_ClearPlanes (void)
function visplane_t (line 217) | visplane_t*
function visplane_t (line 265) | visplane_t*
function R_MakeSpans (line 330) | void
function R_DrawPlanes (line 367) | void R_DrawPlanes (void)
FILE: linuxdoom-1.10/r_segs.c
function R_RenderMaskedSegRange (line 102) | void
function R_RenderSegLoop (line 206) | void R_RenderSegLoop (void)
function R_StoreWallRange (line 374) | void
FILE: linuxdoom-1.10/r_sky.c
function R_InitSkyMap (line 57) | void R_InitSkyMap (void)
FILE: linuxdoom-1.10/r_things.c
type maskdraw_t (line 54) | typedef struct
function R_InstallSpriteLump (line 105) | void
function R_InitSpriteDefs (line 177) | void R_InitSpriteDefs (char** namelist)
function R_InitSprites (line 299) | void R_InitSprites (char** namelist)
function R_ClearSprites (line 317) | void R_ClearSprites (void)
function vissprite_t (line 328) | vissprite_t* R_NewVisSprite (void)
function R_DrawMaskedColumn (line 351) | void R_DrawMaskedColumn (column_t* column)
function R_DrawVisSprite (line 396) | void
function R_ProjectSprite (line 452) | void R_ProjectSprite (mobj_t* thing)
function R_AddSprites (line 613) | void R_AddSprites (sector_t* sec)
function R_DrawPSprite (line 646) | void R_DrawPSprite (pspdef_t* psp)
function R_DrawPlayerSprites (line 746) | void R_DrawPlayerSprites (void)
function R_SortVisSprites (line 787) | void R_SortVisSprites (void)
function R_DrawSprite (line 842) | void R_DrawSprite (vissprite_t* spr)
function R_DrawMasked (line 958) | void R_DrawMasked (void)
FILE: linuxdoom-1.10/s_sound.c
type channel_t (line 93) | typedef struct
function S_Init (line 161) | void S_Init
function S_Start (line 202) | void S_Start(void)
function S_StartSoundAtVolume (line 254) | void
function S_StartSound (line 397) | void
function S_StopSound (line 471) | void S_StopSound(void *origin)
function S_PauseSound (line 497) | void S_PauseSound(void)
function S_ResumeSound (line 506) | void S_ResumeSound(void)
function S_UpdateSounds (line 519) | void S_UpdateSounds(void* listener_p)
function S_SetMusicVolume (line 616) | void S_SetMusicVolume(int volume)
function S_SetSfxVolume (line 631) | void S_SetSfxVolume(int volume)
function S_StartMusic (line 644) | void S_StartMusic(int m_id)
function S_ChangeMusic (line 649) | void
function S_StopMusic (line 689) | void S_StopMusic(void)
function S_StopChannel (line 708) | void S_StopChannel(int cnum)
function S_AdjustSoundParams (line 752) | int
function S_getChannel (line 827) | int
FILE: linuxdoom-1.10/sounds.h
type sfxinfo_t (line 30) | typedef struct sfxinfo_struct sfxinfo_t;
type sfxinfo_struct (line 32) | struct sfxinfo_struct
type musicinfo_t (line 70) | typedef struct
type musicenum_t (line 99) | typedef enum
type sfxenum_t (line 177) | typedef enum
FILE: linuxdoom-1.10/st_lib.c
function STlib_init (line 58) | void STlib_init(void)
function STlib_initNum (line 65) | void
function STlib_drawNum (line 90) | void
function STlib_updateNum (line 152) | void
function STlib_initPercent (line 162) | void
function STlib_updatePercent (line 179) | void
function STlib_initMultIcon (line 192) | void
function STlib_updateMultIcon (line 211) | void
function STlib_initBinIcon (line 244) | void
function STlib_updateBinIcon (line 263) | void
FILE: linuxdoom-1.10/st_lib.h
type st_number_t (line 44) | typedef struct
type st_percent_t (line 76) | typedef struct
type st_multicon_t (line 89) | typedef struct
type st_binicon_t (line 118) | typedef struct
FILE: linuxdoom-1.10/st_stuff.c
function ST_refreshBackground (line 499) | void ST_refreshBackground(void)
function boolean (line 517) | boolean
function ST_calcPainOffset (line 729) | int ST_calcPainOffset(void)
function ST_updateFaceWidget (line 752) | void ST_updateFaceWidget(void)
function ST_updateWidgets (line 924) | void ST_updateWidgets(void)
function ST_Ticker (line 988) | void ST_Ticker (void)
function ST_doPaletteStuff (line 1000) | void ST_doPaletteStuff(void)
function ST_drawWidgets (line 1054) | void ST_drawWidgets(boolean refresh)
function ST_doRefresh (line 1089) | void ST_doRefresh(void)
function ST_diffDraw (line 1102) | void ST_diffDraw(void)
function ST_Drawer (line 1108) | void ST_Drawer (boolean fullscreen, boolean refresh)
function ST_loadGraphics (line 1124) | void ST_loadGraphics(void)
function ST_loadData (line 1201) | void ST_loadData(void)
function ST_unloadGraphics (line 1207) | void ST_unloadGraphics(void)
function ST_unloadData (line 1244) | void ST_unloadData(void)
function ST_initData (line 1249) | void ST_initData(void)
function ST_createWidgets (line 1282) | void ST_createWidgets(void)
function ST_Start (line 1444) | void ST_Start (void)
function ST_Stop (line 1456) | void ST_Stop (void)
function ST_Init (line 1466) | void ST_Init (void)
FILE: linuxdoom-1.10/st_stuff.h
type st_stateenum_t (line 59) | typedef enum
type st_chatstateenum_t (line 68) | typedef enum
FILE: linuxdoom-1.10/tables.c
function SlopeDiv (line 49) | int
FILE: linuxdoom-1.10/tables.h
type angle_t (line 78) | typedef unsigned angle_t;
FILE: linuxdoom-1.10/v_video.c
function V_MarkRect (line 142) | void
function V_CopyRect (line 157) | void
function V_DrawPatch (line 203) | void
function V_DrawPatchFlipped (line 270) | void
function V_DrawPatchDirect (line 336) | void
function V_DrawBlock (line 404) | void
function V_GetBlock (line 444) | void
function V_Init (line 482) | void V_Init (void)
FILE: linuxdoom-1.10/w_wad.c
function strupr (line 69) | void strupr (char* s)
function filelength (line 74) | int filelength (int handle)
function ExtractFileBase (line 85) | void
function W_AddFile (line 141) | void W_AddFile (char *filename)
function W_Reload (line 236) | void W_Reload (void)
function W_InitMultipleFiles (line 292) | void W_InitMultipleFiles (char** filenames)
function W_InitFile (line 325) | void W_InitFile (char* filename)
function W_NumLumps (line 339) | int W_NumLumps (void)
function W_CheckNumForName (line 351) | int W_CheckNumForName (char* name)
function W_GetNumForName (line 399) | int W_GetNumForName (char* name)
function W_LumpLength (line 416) | int W_LumpLength (int lump)
function W_ReadLump (line 431) | void
function W_Profile (line 522) | void W_Profile (void)
FILE: linuxdoom-1.10/w_wad.h
type wadinfo_t (line 35) | typedef struct
type filelump_t (line 45) | typedef struct
type lumpinfo_t (line 56) | typedef struct
FILE: linuxdoom-1.10/wi_stuff.c
type animenum_t (line 114) | typedef enum
type point_t (line 122) | typedef struct
type anim_t (line 134) | typedef struct
function WI_slamBackground (line 406) | void WI_slamBackground(void)
function boolean (line 414) | boolean WI_Responder(event_t* ev)
function WI_drawLF (line 421) | void WI_drawLF(void)
function WI_drawEL (line 439) | void WI_drawEL(void)
function WI_drawOnLnode (line 455) | void
function WI_initAnimatedBack (line 503) | void WI_initAnimatedBack(void)
function WI_updateAnimatedBack (line 532) | void WI_updateAnimatedBack(void)
function WI_drawAnimatedBack (line 583) | void WI_drawAnimatedBack(void)
function WI_drawNum (line 611) | int
function WI_drawPercent (line 668) | void
function WI_drawTime (line 687) | void
function WI_End (line 724) | void WI_End(void)
function WI_initNoState (line 730) | void WI_initNoState(void)
function WI_updateNoState (line 737) | void WI_updateNoState(void) {
function WI_initShowNextLoc (line 752) | void WI_initShowNextLoc(void)
function WI_updateShowNextLoc (line 761) | void WI_updateShowNextLoc(void)
function WI_drawShowNextLoc (line 771) | void WI_drawShowNextLoc(void)
function WI_drawNoState (line 812) | void WI_drawNoState(void)
function WI_fragSum (line 818) | int WI_fragSum(int playernum)
function WI_initDeathmatchStats (line 849) | void WI_initDeathmatchStats(void)
function WI_updateDeathmatchStats (line 878) | void WI_updateDeathmatchStats(void)
function WI_drawDeathmatchStats (line 981) | void WI_drawDeathmatchStats(void)
function WI_initNetgameStats (line 1078) | void WI_initNetgameStats(void)
function WI_updateNetgameStats (line 1106) | void WI_updateNetgameStats(void)
function WI_drawNetgameStats (line 1261) | void WI_drawNetgameStats(void)
function WI_initStats (line 1318) | void WI_initStats(void)
function WI_updateStats (line 1330) | void WI_updateStats(void)
function WI_drawStats (line 1436) | void WI_drawStats(void)
function WI_checkForAccelerate (line 1470) | void WI_checkForAccelerate(void)
function WI_Ticker (line 1503) | void WI_Ticker(void)
function WI_loadData (line 1538) | void WI_loadData(void)
function WI_unloadData (line 1708) | void WI_unloadData(void)
function WI_Drawer (line 1772) | void WI_Drawer (void)
function WI_initVariables (line 1796) | void WI_initVariables(wbstartstruct_t* wbstartstruct)
function WI_Start (line 1838) | void WI_Start(wbstartstruct_t* wbstartstruct)
FILE: linuxdoom-1.10/wi_stuff.h
type stateenum_t (line 31) | typedef enum
FILE: linuxdoom-1.10/z_zone.c
type memzone_t (line 46) | typedef struct
function Z_ClearZone (line 67) | void Z_ClearZone (memzone_t* zone)
function Z_Init (line 93) | void Z_Init (void)
function Z_Free (line 122) | void Z_Free (void* ptr)
function Z_FreeTags (line 296) | void
function Z_DumpHeap (line 326) | void
function Z_FileDumpHeap (line 366) | void Z_FileDumpHeap (FILE* f)
function Z_CheckHeap (line 399) | void Z_CheckHeap (void)
function Z_ChangeTag2 (line 428) | void
function Z_FreeMemory (line 451) | int Z_FreeMemory (void)
FILE: linuxdoom-1.10/z_zone.h
type memblock_t (line 58) | typedef struct memblock_s
FILE: sersrc/DOOMNET.C
function CheckParm (line 35) | int CheckParm (char *check)
function LaunchDOOM (line 65) | void LaunchDOOM (void)
FILE: sersrc/DOOMNET.H
type doomcom_t (line 21) | typedef struct
FILE: sersrc/PORT.C
type SREGS (line 15) | struct SREGS
function GetUart (line 43) | void GetUart (void)
function InitPort (line 103) | void InitPort (void)
function ShutdownPort (line 233) | void ShutdownPort ( void )
function read_byte (line 256) | int read_byte( void )
function write_byte (line 268) | void write_byte( int c )
function isr_8250 (line 287) | void interrupt isr_8250(void)
function isr_16550 (line 348) | void interrupt isr_16550(void)
function jump_start (line 416) | void jump_start( void )
FILE: sersrc/SERSETUP.C
function I_Error (line 28) | void I_Error(char *string)
function write_buffer (line 42) | void write_buffer( char *buffer, unsigned int count )
function Error (line 68) | void Error (char *error, ...)
function boolean (line 122) | boolean ReadPacket (void)
function WritePacket (line 181) | void WritePacket (char *buffer, int len)
function interrupt (line 212) | void interrupt NetISR (void)
function Connect (line 248) | void Connect (void)
function ModemCommand (line 367) | void ModemCommand (char *str)
function ModemResponse (line 396) | void ModemResponse (char *resp)
function ReadLine (line 440) | void ReadLine (FILE *f, char *dest)
function ReadModemCfg (line 463) | void ReadModemCfg (void)
function Dial (line 493) | void Dial (void)
function Answer (line 519) | void Answer (void)
function FindResponseFile (line 537) | void FindResponseFile (void)
function main (line 614) | void main(void)
FILE: sersrc/SERSETUP.H
type boolean (line 20) | typedef enum {false, true} boolean;
type byte (line 21) | typedef unsigned char byte;
type que_t (line 86) | typedef struct
FILE: sndserv/linux.c
function myioctl (line 49) | void
function I_InitMusic (line 67) | void I_InitMusic(void)
function I_InitSound (line 71) | void
function I_SubmitOutputBuffer (line 101) | void
function I_ShutdownSound (line 109) | void I_ShutdownSound(void)
function I_ShutdownMusic (line 116) | void I_ShutdownMusic(void)
FILE: sndserv/sounds.h
type musicenum_t (line 45) | typedef enum
type sfxenum_t (line 123) | typedef enum
FILE: sndserv/soundsrv.c
type wadinfo_t (line 63) | typedef struct wadinfo_struct
type filelump_t (line 73) | typedef struct filelump_struct
function derror (line 136) | static void derror(char* msg)
function mix (line 142) | int mix(void)
function grabdata (line 303) | void
type timeval (line 405) | struct timeval
type timezone (line 408) | struct timezone
function updatesounds (line 410) | void updatesounds(void)
function addsfx (line 418) | int
function outputushort (line 512) | void outputushort(int num)
function initdata (line 537) | void initdata(void)
function quit (line 573) | void quit(void)
function main (line 587) | int
FILE: sndserv/soundst.h
type musicinfo_t (line 71) | typedef struct
type sfxinfo_t (line 92) | typedef struct sfxinfo_struct sfxinfo_t;
type sfxinfo_struct (line 94) | struct sfxinfo_struct
type channel_t (line 128) | typedef struct
FILE: sndserv/wadread.c
type wadinfo_t (line 57) | typedef struct wadinfo_struct
type filelump_t (line 65) | typedef struct filelump_struct
type lumpinfo_t (line 73) | typedef struct lumpinfo_struct
function SwapLONG (line 107) | unsigned long SwapLONG(unsigned long x)
function SwapSHORT (line 116) | unsigned short SwapSHORT(unsigned short x)
function derror (line 127) | static void derror(char* msg)
function strupr (line 134) | void strupr (char *s)
function filelength (line 140) | int filelength (int handle)
function openwad (line 152) | void openwad(char* wadname)
Condensed preview — 165 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,557K chars).
[
{
"path": "LICENSE.TXT",
"chars": 17992,
"preview": "\t\t GNU GENERAL PUBLIC LICENSE\n\t\t Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc."
},
{
"path": "README.TXT",
"chars": 3619,
"preview": "\nHere it is, at long last. The DOOM source code is released for your\nnon-profit use. You still need real DOOM data to "
},
{
"path": "ipx/DOOMNET.C",
"chars": 1642,
"preview": "//#define DOOM2\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <process.h>\n#include <conio.h>\n#inc"
},
{
"path": "ipx/DOOMNET.H",
"chars": 1778,
"preview": "// doomnet.h\n\n#define PEL_WRITE_ADR 0x3c8\n#define PEL_DATA 0x3c9\n\n#define I_ColorBlack(r,g,b) {outp(PEL_WRITE_A"
},
{
"path": "ipx/IPXNET.C",
"chars": 5992,
"preview": "// ipxnet.c\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <dos.h>\n#include <string.h>\n#include <process.h>\n#include <"
},
{
"path": "ipx/IPXNET.H",
"chars": 2871,
"preview": "// ipxnet.h\n\n\ntypedef struct\n{\n char private[512];\n} doomdata_t;\n\n\n#include \"DoomNet.h\"\n\n//========================="
},
{
"path": "ipx/IPXSETUP.C",
"chars": 8155,
"preview": "// ipxsetup.c\n\n#define DOOM2\n\n#include <conio.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <dos.h>\n#include <strin"
},
{
"path": "ipx/IPXSTR.H",
"chars": 1027,
"preview": "#define STR_NETABORT\t\"Network game synchronization aborted.\"\n#define STR_UNKNOWN\t\t\"Got an unknown game packet during set"
},
{
"path": "ipx/IPX_FRCH.H",
"chars": 1105,
"preview": "#define STR_NETABORT\t\"Synchronisation du jeu sur rseau annule.\"\n#define STR_UNKNOWN\t\"Paquet de jeu inconnu durant la con"
},
{
"path": "ipx/README",
"chars": 52,
"preview": "This is the source for the DOOM ipx network driver.\n"
},
{
"path": "linuxdoom-1.10/CVS/Entries",
"chars": 4519,
"preview": "/ChangeLog/1.14/Mon Feb 3 22:45:08 1997//\n/DOOMLIC.TXT/1.3/Sun Jan 26 07:44:56 1997//\n/FILES/1.1/Sun Jan 19 17:22:41 19"
},
{
"path": "linuxdoom-1.10/CVS/Repository",
"chars": 25,
"preview": "/info/cvsroot/id/id_doom\n"
},
{
"path": "linuxdoom-1.10/CVS/Root",
"chars": 15,
"preview": "/info/cvsroot/\n"
},
{
"path": "linuxdoom-1.10/ChangeLog",
"chars": 34944,
"preview": "\n\n\n\t* TODO: see below, and in the \"TODO\" file. Enjoy!\n\nMon Dec 22 20:29:16 1997 <bk@gamers.org>\n\n\t* CVS logs and othe"
},
{
"path": "linuxdoom-1.10/FILES",
"chars": 6262,
"preview": "total 1258\n-rw-r--r-- 1 b1 prog 0 Jan 18 15:08 FILES\n-rw-r--r-- 1 b1 prog 5799 Jan 18"
},
{
"path": "linuxdoom-1.10/FILES2",
"chars": 7371,
"preview": "ChangeLog\nFILES\nFILES2\nMakefile\n\n-----------------------------------------------------------------------\nGlobal and misc"
},
{
"path": "linuxdoom-1.10/Makefile",
"chars": 1877,
"preview": "################################################################\n#\n# $Id:$\n#\n# $Log:$\n#\nCC= gcc # gcc or g++\n\nCFLAGS=-"
},
{
"path": "linuxdoom-1.10/README.asm",
"chars": 6629,
"preview": "\nREADME - DOOM assembly code\n\nOkay, I add the DOS assembly module for the historically\ninclined here (may rec.games.prog"
},
{
"path": "linuxdoom-1.10/README.b",
"chars": 4079,
"preview": "\nREADME for Linux DOOM Source distribution\n=========================================\n\n\nDISCLAIMER\n----------\nThis is not"
},
{
"path": "linuxdoom-1.10/README.book",
"chars": 2158,
"preview": "\nThe DOOM Book\n\nShortly after the Wolfenstein 3D source release,\nI sent a mail to Jay Wilbur suggesting a book\nabout the"
},
{
"path": "linuxdoom-1.10/README.gl",
"chars": 6470,
"preview": "\nREADME: glDOOM\n\nI never got around to do anything with respect to\na Linux glDOOM port except for assembling a Linux3Dfx"
},
{
"path": "linuxdoom-1.10/README.sound",
"chars": 4386,
"preview": "\nREADME: sound in DOOM\n\n\n1) DOS/Win32 sound\n\nid licensed a third party sound library called\nDMX for DOS DOOM. The situat"
},
{
"path": "linuxdoom-1.10/TODO",
"chars": 3692,
"preview": "\n- create Web repository for sources, patches,\n news, and pointer to doom-editing mailing\n list.\n\n- get DOOM Public Li"
},
{
"path": "linuxdoom-1.10/am_map.c",
"chars": 27129,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/am_map.h",
"chars": 1422,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/d_englsh.h",
"chars": 22000,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/d_event.h",
"chars": 2409,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/d_french.h",
"chars": 14409,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/d_items.c",
"chars": 2053,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/d_items.h",
"chars": 1283,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/d_main.c",
"chars": 25942,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/d_main.h",
"chars": 1400,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/d_net.c",
"chars": 16308,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/d_net.h",
"chars": 3267,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/d_player.h",
"chars": 4729,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/d_textur.h",
"chars": 1181,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/d_think.h",
"chars": 1775,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/d_ticcmd.h",
"chars": 1451,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/doomdata.h",
"chars": 4845,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/doomdef.c",
"chars": 1031,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/doomdef.h",
"chars": 6593,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/doomstat.c",
"chars": 1152,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/doomstat.h",
"chars": 6878,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/doomtype.h",
"chars": 1620,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/dstrings.c",
"chars": 2322,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/dstrings.h",
"chars": 1436,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/f_finale.c",
"chars": 14210,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/f_finale.h",
"chars": 1171,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/f_wipe.c",
"chars": 5130,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/f_wipe.h",
"chars": 1416,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/g_game.c",
"chars": 36433,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/g_game.h",
"chars": 1895,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/hu_lib.c",
"chars": 6457,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/hu_lib.h",
"chars": 3992,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/hu_stuff.c",
"chars": 14705,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/hu_stuff.h",
"chars": 1596,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/i_main.c",
"chars": 1029,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/i_net.c",
"chars": 8017,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/i_net.h",
"chars": 1078,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/i_sound.c",
"chars": 21764,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/i_sound.h",
"chars": 2692,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/i_system.c",
"chars": 2937,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/i_system.h",
"chars": 2338,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/i_video.c",
"chars": 22756,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/i_video.h",
"chars": 1453,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/info.c",
"chars": 139736,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/info.h",
"chars": 21985,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_argv.c",
"chars": 1163,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_argv.h",
"chars": 1101,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_bbox.c",
"chars": 1333,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_bbox.h",
"chars": 1214,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_cheat.c",
"chars": 1889,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_cheat.h",
"chars": 1318,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_fixed.c",
"chars": 1612,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_fixed.h",
"chars": 1244,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_menu.c",
"chars": 33252,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_menu.h",
"chars": 1677,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_misc.c",
"chars": 10500,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_misc.h",
"chars": 1250,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_random.c",
"chars": 2566,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_random.h",
"chars": 1162,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_swap.c",
"chars": 1287,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/m_swap.h",
"chars": 1321,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_ceilng.c",
"chars": 6297,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_doors.c",
"chars": 15237,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_enemy.c",
"chars": 36693,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_floor.c",
"chars": 11486,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_inter.c",
"chars": 18140,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_inter.h",
"chars": 1002,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_lights.c",
"chars": 6684,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_local.h",
"chars": 5955,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_map.c",
"chars": 28315,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_maputl.c",
"chars": 16178,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_mobj.c",
"chars": 19304,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_mobj.h",
"chars": 8966,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_plats.c",
"chars": 6633,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_pspr.c",
"chars": 16446,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_pspr.h",
"chars": 1842,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_saveg.c",
"chars": 12798,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_saveg.h",
"chars": 1351,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_setup.c",
"chars": 14994,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_setup.h",
"chars": 1159,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_sight.c",
"chars": 7176,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_spec.c",
"chars": 24781,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_spec.h",
"chars": 9580,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_switch.c",
"chars": 13347,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_telept.c",
"chars": 2721,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_tick.c",
"chars": 2969,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_tick.h",
"chars": 1091,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/p_user.c",
"chars": 8321,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_bsp.c",
"chars": 11197,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_bsp.h",
"chars": 1663,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_data.c",
"chars": 18065,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_data.h",
"chars": 1554,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_defs.h",
"chars": 9120,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_draw.c",
"chars": 18567,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_draw.h",
"chars": 2472,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_local.h",
"chars": 1393,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_main.c",
"chars": 15992,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_main.h",
"chars": 3232,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_plane.c",
"chars": 8260,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_plane.h",
"chars": 1725,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_segs.c",
"chars": 16981,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_segs.h",
"chars": 1074,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_sky.c",
"chars": 1424,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_sky.h",
"chars": 1225,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_state.h",
"chars": 2642,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_things.c",
"chars": 20752,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/r_things.h",
"chars": 1845,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/s_sound.c",
"chars": 16626,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/s_sound.h",
"chars": 2172,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/sounds.c",
"chars": 6878,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/sounds.h",
"chars": 4939,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/st_lib.c",
"chars": 4793,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/st_lib.h",
"chars": 3650,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/st_stuff.c",
"chars": 30424,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/st_stuff.h",
"chars": 1874,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/tables.c",
"chars": 124254,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/tables.h",
"chars": 2291,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/v_video.c",
"chars": 12827,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/v_video.h",
"chars": 2132,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/w_wad.c",
"chars": 10411,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/w_wad.h",
"chars": 1755,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/wi_stuff.c",
"chars": 33830,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/wi_stuff.h",
"chars": 1360,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/z_zone.c",
"chars": 9400,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "linuxdoom-1.10/z_zone.h",
"chars": 2486,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "sersrc/DOOMNET.C",
"chars": 2354,
"preview": "#include <stdio.h>\n#include <io.h>\n#include <stdlib.h>\n#include <string.h>\n#include <process.h>\n#include <dos.h>\n#includ"
},
{
"path": "sersrc/DOOMNET.H",
"chars": 1458,
"preview": "// doomnet.h\n\n\n#define PEL_WRITE_ADR 0x3c8\n#define PEL_DATA 0x3c9\n\n#define I_ColorBlack(r,g,b) {outp(PEL_WRITE_"
},
{
"path": "sersrc/PORT.C",
"chars": 6911,
"preview": "// port.c\n\n#include \"doomnet.h\"\n#include \"sersetup.h\"\n//#include \"serstr.h\"\n#include \"ser_frch.h\"\t\t// FRENCH VERSION\n\n\nv"
},
{
"path": "sersrc/README.TXT",
"chars": 55,
"preview": "This is the source for the DOOM serial / modem driver.\n"
},
{
"path": "sersrc/SERSETUP.C",
"chars": 10894,
"preview": "// sersetup.c\n#define DOOM2\n#include \"sersetup.h\"\n//#include \"serstr.h\"\n#include \"ser_frch.h\"\t\t// FRENCH VERSION\n#includ"
},
{
"path": "sersrc/SERSETUP.H",
"chars": 3612,
"preview": "#include <conio.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <conio.h>\n#include <ctype.h>\n#inc"
},
{
"path": "sersrc/SERSTR.H",
"chars": 1058,
"preview": "#define STR_DROPDTR\t\t\"Dropping DTR\"\n#define STR_CLEANEXIT\t\"Clean exit from SERSETUP\"\n#define STR_ATTEMPT\t\t\"Attempting to"
},
{
"path": "sersrc/SER_FRCH.H",
"chars": 1336,
"preview": "#define STR_DROPDTR\t\t\"Abandon de DTR\"\n#define STR_CLEANEXIT\t\"Sortie normale de SERSETUP\"\n#define STR_ATTEMPT\t\t\"Tentative"
},
{
"path": "sndserv/Makefile",
"chars": 509,
"preview": "##########################################################\n#\n# $Id:$\n#\n# $Log:$\n#\n#\n\nCC=gcc\nCFLAGS=-O -DNORMALUNIX -DLIN"
},
{
"path": "sndserv/README.sndserv",
"chars": 505,
"preview": "\nThis is the soundserver as used by the original\nLinuxdoom release. I separated the source from\nthe actual Linuxduum sou"
},
{
"path": "sndserv/linux.c",
"chars": 2581,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "sndserv/sounds.c",
"chars": 7417,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "sndserv/sounds.h",
"chars": 4171,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "sndserv/soundsrv.c",
"chars": 15248,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "sndserv/soundsrv.h",
"chars": 1463,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "sndserv/soundst.h",
"chars": 5502,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "sndserv/wadread.c",
"chars": 5200,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
},
{
"path": "sndserv/wadread.h",
"chars": 1844,
"preview": "// Emacs style mode select -*- C++ -*- \n//----------------------------------------------------------------------------"
}
]
About this extraction
This page contains the full source code of the id-Software/DOOM GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 165 files (1.4 MB), approximately 485.5k tokens, and a symbol index with 951 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.