mirror of
https://github.com/id-Software/idsetup.git
synced 2026-03-19 16:39:39 +01:00
The source of the setup program included with DOOM, Final DOOM, Strife, etc.
This commit is contained in:
1149
CONFIG.BAK
Normal file
1149
CONFIG.BAK
Normal file
File diff suppressed because it is too large
Load Diff
BIN
CONFIG.OBJ
Normal file
BIN
CONFIG.OBJ
Normal file
Binary file not shown.
85
CONTROL.BAK
Normal file
85
CONTROL.BAK
Normal file
@@ -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 );
|
||||
}
|
||||
|
||||
87
CONTROL.C
Normal file
87
CONTROL.C
Normal file
@@ -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 );
|
||||
}
|
||||
|
||||
BIN
CONTROL.OBJ
Normal file
BIN
CONTROL.OBJ
Normal file
Binary file not shown.
57
DEBUG.BAK
Normal file
57
DEBUG.BAK
Normal file
@@ -0,0 +1,57 @@
|
||||
#include <stdlib.h>
|
||||
#include <conio.h>
|
||||
#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
|
||||
57
DEBUG.C
Normal file
57
DEBUG.C
Normal file
@@ -0,0 +1,57 @@
|
||||
#include <stdlib.h>
|
||||
#include <conio.h>
|
||||
#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
|
||||
262
DEFAULT.BAK
Normal file
262
DEFAULT.BAK
Normal file
@@ -0,0 +1,262 @@
|
||||
//
|
||||
// Save & Load defaults
|
||||
//
|
||||
#include <dir.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <io.h>
|
||||
#include <bios.h>
|
||||
|
||||
#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<numdefaults ; i++)
|
||||
if (!strncmp(defaults[i].name,"chatmacro",9))
|
||||
{
|
||||
int v = defaults[i].name[9] - '0';
|
||||
fprintf (f,"%s\t\t\"%s\"\n",defaults[i].name, chatmacros[v]);
|
||||
}
|
||||
else
|
||||
fprintf (f,"%s\t\t%i\n",defaults[i].name, *defaults[i].location);
|
||||
|
||||
fclose (f);
|
||||
}
|
||||
|
||||
int CheckParm(char *string)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 1;i < myargc;i++)
|
||||
if (!strcmp(myargv[i],string))
|
||||
return i;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
==============
|
||||
=
|
||||
= M_LoadDefaults
|
||||
=
|
||||
==============
|
||||
*/
|
||||
int M_LoadDefaults (void)
|
||||
{
|
||||
int i;
|
||||
FILE *f;
|
||||
char def[80];
|
||||
char strparm[50];
|
||||
int parm;
|
||||
char macro[40];
|
||||
|
||||
//
|
||||
// set everything to base values
|
||||
//
|
||||
numdefaults = sizeof(defaults)/sizeof(defaults[0]);
|
||||
for (i=0 ; i<numdefaults ; i++)
|
||||
if (!strncmp(defaults[i].name,"chatmacro",9))
|
||||
strcpy((char *)defaults[i].location,"no macro");
|
||||
else
|
||||
*defaults[i].location = defaults[i].defaultvalue;
|
||||
|
||||
cdrom = 0;
|
||||
if (CheckParm("-cdrom"))
|
||||
{
|
||||
mkdir(DEFAULTPATH);
|
||||
defaultfile = DEFAULTPATH"\\"DEFAULTNAME;
|
||||
cdrom = 1;
|
||||
}
|
||||
else
|
||||
defaultfile = DEFAULTNAME; // hard-coded path GONE!
|
||||
|
||||
i = CheckParm("-config");
|
||||
if (i)
|
||||
defaultfile = myargv[i+1];
|
||||
|
||||
//
|
||||
// read the file in, overriding any set defaults
|
||||
//
|
||||
f = fopen (defaultfile, "r");
|
||||
if (!f)
|
||||
return(0); // no overrides
|
||||
|
||||
while (!feof(f))
|
||||
{
|
||||
fscanf ( f, "%79s %[^\n]", def, strparm );
|
||||
|
||||
macro[0] = 0;
|
||||
if (!strncmp(def,"chatmacro",9))
|
||||
sscanf(strparm+1,"%[^\"]",macro);
|
||||
else
|
||||
if (strparm[0] == '0' && strparm[1] == 'x')
|
||||
sscanf(strparm+2, "%x", &parm);
|
||||
else
|
||||
sscanf(strparm, "%i", &parm);
|
||||
|
||||
for (i=0 ; i<numdefaults ; i++)
|
||||
if (!strcmp(def, defaults[i].name) )
|
||||
{
|
||||
if (!strncmp(def,"chatmacro",9))
|
||||
strcpy((char *)defaults[i].location,macro);
|
||||
else
|
||||
*defaults[i].location = parm;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fclose (f);
|
||||
|
||||
newc.d.port = newc.m.port;
|
||||
|
||||
if ( usemouse )
|
||||
newc.control = C_MOUSE;
|
||||
else if ( usejoystick )
|
||||
newc.control = C_JOYSTICK;
|
||||
else
|
||||
newc.control = C_KEY;
|
||||
|
||||
return(1);
|
||||
}
|
||||
|
||||
262
DEFAULT.C
Normal file
262
DEFAULT.C
Normal file
@@ -0,0 +1,262 @@
|
||||
//
|
||||
// Save & Load defaults
|
||||
//
|
||||
#include <dir.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <io.h>
|
||||
#include <bios.h>
|
||||
|
||||
#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<numdefaults ; i++)
|
||||
if (!strncmp(defaults[i].name,"chatmacro",9))
|
||||
{
|
||||
int v = defaults[i].name[9] - '0';
|
||||
fprintf (f,"%s\t\t\"%s\"\n",defaults[i].name, chatmacros[v]);
|
||||
}
|
||||
else
|
||||
fprintf (f,"%s\t\t%i\n",defaults[i].name, *defaults[i].location);
|
||||
|
||||
fclose (f);
|
||||
}
|
||||
|
||||
int CheckParm(char *string)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 1;i < myargc;i++)
|
||||
if (!strcmp(myargv[i],string))
|
||||
return i;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
==============
|
||||
=
|
||||
= M_LoadDefaults
|
||||
=
|
||||
==============
|
||||
*/
|
||||
int M_LoadDefaults (void)
|
||||
{
|
||||
int i;
|
||||
FILE *f;
|
||||
char def[80];
|
||||
char strparm[50];
|
||||
int parm;
|
||||
char macro[40];
|
||||
|
||||
//
|
||||
// set everything to base values
|
||||
//
|
||||
numdefaults = sizeof(defaults)/sizeof(defaults[0]);
|
||||
for (i=0 ; i<numdefaults ; i++)
|
||||
if (!strncmp(defaults[i].name,"chatmacro",9))
|
||||
strcpy((char *)defaults[i].location,"no macro");
|
||||
else
|
||||
*defaults[i].location = defaults[i].defaultvalue;
|
||||
|
||||
cdrom = 0;
|
||||
if (CheckParm("-cdrom"))
|
||||
{
|
||||
mkdir(DEFAULTPATH);
|
||||
defaultfile = DEFAULTPATH"\\"DEFAULTNAME;
|
||||
cdrom = 1;
|
||||
}
|
||||
else
|
||||
defaultfile = DEFAULTNAME; // hard-coded path GONE!
|
||||
|
||||
i = CheckParm("-config");
|
||||
if (i)
|
||||
defaultfile = myargv[i+1];
|
||||
|
||||
//
|
||||
// read the file in, overriding any set defaults
|
||||
//
|
||||
f = fopen (defaultfile, "r");
|
||||
if (!f)
|
||||
return(0); // no overrides
|
||||
|
||||
while (!feof(f))
|
||||
{
|
||||
fscanf ( f, "%79s %[^\n]", def, strparm );
|
||||
|
||||
macro[0] = 0;
|
||||
if (!strncmp(def,"chatmacro",9))
|
||||
sscanf(strparm+1,"%[^\"]",macro);
|
||||
else
|
||||
if (strparm[0] == '0' && strparm[1] == 'x')
|
||||
sscanf(strparm+2, "%x", &parm);
|
||||
else
|
||||
sscanf(strparm, "%i", &parm);
|
||||
|
||||
for (i=0 ; i<numdefaults ; i++)
|
||||
if (!strcmp(def, defaults[i].name) )
|
||||
{
|
||||
if (!strncmp(def,"chatmacro",9))
|
||||
strcpy((char *)defaults[i].location,macro);
|
||||
else
|
||||
*defaults[i].location = parm;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fclose (f);
|
||||
|
||||
newc.d.port = newc.m.port;
|
||||
|
||||
if ( usemouse )
|
||||
newc.control = C_MOUSE;
|
||||
else if ( usejoystick )
|
||||
newc.control = C_JOYSTICK;
|
||||
else
|
||||
newc.control = C_KEY;
|
||||
|
||||
return(1);
|
||||
}
|
||||
|
||||
46
DEFAULT.CFG
Normal file
46
DEFAULT.CFG
Normal file
@@ -0,0 +1,46 @@
|
||||
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
|
||||
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 2
|
||||
snd_channels 3
|
||||
snd_musicdevice 7
|
||||
snd_sfxdevice 3
|
||||
snd_sbport 544
|
||||
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
|
||||
262
DEFAULT.C~
Normal file
262
DEFAULT.C~
Normal file
@@ -0,0 +1,262 @@
|
||||
//
|
||||
// Save & Load defaults
|
||||
//
|
||||
#include <dir.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <io.h>
|
||||
#include <bios.h>
|
||||
|
||||
#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<numdefaults ; i++)
|
||||
if (!strncmp(defaults[i].name,"chatmacro",9))
|
||||
{
|
||||
int v = defaults[i].name[9] - '0';
|
||||
fprintf (f,"%s\t\t\"%s\"\n",defaults[i].name, chatmacros[v]);
|
||||
}
|
||||
else
|
||||
fprintf (f,"%s\t\t%i\n",defaults[i].name, *defaults[i].location);
|
||||
|
||||
fclose (f);
|
||||
}
|
||||
|
||||
int CheckParm(char *string)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 1;i < myargc;i++)
|
||||
if (!strcmp(myargv[i],string))
|
||||
return i;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
==============
|
||||
=
|
||||
= M_LoadDefaults
|
||||
=
|
||||
==============
|
||||
*/
|
||||
int M_LoadDefaults (void)
|
||||
{
|
||||
int i;
|
||||
FILE *f;
|
||||
char def[80];
|
||||
char strparm[50];
|
||||
int parm;
|
||||
char macro[40];
|
||||
|
||||
//
|
||||
// set everything to base values
|
||||
//
|
||||
numdefaults = sizeof(defaults)/sizeof(defaults[0]);
|
||||
for (i=0 ; i<numdefaults ; i++)
|
||||
if (!strncmp(defaults[i].name,"chatmacro",9))
|
||||
strcpy((char *)defaults[i].location,"no macro");
|
||||
else
|
||||
*defaults[i].location = defaults[i].defaultvalue;
|
||||
|
||||
cdrom = 0;
|
||||
if (CheckParm("-cdrom"))
|
||||
{
|
||||
mkdir(DEFAULTPATH);
|
||||
defaultfile = DEFAULTPATH"\\"DEFAULTNAME;
|
||||
cdrom = 1;
|
||||
}
|
||||
else
|
||||
defaultfile = DEFAULTNAME; // hard-coded path GONE!
|
||||
|
||||
i = CheckParm("-config");
|
||||
if (i)
|
||||
defaultfile = myargv[i+1];
|
||||
|
||||
//
|
||||
// read the file in, overriding any set defaults
|
||||
//
|
||||
f = fopen (defaultfile, "r");
|
||||
if (!f)
|
||||
return(0); // no overrides
|
||||
|
||||
while (!feof(f))
|
||||
{
|
||||
fscanf ( f, "%79s %[^\n]", def, strparm );
|
||||
|
||||
macro[0] = 0;
|
||||
if (!strncmp(def,"chatmacro",9))
|
||||
sscanf(strparm+1,"%[^\"]",macro);
|
||||
else
|
||||
if (strparm[0] == '0' && strparm[1] == 'x')
|
||||
sscanf(strparm+2, "%x", &parm);
|
||||
else
|
||||
sscanf(strparm, "%i", &parm);
|
||||
|
||||
for (i=0 ; i<numdefaults ; i++)
|
||||
if (!strcmp(def, defaults[i].name) )
|
||||
{
|
||||
if (!strncmp(def,"chatmacro",9))
|
||||
strcpy((char *)defaults[i].location,macro);
|
||||
else
|
||||
*defaults[i].location = parm;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fclose (f);
|
||||
|
||||
newc.d.port = newc.m.port;
|
||||
|
||||
if ( usemouse )
|
||||
newc.control = C_MOUSE;
|
||||
else if ( usejoystick )
|
||||
newc.control = C_JOYSTICK;
|
||||
else
|
||||
newc.control = C_KEY;
|
||||
|
||||
return(1);
|
||||
}
|
||||
|
||||
13
DEFAULT.H
Normal file
13
DEFAULT.H
Normal file
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// DEFAULT.H
|
||||
//
|
||||
typedef struct
|
||||
{
|
||||
char *name;
|
||||
int *location;
|
||||
int defaultvalue;
|
||||
} default_t;
|
||||
|
||||
void M_SaveDefaults (void);
|
||||
int CheckParm(char *string);
|
||||
int M_LoadDefaults (void);
|
||||
BIN
DEFAULT.OBJ
Normal file
BIN
DEFAULT.OBJ
Normal file
Binary file not shown.
54
HERETIC.CFG
Normal file
54
HERETIC.CFG
Normal file
@@ -0,0 +1,54 @@
|
||||
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_flydown 82
|
||||
key_flycenter 71
|
||||
key_flyup 73
|
||||
key_lookdown 83
|
||||
key_lookcenter 79
|
||||
key_lookup 81
|
||||
key_invleft 26
|
||||
key_invright 27
|
||||
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 2
|
||||
snd_channels 6
|
||||
snd_musicdevice 7
|
||||
snd_sfxdevice 3
|
||||
snd_sbport 544
|
||||
snd_sbirq 5
|
||||
snd_sbdma 1
|
||||
snd_mport 816
|
||||
usegamma 0
|
||||
chatmacro0 "Fuck off, asshole!"
|
||||
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
|
||||
102
KEYS.BAK
Normal file
102
KEYS.BAK
Normal file
@@ -0,0 +1,102 @@
|
||||
// SCAN CODES
|
||||
#define SC_NONE 0x0000
|
||||
#define SC_BAD 0x00ff
|
||||
#define SC_ESC 0x0001
|
||||
#define SC_F1 0x003b
|
||||
#define SC_F2 0x003c
|
||||
#define SC_F3 0x003d
|
||||
#define SC_F4 0x003e
|
||||
#define SC_F5 0x003f
|
||||
#define SC_F6 0x0040
|
||||
#define SC_F7 0x0041
|
||||
#define SC_F8 0x0042
|
||||
#define SC_F9 0x0043
|
||||
#define SC_F10 0x0044
|
||||
#define SC_F11 0x0057
|
||||
#define SC_F12 0x0058
|
||||
#define SC_TAB 0x000f
|
||||
#define SC_SLASH 0x002b
|
||||
#define SC_CAPS_LOCK 0x003a
|
||||
#define SC_LEFT_SHIFT 0x002a
|
||||
#define SC_CTRL 0x001d
|
||||
#define SC_ALT 0x0038
|
||||
#define SC_SCROLL_LOCK 0x0046
|
||||
#define SC_BACKSPACE 0x000e
|
||||
#define SC_ENTER 0x001c
|
||||
#define SC_RIGHT_SHIFT 0x0036
|
||||
#define SC_RIGHT_ALT 0xe038
|
||||
#define SC_RIGHT_CTRL 0xe010
|
||||
#define SC_EXT_INSERT 0xe052
|
||||
#define SC_EXT_DELETE 0xe053
|
||||
#define SC_EXT_HOME 0xe047
|
||||
#define SC_EXT_END 0xe04f
|
||||
#define SC_EXT_PAGEUP 0xe049
|
||||
#define SC_EXT_PAGEDN 0xe051
|
||||
#define SC_EXT_UP 0xe048
|
||||
#define SC_EXT_DN 0xe050
|
||||
#define SC_EXT_LEFT 0xe04b
|
||||
#define SC_EXT_RIGHT 0xe04d
|
||||
#define SC_EXT_ENTER 0xe01c
|
||||
#define SC_NUMLOCK 0x0045
|
||||
#define SC_INSERT 0x0052
|
||||
#define SC_DELETE 0x0053
|
||||
#define SC_HOME 0x0047
|
||||
#define SC_END 0x004f
|
||||
#define SC_PAGEUP 0x0049
|
||||
#define SC_PAGEDN 0x0051
|
||||
#ifdef STRIFE
|
||||
#define SC_ENTER 0x001c
|
||||
#define SC_BS 0x000e
|
||||
#endif
|
||||
#define SC_UP 0x0048
|
||||
#define SC_DOWN 0x0050
|
||||
#define SC_LEFT 0x004b
|
||||
#define SC_RIGHT 0x004d
|
||||
#define SC_1 0x0002
|
||||
#define SC_2 0x0003
|
||||
#define SC_3 0x0004
|
||||
#define SC_4 0x0005
|
||||
#define SC_5 0x0006
|
||||
#define SC_6 0x0007
|
||||
#define SC_7 0x0008
|
||||
#define SC_8 0x0009
|
||||
#define SC_9 0x000a
|
||||
#define SC_0 0x000b
|
||||
#define SC_Q 0x0010
|
||||
#define SC_W 0x0011
|
||||
#define SC_E 0x0012
|
||||
#define SC_R 0x0013
|
||||
#define SC_T 0x0014
|
||||
#define SC_Y 0x0015
|
||||
#define SC_U 0x0016
|
||||
#define SC_I 0x0017
|
||||
#define SC_O 0x0018
|
||||
#define SC_P 0x0019
|
||||
#define SC_A 0x001e
|
||||
#define SC_S 0x001f
|
||||
#define SC_D 0x0020
|
||||
#define SC_F 0x0021
|
||||
#define SC_G 0x0022
|
||||
#define SC_H 0x0023
|
||||
#define SC_J 0x0024
|
||||
#define SC_K 0x0025
|
||||
#define SC_L 0x0026
|
||||
#define SC_Z 0x002c
|
||||
#define SC_X 0x002d
|
||||
#define SC_C 0x002e
|
||||
#define SC_V 0x002f
|
||||
#define SC_B 0x0030
|
||||
#define SC_N 0x0031
|
||||
#define SC_M 0x0032
|
||||
#define SC_SPACE 0x0039
|
||||
#define SC_RELEASE 0x0080
|
||||
#define SC_COMMA 0x0033
|
||||
#define SC_PERIOD 0x0034
|
||||
|
||||
// ASCII KEYCODES
|
||||
#define KEY_ESC 0x1b
|
||||
#define KEY_F1 0x3b
|
||||
#define KEY_F2 0x3c
|
||||
#define KEY_F10 0x44
|
||||
#define KEY_ENTER 0x0d
|
||||
|
||||
98
KEYS.H
Normal file
98
KEYS.H
Normal file
@@ -0,0 +1,98 @@
|
||||
// SCAN CODES
|
||||
#define SC_NONE 0x0000
|
||||
#define SC_BAD 0x00ff
|
||||
#define SC_ESC 0x0001
|
||||
#define SC_F1 0x003b
|
||||
#define SC_F2 0x003c
|
||||
#define SC_F3 0x003d
|
||||
#define SC_F4 0x003e
|
||||
#define SC_F5 0x003f
|
||||
#define SC_F6 0x0040
|
||||
#define SC_F7 0x0041
|
||||
#define SC_F8 0x0042
|
||||
#define SC_F9 0x0043
|
||||
#define SC_F10 0x0044
|
||||
#define SC_F11 0x0057
|
||||
#define SC_F12 0x0058
|
||||
#define SC_TAB 0x000f
|
||||
#define SC_SLASH 0x002b
|
||||
#define SC_CAPS_LOCK 0x003a
|
||||
#define SC_LEFT_SHIFT 0x002a
|
||||
#define SC_CTRL 0x001d
|
||||
#define SC_ALT 0x0038
|
||||
#define SC_SCROLL_LOCK 0x0046
|
||||
#define SC_BACKSPACE 0x000e
|
||||
#define SC_ENTER 0x001c
|
||||
#define SC_RIGHT_SHIFT 0x0036
|
||||
#define SC_RIGHT_ALT 0xe038
|
||||
#define SC_RIGHT_CTRL 0xe010
|
||||
#define SC_EXT_INSERT 0xe052
|
||||
#define SC_EXT_DELETE 0xe053
|
||||
#define SC_EXT_HOME 0xe047
|
||||
#define SC_EXT_END 0xe04f
|
||||
#define SC_EXT_PAGEUP 0xe049
|
||||
#define SC_EXT_PAGEDN 0xe051
|
||||
#define SC_EXT_UP 0xe048
|
||||
#define SC_EXT_DN 0xe050
|
||||
#define SC_EXT_LEFT 0xe04b
|
||||
#define SC_EXT_RIGHT 0xe04d
|
||||
#define SC_EXT_ENTER 0xe01c
|
||||
#define SC_NUMLOCK 0x0045
|
||||
#define SC_INSERT 0x0052
|
||||
#define SC_DELETE 0x0053
|
||||
#define SC_HOME 0x0047
|
||||
#define SC_END 0x004f
|
||||
#define SC_PAGEUP 0x0049
|
||||
#define SC_PAGEDN 0x0051
|
||||
#define SC_UP 0x0048
|
||||
#define SC_DOWN 0x0050
|
||||
#define SC_LEFT 0x004b
|
||||
#define SC_RIGHT 0x004d
|
||||
#define SC_1 0x0002
|
||||
#define SC_2 0x0003
|
||||
#define SC_3 0x0004
|
||||
#define SC_4 0x0005
|
||||
#define SC_5 0x0006
|
||||
#define SC_6 0x0007
|
||||
#define SC_7 0x0008
|
||||
#define SC_8 0x0009
|
||||
#define SC_9 0x000a
|
||||
#define SC_0 0x000b
|
||||
#define SC_Q 0x0010
|
||||
#define SC_W 0x0011
|
||||
#define SC_E 0x0012
|
||||
#define SC_R 0x0013
|
||||
#define SC_T 0x0014
|
||||
#define SC_Y 0x0015
|
||||
#define SC_U 0x0016
|
||||
#define SC_I 0x0017
|
||||
#define SC_O 0x0018
|
||||
#define SC_P 0x0019
|
||||
#define SC_A 0x001e
|
||||
#define SC_S 0x001f
|
||||
#define SC_D 0x0020
|
||||
#define SC_F 0x0021
|
||||
#define SC_G 0x0022
|
||||
#define SC_H 0x0023
|
||||
#define SC_J 0x0024
|
||||
#define SC_K 0x0025
|
||||
#define SC_L 0x0026
|
||||
#define SC_Z 0x002c
|
||||
#define SC_X 0x002d
|
||||
#define SC_C 0x002e
|
||||
#define SC_V 0x002f
|
||||
#define SC_B 0x0030
|
||||
#define SC_N 0x0031
|
||||
#define SC_M 0x0032
|
||||
#define SC_SPACE 0x0039
|
||||
#define SC_RELEASE 0x0080
|
||||
#define SC_COMMA 0x0033
|
||||
#define SC_PERIOD 0x0034
|
||||
|
||||
// ASCII KEYCODES
|
||||
#define KEY_ESC 0x1b
|
||||
#define KEY_F1 0x3b
|
||||
#define KEY_F2 0x3c
|
||||
#define KEY_F10 0x44
|
||||
#define KEY_ENTER 0x0d
|
||||
|
||||
100
KEYS.H~
Normal file
100
KEYS.H~
Normal file
@@ -0,0 +1,100 @@
|
||||
// SCAN CODES
|
||||
#define SC_NONE 0x0000
|
||||
#define SC_BAD 0x00ff
|
||||
#define SC_ESC 0x0001
|
||||
#define SC_F1 0x003b
|
||||
#define SC_F2 0x003c
|
||||
#define SC_F3 0x003d
|
||||
#define SC_F4 0x003e
|
||||
#define SC_F5 0x003f
|
||||
#define SC_F6 0x0040
|
||||
#define SC_F7 0x0041
|
||||
#define SC_F8 0x0042
|
||||
#define SC_F9 0x0043
|
||||
#define SC_F10 0x0044
|
||||
#define SC_F11 0x0057
|
||||
#define SC_F12 0x0058
|
||||
#define SC_TAB 0x000f
|
||||
#define SC_SLASH 0x002b
|
||||
#define SC_CAPS_LOCK 0x003a
|
||||
#define SC_LEFT_SHIFT 0x002a
|
||||
#define SC_CTRL 0x001d
|
||||
#define SC_ALT 0x0038
|
||||
#define SC_SCROLL_LOCK 0x0046
|
||||
#define SC_BACKSPACE 0x000e
|
||||
#define SC_ENTER 0x001c
|
||||
#define SC_RIGHT_SHIFT 0x0036
|
||||
#define SC_RIGHT_ALT 0xe038
|
||||
#define SC_RIGHT_CTRL 0xe010
|
||||
#define SC_EXT_INSERT 0xe052
|
||||
#define SC_EXT_DELETE 0xe053
|
||||
#define SC_EXT_HOME 0xe047
|
||||
#define SC_EXT_END 0xe04f
|
||||
#define SC_EXT_PAGEUP 0xe049
|
||||
#define SC_EXT_PAGEDN 0xe051
|
||||
#define SC_EXT_UP 0xe048
|
||||
#define SC_EXT_DN 0xe050
|
||||
#define SC_EXT_LEFT 0xe04b
|
||||
#define SC_EXT_RIGHT 0xe04d
|
||||
#define SC_EXT_ENTER 0xe01c
|
||||
#define SC_NUMLOCK 0x0045
|
||||
#define SC_INSERT 0x0052
|
||||
#define SC_DELETE 0x0053
|
||||
#define SC_HOME 0x0047
|
||||
#define SC_END 0x004f
|
||||
#define SC_PAGEUP 0x0049
|
||||
#define SC_PAGEDN 0x0051
|
||||
#define SC_ENTER 0x001c
|
||||
#define SC_BS 0x000e
|
||||
#define SC_UP 0x0048
|
||||
#define SC_DOWN 0x0050
|
||||
#define SC_LEFT 0x004b
|
||||
#define SC_RIGHT 0x004d
|
||||
#define SC_1 0x0002
|
||||
#define SC_2 0x0003
|
||||
#define SC_3 0x0004
|
||||
#define SC_4 0x0005
|
||||
#define SC_5 0x0006
|
||||
#define SC_6 0x0007
|
||||
#define SC_7 0x0008
|
||||
#define SC_8 0x0009
|
||||
#define SC_9 0x000a
|
||||
#define SC_0 0x000b
|
||||
#define SC_Q 0x0010
|
||||
#define SC_W 0x0011
|
||||
#define SC_E 0x0012
|
||||
#define SC_R 0x0013
|
||||
#define SC_T 0x0014
|
||||
#define SC_Y 0x0015
|
||||
#define SC_U 0x0016
|
||||
#define SC_I 0x0017
|
||||
#define SC_O 0x0018
|
||||
#define SC_P 0x0019
|
||||
#define SC_A 0x001e
|
||||
#define SC_S 0x001f
|
||||
#define SC_D 0x0020
|
||||
#define SC_F 0x0021
|
||||
#define SC_G 0x0022
|
||||
#define SC_H 0x0023
|
||||
#define SC_J 0x0024
|
||||
#define SC_K 0x0025
|
||||
#define SC_L 0x0026
|
||||
#define SC_Z 0x002c
|
||||
#define SC_X 0x002d
|
||||
#define SC_C 0x002e
|
||||
#define SC_V 0x002f
|
||||
#define SC_B 0x0030
|
||||
#define SC_N 0x0031
|
||||
#define SC_M 0x0032
|
||||
#define SC_SPACE 0x0039
|
||||
#define SC_RELEASE 0x0080
|
||||
#define SC_COMMA 0x0033
|
||||
#define SC_PERIOD 0x0034
|
||||
|
||||
// ASCII KEYCODES
|
||||
#define KEY_ESC 0x1b
|
||||
#define KEY_F1 0x3b
|
||||
#define KEY_F2 0x3c
|
||||
#define KEY_F10 0x44
|
||||
#define KEY_ENTER 0x0d
|
||||
|
||||
146
MACROS.BAK
Normal file
146
MACROS.BAK
Normal file
@@ -0,0 +1,146 @@
|
||||
//
|
||||
// Choose which type of netplay
|
||||
//
|
||||
#include <dos.h>
|
||||
#include <conio.h>
|
||||
#include <string.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
}
|
||||
};
|
||||
144
MACROS.C
Normal file
144
MACROS.C
Normal file
@@ -0,0 +1,144 @@
|
||||
//
|
||||
// Choose which type of netplay
|
||||
//
|
||||
#include <dos.h>
|
||||
#include <conio.h>
|
||||
#include <string.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
}
|
||||
};
|
||||
BIN
MACROS.OBJ
Normal file
BIN
MACROS.OBJ
Normal file
Binary file not shown.
581
MAIN.BAK
Normal file
581
MAIN.BAK
Normal file
@@ -0,0 +1,581 @@
|
||||
//
|
||||
// MAIN.C - Handles StartUp and the MainMenu
|
||||
//
|
||||
#include <process.h>
|
||||
#include <io.h>
|
||||
#include <dos.h>
|
||||
#include <mem.h>
|
||||
#include <conio.h>
|
||||
#include <bios.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
581
MAIN.C
Normal file
581
MAIN.C
Normal file
@@ -0,0 +1,581 @@
|
||||
//
|
||||
// MAIN.C - Handles StartUp and the MainMenu
|
||||
//
|
||||
#include <process.h>
|
||||
#include <io.h>
|
||||
#include <dos.h>
|
||||
#include <mem.h>
|
||||
#include <conio.h>
|
||||
#include <bios.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
281
MAIN.H
Normal file
281
MAIN.H
Normal file
@@ -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);
|
||||
|
||||
173
MENU.BAK
Normal file
173
MENU.BAK
Normal file
@@ -0,0 +1,173 @@
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include <mem.h>
|
||||
#include <dos.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
}
|
||||
}
|
||||
173
MENU.C
Normal file
173
MENU.C
Normal file
@@ -0,0 +1,173 @@
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include <mem.h>
|
||||
#include <dos.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
}
|
||||
}
|
||||
33
MENU.H
Normal file
33
MENU.H
Normal file
@@ -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;
|
||||
837
MODEM.BAK
Normal file
837
MODEM.BAK
Normal file
@@ -0,0 +1,837 @@
|
||||
//
|
||||
// Enter modem config info
|
||||
//
|
||||
#include <process.h>
|
||||
#include <dos.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include <stdlib.h>
|
||||
#include <bios.h>
|
||||
|
||||
#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<strlen(phonelist[index].number);i++)
|
||||
if ((phonelist[index].number[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++;
|
||||
else
|
||||
if (hliteY < 9 &&
|
||||
((blitY+10 == numInList) ||
|
||||
(hliteY < numInList - 1)))
|
||||
hliteY++;
|
||||
|
||||
break;
|
||||
|
||||
case 0x49: // PGUP
|
||||
blitY -= 9;
|
||||
if (blitY < 0)
|
||||
hliteY = blitY = 0;
|
||||
|
||||
break;
|
||||
|
||||
case 0x51: // PGDN
|
||||
blitY += 9;
|
||||
if (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 );
|
||||
}
|
||||
|
||||
837
MODEM.C
Normal file
837
MODEM.C
Normal file
@@ -0,0 +1,837 @@
|
||||
//
|
||||
// Enter modem config info
|
||||
//
|
||||
#include <process.h>
|
||||
#include <dos.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include <stdlib.h>
|
||||
#include <bios.h>
|
||||
|
||||
#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<strlen(phonelist[index].number);i++)
|
||||
if ((phonelist[index].number[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++;
|
||||
else
|
||||
if (hliteY < 9 &&
|
||||
((blitY+10 == numInList) ||
|
||||
(hliteY < numInList - 1)))
|
||||
hliteY++;
|
||||
|
||||
break;
|
||||
|
||||
case 0x49: // PGUP
|
||||
blitY -= 9;
|
||||
if (blitY < 0)
|
||||
hliteY = blitY = 0;
|
||||
|
||||
break;
|
||||
|
||||
case 0x51: // PGDN
|
||||
blitY += 9;
|
||||
if (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 );
|
||||
}
|
||||
|
||||
9
MODEM.NUM
Normal file
9
MODEM.NUM
Normal file
@@ -0,0 +1,9 @@
|
||||
Shawn's House
|
||||
475-1729
|
||||
|
||||
Software Creations BBS
|
||||
1-508-368-4137
|
||||
|
||||
Chicago
|
||||
1-708-530-1197
|
||||
|
||||
250
MODEM.STR
Normal file
250
MODEM.STR
Normal file
@@ -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
|
||||
|
||||
313
MODREST.BAK
Normal file
313
MODREST.BAK
Normal file
@@ -0,0 +1,313 @@
|
||||
//
|
||||
// Enter modem savegame info
|
||||
//
|
||||
#include <string.h>
|
||||
#include <process.h>
|
||||
#include <stdio.h>
|
||||
#include <dos.h>
|
||||
#include <conio.h>
|
||||
#include <mem.h>
|
||||
#include <stdlib.h>
|
||||
#include <fcntl.h>
|
||||
#include <io.h>
|
||||
|
||||
#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 );
|
||||
}
|
||||
|
||||
314
MODREST.C
Normal file
314
MODREST.C
Normal file
@@ -0,0 +1,314 @@
|
||||
//
|
||||
// Enter modem savegame info
|
||||
//
|
||||
#include <string.h>
|
||||
#include <process.h>
|
||||
#include <stdio.h>
|
||||
#include <dos.h>
|
||||
#include <conio.h>
|
||||
#include <mem.h>
|
||||
#include <stdlib.h>
|
||||
#include <fcntl.h>
|
||||
#include <io.h>
|
||||
|
||||
#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 );
|
||||
}
|
||||
|
||||
BIN
MODREST.OBJ
Normal file
BIN
MODREST.OBJ
Normal file
Binary file not shown.
554
MUSIC.BAK
Normal file
554
MUSIC.BAK
Normal file
@@ -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;
|
||||
}
|
||||
553
MUSIC.C
Normal file
553
MUSIC.C
Normal file
@@ -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;
|
||||
}
|
||||
430
NET.BAK
Normal file
430
NET.BAK
Normal file
@@ -0,0 +1,430 @@
|
||||
//
|
||||
// Enter network config info
|
||||
//
|
||||
#include <process.h>
|
||||
#include <dos.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include <stdlib.h>
|
||||
#include <bios.h>
|
||||
|
||||
#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 );
|
||||
}
|
||||
|
||||
430
NET.C
Normal file
430
NET.C
Normal file
@@ -0,0 +1,430 @@
|
||||
//
|
||||
// Enter network config info
|
||||
//
|
||||
#include <process.h>
|
||||
#include <dos.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include <stdlib.h>
|
||||
#include <bios.h>
|
||||
|
||||
#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 );
|
||||
}
|
||||
|
||||
350
NETPLAY.BAK
Normal file
350
NETPLAY.BAK
Normal file
@@ -0,0 +1,350 @@
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include <dos.h>
|
||||
#include <string.h>
|
||||
#include <bios.h>
|
||||
|
||||
#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++;
|
||||
else
|
||||
if (hliteY < 9 &&
|
||||
((blitY+10 == numModems) ||
|
||||
(hliteY < numModems - 1)))
|
||||
hliteY++;
|
||||
break;
|
||||
|
||||
case 0x49: // PGUP
|
||||
blitY -= 9;
|
||||
if (blitY < 0)
|
||||
hliteY = blitY = 0;
|
||||
|
||||
break;
|
||||
|
||||
case 0x51: // PGDN
|
||||
blitY += 9;
|
||||
if (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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
350
NETPLAY.C
Normal file
350
NETPLAY.C
Normal file
@@ -0,0 +1,350 @@
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include <dos.h>
|
||||
#include <string.h>
|
||||
#include <bios.h>
|
||||
|
||||
#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++;
|
||||
else
|
||||
if (hliteY < 9 &&
|
||||
((blitY+10 == numModems) ||
|
||||
(hliteY < numModems - 1)))
|
||||
hliteY++;
|
||||
break;
|
||||
|
||||
case 0x49: // PGUP
|
||||
blitY -= 9;
|
||||
if (blitY < 0)
|
||||
hliteY = blitY = 0;
|
||||
|
||||
break;
|
||||
|
||||
case 0x51: // PGDN
|
||||
blitY += 9;
|
||||
if (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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
NETPLAY.OBJ
Normal file
BIN
NETPLAY.OBJ
Normal file
Binary file not shown.
325
NETREST.BAK
Normal file
325
NETREST.BAK
Normal file
@@ -0,0 +1,325 @@
|
||||
//
|
||||
// Enter network savegame info
|
||||
//
|
||||
#include <process.h>
|
||||
#include <stdio.h>
|
||||
#include <dos.h>
|
||||
#include <conio.h>
|
||||
#include <mem.h>
|
||||
#include <stdlib.h>
|
||||
#include <fcntl.h>
|
||||
#include <io.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
}
|
||||
}
|
||||
325
NETREST.C
Normal file
325
NETREST.C
Normal file
@@ -0,0 +1,325 @@
|
||||
//
|
||||
// Enter network savegame info
|
||||
//
|
||||
#include <process.h>
|
||||
#include <stdio.h>
|
||||
#include <dos.h>
|
||||
#include <conio.h>
|
||||
#include <mem.h>
|
||||
#include <stdlib.h>
|
||||
#include <fcntl.h>
|
||||
#include <io.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
NETREST.OBJ
Normal file
BIN
NETREST.OBJ
Normal file
Binary file not shown.
655
OLDSETUP.BAK
Normal file
655
OLDSETUP.BAK
Normal file
@@ -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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
655
OLDSETUP.C
Normal file
655
OLDSETUP.C
Normal file
@@ -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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
204
OLDSETUP.H
Normal file
204
OLDSETUP.H
Normal file
@@ -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;
|
||||
|
||||
|
||||
5
README
Normal file
5
README
Normal file
@@ -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
|
||||
65
SCGUESS.BAK
Normal file
65
SCGUESS.BAK
Normal file
@@ -0,0 +1,65 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#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;
|
||||
}
|
||||
|
||||
}
|
||||
64
SCGUESS.C
Normal file
64
SCGUESS.C
Normal file
@@ -0,0 +1,64 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#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;
|
||||
}
|
||||
|
||||
}
|
||||
34
SCGUESS.H
Normal file
34
SCGUESS.H
Normal file
@@ -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
|
||||
BIN
SCGUESS.OBJ
Normal file
BIN
SCGUESS.OBJ
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/ASKPRES.DOG
Normal file
BIN
SCREENS/DOOM/ASKPRES.DOG
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/ASKPRES.OBJ
Normal file
BIN
SCREENS/DOOM/ASKPRES.OBJ
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/ASKPRES.PUP
Normal file
BIN
SCREENS/DOOM/ASKPRES.PUP
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CMODEM.DOG
Normal file
BIN
SCREENS/DOOM/CMODEM.DOG
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CMODEM.OBJ
Normal file
BIN
SCREENS/DOOM/CMODEM.OBJ
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CMODEM.PUP
Normal file
BIN
SCREENS/DOOM/CMODEM.PUP
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CONSEL.DOG
Normal file
BIN
SCREENS/DOOM/CONSEL.DOG
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CONSEL.OBJ
Normal file
BIN
SCREENS/DOOM/CONSEL.OBJ
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CONSEL.PUP
Normal file
BIN
SCREENS/DOOM/CONSEL.PUP
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CONTROL.DOG
Normal file
BIN
SCREENS/DOOM/CONTROL.DOG
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CONTROL.OBJ
Normal file
BIN
SCREENS/DOOM/CONTROL.OBJ
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CONTROL.PUP
Normal file
BIN
SCREENS/DOOM/CONTROL.PUP
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CSERIAL.DOG
Normal file
BIN
SCREENS/DOOM/CSERIAL.DOG
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CSERIAL.OBJ
Normal file
BIN
SCREENS/DOOM/CSERIAL.OBJ
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CSERIAL.PUP
Normal file
BIN
SCREENS/DOOM/CSERIAL.PUP
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CWARP.DOG
Normal file
BIN
SCREENS/DOOM/CWARP.DOG
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CWARP.OBJ
Normal file
BIN
SCREENS/DOOM/CWARP.OBJ
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/CWARP.PUP
Normal file
BIN
SCREENS/DOOM/CWARP.PUP
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/ENTRNMBR.DOG
Normal file
BIN
SCREENS/DOOM/ENTRNMBR.DOG
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/ENTRNMBR.OBJ
Normal file
BIN
SCREENS/DOOM/ENTRNMBR.OBJ
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/ENTRNMBR.PUP
Normal file
BIN
SCREENS/DOOM/ENTRNMBR.PUP
Normal file
Binary file not shown.
36
SCREENS/DOOM/FILES
Normal file
36
SCREENS/DOOM/FILES
Normal file
@@ -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
|
||||
BIN
SCREENS/DOOM/FORALL.EXE
Normal file
BIN
SCREENS/DOOM/FORALL.EXE
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/GUSIRQER.DOG
Normal file
BIN
SCREENS/DOOM/GUSIRQER.DOG
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/GUSIRQER.OBJ
Normal file
BIN
SCREENS/DOOM/GUSIRQER.OBJ
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/GUSIRQER.PUP
Normal file
BIN
SCREENS/DOOM/GUSIRQER.PUP
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/IDCARD.DOG
Normal file
BIN
SCREENS/DOOM/IDCARD.DOG
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/IDCARD.OBJ
Normal file
BIN
SCREENS/DOOM/IDCARD.OBJ
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/IDCARD.PUP
Normal file
BIN
SCREENS/DOOM/IDCARD.PUP
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/IDJOYSEL.DOG
Normal file
BIN
SCREENS/DOOM/IDJOYSEL.DOG
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/IDJOYSEL.OBJ
Normal file
BIN
SCREENS/DOOM/IDJOYSEL.OBJ
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/IDJOYSEL.PUP
Normal file
BIN
SCREENS/DOOM/IDJOYSEL.PUP
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/IDKEYSEL.DOG
Normal file
BIN
SCREENS/DOOM/IDKEYSEL.DOG
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/IDKEYSEL.OBJ
Normal file
BIN
SCREENS/DOOM/IDKEYSEL.OBJ
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/IDKEYSEL.PUP
Normal file
BIN
SCREENS/DOOM/IDKEYSEL.PUP
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/IDMAIN2.DOG
Normal file
BIN
SCREENS/DOOM/IDMAIN2.DOG
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/IDMAIN2.OBJ
Normal file
BIN
SCREENS/DOOM/IDMAIN2.OBJ
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/IDMAIN2.PUP
Normal file
BIN
SCREENS/DOOM/IDMAIN2.PUP
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/IDMOUSEL.DOG
Normal file
BIN
SCREENS/DOOM/IDMOUSEL.DOG
Normal file
Binary file not shown.
BIN
SCREENS/DOOM/IDMOUSEL.OBJ
Normal file
BIN
SCREENS/DOOM/IDMOUSEL.OBJ
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user