├── DOOM1.WAD ├── README.md ├── doom.c ├── ipx ├── DOOMNET.C ├── DOOMNET.H ├── IPXNET.C ├── IPXNET.H ├── IPXSETUP.C ├── IPXSTR.H ├── IPX_FRCH.H └── README ├── libs_win32 ├── app.h ├── crtemu_pc.h ├── crtframe.h ├── frametimer.h ├── gif_load.h ├── mus.h ├── soundfont.c ├── thread.h └── tsf.h ├── linuxdoom-1.10 ├── CVS │ ├── Entries │ ├── Repository │ └── Root ├── ChangeLog ├── DOOMLIC.TXT ├── 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 ├── unistd.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 /DOOM1.WAD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichalStrehovsky/doom-clr/ff6da7784cc54c82b5b02814ba20bee9bb94fd10/DOOM1.WAD -------------------------------------------------------------------------------- /doom.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | static_assert( sizeof( void* ) == 4, "Must be built as a 32 bit application. Use the x86 visual studio command prompt." ); 4 | 5 | #pragma warning( disable: 4113 ) 6 | #pragma warning( disable: 4311 ) 7 | #pragma warning( disable: 4047 ) 8 | #pragma warning( disable: 4024 ) 9 | #pragma warning( disable: 4312 ) 10 | #pragma warning( disable: 4020 ) 11 | #pragma warning( disable: 4028 ) 12 | #pragma warning( disable: 4005 ) 13 | #pragma warning( disable: 4700 ) 14 | #pragma warning( disable: 4133 ) 15 | #pragma warning( disable: 4142 ) 16 | 17 | #define alloca _alloca 18 | #define strcasecmp stricmp 19 | #define strncasecmp strnicmp 20 | 21 | #define CONCAT_IMPL( x, y ) x##y 22 | #define CONCAT( x, y ) CONCAT_IMPL( x, y ) 23 | #define rcsid CONCAT( rcsid, __COUNTER__ ) 24 | 25 | #define open doom_open 26 | #define close doom_close 27 | #include "linuxdoom-1.10/am_map.c" 28 | #include "linuxdoom-1.10/doomdef.c" 29 | #include "linuxdoom-1.10/doomstat.c" 30 | #include "linuxdoom-1.10/dstrings.c" 31 | #include "linuxdoom-1.10/d_items.c" 32 | #include "linuxdoom-1.10/d_main.c" 33 | #include "linuxdoom-1.10/d_net.c" 34 | #include "linuxdoom-1.10/f_finale.c" 35 | #include "linuxdoom-1.10/f_wipe.c" 36 | #include "linuxdoom-1.10/g_game.c" 37 | #include "linuxdoom-1.10/hu_lib.c" 38 | #include "linuxdoom-1.10/hu_stuff.c" 39 | #include "linuxdoom-1.10/info.c" 40 | #include "linuxdoom-1.10/i_main.c" 41 | #include "linuxdoom-1.10/m_argv.c" 42 | #include "linuxdoom-1.10/m_bbox.c" 43 | #include "linuxdoom-1.10/m_cheat.c" 44 | #include "linuxdoom-1.10/m_fixed.c" 45 | #include "linuxdoom-1.10/m_random.c" 46 | #include "linuxdoom-1.10/m_swap.c" 47 | #include "linuxdoom-1.10/p_ceilng.c" 48 | #include "linuxdoom-1.10/p_doors.c" 49 | #include "linuxdoom-1.10/p_enemy.c" 50 | #include "linuxdoom-1.10/p_floor.c" 51 | #include "linuxdoom-1.10/p_inter.c" 52 | #include "linuxdoom-1.10/p_lights.c" 53 | #include "linuxdoom-1.10/p_map.c" 54 | #include "linuxdoom-1.10/p_maputl.c" 55 | #include "linuxdoom-1.10/p_mobj.c" 56 | #include "linuxdoom-1.10/p_plats.c" 57 | #include "linuxdoom-1.10/p_pspr.c" 58 | #include "linuxdoom-1.10/p_saveg.c" 59 | #include "linuxdoom-1.10/p_setup.c" 60 | #include "linuxdoom-1.10/p_sight.c" 61 | #include "linuxdoom-1.10/p_spec.c" 62 | #include "linuxdoom-1.10/p_switch.c" 63 | #include "linuxdoom-1.10/p_telept.c" 64 | #include "linuxdoom-1.10/p_tick.c" 65 | #include "linuxdoom-1.10/p_user.c" 66 | #include "linuxdoom-1.10/r_bsp.c" 67 | #include "linuxdoom-1.10/r_data.c" 68 | #include "linuxdoom-1.10/r_draw.c" 69 | #include "linuxdoom-1.10/r_main.c" 70 | #include "linuxdoom-1.10/r_plane.c" 71 | #include "linuxdoom-1.10/r_segs.c" 72 | #include "linuxdoom-1.10/r_sky.c" 73 | #include "linuxdoom-1.10/r_things.c" 74 | #include "linuxdoom-1.10/sounds.c" 75 | #undef BG 76 | #include "linuxdoom-1.10/st_lib.c" 77 | #include "linuxdoom-1.10/st_stuff.c" 78 | #define channels xchannels 79 | #include "linuxdoom-1.10/s_sound.c" 80 | #undef channels 81 | #include "linuxdoom-1.10/tables.c" 82 | #include "linuxdoom-1.10/v_video.c" 83 | #define anim_t wi_anim_t 84 | #define anims wi_anims 85 | #define time wi_time 86 | #include "linuxdoom-1.10/wi_stuff.c" 87 | #undef anims 88 | #undef anim_t 89 | #undef time 90 | #include "linuxdoom-1.10/z_zone.c" 91 | 92 | #undef open 93 | #undef close 94 | #include 95 | #include "linuxdoom-1.10/m_menu.c" 96 | #include "linuxdoom-1.10/m_misc.c" 97 | #define strupr xstrupr 98 | #include "linuxdoom-1.10/w_wad.c" 99 | #undef strupr 100 | 101 | #define APP_WINDOWS 102 | 103 | #define boolean HACK_TO_MAKE_BOOLEAN_NOT_BE_DEFINED 104 | #define APP_IMPLEMENTATION 105 | #include "libs_win32/app.h" 106 | #undef APP_IMPLEMENTATION 107 | 108 | #define FRAMETIMER_IMPLEMENTATION 109 | #include "libs_win32/frametimer.h" 110 | 111 | #define CRTEMU_PC_IMPLEMENTATION 112 | #include "libs_win32/gif_load.h" 113 | #include "libs_win32/crtemu_pc.h" 114 | #include "libs_win32/crtframe.h" 115 | 116 | #define THREAD_IMPLEMENTATION 117 | #include "libs_win32/thread.h" 118 | #undef THREAD_IMPLEMENTATION 119 | #undef boolean 120 | 121 | #define MUS_IMPLEMENTATION 122 | #include "libs_win32/mus.h" 123 | 124 | #define TSF_IMPLEMENTATION 125 | #include "libs_win32/tsf.h" 126 | 127 | #include "libs_win32/soundfont.c" 128 | 129 | #include "linuxdoom-1.10/i_sound.c" 130 | #include "linuxdoom-1.10/i_video.c" 131 | #include "linuxdoom-1.10/i_system.c" 132 | 133 | #pragma comment( lib, "Ws2_32.lib" ) 134 | #define boolean win32_boolean 135 | #include 136 | #undef boolean 137 | 138 | #include "linuxdoom-1.10/i_net.c" 139 | -------------------------------------------------------------------------------- /ipx/DOOMNET.C: -------------------------------------------------------------------------------- 1 | //#define DOOM2 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "doomnet.h" 11 | //#include "ipxstr.h" 12 | #include "ipx_frch.h" // FRENCH VERSION 13 | 14 | doomcom_t doomcom; 15 | int vectorishooked; 16 | void interrupt (*olddoomvect) (void); 17 | 18 | 19 | 20 | /* 21 | ============= 22 | = 23 | = LaunchDOOM 24 | = 25 | These fields in doomcom should be filled in before calling: 26 | 27 | short numnodes; // console is allways node 0 28 | short ticdup; // 1 = no duplication, 2-5 = dup for 29 | slow nets 30 | short extratics; // 1 = send a backup tic in every 31 | packet 32 | 33 | short consoleplayer; // 0-3 = player number 34 | short numplayers; // 1-4 35 | short angleoffset; // 1 = left, 0 = center, -1 = right 36 | short drone; // 1 = drone 37 | ============= 38 | */ 39 | 40 | void LaunchDOOM (void) 41 | { 42 | char *newargs[99]; 43 | char adrstring[10]; 44 | long flatadr; 45 | 46 | // prepare for DOOM 47 | doomcom.id = DOOMCOM_ID; 48 | 49 | // hook the interrupt vector 50 | olddoomvect = getvect (doomcom.intnum); 51 | setvect (doomcom.intnum,(void interrupt (*)(void))MK_FP(_CS, 52 | (int)NetISR)); 53 | vectorishooked = 1; 54 | 55 | // build the argument list for DOOM, adding a -net &doomcom 56 | memcpy (newargs, _argv, (_argc+1)*2); 57 | newargs[_argc] = "-net"; 58 | flatadr = (long)_DS*16 + (unsigned)&doomcom; 59 | sprintf (adrstring,"%lu",flatadr); 60 | newargs[_argc+1] = adrstring; 61 | newargs[_argc+2] = NULL; 62 | 63 | if (!access("doom2.exe",0)) 64 | spawnv (P_WAIT, "doom2", newargs); 65 | else 66 | spawnv (P_WAIT, "doom", newargs); 67 | 68 | #ifdef DOOM2 69 | printf (STR_RETURNED"\n"); 70 | #else 71 | printf ("Returned from DOOM\n"); 72 | #endif 73 | } 74 | -------------------------------------------------------------------------------- /ipx/DOOMNET.H: -------------------------------------------------------------------------------- 1 | // doomnet.h 2 | 3 | #define PEL_WRITE_ADR 0x3c8 4 | #define PEL_DATA 0x3c9 5 | 6 | #define I_ColorBlack(r,g,b) {outp(PEL_WRITE_ADR,0);outp(PEL_DATA,r);outp(PEL_DATA,g);outp(PEL_DATA,b);}; 7 | 8 | 9 | 10 | #define MAXNETNODES 8 // max computers in a game 11 | #define MAXPLAYERS 4 // 4 players max + drones 12 | 13 | 14 | #define CMD_SEND 1 15 | #define CMD_GET 2 16 | 17 | #define DOOMCOM_ID 0x12345678l 18 | 19 | typedef struct 20 | { 21 | long id; 22 | short intnum; // DOOM executes an int to send commands 23 | 24 | // communication between DOOM and the driver 25 | short command; // CMD_SEND or CMD_GET 26 | short remotenode; // dest for send, set by get (-1 = no packet) 27 | short datalength; // bytes in doomdata to be sent / bytes read 28 | 29 | // info common to all nodes 30 | short numnodes; // console is allways node 0 31 | short ticdup; // 1 = no duplication, 2-5 = dup for slow nets 32 | short extratics; // 1 = send a backup tic in every packet 33 | short deathmatch; // 1 = deathmatch 34 | short savegame; // -1 = new game, 0-5 = load savegame 35 | short episode; // 1-3 36 | short map; // 1-9 37 | short skill; // 1-5 38 | 39 | // info specific to this node 40 | short consoleplayer; // 0-3 = player number 41 | short numplayers; // 1-4 42 | short angleoffset; // 1 = left, 0 = center, -1 = right 43 | short drone; // 1 = drone 44 | 45 | // packet data to be sent 46 | char data[512]; 47 | } doomcom_t; 48 | 49 | 50 | 51 | extern doomcom_t doomcom; 52 | extern void interrupt (*olddoomvect) (void); 53 | extern int vectorishooked; 54 | 55 | int CheckParm (char *check); 56 | void LaunchDOOM (void); 57 | void interrupt NetISR (void); 58 | 59 | -------------------------------------------------------------------------------- /ipx/IPXNET.H: -------------------------------------------------------------------------------- 1 | // ipxnet.h 2 | 3 | 4 | typedef struct 5 | { 6 | char private[512]; 7 | } doomdata_t; 8 | 9 | 10 | #include "DoomNet.h" 11 | 12 | //=========================================================================== 13 | 14 | #define NUMPACKETS 10 // max outstanding packets before loss 15 | 16 | // setupdata_t is used as doomdata_t during setup 17 | typedef struct 18 | { 19 | short gameid; // so multiple games can setup at once 20 | short drone; 21 | short nodesfound; 22 | short nodeswanted; 23 | } setupdata_t; 24 | 25 | 26 | 27 | typedef unsigned char BYTE; 28 | typedef unsigned short WORD; 29 | typedef unsigned long LONG; 30 | 31 | typedef struct IPXPacketStructure 32 | { 33 | WORD PacketCheckSum; /* high-low */ 34 | WORD PacketLength; /* high-low */ 35 | BYTE PacketTransportControl; 36 | BYTE PacketType; 37 | 38 | BYTE dNetwork[4]; /* high-low */ 39 | BYTE dNode[6]; /* high-low */ 40 | BYTE dSocket[2]; /* high-low */ 41 | 42 | BYTE sNetwork[4]; /* high-low */ 43 | BYTE sNode[6]; /* high-low */ 44 | BYTE sSocket[2]; /* high-low */ 45 | } IPXPacket; 46 | 47 | 48 | typedef struct 49 | { 50 | BYTE network[4]; /* high-low */ 51 | BYTE node[6]; /* high-low */ 52 | } localadr_t; 53 | 54 | typedef struct 55 | { 56 | BYTE node[6]; /* high-low */ 57 | } nodeadr_t; 58 | 59 | typedef struct ECBStructure 60 | { 61 | WORD Link[2]; /* offset-segment */ 62 | WORD ESRAddress[2]; /* offset-segment */ 63 | BYTE InUseFlag; 64 | BYTE CompletionCode; 65 | WORD ECBSocket; /* high-low */ 66 | BYTE IPXWorkspace[4]; /* N/A */ 67 | BYTE DriverWorkspace[12]; /* N/A */ 68 | BYTE ImmediateAddress[6]; /* high-low */ 69 | WORD FragmentCount; /* low-high */ 70 | 71 | WORD fAddress[2]; /* offset-segment */ 72 | WORD fSize; /* low-high */ 73 | 74 | WORD f2Address[2]; /* offset-segment */ 75 | WORD f2Size; /* low-high */ 76 | } ECB; 77 | 78 | 79 | // time is used by the communication driver to sequence packets returned 80 | // to DOOM when more than one is waiting 81 | 82 | typedef struct 83 | { 84 | ECB ecb; 85 | IPXPacket ipx; 86 | 87 | long time; 88 | doomdata_t data; 89 | } packet_t; 90 | 91 | 92 | extern doomcom_t doomcom; 93 | extern int gameid; 94 | 95 | extern nodeadr_t nodeadr[MAXNETNODES+1]; 96 | extern int localnodenum; 97 | 98 | extern long localtime; // for time stamp in packets 99 | extern long remotetime; // timestamp of last packet gotten 100 | 101 | extern nodeadr_t remoteadr; 102 | 103 | extern int myargc; 104 | 105 | extern char **myargv; 106 | 107 | void Error (char *error, ...); 108 | 109 | 110 | void InitNetwork (void); 111 | void ShutdownNetwork (void); 112 | void SendPacket (int destination); 113 | int GetPacket (void); 114 | int CheckParm (char *check); 115 | 116 | void PrintAddress (nodeadr_t *adr, char *str); 117 | 118 | -------------------------------------------------------------------------------- /ipx/IPXSTR.H: -------------------------------------------------------------------------------- 1 | #define STR_NETABORT "Network game synchronization aborted." 2 | #define STR_UNKNOWN "Got an unknown game packet during setup" 3 | #define STR_FOUND "Found a node!" 4 | #define STR_LOOKING "Looking for a node" 5 | #define STR_MORETHAN "More than %i players specified!" 6 | #define STR_NONESPEC "No players specified for game!" 7 | #define STR_CONSOLEIS "Console is player %i of %i" 8 | #define STR_NORESP "No such response file!" 9 | #define STR_FOUNDRESP "Found response file" 10 | #define STR_DOOMNETDRV "DOOM II NETWORK DEVICE DRIVER" 11 | #define STR_VECTSPEC "The specified vector (0x%02x) was already hooked." 12 | #define STR_NONULL \ 13 | "Warning: no NULL or iret interrupt vectors were found in the 0x60 to 0x66\n"\ 14 | "range. You can specify a vector with the -vector 0x parameter." 15 | #define STR_COMMVECT "Communicating with interrupt vector 0x%x" 16 | #define STR_USEALT "Using alternate port %i for network" 17 | #define STR_RETURNED "Returned from DOOM II" 18 | #define STR_ATTEMPT "Attempting to find all players for %i player net play. "\ 19 | "Press ESC to exit.\n" 20 | -------------------------------------------------------------------------------- /ipx/IPX_FRCH.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichalStrehovsky/doom-clr/ff6da7784cc54c82b5b02814ba20bee9bb94fd10/ipx/IPX_FRCH.H -------------------------------------------------------------------------------- /ipx/README: -------------------------------------------------------------------------------- 1 | This is the source for the DOOM ipx network driver. 2 | -------------------------------------------------------------------------------- /linuxdoom-1.10/CVS/Entries: -------------------------------------------------------------------------------- 1 | /ChangeLog/1.14/Mon Feb 3 22:45:08 1997// 2 | /DOOMLIC.TXT/1.3/Sun Jan 26 07:44:56 1997// 3 | /FILES/1.1/Sun Jan 19 17:22:41 1997// 4 | /FILES2/1.1/Sun Jan 19 17:22:42 1997// 5 | /Makefile/1.6/Mon Feb 3 22:45:08 1997// 6 | /am_data.h/1.2/Tue Jan 21 18:59:56 1997// 7 | /am_map.c/1.4/Mon Feb 3 21:24:33 1997// 8 | /am_map.h/1.2/Tue Jan 21 18:59:56 1997// 9 | /d_englsh.h/1.1/Mon Feb 3 21:48:03 1997// 10 | /d_event.h/1.2/Mon Feb 3 22:01:47 1997// 11 | /d_french.h/1.3/Mon Feb 3 21:48:03 1997// 12 | /d_main.c/1.8/Mon Feb 3 22:45:09 1997// 13 | /d_net.c/1.3/Mon Feb 3 22:01:47 1997// 14 | /d_textur.h/1.1/Mon Feb 3 16:47:51 1997// 15 | /doomdata.h/1.5/Mon Feb 3 22:45:09 1997// 16 | /doomdef.h/1.9/Mon Feb 3 22:45:09 1997// 17 | /doomtype.h/1.2/Mon Feb 3 22:45:09 1997// 18 | /dstrings.h/1.4/Mon Feb 3 21:48:03 1997// 19 | /dutils.c/1.5/Mon Feb 3 17:11:23 1997// 20 | /dutils.h/1.4/Mon Feb 3 17:11:23 1997// 21 | /f_finale.c/1.5/Mon Feb 3 21:26:34 1997// 22 | /f_finale.h/1.1/Mon Feb 3 21:26:34 1997// 23 | /f_wipe.c/1.2/Mon Feb 3 22:45:09 1997// 24 | /f_wipe.h/1.1/Mon Feb 3 17:11:23 1997// 25 | /fpfunc.S/1.1/Sun Jan 19 17:22:43 1997// 26 | /g_game.c/1.8/Mon Feb 3 22:45:09 1997// 27 | /g_game.h/1.1/Mon Feb 3 21:34:47 1997// 28 | /hu_lib.c/1.3/Sun Jan 26 07:44:58 1997// 29 | /hu_lib.h/1.4/Mon Feb 3 16:47:52 1997// 30 | /hu_stuff.c/1.4/Mon Feb 3 16:47:52 1997// 31 | /hu_stuff.h/1.3/Sun Jan 26 07:44:58 1997// 32 | /i_dga.c/1.3/Sun Jan 26 07:44:58 1997// 33 | /i_ibm.c/1.3/Sun Jan 26 07:44:58 1997// 34 | /i_main.c/1.4/Mon Feb 3 22:45:10 1997// 35 | /i_pcnet.c/1.3/Sun Jan 26 07:44:59 1997// 36 | /i_sound.c/1.3/Sun Jan 26 07:44:59 1997// 37 | /i_sound.h/1.3/Sun Jan 26 07:44:59 1997// 38 | /i_svga.c/1.3/Sun Jan 26 07:44:59 1997// 39 | /i_unix.c/1.5/Mon Feb 3 22:45:10 1997// 40 | /i_x.c/1.6/Mon Feb 3 22:45:10 1997// 41 | /info.c/1.3/Sun Jan 26 07:45:00 1997// 42 | /info.h/1.3/Sun Jan 26 07:45:00 1997// 43 | /irix.c/1.3/Sun Jan 26 07:45:00 1997// 44 | /irix.h/1.3/Sun Jan 26 07:45:01 1997// 45 | /linux.c/1.3/Sun Jan 26 07:45:01 1997// 46 | /m_argv.c/1.1/Mon Feb 3 22:45:10 1997// 47 | /m_argv.h/1.1/Mon Feb 3 22:45:10 1997// 48 | /m_bbox.c/1.1/Mon Feb 3 22:45:10 1997// 49 | /m_bbox.h/1.1/Mon Feb 3 22:45:10 1997// 50 | /m_cheat.c/1.1/Mon Feb 3 21:24:34 1997// 51 | /m_cheat.h/1.1/Mon Feb 3 21:24:34 1997// 52 | /m_menu.c/1.7/Mon Feb 3 22:45:10 1997// 53 | /m_menu.h/1.1/Mon Feb 3 22:01:49 1997// 54 | /m_misc.c/1.6/Mon Feb 3 22:45:10 1997// 55 | /m_misc.h/1.1/Mon Feb 3 22:45:11 1997// 56 | /m_random.c/1.1/Mon Feb 3 22:45:11 1997// 57 | /m_random.h/1.1/Mon Feb 3 22:45:11 1997// 58 | /p_ceilng.c/1.4/Mon Feb 3 16:47:53 1997// 59 | /p_doors.c/1.4/Mon Feb 3 16:47:53 1997// 60 | /p_enemy.c/1.5/Mon Feb 3 22:45:11 1997// 61 | /p_floor.c/1.4/Mon Feb 3 16:47:54 1997// 62 | /p_inter.c/1.4/Mon Feb 3 22:45:11 1997// 63 | /p_lights.c/1.5/Mon Feb 3 22:45:11 1997// 64 | /p_local.h/1.3/Tue Jan 28 22:08:27 1997// 65 | /p_map.c/1.5/Mon Feb 3 22:45:11 1997// 66 | /p_maputl.c/1.5/Mon Feb 3 22:45:11 1997// 67 | /p_mobj.c/1.5/Mon Feb 3 22:45:12 1997// 68 | /p_plats.c/1.5/Mon Feb 3 22:45:12 1997// 69 | /p_pspr.c/1.5/Mon Feb 3 22:45:12 1997// 70 | /p_setup.c/1.5/Mon Feb 3 22:45:12 1997// 71 | /p_sight.c/1.3/Tue Jan 28 22:08:28 1997// 72 | /p_spec.c/1.6/Mon Feb 3 22:45:12 1997// 73 | /p_spec.h/1.3/Tue Jan 28 22:08:29 1997// 74 | /p_switch.c/1.3/Tue Jan 28 22:08:29 1997// 75 | /p_telept.c/1.3/Tue Jan 28 22:08:29 1997// 76 | /p_tick.c/1.4/Mon Feb 3 16:47:55 1997// 77 | /p_user.c/1.3/Tue Jan 28 22:08:29 1997// 78 | /r_bsp.c/1.4/Mon Feb 3 22:45:12 1997// 79 | /r_data.c/1.4/Mon Feb 3 16:47:55 1997// 80 | /r_draw.c/1.4/Mon Feb 3 16:47:55 1997// 81 | /r_local.h/1.4/Mon Feb 3 21:26:34 1997// 82 | /r_main.c/1.5/Mon Feb 3 22:45:12 1997// 83 | /r_plane.c/1.4/Mon Feb 3 16:47:55 1997// 84 | /r_segs.c/1.3/Wed Jan 29 20:10:19 1997// 85 | /r_things.c/1.5/Mon Feb 3 16:47:56 1997// 86 | /s_sound.c/1.6/Mon Feb 3 22:45:12 1997// 87 | /sounds.c/1.3/Wed Jan 29 22:40:44 1997// 88 | /sounds.h/1.3/Wed Jan 29 22:40:44 1997// 89 | /soundsrv.c/1.3/Wed Jan 29 22:40:44 1997// 90 | /soundsrv.h/1.3/Wed Jan 29 22:40:44 1997// 91 | /soundst.h/1.3/Wed Jan 29 22:40:45 1997// 92 | /st_lib.c/1.4/Mon Feb 3 16:47:56 1997// 93 | /st_lib.h/1.4/Mon Feb 3 16:47:56 1997// 94 | /st_stuff.c/1.6/Mon Feb 3 22:45:13 1997// 95 | /st_stuff.h/1.3/Thu Jan 30 19:54:22 1997// 96 | /sun.c/1.3/Thu Jan 30 19:54:22 1997// 97 | /tables.c/1.4/Mon Feb 3 16:47:57 1997// 98 | /tables.h/1.1/Mon Feb 3 16:47:57 1997// 99 | /tmap.S/1.1/Sun Jan 19 17:22:51 1997// 100 | /v_video.c/1.5/Mon Feb 3 22:45:13 1997// 101 | /v_video.h/1.2/Mon Feb 3 17:11:59 1997// 102 | /w_wad.c/1.5/Mon Feb 3 16:47:57 1997// 103 | /wadread.c/1.3/Thu Jan 30 19:54:23 1997// 104 | /wadread.h/1.3/Thu Jan 30 19:54:23 1997// 105 | /wi_data.h/1.3/Thu Jan 30 19:54:23 1997// 106 | /wi_stuff.c/1.7/Mon Feb 3 22:45:13 1997// 107 | /wi_stuff.h/1.4/Mon Feb 3 16:47:58 1997// 108 | /z_zone.c/1.4/Mon Feb 3 16:47:58 1997// 109 | /z_zone.h/1.1/Mon Feb 3 16:47:58 1997// 110 | -------------------------------------------------------------------------------- /linuxdoom-1.10/CVS/Repository: -------------------------------------------------------------------------------- 1 | /info/cvsroot/id/id_doom 2 | -------------------------------------------------------------------------------- /linuxdoom-1.10/CVS/Root: -------------------------------------------------------------------------------- 1 | /info/cvsroot/ 2 | -------------------------------------------------------------------------------- /linuxdoom-1.10/DOOMLIC.TXT: -------------------------------------------------------------------------------- 1 | 2 | 3 | LIMITED USE SOFTWARE LICENSE AGREEMENT 4 | 5 | This Limited Use Software License Agreement (the "Agreement") 6 | is a legal agreement between you, the end-user, and Id Software, Inc. 7 | ("ID"). By downloading or purchasing the software material, which 8 | includes source code (the "Source Code"), artwork data, music and 9 | software tools (collectively, the "Software"), you are agreeing to 10 | be bound by the terms of this Agreement. If you do not agree to the 11 | terms of this Agreement, promptly destroy the Software you may have 12 | downloaded or copied. 13 | 14 | ID SOFTWARE LICENSE 15 | 16 | 1. Grant of License. ID grants to you the right to use the 17 | Software. You have no ownership or proprietary rights in or to the 18 | Software, or the Trademark. For purposes of this section, "use" means 19 | loading the Software into RAM, as well as installation on a hard disk 20 | or other storage device. The Software, together with any archive copy 21 | thereof, shall be destroyed when no longer used in accordance with 22 | this Agreement, or when the right to use the Software is terminated. 23 | You agree that the Software will not be shipped, transferred or 24 | exported into any country in violation of the U.S. Export 25 | Administration Act (or any other law governing such matters) and that 26 | you will not utilize, in any other manner, the Software in violation 27 | of any applicable law. 28 | 29 | 2. Permitted Uses. For educational purposes only, you, the 30 | end-user, may use portions of the Source Code, such as particular 31 | routines, to develop your own software, but may not duplicate the 32 | Source Code, except as noted in paragraph 4. The limited right 33 | referenced in the preceding sentence is hereinafter referred to as 34 | "Educational Use." By so exercising the Educational Use right you 35 | shall not obtain any ownership, copyright, proprietary or other 36 | interest in or to the Source Code, or any portion of the Source 37 | Code. You may dispose of your own software in your sole discretion. 38 | With the exception of the Educational Use right, you may not 39 | otherwise use the Software, or an portion of the Software, which 40 | includes the Source Code, for commercial gain. 41 | 42 | 3. Prohibited Uses: Under no circumstances shall you, the 43 | end-user, be permitted, allowed or authorized to commercially exploit 44 | the Software. Neither you nor anyone at your direction shall do any 45 | of the following acts with regard to the Software, or any portion 46 | thereof: 47 | 48 | Rent; 49 | 50 | Sell; 51 | 52 | Lease; 53 | 54 | Offer on a pay-per-play basis; 55 | 56 | Distribute for money or any other consideration; or 57 | 58 | In any other manner and through any medium whatsoever 59 | commercially exploit or use for any commercial purpose. 60 | 61 | Notwithstanding the foregoing prohibitions, you may commercially 62 | exploit the software you develop by exercising the Educational Use 63 | right, referenced in paragraph 2. hereinabove. 64 | 65 | 4. Copyright. The Software and all copyrights related thereto 66 | (including all characters and other images generated by the Software 67 | or depicted in the Software) are owned by ID and is protected by 68 | United States copyright laws and international treaty provisions. 69 | Id shall retain exclusive ownership and copyright in and to the 70 | Software and all portions of the Software and you shall have no 71 | ownership or other proprietary interest in such materials. You must 72 | treat the Software like any other copyrighted material. You may not 73 | otherwise reproduce, copy or disclose to others, in whole or in any 74 | part, the Software. You may not copy the written materials 75 | accompanying the Software. You agree to use your best efforts to 76 | see that any user of the Software licensed hereunder complies with 77 | this Agreement. 78 | 79 | 5. NO WARRANTIES. ID DISCLAIMS ALL WARRANTIES, BOTH EXPRESS 80 | IMPLIED, INCLUDING BUT NOT LIMITED TO, IMPLIED WARRANTIES OF 81 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE WITH RESPECT 82 | TO THE SOFTWARE. THIS LIMITED WARRANTY GIVES YOU SPECIFIC LEGAL 83 | RIGHTS. YOU MAY HAVE OTHER RIGHTS WHICH VARY FROM JURISDICTION TO 84 | JURISDICTION. ID DOES NOT WARRANT THAT THE OPERATION OF THE SOFTWARE 85 | WILL BE UNINTERRUPTED, ERROR FREE OR MEET YOUR SPECIFIC REQUIREMENTS. 86 | THE WARRANTY SET FORTH ABOVE IS IN LIEU OF ALL OTHER EXPRESS 87 | WARRANTIES WHETHER ORAL OR WRITTEN. THE AGENTS, EMPLOYEES, 88 | DISTRIBUTORS, AND DEALERS OF ID ARE NOT AUTHORIZED TO MAKE 89 | MODIFICATIONS TO THIS WARRANTY, OR ADDITIONAL WARRANTIES ON BEHALF 90 | OF ID. 91 | 92 | Exclusive Remedies. The Software is being offered to you 93 | free of any charge. You agree that you have no remedy against ID, its 94 | affiliates, contractors, suppliers, and agents for loss or damage 95 | caused by any defect or failure in the Software regardless of the form 96 | of action, whether in contract, tort, includinegligence, strict 97 | liability or otherwise, with regard to the Software. This Agreement 98 | shall be construed in accordance with and governed by the laws of the 99 | State of Texas. Copyright and other proprietary matters will be 100 | governed by United States laws and international treaties. IN ANY 101 | CASE, ID SHALL NOT BE LIABLE FOR LOSS OF DATA, LOSS OF PROFITS, LOST 102 | SAVINGS, SPECIAL, INCIDENTAL, CONSEQUENTIAL, INDIRECT OR OTHER 103 | SIMILAR DAMAGES ARISING FROM BREACH OF WARRANTY, BREACH OF CONTRACT, 104 | NEGLIGENCE, OR OTHER LEGAL THEORY EVEN IF ID OR ITS AGENT HAS BEEN 105 | ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY 106 | OTHER PARTY. Some jurisdictions do not allow the exclusion or 107 | limitation of incidental or consequential damages, so the above 108 | limitation or exclusion may not apply to you. 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /linuxdoom-1.10/Makefile: -------------------------------------------------------------------------------- 1 | ################################################################ 2 | # 3 | # $Id:$ 4 | # 5 | # $Log:$ 6 | # 7 | CC= gcc # gcc or g++ 8 | 9 | CFLAGS=-g -Wall -DNORMALUNIX -DLINUX # -DUSEASM 10 | LDFLAGS=-L/usr/X11R6/lib 11 | LIBS=-lXext -lX11 -lnsl -lm 12 | 13 | # subdirectory for objects 14 | O=linux 15 | 16 | # not too sophisticated dependency 17 | OBJS= \ 18 | $(O)/doomdef.o \ 19 | $(O)/doomstat.o \ 20 | $(O)/dstrings.o \ 21 | $(O)/i_system.o \ 22 | $(O)/i_sound.o \ 23 | $(O)/i_video.o \ 24 | $(O)/i_net.o \ 25 | $(O)/tables.o \ 26 | $(O)/f_finale.o \ 27 | $(O)/f_wipe.o \ 28 | $(O)/d_main.o \ 29 | $(O)/d_net.o \ 30 | $(O)/d_items.o \ 31 | $(O)/g_game.o \ 32 | $(O)/m_menu.o \ 33 | $(O)/m_misc.o \ 34 | $(O)/m_argv.o \ 35 | $(O)/m_bbox.o \ 36 | $(O)/m_fixed.o \ 37 | $(O)/m_swap.o \ 38 | $(O)/m_cheat.o \ 39 | $(O)/m_random.o \ 40 | $(O)/am_map.o \ 41 | $(O)/p_ceilng.o \ 42 | $(O)/p_doors.o \ 43 | $(O)/p_enemy.o \ 44 | $(O)/p_floor.o \ 45 | $(O)/p_inter.o \ 46 | $(O)/p_lights.o \ 47 | $(O)/p_map.o \ 48 | $(O)/p_maputl.o \ 49 | $(O)/p_plats.o \ 50 | $(O)/p_pspr.o \ 51 | $(O)/p_setup.o \ 52 | $(O)/p_sight.o \ 53 | $(O)/p_spec.o \ 54 | $(O)/p_switch.o \ 55 | $(O)/p_mobj.o \ 56 | $(O)/p_telept.o \ 57 | $(O)/p_tick.o \ 58 | $(O)/p_saveg.o \ 59 | $(O)/p_user.o \ 60 | $(O)/r_bsp.o \ 61 | $(O)/r_data.o \ 62 | $(O)/r_draw.o \ 63 | $(O)/r_main.o \ 64 | $(O)/r_plane.o \ 65 | $(O)/r_segs.o \ 66 | $(O)/r_sky.o \ 67 | $(O)/r_things.o \ 68 | $(O)/w_wad.o \ 69 | $(O)/wi_stuff.o \ 70 | $(O)/v_video.o \ 71 | $(O)/st_lib.o \ 72 | $(O)/st_stuff.o \ 73 | $(O)/hu_stuff.o \ 74 | $(O)/hu_lib.o \ 75 | $(O)/s_sound.o \ 76 | $(O)/z_zone.o \ 77 | $(O)/info.o \ 78 | $(O)/sounds.o 79 | 80 | all: $(O)/linuxxdoom 81 | 82 | clean: 83 | rm -f *.o *~ *.flc 84 | rm -f linux/* 85 | 86 | $(O)/linuxxdoom: $(OBJS) $(O)/i_main.o 87 | $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(O)/i_main.o \ 88 | -o $(O)/linuxxdoom $(LIBS) 89 | 90 | $(O)/%.o: %.c 91 | $(CC) $(CFLAGS) -c $< -o $@ 92 | 93 | ############################################################# 94 | # 95 | ############################################################# -------------------------------------------------------------------------------- /linuxdoom-1.10/README.b: -------------------------------------------------------------------------------- 1 | 2 | README for Linux DOOM Source distribution 3 | ========================================= 4 | 5 | 6 | DISCLAIMER 7 | ---------- 8 | This is not "The DOOM Source Code" dump for a bunch 9 | of reasons. It is based on a DOOM development directory 10 | snapshot as of January 10th, but has been stripped and 11 | changed. Thus it is the DOOM source, but there are many 12 | minor differences to the source as last used by id 13 | Software. 14 | 15 | Note that thus neither John Carmack nor Dave Taylor nor 16 | anybody else at id is responsible for the contents of 17 | this archive, or the changes introduced to the original 18 | source. 19 | 20 | If there are any questions, contact me at bk@gamers.org, 21 | or preferably post to the mailing list at 22 | 23 | doom-editing@gamers.org 24 | 25 | (send mail to majordomo@gamers.org, content just 26 | a single "info doom-editing"). I will post any updates 27 | or notifcation of corrections there. I will probably 28 | put some stuff at 29 | 30 | http://www.gamers.org/dEngine/doom/ 31 | 32 | as well. Look there for the "Unofficial DOOM Specs" as 33 | minimal recommended documentation. 34 | 35 | 36 | 37 | REMARKS 38 | ------- 39 | I made a few minor bug fixes, added some experimental sound 40 | code, and, and changed the handling of IWAD dependend game 41 | modes. Most of the changes though have been shuffling 42 | around sources in a sometimes futile attempt to separate 43 | modules more cleanly, and make certain parts easier 44 | to locate and modify. There is still much left to do, but 45 | I hope that the current source is a good base to start 46 | with, especially with a cooperative effort in mind. Those 47 | so inclined will find the source prepared for CVS. 48 | 49 | There is a list of changes and fixes I did not get around 50 | to in TODO, and an incomplete worklog in ChangeLog, that 51 | also includes some minor ToDo statements scattered throughout 52 | the log. 53 | 54 | 55 | a) Linux SVGA 56 | There is no SVGA support. For development and debug 57 | purposes, the X11 version seems to be more handy. 58 | 59 | b) Sound - see README.sound, 60 | and the sndserver.tgz archive. 61 | 62 | c) GLDOOM - see README.gl 63 | 64 | d) Win32 65 | There was no Win32 support in the original dump. 66 | 67 | e) DOS 68 | Original DOS support (including the texture 69 | mapping and fixed point assembler) has been 70 | removed, mainly because of the lack of sound 71 | support. 72 | 73 | f) DoomEd 74 | The NeXTStep DoomEd sources in the dump were 75 | garbled (filenames - prolly an issue of ISO9660 76 | with or w/o extensions). Somehow Bear never got 77 | around to send me a list of the correct filenames, 78 | and I won't bother guessing without a NeXT box 79 | at hand. 80 | 81 | There is a plethora of useful editors 82 | for DOOM. I suggest using DEU for X11. 83 | 84 | g) BSP Tools 85 | The BSP builder and other tools have 86 | been released by John Carmack long ago, 87 | and since improved/replaced by others. 88 | Again, I recommend taking a pick among 89 | the tools available for Linux. 90 | 91 | h) DOOM game tools 92 | There are a number of tools that have 93 | not been released, namely those which 94 | compiled the Things and State Tables, 95 | the frame animation LUT's, sound tables 96 | etc. Basically, they compile similarly 97 | complex LUT's to generate C files. The 98 | tools are omitted from this distribution. 99 | 100 | There are some files in the 101 | distribution (info.h/c, sounds.h/c) 102 | that are essentially the output of these 103 | tools. This is the data that defines 104 | DOOM (as a game) for all practical 105 | purposes. 106 | 107 | I recommend keeping them, as they are 108 | part of the source. In the long run, 109 | handling them as well as the action/ 110 | animation functions as a separate game.so 111 | library (as with Quake2) seems to be a 112 | good idea. 113 | 114 | i) Artwork 115 | Neither the original artwork nor the 116 | misc. WAD files are included in this 117 | archive. You will at least need the 118 | shareware WAD file to run the executable, 119 | but it shouldn't be to difficult to get 120 | a hold of that. 121 | 122 | Note that the mechanism to detect the 123 | presence of a registered or commercial 124 | version is still in the source, and 125 | homebrew maps are still disabled. This 126 | is easily removed now, but as FinalDOOM, 127 | Ultimate DOOM and DOOM 2 are still in 128 | the shops, it is probably polite not 129 | to distribute a source or binary without 130 | that mechanism. 131 | 132 | This version of Linuxdoom supports Plutonia 133 | and TNT WAD from FinalDOOM as well. No 134 | guarantees, though. 135 | 136 | 137 | Enjoy! 138 | 139 | 140 | b. 97/12/22 141 | -------------------------------------------------------------------------------- /linuxdoom-1.10/README.book: -------------------------------------------------------------------------------- 1 | 2 | The DOOM Book 3 | 4 | Shortly after the Wolfenstein 3D source release, 5 | I sent a mail to Jay Wilbur suggesting a book 6 | about the DOOM engine. I anticipated a similar 7 | release of the DOOM sources within a year or 8 | two, and the obvious problems with the Wolfenstein 9 | sources (lack of accompanying artwork, a code 10 | base not maintained for quite some time) seemed 11 | to demand a better approach. I talked to some 12 | publishing company reps at the Book Fair in 1995, 13 | and while they were cautiously interested, id was 14 | not. 15 | 16 | In the last weeks of 1996, following a visit at 17 | id Software two months earlier, and after the 18 | departure of Jay Wilbur, John Carmack asked me 19 | whether I was still interested in doing the book. 20 | I was, Bear sent me a code dump, and Todd 21 | Hollenshead set out to address the legal concerns 22 | (of which were many). 23 | 24 | Unfortunately, what might have worked in 1995 25 | turned out to be a doomed attempt in 1997. I won't 26 | go into the details - let's just say that my 27 | leaving university and going back to full time 28 | writing for a living repeatedly forced me to 29 | change priorities on what looked more and more 30 | like a project unlikely to generate any revenue. 31 | 32 | By mid of the year, when the legal issues had 33 | finally been settled, it didn't look like I was 34 | going to find a publisher at all. Following the 35 | Book Fair in 1997 and some more discussions 36 | (with about a dozen publishers, total), I gritted 37 | my teeth and decided to abandon the project. 38 | 39 | Note that the book project as such wasn't supposed 40 | to hold up the source release to the public. 41 | However, given the legal concerns relating to 42 | the third party sound code in DOS DOOM, and the 43 | lack of Win32 support as well as the advantages of 44 | an OpenGL based release, the idea was to put 45 | together a consistent, stable code base prior to 46 | public release - most of which was supposed to be 47 | an offspring of my reformatting and modifying the 48 | code for the book. 49 | 50 | None of this worked out as intended. However, I 51 | hope that, at long last, this distribution 52 | will finally provide a good point to start for 53 | any cooperative effort to extend the already 54 | impressive lifespan of DOOM into the age of 55 | multiplayer servers and hardware-accelerated 56 | clients. 57 | 58 | -------------------------------------------------------------------------------- /linuxdoom-1.10/README.sound: -------------------------------------------------------------------------------- 1 | 2 | README: sound in DOOM 3 | 4 | 5 | 1) DOS/Win32 sound 6 | 7 | id licensed a third party sound library called 8 | DMX for DOS DOOM. The situation exhibited 9 | many symptons of serious NIH "Not Invented Here"), 10 | and one of the consequences is that the original 11 | DOOM sound code does not work without DMX. As 12 | DMX is not publicly available, the original DOOM 13 | sound support is removed. 14 | 15 | Win32 was not supported in the source dump I got. 16 | I have no knowledge how the WinDOOM port did the 17 | sound handling. A Win32 port should probaly rely on 18 | DirectSound. So far, the Win32 glDOOM port Jim Dose 19 | is working on has no sound support. 20 | 21 | In consequence, the only target with a working sound 22 | code is UNIX, which I could only verify with Linux 23 | on Intel586. 24 | 25 | 2) Linux sound 26 | 27 | DOOM for Linux used a separate process, sndserver. 28 | 29 | Quoting Dave Taylor: 30 | 31 | "Sound drivers should be an asychronous model, either 32 | a seperate thread or a seperate process. This is 33 | because sound should always be fed to the card without 34 | interruption or else you get pops and with low latency 35 | or else you get angry players. 36 | 37 | Now it turns out that this kind of code isn't too fun 38 | to write. In the days of Linux Doom, threads were not a 39 | happnin thing in Linux. In fact, they still largely 40 | aren't. You can use them these days if you have gnu's 41 | libc installed, but you still can't debug them because 42 | gdb doesn't support them properly yet. I believe the 43 | original seperate process had a bad latency delay 44 | because of the time it took for commands to be flushed 45 | through the pipe used to communicate with the seperate 46 | process. I should have looked into this more thoroughly. 47 | 48 | In Quake, I discovered that I could feed multiple 49 | acknowledgements to a SoundBlaster or compatible without 50 | any side-effects such as pops or other malfunctions. 51 | This discovery led me to switch to a completely synchronous 52 | model, much much easier to debug and understand, so I 53 | think this was fairly intelligent. Although we had to 54 | populate the game with calls in the right places to keep 55 | the sound buffers fed, and although it wasn't gauranteed to 56 | be always fed, well over 99% of the time, it was fed, and 57 | your the latency was never worse than the frequency of your 58 | refills (several times per frame) plus a small lead time 59 | (40th of a second?)." 60 | 61 | The separate sndserver code base introduced some redundancy 62 | (WAD access for sound lumps) for each UNIX target (Sun, SGI, 63 | Linux) and more differences between DOS and UNIX version. 64 | However, I kept the IPC based parts in the source, and 65 | separated the sndserver target in another directory to avoid 66 | further redundancy. There seem to be a few bug-like things 67 | going on in the sndserver that do not receive penalty as 68 | the program has to do only a simple task. One example would 69 | be a libc realloc mixed with zone memory allocation. 70 | 71 | Ungraceful and untimely demise of Linuxdoom (core instead 72 | of I_Error) will leave idle sndserver processes in your 73 | system, blocking /dev/bsp. Kill them manually. 74 | 75 | I put the non-redundant parts of the sndserver program 76 | into the i_sound module of doom, and with the SND_SERV 77 | compiler switch you can choose to use the internal sound 78 | support. However, there is a problem with e.g. the 79 | double shotgun and the plasma gun - walk up to a wall, 80 | face it straight, and fire. The sound output is crappy. 81 | This vanishes with decreasing screen size. A similar 82 | problem occurs with trimer driven asynchronous output 83 | enabled by SNDINTR. 84 | 85 | I agree with Dave that threads would be preferable. 86 | With respect to Linux ports of John Carmack's next 87 | Trinity engine, this one will rely on Win32 88 | multithreading e.g. for input sampling. So the Linux 89 | community will have to sort out threads anyway :-). 90 | 91 | To improve the current sound server, other means of 92 | IPC should take care of the latency. The mixing 93 | buffer/command buffer as shared memory comes to mind. 94 | 95 | 96 | 97 | 3) Music support 98 | 99 | There is, and was, no music support in Linuxdoom. Fine with 100 | me - I wouldn't give a bat's tail feathers for DOOM music. 101 | Your mileage may vary. There are a few leftovers of the DOS 102 | music support also interfacing DMX, so there is a place 103 | to start. However, in the age of CDROM based music, I 104 | recommend getting e.g. Workman to cooperate with DOOM 105 | (currently, DOOM accessing the soundcard SpekerOut 106 | interferes with Workman controlling the CD drives 107 | SpeakerOut), so musci could be chosen and run completely 108 | independend of the game. You could try Linuxdoom with 109 | Q2 music that way. 110 | 111 | -------------------------------------------------------------------------------- /linuxdoom-1.10/TODO: -------------------------------------------------------------------------------- 1 | 2 | - create Web repository for sources, patches, 3 | news, and pointer to doom-editing mailing 4 | list. 5 | 6 | - get DOOM Public License from id 7 | 8 | ----------------------------------------------- 9 | 10 | - remove m_fixed, switch to floating point 11 | More stable, and prolly even faster. 12 | 13 | - make SCREENWIDTH/HEIGHT work at startup? 14 | Well, the HUD/STBar stuff is tied to the 15 | scales implied by the graphics. Rather do 16 | GLDOOM and use texture mapping. 17 | 18 | - fix aspect ratio? 19 | 320x200 is nothing viable nowadays. 20 | A 320x240 base (4:3) would be a lot better. 21 | See above on width/height. 22 | 23 | - limited look up/down by y-shearing? 24 | Prolly not worth it, rather switch to GLDOOM. 25 | 26 | - switch to C++? 27 | The action function pointers have varying 28 | argument lists (no parameter, one, etc.). 29 | C++ doesn't like that much. A major rewrite. 30 | 31 | - switch to doommain.c plus libdoom? Have 32 | libref, libgame etc.? 33 | Another major rewrite. 34 | 35 | - use XFree86 DGA, prolly not that much faster 36 | than MIT SHM, but allows for directly sampled 37 | mouse (and even freelook). Recommended for 38 | GLDOOM. 39 | 40 | - put together an accompanying developer toolkit 41 | source distribution: DEU, RMB, BSP for Linux/X. 42 | 43 | - move info.h, info.c, sounds.h, sounds.c and 44 | other data to a separate lump in the WAD, 45 | or into a libgame.so, to separate the 46 | generic stuff (refresh, I/O) from the 47 | DOOM specifics. 48 | 49 | - decide whether precaching all sounds is 50 | better than retrieving and releasing 51 | every so often. DOOM seems to do that 52 | frequently (8bit stuff, originally for 53 | DOS), and the Linux sound is 16bit 54 | (conversion in the mixing, requires 55 | some padding) - we prolly got the memory 56 | to spare. 57 | 58 | - 16bpp CLUT. The lightmaps and the 59 | framebuffer could be changed to switch 60 | to 64K colors. Prolly better to do 61 | GLDOOM right away. 62 | 63 | - remove checks for commercial etc., in 64 | non-essential issues (enabling PWAD's). 65 | 66 | - change (simplify) determination of 67 | sky texture (done by game version). 68 | Explicit? 69 | 70 | - remove all game version checks 71 | 72 | - different handling of Demo - don't 73 | exit on "different game version" 74 | 75 | - how about shareware/retail "You are here" 76 | intermission animation? Wasn't in 77 | commercial (DOOM 2). 78 | 79 | - double shotgun in DOOM1, all weapons with 80 | shareware 81 | 82 | - checks for required lumps. We need fallbacks 83 | for lumps that are not present, that is, 84 | default sounds etc. to be used instead, 85 | or removing THINGS w/o sprites etc. 86 | 87 | - client/server? I'd suggest ripping off some stuff 88 | from the abandoned IBM WebView project 89 | 90 | - Blockmap 91 | The BLOCKMAP lump might be (partly) redundant, 92 | as the BSP allows for clipping (except certain 93 | LineDefs that will not spawn Segs). 94 | 95 | - LOS 96 | REJECT and intersection based LOS checking could be 97 | done using the BSP. In case of REJECT, certain 98 | monster AI special effects would be lost, though. 99 | 100 | - correct handling of height in collision. This is 101 | not done, and the checks are scattered around in 102 | many places. It does require handling of "player 103 | on top of monster" situations, too - we have to 104 | make sure the players falls off far enough to 105 | avoid getting "stuck in monster". 106 | 107 | - remove obsolete menus (Detail. Music Volume?) 108 | 109 | - clip explosion range damage (and sprites) using 110 | REJECT? That is, if one Sector/SSector not 111 | visible from the other, do not apply damage, 112 | not render sprite if player in other sector. 113 | Hmmm - explosion behind small pillar might not be 114 | visible at all, but do we care? 115 | 116 | 117 | - Ungraceful and untimely demise of Linuxdoom (core 118 | instead of I_Error) will leave idle sndserver 119 | processes in your system, blocking /dev/bsp. 120 | A timeout on lack of input for "sndserver"? 121 | 122 | - threaded sndserver? SHM mixing buffer? 123 | Or internal, timer-based? 124 | -------------------------------------------------------------------------------- /linuxdoom-1.10/am_map.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // AutoMap module. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | #ifndef __AMMAP_H__ 23 | #define __AMMAP_H__ 24 | 25 | // Used by ST StatusBar stuff. 26 | #define AM_MSGHEADER (('a'<<24)+('m'<<16)) 27 | #define AM_MSGENTERED (AM_MSGHEADER | ('e'<<8)) 28 | #define AM_MSGEXITED (AM_MSGHEADER | ('x'<<8)) 29 | 30 | 31 | // Called by main loop. 32 | boolean AM_Responder (event_t* ev); 33 | 34 | // Called by main loop. 35 | void AM_Ticker (void); 36 | 37 | // Called by main loop, 38 | // called instead of view drawer if automap active. 39 | void AM_Drawer (void); 40 | 41 | // Called to force the automap to quit 42 | // if the level is completed while it is up. 43 | void AM_Stop (void); 44 | 45 | 46 | 47 | #endif 48 | //----------------------------------------------------------------------------- 49 | // 50 | // $Log:$ 51 | // 52 | //----------------------------------------------------------------------------- 53 | -------------------------------------------------------------------------------- /linuxdoom-1.10/d_event.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __D_EVENT__ 24 | #define __D_EVENT__ 25 | 26 | 27 | #include "doomtype.h" 28 | 29 | 30 | // 31 | // Event handling. 32 | // 33 | 34 | // Input event types. 35 | typedef enum 36 | { 37 | ev_keydown, 38 | ev_keyup, 39 | ev_mouse, 40 | ev_joystick 41 | } evtype_t; 42 | 43 | // Event structure. 44 | typedef struct 45 | { 46 | evtype_t type; 47 | int data1; // keys / mouse/joystick buttons 48 | int data2; // mouse/joystick x move 49 | int data3; // mouse/joystick y move 50 | } event_t; 51 | 52 | 53 | typedef enum 54 | { 55 | ga_nothing, 56 | ga_loadlevel, 57 | ga_newgame, 58 | ga_loadgame, 59 | ga_savegame, 60 | ga_playdemo, 61 | ga_completed, 62 | ga_victory, 63 | ga_worlddone, 64 | ga_screenshot 65 | } gameaction_t; 66 | 67 | 68 | 69 | // 70 | // Button/action code definitions. 71 | // 72 | typedef enum 73 | { 74 | // Press "Fire". 75 | BT_ATTACK = 1, 76 | // Use button, to open doors, activate switches. 77 | BT_USE = 2, 78 | 79 | // Flag: game events, not really buttons. 80 | BT_SPECIAL = 128, 81 | BT_SPECIALMASK = 3, 82 | 83 | // Flag, weapon change pending. 84 | // If true, the next 3 bits hold weapon num. 85 | BT_CHANGE = 4, 86 | // The 3bit weapon mask and shift, convenience. 87 | BT_WEAPONMASK = (8+16+32), 88 | BT_WEAPONSHIFT = 3, 89 | 90 | // Pause the game. 91 | BTS_PAUSE = 1, 92 | // Save the game at each console. 93 | BTS_SAVEGAME = 2, 94 | 95 | // Savegame slot numbers 96 | // occupy the second byte of buttons. 97 | BTS_SAVEMASK = (4+8+16), 98 | BTS_SAVESHIFT = 2, 99 | 100 | } buttoncode_t; 101 | 102 | 103 | 104 | 105 | // 106 | // GLOBAL VARIABLES 107 | // 108 | #define MAXEVENTS 64 109 | 110 | extern event_t events[MAXEVENTS]; 111 | extern int eventhead; 112 | extern int eventtail; 113 | 114 | extern gameaction_t gameaction; 115 | 116 | 117 | #endif 118 | //----------------------------------------------------------------------------- 119 | // 120 | // $Log:$ 121 | // 122 | //----------------------------------------------------------------------------- 123 | -------------------------------------------------------------------------------- /linuxdoom-1.10/d_items.c: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // $Log:$ 18 | // 19 | // DESCRIPTION: 20 | // 21 | //----------------------------------------------------------------------------- 22 | 23 | static const char 24 | rcsid[] = "$Id:$"; 25 | 26 | // We are referring to sprite numbers. 27 | #include "info.h" 28 | 29 | #ifdef __GNUG__ 30 | #pragma implementation "d_items.h" 31 | #endif 32 | #include "d_items.h" 33 | 34 | 35 | // 36 | // PSPRITE ACTIONS for waepons. 37 | // This struct controls the weapon animations. 38 | // 39 | // Each entry is: 40 | // ammo/amunition type 41 | // upstate 42 | // downstate 43 | // readystate 44 | // atkstate, i.e. attack/fire/hit frame 45 | // flashstate, muzzle flash 46 | // 47 | weaponinfo_t weaponinfo[NUMWEAPONS] = 48 | { 49 | { 50 | // fist 51 | am_noammo, 52 | S_PUNCHUP, 53 | S_PUNCHDOWN, 54 | S_PUNCH, 55 | S_PUNCH1, 56 | S_NULL 57 | }, 58 | { 59 | // pistol 60 | am_clip, 61 | S_PISTOLUP, 62 | S_PISTOLDOWN, 63 | S_PISTOL, 64 | S_PISTOL1, 65 | S_PISTOLFLASH 66 | }, 67 | { 68 | // shotgun 69 | am_shell, 70 | S_SGUNUP, 71 | S_SGUNDOWN, 72 | S_SGUN, 73 | S_SGUN1, 74 | S_SGUNFLASH1 75 | }, 76 | { 77 | // chaingun 78 | am_clip, 79 | S_CHAINUP, 80 | S_CHAINDOWN, 81 | S_CHAIN, 82 | S_CHAIN1, 83 | S_CHAINFLASH1 84 | }, 85 | { 86 | // missile launcher 87 | am_misl, 88 | S_MISSILEUP, 89 | S_MISSILEDOWN, 90 | S_MISSILE, 91 | S_MISSILE1, 92 | S_MISSILEFLASH1 93 | }, 94 | { 95 | // plasma rifle 96 | am_cell, 97 | S_PLASMAUP, 98 | S_PLASMADOWN, 99 | S_PLASMA, 100 | S_PLASMA1, 101 | S_PLASMAFLASH1 102 | }, 103 | { 104 | // bfg 9000 105 | am_cell, 106 | S_BFGUP, 107 | S_BFGDOWN, 108 | S_BFG, 109 | S_BFG1, 110 | S_BFGFLASH1 111 | }, 112 | { 113 | // chainsaw 114 | am_noammo, 115 | S_SAWUP, 116 | S_SAWDOWN, 117 | S_SAW, 118 | S_SAW1, 119 | S_NULL 120 | }, 121 | { 122 | // super shotgun 123 | am_shell, 124 | S_DSGUNUP, 125 | S_DSGUNDOWN, 126 | S_DSGUN, 127 | S_DSGUN1, 128 | S_DSGUNFLASH1 129 | }, 130 | }; 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /linuxdoom-1.10/d_items.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Items: key cards, artifacts, weapon, ammunition. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __D_ITEMS__ 24 | #define __D_ITEMS__ 25 | 26 | #include "doomdef.h" 27 | 28 | #ifdef __GNUG__ 29 | #pragma interface 30 | #endif 31 | 32 | 33 | // Weapon info: sprite frames, ammunition use. 34 | typedef struct 35 | { 36 | ammotype_t ammo; 37 | int upstate; 38 | int downstate; 39 | int readystate; 40 | int atkstate; 41 | int flashstate; 42 | 43 | } weaponinfo_t; 44 | 45 | extern weaponinfo_t weaponinfo[NUMWEAPONS]; 46 | 47 | #endif 48 | //----------------------------------------------------------------------------- 49 | // 50 | // $Log:$ 51 | // 52 | //----------------------------------------------------------------------------- 53 | -------------------------------------------------------------------------------- /linuxdoom-1.10/d_main.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // $Log:$ 18 | // 19 | // DESCRIPTION: 20 | // System specific interface stuff. 21 | // 22 | //----------------------------------------------------------------------------- 23 | 24 | 25 | #ifndef __D_MAIN__ 26 | #define __D_MAIN__ 27 | 28 | #include "d_event.h" 29 | 30 | #ifdef __GNUG__ 31 | #pragma interface 32 | #endif 33 | 34 | 35 | 36 | #define MAXWADFILES 20 37 | extern char* wadfiles[MAXWADFILES]; 38 | 39 | void D_AddFile (char *file); 40 | 41 | 42 | 43 | // 44 | // D_DoomMain() 45 | // Not a globally visible function, just included for source reference, 46 | // calls all startup code, parses command line options. 47 | // If not overrided by user input, calls N_AdvanceDemo. 48 | // 49 | void D_DoomMain (void); 50 | 51 | // Called by IO functions when input is detected. 52 | void D_PostEvent (event_t* ev); 53 | 54 | 55 | 56 | // 57 | // BASE LEVEL 58 | // 59 | void D_PageTicker (void); 60 | void D_PageDrawer (void); 61 | void D_AdvanceDemo (void); 62 | void D_StartTitle (void); 63 | 64 | #endif 65 | -------------------------------------------------------------------------------- /linuxdoom-1.10/d_net.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Networking stuff. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __D_NET__ 24 | #define __D_NET__ 25 | 26 | #include "d_player.h" 27 | 28 | 29 | #ifdef __GNUG__ 30 | #pragma interface 31 | #endif 32 | 33 | 34 | // 35 | // Network play related stuff. 36 | // There is a data struct that stores network 37 | // communication related stuff, and another 38 | // one that defines the actual packets to 39 | // be transmitted. 40 | // 41 | 42 | #define DOOMCOM_ID 0x12345678l 43 | 44 | // Max computers/players in a game. 45 | #define MAXNETNODES 8 46 | 47 | 48 | // Networking and tick handling related. 49 | #define BACKUPTICS 12 50 | 51 | typedef enum 52 | { 53 | CMD_SEND = 1, 54 | CMD_GET = 2 55 | 56 | } command_t; 57 | 58 | 59 | // 60 | // Network packet data. 61 | // 62 | typedef struct 63 | { 64 | // High bit is retransmit request. 65 | unsigned checksum; 66 | // Only valid if NCMD_RETRANSMIT. 67 | byte retransmitfrom; 68 | 69 | byte starttic; 70 | byte player; 71 | byte numtics; 72 | ticcmd_t cmds[BACKUPTICS]; 73 | 74 | } doomdata_t; 75 | 76 | 77 | 78 | 79 | typedef struct 80 | { 81 | // Supposed to be DOOMCOM_ID? 82 | long id; 83 | 84 | // DOOM executes an int to execute commands. 85 | short intnum; 86 | // Communication between DOOM and the driver. 87 | // Is CMD_SEND or CMD_GET. 88 | short command; 89 | // Is dest for send, set by get (-1 = no packet). 90 | short remotenode; 91 | 92 | // Number of bytes in doomdata to be sent 93 | short datalength; 94 | 95 | // Info common to all nodes. 96 | // Console is allways node 0. 97 | short numnodes; 98 | // Flag: 1 = no duplication, 2-5 = dup for slow nets. 99 | short ticdup; 100 | // Flag: 1 = send a backup tic in every packet. 101 | short extratics; 102 | // Flag: 1 = deathmatch. 103 | short deathmatch; 104 | // Flag: -1 = new game, 0-5 = load savegame 105 | short savegame; 106 | short episode; // 1-3 107 | short map; // 1-9 108 | short skill; // 1-5 109 | 110 | // Info specific to this node. 111 | short consoleplayer; 112 | short numplayers; 113 | 114 | // These are related to the 3-display mode, 115 | // in which two drones looking left and right 116 | // were used to render two additional views 117 | // on two additional computers. 118 | // Probably not operational anymore. 119 | // 1 = left, 0 = center, -1 = right 120 | short angleoffset; 121 | // 1 = drone 122 | short drone; 123 | 124 | // The packet data to be sent. 125 | doomdata_t data; 126 | 127 | } doomcom_t; 128 | 129 | 130 | 131 | // Create any new ticcmds and broadcast to other players. 132 | void NetUpdate (void); 133 | 134 | // Broadcasts special packets to other players 135 | // to notify of game exit 136 | void D_QuitNetGame (void); 137 | 138 | //? how many ticks to run? 139 | void TryRunTics (void); 140 | 141 | 142 | #endif 143 | 144 | //----------------------------------------------------------------------------- 145 | // 146 | // $Log:$ 147 | // 148 | //----------------------------------------------------------------------------- 149 | 150 | -------------------------------------------------------------------------------- /linuxdoom-1.10/d_player.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __D_PLAYER__ 24 | #define __D_PLAYER__ 25 | 26 | 27 | // The player data structure depends on a number 28 | // of other structs: items (internal inventory), 29 | // animation states (closely tied to the sprites 30 | // used to represent them, unfortunately). 31 | #include "d_items.h" 32 | #include "p_pspr.h" 33 | 34 | // In addition, the player is just a special 35 | // case of the generic moving object/actor. 36 | #include "p_mobj.h" 37 | 38 | // Finally, for odd reasons, the player input 39 | // is buffered within the player data struct, 40 | // as commands per game tick. 41 | #include "d_ticcmd.h" 42 | 43 | #ifdef __GNUG__ 44 | #pragma interface 45 | #endif 46 | 47 | 48 | 49 | 50 | // 51 | // Player states. 52 | // 53 | typedef enum 54 | { 55 | // Playing or camping. 56 | PST_LIVE, 57 | // Dead on the ground, view follows killer. 58 | PST_DEAD, 59 | // Ready to restart/respawn??? 60 | PST_REBORN 61 | 62 | } playerstate_t; 63 | 64 | 65 | // 66 | // Player internal flags, for cheats and debug. 67 | // 68 | typedef enum 69 | { 70 | // No clipping, walk through barriers. 71 | CF_NOCLIP = 1, 72 | // No damage, no health loss. 73 | CF_GODMODE = 2, 74 | // Not really a cheat, just a debug aid. 75 | CF_NOMOMENTUM = 4 76 | 77 | } cheat_t; 78 | 79 | 80 | // 81 | // Extended player object info: player_t 82 | // 83 | typedef struct player_s 84 | { 85 | mobj_t* mo; 86 | playerstate_t playerstate; 87 | ticcmd_t cmd; 88 | 89 | // Determine POV, 90 | // including viewpoint bobbing during movement. 91 | // Focal origin above r.z 92 | fixed_t viewz; 93 | // Base height above floor for viewz. 94 | fixed_t viewheight; 95 | // Bob/squat speed. 96 | fixed_t deltaviewheight; 97 | // bounded/scaled total momentum. 98 | fixed_t bob; 99 | 100 | // This is only used between levels, 101 | // mo->health is used during levels. 102 | int health; 103 | int armorpoints; 104 | // Armor type is 0-2. 105 | int armortype; 106 | 107 | // Power ups. invinc and invis are tic counters. 108 | int powers[NUMPOWERS]; 109 | boolean cards[NUMCARDS]; 110 | boolean backpack; 111 | 112 | // Frags, kills of other players. 113 | int frags[MAXPLAYERS]; 114 | weapontype_t readyweapon; 115 | 116 | // Is wp_nochange if not changing. 117 | weapontype_t pendingweapon; 118 | 119 | boolean weaponowned[NUMWEAPONS]; 120 | int ammo[NUMAMMO]; 121 | int maxammo[NUMAMMO]; 122 | 123 | // True if button down last tic. 124 | int attackdown; 125 | int usedown; 126 | 127 | // Bit flags, for cheats and debug. 128 | // See cheat_t, above. 129 | int cheats; 130 | 131 | // Refired shots are less accurate. 132 | int refire; 133 | 134 | // For intermission stats. 135 | int killcount; 136 | int itemcount; 137 | int secretcount; 138 | 139 | // Hint messages. 140 | char* message; 141 | 142 | // For screen flashing (red or bright). 143 | int damagecount; 144 | int bonuscount; 145 | 146 | // Who did damage (NULL for floors/ceilings). 147 | mobj_t* attacker; 148 | 149 | // So gun flashes light up areas. 150 | int extralight; 151 | 152 | // Current PLAYPAL, ??? 153 | // can be set to REDCOLORMAP for pain, etc. 154 | int fixedcolormap; 155 | 156 | // Player skin colorshift, 157 | // 0-3 for which color to draw player. 158 | int colormap; 159 | 160 | // Overlay view sprites (gun, etc). 161 | pspdef_t psprites[NUMPSPRITES]; 162 | 163 | // True if secret level has been done. 164 | boolean didsecret; 165 | 166 | } player_t; 167 | 168 | 169 | // 170 | // INTERMISSION 171 | // Structure passed e.g. to WI_Start(wb) 172 | // 173 | typedef struct 174 | { 175 | boolean in; // whether the player is in game 176 | 177 | // Player stats, kills, collected items etc. 178 | int skills; 179 | int sitems; 180 | int ssecret; 181 | int stime; 182 | int frags[4]; 183 | int score; // current score on entry, modified on return 184 | 185 | } wbplayerstruct_t; 186 | 187 | typedef struct 188 | { 189 | int epsd; // episode # (0-2) 190 | 191 | // if true, splash the secret level 192 | boolean didsecret; 193 | 194 | // previous and next levels, origin 0 195 | int last; 196 | int next; 197 | 198 | int maxkills; 199 | int maxitems; 200 | int maxsecret; 201 | int maxfrags; 202 | 203 | // the par time 204 | int partime; 205 | 206 | // index of this player in game 207 | int pnum; 208 | 209 | wbplayerstruct_t plyr[MAXPLAYERS]; 210 | 211 | } wbstartstruct_t; 212 | 213 | 214 | #endif 215 | //----------------------------------------------------------------------------- 216 | // 217 | // $Log:$ 218 | // 219 | //----------------------------------------------------------------------------- 220 | -------------------------------------------------------------------------------- /linuxdoom-1.10/d_textur.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Typedefs related to to textures etc., 19 | // isolated here to make it easier separating modules. 20 | // 21 | //----------------------------------------------------------------------------- 22 | 23 | 24 | #ifndef __D_TEXTUR__ 25 | #define __D_TEXTUR__ 26 | 27 | #include "doomtype.h" 28 | 29 | 30 | 31 | 32 | // 33 | // Flats? 34 | // 35 | // a pic is an unmasked block of pixels 36 | typedef struct 37 | { 38 | byte width; 39 | byte height; 40 | byte data; 41 | } pic_t; 42 | 43 | 44 | 45 | 46 | #endif 47 | //----------------------------------------------------------------------------- 48 | // 49 | // $Log:$ 50 | // 51 | //----------------------------------------------------------------------------- 52 | -------------------------------------------------------------------------------- /linuxdoom-1.10/d_think.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // MapObj data. Map Objects or mobjs are actors, entities, 19 | // thinker, take-your-pick... anything that moves, acts, or 20 | // suffers state changes of more or less violent nature. 21 | // 22 | //----------------------------------------------------------------------------- 23 | 24 | 25 | #ifndef __D_THINK__ 26 | #define __D_THINK__ 27 | 28 | 29 | #ifdef __GNUG__ 30 | #pragma interface 31 | #endif 32 | 33 | 34 | 35 | // 36 | // Experimental stuff. 37 | // To compile this as "ANSI C with classes" 38 | // we will need to handle the various 39 | // action functions cleanly. 40 | // 41 | typedef void (*actionf_v)(); 42 | typedef void (*actionf_p1)( void* ); 43 | typedef void (*actionf_p2)( void*, void* ); 44 | 45 | typedef union 46 | { 47 | actionf_p1 acp1; 48 | actionf_v acv; 49 | actionf_p2 acp2; 50 | 51 | } actionf_t; 52 | 53 | 54 | 55 | 56 | 57 | // Historically, "think_t" is yet another 58 | // function pointer to a routine to handle 59 | // an actor. 60 | typedef actionf_t think_t; 61 | 62 | 63 | // Doubly linked list of actors. 64 | typedef struct thinker_s 65 | { 66 | struct thinker_s* prev; 67 | struct thinker_s* next; 68 | think_t function; 69 | 70 | } thinker_t; 71 | 72 | 73 | 74 | #endif 75 | //----------------------------------------------------------------------------- 76 | // 77 | // $Log:$ 78 | // 79 | //----------------------------------------------------------------------------- 80 | -------------------------------------------------------------------------------- /linuxdoom-1.10/d_ticcmd.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // System specific interface stuff. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __D_TICCMD__ 24 | #define __D_TICCMD__ 25 | 26 | #include "doomtype.h" 27 | 28 | #ifdef __GNUG__ 29 | #pragma interface 30 | #endif 31 | 32 | // The data sampled per tick (single player) 33 | // and transmitted to other peers (multiplayer). 34 | // Mainly movements/button commands per game tick, 35 | // plus a checksum for internal state consistency. 36 | typedef struct 37 | { 38 | char forwardmove; // *2048 for move 39 | char sidemove; // *2048 for move 40 | short angleturn; // <<16 for angle delta 41 | short consistancy; // checks for net game 42 | byte chatchar; 43 | byte buttons; 44 | } ticcmd_t; 45 | 46 | 47 | 48 | #endif 49 | //----------------------------------------------------------------------------- 50 | // 51 | // $Log:$ 52 | // 53 | //----------------------------------------------------------------------------- 54 | -------------------------------------------------------------------------------- /linuxdoom-1.10/doomdata.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // all external data is defined here 19 | // most of the data is loaded into different structures at run time 20 | // some internal structures shared by many modules are here 21 | // 22 | //----------------------------------------------------------------------------- 23 | 24 | #ifndef __DOOMDATA__ 25 | #define __DOOMDATA__ 26 | 27 | // The most basic types we use, portability. 28 | #include "doomtype.h" 29 | 30 | // Some global defines, that configure the game. 31 | #include "doomdef.h" 32 | 33 | 34 | 35 | // 36 | // Map level types. 37 | // The following data structures define the persistent format 38 | // used in the lumps of the WAD files. 39 | // 40 | 41 | // Lump order in a map WAD: each map needs a couple of lumps 42 | // to provide a complete scene geometry description. 43 | enum 44 | { 45 | ML_LABEL, // A separator, name, ExMx or MAPxx 46 | ML_THINGS, // Monsters, items.. 47 | ML_LINEDEFS, // LineDefs, from editing 48 | ML_SIDEDEFS, // SideDefs, from editing 49 | ML_VERTEXES, // Vertices, edited and BSP splits generated 50 | ML_SEGS, // LineSegs, from LineDefs split by BSP 51 | ML_SSECTORS, // SubSectors, list of LineSegs 52 | ML_NODES, // BSP nodes 53 | ML_SECTORS, // Sectors, from editing 54 | ML_REJECT, // LUT, sector-sector visibility 55 | ML_BLOCKMAP // LUT, motion clipping, walls/grid element 56 | }; 57 | 58 | 59 | // A single Vertex. 60 | typedef struct 61 | { 62 | short x; 63 | short y; 64 | } mapvertex_t; 65 | 66 | 67 | // A SideDef, defining the visual appearance of a wall, 68 | // by setting textures and offsets. 69 | typedef struct 70 | { 71 | short textureoffset; 72 | short rowoffset; 73 | char toptexture[8]; 74 | char bottomtexture[8]; 75 | char midtexture[8]; 76 | // Front sector, towards viewer. 77 | short sector; 78 | } mapsidedef_t; 79 | 80 | 81 | 82 | // A LineDef, as used for editing, and as input 83 | // to the BSP builder. 84 | typedef struct 85 | { 86 | short v1; 87 | short v2; 88 | short flags; 89 | short special; 90 | short tag; 91 | // sidenum[1] will be -1 if one sided 92 | short sidenum[2]; 93 | } maplinedef_t; 94 | 95 | 96 | // 97 | // LineDef attributes. 98 | // 99 | 100 | // Solid, is an obstacle. 101 | #define ML_BLOCKING 1 102 | 103 | // Blocks monsters only. 104 | #define ML_BLOCKMONSTERS 2 105 | 106 | // Backside will not be present at all 107 | // if not two sided. 108 | #define ML_TWOSIDED 4 109 | 110 | // If a texture is pegged, the texture will have 111 | // the end exposed to air held constant at the 112 | // top or bottom of the texture (stairs or pulled 113 | // down things) and will move with a height change 114 | // of one of the neighbor sectors. 115 | // Unpegged textures allways have the first row of 116 | // the texture at the top pixel of the line for both 117 | // top and bottom textures (use next to windows). 118 | 119 | // upper texture unpegged 120 | #define ML_DONTPEGTOP 8 121 | 122 | // lower texture unpegged 123 | #define ML_DONTPEGBOTTOM 16 124 | 125 | // In AutoMap: don't map as two sided: IT'S A SECRET! 126 | #define ML_SECRET 32 127 | 128 | // Sound rendering: don't let sound cross two of these. 129 | #define ML_SOUNDBLOCK 64 130 | 131 | // Don't draw on the automap at all. 132 | #define ML_DONTDRAW 128 133 | 134 | // Set if already seen, thus drawn in automap. 135 | #define ML_MAPPED 256 136 | 137 | 138 | 139 | 140 | // Sector definition, from editing. 141 | typedef struct 142 | { 143 | short floorheight; 144 | short ceilingheight; 145 | char floorpic[8]; 146 | char ceilingpic[8]; 147 | short lightlevel; 148 | short special; 149 | short tag; 150 | } mapsector_t; 151 | 152 | // SubSector, as generated by BSP. 153 | typedef struct 154 | { 155 | short numsegs; 156 | // Index of first one, segs are stored sequentially. 157 | short firstseg; 158 | } mapsubsector_t; 159 | 160 | 161 | // LineSeg, generated by splitting LineDefs 162 | // using partition lines selected by BSP builder. 163 | typedef struct 164 | { 165 | short v1; 166 | short v2; 167 | short angle; 168 | short linedef; 169 | short side; 170 | short offset; 171 | } mapseg_t; 172 | 173 | 174 | 175 | // BSP node structure. 176 | 177 | // Indicate a leaf. 178 | #define NF_SUBSECTOR 0x8000 179 | 180 | typedef struct 181 | { 182 | // Partition line from (x,y) to x+dx,y+dy) 183 | short x; 184 | short y; 185 | short dx; 186 | short dy; 187 | 188 | // Bounding box for each child, 189 | // clip against view frustum. 190 | short bbox[2][4]; 191 | 192 | // If NF_SUBSECTOR its a subsector, 193 | // else it's a node of another subtree. 194 | unsigned short children[2]; 195 | 196 | } mapnode_t; 197 | 198 | 199 | 200 | 201 | // Thing definition, position, orientation and type, 202 | // plus skill/visibility flags and attributes. 203 | typedef struct 204 | { 205 | short x; 206 | short y; 207 | short angle; 208 | short type; 209 | short options; 210 | } mapthing_t; 211 | 212 | 213 | 214 | 215 | 216 | #endif // __DOOMDATA__ 217 | //----------------------------------------------------------------------------- 218 | // 219 | // $Log:$ 220 | // 221 | //----------------------------------------------------------------------------- 222 | 223 | -------------------------------------------------------------------------------- /linuxdoom-1.10/doomdef.c: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // $Log:$ 18 | // 19 | // DESCRIPTION: 20 | // DoomDef - basic defines for DOOM, e.g. Version, game mode 21 | // and skill level, and display parameters. 22 | // 23 | //----------------------------------------------------------------------------- 24 | 25 | static const char 26 | rcsid[] = "$Id: m_bbox.c,v 1.1 1997/02/03 22:45:10 b1 Exp $"; 27 | 28 | 29 | #ifdef __GNUG__ 30 | #pragma implementation "doomdef.h" 31 | #endif 32 | #include "doomdef.h" 33 | 34 | // Location for any defines turned variables. 35 | 36 | // None. 37 | 38 | 39 | -------------------------------------------------------------------------------- /linuxdoom-1.10/doomstat.c: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // $Log:$ 18 | // 19 | // DESCRIPTION: 20 | // Put all global tate variables here. 21 | // 22 | //----------------------------------------------------------------------------- 23 | 24 | static const char 25 | rcsid[] = "$Id: m_bbox.c,v 1.1 1997/02/03 22:45:10 b1 Exp $"; 26 | 27 | 28 | #ifdef __GNUG__ 29 | #pragma implementation "doomstat.h" 30 | #endif 31 | #include "doomstat.h" 32 | 33 | 34 | // Game Mode - identify IWAD as shareware, retail etc. 35 | GameMode_t gamemode = indetermined; 36 | GameMission_t gamemission = doom; 37 | 38 | // Language. 39 | Language_t language = english; 40 | 41 | // Set if homebrew PWAD stuff has been added. 42 | boolean modifiedgame; 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /linuxdoom-1.10/doomtype.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Simple basic typedefs, isolated here to make it easier 19 | // separating modules. 20 | // 21 | //----------------------------------------------------------------------------- 22 | 23 | 24 | #ifndef __DOOMTYPE__ 25 | #define __DOOMTYPE__ 26 | 27 | 28 | #ifndef __BYTEBOOL__ 29 | #define __BYTEBOOL__ 30 | // Fixed to use builtin bool type with C++. 31 | #ifdef __cplusplus 32 | typedef bool boolean; 33 | #else 34 | typedef enum {false, true} boolean; 35 | #endif 36 | typedef unsigned char byte; 37 | #endif 38 | 39 | 40 | // Predefined with some OS. 41 | #ifdef LINUX 42 | #include 43 | #else 44 | #define MAXCHAR ((char)0x7f) 45 | #define MAXSHORT ((short)0x7fff) 46 | 47 | // Max pos 32-bit int. 48 | #define MAXINT ((int)0x7fffffff) 49 | #define MAXLONG ((long)0x7fffffff) 50 | #define MINCHAR ((char)0x80) 51 | #define MINSHORT ((short)0x8000) 52 | 53 | // Max negative 32-bit integer. 54 | #define MININT ((int)0x80000000) 55 | #define MINLONG ((long)0x80000000) 56 | #endif 57 | 58 | 59 | 60 | 61 | #endif 62 | //----------------------------------------------------------------------------- 63 | // 64 | // $Log:$ 65 | // 66 | //----------------------------------------------------------------------------- 67 | -------------------------------------------------------------------------------- /linuxdoom-1.10/dstrings.c: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // $Log:$ 18 | // 19 | // DESCRIPTION: 20 | // Globally defined strings. 21 | // 22 | //----------------------------------------------------------------------------- 23 | 24 | static const char 25 | rcsid[] = "$Id: m_bbox.c,v 1.1 1997/02/03 22:45:10 b1 Exp $"; 26 | 27 | 28 | #ifdef __GNUG__ 29 | #pragma implementation "dstrings.h" 30 | #endif 31 | #include "dstrings.h" 32 | 33 | 34 | 35 | char* endmsg[NUM_QUITMESSAGES+1]= 36 | { 37 | // DOOM1 38 | QUITMSG, 39 | "please don't leave, there's more\ndemons to toast!", 40 | "let's beat it -- this is turning\ninto a bloodbath!", 41 | "i wouldn't leave if i were you.\ndos is much worse.", 42 | "you're trying to say you like dos\nbetter than me, right?", 43 | "don't leave yet -- there's a\ndemon around that corner!", 44 | "ya know, next time you come in here\ni'm gonna toast ya.", 45 | "go ahead and leave. see if i care." 46 | 47 | // QuitDOOM II messages 48 | "you want to quit?\nthen, thou hast lost an eighth!", 49 | "don't go now, there's a \ndimensional shambler waiting\nat the dos prompt!", 50 | "get outta here and go back\nto your boring programs.", 51 | "if i were your boss, i'd \n deathmatch ya in a minute!", 52 | "look, bud. you leave now\nand you forfeit your body count!", 53 | "just leave. when you come\nback, i'll be waiting with a bat.", 54 | "you're lucky i don't smack\nyou for thinking about leaving." 55 | 56 | // FinalDOOM? 57 | "fuck you, pussy!\nget the fuck out!", 58 | "you quit and i'll jizz\nin your cystholes!", 59 | "if you leave, i'll make\nthe lord drink my jizz.", 60 | "hey, ron! can we say\n'fuck' in the game?", 61 | "i'd leave: this is just\nmore monsters and levels.\nwhat a load.", 62 | "suck it down, asshole!\nyou're a fucking wimp!", 63 | "don't quit now! we're \nstill spending your money!", 64 | 65 | // Internal debug. Different style, too. 66 | "THIS IS NO MESSAGE!\nPage intentionally left blank." 67 | }; 68 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /linuxdoom-1.10/dstrings.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // 18 | // $Log:$ 19 | // 20 | // DESCRIPTION: 21 | // DOOM strings, by language. 22 | // 23 | //----------------------------------------------------------------------------- 24 | 25 | 26 | #ifndef __DSTRINGS__ 27 | #define __DSTRINGS__ 28 | 29 | 30 | // All important printed strings. 31 | // Language selection (message strings). 32 | // Use -DFRENCH etc. 33 | 34 | #ifdef FRENCH 35 | #include "d_french.h" 36 | #else 37 | #include "d_englsh.h" 38 | #endif 39 | 40 | // Misc. other strings. 41 | #define SAVEGAMENAME "doomsav" 42 | 43 | 44 | // 45 | // File locations, 46 | // relative to current position. 47 | // Path names are OS-sensitive. 48 | // 49 | #define DEVMAPS "devmaps" 50 | #define DEVDATA "devdata" 51 | 52 | 53 | // Not done in french? 54 | 55 | // QuitDOOM messages 56 | #define NUM_QUITMESSAGES 22 57 | 58 | extern char* endmsg[]; 59 | 60 | 61 | #endif 62 | //----------------------------------------------------------------------------- 63 | // 64 | // $Log:$ 65 | // 66 | //----------------------------------------------------------------------------- 67 | -------------------------------------------------------------------------------- /linuxdoom-1.10/f_finale.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __F_FINALE__ 24 | #define __F_FINALE__ 25 | 26 | 27 | #include "doomtype.h" 28 | #include "d_event.h" 29 | // 30 | // FINALE 31 | // 32 | 33 | // Called by main loop. 34 | boolean F_Responder (event_t* ev); 35 | 36 | // Called by main loop. 37 | void F_Ticker (void); 38 | 39 | // Called by main loop. 40 | void F_Drawer (void); 41 | 42 | 43 | void F_StartFinale (void); 44 | 45 | 46 | 47 | 48 | #endif 49 | //----------------------------------------------------------------------------- 50 | // 51 | // $Log:$ 52 | // 53 | //----------------------------------------------------------------------------- 54 | -------------------------------------------------------------------------------- /linuxdoom-1.10/f_wipe.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Mission start screen wipe/melt, special effects. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __F_WIPE_H__ 24 | #define __F_WIPE_H__ 25 | 26 | // 27 | // SCREEN WIPE PACKAGE 28 | // 29 | 30 | enum 31 | { 32 | // simple gradual pixel change for 8-bit only 33 | wipe_ColorXForm, 34 | 35 | // weird screen melt 36 | wipe_Melt, 37 | 38 | wipe_NUMWIPES 39 | }; 40 | 41 | int 42 | wipe_StartScreen 43 | ( int x, 44 | int y, 45 | int width, 46 | int height ); 47 | 48 | 49 | int 50 | wipe_EndScreen 51 | ( int x, 52 | int y, 53 | int width, 54 | int height ); 55 | 56 | 57 | int 58 | wipe_ScreenWipe 59 | ( int wipeno, 60 | int x, 61 | int y, 62 | int width, 63 | int height, 64 | int ticks ); 65 | 66 | #endif 67 | //----------------------------------------------------------------------------- 68 | // 69 | // $Log:$ 70 | // 71 | //----------------------------------------------------------------------------- 72 | -------------------------------------------------------------------------------- /linuxdoom-1.10/g_game.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Duh. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __G_GAME__ 24 | #define __G_GAME__ 25 | 26 | #include "doomdef.h" 27 | #include "d_event.h" 28 | 29 | 30 | 31 | // 32 | // GAME 33 | // 34 | void G_DeathMatchSpawnPlayer (int playernum); 35 | 36 | void G_InitNew (skill_t skill, int episode, int map); 37 | 38 | // Can be called by the startup code or M_Responder. 39 | // A normal game starts at map 1, 40 | // but a warp test can start elsewhere 41 | void G_DeferedInitNew (skill_t skill, int episode, int map); 42 | 43 | void G_DeferedPlayDemo (char* demo); 44 | 45 | // Can be called by the startup code or M_Responder, 46 | // calls P_SetupLevel or W_EnterWorld. 47 | void G_LoadGame (char* name); 48 | 49 | void G_DoLoadGame (void); 50 | 51 | // Called by M_Responder. 52 | void G_SaveGame (int slot, char* description); 53 | 54 | // Only called by startup code. 55 | void G_RecordDemo (char* name); 56 | 57 | void G_BeginRecording (void); 58 | 59 | void G_PlayDemo (char* name); 60 | void G_TimeDemo (char* name); 61 | boolean G_CheckDemoStatus (void); 62 | 63 | void G_ExitLevel (void); 64 | void G_SecretExitLevel (void); 65 | 66 | void G_WorldDone (void); 67 | 68 | void G_Ticker (void); 69 | boolean G_Responder (event_t* ev); 70 | 71 | void G_ScreenShot (void); 72 | 73 | 74 | #endif 75 | //----------------------------------------------------------------------------- 76 | // 77 | // $Log:$ 78 | // 79 | //----------------------------------------------------------------------------- 80 | -------------------------------------------------------------------------------- /linuxdoom-1.10/hu_lib.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: none 18 | // 19 | //----------------------------------------------------------------------------- 20 | 21 | #ifndef __HULIB__ 22 | #define __HULIB__ 23 | 24 | // We are referring to patches. 25 | #include "r_defs.h" 26 | 27 | 28 | // background and foreground screen numbers 29 | // different from other modules. 30 | #define BG 1 31 | #define FG 0 32 | 33 | // font stuff 34 | #define HU_CHARERASE KEY_BACKSPACE 35 | 36 | #define HU_MAXLINES 4 37 | #define HU_MAXLINELENGTH 80 38 | 39 | // 40 | // Typedefs of widgets 41 | // 42 | 43 | // Text Line widget 44 | // (parent of Scrolling Text and Input Text widgets) 45 | typedef struct 46 | { 47 | // left-justified position of scrolling text window 48 | int x; 49 | int y; 50 | 51 | patch_t** f; // font 52 | int sc; // start character 53 | char l[HU_MAXLINELENGTH+1]; // line of text 54 | int len; // current line length 55 | 56 | // whether this line needs to be udpated 57 | int needsupdate; 58 | 59 | } hu_textline_t; 60 | 61 | 62 | 63 | // Scrolling Text window widget 64 | // (child of Text Line widget) 65 | typedef struct 66 | { 67 | hu_textline_t l[HU_MAXLINES]; // text lines to draw 68 | int h; // height in lines 69 | int cl; // current line number 70 | 71 | // pointer to boolean stating whether to update window 72 | boolean* on; 73 | boolean laston; // last value of *->on. 74 | 75 | } hu_stext_t; 76 | 77 | 78 | 79 | // Input Text Line widget 80 | // (child of Text Line widget) 81 | typedef struct 82 | { 83 | hu_textline_t l; // text line to input on 84 | 85 | // left margin past which I am not to delete characters 86 | int lm; 87 | 88 | // pointer to boolean stating whether to update window 89 | boolean* on; 90 | boolean laston; // last value of *->on; 91 | 92 | } hu_itext_t; 93 | 94 | 95 | // 96 | // Widget creation, access, and update routines 97 | // 98 | 99 | // initializes heads-up widget library 100 | void HUlib_init(void); 101 | 102 | // 103 | // textline code 104 | // 105 | 106 | // clear a line of text 107 | void HUlib_clearTextLine(hu_textline_t *t); 108 | 109 | void HUlib_initTextLine(hu_textline_t *t, int x, int y, patch_t **f, int sc); 110 | 111 | // returns success 112 | boolean HUlib_addCharToTextLine(hu_textline_t *t, char ch); 113 | 114 | // returns success 115 | boolean HUlib_delCharFromTextLine(hu_textline_t *t); 116 | 117 | // draws tline 118 | void HUlib_drawTextLine(hu_textline_t *l, boolean drawcursor); 119 | 120 | // erases text line 121 | void HUlib_eraseTextLine(hu_textline_t *l); 122 | 123 | 124 | // 125 | // Scrolling Text window widget routines 126 | // 127 | 128 | // ? 129 | void 130 | HUlib_initSText 131 | ( hu_stext_t* s, 132 | int x, 133 | int y, 134 | int h, 135 | patch_t** font, 136 | int startchar, 137 | boolean* on ); 138 | 139 | // add a new line 140 | void HUlib_addLineToSText(hu_stext_t* s); 141 | 142 | // ? 143 | void 144 | HUlib_addMessageToSText 145 | ( hu_stext_t* s, 146 | char* prefix, 147 | char* msg ); 148 | 149 | // draws stext 150 | void HUlib_drawSText(hu_stext_t* s); 151 | 152 | // erases all stext lines 153 | void HUlib_eraseSText(hu_stext_t* s); 154 | 155 | // Input Text Line widget routines 156 | void 157 | HUlib_initIText 158 | ( hu_itext_t* it, 159 | int x, 160 | int y, 161 | patch_t** font, 162 | int startchar, 163 | boolean* on ); 164 | 165 | // enforces left margin 166 | void HUlib_delCharFromIText(hu_itext_t* it); 167 | 168 | // enforces left margin 169 | void HUlib_eraseLineFromIText(hu_itext_t* it); 170 | 171 | // resets line and left margin 172 | void HUlib_resetIText(hu_itext_t* it); 173 | 174 | // left of left-margin 175 | void 176 | HUlib_addPrefixToIText 177 | ( hu_itext_t* it, 178 | char* str ); 179 | 180 | // whether eaten 181 | boolean 182 | HUlib_keyInIText 183 | ( hu_itext_t* it, 184 | unsigned char ch ); 185 | 186 | void HUlib_drawIText(hu_itext_t* it); 187 | 188 | // erases all itext lines 189 | void HUlib_eraseIText(hu_itext_t* it); 190 | 191 | #endif 192 | //----------------------------------------------------------------------------- 193 | // 194 | // $Log:$ 195 | // 196 | //----------------------------------------------------------------------------- 197 | -------------------------------------------------------------------------------- /linuxdoom-1.10/hu_stuff.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: Head up display 18 | // 19 | //----------------------------------------------------------------------------- 20 | 21 | #ifndef __HU_STUFF_H__ 22 | #define __HU_STUFF_H__ 23 | 24 | #include "d_event.h" 25 | 26 | 27 | // 28 | // Globally visible constants. 29 | // 30 | #define HU_FONTSTART '!' // the first font characters 31 | #define HU_FONTEND '_' // the last font characters 32 | 33 | // Calculate # of glyphs in font. 34 | #define HU_FONTSIZE (HU_FONTEND - HU_FONTSTART + 1) 35 | 36 | #define HU_BROADCAST 5 37 | 38 | #define HU_MSGREFRESH KEY_ENTER 39 | #define HU_MSGX 0 40 | #define HU_MSGY 0 41 | #define HU_MSGWIDTH 64 // in characters 42 | #define HU_MSGHEIGHT 1 // in lines 43 | 44 | #define HU_MSGTIMEOUT (4*TICRATE) 45 | 46 | // 47 | // HEADS UP TEXT 48 | // 49 | 50 | void HU_Init(void); 51 | void HU_Start(void); 52 | 53 | boolean HU_Responder(event_t* ev); 54 | 55 | void HU_Ticker(void); 56 | void HU_Drawer(void); 57 | char HU_dequeueChatChar(void); 58 | void HU_Erase(void); 59 | 60 | 61 | #endif 62 | //----------------------------------------------------------------------------- 63 | // 64 | // $Log:$ 65 | // 66 | //----------------------------------------------------------------------------- 67 | -------------------------------------------------------------------------------- /linuxdoom-1.10/i_main.c: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // $Log:$ 18 | // 19 | // DESCRIPTION: 20 | // Main program, simply calls D_DoomMain high level loop. 21 | // 22 | //----------------------------------------------------------------------------- 23 | 24 | static const char 25 | rcsid[] = "$Id: i_main.c,v 1.4 1997/02/03 22:45:10 b1 Exp $"; 26 | 27 | 28 | 29 | #include "doomdef.h" 30 | 31 | #include "m_argv.h" 32 | #include "d_main.h" 33 | 34 | int 35 | main 36 | ( int argc, 37 | char** argv ) 38 | { 39 | myargc = argc; 40 | myargv = argv; 41 | 42 | D_DoomMain (); 43 | 44 | return 0; 45 | } 46 | -------------------------------------------------------------------------------- /linuxdoom-1.10/i_net.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // System specific network interface stuff. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __I_NET__ 24 | #define __I_NET__ 25 | 26 | 27 | #ifdef __GNUG__ 28 | #pragma interface 29 | #endif 30 | 31 | 32 | 33 | // Called by D_DoomMain. 34 | 35 | 36 | void I_InitNetwork (void); 37 | void I_NetCmd (void); 38 | 39 | 40 | #endif 41 | //----------------------------------------------------------------------------- 42 | // 43 | // $Log:$ 44 | // 45 | //----------------------------------------------------------------------------- 46 | -------------------------------------------------------------------------------- /linuxdoom-1.10/i_sound.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // 18 | // DESCRIPTION: 19 | // System interface, sound. 20 | // 21 | //----------------------------------------------------------------------------- 22 | 23 | #ifndef __I_SOUND__ 24 | #define __I_SOUND__ 25 | 26 | #include "doomdef.h" 27 | 28 | // UNIX hack, to be removed. 29 | #ifdef SNDSERV 30 | #include 31 | extern FILE* sndserver; 32 | extern char* sndserver_filename; 33 | #endif 34 | 35 | #include "doomstat.h" 36 | #include "sounds.h" 37 | 38 | 39 | 40 | // Init at program start... 41 | void I_InitSound(); 42 | 43 | // ... update sound buffer and audio device at runtime... 44 | void I_UpdateSound(void); 45 | void I_SubmitSound(void); 46 | 47 | // ... shut down and relase at program termination. 48 | void I_ShutdownSound(void); 49 | 50 | 51 | // 52 | // SFX I/O 53 | // 54 | 55 | // Initialize channels? 56 | void I_SetChannels(); 57 | 58 | // Get raw data lump index for sound descriptor. 59 | int I_GetSfxLumpNum (sfxinfo_t* sfxinfo ); 60 | 61 | 62 | // Starts a sound in a particular sound channel. 63 | int 64 | I_StartSound 65 | ( int id, 66 | int vol, 67 | int sep, 68 | int pitch, 69 | int priority ); 70 | 71 | 72 | // Stops a sound channel. 73 | void I_StopSound(int handle); 74 | 75 | // Called by S_*() functions 76 | // to see if a channel is still playing. 77 | // Returns 0 if no longer playing, 1 if playing. 78 | int I_SoundIsPlaying(int handle); 79 | 80 | // Updates the volume, separation, 81 | // and pitch of a sound channel. 82 | void 83 | I_UpdateSoundParams 84 | ( int handle, 85 | int vol, 86 | int sep, 87 | int pitch ); 88 | 89 | 90 | // 91 | // MUSIC I/O 92 | // 93 | void I_InitMusic(void); 94 | void I_ShutdownMusic(void); 95 | // Volume. 96 | void I_SetMusicVolume(int volume); 97 | // PAUSE game handling. 98 | void I_PauseSong(int handle); 99 | void I_ResumeSong(int handle); 100 | // Registers a song handle to song data. 101 | int I_RegisterSong(void *data); 102 | // Called by anything that wishes to start music. 103 | // plays a song, and when the song is done, 104 | // starts playing it again in an endless loop. 105 | // Horrible thing to do, considering. 106 | void 107 | I_PlaySong 108 | ( int handle, 109 | int looping ); 110 | // Stops a song over 3 seconds. 111 | void I_StopSong(int handle); 112 | // See above (register), then think backwards 113 | void I_UnRegisterSong(int handle); 114 | 115 | 116 | 117 | #endif 118 | //----------------------------------------------------------------------------- 119 | // 120 | // $Log:$ 121 | // 122 | //----------------------------------------------------------------------------- 123 | -------------------------------------------------------------------------------- /linuxdoom-1.10/i_system.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // System specific interface stuff. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __I_SYSTEM__ 24 | #define __I_SYSTEM__ 25 | 26 | #include "d_ticcmd.h" 27 | #include "d_event.h" 28 | 29 | #ifdef __GNUG__ 30 | #pragma interface 31 | #endif 32 | 33 | 34 | // Called by DoomMain. 35 | void I_Init (void); 36 | 37 | // Called by startup code 38 | // to get the ammount of memory to malloc 39 | // for the zone management. 40 | byte* I_ZoneBase (int *size); 41 | 42 | 43 | // Called by D_DoomLoop, 44 | // returns current time in tics. 45 | int I_GetTime (void); 46 | 47 | 48 | // 49 | // Called by D_DoomLoop, 50 | // called before processing any tics in a frame 51 | // (just after displaying a frame). 52 | // Time consuming syncronous operations 53 | // are performed here (joystick reading). 54 | // Can call D_PostEvent. 55 | // 56 | void I_StartFrame (void); 57 | 58 | 59 | // 60 | // Called by D_DoomLoop, 61 | // called before processing each tic in a frame. 62 | // Quick syncronous operations are performed here. 63 | // Can call D_PostEvent. 64 | void I_StartTic (void); 65 | 66 | // Asynchronous interrupt functions should maintain private queues 67 | // that are read by the synchronous functions 68 | // to be converted into events. 69 | 70 | // Either returns a null ticcmd, 71 | // or calls a loadable driver to build it. 72 | // This ticcmd will then be modified by the gameloop 73 | // for normal input. 74 | ticcmd_t* I_BaseTiccmd (void); 75 | 76 | 77 | // Called by M_Responder when quit is selected. 78 | // Clean exit, displays sell blurb. 79 | void I_Quit (void); 80 | 81 | 82 | // Allocates from low memory under dos, 83 | // just mallocs under unix 84 | byte* I_AllocLow (int length); 85 | 86 | void I_Tactile (int on, int off, int total); 87 | 88 | 89 | void I_Error (char *error, ...); 90 | 91 | 92 | #endif 93 | //----------------------------------------------------------------------------- 94 | // 95 | // $Log:$ 96 | // 97 | //----------------------------------------------------------------------------- 98 | -------------------------------------------------------------------------------- /linuxdoom-1.10/i_video.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // System specific interface stuff. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __I_VIDEO__ 24 | #define __I_VIDEO__ 25 | 26 | 27 | #include "doomtype.h" 28 | 29 | #ifdef __GNUG__ 30 | #pragma interface 31 | #endif 32 | 33 | 34 | // Called by D_DoomMain, 35 | // determines the hardware configuration 36 | // and sets up the video mode 37 | void I_InitGraphics (void); 38 | 39 | 40 | void I_ShutdownGraphics(void); 41 | 42 | // Takes full 8 bit values. 43 | void I_SetPalette (byte* palette); 44 | 45 | void I_UpdateNoBlit (void); 46 | void I_FinishUpdate (void); 47 | 48 | // Wait for vertical retrace or pause a bit. 49 | void I_WaitVBL(int count); 50 | 51 | void I_ReadScreen (byte* scr); 52 | 53 | void I_BeginRead (void); 54 | void I_EndRead (void); 55 | 56 | 57 | 58 | #endif 59 | //----------------------------------------------------------------------------- 60 | // 61 | // $Log:$ 62 | // 63 | //----------------------------------------------------------------------------- 64 | -------------------------------------------------------------------------------- /linuxdoom-1.10/m_argv.c: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // $Log:$ 18 | // 19 | // DESCRIPTION: 20 | // 21 | //----------------------------------------------------------------------------- 22 | 23 | static const char 24 | rcsid[] = "$Id: m_argv.c,v 1.1 1997/02/03 22:45:10 b1 Exp $"; 25 | 26 | 27 | #include 28 | 29 | int myargc; 30 | char** myargv; 31 | 32 | 33 | 34 | 35 | // 36 | // M_CheckParm 37 | // Checks for the given parameter 38 | // in the program's command line arguments. 39 | // Returns the argument number (1 to argc-1) 40 | // or 0 if not present 41 | int M_CheckParm (char *check) 42 | { 43 | int i; 44 | 45 | for (i = 1;ibox[BOXRIGHT]) 54 | box[BOXRIGHT] = x; 55 | if (ybox[BOXTOP]) 58 | box[BOXTOP] = y; 59 | } 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /linuxdoom-1.10/m_bbox.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Nil. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __M_BBOX__ 24 | #define __M_BBOX__ 25 | 26 | #ifndef _WIN32 27 | #include 28 | #else 29 | #include "doomtype.h" 30 | #endif 31 | 32 | #include "m_fixed.h" 33 | 34 | 35 | // Bounding box coordinate storage. 36 | enum 37 | { 38 | BOXTOP, 39 | BOXBOTTOM, 40 | BOXLEFT, 41 | BOXRIGHT 42 | }; // bbox coordinates 43 | 44 | // Bounding box functions. 45 | void M_ClearBox (fixed_t* box); 46 | 47 | void 48 | M_AddToBox 49 | ( fixed_t* box, 50 | fixed_t x, 51 | fixed_t y ); 52 | 53 | 54 | #endif 55 | //----------------------------------------------------------------------------- 56 | // 57 | // $Log:$ 58 | // 59 | //----------------------------------------------------------------------------- 60 | -------------------------------------------------------------------------------- /linuxdoom-1.10/m_cheat.c: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // $Log:$ 18 | // 19 | // DESCRIPTION: 20 | // Cheat sequence checking. 21 | // 22 | //----------------------------------------------------------------------------- 23 | 24 | 25 | static const char 26 | rcsid[] = "$Id: m_cheat.c,v 1.1 1997/02/03 21:24:34 b1 Exp $"; 27 | 28 | #include "m_cheat.h" 29 | 30 | // 31 | // CHEAT SEQUENCE PACKAGE 32 | // 33 | 34 | static int firsttime = 1; 35 | static unsigned char cheat_xlate_table[256]; 36 | 37 | 38 | // 39 | // Called in st_stuff module, which handles the input. 40 | // Returns a 1 if the cheat was successful, 0 if failed. 41 | // 42 | int 43 | cht_CheckCheat 44 | ( cheatseq_t* cht, 45 | char key ) 46 | { 47 | int i; 48 | int rc = 0; 49 | 50 | if (firsttime) 51 | { 52 | firsttime = 0; 53 | for (i=0;i<256;i++) cheat_xlate_table[i] = SCRAMBLE(i); 54 | } 55 | 56 | if (!cht->p) 57 | cht->p = cht->sequence; // initialize if first time 58 | 59 | if (*cht->p == 0) 60 | *(cht->p++) = key; 61 | else if 62 | (cheat_xlate_table[(unsigned char)key] == *cht->p) cht->p++; 63 | else 64 | cht->p = cht->sequence; 65 | 66 | if (*cht->p == 1) 67 | cht->p++; 68 | else if (*cht->p == 0xff) // end of sequence character 69 | { 70 | cht->p = cht->sequence; 71 | rc = 1; 72 | } 73 | 74 | return rc; 75 | } 76 | 77 | void 78 | cht_GetParam 79 | ( cheatseq_t* cht, 80 | char* buffer ) 81 | { 82 | 83 | unsigned char *p, c; 84 | 85 | p = cht->sequence; 86 | while (*(p++) != 1); 87 | 88 | do 89 | { 90 | c = *p; 91 | *(buffer++) = c; 92 | *(p++) = 0; 93 | } 94 | while (c && *p!=0xff ); 95 | 96 | if (*p==0xff) 97 | *buffer = 0; 98 | 99 | } 100 | 101 | 102 | -------------------------------------------------------------------------------- /linuxdoom-1.10/m_cheat.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Cheat code checking. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __M_CHEAT__ 24 | #define __M_CHEAT__ 25 | 26 | // 27 | // CHEAT SEQUENCE PACKAGE 28 | // 29 | 30 | #define SCRAMBLE(a) \ 31 | ((((a)&1)<<7) + (((a)&2)<<5) + ((a)&4) + (((a)&8)<<1) \ 32 | + (((a)&16)>>1) + ((a)&32) + (((a)&64)>>5) + (((a)&128)>>7)) 33 | 34 | typedef struct 35 | { 36 | unsigned char* sequence; 37 | unsigned char* p; 38 | 39 | } cheatseq_t; 40 | 41 | int 42 | cht_CheckCheat 43 | ( cheatseq_t* cht, 44 | char key ); 45 | 46 | 47 | void 48 | cht_GetParam 49 | ( cheatseq_t* cht, 50 | char* buffer ); 51 | 52 | 53 | #endif 54 | //----------------------------------------------------------------------------- 55 | // 56 | // $Log:$ 57 | // 58 | //----------------------------------------------------------------------------- 59 | -------------------------------------------------------------------------------- /linuxdoom-1.10/m_fixed.c: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // $Log:$ 18 | // 19 | // DESCRIPTION: 20 | // Fixed point implementation. 21 | // 22 | //----------------------------------------------------------------------------- 23 | 24 | 25 | static const char 26 | rcsid[] = "$Id: m_bbox.c,v 1.1 1997/02/03 22:45:10 b1 Exp $"; 27 | 28 | #include "stdlib.h" 29 | 30 | #include "doomtype.h" 31 | #include "i_system.h" 32 | 33 | #ifdef __GNUG__ 34 | #pragma implementation "m_fixed.h" 35 | #endif 36 | #include "m_fixed.h" 37 | 38 | 39 | 40 | 41 | // Fixme. __USE_C_FIXED__ or something. 42 | 43 | fixed_t 44 | FixedMul 45 | ( fixed_t a, 46 | fixed_t b ) 47 | { 48 | return ((long long) a * (long long) b) >> FRACBITS; 49 | } 50 | 51 | 52 | 53 | // 54 | // FixedDiv, C version. 55 | // 56 | 57 | fixed_t 58 | FixedDiv 59 | ( fixed_t a, 60 | fixed_t b ) 61 | { 62 | if ( (abs(a)>>14) >= abs(b)) 63 | return (a^b)<0 ? MININT : MAXINT; 64 | return FixedDiv2 (a,b); 65 | } 66 | 67 | 68 | 69 | fixed_t 70 | FixedDiv2 71 | ( fixed_t a, 72 | fixed_t b ) 73 | { 74 | #if 0 75 | long long c; 76 | c = ((long long)a<<16) / ((long long)b); 77 | return (fixed_t) c; 78 | #endif 79 | 80 | double c; 81 | 82 | c = ((double)a) / ((double)b) * FRACUNIT; 83 | 84 | if (c >= 2147483648.0 || c < -2147483648.0) 85 | I_Error("FixedDiv: divide by zero"); 86 | return (fixed_t) c; 87 | } 88 | -------------------------------------------------------------------------------- /linuxdoom-1.10/m_fixed.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Fixed point arithemtics, implementation. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __M_FIXED__ 24 | #define __M_FIXED__ 25 | 26 | 27 | #ifdef __GNUG__ 28 | #pragma interface 29 | #endif 30 | 31 | 32 | // 33 | // Fixed point, 32bit as 16.16. 34 | // 35 | #define FRACBITS 16 36 | #define FRACUNIT (1<>8) | (x<<8); 42 | } 43 | 44 | // Swapping 32bit. 45 | unsigned long SwapLONG( unsigned long x) 46 | { 47 | return 48 | (x>>24) 49 | | ((x>>8) & 0xff00) 50 | | ((x<<8) & 0xff0000) 51 | | (x<<24); 52 | } 53 | 54 | 55 | #endif 56 | 57 | 58 | -------------------------------------------------------------------------------- /linuxdoom-1.10/m_swap.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Endianess handling, swapping 16bit and 32bit. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __M_SWAP__ 24 | #define __M_SWAP__ 25 | 26 | 27 | #ifdef __GNUG__ 28 | #pragma interface 29 | #endif 30 | 31 | 32 | // Endianess handling. 33 | // WAD files are stored little endian. 34 | #ifdef __BIG_ENDIAN__ 35 | short SwapSHORT(short); 36 | long SwapLONG(long); 37 | #define SHORT(x) ((short)SwapSHORT((unsigned short) (x))) 38 | #define LONG(x) ((long)SwapLONG((unsigned long) (x))) 39 | #else 40 | #define SHORT(x) (x) 41 | #define LONG(x) (x) 42 | #endif 43 | 44 | 45 | 46 | 47 | #endif 48 | //----------------------------------------------------------------------------- 49 | // 50 | // $Log:$ 51 | // 52 | //----------------------------------------------------------------------------- 53 | -------------------------------------------------------------------------------- /linuxdoom-1.10/p_inter.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __P_INTER__ 24 | #define __P_INTER__ 25 | 26 | 27 | #ifdef __GNUG__ 28 | #pragma interface 29 | #endif 30 | 31 | 32 | boolean P_GivePower(player_t*, int); 33 | 34 | 35 | 36 | #endif 37 | //----------------------------------------------------------------------------- 38 | // 39 | // $Log:$ 40 | // 41 | //----------------------------------------------------------------------------- 42 | -------------------------------------------------------------------------------- /linuxdoom-1.10/p_pspr.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Sprite animation. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __P_PSPR__ 24 | #define __P_PSPR__ 25 | 26 | // Basic data types. 27 | // Needs fixed point, and BAM angles. 28 | #include "m_fixed.h" 29 | #include "tables.h" 30 | 31 | 32 | // 33 | // Needs to include the precompiled 34 | // sprite animation tables. 35 | // Header generated by multigen utility. 36 | // This includes all the data for thing animation, 37 | // i.e. the Thing Atrributes table 38 | // and the Frame Sequence table. 39 | #include "info.h" 40 | 41 | #ifdef __GNUG__ 42 | #pragma interface 43 | #endif 44 | 45 | 46 | // 47 | // Frame flags: 48 | // handles maximum brightness (torches, muzzle flare, light sources) 49 | // 50 | #define FF_FULLBRIGHT 0x8000 // flag in thing->frame 51 | #define FF_FRAMEMASK 0x7fff 52 | 53 | 54 | 55 | // 56 | // Overlay psprites are scaled shapes 57 | // drawn directly on the view screen, 58 | // coordinates are given for a 320*200 view screen. 59 | // 60 | typedef enum 61 | { 62 | ps_weapon, 63 | ps_flash, 64 | NUMPSPRITES 65 | 66 | } psprnum_t; 67 | 68 | typedef struct 69 | { 70 | state_t* state; // a NULL state means not active 71 | int tics; 72 | fixed_t sx; 73 | fixed_t sy; 74 | 75 | } pspdef_t; 76 | 77 | #endif 78 | //----------------------------------------------------------------------------- 79 | // 80 | // $Log:$ 81 | // 82 | //----------------------------------------------------------------------------- 83 | -------------------------------------------------------------------------------- /linuxdoom-1.10/p_saveg.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Savegame I/O, archiving, persistence. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __P_SAVEG__ 24 | #define __P_SAVEG__ 25 | 26 | 27 | #ifdef __GNUG__ 28 | #pragma interface 29 | #endif 30 | 31 | 32 | // Persistent storage/archiving. 33 | // These are the load / save game routines. 34 | void P_ArchivePlayers (void); 35 | void P_UnArchivePlayers (void); 36 | void P_ArchiveWorld (void); 37 | void P_UnArchiveWorld (void); 38 | void P_ArchiveThinkers (void); 39 | void P_UnArchiveThinkers (void); 40 | void P_ArchiveSpecials (void); 41 | void P_UnArchiveSpecials (void); 42 | 43 | extern byte* save_p; 44 | 45 | 46 | #endif 47 | //----------------------------------------------------------------------------- 48 | // 49 | // $Log:$ 50 | // 51 | //----------------------------------------------------------------------------- 52 | -------------------------------------------------------------------------------- /linuxdoom-1.10/p_setup.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Setup a game, startup stuff. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __P_SETUP__ 24 | #define __P_SETUP__ 25 | 26 | 27 | #ifdef __GNUG__ 28 | #pragma interface 29 | #endif 30 | 31 | 32 | // NOT called by W_Ticker. Fixme. 33 | void 34 | P_SetupLevel 35 | ( int episode, 36 | int map, 37 | int playermask, 38 | skill_t skill); 39 | 40 | // Called by startup code. 41 | void P_Init (void); 42 | 43 | #endif 44 | //----------------------------------------------------------------------------- 45 | // 46 | // $Log:$ 47 | // 48 | //----------------------------------------------------------------------------- 49 | -------------------------------------------------------------------------------- /linuxdoom-1.10/p_telept.c: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // $Log:$ 18 | // 19 | // DESCRIPTION: 20 | // Teleportation. 21 | // 22 | //----------------------------------------------------------------------------- 23 | 24 | static const char 25 | rcsid[] = "$Id: p_telept.c,v 1.3 1997/01/28 22:08:29 b1 Exp $"; 26 | 27 | 28 | 29 | #include "doomdef.h" 30 | 31 | #include "s_sound.h" 32 | 33 | #include "p_local.h" 34 | 35 | 36 | // Data. 37 | #include "sounds.h" 38 | 39 | // State. 40 | #include "r_state.h" 41 | 42 | 43 | 44 | // 45 | // TELEPORTATION 46 | // 47 | int 48 | EV_Teleport 49 | ( line_t* line, 50 | int side, 51 | mobj_t* thing ) 52 | { 53 | int i; 54 | int tag; 55 | mobj_t* m; 56 | mobj_t* fog; 57 | unsigned an; 58 | thinker_t* thinker; 59 | sector_t* sector; 60 | fixed_t oldx; 61 | fixed_t oldy; 62 | fixed_t oldz; 63 | 64 | // don't teleport missiles 65 | if (thing->flags & MF_MISSILE) 66 | return 0; 67 | 68 | // Don't teleport if hit back of line, 69 | // so you can get out of teleporter. 70 | if (side == 1) 71 | return 0; 72 | 73 | 74 | tag = line->tag; 75 | for (i = 0; i < numsectors; i++) 76 | { 77 | if (sectors[ i ].tag == tag ) 78 | { 79 | thinker = thinkercap.next; 80 | for (thinker = thinkercap.next; 81 | thinker != &thinkercap; 82 | thinker = thinker->next) 83 | { 84 | // not a mobj 85 | if (thinker->function.acp1 != (actionf_p1)P_MobjThinker) 86 | continue; 87 | 88 | m = (mobj_t *)thinker; 89 | 90 | // not a teleportman 91 | if (m->type != MT_TELEPORTMAN ) 92 | continue; 93 | 94 | sector = m->subsector->sector; 95 | // wrong sector 96 | if (sector-sectors != i ) 97 | continue; 98 | 99 | oldx = thing->x; 100 | oldy = thing->y; 101 | oldz = thing->z; 102 | 103 | if (!P_TeleportMove (thing, m->x, m->y)) 104 | return 0; 105 | 106 | thing->z = thing->floorz; //fixme: not needed? 107 | if (thing->player) 108 | thing->player->viewz = thing->z+thing->player->viewheight; 109 | 110 | // spawn teleport fog at source and destination 111 | fog = P_SpawnMobj (oldx, oldy, oldz, MT_TFOG); 112 | S_StartSound (fog, sfx_telept); 113 | an = m->angle >> ANGLETOFINESHIFT; 114 | fog = P_SpawnMobj (m->x+20*finecosine[an], m->y+20*finesine[an] 115 | , thing->z, MT_TFOG); 116 | 117 | // emit sound, where? 118 | S_StartSound (fog, sfx_telept); 119 | 120 | // don't move for a bit 121 | if (thing->player) 122 | thing->reactiontime = 18; 123 | 124 | thing->angle = m->angle; 125 | thing->momx = thing->momy = thing->momz = 0; 126 | return 1; 127 | } 128 | } 129 | } 130 | return 0; 131 | } 132 | 133 | -------------------------------------------------------------------------------- /linuxdoom-1.10/p_tick.c: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // $Log:$ 18 | // 19 | // DESCRIPTION: 20 | // Archiving: SaveGame I/O. 21 | // Thinker, Ticker. 22 | // 23 | //----------------------------------------------------------------------------- 24 | 25 | static const char 26 | rcsid[] = "$Id: p_tick.c,v 1.4 1997/02/03 16:47:55 b1 Exp $"; 27 | 28 | #include "z_zone.h" 29 | #include "p_local.h" 30 | 31 | #include "doomstat.h" 32 | 33 | 34 | int leveltime; 35 | 36 | // 37 | // THINKERS 38 | // All thinkers should be allocated by Z_Malloc 39 | // so they can be operated on uniformly. 40 | // The actual structures will vary in size, 41 | // but the first element must be thinker_t. 42 | // 43 | 44 | 45 | 46 | // Both the head and tail of the thinker list. 47 | thinker_t thinkercap; 48 | 49 | 50 | // 51 | // P_InitThinkers 52 | // 53 | void P_InitThinkers (void) 54 | { 55 | thinkercap.prev = thinkercap.next = &thinkercap; 56 | } 57 | 58 | 59 | 60 | 61 | // 62 | // P_AddThinker 63 | // Adds a new thinker at the end of the list. 64 | // 65 | void P_AddThinker (thinker_t* thinker) 66 | { 67 | thinkercap.prev->next = thinker; 68 | thinker->next = &thinkercap; 69 | thinker->prev = thinkercap.prev; 70 | thinkercap.prev = thinker; 71 | } 72 | 73 | 74 | 75 | // 76 | // P_RemoveThinker 77 | // Deallocation is lazy -- it will not actually be freed 78 | // until its thinking turn comes up. 79 | // 80 | void P_RemoveThinker (thinker_t* thinker) 81 | { 82 | // FIXME: NOP. 83 | thinker->function.acv = (actionf_v)(-1); 84 | } 85 | 86 | 87 | 88 | // 89 | // P_AllocateThinker 90 | // Allocates memory and adds a new thinker at the end of the list. 91 | // 92 | void P_AllocateThinker (thinker_t* thinker) 93 | { 94 | } 95 | 96 | 97 | 98 | // 99 | // P_RunThinkers 100 | // 101 | void P_RunThinkers (void) 102 | { 103 | thinker_t* currentthinker; 104 | 105 | currentthinker = thinkercap.next; 106 | while (currentthinker != &thinkercap) 107 | { 108 | if ( currentthinker->function.acv == (actionf_v)(-1) ) 109 | { 110 | // time to remove it 111 | currentthinker->next->prev = currentthinker->prev; 112 | currentthinker->prev->next = currentthinker->next; 113 | Z_Free (currentthinker); 114 | } 115 | else 116 | { 117 | if (currentthinker->function.acp1) 118 | currentthinker->function.acp1 (currentthinker); 119 | } 120 | currentthinker = currentthinker->next; 121 | } 122 | } 123 | 124 | 125 | 126 | // 127 | // P_Ticker 128 | // 129 | 130 | void P_Ticker (void) 131 | { 132 | int i; 133 | 134 | // run the tic 135 | if (paused) 136 | return; 137 | 138 | // pause if in menu and at least one tic has been run 139 | if ( !netgame 140 | && menuactive 141 | && !demoplayback 142 | && players[consoleplayer].viewz != 1) 143 | { 144 | return; 145 | } 146 | 147 | 148 | for (i=0 ; i 56 | // using from sounds.h 57 | // 58 | void 59 | S_StartSound 60 | ( void* origin, 61 | int sound_id ); 62 | 63 | 64 | 65 | // Will start a sound at a given volume. 66 | void 67 | S_StartSoundAtVolume 68 | ( void* origin, 69 | int sound_id, 70 | int volume ); 71 | 72 | 73 | // Stop sound for thing at 74 | void S_StopSound(void* origin); 75 | 76 | 77 | // Start music using from sounds.h 78 | void S_StartMusic(int music_id); 79 | 80 | // Start music using from sounds.h, 81 | // and set whether looping 82 | void 83 | S_ChangeMusic 84 | ( int music_id, 85 | int looping ); 86 | 87 | // Stops the music fer sure. 88 | void S_StopMusic(void); 89 | 90 | // Stop and resume music, during game PAUSE. 91 | void S_PauseSound(void); 92 | void S_ResumeSound(void); 93 | 94 | 95 | // 96 | // Updates music & sounds 97 | // 98 | void S_UpdateSounds(void* listener); 99 | 100 | void S_SetMusicVolume(int volume); 101 | void S_SetSfxVolume(int volume); 102 | 103 | 104 | #endif 105 | //----------------------------------------------------------------------------- 106 | // 107 | // $Log:$ 108 | // 109 | //----------------------------------------------------------------------------- 110 | -------------------------------------------------------------------------------- /linuxdoom-1.10/st_lib.c: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // $Log:$ 18 | // 19 | // DESCRIPTION: 20 | // The status bar widget code. 21 | // 22 | //----------------------------------------------------------------------------- 23 | 24 | 25 | static const char 26 | rcsid[] = "$Id: st_lib.c,v 1.4 1997/02/03 16:47:56 b1 Exp $"; 27 | 28 | #include 29 | 30 | #include "doomdef.h" 31 | 32 | #include "z_zone.h" 33 | #include "v_video.h" 34 | 35 | #include "m_swap.h" 36 | 37 | #include "i_system.h" 38 | 39 | #include "w_wad.h" 40 | 41 | #include "st_stuff.h" 42 | #include "st_lib.h" 43 | #include "r_local.h" 44 | 45 | 46 | // in AM_map.c 47 | extern boolean automapactive; 48 | 49 | 50 | 51 | 52 | // 53 | // Hack display negative frags. 54 | // Loads and store the stminus lump. 55 | // 56 | patch_t* sttminus; 57 | 58 | void STlib_init(void) 59 | { 60 | sttminus = (patch_t *) W_CacheLumpName("STTMINUS", PU_STATIC); 61 | } 62 | 63 | 64 | // ? 65 | void 66 | STlib_initNum 67 | ( st_number_t* n, 68 | int x, 69 | int y, 70 | patch_t** pl, 71 | int* num, 72 | boolean* on, 73 | int width ) 74 | { 75 | n->x = x; 76 | n->y = y; 77 | n->oldnum = 0; 78 | n->width = width; 79 | n->num = num; 80 | n->on = on; 81 | n->p = pl; 82 | } 83 | 84 | 85 | // 86 | // A fairly efficient way to draw a number 87 | // based on differences from the old number. 88 | // Note: worth the trouble? 89 | // 90 | void 91 | STlib_drawNum 92 | ( st_number_t* n, 93 | boolean refresh ) 94 | { 95 | 96 | int numdigits = n->width; 97 | int num = *n->num; 98 | 99 | int w = SHORT(n->p[0]->width); 100 | int h = SHORT(n->p[0]->height); 101 | int x = n->x; 102 | 103 | int neg; 104 | 105 | n->oldnum = *n->num; 106 | 107 | neg = num < 0; 108 | 109 | if (neg) 110 | { 111 | if (numdigits == 2 && num < -9) 112 | num = -9; 113 | else if (numdigits == 3 && num < -99) 114 | num = -99; 115 | 116 | num = -num; 117 | } 118 | 119 | // clear the area 120 | x = n->x - numdigits*w; 121 | 122 | if (n->y - ST_Y < 0) 123 | I_Error("drawNum: n->y - ST_Y < 0"); 124 | 125 | V_CopyRect(x, n->y - ST_Y, BG, w*numdigits, h, x, n->y, FG); 126 | 127 | // if non-number, do not draw it 128 | if (num == 1994) 129 | return; 130 | 131 | x = n->x; 132 | 133 | // in the special case of 0, you draw 0 134 | if (!num) 135 | V_DrawPatch(x - w, n->y, FG, n->p[ 0 ]); 136 | 137 | // draw the new number 138 | while (num && numdigits--) 139 | { 140 | x -= w; 141 | V_DrawPatch(x, n->y, FG, n->p[ num % 10 ]); 142 | num /= 10; 143 | } 144 | 145 | // draw a minus sign if necessary 146 | if (neg) 147 | V_DrawPatch(x - 8, n->y, FG, sttminus); 148 | } 149 | 150 | 151 | // 152 | void 153 | STlib_updateNum 154 | ( st_number_t* n, 155 | boolean refresh ) 156 | { 157 | if (*n->on) STlib_drawNum(n, refresh); 158 | } 159 | 160 | 161 | // 162 | void 163 | STlib_initPercent 164 | ( st_percent_t* p, 165 | int x, 166 | int y, 167 | patch_t** pl, 168 | int* num, 169 | boolean* on, 170 | patch_t* percent ) 171 | { 172 | STlib_initNum(&p->n, x, y, pl, num, on, 3); 173 | p->p = percent; 174 | } 175 | 176 | 177 | 178 | 179 | void 180 | STlib_updatePercent 181 | ( st_percent_t* per, 182 | int refresh ) 183 | { 184 | if (refresh && *per->n.on) 185 | V_DrawPatch(per->n.x, per->n.y, FG, per->p); 186 | 187 | STlib_updateNum(&per->n, refresh); 188 | } 189 | 190 | 191 | 192 | void 193 | STlib_initMultIcon 194 | ( st_multicon_t* i, 195 | int x, 196 | int y, 197 | patch_t** il, 198 | int* inum, 199 | boolean* on ) 200 | { 201 | i->x = x; 202 | i->y = y; 203 | i->oldinum = -1; 204 | i->inum = inum; 205 | i->on = on; 206 | i->p = il; 207 | } 208 | 209 | 210 | 211 | void 212 | STlib_updateMultIcon 213 | ( st_multicon_t* mi, 214 | boolean refresh ) 215 | { 216 | int w; 217 | int h; 218 | int x; 219 | int y; 220 | 221 | if (*mi->on 222 | && (mi->oldinum != *mi->inum || refresh) 223 | && (*mi->inum!=-1)) 224 | { 225 | if (mi->oldinum != -1) 226 | { 227 | x = mi->x - SHORT(mi->p[mi->oldinum]->leftoffset); 228 | y = mi->y - SHORT(mi->p[mi->oldinum]->topoffset); 229 | w = SHORT(mi->p[mi->oldinum]->width); 230 | h = SHORT(mi->p[mi->oldinum]->height); 231 | 232 | if (y - ST_Y < 0) 233 | I_Error("updateMultIcon: y - ST_Y < 0"); 234 | 235 | V_CopyRect(x, y-ST_Y, BG, w, h, x, y, FG); 236 | } 237 | V_DrawPatch(mi->x, mi->y, FG, mi->p[*mi->inum]); 238 | mi->oldinum = *mi->inum; 239 | } 240 | } 241 | 242 | 243 | 244 | void 245 | STlib_initBinIcon 246 | ( st_binicon_t* b, 247 | int x, 248 | int y, 249 | patch_t* i, 250 | boolean* val, 251 | boolean* on ) 252 | { 253 | b->x = x; 254 | b->y = y; 255 | b->oldval = 0; 256 | b->val = val; 257 | b->on = on; 258 | b->p = i; 259 | } 260 | 261 | 262 | 263 | void 264 | STlib_updateBinIcon 265 | ( st_binicon_t* bi, 266 | boolean refresh ) 267 | { 268 | int x; 269 | int y; 270 | int w; 271 | int h; 272 | 273 | if (*bi->on 274 | && (bi->oldval != *bi->val || refresh)) 275 | { 276 | x = bi->x - SHORT(bi->p->leftoffset); 277 | y = bi->y - SHORT(bi->p->topoffset); 278 | w = SHORT(bi->p->width); 279 | h = SHORT(bi->p->height); 280 | 281 | if (y - ST_Y < 0) 282 | I_Error("updateBinIcon: y - ST_Y < 0"); 283 | 284 | if (*bi->val) 285 | V_DrawPatch(bi->x, bi->y, FG, bi->p); 286 | else 287 | V_CopyRect(x, y-ST_Y, BG, w, h, x, y, FG); 288 | 289 | bi->oldval = *bi->val; 290 | } 291 | 292 | } 293 | 294 | -------------------------------------------------------------------------------- /linuxdoom-1.10/st_lib.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // The status bar widget code. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | #ifndef __STLIB__ 23 | #define __STLIB__ 24 | 25 | 26 | // We are referring to patches. 27 | #include "r_defs.h" 28 | 29 | 30 | // 31 | // Background and foreground screen numbers 32 | // 33 | #define BG 4 34 | #define FG 0 35 | 36 | 37 | 38 | // 39 | // Typedefs of widgets 40 | // 41 | 42 | // Number widget 43 | 44 | typedef struct 45 | { 46 | // upper right-hand corner 47 | // of the number (right-justified) 48 | int x; 49 | int y; 50 | 51 | // max # of digits in number 52 | int width; 53 | 54 | // last number value 55 | int oldnum; 56 | 57 | // pointer to current value 58 | int* num; 59 | 60 | // pointer to boolean stating 61 | // whether to update number 62 | boolean* on; 63 | 64 | // list of patches for 0-9 65 | patch_t** p; 66 | 67 | // user data 68 | int data; 69 | 70 | } st_number_t; 71 | 72 | 73 | 74 | // Percent widget ("child" of number widget, 75 | // or, more precisely, contains a number widget.) 76 | typedef struct 77 | { 78 | // number information 79 | st_number_t n; 80 | 81 | // percent sign graphic 82 | patch_t* p; 83 | 84 | } st_percent_t; 85 | 86 | 87 | 88 | // Multiple Icon widget 89 | typedef struct 90 | { 91 | // center-justified location of icons 92 | int x; 93 | int y; 94 | 95 | // last icon number 96 | int oldinum; 97 | 98 | // pointer to current icon 99 | int* inum; 100 | 101 | // pointer to boolean stating 102 | // whether to update icon 103 | boolean* on; 104 | 105 | // list of icons 106 | patch_t** p; 107 | 108 | // user data 109 | int data; 110 | 111 | } st_multicon_t; 112 | 113 | 114 | 115 | 116 | // Binary Icon widget 117 | 118 | typedef struct 119 | { 120 | // center-justified location of icon 121 | int x; 122 | int y; 123 | 124 | // last icon value 125 | int oldval; 126 | 127 | // pointer to current icon status 128 | boolean* val; 129 | 130 | // pointer to boolean 131 | // stating whether to update icon 132 | boolean* on; 133 | 134 | 135 | patch_t* p; // icon 136 | int data; // user data 137 | 138 | } st_binicon_t; 139 | 140 | 141 | 142 | // 143 | // Widget creation, access, and update routines 144 | // 145 | 146 | // Initializes widget library. 147 | // More precisely, initialize STMINUS, 148 | // everything else is done somewhere else. 149 | // 150 | void STlib_init(void); 151 | 152 | 153 | 154 | // Number widget routines 155 | void 156 | STlib_initNum 157 | ( st_number_t* n, 158 | int x, 159 | int y, 160 | patch_t** pl, 161 | int* num, 162 | boolean* on, 163 | int width ); 164 | 165 | void 166 | STlib_updateNum 167 | ( st_number_t* n, 168 | boolean refresh ); 169 | 170 | 171 | // Percent widget routines 172 | void 173 | STlib_initPercent 174 | ( st_percent_t* p, 175 | int x, 176 | int y, 177 | patch_t** pl, 178 | int* num, 179 | boolean* on, 180 | patch_t* percent ); 181 | 182 | 183 | void 184 | STlib_updatePercent 185 | ( st_percent_t* per, 186 | int refresh ); 187 | 188 | 189 | // Multiple Icon widget routines 190 | void 191 | STlib_initMultIcon 192 | ( st_multicon_t* mi, 193 | int x, 194 | int y, 195 | patch_t** il, 196 | int* inum, 197 | boolean* on ); 198 | 199 | 200 | void 201 | STlib_updateMultIcon 202 | ( st_multicon_t* mi, 203 | boolean refresh ); 204 | 205 | // Binary Icon widget routines 206 | 207 | void 208 | STlib_initBinIcon 209 | ( st_binicon_t* b, 210 | int x, 211 | int y, 212 | patch_t* i, 213 | boolean* val, 214 | boolean* on ); 215 | 216 | void 217 | STlib_updateBinIcon 218 | ( st_binicon_t* bi, 219 | boolean refresh ); 220 | 221 | #endif 222 | //----------------------------------------------------------------------------- 223 | // 224 | // $Log:$ 225 | // 226 | //----------------------------------------------------------------------------- 227 | -------------------------------------------------------------------------------- /linuxdoom-1.10/st_stuff.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Status bar code. 19 | // Does the face/direction indicator animatin. 20 | // Does palette indicators as well (red pain/berserk, bright pickup) 21 | // 22 | //----------------------------------------------------------------------------- 23 | 24 | #ifndef __STSTUFF_H__ 25 | #define __STSTUFF_H__ 26 | 27 | #include "doomtype.h" 28 | #include "d_event.h" 29 | 30 | // Size of statusbar. 31 | // Now sensitive for scaling. 32 | #define ST_HEIGHT 32*SCREEN_MUL 33 | #define ST_WIDTH SCREENWIDTH 34 | #define ST_Y (SCREENHEIGHT - ST_HEIGHT) 35 | 36 | 37 | // 38 | // STATUS BAR 39 | // 40 | 41 | // Called by main loop. 42 | boolean ST_Responder (event_t* ev); 43 | 44 | // Called by main loop. 45 | void ST_Ticker (void); 46 | 47 | // Called by main loop. 48 | void ST_Drawer (boolean fullscreen, boolean refresh); 49 | 50 | // Called when the console player is spawned on each level. 51 | void ST_Start (void); 52 | 53 | // Called by startup code. 54 | void ST_Init (void); 55 | 56 | 57 | 58 | // States for status bar code. 59 | typedef enum 60 | { 61 | AutomapState, 62 | FirstPersonState 63 | 64 | } st_stateenum_t; 65 | 66 | 67 | // States for the chat code. 68 | typedef enum 69 | { 70 | StartChatState, 71 | WaitDestState, 72 | GetChatState 73 | 74 | } st_chatstateenum_t; 75 | 76 | 77 | boolean ST_Responder(event_t* ev); 78 | 79 | 80 | 81 | #endif 82 | //----------------------------------------------------------------------------- 83 | // 84 | // $Log:$ 85 | // 86 | //----------------------------------------------------------------------------- 87 | -------------------------------------------------------------------------------- /linuxdoom-1.10/tables.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Lookup tables. 19 | // Do not try to look them up :-). 20 | // In the order of appearance: 21 | // 22 | // int finetangent[4096] - Tangens LUT. 23 | // Should work with BAM fairly well (12 of 16bit, 24 | // effectively, by shifting). 25 | // 26 | // int finesine[10240] - Sine lookup. 27 | // Guess what, serves as cosine, too. 28 | // Remarkable thing is, how to use BAMs with this? 29 | // 30 | // int tantoangle[2049] - ArcTan LUT, 31 | // maps tan(angle) to angle fast. Gotta search. 32 | // 33 | //----------------------------------------------------------------------------- 34 | 35 | 36 | #ifndef __TABLES__ 37 | #define __TABLES__ 38 | 39 | 40 | 41 | #ifdef LINUX 42 | #include 43 | #else 44 | #define PI 3.141592657 45 | #endif 46 | 47 | 48 | #include "m_fixed.h" 49 | 50 | #define FINEANGLES 8192 51 | #define FINEMASK (FINEANGLES-1) 52 | 53 | 54 | // 0x100000000 to 0x2000 55 | #define ANGLETOFINESHIFT 19 56 | 57 | // Effective size is 10240. 58 | extern fixed_t finesine[5*FINEANGLES/4]; 59 | 60 | // Re-use data, is just PI/2 pahse shift. 61 | extern fixed_t* finecosine; 62 | 63 | 64 | // Effective size is 4096. 65 | extern fixed_t finetangent[FINEANGLES/2]; 66 | 67 | // Binary Angle Measument, BAM. 68 | #define ANG45 0x20000000 69 | #define ANG90 0x40000000 70 | #define ANG180 0x80000000 71 | #define ANG270 0xc0000000 72 | 73 | 74 | #define SLOPERANGE 2048 75 | #define SLOPEBITS 11 76 | #define DBITS (FRACBITS-SLOPEBITS) 77 | 78 | typedef unsigned angle_t; 79 | 80 | 81 | // Effective size is 2049; 82 | // The +1 size is to handle the case when x==y 83 | // without additional checking. 84 | extern angle_t tantoangle[SLOPERANGE+1]; 85 | 86 | 87 | // Utility function, 88 | // called by R_PointToAngle. 89 | int 90 | SlopeDiv 91 | ( unsigned num, 92 | unsigned den); 93 | 94 | 95 | #endif 96 | //----------------------------------------------------------------------------- 97 | // 98 | // $Log:$ 99 | // 100 | //----------------------------------------------------------------------------- 101 | -------------------------------------------------------------------------------- /linuxdoom-1.10/unistd.h: -------------------------------------------------------------------------------- 1 | #ifndef _UNISTD_H 2 | #define _UNISTD_H 1 3 | 4 | /* This is intended as a drop-in replacement for unistd.h on Windows. 5 | * Please add functionality as neeeded. 6 | * https://stackoverflow.com/a/826027/1202830 7 | */ 8 | 9 | #include 10 | #include /* for getpid() and the exec..() family */ 11 | #include /* for _getcwd() and _chdir() */ 12 | 13 | #define srandom srand 14 | #define random rand 15 | 16 | /* Values for the second argument to access. 17 | These may be OR'd together. */ 18 | #define R_OK 4 /* Test for read permission. */ 19 | #define W_OK 2 /* Test for write permission. */ 20 | //#define X_OK 1 /* execute permission - unsupported in windows*/ 21 | #define F_OK 0 /* Test for existence. */ 22 | 23 | #define access _access 24 | #define dup2 _dup2 25 | #define execve _execve 26 | #define ftruncate _chsize 27 | #define unlink _unlink 28 | #define fileno _fileno 29 | #define getcwd _getcwd 30 | #define chdir _chdir 31 | #define isatty _isatty 32 | #define lseek _lseek 33 | /* read, write, and close are NOT being #defined here, because while there are file handle specific versions for Windows, they probably don't work for sockets. You need to look at your app and consider whether to call e.g. closesocket(). */ 34 | 35 | #ifdef _WIN64 36 | #define ssize_t __int64 37 | #else 38 | #define ssize_t long 39 | #endif 40 | 41 | #define STDIN_FILENO 0 42 | #define STDOUT_FILENO 1 43 | #define STDERR_FILENO 2 44 | /* should be in some equivalent to */ 45 | typedef __int8 int8_t; 46 | typedef __int16 int16_t; 47 | typedef __int32 int32_t; 48 | typedef __int64 int64_t; 49 | typedef unsigned __int8 uint8_t; 50 | typedef unsigned __int16 uint16_t; 51 | typedef unsigned __int32 uint32_t; 52 | typedef unsigned __int64 uint64_t; 53 | 54 | #endif /* unistd.h */ 55 | -------------------------------------------------------------------------------- /linuxdoom-1.10/v_video.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Gamma correction LUT. 19 | // Functions to draw patches (by post) directly to screen. 20 | // Functions to blit a block to the screen. 21 | // 22 | //----------------------------------------------------------------------------- 23 | 24 | 25 | #ifndef __V_VIDEO__ 26 | #define __V_VIDEO__ 27 | 28 | #include "doomtype.h" 29 | 30 | #include "doomdef.h" 31 | 32 | // Needed because we are refering to patches. 33 | #include "r_data.h" 34 | 35 | // 36 | // VIDEO 37 | // 38 | 39 | #define CENTERY (SCREENHEIGHT/2) 40 | 41 | 42 | // Screen 0 is the screen updated by I_Update screen. 43 | // Screen 1 is an extra buffer. 44 | 45 | 46 | 47 | extern byte* screens[5]; 48 | 49 | extern int dirtybox[4]; 50 | 51 | extern byte gammatable[5][256]; 52 | extern int usegamma; 53 | 54 | 55 | 56 | // Allocates buffer screens, call before R_Init. 57 | void V_Init (void); 58 | 59 | 60 | void 61 | V_CopyRect 62 | ( int srcx, 63 | int srcy, 64 | int srcscrn, 65 | int width, 66 | int height, 67 | int destx, 68 | int desty, 69 | int destscrn ); 70 | 71 | void 72 | V_DrawPatch 73 | ( int x, 74 | int y, 75 | int scrn, 76 | patch_t* patch); 77 | 78 | void 79 | V_DrawPatchDirect 80 | ( int x, 81 | int y, 82 | int scrn, 83 | patch_t* patch ); 84 | 85 | 86 | // Draw a linear block of pixels into the view buffer. 87 | void 88 | V_DrawBlock 89 | ( int x, 90 | int y, 91 | int scrn, 92 | int width, 93 | int height, 94 | byte* src ); 95 | 96 | // Reads a linear block of pixels into the view buffer. 97 | void 98 | V_GetBlock 99 | ( int x, 100 | int y, 101 | int scrn, 102 | int width, 103 | int height, 104 | byte* dest ); 105 | 106 | 107 | void 108 | V_MarkRect 109 | ( int x, 110 | int y, 111 | int width, 112 | int height ); 113 | 114 | #endif 115 | //----------------------------------------------------------------------------- 116 | // 117 | // $Log:$ 118 | // 119 | //----------------------------------------------------------------------------- 120 | -------------------------------------------------------------------------------- /linuxdoom-1.10/w_wad.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // WAD I/O functions. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | 23 | #ifndef __W_WAD__ 24 | #define __W_WAD__ 25 | 26 | 27 | #ifdef __GNUG__ 28 | #pragma interface 29 | #endif 30 | 31 | 32 | // 33 | // TYPES 34 | // 35 | typedef struct 36 | { 37 | // Should be "IWAD" or "PWAD". 38 | char identification[4]; 39 | int numlumps; 40 | int infotableofs; 41 | 42 | } wadinfo_t; 43 | 44 | 45 | typedef struct 46 | { 47 | int filepos; 48 | int size; 49 | char name[8]; 50 | 51 | } filelump_t; 52 | 53 | // 54 | // WADFILE I/O related stuff. 55 | // 56 | typedef struct 57 | { 58 | char name[8]; 59 | int handle; 60 | int position; 61 | int size; 62 | } lumpinfo_t; 63 | 64 | 65 | extern void** lumpcache; 66 | extern lumpinfo_t* lumpinfo; 67 | extern int numlumps; 68 | 69 | void W_InitMultipleFiles (char** filenames); 70 | void W_Reload (void); 71 | 72 | int W_CheckNumForName (char* name); 73 | int W_GetNumForName (char* name); 74 | 75 | int W_LumpLength (int lump); 76 | void W_ReadLump (int lump, void *dest); 77 | 78 | void* W_CacheLumpNum (int lump, int tag); 79 | void* W_CacheLumpName (char* name, int tag); 80 | 81 | 82 | 83 | 84 | #endif 85 | //----------------------------------------------------------------------------- 86 | // 87 | // $Log:$ 88 | // 89 | //----------------------------------------------------------------------------- 90 | -------------------------------------------------------------------------------- /linuxdoom-1.10/wi_stuff.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Intermission. 19 | // 20 | //----------------------------------------------------------------------------- 21 | 22 | #ifndef __WI_STUFF__ 23 | #define __WI_STUFF__ 24 | 25 | //#include "v_video.h" 26 | 27 | #include "doomdef.h" 28 | 29 | // States for the intermission 30 | 31 | typedef enum 32 | { 33 | NoState = -1, 34 | StatCount, 35 | ShowNextLoc 36 | 37 | } stateenum_t; 38 | 39 | // Called by main loop, animate the intermission. 40 | void WI_Ticker (void); 41 | 42 | // Called by main loop, 43 | // draws the intermission directly into the screen buffer. 44 | void WI_Drawer (void); 45 | 46 | // Setup for an intermission screen. 47 | void WI_Start(wbstartstruct_t* wbstartstruct); 48 | 49 | #endif 50 | //----------------------------------------------------------------------------- 51 | // 52 | // $Log:$ 53 | // 54 | //----------------------------------------------------------------------------- 55 | -------------------------------------------------------------------------------- /linuxdoom-1.10/z_zone.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id:$ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // DESCRIPTION: 18 | // Zone Memory Allocation, perhaps NeXT ObjectiveC inspired. 19 | // Remark: this was the only stuff that, according 20 | // to John Carmack, might have been useful for 21 | // Quake. 22 | // 23 | //--------------------------------------------------------------------- 24 | 25 | 26 | 27 | #ifndef __Z_ZONE__ 28 | #define __Z_ZONE__ 29 | 30 | #include 31 | 32 | // 33 | // ZONE MEMORY 34 | // PU - purge tags. 35 | // Tags < 100 are not overwritten until freed. 36 | #define PU_STATIC 1 // static entire execution time 37 | #define PU_SOUND 2 // static while playing 38 | #define PU_MUSIC 3 // static while playing 39 | #define PU_DAVE 4 // anything else Dave wants static 40 | #define PU_LEVEL 50 // static until level exited 41 | #define PU_LEVSPEC 51 // a special thinker in a level 42 | // Tags >= 100 are purgable whenever needed. 43 | #define PU_PURGELEVEL 100 44 | #define PU_CACHE 101 45 | 46 | 47 | void Z_Init (void); 48 | void* Z_Malloc (int size, int tag, void *ptr); 49 | void Z_Free (void *ptr); 50 | void Z_FreeTags (int lowtag, int hightag); 51 | void Z_DumpHeap (int lowtag, int hightag); 52 | void Z_FileDumpHeap (FILE *f); 53 | void Z_CheckHeap (void); 54 | void Z_ChangeTag2 (void *ptr, int tag); 55 | int Z_FreeMemory (void); 56 | 57 | 58 | typedef struct memblock_s 59 | { 60 | int size; // including the header and possibly tiny fragments 61 | void** user; // NULL if a free block 62 | int tag; // purgelevel 63 | int id; // should be ZONEID 64 | struct memblock_s* next; 65 | struct memblock_s* prev; 66 | } memblock_t; 67 | 68 | // 69 | // This is used to get the local FILE:LINE info from CPP 70 | // prior to really call the function in question. 71 | // 72 | #define Z_ChangeTag(p,t) \ 73 | { \ 74 | if (( (memblock_t *)( (byte *)(p) - sizeof(memblock_t)))->id!=0x1d4a11) \ 75 | I_Error("Z_CT at "__FILE__":%i",__LINE__); \ 76 | Z_ChangeTag2(p,t); \ 77 | }; 78 | 79 | 80 | 81 | #endif 82 | //----------------------------------------------------------------------------- 83 | // 84 | // $Log:$ 85 | // 86 | //----------------------------------------------------------------------------- 87 | -------------------------------------------------------------------------------- /sersrc/DOOMNET.C: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include "doomnet.h" 8 | 9 | //#include "serstr.h" 10 | #include "ser_frch.h" // FRENCH VERSION 11 | 12 | #define DOOM2 13 | 14 | extern int myargc; 15 | extern char **myargv; 16 | 17 | doomcom_t doomcom; 18 | int vectorishooked; 19 | void interrupt (*olddoomvect) (void); 20 | 21 | 22 | 23 | /* 24 | ================= 25 | = 26 | = CheckParm 27 | = 28 | = Checks for the given parameter in the program's command line arguments 29 | = 30 | = Returns the argument number (1 to argc-1) or 0 if not present 31 | = 32 | ================= 33 | */ 34 | 35 | int CheckParm (char *check) 36 | { 37 | int i; 38 | 39 | for (i = 1;i 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | 14 | #define INPUT(port) inportb(port) 15 | #define OUTPUT(port,data) outportb(port,data) 16 | #define CLI() disable() 17 | #define STI() enable() 18 | 19 | 20 | typedef enum {false, true} boolean; 21 | typedef unsigned char byte; 22 | 23 | 24 | #define TRANSMIT_HOLDING_REGISTER 0x00 25 | #define RECEIVE_BUFFER_REGISTER 0x00 26 | #define INTERRUPT_ENABLE_REGISTER 0x01 27 | #define IER_RX_DATA_READY 0x01 28 | #define IER_TX_HOLDING_REGISTER_EMPTY 0x02 29 | #define IER_LINE_STATUS 0x04 30 | #define IER_MODEM_STATUS 0x08 31 | #define INTERRUPT_ID_REGISTER 0x02 32 | #define IIR_MODEM_STATUS_INTERRUPT 0x00 33 | #define IIR_TX_HOLDING_REGISTER_INTERRUPT 0x02 34 | #define IIR_RX_DATA_READY_INTERRUPT 0x04 35 | #define IIR_LINE_STATUS_INTERRUPT 0x06 36 | #define FIFO_CONTROL_REGISTER 0x02 37 | #define FCR_FIFO_ENABLE 0x01 38 | #define FCR_RCVR_FIFO_RESET 0x02 39 | #define FCR_XMIT_FIFO_RESET 0x04 40 | #define FCR_RCVR_TRIGGER_LSB 0x40 41 | #define FCR_RCVR_TRIGGER_MSB 0x80 42 | #define FCR_TRIGGER_01 0x00 43 | #define FCR_TRIGGER_04 0x40 44 | #define FCR_TRIGGER_08 0x80 45 | #define FCR_TRIGGER_14 0xc0 46 | #define LINE_CONTROL_REGISTER 0x03 47 | #define LCR_WORD_LENGTH_MASK 0x03 48 | #define LCR_WORD_LENGTH_SELECT_0 0x01 49 | #define LCR_WORD_LENGTH_SELECT_1 0x02 50 | #define LCR_STOP_BITS 0x04 51 | #define LCR_PARITY_MASK 0x38 52 | #define LCR_PARITY_ENABLE 0x08 53 | #define LCR_EVEN_PARITY_SELECT 0x10 54 | #define LCR_STICK_PARITY 0x20 55 | #define LCR_SET_BREAK 0x40 56 | #define LCR_DLAB 0x80 57 | #define MODEM_CONTROL_REGISTER 0x04 58 | #define MCR_DTR 0x01 59 | #define MCR_RTS 0x02 60 | #define MCR_OUT1 0x04 61 | #define MCR_OUT2 0x08 62 | #define MCR_LOOPBACK 0x10 63 | #define LINE_STATUS_REGISTER 0x05 64 | #define LSR_DATA_READY 0x01 65 | #define LSR_OVERRUN_ERROR 0x02 66 | #define LSR_PARITY_ERROR 0x04 67 | #define LSR_FRAMING_ERROR 0x08 68 | #define LSR_BREAK_DETECT 0x10 69 | #define LSR_THRE 0x20 70 | #define MODEM_STATUS_REGISTER 0x06 71 | #define MSR_DELTA_CTS 0x01 72 | #define MSR_DELTA_DSR 0x02 73 | #define MSR_TERI 0x04 74 | #define MSR_DELTA_CD 0x08 75 | #define MSR_CTS 0x10 76 | #define MSR_DSR 0x20 77 | #define MSR_RI 0x40 78 | #define MSR_CD 0x80 79 | #define DIVISOR_LATCH_LOW 0x00 80 | #define DIVISOR_LATCH_HIGH 0x01 81 | 82 | 83 | 84 | #define QUESIZE 2048 85 | 86 | typedef struct 87 | { 88 | long head, tail; // bytes are put on head and pulled from tail 89 | unsigned char data[QUESIZE]; 90 | } que_t; 91 | 92 | void InitPort (void); 93 | void ShutdownPort (void); 94 | 95 | int read_byte( void ); 96 | void write_byte( int c ); 97 | 98 | 99 | void Error (char *error, ...); 100 | 101 | extern int argc; 102 | extern char **argv; 103 | -------------------------------------------------------------------------------- /sersrc/SERSTR.H: -------------------------------------------------------------------------------- 1 | #define STR_DROPDTR "Dropping DTR" 2 | #define STR_CLEANEXIT "Clean exit from SERSETUP" 3 | #define STR_ATTEMPT "Attempting to connect across serial link, press escape to abort." 4 | #define STR_NETABORT "Network game synchronization aborted." 5 | #define STR_DUPLICATE "Duplicate id string, try again or check modem init string." 6 | #define STR_MODEMCMD "Modem command : " 7 | #define STR_MODEMRESP "Modem response: " 8 | #define STR_RESPABORT "Modem response aborted." 9 | #define STR_CANTREAD "Couldn't read MODEM.CFG" 10 | #define STR_DIALING "Dialing..." 11 | #define STR_CONNECT "CONNECT" 12 | #define STR_WAITRING "Waiting for ring..." 13 | #define STR_RING "RING" 14 | #define STR_NORESP "No such response file!" 15 | #define STR_DOOMSERIAL "DOOM II SERIAL DEVICE DRIVER v1.4" 16 | #define STR_WARNING \ 17 | "Warning: no NULL or iret interrupt vectors were found in the 0x60 to 0x66\n"\ 18 | "range. You can specify a vector with the -vector 0x parameter.\n" 19 | #define STR_COMM "Communicating with interrupt vector 0x%x" 20 | #define STR_RETURNED "Returned from DOOM II" 21 | #define STR_PORTSET "Setting port to %lu baud" 22 | -------------------------------------------------------------------------------- /sersrc/SER_FRCH.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichalStrehovsky/doom-clr/ff6da7784cc54c82b5b02814ba20bee9bb94fd10/sersrc/SER_FRCH.H -------------------------------------------------------------------------------- /sndserv/Makefile: -------------------------------------------------------------------------------- 1 | ########################################################## 2 | # 3 | # $Id:$ 4 | # 5 | # $Log:$ 6 | # 7 | # 8 | 9 | CC=gcc 10 | CFLAGS=-O -DNORMALUNIX -DLINUX 11 | LDFLAGS= 12 | LIBS=-lm 13 | 14 | O=linux 15 | 16 | all: $(O)/sndserver 17 | 18 | clean: 19 | rm -f *.o *~ *.flc 20 | rm -f linux/* 21 | 22 | # Target 23 | $(O)/sndserver: \ 24 | $(O)/soundsrv.o \ 25 | $(O)/sounds.o \ 26 | $(O)/wadread.o \ 27 | $(O)/linux.o 28 | $(CC) $(CFLAGS) $(LDFLAGS) \ 29 | $(O)/soundsrv.o \ 30 | $(O)/sounds.o \ 31 | $(O)/wadread.o \ 32 | $(O)/linux.o -o $(O)/sndserver $(LIBS) 33 | echo make complete. 34 | 35 | # Rule 36 | $(O)/%.o: %.c 37 | $(CC) $(CFLAGS) -c $< -o $@ 38 | 39 | 40 | -------------------------------------------------------------------------------- /sndserv/README.sndserv: -------------------------------------------------------------------------------- 1 | 2 | This is the soundserver as used by the original 3 | Linuxdoom release. I separated the source from 4 | the actual Linuxduum source. For various reasons 5 | the separate sound process seems to give the 6 | best results - both synchronous and timer driven 7 | output demonstrate glitches. These might either 8 | be timing issues, or introduced by the changes 9 | I made to the linux sound code while merging it 10 | back into the main tree. 11 | 12 | Note that neither John Carmack nor Dave Taylor 13 | are responsible for the current sound handling. 14 | 15 | -------------------------------------------------------------------------------- /sndserv/linux.c: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id: linux.c,v 1.3 1997/01/26 07:45:01 b1 Exp $ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // 18 | // $Log: linux.c,v $ 19 | // Revision 1.3 1997/01/26 07:45:01 b1 20 | // 2nd formatting run, fixed a few warnings as well. 21 | // 22 | // Revision 1.2 1997/01/21 19:00:01 b1 23 | // First formatting run: 24 | // using Emacs cc-mode.el indentation for C++ now. 25 | // 26 | // Revision 1.1 1997/01/19 17:22:45 b1 27 | // Initial check in DOOM sources as of Jan. 10th, 1997 28 | // 29 | // 30 | // DESCRIPTION: 31 | // UNIX, soundserver for Linux i386. 32 | // 33 | //----------------------------------------------------------------------------- 34 | 35 | static const char rcsid[] = "$Id: linux.c,v 1.3 1997/01/26 07:45:01 b1 Exp $"; 36 | 37 | 38 | #include 39 | #include 40 | #include 41 | #include 42 | 43 | #include 44 | 45 | #include "soundsrv.h" 46 | 47 | int audio_fd; 48 | 49 | void 50 | myioctl 51 | ( int fd, 52 | int command, 53 | int* arg ) 54 | { 55 | int rc; 56 | extern int errno; 57 | 58 | rc = ioctl(fd, command, arg); 59 | if (rc < 0) 60 | { 61 | fprintf(stderr, "ioctl(dsp,%d,arg) failed\n", command); 62 | fprintf(stderr, "errno=%d\n", errno); 63 | exit(-1); 64 | } 65 | } 66 | 67 | void I_InitMusic(void) 68 | { 69 | } 70 | 71 | void 72 | I_InitSound 73 | ( int samplerate, 74 | int samplesize ) 75 | { 76 | 77 | int i; 78 | 79 | audio_fd = open("/dev/dsp", O_WRONLY); 80 | if (audio_fd<0) 81 | fprintf(stderr, "Could not open /dev/dsp\n"); 82 | 83 | 84 | i = 11 | (2<<16); 85 | myioctl(audio_fd, SNDCTL_DSP_SETFRAGMENT, &i); 86 | 87 | myioctl(audio_fd, SNDCTL_DSP_RESET, 0); 88 | i=11025; 89 | myioctl(audio_fd, SNDCTL_DSP_SPEED, &i); 90 | i=1; 91 | myioctl(audio_fd, SNDCTL_DSP_STEREO, &i); 92 | 93 | myioctl(audio_fd, SNDCTL_DSP_GETFMTS, &i); 94 | if (i&=AFMT_S16_LE) 95 | myioctl(audio_fd, SNDCTL_DSP_SETFMT, &i); 96 | else 97 | fprintf(stderr, "Could not play signed 16 data\n"); 98 | 99 | } 100 | 101 | void 102 | I_SubmitOutputBuffer 103 | ( void* samples, 104 | int samplecount ) 105 | { 106 | write(audio_fd, samples, samplecount*4); 107 | } 108 | 109 | void I_ShutdownSound(void) 110 | { 111 | 112 | close(audio_fd); 113 | 114 | } 115 | 116 | void I_ShutdownMusic(void) 117 | { 118 | } 119 | -------------------------------------------------------------------------------- /sndserv/sounds.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id: sounds.h,v 1.3 1997/01/29 22:40:44 b1 Exp $ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // 18 | // $Log: sounds.h,v $ 19 | // Revision 1.3 1997/01/29 22:40:44 b1 20 | // Reformatting, S (sound) module files. 21 | // 22 | // Revision 1.2 1997/01/21 19:00:07 b1 23 | // First formatting run: 24 | // using Emacs cc-mode.el indentation for C++ now. 25 | // 26 | // Revision 1.1 1997/01/19 17:22:50 b1 27 | // Initial check in DOOM sources as of Jan. 10th, 1997 28 | // 29 | // 30 | // DESCRIPTION: 31 | // Created by Dave Taylor's sound utility. 32 | // Kept as a sample, DOOM sounds. 33 | // 34 | //----------------------------------------------------------------------------- 35 | 36 | #ifndef __SOUNDSH__ 37 | #define __SOUNDSH__ 38 | 39 | #include "soundst.h" 40 | 41 | // 42 | // Identifiers for all music in game. 43 | // 44 | 45 | typedef enum 46 | { 47 | mus_None, 48 | mus_e1m1, 49 | mus_e1m2, 50 | mus_e1m3, 51 | mus_e1m4, 52 | mus_e1m5, 53 | mus_e1m6, 54 | mus_e1m7, 55 | mus_e1m8, 56 | mus_e1m9, 57 | mus_e2m1, 58 | mus_e2m2, 59 | mus_e2m3, 60 | mus_e2m4, 61 | mus_e2m5, 62 | mus_e2m6, 63 | mus_e2m7, 64 | mus_e2m8, 65 | mus_e2m9, 66 | mus_e3m1, 67 | mus_e3m2, 68 | mus_e3m3, 69 | mus_e3m4, 70 | mus_e3m5, 71 | mus_e3m6, 72 | mus_e3m7, 73 | mus_e3m8, 74 | mus_e3m9, 75 | mus_inter, 76 | mus_intro, 77 | mus_bunny, 78 | mus_victor, 79 | mus_introa, 80 | mus_runnin, 81 | mus_stalks, 82 | mus_countd, 83 | mus_betwee, 84 | mus_doom, 85 | mus_the_da, 86 | mus_shawn, 87 | mus_ddtblu, 88 | mus_in_cit, 89 | mus_dead, 90 | mus_stlks2, 91 | mus_theda2, 92 | mus_doom2, 93 | mus_ddtbl2, 94 | mus_runni2, 95 | mus_dead2, 96 | mus_stlks3, 97 | mus_romero, 98 | mus_shawn2, 99 | mus_messag, 100 | mus_count2, 101 | mus_ddtbl3, 102 | mus_ampie, 103 | mus_theda3, 104 | mus_adrian, 105 | mus_messg2, 106 | mus_romer2, 107 | mus_tense, 108 | mus_shawn3, 109 | mus_openin, 110 | mus_evil, 111 | mus_ultima, 112 | mus_read_m, 113 | mus_dm2ttl, 114 | mus_dm2int, 115 | NUMMUSIC 116 | } musicenum_t; 117 | 118 | 119 | // 120 | // Identifiers for all sfx in game. 121 | // 122 | 123 | typedef enum 124 | { 125 | sfx_None, 126 | sfx_pistol, 127 | sfx_shotgn, 128 | sfx_sgcock, 129 | sfx_dshtgn, 130 | sfx_dbopn, 131 | sfx_dbcls, 132 | sfx_dbload, 133 | sfx_plasma, 134 | sfx_bfg, 135 | sfx_sawup, 136 | sfx_sawidl, 137 | sfx_sawful, 138 | sfx_sawhit, 139 | sfx_rlaunc, 140 | sfx_rxplod, 141 | sfx_firsht, 142 | sfx_firxpl, 143 | sfx_pstart, 144 | sfx_pstop, 145 | sfx_doropn, 146 | sfx_dorcls, 147 | sfx_stnmov, 148 | sfx_swtchn, 149 | sfx_swtchx, 150 | sfx_plpain, 151 | sfx_dmpain, 152 | sfx_popain, 153 | sfx_vipain, 154 | sfx_mnpain, 155 | sfx_pepain, 156 | sfx_slop, 157 | sfx_itemup, 158 | sfx_wpnup, 159 | sfx_oof, 160 | sfx_telept, 161 | sfx_posit1, 162 | sfx_posit2, 163 | sfx_posit3, 164 | sfx_bgsit1, 165 | sfx_bgsit2, 166 | sfx_sgtsit, 167 | sfx_cacsit, 168 | sfx_brssit, 169 | sfx_cybsit, 170 | sfx_spisit, 171 | sfx_bspsit, 172 | sfx_kntsit, 173 | sfx_vilsit, 174 | sfx_mansit, 175 | sfx_pesit, 176 | sfx_sklatk, 177 | sfx_sgtatk, 178 | sfx_skepch, 179 | sfx_vilatk, 180 | sfx_claw, 181 | sfx_skeswg, 182 | sfx_pldeth, 183 | sfx_pdiehi, 184 | sfx_podth1, 185 | sfx_podth2, 186 | sfx_podth3, 187 | sfx_bgdth1, 188 | sfx_bgdth2, 189 | sfx_sgtdth, 190 | sfx_cacdth, 191 | sfx_skldth, 192 | sfx_brsdth, 193 | sfx_cybdth, 194 | sfx_spidth, 195 | sfx_bspdth, 196 | sfx_vildth, 197 | sfx_kntdth, 198 | sfx_pedth, 199 | sfx_skedth, 200 | sfx_posact, 201 | sfx_bgact, 202 | sfx_dmact, 203 | sfx_bspact, 204 | sfx_bspwlk, 205 | sfx_vilact, 206 | sfx_noway, 207 | sfx_barexp, 208 | sfx_punch, 209 | sfx_hoof, 210 | sfx_metal, 211 | sfx_chgun, 212 | sfx_tink, 213 | sfx_bdopn, 214 | sfx_bdcls, 215 | sfx_itmbk, 216 | sfx_flame, 217 | sfx_flamst, 218 | sfx_getpow, 219 | sfx_bospit, 220 | sfx_boscub, 221 | sfx_bossit, 222 | sfx_bospn, 223 | sfx_bosdth, 224 | sfx_manatk, 225 | sfx_mandth, 226 | sfx_sssit, 227 | sfx_ssdth, 228 | sfx_keenpn, 229 | sfx_keendt, 230 | sfx_skeact, 231 | sfx_skesit, 232 | sfx_skeatk, 233 | sfx_radio, 234 | NUMSFX 235 | } sfxenum_t; 236 | 237 | extern musicinfo_t S_music[]; 238 | extern sfxinfo_t S_sfx[]; 239 | 240 | #endif 241 | 242 | -------------------------------------------------------------------------------- /sndserv/soundsrv.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id: soundsrv.h,v 1.3 1997/01/29 22:40:44 b1 Exp $ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // 18 | // $Log: soundsrv.h,v $ 19 | // Revision 1.3 1997/01/29 22:40:44 b1 20 | // Reformatting, S (sound) module files. 21 | // 22 | // Revision 1.2 1997/01/21 19:00:07 b1 23 | // First formatting run: 24 | // using Emacs cc-mode.el indentation for C++ now. 25 | // 26 | // Revision 1.1 1997/01/19 17:22:50 b1 27 | // Initial check in DOOM sources as of Jan. 10th, 1997 28 | // 29 | // 30 | // DESCRIPTION: 31 | // UNIX soundserver, separate process. 32 | // 33 | //----------------------------------------------------------------------------- 34 | 35 | #ifndef __SNDSERVER_H__ 36 | #define __SNDSERVER_H__ 37 | 38 | #define SAMPLECOUNT 512 39 | #define MIXBUFFERSIZE (SAMPLECOUNT*2*2) 40 | #define SPEED 11025 41 | 42 | 43 | void I_InitMusic(void); 44 | 45 | void 46 | I_InitSound 47 | ( int samplerate, 48 | int samplesound ); 49 | 50 | void 51 | I_SubmitOutputBuffer 52 | ( void* samples, 53 | int samplecount ); 54 | 55 | void I_ShutdownSound(void); 56 | void I_ShutdownMusic(void); 57 | 58 | #endif 59 | -------------------------------------------------------------------------------- /sndserv/wadread.h: -------------------------------------------------------------------------------- 1 | // Emacs style mode select -*- C++ -*- 2 | //----------------------------------------------------------------------------- 3 | // 4 | // $Id: wadread.h,v 1.3 1997/01/30 19:54:23 b1 Exp $ 5 | // 6 | // Copyright (C) 1993-1996 by id Software, Inc. 7 | // 8 | // This source is available for distribution and/or modification 9 | // only under the terms of the DOOM Source Code License as 10 | // published by id Software. All rights reserved. 11 | // 12 | // The source is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License 15 | // for more details. 16 | // 17 | // 18 | // $Log: wadread.h,v $ 19 | // Revision 1.3 1997/01/30 19:54:23 b1 20 | // Final reformatting run. All the remains (ST, W, WI, Z). 21 | // 22 | // Revision 1.2 1997/01/21 19:00:10 b1 23 | // First formatting run: 24 | // using Emacs cc-mode.el indentation for C++ now. 25 | // 26 | // Revision 1.1 1997/01/19 17:22:52 b1 27 | // Initial check in DOOM sources as of Jan. 10th, 1997 28 | // 29 | // 30 | // DESCRIPTION: 31 | // WAD and Lump I/O, the second. 32 | // This time for soundserver only. 33 | // Welcome to Department of Redundancy Department. 34 | // (Yeah, I said that elsewhere already). 35 | // Note: makes up for a nice w_wad.h. 36 | // 37 | //----------------------------------------------------------------------------- 38 | 39 | #ifndef __WADREAD_H__ 40 | #define __WADREAD_H__ 41 | 42 | // 43 | // Opens the wadfile specified. 44 | // Must be called before any calls to loadlump() or getsfx(). 45 | // 46 | 47 | void openwad(char* wadname); 48 | 49 | // 50 | // Gets a sound effect from the wad file. The pointer points to the 51 | // start of the data. Returns a 0 if the sfx was not 52 | // found. Sfx names should be no longer than 6 characters. All data is 53 | // rounded up in size to the nearest MIXBUFFERSIZE and is padded out with 54 | // 0x80's. Returns the data length in len. 55 | // 56 | 57 | void* 58 | getsfx 59 | ( char* sfxname, 60 | int* len ); 61 | 62 | #endif 63 | --------------------------------------------------------------------------------