Misc changes to the bot, drawing code cleanup and system/wad specific things
This commit is contained in:
parent
1ca123dfd7
commit
714294618a
5 changed files with 112 additions and 570 deletions
141
engine/bot.c
141
engine/bot.c
|
@ -180,23 +180,23 @@ TODO: Read and parse names from a file
|
|||
*/
|
||||
char *PickBotName (int r)
|
||||
{
|
||||
if (r == 1) return "windshield wiper";
|
||||
else if (r == 2) return "nosefart";
|
||||
else if (r == 3) return "WILDEBEEST";
|
||||
else if (r == 4) return "Human";
|
||||
else if (r == 5) return "Aye";
|
||||
else if (r == 6) return "Utrvis";
|
||||
else if (r == 7) return "Whoop";
|
||||
else if (r == 8) return "BurninNgtWear";
|
||||
else if (r == 9) return "nonsensicalous";
|
||||
else if (r == 10) return "a dog";
|
||||
else if (r == 11) return "Damn, I";
|
||||
else if (r == 12) return "Hard Man";
|
||||
else if (r == 13) return "complete as whole";
|
||||
else if (r == 14) return "AN UPSET";
|
||||
else if (r == 15) return "Starter";
|
||||
if (r == 1) return "system32";
|
||||
else if (r == 2) return "/dev/null";
|
||||
else if (r == 3) return "Philip";
|
||||
else if (r == 4) return "Travis";
|
||||
else if (r == 5) return "Shawn";
|
||||
else if (r == 6) return "Steve";
|
||||
else if (r == 7) return "Dave";
|
||||
else if (r == 8) return "Croft";
|
||||
else if (r == 9) return "James";
|
||||
else if (r == 10) return "Scott";
|
||||
else if (r == 11) return "Ridley";
|
||||
else if (r == 12) return "Mister";
|
||||
else if (r == 13) return "Anubis";
|
||||
else if (r == 14) return "Radon";
|
||||
else if (r == 15) return "Maxwell";
|
||||
|
||||
return "GloBot";
|
||||
return "player";
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -259,18 +259,18 @@ void BotConnect (client_t *client, int ClientNo, int color, char *name)
|
|||
if (color != 666)
|
||||
{
|
||||
client->colors = color * 14 + color; // The bot must have a color
|
||||
bot->v.team = color + 1; // And to be in a team
|
||||
bot->v.team = color + 1; // And to be in a team
|
||||
}
|
||||
else
|
||||
{
|
||||
client->colors = randombot * 14 + randombot; // The bot must have a color
|
||||
bot->v.team = randombot + 1; // And to be in a team
|
||||
bot->v.team = randombot + 1; // And to be in a team
|
||||
}
|
||||
|
||||
client->old_frags = 0; // And since he just joined he cant have got any frags yet
|
||||
|
||||
bot->v.colormap = ClientNo; // Without this he wont be using any colored clothes
|
||||
bot->v.netname = client->name - pr_strings; // Everyone wants a name
|
||||
bot->v.netname = client->name - pr_strings; // Everyone wants a name
|
||||
|
||||
UpdateClient (client, ClientNo); // Update the scoreboard
|
||||
|
||||
|
@ -283,66 +283,6 @@ void BotConnect (client_t *client, int ClientNo, int color, char *name)
|
|||
pr_global_struct->self = EDICT_TO_PROG (self); // Get back to the backup
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
==========
|
||||
LoserConnect
|
||||
|
||||
Create a player to split onto....
|
||||
==========
|
||||
*/
|
||||
int splitmeup;
|
||||
client_t *splitplayer; // leilei - splitscreen
|
||||
void LoserConnect (client_t *client, int ClientNo, int color, char *name)
|
||||
{
|
||||
edict_t *self = PROG_TO_EDICT(pr_global_struct->self); // Make a backup of the current QC self
|
||||
edict_t *bot = client->edict;
|
||||
int randombot;
|
||||
splitmeup = 2;
|
||||
bot->bot.isbot = 35; // And yes this is a human who ignores some builtins
|
||||
bot->bot.Active = true; // and hes active
|
||||
bot->bot.enemy = bot; // Now why is he chasing himself?
|
||||
bot->bot.connecttime = sv.time;
|
||||
bot->bot.ClientNo = ClientNo;// Now we get a clientnumber
|
||||
|
||||
randombot = ceil (RandomRange (0, 15));
|
||||
|
||||
while (globot.botactive[randombot])
|
||||
randombot = ceil (RandomRange (0, 15));
|
||||
|
||||
globot.botactive[randombot] = true;
|
||||
|
||||
if (name[0] != '0')
|
||||
strcpy (client->name, name);
|
||||
else
|
||||
strcpy (client->name, "Scud");
|
||||
|
||||
if (color != 666)
|
||||
{
|
||||
client->colors = color * 16 + color; // The bot must have a color
|
||||
bot->v.team = color + 1; // And to be in a team
|
||||
}
|
||||
else
|
||||
{
|
||||
client->colors = randombot * 16 + randombot; // The bot must have a color
|
||||
bot->v.team = randombot + 1; // And to be in a team
|
||||
}
|
||||
client->old_frags = 0; // And since he just joined he cant have got any frags yet
|
||||
|
||||
bot->v.colormap = ClientNo; // Without this he wont be using any colored clothes
|
||||
bot->v.netname = client->name - pr_strings; // Everyone wants a name
|
||||
|
||||
UpdateClient (client, ClientNo);// Update the scoreboard
|
||||
|
||||
pr_global_struct->self = EDICT_TO_PROG(bot); // Update the QC self to be the bot
|
||||
|
||||
PR_ExecuteProgram (pr_global_struct->SetNewParms); // Now call some QC functions
|
||||
PR_ExecuteProgram (pr_global_struct->ClientConnect); // Now call some more QC functions
|
||||
PR_ExecuteProgram (pr_global_struct->PutClientInServer); // Now call yet some more QC functions
|
||||
|
||||
pr_global_struct->self = EDICT_TO_PROG (self); // Get back to the backup
|
||||
splitplayer = client;
|
||||
}
|
||||
/*
|
||||
==============
|
||||
NextFreeClient
|
||||
|
@ -384,46 +324,6 @@ void NextFreeClient (void)
|
|||
SV_BroadcastPrintf ("Unable to connect a bot, server is full.\n"); // No free client slots = no more bots allowed
|
||||
}
|
||||
|
||||
|
||||
|
||||
// for splitscreen's genesis
|
||||
void NextFreeLoser (void)
|
||||
{
|
||||
client_t *client;
|
||||
int i, color;
|
||||
char name[32];
|
||||
if (splitmeup){
|
||||
SV_BroadcastPrintf ("Unable to connect a loser, you already got one.\n"); // No free client slots = no more bots allowed
|
||||
return;
|
||||
}
|
||||
if (Cmd_Argc() == 2)
|
||||
{
|
||||
color = Q_atoi(Cmd_Argv(1));
|
||||
sprintf (name, "0");
|
||||
}
|
||||
else if (Cmd_Argc() == 3)
|
||||
{
|
||||
color = Q_atoi(Cmd_Argv(1));
|
||||
sprintf (name, "%s", Cmd_Argv(2));
|
||||
}
|
||||
else
|
||||
{
|
||||
color = 666;
|
||||
sprintf (name, "0");
|
||||
}
|
||||
|
||||
for (i=0, client=svs.clients; i<svs.maxclients; i++, client++) // Keep looping as long as there are free client slots
|
||||
{
|
||||
if (!client->edict->bot.Active) // We found a free client slot
|
||||
{
|
||||
LoserConnect (client, i, color, name); // so why not connect a bot?
|
||||
return; // We are done now
|
||||
}
|
||||
}
|
||||
|
||||
SV_BroadcastPrintf ("Unable to connect a loser, server is full.\n"); // No free client slots = no more bots allowed
|
||||
}
|
||||
|
||||
/*
|
||||
=======
|
||||
MoveBot
|
||||
|
@ -741,9 +641,8 @@ the command "addbot" from the console
|
|||
*/
|
||||
void Bot_Init (void)
|
||||
{
|
||||
char name[256];
|
||||
char name[MAX_OSPATH];
|
||||
Cmd_AddCommand ("addbot", NextFreeClient);
|
||||
Cmd_AddCommand ("addburp", NextFreeLoser);
|
||||
|
||||
// eukara - loading botnames start
|
||||
printf("Looking for botnames.cfg...\n");
|
||||
|
|
368
engine/draw.c
368
engine/draw.c
|
@ -897,33 +897,26 @@ Draw_Init
|
|||
// gfx/addmap.lmp, gfx/mulmap.lmp, gfx/tinttab.lmp (hi hexen2)
|
||||
// gfx/8to16.lmp, gfx/8to24.lmp, gfx/palmap.lmp, gfx/palmap2.lmp
|
||||
// These are proposed filenames.
|
||||
|
||||
byte menumap[256][16]; // Used for menu backgrounds and simple colormod
|
||||
byte gelmap[256]; // Unused id effect TO be used somehow. made redundant by menumap
|
||||
byte remapmap[256]; // For translating an old palette to new on load
|
||||
byte bumpmap[256]; // leilei experimental bumpmap feature
|
||||
|
||||
int translate_bsp;
|
||||
int translate_mdl;
|
||||
int translate_gfx;
|
||||
int translate_spr;
|
||||
int translate_bsp;
|
||||
int translate_mdl;
|
||||
int translate_gfx;
|
||||
int translate_spr;
|
||||
|
||||
float fademap[256]; // Used in generation of certain alpha tables
|
||||
byte coltranslate[256]; // TranslateToCustomPal - used for taking one palette to another without going through a whole 8to24to15to8 thing
|
||||
pixel_t addTable[256][256]; // Additive blending effect
|
||||
pixel_t mulTable[256][256]; // Multiply blending effect (for colormod)
|
||||
float fademap[256]; // Used in generation of certain alpha tables
|
||||
byte coltranslate[256]; // TranslateToCustomPal - used for taking one palette to another without going through a whole 8to24to15to8 thing
|
||||
pixel_t addTable[256][256]; // Additive blending effect
|
||||
pixel_t mulTable[256][256]; // Multiply blending effect (for colormod)
|
||||
pixel_t transTable[256][256]; // Alpha blending by 33% and 66%
|
||||
//pixel_t alphaTable[256][256]; // Alpha blending by row
|
||||
pixel_t waterTable[256][256]; // Not cached to disk - for wateralpha only (THIS IS A STUPID but only sensible way to go for this)
|
||||
int smoothtable[32768][3]; // a table for smoothing out things.... :(
|
||||
int noisetable[512][5]; // a table for table
|
||||
|
||||
int wootel[32][32][32]; // alternate kernel blend
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int smoothtable[32768][3]; // a table for smoothing out things.... :(
|
||||
int noisetable[512][5]; // a table for table
|
||||
int wootel[32][32][32]; // alternate kernel blend
|
||||
|
||||
unsigned d_8to24table[256]; // a super important table here
|
||||
|
||||
|
@ -941,19 +934,6 @@ void InitGel (byte *palette)
|
|||
}
|
||||
}
|
||||
|
||||
void InitBump (byte *palette)
|
||||
{
|
||||
int i;
|
||||
int r;
|
||||
|
||||
for (i=0 ; i<256 ; i++)
|
||||
{
|
||||
r = (palette[i*3] + palette[i*3+1] + palette[i*3+2]) / 3;
|
||||
// r *= 3;
|
||||
// if (r > 255) r = 255;
|
||||
bumpmap[i] = r;
|
||||
}
|
||||
}
|
||||
// Gamepad notes:
|
||||
// AUX29 - dpad up
|
||||
// AUX32 - dpad left
|
||||
|
@ -983,7 +963,6 @@ void InitWootel (void)
|
|||
wootel[i][r][0] = result;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void InitNoise (void)
|
||||
|
@ -1016,11 +995,7 @@ void InitNoise (void)
|
|||
//noisetable[64][r] = 64; //yeah...SIXTY FOUR
|
||||
}
|
||||
}
|
||||
/*
|
||||
t = (y & 1) << 1;
|
||||
if ((x & 3) != t)
|
||||
pbuf[x] = 0;
|
||||
*/
|
||||
|
||||
extern cvar_t *temp3;
|
||||
void InitOrder (void)
|
||||
{
|
||||
|
@ -1036,7 +1011,8 @@ void InitOrder (void)
|
|||
for (i=1 ; i<range; i++)
|
||||
{
|
||||
ae = i / range;
|
||||
t = (i & 1) << 1;
|
||||
t = (i & 1) << 1;
|
||||
|
||||
for (r=0; r<6; r++){
|
||||
|
||||
int eep, erp;
|
||||
|
@ -1048,23 +1024,15 @@ void InitOrder (void)
|
|||
ay = 2048;
|
||||
if ((i & 1) != t)
|
||||
ay -= 768;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
result = (float)ay;
|
||||
//if (result > 512) result = 512;
|
||||
//if (result < 0) result = 0;
|
||||
noisetable[i][r] = result;
|
||||
|
||||
//noisetable[i][r] = (float)(range * ay);
|
||||
}
|
||||
result = (float)ay;
|
||||
noisetable[i][r] = result;
|
||||
}
|
||||
}
|
||||
|
||||
for (r=0; r<6; r++){
|
||||
noisetable[0][r] = 0; //yeah.... 0
|
||||
//noisetable[64][r] = 64; //yeah...SIXTY FOUR
|
||||
noisetable[0][r] = 0; //yeah.... 0
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1114,7 +1082,7 @@ void InitSmooth (void)
|
|||
|
||||
float noiz;
|
||||
float noiiz;
|
||||
int range = 64; // was 64
|
||||
int range = 64;
|
||||
InitNoise();
|
||||
// InitOrder();
|
||||
// InitSimple();
|
||||
|
@ -1122,14 +1090,11 @@ void InitSmooth (void)
|
|||
{
|
||||
for (r=0; r<range; r++){
|
||||
for (k=0; k<6; k++){
|
||||
|
||||
smoothtable[i+r][k] = MID(1024, i + 512 - (noisetable[r][k]),16000);
|
||||
|
||||
|
||||
smoothtable[i+r][k] = MID(1024, i + 512 - (noisetable[r][k]),16000);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
smoothtable[0][0] = 0;
|
||||
smoothtable[0][1] = 0;
|
||||
smoothtable[0][2] = 0;
|
||||
|
@ -1193,20 +1158,16 @@ void InitRemapEGA (byte *palette)
|
|||
bah[2] = d_8to24table[palette[i+2]];
|
||||
|
||||
if (i > 256 - host_fullbrights){
|
||||
coltranslate[i] = BestColor(bah[0], bah[1], bah[2], 9, 15);
|
||||
remapmap[i] = BestColor(bah[0], bah[1], bah[2], 9, 15);
|
||||
coltranslate[i] = BestColor(bah[0], bah[1], bah[2], 9, 15);
|
||||
remapmap[i] = BestColor(bah[0], bah[1], bah[2], 9, 15);
|
||||
}
|
||||
else
|
||||
{
|
||||
coltranslate[i] = BestColor(bah[0], bah[1], bah[2], 0, 8);
|
||||
remapmap[i] = BestColor(bah[0], bah[1], bah[2], 0, 8);
|
||||
coltranslate[i] = BestColor(bah[0], bah[1], bah[2], 0, 8);
|
||||
remapmap[i] = BestColor(bah[0], bah[1], bah[2], 0, 8);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
rmap_ready = 1;
|
||||
|
||||
rmap_ready = 1;
|
||||
}
|
||||
|
||||
extern void PalmapStaticized ();
|
||||
|
@ -1221,11 +1182,12 @@ extern int inthedos;
|
|||
void FogTableRefresh (void);
|
||||
extern cvar_t *r_tranquality;
|
||||
cvar_t *engoo_lookuppalette;
|
||||
|
||||
#ifdef _WIN32
|
||||
extern unsigned char vid_curpal[256*3];
|
||||
#endif
|
||||
|
||||
int erh;
|
||||
int erh;
|
||||
int fbs[256];
|
||||
void MassiveLookupTablesInit (void)
|
||||
{
|
||||
|
@ -1247,12 +1209,10 @@ void MassiveLookupTablesInit (void)
|
|||
#endif
|
||||
thepaltouse = host_basepal;
|
||||
|
||||
//InitBump(thepaltouse);
|
||||
// InitFader();
|
||||
// if (COM_CheckParm ("-cache"))
|
||||
// lookupcaching = 1; // try to cache it all for future loading
|
||||
|
||||
fprintf(stderr,"\nGenerating additive table...");
|
||||
fprintf(stderr,"\nGenerating additive table... ");
|
||||
for (l=0;l<255;l++)
|
||||
{
|
||||
for (c=0 ; c<255 ; c++)
|
||||
|
@ -1263,8 +1223,11 @@ void MassiveLookupTablesInit (void)
|
|||
addTable[l][c] = BestColor(red,green,blue, 0, 254);
|
||||
}
|
||||
}
|
||||
if(addTable)
|
||||
fprintf(stderr,"[DONE]");
|
||||
|
||||
fprintf(stderr,"\nGenerating alpha table...");
|
||||
|
||||
fprintf(stderr,"\nGenerating alpha table... ");
|
||||
for (l=0;l<255;l++)
|
||||
{
|
||||
for (c=0 ; c<255 ; c++)
|
||||
|
@ -1275,6 +1238,9 @@ void MassiveLookupTablesInit (void)
|
|||
transTable[l][c] = BestColor(red,green,blue, 0, 254);
|
||||
}
|
||||
}
|
||||
if(transTable)
|
||||
fprintf(stderr,"[DONE]");
|
||||
|
||||
|
||||
if (COM_CheckParm ("-nolookups")){
|
||||
nolookups = 1;
|
||||
|
@ -1285,7 +1251,7 @@ void MassiveLookupTablesInit (void)
|
|||
fprintf(stderr,"\n\n---------------------\nGenerating all the lookup tables\n(If your computer is slow, this will take up to 30 seconds. Use the -nolookups \nparameter if you find this unsettling)\nYou can also skip the 18-bit generation by passing -no18\nAlternatively, you can pass -ugly for faster but ugly generation\n---------------------\n\n");
|
||||
|
||||
if (COM_CheckParm ("-ugly")){
|
||||
fprintf(stderr,"UGLY GENERATION MODE ON!\n");
|
||||
fprintf(stderr,"\n*** UGLY GENERATION MODE ON ***\n");
|
||||
ugly = 1;}
|
||||
else
|
||||
ugly = 0;
|
||||
|
@ -1294,7 +1260,7 @@ void MassiveLookupTablesInit (void)
|
|||
VID_SetPalette2 (thepaltouse);
|
||||
|
||||
|
||||
fprintf(stderr,"\nGenerating 15-bit lookup table...");
|
||||
fprintf(stderr,"\nGenerating 15-bit lookup table... ");
|
||||
for (r=0 ; r<256 ; r+=8)
|
||||
{
|
||||
for (g=0 ; g<256 ; g+=8)
|
||||
|
@ -1347,6 +1313,8 @@ void MassiveLookupTablesInit (void)
|
|||
|
||||
if (!palmap)
|
||||
printf(stderr,"FAILED!\n");
|
||||
else
|
||||
fprintf(stderr,"[DONE]");
|
||||
|
||||
// Make the 18-bit lookup table here
|
||||
// This is a HUGE 256kb table, the biggest there is here
|
||||
|
@ -1357,7 +1325,7 @@ void MassiveLookupTablesInit (void)
|
|||
fprintf(stderr,"\n18-bit lookup generation skipped - High quality light mode DISABLED!\n");
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"\nGenerating 18-bit lookup table...");
|
||||
fprintf(stderr,"\nGenerating 18-bit lookup table... ");
|
||||
|
||||
for (r=0 ; r<256 ; r+=4)
|
||||
{
|
||||
|
@ -1377,10 +1345,12 @@ void MassiveLookupTablesInit (void)
|
|||
|
||||
if (!palmap2)
|
||||
printf(stderr,"FAILED!\n");
|
||||
else
|
||||
fprintf(stderr,"[DONE]");
|
||||
|
||||
}
|
||||
|
||||
fprintf(stderr,"\nGenerating additive table...");
|
||||
fprintf(stderr,"\nGenerating additive table... ");
|
||||
|
||||
for (l=0;l<255;l++)
|
||||
{
|
||||
|
@ -1397,9 +1367,11 @@ void MassiveLookupTablesInit (void)
|
|||
|
||||
if (!addTable)
|
||||
printf(stderr,"FAILED!\n");
|
||||
else
|
||||
fprintf(stderr,"[DONE]");
|
||||
|
||||
|
||||
fprintf(stderr,"\nGenerating multiply blend table...");
|
||||
fprintf(stderr,"\nGenerating multiply blend table... ");
|
||||
|
||||
for (l=0;l<255;l++)
|
||||
{
|
||||
|
@ -1424,6 +1396,8 @@ void MassiveLookupTablesInit (void)
|
|||
|
||||
if (!mulTable)
|
||||
printf(stderr,"FAILED!\n");
|
||||
else
|
||||
fprintf(stderr,"[DONE]");
|
||||
|
||||
// if(palmap2)
|
||||
PalmapStaticized();
|
||||
|
@ -1461,18 +1435,16 @@ void MassiveLookupTablesInit (void)
|
|||
|
||||
// mangled a bit from grabcolormap
|
||||
void SetFogMap (void);
|
||||
|
||||
|
||||
void FogTableRefresh (void)
|
||||
{
|
||||
|
||||
int ugly;
|
||||
int l, c, red, green, blue;
|
||||
int ugly;
|
||||
int l, c, red, green, blue;
|
||||
float fogthik;
|
||||
float frac;
|
||||
float frac;
|
||||
float frac2;
|
||||
float farc;
|
||||
byte *colmap;
|
||||
byte *colmap;
|
||||
int RANGE = 1;
|
||||
int COLORLEVELS = 64;
|
||||
int PALBRIGHTS;
|
||||
|
@ -1551,10 +1523,7 @@ void WaterTableGet (void)
|
|||
ay = r_wateralpha->value; // water surface
|
||||
ae = 1 - ay; // base pixels
|
||||
|
||||
// newwateralpha = r_wateralpha->value; // why
|
||||
//if (oldwateralpha != newwateralpha)
|
||||
{
|
||||
// Con_Printf ("yep");
|
||||
|
||||
|
||||
|
||||
|
@ -1615,43 +1584,26 @@ void WaterTableGet (void)
|
|||
if (ooh) waterTable[l][c] = BestColor(red,green,blue, 0, 255); // High quality color tables get best color
|
||||
|
||||
else if (palmap2) waterTable[l][c] = FindColor18(red,green,blue);
|
||||
else waterTable[l][c] = FindColor(red,green,blue); // Since we do this live we must do this
|
||||
|
||||
// fast! or i'll cry.
|
||||
else waterTable[l][c] = FindColor(red,green,blue); // Since we do this live we must do this
|
||||
// fast! or i'll cry.
|
||||
}
|
||||
|
||||
}
|
||||
// if (!waterTable)
|
||||
// Con_Printf (".... NOT!\n"); // how are we going to fail?
|
||||
// else{
|
||||
// Con_Printf ("!\n");
|
||||
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void RemapMapTableGet (void)
|
||||
{
|
||||
int i, j, l, c, o;
|
||||
float red, green, blue;
|
||||
int ooh;
|
||||
|
||||
|
||||
for (l=0;l<255;l++)
|
||||
{
|
||||
remapmap[l] = 56;
|
||||
}
|
||||
int l;
|
||||
for (l=0;l<255;l++)
|
||||
remapmap[l] = 56;
|
||||
}
|
||||
|
||||
|
||||
void Draw_Init (void)
|
||||
{
|
||||
int i, j, l, c, r;
|
||||
|
||||
|
||||
draw_chars = W_GetLumpName ("conchars");
|
||||
draw_disc = W_GetLumpName ("disc");
|
||||
draw_backtile = W_GetLumpName ("backtile");
|
||||
|
@ -1661,8 +1613,6 @@ void Draw_Init (void)
|
|||
r_rectdesc.ptexbytes = draw_backtile->data;
|
||||
r_rectdesc.rowbytes = draw_backtile->width;
|
||||
|
||||
|
||||
|
||||
// Make the menu background table
|
||||
// This has been extended to allow 16 others via r_menucolors
|
||||
for (i=0 ; i<256 ; i++)
|
||||
|
@ -1679,10 +1629,6 @@ void Draw_Init (void)
|
|||
}
|
||||
|
||||
// and no you can't skip it. i'll use it for colored text and other coolities
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -1701,18 +1647,8 @@ void RemapMenuMap (void)
|
|||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int lilchar = 1;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
================
|
||||
Draw_Character
|
||||
|
@ -2778,8 +2714,6 @@ void Draw_TransPicTranslate_Scaled (int x, int y, qpic_t *pic, byte *translation
|
|||
{
|
||||
dest[u] = translation[tbyte];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
dest += vid.rowbytes;
|
||||
|
@ -2975,7 +2909,6 @@ void Draw_ConsoleBackground (int lines)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -3096,9 +3029,9 @@ refresh window.
|
|||
*/
|
||||
void Draw_TileClear (int x, int y, int w, int h)
|
||||
{
|
||||
int width, height, tileoffsetx, tileoffsety;
|
||||
byte *psrc;
|
||||
vrect_t vr;
|
||||
int width, height, tileoffsetx, tileoffsety;
|
||||
byte *psrc;
|
||||
vrect_t vr;
|
||||
|
||||
r_rectdesc.rect.x = x;
|
||||
r_rectdesc.rect.y = y;
|
||||
|
@ -3214,7 +3147,6 @@ void Draw_Fill_Scaled (int x, int y, int w, int h, int c)
|
|||
{
|
||||
byte *dest = vid.buffer + y*vid.rowbytes + x;
|
||||
|
||||
|
||||
for (v = 0; v < vmax; v++, dest += vid.rowbytes)
|
||||
{
|
||||
for (u = 0; u < umax; u++)
|
||||
|
@ -3222,9 +3154,7 @@ void Draw_Fill_Scaled (int x, int y, int w, int h, int c)
|
|||
dest[u] = c;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
@ -3240,9 +3170,7 @@ Draw_FadeScreen
|
|||
================
|
||||
*/
|
||||
|
||||
byte *obuf;
|
||||
|
||||
|
||||
byte *obuf;
|
||||
void Draw_FadeScreen (void)
|
||||
{
|
||||
int x,y;
|
||||
|
@ -3286,44 +3214,8 @@ void Draw_FadeScreen (void)
|
|||
pbuf[x] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
// Weird blur experiment, which unfortunately, causes a crash in a higher resolution.
|
||||
{
|
||||
|
||||
byte *pbuf2[8];
|
||||
|
||||
for (y=0 ; y<vid.height ; y+=8)
|
||||
{
|
||||
int t, e;
|
||||
|
||||
|
||||
pbuf2[0] = (byte *)(vid.buffer + vid.rowbytes*(y));
|
||||
pbuf2[1] = (byte *)(vid.buffer + vid.rowbytes*(y+1));
|
||||
pbuf2[2] = (byte *)(vid.buffer + vid.rowbytes*(y+2));
|
||||
pbuf2[3] = (byte *)(vid.buffer + vid.rowbytes*(y+3));
|
||||
pbuf2[4] = (byte *)(vid.buffer + vid.rowbytes*(y+4));
|
||||
pbuf2[5] = (byte *)(vid.buffer + vid.rowbytes*(y+5));
|
||||
pbuf2[6] = (byte *)(vid.buffer + vid.rowbytes*(y+6));
|
||||
pbuf2[7] = (byte *)(vid.buffer + vid.rowbytes*(y+7));
|
||||
pbuf2[8] = (byte *)(vid.buffer + vid.rowbytes*(y+8));
|
||||
|
||||
// t = (y & 1) << 1;
|
||||
for (x=0 ; x<vid.width ; x+=8)
|
||||
{
|
||||
// for (t=0;t<9; t++)
|
||||
// for (e=0;e<9; e++)
|
||||
// pbuf2[t][x+e] = pbuf2[t][e+x];
|
||||
//pbuf2[t][x+e] = transTable[pbuf2[t][x+8]][pbuf2[8-t][x]];
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
VID_UnlockBuffer ();
|
||||
S_ExtraUpdate ();
|
||||
VID_LockBuffer ();
|
||||
|
@ -3486,138 +3378,6 @@ void Draw_DudeScreen33A (void)
|
|||
VID_LockBuffer ();
|
||||
}
|
||||
|
||||
|
||||
// low Detail
|
||||
void Draw_Bloom (void)
|
||||
{
|
||||
int x,y;
|
||||
byte *pbuf;
|
||||
int mycol;
|
||||
int weedth = 12;
|
||||
return;
|
||||
// mycol = (int)r_tingecolor->value;
|
||||
// VID_UnlockBuffer ();
|
||||
// S_ExtraUpdate ();
|
||||
// VID_LockBuffer ();
|
||||
|
||||
for (y=0 ; y<r_refdef.vrect.height ; y++)
|
||||
{
|
||||
int t, e;
|
||||
|
||||
pbuf = (byte *)(vid.buffer + vid.rowbytes * y);
|
||||
|
||||
for (x=0 ; x<vid.width ; x+=weedth)
|
||||
{
|
||||
for(e=0;e<weedth;e++){
|
||||
pbuf[x+e] = pbuf[x];
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// VID_UnlockBuffer ();
|
||||
// S_ExtraUpdate ();
|
||||
// VID_LockBuffer ();
|
||||
}
|
||||
|
||||
#if 0
|
||||
// Dunno what this'll be.
|
||||
void Draw_Something (void)
|
||||
{
|
||||
int x,y;
|
||||
byte *pbuf;
|
||||
byte *pbaf;
|
||||
int mycol;
|
||||
int phil = 4;
|
||||
int philclampx;
|
||||
int philclampy;
|
||||
float splet;
|
||||
int bloome;
|
||||
int ee;
|
||||
mycol = (int)r_tingecolor->value;
|
||||
VID_UnlockBuffer ();
|
||||
S_ExtraUpdate ();
|
||||
VID_LockBuffer ();
|
||||
splet = vid.height;
|
||||
bloome = 16300;
|
||||
|
||||
// for (ee=0; ee<vid.width*vid.height; ee++)
|
||||
// pbaf[ee] = vid.buffer + ee;
|
||||
//pbaf = (byte *)(vid.buffer + vid.rowbytes*y);
|
||||
for (y=0 ; y<vid.height ; y++)
|
||||
{
|
||||
int t;
|
||||
|
||||
pbuf = (byte *)(vid.buffer + vid.rowbytes*y);
|
||||
pbaf = (byte *)(vid.buffer + vid.rowbytes*y);
|
||||
|
||||
t = (y & 1) << 1;
|
||||
|
||||
for (phil=0 ; phil<12; phil++)
|
||||
for (x=0 ; x<vid.width ; x+=2)
|
||||
{
|
||||
|
||||
//pbuf[x] = addTable[44][pbuf[x]];
|
||||
// pbuf[x] = transTable
|
||||
// [transTable [pbuf[x - (vid.width * phil)]][pbuf[x - phil]]]
|
||||
// [transTable[pbuf[x + (vid.width * phil)]][pbuf[x + phil]]];
|
||||
// if (x > vid.width)
|
||||
philclampx = vid.width * phil;
|
||||
philclampy = vid.width * -phil;
|
||||
if (philclampx < 0) philclampx = 0;
|
||||
if (philclampx > vid.width * vid.height) philclampx = vid.width;
|
||||
if (philclampy < 0) philclampy = 0;
|
||||
if (philclampy > vid.width * vid.height) philclampy = vid.width;
|
||||
|
||||
|
||||
pbuf[x] = pbuf[x + (rand()&phil)];
|
||||
pbuf[x+1] = pbuf[x + 1 + (rand()&phil)];
|
||||
|
||||
pbuf[x] = transTable[pbuf[x+1]][pbuf[x]];
|
||||
|
||||
// pbuf[x] = host_colormap[pbuf[x] + (14000 & 0xFF00)];
|
||||
/*
|
||||
pbuf[x] = addTable[transTable
|
||||
[transTable [fbs[pbuf[x + (philclampx)]]][ fbs[pbuf[x + - phil]] ]]
|
||||
[transTable [fbs[pbuf[x + (philclampy)]]][fbs[pbuf[x + phil]] ]]
|
||||
][pbuf[x]];
|
||||
|
||||
pbuf[x+1] = addTable[transTable
|
||||
[transTable [fbs[pbuf[x + (philclampy)]]][fbs[pbuf[x + phil] ]]]
|
||||
[transTable [fbs[pbuf[x + (philclampx)]]][fbs[pbuf[x - phil] ]]]
|
||||
][pbuf[x+1]];
|
||||
*/
|
||||
// pbuf[x+1] = transTable
|
||||
// [transTable [pbuf[x + (philclampy)]][pbuf[x + phil]]]
|
||||
// [transTable[pbuf[x + (philclampx)]][pbuf[x - phil]]];
|
||||
/*
|
||||
pbuf[x] = transTable
|
||||
[transTable [pbuf[x + (philclampx)]][pbuf[x - phil]]]
|
||||
[transTable[pbuf[x + (philclampy)]][pbuf[x + phil]]];
|
||||
pbuf[x+1] = transTable
|
||||
[transTable [pbuf[x + (philclampy)]][pbuf[x + phil]]]
|
||||
[transTable[pbuf[x + (philclampx)]][pbuf[x - phil]]];
|
||||
*/
|
||||
|
||||
// pbuf[x] = pbuf[x + (int)splet];
|
||||
// pbuf[x+1] = pbuf[x - (int)splet];
|
||||
// pbuf[x+2] = pbuf[x + (int)splet];
|
||||
// pbuf[x+3] = pbuf[x - (int)splet];
|
||||
// transTable [pbuf[x - (vid.width * 2)]][pbuf[x - 2]]
|
||||
|
||||
// transTable[pbuf[x + (vid.width * 2)]][pbuf[x + 2]]
|
||||
//[pbuf[x + (vid.width * 2)]];
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
VID_UnlockBuffer ();
|
||||
S_ExtraUpdate ();
|
||||
VID_LockBuffer ();
|
||||
}
|
||||
#endif
|
||||
//=============================================================================
|
||||
|
||||
/*
|
||||
================
|
||||
Draw_BeginDisc
|
||||
|
|
|
@ -1097,9 +1097,7 @@ void Draw_Init_Cvars();
|
|||
//TW void CDAudio_Init_Cvars();
|
||||
// 2001-09-18 New cvar system by Maddes (Init) end
|
||||
|
||||
|
||||
|
||||
void VID_SetPalette2 (unsigned char *palette)
|
||||
void VID_SetPalette2 (unsigned char *palette)
|
||||
{
|
||||
byte *pal;
|
||||
unsigned r,g,b;
|
||||
|
@ -1111,7 +1109,8 @@ void VID_SetPalette2 (unsigned char *palette)
|
|||
FILE *f;
|
||||
char s[255];
|
||||
float gamma = 0;
|
||||
Con_Printf ("Making 8to24 lookup tables...");
|
||||
|
||||
fprintf(stderr,"\nGenerating 8to24 lookup tables... ");
|
||||
//
|
||||
// 8 8 8 encoding
|
||||
//
|
||||
|
@ -1138,11 +1137,12 @@ void VID_SetPalette2 (unsigned char *palette)
|
|||
d_8to24table[0] &= 0x000000; // black is black
|
||||
|
||||
|
||||
// if (!d_8to24table)
|
||||
// Con_Printf ("FAILED!\n");
|
||||
// else
|
||||
// Con_Printf ("!\n");
|
||||
if (!d_8to24table)
|
||||
printf(stderr,"FAILED!\n");
|
||||
else
|
||||
fprintf(stderr,"[DONE]");
|
||||
}
|
||||
|
||||
#ifdef GLOBOT
|
||||
void Bot_Init (void);
|
||||
#endif
|
||||
|
|
120
engine/wad.c
120
engine/wad.c
|
@ -80,87 +80,27 @@ void W_LoadWadFile (char *filename)
|
|||
wad_base = fileinfo->data; // 2001-09-12 Returning information about loaded file by Maddes
|
||||
|
||||
header = (wadinfo_t *)wad_base;
|
||||
|
||||
|
||||
if (header->identification[0] != 'W'
|
||||
|| header->identification[1] != 'A'
|
||||
|| header->identification[2] != 'D'
|
||||
|| header->identification[3] != '2')
|
||||
Sys_Error ("Wad file %s doesn't have WAD2 id\n",filename);
|
||||
|
||||
|
||||
wad_numlumps = LittleLong(header->numlumps);
|
||||
infotableofs = LittleLong(header->infotableofs);
|
||||
wad_lumps = (lumpinfo_t *)(wad_base + infotableofs);
|
||||
|
||||
for (i=0, lump_p = wad_lumps ; i<wad_numlumps ; i++,lump_p++)
|
||||
{
|
||||
lump_p->filepos = LittleLong(lump_p->filepos);
|
||||
lump_p->size = LittleLong(lump_p->size);
|
||||
|
||||
|
||||
W_CleanupName (lump_p->name, lump_p->name);
|
||||
if (lump_p->type == TYP_QPIC){
|
||||
SwapPic ( (qpic_t *)(wad_base + lump_p->filepos));
|
||||
// leilei - quick palette translation
|
||||
/*
|
||||
if (rmap_ready){
|
||||
int bah;
|
||||
for (bah = 0; bah < lump_p->size; bah++)
|
||||
{ }
|
||||
// lump_p->size[bah] = coltranslate[lump_p->size[bah]];
|
||||
|
||||
}
|
||||
*/
|
||||
// leilei - quick palette translation
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// leilei - this one is for 'extra' interface stuff
|
||||
// it is not required by the engine, but will load it
|
||||
// if it finds it
|
||||
void W_LoadWadFileExtra (char *filename)
|
||||
{
|
||||
lumpinfo_t *lump_p;
|
||||
wadinfo_t *header;
|
||||
unsigned i;
|
||||
int infotableofs;
|
||||
loadedfile_t *fileinfo; // 2001-09-12 Returning information about loaded file by Maddes
|
||||
|
||||
fileinfo = COM_LoadHunkFile (filename);
|
||||
if (!fileinfo){
|
||||
Con_Printf ("W_LoadWadFileExtra: couldn't load %s\n\nNot panicking, moving on", filename);
|
||||
hasextra = 0;
|
||||
return;
|
||||
}
|
||||
wad_extra = fileinfo->data; // 2001-09-12 Returning information about loaded file by Maddes
|
||||
|
||||
header = (wadinfo_t *)wad_extra;
|
||||
|
||||
if (header->identification[0] != 'W'
|
||||
|| header->identification[1] != 'A'
|
||||
|| header->identification[2] != 'D'
|
||||
|| header->identification[3] != '2')
|
||||
Sys_Error ("Wad file %s doesn't have WAD2 id\n",filename);
|
||||
|
||||
wad_numlumps = LittleLong(header->numlumps);
|
||||
infotableofs = LittleLong(header->infotableofs);
|
||||
wad_lumps = (lumpinfo_t *)(wad_extra + infotableofs);
|
||||
|
||||
for (i=0, lump_p = wad_lumps ; i<wad_numlumps ; i++,lump_p++)
|
||||
{
|
||||
lump_p->filepos = LittleLong(lump_p->filepos);
|
||||
lump_p->size = LittleLong(lump_p->size);
|
||||
W_CleanupName (lump_p->name, lump_p->name);
|
||||
if (lump_p->type == TYP_QPIC)
|
||||
SwapPic ( (qpic_t *)(wad_extra + lump_p->filepos));
|
||||
SwapPic ( (qpic_t *)(wad_base + lump_p->filepos));
|
||||
}
|
||||
hasextra = 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
=============
|
||||
W_GetLumpinfo
|
||||
|
@ -198,15 +138,6 @@ void *W_GetLumpName (char *name)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
void *W_GetLumpName2 (char *name)
|
||||
{
|
||||
lumpinfo_t *lump;
|
||||
|
||||
lump = W_GetLumpinfo (name);
|
||||
|
||||
return (void *)(wad_extra + lump->filepos);
|
||||
}
|
||||
|
||||
void *W_GetLumpNum (int num)
|
||||
{
|
||||
lumpinfo_t *lump;
|
||||
|
@ -229,15 +160,6 @@ automatic byte swapping
|
|||
|
||||
void SwapPic (qpic_t *pic)
|
||||
{
|
||||
/*// leilei - quick palette translation
|
||||
if (rmap_ready){
|
||||
int bah;
|
||||
for (bah = 0; bah < pic->width*pic->height; bah++)
|
||||
pic->data[bah] = coltranslate[pic->data[bah]];
|
||||
|
||||
}
|
||||
// leilei - quick palette translation
|
||||
*/
|
||||
pic->width = LittleLong(pic->width);
|
||||
pic->height = LittleLong(pic->height);
|
||||
|
||||
|
@ -375,40 +297,6 @@ byte *W_ConvertWAD3Texture(miptex_t *tex)
|
|||
return data;
|
||||
}
|
||||
|
||||
|
||||
byte *W_ConvertWAD3Texture2(miptex_t *tex)
|
||||
{
|
||||
byte *in, *data, *out, *pal;
|
||||
int d, p;
|
||||
|
||||
in = (byte *)((int) tex + tex->offsets[0]);
|
||||
data = out = malloc(tex->width * tex->height * 3);
|
||||
|
||||
if (!data)
|
||||
return NULL;
|
||||
|
||||
image_width = tex->width;
|
||||
image_height = tex->height;
|
||||
pal = in + (((image_width * image_height) * 85) >> 6);
|
||||
pal += 2;
|
||||
|
||||
for (d = 0;d < image_width * image_height;d++)
|
||||
{
|
||||
p = *in++;
|
||||
if (tex->name[0] == '{' && p == 255)
|
||||
out[0] = out[1] = out[2] = out[3] = 0;
|
||||
else
|
||||
{
|
||||
p *= 3;
|
||||
out[0] = pal[p];
|
||||
out[1] = pal[p+1];
|
||||
out[2] = pal[p+2];
|
||||
}
|
||||
out += 3;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
byte *W_ConvertWAD3TextureFTE(miptex_t *tex, int *width, int *height, int alphaed) //returns rgba
|
||||
{
|
||||
byte *in, *data, *out, *pal;
|
||||
|
@ -739,5 +627,3 @@ void Mod_ParseInfoFromEntityLump(char *data) //actually, this should be in the m
|
|||
skyrotate = VectorNormalize(skyaxis);
|
||||
// R_SetSky(skyname, skyrotate, skyaxis);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -113,30 +113,27 @@ static char end1[] =
|
|||
"\x1b[?7h\x1b[40m\x1b[2J\x1b[0;1;41m\x1b[1;1H QUAKE: The Doomed Dimension \x1b[33mby \x1b[44mid\x1b[41m Software \x1b[2;1H ---------------------------------------------------------------------------- \x1b[3;1H CALL 1-800-IDGAMES TO ORDER OR FOR TECHNICAL SUPPORT \x1b[4;1H PRICE: $45.00 (PRICES MAY VARY OUTSIDE THE US.) \x1b[5;1H \x1b[6;1H \x1b[37mYes! You only have one fourth of this incredible epic. That is because most \x1b[7;1H of you have paid us nothing or at most, very little. You could steal the \x1b[8;1H game from a friend. But we both know you'll be punished by God if you do. \x1b[9;1H \x1b[33mWHY RISK ETERNAL DAMNATION? CALL 1-800-IDGAMES AND BUY NOW! \x1b[10;1H \x1b[37mRemember, we love you almost as much as He does. \x1b[11;1H \x1b[12;1H \x1b[33mProgramming: \x1b[37mJohn Carmack, Michael Abrash, John Cash \x1b[13;1H \x1b[33mDesign: \x1b[37mJohn Romero, Sandy Petersen, American McGee, Tim Willits \x1b[14;1H \x1b[33mArt: \x1b[37mAdrian Carmack, Kevin Cloud \x1b[15;1H \x1b[33mBiz: \x1b[37mJay Wilbur, Mike Wilson, Donna Jackson \x1b[16;1H \x1b[33mProjects: \x1b[37mShawn Green \x1b[33mSupport: \x1b[37mBarrett Alexander \x1b[17;1H \x1b[33mSound Effects: \x1b[37mTrent Reznor and Nine Inch Nails \x1b[18;1H For other information or details on ordering outside the US, check out the \x1b[19;1H files accompanying QUAKE or our website at http://www.idsoftware.com. \x1b[20;1H \x1b[0;41mQuake is a trademark of Id Software, inc., (c)1996 Id Software, inc. \x1b[21;1H All rights reserved. NIN logo is a registered trademark licensed to \x1b[22;1H Nothing Interactive, Inc. All rights reserved. \x1b[40m\x1b[23;1H\x1b[0m";
|
||||
static char end2[] =
|
||||
"\x1b[?7h\x1b[40m\x1b[2J\x1b[0;1;41m\x1b[1;1H QUAKE \x1b[33mby \x1b[44mid\x1b[41m Software \x1b[2;1H ----------------------------------------------------------------------------- \x1b[3;1H \x1b[37mWhy did you quit from the registered version of QUAKE? Did the \x1b[4;1H scary monsters frighten you? Or did Mr. Sandman tug at your \x1b[5;1H little lids? No matter! What is important is you love our \x1b[6;1H game, and gave us your money. Congratulations, you are probably \x1b[7;1H not a thief. \x1b[8;1H Thank You. \x1b[9;1H \x1b[33;44mid\x1b[41m Software is: \x1b[10;1H PROGRAMMING: \x1b[37mJohn Carmack, Michael Abrash, John Cash \x1b[11;1H \x1b[33mDESIGN: \x1b[37mJohn Romero, Sandy Petersen, American McGee, Tim Willits \x1b[12;1H \x1b[33mART: \x1b[37mAdrian Carmack, Kevin Cloud \x1b[13;1H \x1b[33mBIZ: \x1b[37mJay Wilbur, Mike Wilson \x1b[33mPROJECTS MAN: \x1b[37mShawn Green \x1b[14;1H \x1b[33mBIZ ASSIST: \x1b[37mDonna Jackson \x1b[33mSUPPORT: \x1b[37mBarrett Alexander \x1b[15;1H \x1b[33mSOUND EFFECTS AND MUSIC: \x1b[37mTrent Reznor and Nine Inch Nails \x1b[16;1H \x1b[17;1H If you need help running QUAKE refer to the text files in the \x1b[18;1H QUAKE directory, or our website at http://www.idsoftware.com. \x1b[19;1H If all else fails, call our technical support at 1-800-IDGAMES. \x1b[20;1H \x1b[0;41mQuake is a trademark of Id Software, inc., (c)1996 Id Software, inc. \x1b[21;1H All rights reserved. NIN logo is a registered trademark licensed \x1b[22;1H to Nothing Interactive, Inc. All rights reserved. \x1b[23;1H\x1b[40m\x1b[0m";
|
||||
static char end_engoo[] = "\x1b[0;1;46m\x1b[1;1H\
|
||||
ENGOO \x1b[37mversion 2.78 \n\
|
||||
\x1b[33m================================================================================\n\
|
||||
static char end_engoo[] = "\n\n\n================================================================================\n\
|
||||
_ _ ____ _ _ _ _ _____ __ \n\
|
||||
| | / |___ \\| | | | | / |_ _\\ \\/ / \n\
|
||||
| |/ |_ | | | | | |/ || | \\ / \n\
|
||||
| /| | |_| | |_| | /| || | / \\ \n\
|
||||
|_/ |_|____/ \\___/|_/ |_|___/_/\\_\\ \n\
|
||||
\n\
|
||||
\x1b[37mBased on QIP Engine by Maddes \n\
|
||||
================================================================================\n\
|
||||
\n\
|
||||
Programming by Based on Engoo by \n\
|
||||
eukara leileilol \n\
|
||||
\n\
|
||||
\x1b[33mProgramming by Linux port by \n\
|
||||
\x1b[37mleilei eukara \n\
|
||||
Special thanks to \n\
|
||||
LordHavoc - Lighting Andrewj - Dithering \n\
|
||||
Spike - Memory Tomaz - Snow/Rain and Bots \n\
|
||||
Fitz - Fog MH - Vid code /interpolation \n\
|
||||
Qbism - Optimizations Siggi - 2D Scaling \n\
|
||||
Mankrip - Optimizations Taniwha - Aspect \n\
|
||||
\n\
|
||||
\x1b[33mLOTS of HELP from \n\
|
||||
\x1b[37mLordHavoc - Lighting \n\
|
||||
Spike - Memory \n\
|
||||
Fitz - Fog \n\
|
||||
Qbism - Optimizations \n\
|
||||
Mankrip - Optimizations \n\
|
||||
Andrewj - Dithering \n\
|
||||
Tomaz - Snow/Rain and Bots \n\
|
||||
MH - Vid code /interpolation \n\
|
||||
Siggi - 2D Scaling \n\
|
||||
Taniwha - Aspect \n\
|
||||
\x1b[33m This engine is licensed under the \n\
|
||||
GNU GPL v2. Read COPYING for more. \n\e[0m";
|
||||
|
||||
This engine is licensed under the \n\
|
||||
GNU GPL v2. Read LICENSE for more. \n";
|
||||
|
||||
void Sys_Quit (void)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue