commit b126e26499fc1b93d23aea2fcc5c82f759f675bd Author: Travis Bradshaw Date: Tue Jan 31 15:35:30 2012 -0600 The source of the setup program included with DOOM, Final DOOM, Strife, etc. diff --git a/CONFIG.BAK b/CONFIG.BAK new file mode 100644 index 0000000..8fe1bd1 --- /dev/null +++ b/CONFIG.BAK @@ -0,0 +1,1149 @@ +// +// Configure controllers +// +#include +#include +#include + +#include "main.h" + +void Pos(item_t *item) +{ + gotoxy(item->x+1,item->y+1); +} + +void Clear(item_t *item) +{ + int i; + + Pos(item); + for (i = 0;i < item->w; i++) + cprintf(" "); + gotoxy(1,25); +} + +// +// Get keyboard scan code +// +int GetScanCode (void) +{ + volatile unsigned short rval; + + while (kbhit()) + getch(); + + SaveScreen(); + DrawPup(&askpres); + + while(1) + { + rval = _bios_keybrd ( _KEYBRD_SHIFTSTATUS ); + + if ( rval & 0x0004 ) + { + rval = SC_CTRL; + break; + } + else if ( rval & 0x0008 ) + { + rval = SC_ALT; + break; + } + else if ( (rval & 0x0001) || (rval & 0x0002) ) + { + rval = SC_RIGHT_SHIFT; + break; + } + else + { + rval = _bios_keybrd ( _KEYBRD_READY ); + rval = rval >> 8; + +#ifndef STRIFE + if ( rval == SC_ENTER ) rval = 0; + if ( rval == SC_BACKSPACE ) rval = 0; +#endif + if ( rval ) break; + } + } + + RestoreScreen(); + while (kbhit()) + getch(); + + return ( rval ); +} + +enum {FORWARD,BACKWARD,LEFT,RIGHT, +#ifdef HERETIC + LOOKD,LOOKC,LOOKU,FLYD,FLYC,FLYU, +#endif + USE,FIRE,SPEED,STRAFE,STRAFE_LEFT,STRAFE_RIGHT, +#ifdef HERETIC + INVL,INVR, +#endif +#ifdef STRIFE + INVL,INVR,INVH,INVE,INVU,INVD,INVPOP,INVQ,HEALTHU,JUMP,LOOKU,LOOKD, +#endif + MAXKEYS}; +item_t idkeyselitems[]= +{ +#ifdef HERETIC + {FORWARD, 39,5,8, -1,-1}, + {BACKWARD, 39,6,8, -1,-1}, + {LEFT, 39,7,8, -1,-1}, + {RIGHT, 39,8,8, -1,-1}, + + {LOOKD, 29,10,8, -1,LOOKC, RIGHT,FLYD}, + {LOOKC, 39,10,8, LOOKD,LOOKU, RIGHT,FLYC}, + {LOOKU, 49,10,8, LOOKC,-1, RIGHT,FLYU}, + + {FLYD, 29,11,8, -1,FLYC, LOOKD,USE}, + {FLYC, 39,11,8, FLYD,FLYU, LOOKC,USE}, + {FLYU, 49,11,8, FLYC,-1, LOOKU,SPEED}, + + {USE, 29,13,8, -1,SPEED, FLYD}, + {FIRE, 29,14,8, -1,STRAFE}, + {SPEED, 49,13,8, USE,-1, FLYU}, + {STRAFE, 49,14,8, FIRE,-1}, + {STRAFE_LEFT, 42,15,8, -1,-1, FIRE}, + {STRAFE_RIGHT, 42,16,8, -1,-1}, + + {INVL, 42,17,8, -1,-1}, + {INVR, 42,18,8, -1,-1} +#endif +#ifdef STRIFE + {FORWARD, 30,5,8, -1,-1}, + {BACKWARD, 30,6,8, -1,-1}, + {LEFT, 30,7,8, -1,STRAFE_LEFT,BACKWARD,RIGHT}, + {RIGHT, 30,8,8, -1,STRAFE_RIGHT,LEFT,INVL}, + + {USE, 30,15,8, -1,SPEED,INVPOP,FIRE}, + {FIRE, 30,16,8, -1,STRAFE,USE,JUMP}, + {SPEED, 52,15,8, USE,-1, INVQ, STRAFE}, + {STRAFE, 52,16,8, FIRE,-1,SPEED,LOOKU}, + {STRAFE_LEFT, 52,7,8, LEFT,-1, HEALTHU, STRAFE_RIGHT}, + {STRAFE_RIGHT, 52,8,8, RIGHT,-1, STRAFE_LEFT,INVR}, + + {INVL, 30,10,8, -1,INVR,RIGHT,INVH}, + {INVR, 52,10,8, INVL,-1,STRAFE_RIGHT,INVE}, + + {INVH, 30,11,8, -1,INVE,INVL,INVU}, + {INVE, 52,11,8, INVH,-1,INVR,INVD}, + {INVU, 30,12,8, -1,INVD,INVH,INVPOP}, + {INVD, 52,12,8, INVU,-1,INVE,INVQ}, + {INVPOP, 30,13,8, -1,INVQ,INVU,USE}, + {INVQ, 52,13,8, INVPOP,-1,INVD,SPEED}, + {HEALTHU, 30,18,8, -1,LOOKD,JUMP,STRAFE_LEFT}, + + {JUMP, 30,17,8, -1,LOOKU,FIRE,HEALTHU}, + {LOOKU, 52,17,8, JUMP,-1,STRAFE,LOOKD}, + {LOOKD, 52,18,8, HEALTHU,-1,LOOKU,0}, +#else + {FORWARD, 47,5,8, -1,-1}, + {BACKWARD, 47,6,8, -1,-1}, + {LEFT, 47,7,8, -1,-1}, + {RIGHT, 47,8,8, -1,-1}, + + {USE, 47,12,8, -1,-1}, + {FIRE, 47,13,8, -1,-1}, + {SPEED, 47,14,8, -1,-1}, + {STRAFE, 47,15,8, -1,-1}, + {STRAFE_LEFT, 47,16,8, -1,-1}, + {STRAFE_RIGHT, 47,17,8, -1,-1}, +#endif +}; +menu_t idkeyselmenu= +{ + &idkeyselitems[0], + FORWARD, + MAXKEYS, + 0x7f +}; + +void IDConfigKeyboard(void) +{ + short field; + short key; + CONTS turk; + int rval; + + SaveScreen(); + DrawPup(&idkeysel); + + turk = curk; + + textbackground(1); + textcolor(15); + Clear(&idkeyselitems[FORWARD]); + Pos(&idkeyselitems[FORWARD]); + cprintf("%s",keydesc[turk.up] ); + Clear(&idkeyselitems[BACKWARD]); + Pos(&idkeyselitems[BACKWARD]); + cprintf("%s",keydesc[turk.down] ); + Clear(&idkeyselitems[LEFT]); + Pos(&idkeyselitems[LEFT]); + cprintf("%s",keydesc[turk.left] ); + Clear(&idkeyselitems[RIGHT]); + Pos(&idkeyselitems[RIGHT]); + cprintf("%s",keydesc[turk.right] ); + Clear(&idkeyselitems[USE]); + Pos(&idkeyselitems[USE]); + cprintf("%s",keydesc[turk.use] ); + Clear(&idkeyselitems[FIRE]); + Pos(&idkeyselitems[FIRE]); + cprintf("%s",keydesc[turk.fire] ); + Clear(&idkeyselitems[SPEED]); + Pos(&idkeyselitems[SPEED]); + cprintf("%s",keydesc[turk.key2] ); + Clear(&idkeyselitems[STRAFE]); + Pos(&idkeyselitems[STRAFE]); + cprintf("%s",keydesc[turk.key1] ); + Clear(&idkeyselitems[STRAFE_LEFT]); + Pos(&idkeyselitems[STRAFE_LEFT]); + cprintf("%s",keydesc[turk.key3] ); + Clear(&idkeyselitems[STRAFE_RIGHT]); + Pos(&idkeyselitems[STRAFE_RIGHT]); + cprintf("%s",keydesc[turk.key4] ); + +#ifdef HERETIC + Clear(&idkeyselitems[LOOKD]); + Pos(&idkeyselitems[LOOKD]); + cprintf("%s",keydesc[turk.lookdown] ); + Clear(&idkeyselitems[LOOKC]); + Pos(&idkeyselitems[LOOKC]); + cprintf("%s",keydesc[turk.lookcenter] ); + Clear(&idkeyselitems[LOOKU]); + Pos(&idkeyselitems[LOOKU]); + cprintf("%s",keydesc[turk.lookup] ); + + Clear(&idkeyselitems[FLYD]); + Pos(&idkeyselitems[FLYD]); + cprintf("%s",keydesc[turk.flydown] ); + Clear(&idkeyselitems[FLYC]); + Pos(&idkeyselitems[FLYC]); + cprintf("%s",keydesc[turk.flycenter] ); + Clear(&idkeyselitems[FLYU]); + Pos(&idkeyselitems[FLYU]); + cprintf("%s",keydesc[turk.flyup] ); + + Clear(&idkeyselitems[INVL]); + Pos(&idkeyselitems[INVL]); + cprintf("%s",keydesc[turk.invleft] ); + Clear(&idkeyselitems[INVR]); + Pos(&idkeyselitems[INVR]); + cprintf("%s",keydesc[turk.invright] ); +#endif +#ifdef STRIFE + Clear(&idkeyselitems[INVL]); + Pos(&idkeyselitems[INVL]); + cprintf("%s",keydesc[turk.invleft] ); + Clear(&idkeyselitems[INVR]); + Pos(&idkeyselitems[INVR]); + cprintf("%s",keydesc[turk.invright] ); + Clear(&idkeyselitems[INVH]); + Pos(&idkeyselitems[INVH]); + cprintf("%s",keydesc[turk.invhome] ); + Clear(&idkeyselitems[INVE]); + Pos(&idkeyselitems[INVE]); + cprintf("%s",keydesc[turk.invend] ); + Clear(&idkeyselitems[INVU]); + Pos(&idkeyselitems[INVU]); + cprintf("%s",keydesc[turk.invuse] ); + Clear(&idkeyselitems[INVD]); + Pos(&idkeyselitems[INVD]); + cprintf("%s",keydesc[turk.invdrop] ); + Clear(&idkeyselitems[INVPOP]); + Pos(&idkeyselitems[INVPOP]); + cprintf("%s",keydesc[turk.invpop] ); + Clear(&idkeyselitems[INVQ]); + Pos(&idkeyselitems[INVQ]); + cprintf("%s",keydesc[turk.invquery] ); + Clear(&idkeyselitems[HEALTHU]); + Pos(&idkeyselitems[HEALTHU]); + cprintf("%s",keydesc[turk.healthuse] ); + Clear(&idkeyselitems[JUMP]); + Pos(&idkeyselitems[JUMP]); + cprintf("%s",keydesc[turk.jump] ); + Clear(&idkeyselitems[LOOKD]); + Pos(&idkeyselitems[LOOKD]); + cprintf("%s",keydesc[turk.lookdown] ); + Clear(&idkeyselitems[LOOKU]); + Pos(&idkeyselitems[LOOKU]); + cprintf("%s",keydesc[turk.lookup] ); + +#endif + + gotoxy(1,25); + + while(1) + { + SetupMenu(&idkeyselmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + goto func_exit; + + case KEY_F10: + curk = turk; + goto func_exit; + + case KEY_ENTER: + switch ( field ) + { + case FORWARD: + rval = GetScanCode(); + if ( rval ) + { + turk.up = rval; + Clear(&idkeyselitems[FORWARD]); + Pos(&idkeyselitems[FORWARD]); + cprintf("%s",keydesc[turk.up] ); + } + break; + + case BACKWARD: + rval = GetScanCode(); + if ( rval ) + { + turk.down = rval; + Clear(&idkeyselitems[BACKWARD]); + Pos(&idkeyselitems[BACKWARD]); + cprintf("%s",keydesc[turk.down] ); + } + break; + + case LEFT: + rval = GetScanCode(); + if ( rval ) + { + turk.left = rval; + Clear(&idkeyselitems[LEFT]); + Pos(&idkeyselitems[LEFT]); + cprintf("%s",keydesc[turk.left] ); + } + break; + + case RIGHT: + rval = GetScanCode(); + if ( rval ) + { + turk.right = rval; + Clear(&idkeyselitems[RIGHT]); + Pos(&idkeyselitems[RIGHT]); + cprintf("%s",keydesc[turk.right] ); + } + break; + + case USE: + rval = GetScanCode(); + if ( rval ) + { + turk.use = rval; + Clear(&idkeyselitems[USE]); + Pos(&idkeyselitems[USE]); + cprintf("%s",keydesc[turk.use] ); + } + break; + + case FIRE: + rval = GetScanCode(); + if ( rval ) + { + turk.fire = rval; + Clear(&idkeyselitems[FIRE]); + Pos(&idkeyselitems[FIRE]); + cprintf("%s",keydesc[turk.fire] ); + } + break; + + case SPEED: + rval = GetScanCode(); + if ( rval ) + { + turk.key2 = rval; + Clear(&idkeyselitems[SPEED]); + Pos(&idkeyselitems[SPEED]); + cprintf("%s",keydesc[turk.key2] ); + } + break; + + case STRAFE: + rval = GetScanCode(); + if ( rval ) + { + turk.key1 = rval; + Clear(&idkeyselitems[STRAFE]); + Pos(&idkeyselitems[STRAFE]); + cprintf("%s",keydesc[turk.key1] ); + } + break; + + case STRAFE_LEFT: + rval = GetScanCode(); + if ( rval ) + { + turk.key3 = rval; + Clear(&idkeyselitems[STRAFE_LEFT]); + Pos(&idkeyselitems[STRAFE_LEFT]); + cprintf("%s",keydesc[turk.key3] ); + } + break; + + case STRAFE_RIGHT: + rval = GetScanCode(); + if ( rval ) + { + turk.key4 = rval; + Clear(&idkeyselitems[STRAFE_RIGHT]); + Pos(&idkeyselitems[STRAFE_RIGHT]); + cprintf("%s",keydesc[turk.key4] ); + } + break; + + #ifdef HERETIC + case LOOKD: + rval = GetScanCode(); + if ( rval ) + { + turk.lookdown = rval; + Clear(&idkeyselitems[LOOKD]); + Pos(&idkeyselitems[LOOKD]); + cprintf("%s",keydesc[turk.lookdown] ); + } + break; + case LOOKC: + rval = GetScanCode(); + if ( rval ) + { + turk.lookcenter = rval; + Clear(&idkeyselitems[LOOKC]); + Pos(&idkeyselitems[LOOKC]); + cprintf("%s",keydesc[turk.lookcenter] ); + } + break; + case LOOKU: + rval = GetScanCode(); + if ( rval ) + { + turk.lookup = rval; + Clear(&idkeyselitems[LOOKU]); + Pos(&idkeyselitems[LOOKU]); + cprintf("%s",keydesc[turk.lookup] ); + } + break; + + case FLYD: + rval = GetScanCode(); + if ( rval ) + { + turk.flydown = rval; + Clear(&idkeyselitems[FLYD]); + Pos(&idkeyselitems[FLYD]); + cprintf("%s",keydesc[turk.flydown] ); + } + break; + case FLYC: + rval = GetScanCode(); + if ( rval ) + { + turk.flycenter = rval; + Clear(&idkeyselitems[FLYC]); + Pos(&idkeyselitems[FLYC]); + cprintf("%s",keydesc[turk.flycenter] ); + } + break; + case FLYU: + rval = GetScanCode(); + if ( rval ) + { + turk.flyup = rval; + Clear(&idkeyselitems[FLYU]); + Pos(&idkeyselitems[FLYU]); + cprintf("%s",keydesc[turk.flyup] ); + } + break; + + case INVL: + rval = GetScanCode(); + if ( rval ) + { + turk.invleft = rval; + Clear(&idkeyselitems[INVL]); + Pos(&idkeyselitems[INVL]); + cprintf("%s",keydesc[turk.invleft] ); + } + break; + case INVR: + rval = GetScanCode(); + if ( rval ) + { + turk.invright = rval; + Clear(&idkeyselitems[INVR]); + Pos(&idkeyselitems[INVR]); + cprintf("%s",keydesc[turk.invright] ); + } + break; + #endif + #ifdef STRIFE + case LOOKD: + rval = GetScanCode(); + if ( rval ) + { + turk.lookdown = rval; + Clear(&idkeyselitems[LOOKD]); + Pos(&idkeyselitems[LOOKD]); + cprintf("%s",keydesc[turk.lookdown] ); + } + break; + case LOOKU: + rval = GetScanCode(); + if ( rval ) + { + turk.lookup = rval; + Clear(&idkeyselitems[LOOKU]); + Pos(&idkeyselitems[LOOKU]); + cprintf("%s",keydesc[turk.lookup] ); + } + break; + case INVL: + rval = GetScanCode(); + if ( rval ) + { + turk.invleft = rval; + Clear(&idkeyselitems[INVL]); + Pos(&idkeyselitems[INVL]); + cprintf("%s",keydesc[turk.invleft] ); + } + break; + case INVR: + rval = GetScanCode(); + if ( rval ) + { + turk.invright = rval; + Clear(&idkeyselitems[INVR]); + Pos(&idkeyselitems[INVR]); + cprintf("%s",keydesc[turk.invright] ); + } + break; + case INVH: + rval = GetScanCode(); + if ( rval ) + { + turk.invhome = rval; + Clear(&idkeyselitems[INVH]); + Pos(&idkeyselitems[INVH]); + cprintf("%s",keydesc[turk.invhome] ); + } + break; + case INVE: + rval = GetScanCode(); + if ( rval ) + { + turk.invend = rval; + Clear(&idkeyselitems[INVE]); + Pos(&idkeyselitems[INVE]); + cprintf("%s",keydesc[turk.invend] ); + } + break; + case INVU: + rval = GetScanCode(); + if ( rval ) + { + turk.invuse = rval; + Clear(&idkeyselitems[INVU]); + Pos(&idkeyselitems[INVU]); + cprintf("%s",keydesc[turk.invuse] ); + } + break; + case INVD: + rval = GetScanCode(); + if ( rval ) + { + turk.invdrop = rval; + Clear(&idkeyselitems[INVD]); + Pos(&idkeyselitems[INVD]); + cprintf("%s",keydesc[turk.invdrop] ); + } + break; + case INVPOP: + rval = GetScanCode(); + if ( rval ) + { + turk.invpop = rval; + Clear(&idkeyselitems[INVPOP]); + Pos(&idkeyselitems[INVPOP]); + cprintf("%s",keydesc[turk.invpop] ); + } + break; + case INVQ: + rval = GetScanCode(); + if ( rval ) + { + turk.invquery = rval; + Clear(&idkeyselitems[INVQ]); + Pos(&idkeyselitems[INVQ]); + cprintf("%s",keydesc[turk.invquery] ); + } + break; + case HEALTHU: + rval = GetScanCode(); + if ( rval ) + { + turk.healthuse = rval; + Clear(&idkeyselitems[HEALTHU]); + Pos(&idkeyselitems[HEALTHU]); + cprintf("%s",keydesc[turk.healthuse] ); + } + break; + case JUMP: + rval = GetScanCode(); + if ( rval ) + { + turk.jump = rval; + Clear(&idkeyselitems[JUMP]); + Pos(&idkeyselitems[JUMP]); + cprintf("%s",keydesc[turk.jump] ); + } + break; + #endif + } + gotoxy(1,25); + break; + } + } + + func_exit: + + RestoreScreen(); + return; +} + +// +// Configure joystick buttons +// +enum +{ + J_FIRE, + J_FORWARD, + J_USE, + J_STRAFE, + J_MAX +}; +item_t idjoyselitems[]= +{ + {J_FIRE, 42,10,9, -1,-1}, + {J_FORWARD, 42,11,9, -1,-1}, + {J_USE, 42,12,9, -1,-1}, + {J_STRAFE, 42,13,9, -1,-1} +}; +menu_t idjoyselmenu= +{ + &idjoyselitems[0], + J_FIRE, + J_MAX, + 0x7f +}; + +// +// Get joystick button +// +int GetJoyButton (void) +{ + int rval = -1; + int num; + int c; + + SaveScreen(); + DrawPup(&mousentr); + + while(kbhit()) + getch(); + + while(1) + { + num = inp ( 0x201 ); + + num = num >> 4; + + if ( ! ( num & 1 ) ) + { + rval = 0; + break; + } + if ( ! ( num & 2 ) ) + { + rval = 1; + break; + } + if ( ! ( num & 4 ) ) + { + rval = 2; + break; + } + if ( ! ( num & 8 ) ) + { + rval = 3; + break; + } + + if (kbhit()) + { + c=_bios_keybrd( _KEYBRD_READY ) >> 8; + if (c == SC_ESC) + break; + + getch(); + } +// if ( ( _bios_keybrd ( _KEYBRD_READY ) >> 8 ) == SC_ESC ) break; + + } + + RestoreScreen(); + while(kbhit()) + getch(); + + return ( rval ); +} + +void IDConfigJoy (void) +{ + short key; + short field; + int rval; + CONTS turk; + char joybuts [4][20] = + { + "BUTTON 1", + "BUTTON 2", + "BUTTON 3", + "BUTTON 4" + }; + int fire; + int frwd; + int strf; + int use; + + SaveScreen(); + DrawPup(&idjoysel); + + turk = curk; + + fire = turk.joy[ ID_FIRE ]; + frwd = turk.joy[ ID_FORWARD ]; + strf = turk.joy[ ID_STRAFE ]; + use = turk.joy[ ID_USE ]; + + textbackground(1); + textcolor(15); + Clear(&idjoyselitems[J_FIRE]); + Pos(&idjoyselitems[J_FIRE]); + if (fire >= 0) + cprintf("%s",joybuts[fire]); + + Clear(&idjoyselitems[J_FORWARD]); + Pos(&idjoyselitems[J_FORWARD]); + if (frwd >= 0) + cprintf("%s",joybuts[ frwd ] ); + + Clear(&idjoyselitems[J_STRAFE]); + Pos(&idjoyselitems[J_STRAFE]); + if (strf >= 0) + cprintf("%s",joybuts[ strf ] ); + + Clear(&idjoyselitems[J_USE]); + Pos(&idjoyselitems[J_USE]); + if (use >= 0) + cprintf("%s",joybuts[ use ] ); + gotoxy(1,25); + + while(1) + { + SetupMenu(&idjoyselmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + goto func_exit; + + case KEY_F10: + curk = turk; + goto func_exit; + + case KEY_ENTER: + switch ( field ) + { + case J_FIRE: + rval = GetJoyButton(); + if ( rval != -1 ) + { + turk.joy [ ID_FIRE ] = rval; + Clear(&idjoyselitems[J_FIRE]); + Pos(&idjoyselitems[J_FIRE]); + cprintf("%s",joybuts[ rval ] ); + + if (turk.joy [ ID_FORWARD ] == rval) + { + turk.joy [ ID_FORWARD ] = -1; + Clear(&idjoyselitems[J_FORWARD]); + } + if (turk.joy [ ID_USE ] == rval) + { + turk.joy [ ID_USE ] = -1; + Clear(&idjoyselitems[J_USE]); + } + if (turk.joy [ ID_STRAFE ] == rval) + { + turk.joy [ ID_STRAFE ] = -1; + Clear(&idjoyselitems[J_STRAFE]); + } + } + break; + + case J_FORWARD: + rval = GetJoyButton(); + if ( rval != -1 ) + { + turk.joy [ ID_FORWARD ] = rval; + Clear(&idjoyselitems[J_FORWARD]); + Pos(&idjoyselitems[J_FORWARD]); + cprintf("%s",joybuts[rval]); + + if (turk.joy [ ID_FIRE ] == rval) + { + turk.joy [ ID_FIRE ] = -1; + Clear(&idjoyselitems[J_FIRE]); + } + if (turk.joy [ ID_USE ] == rval) + { + turk.joy [ ID_USE ] = -1; + Clear(&idjoyselitems[J_USE]); + } + if (turk.joy [ ID_STRAFE ] == rval) + { + turk.joy [ ID_STRAFE ] = -1; + Clear(&idjoyselitems[J_STRAFE]); + } + } + break; + + case J_USE: + rval = GetJoyButton(); + if ( rval != -1 ) + { + turk.joy [ ID_USE ] = rval; + Clear(&idjoyselitems[J_USE]); + Pos(&idjoyselitems[J_USE]); + cprintf("%s",joybuts[rval]); + + if (turk.joy [ ID_FORWARD ] == rval) + { + turk.joy [ ID_FORWARD ] = -1; + Clear(&idjoyselitems[J_FORWARD]); + } + if (turk.joy [ ID_FIRE ] == rval) + { + turk.joy [ ID_FIRE ] = -1; + Clear(&idjoyselitems[J_FIRE]); + } + if (turk.joy [ ID_STRAFE ] == rval) + { + turk.joy [ ID_STRAFE ] = -1; + Clear(&idjoyselitems[J_STRAFE]); + } + } + break; + + case J_STRAFE: + rval = GetJoyButton(); + if ( rval != -1 ) + { + turk.joy [ ID_STRAFE ] = rval; + Clear(&idjoyselitems[J_STRAFE]); + Pos(&idjoyselitems[J_STRAFE]); + cprintf("%s",joybuts[rval]); + + if (turk.joy [ ID_FORWARD ] == rval) + { + turk.joy [ ID_FORWARD ] = -1; + Clear(&idjoyselitems[J_FORWARD]); + } + if (turk.joy [ ID_USE ] == rval) + { + turk.joy [ ID_USE ] = -1; + Clear(&idjoyselitems[J_USE]); + } + if (turk.joy [ ID_FIRE ] == rval) + { + turk.joy [ ID_FIRE ] = -1; + Clear(&idjoyselitems[J_FIRE]); + } + } + break; + } + gotoxy(1,25); + break; + } + } + + func_exit: + + RestoreScreen(); + return; +} + +// +// Configure mouse buttons +// +enum {M_FIRE,M_FORWARD,M_STRAFE,M_MAX}; +item_t idmouselitems[]= +{ + {M_FIRE, 44,9,13, -1,-1}, + {M_FORWARD, 44,10,13, -1,-1}, + {M_STRAFE, 44,11,13, -1,-1} +}; +menu_t idmouselmenu= +{ + &idmouselitems[0], + M_FIRE, + M_MAX, + 0x7f +}; + +// +// Get mouse button +// +int GetMouseButton (void) +{ + int rval = -1; + union REGS r; + + SaveScreen(); + DrawPup(&mousentr); + + while(1) + { + r.x.ax = 3; + int86 ( 0x33, &r, &r ); + + if ( r.x.bx & 1 ) + rval = 0; + else if ( r.x.bx & 2 ) + rval = 1; + else if ( r.x.bx & 4 ) + rval = 2; + + if ( rval != -1 ) break; + + if ( ( _bios_keybrd ( _KEYBRD_READY ) >> 8 ) == SC_ESC ) break; + } + + RestoreScreen(); + while(kbhit()) + getch(); + + return ( rval ); +} + +void IDConfigMouse (void) +{ + short key; + short field; + int rval; + CONTS turk; + char mousebuts [3][20] = { + "LEFT BUTTON", + "RIGHT BUTTON", + "MID BUTTON" + }; + int fire; + int frwd; + int strf; + + + SaveScreen(); + DrawPup(&idmousel); + turk = curk; + + fire = turk.mouse[ ID_FIRE ]; + frwd = turk.mouse[ ID_FORWARD ]; + strf = turk.mouse[ ID_STRAFE ]; + + textbackground(1); + textcolor(15); + Clear(&idmouselitems[M_FIRE]); + Pos(&idmouselitems[M_FIRE]); + if (fire >= 0) + cprintf("%s",mousebuts[ fire ] ); + + Clear(&idmouselitems[M_FORWARD]); + Pos(&idmouselitems[M_FORWARD]); + if (frwd >= 0) + cprintf("%s",mousebuts[ frwd ] ); + + Clear(&idmouselitems[M_STRAFE]); + Pos(&idmouselitems[M_STRAFE]); + if (strf >= 0) + cprintf("%s",mousebuts[ strf ] ); + gotoxy(1,25); + + while(1) + { + SetupMenu(&idmouselmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + goto func_exit; + + case KEY_F10: + curk = turk; + goto func_exit; + + case KEY_ENTER: + switch ( field ) + { + case M_FIRE: + rval = GetMouseButton(); + if ( rval != -1 ) + { + turk.mouse [ ID_FIRE ] = rval; + Clear(&idmouselitems[M_FIRE]); + Pos(&idmouselitems[M_FIRE]); + cprintf("%s",mousebuts [ rval ] ); + if (turk.mouse [ ID_STRAFE ] == rval) + { + turk.mouse [ ID_STRAFE ] = -1; + Clear(&idmouselitems[M_STRAFE]); + } + if (turk.mouse [ ID_FORWARD ] == rval) + { + turk.mouse [ ID_FORWARD ] = -1; + Clear(&idmouselitems[M_FORWARD]); + } + } + break; + + case M_FORWARD: + rval = GetMouseButton(); + if ( rval != -1 ) + { + turk.mouse [ ID_FORWARD ] = rval; + Clear(&idmouselitems[M_FORWARD]); + Pos(&idmouselitems[M_FORWARD]); + cprintf("%s",mousebuts [ rval ] ); + + if (turk.mouse [ ID_STRAFE ] == rval) + { + turk.mouse [ ID_STRAFE ] = -1; + Clear(&idmouselitems[M_STRAFE]); + } + if (turk.mouse [ ID_FIRE ] == rval) + { + turk.mouse [ ID_FIRE ] = -1; + Clear(&idmouselitems[M_FIRE]); + } + } + break; + + case M_STRAFE: + rval = GetMouseButton(); + if ( rval != -1 ) + { + turk.mouse [ ID_STRAFE ] = rval; + Clear(&idmouselitems[M_STRAFE]); + Pos(&idmouselitems[M_STRAFE]); + cprintf("%s",mousebuts[rval]); + + if (turk.mouse [ ID_FORWARD ] == rval) + { + turk.mouse [ ID_FORWARD ] = -1; + Clear(&idmouselitems[M_FORWARD]); + } + if (turk.mouse [ ID_FIRE ] == rval) + { + turk.mouse [ ID_FIRE ] = -1; + Clear(&idmouselitems[M_FIRE]); + } + } + break; + } + gotoxy(1,25); + break; + } + } + + func_exit: + + RestoreScreen(); + return; +} + +// +// Choose which controller to configure! +// +enum {CFG_KEY,CFG_MOUSE,CFG_JOY,CFG_MAX}; +item_t conselitems[]= +{ + {CFG_KEY, 31,11,14, -1,-1}, + {CFG_MOUSE, 31,12,14, -1,-1}, + {CFG_JOY, 31,13,14, -1,-1} +}; +menu_t conselmenu= +{ + &conselitems[0], + CFG_KEY, + CFG_MAX, + 0x7f +}; + +void ConfigControl (void) +{ + short key; + short field; + + SaveScreen(); + DrawPup(&consel); + + while(1) + { + SetupMenu(&conselmenu); + field = GetMenuInput(); + key = menukey; + + if ( key == KEY_ESC ) + break; + + if ( key != KEY_ENTER && key != KEY_F10 ) continue; + + switch ( field ) + { + default: + case CFG_KEY: + IDConfigKeyboard(); + goto func_exit; + + case CFG_MOUSE: + if ( !mousepresent ) + { + ErrorWindow(&mouspres); + break; + } + IDConfigMouse(); + goto func_exit; + + case CFG_JOY: + IDConfigJoy(); + goto func_exit; + } + } + + func_exit: + + RestoreScreen(); + return; +} diff --git a/CONFIG.C b/CONFIG.C new file mode 100644 index 0000000..8fe1bd1 --- /dev/null +++ b/CONFIG.C @@ -0,0 +1,1149 @@ +// +// Configure controllers +// +#include +#include +#include + +#include "main.h" + +void Pos(item_t *item) +{ + gotoxy(item->x+1,item->y+1); +} + +void Clear(item_t *item) +{ + int i; + + Pos(item); + for (i = 0;i < item->w; i++) + cprintf(" "); + gotoxy(1,25); +} + +// +// Get keyboard scan code +// +int GetScanCode (void) +{ + volatile unsigned short rval; + + while (kbhit()) + getch(); + + SaveScreen(); + DrawPup(&askpres); + + while(1) + { + rval = _bios_keybrd ( _KEYBRD_SHIFTSTATUS ); + + if ( rval & 0x0004 ) + { + rval = SC_CTRL; + break; + } + else if ( rval & 0x0008 ) + { + rval = SC_ALT; + break; + } + else if ( (rval & 0x0001) || (rval & 0x0002) ) + { + rval = SC_RIGHT_SHIFT; + break; + } + else + { + rval = _bios_keybrd ( _KEYBRD_READY ); + rval = rval >> 8; + +#ifndef STRIFE + if ( rval == SC_ENTER ) rval = 0; + if ( rval == SC_BACKSPACE ) rval = 0; +#endif + if ( rval ) break; + } + } + + RestoreScreen(); + while (kbhit()) + getch(); + + return ( rval ); +} + +enum {FORWARD,BACKWARD,LEFT,RIGHT, +#ifdef HERETIC + LOOKD,LOOKC,LOOKU,FLYD,FLYC,FLYU, +#endif + USE,FIRE,SPEED,STRAFE,STRAFE_LEFT,STRAFE_RIGHT, +#ifdef HERETIC + INVL,INVR, +#endif +#ifdef STRIFE + INVL,INVR,INVH,INVE,INVU,INVD,INVPOP,INVQ,HEALTHU,JUMP,LOOKU,LOOKD, +#endif + MAXKEYS}; +item_t idkeyselitems[]= +{ +#ifdef HERETIC + {FORWARD, 39,5,8, -1,-1}, + {BACKWARD, 39,6,8, -1,-1}, + {LEFT, 39,7,8, -1,-1}, + {RIGHT, 39,8,8, -1,-1}, + + {LOOKD, 29,10,8, -1,LOOKC, RIGHT,FLYD}, + {LOOKC, 39,10,8, LOOKD,LOOKU, RIGHT,FLYC}, + {LOOKU, 49,10,8, LOOKC,-1, RIGHT,FLYU}, + + {FLYD, 29,11,8, -1,FLYC, LOOKD,USE}, + {FLYC, 39,11,8, FLYD,FLYU, LOOKC,USE}, + {FLYU, 49,11,8, FLYC,-1, LOOKU,SPEED}, + + {USE, 29,13,8, -1,SPEED, FLYD}, + {FIRE, 29,14,8, -1,STRAFE}, + {SPEED, 49,13,8, USE,-1, FLYU}, + {STRAFE, 49,14,8, FIRE,-1}, + {STRAFE_LEFT, 42,15,8, -1,-1, FIRE}, + {STRAFE_RIGHT, 42,16,8, -1,-1}, + + {INVL, 42,17,8, -1,-1}, + {INVR, 42,18,8, -1,-1} +#endif +#ifdef STRIFE + {FORWARD, 30,5,8, -1,-1}, + {BACKWARD, 30,6,8, -1,-1}, + {LEFT, 30,7,8, -1,STRAFE_LEFT,BACKWARD,RIGHT}, + {RIGHT, 30,8,8, -1,STRAFE_RIGHT,LEFT,INVL}, + + {USE, 30,15,8, -1,SPEED,INVPOP,FIRE}, + {FIRE, 30,16,8, -1,STRAFE,USE,JUMP}, + {SPEED, 52,15,8, USE,-1, INVQ, STRAFE}, + {STRAFE, 52,16,8, FIRE,-1,SPEED,LOOKU}, + {STRAFE_LEFT, 52,7,8, LEFT,-1, HEALTHU, STRAFE_RIGHT}, + {STRAFE_RIGHT, 52,8,8, RIGHT,-1, STRAFE_LEFT,INVR}, + + {INVL, 30,10,8, -1,INVR,RIGHT,INVH}, + {INVR, 52,10,8, INVL,-1,STRAFE_RIGHT,INVE}, + + {INVH, 30,11,8, -1,INVE,INVL,INVU}, + {INVE, 52,11,8, INVH,-1,INVR,INVD}, + {INVU, 30,12,8, -1,INVD,INVH,INVPOP}, + {INVD, 52,12,8, INVU,-1,INVE,INVQ}, + {INVPOP, 30,13,8, -1,INVQ,INVU,USE}, + {INVQ, 52,13,8, INVPOP,-1,INVD,SPEED}, + {HEALTHU, 30,18,8, -1,LOOKD,JUMP,STRAFE_LEFT}, + + {JUMP, 30,17,8, -1,LOOKU,FIRE,HEALTHU}, + {LOOKU, 52,17,8, JUMP,-1,STRAFE,LOOKD}, + {LOOKD, 52,18,8, HEALTHU,-1,LOOKU,0}, +#else + {FORWARD, 47,5,8, -1,-1}, + {BACKWARD, 47,6,8, -1,-1}, + {LEFT, 47,7,8, -1,-1}, + {RIGHT, 47,8,8, -1,-1}, + + {USE, 47,12,8, -1,-1}, + {FIRE, 47,13,8, -1,-1}, + {SPEED, 47,14,8, -1,-1}, + {STRAFE, 47,15,8, -1,-1}, + {STRAFE_LEFT, 47,16,8, -1,-1}, + {STRAFE_RIGHT, 47,17,8, -1,-1}, +#endif +}; +menu_t idkeyselmenu= +{ + &idkeyselitems[0], + FORWARD, + MAXKEYS, + 0x7f +}; + +void IDConfigKeyboard(void) +{ + short field; + short key; + CONTS turk; + int rval; + + SaveScreen(); + DrawPup(&idkeysel); + + turk = curk; + + textbackground(1); + textcolor(15); + Clear(&idkeyselitems[FORWARD]); + Pos(&idkeyselitems[FORWARD]); + cprintf("%s",keydesc[turk.up] ); + Clear(&idkeyselitems[BACKWARD]); + Pos(&idkeyselitems[BACKWARD]); + cprintf("%s",keydesc[turk.down] ); + Clear(&idkeyselitems[LEFT]); + Pos(&idkeyselitems[LEFT]); + cprintf("%s",keydesc[turk.left] ); + Clear(&idkeyselitems[RIGHT]); + Pos(&idkeyselitems[RIGHT]); + cprintf("%s",keydesc[turk.right] ); + Clear(&idkeyselitems[USE]); + Pos(&idkeyselitems[USE]); + cprintf("%s",keydesc[turk.use] ); + Clear(&idkeyselitems[FIRE]); + Pos(&idkeyselitems[FIRE]); + cprintf("%s",keydesc[turk.fire] ); + Clear(&idkeyselitems[SPEED]); + Pos(&idkeyselitems[SPEED]); + cprintf("%s",keydesc[turk.key2] ); + Clear(&idkeyselitems[STRAFE]); + Pos(&idkeyselitems[STRAFE]); + cprintf("%s",keydesc[turk.key1] ); + Clear(&idkeyselitems[STRAFE_LEFT]); + Pos(&idkeyselitems[STRAFE_LEFT]); + cprintf("%s",keydesc[turk.key3] ); + Clear(&idkeyselitems[STRAFE_RIGHT]); + Pos(&idkeyselitems[STRAFE_RIGHT]); + cprintf("%s",keydesc[turk.key4] ); + +#ifdef HERETIC + Clear(&idkeyselitems[LOOKD]); + Pos(&idkeyselitems[LOOKD]); + cprintf("%s",keydesc[turk.lookdown] ); + Clear(&idkeyselitems[LOOKC]); + Pos(&idkeyselitems[LOOKC]); + cprintf("%s",keydesc[turk.lookcenter] ); + Clear(&idkeyselitems[LOOKU]); + Pos(&idkeyselitems[LOOKU]); + cprintf("%s",keydesc[turk.lookup] ); + + Clear(&idkeyselitems[FLYD]); + Pos(&idkeyselitems[FLYD]); + cprintf("%s",keydesc[turk.flydown] ); + Clear(&idkeyselitems[FLYC]); + Pos(&idkeyselitems[FLYC]); + cprintf("%s",keydesc[turk.flycenter] ); + Clear(&idkeyselitems[FLYU]); + Pos(&idkeyselitems[FLYU]); + cprintf("%s",keydesc[turk.flyup] ); + + Clear(&idkeyselitems[INVL]); + Pos(&idkeyselitems[INVL]); + cprintf("%s",keydesc[turk.invleft] ); + Clear(&idkeyselitems[INVR]); + Pos(&idkeyselitems[INVR]); + cprintf("%s",keydesc[turk.invright] ); +#endif +#ifdef STRIFE + Clear(&idkeyselitems[INVL]); + Pos(&idkeyselitems[INVL]); + cprintf("%s",keydesc[turk.invleft] ); + Clear(&idkeyselitems[INVR]); + Pos(&idkeyselitems[INVR]); + cprintf("%s",keydesc[turk.invright] ); + Clear(&idkeyselitems[INVH]); + Pos(&idkeyselitems[INVH]); + cprintf("%s",keydesc[turk.invhome] ); + Clear(&idkeyselitems[INVE]); + Pos(&idkeyselitems[INVE]); + cprintf("%s",keydesc[turk.invend] ); + Clear(&idkeyselitems[INVU]); + Pos(&idkeyselitems[INVU]); + cprintf("%s",keydesc[turk.invuse] ); + Clear(&idkeyselitems[INVD]); + Pos(&idkeyselitems[INVD]); + cprintf("%s",keydesc[turk.invdrop] ); + Clear(&idkeyselitems[INVPOP]); + Pos(&idkeyselitems[INVPOP]); + cprintf("%s",keydesc[turk.invpop] ); + Clear(&idkeyselitems[INVQ]); + Pos(&idkeyselitems[INVQ]); + cprintf("%s",keydesc[turk.invquery] ); + Clear(&idkeyselitems[HEALTHU]); + Pos(&idkeyselitems[HEALTHU]); + cprintf("%s",keydesc[turk.healthuse] ); + Clear(&idkeyselitems[JUMP]); + Pos(&idkeyselitems[JUMP]); + cprintf("%s",keydesc[turk.jump] ); + Clear(&idkeyselitems[LOOKD]); + Pos(&idkeyselitems[LOOKD]); + cprintf("%s",keydesc[turk.lookdown] ); + Clear(&idkeyselitems[LOOKU]); + Pos(&idkeyselitems[LOOKU]); + cprintf("%s",keydesc[turk.lookup] ); + +#endif + + gotoxy(1,25); + + while(1) + { + SetupMenu(&idkeyselmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + goto func_exit; + + case KEY_F10: + curk = turk; + goto func_exit; + + case KEY_ENTER: + switch ( field ) + { + case FORWARD: + rval = GetScanCode(); + if ( rval ) + { + turk.up = rval; + Clear(&idkeyselitems[FORWARD]); + Pos(&idkeyselitems[FORWARD]); + cprintf("%s",keydesc[turk.up] ); + } + break; + + case BACKWARD: + rval = GetScanCode(); + if ( rval ) + { + turk.down = rval; + Clear(&idkeyselitems[BACKWARD]); + Pos(&idkeyselitems[BACKWARD]); + cprintf("%s",keydesc[turk.down] ); + } + break; + + case LEFT: + rval = GetScanCode(); + if ( rval ) + { + turk.left = rval; + Clear(&idkeyselitems[LEFT]); + Pos(&idkeyselitems[LEFT]); + cprintf("%s",keydesc[turk.left] ); + } + break; + + case RIGHT: + rval = GetScanCode(); + if ( rval ) + { + turk.right = rval; + Clear(&idkeyselitems[RIGHT]); + Pos(&idkeyselitems[RIGHT]); + cprintf("%s",keydesc[turk.right] ); + } + break; + + case USE: + rval = GetScanCode(); + if ( rval ) + { + turk.use = rval; + Clear(&idkeyselitems[USE]); + Pos(&idkeyselitems[USE]); + cprintf("%s",keydesc[turk.use] ); + } + break; + + case FIRE: + rval = GetScanCode(); + if ( rval ) + { + turk.fire = rval; + Clear(&idkeyselitems[FIRE]); + Pos(&idkeyselitems[FIRE]); + cprintf("%s",keydesc[turk.fire] ); + } + break; + + case SPEED: + rval = GetScanCode(); + if ( rval ) + { + turk.key2 = rval; + Clear(&idkeyselitems[SPEED]); + Pos(&idkeyselitems[SPEED]); + cprintf("%s",keydesc[turk.key2] ); + } + break; + + case STRAFE: + rval = GetScanCode(); + if ( rval ) + { + turk.key1 = rval; + Clear(&idkeyselitems[STRAFE]); + Pos(&idkeyselitems[STRAFE]); + cprintf("%s",keydesc[turk.key1] ); + } + break; + + case STRAFE_LEFT: + rval = GetScanCode(); + if ( rval ) + { + turk.key3 = rval; + Clear(&idkeyselitems[STRAFE_LEFT]); + Pos(&idkeyselitems[STRAFE_LEFT]); + cprintf("%s",keydesc[turk.key3] ); + } + break; + + case STRAFE_RIGHT: + rval = GetScanCode(); + if ( rval ) + { + turk.key4 = rval; + Clear(&idkeyselitems[STRAFE_RIGHT]); + Pos(&idkeyselitems[STRAFE_RIGHT]); + cprintf("%s",keydesc[turk.key4] ); + } + break; + + #ifdef HERETIC + case LOOKD: + rval = GetScanCode(); + if ( rval ) + { + turk.lookdown = rval; + Clear(&idkeyselitems[LOOKD]); + Pos(&idkeyselitems[LOOKD]); + cprintf("%s",keydesc[turk.lookdown] ); + } + break; + case LOOKC: + rval = GetScanCode(); + if ( rval ) + { + turk.lookcenter = rval; + Clear(&idkeyselitems[LOOKC]); + Pos(&idkeyselitems[LOOKC]); + cprintf("%s",keydesc[turk.lookcenter] ); + } + break; + case LOOKU: + rval = GetScanCode(); + if ( rval ) + { + turk.lookup = rval; + Clear(&idkeyselitems[LOOKU]); + Pos(&idkeyselitems[LOOKU]); + cprintf("%s",keydesc[turk.lookup] ); + } + break; + + case FLYD: + rval = GetScanCode(); + if ( rval ) + { + turk.flydown = rval; + Clear(&idkeyselitems[FLYD]); + Pos(&idkeyselitems[FLYD]); + cprintf("%s",keydesc[turk.flydown] ); + } + break; + case FLYC: + rval = GetScanCode(); + if ( rval ) + { + turk.flycenter = rval; + Clear(&idkeyselitems[FLYC]); + Pos(&idkeyselitems[FLYC]); + cprintf("%s",keydesc[turk.flycenter] ); + } + break; + case FLYU: + rval = GetScanCode(); + if ( rval ) + { + turk.flyup = rval; + Clear(&idkeyselitems[FLYU]); + Pos(&idkeyselitems[FLYU]); + cprintf("%s",keydesc[turk.flyup] ); + } + break; + + case INVL: + rval = GetScanCode(); + if ( rval ) + { + turk.invleft = rval; + Clear(&idkeyselitems[INVL]); + Pos(&idkeyselitems[INVL]); + cprintf("%s",keydesc[turk.invleft] ); + } + break; + case INVR: + rval = GetScanCode(); + if ( rval ) + { + turk.invright = rval; + Clear(&idkeyselitems[INVR]); + Pos(&idkeyselitems[INVR]); + cprintf("%s",keydesc[turk.invright] ); + } + break; + #endif + #ifdef STRIFE + case LOOKD: + rval = GetScanCode(); + if ( rval ) + { + turk.lookdown = rval; + Clear(&idkeyselitems[LOOKD]); + Pos(&idkeyselitems[LOOKD]); + cprintf("%s",keydesc[turk.lookdown] ); + } + break; + case LOOKU: + rval = GetScanCode(); + if ( rval ) + { + turk.lookup = rval; + Clear(&idkeyselitems[LOOKU]); + Pos(&idkeyselitems[LOOKU]); + cprintf("%s",keydesc[turk.lookup] ); + } + break; + case INVL: + rval = GetScanCode(); + if ( rval ) + { + turk.invleft = rval; + Clear(&idkeyselitems[INVL]); + Pos(&idkeyselitems[INVL]); + cprintf("%s",keydesc[turk.invleft] ); + } + break; + case INVR: + rval = GetScanCode(); + if ( rval ) + { + turk.invright = rval; + Clear(&idkeyselitems[INVR]); + Pos(&idkeyselitems[INVR]); + cprintf("%s",keydesc[turk.invright] ); + } + break; + case INVH: + rval = GetScanCode(); + if ( rval ) + { + turk.invhome = rval; + Clear(&idkeyselitems[INVH]); + Pos(&idkeyselitems[INVH]); + cprintf("%s",keydesc[turk.invhome] ); + } + break; + case INVE: + rval = GetScanCode(); + if ( rval ) + { + turk.invend = rval; + Clear(&idkeyselitems[INVE]); + Pos(&idkeyselitems[INVE]); + cprintf("%s",keydesc[turk.invend] ); + } + break; + case INVU: + rval = GetScanCode(); + if ( rval ) + { + turk.invuse = rval; + Clear(&idkeyselitems[INVU]); + Pos(&idkeyselitems[INVU]); + cprintf("%s",keydesc[turk.invuse] ); + } + break; + case INVD: + rval = GetScanCode(); + if ( rval ) + { + turk.invdrop = rval; + Clear(&idkeyselitems[INVD]); + Pos(&idkeyselitems[INVD]); + cprintf("%s",keydesc[turk.invdrop] ); + } + break; + case INVPOP: + rval = GetScanCode(); + if ( rval ) + { + turk.invpop = rval; + Clear(&idkeyselitems[INVPOP]); + Pos(&idkeyselitems[INVPOP]); + cprintf("%s",keydesc[turk.invpop] ); + } + break; + case INVQ: + rval = GetScanCode(); + if ( rval ) + { + turk.invquery = rval; + Clear(&idkeyselitems[INVQ]); + Pos(&idkeyselitems[INVQ]); + cprintf("%s",keydesc[turk.invquery] ); + } + break; + case HEALTHU: + rval = GetScanCode(); + if ( rval ) + { + turk.healthuse = rval; + Clear(&idkeyselitems[HEALTHU]); + Pos(&idkeyselitems[HEALTHU]); + cprintf("%s",keydesc[turk.healthuse] ); + } + break; + case JUMP: + rval = GetScanCode(); + if ( rval ) + { + turk.jump = rval; + Clear(&idkeyselitems[JUMP]); + Pos(&idkeyselitems[JUMP]); + cprintf("%s",keydesc[turk.jump] ); + } + break; + #endif + } + gotoxy(1,25); + break; + } + } + + func_exit: + + RestoreScreen(); + return; +} + +// +// Configure joystick buttons +// +enum +{ + J_FIRE, + J_FORWARD, + J_USE, + J_STRAFE, + J_MAX +}; +item_t idjoyselitems[]= +{ + {J_FIRE, 42,10,9, -1,-1}, + {J_FORWARD, 42,11,9, -1,-1}, + {J_USE, 42,12,9, -1,-1}, + {J_STRAFE, 42,13,9, -1,-1} +}; +menu_t idjoyselmenu= +{ + &idjoyselitems[0], + J_FIRE, + J_MAX, + 0x7f +}; + +// +// Get joystick button +// +int GetJoyButton (void) +{ + int rval = -1; + int num; + int c; + + SaveScreen(); + DrawPup(&mousentr); + + while(kbhit()) + getch(); + + while(1) + { + num = inp ( 0x201 ); + + num = num >> 4; + + if ( ! ( num & 1 ) ) + { + rval = 0; + break; + } + if ( ! ( num & 2 ) ) + { + rval = 1; + break; + } + if ( ! ( num & 4 ) ) + { + rval = 2; + break; + } + if ( ! ( num & 8 ) ) + { + rval = 3; + break; + } + + if (kbhit()) + { + c=_bios_keybrd( _KEYBRD_READY ) >> 8; + if (c == SC_ESC) + break; + + getch(); + } +// if ( ( _bios_keybrd ( _KEYBRD_READY ) >> 8 ) == SC_ESC ) break; + + } + + RestoreScreen(); + while(kbhit()) + getch(); + + return ( rval ); +} + +void IDConfigJoy (void) +{ + short key; + short field; + int rval; + CONTS turk; + char joybuts [4][20] = + { + "BUTTON 1", + "BUTTON 2", + "BUTTON 3", + "BUTTON 4" + }; + int fire; + int frwd; + int strf; + int use; + + SaveScreen(); + DrawPup(&idjoysel); + + turk = curk; + + fire = turk.joy[ ID_FIRE ]; + frwd = turk.joy[ ID_FORWARD ]; + strf = turk.joy[ ID_STRAFE ]; + use = turk.joy[ ID_USE ]; + + textbackground(1); + textcolor(15); + Clear(&idjoyselitems[J_FIRE]); + Pos(&idjoyselitems[J_FIRE]); + if (fire >= 0) + cprintf("%s",joybuts[fire]); + + Clear(&idjoyselitems[J_FORWARD]); + Pos(&idjoyselitems[J_FORWARD]); + if (frwd >= 0) + cprintf("%s",joybuts[ frwd ] ); + + Clear(&idjoyselitems[J_STRAFE]); + Pos(&idjoyselitems[J_STRAFE]); + if (strf >= 0) + cprintf("%s",joybuts[ strf ] ); + + Clear(&idjoyselitems[J_USE]); + Pos(&idjoyselitems[J_USE]); + if (use >= 0) + cprintf("%s",joybuts[ use ] ); + gotoxy(1,25); + + while(1) + { + SetupMenu(&idjoyselmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + goto func_exit; + + case KEY_F10: + curk = turk; + goto func_exit; + + case KEY_ENTER: + switch ( field ) + { + case J_FIRE: + rval = GetJoyButton(); + if ( rval != -1 ) + { + turk.joy [ ID_FIRE ] = rval; + Clear(&idjoyselitems[J_FIRE]); + Pos(&idjoyselitems[J_FIRE]); + cprintf("%s",joybuts[ rval ] ); + + if (turk.joy [ ID_FORWARD ] == rval) + { + turk.joy [ ID_FORWARD ] = -1; + Clear(&idjoyselitems[J_FORWARD]); + } + if (turk.joy [ ID_USE ] == rval) + { + turk.joy [ ID_USE ] = -1; + Clear(&idjoyselitems[J_USE]); + } + if (turk.joy [ ID_STRAFE ] == rval) + { + turk.joy [ ID_STRAFE ] = -1; + Clear(&idjoyselitems[J_STRAFE]); + } + } + break; + + case J_FORWARD: + rval = GetJoyButton(); + if ( rval != -1 ) + { + turk.joy [ ID_FORWARD ] = rval; + Clear(&idjoyselitems[J_FORWARD]); + Pos(&idjoyselitems[J_FORWARD]); + cprintf("%s",joybuts[rval]); + + if (turk.joy [ ID_FIRE ] == rval) + { + turk.joy [ ID_FIRE ] = -1; + Clear(&idjoyselitems[J_FIRE]); + } + if (turk.joy [ ID_USE ] == rval) + { + turk.joy [ ID_USE ] = -1; + Clear(&idjoyselitems[J_USE]); + } + if (turk.joy [ ID_STRAFE ] == rval) + { + turk.joy [ ID_STRAFE ] = -1; + Clear(&idjoyselitems[J_STRAFE]); + } + } + break; + + case J_USE: + rval = GetJoyButton(); + if ( rval != -1 ) + { + turk.joy [ ID_USE ] = rval; + Clear(&idjoyselitems[J_USE]); + Pos(&idjoyselitems[J_USE]); + cprintf("%s",joybuts[rval]); + + if (turk.joy [ ID_FORWARD ] == rval) + { + turk.joy [ ID_FORWARD ] = -1; + Clear(&idjoyselitems[J_FORWARD]); + } + if (turk.joy [ ID_FIRE ] == rval) + { + turk.joy [ ID_FIRE ] = -1; + Clear(&idjoyselitems[J_FIRE]); + } + if (turk.joy [ ID_STRAFE ] == rval) + { + turk.joy [ ID_STRAFE ] = -1; + Clear(&idjoyselitems[J_STRAFE]); + } + } + break; + + case J_STRAFE: + rval = GetJoyButton(); + if ( rval != -1 ) + { + turk.joy [ ID_STRAFE ] = rval; + Clear(&idjoyselitems[J_STRAFE]); + Pos(&idjoyselitems[J_STRAFE]); + cprintf("%s",joybuts[rval]); + + if (turk.joy [ ID_FORWARD ] == rval) + { + turk.joy [ ID_FORWARD ] = -1; + Clear(&idjoyselitems[J_FORWARD]); + } + if (turk.joy [ ID_USE ] == rval) + { + turk.joy [ ID_USE ] = -1; + Clear(&idjoyselitems[J_USE]); + } + if (turk.joy [ ID_FIRE ] == rval) + { + turk.joy [ ID_FIRE ] = -1; + Clear(&idjoyselitems[J_FIRE]); + } + } + break; + } + gotoxy(1,25); + break; + } + } + + func_exit: + + RestoreScreen(); + return; +} + +// +// Configure mouse buttons +// +enum {M_FIRE,M_FORWARD,M_STRAFE,M_MAX}; +item_t idmouselitems[]= +{ + {M_FIRE, 44,9,13, -1,-1}, + {M_FORWARD, 44,10,13, -1,-1}, + {M_STRAFE, 44,11,13, -1,-1} +}; +menu_t idmouselmenu= +{ + &idmouselitems[0], + M_FIRE, + M_MAX, + 0x7f +}; + +// +// Get mouse button +// +int GetMouseButton (void) +{ + int rval = -1; + union REGS r; + + SaveScreen(); + DrawPup(&mousentr); + + while(1) + { + r.x.ax = 3; + int86 ( 0x33, &r, &r ); + + if ( r.x.bx & 1 ) + rval = 0; + else if ( r.x.bx & 2 ) + rval = 1; + else if ( r.x.bx & 4 ) + rval = 2; + + if ( rval != -1 ) break; + + if ( ( _bios_keybrd ( _KEYBRD_READY ) >> 8 ) == SC_ESC ) break; + } + + RestoreScreen(); + while(kbhit()) + getch(); + + return ( rval ); +} + +void IDConfigMouse (void) +{ + short key; + short field; + int rval; + CONTS turk; + char mousebuts [3][20] = { + "LEFT BUTTON", + "RIGHT BUTTON", + "MID BUTTON" + }; + int fire; + int frwd; + int strf; + + + SaveScreen(); + DrawPup(&idmousel); + turk = curk; + + fire = turk.mouse[ ID_FIRE ]; + frwd = turk.mouse[ ID_FORWARD ]; + strf = turk.mouse[ ID_STRAFE ]; + + textbackground(1); + textcolor(15); + Clear(&idmouselitems[M_FIRE]); + Pos(&idmouselitems[M_FIRE]); + if (fire >= 0) + cprintf("%s",mousebuts[ fire ] ); + + Clear(&idmouselitems[M_FORWARD]); + Pos(&idmouselitems[M_FORWARD]); + if (frwd >= 0) + cprintf("%s",mousebuts[ frwd ] ); + + Clear(&idmouselitems[M_STRAFE]); + Pos(&idmouselitems[M_STRAFE]); + if (strf >= 0) + cprintf("%s",mousebuts[ strf ] ); + gotoxy(1,25); + + while(1) + { + SetupMenu(&idmouselmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + goto func_exit; + + case KEY_F10: + curk = turk; + goto func_exit; + + case KEY_ENTER: + switch ( field ) + { + case M_FIRE: + rval = GetMouseButton(); + if ( rval != -1 ) + { + turk.mouse [ ID_FIRE ] = rval; + Clear(&idmouselitems[M_FIRE]); + Pos(&idmouselitems[M_FIRE]); + cprintf("%s",mousebuts [ rval ] ); + if (turk.mouse [ ID_STRAFE ] == rval) + { + turk.mouse [ ID_STRAFE ] = -1; + Clear(&idmouselitems[M_STRAFE]); + } + if (turk.mouse [ ID_FORWARD ] == rval) + { + turk.mouse [ ID_FORWARD ] = -1; + Clear(&idmouselitems[M_FORWARD]); + } + } + break; + + case M_FORWARD: + rval = GetMouseButton(); + if ( rval != -1 ) + { + turk.mouse [ ID_FORWARD ] = rval; + Clear(&idmouselitems[M_FORWARD]); + Pos(&idmouselitems[M_FORWARD]); + cprintf("%s",mousebuts [ rval ] ); + + if (turk.mouse [ ID_STRAFE ] == rval) + { + turk.mouse [ ID_STRAFE ] = -1; + Clear(&idmouselitems[M_STRAFE]); + } + if (turk.mouse [ ID_FIRE ] == rval) + { + turk.mouse [ ID_FIRE ] = -1; + Clear(&idmouselitems[M_FIRE]); + } + } + break; + + case M_STRAFE: + rval = GetMouseButton(); + if ( rval != -1 ) + { + turk.mouse [ ID_STRAFE ] = rval; + Clear(&idmouselitems[M_STRAFE]); + Pos(&idmouselitems[M_STRAFE]); + cprintf("%s",mousebuts[rval]); + + if (turk.mouse [ ID_FORWARD ] == rval) + { + turk.mouse [ ID_FORWARD ] = -1; + Clear(&idmouselitems[M_FORWARD]); + } + if (turk.mouse [ ID_FIRE ] == rval) + { + turk.mouse [ ID_FIRE ] = -1; + Clear(&idmouselitems[M_FIRE]); + } + } + break; + } + gotoxy(1,25); + break; + } + } + + func_exit: + + RestoreScreen(); + return; +} + +// +// Choose which controller to configure! +// +enum {CFG_KEY,CFG_MOUSE,CFG_JOY,CFG_MAX}; +item_t conselitems[]= +{ + {CFG_KEY, 31,11,14, -1,-1}, + {CFG_MOUSE, 31,12,14, -1,-1}, + {CFG_JOY, 31,13,14, -1,-1} +}; +menu_t conselmenu= +{ + &conselitems[0], + CFG_KEY, + CFG_MAX, + 0x7f +}; + +void ConfigControl (void) +{ + short key; + short field; + + SaveScreen(); + DrawPup(&consel); + + while(1) + { + SetupMenu(&conselmenu); + field = GetMenuInput(); + key = menukey; + + if ( key == KEY_ESC ) + break; + + if ( key != KEY_ENTER && key != KEY_F10 ) continue; + + switch ( field ) + { + default: + case CFG_KEY: + IDConfigKeyboard(); + goto func_exit; + + case CFG_MOUSE: + if ( !mousepresent ) + { + ErrorWindow(&mouspres); + break; + } + IDConfigMouse(); + goto func_exit; + + case CFG_JOY: + IDConfigJoy(); + goto func_exit; + } + } + + func_exit: + + RestoreScreen(); + return; +} diff --git a/CONFIG.C~ b/CONFIG.C~ new file mode 100644 index 0000000..ce61894 --- /dev/null +++ b/CONFIG.C~ @@ -0,0 +1,1149 @@ +// +// Configure controllers +// +#include +#include +#include + +#include "main.h" + +void Pos(item_t *item) +{ + gotoxy(item->x+1,item->y+1); +} + +void Clear(item_t *item) +{ + int i; + + Pos(item); + for (i = 0;i < item->w; i++) + cprintf(" "); + gotoxy(1,25); +} + +// +// Get keyboard scan code +// +int GetScanCode (void) +{ + volatile unsigned short rval; + + while (kbhit()) + getch(); + + SaveScreen(); + DrawPup(&askpres); + + while(1) + { + rval = _bios_keybrd ( _KEYBRD_SHIFTSTATUS ); + + if ( rval & 0x0004 ) + { + rval = SC_CTRL; + break; + } + else if ( rval & 0x0008 ) + { + rval = SC_ALT; + break; + } + else if ( rval & 0x0001 ) + { + rval = SC_RIGHT_SHIFT; + break; + } + else + { + rval = _bios_keybrd ( _KEYBRD_READY ); + rval = rval >> 8; + + if ( rval == SC_ENTER ) rval = 0; + if ( rval == SC_BACKSPACE ) rval = 0; + + if ( rval ) break; + } + } + + RestoreScreen(); + while (kbhit()) + getch(); + + return ( rval ); +} + +enum {FORWARD,BACKWARD,LEFT,RIGHT, +#ifdef HERETIC + LOOKD,LOOKC,LOOKU,FLYD,FLYC,FLYU, +#endif + USE,FIRE,SPEED,STRAFE,STRAFE_LEFT,STRAFE_RIGHT, +#ifdef HERETIC + INVL,INVR, +#endif +#ifdef STRIFE + INVL,INVR,INVH,INVE,INVU,INVD,INVPOP,INVQ,HEALTHU,JUMP,LOOKU,LOOKD, +#endif + MAXKEYS}; +item_t idkeyselitems[]= +{ +#ifdef HERETIC + {FORWARD, 39,5,8, -1,-1}, + {BACKWARD, 39,6,8, -1,-1}, + {LEFT, 39,7,8, -1,-1}, + {RIGHT, 39,8,8, -1,-1}, + + {LOOKD, 29,10,8, -1,LOOKC, RIGHT,FLYD}, + {LOOKC, 39,10,8, LOOKD,LOOKU, RIGHT,FLYC}, + {LOOKU, 49,10,8, LOOKC,-1, RIGHT,FLYU}, + + {FLYD, 29,11,8, -1,FLYC, LOOKD,USE}, + {FLYC, 39,11,8, FLYD,FLYU, LOOKC,USE}, + {FLYU, 49,11,8, FLYC,-1, LOOKU,SPEED}, + + {USE, 29,13,8, -1,SPEED, FLYD}, + {FIRE, 29,14,8, -1,STRAFE}, + {SPEED, 49,13,8, USE,-1, FLYU}, + {STRAFE, 49,14,8, FIRE,-1}, + {STRAFE_LEFT, 42,15,8, -1,-1, FIRE}, + {STRAFE_RIGHT, 42,16,8, -1,-1}, + + {INVL, 42,17,8, -1,-1}, + {INVR, 42,18,8, -1,-1} +#endif +#ifdef STRIFE + {FORWARD, 39,5,8, -1,-1}, + {BACKWARD, 39,6,8, -1,-1}, + {LEFT, 39,7,8, -1,STRAFE_LEFT,BACKWARD,RIGHT}, + {RIGHT, 39,8,8, -1,STRAFE_RIGHT,LEFT,INVL}, + + {USE, 29,15,8, -1,SPEED,INVPOP,FIRE}, + {FIRE, 29,16,8, -1,STRAFE}, + {SPEED, 49,15,8, USE,-1, INVQ, STRAFE}, + {STRAFE, 49,16,8, FIRE,-1,SPEED,LOOKU}, + {STRAFE_LEFT, 52,7,8, LEFT,-1, BACKWARD, STRAFE_RIGHT}, + {STRAFE_RIGHT, 52,8,8, RIGHT,-1, STRAFE_LEFT,INVR}, + + {INVL, 35,10,8, -1,INVR,RIGHT}, + {INVR, 52,10,8, INVL,-1,STRAFE_RIGHT,INVE}, + + {INVH, 35,11,8, -1,INVE,INVL,INVU}, + {INVE, 52,11,8, INVH,-1,INVR,INVD}, + {INVU, 35,12,8, -1,INVD,INVH,INVPOP}, + {INVD, 52,12,8, INVU,-1,INVE,INVQ}, + {INVPOP, 35,13,8, -1,INVQ,INVU,USE}, + {INVQ, 52,13,8, INVPOP,-1,INVD,SPEED}, + {HEALTHU, 42,18,8, -1,LOOKD,JUMP,0}, + + {JUMP, 35,17,8, -1,LOOKU,FIRE,HEALTHU}, + {LOOKU, 52,17,8, JUMP,-1,STRAFE,LOOKD}, + {LOOKD, 52,18,8, HEALTHU,-1,LOOKU,0}, +#else + {FORWARD, 47,5,8, -1,-1}, + {BACKWARD, 47,6,8, -1,-1}, + {LEFT, 47,7,8, -1,-1}, + {RIGHT, 47,8,8, -1,-1}, + + {USE, 47,12,8, -1,-1}, + {FIRE, 47,13,8, -1,-1}, + {SPEED, 47,14,8, -1,-1}, + {STRAFE, 47,15,8, -1,-1}, + {STRAFE_LEFT, 47,16,8, -1,-1}, + {STRAFE_RIGHT, 47,17,8, -1,-1}, +#endif +}; +menu_t idkeyselmenu= +{ + &idkeyselitems[0], + FORWARD, + MAXKEYS, + 0x7f +}; + +void IDConfigKeyboard(void) +{ + short field; + short key; + CONTS turk; + int rval; + + SaveScreen(); + DrawPup(&idkeysel); + + turk = curk; + + textbackground(1); + textcolor(15); + Clear(&idkeyselitems[FORWARD]); + Pos(&idkeyselitems[FORWARD]); + cprintf("%s",keydesc[turk.up] ); + Clear(&idkeyselitems[BACKWARD]); + Pos(&idkeyselitems[BACKWARD]); + cprintf("%s",keydesc[turk.down] ); + Clear(&idkeyselitems[LEFT]); + Pos(&idkeyselitems[LEFT]); + cprintf("%s",keydesc[turk.left] ); + Clear(&idkeyselitems[RIGHT]); + Pos(&idkeyselitems[RIGHT]); + cprintf("%s",keydesc[turk.right] ); + Clear(&idkeyselitems[USE]); + Pos(&idkeyselitems[USE]); + cprintf("%s",keydesc[turk.use] ); + Clear(&idkeyselitems[FIRE]); + Pos(&idkeyselitems[FIRE]); + cprintf("%s",keydesc[turk.fire] ); + Clear(&idkeyselitems[SPEED]); + Pos(&idkeyselitems[SPEED]); + cprintf("%s",keydesc[turk.key2] ); + Clear(&idkeyselitems[STRAFE]); + Pos(&idkeyselitems[STRAFE]); + cprintf("%s",keydesc[turk.key1] ); + Clear(&idkeyselitems[STRAFE_LEFT]); + Pos(&idkeyselitems[STRAFE_LEFT]); + cprintf("%s",keydesc[turk.key3] ); + Clear(&idkeyselitems[STRAFE_RIGHT]); + Pos(&idkeyselitems[STRAFE_RIGHT]); + cprintf("%s",keydesc[turk.key4] ); + +#ifdef HERETIC + Clear(&idkeyselitems[LOOKD]); + Pos(&idkeyselitems[LOOKD]); + cprintf("%s",keydesc[turk.lookdown] ); + Clear(&idkeyselitems[LOOKC]); + Pos(&idkeyselitems[LOOKC]); + cprintf("%s",keydesc[turk.lookcenter] ); + Clear(&idkeyselitems[LOOKU]); + Pos(&idkeyselitems[LOOKU]); + cprintf("%s",keydesc[turk.lookup] ); + + Clear(&idkeyselitems[FLYD]); + Pos(&idkeyselitems[FLYD]); + cprintf("%s",keydesc[turk.flydown] ); + Clear(&idkeyselitems[FLYC]); + Pos(&idkeyselitems[FLYC]); + cprintf("%s",keydesc[turk.flycenter] ); + Clear(&idkeyselitems[FLYU]); + Pos(&idkeyselitems[FLYU]); + cprintf("%s",keydesc[turk.flyup] ); + + Clear(&idkeyselitems[INVL]); + Pos(&idkeyselitems[INVL]); + cprintf("%s",keydesc[turk.invleft] ); + Clear(&idkeyselitems[INVR]); + Pos(&idkeyselitems[INVR]); + cprintf("%s",keydesc[turk.invright] ); +#endif +#ifdef STRIFE + Clear(&idkeyselitems[INVL]); + Pos(&idkeyselitems[INVL]); + cprintf("%s",keydesc[turk.invleft] ); + Clear(&idkeyselitems[INVR]); + Pos(&idkeyselitems[INVR]); + cprintf("%s",keydesc[turk.invright] ); + Clear(&idkeyselitems[INVH]); + Pos(&idkeyselitems[INVH]); + cprintf("%s",keydesc[turk.invhome] ); + Clear(&idkeyselitems[INVE]); + Pos(&idkeyselitems[INVE]); + cprintf("%s",keydesc[turk.invend] ); + Clear(&idkeyselitems[INVU]); + Pos(&idkeyselitems[INVU]); + cprintf("%s",keydesc[turk.invuse] ); + Clear(&idkeyselitems[INVD]); + Pos(&idkeyselitems[INVD]); + cprintf("%s",keydesc[turk.invdrop] ); + Clear(&idkeyselitems[INVPOP]); + Pos(&idkeyselitems[INVPOP]); + cprintf("%s",keydesc[turk.invpop] ); + Clear(&idkeyselitems[INVQ]); + Pos(&idkeyselitems[INVQ]); + cprintf("%s",keydesc[turk.invquery] ); + Clear(&idkeyselitems[HEALTHU]); + Pos(&idkeyselitems[HEALTHU]); + cprintf("%s",keydesc[turk.healthuse] ); + Clear(&idkeyselitems[JUMP]); + Pos(&idkeyselitems[JUMP]); + cprintf("%s",keydesc[turk.jump] ); + Clear(&idkeyselitems[LOOKD]); + Pos(&idkeyselitems[LOOKD]); + cprintf("%s",keydesc[turk.lookdown] ); + Clear(&idkeyselitems[LOOKU]); + Pos(&idkeyselitems[LOOKU]); + cprintf("%s",keydesc[turk.lookup] ); + +#endif + + gotoxy(1,25); + + while(1) + { + SetupMenu(&idkeyselmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + goto func_exit; + + case KEY_F10: + curk = turk; + goto func_exit; + + case KEY_ENTER: + switch ( field ) + { + case FORWARD: + rval = GetScanCode(); + if ( rval ) + { + turk.up = rval; + Clear(&idkeyselitems[FORWARD]); + Pos(&idkeyselitems[FORWARD]); + cprintf("%s",keydesc[turk.up] ); + } + break; + + case BACKWARD: + rval = GetScanCode(); + if ( rval ) + { + turk.down = rval; + Clear(&idkeyselitems[BACKWARD]); + Pos(&idkeyselitems[BACKWARD]); + cprintf("%s",keydesc[turk.down] ); + } + break; + + case LEFT: + rval = GetScanCode(); + if ( rval ) + { + turk.left = rval; + Clear(&idkeyselitems[LEFT]); + Pos(&idkeyselitems[LEFT]); + cprintf("%s",keydesc[turk.left] ); + } + break; + + case RIGHT: + rval = GetScanCode(); + if ( rval ) + { + turk.right = rval; + Clear(&idkeyselitems[RIGHT]); + Pos(&idkeyselitems[RIGHT]); + cprintf("%s",keydesc[turk.right] ); + } + break; + + case USE: + rval = GetScanCode(); + if ( rval ) + { + turk.use = rval; + Clear(&idkeyselitems[USE]); + Pos(&idkeyselitems[USE]); + cprintf("%s",keydesc[turk.use] ); + } + break; + + case FIRE: + rval = GetScanCode(); + if ( rval ) + { + turk.fire = rval; + Clear(&idkeyselitems[FIRE]); + Pos(&idkeyselitems[FIRE]); + cprintf("%s",keydesc[turk.fire] ); + } + break; + + case SPEED: + rval = GetScanCode(); + if ( rval ) + { + turk.key2 = rval; + Clear(&idkeyselitems[SPEED]); + Pos(&idkeyselitems[SPEED]); + cprintf("%s",keydesc[turk.key2] ); + } + break; + + case STRAFE: + rval = GetScanCode(); + if ( rval ) + { + turk.key1 = rval; + Clear(&idkeyselitems[STRAFE]); + Pos(&idkeyselitems[STRAFE]); + cprintf("%s",keydesc[turk.key1] ); + } + break; + + case STRAFE_LEFT: + rval = GetScanCode(); + if ( rval ) + { + turk.key3 = rval; + Clear(&idkeyselitems[STRAFE_LEFT]); + Pos(&idkeyselitems[STRAFE_LEFT]); + cprintf("%s",keydesc[turk.key3] ); + } + break; + + case STRAFE_RIGHT: + rval = GetScanCode(); + if ( rval ) + { + turk.key4 = rval; + Clear(&idkeyselitems[STRAFE_RIGHT]); + Pos(&idkeyselitems[STRAFE_RIGHT]); + cprintf("%s",keydesc[turk.key4] ); + } + break; + + #ifdef HERETIC + case LOOKD: + rval = GetScanCode(); + if ( rval ) + { + turk.lookdown = rval; + Clear(&idkeyselitems[LOOKD]); + Pos(&idkeyselitems[LOOKD]); + cprintf("%s",keydesc[turk.lookdown] ); + } + break; + case LOOKC: + rval = GetScanCode(); + if ( rval ) + { + turk.lookcenter = rval; + Clear(&idkeyselitems[LOOKC]); + Pos(&idkeyselitems[LOOKC]); + cprintf("%s",keydesc[turk.lookcenter] ); + } + break; + case LOOKU: + rval = GetScanCode(); + if ( rval ) + { + turk.lookup = rval; + Clear(&idkeyselitems[LOOKU]); + Pos(&idkeyselitems[LOOKU]); + cprintf("%s",keydesc[turk.lookup] ); + } + break; + + case FLYD: + rval = GetScanCode(); + if ( rval ) + { + turk.flydown = rval; + Clear(&idkeyselitems[FLYD]); + Pos(&idkeyselitems[FLYD]); + cprintf("%s",keydesc[turk.flydown] ); + } + break; + case FLYC: + rval = GetScanCode(); + if ( rval ) + { + turk.flycenter = rval; + Clear(&idkeyselitems[FLYC]); + Pos(&idkeyselitems[FLYC]); + cprintf("%s",keydesc[turk.flycenter] ); + } + break; + case FLYU: + rval = GetScanCode(); + if ( rval ) + { + turk.flyup = rval; + Clear(&idkeyselitems[FLYU]); + Pos(&idkeyselitems[FLYU]); + cprintf("%s",keydesc[turk.flyup] ); + } + break; + + case INVL: + rval = GetScanCode(); + if ( rval ) + { + turk.invleft = rval; + Clear(&idkeyselitems[INVL]); + Pos(&idkeyselitems[INVL]); + cprintf("%s",keydesc[turk.invleft] ); + } + break; + case INVR: + rval = GetScanCode(); + if ( rval ) + { + turk.invright = rval; + Clear(&idkeyselitems[INVR]); + Pos(&idkeyselitems[INVR]); + cprintf("%s",keydesc[turk.invright] ); + } + break; + #endif + #ifdef STRIFE + case LOOKD: + rval = GetScanCode(); + if ( rval ) + { + turk.lookdown = rval; + Clear(&idkeyselitems[LOOKD]); + Pos(&idkeyselitems[LOOKD]); + cprintf("%s",keydesc[turk.lookdown] ); + } + break; + case LOOKU: + rval = GetScanCode(); + if ( rval ) + { + turk.lookup = rval; + Clear(&idkeyselitems[LOOKU]); + Pos(&idkeyselitems[LOOKU]); + cprintf("%s",keydesc[turk.lookup] ); + } + break; + + case INVL: + rval = GetScanCode(); + if ( rval ) + { + turk.invleft = rval; + Clear(&idkeyselitems[INVL]); + Pos(&idkeyselitems[INVL]); + cprintf("%s",keydesc[turk.invleft] ); + } + break; + case INVR: + rval = GetScanCode(); + if ( rval ) + { + turk.invright = rval; + Clear(&idkeyselitems[INVR]); + Pos(&idkeyselitems[INVR]); + cprintf("%s",keydesc[turk.invright] ); + } + break; + case INVH: + rval = GetScanCode(); + if ( rval ) + { + turk.invhome = rval; + Clear(&idkeyselitems[INVH]); + Pos(&idkeyselitems[INVH]); + cprintf("%s",keydesc[turk.invhome] ); + } + break; + case INVE: + rval = GetScanCode(); + if ( rval ) + { + turk.invend = rval; + Clear(&idkeyselitems[INVE]); + Pos(&idkeyselitems[INVE]); + cprintf("%s",keydesc[turk.invend] ); + } + break; + case INVU: + rval = GetScanCode(); + if ( rval ) + { + turk.invuse = rval; + Clear(&idkeyselitems[INVU]); + Pos(&idkeyselitems[INVU]); + cprintf("%s",keydesc[turk.invuse] ); + } + break; + case INVD: + rval = GetScanCode(); + if ( rval ) + { + turk.invdrop = rval; + Clear(&idkeyselitems[INVD]); + Pos(&idkeyselitems[INVD]); + cprintf("%s",keydesc[turk.invdrop] ); + } + break; + case INVPOP: + rval = GetScanCode(); + if ( rval ) + { + turk.invpop = rval; + Clear(&idkeyselitems[INVPOP]); + Pos(&idkeyselitems[INVPOP]); + cprintf("%s",keydesc[turk.invpop] ); + } + break; + case INVQ: + rval = GetScanCode(); + if ( rval ) + { + turk.invquery = rval; + Clear(&idkeyselitems[INVQ]); + Pos(&idkeyselitems[INVQ]); + cprintf("%s",keydesc[turk.invquery] ); + } + break; + case HEALTHU: + rval = GetScanCode(); + if ( rval ) + { + turk.healthuse = rval; + Clear(&idkeyselitems[HEALTHU]); + Pos(&idkeyselitems[HEALTHU]); + cprintf("%s",keydesc[turk.healthuse] ); + } + break; + case JUMP: + rval = GetScanCode(); + if ( rval ) + { + turk.jump = rval; + Clear(&idkeyselitems[JUMP]); + Pos(&idkeyselitems[JUMP]); + cprintf("%s",keydesc[turk.jump] ); + } + break; + #endif + } + gotoxy(1,25); + break; + } + } + + func_exit: + + RestoreScreen(); + return; +} + +// +// Configure joystick buttons +// +enum +{ + J_FIRE, + J_FORWARD, + J_USE, + J_STRAFE, + J_MAX +}; +item_t idjoyselitems[]= +{ + {J_FIRE, 42,10,9, -1,-1}, + {J_FORWARD, 42,11,9, -1,-1}, + {J_USE, 42,12,9, -1,-1}, + {J_STRAFE, 42,13,9, -1,-1} +}; +menu_t idjoyselmenu= +{ + &idjoyselitems[0], + J_FIRE, + J_MAX, + 0x7f +}; + +// +// Get joystick button +// +int GetJoyButton (void) +{ + int rval = -1; + int num; + int c; + + SaveScreen(); + DrawPup(&mousentr); + + while(kbhit()) + getch(); + + while(1) + { + num = inp ( 0x201 ); + + num = num >> 4; + + if ( ! ( num & 1 ) ) + { + rval = 0; + break; + } + if ( ! ( num & 2 ) ) + { + rval = 1; + break; + } + if ( ! ( num & 4 ) ) + { + rval = 2; + break; + } + if ( ! ( num & 8 ) ) + { + rval = 3; + break; + } + + if (kbhit()) + { + c=_bios_keybrd( _KEYBRD_READY ) >> 8; + if (c == SC_ESC) + break; + + getch(); + } +// if ( ( _bios_keybrd ( _KEYBRD_READY ) >> 8 ) == SC_ESC ) break; + + } + + RestoreScreen(); + while(kbhit()) + getch(); + + return ( rval ); +} + +void IDConfigJoy (void) +{ + short key; + short field; + int rval; + CONTS turk; + char joybuts [4][20] = + { + "BUTTON 1", + "BUTTON 2", + "BUTTON 3", + "BUTTON 4" + }; + int fire; + int frwd; + int strf; + int use; + + SaveScreen(); + DrawPup(&idjoysel); + + turk = curk; + + fire = turk.joy[ ID_FIRE ]; + frwd = turk.joy[ ID_FORWARD ]; + strf = turk.joy[ ID_STRAFE ]; + use = turk.joy[ ID_USE ]; + + textbackground(1); + textcolor(15); + Clear(&idjoyselitems[J_FIRE]); + Pos(&idjoyselitems[J_FIRE]); + if (fire >= 0) + cprintf("%s",joybuts[fire]); + + Clear(&idjoyselitems[J_FORWARD]); + Pos(&idjoyselitems[J_FORWARD]); + if (frwd >= 0) + cprintf("%s",joybuts[ frwd ] ); + + Clear(&idjoyselitems[J_STRAFE]); + Pos(&idjoyselitems[J_STRAFE]); + if (strf >= 0) + cprintf("%s",joybuts[ strf ] ); + + Clear(&idjoyselitems[J_USE]); + Pos(&idjoyselitems[J_USE]); + if (use >= 0) + cprintf("%s",joybuts[ use ] ); + gotoxy(1,25); + + while(1) + { + SetupMenu(&idjoyselmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + goto func_exit; + + case KEY_F10: + curk = turk; + goto func_exit; + + case KEY_ENTER: + switch ( field ) + { + case J_FIRE: + rval = GetJoyButton(); + if ( rval != -1 ) + { + turk.joy [ ID_FIRE ] = rval; + Clear(&idjoyselitems[J_FIRE]); + Pos(&idjoyselitems[J_FIRE]); + cprintf("%s",joybuts[ rval ] ); + + if (turk.joy [ ID_FORWARD ] == rval) + { + turk.joy [ ID_FORWARD ] = -1; + Clear(&idjoyselitems[J_FORWARD]); + } + if (turk.joy [ ID_USE ] == rval) + { + turk.joy [ ID_USE ] = -1; + Clear(&idjoyselitems[J_USE]); + } + if (turk.joy [ ID_STRAFE ] == rval) + { + turk.joy [ ID_STRAFE ] = -1; + Clear(&idjoyselitems[J_STRAFE]); + } + } + break; + + case J_FORWARD: + rval = GetJoyButton(); + if ( rval != -1 ) + { + turk.joy [ ID_FORWARD ] = rval; + Clear(&idjoyselitems[J_FORWARD]); + Pos(&idjoyselitems[J_FORWARD]); + cprintf("%s",joybuts[rval]); + + if (turk.joy [ ID_FIRE ] == rval) + { + turk.joy [ ID_FIRE ] = -1; + Clear(&idjoyselitems[J_FIRE]); + } + if (turk.joy [ ID_USE ] == rval) + { + turk.joy [ ID_USE ] = -1; + Clear(&idjoyselitems[J_USE]); + } + if (turk.joy [ ID_STRAFE ] == rval) + { + turk.joy [ ID_STRAFE ] = -1; + Clear(&idjoyselitems[J_STRAFE]); + } + } + break; + + case J_USE: + rval = GetJoyButton(); + if ( rval != -1 ) + { + turk.joy [ ID_USE ] = rval; + Clear(&idjoyselitems[J_USE]); + Pos(&idjoyselitems[J_USE]); + cprintf("%s",joybuts[rval]); + + if (turk.joy [ ID_FORWARD ] == rval) + { + turk.joy [ ID_FORWARD ] = -1; + Clear(&idjoyselitems[J_FORWARD]); + } + if (turk.joy [ ID_FIRE ] == rval) + { + turk.joy [ ID_FIRE ] = -1; + Clear(&idjoyselitems[J_FIRE]); + } + if (turk.joy [ ID_STRAFE ] == rval) + { + turk.joy [ ID_STRAFE ] = -1; + Clear(&idjoyselitems[J_STRAFE]); + } + } + break; + + case J_STRAFE: + rval = GetJoyButton(); + if ( rval != -1 ) + { + turk.joy [ ID_STRAFE ] = rval; + Clear(&idjoyselitems[J_STRAFE]); + Pos(&idjoyselitems[J_STRAFE]); + cprintf("%s",joybuts[rval]); + + if (turk.joy [ ID_FORWARD ] == rval) + { + turk.joy [ ID_FORWARD ] = -1; + Clear(&idjoyselitems[J_FORWARD]); + } + if (turk.joy [ ID_USE ] == rval) + { + turk.joy [ ID_USE ] = -1; + Clear(&idjoyselitems[J_USE]); + } + if (turk.joy [ ID_FIRE ] == rval) + { + turk.joy [ ID_FIRE ] = -1; + Clear(&idjoyselitems[J_FIRE]); + } + } + break; + } + gotoxy(1,25); + break; + } + } + + func_exit: + + RestoreScreen(); + return; +} + +// +// Configure mouse buttons +// +enum {M_FIRE,M_FORWARD,M_STRAFE,M_MAX}; +item_t idmouselitems[]= +{ + {M_FIRE, 44,9,13, -1,-1}, + {M_FORWARD, 44,10,13, -1,-1}, + {M_STRAFE, 44,11,13, -1,-1} +}; +menu_t idmouselmenu= +{ + &idmouselitems[0], + M_FIRE, + M_MAX, + 0x7f +}; + +// +// Get mouse button +// +int GetMouseButton (void) +{ + int rval = -1; + union REGS r; + + SaveScreen(); + DrawPup(&mousentr); + + while(1) + { + r.x.ax = 3; + int86 ( 0x33, &r, &r ); + + if ( r.x.bx & 1 ) + rval = 0; + else if ( r.x.bx & 2 ) + rval = 1; + else if ( r.x.bx & 4 ) + rval = 2; + + if ( rval != -1 ) break; + + if ( ( _bios_keybrd ( _KEYBRD_READY ) >> 8 ) == SC_ESC ) break; + } + + RestoreScreen(); + while(kbhit()) + getch(); + + return ( rval ); +} + +void IDConfigMouse (void) +{ + short key; + short field; + int rval; + CONTS turk; + char mousebuts [3][20] = { + "LEFT BUTTON", + "RIGHT BUTTON", + "MID BUTTON" + }; + int fire; + int frwd; + int strf; + + + SaveScreen(); + DrawPup(&idmousel); + turk = curk; + + fire = turk.mouse[ ID_FIRE ]; + frwd = turk.mouse[ ID_FORWARD ]; + strf = turk.mouse[ ID_STRAFE ]; + + textbackground(1); + textcolor(15); + Clear(&idmouselitems[M_FIRE]); + Pos(&idmouselitems[M_FIRE]); + if (fire >= 0) + cprintf("%s",mousebuts[ fire ] ); + + Clear(&idmouselitems[M_FORWARD]); + Pos(&idmouselitems[M_FORWARD]); + if (frwd >= 0) + cprintf("%s",mousebuts[ frwd ] ); + + Clear(&idmouselitems[M_STRAFE]); + Pos(&idmouselitems[M_STRAFE]); + if (strf >= 0) + cprintf("%s",mousebuts[ strf ] ); + gotoxy(1,25); + + while(1) + { + SetupMenu(&idmouselmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + goto func_exit; + + case KEY_F10: + curk = turk; + goto func_exit; + + case KEY_ENTER: + switch ( field ) + { + case M_FIRE: + rval = GetMouseButton(); + if ( rval != -1 ) + { + turk.mouse [ ID_FIRE ] = rval; + Clear(&idmouselitems[M_FIRE]); + Pos(&idmouselitems[M_FIRE]); + cprintf("%s",mousebuts [ rval ] ); + if (turk.mouse [ ID_STRAFE ] == rval) + { + turk.mouse [ ID_STRAFE ] = -1; + Clear(&idmouselitems[M_STRAFE]); + } + if (turk.mouse [ ID_FORWARD ] == rval) + { + turk.mouse [ ID_FORWARD ] = -1; + Clear(&idmouselitems[M_FORWARD]); + } + } + break; + + case M_FORWARD: + rval = GetMouseButton(); + if ( rval != -1 ) + { + turk.mouse [ ID_FORWARD ] = rval; + Clear(&idmouselitems[M_FORWARD]); + Pos(&idmouselitems[M_FORWARD]); + cprintf("%s",mousebuts [ rval ] ); + + if (turk.mouse [ ID_STRAFE ] == rval) + { + turk.mouse [ ID_STRAFE ] = -1; + Clear(&idmouselitems[M_STRAFE]); + } + if (turk.mouse [ ID_FIRE ] == rval) + { + turk.mouse [ ID_FIRE ] = -1; + Clear(&idmouselitems[M_FIRE]); + } + } + break; + + case M_STRAFE: + rval = GetMouseButton(); + if ( rval != -1 ) + { + turk.mouse [ ID_STRAFE ] = rval; + Clear(&idmouselitems[M_STRAFE]); + Pos(&idmouselitems[M_STRAFE]); + cprintf("%s",mousebuts[rval]); + + if (turk.mouse [ ID_FORWARD ] == rval) + { + turk.mouse [ ID_FORWARD ] = -1; + Clear(&idmouselitems[M_FORWARD]); + } + if (turk.mouse [ ID_FIRE ] == rval) + { + turk.mouse [ ID_FIRE ] = -1; + Clear(&idmouselitems[M_FIRE]); + } + } + break; + } + gotoxy(1,25); + break; + } + } + + func_exit: + + RestoreScreen(); + return; +} + +// +// Choose which controller to configure! +// +enum {CFG_KEY,CFG_MOUSE,CFG_JOY,CFG_MAX}; +item_t conselitems[]= +{ + {CFG_KEY, 31,11,14, -1,-1}, + {CFG_MOUSE, 31,12,14, -1,-1}, + {CFG_JOY, 31,13,14, -1,-1} +}; +menu_t conselmenu= +{ + &conselitems[0], + CFG_KEY, + CFG_MAX, + 0x7f +}; + +void ConfigControl (void) +{ + short key; + short field; + + SaveScreen(); + DrawPup(&consel); + + while(1) + { + SetupMenu(&conselmenu); + field = GetMenuInput(); + key = menukey; + + if ( key == KEY_ESC ) + break; + + if ( key != KEY_ENTER && key != KEY_F10 ) continue; + + switch ( field ) + { + default: + case CFG_KEY: + IDConfigKeyboard(); + goto func_exit; + + case CFG_MOUSE: + if ( !mousepresent ) + { + ErrorWindow(&mouspres); + break; + } + IDConfigMouse(); + goto func_exit; + + case CFG_JOY: + IDConfigJoy(); + goto func_exit; + } + } + + func_exit: + + RestoreScreen(); + return; +} diff --git a/CONFIG.OBJ b/CONFIG.OBJ new file mode 100644 index 0000000..0f7492b Binary files /dev/null and b/CONFIG.OBJ differ diff --git a/CONTROL.BAK b/CONTROL.BAK new file mode 100644 index 0000000..ebbece8 --- /dev/null +++ b/CONTROL.BAK @@ -0,0 +1,85 @@ +// +// Choose which type of controller to use +// +enum {CON_MOUSE,CON_JOY,CON_KEY,CON_MAX}; +item_t controlitems[]= +{ + {CON_MOUSE, 26,11,28, -1,-1}, + {CON_JOY, 26,12,28, -1,-1}, + {CON_KEY, 26,13,28, -1,-1} +}; +menu_t controlmenu= +{ + &controlitems[0], + CON_MOUSE, + CON_MAX, + 0x7f +}; + +int ChooseController (void) +{ + short key; + short field; + int rval = 0; + + SaveScreen(); + DrawPup(&control); + + // DEFAULT FIELD ======================================== + + if (newc.control == C_MOUSE) + field = CON_MOUSE; + else + if (newc.control == C_JOYSTICK) + field = CON_JOY; + else + field = CON_KEY; + + controlmenu.startitem = field; + while(1) + { + SetupMenu(&controlmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case CON_KEY: + newc.control = C_KEY; + usemouse = 0; + usejoystick = 0; + goto func_exit; + + case CON_MOUSE: + newc.control = C_MOUSE; + usemouse = 1; + usejoystick = 0; + goto func_exit; + + case CON_JOY: + newc.control = C_JOYSTICK; + usemouse = 0; + usejoystick = 1; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + DrawCurrentConfig(); + return ( rval ); +} + diff --git a/CONTROL.C b/CONTROL.C new file mode 100644 index 0000000..6607e5e --- /dev/null +++ b/CONTROL.C @@ -0,0 +1,87 @@ +// +// Choose which type of controller to use +// +#include "main.h" + +enum {CON_MOUSE,CON_JOY,CON_KEY,CON_MAX}; +item_t controlitems[]= +{ + {CON_MOUSE, 26,11,28, -1,-1}, + {CON_JOY, 26,12,28, -1,-1}, + {CON_KEY, 26,13,28, -1,-1} +}; +menu_t controlmenu= +{ + &controlitems[0], + CON_MOUSE, + CON_MAX, + 0x7f +}; + +int ChooseController (void) +{ + short key; + short field; + int rval = 0; + + SaveScreen(); + DrawPup(&control); + + // DEFAULT FIELD ======================================== + + if (newc.control == C_MOUSE) + field = CON_MOUSE; + else + if (newc.control == C_JOYSTICK) + field = CON_JOY; + else + field = CON_KEY; + + controlmenu.startitem = field; + while(1) + { + SetupMenu(&controlmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case CON_KEY: + newc.control = C_KEY; + usemouse = 0; + usejoystick = 0; + goto func_exit; + + case CON_MOUSE: + newc.control = C_MOUSE; + usemouse = 1; + usejoystick = 0; + goto func_exit; + + case CON_JOY: + newc.control = C_JOYSTICK; + usemouse = 0; + usejoystick = 1; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + DrawCurrentConfig(); + return ( rval ); +} + diff --git a/CONTROL.OBJ b/CONTROL.OBJ new file mode 100644 index 0000000..0a86689 Binary files /dev/null and b/CONTROL.OBJ differ diff --git a/DEBUG.BAK b/DEBUG.BAK new file mode 100644 index 0000000..c53a171 --- /dev/null +++ b/DEBUG.BAK @@ -0,0 +1,57 @@ +#include +#include +#include "setup.h" + +#ifdef DEBUG +pup_t far *puplist[]= +{ + &askpres, + &cmodem, + &consel, + &control, + &cserial, + &cwarp, + &gusirqer, + &idcard, + &idjoysel, + &idkeysel, + &idmain2, + &idmousel, + &irqerr, + ¯os, + &mcard, + &midiport, + &modemchs, + &modsave, + &mousentr, + &mouspres, + &netplay, + &netplay2, + &netsave, + &netserr, + &netwk2, + &numdig, + &phonelst, + &quitwin, + &sbdma, + &sbirq, + &sbport, + &sersave, + &show, + &sockerr, + &title, + NULL +}; + +void ShowAllPups(void) +{ + int i; + + i = 0; + while(puplist[i]) + { + DrawPup(puplist[i++]); + getch(); + } +} +#endif diff --git a/DEBUG.C b/DEBUG.C new file mode 100644 index 0000000..c53a171 --- /dev/null +++ b/DEBUG.C @@ -0,0 +1,57 @@ +#include +#include +#include "setup.h" + +#ifdef DEBUG +pup_t far *puplist[]= +{ + &askpres, + &cmodem, + &consel, + &control, + &cserial, + &cwarp, + &gusirqer, + &idcard, + &idjoysel, + &idkeysel, + &idmain2, + &idmousel, + &irqerr, + ¯os, + &mcard, + &midiport, + &modemchs, + &modsave, + &mousentr, + &mouspres, + &netplay, + &netplay2, + &netsave, + &netserr, + &netwk2, + &numdig, + &phonelst, + &quitwin, + &sbdma, + &sbirq, + &sbport, + &sersave, + &show, + &sockerr, + &title, + NULL +}; + +void ShowAllPups(void) +{ + int i; + + i = 0; + while(puplist[i]) + { + DrawPup(puplist[i++]); + getch(); + } +} +#endif diff --git a/DEBUG.OBJ b/DEBUG.OBJ new file mode 100644 index 0000000..3741ed5 Binary files /dev/null and b/DEBUG.OBJ differ diff --git a/DEFAULT.BAK b/DEFAULT.BAK new file mode 100644 index 0000000..29ee816 --- /dev/null +++ b/DEFAULT.BAK @@ -0,0 +1,262 @@ +// +// Save & Load defaults +// +#include +#include +#include +#include +#include +#include + +#include "default.h" +#include "keys.h" +#include "main.h" + +int usemouse; +int usejoystick; + +extern net_t netinfo; +extern DMXINFO newc; +extern CONTS curk; + +int mouseSensitivity = 4; +int showMessages = 1; +int sfxVolume = 15; +int musicVolume = 15; +int detailLevel = 1; +int screenblocks = 10; +int usegamma = 0; +int comport = 1; + +char chatmacros[10][40]; + +default_t defaults[] = +{ + {"mouse_sensitivity",&mouseSensitivity, 5}, + {"sfx_volume",&sfxVolume, 8}, + {"music_volume",&musicVolume, 8}, + {"show_messages",&showMessages, 1}, + + {"key_right",&curk.right, SC_RIGHT }, + {"key_left",&curk.left, SC_LEFT }, + {"key_up",&curk.up, SC_UP }, + {"key_down",&curk.down, SC_DOWN }, + {"key_strafeleft",&curk.key3, SC_COMMA }, + {"key_straferight",&curk.key4, SC_PERIOD }, + {"key_fire",&curk.fire, SC_CTRL }, + {"key_use",&curk.use, SC_SPACE }, + {"key_strafe",&curk.key1, SC_ALT }, + {"key_speed",&curk.key2, SC_RIGHT_SHIFT }, +#ifdef HERETIC + {"key_flydown",&curk.flydown,SC_INSERT}, + {"key_flycenter",&curk.flycenter,SC_HOME}, + {"key_flyup",&curk.flyup,SC_PAGEUP}, + {"key_lookdown",&curk.lookdown,SC_DELETE}, + {"key_lookcenter",&curk.lookcenter,SC_END}, + {"key_lookup",&curk.lookup,SC_PAGEDN}, + {"key_invleft",&curk.invleft,0x1a}, + {"key_invright",&curk.invright,0x1b}, +#endif +#ifdef STRIFE + {"key_lookdown",&curk.lookdown, SC_PAGEDN}, + {"key_lookup",&curk.lookup,SC_PAGEUP}, + {"key_invleft",&curk.invleft,SC_INSERT}, + {"key_invright",&curk.invright,SC_DELETE}, + {"key_useHealth",&curk.healthuse,SC_H}, + {"key_invUse",&curk.invuse,SC_ENTER}, + {"key_invDrop",&curk.invdrop,SC_BACKSPACE}, + {"key_invHome",&curk.invhome,SC_HOME}, + {"key_invEnd",&curk.invend,SC_END}, + {"key_invPop",&curk.invpop,SC_Z}, + {"key_invquery",&curk.invquery,SC_Q}, + {"key_jump",&curk.jump,SC_A}, +#endif + {"use_mouse",&usemouse, 1 }, + {"mouseb_fire",&curk.mouse[ID_FIRE],ID_FIRE }, + {"mouseb_strafe",&curk.mouse[ID_STRAFE],ID_STRAFE }, + {"mouseb_forward",&curk.mouse[ID_FORWARD],ID_FORWARD }, + + {"use_joystick",&usejoystick, 0}, + {"joyb_fire",&curk.joy[ID_FIRE],ID_FIRE}, + {"joyb_strafe",&curk.joy[ID_STRAFE],ID_STRAFE}, + {"joyb_use",&curk.joy[ID_USE],ID_USE}, + {"joyb_speed",&curk.joy[ID_FORWARD],ID_FORWARD}, + + {"screenblocks",&screenblocks, 9}, + {"detaillevel",&detailLevel, 0}, + {"showmessages",&showMessages, 1 }, + {"comport",&comport, 1 }, + + {"snd_channels", (int *)&newc.numdig, 3 }, + + {"snd_musicdevice", (int *)&newc.m.card, 0 }, + {"snd_sfxdevice", (int *)&newc.d.card, 0 }, + {"snd_sbport", (int *)&newc.m.port, 0x220 }, + {"snd_sbirq", (int *)&newc.d.irq, 5 }, + {"snd_sbdma", (int *)&newc.d.dma, 1 }, + {"snd_mport", (int *)&newc.m.midiport, 0x330 }, + + {"usegamma", &usegamma, 0 }, + + {"chatmacro0",(int *)chatmacros[0],0}, + {"chatmacro1",(int *)chatmacros[1],0}, + {"chatmacro2",(int *)chatmacros[2],0}, + {"chatmacro3",(int *)chatmacros[3],0}, + {"chatmacro4",(int *)chatmacros[4],0}, + {"chatmacro5",(int *)chatmacros[5],0}, + {"chatmacro6",(int *)chatmacros[6],0}, + {"chatmacro7",(int *)chatmacros[7],0}, + {"chatmacro8",(int *)chatmacros[8],0}, + {"chatmacro9",(int *)chatmacros[9],0}, + + {"",NULL,0}, + +}; + +int numdefaults; +char * defaultfile; + +/* +============== += += M_SaveDefaults += +============== +*/ + +void M_SaveDefaults (void) +{ + int i; + FILE * f; + + if ( newc.m.port == -1 ) + { + if ( newc.d.port == -1 ) + newc.m.port = 0x220; + else + newc.m.port = newc.d.port; + } + + if ( newc.control != C_KEY ) + { + if ( newc.control == C_MOUSE ) + usemouse = 1; + + if ( newc.control == C_JOYSTICK ) + usejoystick = 1; + } + + numdefaults = sizeof(defaults)/sizeof(default_t); + + f = fopen (defaultfile, "w"); + if (!f) + return; // can't write the file, but don't complain + + for (i=0 ; i +#include +#include +#include +#include +#include + +#include "default.h" +#include "keys.h" +#include "main.h" + +int usemouse; +int usejoystick; + +extern net_t netinfo; +extern DMXINFO newc; +extern CONTS curk; + +int mouseSensitivity = 4; +int showMessages = 1; +int sfxVolume = 15; +int musicVolume = 15; +int detailLevel = 1; +int screenblocks = 10; +int usegamma = 0; +int comport = 1; + +char chatmacros[10][40]; + +default_t defaults[] = +{ + {"mouse_sensitivity",&mouseSensitivity, 5}, + {"sfx_volume",&sfxVolume, 8}, + {"music_volume",&musicVolume, 8}, + {"show_messages",&showMessages, 1}, + + {"key_right",&curk.right, SC_RIGHT }, + {"key_left",&curk.left, SC_LEFT }, + {"key_up",&curk.up, SC_UP }, + {"key_down",&curk.down, SC_DOWN }, + {"key_strafeleft",&curk.key3, SC_COMMA }, + {"key_straferight",&curk.key4, SC_PERIOD }, + {"key_fire",&curk.fire, SC_CTRL }, + {"key_use",&curk.use, SC_SPACE }, + {"key_strafe",&curk.key1, SC_ALT }, + {"key_speed",&curk.key2, SC_RIGHT_SHIFT }, +#ifdef HERETIC + {"key_flydown",&curk.flydown,SC_INSERT}, + {"key_flycenter",&curk.flycenter,SC_HOME}, + {"key_flyup",&curk.flyup,SC_PAGEUP}, + {"key_lookdown",&curk.lookdown,SC_DELETE}, + {"key_lookcenter",&curk.lookcenter,SC_END}, + {"key_lookup",&curk.lookup,SC_PAGEDN}, + {"key_invleft",&curk.invleft,0x1a}, + {"key_invright",&curk.invright,0x1b}, +#endif +#ifdef STRIFE + {"key_lookdown",&curk.lookdown, SC_PAGEDN}, + {"key_lookup",&curk.lookup,SC_PAGEUP}, + {"key_invleft",&curk.invleft,SC_INSERT}, + {"key_invright",&curk.invright,SC_DELETE}, + {"key_useHealth",&curk.healthuse,SC_H}, + {"key_invUse",&curk.invuse,SC_ENTER}, + {"key_invDrop",&curk.invdrop,SC_BACKSPACE}, + {"key_invHome",&curk.invhome,SC_HOME}, + {"key_invEnd",&curk.invend,SC_END}, + {"key_invPop",&curk.invpop,SC_Z}, + {"key_invquery",&curk.invquery,SC_Q}, + {"key_jump",&curk.jump,SC_A}, +#endif + {"use_mouse",&usemouse, 1 }, + {"mouseb_fire",&curk.mouse[ID_FIRE],ID_FIRE }, + {"mouseb_strafe",&curk.mouse[ID_STRAFE],ID_STRAFE }, + {"mouseb_forward",&curk.mouse[ID_FORWARD],ID_FORWARD }, + + {"use_joystick",&usejoystick, 0}, + {"joyb_fire",&curk.joy[ID_FIRE],ID_FIRE}, + {"joyb_strafe",&curk.joy[ID_STRAFE],ID_STRAFE}, + {"joyb_use",&curk.joy[ID_USE],ID_USE}, + {"joyb_speed",&curk.joy[ID_FORWARD],ID_FORWARD}, + + {"screenblocks",&screenblocks, 9}, + {"detaillevel",&detailLevel, 0}, + {"showmessages",&showMessages, 1 }, + {"comport",&comport, 1 }, + + {"snd_channels", (int *)&newc.numdig, 3 }, + + {"snd_musicdevice", (int *)&newc.m.card, 0 }, + {"snd_sfxdevice", (int *)&newc.d.card, 0 }, + {"snd_sbport", (int *)&newc.m.port, 0x220 }, + {"snd_sbirq", (int *)&newc.d.irq, 5 }, + {"snd_sbdma", (int *)&newc.d.dma, 1 }, + {"snd_mport", (int *)&newc.m.midiport, 0x330 }, + + {"usegamma", &usegamma, 0 }, + + {"chatmacro0",(int *)chatmacros[0],0}, + {"chatmacro1",(int *)chatmacros[1],0}, + {"chatmacro2",(int *)chatmacros[2],0}, + {"chatmacro3",(int *)chatmacros[3],0}, + {"chatmacro4",(int *)chatmacros[4],0}, + {"chatmacro5",(int *)chatmacros[5],0}, + {"chatmacro6",(int *)chatmacros[6],0}, + {"chatmacro7",(int *)chatmacros[7],0}, + {"chatmacro8",(int *)chatmacros[8],0}, + {"chatmacro9",(int *)chatmacros[9],0}, + + {"",NULL,0}, + +}; + +int numdefaults; +char * defaultfile; + +/* +============== += += M_SaveDefaults += +============== +*/ + +void M_SaveDefaults (void) +{ + int i; + FILE * f; + + if ( newc.m.port == -1 ) + { + if ( newc.d.port == -1 ) + newc.m.port = 0x220; + else + newc.m.port = newc.d.port; + } + + if ( newc.control != C_KEY ) + { + if ( newc.control == C_MOUSE ) + usemouse = 1; + + if ( newc.control == C_JOYSTICK ) + usejoystick = 1; + } + + numdefaults = sizeof(defaults)/sizeof(default_t); + + f = fopen (defaultfile, "w"); + if (!f) + return; // can't write the file, but don't complain + + for (i=0 ; i +#include +#include +#include +#include +#include + +#include "default.h" +#include "keys.h" +#include "main.h" + +int usemouse; +int usejoystick; + +extern net_t netinfo; +extern DMXINFO newc; +extern CONTS curk; + +int mouseSensitivity = 4; +int showMessages = 1; +int sfxVolume = 15; +int musicVolume = 15; +int detailLevel = 1; +int screenblocks = 10; +int usegamma = 0; +int comport = 1; + +char chatmacros[10][40]; + +default_t defaults[] = +{ + {"mouse_sensitivity",&mouseSensitivity, 5}, + {"sfx_volume",&sfxVolume, 8}, + {"music_volume",&musicVolume, 8}, + {"show_messages",&showMessages, 1}, + + {"key_right",&curk.right, SC_RIGHT }, + {"key_left",&curk.left, SC_LEFT }, + {"key_up",&curk.up, SC_UP }, + {"key_down",&curk.down, SC_DOWN }, + {"key_strafeleft",&curk.key3, SC_COMMA }, + {"key_straferight",&curk.key4, SC_PERIOD }, + {"key_fire",&curk.fire, SC_CTRL }, + {"key_use",&curk.use, SC_SPACE }, + {"key_strafe",&curk.key1, SC_ALT }, + {"key_speed",&curk.key2, SC_RIGHT_SHIFT }, +#ifdef HERETIC + {"key_flydown",&curk.flydown,SC_INSERT}, + {"key_flycenter",&curk.flycenter,SC_HOME}, + {"key_flyup",&curk.flyup,SC_PAGEUP}, + {"key_lookdown",&curk.lookdown,SC_DELETE}, + {"key_lookcenter",&curk.lookcenter,SC_END}, + {"key_lookup",&curk.lookup,SC_PAGEDN}, + {"key_invleft",&curk.invleft,0x1a}, + {"key_invright",&curk.invright,0x1b}, +#endif +#ifdef STRIFE + {"key_lookdown",&curk.lookdown,SC_DELETE}, + {"key_lookup",&curk.lookup,SC_PAGEDN}, + {"key_invleft",&curk.invleft,0x1a}, + {"key_invright",&curk.invright,0x1b}, + {"key_useHealth",&curk.healthuse,SC_H}, + {"key_invUse",&curk.invuse,SC_ENTER}, + {"key_invDrop",&curk.invdrop,SC_HOME}, + {"key_invHome",&curk.invhome,SC_HOME}, + {"key_invEnd",&curk.invend,SC_END}, + {"key_invPop",&curk.invpop,SC_Z}, + {"key_invquery",&curk.invquery,SC_Q}, + {"key_jump",&curk.jump,SC_A}, +#endif + {"use_mouse",&usemouse, 1 }, + {"mouseb_fire",&curk.mouse[ID_FIRE],ID_FIRE }, + {"mouseb_strafe",&curk.mouse[ID_STRAFE],ID_STRAFE }, + {"mouseb_forward",&curk.mouse[ID_FORWARD],ID_FORWARD }, + + {"use_joystick",&usejoystick, 0}, + {"joyb_fire",&curk.joy[ID_FIRE],ID_FIRE}, + {"joyb_strafe",&curk.joy[ID_STRAFE],ID_STRAFE}, + {"joyb_use",&curk.joy[ID_USE],ID_USE}, + {"joyb_speed",&curk.joy[ID_FORWARD],ID_FORWARD}, + + {"screenblocks",&screenblocks, 9}, + {"detaillevel",&detailLevel, 0}, + {"showmessages",&showMessages, 1 }, + {"comport",&comport, 1 }, + + {"snd_channels", (int *)&newc.numdig, 3 }, + + {"snd_musicdevice", (int *)&newc.m.card, 0 }, + {"snd_sfxdevice", (int *)&newc.d.card, 0 }, + {"snd_sbport", (int *)&newc.m.port, 0x220 }, + {"snd_sbirq", (int *)&newc.d.irq, 5 }, + {"snd_sbdma", (int *)&newc.d.dma, 1 }, + {"snd_mport", (int *)&newc.m.midiport, 0x330 }, + + {"usegamma", &usegamma, 0 }, + + {"chatmacro0",(int *)chatmacros[0],0}, + {"chatmacro1",(int *)chatmacros[1],0}, + {"chatmacro2",(int *)chatmacros[2],0}, + {"chatmacro3",(int *)chatmacros[3],0}, + {"chatmacro4",(int *)chatmacros[4],0}, + {"chatmacro5",(int *)chatmacros[5],0}, + {"chatmacro6",(int *)chatmacros[6],0}, + {"chatmacro7",(int *)chatmacros[7],0}, + {"chatmacro8",(int *)chatmacros[8],0}, + {"chatmacro9",(int *)chatmacros[9],0}, + + {"",NULL,0}, + +}; + +int numdefaults; +char * defaultfile; + +/* +============== += += M_SaveDefaults += +============== +*/ + +void M_SaveDefaults (void) +{ + int i; + FILE * f; + + if ( newc.m.port == -1 ) + { + if ( newc.d.port == -1 ) + newc.m.port = 0x220; + else + newc.m.port = newc.d.port; + } + + if ( newc.control != C_KEY ) + { + if ( newc.control == C_MOUSE ) + usemouse = 1; + + if ( newc.control == C_JOYSTICK ) + usejoystick = 1; + } + + numdefaults = sizeof(defaults)/sizeof(default_t); + + f = fopen (defaultfile, "w"); + if (!f) + return; // can't write the file, but don't complain + + for (i=0 ; i +#include +#include + +#include "main.h" + +// +// Line input routine -- totally crude! +// +int EditLine(item_t *item,char *string,int maxlen) +{ + char c; + int len; + + textbackground(0); + textcolor(15); + Clear(item); + Pos(item); + cprintf("%s",string); + while(1) + { + c = getch(); + switch(c) + { + case 8: // BACKSPACE + case 0x4b: // LEFT ARROW + len = strlen(string); + if (!len) + { + sound(2500); + delay(3); + nosound(); + continue; + } + string[len-1] = 0; + Clear(item); + Pos(item); + cprintf("%s",string); + case 77: // RIGHT ARROW + case 0x48: // UP + case 0x50: // DOWN + sound(2500); + delay(3); + nosound(); + break; + case KEY_ENTER: + case KEY_ESC: + return c; + default: + if (c < 0x20 || c > 0x7a) + { + sound(2500); + delay(3); + nosound(); + continue; + } + len = strlen(string); + if (len+1 == maxlen) + { + sound(2500); + delay(3); + nosound(); + continue; + } + string[len] = c; + string[len+1] = 0; + Pos(item); + cprintf("%s",string); + break; + } + } +} + +enum {MAC_MACRO0,MAC_MACRO1,MAC_MACRO2,MAC_MACRO3,MAC_MACRO4,MAC_MACRO5, + MAC_MACRO6,MAC_MACRO7,MAC_MACRO8,MAC_MACRO9,MAC_MAX}; +item_t macrositems[]= +{ + {MAC_MACRO0, 22,7,40, -1,-1}, + {MAC_MACRO1, 22,8,40, -1,-1}, + {MAC_MACRO2, 22,9,40, -1,-1}, + {MAC_MACRO3, 22,10,40, -1,-1}, + {MAC_MACRO4, 22,11,40, -1,-1}, + {MAC_MACRO5, 22,12,40, -1,-1}, + {MAC_MACRO6, 22,13,40, -1,-1}, + {MAC_MACRO7, 22,14,40, -1,-1}, + {MAC_MACRO8, 22,15,40, -1,-1}, + {MAC_MACRO9, 22,16,40, -1,-1} +}; +menu_t macrosmenu= +{ + ¯ositems[0], + MAC_MACRO0, + MAC_MAX, + 0x7f +}; + +void MacroConfig(void) +{ + short key; + short field; + int i; + char string[40]; + + SaveScreen(); + DrawPup(¯os); + + textcolor(15); + textbackground(1); + for (i = 0;i < MAC_MAX; i++) + { + Clear(¯ositems[i]); + Pos(¯ositems[i]); + cprintf("%s",&chatmacros[i][0]); + } + gotoxy(1,25); + + while(1) + { + SetupMenu(¯osmenu); + field = GetMenuInput(); + key = menukey; + + switch(key) + { + case KEY_ENTER: + strcpy(string,chatmacros[field]); + key = EditLine(¯ositems[field],string,40); + if (key == KEY_ENTER) + strcpy(chatmacros[field],string); + textbackground(1); + textcolor(15); + Clear(¯ositems[field]); + Pos(¯ositems[field]); + cprintf("%s",chatmacros[field]); + gotoxy(1,25); + continue; + + case KEY_ESC: + RestoreScreen(); + return; + } + } +}; diff --git a/MACROS.C b/MACROS.C new file mode 100644 index 0000000..4105456 --- /dev/null +++ b/MACROS.C @@ -0,0 +1,144 @@ +// +// Choose which type of netplay +// +#include +#include +#include + +#include "main.h" + +// +// Line input routine -- totally crude! +// +int EditLine(item_t *item,char *string,int maxlen) +{ + char c; + int len; + + textbackground(0); + textcolor(15); + Clear(item); + Pos(item); + cprintf("%s",string); + while(1) + { + c = getch(); + switch(c) + { + case 8: // BACKSPACE + case 0x4b: // LEFT ARROW + len = strlen(string); + if (!len) + { + sound(2500); + delay(3); + nosound(); + continue; + } + string[len-1] = 0; + Clear(item); + Pos(item); + cprintf("%s",string); + case 77: // RIGHT ARROW + sound(2500); + delay(3); + nosound(); + break; + case KEY_ENTER: + case KEY_ESC: + return c; + default: + if (c < 0x20 || c > 0x7a) + { + sound(2500); + delay(3); + nosound(); + continue; + } + len = strlen(string); + if (len+1 == maxlen) + { + sound(2500); + delay(3); + nosound(); + continue; + } + string[len] = c; + string[len+1] = 0; + Pos(item); + cprintf("%s",string); + break; + } + } +} + +enum {MAC_MACRO0,MAC_MACRO1,MAC_MACRO2,MAC_MACRO3,MAC_MACRO4,MAC_MACRO5, + MAC_MACRO6,MAC_MACRO7,MAC_MACRO8,MAC_MACRO9,MAC_MAX}; +item_t macrositems[]= +{ + {MAC_MACRO0, 22,7,40, -1,-1}, + {MAC_MACRO1, 22,8,40, -1,-1}, + {MAC_MACRO2, 22,9,40, -1,-1}, + {MAC_MACRO3, 22,10,40, -1,-1}, + {MAC_MACRO4, 22,11,40, -1,-1}, + {MAC_MACRO5, 22,12,40, -1,-1}, + {MAC_MACRO6, 22,13,40, -1,-1}, + {MAC_MACRO7, 22,14,40, -1,-1}, + {MAC_MACRO8, 22,15,40, -1,-1}, + {MAC_MACRO9, 22,16,40, -1,-1} +}; +menu_t macrosmenu= +{ + ¯ositems[0], + MAC_MACRO0, + MAC_MAX, + 0x7f +}; + +void MacroConfig(void) +{ + short key; + short field; + int i; + char string[40]; + + SaveScreen(); + DrawPup(¯os); + + textcolor(15); + textbackground(1); + for (i = 0;i < MAC_MAX; i++) + { + Clear(¯ositems[i]); + Pos(¯ositems[i]); + cprintf("%s",&chatmacros[i][0]); + } + gotoxy(1,25); + + while(1) + { + SetupMenu(¯osmenu); + field = GetMenuInput(); + key = menukey; + + switch(key) + { + case KEY_ENTER: + strcpy(string,chatmacros[field]); + key = EditLine(¯ositems[field],string,40); + if (key == KEY_ENTER) + strcpy(chatmacros[field],string); + textbackground(1); + textcolor(15); + Clear(¯ositems[field]); + Pos(¯ositems[field]); + cprintf("%s",chatmacros[field]); + gotoxy(1,25); + continue; + + case KEY_ESC: + RestoreScreen(); + return; + } + } +}; diff --git a/MACROS.OBJ b/MACROS.OBJ new file mode 100644 index 0000000..81156bf Binary files /dev/null and b/MACROS.OBJ differ diff --git a/MAIN.BAK b/MAIN.BAK new file mode 100644 index 0000000..6efb452 --- /dev/null +++ b/MAIN.BAK @@ -0,0 +1,581 @@ +// +// MAIN.C - Handles StartUp and the MainMenu +// +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "default.h" +#include "scguess.h" + +int cdrom; // cmd-line param flag + +char keydesc[256][10]; +unsigned char ASCIINames[] = // Unshifted ASCII for scan codes +{ +// 0 1 2 3 4 5 6 7 8 9 A B C D E F + 0 ,0 ,'1','2','3','4','5','6','7','8','9','0','-','=',0 ,0 , // 0 + 'Q','W','E','R','T','Y','U','I','O','P','[',']',0 ,0 ,'A','S', // 1 + 'D','F','G','H','J','K','L',';',0, '`', 0 ,92 ,'Z','X','C','V', // 2 + 'B','N','M',',','.','/',0 ,'*',0 , 0, 0 ,0 ,0 ,0 ,0 ,0 , // 3 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,'7','8','9','-','4','5','6','+','1', // 4 + '2','3','0',0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7 +}; + +char cards[M_LAST][20] = { + S_NONE, + S_PCSP, + "Adlib", + "Sound Blaster", + "Pro Audio Spectrum", + "Gravis Ultra Sound", + "WaveBlaster", + "Roland Sound Canvas", + "General Midi", + "Sound Blaster AWE32" +}; + +char controls [C_LAST][20] = { + S_CON1, + S_CON2, + S_CON3 +}; + +CONTS curk; + +net_t netinfo; +net_t info; // in case ESC is pressed + +serial_t modeminfo; +serial_t minfo; // in case ESC is pressed + +serial_t serialinfo; +serial_t sinfo; // in case ESC is pressed + +DMXINFO lastc; +DMXINFO newc; + +void * swindow; +BOOL savemusic = FALSE; +BOOL savefx = FALSE; + +#define KEYBOARDINT 0x9 + +int mousepresent = 0; + +enum +{ + MAIN_CMUSIC, + MAIN_CSFX, + MAIN_TYPE, + MAIN_CONFIG, + MAIN_SAVE, + + MAIN_NET, + MAIN_NETSG, + MAIN_MAX +}; + +item_t mainitems[]= +{ + {MAIN_CMUSIC, 21,12,39, -1,-1}, + {MAIN_CSFX, 21,13,39, -1,-1}, + {MAIN_TYPE, 21,14,39, -1,-1}, + {MAIN_CONFIG, 21,15,39, -1,-1}, + {MAIN_SAVE, 21,16,39, -1,-1}, + {MAIN_NET, 21,18,39, -1,-1}, + {MAIN_NETSG, 21,19,39, -1,-1} +}; + +menu_t mainmenu = +{ + &mainitems[0], + MAIN_CMUSIC, + MAIN_MAX, + 0x7f +}; + +// +// Draw a PUP and get a keypress +// +void ErrorWindow(pup_t far *pup) +{ + SaveScreen(); + DrawPup(pup); + while (kbhit()) + getch(); + while (getch() != 0x1b); + RestoreScreen(); + while (kbhit()) + getch(); + sound(3000); + delay(10); + nosound(); +} + +// +// Make ASCII names/key value lookup +// +void MakeKeyLookup (void) +{ + int loop; + + memset ( keydesc, 0, sizeof ( keydesc ) ); + + for ( loop = 0; loop < 128; loop++ ) + keydesc [ loop ] [ 0 ] = ASCIINames[ loop ]; + + strcpy ( keydesc [ SC_CAPS_LOCK ], "CAPSLOCK" ); + strcpy ( keydesc [ SC_BACKSPACE ], "BACKSP" ); + strcpy ( keydesc [ SC_ENTER ], "ENTER" ); + strcpy ( keydesc [ SC_TAB ], "TAB" ); + strcpy ( keydesc [ SC_RIGHT_SHIFT ], "RSHIFT" ); + strcpy ( keydesc [ SC_SPACE ], "SPACE" ); + strcpy ( keydesc [ SC_CTRL ], "CTRL" ); + strcpy ( keydesc [ SC_ALT ], "ALT" ); + strcpy ( keydesc [ SC_INSERT ], "INS" ); + strcpy ( keydesc [ SC_DELETE ], "DEL" ); + strcpy ( keydesc [ SC_PAGEUP ], "PGUP" ); + strcpy ( keydesc [ SC_PAGEDN ], "PGDN" ); + strcpy ( keydesc [ SC_HOME ], "HOME" ); + strcpy ( keydesc [ SC_END ], "END" ); + strcpy ( keydesc [ SC_UP ], "UP" ); + strcpy ( keydesc [ SC_DOWN ], "DOWN" ); + strcpy ( keydesc [ SC_LEFT ], "LEFT" ); + strcpy ( keydesc [ SC_RIGHT ], "RIGHT" ); +} + +// +// Set funky blue color +// +void SetColor (void) +{ + return; // DON'T DO ANYTHING UNTIL I CAN SET IT BACK! +#if 0 +_asm + { + push ax + push dx + + mov dx, 0x3C8 + mov ax, 1 + out dx, al + inc dx + + mov ax, 1 + out dx, al + + mov ax, 5 + out dx, al + + mov ax, 16 + out dx, al + + pop dx + pop ax + } +#endif +} + +// +// Draw current config info in window +// MAKE SURE NO WINDOWS ARE ON TOP! +// +void DrawCurrentConfig(void) +{ + RestoreScreen(); + textcolor(8); + textbackground(7); + gotoxy(43,6); + cprintf(" "); + gotoxy(43,6); + cprintf("%s",controls [ newc.control ]); + + gotoxy(43,7); + cprintf(" "); + gotoxy(43,7); + cprintf("%s",cards [ newc.m.card ]); + + gotoxy(43,8); + cprintf(" "); + gotoxy(43,8); + cprintf("%s",cards [ newc.d.card ]); + gotoxy(1,25); + SaveScreen(); +} + +// +// Quitting - save changes? +// +enum { SAVEYES, SAVENO, SAVEMAX }; +item_t quitwinitems[]= +{ + {SAVEYES, 35,11,7, -1,-1}, + {SAVENO, 35,12,7, -1,-1} +}; +menu_t quitwinmenu= +{ + &quitwinitems[0], + SAVEYES, + SAVEMAX, + 0x7f +}; + +int QuitAndSave(void) +{ + short key; + short field; + + SaveScreen(); + DrawPup(&quitwin); + + quitwinmenu.startitem = SAVEYES; + + while(1) + { + SetupMenu(&quitwinmenu); + field = GetMenuInput(); + key = menukey; + + switch(key) + { + case KEY_ESC: + RestoreScreen(); + return -1; + + case KEY_ENTER: + if (field == SAVEYES) + M_SaveDefaults(); + RestoreScreen(); + return 0; + } + } +} + +// +// Start up and initialize SETUP +// +void StartUp(void) +{ + int addr; + int irq; + int dma; + int midi; + union REGS r; + + r.x.ax = 0; + int86(0x33,&r,&r); + if (r.x.ax == 0xffff) + mousepresent = 1; + else + mousepresent = 0; + + r.x.ax = 2; + int86(0x33, &r, &r ); + + SetColor(); + + memset ( &newc, 0, sizeof ( DMXINFO ) ); + memset ( &lastc, 0, sizeof ( DMXINFO ) ); + + MakeKeyLookup(); + midi = addr = irq = dma = 0; // WILL BE INITED LATER + + curk.up = SC_UP; + curk.down = SC_DOWN; + curk.left = SC_LEFT; + curk.right = SC_RIGHT; + curk.fire = SC_CTRL; + curk.use = SC_SPACE; + curk.key1 = SC_ALT; + curk.key2 = SC_RIGHT_SHIFT; + curk.key3 = SC_COMMA; + curk.key4 = SC_PERIOD; + curk.mouse[0] = 0; + curk.mouse[1] = 1; + curk.mouse[2] = 2; + curk.joy[0] = 0; + curk.joy[1] = 1; + curk.joy[2] = 2; + curk.joy[3] = 3; + + newc.m.card = M_NONE; + newc.m.port = -1; + newc.m.midiport = -1; + newc.m.irq = -1; + newc.m.dma = -1; + newc.d = newc.m; + newc.numdig = 2; + + DrawPup(&title); + DrawPup(&show); + DrawPup(&idmain2); + SaveScreen(); + + if ( !M_LoadDefaults() ) + { + // + // Auto-detect ONLY first time through + // + if ( SmellsLikeGUS ( &addr, &irq, &dma ) ) + { + if (newc.m.irq > 7) + ErrorWindow(&gusirqer); + + newc.m.card = M_GUS; + newc.m.port = addr; + newc.m.midiport = -1; + newc.m.irq = irq; + newc.m.dma = dma; + newc.d = newc.m; + //fprintf(stderr, "GUS: addr=%x, irq=%d, dma=%d\n", addr, irq, dma); + } + else if ( SmellsLikeSB ( &addr, &irq, &dma, &midi ) ) + { + newc.m.card = M_SB; + newc.m.port = addr; + newc.m.midiport = midi; + newc.m.irq = irq; + newc.m.dma = dma; + newc.d = newc.m; + } + + ChooseController(); + SetupMusic(); + SetupFX(); + + lastc.control = newc.control; + lastc.numdig = newc.numdig; + lastc.m = newc.m; + lastc.d = newc.d; + mainmenu.startitem = MAIN_SAVE; + } + else + { + lastc.control = newc.control; + lastc.numdig = newc.numdig; + lastc.m = newc.m; + lastc.d = newc.d; + + if (newc.m.irq > 7) + ErrorWindow(&gusirqer); + + mainmenu.startitem = MAIN_CMUSIC; + } + + DrawCurrentConfig(); + + // + // GLOBALS + // + respawn = nomonsters = 0; + + MainMenu(); + clrscr(); +} + +// +// Main menu +// +void MainMenu (void) +{ + int i; + int field; + short key; + char *args[10]; + char string[10][10]; + int argcount; + + // ASSUME THAT THE MAIN MENU HAS BEEN DRAWN IN STARTUP + + while(1) + { + SetupMenu(&mainmenu); + field = GetMenuInput(); + key = menukey; + + if ( key == KEY_ESC ) + { + if (QuitAndSave() < 0) + continue; + break; + } + + // + // WARP + // + if (key == KEY_F1) + { + int level; + int i; + + level = WarpTime(); + if (!level) + continue; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + if (nomonsters) + args[argcount++] = "-nomonsters"; + + if (respawn) + args[argcount++] = "-respawn"; + + args[argcount++] = "-warp"; + #ifdef DOOM2 + sprintf(string[argcount],"%d",level); + args[argcount] = string[argcount]; + #else + sprintf(string[argcount],"%d",level>>8); + args[argcount] = string[argcount]; + argcount++; + sprintf(string[argcount],"%d",level&0x0f); + args[argcount] = string[argcount]; + #endif + argcount++; + + if (cdrom) + args[argcount++] = "-cdrom"; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + if (!access("doom2.exe",0)) + { + args[0] = "doom2.exe "; + execv("doom2.exe",args); + } + else + if (!access("heretic.exe",0)) + { + args[0] = "heretic.exe "; + execv("heretic.exe",args); + } + else + if (!access("strife.exe",0)) + { + args[0] = "strife.exe "; + execv("strife.exe",args); + } + else + { + args[0] = "doom.exe "; + execv("doom.exe",args); + } + + printf("Problem EXECing "EXENAME" for netplay. Need to be in same directory!"); + + // + // ERROR EXECing! + // + exit(0); + } + + if ( key != KEY_ENTER && key != KEY_F10 ) continue; + + switch ( field ) + { + case MAIN_CMUSIC: + SetupMusic(); + break; + + case MAIN_CSFX: + SetupFX(); + break; + + case MAIN_TYPE: + ChooseController(); + break; + + case MAIN_CONFIG: + ConfigControl(); + break; + + case MAIN_SAVE: + + M_SaveDefaults(); + + textbackground(0); + textcolor(7); + clrscr(); + + argcount = 1; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + if (cdrom) + args[argcount++] = "-cdrom"; + + if (!access("heretic.exe",0)) + { + args[0] = "heretic.exe"; + args[argcount] = NULL; + execv("heretic.exe",args); + } + else + if (!access("strife.exe",0)) + { + args[0] = "strife.exe "; + execv("strife.exe",args); + } + else + if (!access("doom2.exe",0)) + { + args[0] = "doom2.exe"; + args[argcount] = NULL; + execv("doom2.exe",args); + } + else + { + args[0] = "doom.exe "; + args[argcount] = NULL; + execv("doom.exe",args); + } + + printf("Problem EXECing "EXENAME"! Probably not in same directory!\n"); + exit(0); + + goto func_exit; + + case MAIN_NET: + ChooseNetplay(); + break; + + case MAIN_NETSG: + #ifndef STRIFE + ChooseNetrestore(); + #endif + break; + + default: + break; + } + } + + func_exit: + + textbackground(0); + textcolor(7); + clrscr(); + + return; +} diff --git a/MAIN.C b/MAIN.C new file mode 100644 index 0000000..6efb452 --- /dev/null +++ b/MAIN.C @@ -0,0 +1,581 @@ +// +// MAIN.C - Handles StartUp and the MainMenu +// +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "default.h" +#include "scguess.h" + +int cdrom; // cmd-line param flag + +char keydesc[256][10]; +unsigned char ASCIINames[] = // Unshifted ASCII for scan codes +{ +// 0 1 2 3 4 5 6 7 8 9 A B C D E F + 0 ,0 ,'1','2','3','4','5','6','7','8','9','0','-','=',0 ,0 , // 0 + 'Q','W','E','R','T','Y','U','I','O','P','[',']',0 ,0 ,'A','S', // 1 + 'D','F','G','H','J','K','L',';',0, '`', 0 ,92 ,'Z','X','C','V', // 2 + 'B','N','M',',','.','/',0 ,'*',0 , 0, 0 ,0 ,0 ,0 ,0 ,0 , // 3 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,'7','8','9','-','4','5','6','+','1', // 4 + '2','3','0',0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7 +}; + +char cards[M_LAST][20] = { + S_NONE, + S_PCSP, + "Adlib", + "Sound Blaster", + "Pro Audio Spectrum", + "Gravis Ultra Sound", + "WaveBlaster", + "Roland Sound Canvas", + "General Midi", + "Sound Blaster AWE32" +}; + +char controls [C_LAST][20] = { + S_CON1, + S_CON2, + S_CON3 +}; + +CONTS curk; + +net_t netinfo; +net_t info; // in case ESC is pressed + +serial_t modeminfo; +serial_t minfo; // in case ESC is pressed + +serial_t serialinfo; +serial_t sinfo; // in case ESC is pressed + +DMXINFO lastc; +DMXINFO newc; + +void * swindow; +BOOL savemusic = FALSE; +BOOL savefx = FALSE; + +#define KEYBOARDINT 0x9 + +int mousepresent = 0; + +enum +{ + MAIN_CMUSIC, + MAIN_CSFX, + MAIN_TYPE, + MAIN_CONFIG, + MAIN_SAVE, + + MAIN_NET, + MAIN_NETSG, + MAIN_MAX +}; + +item_t mainitems[]= +{ + {MAIN_CMUSIC, 21,12,39, -1,-1}, + {MAIN_CSFX, 21,13,39, -1,-1}, + {MAIN_TYPE, 21,14,39, -1,-1}, + {MAIN_CONFIG, 21,15,39, -1,-1}, + {MAIN_SAVE, 21,16,39, -1,-1}, + {MAIN_NET, 21,18,39, -1,-1}, + {MAIN_NETSG, 21,19,39, -1,-1} +}; + +menu_t mainmenu = +{ + &mainitems[0], + MAIN_CMUSIC, + MAIN_MAX, + 0x7f +}; + +// +// Draw a PUP and get a keypress +// +void ErrorWindow(pup_t far *pup) +{ + SaveScreen(); + DrawPup(pup); + while (kbhit()) + getch(); + while (getch() != 0x1b); + RestoreScreen(); + while (kbhit()) + getch(); + sound(3000); + delay(10); + nosound(); +} + +// +// Make ASCII names/key value lookup +// +void MakeKeyLookup (void) +{ + int loop; + + memset ( keydesc, 0, sizeof ( keydesc ) ); + + for ( loop = 0; loop < 128; loop++ ) + keydesc [ loop ] [ 0 ] = ASCIINames[ loop ]; + + strcpy ( keydesc [ SC_CAPS_LOCK ], "CAPSLOCK" ); + strcpy ( keydesc [ SC_BACKSPACE ], "BACKSP" ); + strcpy ( keydesc [ SC_ENTER ], "ENTER" ); + strcpy ( keydesc [ SC_TAB ], "TAB" ); + strcpy ( keydesc [ SC_RIGHT_SHIFT ], "RSHIFT" ); + strcpy ( keydesc [ SC_SPACE ], "SPACE" ); + strcpy ( keydesc [ SC_CTRL ], "CTRL" ); + strcpy ( keydesc [ SC_ALT ], "ALT" ); + strcpy ( keydesc [ SC_INSERT ], "INS" ); + strcpy ( keydesc [ SC_DELETE ], "DEL" ); + strcpy ( keydesc [ SC_PAGEUP ], "PGUP" ); + strcpy ( keydesc [ SC_PAGEDN ], "PGDN" ); + strcpy ( keydesc [ SC_HOME ], "HOME" ); + strcpy ( keydesc [ SC_END ], "END" ); + strcpy ( keydesc [ SC_UP ], "UP" ); + strcpy ( keydesc [ SC_DOWN ], "DOWN" ); + strcpy ( keydesc [ SC_LEFT ], "LEFT" ); + strcpy ( keydesc [ SC_RIGHT ], "RIGHT" ); +} + +// +// Set funky blue color +// +void SetColor (void) +{ + return; // DON'T DO ANYTHING UNTIL I CAN SET IT BACK! +#if 0 +_asm + { + push ax + push dx + + mov dx, 0x3C8 + mov ax, 1 + out dx, al + inc dx + + mov ax, 1 + out dx, al + + mov ax, 5 + out dx, al + + mov ax, 16 + out dx, al + + pop dx + pop ax + } +#endif +} + +// +// Draw current config info in window +// MAKE SURE NO WINDOWS ARE ON TOP! +// +void DrawCurrentConfig(void) +{ + RestoreScreen(); + textcolor(8); + textbackground(7); + gotoxy(43,6); + cprintf(" "); + gotoxy(43,6); + cprintf("%s",controls [ newc.control ]); + + gotoxy(43,7); + cprintf(" "); + gotoxy(43,7); + cprintf("%s",cards [ newc.m.card ]); + + gotoxy(43,8); + cprintf(" "); + gotoxy(43,8); + cprintf("%s",cards [ newc.d.card ]); + gotoxy(1,25); + SaveScreen(); +} + +// +// Quitting - save changes? +// +enum { SAVEYES, SAVENO, SAVEMAX }; +item_t quitwinitems[]= +{ + {SAVEYES, 35,11,7, -1,-1}, + {SAVENO, 35,12,7, -1,-1} +}; +menu_t quitwinmenu= +{ + &quitwinitems[0], + SAVEYES, + SAVEMAX, + 0x7f +}; + +int QuitAndSave(void) +{ + short key; + short field; + + SaveScreen(); + DrawPup(&quitwin); + + quitwinmenu.startitem = SAVEYES; + + while(1) + { + SetupMenu(&quitwinmenu); + field = GetMenuInput(); + key = menukey; + + switch(key) + { + case KEY_ESC: + RestoreScreen(); + return -1; + + case KEY_ENTER: + if (field == SAVEYES) + M_SaveDefaults(); + RestoreScreen(); + return 0; + } + } +} + +// +// Start up and initialize SETUP +// +void StartUp(void) +{ + int addr; + int irq; + int dma; + int midi; + union REGS r; + + r.x.ax = 0; + int86(0x33,&r,&r); + if (r.x.ax == 0xffff) + mousepresent = 1; + else + mousepresent = 0; + + r.x.ax = 2; + int86(0x33, &r, &r ); + + SetColor(); + + memset ( &newc, 0, sizeof ( DMXINFO ) ); + memset ( &lastc, 0, sizeof ( DMXINFO ) ); + + MakeKeyLookup(); + midi = addr = irq = dma = 0; // WILL BE INITED LATER + + curk.up = SC_UP; + curk.down = SC_DOWN; + curk.left = SC_LEFT; + curk.right = SC_RIGHT; + curk.fire = SC_CTRL; + curk.use = SC_SPACE; + curk.key1 = SC_ALT; + curk.key2 = SC_RIGHT_SHIFT; + curk.key3 = SC_COMMA; + curk.key4 = SC_PERIOD; + curk.mouse[0] = 0; + curk.mouse[1] = 1; + curk.mouse[2] = 2; + curk.joy[0] = 0; + curk.joy[1] = 1; + curk.joy[2] = 2; + curk.joy[3] = 3; + + newc.m.card = M_NONE; + newc.m.port = -1; + newc.m.midiport = -1; + newc.m.irq = -1; + newc.m.dma = -1; + newc.d = newc.m; + newc.numdig = 2; + + DrawPup(&title); + DrawPup(&show); + DrawPup(&idmain2); + SaveScreen(); + + if ( !M_LoadDefaults() ) + { + // + // Auto-detect ONLY first time through + // + if ( SmellsLikeGUS ( &addr, &irq, &dma ) ) + { + if (newc.m.irq > 7) + ErrorWindow(&gusirqer); + + newc.m.card = M_GUS; + newc.m.port = addr; + newc.m.midiport = -1; + newc.m.irq = irq; + newc.m.dma = dma; + newc.d = newc.m; + //fprintf(stderr, "GUS: addr=%x, irq=%d, dma=%d\n", addr, irq, dma); + } + else if ( SmellsLikeSB ( &addr, &irq, &dma, &midi ) ) + { + newc.m.card = M_SB; + newc.m.port = addr; + newc.m.midiport = midi; + newc.m.irq = irq; + newc.m.dma = dma; + newc.d = newc.m; + } + + ChooseController(); + SetupMusic(); + SetupFX(); + + lastc.control = newc.control; + lastc.numdig = newc.numdig; + lastc.m = newc.m; + lastc.d = newc.d; + mainmenu.startitem = MAIN_SAVE; + } + else + { + lastc.control = newc.control; + lastc.numdig = newc.numdig; + lastc.m = newc.m; + lastc.d = newc.d; + + if (newc.m.irq > 7) + ErrorWindow(&gusirqer); + + mainmenu.startitem = MAIN_CMUSIC; + } + + DrawCurrentConfig(); + + // + // GLOBALS + // + respawn = nomonsters = 0; + + MainMenu(); + clrscr(); +} + +// +// Main menu +// +void MainMenu (void) +{ + int i; + int field; + short key; + char *args[10]; + char string[10][10]; + int argcount; + + // ASSUME THAT THE MAIN MENU HAS BEEN DRAWN IN STARTUP + + while(1) + { + SetupMenu(&mainmenu); + field = GetMenuInput(); + key = menukey; + + if ( key == KEY_ESC ) + { + if (QuitAndSave() < 0) + continue; + break; + } + + // + // WARP + // + if (key == KEY_F1) + { + int level; + int i; + + level = WarpTime(); + if (!level) + continue; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + if (nomonsters) + args[argcount++] = "-nomonsters"; + + if (respawn) + args[argcount++] = "-respawn"; + + args[argcount++] = "-warp"; + #ifdef DOOM2 + sprintf(string[argcount],"%d",level); + args[argcount] = string[argcount]; + #else + sprintf(string[argcount],"%d",level>>8); + args[argcount] = string[argcount]; + argcount++; + sprintf(string[argcount],"%d",level&0x0f); + args[argcount] = string[argcount]; + #endif + argcount++; + + if (cdrom) + args[argcount++] = "-cdrom"; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + if (!access("doom2.exe",0)) + { + args[0] = "doom2.exe "; + execv("doom2.exe",args); + } + else + if (!access("heretic.exe",0)) + { + args[0] = "heretic.exe "; + execv("heretic.exe",args); + } + else + if (!access("strife.exe",0)) + { + args[0] = "strife.exe "; + execv("strife.exe",args); + } + else + { + args[0] = "doom.exe "; + execv("doom.exe",args); + } + + printf("Problem EXECing "EXENAME" for netplay. Need to be in same directory!"); + + // + // ERROR EXECing! + // + exit(0); + } + + if ( key != KEY_ENTER && key != KEY_F10 ) continue; + + switch ( field ) + { + case MAIN_CMUSIC: + SetupMusic(); + break; + + case MAIN_CSFX: + SetupFX(); + break; + + case MAIN_TYPE: + ChooseController(); + break; + + case MAIN_CONFIG: + ConfigControl(); + break; + + case MAIN_SAVE: + + M_SaveDefaults(); + + textbackground(0); + textcolor(7); + clrscr(); + + argcount = 1; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + if (cdrom) + args[argcount++] = "-cdrom"; + + if (!access("heretic.exe",0)) + { + args[0] = "heretic.exe"; + args[argcount] = NULL; + execv("heretic.exe",args); + } + else + if (!access("strife.exe",0)) + { + args[0] = "strife.exe "; + execv("strife.exe",args); + } + else + if (!access("doom2.exe",0)) + { + args[0] = "doom2.exe"; + args[argcount] = NULL; + execv("doom2.exe",args); + } + else + { + args[0] = "doom.exe "; + args[argcount] = NULL; + execv("doom.exe",args); + } + + printf("Problem EXECing "EXENAME"! Probably not in same directory!\n"); + exit(0); + + goto func_exit; + + case MAIN_NET: + ChooseNetplay(); + break; + + case MAIN_NETSG: + #ifndef STRIFE + ChooseNetrestore(); + #endif + break; + + default: + break; + } + } + + func_exit: + + textbackground(0); + textcolor(7); + clrscr(); + + return; +} diff --git a/MAIN.H b/MAIN.H new file mode 100644 index 0000000..c2d4980 --- /dev/null +++ b/MAIN.H @@ -0,0 +1,281 @@ +// +// MAIN.H +// +#include "setup.h" +#include "menu.h" +#include "keys.h" + +// In the Project Manager, change the DEFINES for the EXE +// for the different versions of SETUP. Valid #defines are: +// DOOM // define if for DOOM +// DOOM2 // define if for DOOM II +// HERETIC // define if for HERETIC +// FRENCH // define if FRENCH VERSION (any game) + +#ifdef DOOM2 +#define EXENAME "DOOM2.EXE" +#define DEFAULTNAME "DEFAULT.CFG" +#define DEFAULTPATH "C:\\DOOMDATA" +#define SAVENAME "DOOMSAV%d.DSG" +#endif + +#ifdef DOOM +#define EXENAME "DOOM.EXE" +#define DEFAULTNAME "DEFAULT.CFG" +#define DEFAULTPATH "C:\\DOOMDATA" +#define SAVENAME "DOOMSAV%d.DSG" +#endif + +#ifdef HERETIC +#define EXENAME "HERETIC.EXE" +#define DEFAULTNAME "HERETIC.CFG" +#define DEFAULTPATH "C:\\HERETIC.CD" +#define SAVENAME "HTICSAV%d.HSG" +#endif + +#ifdef STRIFE +#define EXENAME "STRIFE.EXE" +#define DEFAULTNAME "STRIFE.CFG" +#define DEFAULTPATH "C:\\STRIFE.CD" +#define SAVENAME "STRFSAV%d.DSG" +#endif + +#ifdef FRENCH + +#define S_NONE "AUCUNE" +#define S_PCSP "Haut-parleur PC" +#define S_CON1 "Clavier seul" +#define S_CON2 "Clavier + Souris" +#define S_CON3 "Clavier + Joystick" + +#else + +#define S_NONE "None" +#define S_PCSP "PC Speaker" +#define S_CON1 "Keyboard only" +#define S_CON2 "Keyboard + Mouse" +#define S_CON3 "Keyboard + Joystick" + +#endif + +#define MAXARGS 12 + +typedef enum { FALSE, TRUE } BOOL; + +typedef enum +{ + M_NONE, + M_PC, + M_ADLIB, + M_SB, + M_PAS, + M_GUS, + M_WAVE, + M_CANVAS, + M_GMIDI, + M_SBAWE32, + M_LAST +}SCARD; + +typedef enum +{ + C_KEY, + C_MOUSE, + C_JOYSTICK, + C_LAST +}CONTROL; + +typedef struct +{ + SCARD card; + short port; + short midiport; + short irq; + short dma; +} DMXCARD; + +typedef struct +{ + CONTROL control; + DMXCARD m; + DMXCARD d; + short numdig; +} DMXINFO; + +typedef struct +{ + int numberOfPlayers; + int skillLevel; + int deathMatch; + unsigned networkSocket; + int episode; +} net_t; + +typedef struct +{ + int skillLevel; + int deathMatch; + int episode; + int comport; + int comtype; // 0 = connected,1 = answer,2 = call + char phonenum[16]; +} serial_t; + +typedef struct +{ + int up; + int down; + int left; + int right; + int fire; + int use; // ID = USE CYGNUS = USE SPECIAL WEAPON + int key1; // ID = STRAFE ON CYGNUS = CHANGE SPECIAL WEAPON + int key2; // ID = SPEED ON CYGNUS = MEGA BOMB HOT KEY + int key3; // ID = STRAFE LEFT + int key4; // ID = STRAFE RIGHT +#ifdef HERETIC + int lookdown; + int lookcenter; + int lookup; + int flydown; + int flycenter; + int flyup; + int invleft; + int invright; +#endif +#ifdef STRIFE + int lookdown; + int lookup; + int invleft; + int invright; + int invhome; + int invend; + int invuse; + int invdrop; + int invquery; + int invpop; + int healthuse; + int jump; +#endif + int mouse[3]; + int joy[4]; +} CONTS; + +typedef enum +{ + ID_FIRE, // def button 1 + ID_STRAFE, // def button 3 + ID_FORWARD, // def button 2 + ID_USE // def button 4 joystick only +}IDCONTS; + +extern int usemouse; +extern int usejoystick; +extern int comport; + +typedef struct +{ + char name[64]; + char init[64]; + char hangup[64]; + char baud[8]; +} modem_t; + +#define MAXMODEMS 200 + +typedef struct +{ + char name[32]; + char number[16]; +} phonelist_t; + +#define MAXPHNLIST 40 + +extern char keydesc[256][10]; +extern int cdrom; +extern int respawn; +extern int nomonsters; +extern int mousepresent; +extern DMXINFO lastc; +extern DMXINFO newc; +extern BOOL savemusic; +extern BOOL savefx; +extern CONTS curk; + +// +// Network macros +// +extern char chatmacros[10][40]; + +extern net_t netinfo; +extern net_t info; // in case ESC is pressed + +extern serial_t modeminfo; +extern serial_t minfo; // in case ESC is pressed + +extern serial_t serialinfo; +extern serial_t sinfo; // in case ESC is pressed + +void ErrorWindow(pup_t far *pup); +void StartUp(void); +void MainMenu (void); +void DrawCurrentConfig(void); +int QuitAndSave(void); + +// +// Functions in other modules +// + +// MUSIC.C +int SetupMusic(void); +int ChooseSbPort (DMXCARD * card); +int ChooseMidiPort (DMXCARD * card); + +// WARP.C +extern int respawn; +extern int nomonsters; +extern int deathmatch2; +unsigned WarpTime(void); + +// SFX.C +int SetupFX(void); + +// CONTROL.C +int ChooseController(void); + +// CONFIG.C +void ConfigControl (void); +void Pos(item_t *item); +void Clear(item_t *item); + +// NETPLAY.C +void ChooseNetplay(void); +void AttriBar(int x,int y,int length, char attr); + +// MACROS.C +void MacroConfig(void); +int EditLine(item_t *item,char *string,int maxlen); + +// MODEM.C +int ModemConfig(void); +int ChooseOpponentInList(void); +extern char chosenPhoneNum[16]; + +// SERIAL.C +int SerialConfig(void); + +// NET.C +int NetworkConfig(void); + +// NETREST.C +extern char savenames[6][24]; +extern int saveslot; +int RestoreNetwork(void); +void ChooseNetrestore(void); + +// MODREST.C +int RestoreModem(void); + +// SERREST.C +int RestoreSerial(void); + diff --git a/MAIN.OBJ b/MAIN.OBJ new file mode 100644 index 0000000..ff061a5 Binary files /dev/null and b/MAIN.OBJ differ diff --git a/MENU.BAK b/MENU.BAK new file mode 100644 index 0000000..e517c73 --- /dev/null +++ b/MENU.BAK @@ -0,0 +1,173 @@ +#include +#include +#include +#include + +#include "main.h" + +item_t *current; +menu_t *currentmenu; +int curitem; // current item # +char inv_attrib; // inversion attribute +char buffer[160]; // save the entire screen line! +short menukey; // globally set after GetMenuInput() + +// +// Make a sound! +// +void Sound(int freq, int dly) +{ + sound(freq); + delay(dly); + nosound(); +} + +// +// Draw a dot if "value" is > 0 at item->x - 3 +// +void SetMark(item_t *item,int value) +{ + char far *screen; + + screen = MK_FP(0xb800,item->y*160 + (item->x-3)*2); + *screen = ' '; + if (value) + *screen = 7; +} + +// +// Invert the menu item +// +void Invert(item_t *item) +{ + char far *screen; + int i; + + movedata(0xb800,item->y*160,FP_SEG(&buffer),FP_OFF(&buffer),160); + screen = MK_FP(0xb800,item->y*160 + item->x*2); + + for (i = 0; i < item->w; i++) + { + *(screen+1) = inv_attrib; + screen += 2; + } +} + +// +// Restore the screen line (uninvert) +// +void UnInvert(item_t *item) +{ + movedata(FP_SEG(&buffer),FP_OFF(&buffer),0xb800,item->y*160,160); +} + +// +// Set "current" to first menu item +// +void SetupMenu(menu_t *menu) +{ + currentmenu = menu; + current = menu->items; + current += menu->startitem; + curitem = menu->startitem; + + inv_attrib = menu->invert; + Invert(current); +} + +// +// Get menu input for current menu +// Exit: -1 = ESC was pressed, xx = item id +// +int GetMenuInput(void) +{ + char c; + while(1) + { + c = getch(); +// gotoxy(1,2); +// printf("char:%x ",c); + switch(c) + { + case 0x48: // UP + if (!curitem) + break; + UnInvert(current); + if (curitem->up) + { + curitem = curitem->up; + current = currentmenu->items + curitem; + } + else + { + curitem--; + current--; + } + Invert(current); + Sound(50,10); + break; + + case 0x50: // DOWN + if (curitem == currentmenu->maxitems - 1) + break; + UnInvert(current); + if (curitem->down) + { + curitem = curitem->down; + current = currentmenu->items + curitem; + } + else + { + curitem++; + current++; + } + Invert(current); + Sound(50,10); + break; + + case 0x4b: // LEFT + if (current->left != -1) + { + UnInvert(current); + curitem = current->left; + current = currentmenu->items+curitem; + Invert(current); + Sound(50,10); + } + break; + + case 0x4d: // RIGHT + if (current->right != -1) + { + UnInvert(current); + curitem = current->right; + current = currentmenu->items+curitem; + Invert(current); + Sound(50,10); + } + break; + + case 0x44: // F10 + case 0x3b: // F1 + case 0x3c: // F2 + UnInvert(current); + menukey = c; + currentmenu->startitem = curitem; + Sound(50,10); + return current->id; + + case 0x0d: // ENTER + UnInvert(current); + menukey = c; + currentmenu->startitem = curitem; + Sound(2000,10); + return current->id; + + case 0x1b: // ESC + UnInvert(current); + menukey = c; + Sound(3000,10); + return -1; + } + } +} diff --git a/MENU.C b/MENU.C new file mode 100644 index 0000000..ad84fdb --- /dev/null +++ b/MENU.C @@ -0,0 +1,173 @@ +#include +#include +#include +#include + +#include "main.h" + +item_t *current; +menu_t *currentmenu; +int curitem; // current item # +char inv_attrib; // inversion attribute +char buffer[160]; // save the entire screen line! +short menukey; // globally set after GetMenuInput() + +// +// Make a sound! +// +void Sound(int freq, int dly) +{ + sound(freq); + delay(dly); + nosound(); +} + +// +// Draw a dot if "value" is > 0 at item->x - 3 +// +void SetMark(item_t *item,int value) +{ + char far *screen; + + screen = MK_FP(0xb800,item->y*160 + (item->x-3)*2); + *screen = ' '; + if (value) + *screen = 7; +} + +// +// Invert the menu item +// +void Invert(item_t *item) +{ + char far *screen; + int i; + + movedata(0xb800,item->y*160,FP_SEG(&buffer),FP_OFF(&buffer),160); + screen = MK_FP(0xb800,item->y*160 + item->x*2); + + for (i = 0; i < item->w; i++) + { + *(screen+1) = inv_attrib; + screen += 2; + } +} + +// +// Restore the screen line (uninvert) +// +void UnInvert(item_t *item) +{ + movedata(FP_SEG(&buffer),FP_OFF(&buffer),0xb800,item->y*160,160); +} + +// +// Set "current" to first menu item +// +void SetupMenu(menu_t *menu) +{ + currentmenu = menu; + current = menu->items; + current += menu->startitem; + curitem = menu->startitem; + + inv_attrib = menu->invert; + Invert(current); +} + +// +// Get menu input for current menu +// Exit: -1 = ESC was pressed, xx = item id +// +int GetMenuInput(void) +{ + char c; + while(1) + { + c = getch(); +// gotoxy(1,2); +// printf("char:%x ",c); + switch(c) + { + case 0x48: // UP + if (!curitem) + break; + UnInvert(current); + if (current->up) + { + curitem = current->up; + current = currentmenu->items + curitem; + } + else + { + curitem--; + current--; + } + Invert(current); + Sound(50,10); + break; + + case 0x50: // DOWN + if (curitem == currentmenu->maxitems - 1) + break; + UnInvert(current); + if (current->down) + { + curitem = current->down; + current = currentmenu->items + curitem; + } + else + { + curitem++; + current++; + } + Invert(current); + Sound(50,10); + break; + + case 0x4b: // LEFT + if (current->left != -1) + { + UnInvert(current); + curitem = current->left; + current = currentmenu->items+curitem; + Invert(current); + Sound(50,10); + } + break; + + case 0x4d: // RIGHT + if (current->right != -1) + { + UnInvert(current); + curitem = current->right; + current = currentmenu->items+curitem; + Invert(current); + Sound(50,10); + } + break; + + case 0x44: // F10 + case 0x3b: // F1 + case 0x3c: // F2 + UnInvert(current); + menukey = c; + currentmenu->startitem = curitem; + Sound(50,10); + return current->id; + + case 0x0d: // ENTER + UnInvert(current); + menukey = c; + currentmenu->startitem = curitem; + Sound(2000,10); + return current->id; + + case 0x1b: // ESC + UnInvert(current); + menukey = c; + Sound(3000,10); + return -1; + } + } +} diff --git a/MENU.H b/MENU.H new file mode 100644 index 0000000..ef9f20c --- /dev/null +++ b/MENU.H @@ -0,0 +1,33 @@ +// +// MENU.H +// + +// +// Structures for menu +// +typedef struct item_s +{ + int id; // enum value for id (i.e., MODSKILL1) + int x; // x-coord of item + int y; + int w; // width of item (for inverse bar) + int left; // item # if LEFT ARROW pressed (-1 = none) + int right; // item # if RIGHT ARROW pressed (-1 = none) + int up; // item # if UP ARROW pressed (0 = none) + int down; // item # if DOWN ARROW pressed (0 = none) +} item_t; + +typedef struct +{ + item_t *items; // * to items + int startitem; // item to start on + int maxitems; // # of items in menu + char invert; // attribute for inversion +} menu_t; + +void SetupMenu(menu_t *menu); +int GetMenuInput(void); +void SetMark(item_t *item,int value); +void Sound(int freq, int dly); + +extern short menukey; diff --git a/MENU.OBJ b/MENU.OBJ new file mode 100644 index 0000000..58ade45 Binary files /dev/null and b/MENU.OBJ differ diff --git a/MODEM.BAK b/MODEM.BAK new file mode 100644 index 0000000..e598b31 --- /dev/null +++ b/MODEM.BAK @@ -0,0 +1,837 @@ +// +// Enter modem config info +// +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "default.h" + +// +// Choose who to call for modem play +// + +phonelist_t phonelist[MAXPHNLIST]; +int numInList; +char chosenPhoneNum[16]; + +// +// Parse the MODOOM.NUM file +// +int ParseMODOOMList(void) +{ + int i; + int ok; + FILE *fp; + int rv; + int found; + + + fp = fopen("MODEM.NUM","rt"); + if (fp == NULL) + { + gotoxy(2,25); + printf("There's no MODEM.NUM file! Press a key. "); + sound(2500); + delay(3); + nosound(); + getch(); + return 0; + } + + i = 0; + ok = 1; + do + { + rv = fscanf(fp,"%[^\n]",&phonelist[i].name); + if (!rv || rv == EOF) + ok = 0; + + rv = fscanf(fp,"\n"); + if (rv == EOF) + ok = 0; + + rv = fscanf(fp,"%[^\n]",&phonelist[i].number); + if (!rv || rv == EOF) + ok = 0; + + rv = fscanf(fp,"\n\n"); + if (rv == EOF) + ok = 0; + i++; + + } while(ok); + + numInList = i; + fclose(fp); + + + // + // Quick little shell sort + // + do + { + int j; + found = 0; + + for (i = 0; i < numInList-1; i++) + for (j = i+1; j < numInList; j++) + if (strcmp(phonelist[j].name,phonelist[i].name)<0) + { + phonelist_t temp; + + temp = phonelist[j]; + phonelist[j] = phonelist[i]; + phonelist[i] = temp; + found = 1; + } + } while(found); + + return 1; +} + +// +// Blit the phone numbers to the screen +// +void BlitPhoneNumbers(int start) +{ + int i; + int max; + int y; + int j; + int len; + + max = start + 10; + if (max > numInList) + max = numInList; + + y = 8; + for (i = start; i < max; i++) + { + gotoxy(17,y); + cprintf("%s",phonelist[i].name); + len = 32 - strlen(phonelist[i].name); + for (j = 0; j < len; j++) + cprintf(" "); + + gotoxy(49,y++); + cprintf("%s",phonelist[i].number); + len = 16 - strlen(phonelist[i].number); + for (j = 0; j < len; j++) + cprintf(" "); + } + gotoxy(1,25); +} + +// +// Choose who to call +// +enum {ADDNAME,ADDNUMBER,MAXADD}; +item_t additems[]= { + {ADDNAME, 17,12,28,-1,ADDNUMBER}, + {ADDNUMBER, 46,12,18,ADDNAME,-1}}; +menu_t addmenu = {&additems[0],ADDNAME,MAXADD,0x7f}; + +int ChooseOpponentInList(void) +{ + int i; + int xit; + int blitY; + int hliteY; + int lastHliteY; + int index; + + chosenPhoneNum[0] = 0; + + if (!ParseMODOOMList()) + return 0; + + SaveScreen(); + DrawPup(&phonelst); + textcolor(11); + textbackground(1); + gotoxy(1,25); + + xit = 0; + blitY = 0; + lastHliteY = hliteY = 0; + do + { + int key; + + textcolor(11); + textbackground(1); + BlitPhoneNumbers(blitY); + + AttriBar(16,lastHliteY+7,48,0x1b); + lastHliteY = hliteY; + AttriBar(16,hliteY+7,48,0x7f); + key = _bios_keybrd(_NKEYBRD_READ)>>8; + + switch(key) + { + #ifndef FRENCH + case KEY_F1: // ADD NUMBER TO LIST! + SaveScreen(); + DrawPup(&entrnmbr); + { + int field; + int key; + int which; + int exit; + char tempstring[32]; + + which = numInList; + exit = 0; + while(!exit) + { + SetupMenu(&addmenu); + field = GetMenuInput(); + switch(menukey) + { + case KEY_F10: // DONE! + if (phonelist[which].name[0] || + phonelist[which].number[0]) + { + FILE *fp; + + numInList++; + fp = fopen("MODEM.NUM","w+"); + if (fp == NULL) + { + gotoxy(2,25); + printf("Error creating MODEM.NUM file! Press a key. "); + sound(2500); + delay(3); + nosound(); + getch(); + return 0; + } + for (i = 0;i < numInList; i++) + fprintf(fp,"%s\n%s\n\n", + phonelist[i].name,phonelist[i].number); + fclose(fp); + } + case KEY_ESC: // ABORT! + exit = 1; + break; + case KEY_ENTER: // EDIT NUMBER/NAME + switch(field) + { + case ADDNAME: + strcpy(tempstring,phonelist[which].name); + key = EditLine(&additems[ADDNAME],tempstring,28); + if (key == KEY_ENTER) + strcpy(phonelist[which].name,tempstring); + textcolor(15); + textbackground(1); + Clear(&additems[ADDNAME]); + Pos(&additems[ADDNAME]); + cprintf("%s",phonelist[which].name); + gotoxy(1,25); + break; + case ADDNUMBER: + strcpy(tempstring,phonelist[which].number); + key = EditLine(&additems[ADDNUMBER],tempstring,18); + if (key == KEY_ENTER) + strcpy(phonelist[which].number,tempstring); + textcolor(15); + textbackground(1); + Clear(&additems[ADDNUMBER]); + Pos(&additems[ADDNUMBER]); + cprintf("%s",phonelist[which].number); + gotoxy(1,25); + break; + } + break; + } + } + } + RestoreScreen(); + break; + #endif + + case 0x1c: // ENTER + index = blitY + hliteY; + for (i=0;i= '0' && + phonelist[index].number[i] <= '9') || + phonelist[index].number[i] == '#' || + phonelist[index].number[i] == '*' || + phonelist[index].number[i] == ',') + { + char num[2]; + num[0] = phonelist[index].number[i]; + num[1] = 0; + strcat(chosenPhoneNum,num); + } + + xit = 1; + break; + + case SC_ESC: // ESC + xit = 1; + break; + + case 0x48: // UP + if (hliteY > 5 || + (!blitY && hliteY)) + hliteY--; + else + if (blitY) + blitY--; + break; + + case 0x50: // DOWN + if (hliteY > 4 && blitY+10 numInList) + { + blitY = numInList - 10; + hliteY = 9; + } + if (numInList < 10) + { + blitY = 0; + hliteY = numInList - 1; + } + break; + } + + } while(!xit); + + RestoreScreen(); + return chosenPhoneNum[0]; +} + +#ifndef DOOM2 +// +// Epsiode radio buttons +// +radio_t mepi[]= +{ + {28,3,1}, + {28,4,2}, + {28,5,3} +}; +radiogroup_t mepig= +{ &mepi[0],3,&minfo.episode,15,1 }; + +// +// Skill level radio buttons +// +radio_t mskill[]= +{ + {28,7,2}, + {28,8,3}, + {28,9,4}, + {28,10,5} +}; +radiogroup_t mskillg= +{ &mskill[0],4,&minfo.skillLevel,15,1 }; + +// +// Mode radio buttons +// +radio_t mdeath[]= +{ + {28,12,0}, + {28,13,1} +}; +radiogroup_t mdeathg= +{ &mdeath[0],2,&minfo.deathMatch,15,1 }; + +// +// Com port radio buttons +// +radio_t mcomport[]= +{ + {28,15,1}, + {28,16,2}, + {42,15,3}, + {42,16,4} +}; +radiogroup_t mcomportg= +{ &mcomport[0],4,&minfo.comport,15,1 }; + +// +// Connection-type radio buttons +// +radio_t mcomtype[]= +{ + {28,18,0}, + {28,19,1}, + {28,20,2} +}; +radiogroup_t mcomtypeg= +{ &mcomtype[0],3,&minfo.comtype,15,1 }; +#else +// +// Skill level radio buttons +// +radio_t mskill[]= +{ + {28,5,2}, + {28,6,3}, + {28,7,4}, + {28,8,5}, +}; +radiogroup_t mskillg= +{ &mskill[0],4,&minfo.skillLevel,15,1 }; + +// +// Mode radio buttons +// +radio_t mdeath[]= +{ + {28,10,0}, + {28,11,1} +}; +radiogroup_t mdeathg= +{ &mdeath[0],2,&minfo.deathMatch,15,1 }; + +// +// Com port radio buttons +// +radio_t mcomport[]= +{ + {28,13,1}, + {28,14,2}, + {42,13,3}, + {42,14,4} +}; +radiogroup_t mcomportg= +{ &mcomport[0],4,&minfo.comport,15,1 }; + +// +// Connection-type radio buttons +// +radio_t mcomtype[]= +{ + {28,16,0}, + {28,17,1}, + {28,18,2} +}; +radiogroup_t mcomtypeg= +{ &mcomtype[0],3,&minfo.comtype,15,1 }; +#endif + +// +// Menu info +// +enum +{ +#ifndef DOOM2 + MOD_EPISODE0, MOD_EPISODE1, MOD_EPISODE2, +#endif + MOD_SKILL1, MOD_SKILL2, MOD_SKILL3, MOD_SKILL4, + MOD_DEATHNO, MOD_DEATHYES, + MOD_COM1, MOD_COM2, MOD_COM3, MOD_COM4, + MOD_CONN0, MOD_CONN1, MOD_CONN2, + MOD_MAX +}; +item_t cmodemitems[]= +{ +#ifndef DOOM2 + {MOD_EPISODE0, 31,3,21, -1,-1}, + {MOD_EPISODE1, 31,4,21, -1,-1}, + {MOD_EPISODE2, 31,5,21, -1,-1}, + + {MOD_SKILL1, 31,7,20, -1,-1}, + {MOD_SKILL2, 31,8,20, -1,-1}, + {MOD_SKILL3, 31,9,20, -1,-1}, + {MOD_SKILL4, 31,10,20, -1,-1}, + + {MOD_DEATHNO, 31,12,20,-1,-1}, + {MOD_DEATHYES, 31,13,20,-1,-1}, + + {MOD_COM1, 31,15,4, -1, MOD_COM3}, + {MOD_COM2, 31,16,4, -1, MOD_COM4,0,MOD_CONN0}, + {MOD_COM3, 45,15,4,MOD_COM1, -1,MOD_DEATHYES}, + {MOD_COM4, 45,16,4,MOD_COM2, -1}, + + {MOD_CONN0, 31,18,20, -1,-1,MOD_COM2}, + {MOD_CONN1, 31,19,20, -1,-1}, + {MOD_CONN2, 31,20,7, -1,-1} +#else + {MOD_SKILL1, 31,5,20, -1,-1}, + {MOD_SKILL2, 31,6,20, -1,-1}, + {MOD_SKILL3, 31,7,20, -1,-1}, + {MOD_SKILL4, 31,8,20, -1,-1}, + + {MOD_DEATHNO, 31,10,20,-1,-1}, + {MOD_DEATHYES, 31,11,20,-1,-1}, + + {MOD_COM1, 31,13,4, -1, MOD_COM3}, + {MOD_COM2, 31,14,4, -1, MOD_COM4,0,MOD_CONN0}, + {MOD_COM3, 45,13,4,MOD_COM1, -1,MOD_DEATHYES}, + {MOD_COM4, 45,14,4,MOD_COM2, -1}, + + {MOD_CONN0, 31,16,20, -1,-1,MOD_COM2}, + {MOD_CONN1, 31,17,20, -1,-1}, + {MOD_CONN2, 31,18,7, -1,-1} +#endif +}; +menu_t cmodemmenu= +{ + &cmodemitems[0], +#ifndef DOOM2 + MOD_EPISODE0, +#else + MOD_SKILL1, +#endif + MOD_MAX, + 0x7f +}; + +int ModemConfig(void) +{ + short field; + short key; + int rval = 0; + char *args[MAXARGS]; + int argcount; + char string[MAXARGS*2][12]; + int i; + int level; +#ifndef DOOM2 + item_t phonenum = {2,39,20,13,-1,-1}; +#else + item_t phonenum = {2,39,18,13,-1,-1}; +#endif + char tempstring[16]; + + + minfo = modeminfo; // save copy of modeminfo + + SaveScreen(); + DrawPup(&cmodem); + + // + // Set defaults + // + minfo.skillLevel = 3; + DrawRadios(&mskillg); + + minfo.episode = 1; + #ifndef DOOM2 + DrawRadios(&mepig); + #endif + + minfo.deathMatch = 1; + DrawRadios(&mdeathg); + + minfo.comport = comport; + DrawRadios(&mcomportg); + + minfo.comtype = 1; + DrawRadios(&mcomtypeg); + + strcpy(minfo.phonenum,""); + + while(1) + { + SetupMenu(&cmodemmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_F2: + if (ChooseOpponentInList()) + { + strcpy(minfo.phonenum,chosenPhoneNum); + textcolor(15); + textbackground(0); + Clear(&phonenum); + Pos(&phonenum); + cprintf("%s",minfo.phonenum); + minfo.comtype = 2; + DrawRadios(&mcomtypeg); + gotoxy(1,25); + } + break; + + // + // WARP + // + case KEY_F1: + { + level = WarpTime(); + if (!level) + continue; + + modeminfo = minfo; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-skill"; + sprintf(string[argcount],"%d",modeminfo.skillLevel); + args[argcount] = string[argcount]; + argcount++; + + if (!level) + { + #ifndef DOOM2 + args[argcount++] = "-episode"; + sprintf(string[argcount],"%d",modeminfo.episode); + args[argcount] = string[argcount]; + argcount++; + #endif + } + else + { + args[argcount++] = "-warp"; + #ifdef DOOM2 + sprintf(string[argcount],"%d",level); + args[argcount] = string[argcount]; + argcount++; + #else + sprintf(string[argcount],"%d",level>>8); + args[argcount] = string[argcount]; + argcount++; + sprintf(string[argcount],"%d",level&0x0f); + args[argcount] = string[argcount]; + argcount++; + #endif + } + + if (modeminfo.deathMatch) + args[argcount++] = "-deathmatch"; + + if (nomonsters) + args[argcount++] = "-nomonsters"; + + if (respawn) + args[argcount++] = "-respawn"; + + if (deathmatch2 && modeminfo.deathMatch) + args[argcount++] = "-altdeath"; + + sprintf(string[argcount],"-com%d",modeminfo.comport); + args[argcount] = string[argcount]; + argcount++; + + // + // IF # IS ENTERED, CALL # + // + if (minfo.phonenum[0]) + modeminfo.comtype = 2; + + switch(modeminfo.comtype) + { + case 0: // no parameter if already connected! + break; + case 1: + args[argcount++] = "-answer"; + break; + case 2: + args[argcount++] = "-dial"; + sprintf(string[argcount],"%s",minfo.phonenum); + args[argcount] = string[argcount]; + argcount++; + break; + } + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(1); + + } + break; + +exitandsave: + case KEY_F10: + + modeminfo = minfo; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-skill"; + sprintf(string[argcount],"%d",modeminfo.skillLevel); + args[argcount] = string[argcount]; + argcount++; + + if (modeminfo.deathMatch) + args[argcount++] = "-deathmatch"; + + #ifndef DOOM2 + args[argcount++] = "-episode"; + sprintf(string[argcount],"%d",modeminfo.episode); + args[argcount] = string[argcount]; + argcount++; + #endif + + sprintf(string[argcount],"-com%d",modeminfo.comport); + args[argcount] = string[argcount]; + argcount++; + + // + // IF # IS ENTERED, CALL # + // + if (minfo.phonenum[0]) + modeminfo.comtype = 2; + + switch(modeminfo.comtype) + { + case 0: // no parameter if already connected! + break; + case 1: + args[argcount++] = "-answer"; + break; + case 2: + args[argcount++] = "-dial"; + sprintf(string[argcount],"%s",minfo.phonenum); + args[argcount] = string[argcount]; + argcount++; + break; + } + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(1); + + case KEY_ENTER: + switch ( field ) + { + #ifndef DOOM2 + // + // Episode + // + case MOD_EPISODE0: + case MOD_EPISODE1: + case MOD_EPISODE2: + minfo.episode = field - MOD_EPISODE0 + 1; + break; + #endif + + // + // Skill level + // + case MOD_SKILL1: + case MOD_SKILL2: + case MOD_SKILL3: + case MOD_SKILL4: + minfo.skillLevel = field - MOD_SKILL1 + 2; + break; + + // + // Deathmatch + // + case MOD_DEATHNO: + case MOD_DEATHYES: + minfo.deathMatch = field - MOD_DEATHNO; + break; + + // + // COM port + // + case MOD_COM1: + case MOD_COM2: + case MOD_COM3: + case MOD_COM4: + comport = minfo.comport = field - MOD_COM1 + 1; + break; + + // + // Connection type + // + case MOD_CONN0: + case MOD_CONN1: + minfo.comtype = field - MOD_CONN0; + break; + case MOD_CONN2: + minfo.comtype = 2; + key = EditLine(&phonenum,tempstring,12); + if (key == KEY_ENTER) + strcpy(minfo.phonenum,tempstring); + gotoxy(1,25); + break; + + default: + break; + } + #ifndef DOOM2 + DrawRadios(&mepig); + #endif + DrawRadios(&mskillg); + DrawRadios(&mdeathg); + DrawRadios(&mcomportg); + DrawRadios(&mcomtypeg); + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + diff --git a/MODEM.C b/MODEM.C new file mode 100644 index 0000000..f7b4714 --- /dev/null +++ b/MODEM.C @@ -0,0 +1,837 @@ +// +// Enter modem config info +// +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "default.h" + +// +// Choose who to call for modem play +// + +phonelist_t phonelist[MAXPHNLIST]; +int numInList; +char chosenPhoneNum[16]; + +// +// Parse the MODOOM.NUM file +// +int ParseMODOOMList(void) +{ + int i; + int ok; + FILE *fp; + int rv; + int found; + + + fp = fopen("MODEM.NUM","rt"); + if (fp == NULL) + { + gotoxy(2,25); + printf("There's no MODEM.NUM file! Press a key. "); + sound(2500); + delay(3); + nosound(); + getch(); + return 0; + } + + i = 0; + ok = 1; + do + { + rv = fscanf(fp,"%[^\n]",&phonelist[i].name); + if (!rv || rv == EOF) + ok = 0; + + rv = fscanf(fp,"\n"); + if (rv == EOF) + ok = 0; + + rv = fscanf(fp,"%[^\n]",&phonelist[i].number); + if (!rv || rv == EOF) + ok = 0; + + rv = fscanf(fp,"\n\n"); + if (rv == EOF) + ok = 0; + i++; + + } while(ok); + + numInList = i; + fclose(fp); + + + // + // Quick little shell sort + // + do + { + int j; + found = 0; + + for (i = 0; i < numInList-1; i++) + for (j = i+1; j < numInList; j++) + if (strcmp(phonelist[j].name,phonelist[i].name)<0) + { + phonelist_t temp; + + temp = phonelist[j]; + phonelist[j] = phonelist[i]; + phonelist[i] = temp; + found = 1; + } + } while(found); + + return 1; +} + +// +// Blit the phone numbers to the screen +// +void BlitPhoneNumbers(int start) +{ + int i; + int max; + int y; + int j; + int len; + + max = start + 10; + if (max > numInList) + max = numInList; + + y = 8; + for (i = start; i < max; i++) + { + gotoxy(17,y); + cprintf("%s",phonelist[i].name); + len = 32 - strlen(phonelist[i].name); + for (j = 0; j < len; j++) + cprintf(" "); + + gotoxy(49,y++); + cprintf("%s",phonelist[i].number); + len = 16 - strlen(phonelist[i].number); + for (j = 0; j < len; j++) + cprintf(" "); + } + gotoxy(1,25); +} + +// +// Choose who to call +// +enum {ADDNAME,ADDNUMBER,MAXADD}; +item_t additems[]= { + {ADDNAME, 17,12,28,-1,ADDNUMBER}, + {ADDNUMBER, 46,12,18,ADDNAME,-1}}; +menu_t addmenu = {&additems[0],ADDNAME,MAXADD,0x7f}; + +int ChooseOpponentInList(void) +{ + int i; + int xit; + int blitY; + int hliteY; + int lastHliteY; + int index; + + chosenPhoneNum[0] = 0; + + if (!ParseMODOOMList()) + return 0; + + SaveScreen(); + DrawPup(&phonelst); + textcolor(11); + textbackground(1); + gotoxy(1,25); + + xit = 0; + blitY = 0; + lastHliteY = hliteY = 0; + do + { + int key; + + textcolor(11); + textbackground(1); + BlitPhoneNumbers(blitY); + + AttriBar(16,lastHliteY+7,48,0x1b); + lastHliteY = hliteY; + AttriBar(16,hliteY+7,48,0x7f); + key = _bios_keybrd(_NKEYBRD_READ)>>8; + + switch(key) + { + #ifndef FRENCH + case KEY_F1: // ADD NUMBER TO LIST! + SaveScreen(); + DrawPup(&entrnmbr); + { + int field; + int key; + int which; + int exit; + char tempstring[32]; + + which = numInList; + exit = 0; + while(!exit) + { + SetupMenu(&addmenu); + field = GetMenuInput(); + switch(menukey) + { + case KEY_F10: // DONE! + if (phonelist[which].name[0] || + phonelist[which].number[0]) + { + FILE *fp; + + numInList++; + fp = fopen("MODEM.NUM","w+"); + if (fp == NULL) + { + gotoxy(2,25); + printf("Error creating MODEM.NUM file! Press a key. "); + sound(2500); + delay(3); + nosound(); + getch(); + return 0; + } + for (i = 0;i < numInList; i++) + fprintf(fp,"%s\n%s\n\n", + phonelist[i].name,phonelist[i].number); + fclose(fp); + } + case KEY_ESC: // ABORT! + exit = 1; + break; + case KEY_ENTER: // EDIT NUMBER/NAME + switch(field) + { + case ADDNAME: + strcpy(tempstring,phonelist[which].name); + key = EditLine(&additems[ADDNAME],tempstring,28); + if (key == KEY_ENTER) + strcpy(phonelist[which].name,tempstring); + textcolor(15); + textbackground(1); + Clear(&additems[ADDNAME]); + Pos(&additems[ADDNAME]); + cprintf("%s",phonelist[which].name); + gotoxy(1,25); + break; + case ADDNUMBER: + strcpy(tempstring,phonelist[which].number); + key = EditLine(&additems[ADDNUMBER],tempstring,18); + if (key == KEY_ENTER) + strcpy(phonelist[which].number,tempstring); + textcolor(15); + textbackground(1); + Clear(&additems[ADDNUMBER]); + Pos(&additems[ADDNUMBER]); + cprintf("%s",phonelist[which].number); + gotoxy(1,25); + break; + } + break; + } + } + } + RestoreScreen(); + break; + #endif + + case 0x1c: // ENTER + index = blitY + hliteY; + for (i=0;i= '0' && + phonelist[index].number[i] <= '9') || + phonelist[index].number[i] == '#' || + phonelist[index].number[i] == '*' || + phonelist[index].number[i] == ',') + { + char num[2]; + num[0] = phonelist[index].number[i]; + num[1] = 0; + strcat(chosenPhoneNum,num); + } + + xit = 1; + break; + + case SC_ESC: // ESC + xit = 1; + break; + + case 0x48: // UP + if (hliteY > 5 || + (!blitY && hliteY)) + hliteY--; + else + if (blitY) + blitY--; + break; + + case 0x50: // DOWN + if (hliteY > 4 && blitY+10 numInList) + { + blitY = numInList - 10; + hliteY = 9; + } + if (numInList < 10) + { + blitY = 0; + hliteY = numInList - 1; + } + break; + } + + } while(!xit); + + RestoreScreen(); + return chosenPhoneNum[0]; +} + +#ifndef DOOM2 +// +// Epsiode radio buttons +// +radio_t mepi[]= +{ + {28,3,1}, + {28,4,2}, + {28,5,3} +}; +radiogroup_t mepig= +{ &mepi[0],3,&minfo.episode,15,1 }; + +// +// Skill level radio buttons +// +radio_t mskill[]= +{ + {28,7,2}, + {28,8,3}, + {28,9,4}, + {28,10,5} +}; +radiogroup_t mskillg= +{ &mskill[0],4,&minfo.skillLevel,15,1 }; + +// +// Mode radio buttons +// +radio_t mdeath[]= +{ + {28,12,0}, + {28,13,1} +}; +radiogroup_t mdeathg= +{ &mdeath[0],2,&minfo.deathMatch,15,1 }; + +// +// Com port radio buttons +// +radio_t mcomport[]= +{ + {28,15,1}, + {28,16,2}, + {42,15,3}, + {42,16,4} +}; +radiogroup_t mcomportg= +{ &mcomport[0],4,&minfo.comport,15,1 }; + +// +// Connection-type radio buttons +// +radio_t mcomtype[]= +{ + {28,18,0}, + {28,19,1}, + {28,20,2} +}; +radiogroup_t mcomtypeg= +{ &mcomtype[0],3,&minfo.comtype,15,1 }; +#else +// +// Skill level radio buttons +// +radio_t mskill[]= +{ + {28,5,2}, + {28,6,3}, + {28,7,4}, + {28,8,5}, +}; +radiogroup_t mskillg= +{ &mskill[0],4,&minfo.skillLevel,15,1 }; + +// +// Mode radio buttons +// +radio_t mdeath[]= +{ + {28,10,0}, + {28,11,1} +}; +radiogroup_t mdeathg= +{ &mdeath[0],2,&minfo.deathMatch,15,1 }; + +// +// Com port radio buttons +// +radio_t mcomport[]= +{ + {28,13,1}, + {28,14,2}, + {42,13,3}, + {42,14,4} +}; +radiogroup_t mcomportg= +{ &mcomport[0],4,&minfo.comport,15,1 }; + +// +// Connection-type radio buttons +// +radio_t mcomtype[]= +{ + {28,16,0}, + {28,17,1}, + {28,18,2} +}; +radiogroup_t mcomtypeg= +{ &mcomtype[0],3,&minfo.comtype,15,1 }; +#endif + +// +// Menu info +// +enum +{ +#ifndef DOOM2 + MOD_EPISODE0, MOD_EPISODE1, MOD_EPISODE2, +#endif + MOD_SKILL1, MOD_SKILL2, MOD_SKILL3, MOD_SKILL4, + MOD_DEATHNO, MOD_DEATHYES, + MOD_COM1, MOD_COM2, MOD_COM3, MOD_COM4, + MOD_CONN0, MOD_CONN1, MOD_CONN2, + MOD_MAX +}; +item_t cmodemitems[]= +{ +#ifndef DOOM2 + {MOD_EPISODE0, 31,3,21, -1,-1}, + {MOD_EPISODE1, 31,4,21, -1,-1}, + {MOD_EPISODE2, 31,5,21, -1,-1}, + + {MOD_SKILL1, 31,7,21, -1,-1}, + {MOD_SKILL2, 31,8,21, -1,-1}, + {MOD_SKILL3, 31,9,21, -1,-1}, + {MOD_SKILL4, 31,10,21, -1,-1}, + + {MOD_DEATHNO, 31,12,20,-1,-1}, + {MOD_DEATHYES, 31,13,20,-1,-1}, + + {MOD_COM1, 31,15,4, -1, MOD_COM3}, + {MOD_COM2, 31,16,4, -1, MOD_COM4,0,MOD_CONN0}, + {MOD_COM3, 45,15,4,MOD_COM1, -1,MOD_DEATHYES}, + {MOD_COM4, 45,16,4,MOD_COM2, -1}, + + {MOD_CONN0, 31,18,20, -1,-1,MOD_COM2}, + {MOD_CONN1, 31,19,20, -1,-1}, + {MOD_CONN2, 31,20,7, -1,-1} +#else + {MOD_SKILL1, 31,5,20, -1,-1}, + {MOD_SKILL2, 31,6,20, -1,-1}, + {MOD_SKILL3, 31,7,20, -1,-1}, + {MOD_SKILL4, 31,8,20, -1,-1}, + + {MOD_DEATHNO, 31,10,20,-1,-1}, + {MOD_DEATHYES, 31,11,20,-1,-1}, + + {MOD_COM1, 31,13,4, -1, MOD_COM3}, + {MOD_COM2, 31,14,4, -1, MOD_COM4,0,MOD_CONN0}, + {MOD_COM3, 45,13,4,MOD_COM1, -1,MOD_DEATHYES}, + {MOD_COM4, 45,14,4,MOD_COM2, -1}, + + {MOD_CONN0, 31,16,20, -1,-1,MOD_COM2}, + {MOD_CONN1, 31,17,20, -1,-1}, + {MOD_CONN2, 31,18,7, -1,-1} +#endif +}; +menu_t cmodemmenu= +{ + &cmodemitems[0], +#ifndef DOOM2 + MOD_EPISODE0, +#else + MOD_SKILL1, +#endif + MOD_MAX, + 0x7f +}; + +int ModemConfig(void) +{ + short field; + short key; + int rval = 0; + char *args[MAXARGS]; + int argcount; + char string[MAXARGS*2][12]; + int i; + int level; +#ifndef DOOM2 + item_t phonenum = {2,39,20,13,-1,-1}; +#else + item_t phonenum = {2,39,18,13,-1,-1}; +#endif + char tempstring[16]; + + + minfo = modeminfo; // save copy of modeminfo + + SaveScreen(); + DrawPup(&cmodem); + + // + // Set defaults + // + minfo.skillLevel = 3; + DrawRadios(&mskillg); + + minfo.episode = 1; + #ifndef DOOM2 + DrawRadios(&mepig); + #endif + + minfo.deathMatch = 1; + DrawRadios(&mdeathg); + + minfo.comport = comport; + DrawRadios(&mcomportg); + + minfo.comtype = 1; + DrawRadios(&mcomtypeg); + + strcpy(minfo.phonenum,""); + + while(1) + { + SetupMenu(&cmodemmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_F2: + if (ChooseOpponentInList()) + { + strcpy(minfo.phonenum,chosenPhoneNum); + textcolor(15); + textbackground(0); + Clear(&phonenum); + Pos(&phonenum); + cprintf("%s",minfo.phonenum); + minfo.comtype = 2; + DrawRadios(&mcomtypeg); + gotoxy(1,25); + } + break; + + // + // WARP + // + case KEY_F1: + { + level = WarpTime(); + if (!level) + continue; + + modeminfo = minfo; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-skill"; + sprintf(string[argcount],"%d",modeminfo.skillLevel); + args[argcount] = string[argcount]; + argcount++; + + if (!level) + { + #ifndef DOOM2 + args[argcount++] = "-episode"; + sprintf(string[argcount],"%d",modeminfo.episode); + args[argcount] = string[argcount]; + argcount++; + #endif + } + else + { + args[argcount++] = "-warp"; + #ifdef DOOM2 + sprintf(string[argcount],"%d",level); + args[argcount] = string[argcount]; + argcount++; + #else + sprintf(string[argcount],"%d",level>>8); + args[argcount] = string[argcount]; + argcount++; + sprintf(string[argcount],"%d",level&0x0f); + args[argcount] = string[argcount]; + argcount++; + #endif + } + + if (modeminfo.deathMatch) + args[argcount++] = "-deathmatch"; + + if (nomonsters) + args[argcount++] = "-nomonsters"; + + if (respawn) + args[argcount++] = "-respawn"; + + if (deathmatch2 && modeminfo.deathMatch) + args[argcount++] = "-altdeath"; + + sprintf(string[argcount],"-com%d",modeminfo.comport); + args[argcount] = string[argcount]; + argcount++; + + // + // IF # IS ENTERED, CALL # + // + if (minfo.phonenum[0]) + modeminfo.comtype = 2; + + switch(modeminfo.comtype) + { + case 0: // no parameter if already connected! + break; + case 1: + args[argcount++] = "-answer"; + break; + case 2: + args[argcount++] = "-dial"; + sprintf(string[argcount],"%s",minfo.phonenum); + args[argcount] = string[argcount]; + argcount++; + break; + } + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(1); + + } + break; + +exitandsave: + case KEY_F10: + + modeminfo = minfo; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-skill"; + sprintf(string[argcount],"%d",modeminfo.skillLevel); + args[argcount] = string[argcount]; + argcount++; + + if (modeminfo.deathMatch) + args[argcount++] = "-deathmatch"; + + #ifndef DOOM2 + args[argcount++] = "-episode"; + sprintf(string[argcount],"%d",modeminfo.episode); + args[argcount] = string[argcount]; + argcount++; + #endif + + sprintf(string[argcount],"-com%d",modeminfo.comport); + args[argcount] = string[argcount]; + argcount++; + + // + // IF # IS ENTERED, CALL # + // + if (minfo.phonenum[0]) + modeminfo.comtype = 2; + + switch(modeminfo.comtype) + { + case 0: // no parameter if already connected! + break; + case 1: + args[argcount++] = "-answer"; + break; + case 2: + args[argcount++] = "-dial"; + sprintf(string[argcount],"%s",minfo.phonenum); + args[argcount] = string[argcount]; + argcount++; + break; + } + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(1); + + case KEY_ENTER: + switch ( field ) + { + #ifndef DOOM2 + // + // Episode + // + case MOD_EPISODE0: + case MOD_EPISODE1: + case MOD_EPISODE2: + minfo.episode = field - MOD_EPISODE0 + 1; + break; + #endif + + // + // Skill level + // + case MOD_SKILL1: + case MOD_SKILL2: + case MOD_SKILL3: + case MOD_SKILL4: + minfo.skillLevel = field - MOD_SKILL1 + 2; + break; + + // + // Deathmatch + // + case MOD_DEATHNO: + case MOD_DEATHYES: + minfo.deathMatch = field - MOD_DEATHNO; + break; + + // + // COM port + // + case MOD_COM1: + case MOD_COM2: + case MOD_COM3: + case MOD_COM4: + comport = minfo.comport = field - MOD_COM1 + 1; + break; + + // + // Connection type + // + case MOD_CONN0: + case MOD_CONN1: + minfo.comtype = field - MOD_CONN0; + break; + case MOD_CONN2: + minfo.comtype = 2; + key = EditLine(&phonenum,tempstring,12); + if (key == KEY_ENTER) + strcpy(minfo.phonenum,tempstring); + gotoxy(1,25); + break; + + default: + break; + } + #ifndef DOOM2 + DrawRadios(&mepig); + #endif + DrawRadios(&mskillg); + DrawRadios(&mdeathg); + DrawRadios(&mcomportg); + DrawRadios(&mcomtypeg); + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + diff --git a/MODEM.CFG b/MODEM.CFG new file mode 100644 index 0000000..b9157d6 --- /dev/null +++ b/MODEM.CFG @@ -0,0 +1,5 @@ +AT&F&Q0N0S37=9 +AT Z H0 +9600 +Cardinal 14.4 v32 + diff --git a/MODEM.NUM b/MODEM.NUM new file mode 100644 index 0000000..5211c1a --- /dev/null +++ b/MODEM.NUM @@ -0,0 +1,9 @@ +Shawn's House +475-1729 + +Software Creations BBS +1-508-368-4137 + +Chicago +1-708-530-1197 + diff --git a/MODEM.OBJ b/MODEM.OBJ new file mode 100644 index 0000000..5f10e4e Binary files /dev/null and b/MODEM.OBJ differ diff --git a/MODEM.STR b/MODEM.STR new file mode 100644 index 0000000..89250c3 --- /dev/null +++ b/MODEM.STR @@ -0,0 +1,250 @@ +Boca 14.4 v32 fax +AT \N0 \G0 &K0 %C0 N0 S37=9 +AT Z H0 +9600 + +USRobotics 14.4 v32 fax +AT &F &M0 &I0 &K0 B0 &N6 +AT Z H0 +9600 + +Intel 14.4 ext +AT\N0/Q0 +AT Z H0 +9600 + +Telebit Worldblazer 14.4 +AT S51=4 S180=0 S183=8 S190=0 L1 +ATH +14400 + +SupraFax 14.4 v32- +AT S37=9 &F S46=136 M1 Q0 D2 +AT Z H0 +9600 + +Gateway Telepath 550 +ATZS27=32S15=16S13=64&B0&H2&I1&N6&K0&M0 +AT Z H0 +9600 + +GVC 14.4 MNP2-5 v42 +AT %C0 \N0 B8 +AT Z H0 +9600 + +ZOOM 14.4 v32 v42 fax +AT &F S37=9 N0 &D2 &C1 &Q6 &K0 S0=1 +AT Z H0 +9600 + +Intel 14.4 fax +AT &F S37=9 N0 &D2 &C1 &Q6 &K0 S0=1 +AT Z H0 +9600 + +Boca 14.4 fax +AT Z S46=0 S37=9 N0 &Q0 &D2 &K0 +AT Z H0 +9600 + +GVC 14.4 fax +AT Z S46=0 S37=9 N0 &Q0 &D2 &K0 +AT Z H0 +9600 + +ZOOM VFX v32 +AT &K0 &Q0 &D2 E1 V1 X4 N0 &Q0 S37=9 +AT Z H0 +9600 + +GENERIC 14.4 +AT &Q6&R1&K0N0 S37=9 \J1 %E1 +AT Z H0 +9600 + +MegaHertz C596FM +AT &F \N1 \J0 &Q0 %C0 +AT Z H0 +9600 + +Smart One 1442F +AT Z %C0 &Q0 &K0 &D2 S37=9 S95=44 S46=0 +AT Z H0 +9600 + +Viva 14.4i fax +AT\N0\Q0\J1\VI +AT Z H0 +9600 + +SupraFax 14.4 v32 +AT &F0 S46=136 %C0 +AT Z H0 +9600 + +Infotel 14.4 +AT &Q6 %C0 S37=9 N0 &K0 +AT Z H0 +9600 + +Zoomfax VFP v32 +AT &Q0 S48=128 S36=1 S37=9 N0 S46=136 &D2 +AT Z H0 +9600 + +ZyXEL U-1496 14.4 +AT Z S46=0 &D2 &K0 +AT Z H0 +9600 + +Identity Internal +AT &F0 B8 %C0 \Q0 \N1 +AT Z H0 +9600 + +GENERIC 9600 +AT &F1 &K0 &M0 &Q0 &D2 S46=0 +AT Z H0 +9600 + +SupraFax 14.4 +AT &Q6 &K %C0 \N1 S37=6 S0=1 +AT Z H0 +9600 + +VivaFax 14.4 +AT\Q0 &M0 %C0 B8 \N1 +AT Z H0 +9600 + +VivaFax 14.4 +AT &F &C1 &D2 N0 \N1 %C0 &K0 S37=9 +AT Z H0 +9600 + +Intel 14.4 +AT &F \N0 \Q0 \J1 \V0 +AT Z H0 +9600 + +GENERIC +AT &B0 &K0 &Q0 &D0 &C0 +AT Z H0 +9600 + +USRobotics 14.4 fax +AT S0=1 S7=60 E1 Q0 V1 &C1 &D2 &K0 &N6 &A3 +AT Z H0 +9600 + +ZOOM VFP 14.4 +AT &K0&Q0&D2E1V1X4S37=9N0 +AT Z H0 +9600 + +Telepath 550 +AT Z &N6 &M0 &K0 S0=1 +AT Z H0 +9600 + +Intel 14.4i +AT B8 %C0 "H0 \N0 \Q0 +AT Z H0 +9600 + +ZOOM 14.4 +AT S37=9 N0 S46=136 %C0 &Q0 \G0 +AT Z H0 +9600 + +Intel 14.4i fax +AT&F\N0\Q0 +AT Z H0 +9600 + +Practical Perip 14.4FX v32 +AT Z S46=0 &Q0 &D2 +AT Z H0 +9600 + +Hayes Optima 14.4 +AT &F S37=9 S46=0 N0 &Q0 &K0 +AT Z H0 +9600 + +Cardinal 9600fax +ATZ&Q6&K0%C0\N0N0S37=9 +AT Z H0 +9600 + +USRobotics Sportster 14.4 +AT Z &K0 &M0 &D2 E1 V1 X4 +AT Z H0 +9600 + +Hayes Optima 14.4 +AT Z\N0 +AT Z H0 +9600 + +Viva 14.4 +AT Z\N0 +AT Z H0 +9600 + +ZyXel 14.4 +AT Z\N0 +AT Z H0 +9600 + +Hayes Ultra 14.4 +AT &F &C1 &D2 &Q &K +AT Z H0 +9600 + +Cardinal 14.4 v32 +AT&F&Q0N0S37=9 +AT Z H0 +9600 + +Acubit 14.4 fax v32 +AT Z S37=9 %C0 \N1 +AT Z H0 +9600 + +No Name (Rockwell) 14.4 +AT S37=9 N0 S46=0 &Q0 &K0 %C0 +AT Z H0 +9600 + +ZOOM VXP 14.4 v42 +AT&F&K0&M0&Q0&D0&C0\G0%C0 +AT Z H0 +9600 + +AT&T Data Port 14.4 FaxM. +ATZ S41=3 %B9600 \N0 %C0 +AT Z H0 +9600 + +Redicard v.32 bis 14.4 +AT %C & \N +AT Z H0 +9600 + +Digicom Scout Plus 14.4 Fax +AT Z *m0 *e0 +AT Z H0 +9600 + +Gateway Telepath 14.4 fax +ATB0N0\N0 %C0 &K0 S37=9 +AT Z H0 +9600 + +USR Sportster 14.4 v32 fax +AT &F &M0 &I0 &K0 B0 &N6 +AT Z H0 +9600 + diff --git a/MODREST.BAK b/MODREST.BAK new file mode 100644 index 0000000..12d4fdd --- /dev/null +++ b/MODREST.BAK @@ -0,0 +1,313 @@ +// +// Enter modem savegame info +// +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "default.h" + +enum {MODS_0,MODS_1,MODS_2,MODS_3,MODS_4,MODS_5, + MODS_DEATHNO,MODS_DEATHYES, + MODS_COM1,MODS_COM2,MODS_COM3,MODS_COM4, + MODS_CONN1,MODS_CONN2,MODS_CONN3, + MODS_MAX}; +item_t modsaveitems[]= +{ + {MODS_0, 29,4,24, -1,-1}, + {MODS_1, 29,5,24, -1,-1}, + {MODS_2, 29,6,24, -1,-1}, + {MODS_3, 29,7,24, -1,-1}, + {MODS_4, 29,8,24, -1,-1}, + {MODS_5, 29,9,24, -1,-1}, + + {MODS_DEATHNO, 29,11,24, -1,-1}, + {MODS_DEATHYES,29,12,24, -1,-1}, + + {MODS_COM1, 29,14,4, -1,MODS_COM3}, + {MODS_COM2, 29,15,4, -1,MODS_COM4,0,MODS_CONN1}, + {MODS_COM3, 46,14,4, MODS_COM1,-1,MODS_DEATHYES}, + {MODS_COM4, 46,15,4, MODS_COM2,-1}, + + {MODS_CONN1, 29,17,20, -1,-1,MODS_COM2}, + {MODS_CONN2, 29,18,20, -1,-1}, + {MODS_CONN3, 29,19,7, -1,-1} +}; +menu_t modsavemenu= +{ + &modsaveitems[0], + MODS_0, + MODS_MAX, + 0x7f +}; + +// SAVEGAME radio group +radio_t modslots[]= +{ + {26,4,0}, + {26,5,1}, + {26,6,2}, + {26,7,3}, + {26,8,4}, + {26,9,5} +}; +radiogroup_t modslotsg= { &modslots[0],6,&saveslot,15,1 }; + +// DEATHMATCH radio group +radio_t modsdeath[]= +{ + {26,11,0}, + {26,12,1} +}; +radiogroup_t modsdeathg= { &modsdeath[0],2,&minfo.deathMatch,15,1 }; + +// COMPORT radio group +radio_t modscom[]= +{ + {26,14,1}, + {26,15,2}, + {43,14,3}, + {43,15,4} +}; +radiogroup_t modscomg= { &modscom[0],4,&minfo.comport,15,1 }; + +// CONNECT TYPE radio group +radio_t modsconn[]= +{ + {26,17,0}, + {26,18,1}, + {26,19,2} +}; +radiogroup_t modsconng= { &modsconn[0],3,&minfo.comtype,15,1 }; + +int RestoreModem(void) +{ + short field; + short key; + int rval = 0; + char *args[MAXARGS]; + int argcount; + char string[MAXARGS*2][16]; + int i; + int numplayers[6]; + int handle; + char name[32]; + char p1,p2,p3,p4; + item_t phonenum = {2,37,19,13,-1,-1}; + char tempstring[16]; + + minfo = modeminfo; // save copy of netinfo + + SaveScreen(); + DrawPup(&modsave); + + saveslot = -1; + memset(savenames,0,6*24); + + // + // Read in savegame strings + // + textbackground(1); + textcolor(15); + for (i = 0;i < 6;i++) + { + sprintf(name,SAVENAME,i); + handle = open (name, O_BINARY | O_RDONLY); + if (handle == -1) + continue; + + read(handle,savenames[i],24); + lseek(handle,27+16,SEEK_SET); + read(handle,&p1,1); + read(handle,&p2,1); + read(handle,&p3,1); + read(handle,&p4,1); + numplayers[i] = p1+p2+p3+p4; + close(handle); + + Clear(&modsaveitems[i]); + Pos(&modsaveitems[i]); + cprintf("%s",savenames[i]); + } + + // + // Set defaults + // + minfo.comtype = 1; + DrawRadios(&modsconng); + + minfo.comport = comport; + DrawRadios(&modscomg); + + minfo.deathMatch = 0; + DrawRadios(&modsdeathg); + + strcpy(minfo.phonenum,""); + + while(1) + { + SetupMenu(&modsavemenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + +exitandsave: + case KEY_F10: + + if (saveslot < 0) + { + ErrorWindow(&netserr); + break; + } + + modeminfo = minfo; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-nodes"; + sprintf(string[argcount],"%d",numplayers[saveslot]); + args[argcount] = string[argcount]; + argcount++; + + if (modeminfo.deathMatch) + args[argcount++] = "-deathmatch"; + + sprintf(string[argcount],"-com%d",modeminfo.comport); + args[argcount] = string[argcount]; + argcount++; + + switch(modeminfo.comtype) + { + case 0: // no parameter if already connected! + break; + case 1: + args[argcount++] = "-answer"; + break; + case 2: + args[argcount++] = "-dial"; + sprintf(string[argcount],"%s",minfo.phonenum); + args[argcount] = string[argcount]; + argcount++; + break; + } + + args[argcount++] = "-loadgame"; + sprintf(string[argcount],"%d",saveslot); + args[argcount] = string[argcount]; + argcount++; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(0); + + case KEY_F2: + if (ChooseOpponentInList()) + { + strcpy(minfo.phonenum,chosenPhoneNum); + textcolor(15); + textbackground(0); + Clear(&phonenum); + Pos(&phonenum); + cprintf("%s",minfo.phonenum); + minfo.comtype = 2; + DrawRadios(&modsconng); + gotoxy(1,25); + } + break; + + case KEY_ENTER: + switch ( field ) + { + case MODS_COM1: + case MODS_COM2: + case MODS_COM3: + case MODS_COM4: + minfo.comport = field - MODS_COM1 + 1; + DrawRadios(&modscomg); + break; + + case MODS_CONN1: + case MODS_CONN2: + minfo.comtype = field - MODS_CONN1; + DrawRadios(&modsconng); + break; + case MODS_CONN3: + minfo.comtype = 2; + DrawRadios(&modsconng); + key = EditLine(&phonenum,tempstring,12); + if (key == KEY_ENTER) + strcpy(minfo.phonenum,tempstring); + gotoxy(1,25); + break; + + case MODS_0: + case MODS_1: + case MODS_2: + case MODS_3: + case MODS_4: + case MODS_5: + if (!savenames[field - MODS_0][0]) + { + sound(1000); + delay(12); + nosound(); + break; + } + saveslot = field - MODS_0; + DrawRadios(&modslotsg); + break; + + // + // Deathmatch + // + case MODS_DEATHNO: + case MODS_DEATHYES: + minfo.deathMatch = field - MODS_DEATHNO; + DrawRadios(&modsdeathg); + break; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + diff --git a/MODREST.C b/MODREST.C new file mode 100644 index 0000000..618b3ec --- /dev/null +++ b/MODREST.C @@ -0,0 +1,314 @@ +// +// Enter modem savegame info +// +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "default.h" + +enum {MODS_0,MODS_1,MODS_2,MODS_3,MODS_4,MODS_5, + MODS_DEATHNO,MODS_DEATHYES, + MODS_COM1,MODS_COM2,MODS_COM3,MODS_COM4, + MODS_CONN1,MODS_CONN2,MODS_CONN3, + MODS_MAX}; +item_t modsaveitems[]= +{ + {MODS_0, 29,4,24, -1,-1}, + {MODS_1, 29,5,24, -1,-1}, + {MODS_2, 29,6,24, -1,-1}, + {MODS_3, 29,7,24, -1,-1}, + {MODS_4, 29,8,24, -1,-1}, + {MODS_5, 29,9,24, -1,-1}, + + {MODS_DEATHNO, 29,11,24, -1,-1}, + {MODS_DEATHYES,29,12,24, -1,-1}, + + {MODS_COM1, 29,14,4, -1,MODS_COM3}, + {MODS_COM2, 29,15,4, -1,MODS_COM4,0,MODS_CONN1}, + {MODS_COM3, 46,14,4, MODS_COM1,-1,MODS_DEATHYES}, + {MODS_COM4, 46,15,4, MODS_COM2,-1}, + + {MODS_CONN1, 29,17,20, -1,-1,MODS_COM2}, + {MODS_CONN2, 29,18,20, -1,-1}, + {MODS_CONN3, 29,19,7, -1,-1} +}; +menu_t modsavemenu= +{ + &modsaveitems[0], + MODS_0, + MODS_MAX, + 0x7f +}; + +// SAVEGAME radio group +radio_t modslots[]= +{ + {26,4,0}, + {26,5,1}, + {26,6,2}, + {26,7,3}, + {26,8,4}, + {26,9,5} +}; +radiogroup_t modslotsg= { &modslots[0],6,&saveslot,15,1 }; + +// DEATHMATCH radio group +radio_t modsdeath[]= +{ + {26,11,0}, + {26,12,1} +}; +radiogroup_t modsdeathg= { &modsdeath[0],2,&minfo.deathMatch,15,1 }; + +// COMPORT radio group +radio_t modscom[]= +{ + {26,14,1}, + {26,15,2}, + {43,14,3}, + {43,15,4} +}; +radiogroup_t modscomg= { &modscom[0],4,&minfo.comport,15,1 }; + +// CONNECT TYPE radio group +radio_t modsconn[]= +{ + {26,17,0}, + {26,18,1}, + {26,19,2} +}; +radiogroup_t modsconng= { &modsconn[0],3,&minfo.comtype,15,1 }; + +int RestoreModem(void) +{ + short field; + short key; + int rval = 0; + char *args[MAXARGS]; + int argcount; + char string[MAXARGS*2][16]; + int i; + int numplayers[6]; + int handle; + char name[32]; + char p1,p2,p3,p4; + item_t phonenum = {2,37,19,13,-1,-1}; + char tempstring[16]; + + minfo = modeminfo; // save copy of netinfo + + SaveScreen(); + DrawPup(&modsave); + + saveslot = -1; + memset(savenames,0,6*24); + + // + // Read in savegame strings + // + textbackground(1); + textcolor(15); + for (i = 0;i < 6;i++) + { + sprintf(name,SAVENAME,i); + handle = open (name, O_BINARY | O_RDONLY); + if (handle == -1) + continue; + + read(handle,savenames[i],24); + lseek(handle,27+16,SEEK_SET); + read(handle,&p1,1); + read(handle,&p2,1); + read(handle,&p3,1); + read(handle,&p4,1); + numplayers[i] = p1+p2+p3+p4; + close(handle); + + Clear(&modsaveitems[i]); + Pos(&modsaveitems[i]); + cprintf("%s",savenames[i]); + } + + // + // Set defaults + // + minfo.comtype = 1; + DrawRadios(&modsconng); + + minfo.comport = comport; + DrawRadios(&modscomg); + + minfo.deathMatch = 0; + DrawRadios(&modsdeathg); + + strcpy(minfo.phonenum,""); + gotoxy(1,25); + + while(1) + { + SetupMenu(&modsavemenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + +exitandsave: + case KEY_F10: + + if (saveslot < 0) + { + ErrorWindow(&netserr); + break; + } + + modeminfo = minfo; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-nodes"; + sprintf(string[argcount],"%d",numplayers[saveslot]); + args[argcount] = string[argcount]; + argcount++; + + if (modeminfo.deathMatch) + args[argcount++] = "-deathmatch"; + + sprintf(string[argcount],"-com%d",modeminfo.comport); + args[argcount] = string[argcount]; + argcount++; + + switch(modeminfo.comtype) + { + case 0: // no parameter if already connected! + break; + case 1: + args[argcount++] = "-answer"; + break; + case 2: + args[argcount++] = "-dial"; + sprintf(string[argcount],"%s",minfo.phonenum); + args[argcount] = string[argcount]; + argcount++; + break; + } + + args[argcount++] = "-loadgame"; + sprintf(string[argcount],"%d",saveslot); + args[argcount] = string[argcount]; + argcount++; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(0); + + case KEY_F2: + if (ChooseOpponentInList()) + { + strcpy(minfo.phonenum,chosenPhoneNum); + textcolor(15); + textbackground(0); + Clear(&phonenum); + Pos(&phonenum); + cprintf("%s",minfo.phonenum); + minfo.comtype = 2; + DrawRadios(&modsconng); + gotoxy(1,25); + } + break; + + case KEY_ENTER: + switch ( field ) + { + case MODS_COM1: + case MODS_COM2: + case MODS_COM3: + case MODS_COM4: + minfo.comport = field - MODS_COM1 + 1; + DrawRadios(&modscomg); + break; + + case MODS_CONN1: + case MODS_CONN2: + minfo.comtype = field - MODS_CONN1; + DrawRadios(&modsconng); + break; + case MODS_CONN3: + minfo.comtype = 2; + DrawRadios(&modsconng); + key = EditLine(&phonenum,tempstring,12); + if (key == KEY_ENTER) + strcpy(minfo.phonenum,tempstring); + gotoxy(1,25); + break; + + case MODS_0: + case MODS_1: + case MODS_2: + case MODS_3: + case MODS_4: + case MODS_5: + if (!savenames[field - MODS_0][0]) + { + sound(1000); + delay(12); + nosound(); + break; + } + saveslot = field - MODS_0; + DrawRadios(&modslotsg); + break; + + // + // Deathmatch + // + case MODS_DEATHNO: + case MODS_DEATHYES: + minfo.deathMatch = field - MODS_DEATHNO; + DrawRadios(&modsdeathg); + break; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + diff --git a/MODREST.OBJ b/MODREST.OBJ new file mode 100644 index 0000000..08b13ec Binary files /dev/null and b/MODREST.OBJ differ diff --git a/MUSIC.BAK b/MUSIC.BAK new file mode 100644 index 0000000..ce4d3b6 --- /dev/null +++ b/MUSIC.BAK @@ -0,0 +1,554 @@ +#include "main.h" +#include "menu.h" +#include "default.h" +#include "keys.h" + +// +// Choose MIDI port +// +enum +{ + MIDI_220, + MIDI_230, + MIDI_240, + MIDI_250, + MIDI_300, + MIDI_320, + MIDI_330, + MIDI_332, + MIDI_334, + MIDI_336, + MIDI_340, + MIDI_360, + MIDI_MAX +}; + +item_t midiportitems[]= +{ + {MIDI_220, 32,6,13, -1,-1}, + {MIDI_230, 32,7,13, -1,-1}, + {MIDI_240, 32,8,13, -1,-1}, + {MIDI_250, 32,9,13, -1,-1}, + {MIDI_300, 32,10,13, -1,-1}, + {MIDI_320, 32,11,13, -1,-1}, + {MIDI_330, 32,12,13, -1,-1}, + {MIDI_332, 32,13,13, -1,-1}, + {MIDI_334, 32,14,13, -1,-1}, + {MIDI_336, 32,15,13, -1,-1}, + {MIDI_340, 32,16,13, -1,-1}, + {MIDI_360, 32,17,13, -1,-1} +}; + +menu_t midiportmenu= +{ + &midiportitems[0], + MIDI_330, + MIDI_MAX, + 0x7f +}; + +int ChooseMidiPort (DMXCARD * card) +{ + short field; + short key; + int rval = 0; + + SaveScreen(); + DrawPup(&midiport); + + // DEFAULT FIELD ======================================== + + switch ( card->midiport ) + { + default: + case 0x220: + field = MIDI_220; + break; + + case 0x230: + field = MIDI_230; + break; + + case 0x240: + field = MIDI_240; + break; + + case 0x250: + field = MIDI_250; + break; + + case 0x300: + field = MIDI_300; + break; + + case 0x320: + field = MIDI_320; + break; + + case 0x330: + field = MIDI_330; + break; + + case 0x332: + field = MIDI_332; + break; + + case 0x334: + field = MIDI_334; + break; + + case 0x336: + field = MIDI_336; + break; + + case 0x340: + field = MIDI_340; + break; + + case 0x360: + field = MIDI_360; + break; + } + + while(1) + { + SetupMenu(&midiportmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case MIDI_220: + card->midiport = 0x220; + goto func_exit; + + case MIDI_230: + card->midiport = 0x230; + goto func_exit; + + case MIDI_240: + card->midiport = 0x240; + goto func_exit; + + case MIDI_250: + card->midiport = 0x250; + goto func_exit; + + case MIDI_300: + card->midiport = 0x300; + goto func_exit; + + case MIDI_320: + card->midiport = 0x320; + goto func_exit; + + case MIDI_330: + card->midiport = 0x330; + goto func_exit; + + case MIDI_332: + card->midiport = 0x332; + goto func_exit; + + case MIDI_334: + card->midiport = 0x334; + goto func_exit; + + case MIDI_336: + card->midiport = 0x336; + goto func_exit; + + case MIDI_340: + card->midiport = 0x340; + goto func_exit; + + case MIDI_360: + card->midiport = 0x360; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + +// +// Choose which SoundBlaster port to use (or any port!) +// +enum +{ + SB_PORT_210, + SB_PORT_220, + SB_PORT_230, + SB_PORT_240, + SB_PORT_250, + SB_PORT_260, + SB_PORT_280, + SB_PORT_MAX +}; + +item_t sbportitems[]= +{ + {SB_PORT_210, 32,9,13, -1,-1}, + {SB_PORT_220, 32,10,13, -1,-1}, + {SB_PORT_230, 32,11,13, -1,-1}, + {SB_PORT_240, 32,12,13, -1,-1}, + {SB_PORT_250, 32,13,13, -1,-1}, + {SB_PORT_260, 32,14,13, -1,-1}, + {SB_PORT_280, 32,15,13, -1,-1} +}; + +menu_t sbportmenu = +{ + &sbportitems[0], + SB_PORT_220, + SB_PORT_MAX, + 0x7f +}; + +int ChooseSbPort (DMXCARD * card) // RETURN: 0 = OK, -1 == ABORT +{ + short field; + short key; + int rval = 0; + + SaveScreen(); + DrawPup(&sbport); + + // DEFAULT FIELD ======================================== + + switch ( card->port ) + { + default: + field = SB_PORT_220; + break; + + case 0x210: + field = SB_PORT_210; + break; + + case 0x220: + field = SB_PORT_220; + break; + + case 0x230: + field = SB_PORT_230; + break; + + case 0x240: + field = SB_PORT_240; + break; + + case 0x250: + field = SB_PORT_250; + break; + + case 0x260: + field = SB_PORT_260; + break; + + case 0x280: + field = SB_PORT_280; + break; + } + + sbportmenu.startitem = field; + while(1) + { + SetupMenu(&sbportmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case SB_PORT_210: + card->port = 0x210; + goto func_exit; + + case SB_PORT_220: + card->port = 0x220; + goto func_exit; + + case SB_PORT_230: + card->port = 0x230; + goto func_exit; + + case SB_PORT_240: + card->port = 0x240; + goto func_exit; + + case SB_PORT_250: + card->port = 0x250; + goto func_exit; + + case SB_PORT_260: + card->port = 0x260; + goto func_exit; + + case SB_PORT_280: + card->port = 0x280; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + +// +// Menu for choosing Music Card +// +enum +{ + MCARD_GMIDI, + MCARD_SBAWE32, + MCARD_CANVAS, + MCARD_WAVE, + MCARD_GUS, + MCARD_PAS, + MCARD_SB, + MCARD_ADLIB, + MCARD_NONE, + MCARD_MAX +}; + +item_t mcarditems[]= +{ + {MCARD_GMIDI, 26,8,28, -1,-1}, + {MCARD_SBAWE32,26,9,28, -1,-1}, + {MCARD_CANVAS, 26,10,28, -1,-1}, + {MCARD_WAVE, 26,11,28, -1,-1}, + {MCARD_GUS, 26,12,28, -1,-1}, + {MCARD_PAS, 26,13,28, -1,-1}, + {MCARD_SB, 26,14,28, -1,-1}, + {MCARD_ADLIB, 26,15,28, -1,-1}, + {MCARD_NONE, 26,16,28, -1,-1} +}; + +menu_t mcardmenu = +{ + &mcarditems[0], + MCARD_NONE, + MCARD_MAX, + 0x7f +}; + +int ChooseMusicCard (void) // RETURN: 0 = OK, -1 == ABORT +{ + short key; + short field; + int rval = 0; + + switch ( newc.m.card ) + { + default: + case M_NONE: + field = MCARD_NONE; + break; + + case M_ADLIB: + field = MCARD_ADLIB; + break; + + case M_PAS: + field = MCARD_PAS; + break; + + case M_GUS: + field = MCARD_GUS; + break; + + case M_SB: + field = MCARD_SB; + break; + + case M_WAVE: + field = MCARD_WAVE; + break; + + case M_CANVAS: + field = MCARD_CANVAS; + break; + + case M_SBAWE32: + field = MCARD_SBAWE32; + break; + + case M_GMIDI: + field = MCARD_GMIDI; + break; + } + + mcardmenu.startitem = field; + SaveScreen(); + DrawPup(&mcard); + + while(1) + { + SetupMenu(&mcardmenu); + field = GetMenuInput(); + key = menukey; + + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case MCARD_SBAWE32: + newc.m.card = M_SBAWE32; + newc.m.port = -1; + newc.m.irq = -1; + newc.m.dma = -1; + goto func_exit; + + case MCARD_GMIDI: + newc.m.card = M_GMIDI; + newc.m.port = -1; + newc.m.irq = -1; + newc.m.dma = -1; + goto func_exit; + + case MCARD_CANVAS: + newc.m.card = M_CANVAS; + newc.m.port = -1; + newc.m.irq = -1; + newc.m.dma = -1; + goto func_exit; + + case MCARD_WAVE: + newc.m.card = M_WAVE; + newc.m.port = -1; + newc.m.irq = -1; + newc.m.dma = -1; + goto func_exit; + + case MCARD_SB: + newc.m.card = M_SB; + goto func_exit; + + case MCARD_PAS: + newc.m.card = M_PAS; + newc.m.midiport = -1; + goto func_exit; + + case MCARD_GUS: + newc.m.card = M_GUS; + newc.m.midiport = -1; + goto func_exit; + + case MCARD_ADLIB: + newc.m.card = M_ADLIB; + newc.m.port = -1; + newc.m.midiport = -1; + newc.m.irq = -1; + newc.m.dma = -1; + goto func_exit; + + case MCARD_NONE: + newc.m.card = M_NONE; + newc.m.port = -1; + newc.m.midiport = -1; + newc.m.irq = -1; + newc.m.dma = -1; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + + +// +// Choose Music Card menu +// +int SetupMusic (void) +{ + if ( ChooseMusicCard() == -1 ) return ( -1 ); + + DrawCurrentConfig(); + + switch ( newc.m.card ) + { + default: + savemusic = FALSE; + break; + + case M_NONE: + savemusic = TRUE; + break; + + case M_ADLIB: + savemusic = TRUE; + break; + + case M_PAS: + case M_GUS: + savemusic = TRUE; + break; + + + case M_SB: + if ( ChooseSbPort( &newc.m ) == -1 ) return ( -1 ); + savemusic = TRUE; + break; + + case M_WAVE: + if ( ChooseMidiPort( &newc.m ) == -1 ) return ( -1 ); + savemusic = TRUE; + break; + + case M_SBAWE32: + case M_CANVAS: + newc.m.midiport = 0x330; + if ( ChooseMidiPort( &newc.m ) == -1 ) return ( -1 ); + savemusic = TRUE; + break; + + case M_GMIDI: + if ( ChooseMidiPort( &newc.m ) == -1 ) return ( -1 ); + savemusic = TRUE; + break; + } + return 0; +} diff --git a/MUSIC.C b/MUSIC.C new file mode 100644 index 0000000..50a9d79 --- /dev/null +++ b/MUSIC.C @@ -0,0 +1,553 @@ +#include "main.h" +#include "default.h" +#include "keys.h" + +// +// Choose MIDI port +// +enum +{ + MIDI_220, + MIDI_230, + MIDI_240, + MIDI_250, + MIDI_300, + MIDI_320, + MIDI_330, + MIDI_332, + MIDI_334, + MIDI_336, + MIDI_340, + MIDI_360, + MIDI_MAX +}; + +item_t midiportitems[]= +{ + {MIDI_220, 32,6,13, -1,-1}, + {MIDI_230, 32,7,13, -1,-1}, + {MIDI_240, 32,8,13, -1,-1}, + {MIDI_250, 32,9,13, -1,-1}, + {MIDI_300, 32,10,13, -1,-1}, + {MIDI_320, 32,11,13, -1,-1}, + {MIDI_330, 32,12,13, -1,-1}, + {MIDI_332, 32,13,13, -1,-1}, + {MIDI_334, 32,14,13, -1,-1}, + {MIDI_336, 32,15,13, -1,-1}, + {MIDI_340, 32,16,13, -1,-1}, + {MIDI_360, 32,17,13, -1,-1} +}; + +menu_t midiportmenu= +{ + &midiportitems[0], + MIDI_330, + MIDI_MAX, + 0x7f +}; + +int ChooseMidiPort (DMXCARD * card) +{ + short field; + short key; + int rval = 0; + + SaveScreen(); + DrawPup(&midiport); + + // DEFAULT FIELD ======================================== + + switch ( card->midiport ) + { + default: + case 0x220: + field = MIDI_220; + break; + + case 0x230: + field = MIDI_230; + break; + + case 0x240: + field = MIDI_240; + break; + + case 0x250: + field = MIDI_250; + break; + + case 0x300: + field = MIDI_300; + break; + + case 0x320: + field = MIDI_320; + break; + + case 0x330: + field = MIDI_330; + break; + + case 0x332: + field = MIDI_332; + break; + + case 0x334: + field = MIDI_334; + break; + + case 0x336: + field = MIDI_336; + break; + + case 0x340: + field = MIDI_340; + break; + + case 0x360: + field = MIDI_360; + break; + } + + while(1) + { + SetupMenu(&midiportmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case MIDI_220: + card->midiport = 0x220; + goto func_exit; + + case MIDI_230: + card->midiport = 0x230; + goto func_exit; + + case MIDI_240: + card->midiport = 0x240; + goto func_exit; + + case MIDI_250: + card->midiport = 0x250; + goto func_exit; + + case MIDI_300: + card->midiport = 0x300; + goto func_exit; + + case MIDI_320: + card->midiport = 0x320; + goto func_exit; + + case MIDI_330: + card->midiport = 0x330; + goto func_exit; + + case MIDI_332: + card->midiport = 0x332; + goto func_exit; + + case MIDI_334: + card->midiport = 0x334; + goto func_exit; + + case MIDI_336: + card->midiport = 0x336; + goto func_exit; + + case MIDI_340: + card->midiport = 0x340; + goto func_exit; + + case MIDI_360: + card->midiport = 0x360; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + +// +// Choose which SoundBlaster port to use (or any port!) +// +enum +{ + SB_PORT_210, + SB_PORT_220, + SB_PORT_230, + SB_PORT_240, + SB_PORT_250, + SB_PORT_260, + SB_PORT_280, + SB_PORT_MAX +}; + +item_t sbportitems[]= +{ + {SB_PORT_210, 32,9,13, -1,-1}, + {SB_PORT_220, 32,10,13, -1,-1}, + {SB_PORT_230, 32,11,13, -1,-1}, + {SB_PORT_240, 32,12,13, -1,-1}, + {SB_PORT_250, 32,13,13, -1,-1}, + {SB_PORT_260, 32,14,13, -1,-1}, + {SB_PORT_280, 32,15,13, -1,-1} +}; + +menu_t sbportmenu = +{ + &sbportitems[0], + SB_PORT_220, + SB_PORT_MAX, + 0x7f +}; + +int ChooseSbPort (DMXCARD * card) // RETURN: 0 = OK, -1 == ABORT +{ + short field; + short key; + int rval = 0; + + SaveScreen(); + DrawPup(&sbport); + + // DEFAULT FIELD ======================================== + + switch ( card->port ) + { + default: + field = SB_PORT_220; + break; + + case 0x210: + field = SB_PORT_210; + break; + + case 0x220: + field = SB_PORT_220; + break; + + case 0x230: + field = SB_PORT_230; + break; + + case 0x240: + field = SB_PORT_240; + break; + + case 0x250: + field = SB_PORT_250; + break; + + case 0x260: + field = SB_PORT_260; + break; + + case 0x280: + field = SB_PORT_280; + break; + } + + sbportmenu.startitem = field; + while(1) + { + SetupMenu(&sbportmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case SB_PORT_210: + card->port = 0x210; + goto func_exit; + + case SB_PORT_220: + card->port = 0x220; + goto func_exit; + + case SB_PORT_230: + card->port = 0x230; + goto func_exit; + + case SB_PORT_240: + card->port = 0x240; + goto func_exit; + + case SB_PORT_250: + card->port = 0x250; + goto func_exit; + + case SB_PORT_260: + card->port = 0x260; + goto func_exit; + + case SB_PORT_280: + card->port = 0x280; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + +// +// Menu for choosing Music Card +// +enum +{ + MCARD_GMIDI, + MCARD_SBAWE32, + MCARD_CANVAS, + MCARD_WAVE, + MCARD_GUS, + MCARD_PAS, + MCARD_SB, + MCARD_ADLIB, + MCARD_NONE, + MCARD_MAX +}; + +item_t mcarditems[]= +{ + {MCARD_GMIDI, 26,8,28, -1,-1}, + {MCARD_SBAWE32,26,9,28, -1,-1}, + {MCARD_CANVAS, 26,10,28, -1,-1}, + {MCARD_WAVE, 26,11,28, -1,-1}, + {MCARD_GUS, 26,12,28, -1,-1}, + {MCARD_PAS, 26,13,28, -1,-1}, + {MCARD_SB, 26,14,28, -1,-1}, + {MCARD_ADLIB, 26,15,28, -1,-1}, + {MCARD_NONE, 26,16,28, -1,-1} +}; + +menu_t mcardmenu = +{ + &mcarditems[0], + MCARD_NONE, + MCARD_MAX, + 0x7f +}; + +int ChooseMusicCard (void) // RETURN: 0 = OK, -1 == ABORT +{ + short key; + short field; + int rval = 0; + + switch ( newc.m.card ) + { + default: + case M_NONE: + field = MCARD_NONE; + break; + + case M_ADLIB: + field = MCARD_ADLIB; + break; + + case M_PAS: + field = MCARD_PAS; + break; + + case M_GUS: + field = MCARD_GUS; + break; + + case M_SB: + field = MCARD_SB; + break; + + case M_WAVE: + field = MCARD_WAVE; + break; + + case M_CANVAS: + field = MCARD_CANVAS; + break; + + case M_SBAWE32: + field = MCARD_SBAWE32; + break; + + case M_GMIDI: + field = MCARD_GMIDI; + break; + } + + mcardmenu.startitem = field; + SaveScreen(); + DrawPup(&mcard); + + while(1) + { + SetupMenu(&mcardmenu); + field = GetMenuInput(); + key = menukey; + + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case MCARD_SBAWE32: + newc.m.card = M_SBAWE32; + newc.m.port = -1; + newc.m.irq = -1; + newc.m.dma = -1; + goto func_exit; + + case MCARD_GMIDI: + newc.m.card = M_GMIDI; + newc.m.port = -1; + newc.m.irq = -1; + newc.m.dma = -1; + goto func_exit; + + case MCARD_CANVAS: + newc.m.card = M_CANVAS; + newc.m.port = -1; + newc.m.irq = -1; + newc.m.dma = -1; + goto func_exit; + + case MCARD_WAVE: + newc.m.card = M_WAVE; + newc.m.port = -1; + newc.m.irq = -1; + newc.m.dma = -1; + goto func_exit; + + case MCARD_SB: + newc.m.card = M_SB; + goto func_exit; + + case MCARD_PAS: + newc.m.card = M_PAS; + newc.m.midiport = -1; + goto func_exit; + + case MCARD_GUS: + newc.m.card = M_GUS; + newc.m.midiport = -1; + goto func_exit; + + case MCARD_ADLIB: + newc.m.card = M_ADLIB; + newc.m.port = -1; + newc.m.midiport = -1; + newc.m.irq = -1; + newc.m.dma = -1; + goto func_exit; + + case MCARD_NONE: + newc.m.card = M_NONE; + newc.m.port = -1; + newc.m.midiport = -1; + newc.m.irq = -1; + newc.m.dma = -1; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + + +// +// Choose Music Card menu +// +int SetupMusic (void) +{ + if ( ChooseMusicCard() == -1 ) return ( -1 ); + + DrawCurrentConfig(); + + switch ( newc.m.card ) + { + default: + savemusic = FALSE; + break; + + case M_NONE: + savemusic = TRUE; + break; + + case M_ADLIB: + savemusic = TRUE; + break; + + case M_PAS: + case M_GUS: + savemusic = TRUE; + break; + + + case M_SB: + if ( ChooseSbPort( &newc.m ) == -1 ) return ( -1 ); + savemusic = TRUE; + break; + + case M_WAVE: + if ( ChooseMidiPort( &newc.m ) == -1 ) return ( -1 ); + savemusic = TRUE; + break; + + case M_SBAWE32: + case M_CANVAS: + newc.m.midiport = 0x330; + if ( ChooseMidiPort( &newc.m ) == -1 ) return ( -1 ); + savemusic = TRUE; + break; + + case M_GMIDI: + if ( ChooseMidiPort( &newc.m ) == -1 ) return ( -1 ); + savemusic = TRUE; + break; + } + return 0; +} diff --git a/MUSIC.OBJ b/MUSIC.OBJ new file mode 100644 index 0000000..f601b1a Binary files /dev/null and b/MUSIC.OBJ differ diff --git a/NET.BAK b/NET.BAK new file mode 100644 index 0000000..0125ca6 --- /dev/null +++ b/NET.BAK @@ -0,0 +1,430 @@ +// +// Enter network config info +// +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "default.h" + +#ifndef DOOM2 +#define NET_EPY 3 // Y-coord for Episode group +#define NET_NPY 7 // Number of players +#define NET_SKY 11 // Skill level +#define NET_DMY 17 // Deathmatch +#define NET_STY 20 // Socket value +#else +#define NET_NPY 5 +#define NET_SKY 9 +#define NET_DMY 15 +#define NET_STY 18 +#endif + +#ifndef DOOM2 +// # of players radio group +radio_t netepi[]= +{ + {28,NET_EPY,1}, + {28,NET_EPY+1,2}, + {28,NET_EPY+2,3} +}; +radiogroup_t netepig={&netepi[0],3,&info.episode,15,1}; +#endif + +// # of players radio group +radio_t netp[]= +{ + {28,NET_NPY,2}, + {28,NET_NPY+1,3}, + {28,NET_NPY+2,4} +}; +radiogroup_t netpg={&netp[0],3,&info.numberOfPlayers,15,1}; + +// SKILL radio group +radio_t netskill[]= +{ + {28,NET_SKY,1}, + {28,NET_SKY+1,2}, + {28,NET_SKY+2,3}, + {28,NET_SKY+3,4}, + {28,NET_SKY+4,5} +}; +radiogroup_t netskillg={&netskill[0],5,&info.skillLevel,15,1}; + +// DEATHMATCH radio group +radio_t netdeath[]= +{ + {28,NET_DMY,0}, + {28,NET_DMY+1,1} +}; +radiogroup_t netdeathg={&netdeath[0],2,&info.deathMatch,15,1}; + +enum +{ + #ifndef DOOM2 + NET_EPISODE0, NET_EPISODE1, NET_EPISODE2, + #endif + NET_P2, NET_P3, NET_P4, + NET_SKILL1, NET_SKILL2, NET_SKILL3, NET_SKILL4, NET_SKILL5, + NET_DEATHNO, NET_DEATHYES, + NET_SOCKET, + NET_MAX +}; +item_t netwkitems[]= +{ +#ifndef DOOM2 + {NET_EPISODE0, 31,NET_EPY,21, -1,-1}, + {NET_EPISODE1, 31,NET_EPY+1,21, -1,-1}, + {NET_EPISODE2, 31,NET_EPY+2,21, -1,-1}, +#endif + {NET_P2, 31,NET_NPY,20, -1,-1}, + {NET_P3, 31,NET_NPY+1,20, -1,-1}, + {NET_P4, 31,NET_NPY+2,20, -1,-1}, + + {NET_SKILL1, 31,NET_SKY,20, -1,-1}, + {NET_SKILL2, 31,NET_SKY+1,20, -1,-1}, + {NET_SKILL3, 31,NET_SKY+2,20, -1,-1}, + {NET_SKILL4, 31,NET_SKY+3,20, -1,-1}, + {NET_SKILL5, 31,NET_SKY+4,20, -1,-1}, + + {NET_DEATHNO, 31,NET_DMY,20, -1,-1}, + {NET_DEATHYES, 31,NET_DMY+1,20, -1,-1}, + + {NET_SOCKET, 28,NET_STY,12, -1,-1}, +}; +menu_t netwkmenu= +{ + &netwkitems[0], + #ifndef DOOM2 + NET_EPISODE0, + #else + NET_P2, + #endif + NET_MAX, + 0x7f +}; + +int NetworkConfig(void) +{ + short key; + short field; + int rval = 0; + char *args[MAXARGS]; + int argcount; + char string[MAXARGS*2][12]; + int i; + int level; + char tempstring[10]; + + + info = netinfo; // save copy of netinfo + + SaveScreen(); + DrawPup(&netwk2); + // + // Set defaults + // + info.networkSocket = 0; + textbackground(1); + textcolor(15); + Clear(&netwkitems[NET_SOCKET]); + Pos(&netwkitems[NET_SOCKET]); + cprintf("%u",info.networkSocket); + gotoxy(1,25); + + info.numberOfPlayers = 2; + DrawRadios(&netpg); + + info.skillLevel = 3; + DrawRadios(&netskillg); + + info.episode = 1; + #ifndef DOOM2 + DrawRadios(&netepig); + #endif + + info.deathMatch = 0; + DrawRadios(&netdeathg); + + while(1) + { + SetupMenu(&netwkmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + // + // WARP + // + case KEY_F1: + { + level = WarpTime(); + if (!level) + continue; + + #pragma warn -cln + if (info.networkSocket > 64000) + #pragma warn +cln + { + sound(100); + delay(3); + nosound(); + textcolor(0); + textbackground(7); + gotoxy(2,25); + cprintf("Invalid port socket value! Re-enter it."); + netwkmenu.startitem = NET_SOCKET; + gotoxy(1,25); + goto func_exit; + } + + netinfo = info; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "ipxsetup.exe"; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-nodes"; + sprintf(string[argcount],"%d",netinfo.numberOfPlayers); + args[argcount] = string[argcount]; + argcount++; + + args[argcount++] = "-skill"; + sprintf(string[argcount],"%d",netinfo.skillLevel); + args[argcount] = string[argcount]; + argcount++; + + + if (!level) + { + #ifndef DOOM2 + args[argcount++] = "-episode"; + sprintf(string[argcount],"%d",netinfo.episode); + args[argcount] = string[argcount]; + argcount++; + #endif + } + else + { + args[argcount++] = "-warp"; + + #ifdef DOOM2 + sprintf(string[argcount],"%d",level); + args[argcount] = string[argcount]; + #else + sprintf(string[argcount],"%d",level>>8); + args[argcount] = string[argcount]; + argcount++; + sprintf(string[argcount],"%d",level&0x0f); + args[argcount] = string[argcount]; + #endif + + argcount++; + } + + + if (netinfo.networkSocket) + { + args[argcount++] = "-port"; + sprintf(string[argcount],"%u",netinfo.networkSocket); + args[argcount] = string[argcount]; + argcount++; + } + + if (netinfo.deathMatch) + args[argcount++] = "-deathmatch"; + + if (nomonsters) + args[argcount++] = "-nomonsters"; + + if (respawn) + args[argcount++] = "-respawn"; + + if (deathmatch2) + args[argcount++] = "-altdeath"; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("ipxsetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing IPXSETUP for netplay. Need to be in same directory!"); + exit(0); + } + break; + +exitandsave: + case KEY_F10: + + #pragma warn -cln + if (info.networkSocket > 64000) + #pragma warn +cln + { + sound(100); + delay(3); + nosound(); + textcolor(0); + textbackground(7); + gotoxy(2,25); + cprintf("Invalid port socket value! Re-enter it."); + gotoxy(1,25); + netwkmenu.startitem = NET_SOCKET; + break; + } + + netinfo = info; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "ipxsetup.exe"; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-nodes"; + sprintf(string[argcount],"%d",netinfo.numberOfPlayers); + args[argcount] = string[argcount]; + argcount++; + + args[argcount++] = "-skill"; + sprintf(string[argcount],"%d",netinfo.skillLevel); + args[argcount] = string[argcount]; + argcount++; + + if (netinfo.networkSocket) + { + args[argcount++] = "-port"; + sprintf(string[argcount],"%u",netinfo.networkSocket); + args[argcount] = string[argcount]; + argcount++; + } + + if (netinfo.deathMatch) + args[argcount++] = "-deathmatch"; + + #ifndef DOOM2 + args[argcount++] = "-episode"; + sprintf(string[argcount],"%d",netinfo.episode); + args[argcount] = string[argcount]; + argcount++; + #endif + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("ipxsetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing IPXSETUP for netplay. Need to be in same directory!"); + exit(0); + + case KEY_ENTER: + switch ( field ) + { + #ifndef DOOM2 + // + // Episode + // + case NET_EPISODE0: + case NET_EPISODE1: + case NET_EPISODE2: + info.episode = field - NET_EPISODE0 + 1; + break; + #endif + + // + // Number of players + // + case NET_P2: + case NET_P3: + case NET_P4: + info.numberOfPlayers = field - NET_P2 + 2; + break; + + // + // Skill level + // + case NET_SKILL1: + case NET_SKILL2: + case NET_SKILL3: + case NET_SKILL4: + case NET_SKILL5: + info.skillLevel = field - NET_SKILL1 + 1; break; + + // + // Deathmatch + // + case NET_DEATHNO: + case NET_DEATHYES: + info.deathMatch = field - NET_DEATHNO; break; + + // + // Network socket # + // + case NET_SOCKET: + ltoa(info.networkSocket,tempstring,10); + key = EditLine(&netwkitems[NET_SOCKET],tempstring,8); + if (key == KEY_ENTER) + info.networkSocket = atoi(tempstring); + textcolor(15); + textbackground(1); + Clear(&netwkitems[NET_SOCKET]); + Pos(&netwkitems[NET_SOCKET]); + cprintf("%u",info.networkSocket); + gotoxy(1,25); + break; + + default: + break; + } + #ifndef DOOM2 + DrawRadios(&netepig); + #endif + DrawRadios(&netpg); + DrawRadios(&netskillg); + DrawRadios(&netdeathg); + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + diff --git a/NET.C b/NET.C new file mode 100644 index 0000000..24617ec --- /dev/null +++ b/NET.C @@ -0,0 +1,430 @@ +// +// Enter network config info +// +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "default.h" + +#ifndef DOOM2 +#define NET_EPY 3 // Y-coord for Episode group +#define NET_NPY 7 // Number of players +#define NET_SKY 11 // Skill level +#define NET_DMY 17 // Deathmatch +#define NET_STY 20 // Socket value +#else +#define NET_NPY 5 +#define NET_SKY 9 +#define NET_DMY 15 +#define NET_STY 18 +#endif + +#ifndef DOOM2 +// # of players radio group +radio_t netepi[]= +{ + {28,NET_EPY,1}, + {28,NET_EPY+1,2}, + {28,NET_EPY+2,3} +}; +radiogroup_t netepig={&netepi[0],3,&info.episode,15,1}; +#endif + +// # of players radio group +radio_t netp[]= +{ + {28,NET_NPY,2}, + {28,NET_NPY+1,3}, + {28,NET_NPY+2,4} +}; +radiogroup_t netpg={&netp[0],3,&info.numberOfPlayers,15,1}; + +// SKILL radio group +radio_t netskill[]= +{ + {28,NET_SKY,1}, + {28,NET_SKY+1,2}, + {28,NET_SKY+2,3}, + {28,NET_SKY+3,4}, + {28,NET_SKY+4,5} +}; +radiogroup_t netskillg={&netskill[0],5,&info.skillLevel,15,1}; + +// DEATHMATCH radio group +radio_t netdeath[]= +{ + {28,NET_DMY,0}, + {28,NET_DMY+1,1} +}; +radiogroup_t netdeathg={&netdeath[0],2,&info.deathMatch,15,1}; + +enum +{ + #ifndef DOOM2 + NET_EPISODE0, NET_EPISODE1, NET_EPISODE2, + #endif + NET_P2, NET_P3, NET_P4, + NET_SKILL1, NET_SKILL2, NET_SKILL3, NET_SKILL4, NET_SKILL5, + NET_DEATHNO, NET_DEATHYES, + NET_SOCKET, + NET_MAX +}; +item_t netwkitems[]= +{ +#ifndef DOOM2 + {NET_EPISODE0, 31,NET_EPY,21, -1,-1}, + {NET_EPISODE1, 31,NET_EPY+1,21, -1,-1}, + {NET_EPISODE2, 31,NET_EPY+2,21, -1,-1}, +#endif + {NET_P2, 31,NET_NPY,21, -1,-1}, + {NET_P3, 31,NET_NPY+1,21, -1,-1}, + {NET_P4, 31,NET_NPY+2,21, -1,-1}, + + {NET_SKILL1, 31,NET_SKY,21, -1,-1}, + {NET_SKILL2, 31,NET_SKY+1,21, -1,-1}, + {NET_SKILL3, 31,NET_SKY+2,21, -1,-1}, + {NET_SKILL4, 31,NET_SKY+3,21, -1,-1}, + {NET_SKILL5, 31,NET_SKY+4,21, -1,-1}, + + {NET_DEATHNO, 31,NET_DMY,20, -1,-1}, + {NET_DEATHYES, 31,NET_DMY+1,20, -1,-1}, + + {NET_SOCKET, 28,NET_STY,12, -1,-1}, +}; +menu_t netwkmenu= +{ + &netwkitems[0], + #ifndef DOOM2 + NET_EPISODE0, + #else + NET_P2, + #endif + NET_MAX, + 0x7f +}; + +int NetworkConfig(void) +{ + short key; + short field; + int rval = 0; + char *args[MAXARGS]; + int argcount; + char string[MAXARGS*2][12]; + int i; + int level; + char tempstring[10]; + + + info = netinfo; // save copy of netinfo + + SaveScreen(); + DrawPup(&netwk2); + // + // Set defaults + // + info.networkSocket = 0; + textbackground(1); + textcolor(15); + Clear(&netwkitems[NET_SOCKET]); + Pos(&netwkitems[NET_SOCKET]); + cprintf("%u",info.networkSocket); + gotoxy(1,25); + + info.numberOfPlayers = 2; + DrawRadios(&netpg); + + info.skillLevel = 3; + DrawRadios(&netskillg); + + info.episode = 1; + #ifndef DOOM2 + DrawRadios(&netepig); + #endif + + info.deathMatch = 0; + DrawRadios(&netdeathg); + + while(1) + { + SetupMenu(&netwkmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + // + // WARP + // + case KEY_F1: + { + level = WarpTime(); + if (!level) + continue; + + #pragma warn -cln + if (info.networkSocket > 64000) + #pragma warn +cln + { + sound(100); + delay(3); + nosound(); + textcolor(0); + textbackground(7); + gotoxy(2,25); + cprintf("Invalid port socket value! Re-enter it."); + netwkmenu.startitem = NET_SOCKET; + gotoxy(1,25); + goto func_exit; + } + + netinfo = info; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "ipxsetup.exe"; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-nodes"; + sprintf(string[argcount],"%d",netinfo.numberOfPlayers); + args[argcount] = string[argcount]; + argcount++; + + args[argcount++] = "-skill"; + sprintf(string[argcount],"%d",netinfo.skillLevel); + args[argcount] = string[argcount]; + argcount++; + + + if (!level) + { + #ifndef DOOM2 + args[argcount++] = "-episode"; + sprintf(string[argcount],"%d",netinfo.episode); + args[argcount] = string[argcount]; + argcount++; + #endif + } + else + { + args[argcount++] = "-warp"; + + #ifdef DOOM2 + sprintf(string[argcount],"%d",level); + args[argcount] = string[argcount]; + #else + sprintf(string[argcount],"%d",level>>8); + args[argcount] = string[argcount]; + argcount++; + sprintf(string[argcount],"%d",level&0x0f); + args[argcount] = string[argcount]; + #endif + + argcount++; + } + + + if (netinfo.networkSocket) + { + args[argcount++] = "-port"; + sprintf(string[argcount],"%u",netinfo.networkSocket); + args[argcount] = string[argcount]; + argcount++; + } + + if (netinfo.deathMatch) + args[argcount++] = "-deathmatch"; + + if (nomonsters) + args[argcount++] = "-nomonsters"; + + if (respawn) + args[argcount++] = "-respawn"; + + if (deathmatch2) + args[argcount++] = "-altdeath"; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("ipxsetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing IPXSETUP for netplay. Need to be in same directory!"); + exit(0); + } + break; + +exitandsave: + case KEY_F10: + + #pragma warn -cln + if (info.networkSocket > 64000) + #pragma warn +cln + { + sound(100); + delay(3); + nosound(); + textcolor(0); + textbackground(7); + gotoxy(2,25); + cprintf("Invalid port socket value! Re-enter it."); + gotoxy(1,25); + netwkmenu.startitem = NET_SOCKET; + break; + } + + netinfo = info; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "ipxsetup.exe"; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-nodes"; + sprintf(string[argcount],"%d",netinfo.numberOfPlayers); + args[argcount] = string[argcount]; + argcount++; + + args[argcount++] = "-skill"; + sprintf(string[argcount],"%d",netinfo.skillLevel); + args[argcount] = string[argcount]; + argcount++; + + if (netinfo.networkSocket) + { + args[argcount++] = "-port"; + sprintf(string[argcount],"%u",netinfo.networkSocket); + args[argcount] = string[argcount]; + argcount++; + } + + if (netinfo.deathMatch) + args[argcount++] = "-deathmatch"; + + #ifndef DOOM2 + args[argcount++] = "-episode"; + sprintf(string[argcount],"%d",netinfo.episode); + args[argcount] = string[argcount]; + argcount++; + #endif + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("ipxsetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing IPXSETUP for netplay. Need to be in same directory!"); + exit(0); + + case KEY_ENTER: + switch ( field ) + { + #ifndef DOOM2 + // + // Episode + // + case NET_EPISODE0: + case NET_EPISODE1: + case NET_EPISODE2: + info.episode = field - NET_EPISODE0 + 1; + break; + #endif + + // + // Number of players + // + case NET_P2: + case NET_P3: + case NET_P4: + info.numberOfPlayers = field - NET_P2 + 2; + break; + + // + // Skill level + // + case NET_SKILL1: + case NET_SKILL2: + case NET_SKILL3: + case NET_SKILL4: + case NET_SKILL5: + info.skillLevel = field - NET_SKILL1 + 1; break; + + // + // Deathmatch + // + case NET_DEATHNO: + case NET_DEATHYES: + info.deathMatch = field - NET_DEATHNO; break; + + // + // Network socket # + // + case NET_SOCKET: + ltoa(info.networkSocket,tempstring,10); + key = EditLine(&netwkitems[NET_SOCKET],tempstring,8); + if (key == KEY_ENTER) + info.networkSocket = atoi(tempstring); + textcolor(15); + textbackground(1); + Clear(&netwkitems[NET_SOCKET]); + Pos(&netwkitems[NET_SOCKET]); + cprintf("%u",info.networkSocket); + gotoxy(1,25); + break; + + default: + break; + } + #ifndef DOOM2 + DrawRadios(&netepig); + #endif + DrawRadios(&netpg); + DrawRadios(&netskillg); + DrawRadios(&netdeathg); + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + diff --git a/NET.OBJ b/NET.OBJ new file mode 100644 index 0000000..4c930e7 Binary files /dev/null and b/NET.OBJ differ diff --git a/NETPLAY.BAK b/NETPLAY.BAK new file mode 100644 index 0000000..354072b --- /dev/null +++ b/NETPLAY.BAK @@ -0,0 +1,350 @@ +#include +#include +#include +#include +#include + +#include "main.h" + +// +// Choose which type of modem to use +// +modem_t modems[MAXMODEMS]; +int numModems; + +// +// Draw a bar of attributes +// +void AttriBar(int x,int y,int length, char attr) +{ + int i; + char far *screen; + + screen = MK_FP(0xb800, y*160 + x*2 + 1); + + for (i = 0;i < length;i++) + { + *screen = attr; + screen += 2; + } +} + + +// +// Parse the MODOOM.STR file +// +int ParseMODOOM(void) +{ + int i; + int ok; + FILE *fp; + int rv; + int found; + + + fp = fopen("MODEM.STR","rt"); + if (fp == NULL) + { + gotoxy(2,25); + cprintf("There's no MODEM.STR file! Press a key. "); + gotoxy(1,25); + sound(2500); + delay(3); + nosound(); + getch(); + return 0; + } + + i = 0; + ok = 1; + do + { + rv = fscanf(fp,"%[^\n]",&modems[i].name); + if (!rv || rv == EOF) + ok = 0; + rv = fscanf(fp,"\n"); + if (rv == EOF) + ok = 0; + + + rv = fscanf(fp,"%[^\n]",&modems[i].init); + if (!rv || rv == EOF) + ok = 0; + rv = fscanf(fp,"\n"); + if (rv == EOF) + ok = 0; + + + rv = fscanf(fp,"%[^\n]",&modems[i].hangup); + if (!rv || rv == EOF) + ok = 0; + rv = fscanf(fp,"\n"); + if (rv == EOF) + ok = 0; + + + rv = fscanf(fp,"%[^\n]",&modems[i].baud); + if (!rv || rv == EOF) + ok = 0; + rv = fscanf(fp,"\n\n"); + if (rv == EOF) + ok = 0; + + + i++; + + } while(ok); + + numModems = i; + fclose(fp); + + + // + // Quick little shell sort + // + do + { + int j; + found = 0; + + for (i = 0; i < numModems-1; i++) + for (j = i+1; j < numModems; j++) + if (strcmp(modems[j].name,modems[i].name)<0) + { + modem_t temp; + + temp = modems[j]; + modems[j] = modems[i]; + modems[i] = temp; + found = 1; + } + } while(found); + + return 1; +} + +// +// Blit the modem names to the screen +// +void BlitModemNames(int start) +{ + int i; + int max; + int y; + int j; + int len; + + max = start + 10; + if (max > numModems) + max = numModems; + + + y = 8; + textbackground(1); + textcolor(11); + for (i = start; i < max; i++) + { + gotoxy(27,y++); + cprintf("%s",modems[i].name); + len = 27 - strlen(modems[i].name); + for (j = 0; j < len; j++) + cprintf(" "); + } + gotoxy(1,25); + +} + +void ChooseModem(void) +{ + int xit; + int blitY; + int hliteY; + int lastHliteY; + FILE *fp; + + if (!ParseMODOOM()) + return; + + SaveScreen(); + DrawPup(&modemchs); + + textbackground(7); + textcolor(0); + #ifndef FRENCH + gotoxy(2,25); + cprintf("Choose the type of modem you are going to use."); + gotoxy(1,25); + #endif + + xit = 0; + blitY = 0; + lastHliteY = hliteY = 0; + do + { + int key; + + BlitModemNames(blitY); + + textbackground(7); + textcolor(0); + gotoxy(70,25); + cprintf("%s ",modems[hliteY + blitY].baud); + gotoxy(1,25); + + AttriBar(26,lastHliteY+7,27,0x1b); + lastHliteY = hliteY; + AttriBar(26,hliteY+7,27,0x7f); + key = _bios_keybrd(_NKEYBRD_READ)>>8; + + switch(key) + { + case 0x1c: // ENTER + gotoxy(2,25); + cprintf("Writing %s to MODEM.CFG...",modems[blitY + hliteY].name); + gotoxy(1,25); + + fp = fopen("MODEM.CFG","w+t"); + if (fp == NULL) + { + gotoxy(2,25); + cprintf("Error writing to MODEM.CFG. Press a key."); + gotoxy(1,25); + getch(); + break; + } + + fprintf(fp,"%s\n%s\n%s\n%s\n\n", + modems[blitY + hliteY].init, + modems[blitY + hliteY].hangup, + modems[blitY + hliteY].baud, + modems[blitY + hliteY].name); + + fclose(fp); + xit = 1; + break; + + case SC_ESC: // ESC + xit = 1; + break; + + case 0x48: // UP + if (hliteY > 5) + hliteY--; + else + if (hliteY > 0 && blitY > 0) + blitY--; + else + if (!blitY && hliteY) + hliteY--; + else + if (!hliteY && blitY) + blitY--; + break; + + case 0x50: // DOWN + if (hliteY > 4 && blitY+10 numModems) + { + blitY = numModems - 10; + hliteY = 9; + } + if (numModems < 10) + { + blitY = 0; + hliteY = numModems - 1; + } + break; + } + + } while(!xit); + + RestoreScreen(); +} + + +// +// Choose which type of netplay +// +enum {GT_IPX,GT_MODEM,GT_SERIAL,GT_CHOOSE,GT_MACROS,GT_MAX}; +item_t netplayitems[]= +{ + {GT_IPX, 26,9,27, -1,-1}, + {GT_MODEM, 26,10,27, -1,-1}, + {GT_SERIAL, 26,11,27, -1,-1}, + + {GT_CHOOSE, 26,13,27, -1,-1}, + {GT_MACROS, 26,14,27, -1,-1} +}; +menu_t netplaymenu= +{ + &netplayitems[0], + GT_IPX, + GT_MAX, + 0x7f +}; + +void ChooseNetplay(void) +{ + short key; + short field; + + SaveScreen(); + DrawPup(&netplay); + + while(1) + { + SetupMenu(&netplaymenu); + field = GetMenuInput(); + key = menukey; + + switch(key) + { + case KEY_ESC: + RestoreScreen(); + return; + + case KEY_ENTER: + if (field == GT_CHOOSE) + { + ChooseModem(); + continue; + } + + switch(field) + { + case GT_IPX: +// NetworkConfig(); + break; + case GT_MODEM: + ModemConfig(); + break; + case GT_SERIAL: + SerialConfig(); + break; + case GT_MACROS: + MacroConfig(); + break; + } + RestoreScreen(); + return; + } + } +} + diff --git a/NETPLAY.C b/NETPLAY.C new file mode 100644 index 0000000..dcde760 --- /dev/null +++ b/NETPLAY.C @@ -0,0 +1,350 @@ +#include +#include +#include +#include +#include + +#include "main.h" + +// +// Choose which type of modem to use +// +modem_t modems[MAXMODEMS]; +int numModems; + +// +// Draw a bar of attributes +// +void AttriBar(int x,int y,int length, char attr) +{ + int i; + char far *screen; + + screen = MK_FP(0xb800, y*160 + x*2 + 1); + + for (i = 0;i < length;i++) + { + *screen = attr; + screen += 2; + } +} + + +// +// Parse the MODOOM.STR file +// +int ParseMODOOM(void) +{ + int i; + int ok; + FILE *fp; + int rv; + int found; + + + fp = fopen("MODEM.STR","rt"); + if (fp == NULL) + { + gotoxy(2,25); + cprintf("There's no MODEM.STR file! Press a key. "); + gotoxy(1,25); + sound(2500); + delay(3); + nosound(); + getch(); + return 0; + } + + i = 0; + ok = 1; + do + { + rv = fscanf(fp,"%[^\n]",&modems[i].name); + if (!rv || rv == EOF) + ok = 0; + rv = fscanf(fp,"\n"); + if (rv == EOF) + ok = 0; + + + rv = fscanf(fp,"%[^\n]",&modems[i].init); + if (!rv || rv == EOF) + ok = 0; + rv = fscanf(fp,"\n"); + if (rv == EOF) + ok = 0; + + + rv = fscanf(fp,"%[^\n]",&modems[i].hangup); + if (!rv || rv == EOF) + ok = 0; + rv = fscanf(fp,"\n"); + if (rv == EOF) + ok = 0; + + + rv = fscanf(fp,"%[^\n]",&modems[i].baud); + if (!rv || rv == EOF) + ok = 0; + rv = fscanf(fp,"\n\n"); + if (rv == EOF) + ok = 0; + + + i++; + + } while(ok); + + numModems = i; + fclose(fp); + + + // + // Quick little shell sort + // + do + { + int j; + found = 0; + + for (i = 0; i < numModems-1; i++) + for (j = i+1; j < numModems; j++) + if (strcmp(modems[j].name,modems[i].name)<0) + { + modem_t temp; + + temp = modems[j]; + modems[j] = modems[i]; + modems[i] = temp; + found = 1; + } + } while(found); + + return 1; +} + +// +// Blit the modem names to the screen +// +void BlitModemNames(int start) +{ + int i; + int max; + int y; + int j; + int len; + + max = start + 10; + if (max > numModems) + max = numModems; + + + y = 8; + textbackground(1); + textcolor(11); + for (i = start; i < max; i++) + { + gotoxy(27,y++); + cprintf("%s",modems[i].name); + len = 27 - strlen(modems[i].name); + for (j = 0; j < len; j++) + cprintf(" "); + } + gotoxy(1,25); + +} + +void ChooseModem(void) +{ + int xit; + int blitY; + int hliteY; + int lastHliteY; + FILE *fp; + + if (!ParseMODOOM()) + return; + + SaveScreen(); + DrawPup(&modemchs); + + textbackground(7); + textcolor(0); + #ifndef FRENCH + gotoxy(2,25); + cprintf("Choose the type of modem you are going to use."); + gotoxy(1,25); + #endif + + xit = 0; + blitY = 0; + lastHliteY = hliteY = 0; + do + { + int key; + + BlitModemNames(blitY); + + textbackground(7); + textcolor(0); + gotoxy(70,25); + cprintf("%s ",modems[hliteY + blitY].baud); + gotoxy(1,25); + + AttriBar(26,lastHliteY+7,27,0x1b); + lastHliteY = hliteY; + AttriBar(26,hliteY+7,27,0x7f); + key = _bios_keybrd(_NKEYBRD_READ)>>8; + + switch(key) + { + case 0x1c: // ENTER + gotoxy(2,25); + cprintf("Writing %s to MODEM.CFG...",modems[blitY + hliteY].name); + gotoxy(1,25); + + fp = fopen("MODEM.CFG","w+t"); + if (fp == NULL) + { + gotoxy(2,25); + cprintf("Error writing to MODEM.CFG. Press a key."); + gotoxy(1,25); + getch(); + break; + } + + fprintf(fp,"%s\n%s\n%s\n%s\n\n", + modems[blitY + hliteY].init, + modems[blitY + hliteY].hangup, + modems[blitY + hliteY].baud, + modems[blitY + hliteY].name); + + fclose(fp); + xit = 1; + break; + + case SC_ESC: // ESC + xit = 1; + break; + + case 0x48: // UP + if (hliteY > 5) + hliteY--; + else + if (hliteY > 0 && blitY > 0) + blitY--; + else + if (!blitY && hliteY) + hliteY--; + else + if (!hliteY && blitY) + blitY--; + break; + + case 0x50: // DOWN + if (hliteY > 4 && blitY+10 numModems) + { + blitY = numModems - 10; + hliteY = 9; + } + if (numModems < 10) + { + blitY = 0; + hliteY = numModems - 1; + } + break; + } + + } while(!xit); + + RestoreScreen(); +} + + +// +// Choose which type of netplay +// +enum {GT_IPX,GT_MODEM,GT_SERIAL,GT_CHOOSE,GT_MACROS,GT_MAX}; +item_t netplayitems[]= +{ + {GT_IPX, 26,9,27, -1,-1}, + {GT_MODEM, 26,10,27, -1,-1}, + {GT_SERIAL, 26,11,27, -1,-1}, + + {GT_CHOOSE, 26,13,27, -1,-1}, + {GT_MACROS, 26,14,27, -1,-1} +}; +menu_t netplaymenu= +{ + &netplayitems[0], + GT_IPX, + GT_MAX, + 0x7f +}; + +void ChooseNetplay(void) +{ + short key; + short field; + + SaveScreen(); + DrawPup(&netplay); + + while(1) + { + SetupMenu(&netplaymenu); + field = GetMenuInput(); + key = menukey; + + switch(key) + { + case KEY_ESC: + RestoreScreen(); + return; + + case KEY_ENTER: + if (field == GT_CHOOSE) + { + ChooseModem(); + continue; + } + + switch(field) + { + case GT_IPX: + NetworkConfig(); + break; + case GT_MODEM: + ModemConfig(); + break; + case GT_SERIAL: + SerialConfig(); + break; + case GT_MACROS: + MacroConfig(); + break; + } + RestoreScreen(); + return; + } + } +} + diff --git a/NETPLAY.OBJ b/NETPLAY.OBJ new file mode 100644 index 0000000..e69b8ad Binary files /dev/null and b/NETPLAY.OBJ differ diff --git a/NETREST.BAK b/NETREST.BAK new file mode 100644 index 0000000..db2fe14 --- /dev/null +++ b/NETREST.BAK @@ -0,0 +1,325 @@ +// +// Enter network savegame info +// +#include +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "default.h" + +char savenames[6][24]; +int saveslot; + +enum {NETS_0,NETS_1,NETS_2,NETS_3,NETS_4,NETS_5, + NETS_DEATHNO,NETS_DEATHYES, + NETS_SOCKET,NETS_MAX}; +item_t netsaveitems[]= +{ + {NETS_0, 29,7,24, -1,-1}, + {NETS_1, 29,8,24, -1,-1}, + {NETS_2, 29,9,24, -1,-1}, + {NETS_3, 29,10,24, -1,-1}, + {NETS_4, 29,11,24, -1,-1}, + {NETS_5, 29,12,24, -1,-1}, + + {NETS_DEATHNO, 29,14,24, -1,-1}, + {NETS_DEATHYES,29,15,24, -1,-1}, + + {NETS_SOCKET, 26,17,16, -1,-1} +}; +menu_t netsavemenu= +{ + &netsaveitems[0], + NETS_0, + NETS_MAX, + 0x7f +}; + +// SAVEGAME radio group +radio_t netslots[]= +{ + {26,7,0}, + {26,8,1}, + {26,9,2}, + {26,10,3}, + {26,11,4}, + {26,12,5} +}; +radiogroup_t netslotsg= { &netslots[0],6,&saveslot,15,1 }; + +// DEATHMATCH radio group +radio_t netsdeath[]= +{ + {26,14,0}, + {26,15,1} +}; +radiogroup_t netsdeathg= { &netsdeath[0],2,&info.deathMatch,15,1 }; + +int RestoreNetwork(void) +{ + short field; + short key; + int rval = 0; + char *args[MAXARGS]; + char string[MAXARGS*2][16]; + int argcount; + int i; + int numplayers[6]; + int handle; + char name[32]; + char p1,p2,p3,p4; + char tempstring[10]; + + + info = netinfo; // save copy of netinfo + + SaveScreen(); + DrawPup(&netsave); + + saveslot = -1; + memset(savenames,0,6*24); + + // + // Read in savegame strings + // + textbackground(1); + textcolor(15); + for (i = 0;i < 6;i++) + { + sprintf(name,"DOOMSAV%d.DSG",i); + handle = open (name, O_BINARY | O_RDONLY); + if (handle == -1) + continue; + + read(handle,savenames[i],24); + lseek(handle,27+16,SEEK_SET); + read(handle,&p1,1); + read(handle,&p2,1); + read(handle,&p3,1); + read(handle,&p4,1); + numplayers[i] = p1+p2+p3+p4; + close(handle); + + Clear(&netsaveitems[i]); + Pos(&netsaveitems[i]); + cprintf("%s",savenames[i]); + } + + // + // Set defaults + // + info.networkSocket = 0; + Clear(&netsaveitems[NETS_SOCKET]); + Pos(&netsaveitems[NETS_SOCKET]); + cprintf("%u",info.networkSocket); + gotoxy(1,25); + + info.deathMatch = 0; + DrawRadios(&netsdeathg); + + while(1) + { + SetupMenu(&netsavemenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + +exitandsave: + case KEY_F10: + + if (saveslot < 0) + { + ErrorWindow(&netserr); + break; + } + + #pragma warn -cln + if (info.networkSocket > 64000) + #pragma warn +cln + { + sound(100); + delay(6); + nosound(); + textbackground(7); + textcolor(0); + gotoxy(2,25); + #ifndef FRENCH + cprintf("Invalid port socket value! Re-enter it."); + #endif + gotoxy(1,25); + netsavemenu.startitem = NETS_SOCKET; + break; + } + + netinfo = info; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "ipxsetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-nodes"; + sprintf(string[argcount],"%d",numplayers[saveslot]); + args[argcount] = string[argcount]; + argcount++; + + if (netinfo.networkSocket) + { + args[argcount++] = "-port"; + sprintf(string[argcount],"%u",netinfo.networkSocket); + args[argcount] = string[argcount]; + argcount++; + } + + if (netinfo.deathMatch) + args[argcount++] = "-deathmatch"; + + args[argcount++] = "-loadgame"; + sprintf(string[argcount],"%d",saveslot); + args[argcount] = string[argcount]; + argcount++; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("ipxsetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing IPXSETUP for netplay. Need to be in same directory!"); + exit(0); + + case KEY_ENTER: + switch ( field ) + { + case NETS_0: + case NETS_1: + case NETS_2: + case NETS_3: + case NETS_4: + case NETS_5: + if (!savenames[field][0]) + { + sound(1000); + delay(12); + nosound(); + break; + } + saveslot = field; + break; + + // + // Deathmatch + // + case NETS_DEATHNO: info.deathMatch = 0; break; + case NETS_DEATHYES: info.deathMatch = 1; break; + + // + // Network socket # + // + case NETS_SOCKET: + ltoa(info.networkSocket,tempstring,10); + key = EditLine(&netsaveitems[NETS_SOCKET],tempstring,8); + if (key == KEY_ENTER) + info.networkSocket = atoi(tempstring); + textcolor(15); + textbackground(1); + Clear(&netsaveitems[NETS_SOCKET]); + Pos(&netsaveitems[NETS_SOCKET]); + cprintf("%u",info.networkSocket); + gotoxy(1,25); + break; + + default: + break; + } + DrawRadios(&netslotsg); + DrawRadios(&netsdeathg); + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + +// +// Choose which type of netplay for SAVEGAME RESTORE +// +enum {NETCH_IPX,NETCH_MOD,NETCH_SER, NETCH_MAX}; +item_t netplay2items[]= +{ + {NETCH_IPX, 27,11,26, -1,-1}, + {NETCH_MOD, 27,12,26, -1,-1}, + {NETCH_SER, 27,13,26, -1,-1} +}; +menu_t netplay2menu= +{ + &netplay2items[0], + NETCH_IPX, + NETCH_MAX, + 0x7f +}; + +void ChooseNetrestore(void) +{ + short key; + short field; + + SaveScreen(); + DrawPup(&netplay2); + + while(1) + { + SetupMenu(&netplay2menu); + field = GetMenuInput(); + key = menukey; + + switch(key) + { + case KEY_ESC: + RestoreScreen(); + return; + + case KEY_ENTER: + RestoreScreen(); + switch(field) + { + case NETCH_IPX: + RestoreNetwork(); + break; + case NETCH_MOD: + RestoreModem(); + break; + case NETCH_SER: + RestoreSerial(); + break; + } + return; + } + } +} diff --git a/NETREST.C b/NETREST.C new file mode 100644 index 0000000..7f2d85f --- /dev/null +++ b/NETREST.C @@ -0,0 +1,325 @@ +// +// Enter network savegame info +// +#include +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "default.h" + +char savenames[6][24]; +int saveslot; + +enum {NETS_0,NETS_1,NETS_2,NETS_3,NETS_4,NETS_5, + NETS_DEATHNO,NETS_DEATHYES, + NETS_SOCKET,NETS_MAX}; +item_t netsaveitems[]= +{ + {NETS_0, 29,7,24, -1,-1}, + {NETS_1, 29,8,24, -1,-1}, + {NETS_2, 29,9,24, -1,-1}, + {NETS_3, 29,10,24, -1,-1}, + {NETS_4, 29,11,24, -1,-1}, + {NETS_5, 29,12,24, -1,-1}, + + {NETS_DEATHNO, 29,14,24, -1,-1}, + {NETS_DEATHYES,29,15,24, -1,-1}, + + {NETS_SOCKET, 26,17,16, -1,-1} +}; +menu_t netsavemenu= +{ + &netsaveitems[0], + NETS_0, + NETS_MAX, + 0x7f +}; + +// SAVEGAME radio group +radio_t netslots[]= +{ + {26,7,0}, + {26,8,1}, + {26,9,2}, + {26,10,3}, + {26,11,4}, + {26,12,5} +}; +radiogroup_t netslotsg= { &netslots[0],6,&saveslot,15,1 }; + +// DEATHMATCH radio group +radio_t netsdeath[]= +{ + {26,14,0}, + {26,15,1} +}; +radiogroup_t netsdeathg= { &netsdeath[0],2,&info.deathMatch,15,1 }; + +int RestoreNetwork(void) +{ + short field; + short key; + int rval = 0; + char *args[MAXARGS]; + char string[MAXARGS*2][16]; + int argcount; + int i; + int numplayers[6]; + int handle; + char name[32]; + char p1,p2,p3,p4; + char tempstring[10]; + + + info = netinfo; // save copy of netinfo + + SaveScreen(); + DrawPup(&netsave); + + saveslot = -1; + memset(savenames,0,6*24); + + // + // Read in savegame strings + // + textbackground(1); + textcolor(15); + for (i = 0;i < 6;i++) + { + sprintf(name,SAVENAME,i); + handle = open (name, O_BINARY | O_RDONLY); + if (handle == -1) + continue; + + read(handle,savenames[i],24); + lseek(handle,27+16,SEEK_SET); + read(handle,&p1,1); + read(handle,&p2,1); + read(handle,&p3,1); + read(handle,&p4,1); + numplayers[i] = p1+p2+p3+p4; + close(handle); + + Clear(&netsaveitems[i]); + Pos(&netsaveitems[i]); + cprintf("%s",savenames[i]); + } + + // + // Set defaults + // + info.networkSocket = 0; + Clear(&netsaveitems[NETS_SOCKET]); + Pos(&netsaveitems[NETS_SOCKET]); + cprintf("%u",info.networkSocket); + gotoxy(1,25); + + info.deathMatch = 0; + DrawRadios(&netsdeathg); + + while(1) + { + SetupMenu(&netsavemenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + +exitandsave: + case KEY_F10: + + if (saveslot < 0) + { + ErrorWindow(&netserr); + break; + } + + #pragma warn -cln + if (info.networkSocket > 64000) + #pragma warn +cln + { + sound(100); + delay(6); + nosound(); + textbackground(7); + textcolor(0); + gotoxy(2,25); + #ifndef FRENCH + cprintf("Invalid port socket value! Re-enter it."); + #endif + gotoxy(1,25); + netsavemenu.startitem = NETS_SOCKET; + break; + } + + netinfo = info; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "ipxsetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-nodes"; + sprintf(string[argcount],"%d",numplayers[saveslot]); + args[argcount] = string[argcount]; + argcount++; + + if (netinfo.networkSocket) + { + args[argcount++] = "-port"; + sprintf(string[argcount],"%u",netinfo.networkSocket); + args[argcount] = string[argcount]; + argcount++; + } + + if (netinfo.deathMatch) + args[argcount++] = "-deathmatch"; + + args[argcount++] = "-loadgame"; + sprintf(string[argcount],"%d",saveslot); + args[argcount] = string[argcount]; + argcount++; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("ipxsetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing IPXSETUP for netplay. Need to be in same directory!"); + exit(0); + + case KEY_ENTER: + switch ( field ) + { + case NETS_0: + case NETS_1: + case NETS_2: + case NETS_3: + case NETS_4: + case NETS_5: + if (!savenames[field][0]) + { + sound(1000); + delay(12); + nosound(); + break; + } + saveslot = field; + break; + + // + // Deathmatch + // + case NETS_DEATHNO: info.deathMatch = 0; break; + case NETS_DEATHYES: info.deathMatch = 1; break; + + // + // Network socket # + // + case NETS_SOCKET: + ltoa(info.networkSocket,tempstring,10); + key = EditLine(&netsaveitems[NETS_SOCKET],tempstring,8); + if (key == KEY_ENTER) + info.networkSocket = atoi(tempstring); + textcolor(15); + textbackground(1); + Clear(&netsaveitems[NETS_SOCKET]); + Pos(&netsaveitems[NETS_SOCKET]); + cprintf("%u",info.networkSocket); + gotoxy(1,25); + break; + + default: + break; + } + DrawRadios(&netslotsg); + DrawRadios(&netsdeathg); + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + +// +// Choose which type of netplay for SAVEGAME RESTORE +// +enum {NETCH_IPX,NETCH_MOD,NETCH_SER, NETCH_MAX}; +item_t netplay2items[]= +{ + {NETCH_IPX, 27,11,26, -1,-1}, + {NETCH_MOD, 27,12,26, -1,-1}, + {NETCH_SER, 27,13,26, -1,-1} +}; +menu_t netplay2menu= +{ + &netplay2items[0], + NETCH_IPX, + NETCH_MAX, + 0x7f +}; + +void ChooseNetrestore(void) +{ + short key; + short field; + + SaveScreen(); + DrawPup(&netplay2); + + while(1) + { + SetupMenu(&netplay2menu); + field = GetMenuInput(); + key = menukey; + + switch(key) + { + case KEY_ESC: + RestoreScreen(); + return; + + case KEY_ENTER: + RestoreScreen(); + switch(field) + { + case NETCH_IPX: + RestoreNetwork(); + break; + case NETCH_MOD: + RestoreModem(); + break; + case NETCH_SER: + RestoreSerial(); + break; + } + return; + } + } +} diff --git a/NETREST.OBJ b/NETREST.OBJ new file mode 100644 index 0000000..8ed8ea5 Binary files /dev/null and b/NETREST.OBJ differ diff --git a/OLDSETUP.BAK b/OLDSETUP.BAK new file mode 100644 index 0000000..174f727 --- /dev/null +++ b/OLDSETUP.BAK @@ -0,0 +1,655 @@ + + +//=================================================== +// +// Enter modem savegame info +// +//=================================================== +int RestoreModem(void) +{ + char * wstr = "MODSAVE"; + short *window; + short field; + int rval = 0; + char *args[MAXARGS]; + int argcount; + char string[MAXARGS*2][16]; + union REGS r; + int i; + int numplayers[6]; + int saveslot; + int handle; + char name[32]; + char p1,p2,p3,p4; + + + minfo = modeminfo; // save copy of netinfo + + field = MS_SAVEGAME0; // FIRST FIELD TO LIGHT BAR + + if ( ( window = IWD_OpenWindow( NULL, wstr ) ) == NULL ) + { + IWD_CloseWRF ( NULL ); + printf( "\nError opening %s window.\n", wstr ); + exit(1); + } + + saveslot = -1; + memset(savenames,0,6*24); + + // + // Read in savegame strings + // + for (i = 0;i < 6;i++) + { + sprintf(name,SAVENAME,i); + handle = open (name, O_BINARY | O_RDONLY); + if (handle == -1) + continue; + + read(handle,savenames[i],24); + lseek(handle,27+16,SEEK_SET); + read(handle,&p1,1); + read(handle,&p2,1); + read(handle,&p3,1); + read(handle,&p4,1); + numplayers[i] = p1+p2+p3+p4; + close(handle); + + IWD_PutFieldData(window,MS_SAVEGAME0+i,savenames[i]); + } + + // + // Set defaults + // + IWD_SetFieldMark(window,MS_CONTYPE0M,0); + IWD_SetFieldMark(window,MS_CONTYPE1M,1); + IWD_SetFieldMark(window,MS_CONTYPE2M,0); + minfo.comtype = 1; + + IWD_SetFieldMark(window,MS_COM1M,1); + IWD_SetFieldMark(window,MS_COM2M,0); + IWD_SetFieldMark(window,MS_COM3M,0); + IWD_SetFieldMark(window,MS_COM4M,0); + minfo.comport = 1; + + IWD_SetFieldMark(window,MS_DEATHNOM2,1); + IWD_SetFieldMark(window,MS_DEATHYESM2,0); + minfo.deathMatch = 0; + + strcpy(minfo.phonenum,""); + IWD_PutFieldDataType(window,MS_PHONENUM, FTYPE_STRING,&minfo.phonenum); + + IWD_ShowWindow ( window ); + + for (;;) + { + switch ( IWD_Dialog ( window, &field, DialogControl, hot_keys ) ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + +exitandsave: + case KEY_F10: + + if (saveslot < 0) + { + short *window; + + if ( ( window = IWD_OpenWindow( NULL, "NETSERR" ) ) == NULL ) + exit(1); + IWD_ShowWindow ( window ); + while(kbhit()); + getch(); + IWD_CloseWindow( window ); + break; + } + + IWD_GetFieldDataType(window,MS_PHONENUM,FTYPE_STRING,&minfo.phonenum); + modeminfo = minfo; + + M_SaveDefaults(); + IWD_CloseWRF( NULL ); + IWD_Shutdown(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-nodes"; + sprintf(string[argcount],"%d",numplayers[saveslot]); + args[argcount] = string[argcount]; + argcount++; + + if (modeminfo.deathMatch) + args[argcount++] = "-deathmatch"; + + sprintf(string[argcount],"-com%d",modeminfo.comport); + args[argcount] = string[argcount]; + argcount++; + + switch(modeminfo.comtype) + { + case 0: // no parameter if already connected! + break; + case 1: + args[argcount++] = "-answer"; + break; + case 2: + args[argcount++] = "-dial"; + sprintf(string[argcount],"%s",minfo.phonenum); + args[argcount] = string[argcount]; + argcount++; + break; + } + + args[argcount++] = "-loadgame"; + sprintf(string[argcount],"%d",saveslot); + args[argcount] = string[argcount]; + argcount++; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + r.x.ax = 3; + int86(0x10,&r,&r); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(0); + + case KEY_CR: + case 32: + switch ( field ) + { + case MS_COM1: + IWD_SetFieldMark(window,MS_COM1M,1); + IWD_SetFieldMark(window,MS_COM2M,0); + IWD_SetFieldMark(window,MS_COM3M,0); + IWD_SetFieldMark(window,MS_COM4M,0); + minfo.comport = 1; + break; + + case MS_COM2: + IWD_SetFieldMark(window,MS_COM1M,0); + IWD_SetFieldMark(window,MS_COM2M,1); + IWD_SetFieldMark(window,MS_COM3M,0); + IWD_SetFieldMark(window,MS_COM4M,0); + minfo.comport = 2; + break; + + case MS_COM3: + IWD_SetFieldMark(window,MS_COM1M,0); + IWD_SetFieldMark(window,MS_COM2M,0); + IWD_SetFieldMark(window,MS_COM3M,1); + IWD_SetFieldMark(window,MS_COM4M,0); + minfo.comport = 3; + break; + + case MS_COM4: + IWD_SetFieldMark(window,MS_COM1M,0); + IWD_SetFieldMark(window,MS_COM2M,0); + IWD_SetFieldMark(window,MS_COM3M,0); + IWD_SetFieldMark(window,MS_COM4M,1); + minfo.comport = 4; + break; + + + case MS_CONTYPE0: + IWD_SetFieldMark(window,MS_CONTYPE0M,1); + IWD_SetFieldMark(window,MS_CONTYPE1M,0); + IWD_SetFieldMark(window,MS_CONTYPE2M,0); + minfo.comtype = 0; + break; + + case MS_CONTYPE1: + IWD_SetFieldMark(window,MS_CONTYPE0M,0); + IWD_SetFieldMark(window,MS_CONTYPE1M,1); + IWD_SetFieldMark(window,MS_CONTYPE2M,0); + minfo.comtype = 1; + break; + + case MS_CONTYPE2: + IWD_SetFieldMark(window,MS_CONTYPE0M,0); + IWD_SetFieldMark(window,MS_CONTYPE1M,0); + IWD_SetFieldMark(window,MS_CONTYPE2M,1); + minfo.comtype = 2; + field = MS_PHONENUM; + break; + + + case MS_SAVEGAME0: + if (!savenames[0][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 0; + IWD_SetFieldMark(window,MS_SAVEGAME0M,1); + IWD_SetFieldMark(window,MS_SAVEGAME1M,0); + IWD_SetFieldMark(window,MS_SAVEGAME2M,0); + IWD_SetFieldMark(window,MS_SAVEGAME3M,0); + IWD_SetFieldMark(window,MS_SAVEGAME4M,0); + IWD_SetFieldMark(window,MS_SAVEGAME5M,0); + break; + + case MS_SAVEGAME1: + if (!savenames[1][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 1; + IWD_SetFieldMark(window,MS_SAVEGAME0M,0); + IWD_SetFieldMark(window,MS_SAVEGAME1M,1); + IWD_SetFieldMark(window,MS_SAVEGAME2M,0); + IWD_SetFieldMark(window,MS_SAVEGAME3M,0); + IWD_SetFieldMark(window,MS_SAVEGAME4M,0); + IWD_SetFieldMark(window,MS_SAVEGAME5M,0); + break; + + + case MS_SAVEGAME2: + if (!savenames[2][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 2; + IWD_SetFieldMark(window,MS_SAVEGAME0M,0); + IWD_SetFieldMark(window,MS_SAVEGAME1M,0); + IWD_SetFieldMark(window,MS_SAVEGAME2M,1); + IWD_SetFieldMark(window,MS_SAVEGAME3M,0); + IWD_SetFieldMark(window,MS_SAVEGAME4M,0); + IWD_SetFieldMark(window,MS_SAVEGAME5M,0); + break; + + case MS_SAVEGAME3: + if (!savenames[3][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 3; + IWD_SetFieldMark(window,MS_SAVEGAME0M,0); + IWD_SetFieldMark(window,MS_SAVEGAME1M,0); + IWD_SetFieldMark(window,MS_SAVEGAME2M,0); + IWD_SetFieldMark(window,MS_SAVEGAME3M,1); + IWD_SetFieldMark(window,MS_SAVEGAME4M,0); + IWD_SetFieldMark(window,MS_SAVEGAME5M,0); + break; + + case MS_SAVEGAME4: + if (!savenames[4][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 4; + IWD_SetFieldMark(window,MS_SAVEGAME0M,0); + IWD_SetFieldMark(window,MS_SAVEGAME1M,0); + IWD_SetFieldMark(window,MS_SAVEGAME2M,0); + IWD_SetFieldMark(window,MS_SAVEGAME3M,0); + IWD_SetFieldMark(window,MS_SAVEGAME4M,1); + IWD_SetFieldMark(window,MS_SAVEGAME5M,0); + break; + + case MS_SAVEGAME5: + if (!savenames[5][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 5; + IWD_SetFieldMark(window,MS_SAVEGAME0M,0); + IWD_SetFieldMark(window,MS_SAVEGAME1M,0); + IWD_SetFieldMark(window,MS_SAVEGAME2M,0); + IWD_SetFieldMark(window,MS_SAVEGAME3M,0); + IWD_SetFieldMark(window,MS_SAVEGAME4M,0); + IWD_SetFieldMark(window,MS_SAVEGAME5M,1); + break; + + // + // Deathmatch + // + case MS_DEATHNO2: + minfo.deathMatch = 0; + IWD_SetFieldMark(window,MS_DEATHNOM2,1); + IWD_SetFieldMark(window,MS_DEATHYESM2,0); + break; + + case MS_DEATHYES2: + minfo.deathMatch = 1; + IWD_SetFieldMark(window,MS_DEATHNOM2,0); + IWD_SetFieldMark(window,MS_DEATHYESM2,1); + break; + + default: + break; + } + break; + } + } + + func_exit: + + IWD_CloseWindow(window); + + return ( rval ); +} + + +//=================================================== +// +// Enter serial-link savegame info +// +//=================================================== +int RestoreSerial(void) +{ + char * wstr = "SERSAVE"; + short *window; + short field; + int rval = 0; + char *args[MAXARGS]; + int argcount; + char string[MAXARGS*2][16]; + union REGS r; + int i; + int numplayers[6]; + int saveslot; + int handle; + char name[32]; + char p1,p2,p3,p4; + + + sinfo = serialinfo; // save copy of netinfo + + field = SS_SAVEGAME0; // FIRST FIELD TO LIGHT BAR + + if ( ( window = IWD_OpenWindow( NULL, wstr ) ) == NULL ) + { + IWD_CloseWRF ( NULL ); + printf( "\nError opening %s window.\n", wstr ); + exit(1); + } + + saveslot = -1; + memset(savenames,0,6*24); + + // + // Read in savegame strings + // + for (i = 0;i < 6;i++) + { + sprintf(name,"DOOMSAV%d.DSG",i); + handle = open (name, O_BINARY | O_RDONLY); + if (handle == -1) + continue; + + read(handle,savenames[i],24); + lseek(handle,27+16,SEEK_SET); + read(handle,&p1,1); + read(handle,&p2,1); + read(handle,&p3,1); + read(handle,&p4,1); + numplayers[i] = p1+p2+p3+p4; + close(handle); + + IWD_PutFieldData(window,SS_SAVEGAME0+i,savenames[i]); + } + + // + // Set defaults + // + IWD_SetFieldMark(window,SS_COM1M,1); + IWD_SetFieldMark(window,SS_COM2M,0); + IWD_SetFieldMark(window,SS_COM3M,0); + IWD_SetFieldMark(window,SS_COM4M,0); + sinfo.comport = 1; + + IWD_SetFieldMark(window,SS_DEATHNOM2,1); + IWD_SetFieldMark(window,SS_DEATHYESM2,0); + sinfo.deathMatch = 0; + + IWD_ShowWindow ( window ); + + for (;;) + { + switch ( IWD_Dialog ( window, &field, DialogControl, hot_keys ) ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + +exitandsave: + case KEY_F10: + + if (saveslot < 0) + { + short *window; + + if ( ( window = IWD_OpenWindow( NULL, "NETSERR" ) ) == NULL ) + exit(1); + IWD_ShowWindow ( window ); + while(kbhit()); + getch(); + IWD_CloseWindow( window ); + break; + } + + serialinfo = sinfo; + + M_SaveDefaults(); + IWD_CloseWRF( NULL ); + IWD_Shutdown(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-nodes"; + sprintf(string[argcount],"%d",numplayers[saveslot]); + args[argcount] = string[argcount]; + argcount++; + + if (modeminfo.deathMatch) + args[argcount++] = "-deathmatch"; + + sprintf(string[argcount],"-com%d",serialinfo.comport); + args[argcount] = string[argcount]; + argcount++; + + args[argcount++] = "-loadgame"; + sprintf(string[argcount],"%d",saveslot); + args[argcount] = string[argcount]; + argcount++; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + r.x.ax = 3; + int86(0x10,&r,&r); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(0); + + case KEY_CR: + case 32: + switch ( field ) + { + case SS_COM1: + IWD_SetFieldMark(window,SS_COM1M,1); + IWD_SetFieldMark(window,SS_COM2M,0); + IWD_SetFieldMark(window,SS_COM3M,0); + IWD_SetFieldMark(window,SS_COM4M,0); + sinfo.comport = 1; + break; + + case SS_COM2: + IWD_SetFieldMark(window,SS_COM1M,0); + IWD_SetFieldMark(window,SS_COM2M,1); + IWD_SetFieldMark(window,SS_COM3M,0); + IWD_SetFieldMark(window,SS_COM4M,0); + sinfo.comport = 2; + break; + + case SS_COM3: + IWD_SetFieldMark(window,SS_COM1M,0); + IWD_SetFieldMark(window,SS_COM2M,0); + IWD_SetFieldMark(window,SS_COM3M,1); + IWD_SetFieldMark(window,SS_COM4M,0); + sinfo.comport = 3; + break; + + case SS_COM4: + IWD_SetFieldMark(window,SS_COM1M,0); + IWD_SetFieldMark(window,SS_COM2M,0); + IWD_SetFieldMark(window,SS_COM3M,0); + IWD_SetFieldMark(window,SS_COM4M,1); + sinfo.comport = 4; + break; + + + case SS_SAVEGAME0: + if (!savenames[0][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 0; + IWD_SetFieldMark(window,SS_SAVEGAME0M,1); + IWD_SetFieldMark(window,SS_SAVEGAME1M,0); + IWD_SetFieldMark(window,SS_SAVEGAME2M,0); + IWD_SetFieldMark(window,SS_SAVEGAME3M,0); + IWD_SetFieldMark(window,SS_SAVEGAME4M,0); + IWD_SetFieldMark(window,SS_SAVEGAME5M,0); + break; + + case SS_SAVEGAME1: + if (!savenames[1][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 1; + IWD_SetFieldMark(window,SS_SAVEGAME0M,0); + IWD_SetFieldMark(window,SS_SAVEGAME1M,1); + IWD_SetFieldMark(window,SS_SAVEGAME2M,0); + IWD_SetFieldMark(window,SS_SAVEGAME3M,0); + IWD_SetFieldMark(window,SS_SAVEGAME4M,0); + IWD_SetFieldMark(window,SS_SAVEGAME5M,0); + break; + + + case SS_SAVEGAME2: + if (!savenames[2][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 2; + IWD_SetFieldMark(window,SS_SAVEGAME0M,0); + IWD_SetFieldMark(window,SS_SAVEGAME1M,0); + IWD_SetFieldMark(window,SS_SAVEGAME2M,1); + IWD_SetFieldMark(window,SS_SAVEGAME3M,0); + IWD_SetFieldMark(window,SS_SAVEGAME4M,0); + IWD_SetFieldMark(window,SS_SAVEGAME5M,0); + break; + + case SS_SAVEGAME3: + if (!savenames[3][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 3; + IWD_SetFieldMark(window,SS_SAVEGAME0M,0); + IWD_SetFieldMark(window,SS_SAVEGAME1M,0); + IWD_SetFieldMark(window,SS_SAVEGAME2M,0); + IWD_SetFieldMark(window,SS_SAVEGAME3M,1); + IWD_SetFieldMark(window,SS_SAVEGAME4M,0); + IWD_SetFieldMark(window,SS_SAVEGAME5M,0); + break; + + case SS_SAVEGAME4: + if (!savenames[4][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 4; + IWD_SetFieldMark(window,SS_SAVEGAME0M,0); + IWD_SetFieldMark(window,SS_SAVEGAME1M,0); + IWD_SetFieldMark(window,SS_SAVEGAME2M,0); + IWD_SetFieldMark(window,SS_SAVEGAME3M,0); + IWD_SetFieldMark(window,SS_SAVEGAME4M,1); + IWD_SetFieldMark(window,SS_SAVEGAME5M,0); + break; + + case SS_SAVEGAME5: + if (!savenames[5][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 5; + IWD_SetFieldMark(window,SS_SAVEGAME0M,0); + IWD_SetFieldMark(window,SS_SAVEGAME1M,0); + IWD_SetFieldMark(window,SS_SAVEGAME2M,0); + IWD_SetFieldMark(window,SS_SAVEGAME3M,0); + IWD_SetFieldMark(window,SS_SAVEGAME4M,0); + IWD_SetFieldMark(window,SS_SAVEGAME5M,1); + break; + + // + // Deathmatch + // + case SS_DEATHNO2: + sinfo.deathMatch = 0; + IWD_SetFieldMark(window,SS_DEATHNOM2,1); + IWD_SetFieldMark(window,SS_DEATHYESM2,0); + break; + + case SS_DEATHYES2: + sinfo.deathMatch = 1; + IWD_SetFieldMark(window,SS_DEATHNOM2,0); + IWD_SetFieldMark(window,SS_DEATHYESM2,1); + break; + + default: + break; + } + break; + } + } + + func_exit: + + IWD_CloseWindow(window); + + return ( rval ); +} + + + + \ No newline at end of file diff --git a/OLDSETUP.C b/OLDSETUP.C new file mode 100644 index 0000000..92f940e --- /dev/null +++ b/OLDSETUP.C @@ -0,0 +1,655 @@ + + +//=================================================== +// +// Enter modem savegame info +// +//=================================================== +int RestoreModem(void) +{ + char * wstr = "MODSAVE"; + short *window; + short field; + int rval = 0; + char *args[MAXARGS]; + int argcount; + char string[MAXARGS*2][16]; + union REGS r; + int i; + int numplayers[6]; + int saveslot; + int handle; + char name[32]; + char p1,p2,p3,p4; + + + minfo = modeminfo; // save copy of netinfo + + field = MS_SAVEGAME0; // FIRST FIELD TO LIGHT BAR + + if ( ( window = IWD_OpenWindow( NULL, wstr ) ) == NULL ) + { + IWD_CloseWRF ( NULL ); + printf( "\nError opening %s window.\n", wstr ); + exit(1); + } + + saveslot = -1; + memset(savenames,0,6*24); + + // + // Read in savegame strings + // + for (i = 0;i < 6;i++) + { + sprintf(name,SAVENAME,i); + handle = open (name, O_BINARY | O_RDONLY); + if (handle == -1) + continue; + + read(handle,savenames[i],24); + lseek(handle,27+16,SEEK_SET); + read(handle,&p1,1); + read(handle,&p2,1); + read(handle,&p3,1); + read(handle,&p4,1); + numplayers[i] = p1+p2+p3+p4; + close(handle); + + IWD_PutFieldData(window,MS_SAVEGAME0+i,savenames[i]); + } + + // + // Set defaults + // + IWD_SetFieldMark(window,MS_CONTYPE0M,0); + IWD_SetFieldMark(window,MS_CONTYPE1M,1); + IWD_SetFieldMark(window,MS_CONTYPE2M,0); + minfo.comtype = 1; + + IWD_SetFieldMark(window,MS_COM1M,1); + IWD_SetFieldMark(window,MS_COM2M,0); + IWD_SetFieldMark(window,MS_COM3M,0); + IWD_SetFieldMark(window,MS_COM4M,0); + minfo.comport = 1; + + IWD_SetFieldMark(window,MS_DEATHNOM2,1); + IWD_SetFieldMark(window,MS_DEATHYESM2,0); + minfo.deathMatch = 0; + + strcpy(minfo.phonenum,""); + IWD_PutFieldDataType(window,MS_PHONENUM, FTYPE_STRING,&minfo.phonenum); + + IWD_ShowWindow ( window ); + + for (;;) + { + switch ( IWD_Dialog ( window, &field, DialogControl, hot_keys ) ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + +exitandsave: + case KEY_F10: + + if (saveslot < 0) + { + short *window; + + if ( ( window = IWD_OpenWindow( NULL, "NETSERR" ) ) == NULL ) + exit(1); + IWD_ShowWindow ( window ); + while(kbhit()); + getch(); + IWD_CloseWindow( window ); + break; + } + + IWD_GetFieldDataType(window,MS_PHONENUM,FTYPE_STRING,&minfo.phonenum); + modeminfo = minfo; + + M_SaveDefaults(); + IWD_CloseWRF( NULL ); + IWD_Shutdown(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-nodes"; + sprintf(string[argcount],"%d",numplayers[saveslot]); + args[argcount] = string[argcount]; + argcount++; + + if (modeminfo.deathMatch) + args[argcount++] = "-deathmatch"; + + sprintf(string[argcount],"-com%d",modeminfo.comport); + args[argcount] = string[argcount]; + argcount++; + + switch(modeminfo.comtype) + { + case 0: // no parameter if already connected! + break; + case 1: + args[argcount++] = "-answer"; + break; + case 2: + args[argcount++] = "-dial"; + sprintf(string[argcount],"%s",minfo.phonenum); + args[argcount] = string[argcount]; + argcount++; + break; + } + + args[argcount++] = "-loadgame"; + sprintf(string[argcount],"%d",saveslot); + args[argcount] = string[argcount]; + argcount++; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + r.x.ax = 3; + int86(0x10,&r,&r); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(0); + + case KEY_CR: + case 32: + switch ( field ) + { + case MS_COM1: + IWD_SetFieldMark(window,MS_COM1M,1); + IWD_SetFieldMark(window,MS_COM2M,0); + IWD_SetFieldMark(window,MS_COM3M,0); + IWD_SetFieldMark(window,MS_COM4M,0); + minfo.comport = 1; + break; + + case MS_COM2: + IWD_SetFieldMark(window,MS_COM1M,0); + IWD_SetFieldMark(window,MS_COM2M,1); + IWD_SetFieldMark(window,MS_COM3M,0); + IWD_SetFieldMark(window,MS_COM4M,0); + minfo.comport = 2; + break; + + case MS_COM3: + IWD_SetFieldMark(window,MS_COM1M,0); + IWD_SetFieldMark(window,MS_COM2M,0); + IWD_SetFieldMark(window,MS_COM3M,1); + IWD_SetFieldMark(window,MS_COM4M,0); + minfo.comport = 3; + break; + + case MS_COM4: + IWD_SetFieldMark(window,MS_COM1M,0); + IWD_SetFieldMark(window,MS_COM2M,0); + IWD_SetFieldMark(window,MS_COM3M,0); + IWD_SetFieldMark(window,MS_COM4M,1); + minfo.comport = 4; + break; + + + case MS_CONTYPE0: + IWD_SetFieldMark(window,MS_CONTYPE0M,1); + IWD_SetFieldMark(window,MS_CONTYPE1M,0); + IWD_SetFieldMark(window,MS_CONTYPE2M,0); + minfo.comtype = 0; + break; + + case MS_CONTYPE1: + IWD_SetFieldMark(window,MS_CONTYPE0M,0); + IWD_SetFieldMark(window,MS_CONTYPE1M,1); + IWD_SetFieldMark(window,MS_CONTYPE2M,0); + minfo.comtype = 1; + break; + + case MS_CONTYPE2: + IWD_SetFieldMark(window,MS_CONTYPE0M,0); + IWD_SetFieldMark(window,MS_CONTYPE1M,0); + IWD_SetFieldMark(window,MS_CONTYPE2M,1); + minfo.comtype = 2; + field = MS_PHONENUM; + break; + + + case MS_SAVEGAME0: + if (!savenames[0][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 0; + IWD_SetFieldMark(window,MS_SAVEGAME0M,1); + IWD_SetFieldMark(window,MS_SAVEGAME1M,0); + IWD_SetFieldMark(window,MS_SAVEGAME2M,0); + IWD_SetFieldMark(window,MS_SAVEGAME3M,0); + IWD_SetFieldMark(window,MS_SAVEGAME4M,0); + IWD_SetFieldMark(window,MS_SAVEGAME5M,0); + break; + + case MS_SAVEGAME1: + if (!savenames[1][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 1; + IWD_SetFieldMark(window,MS_SAVEGAME0M,0); + IWD_SetFieldMark(window,MS_SAVEGAME1M,1); + IWD_SetFieldMark(window,MS_SAVEGAME2M,0); + IWD_SetFieldMark(window,MS_SAVEGAME3M,0); + IWD_SetFieldMark(window,MS_SAVEGAME4M,0); + IWD_SetFieldMark(window,MS_SAVEGAME5M,0); + break; + + + case MS_SAVEGAME2: + if (!savenames[2][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 2; + IWD_SetFieldMark(window,MS_SAVEGAME0M,0); + IWD_SetFieldMark(window,MS_SAVEGAME1M,0); + IWD_SetFieldMark(window,MS_SAVEGAME2M,1); + IWD_SetFieldMark(window,MS_SAVEGAME3M,0); + IWD_SetFieldMark(window,MS_SAVEGAME4M,0); + IWD_SetFieldMark(window,MS_SAVEGAME5M,0); + break; + + case MS_SAVEGAME3: + if (!savenames[3][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 3; + IWD_SetFieldMark(window,MS_SAVEGAME0M,0); + IWD_SetFieldMark(window,MS_SAVEGAME1M,0); + IWD_SetFieldMark(window,MS_SAVEGAME2M,0); + IWD_SetFieldMark(window,MS_SAVEGAME3M,1); + IWD_SetFieldMark(window,MS_SAVEGAME4M,0); + IWD_SetFieldMark(window,MS_SAVEGAME5M,0); + break; + + case MS_SAVEGAME4: + if (!savenames[4][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 4; + IWD_SetFieldMark(window,MS_SAVEGAME0M,0); + IWD_SetFieldMark(window,MS_SAVEGAME1M,0); + IWD_SetFieldMark(window,MS_SAVEGAME2M,0); + IWD_SetFieldMark(window,MS_SAVEGAME3M,0); + IWD_SetFieldMark(window,MS_SAVEGAME4M,1); + IWD_SetFieldMark(window,MS_SAVEGAME5M,0); + break; + + case MS_SAVEGAME5: + if (!savenames[5][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 5; + IWD_SetFieldMark(window,MS_SAVEGAME0M,0); + IWD_SetFieldMark(window,MS_SAVEGAME1M,0); + IWD_SetFieldMark(window,MS_SAVEGAME2M,0); + IWD_SetFieldMark(window,MS_SAVEGAME3M,0); + IWD_SetFieldMark(window,MS_SAVEGAME4M,0); + IWD_SetFieldMark(window,MS_SAVEGAME5M,1); + break; + + // + // Deathmatch + // + case MS_DEATHNO2: + minfo.deathMatch = 0; + IWD_SetFieldMark(window,MS_DEATHNOM2,1); + IWD_SetFieldMark(window,MS_DEATHYESM2,0); + break; + + case MS_DEATHYES2: + minfo.deathMatch = 1; + IWD_SetFieldMark(window,MS_DEATHNOM2,0); + IWD_SetFieldMark(window,MS_DEATHYESM2,1); + break; + + default: + break; + } + break; + } + } + + func_exit: + + IWD_CloseWindow(window); + + return ( rval ); +} + + +//=================================================== +// +// Enter serial-link savegame info +// +//=================================================== +int RestoreSerial(void) +{ + char * wstr = "SERSAVE"; + short *window; + short field; + int rval = 0; + char *args[MAXARGS]; + int argcount; + char string[MAXARGS*2][16]; + union REGS r; + int i; + int numplayers[6]; + int saveslot; + int handle; + char name[32]; + char p1,p2,p3,p4; + + + sinfo = serialinfo; // save copy of netinfo + + field = SS_SAVEGAME0; // FIRST FIELD TO LIGHT BAR + + if ( ( window = IWD_OpenWindow( NULL, wstr ) ) == NULL ) + { + IWD_CloseWRF ( NULL ); + printf( "\nError opening %s window.\n", wstr ); + exit(1); + } + + saveslot = -1; + memset(savenames,0,6*24); + + // + // Read in savegame strings + // + for (i = 0;i < 6;i++) + { + sprintf(name,SAVENAME,i); + handle = open (name, O_BINARY | O_RDONLY); + if (handle == -1) + continue; + + read(handle,savenames[i],24); + lseek(handle,27+16,SEEK_SET); + read(handle,&p1,1); + read(handle,&p2,1); + read(handle,&p3,1); + read(handle,&p4,1); + numplayers[i] = p1+p2+p3+p4; + close(handle); + + IWD_PutFieldData(window,SS_SAVEGAME0+i,savenames[i]); + } + + // + // Set defaults + // + IWD_SetFieldMark(window,SS_COM1M,1); + IWD_SetFieldMark(window,SS_COM2M,0); + IWD_SetFieldMark(window,SS_COM3M,0); + IWD_SetFieldMark(window,SS_COM4M,0); + sinfo.comport = 1; + + IWD_SetFieldMark(window,SS_DEATHNOM2,1); + IWD_SetFieldMark(window,SS_DEATHYESM2,0); + sinfo.deathMatch = 0; + + IWD_ShowWindow ( window ); + + for (;;) + { + switch ( IWD_Dialog ( window, &field, DialogControl, hot_keys ) ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + +exitandsave: + case KEY_F10: + + if (saveslot < 0) + { + short *window; + + if ( ( window = IWD_OpenWindow( NULL, "NETSERR" ) ) == NULL ) + exit(1); + IWD_ShowWindow ( window ); + while(kbhit()); + getch(); + IWD_CloseWindow( window ); + break; + } + + serialinfo = sinfo; + + M_SaveDefaults(); + IWD_CloseWRF( NULL ); + IWD_Shutdown(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-nodes"; + sprintf(string[argcount],"%d",numplayers[saveslot]); + args[argcount] = string[argcount]; + argcount++; + + if (modeminfo.deathMatch) + args[argcount++] = "-deathmatch"; + + sprintf(string[argcount],"-com%d",serialinfo.comport); + args[argcount] = string[argcount]; + argcount++; + + args[argcount++] = "-loadgame"; + sprintf(string[argcount],"%d",saveslot); + args[argcount] = string[argcount]; + argcount++; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + r.x.ax = 3; + int86(0x10,&r,&r); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(0); + + case KEY_CR: + case 32: + switch ( field ) + { + case SS_COM1: + IWD_SetFieldMark(window,SS_COM1M,1); + IWD_SetFieldMark(window,SS_COM2M,0); + IWD_SetFieldMark(window,SS_COM3M,0); + IWD_SetFieldMark(window,SS_COM4M,0); + sinfo.comport = 1; + break; + + case SS_COM2: + IWD_SetFieldMark(window,SS_COM1M,0); + IWD_SetFieldMark(window,SS_COM2M,1); + IWD_SetFieldMark(window,SS_COM3M,0); + IWD_SetFieldMark(window,SS_COM4M,0); + sinfo.comport = 2; + break; + + case SS_COM3: + IWD_SetFieldMark(window,SS_COM1M,0); + IWD_SetFieldMark(window,SS_COM2M,0); + IWD_SetFieldMark(window,SS_COM3M,1); + IWD_SetFieldMark(window,SS_COM4M,0); + sinfo.comport = 3; + break; + + case SS_COM4: + IWD_SetFieldMark(window,SS_COM1M,0); + IWD_SetFieldMark(window,SS_COM2M,0); + IWD_SetFieldMark(window,SS_COM3M,0); + IWD_SetFieldMark(window,SS_COM4M,1); + sinfo.comport = 4; + break; + + + case SS_SAVEGAME0: + if (!savenames[0][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 0; + IWD_SetFieldMark(window,SS_SAVEGAME0M,1); + IWD_SetFieldMark(window,SS_SAVEGAME1M,0); + IWD_SetFieldMark(window,SS_SAVEGAME2M,0); + IWD_SetFieldMark(window,SS_SAVEGAME3M,0); + IWD_SetFieldMark(window,SS_SAVEGAME4M,0); + IWD_SetFieldMark(window,SS_SAVEGAME5M,0); + break; + + case SS_SAVEGAME1: + if (!savenames[1][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 1; + IWD_SetFieldMark(window,SS_SAVEGAME0M,0); + IWD_SetFieldMark(window,SS_SAVEGAME1M,1); + IWD_SetFieldMark(window,SS_SAVEGAME2M,0); + IWD_SetFieldMark(window,SS_SAVEGAME3M,0); + IWD_SetFieldMark(window,SS_SAVEGAME4M,0); + IWD_SetFieldMark(window,SS_SAVEGAME5M,0); + break; + + + case SS_SAVEGAME2: + if (!savenames[2][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 2; + IWD_SetFieldMark(window,SS_SAVEGAME0M,0); + IWD_SetFieldMark(window,SS_SAVEGAME1M,0); + IWD_SetFieldMark(window,SS_SAVEGAME2M,1); + IWD_SetFieldMark(window,SS_SAVEGAME3M,0); + IWD_SetFieldMark(window,SS_SAVEGAME4M,0); + IWD_SetFieldMark(window,SS_SAVEGAME5M,0); + break; + + case SS_SAVEGAME3: + if (!savenames[3][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 3; + IWD_SetFieldMark(window,SS_SAVEGAME0M,0); + IWD_SetFieldMark(window,SS_SAVEGAME1M,0); + IWD_SetFieldMark(window,SS_SAVEGAME2M,0); + IWD_SetFieldMark(window,SS_SAVEGAME3M,1); + IWD_SetFieldMark(window,SS_SAVEGAME4M,0); + IWD_SetFieldMark(window,SS_SAVEGAME5M,0); + break; + + case SS_SAVEGAME4: + if (!savenames[4][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 4; + IWD_SetFieldMark(window,SS_SAVEGAME0M,0); + IWD_SetFieldMark(window,SS_SAVEGAME1M,0); + IWD_SetFieldMark(window,SS_SAVEGAME2M,0); + IWD_SetFieldMark(window,SS_SAVEGAME3M,0); + IWD_SetFieldMark(window,SS_SAVEGAME4M,1); + IWD_SetFieldMark(window,SS_SAVEGAME5M,0); + break; + + case SS_SAVEGAME5: + if (!savenames[5][0]) + { + IWD_Sound(1000,6); + break; + } + saveslot = 5; + IWD_SetFieldMark(window,SS_SAVEGAME0M,0); + IWD_SetFieldMark(window,SS_SAVEGAME1M,0); + IWD_SetFieldMark(window,SS_SAVEGAME2M,0); + IWD_SetFieldMark(window,SS_SAVEGAME3M,0); + IWD_SetFieldMark(window,SS_SAVEGAME4M,0); + IWD_SetFieldMark(window,SS_SAVEGAME5M,1); + break; + + // + // Deathmatch + // + case SS_DEATHNO2: + sinfo.deathMatch = 0; + IWD_SetFieldMark(window,SS_DEATHNOM2,1); + IWD_SetFieldMark(window,SS_DEATHYESM2,0); + break; + + case SS_DEATHYES2: + sinfo.deathMatch = 1; + IWD_SetFieldMark(window,SS_DEATHNOM2,0); + IWD_SetFieldMark(window,SS_DEATHYESM2,1); + break; + + default: + break; + } + break; + } + } + + func_exit: + + IWD_CloseWindow(window); + + return ( rval ); +} + + + + \ No newline at end of file diff --git a/OLDSETUP.H b/OLDSETUP.H new file mode 100644 index 0000000..bcdd686 --- /dev/null +++ b/OLDSETUP.H @@ -0,0 +1,204 @@ +#define FRENCH // define if FRENCH VERSION + +#ifdef FRENCH + +#include "french2\idcard.i" // +//#include "french2\gusdma.i" // +//#include "french2\gusirq.i" // +//#include "french2\gusport.i" // +#include "french2\mcard.i" // +//#include "french2\midiirq.i" +#include "french2\midiport.i" // +#include "french2\numdig.i" +#include "french2\sbdma.i" // +#include "french2\sbirq.i" // +#include "french2\sbport.i" // +#include "french2\control.i" // +#include "french2\show.i" +#include "french2\consel.i" +#include "french2\quitwin.i" +#include "french2\netsave.i" +#include "french2\netplay.i" +#include "french2\macros.i" +#include "french2\modsave.i" +#include "french2\sersave.i" +#include "french2\netplay2.i" + +#define S_NONE "AUCUNE" +#define S_PCSP "Haut-parleur PC" +#define S_CON1 "Clavier seul" +#define S_CON2 "Clavier + Souris" +#define S_CON3 "Clavier + Joystick" + +#else + +#include "idcard.i" // +#include "gusdma.i" // +#include "gusirq.i" // +#include "gusport.i" // +#include "mcard.i" // +#include "midiirq.i" +#include "midiport.i" // +#include "numdig.i" +#include "sbdma.i" // +#include "sbirq.i" // +#include "sbport.i" // +#include "control.i" // +#include "show.i" +#include "consel.i" +#include "quitwin.i" +#include "netsave.i" +#include "gusirq.i" +#include "netplay.i" +#include "macros.i" +#include "modsave.i" +#include "sersave.i" +#include "netplay2.i" + +#define S_NONE "None" +#define S_PCSP "PC Speaker" +#define S_CON1 "Keyboard only" +#define S_CON2 "Keyboard + Mouse" +#define S_CON3 "Keyboard + Joystick" + +#endif + +#ifdef DOOM2 + +#ifdef FRENCH +#include "french2\idmain2.i" +#include "french2\cmodem.i" +#include "french2\cserial.i" +#include "french2\cwarp.i" +#include "french2\netwk2.i" +#else +#include "idmain2.i" +#include "cmodem.i" +#include "cserial.i" +#include "cwarp.i" +#include "netwk2.i" +#endif + +#else + +#include "idmain.i" +#include "warp.i" +#include "modem.i" +#include "serial.i" +#include "network.i" + +#endif + +#include "keys.h" + +typedef enum { FALSE, TRUE } BOOL; + +typedef enum +{ + M_NONE, + M_PC, + M_ADLIB, + M_SB, + M_PAS, + M_GUS, + M_WAVE, + M_CANVAS, + M_GMIDI, + M_SBAWE32, + M_LAST +}SCARD; + +typedef enum +{ + C_KEY, + C_MOUSE, + C_JOYSTICK, + C_LAST +}CONTROL; + +typedef struct +{ + SCARD card; + short port; + short midiport; + short irq; + short dma; +} DMXCARD; + +typedef struct +{ + CONTROL control; + DMXCARD m; + DMXCARD d; + short numdig; +} DMXINFO; + +typedef struct +{ + int numberOfPlayers; + int skillLevel; + int deathMatch; + unsigned networkSocket; + int episode; +} net_t; + +typedef struct +{ + int skillLevel; + int deathMatch; + int episode; + int comport; + int comtype; // 0 = connected,1 = answer,2 = call + char phonenum[16]; +} serial_t; + +typedef struct +{ + int up; + int down; + int left; + int right; + int fire; + int use; // ID = USE CYGNUS = USE SPECIAL WEAPON + int key1; // ID = STRAFE ON CYGNUS = CHANGE SPECIAL WEAPON + int key2; // ID = SPEED ON CYGNUS = MEGA BOMB HOT KEY + int key3; // ID = STRAFE LEFT + int key4; // ID = STRAFE RIGHT + int mouse[3]; + int joy[4]; +} CONTS; + +typedef enum +{ + ID_FIRE, // def button 1 + ID_STRAFE, // def button 3 + ID_FORWARD, // def button 2 + ID_USE // def button 4 joystick only +}IDCONTS; + +extern int usemouse; +extern int usejoystick; + +typedef struct +{ + char name[64]; + char init[64]; + char hangup[64]; + char baud[8]; +} modem_t; + +#define MAXMODEMS 200 + +typedef struct +{ + char name[32]; + char number[16]; +} phonelist_t; + +#define MAXPHNLIST 40 + +extern int cdrom; +extern char **myargv; +extern int myargc; + + \ No newline at end of file diff --git a/README b/README new file mode 100644 index 0000000..46c7425 --- /dev/null +++ b/README @@ -0,0 +1,5 @@ +This is the source for the setup program included with DOOM, final DOOM, strife, etc. Unzip with directories. + +John Romero wrote idsetup, so don't ask me questions about it... + +John Carmack diff --git a/SCGUESS.BAK b/SCGUESS.BAK new file mode 100644 index 0000000..81273b5 --- /dev/null +++ b/SCGUESS.BAK @@ -0,0 +1,65 @@ +#include +#include +#include +#include "scguess.h" + +int getSBParam(char *string, char field) +{ + char *p; + int rc; + + p = strchr(string, field); + + if (!p) return -1; + else p++; + + if (field == 'A' || field == 'P') sscanf(p, "%x", &rc); // hex field + else sscanf(p, "%d", &rc); // decimal field + + return rc; +} + +/* + * Returns 1 if it senses the BLASTER environment variable, 0 if it + * doesn't. If it does return 1, it will also fill in as many fields + * as it can extract from the environment variable. Any fields *not* + * filled in will be set to -1. Of course, if the midi field is filled, + * that means only that it's an SB16 and does not confirm whether the + * WaveBlaster is present. + */ + +int SmellsLikeSB(int *addr, int *irq, int *dma, int *midi) +{ + char *var = getenv("BLASTER"); + char *parm; + + if (!var) return 0; + + *addr = getSBParam(var, 'A'); + *irq = getSBParam(var, 'I'); + *dma = getSBParam(var, 'D'); + *midi = getSBParam(var, 'P'); + + return 1; +} + +/* + * Returns 1 if it senses the ULTRASND environment variable, 0 if it + * doesn't. If it does return 1, it will also fill in as many fields + * as it can extract from the environment variable. Any fields *not* + * filled in will be set to -1. + */ + +int SmellsLikeGUS(int *addr, int *irq, int *dma) +{ + char *var = getenv("ULTRASND"); + int dummy; + + if (!var) return 0; + else + { + sscanf(var, "%x,%d,%d,%d,%d", addr, dma, &dummy, irq, &dummy); + return 1; + } + +} diff --git a/SCGUESS.C b/SCGUESS.C new file mode 100644 index 0000000..c1a982f --- /dev/null +++ b/SCGUESS.C @@ -0,0 +1,64 @@ +#include +#include +#include +#include "scguess.h" + +int getSBParam(char *string, char field) +{ + char *p; + int rc; + + p = strchr(string, field); + + if (!p) return -1; + else p++; + + if (field == 'A' || field == 'P') sscanf(p, "%x", &rc); // hex field + else sscanf(p, "%d", &rc); // decimal field + + return rc; +} + +/* + * Returns 1 if it senses the BLASTER environment variable, 0 if it + * doesn't. If it does return 1, it will also fill in as many fields + * as it can extract from the environment variable. Any fields *not* + * filled in will be set to -1. Of course, if the midi field is filled, + * that means only that it's an SB16 and does not confirm whether the + * WaveBlaster is present. + */ + +int SmellsLikeSB(int *addr, int *irq, int *dma, int *midi) +{ + char *var = getenv("BLASTER"); + + if (!var) return 0; + + *addr = getSBParam(var, 'A'); + *irq = getSBParam(var, 'I'); + *dma = getSBParam(var, 'D'); + *midi = getSBParam(var, 'P'); + + return 1; +} + +/* + * Returns 1 if it senses the ULTRASND environment variable, 0 if it + * doesn't. If it does return 1, it will also fill in as many fields + * as it can extract from the environment variable. Any fields *not* + * filled in will be set to -1. + */ + +int SmellsLikeGUS(int *addr, int *irq, int *dma) +{ + char *var = getenv("ULTRASND"); + int dummy; + + if (!var) return 0; + else + { + sscanf(var, "%x,%d,%d,%d,%d", addr, dma, &dummy, irq, &dummy); + return 1; + } + +} diff --git a/SCGUESS.H b/SCGUESS.H new file mode 100644 index 0000000..85c2727 --- /dev/null +++ b/SCGUESS.H @@ -0,0 +1,34 @@ +#ifndef __SCGUESS_H__ +#define __SCGUESS_H__ + +/* + * This stuff just checks for environment variables. If they're there, + * then it kinda figures hopefully that the card is there and it fills + * in the values as defaults to choose from in Scott's & Paul's cool + * install program. + */ + +/* + * Returns 1 if it senses the BLASTER environment variable, 0 if it + * doesn't. If it does return 1, it will also fill in as many fields + * as it can extract from the environment variable. Any fields *not* + * filled in will be set to -1. Of course, if the midi field is filled, + * that means only that it's an SB16 and does not confirm whether the + * WaveBlaster is present. + */ + +int SmellsLikeSB(int *addr, int *irq, int *dma, int *midi); + +/* + * Returns 1 if it senses the ULTRASND environment variable, 0 if it + * doesn't. If it does return 1, it will also fill in as many fields + * as it can extract from the environment variable. Any fields *not* + * filled in will be set to -1. Do we need the address, irq, and dma? + * Paul's GF1_Detect code doesn't seem terribly interested in this + * information. Who cares- it's bonus stuff if you're curious, and + * militant GUSaholes can eat cake. + */ + +int SmellsLikeGUS(int *addr, int *irq, int *dma); + +#endif diff --git a/SCGUESS.OBJ b/SCGUESS.OBJ new file mode 100644 index 0000000..b97148d Binary files /dev/null and b/SCGUESS.OBJ differ diff --git a/SCREENS/DOOM/ASKPRES.DOG b/SCREENS/DOOM/ASKPRES.DOG new file mode 100644 index 0000000..c68b76a Binary files /dev/null and b/SCREENS/DOOM/ASKPRES.DOG differ diff --git a/SCREENS/DOOM/ASKPRES.OBJ b/SCREENS/DOOM/ASKPRES.OBJ new file mode 100644 index 0000000..803bd63 Binary files /dev/null and b/SCREENS/DOOM/ASKPRES.OBJ differ diff --git a/SCREENS/DOOM/ASKPRES.PUP b/SCREENS/DOOM/ASKPRES.PUP new file mode 100644 index 0000000..770f346 Binary files /dev/null and b/SCREENS/DOOM/ASKPRES.PUP differ diff --git a/SCREENS/DOOM/CMODEM.DOG b/SCREENS/DOOM/CMODEM.DOG new file mode 100644 index 0000000..6e31a70 Binary files /dev/null and b/SCREENS/DOOM/CMODEM.DOG differ diff --git a/SCREENS/DOOM/CMODEM.OBJ b/SCREENS/DOOM/CMODEM.OBJ new file mode 100644 index 0000000..c86e594 Binary files /dev/null and b/SCREENS/DOOM/CMODEM.OBJ differ diff --git a/SCREENS/DOOM/CMODEM.PUP b/SCREENS/DOOM/CMODEM.PUP new file mode 100644 index 0000000..94cdb3d Binary files /dev/null and b/SCREENS/DOOM/CMODEM.PUP differ diff --git a/SCREENS/DOOM/CONSEL.DOG b/SCREENS/DOOM/CONSEL.DOG new file mode 100644 index 0000000..3d7520d Binary files /dev/null and b/SCREENS/DOOM/CONSEL.DOG differ diff --git a/SCREENS/DOOM/CONSEL.OBJ b/SCREENS/DOOM/CONSEL.OBJ new file mode 100644 index 0000000..1281065 Binary files /dev/null and b/SCREENS/DOOM/CONSEL.OBJ differ diff --git a/SCREENS/DOOM/CONSEL.PUP b/SCREENS/DOOM/CONSEL.PUP new file mode 100644 index 0000000..e35938d Binary files /dev/null and b/SCREENS/DOOM/CONSEL.PUP differ diff --git a/SCREENS/DOOM/CONTROL.DOG b/SCREENS/DOOM/CONTROL.DOG new file mode 100644 index 0000000..03af8a2 Binary files /dev/null and b/SCREENS/DOOM/CONTROL.DOG differ diff --git a/SCREENS/DOOM/CONTROL.OBJ b/SCREENS/DOOM/CONTROL.OBJ new file mode 100644 index 0000000..010c206 Binary files /dev/null and b/SCREENS/DOOM/CONTROL.OBJ differ diff --git a/SCREENS/DOOM/CONTROL.PUP b/SCREENS/DOOM/CONTROL.PUP new file mode 100644 index 0000000..4b2b7ca Binary files /dev/null and b/SCREENS/DOOM/CONTROL.PUP differ diff --git a/SCREENS/DOOM/CSERIAL.DOG b/SCREENS/DOOM/CSERIAL.DOG new file mode 100644 index 0000000..09bc83d Binary files /dev/null and b/SCREENS/DOOM/CSERIAL.DOG differ diff --git a/SCREENS/DOOM/CSERIAL.OBJ b/SCREENS/DOOM/CSERIAL.OBJ new file mode 100644 index 0000000..8dcd415 Binary files /dev/null and b/SCREENS/DOOM/CSERIAL.OBJ differ diff --git a/SCREENS/DOOM/CSERIAL.PUP b/SCREENS/DOOM/CSERIAL.PUP new file mode 100644 index 0000000..2262d4b Binary files /dev/null and b/SCREENS/DOOM/CSERIAL.PUP differ diff --git a/SCREENS/DOOM/CWARP.DOG b/SCREENS/DOOM/CWARP.DOG new file mode 100644 index 0000000..d299bee Binary files /dev/null and b/SCREENS/DOOM/CWARP.DOG differ diff --git a/SCREENS/DOOM/CWARP.OBJ b/SCREENS/DOOM/CWARP.OBJ new file mode 100644 index 0000000..8599a56 Binary files /dev/null and b/SCREENS/DOOM/CWARP.OBJ differ diff --git a/SCREENS/DOOM/CWARP.PUP b/SCREENS/DOOM/CWARP.PUP new file mode 100644 index 0000000..f499cb2 Binary files /dev/null and b/SCREENS/DOOM/CWARP.PUP differ diff --git a/SCREENS/DOOM/ENTRNMBR.DOG b/SCREENS/DOOM/ENTRNMBR.DOG new file mode 100644 index 0000000..6fe1385 Binary files /dev/null and b/SCREENS/DOOM/ENTRNMBR.DOG differ diff --git a/SCREENS/DOOM/ENTRNMBR.OBJ b/SCREENS/DOOM/ENTRNMBR.OBJ new file mode 100644 index 0000000..2a4b9cf Binary files /dev/null and b/SCREENS/DOOM/ENTRNMBR.OBJ differ diff --git a/SCREENS/DOOM/ENTRNMBR.PUP b/SCREENS/DOOM/ENTRNMBR.PUP new file mode 100644 index 0000000..13d749f Binary files /dev/null and b/SCREENS/DOOM/ENTRNMBR.PUP differ diff --git a/SCREENS/DOOM/FILES b/SCREENS/DOOM/FILES new file mode 100644 index 0000000..94ece14 --- /dev/null +++ b/SCREENS/DOOM/FILES @@ -0,0 +1,36 @@ +askpres.pup +cmodem.pup +consel.pup +control.pup +cserial.pup +cwarp.pup +entrnmbr.pup +gusirqer.pup +idcard.pup +idjoysel.pup +idkeysel.pup +idmain2.pup +idmousel.pup +irqerr.pup +macros.pup +mcard.pup +midiport.pup +modemchs.pup +modsave.pup +mousentr.pup +mouspres.pup +netplay.pup +netplay2.pup +netsave.pup +netserr.pup +netwk2.pup +numdig.pup +phonelst.pup +quitwin.pup +sbdma.pup +sbirq.pup +sbport.pup +sersave.pup +show.pup +sockerr.pup +title.pup diff --git a/SCREENS/DOOM/FORALL.EXE b/SCREENS/DOOM/FORALL.EXE new file mode 100644 index 0000000..0288e97 Binary files /dev/null and b/SCREENS/DOOM/FORALL.EXE differ diff --git a/SCREENS/DOOM/GUSIRQER.DOG b/SCREENS/DOOM/GUSIRQER.DOG new file mode 100644 index 0000000..130ebef Binary files /dev/null and b/SCREENS/DOOM/GUSIRQER.DOG differ diff --git a/SCREENS/DOOM/GUSIRQER.OBJ b/SCREENS/DOOM/GUSIRQER.OBJ new file mode 100644 index 0000000..64faa07 Binary files /dev/null and b/SCREENS/DOOM/GUSIRQER.OBJ differ diff --git a/SCREENS/DOOM/GUSIRQER.PUP b/SCREENS/DOOM/GUSIRQER.PUP new file mode 100644 index 0000000..bc84883 Binary files /dev/null and b/SCREENS/DOOM/GUSIRQER.PUP differ diff --git a/SCREENS/DOOM/IDCARD.DOG b/SCREENS/DOOM/IDCARD.DOG new file mode 100644 index 0000000..2125b77 Binary files /dev/null and b/SCREENS/DOOM/IDCARD.DOG differ diff --git a/SCREENS/DOOM/IDCARD.OBJ b/SCREENS/DOOM/IDCARD.OBJ new file mode 100644 index 0000000..ca38235 Binary files /dev/null and b/SCREENS/DOOM/IDCARD.OBJ differ diff --git a/SCREENS/DOOM/IDCARD.PUP b/SCREENS/DOOM/IDCARD.PUP new file mode 100644 index 0000000..2dcb1cd Binary files /dev/null and b/SCREENS/DOOM/IDCARD.PUP differ diff --git a/SCREENS/DOOM/IDJOYSEL.DOG b/SCREENS/DOOM/IDJOYSEL.DOG new file mode 100644 index 0000000..0892f5d Binary files /dev/null and b/SCREENS/DOOM/IDJOYSEL.DOG differ diff --git a/SCREENS/DOOM/IDJOYSEL.OBJ b/SCREENS/DOOM/IDJOYSEL.OBJ new file mode 100644 index 0000000..7d23f7c Binary files /dev/null and b/SCREENS/DOOM/IDJOYSEL.OBJ differ diff --git a/SCREENS/DOOM/IDJOYSEL.PUP b/SCREENS/DOOM/IDJOYSEL.PUP new file mode 100644 index 0000000..325620f Binary files /dev/null and b/SCREENS/DOOM/IDJOYSEL.PUP differ diff --git a/SCREENS/DOOM/IDKEYSEL.DOG b/SCREENS/DOOM/IDKEYSEL.DOG new file mode 100644 index 0000000..5121d8c Binary files /dev/null and b/SCREENS/DOOM/IDKEYSEL.DOG differ diff --git a/SCREENS/DOOM/IDKEYSEL.OBJ b/SCREENS/DOOM/IDKEYSEL.OBJ new file mode 100644 index 0000000..7aa1725 Binary files /dev/null and b/SCREENS/DOOM/IDKEYSEL.OBJ differ diff --git a/SCREENS/DOOM/IDKEYSEL.PUP b/SCREENS/DOOM/IDKEYSEL.PUP new file mode 100644 index 0000000..15c6b3a Binary files /dev/null and b/SCREENS/DOOM/IDKEYSEL.PUP differ diff --git a/SCREENS/DOOM/IDMAIN2.DOG b/SCREENS/DOOM/IDMAIN2.DOG new file mode 100644 index 0000000..67f8e10 Binary files /dev/null and b/SCREENS/DOOM/IDMAIN2.DOG differ diff --git a/SCREENS/DOOM/IDMAIN2.OBJ b/SCREENS/DOOM/IDMAIN2.OBJ new file mode 100644 index 0000000..5feda9c Binary files /dev/null and b/SCREENS/DOOM/IDMAIN2.OBJ differ diff --git a/SCREENS/DOOM/IDMAIN2.PUP b/SCREENS/DOOM/IDMAIN2.PUP new file mode 100644 index 0000000..61a595a Binary files /dev/null and b/SCREENS/DOOM/IDMAIN2.PUP differ diff --git a/SCREENS/DOOM/IDMOUSEL.DOG b/SCREENS/DOOM/IDMOUSEL.DOG new file mode 100644 index 0000000..ba47159 Binary files /dev/null and b/SCREENS/DOOM/IDMOUSEL.DOG differ diff --git a/SCREENS/DOOM/IDMOUSEL.OBJ b/SCREENS/DOOM/IDMOUSEL.OBJ new file mode 100644 index 0000000..80e2acc Binary files /dev/null and b/SCREENS/DOOM/IDMOUSEL.OBJ differ diff --git a/SCREENS/DOOM/IDMOUSEL.PUP b/SCREENS/DOOM/IDMOUSEL.PUP new file mode 100644 index 0000000..7aa439e Binary files /dev/null and b/SCREENS/DOOM/IDMOUSEL.PUP differ diff --git a/SCREENS/DOOM/IRQERR.DOG b/SCREENS/DOOM/IRQERR.DOG new file mode 100644 index 0000000..ea97eae Binary files /dev/null and b/SCREENS/DOOM/IRQERR.DOG differ diff --git a/SCREENS/DOOM/IRQERR.OBJ b/SCREENS/DOOM/IRQERR.OBJ new file mode 100644 index 0000000..3264088 Binary files /dev/null and b/SCREENS/DOOM/IRQERR.OBJ differ diff --git a/SCREENS/DOOM/IRQERR.PUP b/SCREENS/DOOM/IRQERR.PUP new file mode 100644 index 0000000..668cb59 Binary files /dev/null and b/SCREENS/DOOM/IRQERR.PUP differ diff --git a/SCREENS/DOOM/MACROS.DOG b/SCREENS/DOOM/MACROS.DOG new file mode 100644 index 0000000..cfec1d9 Binary files /dev/null and b/SCREENS/DOOM/MACROS.DOG differ diff --git a/SCREENS/DOOM/MACROS.OBJ b/SCREENS/DOOM/MACROS.OBJ new file mode 100644 index 0000000..ee77f13 Binary files /dev/null and b/SCREENS/DOOM/MACROS.OBJ differ diff --git a/SCREENS/DOOM/MACROS.PUP b/SCREENS/DOOM/MACROS.PUP new file mode 100644 index 0000000..d6ca6bf Binary files /dev/null and b/SCREENS/DOOM/MACROS.PUP differ diff --git a/SCREENS/DOOM/MAKE.BAT b/SCREENS/DOOM/MAKE.BAT new file mode 100644 index 0000000..a363315 --- /dev/null +++ b/SCREENS/DOOM/MAKE.BAT @@ -0,0 +1,3 @@ +dir /b *.pup > files +forall files "mo -f" + \ No newline at end of file diff --git a/SCREENS/DOOM/MCARD.DOG b/SCREENS/DOOM/MCARD.DOG new file mode 100644 index 0000000..7c2b66b Binary files /dev/null and b/SCREENS/DOOM/MCARD.DOG differ diff --git a/SCREENS/DOOM/MCARD.OBJ b/SCREENS/DOOM/MCARD.OBJ new file mode 100644 index 0000000..32bc42d Binary files /dev/null and b/SCREENS/DOOM/MCARD.OBJ differ diff --git a/SCREENS/DOOM/MCARD.PUP b/SCREENS/DOOM/MCARD.PUP new file mode 100644 index 0000000..1d2a07b Binary files /dev/null and b/SCREENS/DOOM/MCARD.PUP differ diff --git a/SCREENS/DOOM/MIDIPORT.DOG b/SCREENS/DOOM/MIDIPORT.DOG new file mode 100644 index 0000000..e3731c3 Binary files /dev/null and b/SCREENS/DOOM/MIDIPORT.DOG differ diff --git a/SCREENS/DOOM/MIDIPORT.OBJ b/SCREENS/DOOM/MIDIPORT.OBJ new file mode 100644 index 0000000..b43bbfc Binary files /dev/null and b/SCREENS/DOOM/MIDIPORT.OBJ differ diff --git a/SCREENS/DOOM/MIDIPORT.PUP b/SCREENS/DOOM/MIDIPORT.PUP new file mode 100644 index 0000000..31a6641 Binary files /dev/null and b/SCREENS/DOOM/MIDIPORT.PUP differ diff --git a/SCREENS/DOOM/MO.EXE b/SCREENS/DOOM/MO.EXE new file mode 100644 index 0000000..d464a27 Binary files /dev/null and b/SCREENS/DOOM/MO.EXE differ diff --git a/SCREENS/DOOM/MODEMCHS.DOG b/SCREENS/DOOM/MODEMCHS.DOG new file mode 100644 index 0000000..e73cd05 Binary files /dev/null and b/SCREENS/DOOM/MODEMCHS.DOG differ diff --git a/SCREENS/DOOM/MODEMCHS.OBJ b/SCREENS/DOOM/MODEMCHS.OBJ new file mode 100644 index 0000000..f4992c9 Binary files /dev/null and b/SCREENS/DOOM/MODEMCHS.OBJ differ diff --git a/SCREENS/DOOM/MODEMCHS.PUP b/SCREENS/DOOM/MODEMCHS.PUP new file mode 100644 index 0000000..42a365f Binary files /dev/null and b/SCREENS/DOOM/MODEMCHS.PUP differ diff --git a/SCREENS/DOOM/MODSAVE.DOG b/SCREENS/DOOM/MODSAVE.DOG new file mode 100644 index 0000000..139e471 Binary files /dev/null and b/SCREENS/DOOM/MODSAVE.DOG differ diff --git a/SCREENS/DOOM/MODSAVE.OBJ b/SCREENS/DOOM/MODSAVE.OBJ new file mode 100644 index 0000000..0ff2f45 Binary files /dev/null and b/SCREENS/DOOM/MODSAVE.OBJ differ diff --git a/SCREENS/DOOM/MODSAVE.PUP b/SCREENS/DOOM/MODSAVE.PUP new file mode 100644 index 0000000..02b478c Binary files /dev/null and b/SCREENS/DOOM/MODSAVE.PUP differ diff --git a/SCREENS/DOOM/MOUSENTR.DOG b/SCREENS/DOOM/MOUSENTR.DOG new file mode 100644 index 0000000..f1d4022 Binary files /dev/null and b/SCREENS/DOOM/MOUSENTR.DOG differ diff --git a/SCREENS/DOOM/MOUSENTR.OBJ b/SCREENS/DOOM/MOUSENTR.OBJ new file mode 100644 index 0000000..58edfd3 Binary files /dev/null and b/SCREENS/DOOM/MOUSENTR.OBJ differ diff --git a/SCREENS/DOOM/MOUSENTR.PUP b/SCREENS/DOOM/MOUSENTR.PUP new file mode 100644 index 0000000..a6a36a7 Binary files /dev/null and b/SCREENS/DOOM/MOUSENTR.PUP differ diff --git a/SCREENS/DOOM/MOUSPRES.DOG b/SCREENS/DOOM/MOUSPRES.DOG new file mode 100644 index 0000000..3d0fff1 Binary files /dev/null and b/SCREENS/DOOM/MOUSPRES.DOG differ diff --git a/SCREENS/DOOM/MOUSPRES.OBJ b/SCREENS/DOOM/MOUSPRES.OBJ new file mode 100644 index 0000000..e41ef64 Binary files /dev/null and b/SCREENS/DOOM/MOUSPRES.OBJ differ diff --git a/SCREENS/DOOM/MOUSPRES.PUP b/SCREENS/DOOM/MOUSPRES.PUP new file mode 100644 index 0000000..083d852 Binary files /dev/null and b/SCREENS/DOOM/MOUSPRES.PUP differ diff --git a/SCREENS/DOOM/NETPLAY.DOG b/SCREENS/DOOM/NETPLAY.DOG new file mode 100644 index 0000000..8c203cb Binary files /dev/null and b/SCREENS/DOOM/NETPLAY.DOG differ diff --git a/SCREENS/DOOM/NETPLAY.OBJ b/SCREENS/DOOM/NETPLAY.OBJ new file mode 100644 index 0000000..aa05273 Binary files /dev/null and b/SCREENS/DOOM/NETPLAY.OBJ differ diff --git a/SCREENS/DOOM/NETPLAY.PUP b/SCREENS/DOOM/NETPLAY.PUP new file mode 100644 index 0000000..9e22175 Binary files /dev/null and b/SCREENS/DOOM/NETPLAY.PUP differ diff --git a/SCREENS/DOOM/NETPLAY2.DOG b/SCREENS/DOOM/NETPLAY2.DOG new file mode 100644 index 0000000..7a66e22 Binary files /dev/null and b/SCREENS/DOOM/NETPLAY2.DOG differ diff --git a/SCREENS/DOOM/NETPLAY2.OBJ b/SCREENS/DOOM/NETPLAY2.OBJ new file mode 100644 index 0000000..f2cdf97 Binary files /dev/null and b/SCREENS/DOOM/NETPLAY2.OBJ differ diff --git a/SCREENS/DOOM/NETPLAY2.PUP b/SCREENS/DOOM/NETPLAY2.PUP new file mode 100644 index 0000000..81cd565 Binary files /dev/null and b/SCREENS/DOOM/NETPLAY2.PUP differ diff --git a/SCREENS/DOOM/NETSAVE.DOG b/SCREENS/DOOM/NETSAVE.DOG new file mode 100644 index 0000000..7770535 Binary files /dev/null and b/SCREENS/DOOM/NETSAVE.DOG differ diff --git a/SCREENS/DOOM/NETSAVE.OBJ b/SCREENS/DOOM/NETSAVE.OBJ new file mode 100644 index 0000000..5b62b8b Binary files /dev/null and b/SCREENS/DOOM/NETSAVE.OBJ differ diff --git a/SCREENS/DOOM/NETSAVE.PUP b/SCREENS/DOOM/NETSAVE.PUP new file mode 100644 index 0000000..b1a12ba Binary files /dev/null and b/SCREENS/DOOM/NETSAVE.PUP differ diff --git a/SCREENS/DOOM/NETSERR.DOG b/SCREENS/DOOM/NETSERR.DOG new file mode 100644 index 0000000..a76aa78 Binary files /dev/null and b/SCREENS/DOOM/NETSERR.DOG differ diff --git a/SCREENS/DOOM/NETSERR.OBJ b/SCREENS/DOOM/NETSERR.OBJ new file mode 100644 index 0000000..a37528a Binary files /dev/null and b/SCREENS/DOOM/NETSERR.OBJ differ diff --git a/SCREENS/DOOM/NETSERR.PUP b/SCREENS/DOOM/NETSERR.PUP new file mode 100644 index 0000000..fef15c7 Binary files /dev/null and b/SCREENS/DOOM/NETSERR.PUP differ diff --git a/SCREENS/DOOM/NETWK2.DOG b/SCREENS/DOOM/NETWK2.DOG new file mode 100644 index 0000000..1af476a Binary files /dev/null and b/SCREENS/DOOM/NETWK2.DOG differ diff --git a/SCREENS/DOOM/NETWK2.OBJ b/SCREENS/DOOM/NETWK2.OBJ new file mode 100644 index 0000000..907adb2 Binary files /dev/null and b/SCREENS/DOOM/NETWK2.OBJ differ diff --git a/SCREENS/DOOM/NETWK2.PUP b/SCREENS/DOOM/NETWK2.PUP new file mode 100644 index 0000000..de71d91 Binary files /dev/null and b/SCREENS/DOOM/NETWK2.PUP differ diff --git a/SCREENS/DOOM/NUMDIG.DOG b/SCREENS/DOOM/NUMDIG.DOG new file mode 100644 index 0000000..eb731ce Binary files /dev/null and b/SCREENS/DOOM/NUMDIG.DOG differ diff --git a/SCREENS/DOOM/NUMDIG.OBJ b/SCREENS/DOOM/NUMDIG.OBJ new file mode 100644 index 0000000..644d64b Binary files /dev/null and b/SCREENS/DOOM/NUMDIG.OBJ differ diff --git a/SCREENS/DOOM/NUMDIG.PUP b/SCREENS/DOOM/NUMDIG.PUP new file mode 100644 index 0000000..6e795ec Binary files /dev/null and b/SCREENS/DOOM/NUMDIG.PUP differ diff --git a/SCREENS/DOOM/PHONELST.DOG b/SCREENS/DOOM/PHONELST.DOG new file mode 100644 index 0000000..d099f63 Binary files /dev/null and b/SCREENS/DOOM/PHONELST.DOG differ diff --git a/SCREENS/DOOM/PHONELST.OBJ b/SCREENS/DOOM/PHONELST.OBJ new file mode 100644 index 0000000..2c043a2 Binary files /dev/null and b/SCREENS/DOOM/PHONELST.OBJ differ diff --git a/SCREENS/DOOM/PHONELST.PUP b/SCREENS/DOOM/PHONELST.PUP new file mode 100644 index 0000000..866ab76 Binary files /dev/null and b/SCREENS/DOOM/PHONELST.PUP differ diff --git a/SCREENS/DOOM/QUITWIN.DOG b/SCREENS/DOOM/QUITWIN.DOG new file mode 100644 index 0000000..929993a Binary files /dev/null and b/SCREENS/DOOM/QUITWIN.DOG differ diff --git a/SCREENS/DOOM/QUITWIN.OBJ b/SCREENS/DOOM/QUITWIN.OBJ new file mode 100644 index 0000000..34221cf Binary files /dev/null and b/SCREENS/DOOM/QUITWIN.OBJ differ diff --git a/SCREENS/DOOM/QUITWIN.PUP b/SCREENS/DOOM/QUITWIN.PUP new file mode 100644 index 0000000..9de35a4 Binary files /dev/null and b/SCREENS/DOOM/QUITWIN.PUP differ diff --git a/SCREENS/DOOM/SBDMA.DOG b/SCREENS/DOOM/SBDMA.DOG new file mode 100644 index 0000000..f4e65f3 Binary files /dev/null and b/SCREENS/DOOM/SBDMA.DOG differ diff --git a/SCREENS/DOOM/SBDMA.OBJ b/SCREENS/DOOM/SBDMA.OBJ new file mode 100644 index 0000000..e339ef6 Binary files /dev/null and b/SCREENS/DOOM/SBDMA.OBJ differ diff --git a/SCREENS/DOOM/SBDMA.PUP b/SCREENS/DOOM/SBDMA.PUP new file mode 100644 index 0000000..708c2bb Binary files /dev/null and b/SCREENS/DOOM/SBDMA.PUP differ diff --git a/SCREENS/DOOM/SBIRQ.DOG b/SCREENS/DOOM/SBIRQ.DOG new file mode 100644 index 0000000..774742f Binary files /dev/null and b/SCREENS/DOOM/SBIRQ.DOG differ diff --git a/SCREENS/DOOM/SBIRQ.OBJ b/SCREENS/DOOM/SBIRQ.OBJ new file mode 100644 index 0000000..657f94c Binary files /dev/null and b/SCREENS/DOOM/SBIRQ.OBJ differ diff --git a/SCREENS/DOOM/SBIRQ.PUP b/SCREENS/DOOM/SBIRQ.PUP new file mode 100644 index 0000000..5eadf87 Binary files /dev/null and b/SCREENS/DOOM/SBIRQ.PUP differ diff --git a/SCREENS/DOOM/SBPORT.DOG b/SCREENS/DOOM/SBPORT.DOG new file mode 100644 index 0000000..ce7fd21 Binary files /dev/null and b/SCREENS/DOOM/SBPORT.DOG differ diff --git a/SCREENS/DOOM/SBPORT.OBJ b/SCREENS/DOOM/SBPORT.OBJ new file mode 100644 index 0000000..5c74b24 Binary files /dev/null and b/SCREENS/DOOM/SBPORT.OBJ differ diff --git a/SCREENS/DOOM/SBPORT.PUP b/SCREENS/DOOM/SBPORT.PUP new file mode 100644 index 0000000..7cf96ce Binary files /dev/null and b/SCREENS/DOOM/SBPORT.PUP differ diff --git a/SCREENS/DOOM/SERSAVE.DOG b/SCREENS/DOOM/SERSAVE.DOG new file mode 100644 index 0000000..92cab3b Binary files /dev/null and b/SCREENS/DOOM/SERSAVE.DOG differ diff --git a/SCREENS/DOOM/SERSAVE.OBJ b/SCREENS/DOOM/SERSAVE.OBJ new file mode 100644 index 0000000..d1b6432 Binary files /dev/null and b/SCREENS/DOOM/SERSAVE.OBJ differ diff --git a/SCREENS/DOOM/SERSAVE.PUP b/SCREENS/DOOM/SERSAVE.PUP new file mode 100644 index 0000000..ac58fd1 Binary files /dev/null and b/SCREENS/DOOM/SERSAVE.PUP differ diff --git a/SCREENS/DOOM/SHOW.DOG b/SCREENS/DOOM/SHOW.DOG new file mode 100644 index 0000000..40fc955 Binary files /dev/null and b/SCREENS/DOOM/SHOW.DOG differ diff --git a/SCREENS/DOOM/SHOW.OBJ b/SCREENS/DOOM/SHOW.OBJ new file mode 100644 index 0000000..ab243dc Binary files /dev/null and b/SCREENS/DOOM/SHOW.OBJ differ diff --git a/SCREENS/DOOM/SHOW.PUP b/SCREENS/DOOM/SHOW.PUP new file mode 100644 index 0000000..58c8404 Binary files /dev/null and b/SCREENS/DOOM/SHOW.PUP differ diff --git a/SCREENS/DOOM/SOCKERR.DOG b/SCREENS/DOOM/SOCKERR.DOG new file mode 100644 index 0000000..402dca4 Binary files /dev/null and b/SCREENS/DOOM/SOCKERR.DOG differ diff --git a/SCREENS/DOOM/SOCKERR.OBJ b/SCREENS/DOOM/SOCKERR.OBJ new file mode 100644 index 0000000..f68f0dd Binary files /dev/null and b/SCREENS/DOOM/SOCKERR.OBJ differ diff --git a/SCREENS/DOOM/SOCKERR.PUP b/SCREENS/DOOM/SOCKERR.PUP new file mode 100644 index 0000000..dcb39a1 Binary files /dev/null and b/SCREENS/DOOM/SOCKERR.PUP differ diff --git a/SCREENS/DOOM/TITLE.DOG b/SCREENS/DOOM/TITLE.DOG new file mode 100644 index 0000000..cbf151a Binary files /dev/null and b/SCREENS/DOOM/TITLE.DOG differ diff --git a/SCREENS/DOOM/TITLE.OBJ b/SCREENS/DOOM/TITLE.OBJ new file mode 100644 index 0000000..a625114 Binary files /dev/null and b/SCREENS/DOOM/TITLE.OBJ differ diff --git a/SCREENS/DOOM/TITLE.PUP b/SCREENS/DOOM/TITLE.PUP new file mode 100644 index 0000000..cbf151a Binary files /dev/null and b/SCREENS/DOOM/TITLE.PUP differ diff --git a/SCREENS/DOOM2/ASKPRES.DOG b/SCREENS/DOOM2/ASKPRES.DOG new file mode 100644 index 0000000..c68b76a Binary files /dev/null and b/SCREENS/DOOM2/ASKPRES.DOG differ diff --git a/SCREENS/DOOM2/ASKPRES.OBJ b/SCREENS/DOOM2/ASKPRES.OBJ new file mode 100644 index 0000000..803bd63 Binary files /dev/null and b/SCREENS/DOOM2/ASKPRES.OBJ differ diff --git a/SCREENS/DOOM2/ASKPRES.PUP b/SCREENS/DOOM2/ASKPRES.PUP new file mode 100644 index 0000000..770f346 Binary files /dev/null and b/SCREENS/DOOM2/ASKPRES.PUP differ diff --git a/SCREENS/DOOM2/CMODEM.DOG b/SCREENS/DOOM2/CMODEM.DOG new file mode 100644 index 0000000..6584df1 Binary files /dev/null and b/SCREENS/DOOM2/CMODEM.DOG differ diff --git a/SCREENS/DOOM2/CMODEM.OBJ b/SCREENS/DOOM2/CMODEM.OBJ new file mode 100644 index 0000000..7902b6e Binary files /dev/null and b/SCREENS/DOOM2/CMODEM.OBJ differ diff --git a/SCREENS/DOOM2/CMODEM.PUP b/SCREENS/DOOM2/CMODEM.PUP new file mode 100644 index 0000000..da5bc62 Binary files /dev/null and b/SCREENS/DOOM2/CMODEM.PUP differ diff --git a/SCREENS/DOOM2/CONSEL.DOG b/SCREENS/DOOM2/CONSEL.DOG new file mode 100644 index 0000000..3d7520d Binary files /dev/null and b/SCREENS/DOOM2/CONSEL.DOG differ diff --git a/SCREENS/DOOM2/CONSEL.OBJ b/SCREENS/DOOM2/CONSEL.OBJ new file mode 100644 index 0000000..40176d7 Binary files /dev/null and b/SCREENS/DOOM2/CONSEL.OBJ differ diff --git a/SCREENS/DOOM2/CONSEL.PUP b/SCREENS/DOOM2/CONSEL.PUP new file mode 100644 index 0000000..e35938d Binary files /dev/null and b/SCREENS/DOOM2/CONSEL.PUP differ diff --git a/SCREENS/DOOM2/CONTROL.DOG b/SCREENS/DOOM2/CONTROL.DOG new file mode 100644 index 0000000..03af8a2 Binary files /dev/null and b/SCREENS/DOOM2/CONTROL.DOG differ diff --git a/SCREENS/DOOM2/CONTROL.OBJ b/SCREENS/DOOM2/CONTROL.OBJ new file mode 100644 index 0000000..010c206 Binary files /dev/null and b/SCREENS/DOOM2/CONTROL.OBJ differ diff --git a/SCREENS/DOOM2/CONTROL.PUP b/SCREENS/DOOM2/CONTROL.PUP new file mode 100644 index 0000000..4b2b7ca Binary files /dev/null and b/SCREENS/DOOM2/CONTROL.PUP differ diff --git a/SCREENS/DOOM2/CSERIAL.DOG b/SCREENS/DOOM2/CSERIAL.DOG new file mode 100644 index 0000000..53e2d93 Binary files /dev/null and b/SCREENS/DOOM2/CSERIAL.DOG differ diff --git a/SCREENS/DOOM2/CSERIAL.OBJ b/SCREENS/DOOM2/CSERIAL.OBJ new file mode 100644 index 0000000..d421e63 Binary files /dev/null and b/SCREENS/DOOM2/CSERIAL.OBJ differ diff --git a/SCREENS/DOOM2/CSERIAL.PUP b/SCREENS/DOOM2/CSERIAL.PUP new file mode 100644 index 0000000..0001884 Binary files /dev/null and b/SCREENS/DOOM2/CSERIAL.PUP differ diff --git a/SCREENS/DOOM2/CWARP.DOG b/SCREENS/DOOM2/CWARP.DOG new file mode 100644 index 0000000..fa37d8d Binary files /dev/null and b/SCREENS/DOOM2/CWARP.DOG differ diff --git a/SCREENS/DOOM2/CWARP.OBJ b/SCREENS/DOOM2/CWARP.OBJ new file mode 100644 index 0000000..137f5d9 Binary files /dev/null and b/SCREENS/DOOM2/CWARP.OBJ differ diff --git a/SCREENS/DOOM2/CWARP.PUP b/SCREENS/DOOM2/CWARP.PUP new file mode 100644 index 0000000..7867458 Binary files /dev/null and b/SCREENS/DOOM2/CWARP.PUP differ diff --git a/SCREENS/DOOM2/ENTRNMBR.DOG b/SCREENS/DOOM2/ENTRNMBR.DOG new file mode 100644 index 0000000..6fe1385 Binary files /dev/null and b/SCREENS/DOOM2/ENTRNMBR.DOG differ diff --git a/SCREENS/DOOM2/ENTRNMBR.OBJ b/SCREENS/DOOM2/ENTRNMBR.OBJ new file mode 100644 index 0000000..ab79e8d Binary files /dev/null and b/SCREENS/DOOM2/ENTRNMBR.OBJ differ diff --git a/SCREENS/DOOM2/ENTRNMBR.PUP b/SCREENS/DOOM2/ENTRNMBR.PUP new file mode 100644 index 0000000..13d749f Binary files /dev/null and b/SCREENS/DOOM2/ENTRNMBR.PUP differ diff --git a/SCREENS/DOOM2/FILES b/SCREENS/DOOM2/FILES new file mode 100644 index 0000000..94ece14 --- /dev/null +++ b/SCREENS/DOOM2/FILES @@ -0,0 +1,36 @@ +askpres.pup +cmodem.pup +consel.pup +control.pup +cserial.pup +cwarp.pup +entrnmbr.pup +gusirqer.pup +idcard.pup +idjoysel.pup +idkeysel.pup +idmain2.pup +idmousel.pup +irqerr.pup +macros.pup +mcard.pup +midiport.pup +modemchs.pup +modsave.pup +mousentr.pup +mouspres.pup +netplay.pup +netplay2.pup +netsave.pup +netserr.pup +netwk2.pup +numdig.pup +phonelst.pup +quitwin.pup +sbdma.pup +sbirq.pup +sbport.pup +sersave.pup +show.pup +sockerr.pup +title.pup diff --git a/SCREENS/DOOM2/FORALL.EXE b/SCREENS/DOOM2/FORALL.EXE new file mode 100644 index 0000000..0288e97 Binary files /dev/null and b/SCREENS/DOOM2/FORALL.EXE differ diff --git a/SCREENS/DOOM2/GUSIRQER.DOG b/SCREENS/DOOM2/GUSIRQER.DOG new file mode 100644 index 0000000..130ebef Binary files /dev/null and b/SCREENS/DOOM2/GUSIRQER.DOG differ diff --git a/SCREENS/DOOM2/GUSIRQER.OBJ b/SCREENS/DOOM2/GUSIRQER.OBJ new file mode 100644 index 0000000..6dbee24 Binary files /dev/null and b/SCREENS/DOOM2/GUSIRQER.OBJ differ diff --git a/SCREENS/DOOM2/GUSIRQER.PUP b/SCREENS/DOOM2/GUSIRQER.PUP new file mode 100644 index 0000000..bc84883 Binary files /dev/null and b/SCREENS/DOOM2/GUSIRQER.PUP differ diff --git a/SCREENS/DOOM2/IDCARD.DOG b/SCREENS/DOOM2/IDCARD.DOG new file mode 100644 index 0000000..2125b77 Binary files /dev/null and b/SCREENS/DOOM2/IDCARD.DOG differ diff --git a/SCREENS/DOOM2/IDCARD.OBJ b/SCREENS/DOOM2/IDCARD.OBJ new file mode 100644 index 0000000..ca38235 Binary files /dev/null and b/SCREENS/DOOM2/IDCARD.OBJ differ diff --git a/SCREENS/DOOM2/IDCARD.PUP b/SCREENS/DOOM2/IDCARD.PUP new file mode 100644 index 0000000..2dcb1cd Binary files /dev/null and b/SCREENS/DOOM2/IDCARD.PUP differ diff --git a/SCREENS/DOOM2/IDJOYSEL.DOG b/SCREENS/DOOM2/IDJOYSEL.DOG new file mode 100644 index 0000000..0892f5d Binary files /dev/null and b/SCREENS/DOOM2/IDJOYSEL.DOG differ diff --git a/SCREENS/DOOM2/IDJOYSEL.OBJ b/SCREENS/DOOM2/IDJOYSEL.OBJ new file mode 100644 index 0000000..7d23f7c Binary files /dev/null and b/SCREENS/DOOM2/IDJOYSEL.OBJ differ diff --git a/SCREENS/DOOM2/IDJOYSEL.PUP b/SCREENS/DOOM2/IDJOYSEL.PUP new file mode 100644 index 0000000..325620f Binary files /dev/null and b/SCREENS/DOOM2/IDJOYSEL.PUP differ diff --git a/SCREENS/DOOM2/IDKEYSEL.DOG b/SCREENS/DOOM2/IDKEYSEL.DOG new file mode 100644 index 0000000..5121d8c Binary files /dev/null and b/SCREENS/DOOM2/IDKEYSEL.DOG differ diff --git a/SCREENS/DOOM2/IDKEYSEL.OBJ b/SCREENS/DOOM2/IDKEYSEL.OBJ new file mode 100644 index 0000000..7aa1725 Binary files /dev/null and b/SCREENS/DOOM2/IDKEYSEL.OBJ differ diff --git a/SCREENS/DOOM2/IDKEYSEL.PUP b/SCREENS/DOOM2/IDKEYSEL.PUP new file mode 100644 index 0000000..15c6b3a Binary files /dev/null and b/SCREENS/DOOM2/IDKEYSEL.PUP differ diff --git a/SCREENS/DOOM2/IDMAIN2.DOG b/SCREENS/DOOM2/IDMAIN2.DOG new file mode 100644 index 0000000..b460175 Binary files /dev/null and b/SCREENS/DOOM2/IDMAIN2.DOG differ diff --git a/SCREENS/DOOM2/IDMAIN2.OBJ b/SCREENS/DOOM2/IDMAIN2.OBJ new file mode 100644 index 0000000..0ead232 Binary files /dev/null and b/SCREENS/DOOM2/IDMAIN2.OBJ differ diff --git a/SCREENS/DOOM2/IDMAIN2.PUP b/SCREENS/DOOM2/IDMAIN2.PUP new file mode 100644 index 0000000..1c0c4b2 Binary files /dev/null and b/SCREENS/DOOM2/IDMAIN2.PUP differ diff --git a/SCREENS/DOOM2/IDMOUSEL.DOG b/SCREENS/DOOM2/IDMOUSEL.DOG new file mode 100644 index 0000000..ba47159 Binary files /dev/null and b/SCREENS/DOOM2/IDMOUSEL.DOG differ diff --git a/SCREENS/DOOM2/IDMOUSEL.OBJ b/SCREENS/DOOM2/IDMOUSEL.OBJ new file mode 100644 index 0000000..80e2acc Binary files /dev/null and b/SCREENS/DOOM2/IDMOUSEL.OBJ differ diff --git a/SCREENS/DOOM2/IDMOUSEL.PUP b/SCREENS/DOOM2/IDMOUSEL.PUP new file mode 100644 index 0000000..7aa439e Binary files /dev/null and b/SCREENS/DOOM2/IDMOUSEL.PUP differ diff --git a/SCREENS/DOOM2/IRQERR.DOG b/SCREENS/DOOM2/IRQERR.DOG new file mode 100644 index 0000000..ea97eae Binary files /dev/null and b/SCREENS/DOOM2/IRQERR.DOG differ diff --git a/SCREENS/DOOM2/IRQERR.OBJ b/SCREENS/DOOM2/IRQERR.OBJ new file mode 100644 index 0000000..3264088 Binary files /dev/null and b/SCREENS/DOOM2/IRQERR.OBJ differ diff --git a/SCREENS/DOOM2/IRQERR.PUP b/SCREENS/DOOM2/IRQERR.PUP new file mode 100644 index 0000000..668cb59 Binary files /dev/null and b/SCREENS/DOOM2/IRQERR.PUP differ diff --git a/SCREENS/DOOM2/MACROS.DOG b/SCREENS/DOOM2/MACROS.DOG new file mode 100644 index 0000000..cfec1d9 Binary files /dev/null and b/SCREENS/DOOM2/MACROS.DOG differ diff --git a/SCREENS/DOOM2/MACROS.OBJ b/SCREENS/DOOM2/MACROS.OBJ new file mode 100644 index 0000000..ee77f13 Binary files /dev/null and b/SCREENS/DOOM2/MACROS.OBJ differ diff --git a/SCREENS/DOOM2/MACROS.PUP b/SCREENS/DOOM2/MACROS.PUP new file mode 100644 index 0000000..d6ca6bf Binary files /dev/null and b/SCREENS/DOOM2/MACROS.PUP differ diff --git a/SCREENS/DOOM2/MAKE.BAT b/SCREENS/DOOM2/MAKE.BAT new file mode 100644 index 0000000..a363315 --- /dev/null +++ b/SCREENS/DOOM2/MAKE.BAT @@ -0,0 +1,3 @@ +dir /b *.pup > files +forall files "mo -f" + \ No newline at end of file diff --git a/SCREENS/DOOM2/MCARD.DOG b/SCREENS/DOOM2/MCARD.DOG new file mode 100644 index 0000000..7c2b66b Binary files /dev/null and b/SCREENS/DOOM2/MCARD.DOG differ diff --git a/SCREENS/DOOM2/MCARD.OBJ b/SCREENS/DOOM2/MCARD.OBJ new file mode 100644 index 0000000..32bc42d Binary files /dev/null and b/SCREENS/DOOM2/MCARD.OBJ differ diff --git a/SCREENS/DOOM2/MCARD.PUP b/SCREENS/DOOM2/MCARD.PUP new file mode 100644 index 0000000..1d2a07b Binary files /dev/null and b/SCREENS/DOOM2/MCARD.PUP differ diff --git a/SCREENS/DOOM2/MIDIPORT.DOG b/SCREENS/DOOM2/MIDIPORT.DOG new file mode 100644 index 0000000..e3731c3 Binary files /dev/null and b/SCREENS/DOOM2/MIDIPORT.DOG differ diff --git a/SCREENS/DOOM2/MIDIPORT.OBJ b/SCREENS/DOOM2/MIDIPORT.OBJ new file mode 100644 index 0000000..b43bbfc Binary files /dev/null and b/SCREENS/DOOM2/MIDIPORT.OBJ differ diff --git a/SCREENS/DOOM2/MIDIPORT.PUP b/SCREENS/DOOM2/MIDIPORT.PUP new file mode 100644 index 0000000..31a6641 Binary files /dev/null and b/SCREENS/DOOM2/MIDIPORT.PUP differ diff --git a/SCREENS/DOOM2/MO.EXE b/SCREENS/DOOM2/MO.EXE new file mode 100644 index 0000000..d464a27 Binary files /dev/null and b/SCREENS/DOOM2/MO.EXE differ diff --git a/SCREENS/DOOM2/MODEMCHS.DOG b/SCREENS/DOOM2/MODEMCHS.DOG new file mode 100644 index 0000000..e73cd05 Binary files /dev/null and b/SCREENS/DOOM2/MODEMCHS.DOG differ diff --git a/SCREENS/DOOM2/MODEMCHS.OBJ b/SCREENS/DOOM2/MODEMCHS.OBJ new file mode 100644 index 0000000..f4992c9 Binary files /dev/null and b/SCREENS/DOOM2/MODEMCHS.OBJ differ diff --git a/SCREENS/DOOM2/MODEMCHS.PUP b/SCREENS/DOOM2/MODEMCHS.PUP new file mode 100644 index 0000000..42a365f Binary files /dev/null and b/SCREENS/DOOM2/MODEMCHS.PUP differ diff --git a/SCREENS/DOOM2/MODSAVE.DOG b/SCREENS/DOOM2/MODSAVE.DOG new file mode 100644 index 0000000..139e471 Binary files /dev/null and b/SCREENS/DOOM2/MODSAVE.DOG differ diff --git a/SCREENS/DOOM2/MODSAVE.OBJ b/SCREENS/DOOM2/MODSAVE.OBJ new file mode 100644 index 0000000..0ff2f45 Binary files /dev/null and b/SCREENS/DOOM2/MODSAVE.OBJ differ diff --git a/SCREENS/DOOM2/MODSAVE.PUP b/SCREENS/DOOM2/MODSAVE.PUP new file mode 100644 index 0000000..02b478c Binary files /dev/null and b/SCREENS/DOOM2/MODSAVE.PUP differ diff --git a/SCREENS/DOOM2/MOUSENTR.DOG b/SCREENS/DOOM2/MOUSENTR.DOG new file mode 100644 index 0000000..f1d4022 Binary files /dev/null and b/SCREENS/DOOM2/MOUSENTR.DOG differ diff --git a/SCREENS/DOOM2/MOUSENTR.OBJ b/SCREENS/DOOM2/MOUSENTR.OBJ new file mode 100644 index 0000000..58edfd3 Binary files /dev/null and b/SCREENS/DOOM2/MOUSENTR.OBJ differ diff --git a/SCREENS/DOOM2/MOUSENTR.PUP b/SCREENS/DOOM2/MOUSENTR.PUP new file mode 100644 index 0000000..a6a36a7 Binary files /dev/null and b/SCREENS/DOOM2/MOUSENTR.PUP differ diff --git a/SCREENS/DOOM2/MOUSPRES.DOG b/SCREENS/DOOM2/MOUSPRES.DOG new file mode 100644 index 0000000..3d0fff1 Binary files /dev/null and b/SCREENS/DOOM2/MOUSPRES.DOG differ diff --git a/SCREENS/DOOM2/MOUSPRES.OBJ b/SCREENS/DOOM2/MOUSPRES.OBJ new file mode 100644 index 0000000..e41ef64 Binary files /dev/null and b/SCREENS/DOOM2/MOUSPRES.OBJ differ diff --git a/SCREENS/DOOM2/MOUSPRES.PUP b/SCREENS/DOOM2/MOUSPRES.PUP new file mode 100644 index 0000000..083d852 Binary files /dev/null and b/SCREENS/DOOM2/MOUSPRES.PUP differ diff --git a/SCREENS/DOOM2/NETPLAY.DOG b/SCREENS/DOOM2/NETPLAY.DOG new file mode 100644 index 0000000..8c203cb Binary files /dev/null and b/SCREENS/DOOM2/NETPLAY.DOG differ diff --git a/SCREENS/DOOM2/NETPLAY.OBJ b/SCREENS/DOOM2/NETPLAY.OBJ new file mode 100644 index 0000000..aa05273 Binary files /dev/null and b/SCREENS/DOOM2/NETPLAY.OBJ differ diff --git a/SCREENS/DOOM2/NETPLAY.PUP b/SCREENS/DOOM2/NETPLAY.PUP new file mode 100644 index 0000000..9e22175 Binary files /dev/null and b/SCREENS/DOOM2/NETPLAY.PUP differ diff --git a/SCREENS/DOOM2/NETPLAY2.DOG b/SCREENS/DOOM2/NETPLAY2.DOG new file mode 100644 index 0000000..7a66e22 Binary files /dev/null and b/SCREENS/DOOM2/NETPLAY2.DOG differ diff --git a/SCREENS/DOOM2/NETPLAY2.OBJ b/SCREENS/DOOM2/NETPLAY2.OBJ new file mode 100644 index 0000000..f2cdf97 Binary files /dev/null and b/SCREENS/DOOM2/NETPLAY2.OBJ differ diff --git a/SCREENS/DOOM2/NETPLAY2.PUP b/SCREENS/DOOM2/NETPLAY2.PUP new file mode 100644 index 0000000..81cd565 Binary files /dev/null and b/SCREENS/DOOM2/NETPLAY2.PUP differ diff --git a/SCREENS/DOOM2/NETSAVE.DOG b/SCREENS/DOOM2/NETSAVE.DOG new file mode 100644 index 0000000..4fa25c0 Binary files /dev/null and b/SCREENS/DOOM2/NETSAVE.DOG differ diff --git a/SCREENS/DOOM2/NETSAVE.OBJ b/SCREENS/DOOM2/NETSAVE.OBJ new file mode 100644 index 0000000..25e6250 Binary files /dev/null and b/SCREENS/DOOM2/NETSAVE.OBJ differ diff --git a/SCREENS/DOOM2/NETSAVE.PUP b/SCREENS/DOOM2/NETSAVE.PUP new file mode 100644 index 0000000..451e76d Binary files /dev/null and b/SCREENS/DOOM2/NETSAVE.PUP differ diff --git a/SCREENS/DOOM2/NETSERR.DOG b/SCREENS/DOOM2/NETSERR.DOG new file mode 100644 index 0000000..a76aa78 Binary files /dev/null and b/SCREENS/DOOM2/NETSERR.DOG differ diff --git a/SCREENS/DOOM2/NETSERR.OBJ b/SCREENS/DOOM2/NETSERR.OBJ new file mode 100644 index 0000000..98d7ba2 Binary files /dev/null and b/SCREENS/DOOM2/NETSERR.OBJ differ diff --git a/SCREENS/DOOM2/NETSERR.PUP b/SCREENS/DOOM2/NETSERR.PUP new file mode 100644 index 0000000..fef15c7 Binary files /dev/null and b/SCREENS/DOOM2/NETSERR.PUP differ diff --git a/SCREENS/DOOM2/NETWK2.DOG b/SCREENS/DOOM2/NETWK2.DOG new file mode 100644 index 0000000..00a6b65 Binary files /dev/null and b/SCREENS/DOOM2/NETWK2.DOG differ diff --git a/SCREENS/DOOM2/NETWK2.OBJ b/SCREENS/DOOM2/NETWK2.OBJ new file mode 100644 index 0000000..3c04b96 Binary files /dev/null and b/SCREENS/DOOM2/NETWK2.OBJ differ diff --git a/SCREENS/DOOM2/NETWK2.PUP b/SCREENS/DOOM2/NETWK2.PUP new file mode 100644 index 0000000..cb09fa9 Binary files /dev/null and b/SCREENS/DOOM2/NETWK2.PUP differ diff --git a/SCREENS/DOOM2/NUMDIG.DOG b/SCREENS/DOOM2/NUMDIG.DOG new file mode 100644 index 0000000..eb731ce Binary files /dev/null and b/SCREENS/DOOM2/NUMDIG.DOG differ diff --git a/SCREENS/DOOM2/NUMDIG.OBJ b/SCREENS/DOOM2/NUMDIG.OBJ new file mode 100644 index 0000000..98f3ca0 Binary files /dev/null and b/SCREENS/DOOM2/NUMDIG.OBJ differ diff --git a/SCREENS/DOOM2/NUMDIG.PUP b/SCREENS/DOOM2/NUMDIG.PUP new file mode 100644 index 0000000..6e795ec Binary files /dev/null and b/SCREENS/DOOM2/NUMDIG.PUP differ diff --git a/SCREENS/DOOM2/PHONELST.DOG b/SCREENS/DOOM2/PHONELST.DOG new file mode 100644 index 0000000..d099f63 Binary files /dev/null and b/SCREENS/DOOM2/PHONELST.DOG differ diff --git a/SCREENS/DOOM2/PHONELST.OBJ b/SCREENS/DOOM2/PHONELST.OBJ new file mode 100644 index 0000000..2c043a2 Binary files /dev/null and b/SCREENS/DOOM2/PHONELST.OBJ differ diff --git a/SCREENS/DOOM2/PHONELST.PUP b/SCREENS/DOOM2/PHONELST.PUP new file mode 100644 index 0000000..866ab76 Binary files /dev/null and b/SCREENS/DOOM2/PHONELST.PUP differ diff --git a/SCREENS/DOOM2/QUITWIN.DOG b/SCREENS/DOOM2/QUITWIN.DOG new file mode 100644 index 0000000..929993a Binary files /dev/null and b/SCREENS/DOOM2/QUITWIN.DOG differ diff --git a/SCREENS/DOOM2/QUITWIN.OBJ b/SCREENS/DOOM2/QUITWIN.OBJ new file mode 100644 index 0000000..34221cf Binary files /dev/null and b/SCREENS/DOOM2/QUITWIN.OBJ differ diff --git a/SCREENS/DOOM2/QUITWIN.PUP b/SCREENS/DOOM2/QUITWIN.PUP new file mode 100644 index 0000000..9de35a4 Binary files /dev/null and b/SCREENS/DOOM2/QUITWIN.PUP differ diff --git a/SCREENS/DOOM2/SBDMA.DOG b/SCREENS/DOOM2/SBDMA.DOG new file mode 100644 index 0000000..f4e65f3 Binary files /dev/null and b/SCREENS/DOOM2/SBDMA.DOG differ diff --git a/SCREENS/DOOM2/SBDMA.OBJ b/SCREENS/DOOM2/SBDMA.OBJ new file mode 100644 index 0000000..e339ef6 Binary files /dev/null and b/SCREENS/DOOM2/SBDMA.OBJ differ diff --git a/SCREENS/DOOM2/SBDMA.PUP b/SCREENS/DOOM2/SBDMA.PUP new file mode 100644 index 0000000..708c2bb Binary files /dev/null and b/SCREENS/DOOM2/SBDMA.PUP differ diff --git a/SCREENS/DOOM2/SBIRQ.DOG b/SCREENS/DOOM2/SBIRQ.DOG new file mode 100644 index 0000000..774742f Binary files /dev/null and b/SCREENS/DOOM2/SBIRQ.DOG differ diff --git a/SCREENS/DOOM2/SBIRQ.OBJ b/SCREENS/DOOM2/SBIRQ.OBJ new file mode 100644 index 0000000..657f94c Binary files /dev/null and b/SCREENS/DOOM2/SBIRQ.OBJ differ diff --git a/SCREENS/DOOM2/SBIRQ.PUP b/SCREENS/DOOM2/SBIRQ.PUP new file mode 100644 index 0000000..5eadf87 Binary files /dev/null and b/SCREENS/DOOM2/SBIRQ.PUP differ diff --git a/SCREENS/DOOM2/SBPORT.DOG b/SCREENS/DOOM2/SBPORT.DOG new file mode 100644 index 0000000..ce7fd21 Binary files /dev/null and b/SCREENS/DOOM2/SBPORT.DOG differ diff --git a/SCREENS/DOOM2/SBPORT.OBJ b/SCREENS/DOOM2/SBPORT.OBJ new file mode 100644 index 0000000..5c74b24 Binary files /dev/null and b/SCREENS/DOOM2/SBPORT.OBJ differ diff --git a/SCREENS/DOOM2/SBPORT.PUP b/SCREENS/DOOM2/SBPORT.PUP new file mode 100644 index 0000000..7cf96ce Binary files /dev/null and b/SCREENS/DOOM2/SBPORT.PUP differ diff --git a/SCREENS/DOOM2/SERSAVE.DOG b/SCREENS/DOOM2/SERSAVE.DOG new file mode 100644 index 0000000..1065f18 Binary files /dev/null and b/SCREENS/DOOM2/SERSAVE.DOG differ diff --git a/SCREENS/DOOM2/SERSAVE.OBJ b/SCREENS/DOOM2/SERSAVE.OBJ new file mode 100644 index 0000000..5c5fb4e Binary files /dev/null and b/SCREENS/DOOM2/SERSAVE.OBJ differ diff --git a/SCREENS/DOOM2/SERSAVE.PUP b/SCREENS/DOOM2/SERSAVE.PUP new file mode 100644 index 0000000..09839b2 Binary files /dev/null and b/SCREENS/DOOM2/SERSAVE.PUP differ diff --git a/SCREENS/DOOM2/SHOW.DOG b/SCREENS/DOOM2/SHOW.DOG new file mode 100644 index 0000000..40fc955 Binary files /dev/null and b/SCREENS/DOOM2/SHOW.DOG differ diff --git a/SCREENS/DOOM2/SHOW.OBJ b/SCREENS/DOOM2/SHOW.OBJ new file mode 100644 index 0000000..710656b Binary files /dev/null and b/SCREENS/DOOM2/SHOW.OBJ differ diff --git a/SCREENS/DOOM2/SHOW.PUP b/SCREENS/DOOM2/SHOW.PUP new file mode 100644 index 0000000..58c8404 Binary files /dev/null and b/SCREENS/DOOM2/SHOW.PUP differ diff --git a/SCREENS/DOOM2/SOCKERR.DOG b/SCREENS/DOOM2/SOCKERR.DOG new file mode 100644 index 0000000..402dca4 Binary files /dev/null and b/SCREENS/DOOM2/SOCKERR.DOG differ diff --git a/SCREENS/DOOM2/SOCKERR.OBJ b/SCREENS/DOOM2/SOCKERR.OBJ new file mode 100644 index 0000000..f68f0dd Binary files /dev/null and b/SCREENS/DOOM2/SOCKERR.OBJ differ diff --git a/SCREENS/DOOM2/SOCKERR.PUP b/SCREENS/DOOM2/SOCKERR.PUP new file mode 100644 index 0000000..dcb39a1 Binary files /dev/null and b/SCREENS/DOOM2/SOCKERR.PUP differ diff --git a/SCREENS/DOOM2/TITLE.DOG b/SCREENS/DOOM2/TITLE.DOG new file mode 100644 index 0000000..bd579d9 Binary files /dev/null and b/SCREENS/DOOM2/TITLE.DOG differ diff --git a/SCREENS/DOOM2/TITLE.OBJ b/SCREENS/DOOM2/TITLE.OBJ new file mode 100644 index 0000000..2d462e5 Binary files /dev/null and b/SCREENS/DOOM2/TITLE.OBJ differ diff --git a/SCREENS/DOOM2/TITLE.PUP b/SCREENS/DOOM2/TITLE.PUP new file mode 100644 index 0000000..bd579d9 Binary files /dev/null and b/SCREENS/DOOM2/TITLE.PUP differ diff --git a/SCREENS/DOOM2FR/ASKPRES.DOG b/SCREENS/DOOM2FR/ASKPRES.DOG new file mode 100644 index 0000000..cabbfdb Binary files /dev/null and b/SCREENS/DOOM2FR/ASKPRES.DOG differ diff --git a/SCREENS/DOOM2FR/ASKPRES.OBJ b/SCREENS/DOOM2FR/ASKPRES.OBJ new file mode 100644 index 0000000..f523f2c Binary files /dev/null and b/SCREENS/DOOM2FR/ASKPRES.OBJ differ diff --git a/SCREENS/DOOM2FR/ASKPRES.PUP b/SCREENS/DOOM2FR/ASKPRES.PUP new file mode 100644 index 0000000..540f2bd Binary files /dev/null and b/SCREENS/DOOM2FR/ASKPRES.PUP differ diff --git a/SCREENS/DOOM2FR/CMODEM.DOG b/SCREENS/DOOM2FR/CMODEM.DOG new file mode 100644 index 0000000..4e6dc97 Binary files /dev/null and b/SCREENS/DOOM2FR/CMODEM.DOG differ diff --git a/SCREENS/DOOM2FR/CMODEM.OBJ b/SCREENS/DOOM2FR/CMODEM.OBJ new file mode 100644 index 0000000..d80ed87 Binary files /dev/null and b/SCREENS/DOOM2FR/CMODEM.OBJ differ diff --git a/SCREENS/DOOM2FR/CMODEM.PUP b/SCREENS/DOOM2FR/CMODEM.PUP new file mode 100644 index 0000000..0cc0f07 Binary files /dev/null and b/SCREENS/DOOM2FR/CMODEM.PUP differ diff --git a/SCREENS/DOOM2FR/CONSEL.DOG b/SCREENS/DOOM2FR/CONSEL.DOG new file mode 100644 index 0000000..40244a7 Binary files /dev/null and b/SCREENS/DOOM2FR/CONSEL.DOG differ diff --git a/SCREENS/DOOM2FR/CONSEL.OBJ b/SCREENS/DOOM2FR/CONSEL.OBJ new file mode 100644 index 0000000..6c3c25c Binary files /dev/null and b/SCREENS/DOOM2FR/CONSEL.OBJ differ diff --git a/SCREENS/DOOM2FR/CONSEL.PUP b/SCREENS/DOOM2FR/CONSEL.PUP new file mode 100644 index 0000000..e0cdc1b Binary files /dev/null and b/SCREENS/DOOM2FR/CONSEL.PUP differ diff --git a/SCREENS/DOOM2FR/CONTROL.DOG b/SCREENS/DOOM2FR/CONTROL.DOG new file mode 100644 index 0000000..de39557 Binary files /dev/null and b/SCREENS/DOOM2FR/CONTROL.DOG differ diff --git a/SCREENS/DOOM2FR/CONTROL.OBJ b/SCREENS/DOOM2FR/CONTROL.OBJ new file mode 100644 index 0000000..4bd2c00 Binary files /dev/null and b/SCREENS/DOOM2FR/CONTROL.OBJ differ diff --git a/SCREENS/DOOM2FR/CONTROL.PUP b/SCREENS/DOOM2FR/CONTROL.PUP new file mode 100644 index 0000000..7832bfc Binary files /dev/null and b/SCREENS/DOOM2FR/CONTROL.PUP differ diff --git a/SCREENS/DOOM2FR/CSERIAL.DOG b/SCREENS/DOOM2FR/CSERIAL.DOG new file mode 100644 index 0000000..516cef6 Binary files /dev/null and b/SCREENS/DOOM2FR/CSERIAL.DOG differ diff --git a/SCREENS/DOOM2FR/CSERIAL.OBJ b/SCREENS/DOOM2FR/CSERIAL.OBJ new file mode 100644 index 0000000..f96818a Binary files /dev/null and b/SCREENS/DOOM2FR/CSERIAL.OBJ differ diff --git a/SCREENS/DOOM2FR/CSERIAL.PUP b/SCREENS/DOOM2FR/CSERIAL.PUP new file mode 100644 index 0000000..585394b Binary files /dev/null and b/SCREENS/DOOM2FR/CSERIAL.PUP differ diff --git a/SCREENS/DOOM2FR/CWARP.DOG b/SCREENS/DOOM2FR/CWARP.DOG new file mode 100644 index 0000000..36f7c8f Binary files /dev/null and b/SCREENS/DOOM2FR/CWARP.DOG differ diff --git a/SCREENS/DOOM2FR/CWARP.OBJ b/SCREENS/DOOM2FR/CWARP.OBJ new file mode 100644 index 0000000..a2cd321 Binary files /dev/null and b/SCREENS/DOOM2FR/CWARP.OBJ differ diff --git a/SCREENS/DOOM2FR/CWARP.PUP b/SCREENS/DOOM2FR/CWARP.PUP new file mode 100644 index 0000000..5171b15 Binary files /dev/null and b/SCREENS/DOOM2FR/CWARP.PUP differ diff --git a/SCREENS/DOOM2FR/FILES b/SCREENS/DOOM2FR/FILES new file mode 100644 index 0000000..41aac5f --- /dev/null +++ b/SCREENS/DOOM2FR/FILES @@ -0,0 +1,35 @@ +askpres.pup +cmodem.pup +consel.pup +control.pup +cserial.pup +cwarp.pup +gusirqer.pup +idcard.pup +idjoysel.pup +idkeysel.pup +idmain2.pup +idmousel.pup +irqerr.pup +macros.pup +mcard.pup +midiport.pup +modemchs.pup +modsave.pup +mousentr.pup +mouspres.pup +netplay.pup +netplay2.pup +netsave.pup +netserr.pup +netwk2.pup +numdig.pup +phonelst.pup +quitwin.pup +sbdma.pup +sbirq.pup +sbport.pup +sersave.pup +show.pup +sockerr.pup +title.pup diff --git a/SCREENS/DOOM2FR/FORALL.EXE b/SCREENS/DOOM2FR/FORALL.EXE new file mode 100644 index 0000000..0288e97 Binary files /dev/null and b/SCREENS/DOOM2FR/FORALL.EXE differ diff --git a/SCREENS/DOOM2FR/GUSIRQER.DOG b/SCREENS/DOOM2FR/GUSIRQER.DOG new file mode 100644 index 0000000..b7b3110 Binary files /dev/null and b/SCREENS/DOOM2FR/GUSIRQER.DOG differ diff --git a/SCREENS/DOOM2FR/GUSIRQER.OBJ b/SCREENS/DOOM2FR/GUSIRQER.OBJ new file mode 100644 index 0000000..a1c61e6 Binary files /dev/null and b/SCREENS/DOOM2FR/GUSIRQER.OBJ differ diff --git a/SCREENS/DOOM2FR/GUSIRQER.PUP b/SCREENS/DOOM2FR/GUSIRQER.PUP new file mode 100644 index 0000000..c71e851 Binary files /dev/null and b/SCREENS/DOOM2FR/GUSIRQER.PUP differ diff --git a/SCREENS/DOOM2FR/IDCARD.DOG b/SCREENS/DOOM2FR/IDCARD.DOG new file mode 100644 index 0000000..9da6db0 Binary files /dev/null and b/SCREENS/DOOM2FR/IDCARD.DOG differ diff --git a/SCREENS/DOOM2FR/IDCARD.OBJ b/SCREENS/DOOM2FR/IDCARD.OBJ new file mode 100644 index 0000000..ad04056 Binary files /dev/null and b/SCREENS/DOOM2FR/IDCARD.OBJ differ diff --git a/SCREENS/DOOM2FR/IDCARD.PUP b/SCREENS/DOOM2FR/IDCARD.PUP new file mode 100644 index 0000000..6398c38 Binary files /dev/null and b/SCREENS/DOOM2FR/IDCARD.PUP differ diff --git a/SCREENS/DOOM2FR/IDJOYSEL.DOG b/SCREENS/DOOM2FR/IDJOYSEL.DOG new file mode 100644 index 0000000..9522c6a Binary files /dev/null and b/SCREENS/DOOM2FR/IDJOYSEL.DOG differ diff --git a/SCREENS/DOOM2FR/IDJOYSEL.OBJ b/SCREENS/DOOM2FR/IDJOYSEL.OBJ new file mode 100644 index 0000000..3871eea Binary files /dev/null and b/SCREENS/DOOM2FR/IDJOYSEL.OBJ differ diff --git a/SCREENS/DOOM2FR/IDJOYSEL.PUP b/SCREENS/DOOM2FR/IDJOYSEL.PUP new file mode 100644 index 0000000..468e38f Binary files /dev/null and b/SCREENS/DOOM2FR/IDJOYSEL.PUP differ diff --git a/SCREENS/DOOM2FR/IDKEYSEL.DOG b/SCREENS/DOOM2FR/IDKEYSEL.DOG new file mode 100644 index 0000000..f5f44d2 Binary files /dev/null and b/SCREENS/DOOM2FR/IDKEYSEL.DOG differ diff --git a/SCREENS/DOOM2FR/IDKEYSEL.OBJ b/SCREENS/DOOM2FR/IDKEYSEL.OBJ new file mode 100644 index 0000000..82814a1 Binary files /dev/null and b/SCREENS/DOOM2FR/IDKEYSEL.OBJ differ diff --git a/SCREENS/DOOM2FR/IDKEYSEL.PUP b/SCREENS/DOOM2FR/IDKEYSEL.PUP new file mode 100644 index 0000000..3d09d07 Binary files /dev/null and b/SCREENS/DOOM2FR/IDKEYSEL.PUP differ diff --git a/SCREENS/DOOM2FR/IDMAIN2.DOG b/SCREENS/DOOM2FR/IDMAIN2.DOG new file mode 100644 index 0000000..5bc243a Binary files /dev/null and b/SCREENS/DOOM2FR/IDMAIN2.DOG differ diff --git a/SCREENS/DOOM2FR/IDMAIN2.OBJ b/SCREENS/DOOM2FR/IDMAIN2.OBJ new file mode 100644 index 0000000..1306679 Binary files /dev/null and b/SCREENS/DOOM2FR/IDMAIN2.OBJ differ diff --git a/SCREENS/DOOM2FR/IDMAIN2.PUP b/SCREENS/DOOM2FR/IDMAIN2.PUP new file mode 100644 index 0000000..2975804 Binary files /dev/null and b/SCREENS/DOOM2FR/IDMAIN2.PUP differ diff --git a/SCREENS/DOOM2FR/IDMOUSEL.DOG b/SCREENS/DOOM2FR/IDMOUSEL.DOG new file mode 100644 index 0000000..ec5afa0 Binary files /dev/null and b/SCREENS/DOOM2FR/IDMOUSEL.DOG differ diff --git a/SCREENS/DOOM2FR/IDMOUSEL.OBJ b/SCREENS/DOOM2FR/IDMOUSEL.OBJ new file mode 100644 index 0000000..2acba04 Binary files /dev/null and b/SCREENS/DOOM2FR/IDMOUSEL.OBJ differ diff --git a/SCREENS/DOOM2FR/IDMOUSEL.PUP b/SCREENS/DOOM2FR/IDMOUSEL.PUP new file mode 100644 index 0000000..e3896be Binary files /dev/null and b/SCREENS/DOOM2FR/IDMOUSEL.PUP differ diff --git a/SCREENS/DOOM2FR/IRQERR.DOG b/SCREENS/DOOM2FR/IRQERR.DOG new file mode 100644 index 0000000..ecdc7f3 Binary files /dev/null and b/SCREENS/DOOM2FR/IRQERR.DOG differ diff --git a/SCREENS/DOOM2FR/IRQERR.OBJ b/SCREENS/DOOM2FR/IRQERR.OBJ new file mode 100644 index 0000000..d09a71a Binary files /dev/null and b/SCREENS/DOOM2FR/IRQERR.OBJ differ diff --git a/SCREENS/DOOM2FR/IRQERR.PUP b/SCREENS/DOOM2FR/IRQERR.PUP new file mode 100644 index 0000000..3f7cbc9 Binary files /dev/null and b/SCREENS/DOOM2FR/IRQERR.PUP differ diff --git a/SCREENS/DOOM2FR/MACROS.DOG b/SCREENS/DOOM2FR/MACROS.DOG new file mode 100644 index 0000000..1cb899f Binary files /dev/null and b/SCREENS/DOOM2FR/MACROS.DOG differ diff --git a/SCREENS/DOOM2FR/MACROS.OBJ b/SCREENS/DOOM2FR/MACROS.OBJ new file mode 100644 index 0000000..129b7cc Binary files /dev/null and b/SCREENS/DOOM2FR/MACROS.OBJ differ diff --git a/SCREENS/DOOM2FR/MACROS.PUP b/SCREENS/DOOM2FR/MACROS.PUP new file mode 100644 index 0000000..7862bbd Binary files /dev/null and b/SCREENS/DOOM2FR/MACROS.PUP differ diff --git a/SCREENS/DOOM2FR/MAKE.BAT b/SCREENS/DOOM2FR/MAKE.BAT new file mode 100644 index 0000000..2d9f988 --- /dev/null +++ b/SCREENS/DOOM2FR/MAKE.BAT @@ -0,0 +1,2 @@ +@echo off +forall files "mo -f" diff --git a/SCREENS/DOOM2FR/MCARD.DOG b/SCREENS/DOOM2FR/MCARD.DOG new file mode 100644 index 0000000..ae24fe4 Binary files /dev/null and b/SCREENS/DOOM2FR/MCARD.DOG differ diff --git a/SCREENS/DOOM2FR/MCARD.OBJ b/SCREENS/DOOM2FR/MCARD.OBJ new file mode 100644 index 0000000..b77675c Binary files /dev/null and b/SCREENS/DOOM2FR/MCARD.OBJ differ diff --git a/SCREENS/DOOM2FR/MCARD.PUP b/SCREENS/DOOM2FR/MCARD.PUP new file mode 100644 index 0000000..3dd0fa5 Binary files /dev/null and b/SCREENS/DOOM2FR/MCARD.PUP differ diff --git a/SCREENS/DOOM2FR/MIDIPORT.DOG b/SCREENS/DOOM2FR/MIDIPORT.DOG new file mode 100644 index 0000000..6233b05 Binary files /dev/null and b/SCREENS/DOOM2FR/MIDIPORT.DOG differ diff --git a/SCREENS/DOOM2FR/MIDIPORT.OBJ b/SCREENS/DOOM2FR/MIDIPORT.OBJ new file mode 100644 index 0000000..910b04b Binary files /dev/null and b/SCREENS/DOOM2FR/MIDIPORT.OBJ differ diff --git a/SCREENS/DOOM2FR/MIDIPORT.PUP b/SCREENS/DOOM2FR/MIDIPORT.PUP new file mode 100644 index 0000000..7e4b965 Binary files /dev/null and b/SCREENS/DOOM2FR/MIDIPORT.PUP differ diff --git a/SCREENS/DOOM2FR/MO.EXE b/SCREENS/DOOM2FR/MO.EXE new file mode 100644 index 0000000..d464a27 Binary files /dev/null and b/SCREENS/DOOM2FR/MO.EXE differ diff --git a/SCREENS/DOOM2FR/MODEMCHS.DOG b/SCREENS/DOOM2FR/MODEMCHS.DOG new file mode 100644 index 0000000..c5cf8e2 Binary files /dev/null and b/SCREENS/DOOM2FR/MODEMCHS.DOG differ diff --git a/SCREENS/DOOM2FR/MODEMCHS.OBJ b/SCREENS/DOOM2FR/MODEMCHS.OBJ new file mode 100644 index 0000000..02f8395 Binary files /dev/null and b/SCREENS/DOOM2FR/MODEMCHS.OBJ differ diff --git a/SCREENS/DOOM2FR/MODEMCHS.PUP b/SCREENS/DOOM2FR/MODEMCHS.PUP new file mode 100644 index 0000000..f27786c Binary files /dev/null and b/SCREENS/DOOM2FR/MODEMCHS.PUP differ diff --git a/SCREENS/DOOM2FR/MODSAVE.DOG b/SCREENS/DOOM2FR/MODSAVE.DOG new file mode 100644 index 0000000..91a90e2 Binary files /dev/null and b/SCREENS/DOOM2FR/MODSAVE.DOG differ diff --git a/SCREENS/DOOM2FR/MODSAVE.OBJ b/SCREENS/DOOM2FR/MODSAVE.OBJ new file mode 100644 index 0000000..e1dff07 Binary files /dev/null and b/SCREENS/DOOM2FR/MODSAVE.OBJ differ diff --git a/SCREENS/DOOM2FR/MODSAVE.PUP b/SCREENS/DOOM2FR/MODSAVE.PUP new file mode 100644 index 0000000..74a4fdb Binary files /dev/null and b/SCREENS/DOOM2FR/MODSAVE.PUP differ diff --git a/SCREENS/DOOM2FR/MOUSENTR.DOG b/SCREENS/DOOM2FR/MOUSENTR.DOG new file mode 100644 index 0000000..b259c35 Binary files /dev/null and b/SCREENS/DOOM2FR/MOUSENTR.DOG differ diff --git a/SCREENS/DOOM2FR/MOUSENTR.OBJ b/SCREENS/DOOM2FR/MOUSENTR.OBJ new file mode 100644 index 0000000..bf7fe12 Binary files /dev/null and b/SCREENS/DOOM2FR/MOUSENTR.OBJ differ diff --git a/SCREENS/DOOM2FR/MOUSENTR.PUP b/SCREENS/DOOM2FR/MOUSENTR.PUP new file mode 100644 index 0000000..32b42c8 Binary files /dev/null and b/SCREENS/DOOM2FR/MOUSENTR.PUP differ diff --git a/SCREENS/DOOM2FR/MOUSPRES.DOG b/SCREENS/DOOM2FR/MOUSPRES.DOG new file mode 100644 index 0000000..db121f6 Binary files /dev/null and b/SCREENS/DOOM2FR/MOUSPRES.DOG differ diff --git a/SCREENS/DOOM2FR/MOUSPRES.OBJ b/SCREENS/DOOM2FR/MOUSPRES.OBJ new file mode 100644 index 0000000..e9beb51 Binary files /dev/null and b/SCREENS/DOOM2FR/MOUSPRES.OBJ differ diff --git a/SCREENS/DOOM2FR/MOUSPRES.PUP b/SCREENS/DOOM2FR/MOUSPRES.PUP new file mode 100644 index 0000000..64d9f31 Binary files /dev/null and b/SCREENS/DOOM2FR/MOUSPRES.PUP differ diff --git a/SCREENS/DOOM2FR/NETPLAY.DOG b/SCREENS/DOOM2FR/NETPLAY.DOG new file mode 100644 index 0000000..b1bd186 Binary files /dev/null and b/SCREENS/DOOM2FR/NETPLAY.DOG differ diff --git a/SCREENS/DOOM2FR/NETPLAY.OBJ b/SCREENS/DOOM2FR/NETPLAY.OBJ new file mode 100644 index 0000000..3da9012 Binary files /dev/null and b/SCREENS/DOOM2FR/NETPLAY.OBJ differ diff --git a/SCREENS/DOOM2FR/NETPLAY.PUP b/SCREENS/DOOM2FR/NETPLAY.PUP new file mode 100644 index 0000000..fa88d46 Binary files /dev/null and b/SCREENS/DOOM2FR/NETPLAY.PUP differ diff --git a/SCREENS/DOOM2FR/NETPLAY2.DOG b/SCREENS/DOOM2FR/NETPLAY2.DOG new file mode 100644 index 0000000..3e6b154 Binary files /dev/null and b/SCREENS/DOOM2FR/NETPLAY2.DOG differ diff --git a/SCREENS/DOOM2FR/NETPLAY2.OBJ b/SCREENS/DOOM2FR/NETPLAY2.OBJ new file mode 100644 index 0000000..264ec04 Binary files /dev/null and b/SCREENS/DOOM2FR/NETPLAY2.OBJ differ diff --git a/SCREENS/DOOM2FR/NETPLAY2.PUP b/SCREENS/DOOM2FR/NETPLAY2.PUP new file mode 100644 index 0000000..225178e Binary files /dev/null and b/SCREENS/DOOM2FR/NETPLAY2.PUP differ diff --git a/SCREENS/DOOM2FR/NETSAVE.DOG b/SCREENS/DOOM2FR/NETSAVE.DOG new file mode 100644 index 0000000..8856efc Binary files /dev/null and b/SCREENS/DOOM2FR/NETSAVE.DOG differ diff --git a/SCREENS/DOOM2FR/NETSAVE.OBJ b/SCREENS/DOOM2FR/NETSAVE.OBJ new file mode 100644 index 0000000..d515dfe Binary files /dev/null and b/SCREENS/DOOM2FR/NETSAVE.OBJ differ diff --git a/SCREENS/DOOM2FR/NETSAVE.PUP b/SCREENS/DOOM2FR/NETSAVE.PUP new file mode 100644 index 0000000..05728a3 Binary files /dev/null and b/SCREENS/DOOM2FR/NETSAVE.PUP differ diff --git a/SCREENS/DOOM2FR/NETSERR.DOG b/SCREENS/DOOM2FR/NETSERR.DOG new file mode 100644 index 0000000..ec14f5a Binary files /dev/null and b/SCREENS/DOOM2FR/NETSERR.DOG differ diff --git a/SCREENS/DOOM2FR/NETSERR.OBJ b/SCREENS/DOOM2FR/NETSERR.OBJ new file mode 100644 index 0000000..d385d2e Binary files /dev/null and b/SCREENS/DOOM2FR/NETSERR.OBJ differ diff --git a/SCREENS/DOOM2FR/NETSERR.PUP b/SCREENS/DOOM2FR/NETSERR.PUP new file mode 100644 index 0000000..add8b25 Binary files /dev/null and b/SCREENS/DOOM2FR/NETSERR.PUP differ diff --git a/SCREENS/DOOM2FR/NETWK2.DOG b/SCREENS/DOOM2FR/NETWK2.DOG new file mode 100644 index 0000000..ddbc401 Binary files /dev/null and b/SCREENS/DOOM2FR/NETWK2.DOG differ diff --git a/SCREENS/DOOM2FR/NETWK2.OBJ b/SCREENS/DOOM2FR/NETWK2.OBJ new file mode 100644 index 0000000..de7d526 Binary files /dev/null and b/SCREENS/DOOM2FR/NETWK2.OBJ differ diff --git a/SCREENS/DOOM2FR/NETWK2.PUP b/SCREENS/DOOM2FR/NETWK2.PUP new file mode 100644 index 0000000..18c8f25 Binary files /dev/null and b/SCREENS/DOOM2FR/NETWK2.PUP differ diff --git a/SCREENS/DOOM2FR/NUMDIG.DOG b/SCREENS/DOOM2FR/NUMDIG.DOG new file mode 100644 index 0000000..0a7b89d Binary files /dev/null and b/SCREENS/DOOM2FR/NUMDIG.DOG differ diff --git a/SCREENS/DOOM2FR/NUMDIG.OBJ b/SCREENS/DOOM2FR/NUMDIG.OBJ new file mode 100644 index 0000000..5f824db Binary files /dev/null and b/SCREENS/DOOM2FR/NUMDIG.OBJ differ diff --git a/SCREENS/DOOM2FR/NUMDIG.PUP b/SCREENS/DOOM2FR/NUMDIG.PUP new file mode 100644 index 0000000..5d6d2bc Binary files /dev/null and b/SCREENS/DOOM2FR/NUMDIG.PUP differ diff --git a/SCREENS/DOOM2FR/PHONELST.DOG b/SCREENS/DOOM2FR/PHONELST.DOG new file mode 100644 index 0000000..e453955 Binary files /dev/null and b/SCREENS/DOOM2FR/PHONELST.DOG differ diff --git a/SCREENS/DOOM2FR/PHONELST.OBJ b/SCREENS/DOOM2FR/PHONELST.OBJ new file mode 100644 index 0000000..9c6f33d Binary files /dev/null and b/SCREENS/DOOM2FR/PHONELST.OBJ differ diff --git a/SCREENS/DOOM2FR/PHONELST.PUP b/SCREENS/DOOM2FR/PHONELST.PUP new file mode 100644 index 0000000..dab695c Binary files /dev/null and b/SCREENS/DOOM2FR/PHONELST.PUP differ diff --git a/SCREENS/DOOM2FR/QUITWIN.DOG b/SCREENS/DOOM2FR/QUITWIN.DOG new file mode 100644 index 0000000..e45bcd8 Binary files /dev/null and b/SCREENS/DOOM2FR/QUITWIN.DOG differ diff --git a/SCREENS/DOOM2FR/QUITWIN.OBJ b/SCREENS/DOOM2FR/QUITWIN.OBJ new file mode 100644 index 0000000..fbdb510 Binary files /dev/null and b/SCREENS/DOOM2FR/QUITWIN.OBJ differ diff --git a/SCREENS/DOOM2FR/QUITWIN.PUP b/SCREENS/DOOM2FR/QUITWIN.PUP new file mode 100644 index 0000000..35f5351 Binary files /dev/null and b/SCREENS/DOOM2FR/QUITWIN.PUP differ diff --git a/SCREENS/DOOM2FR/SBDMA.DOG b/SCREENS/DOOM2FR/SBDMA.DOG new file mode 100644 index 0000000..5709ef3 Binary files /dev/null and b/SCREENS/DOOM2FR/SBDMA.DOG differ diff --git a/SCREENS/DOOM2FR/SBDMA.OBJ b/SCREENS/DOOM2FR/SBDMA.OBJ new file mode 100644 index 0000000..8f85eac Binary files /dev/null and b/SCREENS/DOOM2FR/SBDMA.OBJ differ diff --git a/SCREENS/DOOM2FR/SBDMA.PUP b/SCREENS/DOOM2FR/SBDMA.PUP new file mode 100644 index 0000000..b8c5dc8 Binary files /dev/null and b/SCREENS/DOOM2FR/SBDMA.PUP differ diff --git a/SCREENS/DOOM2FR/SBIRQ.DOG b/SCREENS/DOOM2FR/SBIRQ.DOG new file mode 100644 index 0000000..84023a7 Binary files /dev/null and b/SCREENS/DOOM2FR/SBIRQ.DOG differ diff --git a/SCREENS/DOOM2FR/SBIRQ.OBJ b/SCREENS/DOOM2FR/SBIRQ.OBJ new file mode 100644 index 0000000..09e23e7 Binary files /dev/null and b/SCREENS/DOOM2FR/SBIRQ.OBJ differ diff --git a/SCREENS/DOOM2FR/SBIRQ.PUP b/SCREENS/DOOM2FR/SBIRQ.PUP new file mode 100644 index 0000000..e95de30 Binary files /dev/null and b/SCREENS/DOOM2FR/SBIRQ.PUP differ diff --git a/SCREENS/DOOM2FR/SBPORT.DOG b/SCREENS/DOOM2FR/SBPORT.DOG new file mode 100644 index 0000000..c622989 Binary files /dev/null and b/SCREENS/DOOM2FR/SBPORT.DOG differ diff --git a/SCREENS/DOOM2FR/SBPORT.OBJ b/SCREENS/DOOM2FR/SBPORT.OBJ new file mode 100644 index 0000000..d1bb188 Binary files /dev/null and b/SCREENS/DOOM2FR/SBPORT.OBJ differ diff --git a/SCREENS/DOOM2FR/SBPORT.PUP b/SCREENS/DOOM2FR/SBPORT.PUP new file mode 100644 index 0000000..dfef856 Binary files /dev/null and b/SCREENS/DOOM2FR/SBPORT.PUP differ diff --git a/SCREENS/DOOM2FR/SERSAVE.DOG b/SCREENS/DOOM2FR/SERSAVE.DOG new file mode 100644 index 0000000..ef6fc1c Binary files /dev/null and b/SCREENS/DOOM2FR/SERSAVE.DOG differ diff --git a/SCREENS/DOOM2FR/SERSAVE.OBJ b/SCREENS/DOOM2FR/SERSAVE.OBJ new file mode 100644 index 0000000..8596290 Binary files /dev/null and b/SCREENS/DOOM2FR/SERSAVE.OBJ differ diff --git a/SCREENS/DOOM2FR/SERSAVE.PUP b/SCREENS/DOOM2FR/SERSAVE.PUP new file mode 100644 index 0000000..98d5976 Binary files /dev/null and b/SCREENS/DOOM2FR/SERSAVE.PUP differ diff --git a/SCREENS/DOOM2FR/SHOW.DOG b/SCREENS/DOOM2FR/SHOW.DOG new file mode 100644 index 0000000..9bd9784 Binary files /dev/null and b/SCREENS/DOOM2FR/SHOW.DOG differ diff --git a/SCREENS/DOOM2FR/SHOW.OBJ b/SCREENS/DOOM2FR/SHOW.OBJ new file mode 100644 index 0000000..a7a0a03 Binary files /dev/null and b/SCREENS/DOOM2FR/SHOW.OBJ differ diff --git a/SCREENS/DOOM2FR/SHOW.PUP b/SCREENS/DOOM2FR/SHOW.PUP new file mode 100644 index 0000000..49800b6 Binary files /dev/null and b/SCREENS/DOOM2FR/SHOW.PUP differ diff --git a/SCREENS/DOOM2FR/SOCKERR.DOG b/SCREENS/DOOM2FR/SOCKERR.DOG new file mode 100644 index 0000000..0d5f0e3 Binary files /dev/null and b/SCREENS/DOOM2FR/SOCKERR.DOG differ diff --git a/SCREENS/DOOM2FR/SOCKERR.OBJ b/SCREENS/DOOM2FR/SOCKERR.OBJ new file mode 100644 index 0000000..3cca642 Binary files /dev/null and b/SCREENS/DOOM2FR/SOCKERR.OBJ differ diff --git a/SCREENS/DOOM2FR/SOCKERR.PUP b/SCREENS/DOOM2FR/SOCKERR.PUP new file mode 100644 index 0000000..3d3b2a0 Binary files /dev/null and b/SCREENS/DOOM2FR/SOCKERR.PUP differ diff --git a/SCREENS/DOOM2FR/TITLE.DOG b/SCREENS/DOOM2FR/TITLE.DOG new file mode 100644 index 0000000..bd579d9 Binary files /dev/null and b/SCREENS/DOOM2FR/TITLE.DOG differ diff --git a/SCREENS/DOOM2FR/TITLE.OBJ b/SCREENS/DOOM2FR/TITLE.OBJ new file mode 100644 index 0000000..2d462e5 Binary files /dev/null and b/SCREENS/DOOM2FR/TITLE.OBJ differ diff --git a/SCREENS/DOOM2FR/TITLE.PUP b/SCREENS/DOOM2FR/TITLE.PUP new file mode 100644 index 0000000..bd579d9 Binary files /dev/null and b/SCREENS/DOOM2FR/TITLE.PUP differ diff --git a/SCREENS/HERETIC/ASKPRES.DOG b/SCREENS/HERETIC/ASKPRES.DOG new file mode 100644 index 0000000..c68b76a Binary files /dev/null and b/SCREENS/HERETIC/ASKPRES.DOG differ diff --git a/SCREENS/HERETIC/ASKPRES.OBJ b/SCREENS/HERETIC/ASKPRES.OBJ new file mode 100644 index 0000000..52f578d Binary files /dev/null and b/SCREENS/HERETIC/ASKPRES.OBJ differ diff --git a/SCREENS/HERETIC/ASKPRES.PUP b/SCREENS/HERETIC/ASKPRES.PUP new file mode 100644 index 0000000..770f346 Binary files /dev/null and b/SCREENS/HERETIC/ASKPRES.PUP differ diff --git a/SCREENS/HERETIC/CMODEM.DOG b/SCREENS/HERETIC/CMODEM.DOG new file mode 100644 index 0000000..538da91 Binary files /dev/null and b/SCREENS/HERETIC/CMODEM.DOG differ diff --git a/SCREENS/HERETIC/CMODEM.OBJ b/SCREENS/HERETIC/CMODEM.OBJ new file mode 100644 index 0000000..848cb35 Binary files /dev/null and b/SCREENS/HERETIC/CMODEM.OBJ differ diff --git a/SCREENS/HERETIC/CMODEM.PUP b/SCREENS/HERETIC/CMODEM.PUP new file mode 100644 index 0000000..6c73eab Binary files /dev/null and b/SCREENS/HERETIC/CMODEM.PUP differ diff --git a/SCREENS/HERETIC/CONSEL.DOG b/SCREENS/HERETIC/CONSEL.DOG new file mode 100644 index 0000000..3d7520d Binary files /dev/null and b/SCREENS/HERETIC/CONSEL.DOG differ diff --git a/SCREENS/HERETIC/CONSEL.OBJ b/SCREENS/HERETIC/CONSEL.OBJ new file mode 100644 index 0000000..18d912e Binary files /dev/null and b/SCREENS/HERETIC/CONSEL.OBJ differ diff --git a/SCREENS/HERETIC/CONSEL.PUP b/SCREENS/HERETIC/CONSEL.PUP new file mode 100644 index 0000000..e35938d Binary files /dev/null and b/SCREENS/HERETIC/CONSEL.PUP differ diff --git a/SCREENS/HERETIC/CONTROL.DOG b/SCREENS/HERETIC/CONTROL.DOG new file mode 100644 index 0000000..03af8a2 Binary files /dev/null and b/SCREENS/HERETIC/CONTROL.DOG differ diff --git a/SCREENS/HERETIC/CONTROL.OBJ b/SCREENS/HERETIC/CONTROL.OBJ new file mode 100644 index 0000000..010c206 Binary files /dev/null and b/SCREENS/HERETIC/CONTROL.OBJ differ diff --git a/SCREENS/HERETIC/CONTROL.PUP b/SCREENS/HERETIC/CONTROL.PUP new file mode 100644 index 0000000..4b2b7ca Binary files /dev/null and b/SCREENS/HERETIC/CONTROL.PUP differ diff --git a/SCREENS/HERETIC/CSERIAL.DOG b/SCREENS/HERETIC/CSERIAL.DOG new file mode 100644 index 0000000..b7c7e3e Binary files /dev/null and b/SCREENS/HERETIC/CSERIAL.DOG differ diff --git a/SCREENS/HERETIC/CSERIAL.OBJ b/SCREENS/HERETIC/CSERIAL.OBJ new file mode 100644 index 0000000..2d4247f Binary files /dev/null and b/SCREENS/HERETIC/CSERIAL.OBJ differ diff --git a/SCREENS/HERETIC/CSERIAL.PUP b/SCREENS/HERETIC/CSERIAL.PUP new file mode 100644 index 0000000..059e124 Binary files /dev/null and b/SCREENS/HERETIC/CSERIAL.PUP differ diff --git a/SCREENS/HERETIC/CWARP.DOG b/SCREENS/HERETIC/CWARP.DOG new file mode 100644 index 0000000..8451cca Binary files /dev/null and b/SCREENS/HERETIC/CWARP.DOG differ diff --git a/SCREENS/HERETIC/CWARP.OBJ b/SCREENS/HERETIC/CWARP.OBJ new file mode 100644 index 0000000..f6d1ab5 Binary files /dev/null and b/SCREENS/HERETIC/CWARP.OBJ differ diff --git a/SCREENS/HERETIC/CWARP.PUP b/SCREENS/HERETIC/CWARP.PUP new file mode 100644 index 0000000..dc0ec30 Binary files /dev/null and b/SCREENS/HERETIC/CWARP.PUP differ diff --git a/SCREENS/HERETIC/ENTRNMBR.DOG b/SCREENS/HERETIC/ENTRNMBR.DOG new file mode 100644 index 0000000..6fe1385 Binary files /dev/null and b/SCREENS/HERETIC/ENTRNMBR.DOG differ diff --git a/SCREENS/HERETIC/ENTRNMBR.OBJ b/SCREENS/HERETIC/ENTRNMBR.OBJ new file mode 100644 index 0000000..ab79e8d Binary files /dev/null and b/SCREENS/HERETIC/ENTRNMBR.OBJ differ diff --git a/SCREENS/HERETIC/ENTRNMBR.PUP b/SCREENS/HERETIC/ENTRNMBR.PUP new file mode 100644 index 0000000..13d749f Binary files /dev/null and b/SCREENS/HERETIC/ENTRNMBR.PUP differ diff --git a/SCREENS/HERETIC/FILES b/SCREENS/HERETIC/FILES new file mode 100644 index 0000000..94ece14 --- /dev/null +++ b/SCREENS/HERETIC/FILES @@ -0,0 +1,36 @@ +askpres.pup +cmodem.pup +consel.pup +control.pup +cserial.pup +cwarp.pup +entrnmbr.pup +gusirqer.pup +idcard.pup +idjoysel.pup +idkeysel.pup +idmain2.pup +idmousel.pup +irqerr.pup +macros.pup +mcard.pup +midiport.pup +modemchs.pup +modsave.pup +mousentr.pup +mouspres.pup +netplay.pup +netplay2.pup +netsave.pup +netserr.pup +netwk2.pup +numdig.pup +phonelst.pup +quitwin.pup +sbdma.pup +sbirq.pup +sbport.pup +sersave.pup +show.pup +sockerr.pup +title.pup diff --git a/SCREENS/HERETIC/FORALL.EXE b/SCREENS/HERETIC/FORALL.EXE new file mode 100644 index 0000000..0288e97 Binary files /dev/null and b/SCREENS/HERETIC/FORALL.EXE differ diff --git a/SCREENS/HERETIC/GUSIRQER.DOG b/SCREENS/HERETIC/GUSIRQER.DOG new file mode 100644 index 0000000..130ebef Binary files /dev/null and b/SCREENS/HERETIC/GUSIRQER.DOG differ diff --git a/SCREENS/HERETIC/GUSIRQER.OBJ b/SCREENS/HERETIC/GUSIRQER.OBJ new file mode 100644 index 0000000..6dbee24 Binary files /dev/null and b/SCREENS/HERETIC/GUSIRQER.OBJ differ diff --git a/SCREENS/HERETIC/GUSIRQER.PUP b/SCREENS/HERETIC/GUSIRQER.PUP new file mode 100644 index 0000000..bc84883 Binary files /dev/null and b/SCREENS/HERETIC/GUSIRQER.PUP differ diff --git a/SCREENS/HERETIC/IDCARD.DOG b/SCREENS/HERETIC/IDCARD.DOG new file mode 100644 index 0000000..ba398a3 Binary files /dev/null and b/SCREENS/HERETIC/IDCARD.DOG differ diff --git a/SCREENS/HERETIC/IDCARD.OBJ b/SCREENS/HERETIC/IDCARD.OBJ new file mode 100644 index 0000000..a6d015c Binary files /dev/null and b/SCREENS/HERETIC/IDCARD.OBJ differ diff --git a/SCREENS/HERETIC/IDCARD.PUP b/SCREENS/HERETIC/IDCARD.PUP new file mode 100644 index 0000000..064eb3d Binary files /dev/null and b/SCREENS/HERETIC/IDCARD.PUP differ diff --git a/SCREENS/HERETIC/IDJOYSEL.DOG b/SCREENS/HERETIC/IDJOYSEL.DOG new file mode 100644 index 0000000..0892f5d Binary files /dev/null and b/SCREENS/HERETIC/IDJOYSEL.DOG differ diff --git a/SCREENS/HERETIC/IDJOYSEL.OBJ b/SCREENS/HERETIC/IDJOYSEL.OBJ new file mode 100644 index 0000000..27f1e39 Binary files /dev/null and b/SCREENS/HERETIC/IDJOYSEL.OBJ differ diff --git a/SCREENS/HERETIC/IDJOYSEL.PUP b/SCREENS/HERETIC/IDJOYSEL.PUP new file mode 100644 index 0000000..325620f Binary files /dev/null and b/SCREENS/HERETIC/IDJOYSEL.PUP differ diff --git a/SCREENS/HERETIC/IDKEYSEL.DOG b/SCREENS/HERETIC/IDKEYSEL.DOG new file mode 100644 index 0000000..3f1d6b4 Binary files /dev/null and b/SCREENS/HERETIC/IDKEYSEL.DOG differ diff --git a/SCREENS/HERETIC/IDKEYSEL.OBJ b/SCREENS/HERETIC/IDKEYSEL.OBJ new file mode 100644 index 0000000..89fce72 Binary files /dev/null and b/SCREENS/HERETIC/IDKEYSEL.OBJ differ diff --git a/SCREENS/HERETIC/IDKEYSEL.PUP b/SCREENS/HERETIC/IDKEYSEL.PUP new file mode 100644 index 0000000..91278d8 Binary files /dev/null and b/SCREENS/HERETIC/IDKEYSEL.PUP differ diff --git a/SCREENS/HERETIC/IDMAIN2.DOG b/SCREENS/HERETIC/IDMAIN2.DOG new file mode 100644 index 0000000..e13779d Binary files /dev/null and b/SCREENS/HERETIC/IDMAIN2.DOG differ diff --git a/SCREENS/HERETIC/IDMAIN2.OBJ b/SCREENS/HERETIC/IDMAIN2.OBJ new file mode 100644 index 0000000..ab93877 Binary files /dev/null and b/SCREENS/HERETIC/IDMAIN2.OBJ differ diff --git a/SCREENS/HERETIC/IDMAIN2.PUP b/SCREENS/HERETIC/IDMAIN2.PUP new file mode 100644 index 0000000..e021419 Binary files /dev/null and b/SCREENS/HERETIC/IDMAIN2.PUP differ diff --git a/SCREENS/HERETIC/IDMOUSEL.DOG b/SCREENS/HERETIC/IDMOUSEL.DOG new file mode 100644 index 0000000..ba47159 Binary files /dev/null and b/SCREENS/HERETIC/IDMOUSEL.DOG differ diff --git a/SCREENS/HERETIC/IDMOUSEL.OBJ b/SCREENS/HERETIC/IDMOUSEL.OBJ new file mode 100644 index 0000000..80e2acc Binary files /dev/null and b/SCREENS/HERETIC/IDMOUSEL.OBJ differ diff --git a/SCREENS/HERETIC/IDMOUSEL.PUP b/SCREENS/HERETIC/IDMOUSEL.PUP new file mode 100644 index 0000000..7aa439e Binary files /dev/null and b/SCREENS/HERETIC/IDMOUSEL.PUP differ diff --git a/SCREENS/HERETIC/IRQERR.DOG b/SCREENS/HERETIC/IRQERR.DOG new file mode 100644 index 0000000..ea97eae Binary files /dev/null and b/SCREENS/HERETIC/IRQERR.DOG differ diff --git a/SCREENS/HERETIC/IRQERR.OBJ b/SCREENS/HERETIC/IRQERR.OBJ new file mode 100644 index 0000000..3264088 Binary files /dev/null and b/SCREENS/HERETIC/IRQERR.OBJ differ diff --git a/SCREENS/HERETIC/IRQERR.PUP b/SCREENS/HERETIC/IRQERR.PUP new file mode 100644 index 0000000..668cb59 Binary files /dev/null and b/SCREENS/HERETIC/IRQERR.PUP differ diff --git a/SCREENS/HERETIC/MACROS.DOG b/SCREENS/HERETIC/MACROS.DOG new file mode 100644 index 0000000..cfec1d9 Binary files /dev/null and b/SCREENS/HERETIC/MACROS.DOG differ diff --git a/SCREENS/HERETIC/MACROS.OBJ b/SCREENS/HERETIC/MACROS.OBJ new file mode 100644 index 0000000..ee77f13 Binary files /dev/null and b/SCREENS/HERETIC/MACROS.OBJ differ diff --git a/SCREENS/HERETIC/MACROS.PUP b/SCREENS/HERETIC/MACROS.PUP new file mode 100644 index 0000000..d6ca6bf Binary files /dev/null and b/SCREENS/HERETIC/MACROS.PUP differ diff --git a/SCREENS/HERETIC/MAKE.BAT b/SCREENS/HERETIC/MAKE.BAT new file mode 100644 index 0000000..a363315 --- /dev/null +++ b/SCREENS/HERETIC/MAKE.BAT @@ -0,0 +1,3 @@ +dir /b *.pup > files +forall files "mo -f" + \ No newline at end of file diff --git a/SCREENS/HERETIC/MCARD.DOG b/SCREENS/HERETIC/MCARD.DOG new file mode 100644 index 0000000..7c2b66b Binary files /dev/null and b/SCREENS/HERETIC/MCARD.DOG differ diff --git a/SCREENS/HERETIC/MCARD.OBJ b/SCREENS/HERETIC/MCARD.OBJ new file mode 100644 index 0000000..32bc42d Binary files /dev/null and b/SCREENS/HERETIC/MCARD.OBJ differ diff --git a/SCREENS/HERETIC/MCARD.PUP b/SCREENS/HERETIC/MCARD.PUP new file mode 100644 index 0000000..1d2a07b Binary files /dev/null and b/SCREENS/HERETIC/MCARD.PUP differ diff --git a/SCREENS/HERETIC/MIDIPORT.DOG b/SCREENS/HERETIC/MIDIPORT.DOG new file mode 100644 index 0000000..e3731c3 Binary files /dev/null and b/SCREENS/HERETIC/MIDIPORT.DOG differ diff --git a/SCREENS/HERETIC/MIDIPORT.OBJ b/SCREENS/HERETIC/MIDIPORT.OBJ new file mode 100644 index 0000000..b43bbfc Binary files /dev/null and b/SCREENS/HERETIC/MIDIPORT.OBJ differ diff --git a/SCREENS/HERETIC/MIDIPORT.PUP b/SCREENS/HERETIC/MIDIPORT.PUP new file mode 100644 index 0000000..31a6641 Binary files /dev/null and b/SCREENS/HERETIC/MIDIPORT.PUP differ diff --git a/SCREENS/HERETIC/MO.EXE b/SCREENS/HERETIC/MO.EXE new file mode 100644 index 0000000..d464a27 Binary files /dev/null and b/SCREENS/HERETIC/MO.EXE differ diff --git a/SCREENS/HERETIC/MODEMCHS.DOG b/SCREENS/HERETIC/MODEMCHS.DOG new file mode 100644 index 0000000..e73cd05 Binary files /dev/null and b/SCREENS/HERETIC/MODEMCHS.DOG differ diff --git a/SCREENS/HERETIC/MODEMCHS.OBJ b/SCREENS/HERETIC/MODEMCHS.OBJ new file mode 100644 index 0000000..f4992c9 Binary files /dev/null and b/SCREENS/HERETIC/MODEMCHS.OBJ differ diff --git a/SCREENS/HERETIC/MODEMCHS.PUP b/SCREENS/HERETIC/MODEMCHS.PUP new file mode 100644 index 0000000..42a365f Binary files /dev/null and b/SCREENS/HERETIC/MODEMCHS.PUP differ diff --git a/SCREENS/HERETIC/MODSAVE.DOG b/SCREENS/HERETIC/MODSAVE.DOG new file mode 100644 index 0000000..139e471 Binary files /dev/null and b/SCREENS/HERETIC/MODSAVE.DOG differ diff --git a/SCREENS/HERETIC/MODSAVE.OBJ b/SCREENS/HERETIC/MODSAVE.OBJ new file mode 100644 index 0000000..0ff2f45 Binary files /dev/null and b/SCREENS/HERETIC/MODSAVE.OBJ differ diff --git a/SCREENS/HERETIC/MODSAVE.PUP b/SCREENS/HERETIC/MODSAVE.PUP new file mode 100644 index 0000000..02b478c Binary files /dev/null and b/SCREENS/HERETIC/MODSAVE.PUP differ diff --git a/SCREENS/HERETIC/MOUSENTR.DOG b/SCREENS/HERETIC/MOUSENTR.DOG new file mode 100644 index 0000000..f1d4022 Binary files /dev/null and b/SCREENS/HERETIC/MOUSENTR.DOG differ diff --git a/SCREENS/HERETIC/MOUSENTR.OBJ b/SCREENS/HERETIC/MOUSENTR.OBJ new file mode 100644 index 0000000..58edfd3 Binary files /dev/null and b/SCREENS/HERETIC/MOUSENTR.OBJ differ diff --git a/SCREENS/HERETIC/MOUSENTR.PUP b/SCREENS/HERETIC/MOUSENTR.PUP new file mode 100644 index 0000000..a6a36a7 Binary files /dev/null and b/SCREENS/HERETIC/MOUSENTR.PUP differ diff --git a/SCREENS/HERETIC/MOUSPRES.DOG b/SCREENS/HERETIC/MOUSPRES.DOG new file mode 100644 index 0000000..3d0fff1 Binary files /dev/null and b/SCREENS/HERETIC/MOUSPRES.DOG differ diff --git a/SCREENS/HERETIC/MOUSPRES.OBJ b/SCREENS/HERETIC/MOUSPRES.OBJ new file mode 100644 index 0000000..e41ef64 Binary files /dev/null and b/SCREENS/HERETIC/MOUSPRES.OBJ differ diff --git a/SCREENS/HERETIC/MOUSPRES.PUP b/SCREENS/HERETIC/MOUSPRES.PUP new file mode 100644 index 0000000..083d852 Binary files /dev/null and b/SCREENS/HERETIC/MOUSPRES.PUP differ diff --git a/SCREENS/HERETIC/NETPLAY.DOG b/SCREENS/HERETIC/NETPLAY.DOG new file mode 100644 index 0000000..8c203cb Binary files /dev/null and b/SCREENS/HERETIC/NETPLAY.DOG differ diff --git a/SCREENS/HERETIC/NETPLAY.OBJ b/SCREENS/HERETIC/NETPLAY.OBJ new file mode 100644 index 0000000..aa05273 Binary files /dev/null and b/SCREENS/HERETIC/NETPLAY.OBJ differ diff --git a/SCREENS/HERETIC/NETPLAY.PUP b/SCREENS/HERETIC/NETPLAY.PUP new file mode 100644 index 0000000..9e22175 Binary files /dev/null and b/SCREENS/HERETIC/NETPLAY.PUP differ diff --git a/SCREENS/HERETIC/NETPLAY2.DOG b/SCREENS/HERETIC/NETPLAY2.DOG new file mode 100644 index 0000000..7a66e22 Binary files /dev/null and b/SCREENS/HERETIC/NETPLAY2.DOG differ diff --git a/SCREENS/HERETIC/NETPLAY2.OBJ b/SCREENS/HERETIC/NETPLAY2.OBJ new file mode 100644 index 0000000..f2cdf97 Binary files /dev/null and b/SCREENS/HERETIC/NETPLAY2.OBJ differ diff --git a/SCREENS/HERETIC/NETPLAY2.PUP b/SCREENS/HERETIC/NETPLAY2.PUP new file mode 100644 index 0000000..81cd565 Binary files /dev/null and b/SCREENS/HERETIC/NETPLAY2.PUP differ diff --git a/SCREENS/HERETIC/NETSAVE.DOG b/SCREENS/HERETIC/NETSAVE.DOG new file mode 100644 index 0000000..7770535 Binary files /dev/null and b/SCREENS/HERETIC/NETSAVE.DOG differ diff --git a/SCREENS/HERETIC/NETSAVE.OBJ b/SCREENS/HERETIC/NETSAVE.OBJ new file mode 100644 index 0000000..5b62b8b Binary files /dev/null and b/SCREENS/HERETIC/NETSAVE.OBJ differ diff --git a/SCREENS/HERETIC/NETSAVE.PUP b/SCREENS/HERETIC/NETSAVE.PUP new file mode 100644 index 0000000..b1a12ba Binary files /dev/null and b/SCREENS/HERETIC/NETSAVE.PUP differ diff --git a/SCREENS/HERETIC/NETSERR.DOG b/SCREENS/HERETIC/NETSERR.DOG new file mode 100644 index 0000000..a76aa78 Binary files /dev/null and b/SCREENS/HERETIC/NETSERR.DOG differ diff --git a/SCREENS/HERETIC/NETSERR.OBJ b/SCREENS/HERETIC/NETSERR.OBJ new file mode 100644 index 0000000..a37528a Binary files /dev/null and b/SCREENS/HERETIC/NETSERR.OBJ differ diff --git a/SCREENS/HERETIC/NETSERR.PUP b/SCREENS/HERETIC/NETSERR.PUP new file mode 100644 index 0000000..fef15c7 Binary files /dev/null and b/SCREENS/HERETIC/NETSERR.PUP differ diff --git a/SCREENS/HERETIC/NETWK2.DOG b/SCREENS/HERETIC/NETWK2.DOG new file mode 100644 index 0000000..25b4406 Binary files /dev/null and b/SCREENS/HERETIC/NETWK2.DOG differ diff --git a/SCREENS/HERETIC/NETWK2.OBJ b/SCREENS/HERETIC/NETWK2.OBJ new file mode 100644 index 0000000..a2c1e70 Binary files /dev/null and b/SCREENS/HERETIC/NETWK2.OBJ differ diff --git a/SCREENS/HERETIC/NETWK2.PUP b/SCREENS/HERETIC/NETWK2.PUP new file mode 100644 index 0000000..8b10e83 Binary files /dev/null and b/SCREENS/HERETIC/NETWK2.PUP differ diff --git a/SCREENS/HERETIC/NUMDIG.DOG b/SCREENS/HERETIC/NUMDIG.DOG new file mode 100644 index 0000000..eb731ce Binary files /dev/null and b/SCREENS/HERETIC/NUMDIG.DOG differ diff --git a/SCREENS/HERETIC/NUMDIG.OBJ b/SCREENS/HERETIC/NUMDIG.OBJ new file mode 100644 index 0000000..c93c793 Binary files /dev/null and b/SCREENS/HERETIC/NUMDIG.OBJ differ diff --git a/SCREENS/HERETIC/NUMDIG.PUP b/SCREENS/HERETIC/NUMDIG.PUP new file mode 100644 index 0000000..6e795ec Binary files /dev/null and b/SCREENS/HERETIC/NUMDIG.PUP differ diff --git a/SCREENS/HERETIC/PHONELST.DOG b/SCREENS/HERETIC/PHONELST.DOG new file mode 100644 index 0000000..d099f63 Binary files /dev/null and b/SCREENS/HERETIC/PHONELST.DOG differ diff --git a/SCREENS/HERETIC/PHONELST.OBJ b/SCREENS/HERETIC/PHONELST.OBJ new file mode 100644 index 0000000..2c043a2 Binary files /dev/null and b/SCREENS/HERETIC/PHONELST.OBJ differ diff --git a/SCREENS/HERETIC/PHONELST.PUP b/SCREENS/HERETIC/PHONELST.PUP new file mode 100644 index 0000000..866ab76 Binary files /dev/null and b/SCREENS/HERETIC/PHONELST.PUP differ diff --git a/SCREENS/HERETIC/QUITWIN.DOG b/SCREENS/HERETIC/QUITWIN.DOG new file mode 100644 index 0000000..929993a Binary files /dev/null and b/SCREENS/HERETIC/QUITWIN.DOG differ diff --git a/SCREENS/HERETIC/QUITWIN.OBJ b/SCREENS/HERETIC/QUITWIN.OBJ new file mode 100644 index 0000000..34221cf Binary files /dev/null and b/SCREENS/HERETIC/QUITWIN.OBJ differ diff --git a/SCREENS/HERETIC/QUITWIN.PUP b/SCREENS/HERETIC/QUITWIN.PUP new file mode 100644 index 0000000..9de35a4 Binary files /dev/null and b/SCREENS/HERETIC/QUITWIN.PUP differ diff --git a/SCREENS/HERETIC/SBDMA.DOG b/SCREENS/HERETIC/SBDMA.DOG new file mode 100644 index 0000000..f4e65f3 Binary files /dev/null and b/SCREENS/HERETIC/SBDMA.DOG differ diff --git a/SCREENS/HERETIC/SBDMA.OBJ b/SCREENS/HERETIC/SBDMA.OBJ new file mode 100644 index 0000000..e339ef6 Binary files /dev/null and b/SCREENS/HERETIC/SBDMA.OBJ differ diff --git a/SCREENS/HERETIC/SBDMA.PUP b/SCREENS/HERETIC/SBDMA.PUP new file mode 100644 index 0000000..708c2bb Binary files /dev/null and b/SCREENS/HERETIC/SBDMA.PUP differ diff --git a/SCREENS/HERETIC/SBIRQ.DOG b/SCREENS/HERETIC/SBIRQ.DOG new file mode 100644 index 0000000..774742f Binary files /dev/null and b/SCREENS/HERETIC/SBIRQ.DOG differ diff --git a/SCREENS/HERETIC/SBIRQ.OBJ b/SCREENS/HERETIC/SBIRQ.OBJ new file mode 100644 index 0000000..657f94c Binary files /dev/null and b/SCREENS/HERETIC/SBIRQ.OBJ differ diff --git a/SCREENS/HERETIC/SBIRQ.PUP b/SCREENS/HERETIC/SBIRQ.PUP new file mode 100644 index 0000000..5eadf87 Binary files /dev/null and b/SCREENS/HERETIC/SBIRQ.PUP differ diff --git a/SCREENS/HERETIC/SBPORT.DOG b/SCREENS/HERETIC/SBPORT.DOG new file mode 100644 index 0000000..ce7fd21 Binary files /dev/null and b/SCREENS/HERETIC/SBPORT.DOG differ diff --git a/SCREENS/HERETIC/SBPORT.OBJ b/SCREENS/HERETIC/SBPORT.OBJ new file mode 100644 index 0000000..5c74b24 Binary files /dev/null and b/SCREENS/HERETIC/SBPORT.OBJ differ diff --git a/SCREENS/HERETIC/SBPORT.PUP b/SCREENS/HERETIC/SBPORT.PUP new file mode 100644 index 0000000..7cf96ce Binary files /dev/null and b/SCREENS/HERETIC/SBPORT.PUP differ diff --git a/SCREENS/HERETIC/SERSAVE.DOG b/SCREENS/HERETIC/SERSAVE.DOG new file mode 100644 index 0000000..92cab3b Binary files /dev/null and b/SCREENS/HERETIC/SERSAVE.DOG differ diff --git a/SCREENS/HERETIC/SERSAVE.OBJ b/SCREENS/HERETIC/SERSAVE.OBJ new file mode 100644 index 0000000..d1b6432 Binary files /dev/null and b/SCREENS/HERETIC/SERSAVE.OBJ differ diff --git a/SCREENS/HERETIC/SERSAVE.PUP b/SCREENS/HERETIC/SERSAVE.PUP new file mode 100644 index 0000000..ac58fd1 Binary files /dev/null and b/SCREENS/HERETIC/SERSAVE.PUP differ diff --git a/SCREENS/HERETIC/SHOW.DOG b/SCREENS/HERETIC/SHOW.DOG new file mode 100644 index 0000000..40fc955 Binary files /dev/null and b/SCREENS/HERETIC/SHOW.DOG differ diff --git a/SCREENS/HERETIC/SHOW.OBJ b/SCREENS/HERETIC/SHOW.OBJ new file mode 100644 index 0000000..ab243dc Binary files /dev/null and b/SCREENS/HERETIC/SHOW.OBJ differ diff --git a/SCREENS/HERETIC/SHOW.PUP b/SCREENS/HERETIC/SHOW.PUP new file mode 100644 index 0000000..58c8404 Binary files /dev/null and b/SCREENS/HERETIC/SHOW.PUP differ diff --git a/SCREENS/HERETIC/SOCKERR.DOG b/SCREENS/HERETIC/SOCKERR.DOG new file mode 100644 index 0000000..402dca4 Binary files /dev/null and b/SCREENS/HERETIC/SOCKERR.DOG differ diff --git a/SCREENS/HERETIC/SOCKERR.OBJ b/SCREENS/HERETIC/SOCKERR.OBJ new file mode 100644 index 0000000..f68f0dd Binary files /dev/null and b/SCREENS/HERETIC/SOCKERR.OBJ differ diff --git a/SCREENS/HERETIC/SOCKERR.PUP b/SCREENS/HERETIC/SOCKERR.PUP new file mode 100644 index 0000000..dcb39a1 Binary files /dev/null and b/SCREENS/HERETIC/SOCKERR.PUP differ diff --git a/SCREENS/HERETIC/TITLE.DOG b/SCREENS/HERETIC/TITLE.DOG new file mode 100644 index 0000000..78d33da Binary files /dev/null and b/SCREENS/HERETIC/TITLE.DOG differ diff --git a/SCREENS/HERETIC/TITLE.OBJ b/SCREENS/HERETIC/TITLE.OBJ new file mode 100644 index 0000000..22cdc4c Binary files /dev/null and b/SCREENS/HERETIC/TITLE.OBJ differ diff --git a/SCREENS/HERETIC/TITLE.PUP b/SCREENS/HERETIC/TITLE.PUP new file mode 100644 index 0000000..78d33da Binary files /dev/null and b/SCREENS/HERETIC/TITLE.PUP differ diff --git a/SCREENS/LDOG/BLK2EPS.EXE b/SCREENS/LDOG/BLK2EPS.EXE new file mode 100644 index 0000000..2732f0b Binary files /dev/null and b/SCREENS/LDOG/BLK2EPS.EXE differ diff --git a/SCREENS/LDOG/COOLGAME.BAT b/SCREENS/LDOG/COOLGAME.BAT new file mode 100644 index 0000000..b9679b6 --- /dev/null +++ b/SCREENS/LDOG/COOLGAME.BAT @@ -0,0 +1,2 @@ +@echo off +type g:\ldog\fy.ans diff --git a/SCREENS/LDOG/HISTORY.BKP b/SCREENS/LDOG/HISTORY.BKP new file mode 100644 index 0000000..df3cd6c --- /dev/null +++ b/SCREENS/LDOG/HISTORY.BKP @@ -0,0 +1,174 @@ + + + + + + + Laughing Dog Screen Maker + ------------------------- + + U P D A T E H I S T O R Y + ------------------------------ + + Release Version 1.14 + ---------------------- + + Last Updated: September 1992 + --------------------------- + + This file contains descriptions of the updates made to the + Laughing Dog Screen Maker program since the first release in + March 1992. + + -------------------------------------------------------------- + LDOG.EXE + -------------------------------------------------------------- + V1.01: + --Internal release only. + + V1.02: + 20APR92 -- Fixed a bug in the PostScript output which caused the + alternate PrCh function to fail. For consistency, all file and + path names are now forcedto uppercase. + + --Fixed a bug introduced in V1.01 which prevented the PostScript + option from working correctly. + + V1.10: + 25JUL92 -- Fixed a problem with the Set Last Screen Row dialog box + that would sometimes cause the row number to increment more than + one row at a time when using the mouse. + + --Initialize screen to White on Black ($0F) upon start-up. + + --Added ASCII Text output to the Generate Code/Export Menu. (See + READ.ME file for more info on using this feature) + + --Added the ability to automatically insert WildCat! and PCBoard + @variables into a screen using -V hot key.(See READ.ME file + for more info on using this feature) + + --Limited the length of screen rows exported as PCBoard or + WildCat! BBS files to 79 chars. This change was necessary to + avoid screens displaying a blank line between each row from + within WildCat! and PCBoard on screens having a background color + + + + -- Laughing Dog Screen Maker HISTORY.DOC Page 1 of 3 -- + + + + + + other than black. The last row on the screen (row 79) is now + truncated. + + --Changed the colors used in the help screens. People suffering + from certain kinds of color blindness were having trouble seeing + the green on black text, so the colors were changed to solve this + problem. If it is still difficult to see, please let me know and + I will keep on adjusting until everyone can read the help + screens. (Unfortunately, the colors are hard-coded into the help + file, and cannot be user configured at this time). + + V1.11: + 14AUG92 -- Removed the invalid WildCat! BBS @variables @NODESTAT###@ + and @NODEUSER###@ from the WildCat! @Variable Menu. + + V1.12: + 02SEP92 -- Although still not "officially" supported, EGA and VGA + extended screen modes (modes with more than the standard 25 + screen rows, like 35-line mode, 50-line mode, etc.) work better + now. Fixed the problem of the mouse cursor occasionally not + being able to move beyond the 25th row. Fixed the problem of + getting multiple copies of a window, copied block, or BBS + @variables showing up on the screen when using the Make a Window, + Paste From File, or Insert BBS Variable features while UNDO was + active. NOTE: In order for LDOG to work with these extended + screen modes, the display must be in the mode prior to running + LDOG.EXE, if you start LDOG in one mode then shell out to DOS and + put the display in another mode, the screen will change, but LDOG + will behave as though the original mode is still in effect, not a + pretty sight... + + V1.13: + Internal release only + + V1.14: + 25SEP92 -- Fixed a bug which caused the check mark to appear on the + wrong line of the Generate Code Menu when toggling the "AS + Monochrome" choice on and off. + + --Fixed a bug which sometimes caused the program not to return to + the default drive and directory upon quitting if the program was + executed through the DOS search path from another location on the + hard drive. + + --When Copy to File is selected from the Block Menu, the default + file name in the Save File dialog box now defaults to the last + block file name saved or pasted. + + + + + + -- Laughing Dog Screen Maker HISTORY.DOC Page 2 of 3 -- + + + + + + --Fixed a bug in the Color Pascal and Monochrome Assembly code + generated which prevented it from running correctly on some XT + computers with BIOS dates earlier than 1/10/86. + + --Added early binding to some functions in the PostScript code + generated which could speed PostScript printing somewhat. + + --Added the "/#copies 1 def" variable definition to the + PostScript code, which allows you to more efficiently print + multiple copies of screens by changing the "1" to the number of + copies you wish to print. + + -------------------------------------------------------------- + LDOGSHOW.EXE + -------------------------------------------------------------- + V1.01: + 20APR92 -- Fixed the Copyright notice in the helpscreen + + V1.02: + 21JUL92 -- Program has not changed since V1.01, it was just recompiled + with a different compiler. + + V1.03: + 03SEP92 -- Fixed the bug which prevented a single file with a filename + beginning with a numeric character from being displayed. + + + -------------------------------------------------------------- + LDOGRAB.EXE + -------------------------------------------------------------- + V1.02: + 21JUL92 -- Fixed a problem which caused unexpected results if a screen + being captured contained the characters with the values 0 or 255 + (which would have shown up as spaces on the application screen). + These character values are now replaced with a normal space + character (32 decimal/20 hex). + + -------------------------------------------------------------- + BLK2EPS.EXE + -------------------------------------------------------------- + + 13APR92 -- Fixed a bug which caused the alternate PrCh function to + fail. For consistency, all file and path names are now forced to + uppercase. + + + + + + + + + -- Laughing Dog Screen Maker HISTORY.DOC Page 3 of 3 -- \ No newline at end of file diff --git a/SCREENS/LDOG/LDOG.CFG b/SCREENS/LDOG/LDOG.CFG new file mode 100644 index 0000000..22fd28d Binary files /dev/null and b/SCREENS/LDOG/LDOG.CFG differ diff --git a/SCREENS/LDOG/LDOG.EXE b/SCREENS/LDOG/LDOG.EXE new file mode 100644 index 0000000..9f43c01 Binary files /dev/null and b/SCREENS/LDOG/LDOG.EXE differ diff --git a/SCREENS/LDOG/LDOG.HLP b/SCREENS/LDOG/LDOG.HLP new file mode 100644 index 0000000..f775039 Binary files /dev/null and b/SCREENS/LDOG/LDOG.HLP differ diff --git a/SCREENS/LDOG/LDOGRAB.EXE b/SCREENS/LDOG/LDOGRAB.EXE new file mode 100644 index 0000000..532c939 Binary files /dev/null and b/SCREENS/LDOG/LDOGRAB.EXE differ diff --git a/SCREENS/LDOG/LDOGSHOW.EXE b/SCREENS/LDOG/LDOGSHOW.EXE new file mode 100644 index 0000000..2e45c49 Binary files /dev/null and b/SCREENS/LDOG/LDOGSHOW.EXE differ diff --git a/SCREENS/LDOG/LTOMMENU.COM b/SCREENS/LDOG/LTOMMENU.COM new file mode 100644 index 0000000..bc6acdb Binary files /dev/null and b/SCREENS/LDOG/LTOMMENU.COM differ diff --git a/SCREENS/LDOG/PACKING.LST b/SCREENS/LDOG/PACKING.LST new file mode 100644 index 0000000..e0ecffc --- /dev/null +++ b/SCREENS/LDOG/PACKING.LST @@ -0,0 +1,38 @@ +file: PACKING.LST +------------------------------------------------------------------------- +File Name Description of File +------------------------------------------------------------------------- +PACKING.LST This list. + +READ.ME Important last-minute information. + +SITELICE.DOC Site license information and agreement. + +LDOG.EXE The Laughing Dog Screen Maker program. + +LDOG.HLP The Laughing Dog Screen Maker on-line help file. + +LDOGRAB.EXE The Laughing Dog screen capture utility. + +LDOGSHOW.EXE The Laughing Dog presentation (slide show) utility. + +BLK2EPS.EXE The Laughing Dog block to EPS file conversion utility. + +COLORS.DOG An example Laughing Dog screen file containing all of the + possible screen colors. Good for demonstrating PostScript + gray scale rendering. + +ALLCHARS.DOG An example Laughing Dog Screen file containing the entire + ASCII character set. Good for testing printer compatibility. + +HISTORY.DOC This file contains a history of additions and bug fixes made + to the program since it's initial release in March '92. + +TEST.BAT +BDEMO.DOG +CHOICE1.DOG +CHOICE2.DOG +CHOICE3.DOG These 5 files are the demonstration files that go along with + the discussion about using the Laughing Dog COM programs + to enhance batch files in chapter 7. + diff --git a/SCREENS/LDOG/READ.ME b/SCREENS/LDOG/READ.ME new file mode 100644 index 0000000..0a05991 --- /dev/null +++ b/SCREENS/LDOG/READ.ME @@ -0,0 +1,7 @@ +file: READ.ME + +There have been a few additions to the LDOG.EXE program. +See the HISTORY.DOC file and the User's Manual Supplement +for more information. + +Enjoy The Laughing Dog Screen Maker! diff --git a/SCREENS/LDOG/SHOW.LDS b/SCREENS/LDOG/SHOW.LDS new file mode 100644 index 0000000..40f8baa --- /dev/null +++ b/SCREENS/LDOG/SHOW.LDS @@ -0,0 +1,9 @@ +; LDOGSHOW Script file +magic.dog +ice.dog +answer.dog +choice1.dog +choice2.dog +choice3.dog +colors.dog +; that's all! diff --git a/SCREENS/LDOG/TOMMENU.COM b/SCREENS/LDOG/TOMMENU.COM new file mode 100644 index 0000000..7129ea1 Binary files /dev/null and b/SCREENS/LDOG/TOMMENU.COM differ diff --git a/SCREENS/STRIFE/CSERIAL.DOG b/SCREENS/STRIFE/CSERIAL.DOG new file mode 100644 index 0000000..53e2d93 Binary files /dev/null and b/SCREENS/STRIFE/CSERIAL.DOG differ diff --git a/SCREENS/STRIFE/CSERIAL.OBJ b/SCREENS/STRIFE/CSERIAL.OBJ new file mode 100644 index 0000000..7a5d4ec Binary files /dev/null and b/SCREENS/STRIFE/CSERIAL.OBJ differ diff --git a/SCREENS/STRIFE/CSERIAL.PUP b/SCREENS/STRIFE/CSERIAL.PUP new file mode 100644 index 0000000..0001884 Binary files /dev/null and b/SCREENS/STRIFE/CSERIAL.PUP differ diff --git a/SCREENS/STRIFE/CWARP.DOG b/SCREENS/STRIFE/CWARP.DOG new file mode 100644 index 0000000..fa37d8d Binary files /dev/null and b/SCREENS/STRIFE/CWARP.DOG differ diff --git a/SCREENS/STRIFE/CWARP.OBJ b/SCREENS/STRIFE/CWARP.OBJ new file mode 100644 index 0000000..2e9b4b1 Binary files /dev/null and b/SCREENS/STRIFE/CWARP.OBJ differ diff --git a/SCREENS/STRIFE/CWARP.PUP b/SCREENS/STRIFE/CWARP.PUP new file mode 100644 index 0000000..7867458 Binary files /dev/null and b/SCREENS/STRIFE/CWARP.PUP differ diff --git a/SCREENS/STRIFE/FILES b/SCREENS/STRIFE/FILES new file mode 100644 index 0000000..af12d99 --- /dev/null +++ b/SCREENS/STRIFE/FILES @@ -0,0 +1,16 @@ +CSERIAL.PUP +CWARP.PUP +IDJOYSEL.PUP +IDKEYSEL.PUP +IDMAIN2.PUP +IDMOUSEL.PUP +MACROS.PUP +MCARD.PUP +MODEMCHS.PUP +MODSAVE.PUP +MOUSENTR.PUP +NETPLAY.PUP +NETPLAY2.PUP +NETWK2.PUP +SHOW.PUP +TITLE.PUP diff --git a/SCREENS/STRIFE/IDJOYSEL.DOG b/SCREENS/STRIFE/IDJOYSEL.DOG new file mode 100644 index 0000000..0892f5d Binary files /dev/null and b/SCREENS/STRIFE/IDJOYSEL.DOG differ diff --git a/SCREENS/STRIFE/IDJOYSEL.OBJ b/SCREENS/STRIFE/IDJOYSEL.OBJ new file mode 100644 index 0000000..d55fcc4 Binary files /dev/null and b/SCREENS/STRIFE/IDJOYSEL.OBJ differ diff --git a/SCREENS/STRIFE/IDJOYSEL.PUP b/SCREENS/STRIFE/IDJOYSEL.PUP new file mode 100644 index 0000000..325620f Binary files /dev/null and b/SCREENS/STRIFE/IDJOYSEL.PUP differ diff --git a/SCREENS/STRIFE/IDKEYSEL.DOG b/SCREENS/STRIFE/IDKEYSEL.DOG new file mode 100644 index 0000000..380ffee Binary files /dev/null and b/SCREENS/STRIFE/IDKEYSEL.DOG differ diff --git a/SCREENS/STRIFE/IDKEYSEL.OBJ b/SCREENS/STRIFE/IDKEYSEL.OBJ new file mode 100644 index 0000000..8633320 Binary files /dev/null and b/SCREENS/STRIFE/IDKEYSEL.OBJ differ diff --git a/SCREENS/STRIFE/IDKEYSEL.PUP b/SCREENS/STRIFE/IDKEYSEL.PUP new file mode 100644 index 0000000..8fc3585 Binary files /dev/null and b/SCREENS/STRIFE/IDKEYSEL.PUP differ diff --git a/SCREENS/STRIFE/IDMAIN2.DOG b/SCREENS/STRIFE/IDMAIN2.DOG new file mode 100644 index 0000000..1739f6a Binary files /dev/null and b/SCREENS/STRIFE/IDMAIN2.DOG differ diff --git a/SCREENS/STRIFE/IDMAIN2.OBJ b/SCREENS/STRIFE/IDMAIN2.OBJ new file mode 100644 index 0000000..5ae28bb Binary files /dev/null and b/SCREENS/STRIFE/IDMAIN2.OBJ differ diff --git a/SCREENS/STRIFE/IDMAIN2.PUP b/SCREENS/STRIFE/IDMAIN2.PUP new file mode 100644 index 0000000..890549e Binary files /dev/null and b/SCREENS/STRIFE/IDMAIN2.PUP differ diff --git a/SCREENS/STRIFE/IDMOUSEL.DOG b/SCREENS/STRIFE/IDMOUSEL.DOG new file mode 100644 index 0000000..ba47159 Binary files /dev/null and b/SCREENS/STRIFE/IDMOUSEL.DOG differ diff --git a/SCREENS/STRIFE/IDMOUSEL.OBJ b/SCREENS/STRIFE/IDMOUSEL.OBJ new file mode 100644 index 0000000..00b4e4f Binary files /dev/null and b/SCREENS/STRIFE/IDMOUSEL.OBJ differ diff --git a/SCREENS/STRIFE/IDMOUSEL.PUP b/SCREENS/STRIFE/IDMOUSEL.PUP new file mode 100644 index 0000000..7aa439e Binary files /dev/null and b/SCREENS/STRIFE/IDMOUSEL.PUP differ diff --git a/SCREENS/STRIFE/M.BAT b/SCREENS/STRIFE/M.BAT new file mode 100644 index 0000000..031fbb0 --- /dev/null +++ b/SCREENS/STRIFE/M.BAT @@ -0,0 +1 @@ +mo -f *.pup diff --git a/SCREENS/STRIFE/MACROS.DOG b/SCREENS/STRIFE/MACROS.DOG new file mode 100644 index 0000000..cfec1d9 Binary files /dev/null and b/SCREENS/STRIFE/MACROS.DOG differ diff --git a/SCREENS/STRIFE/MACROS.OBJ b/SCREENS/STRIFE/MACROS.OBJ new file mode 100644 index 0000000..e836c68 Binary files /dev/null and b/SCREENS/STRIFE/MACROS.OBJ differ diff --git a/SCREENS/STRIFE/MACROS.PUP b/SCREENS/STRIFE/MACROS.PUP new file mode 100644 index 0000000..d6ca6bf Binary files /dev/null and b/SCREENS/STRIFE/MACROS.PUP differ diff --git a/SCREENS/STRIFE/MAKE.BAT b/SCREENS/STRIFE/MAKE.BAT new file mode 100644 index 0000000..a363315 --- /dev/null +++ b/SCREENS/STRIFE/MAKE.BAT @@ -0,0 +1,3 @@ +dir /b *.pup > files +forall files "mo -f" + \ No newline at end of file diff --git a/SCREENS/STRIFE/MCARD.DOG b/SCREENS/STRIFE/MCARD.DOG new file mode 100644 index 0000000..7c2b66b Binary files /dev/null and b/SCREENS/STRIFE/MCARD.DOG differ diff --git a/SCREENS/STRIFE/MCARD.OBJ b/SCREENS/STRIFE/MCARD.OBJ new file mode 100644 index 0000000..32bc42d Binary files /dev/null and b/SCREENS/STRIFE/MCARD.OBJ differ diff --git a/SCREENS/STRIFE/MCARD.PUP b/SCREENS/STRIFE/MCARD.PUP new file mode 100644 index 0000000..1d2a07b Binary files /dev/null and b/SCREENS/STRIFE/MCARD.PUP differ diff --git a/SCREENS/STRIFE/MO.EXE b/SCREENS/STRIFE/MO.EXE new file mode 100644 index 0000000..d464a27 Binary files /dev/null and b/SCREENS/STRIFE/MO.EXE differ diff --git a/SCREENS/STRIFE/MODEMCHS.DOG b/SCREENS/STRIFE/MODEMCHS.DOG new file mode 100644 index 0000000..e73cd05 Binary files /dev/null and b/SCREENS/STRIFE/MODEMCHS.DOG differ diff --git a/SCREENS/STRIFE/MODEMCHS.OBJ b/SCREENS/STRIFE/MODEMCHS.OBJ new file mode 100644 index 0000000..f4992c9 Binary files /dev/null and b/SCREENS/STRIFE/MODEMCHS.OBJ differ diff --git a/SCREENS/STRIFE/MODEMCHS.PUP b/SCREENS/STRIFE/MODEMCHS.PUP new file mode 100644 index 0000000..42a365f Binary files /dev/null and b/SCREENS/STRIFE/MODEMCHS.PUP differ diff --git a/SCREENS/STRIFE/MODSAVE.DOG b/SCREENS/STRIFE/MODSAVE.DOG new file mode 100644 index 0000000..139e471 Binary files /dev/null and b/SCREENS/STRIFE/MODSAVE.DOG differ diff --git a/SCREENS/STRIFE/MODSAVE.OBJ b/SCREENS/STRIFE/MODSAVE.OBJ new file mode 100644 index 0000000..a03546a Binary files /dev/null and b/SCREENS/STRIFE/MODSAVE.OBJ differ diff --git a/SCREENS/STRIFE/MODSAVE.PUP b/SCREENS/STRIFE/MODSAVE.PUP new file mode 100644 index 0000000..02b478c Binary files /dev/null and b/SCREENS/STRIFE/MODSAVE.PUP differ diff --git a/SCREENS/STRIFE/MOUSENTR.DOG b/SCREENS/STRIFE/MOUSENTR.DOG new file mode 100644 index 0000000..f1d4022 Binary files /dev/null and b/SCREENS/STRIFE/MOUSENTR.DOG differ diff --git a/SCREENS/STRIFE/MOUSENTR.OBJ b/SCREENS/STRIFE/MOUSENTR.OBJ new file mode 100644 index 0000000..58edfd3 Binary files /dev/null and b/SCREENS/STRIFE/MOUSENTR.OBJ differ diff --git a/SCREENS/STRIFE/MOUSENTR.PUP b/SCREENS/STRIFE/MOUSENTR.PUP new file mode 100644 index 0000000..a6a36a7 Binary files /dev/null and b/SCREENS/STRIFE/MOUSENTR.PUP differ diff --git a/SCREENS/STRIFE/NETPLAY.DOG b/SCREENS/STRIFE/NETPLAY.DOG new file mode 100644 index 0000000..8c203cb Binary files /dev/null and b/SCREENS/STRIFE/NETPLAY.DOG differ diff --git a/SCREENS/STRIFE/NETPLAY.OBJ b/SCREENS/STRIFE/NETPLAY.OBJ new file mode 100644 index 0000000..aa05273 Binary files /dev/null and b/SCREENS/STRIFE/NETPLAY.OBJ differ diff --git a/SCREENS/STRIFE/NETPLAY.PUP b/SCREENS/STRIFE/NETPLAY.PUP new file mode 100644 index 0000000..9e22175 Binary files /dev/null and b/SCREENS/STRIFE/NETPLAY.PUP differ diff --git a/SCREENS/STRIFE/NETPLAY2.DOG b/SCREENS/STRIFE/NETPLAY2.DOG new file mode 100644 index 0000000..7a66e22 Binary files /dev/null and b/SCREENS/STRIFE/NETPLAY2.DOG differ diff --git a/SCREENS/STRIFE/NETPLAY2.OBJ b/SCREENS/STRIFE/NETPLAY2.OBJ new file mode 100644 index 0000000..f2cdf97 Binary files /dev/null and b/SCREENS/STRIFE/NETPLAY2.OBJ differ diff --git a/SCREENS/STRIFE/NETPLAY2.PUP b/SCREENS/STRIFE/NETPLAY2.PUP new file mode 100644 index 0000000..81cd565 Binary files /dev/null and b/SCREENS/STRIFE/NETPLAY2.PUP differ diff --git a/SCREENS/STRIFE/NETWK2.DOG b/SCREENS/STRIFE/NETWK2.DOG new file mode 100644 index 0000000..00a6b65 Binary files /dev/null and b/SCREENS/STRIFE/NETWK2.DOG differ diff --git a/SCREENS/STRIFE/NETWK2.OBJ b/SCREENS/STRIFE/NETWK2.OBJ new file mode 100644 index 0000000..a244e05 Binary files /dev/null and b/SCREENS/STRIFE/NETWK2.OBJ differ diff --git a/SCREENS/STRIFE/NETWK2.PUP b/SCREENS/STRIFE/NETWK2.PUP new file mode 100644 index 0000000..cb09fa9 Binary files /dev/null and b/SCREENS/STRIFE/NETWK2.PUP differ diff --git a/SCREENS/STRIFE/SHOW.DOG b/SCREENS/STRIFE/SHOW.DOG new file mode 100644 index 0000000..40fc955 Binary files /dev/null and b/SCREENS/STRIFE/SHOW.DOG differ diff --git a/SCREENS/STRIFE/SHOW.OBJ b/SCREENS/STRIFE/SHOW.OBJ new file mode 100644 index 0000000..2e29408 Binary files /dev/null and b/SCREENS/STRIFE/SHOW.OBJ differ diff --git a/SCREENS/STRIFE/SHOW.PUP b/SCREENS/STRIFE/SHOW.PUP new file mode 100644 index 0000000..58c8404 Binary files /dev/null and b/SCREENS/STRIFE/SHOW.PUP differ diff --git a/SCREENS/STRIFE/TITLE.DOG b/SCREENS/STRIFE/TITLE.DOG new file mode 100644 index 0000000..38688ed Binary files /dev/null and b/SCREENS/STRIFE/TITLE.DOG differ diff --git a/SCREENS/STRIFE/TITLE.OBJ b/SCREENS/STRIFE/TITLE.OBJ new file mode 100644 index 0000000..4bde0f4 Binary files /dev/null and b/SCREENS/STRIFE/TITLE.OBJ differ diff --git a/SCREENS/STRIFE/TITLE.PUP b/SCREENS/STRIFE/TITLE.PUP new file mode 100644 index 0000000..38688ed Binary files /dev/null and b/SCREENS/STRIFE/TITLE.PUP differ diff --git a/SERIAL.BAK b/SERIAL.BAK new file mode 100644 index 0000000..77d2475 --- /dev/null +++ b/SERIAL.BAK @@ -0,0 +1,379 @@ +// +// Enter serial config info +// +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "default.h" + +enum +{ +#ifndef DOOM2 + SER_EPISODE0, SER_EPISODE1, SER_EPISODE2, +#endif + SER_SKILL1, SER_SKILL2, SER_SKILL3, SER_SKILL4, + SER_DEATHNO, SER_DEATHYES, + SER_COM1, SER_COM2, SER_COM3, SER_COM4, + SER_MAX +}; +item_t cserialitems[]= +{ +#ifndef DOOM2 + {SER_EPISODE0, 31,5,21, -1,-1}, + {SER_EPISODE1, 31,6,21, -1,-1}, + {SER_EPISODE2, 31,7,21, -1,-1}, + + {SER_SKILL1, 31,9,20, -1,-1}, + {SER_SKILL2, 31,10,20, -1,-1}, + {SER_SKILL3, 31,11,20, -1,-1}, + {SER_SKILL4, 31,12,20, -1,-1}, + + {SER_DEATHNO, 31,14,20, -1,-1}, + {SER_DEATHYES, 31,15,20, -1,-1}, + + {SER_COM1, 31,17,4, -1, SER_COM3}, + {SER_COM2, 31,18,4, -1, SER_COM4}, + {SER_COM3, 45,17,4, SER_COM1,-1,SER_DEATHYES}, + {SER_COM4, 45,18,4, SER_COM2,-1} +#else + {SER_SKILL1, 31,7,20, -1,-1}, + {SER_SKILL2, 31,8,20, -1,-1}, + {SER_SKILL3, 31,9,20, -1,-1}, + {SER_SKILL4, 31,10,20, -1,-1}, + + {SER_DEATHNO, 31,12,20, -1,-1}, + {SER_DEATHYES, 31,13,20, -1,-1}, + + {SER_COM1, 31,15,4, -1, SER_COM3}, + {SER_COM2, 31,16,4, -1, SER_COM4}, + {SER_COM3, 45,15,4, SER_COM1,-1,SER_DEATHYES}, + {SER_COM4, 45,16,4, SER_COM2,-1} +#endif +}; +menu_t cserialmenu= +{ + &cserialitems[0], +#ifndef DOOM2 + SER_EPISODE0, +#else + SER_SKILL1, +#endif + SER_MAX, + 0x7f +}; + +#ifndef DOOM2 +// EPISODE radio buttons +radio_t sepi[]= +{ + {28,5,1}, + {28,6,2}, + {28,7,3} +}; +radiogroup_t sepig={&sepi[0],3,&sinfo.episode,15,1}; + +// SKILL radio buttons +radio_t sskill[]= +{ + {28,9,2}, + {28,10,3}, + {28,11,4}, + {28,12,5} +}; +radiogroup_t sskillg={&sskill[0],4,&sinfo.skillLevel,15,1}; + +// DEATHMATCH radio buttons +radio_t sdeath[]= +{ + {28,14,0}, + {28,15,1} +}; +radiogroup_t sdeathg={&sdeath[0],2,&sinfo.deathMatch,15,1}; + +// COMPORT radio buttons +radio_t scom[]= +{ + {28,17,1}, + {28,18,2}, + {42,17,3}, + {42,18,4} +}; +radiogroup_t scomg={&scom[0],4,&sinfo.comport,15,1}; +#else +// SKILL radio buttons +radio_t sskill[]= +{ + {28,7,2}, + {28,8,3}, + {28,9,4}, + {28,10,5} +}; +radiogroup_t sskillg={&sskill[0],4,&sinfo.skillLevel,15,1}; + +// DEATHMATCH radio buttons +radio_t sdeath[]= +{ + {28,12,0}, + {28,13,1} +}; +radiogroup_t sdeathg={&sdeath[0],2,&sinfo.deathMatch,15,1}; + +// COMPORT radio buttons +radio_t scom[]= +{ + {28,15,1}, + {28,16,2}, + {42,15,3}, + {42,16,4} +}; +radiogroup_t scomg={&scom[0],4,&sinfo.comport,15,1}; +#endif + +int SerialConfig(void) +{ + short key; + short field; + int rval = 0; + char *args[MAXARGS]; + int argcount; + char string[MAXARGS*2][12]; + int i; + int level; + + + sinfo = serialinfo; // save copy of modeminfo + + SaveScreen(); + DrawPup(&cserial); + + // + // Set defaults + // + sinfo.skillLevel = 3; + DrawRadios(&sskillg); + + sinfo.episode = 1; + #ifndef DOOM2 + DrawRadios(&sepig); + #endif + + sinfo.deathMatch = 1; + DrawRadios(&sdeathg); + + sinfo.comport = comport; + DrawRadios(&scomg); + + while(1) + { + SetupMenu(&cserialmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + // + // Secret WARP code: F5+warp + // + case KEY_F1: + { + level = WarpTime(); + if (!level) + continue; + + serialinfo = sinfo; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-skill"; + sprintf(string[argcount],"%d",serialinfo.skillLevel); + args[argcount] = string[argcount]; + argcount++; + + if (!level) + { + #ifndef DOOM2 + args[argcount++] = "-episode"; + sprintf(string[argcount],"%d",serialinfo.episode); + args[argcount] = string[argcount]; + argcount++; + #endif + } + else + { + args[argcount++] = "-warp"; + #ifdef DOOM2 + sprintf(string[argcount],"%d",level); + args[argcount] = string[argcount]; + #else + sprintf(string[argcount],"%d",level>>8); + args[argcount] = string[argcount]; + argcount++; + sprintf(string[argcount],"%d",level&0x0f); + args[argcount] = string[argcount]; + #endif + argcount++; + } + + if (serialinfo.deathMatch) + args[argcount++] = "-deathmatch"; + + if (nomonsters) + args[argcount++] = "-nomonsters"; + + if (respawn) + args[argcount++] = "-respawn"; + + if (deathmatch2 && serialinfo.deathMatch) + args[argcount++] = "-altdeath"; + + sprintf(string[argcount],"-com%d",serialinfo.comport); + args[argcount] = string[argcount]; + argcount++; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(1); + + } + break; + +exitandsave: + case KEY_F10: + + serialinfo = sinfo; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-skill"; + sprintf(string[argcount],"%d",serialinfo.skillLevel); + args[argcount] = string[argcount]; + argcount++; + + if (serialinfo.deathMatch) + args[argcount++] = "-deathmatch"; + + #ifndef DOOM2 + args[argcount++] = "-episode"; + sprintf(string[argcount],"%d",serialinfo.episode); + args[argcount] = string[argcount]; + argcount++; + #endif + + sprintf(string[argcount],"-com%d",serialinfo.comport); + args[argcount] = string[argcount]; + argcount++; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(1); + + case KEY_ENTER: + case 32: + switch ( field ) + { + #ifndef DOOM2 + // + // Episode + // + case SER_EPISODE0: + case SER_EPISODE1: + case SER_EPISODE2: + sinfo.episode = field - SER_EPISODE0 + 1; + DrawRadios(&sepig); + break; + #endif + + // + // Skill level + // + case SER_SKILL1: + case SER_SKILL2: + case SER_SKILL3: + case SER_SKILL4: + sinfo.skillLevel = field - SER_SKILL1 + 2; break; + + // + // Deathmatch + // + case SER_DEATHNO: + case SER_DEATHYES: + sinfo.deathMatch = field - SER_DEATHNO; + break; + + // + // COM port + // + case SER_COM1: + case SER_COM2: + case SER_COM3: + case SER_COM4: + comport = sinfo.comport = field - SER_COM1 + 1; + break; + + default: + break; + } + DrawRadios(&sskillg); + DrawRadios(&sdeathg); + DrawRadios(&scomg); + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + diff --git a/SERIAL.C b/SERIAL.C new file mode 100644 index 0000000..dbaf87f --- /dev/null +++ b/SERIAL.C @@ -0,0 +1,379 @@ +// +// Enter serial config info +// +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "default.h" + +enum +{ +#ifndef DOOM2 + SER_EPISODE0, SER_EPISODE1, SER_EPISODE2, +#endif + SER_SKILL1, SER_SKILL2, SER_SKILL3, SER_SKILL4, + SER_DEATHNO, SER_DEATHYES, + SER_COM1, SER_COM2, SER_COM3, SER_COM4, + SER_MAX +}; +item_t cserialitems[]= +{ +#ifndef DOOM2 + {SER_EPISODE0, 31,5,21, -1,-1}, + {SER_EPISODE1, 31,6,21, -1,-1}, + {SER_EPISODE2, 31,7,21, -1,-1}, + + {SER_SKILL1, 31,9,21, -1,-1}, + {SER_SKILL2, 31,10,21, -1,-1}, + {SER_SKILL3, 31,11,21, -1,-1}, + {SER_SKILL4, 31,12,21, -1,-1}, + + {SER_DEATHNO, 31,14,20, -1,-1}, + {SER_DEATHYES, 31,15,20, -1,-1}, + + {SER_COM1, 31,17,4, -1, SER_COM3}, + {SER_COM2, 31,18,4, -1, SER_COM4}, + {SER_COM3, 45,17,4, SER_COM1,-1,SER_DEATHYES}, + {SER_COM4, 45,18,4, SER_COM2,-1} +#else + {SER_SKILL1, 31,7,20, -1,-1}, + {SER_SKILL2, 31,8,20, -1,-1}, + {SER_SKILL3, 31,9,20, -1,-1}, + {SER_SKILL4, 31,10,20, -1,-1}, + + {SER_DEATHNO, 31,12,20, -1,-1}, + {SER_DEATHYES, 31,13,20, -1,-1}, + + {SER_COM1, 31,15,4, -1, SER_COM3}, + {SER_COM2, 31,16,4, -1, SER_COM4}, + {SER_COM3, 45,15,4, SER_COM1,-1,SER_DEATHYES}, + {SER_COM4, 45,16,4, SER_COM2,-1} +#endif +}; +menu_t cserialmenu= +{ + &cserialitems[0], +#ifndef DOOM2 + SER_EPISODE0, +#else + SER_SKILL1, +#endif + SER_MAX, + 0x7f +}; + +#ifndef DOOM2 +// EPISODE radio buttons +radio_t sepi[]= +{ + {28,5,1}, + {28,6,2}, + {28,7,3} +}; +radiogroup_t sepig={&sepi[0],3,&sinfo.episode,15,1}; + +// SKILL radio buttons +radio_t sskill[]= +{ + {28,9,2}, + {28,10,3}, + {28,11,4}, + {28,12,5} +}; +radiogroup_t sskillg={&sskill[0],4,&sinfo.skillLevel,15,1}; + +// DEATHMATCH radio buttons +radio_t sdeath[]= +{ + {28,14,0}, + {28,15,1} +}; +radiogroup_t sdeathg={&sdeath[0],2,&sinfo.deathMatch,15,1}; + +// COMPORT radio buttons +radio_t scom[]= +{ + {28,17,1}, + {28,18,2}, + {42,17,3}, + {42,18,4} +}; +radiogroup_t scomg={&scom[0],4,&sinfo.comport,15,1}; +#else +// SKILL radio buttons +radio_t sskill[]= +{ + {28,7,2}, + {28,8,3}, + {28,9,4}, + {28,10,5} +}; +radiogroup_t sskillg={&sskill[0],4,&sinfo.skillLevel,15,1}; + +// DEATHMATCH radio buttons +radio_t sdeath[]= +{ + {28,12,0}, + {28,13,1} +}; +radiogroup_t sdeathg={&sdeath[0],2,&sinfo.deathMatch,15,1}; + +// COMPORT radio buttons +radio_t scom[]= +{ + {28,15,1}, + {28,16,2}, + {42,15,3}, + {42,16,4} +}; +radiogroup_t scomg={&scom[0],4,&sinfo.comport,15,1}; +#endif + +int SerialConfig(void) +{ + short key; + short field; + int rval = 0; + char *args[MAXARGS]; + int argcount; + char string[MAXARGS*2][12]; + int i; + int level; + + + sinfo = serialinfo; // save copy of modeminfo + + SaveScreen(); + DrawPup(&cserial); + + // + // Set defaults + // + sinfo.skillLevel = 3; + DrawRadios(&sskillg); + + sinfo.episode = 1; + #ifndef DOOM2 + DrawRadios(&sepig); + #endif + + sinfo.deathMatch = 1; + DrawRadios(&sdeathg); + + sinfo.comport = comport; + DrawRadios(&scomg); + + while(1) + { + SetupMenu(&cserialmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + // + // Secret WARP code: F5+warp + // + case KEY_F1: + { + level = WarpTime(); + if (!level) + continue; + + serialinfo = sinfo; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-skill"; + sprintf(string[argcount],"%d",serialinfo.skillLevel); + args[argcount] = string[argcount]; + argcount++; + + if (!level) + { + #ifndef DOOM2 + args[argcount++] = "-episode"; + sprintf(string[argcount],"%d",serialinfo.episode); + args[argcount] = string[argcount]; + argcount++; + #endif + } + else + { + args[argcount++] = "-warp"; + #ifdef DOOM2 + sprintf(string[argcount],"%d",level); + args[argcount] = string[argcount]; + #else + sprintf(string[argcount],"%d",level>>8); + args[argcount] = string[argcount]; + argcount++; + sprintf(string[argcount],"%d",level&0x0f); + args[argcount] = string[argcount]; + #endif + argcount++; + } + + if (serialinfo.deathMatch) + args[argcount++] = "-deathmatch"; + + if (nomonsters) + args[argcount++] = "-nomonsters"; + + if (respawn) + args[argcount++] = "-respawn"; + + if (deathmatch2 && serialinfo.deathMatch) + args[argcount++] = "-altdeath"; + + sprintf(string[argcount],"-com%d",serialinfo.comport); + args[argcount] = string[argcount]; + argcount++; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(1); + + } + break; + +exitandsave: + case KEY_F10: + + serialinfo = sinfo; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-skill"; + sprintf(string[argcount],"%d",serialinfo.skillLevel); + args[argcount] = string[argcount]; + argcount++; + + if (serialinfo.deathMatch) + args[argcount++] = "-deathmatch"; + + #ifndef DOOM2 + args[argcount++] = "-episode"; + sprintf(string[argcount],"%d",serialinfo.episode); + args[argcount] = string[argcount]; + argcount++; + #endif + + sprintf(string[argcount],"-com%d",serialinfo.comport); + args[argcount] = string[argcount]; + argcount++; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(1); + + case KEY_ENTER: + case 32: + switch ( field ) + { + #ifndef DOOM2 + // + // Episode + // + case SER_EPISODE0: + case SER_EPISODE1: + case SER_EPISODE2: + sinfo.episode = field - SER_EPISODE0 + 1; + DrawRadios(&sepig); + break; + #endif + + // + // Skill level + // + case SER_SKILL1: + case SER_SKILL2: + case SER_SKILL3: + case SER_SKILL4: + sinfo.skillLevel = field - SER_SKILL1 + 2; break; + + // + // Deathmatch + // + case SER_DEATHNO: + case SER_DEATHYES: + sinfo.deathMatch = field - SER_DEATHNO; + break; + + // + // COM port + // + case SER_COM1: + case SER_COM2: + case SER_COM3: + case SER_COM4: + comport = sinfo.comport = field - SER_COM1 + 1; + break; + + default: + break; + } + DrawRadios(&sskillg); + DrawRadios(&sdeathg); + DrawRadios(&scomg); + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + diff --git a/SERIAL.OBJ b/SERIAL.OBJ new file mode 100644 index 0000000..adb36d7 Binary files /dev/null and b/SERIAL.OBJ differ diff --git a/SERREST.BAK b/SERREST.BAK new file mode 100644 index 0000000..a77c573 --- /dev/null +++ b/SERREST.BAK @@ -0,0 +1,249 @@ +// +// Enter serial-link savegame info +// +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "default.h" + +enum {SERS_0,SERS_1,SERS_2,SERS_3,SERS_4,SERS_5, + SERS_DEATHNO,SERS_DEATHYES, + SERS_COM1,SERS_COM2,SERS_COM3,SERS_COM4, + SERS_MAX}; +item_t sersaveitems[]= +{ + {SERS_0, 29,6,24, -1,-1}, + {SERS_1, 29,7,24, -1,-1}, + {SERS_2, 29,8,24, -1,-1}, + {SERS_3, 29,9,24, -1,-1}, + {SERS_4, 29,10,24, -1,-1}, + {SERS_5, 29,11,24, -1,-1}, + + {SERS_DEATHNO, 29,13,24, -1,-1}, + {SERS_DEATHYES,29,14,24, -1,-1}, + + {SERS_COM1, 29,16,4, -1,SERS_COM3}, + {SERS_COM2, 29,17,4, -1,SERS_COM4}, + {SERS_COM3, 46,16,4, SERS_COM1,-1,SERS_DEATHYES}, + {SERS_COM4, 46,17,4, SERS_COM2,-1} +}; +menu_t sersavemenu= +{ + &sersaveitems[0], + SERS_0, + SERS_MAX, + 0x7f +}; + +// SAVEGAME radio group +radio_t serslots[]= +{ + {26,6,0}, + {26,7,1}, + {26,8,2}, + {26,9,3}, + {26,10,4}, + {26,11,5} +}; +radiogroup_t serslotsg= { &serslots[0],6,&saveslot,15,1 }; + +// DEATHMATCH radio group +radio_t sersdeath[]= +{ + {26,13,0}, + {26,14,1} +}; +radiogroup_t sersdeathg= { &sersdeath[0],2,&sinfo.deathMatch,15,1 }; + +// COMPORT radio group +radio_t serscom[]= +{ + {26,16,1}, + {26,17,2}, + {43,16,3}, + {43,17,4} +}; +radiogroup_t serscomg= { &serscom[0],4,&sinfo.comport,15,1 }; + + +int RestoreSerial(void) +{ + short field; + short key; + int rval = 0; + char *args[MAXARGS]; + int argcount; + char string[MAXARGS*2][16]; + int i; + int numplayers[6]; + int saveslot; + int handle; + char name[32]; + char p1,p2,p3,p4; + + + sinfo = serialinfo; // save copy of netinfo + + SaveScreen(); + DrawPup(&sersave); + + saveslot = -1; + memset(savenames,0,6*24); + + // + // Read in savegame strings + // + textbackground(1); + textcolor(15); + for (i = 0;i < 6;i++) + { + sprintf(name,SAVENAME,i); + handle = open (name, O_BINARY | O_RDONLY); + if (handle == -1) + continue; + + read(handle,savenames[i],24); + lseek(handle,27+16,SEEK_SET); + read(handle,&p1,1); + read(handle,&p2,1); + read(handle,&p3,1); + read(handle,&p4,1); + numplayers[i] = p1+p2+p3+p4; + close(handle); + + Clear(&sersaveitems[i]); + Pos(&sersaveitems[i]); + cprintf("%s",savenames[i]); + } + + // + // Set defaults + // + sinfo.comport = comport; + DrawRadios(&serscomg); + + sinfo.deathMatch = 0; + DrawRadios(&sersdeathg); + + while(1) + { + SetupMenu(&sersavemenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + +exitandsave: + case KEY_F10: + + if (saveslot < 0) + { + ErrorWindow(&netserr); + break; + } + + serialinfo = sinfo; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-nodes"; + sprintf(string[argcount],"%d",numplayers[saveslot]); + args[argcount] = string[argcount]; + argcount++; + + if (modeminfo.deathMatch) + args[argcount++] = "-deathmatch"; + + sprintf(string[argcount],"-com%d",serialinfo.comport); + args[argcount] = string[argcount]; + argcount++; + + args[argcount++] = "-loadgame"; + sprintf(string[argcount],"%d",saveslot); + args[argcount] = string[argcount]; + argcount++; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(0); + + case KEY_ENTER: + switch ( field ) + { + case SERS_COM1: + case SERS_COM2: + case SERS_COM3: + case SERS_COM4: + sinfo.comport = field - SERS_COM1 + 1; + DrawRadios(&serscomg); + break; + + case SERS_0: + case SERS_1: + case SERS_2: + case SERS_3: + case SERS_4: + case SERS_5: + if (!savenames[field - SERS_0][0]) + { + Sound(1000,12); + break; + } + saveslot = field - SERS_0; + DrawRadios(&serslotsg); + break; + + // + // Deathmatch + // + case SERS_DEATHNO: + case SERS_DEATHYES: + sinfo.deathMatch = field - SERS_DEATHNO; + DrawRadios(&sersdeathg); + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + + \ No newline at end of file diff --git a/SERREST.C b/SERREST.C new file mode 100644 index 0000000..b416e36 --- /dev/null +++ b/SERREST.C @@ -0,0 +1,250 @@ +// +// Enter serial-link savegame info +// +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "default.h" + +enum {SERS_0,SERS_1,SERS_2,SERS_3,SERS_4,SERS_5, + SERS_DEATHNO,SERS_DEATHYES, + SERS_COM1,SERS_COM2,SERS_COM3,SERS_COM4, + SERS_MAX}; +item_t sersaveitems[]= +{ + {SERS_0, 29,6,24, -1,-1}, + {SERS_1, 29,7,24, -1,-1}, + {SERS_2, 29,8,24, -1,-1}, + {SERS_3, 29,9,24, -1,-1}, + {SERS_4, 29,10,24, -1,-1}, + {SERS_5, 29,11,24, -1,-1}, + + {SERS_DEATHNO, 29,13,24, -1,-1}, + {SERS_DEATHYES,29,14,24, -1,-1}, + + {SERS_COM1, 29,16,4, -1,SERS_COM3}, + {SERS_COM2, 29,17,4, -1,SERS_COM4}, + {SERS_COM3, 46,16,4, SERS_COM1,-1,SERS_DEATHYES}, + {SERS_COM4, 46,17,4, SERS_COM2,-1} +}; +menu_t sersavemenu= +{ + &sersaveitems[0], + SERS_0, + SERS_MAX, + 0x7f +}; + +// SAVEGAME radio group +radio_t serslots[]= +{ + {26,6,0}, + {26,7,1}, + {26,8,2}, + {26,9,3}, + {26,10,4}, + {26,11,5} +}; +radiogroup_t serslotsg= { &serslots[0],6,&saveslot,15,1 }; + +// DEATHMATCH radio group +radio_t sersdeath[]= +{ + {26,13,0}, + {26,14,1} +}; +radiogroup_t sersdeathg= { &sersdeath[0],2,&sinfo.deathMatch,15,1 }; + +// COMPORT radio group +radio_t serscom[]= +{ + {26,16,1}, + {26,17,2}, + {43,16,3}, + {43,17,4} +}; +radiogroup_t serscomg= { &serscom[0],4,&sinfo.comport,15,1 }; + + +int RestoreSerial(void) +{ + short field; + short key; + int rval = 0; + char *args[MAXARGS]; + int argcount; + char string[MAXARGS*2][16]; + int i; + int numplayers[6]; + int saveslot; + int handle; + char name[32]; + char p1,p2,p3,p4; + + + sinfo = serialinfo; // save copy of netinfo + + SaveScreen(); + DrawPup(&sersave); + + saveslot = -1; + memset(savenames,0,6*24); + + // + // Read in savegame strings + // + textbackground(1); + textcolor(15); + for (i = 0;i < 6;i++) + { + sprintf(name,SAVENAME,i); + handle = open (name, O_BINARY | O_RDONLY); + if (handle == -1) + continue; + + read(handle,savenames[i],24); + lseek(handle,27+16,SEEK_SET); + read(handle,&p1,1); + read(handle,&p2,1); + read(handle,&p3,1); + read(handle,&p4,1); + numplayers[i] = p1+p2+p3+p4; + close(handle); + + Clear(&sersaveitems[i]); + Pos(&sersaveitems[i]); + cprintf("%s",savenames[i]); + } + + // + // Set defaults + // + sinfo.comport = comport; + DrawRadios(&serscomg); + + sinfo.deathMatch = 0; + DrawRadios(&sersdeathg); + gotoxy(1,25); + + while(1) + { + SetupMenu(&sersavemenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + +exitandsave: + case KEY_F10: + + if (saveslot < 0) + { + ErrorWindow(&netserr); + break; + } + + serialinfo = sinfo; + + M_SaveDefaults(); + RestoreScreen(); + + argcount = 1; + + args[0] = "sersetup.exe "; + + if (cdrom) + args[argcount++] = "-cdrom"; + + args[argcount++] = "-nodes"; + sprintf(string[argcount],"%d",numplayers[saveslot]); + args[argcount] = string[argcount]; + argcount++; + + if (modeminfo.deathMatch) + args[argcount++] = "-deathmatch"; + + sprintf(string[argcount],"-com%d",serialinfo.comport); + args[argcount] = string[argcount]; + argcount++; + + args[argcount++] = "-loadgame"; + sprintf(string[argcount],"%d",saveslot); + args[argcount] = string[argcount]; + argcount++; + + for (i = 1;i < myargc; i++) + args[argcount++] = myargv[i]; + + args[argcount] = NULL; + + textbackground(0); + textcolor(7); + clrscr(); + + execv("sersetup.exe",args); + + // + // ERROR EXECing! + // + printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); + exit(0); + + case KEY_ENTER: + switch ( field ) + { + case SERS_COM1: + case SERS_COM2: + case SERS_COM3: + case SERS_COM4: + sinfo.comport = field - SERS_COM1 + 1; + DrawRadios(&serscomg); + break; + + case SERS_0: + case SERS_1: + case SERS_2: + case SERS_3: + case SERS_4: + case SERS_5: + if (!savenames[field - SERS_0][0]) + { + Sound(1000,12); + break; + } + saveslot = field - SERS_0; + DrawRadios(&serslotsg); + break; + + // + // Deathmatch + // + case SERS_DEATHNO: + case SERS_DEATHYES: + sinfo.deathMatch = field - SERS_DEATHNO; + DrawRadios(&sersdeathg); + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + + \ No newline at end of file diff --git a/SERREST.OBJ b/SERREST.OBJ new file mode 100644 index 0000000..2b22170 Binary files /dev/null and b/SERREST.OBJ differ diff --git a/SETUP.BAK b/SETUP.BAK new file mode 100644 index 0000000..a83c604 Binary files /dev/null and b/SETUP.BAK differ diff --git a/SETUP.C b/SETUP.C new file mode 100644 index 0000000..b342467 --- /dev/null +++ b/SETUP.C @@ -0,0 +1,215 @@ +// +// SETUP PROGRAM +// (C) 1994 id Software, inc. +// by John Romero +// October 1-? +// + +#include +#include +#include +#include +#include + +#include "main.h" // #includes setup.h + +// +// Fatal error +// +char errorstring[80]; +void Error(char *string) +{ + textbackground(0); + textcolor(7); + clrscr(); + printf("%s\n",string); + exit(1); +} + +void DrawRadios(radiogroup_t *rg) +{ + int i; + int value; + radio_t *r; + char far *screen; + byte color; + + value = *(rg->master); + color = (rg->bgcolor << 4)+rg->fgcolor; + r = rg->radios; + for (i = 0; i < rg->amount; i++) + { + screen = MK_FP(0xb800,(r->y*160)+(r->x*2)); + *(screen+1) = color; + if (value == r->value) + *screen = 7; + else + *screen = ' '; + r++; + } +} + +// +// Save screens +// +static int layer = 0; // which screen layer we're at +char far screens[MAXLAYERS][4000]; +void SaveScreen(void) +{ + movedata(0xb800,0,FP_SEG(&screens[layer]),FP_OFF(&screens[layer]),4000); + layer++; + if (layer > MAXLAYERS) + { + sprintf(errorstring,"More than %d layers!",layer); + Error(errorstring); + } +} + +// +// Restore screens +// +void RestoreScreen(void) +{ + layer--; + if (layer < 0) + Error("Restored one layer too many!"); + movedata(FP_SEG(&screens[layer]),FP_OFF(&screens[layer]),0xb800,0,4000); +} + +// +// Draw the dim 3-D edge of a window +// +void DrawDimEdge(pup_t far *pup) +{ + char far *screen; + int i; + + if ((pup->x + pup->width + 1 > 79) || + (pup->y + pup->height > 24)) + return; + + for (i = pup->y + 1; i < pup->y + pup->height + 1; i++) + { + screen = MK_FP(0xb800,i*160 + (pup->x + pup->width)*2); + *(screen+1) = 8; + *(screen+3) = 8; + } + + screen = MK_FP(0xb800,(pup->y + pup->height)*160 + (pup->x+2)*2); + for (i = 0; i < pup->width; i++) + { + *(screen+1) = 8; + screen += 2; + } + +} + +// +// Draw LaughingDog .PUP files! +// +void DrawPup(pup_t far *pup) +{ + int width; + int w; + int height; + int x; + int y; + char far *data; + byte code; + char far *screen; + char c; + char a; + short times; + int i; + int string; + + w = width = pup->width; + height = pup->height; + x = pup->x; + y = pup->y; + DrawDimEdge(pup); + data = (char far *)(pup + 1); + screen = MK_FP(0xb800,y*160 + x*2); + string = normal; + + while(1) + { + code = *data++; + switch(code) + { + case 0: // String of chars w/same attribute + if (string == stringdraw) + { + string = normal; + break; + } + string = stringdraw; + + c = *data++; // char + a = *data++; // attribute + *screen++ = c; + *screen++ = a; + if (!--w) + { + if (!--height) + return; // finished! + w = width; + y++; + screen = MK_FP(0xb800,y*160 + x*2); + } + break; + + case 0xff: // Repeated byte + c = *data++; + a = *data++; + times = (*data * 256) + *(data+1); + data+=2; + for (i = 0;i < times; i++) + { + *screen++ = c; + *screen++ = a; + if (!--w) + { + if (!--height) + return; // finished! + w = width; + y++; + screen = MK_FP(0xb800,y*160 + x*2); + } + } + break; + + default: // char/attibute combo + if (string != stringdraw) + a = *data++; + c = code; + *screen++ = c; + *screen++ = a; + if (!--w) + { + if (!--height) + return; // finished! + w = width; + y++; + screen = MK_FP(0xb800,y*160 + x*2); + } + break; + } + } +} + +char **myargv; +int myargc; + +void main(int argc, char *argv[]) +{ + myargv = argv; + myargc = argc; + + #ifdef DEBUG + ShowAllPups(); + #endif + + StartUp(); +} + diff --git a/SETUP.CSM b/SETUP.CSM new file mode 100644 index 0000000..a7fd0a0 Binary files /dev/null and b/SETUP.CSM differ diff --git a/SETUP.DSW b/SETUP.DSW new file mode 100644 index 0000000..285864b Binary files /dev/null and b/SETUP.DSW differ diff --git a/SETUP.H b/SETUP.H new file mode 100644 index 0000000..deed21d --- /dev/null +++ b/SETUP.H @@ -0,0 +1,66 @@ +//#define DEBUG // shows all windows + +typedef unsigned char byte; + +typedef struct +{ + int x; // xcoord of radio + int y; // ycoord of radio + int value; // value to match +} radio_t; + +typedef struct +{ + radio_t *radios; // start of radio buttons + int amount; // # of radio buttons + int *master; // master value that radios must match + int fgcolor; // text color + int bgcolor; // background color +} radiogroup_t; + +typedef struct +{ + short pup_id; + char width; + char height; + char x; + char y; + short mystery1; + short mystery2; +} pup_t; + +typedef enum +{ + normal, + stringdraw, + repeat +} pup_e; + +// ALL THE WINDOWS +extern pup_t far askpres, far cmodem, far consel, far control, far cserial, + far cwarp, far gusirqer, far idcard, far idjoysel, far idkeysel, far idmain2, + far idmousel, far irqerr, far macros, far mcard, far midiport, far modemchs, + far modsave, far mousentr, far mouspres, far netplay, far netplay2, + far netsave, far netserr, far netwk2, far numdig, far phonelst, far quitwin, + far sbdma, far sbirq, far sbport, far sersave, far show, far sockerr, + far title; +#ifndef FRENCH +extern pup_t far entrnmbr; // No entering phone numbers for frogs! +#endif + +#define MAXLAYERS 5 // max amount of screens to save +void SaveScreen(void); +void RestoreScreen(void); +void DrawRadios(radiogroup_t *rg); + +void DrawPup(pup_t far *pup); +#ifdef DEBUG +void ShowAllPups(void); +#endif +extern char errorstring[80]; +void Error(char *string); + + +extern char **myargv; +extern int myargc; + diff --git a/SETUP.IDE b/SETUP.IDE new file mode 100644 index 0000000..4b8fff8 Binary files /dev/null and b/SETUP.IDE differ diff --git a/SETUP.OBJ b/SETUP.OBJ new file mode 100644 index 0000000..09d38db Binary files /dev/null and b/SETUP.OBJ differ diff --git a/SETUP.OLD b/SETUP.OLD new file mode 100644 index 0000000..721c7c7 Binary files /dev/null and b/SETUP.OLD differ diff --git a/SETUP.TR b/SETUP.TR new file mode 100644 index 0000000..843d161 Binary files /dev/null and b/SETUP.TR differ diff --git a/SETUP.~DE b/SETUP.~DE new file mode 100644 index 0000000..4b8fff8 Binary files /dev/null and b/SETUP.~DE differ diff --git a/SETUPD1.EXE b/SETUPD1.EXE new file mode 100644 index 0000000..4d39078 Binary files /dev/null and b/SETUPD1.EXE differ diff --git a/SETUPD1.TR b/SETUPD1.TR new file mode 100644 index 0000000..843d161 Binary files /dev/null and b/SETUPD1.TR differ diff --git a/SETUPD2.EXE b/SETUPD2.EXE new file mode 100644 index 0000000..55fee80 Binary files /dev/null and b/SETUPD2.EXE differ diff --git a/SETUPD2.TR b/SETUPD2.TR new file mode 100644 index 0000000..843d161 Binary files /dev/null and b/SETUPD2.TR differ diff --git a/SETUPD2F.EXE b/SETUPD2F.EXE new file mode 100644 index 0000000..4a5fd1b Binary files /dev/null and b/SETUPD2F.EXE differ diff --git a/SETUPD2F.TR b/SETUPD2F.TR new file mode 100644 index 0000000..843d161 Binary files /dev/null and b/SETUPD2F.TR differ diff --git a/SETUPH.EXE b/SETUPH.EXE new file mode 100644 index 0000000..ecc306e Binary files /dev/null and b/SETUPH.EXE differ diff --git a/SETUPH.TR b/SETUPH.TR new file mode 100644 index 0000000..843d161 Binary files /dev/null and b/SETUPH.TR differ diff --git a/SETUPS.EXE b/SETUPS.EXE new file mode 100644 index 0000000..5c63125 Binary files /dev/null and b/SETUPS.EXE differ diff --git a/SFX.BAK b/SFX.BAK new file mode 100644 index 0000000..4d95aff --- /dev/null +++ b/SFX.BAK @@ -0,0 +1,530 @@ +// +// Handle all SFX card menus +// +#include "main.h" + +enum +{ + DCARD_GUS, + DCARD_PAS, + DCARD_SB, +// DCARD_PC, + DCARD_NONE, + DCARD_MAX +}; + +item_t idcarditems[]= +{ + {DCARD_GUS, 27,10,25, -1,-1}, + {DCARD_PAS, 27,11,25, -1,-1}, + {DCARD_SB, 27,12,25, -1,-1}, +// {DCARD_PC, 27,13,25, -1,-1}, + {DCARD_NONE,27,13,25, -1,-1} +}; + +menu_t idcardmenu= +{ + &idcarditems[0], + DCARD_NONE, + DCARD_MAX, + 0x7f +}; + +int ChooseFxCard (void) +{ + short field; + short key; + int rval = 0; + + switch ( newc.d.card ) + { + default: + case M_NONE: + field = DCARD_NONE; + break; + +// case M_PC: +// field = DCARD_PC; +// break; + + case M_GUS: + field = DCARD_GUS; + break; + + case M_SB: + field = DCARD_SB; + break; + + case M_PAS: + field = DCARD_PAS; + break; + + case M_WAVE: + field = DCARD_SB; + break; + } + + SaveScreen(); + DrawPup(&idcard); + idcardmenu.startitem = field; + + while(1) + { + SetupMenu(&idcardmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case DCARD_PAS: + newc.d.card = M_PAS; + goto func_exit; + + case DCARD_SB: + newc.d.card = M_SB; + goto func_exit; + + case DCARD_GUS: + newc.d.card = M_GUS; + newc.d.midiport = -1; + goto func_exit; + +#if 0 + case DCARD_PC: + newc.d.card = M_PC; + newc.d.port = -1; + newc.d.midiport = -1; + newc.d.irq = -1; + newc.d.dma = -1; + goto func_exit; +#endif + case DCARD_NONE: + newc.d.card = M_NONE; + newc.d.port = -1; + newc.d.midiport = -1; + newc.d.irq = -1; + newc.d.dma = -1; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + +// +// Choose SB DMA channel +// +enum +{ + SB_DMA_0, + SB_DMA_1, + SB_DMA_3, + SB_DMA_5, + SB_DMA_6, + SB_DMA_7, + SB_DMA_MAX +}; + +item_t sbdmaitems[]= +{ + {SB_DMA_0, 35,9,7, -1,-1}, + {SB_DMA_1, 35,10,7, -1,-1}, + {SB_DMA_3, 35,11,7, -1,-1}, + {SB_DMA_5, 35,12,7, -1,-1}, + {SB_DMA_6, 35,13,7, -1,-1}, + {SB_DMA_7, 35,14,7, -1,-1} +}; + +menu_t sbdmamenu= +{ + &sbdmaitems[0], + SB_DMA_5, + SB_DMA_MAX, + 0x7f +}; + +int ChooseSbDma (DMXCARD * card) +{ + short key; + short field; + int rval = 0; + + switch ( card->dma ) + { + case 0: + field = SB_DMA_0; + break; + + default: + case 1: + field = SB_DMA_1; + break; + + case 3: + field = SB_DMA_3; + break; + + case 5: + field = SB_DMA_5; + break; + + case 6: + field = SB_DMA_6; + break; + + case 7: + field = SB_DMA_7; + break; + } + + SaveScreen(); + DrawPup(&sbdma); + sbdmamenu.startitem = field; + + while(1) + { + SetupMenu(&sbdmamenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case SB_DMA_0: + card->dma = 0; + goto func_exit; + + case SB_DMA_1: + card->dma = 1; + goto func_exit; + + case SB_DMA_3: + card->dma = 3; + goto func_exit; + + case SB_DMA_5: + card->dma = 5; + goto func_exit; + + case SB_DMA_6: + card->dma = 6; + goto func_exit; + + case SB_DMA_7: + card->dma = 7; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + +// +// Choose SB IRQ channel +// + +enum { SB_IRQ_2, SB_IRQ_5, SB_IRQ_7, SB_IRQ_MAX }; +item_t sbirqitems[]= +{ + {SB_IRQ_2, 35,11,7, -1,-1}, + {SB_IRQ_5, 35,12,7, -1,-1}, + {SB_IRQ_7, 35,13,7, -1,-1} +}; +menu_t sbirqmenu= +{ + &sbirqitems[0], + SB_IRQ_5, + SB_IRQ_MAX, + 0x7f +}; + +int ChooseSbIrq (DMXCARD * card) +{ + short field; + short key; + int rval = 0; + + if ( card->irq > 8 ) + ErrorWindow(&irqerr); + + switch ( card->irq ) + { + case 2: + field = SB_IRQ_2; + break; + + default: + case 5: + field = SB_IRQ_5; + break; + + case 7: + field = SB_IRQ_7; + break; + + } + + SaveScreen(); + DrawPup(&sbirq); + sbirqmenu.startitem = field; + + while(1) + { + SetupMenu(&sbirqmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case SB_IRQ_2: + card->irq = 2; + goto func_exit; + + case SB_IRQ_5: + card->irq = 5; + goto func_exit; + + case SB_IRQ_7: + card->irq = 7; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + +// +// Choose # of simultaneous digital channels +// + +enum {DIG_1,DIG_2,DIG_3,DIG_4,DIG_5,DIG_6,DIG_7,DIG_8,DIG_MAX}; +item_t numdigitems[]= +{ + {DIG_1, 36,8,7, -1,-1}, + {DIG_2, 36,9,7, -1,-1}, + {DIG_3, 36,10,7, -1,-1}, + {DIG_4, 36,11,7, -1,-1}, + {DIG_5, 36,12,7, -1,-1}, + {DIG_6, 36,13,7, -1,-1}, + {DIG_7, 36,14,7, -1,-1}, + {DIG_8, 36,15,7, -1,-1} +}; +menu_t numdigmenu= +{ + &numdigitems[0], + DIG_4, + DIG_MAX, + 0x7f +}; + +int ChooseNumDig (void) +{ + short key; + short field; + int rval = 0; + + SaveScreen(); + DrawPup(&numdig); + + // DEFAULT FIELD ======================================== + + switch ( newc.numdig ) + { + default: + field = DIG_4; + break; + + case 1: + field = DIG_1; + break; + + case 2: + field = DIG_2; + break; + + case 3: + field = DIG_3; + break; + + case 4: + field = DIG_4; + break; + + case 5: + field = DIG_5; + break; + + case 6: + field = DIG_6; + break; + + case 7: + field = DIG_7; + break; + + case 8: + field = DIG_8; + break; + } + numdigmenu.startitem = field; + + while(1) + { + SetupMenu(&numdigmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case DIG_1: + newc.numdig = 1; + goto func_exit; + + case DIG_2: + newc.numdig = 2; + goto func_exit; + + case DIG_3: + newc.numdig = 3; + goto func_exit; + + case DIG_4: + newc.numdig = 4; + goto func_exit; + + case DIG_5: + newc.numdig = 5; + goto func_exit; + + case DIG_6: + newc.numdig = 6; + goto func_exit; + + case DIG_7: + newc.numdig = 7; + goto func_exit; + + case DIG_8: + newc.numdig = 8; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + +// +// Setup Sound Effects card +// +int SetupFX (void) +{ + if ( ChooseFxCard() == -1 ) return ( -1 ); + + DrawCurrentConfig(); + + switch ( newc.d.card ) + { + default: + savefx = FALSE; + break; + + case M_NONE: + savefx = TRUE; + break; + +// case M_PC: +// savefx = TRUE; +// break; + + case M_ADLIB: + savefx = TRUE; + break; + + case M_PAS: + case M_GUS: + ChooseNumDig(); + savefx = TRUE; + break; + + case M_WAVE: + case M_SB: + if ( ChooseSbPort ( &newc.d ) == -1 ) return ( -1 ); + if ( ChooseSbIrq ( &newc.d ) == -1 ) return ( -1 ); + if ( ChooseSbDma ( &newc.d ) == -1 ) return ( -1 ); + ChooseNumDig(); + savefx = TRUE; + break; + + case M_CANVAS: + newc.d.midiport = 0x330; + if ( ChooseMidiPort ( &newc.d ) == -1 ) return ( -1 ); + savefx = TRUE; + break; + + case M_GMIDI: + if ( ChooseMidiPort ( &newc.d ) == -1 ) return ( -1 ); + savefx = TRUE; + break; + } + return 0; +} + diff --git a/SFX.C b/SFX.C new file mode 100644 index 0000000..5e99f68 --- /dev/null +++ b/SFX.C @@ -0,0 +1,539 @@ +// +// Handle all SFX card menus +// +#include "main.h" + +enum +{ + DCARD_GUS, + DCARD_PAS, + DCARD_SB, +#ifndef HERETIC + DCARD_PC, +#endif + DCARD_NONE, + DCARD_MAX +}; + +item_t idcarditems[]= +{ + {DCARD_GUS, 27,10,25, -1,-1}, + {DCARD_PAS, 27,11,25, -1,-1}, + {DCARD_SB, 27,12,25, -1,-1}, +#ifdef HERETIC + {DCARD_NONE,27,13,25, -1,-1} +#else + {DCARD_PC, 27,13,25, -1,-1}, + {DCARD_NONE,27,14,25, -1,-1} +#endif +}; + +menu_t idcardmenu= +{ + &idcarditems[0], + DCARD_NONE, + DCARD_MAX, + 0x7f +}; + +int ChooseFxCard (void) +{ + short field; + short key; + int rval = 0; + + switch ( newc.d.card ) + { + default: + case M_NONE: + field = DCARD_NONE; + break; + +#ifndef HERETIC + case M_PC: + field = DCARD_PC; + break; +#endif + + case M_GUS: + field = DCARD_GUS; + break; + + case M_SB: + field = DCARD_SB; + break; + + case M_PAS: + field = DCARD_PAS; + break; + + case M_WAVE: + field = DCARD_SB; + break; + } + + SaveScreen(); + DrawPup(&idcard); + idcardmenu.startitem = field; + + while(1) + { + SetupMenu(&idcardmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case DCARD_PAS: + newc.d.card = M_PAS; + goto func_exit; + + case DCARD_SB: + newc.d.card = M_SB; + goto func_exit; + + case DCARD_GUS: + newc.d.card = M_GUS; + newc.d.midiport = -1; + goto func_exit; + +#ifndef HERETIC + case DCARD_PC: + newc.d.card = M_PC; + newc.d.port = -1; + newc.d.midiport = -1; + newc.d.irq = -1; + newc.d.dma = -1; + goto func_exit; +#endif + case DCARD_NONE: + newc.d.card = M_NONE; + newc.d.port = -1; + newc.d.midiport = -1; + newc.d.irq = -1; + newc.d.dma = -1; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + +// +// Choose SB DMA channel +// +enum +{ + SB_DMA_0, + SB_DMA_1, + SB_DMA_3, + SB_DMA_5, + SB_DMA_6, + SB_DMA_7, + SB_DMA_MAX +}; + +item_t sbdmaitems[]= +{ + {SB_DMA_0, 35,9,7, -1,-1}, + {SB_DMA_1, 35,10,7, -1,-1}, + {SB_DMA_3, 35,11,7, -1,-1}, + {SB_DMA_5, 35,12,7, -1,-1}, + {SB_DMA_6, 35,13,7, -1,-1}, + {SB_DMA_7, 35,14,7, -1,-1} +}; + +menu_t sbdmamenu= +{ + &sbdmaitems[0], + SB_DMA_5, + SB_DMA_MAX, + 0x7f +}; + +int ChooseSbDma (DMXCARD * card) +{ + short key; + short field; + int rval = 0; + + switch ( card->dma ) + { + case 0: + field = SB_DMA_0; + break; + + default: + case 1: + field = SB_DMA_1; + break; + + case 3: + field = SB_DMA_3; + break; + + case 5: + field = SB_DMA_5; + break; + + case 6: + field = SB_DMA_6; + break; + + case 7: + field = SB_DMA_7; + break; + } + + SaveScreen(); + DrawPup(&sbdma); + sbdmamenu.startitem = field; + + while(1) + { + SetupMenu(&sbdmamenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case SB_DMA_0: + card->dma = 0; + goto func_exit; + + case SB_DMA_1: + card->dma = 1; + goto func_exit; + + case SB_DMA_3: + card->dma = 3; + goto func_exit; + + case SB_DMA_5: + card->dma = 5; + goto func_exit; + + case SB_DMA_6: + card->dma = 6; + goto func_exit; + + case SB_DMA_7: + card->dma = 7; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + +// +// Choose SB IRQ channel +// + +enum { SB_IRQ_2, SB_IRQ_5, SB_IRQ_7, SB_IRQ_MAX }; +item_t sbirqitems[]= +{ + {SB_IRQ_2, 35,11,7, -1,-1}, + {SB_IRQ_5, 35,12,7, -1,-1}, + {SB_IRQ_7, 35,13,7, -1,-1} +}; +menu_t sbirqmenu= +{ + &sbirqitems[0], + SB_IRQ_5, + SB_IRQ_MAX, + 0x7f +}; + +int ChooseSbIrq (DMXCARD * card) +{ + short field; + short key; + int rval = 0; + + if ( card->irq > 8 ) + ErrorWindow(&irqerr); + + switch ( card->irq ) + { + case 2: + field = SB_IRQ_2; + break; + + default: + case 5: + field = SB_IRQ_5; + break; + + case 7: + field = SB_IRQ_7; + break; + + } + + SaveScreen(); + DrawPup(&sbirq); + sbirqmenu.startitem = field; + + while(1) + { + SetupMenu(&sbirqmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case SB_IRQ_2: + card->irq = 2; + goto func_exit; + + case SB_IRQ_5: + card->irq = 5; + goto func_exit; + + case SB_IRQ_7: + card->irq = 7; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + +// +// Choose # of simultaneous digital channels +// + +enum {DIG_1,DIG_2,DIG_3,DIG_4,DIG_5,DIG_6,DIG_7,DIG_8,DIG_MAX}; +item_t numdigitems[]= +{ + {DIG_1, 36,8,7, -1,-1}, + {DIG_2, 36,9,7, -1,-1}, + {DIG_3, 36,10,7, -1,-1}, + {DIG_4, 36,11,7, -1,-1}, + {DIG_5, 36,12,7, -1,-1}, + {DIG_6, 36,13,7, -1,-1}, + {DIG_7, 36,14,7, -1,-1}, + {DIG_8, 36,15,7, -1,-1} +}; +menu_t numdigmenu= +{ + &numdigitems[0], + DIG_4, + DIG_MAX, + 0x7f +}; + +int ChooseNumDig (void) +{ + short key; + short field; + int rval = 0; + + SaveScreen(); + DrawPup(&numdig); + + // DEFAULT FIELD ======================================== + + switch ( newc.numdig ) + { + default: + field = DIG_4; + break; + + case 1: + field = DIG_1; + break; + + case 2: + field = DIG_2; + break; + + case 3: + field = DIG_3; + break; + + case 4: + field = DIG_4; + break; + + case 5: + field = DIG_5; + break; + + case 6: + field = DIG_6; + break; + + case 7: + field = DIG_7; + break; + + case 8: + field = DIG_8; + break; + } + numdigmenu.startitem = field; + + while(1) + { + SetupMenu(&numdigmenu); + field = GetMenuInput(); + key = menukey; + switch ( key ) + { + case KEY_ESC: + rval = -1; + goto func_exit; + + case KEY_ENTER: + case KEY_F10: + switch ( field ) + { + case DIG_1: + newc.numdig = 1; + goto func_exit; + + case DIG_2: + newc.numdig = 2; + goto func_exit; + + case DIG_3: + newc.numdig = 3; + goto func_exit; + + case DIG_4: + newc.numdig = 4; + goto func_exit; + + case DIG_5: + newc.numdig = 5; + goto func_exit; + + case DIG_6: + newc.numdig = 6; + goto func_exit; + + case DIG_7: + newc.numdig = 7; + goto func_exit; + + case DIG_8: + newc.numdig = 8; + goto func_exit; + + default: + break; + } + break; + } + } + + func_exit: + + RestoreScreen(); + return ( rval ); +} + +// +// Setup Sound Effects card +// +int SetupFX (void) +{ + if ( ChooseFxCard() == -1 ) return ( -1 ); + + DrawCurrentConfig(); + + switch ( newc.d.card ) + { + default: + savefx = FALSE; + break; + + case M_NONE: + savefx = TRUE; + break; + +#ifndef HERETIC + case M_PC: + savefx = TRUE; + break; +#endif + case M_ADLIB: + savefx = TRUE; + break; + + case M_PAS: + case M_GUS: + ChooseNumDig(); + savefx = TRUE; + break; + + case M_WAVE: + case M_SB: + if ( ChooseSbPort ( &newc.d ) == -1 ) return ( -1 ); + if ( ChooseSbIrq ( &newc.d ) == -1 ) return ( -1 ); + if ( ChooseSbDma ( &newc.d ) == -1 ) return ( -1 ); + ChooseNumDig(); + savefx = TRUE; + break; + + case M_CANVAS: + newc.d.midiport = 0x330; + if ( ChooseMidiPort ( &newc.d ) == -1 ) return ( -1 ); + savefx = TRUE; + break; + + case M_GMIDI: + if ( ChooseMidiPort ( &newc.d ) == -1 ) return ( -1 ); + savefx = TRUE; + break; + } + return 0; +} + diff --git a/SFX.OBJ b/SFX.OBJ new file mode 100644 index 0000000..6ea2023 Binary files /dev/null and b/SFX.OBJ differ diff --git a/STRIFE.CFG b/STRIFE.CFG new file mode 100644 index 0000000..79fb5cc --- /dev/null +++ b/STRIFE.CFG @@ -0,0 +1,58 @@ +mouse_sensitivity 5 +sfx_volume 8 +music_volume 8 +show_messages 1 +key_right 77 +key_left 75 +key_up 72 +key_down 80 +key_strafeleft 51 +key_straferight 52 +key_fire 29 +key_use 57 +key_strafe 56 +key_speed 54 +key_lookdown 83 +key_lookup 81 +key_invleft 26 +key_invright 27 +key_useHealth 35 +key_invUse 28 +key_invDrop 71 +key_invHome 71 +key_invEnd 79 +key_invPop 44 +key_invquery 16 +key_jump 30 +use_mouse 1 +mouseb_fire 0 +mouseb_strafe 1 +mouseb_forward 2 +use_joystick 0 +joyb_fire 0 +joyb_strafe 1 +joyb_use 3 +joyb_speed 2 +screenblocks 9 +detaillevel 0 +showmessages 1 +comport 1 +snd_channels 3 +snd_musicdevice 3 +snd_sfxdevice 3 +snd_sbport 576 +snd_sbirq 5 +snd_sbdma 1 +snd_mport 816 +usegamma 0 +chatmacro0 "no macro" +chatmacro1 "no macro" +chatmacro2 "no macro" +chatmacro3 "no macro" +chatmacro4 "no macro" +chatmacro5 "no macro" +chatmacro6 "no macro" +chatmacro7 "no macro" +chatmacro8 "no macro" +chatmacro9 "no macro" + 0 diff --git a/TD.DSW b/TD.DSW new file mode 100644 index 0000000..dd2d751 Binary files /dev/null and b/TD.DSW differ diff --git a/TD.TR b/TD.TR new file mode 100644 index 0000000..843d161 Binary files /dev/null and b/TD.TR differ diff --git a/TD.~DE b/TD.~DE new file mode 100644 index 0000000..23556ba Binary files /dev/null and b/TD.~DE differ diff --git a/TDCONFIG.TD b/TDCONFIG.TD new file mode 100644 index 0000000..e2b403c Binary files /dev/null and b/TDCONFIG.TD differ diff --git a/TDCONFIG.TDW b/TDCONFIG.TDW new file mode 100644 index 0000000..3dbd16a Binary files /dev/null and b/TDCONFIG.TDW differ diff --git a/TDW.TRW b/TDW.TRW new file mode 100644 index 0000000..843d161 Binary files /dev/null and b/TDW.TRW differ diff --git a/WARP.BAK b/WARP.BAK new file mode 100644 index 0000000..22160d3 --- /dev/null +++ b/WARP.BAK @@ -0,0 +1,228 @@ +// +// Warp to level +// +#include + +#include "main.h" +#include "keys.h" + +int respawn; +int nomonsters; +int deathmatch2; + +enum +{ + W_NOMON, + #ifndef HERETIC + W_DM2, + #endif + W_RESPAWN, + + E1M1, + E1M2, + E1M3, + E1M4, + E1M5, + E1M6, + E1M7, + E1M8, + E1M9, + #ifdef DOOM2 + E1M10, + #endif + + E2M1, + E2M2, + E2M3, + E2M4, + E2M5, + E2M6, + E2M7, + E2M8, + E2M9, + #ifdef DOOM2 + E2M10, + #endif + + E3M1, + E3M2, + E3M3, + E3M4, + E3M5, + E3M6, + E3M7, + E3M8, + E3M9, + #ifdef DOOM2 + E3M10, + #endif + + W_MAX +}; + +item_t cwarpitems[]= +{ + #ifdef HERETIC + {W_NOMON, 35,6,15, -1,-1}, + {W_RESPAWN, 35,7,15, -1,-1}, + #else + {W_NOMON, 35,5,15, -1,-1}, + {W_DM2, 35,7,15, -1,-1}, + {W_RESPAWN, 35,6,15, -1,-1}, + #endif + + {E1M1, 31,9,6, -1,E2M1}, + {E1M2, 31,10,6, -1,E2M2}, + {E1M3, 31,11,6, -1,E2M3}, + {E1M4, 31,12,6, -1,E2M4}, + {E1M5, 31,13,6, -1,E2M5}, + {E1M6, 31,14,6, -1,E2M6}, + {E1M7, 31,15,6, -1,E2M7}, + {E1M8, 31,16,6, -1,E2M8}, + {E1M9, 31,17,6, -1,E2M9}, +#ifdef DOOM2 + {E1M10, 31,18,6, -1,E2M10}, +#endif + + {E2M1, 38,9,6, E1M1,E3M1,W_RESPAWN}, + {E2M2, 38,10,6,E1M2,E3M2}, + {E2M3, 38,11,6,E1M3,E3M3}, + {E2M4, 38,12,6,E1M4,E3M4}, + {E2M5, 38,13,6,E1M5,E3M5}, + {E2M6, 38,14,6,E1M6,E3M6}, + {E2M7, 38,15,6,E1M7,E3M7}, + {E2M8, 38,16,6, E1M8,E3M8}, + {E2M9, 38,17,6, E1M9,E3M9}, +#ifdef DOOM2 + {E2M10, 38,18,6, E1M10,E3M10}, +#endif + + {E3M1, 45,9,6, E2M1,-1,W_RESPAWN}, + {E3M2, 45,10,6, E2M2,-1}, + {E3M3, 45,11,6, E2M3,-1}, + {E3M4, 45,12,6, E2M4,-1}, + {E3M5, 45,13,6, E2M5,-1}, + {E3M6, 45,14,6, E2M6,-1}, + {E3M7, 45,15,6, E2M7,-1}, + {E3M8, 45,16,6, E2M8,-1}, + {E3M9, 45,17,6, E2M9,-1}, +#ifdef DOOM2 + {E3M10, 45,18,6, E2M10,-1} +#endif +}; + +menu_t cwarpmenu= +{ + &cwarpitems[0], + W_NOMON, + W_MAX, + 0x7f +}; + +unsigned WarpTime(void) +{ + int e; + int l; + short key; + short field; + int exit; + + + SaveScreen(); + DrawPup(&cwarp); + + SetMark(&cwarpitems[W_RESPAWN],respawn); + SetMark(&cwarpitems[W_NOMON],nomonsters); + #ifndef HERETIC + SetMark(&cwarpitems[W_DM2],deathmatch2); + #endif + + exit = 0; + + while(1) + { + SetupMenu(&cwarpmenu); + field = GetMenuInput(); + key = menukey; + + switch(key) + { + case KEY_ESC: + RestoreScreen(); + return 0; + + case KEY_F10: + case KEY_ENTER: + + switch(field) + { + case E1M1: e=1;l=1; exit=1; break; + case E1M2: e=1;l=2; exit=1; break; + case E1M3: e=1;l=3; exit=1; break; + case E1M4: e=1;l=4; exit=1; break; + case E1M5: e=1;l=5; exit=1; break; + case E1M6: e=1;l=6; exit=1; break; + case E1M7: e=1;l=7; exit=1; break; + case E1M8: e=1;l=8; exit=1; break; + case E1M9: e=1;l=9; exit=1; break; + #ifdef DOOM2 + case E1M10: e=1;l=10; exit=1; break; + #endif + + case E2M1: e=2;l=1; exit=1; break; + case E2M2: e=2;l=2; exit=1; break; + case E2M3: e=2;l=3; exit=1; break; + case E2M4: e=2;l=4; exit=1; break; + case E2M5: e=2;l=5; exit=1; break; + case E2M6: e=2;l=6; exit=1; break; + case E2M7: e=2;l=7; exit=1; break; + case E2M8: e=2;l=8; exit=1; break; + case E2M9: e=2;l=9; exit=1; break; + #ifdef DOOM2 + case E2M10: e=2;l=10; exit=1; break; + #endif + + case E3M1: e=3;l=1; exit=1; break; + case E3M2: e=3;l=2; exit=1; break; + case E3M3: e=3;l=3; exit=1; break; + case E3M4: e=3;l=4; exit=1; break; + case E3M5: e=3;l=5; exit=1; break; + case E3M6: e=3;l=6; exit=1; break; + case E3M7: e=3;l=7; exit=1; break; + case E3M8: e=3;l=8; exit=1; break; + case E3M9: e=3;l=9; exit=1; break; + #ifdef DOOM2 + case E3M10: e=3;l=10; exit=1; break; + #endif + + case W_RESPAWN: + respawn ^= 1; + SetMark(&cwarpitems[W_RESPAWN],respawn); + break; + + case W_NOMON: + nomonsters ^= 1; + SetMark(&cwarpitems[W_NOMON],nomonsters); + break; + #ifndef HERETIC + case W_DM2: + deathmatch2 ^= 1; + SetMark(&cwarpitems[W_DM2],deathmatch2); + break; + #endif + } + + if (exit) + { + RestoreScreen(); + #ifdef DOOM2 + return ((e-1)*10+l); + #else + return (e<<8)+l; + #endif + } + } + } +} + + diff --git a/WARP.C b/WARP.C new file mode 100644 index 0000000..6b7196d --- /dev/null +++ b/WARP.C @@ -0,0 +1,228 @@ +// +// Warp to level +// +#include + +#include "main.h" +#include "keys.h" + +int respawn; +int nomonsters; +int deathmatch2; + +enum +{ + W_NOMON, + #ifndef HERETIC + W_DM2, + #endif + W_RESPAWN, + + E1M1, + E1M2, + E1M3, + E1M4, + E1M5, + E1M6, + E1M7, + E1M8, + E1M9, + #ifdef DOOM2 + E1M10, + #endif + + E2M1, + E2M2, + E2M3, + E2M4, + E2M5, + E2M6, + E2M7, + E2M8, + E2M9, + #ifdef DOOM2 + E2M10, + #endif + + E3M1, + E3M2, + E3M3, + E3M4, + E3M5, + E3M6, + E3M7, + E3M8, + E3M9, + #ifdef DOOM2 + E3M10, + #endif + + W_MAX +}; + +item_t cwarpitems[]= +{ + #ifdef HERETIC + {W_NOMON, 35,6,15, -1,-1}, + {W_RESPAWN, 35,7,15, -1,-1}, + #else + {W_NOMON, 35,5,15, -1,-1}, + {W_DM2, 35,6,15, -1,-1}, + {W_RESPAWN, 35,7,15, -1,-1}, + #endif + + {E1M1, 31,9,6, -1,E2M1}, + {E1M2, 31,10,6, -1,E2M2}, + {E1M3, 31,11,6, -1,E2M3}, + {E1M4, 31,12,6, -1,E2M4}, + {E1M5, 31,13,6, -1,E2M5}, + {E1M6, 31,14,6, -1,E2M6}, + {E1M7, 31,15,6, -1,E2M7}, + {E1M8, 31,16,6, -1,E2M8}, + {E1M9, 31,17,6, -1,E2M9}, +#ifdef DOOM2 + {E1M10, 31,18,6, -1,E2M10}, +#endif + + {E2M1, 38,9,6, E1M1,E3M1,W_RESPAWN}, + {E2M2, 38,10,6,E1M2,E3M2}, + {E2M3, 38,11,6,E1M3,E3M3}, + {E2M4, 38,12,6,E1M4,E3M4}, + {E2M5, 38,13,6,E1M5,E3M5}, + {E2M6, 38,14,6,E1M6,E3M6}, + {E2M7, 38,15,6,E1M7,E3M7}, + {E2M8, 38,16,6, E1M8,E3M8}, + {E2M9, 38,17,6, E1M9,E3M9}, +#ifdef DOOM2 + {E2M10, 38,18,6, E1M10,E3M10}, +#endif + + {E3M1, 45,9,6, E2M1,-1,W_RESPAWN}, + {E3M2, 45,10,6, E2M2,-1}, + {E3M3, 45,11,6, E2M3,-1}, + {E3M4, 45,12,6, E2M4,-1}, + {E3M5, 45,13,6, E2M5,-1}, + {E3M6, 45,14,6, E2M6,-1}, + {E3M7, 45,15,6, E2M7,-1}, + {E3M8, 45,16,6, E2M8,-1}, + {E3M9, 45,17,6, E2M9,-1}, +#ifdef DOOM2 + {E3M10, 45,18,6, E2M10,-1} +#endif +}; + +menu_t cwarpmenu= +{ + &cwarpitems[0], + W_NOMON, + W_MAX, + 0x7f +}; + +unsigned WarpTime(void) +{ + int e; + int l; + short key; + short field; + int exit; + + + SaveScreen(); + DrawPup(&cwarp); + + SetMark(&cwarpitems[W_RESPAWN],respawn); + SetMark(&cwarpitems[W_NOMON],nomonsters); + #ifndef HERETIC + SetMark(&cwarpitems[W_DM2],deathmatch2); + #endif + + exit = 0; + + while(1) + { + SetupMenu(&cwarpmenu); + field = GetMenuInput(); + key = menukey; + + switch(key) + { + case KEY_ESC: + RestoreScreen(); + return 0; + + case KEY_F10: + case KEY_ENTER: + + switch(field) + { + case E1M1: e=1;l=1; exit=1; break; + case E1M2: e=1;l=2; exit=1; break; + case E1M3: e=1;l=3; exit=1; break; + case E1M4: e=1;l=4; exit=1; break; + case E1M5: e=1;l=5; exit=1; break; + case E1M6: e=1;l=6; exit=1; break; + case E1M7: e=1;l=7; exit=1; break; + case E1M8: e=1;l=8; exit=1; break; + case E1M9: e=1;l=9; exit=1; break; + #ifdef DOOM2 + case E1M10: e=1;l=10; exit=1; break; + #endif + + case E2M1: e=2;l=1; exit=1; break; + case E2M2: e=2;l=2; exit=1; break; + case E2M3: e=2;l=3; exit=1; break; + case E2M4: e=2;l=4; exit=1; break; + case E2M5: e=2;l=5; exit=1; break; + case E2M6: e=2;l=6; exit=1; break; + case E2M7: e=2;l=7; exit=1; break; + case E2M8: e=2;l=8; exit=1; break; + case E2M9: e=2;l=9; exit=1; break; + #ifdef DOOM2 + case E2M10: e=2;l=10; exit=1; break; + #endif + + case E3M1: e=3;l=1; exit=1; break; + case E3M2: e=3;l=2; exit=1; break; + case E3M3: e=3;l=3; exit=1; break; + case E3M4: e=3;l=4; exit=1; break; + case E3M5: e=3;l=5; exit=1; break; + case E3M6: e=3;l=6; exit=1; break; + case E3M7: e=3;l=7; exit=1; break; + case E3M8: e=3;l=8; exit=1; break; + case E3M9: e=3;l=9; exit=1; break; + #ifdef DOOM2 + case E3M10: e=3;l=10; exit=1; break; + #endif + + case W_RESPAWN: + respawn ^= 1; + SetMark(&cwarpitems[W_RESPAWN],respawn); + break; + + case W_NOMON: + nomonsters ^= 1; + SetMark(&cwarpitems[W_NOMON],nomonsters); + break; + #ifndef HERETIC + case W_DM2: + deathmatch2 ^= 1; + SetMark(&cwarpitems[W_DM2],deathmatch2); + break; + #endif + } + + if (exit) + { + RestoreScreen(); + #ifdef DOOM2 + return ((e-1)*10+l); + #else + return (e<<8)+l; + #endif + } + } + } +} + + diff --git a/WARP.OBJ b/WARP.OBJ new file mode 100644 index 0000000..e7a64d0 Binary files /dev/null and b/WARP.OBJ differ