ravenengine/SOURCE/D_MISC.C

148 lines
3.1 KiB
C

// P_MISC.C
#include <process.h>
#include <string.h>
#include <ctype.h>
#include <stdarg.h>
#include <stdio.h>
#include "d_global.h"
#include "d_ints.h"
#include "d_video.h"
#include "d_misc.h"
int my_argc;
char ** my_argv;
/*
=============================================================================
ODD FUNCTIONS
=============================================================================
*/
/*
=================
=
= MS_CheckParm
=
= Checks for the given parameter in the program's command line arguments
=
= Returns the argument number (1 to argc-1) or 0 if not present
=
=================
*/
int MS_CheckParm (char *check)
{
int i;
char *parm;
for (i = 1;i<my_argc;i++)
{
parm = my_argv[i];
while ( !isalpha(*parm) ) // skip - / \ etc.. in front of parm
if (!*parm++)
break; // hit end of string without an alphanum
if ( !stricmp(check,parm) )
return i;
}
return 0;
}
/*
=================
=
= MS_Error
=
= Shuts down everything and possibly prints a
= printf formatted error message, then exits to dos
=
=================
*/
void MS_Error (char *error, ...)
{
va_list argptr;
int cnt;
INT_Shutdown ();
VI_SetTextMode ();
va_start (argptr,error);
vprintf (error,argptr);
va_end (argptr);
// DEBUG CU_End();
while (kbhit()) getch();
exit (1);
}
/*
=================
=
= MS_ExitClean
=
= Shuts down everything and exits
=
=================
*/
void MS_ExitClean (void)
{
INT_Shutdown ();
VI_SetTextMode ();
// DEBUG CU_End();
while (kbhit()) getch();
exit (0);
}
/*
=================
=
= MS_RndT
=
= FIX: do this better
=
=================
*/
byte rndofs;
byte rndtable[256] =
{
0, 8, 109, 220, 222, 241, 149, 107, 75, 248, 254, 140, 16, 66,
74, 21, 211, 47, 80, 242, 154, 27, 205, 128, 161, 89, 77, 36,
95, 110, 85, 48, 212, 140, 211, 249, 22, 79, 200, 50, 28, 188,
52, 140, 202, 120, 68, 145, 62, 70, 184, 190, 91, 197, 152, 224,
149, 104, 25, 178, 252, 182, 202, 182, 141, 197, 4, 81, 181, 242,
145, 42, 39, 227, 156, 198, 225, 193, 219, 93, 122, 175, 249, 0,
175, 143, 70, 239, 46, 246, 163, 53, 163, 109, 168, 135, 2, 235,
25, 92, 20, 145, 138, 77, 69, 166, 78, 176, 173, 212, 166, 113,
94, 161, 41, 50, 239, 49, 111, 164, 70, 60, 2, 37, 171, 75,
136, 156, 11, 56, 42, 146, 138, 229, 73, 146, 77, 61, 98, 196,
135, 106, 63, 197, 195, 86, 96, 203, 113, 101, 170, 247, 181, 113,
80, 250, 108, 7, 255, 237, 129, 226, 79, 107, 112, 166, 103, 241,
24, 223, 239, 120, 198, 58, 60, 82, 128, 3, 184, 66, 143, 224,
145, 224, 81, 206, 163, 45, 63, 90, 168, 114, 59, 33, 159, 95,
28, 139, 123, 98, 125, 196, 15, 70, 194, 253, 54, 14, 109, 226,
71, 17, 161, 93, 186, 87, 244, 138, 20, 52, 123, 251, 26, 36,
17, 46, 52, 231, 232, 76, 31, 221, 84, 37, 216, 165, 212, 106,
197, 242, 98, 43, 39, 175, 254, 145, 190, 84, 118, 222, 187, 136,
120, 163, 236, 249
};
byte MS_RndT (void)
{
rndofs++;
return rndtable[rndofs];
}