First step towards switch to GDK for video output

This commit is contained in:
eukos 2015-09-15 00:01:02 +02:00
parent 2bcf949d4c
commit c3f21ff02d
72 changed files with 558 additions and 508 deletions

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
@ -18,7 +19,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#include "globaldef.h" #include "globaldef.h"
#include "winquake.h" #include "winquake.h"

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
@ -8,7 +9,7 @@ of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details. See the GNU General Public License for more details.

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
@ -1400,18 +1401,8 @@ void CL_ParseServerMessage (void)
case svc_spawnstaticsound: case svc_spawnstaticsound:
CL_ParseStaticSound (); CL_ParseStaticSound ();
break; break;
#ifdef ASS_MIDI
case svc_cdtrack: // todo: cvar this check case svc_cdtrack:
cl.cdtrack = MSG_ReadByte ();
cl.looptrack = MSG_ReadByte ();
//if (whatamiplaying != cl.cdtrack)
if ( (cls.demoplayback || cls.demorecording) && (cls.forcetrack != -1) )
MIDIHIJACK ((byte)cls.forcetrack, true);
else
MIDIHIJACK ((byte)cl.cdtrack, true);
break;
#else
case svc_cdtrack:
cl.cdtrack = MSG_ReadByte (); cl.cdtrack = MSG_ReadByte ();
cl.looptrack = MSG_ReadByte (); cl.looptrack = MSG_ReadByte ();
if ( (cls.demoplayback || cls.demorecording) && (cls.forcetrack != -1) ) if ( (cls.demoplayback || cls.demorecording) && (cls.forcetrack != -1) )
@ -1420,9 +1411,6 @@ void CL_ParseServerMessage (void)
Music_Play ((byte)cl.cdtrack, true); Music_Play ((byte)cl.cdtrack, true);
break; break;
#endif
case svc_intermission: case svc_intermission:
cl.intermission = 1; cl.intermission = 1;
cl.completed_time = cl.time; cl.completed_time = cl.time;

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
@ -78,4 +79,4 @@ void CRC_ProcessByte(unsigned short *crcvalue, byte data)
unsigned short CRC_Value(unsigned short crcvalue) unsigned short CRC_Value(unsigned short crcvalue)
{ {
return crcvalue ^ CRC_XOR_VALUE; return crcvalue ^ CRC_XOR_VALUE;
} }

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
@ -335,12 +336,10 @@ qpic_t *Draw_CachePic (char *path)
if (!dat) if (!dat)
{ {
Con_Printf ("Draw_CachePic: failed to load %s\n", path); Con_DPrintf ("Draw_CachePic: failed to load %s\n", path);
return NULL; return NULL;
} }
// leilei - quick palette translation // leilei - quick palette translation
if (rmap_ready){ if (rmap_ready){
int bah; int bah;
@ -348,19 +347,7 @@ qpic_t *Draw_CachePic (char *path)
dat->data[bah] = coltranslate[dat->data[bah]]; dat->data[bah] = coltranslate[dat->data[bah]];
} }
// leilei - quick palette translation // leilei - quick palette translation
#if 0
printf("DUMPING IMAGE %s START:\n===================", path);
int bah2, bah3, bah4 = 0;
for (bah2 = 0; bah2 < dat->height; bah2++)
{
for (bah3 = 0; bah3 < dat->width; bah3++){
printf("%i,", dat->data[bah4]);
bah4++;
}
printf("\n");
}
printf("===================\nDUMPING IMAGE %s END\n", path);
#endif
SwapPic (dat); SwapPic (dat);
return dat; return dat;
} }
@ -696,8 +683,6 @@ void GrabColorMapEGA (void) //qbism - fixed, was a little screwy
} }
} }
extern cvar_t *temp2;
void GrabColorMapRGB (void) // leilei - for the r g b components looking ups etcetera. void GrabColorMapRGB (void) // leilei - for the r g b components looking ups etcetera.
{ {
int l, c, red, green, blue; int l, c, red, green, blue;
@ -2450,10 +2435,15 @@ void Draw_ConsoleBackground (int lines)
conback = Draw_CachePic ("gfx/conback.lmp"); conback = Draw_CachePic ("gfx/conback.lmp");
if(!conback) // Don't attempt to draw into a non-existing image if(!conback) // Don't attempt to draw into a non-existing image, make it black
return; {
Con_DPrintf("[CLIENT] Cannot find gfx/conback.lmp...");
conback = malloc(320*240);
conback->width = 320;
conback->height = 240;
}
sprintf (ver, "%4.2f", VERSION); sprintf (ver, "NGUNIX %4.2f", VERSION);
dest = conback->data + 320*186 + 320 - 11 - 8*strlen(ver); dest = conback->data + 320*186 + 320 - 11 - 8*strlen(ver);
for (x=0 ; x<strlen(ver) ; x++) for (x=0 ; x<strlen(ver) ; x++)
@ -2780,7 +2770,7 @@ void Draw_FadeScreen (void)
else if (mycol == 18) else if (mycol == 18)
pbuf[x] = transTable[42+rand()&5][ (pbuf[x])]; pbuf[x] = transTable[42+rand()&5][ (pbuf[x])];
else if (mycol == 19) else if (mycol == 19)
pbuf[x] = transTable[pbuf[x+rand()&5]][ (pbuf[x+(rand()&(int)temp2->value)])]; pbuf[x] = transTable[pbuf[x+rand()&5]][ (pbuf[x+(rand())])];
else else
{ {
if ((x & 3) != t) if ((x & 3) != t)

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
@ -105,10 +106,6 @@ cvar_t *loadscreen; // leilei - loadscreen
cvar_t *pausable; cvar_t *pausable;
cvar_t *temp1;
cvar_t *temp2;
cvar_t *temp3;
cvar_t *contact; // 2000-01-31 Contact cvar by Maddes cvar_t *contact; // 2000-01-31 Contact cvar by Maddes
cvar_t *max_fps; // 2001-12-16 MAX_FPS cvar by MrG cvar_t *max_fps; // 2001-12-16 MAX_FPS cvar by MrG
@ -348,10 +345,6 @@ void Host_InitLocal_Cvars (void)
pausable = Cvar_Get ("pausable", "1", CVAR_ORIGINAL); pausable = Cvar_Get ("pausable", "1", CVAR_ORIGINAL);
temp1 = Cvar_Get ("temp1", "0", CVAR_ORIGINAL);
temp2 = Cvar_Get ("temp2", "0", CVAR_ORIGINAL);
temp3 = Cvar_Get ("temp3", "0", CVAR_ORIGINAL);
contact = Cvar_Get ("contact", "", CVAR_ARCHIVE); // 2000-01-31 Contact cvar by Maddes contact = Cvar_Get ("contact", "", CVAR_ARCHIVE); // 2000-01-31 Contact cvar by Maddes
// 2001-12-16 MAX_FPS cvar by MrG start // 2001-12-16 MAX_FPS cvar by MrG start
@ -1190,7 +1183,7 @@ void Palette_Init (void)
fileinfo = COM_LoadHunkFile ("gfx/palette.lmp"); fileinfo = COM_LoadHunkFile ("gfx/palette.lmp");
if (!fileinfo) if (!fileinfo)
{ {
Con_Printf("[CLIENT] Using builtin 8bit palette...\n"); Con_DPrintf("[CLIENT] Using builtin 8bit palette...\n");
host_basepal = gfx_fallback_palette; host_basepal = gfx_fallback_palette;
host_otherpal = gfx_fallback_palette; host_otherpal = gfx_fallback_palette;
} }
@ -1219,13 +1212,13 @@ void Palette_Init (void)
fileinfo = COM_LoadHunkFile ("gfx/colormap.lmp"); fileinfo = COM_LoadHunkFile ("gfx/colormap.lmp");
if (!fileinfo){ if (!fileinfo){
Con_Printf("[CLIENT] gfx/colormap.lmp missing, generating... "); Con_DPrintf("[CLIENT] gfx/colormap.lmp missing, generating... ");
host_colormap = malloc(16384); host_colormap = malloc(16384);
Colormap_Generate(host_basepal, host_colormap); Colormap_Generate(host_basepal, host_colormap);
host_colormap_red = host_colormap; host_colormap_red = host_colormap;
host_colormap_green = host_colormap; host_colormap_green = host_colormap;
host_colormap_blue = host_colormap; host_colormap_blue = host_colormap;
Con_Printf("[DONE]\n"); Con_DPrintf("[DONE]\n");
} }
else else
{ {

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,6 +1,24 @@
/*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
// from Darkplaces // from Darkplaces
#include "globaldef.h" #include "globaldef.h"
#include <math.h> #include <math.h>

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
@ -617,8 +618,8 @@ SCR_Init_Cvars
cvar_t *scr_fov_adapt; cvar_t *scr_fov_adapt;
void SCR_Init_Cvars (void) void SCR_Init_Cvars (void)
{ {
scr_fov = Cvar_Get ("scr_fov", "90", CVAR_ORIGINAL); scr_fov = Cvar_Get ("fov", "90", CVAR_ORIGINAL);
scr_conspeed = Cvar_Get ("scr_conspeed", "300", CVAR_ORIGINAL); scr_conspeed = Cvar_Get ("scr_conspeed", "600", CVAR_ORIGINAL);
scr_showram = Cvar_Get ("scr_showram", "1", CVAR_ORIGINAL); scr_showram = Cvar_Get ("scr_showram", "1", CVAR_ORIGINAL);
scr_showturtle = Cvar_Get ("scr_showturtle", "0", CVAR_ORIGINAL); scr_showturtle = Cvar_Get ("scr_showturtle", "0", CVAR_ORIGINAL);
scr_showpause = Cvar_Get ("scr_showpause", "1", CVAR_ORIGINAL); scr_showpause = Cvar_Get ("scr_showpause", "1", CVAR_ORIGINAL);

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
@ -32,7 +33,6 @@ when crossing a water boudnary.
*/ */
cvar_t *lcd_x; cvar_t *lcd_x;
cvar_t *cl_splitscreen;
cvar_t *v_detail; cvar_t *v_detail;
cvar_t *lcd_yaw; cvar_t *lcd_yaw;
@ -1175,8 +1175,6 @@ static void V_CalcRefdef(void)
// ent is the player model (visible when out of body) // ent is the player model (visible when out of body)
ent = &cl_entities[cl.viewentity]; ent = &cl_entities[cl.viewentity];
if (splitpass)
ent = &cl_entities[clsplit.viewentity];
if (cl.intermission) if (cl.intermission)
{ {
@ -2090,8 +2088,7 @@ void V_Init_Cvars (void)
lcd_yaw = Cvar_Get ("lcd_yaw", "0", CVAR_ORIGINAL); lcd_yaw = Cvar_Get ("lcd_yaw", "0", CVAR_ORIGINAL);
// LEI low detail // LEI low detail
v_detail = Cvar_Get ("v_detail", "0", CVAR_ORIGINAL); v_detail = Cvar_Get ("v_detail", "0", CVAR_ORIGINAL);
cl_splitscreen = Cvar_Get ("cl_splitscreen", "0", CVAR_ORIGINAL);
v_centermove = Cvar_Get ("v_centermove", "0.15", CVAR_ORIGINAL); v_centermove = Cvar_Get ("v_centermove", "0.15", CVAR_ORIGINAL);
v_centerspeed = Cvar_Get ("v_centerspeed", "500", CVAR_ORIGINAL); v_centerspeed = Cvar_Get ("v_centerspeed", "500", CVAR_ORIGINAL);
v_iyaw_cycle = Cvar_Get ("v_iyaw_cycle", "1", CVAR_ORIGINAL); v_iyaw_cycle = Cvar_Get ("v_iyaw_cycle", "1", CVAR_ORIGINAL);

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
@ -13,7 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; f not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -40,10 +40,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// Audio Features // Audio Features
// ----------------------------------------- // -----------------------------------------
//#define DUMB // Use DUMB Module playback library *WIP*
#ifndef linux
#define ASS_MIDI // Use Apogee Sound System for MIDI playback only*WIP*
#endif
int inthedos; int inthedos;
//#define NOASM //#define NOASM

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -1,4 +1,5 @@
/* /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

143
splash.xpm Normal file
View file

@ -0,0 +1,143 @@
/* XPM */
static char * splash_xpm[] = {
"440 116 24 1",
" c None",
". c #000000",
"+ c #204A87",
"@ c #2E3436",
"# c #555753",
"$ c #888A85",
"% c #D3D7CF",
"& c #EEEEEC",
"* c #75507B",
"= c #BABDB6",
"- c #AD7FA8",
"; c #8F5902",
"> c #729FCF",
", c #3465A4",
"' c #5C3566",
") c #C4A000",
"! c #E9B96E",
"~ c #EDD400",
"{ c #FCE94F",
"] c #FCAF3E",
"^ c #C17D11",
"/ c #4E9A06",
"( c #FFFFFF",
"_ c #8AE234",
"........................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+................................................................................................................................................................................................................................................................................................................................................................................................................@@@.................................+.",
".+..............................................................................................................................................................................................................................................................................................................................................................................................................@@@@@@@@..............................+.",
".+.............................................................................................................................................................................................................................................................................................................................................................................................................@@@@@@@@@@.............................+.",
".+............................................................................................................................................................................................................................................................................................................................................................................................................@@@@@@@@##@@............................+.",
".+............................................................................................................................................................................................................................................................................................................................................................................................................@@@@@@@@@@@@@...........................+.",
".+...........................................................................................................................................................................................................................................................................................................................................................................................................@@@@@@@@@@@@@@...........................+.",
".+............................................................................................................#.#.#.#.#......................................................................................................................................................................................................................................................................................@@@@@@@@@@@@@@...........................+.",
".+.....................................................#.#.###.#...........#.#.#######.....................####$#$#$#$#$####.#...........#.###.#.#.............#.#.###.#.........#.###.#.#.............#.#####.#...........#.#.###.#.......#.#.###.#...............#.#.###.#.................................................................................................................................@@#@@@@@$#@@@@...........................+.",
".+....................................................#########.#...........####$######.................#.##$#$#$$$$$$$#$#$##.#.........####$####.#...........######$####.......#.#######.#...........######$####.#.......######$####.#.#.######$####.............######$####................................................................................................................................@#%%@@@&%&#@@@...........................+.",
".+.................................................##*#$$$$$$$$$##.......##$#$$$$=$$$$#$##...........####$$$$=$=$===$=$=$=$$$$####...####$$$$-$$$$##.#.......##$$*$$$$$$#*##.####$$$$-$$$$##.#.....#.*#$$-$$$-$$#$##.#.##*#$$$$$$*$$#$#$#$#$$$$$$*$$#$##.........##$$$$$$*$$#*##.............................................................................................................................@$@$#@#=@#=@@@...........................+.",
".+................................................#.##$$$$=$=$$#$##.....##$#$$=$=$=$$$$##...........####$$$$=$=============$$$$####.####$$$$=$=$$$$##.......##$$$$=$=$$$$#######$$$$=$=$$$$##.......##$$$$=$=$=$$$$#######$$$$=$=$=$$$$#$$$$$$=$=$=$$$$##.......##$$$$=$=$=$$##..............................................................................................................................@=@##;#$@@=@@@...........................+.",
".+...............................................##$$$$>-,-,-,-,$$#####$#$$=$,-,-,-,-,*,$#.#.......##$$=$===-,++++'+'++++,->==$-$$#$#$#-$,-,-,-,,,$$##.#...##$*,,,-,-,->$$#$#$#$,,-,-,-,,=$$##.#.#.##$-,-,-,-,-,>=$$$$#$$,*,-,-,-,*=$=$=$,-,-,-,-,-=$=$$####.##*#$*,-,-,-,-,$$#$#............................................................................................................................@$$#)))!@#=@@@@..........................+.",
".+................................................##$$>'+'+'+'++$#######$$=$+'+'+'+'+'+$$##.......##$$$$==,'+'+'+'+'+'+'+'+',$=$$$$#$#$$,'+'+'+'++=$$##...##$$+'+'+'+'+-=$$#$#$$,'+'+'+'+-=$$##.#.##$$+'+'+'+'+'+==$$$$$$$+'+'+'+'+==$=$=*+'+'+'+'+'=$=$$#######$$+'+'+'+'+'>$$##............................................................................................................................@@!)~~~{~~#@@@@..........................+.",
".+.............................................##$$==>++'+++'++=$=$$#$$-$==+'+++'+++++,=$$##.#.##$$$$==>++++'+++'+++++++'+++'++>$=$$$=$=,+++'+++'+==$$##.##$$=,+'+++++++==$=$-$=*+++++++'+==$$###$#$$=++'+++'+++'>==$=$=$=,+'+++'+++=%=%=%>+'+++'++++>==$=$$#$$$$=,+++++'+++--$$#*............................................................................................................................#))~]{~~))@@@@..........................+.",
".+..............................................##$$=+++++++++===$$$$$$$==+'+'+++'++++=$$$$##.###$$$==,++'+++++'+++'+'+++++'++++=$=$$$==,++'++++++%$$#######$$,'+++'+'++%==$$$=$='+'+++'+'===$$###$$==++++++++++++%==$=$==='+++++'+',%%=%=%=+'+++++'++>==$=$$$$$==>++++'+++++==$$##...........................................................................................................................;)~~{~~)];@@@@..........................+.",
".+.............................................##$$=,++++++++,%%==$=$=$==++++++++++++,==$$#$###$$=$=>+++++++++++++++++++++++++++====$==%,+++++++++%-$$#$###$$=-+++++++++%%==$=$==+++++++++,%==$$#$$===++++++++++++,%=======>+++++++++>%&%%%&%,+++++++++,=%==$=$==%%++++++++++>==$$##..........................................................................................................................@;^)^^^);=@@#@@.........................+.",
".+............................................##$$=-+++++++++%%==$=$=$==+++++++++++++%%==$$#$#$$=$=+++++++++++++++++++++++++++++%==$=$==++++++++++%==$$###$$==>+++++++++>====$==%,+++++++++==$$$$#$$==+++++++++++++=%=====%=++++++++++&%&%%%&%>++++++++++=%==$====%-++++++++++%==##..........................................................................................................................@@=!^)^!=%%#@#@@.........................+.",
".+...........................................##$$==+++++++++=&%%=-===%=++++++++++++++&%=$-$$$*$==>+++++++++++++++++++++++++++++,%%===-=%++++++++++%%$-$$#$#$$->+++++++++,&=======>+++++++++>==$$$-$==>+++++++++++++>%%=%=%%%>+++++++++,&%&%&%&&>++++++++++>%=%=%%&%>++++++++++>%==##.........................................................................................................................@#%=!$!=%&&=@@@@@........................+.",
".+..........................................##$$==,++++++++,&%%=====%%,+++++++++++++=%%$=$$$$$=$=++++++++++++++++++++++++++++++,%=====%%++++++++++&==$$###$$==>++++++++++%%=====%%+++++++++-%==$$$=$==++++++++++++++&%%===%%&++++++++++=&%&%%%&%&,++++++++++%%%%%%&%++++++++++>==$$##.......................................................................................................................@@&&%===&&&&&#@@@@........................+.",
".+.........................................##$$==>+++++++++&&&%%%%=%%,+++++++++++++,%%==$$$=$==>+++++++++++++++,,,>>,,+++++++++>%%===%%&++++++++++%%=$#$###$$==++++++++++&%%=====%,++++++++>%%==$=$===++++++++++++++,&%%=%=%%%+++++++++,&&%&%%%&%&,++++++++++>%&%&&&,++++++++++%==$$#......................................................................................................................@@$&&&%%&&&&&&%@@@@@.......................+.",
".+.........................................#$$$=>+++++++++>&&%%%%=%%,++++++++++++++-%==$=$$$===+++++++++++++,%%%&%&%&%%%>++++++=%=====%%++++++++++%==$$#####===++++++++++=%==$==%%>+++++++++%==$=$==%=+++++++++++++++%%=%===%%>+++++++++>%%%%=%=%%%=++++++++++>&&&&&%++++++++++=%$$##......................................................................................................................@@%&&&&&&&&&&&&@@@@@@......................+.",
".+.......................................##$$==%+++++++++>&&%&%%%&%,+++++++++++++++&%%==$====%,++++++++++++>&&%&%%%%%%%%%&>++++>=-===%%>+++++++++,&%==$$#$#$$==++++++++++>%%=====%>+++++++++>&=======&+++++++++++++++>%%%%=%%&%++++++++++>&&%%=%=%%&=,+++++++++,&&&&&,+++++++++,%-=$##....................................................................................................................@@@&&&&&&&&&&&&&@@@@@@@.....................+.",
".+........................................##$$=,+++++++++%&%&%&%%%,+++++++++++++++>%%==$=$==%,+++++++++++,%%%%%====$====%=%=>++====$==%=++++++++++&==$$###$#$=%++++++++++>%====$==%+++++++++,%%=====%%++++++++++++++++&%%=%=%%&=+++++++++,&%%=====%=%%>+++++++++,%&&&>++++++++++>==$$##..................................................................................................................@@@#=&&&%&&&&&%%==@@@@@@.....................+.",
".+.......................................##-$=$+++++++++>&&&&&%&%,+++++++++++++++,%&%======%>+++++++++++,&%&%===$=$=$=$====%=>+===$====>+++++++++,%%=$#$###$$==,+++++++++>%%=====%%++++++++++&%%===%%%++++++++++++++++>&%%=%=%%&,+++++++++>&%%=======%%>++++++++++>&&>++++++++++,%==$$...................................................................................................................@@@$&&&&&&&&&&&%%%#@@@@@@....................+.",
".+......................................##$$==+++++++++,&&&%&%&%,++++++++++++++++$&%%==$==%=+++++++++++,&%%==$$$$#$#$#$$$$=$=$$$$$$$==%$++++++++++&==$$#####$$%,+++++++++,%==$=$==%,+++++++++=%=%===%=+++++++++++++++++%%=%===%%>++++++++++=%====$=$==%%=++++++++++,&&,+++++++++,==$$##.................................................................................................................@@@#&&&&&&&&&&&&&&&%@@@@@@....................+.",
".+.....................................##$$==,+,+,+,+,+>&&&&&&&,+,+,+,+,+,+,+,+,+&%%=-===%%,+++,+,+++,+&%%==$=$$#$#$#$#$$*$$$=$$$*$=$-%>+,+,+++,+,%%==$$###$$==>+,+,+,+,+,%%=====%%>+,+,+,+,+>&%%%%%%>+,+,+,+,+,+,+,+,+>%&%%=%%%%>+,+,+,+++>%%==$=$=$==%%&,,+,+,+,+,+>>,+,+,+,+,+>%=$$##................................................................................................................@@@&&&&&&&&&&&&&&&&&#@@@@@@...................+.",
".+....................................##$$==>+,+++,+++>&&&&&&%,+++,+++,+++,+++,+>%%=======>+++,+++,+++&%%==$$#$####.######$#$#$#$#$$==%,++,+++,++,&==$$#####$$%$++,+++,+++&====$==%%++,+++,+++&%%%%%%=,+++,+++,+++,+++,+%%%===%=%%,+++,+++,+>%%==$$$$$=$==%,++,+++,+++,+++,+++,++,%==$$.................................................................................................................@@$&&&&&&&&&&&&&&&&&%@@@@@@...................+.",
".+...................................##$$==>+,+,+,+,+,&&&&&&&,+,+,+,+,+,+,+,+,+,&&%%===%%%+,+,+,+,+,+>%%==$$$$####.####*#$#$#$#$#$#$$==>+,+,+,+,+,%%=$#$###$$==>+,+,+,+,+,=%==$====%,,+,+,+,+,=&%%%&%>+,+,+,+,,,+,+,+,+,>&%%===%%&=,+,+,+,+,+>%%==$$$$$====&=,+,+,+,+,+,+,+,+,+,+,=%=$#*...............................................................................................................@@@=&&&&&&&&&&&&&&&&&%@@@@@@...................+.",
".+....................................#$=$=+,+,+,+++,%&&&&&%,+,+,+++,,,+,+++,+,$&%%=====%,++,+,+,+++,%%==$$#$####.#.#.############$$=$%,,+++,+,+,,&==$$##.##$$==,+++,+,+,+>%%==$=$==>+,+,+++,+,%&%%%&=,+,+++,+>,,+++,+,+,%%=====%%%,,+,+,+++,,%==$$$$#$$$$==%=,+,+++,+,+,+++,+,+,+,==$$##..............................................................................................................@@@&&&&&&&&&&&&&&&&&&&@@@@@@@..................+.",
".+...................................$$==>,,,,,,,,,,>&&&&&&>,,,,,,,,=,,,,,,,,,,>%&%%=%=%>,,,,,,,,,,,%&%=$=$$#$#*#$#$#$#$#$#$#$#$#$$$$=%,,,,,,,,,,,&%==$####$$==%,,,,,,,,,,,&=-==$==%=,,,,,,,,,,&&&&&&>,,,,,,,,>>,,,,,,,,,>%%=%===%%>,,,,,,,,,,>%==$$$$$$$=$==%%>,,,,,,,,,,,,,,,,,,,>==$$##............................................................................................................@@@#&&&&&&&&&&&&&&&&&&&@@@@@@@..................+.",
".+..................................##$$=$,,,,,,,,,,&&&&&&,,,,,,,,,%>,,,,,,,,,>%%%%===%=,,,,,,,,,,,$&%=$$$$###$#$#$#$#$#$$$#$#$###$$==%,,,,,,,,,,,&==$$##.##$$==,,,,,,,,,,,%%==$=$===,,,,,,,,,,=&&&%&=,,,,,,,,>%,,,,,,,,,,%%%=====%%,,,,,,,,,,,%%==$$#$#$#$$==%%>,,,,,,,,,,,,,,,,,,=%==##.............................................................................................................@@@#&&&&&&&&&&&&&&&&&&&@@@@@@@..................+.",
".+.................................##$$==,,,,,,,,,,&&&&&&>,,,,,,,,%&,,,,,,,,,,%&%%=%=%%>,,,,,,,,,,,>%%==$$#$#$#$$$$=$=$=$=$=$$$$$$$====,,,,,,,,,,>%%=$#*###$$==%,,,,,,,,,,,&%=$=$==%%,,,,,,,,,,>&&&&&>,,,,,,,,,&,,,,,,,,,,>&%%===%=&=,,,,,,,,,,>%%==$$#$#$#*$==%%>,,,,,,,,,,,,,,,,,,%%$-##............................................................................................................@@@$&&&&&&%&&&&&&&&&&&&@@@@@@@..................+.",
".+................................##$$==,,,,,,,,,,>&&&&&,,,,,,,,,%&,,,,,,,,,,,&%%===%=%,,,,,,,,,,,,%%==$$#$#$$$$=$=$=$===$=$=$$$$$$$==%,,,,,,,,,,,&==$$##.##$$==>,,,,,,,,,,=%==$=$==%$,,,,,,,,,,&&&&&=,,,,,,,,>&%,,,,,,,,,,%%=======%#,,,,,,,,,,>==$$#######$$$$==%,,,,,,,,,,,,,,,,,>==$$##...........................................................................................................@@@$&&&&&&&&&&&&&&&&&&&@@@@@@@..................+.",
".+...............................##$$==>,,,,,,,,,>&&&&&>,,,,,,,,=&%,,,,,,,,,,>&%=%=%=%>,,,,,,,,,,,%&==$$$$$$$=>>>>>>>>>>>>>>>>>=$=$==%=,,,,,,,,,,>&%==$#.####==%>,,,,,,,,,,>%%==$====>,,,,,,,,,,%&&&&>,,,,,,,,>&&>,,,,,,,,,>%%===-=%%&,,,,,,,,,,,%==$*#$#####$$==%%%>,,,,,,,,,,,,,,,,&==$$##..........................................................................................................^~;#%&&&&&&&&&&&&&&&&!!@@@@@@...................+.",
".+...............................#$$==>,,,,,,,,,,%&&&&>,,,,,,,,=&&>,,,,,,,,,,%&=%===%%>,,,,,,,,,,,&==$$$$#$$=$,,,,,,,,,,,,,,,,,$=$=$===,,,,,,,,,,,&==$$##.##$$==>,,,,,,,,,,$%==$$$=$=%,,,,,,,,,,>&&&&>,,,,,,,,>&&=,,,,,,,,,,%%%=====%%>,,,,,,,,,,,%==$$##.#.##$$$$==%=,,,,,,,,,,,,,,,=%==$$##........................................................................................................^~]~;@&&&&&&&&&&&&&&&!~~@@@@@@~..................+.",
".+.............................##$$==>,>,>,>,>,>>&&&&>,>,,,>,>=&&&,>,>,>,,,>=&%%===%%%,>,>,>,>,>,>%%==$$$$$==>,>,>,>,>,>,,,>,>>%=====%=>,,,>,>,>,>%%=$##.#.##$$%>>,>,>,>,,,>%%==$=$==%>>,,,>,>,>,&&&&>,>,,,>,>>&&&,>,>,>,,,>>&%%=====%%>,,,>,>,>,>=%==$$##.#.##$$$$==%%>,,,>,>,>,>,>,>%%==$$##....................................................................................................^)^))~]~@@=&&&&&&&&&&&&&%~]@@@@@^~..................+.",
".+..............................##$$%>,,,,,,,,,,&&&&>,,,,,,,,=&&&,,,,,,,,,,,&%%=====%$,,,,,,,,,,,%%==$$#$$$$=,,,,,,,,,,,,,,,,,>=====%=>+,,,,,,,,,,&==$$##..#$$==>,,,,,,,,,,>%==$=$$$==>,,,,,,,,,,%&&&=,,,,,,,,>&&&>,,,,,,,,,,%%==$=$==%=,,,,,,,,,,,%%$$##.....####$$==%%>,,,,,,,,,,,,+%%%$$$$##..................................................................................................))])~~]~])@@$&&&&&&&&&&&&!]);@@;;~)..................+.",
".+.............................##==%>>,>,>,>,>,&&&&>,>,>,>,>>&&&%>,>,>,>,>,>%&%%=-=%%>,>,>,>,>,>>&%=$-$$$-$==>,>,>,>,>,>,>,>,>=%=%=%=&=>,>,>,>,>,>&%==##.#.##*$==>,>,>,>,>,>%%==$=$==%=>,>,>,>,>,>&&&>,>,>,>,>>&&&&>,>,>,>,>,>%%=====%%&>>,>,>,>,>,>%-=$#$##.;.##$$$$-%&=>,>,>,>,>,>,>,>%%==$$##.................................................................................................))~]~]~]~];@@#&&&&&&&&&&&=)])^^^))~].................+.",
".+............................##$$==>#>#>#>#>#>&&&>#>,>,>,>=&&&&>#>,>#>,>#>%%=%===%=>#>#>,>#>#>#>%%$$$$#$$==>#>#>,>#>#>,>#>#>#>%%===%%>,>#>#>#>#>>&==$$##.#.#$===>>#>#>#,,>#%%=$$$$$==%>>#>#>#>#>>&&&=>#>#>#>#>&&&&=>#>#>,>#>>=%%==$==%=%,>#,#>#>#>#>==$$##.......##$$==%#>,>#>#,#>#>#>#>=%$=$$##................................................................................................]~]~]~]~]~)@@@%&&&&&&&&&&!)~]))))~]~)................+.",
".+...........................##$$==>#>#>#>#>#>&&&>#>#>#>#>>&&&&>#>#>#>#>#>>&%%=====%>>$>#>#>#>#>%%==$$#$$$$=>>#>#>#>#>#>#>#>#>&&%%=%%%=>#>#>#>#>#>%%=$##.#.##$$==>#>#>#>#>#>=%==$=$===%>#>#>#>#>#>&&&>#>#>$>$>$&&&&>#>#>#>#>#>>&%======%%>#>#>#>#>#>$%==$$##.....##$$$$%%>#>#>#>#>#>#>#>#>=%==$$##.#.............................................................................................))~]~]~]~)~^@@%&&&&&&&&&%#))~)~)~]~]~)...............+.",
".+..........................##$$==>$>$>$>$>$>%&&>$>$>$>$>=&&&&&$>$>$>$>$>$&%%==$==%=>$>$>$>$>$>$&==$$###$$==>$>$>$>$>$>$>$>$>$&%%===%%>$>$>$>$>$>$&==$$##...##$=%$>$>$>$>$>$>%=$=$$$==%=>$>$>$>$>$=&&$>$>$>$>$>&&&&&>$>$>$>$>$>%%==$=$==%%>$>$>$>$>$>$%==$$##......#$#$=%=>$>$>$>$>$>$>$>$>=%==$$##.#............................................................................................)~]~]~]~~~~~#%&&&&&&&&&&@;)~]~]~~~]~]~]..............+.",
".+.........................##$$==>>>$>>>$>>>>&&>$>>>$>>>>&&&&&>>$>>>$>>>$>%%=-===%%>$>>>$>>>$>>>%%==$$#$$==>$>>>$>>>$>>>$>>>$>&&%%=%%&>>$>>>$>>>$>&%==##.#.##$$==>>>$>>>$>>>>&==$=$=$=%>$>>>$>>>$>>&&>>>$>>>$>>&&&&&%>>>$>>>$>>>%%==$====&=>$>>>$>>>$>=%==$$##.....##$$==&>>$>>>$>>>$>>>$>>>>%==$-$$##...........................................................................................))~]~]~]~]~])%&&&&&&&&=@@@))~]~]~]~]~]...............+.",
".+..........................#$===$>$>$>$>$>=&&>$>$>$>$>=&&&&&%>$>$>$>$>$>%%====$==%=>$>$>$>$>$>%%==$$###$$==>$>$>$>$>$>$>$>$>=&%%===%%>$>$>$>$>$>=&==$$##...##$$%=>$>$>$>$>$>%%$=$$$$$%%>$>$>$>$>$>%&=>$>$>$>$>&&&&&&=>$>$>$>$>$%%%==$=$==%=>$>$>$>$>$>%=$$##.......##$$==>$>$>$>$>$>$>$>$>$>=%==$$#$##.........................................................................................^]~~~]~]~]~]~];=&&&%%=#@@@;)~]~]~]~~)]................+.",
".+.........................$$==%>>$>$>$>$>$%&>$>>>$>$>=&&&&&&>$>>>$>$>$>>&%%==$==%=>$>$>$>$>$>$&%=$$#$#$#$$>$>$>>>$>$>$>$>$>$>%&%%=%%%=>$>$>$>$>>>%%=$##...##$$==>$>$>$>$>$>$%==$$$-$==%>>$>$>$>>>$>&>$>$>$>$>=&&&&&&%$>$>$>$>$>>%====$==%%>$>$>>>$>$>$>%=$$##.......##==%=>$>$>>>$>$>$>$>$>$>$=%=$=$$##........................................................................................^)]))~)~]~]~));@@@@@@@@@@@#))~]~)]])..................+.",
".+........................##$$===$$========&===$======&&&&&&&$$==$===$=$%%%==$=$===$=$====$$=$=%%=$#$###$#$==========$===$====&%%===%%===$$$==$===&==$$##...##$$%=$==$===$===%%==$$$$$==%==$=$===$$=&=$===$==$=%&%&%&%=$=$$$===$=%%==$=$==%%=$$$=$$====$%==$$##.......#$=====$=$=$$$===$==$====$===$=$$##........................................................................................^^^)))])~~))^;@@@@@@@@@@@;^)~~))^^...................+.",
".+.......................*$$$-============&==========&&&&&&&===========%%%==$=$==%=============&==$$#####$$==&%&&&===========%%%=%=%%&============&%==$#.#.##$$==%===========%%=$=$$$==%============&%=========&&&&&%&============%%====$==%%============>==$$##.....##$$=%========================%==$$#$##........................................................................................;;;^^)])^^#@@.......@@@^^)])^.....................+.",
".+......................##$$=============%%=========&&&&&&&%===========%%==$=$=$==%===========%%%=$##.#.##$$==%%&&===========%&=====%%%===========&==$$##...##$$==============%==$$$$$==%===========%=========%%&%&%%%&===========%====$=$==%%===========%%==$$#......##$$%=========================%==$$#$##...........................................................................................;;;;;@#............;^;^;......................+.",
".+.....................##$$==%=%=%=%=%=%%%=%=%=%=%=&&&&&&&&%=%=%=%=%=%%&%=$=$=$==%=%=%=%=%=%=%%&==$$##.####$$==&&%=%=%=%=%=%=%%%===%%%=%=%=%=%=%=%%%==#*...##$$==%=%=%=%=%=%=%%%==$$$$$=%%=%=%=%=%=%%%=%=%=%=%=&&&%&%&%%=%=%=%=%=%%&%=$=$===%%=%=%=%=%=%=%%%==$$##...##$$==%=%=%=%=%=%=%=%=%=%=%=%=%=%==$$$$##.............................................................................................;@...............@;@.......................+.",
".+....................##$$==%%/%/%/%/%/%%%/%/%/%/%%&&%&%&&%%/%/%/%/%/%%%%$=$$$$$%%/%/%/%/%/%/%%%%$$##.....##$$=%&%/%/%/%/%/%/%%=====%%%%/%/%/%/%/%%==$$##...##$$=%/%/%/%/%/%/%%==$$#$$$=%%/%/%/%/%/%/%/%/%/%/%/%&%%=%=%%/%/%/%/%/%/%%==$=$====%%/%/%/%/%/%%%=$$##.....##$$==%%/%/%/%/%/%/%/%/%/%/%/%/%%==$$$$##.......................................................................................................................................+.",
".+...................##$$==%%/%/%/%/%/%/%/%/%/%/%&&&%&%&&&%/%/%/%/%/%/%%==$$$=$==%%/%/%/%/%/%/%&==$$##...##$$==%%%%/%/%/%/%/%&%%=====&%/%/%/%/%/%/%%==$$##.##$$==%%/%/%/%/%/%%%%==$$$*$==%%/%/%/%/%/%/%/%/%/%/%&%&%%=%%&%/%/%/%/%/%%%%==$=$==%%%%/%/%/%/%/%%%-$$##...#.##==%%/%/%/%/%/%/%%&/%/%/%/%/%/%%%%==$$##.#....................................................................................................................................+.",
".+...................#$#$=%%%%%%%%%%%%%%%%%%%%%%%&&%%%&%&%%%%%%%%%%%%%%==$$$$$=$%%%%%%%%%%%%%%%%%$$##.....##$$==%%%%%%%%%%%%%%%=====%%%%%%%%%%/%%%%%=$$##.#.##$$=%%%%%%%%%%%%%&==$$#$$$$=%%%%%%%%%%%%%%%%%%%%%%%%=%===%%%%%%%%%%%%%%%%=$=$=$==%%%%%%%%%%%%%%%==$$##...##$$==%%%%/%/%%%%%%%&&%%%%%%%%%%%%/%%==$$##.....................................................................................................................................+.",
".+...................#$==%%%%%%%%%%%%%%%%%%%%%%&&&%%%%%&&%%%%%%%%%%%%&%=$$$$$$$-%%%%%%%%%%%%%%%&==$$##.....*#$$%%%%%%%%%%%%%%&%%=====%%%%%%%%%%%%%%&==$$##.##$$==%%%%%%%%%%%%%%%==$$#$$==%%%%%%%%%%%%%%%%%%%%%%&%%=====%%%%%%%%%%%%%%%=-==$=$==&%%%%%%%%%%%%%%==$$##.#.##$$=%%%%%%%%%%%%%%&&&%%%%%%%%%%%%%%%==$$$###..................................................................................................................................+.",
".+..................##$$=%%%%%%%%%%%%%%%%%%%%%%%&%%=%=%%%%%%%%%%%%%%&%=$$$$#$$$=%%%%%%%%%%%%%%%%%$$##.....##$$==%%%%%%%%%%%%%%%==$===%%%%%%%%%%%%%%%%$$##.####$$%%%%%%%%%%%%%%&==$$#$#$$==%%%%%%%%%%%%%%%%%%%%%%%==$=$==%%%%%%%%%%%%%%%==$$$=$==%%%%%%%%%%%%%%%==$###...##$$%%%%%%%%%%%%%%%&&&&%%%%%%%%%%%%%%==$$####.................................................................................................................................+.",
".+.................##*$=%%%%%%%%%%%%%%%%%%%%%&&&%%=%=%%&%%%%%%%%%%%%%%==$$#$#-$=%%%%%%%%%%%%%%%&%-=$#*##.##$$==%%%%%%%%%%%%%&&%======%%%%%%%%%%%%%%&%-$$#$#$#-$=%%%%%%%%%%%%%%&%==$$#$$$=%%%%%%%%%%%%%%%%%%%%%%&%%==$====&%%%%%%%%%%%%%%==$=$==%%&%%%%%%%%%%%%%%==$$##.##$$==&%%%%%%%%%%%%%&&&&&%%%%%%%%%%%%%%==$=$$##................................................................................................................................+.",
".+................##$$==&%&%&%&%&%&%&%&%&%&%&%%=%===%=%%&%&%&%&%&%&&%==$$#$#$$==%%&%&%&%&%&%&%&&%==$$##.####$$==&%&%&%&%&%&%&%%$=$=$=%&%&%&%&%&%&%&&%==$$#$#$$==%%&%&%&%&%&%&%&==$$###$$==%%&%&%&%&%&%&%&%&%&%&&%==$$$=$=%&%&%&%&%&%&%&====$$$==%%&%&%&%&%&%&%&%=$$####.##$$=%&%&%&%&%&%&%&&&&&&&%&%&%&%&%&%&%&==$=$$##....................................................................(.....(..(..(..(..(..(...(.......(..(((....((....((........+.",
".+...............##$$==&&&&&&&%&&&&&&&%&&&&&&%%%===%=%%&&&&&&&%&&&&&%=$$#$#$#$$=%&&&&&%&&&&&&&%&%%==$$#$#$#$$==%&&&&&&%&&&&&&%==$=$==%%&&&&&&&%&&&&&%%==$$$$$==%%&&&&&%&&&&&&&&%==$$###$$=%&&&%&&&&&&&%&&&&&&&%&%%==$$$==%%&&&%&&&&&&&&&==$=$=$==%%&&&%&&&&&&&%&%=$$#####$$==%%&&&&&&&%&&&&&&&&&&&&&&&%&&&&&&&%&%%==$$###..................................................................(.....(..((.(..(..(...(.(........(.....(..(..(..(..........+.",
".+..............##$$==%%%%%%%%%%%%%%%%%%%%%%%====$==%%%%%%%%%%%%%%&%%$$#####$$==%%%%%%%%%%%%%%%%&%%==$$#$#$$==%%%%%%%%%%%%%%&==$=$$$==%%%%%%%%%%%%%%&%%==$$$=$=%&%%%%%%%%%%%%%&==$$#####$$%%%%%%%%%%%%%%%%%%%%%%%==$$$$$==%%%%%%%%%%%%%%%==$$$$$==%%%%%%%%%%%%%%&==$$#####$$==%%%%%%%%%%%%%%&&&&&&&&%%%%%%%%%%%%%%%==$$##..................................................................(.....(..(.((..(..(....(.........(...((....((...(((........+.",
".+.............##$$==%%%%/%%%/%/%/%%%/%%%!&%=%==$====!%%%/%%%/%/%/&%==$$#####*$=%/%%%/%%%/%%%/%/%&%%==$=$=$==%%&%/%%%/%%%/%!%%==$=$==%%%%/%%%/%/%/%%%&%%=-===%%&%/%%%/%%%/%%%/&%==$$###$$==%%/%/%/%%%/%%%/%%%/%%%%==$$$$$=%%%/%/%/%%%/%!%%==$=$=$=%&%/%%%/%%%/%/%%==$$###$#$$-%!%/%%%/%%%/%%%&&&&&&&&!%%%/%%%/%/%/%%==$$$$##...............................................................(.....(..(..(..(..(...(.(........(.....(..(..(..(..(.......+.",
".+..............##$$=%%%%%%%%%%%%%%%%%%%%%%====$=$==%%%%%%%%%%%%%%%==$$##.#.#$==%%%%%%%%%%%%%%%%%%&%%==$====%%&%%%%%%%%%%%%%&==$$$$$==%%%%%%%%%%%%%%%%&%%=%=%%&%%%%%%%%%%%%%%%&==$$#####$$==%%%%%%%%%%%%%%%%%%%%%==$$#$#$$=%%%%%%%%%%%%%%==$$$$$=$==%%%%%%%%%%%%%%%==$$###$$$=%%%%%%%%%%%%%%%&&%&%&%&%%%%%%%%%%%%%%%%==$$$$##..............................................................((((..(..(..(...((...(...(.......(..(((....((....((........+.",
".+.............$$$$%=_=_=_=_=_=_=_=_=_=/&%====$=$==%%/=_=_=_=_=_=&%=$$##.#.##$$==_=_=_=_=_=_=_=_=_=%%%%%=%=%%%%/=_=_=_=_=_=_%%==$$$=$==_=_=_=_=_=_=_=_%%%&%&%%%_=_=_=_=_=_=_=_%%=$#####$$==%=_=_=_=_=_=_=_=_=_=/%=$-$$#$$==%%_=_=_=_=_=_=%==$=$=$==%%==_=_=_=_=_==%%==$$#$#$$==%=_=_=_=_=_=_=%&&%%%%%%%%===_=_=_=_=_=%====$$##........................................................................................................................+.",
".+............##$$=====================%%==$=$$$=$==============%%%$$##.....##$=========================%==================%%==$$#$$=$%=======================================%==$###.##$$==%==================%%==$$###$$==%============%%==$$$$$==%%=============%=$$$$#$#$$=%==============&%%=%=%=%%&================$$$$##.......................................................................................................................+.",
".+...........##$$==/%/%/%/%/%/%/%///%/&&=-==$-$=$==%%/%/%/%/%/%/%&==$$##...##$$==///%/%/%/%/%/%/%///%/%/%/%/%/%/%///%/%/%/%%%-=$$$$$$==/%/%/%/%/%///%/%/%/%/%/%/%///%/%/%/%/%/%%$-##.#.##-=%%/%/%///%/%/%/%/%/%/%%=$#$#$#*$=%/%/%///%/%/%/%%==$$$=$==&=/%/%/%/%/%///%-=$$$$$$==%=///%/%/%/%/%/%&%%===-=%%&=/%/%/%///%/%/=%==$$####....................................................................................................................+.",
".+..........##$$==/=/%/%/%/%/=/%/=/=/%%==$=$$$$$==%=/%/%/%/=/=/=%==$$##.....##$$%%/%/=/%/%/%/%/=/%/=/=/=/=/=/%/%/=/=/%/=/=/%%==$$#$#$$==/%/%/%/=/=/=/%/=/%/=/%/=/%/%/=/=/=/%/=%==$$...#.#$==%%/=/=/=/%/%/%/=/=/=%==$$#####$$=%/%/%/%/%/%/%%==$=$$$=$==%%/%/%/=/=/=/%%==$$$$#$$==%%/=/=/=/%/=/%=%%==$=$====%=/%/=/=/=/=/%/=%==$$####...................................................................................................................+.",
".+.........##$$====///=/=/=/=/=/=/=/%&====$$$$$==%=///=/=/=/=/=%%=$-##.....##$$==/=///=/=/=/=/=/=/=///=/=/=/=/=/=/=///=/=/=_%=$$#$#$$==%=/=/=/=/=/=///=/=/=/=/=/=/=///=/=/=/==%=$$##...##$$=%/=/=/=///=/=/=/=/=/%%$-#####$$==%=/=/=///=/=/=%==$=$$$==%%/=/=/=/=/=/=/=%==$$$$$==%%/=///=/=/=/=/=&%%==$=$====&%/=/=/=///=/=/%%==$=$$##..................................................................................................................+.",
".+.........#$$$===/=/=/=/=/=/=/=/=/%%==$$$$#$#$$==/=/=/=/=/=/=/%%$$##.......##$$=%/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/%%$$#####$$====/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=%$$##.....##$$%=/=/=/=/=/=/=/=/=/=%==$$##.##$$====/=/=/=/=/=/=%==$$$$$=$%%/=/=/=/=/=/=/=%==$$$$$==%=/=/=/=/=/=/=/=%==$$$$$$$==%%/=/=/=/=/=/=/====$$$$##.................................................................................................................+.",
".+.......##$$==%=///$///$///$///$/%&=-==$$#$#*$==///$///$///$/%%==$$##.......$$==///$///$///$///$///$///$///$///$///$///$//%==$$#####-===///$///$///$///$///$///$///$///$///$&==$$##...##$$==%//$///$///$///$///%%=$##.#.##$$-%/$///$///$///%%==$-$$$==%=///$///$///$/%%==$$$===%///$///$///$///%%==$$$$$=$==%%/$///$///$///$/%%==$$##................................................................................................................+.",
".+........##$$==/$/$/$/$/$/$/$/$/=%==$$#$###$$===$/$/$/$/$/$/=&==$$##.......##$$==/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/%=$$##.#.##=$%$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$=%=$$##.....##$$==/$/$/$/$/$/$/$/$/$%==$###...##$=%=/$/$/$/$/$/$=%=$$$$$$$==%=/$/$/$/$/$/$/%===$$$==%=/$/$/$/$/$/$/$%==$$#$#$#$$==%%%$/$/$/$/$/$/$/=%==$$##...............................................................................................................+.",
".+.......##$$==///$///$///$///$/=&===$$$###$$=$%=/$///$///$///%%=$##.........##==%$///$///$///$///$///$///$///$///$///$///=%==$$##.##$$===$///$///$///$///$///$///$///$///$/%%==$#.......##==%$///$///$///$///$/%%$$##.#.##$$==&//$///$///$//%==$$$$$$$=%=$///$///$///$/%===$=$==%=///$///$///$/=%==$$#$#$#$$==%%%$///$///$///$/=%==$$#$##............................................................................................................+.",
".+......##$$==/$/$/$/$/$/$/$/$/=&==$$#######$$==/$/$/$/$/$/$/%%==##...........#$===$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$>==$$##...##$$==/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$%==$$.........#$===$/$/$/$/$/$/$/$/$%==$$.....##$$==/$/$/$/$/$/$/=%==$$#$$$$=%>$/$/$/$/$/$/$%==$=$=$===$/$/$/$/$/$/$/%=$$####.##$$$$==%=/$/$/$/$/$/$/====$$##.............................................................................................................+.",
".+.....##$$==/////////////////>&%-==$$#####$$==/////////////=&==$$##.........##$$=%///////////////////////////////////////%=$*##.....*#$$%=/////////////////////////////////%-$$##.......##$$%=/////////////////%%=$##.....##-=%=/////////////%%==$$$$$==%=/////////////=&=======%%///////////////%=$$##.####$$=$-%%=///////////////==$$$$##..........................................................................................................+.",
".+......#$==$#/#///#/#/#/#/#/=&==$$####.##$#$==#/#/#/#/#///$&==$$##...........##$$==///#/////#/#/#///////#/#/#/#/////#/#===$$##.......##$=%=/#/#/#/#/////#/#/#///#/#/#/////%=$$##.........##$=%#/#/#///#/#/////#%==$#.......#$=$%$/#/#/////#/#===$$#$#$$==%>/#/#/////#///=%==$=$==%$/#///#/#/#/#/$%==$$.....##$#$$==%=/#/#/////////#/==$$#$...........................................................................................................+.",
".+.....*#$$///#///////#/#/#//&%%==$$##.#.##*$=$/#/#///#///#/%%$=##.............$$==%//#/#/#///#///////#/#/#/////#/#///$%%%==$$.#.....##$$==%$/////////#/#///////#///////#/%%==$$#........##$$==/#/#///#/#/#/////%=$*##.....##$$==%#///#/#/#///#%==$$#$#*$==&//#/#/#/////#/=%==$==%%/////#/#///#/#/==$$##.....##$$$$==%%/#/#/////#/#///==$$#$#.........................................................................................................+.",
".+....##$$=#///////////////$&==$$####...##$$=$/////////////=%=$##..............#$$==%#///////////////////////////////=%==$$$$..........#$$==%$///////////////////////////=%==$$#..........##$$==////////////////%==$#.......##$$==/////////////>=$$#$###$$===//////////////==$=$==%=///////////////==$#.........##$$==%%///////////////==$$##.........................................................................................................+.",
".+...##$$=/////////////////&%%==$$##.....##$$//////////////%==$$##.............##$$==%//////////////////////////////%&%===$$##.........##$$==%//////////////////////////=%==$$##..........#$$===////////////////==$$##.......*$-$%=/////////////==$$#$#$#=$==///////////////====$==%#//////////////%$-##.........*#$$==%%%//////////////#=$$##........................................................................................................+.",
".+....##$$///////////////#%==$$####......#$$$/////////////%==$$##...............##$$==%#/////////////////////////>%%%==$$$$##...........##$$==%=///////////////////////=%==$$##............#$$=$////////////////=$$##.........##$$=#/////////////$$#######$$==//////////////=$=$$$==$//////////////==$$...........##$$=$==%#//////////////$##.........................................................................................................+.",
".+....#$$/#/#/#//////////%====$$##.......##$#/////#///#/#/==$$##.................##$$==%=/////////#/////#/////$/%%=%==$$$$##.............##$$==%=/////////////////////%%==$$##.............##$$=//#/#/#///#/#/#/==$$#........##$$==/#////////////=$$##.##$$===$///#//////////=$-$$$==///////////////$$##...........##$$====%>/////#/////////##........................................................................................................+.",
".+....##$$==%=%%%%%%%%%=%==$$####.........##$$==%%%%%%%%%==$$##...................##$$==%=/#/#/#/#/#/#/#///#/=%%%==$=$$##.................##$$====%>/#/#/#/#/#/#///$=%%==$$##...............##$$==%=%%%%&%%%%====$$##.........##$$$$==%%%%%%%====$$##...####$$==%%%%%%%%%==$=$$#$#$$====%%%%%%%%%==$$##.............####$$==%=%%%%%%%=%==$$##.........................................................................................................+.",
".+.....##$$==-=%=%%%=%====$$#$##.........##$$=$==%=%=%====$$#$#....................##$$==%%%=///#///#///=%%%%%====$$$$##.#.................##$$==-=%%%=/#///#///$%%%=%==$$##.................$#$$====%=%=%=%=-==$$##...........##$$=$==%=%=%=-==$$##.#...##$$=$==-=%=%=%====$$$$#$$$$====%=%=%=%==$$$$##.............##$#*$====%=%=%=%==$=$$##........................................................................................................+.",
".+......##$$$$=$=$=$=$=$$$$##.............##$#$$=$=$=$=$$$$##.......................##$$$$====%%%%%%%%%%%=%====$$$$####.....................##$#$$====%=%%%%%%%%%=%==$$$$##...................##$$=$=$=$=$=$=$$$$##.............##$#$$=$=$=$=$$$$##.......####$$$$=$=$=$=$$$$#######$$$$=$=$=$=$=$$####.................##$$$$=$=$=$=$=$$$$##.........................................................................................................+.",
".+.....#.##$$$$-$$$=$$$$$$##...............##$#$$$$-$$$$$$##.........................##$$$$======%=%=%======$=$*$$#*##.......................##$#$$=$====%=%=%====$=$$$$##.....................##$$$$$$=$$$-$$#$##...............##$#$$$$$$-$$#$##.#.......####$$$$-$$$$$$#$##.#.#.##$#$$$$=$$$$$$#$##.................#.##$#$$$$$$=$$$$#$##..........................................................................................................+.",
".+........######$#$#$####.#.................#.######$####.#...........................####$$$$$$=$=$=$=$=$$$$#$##.#.............................##$#$$$$=$=$=$=$=$$$$####.......................#.##$#$#$#$#$####...................####$#$#$####.............######$########.......#.####$#$######.........................####$#$#$####.#...........................................................................................................+.",
".+.........#.###########.#...................#.#.#######.#.............................#.##$#$$$$-$$$-$$$$#$#$##.#...............................##$#$$$$-$$$-$$$$#$##.#.........................#.###########.#.....................#########.#...............#.#########.#.........#.#.#######.#...........................###########.#............................................................................................................+.",
".+........................................................................................#.######$###$####.#.......................................######$###$####...................................................................................................................................................................................................................................................................................+.",
".+...........................................................................................#.###.###.#.#.............................................#.#.###.#.#....................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+.....(........(......................................................................................................................................................................................................(.(.....................................(.(....................................................................................................................................................................................+.",
".+....(....(((...(.......((...((....((....((..........((....((...((..(((...................(..(((.........(((...((...(((..(((..(...(...((...(((...(((........((...(..(..(((........(...(...((...(((....(((...((........(.(..(((..(..(..(..(...((...(((....((...(.(.......(..(..(......((...(((...(..(..(..........(.....(...(((..(((..(..(...(((..(((..(((........(..(..(..(..(((...(((..(((........(((..(..(..(((........((...(((...(......((........+.",
".+....(...(......(........(..(..(..(..(..(...........(..(..(..(...(..(.....................(..(..(.......(.....(..(..(.....(...(...(..(..(..(..(..(.........(..(..((.(..(..(.......((.((..(..(..(..(..(.....(..(............(....(..(..(.(...(..(..(..(..(..(............(..(..(.....(..(..(..(..(..(.(...........(.....(..(.....(....((.(..(.....(....(..(.......(..(..((.(..(..(..(....(..(........(...(..(..(.........(.....(..(..(.....(..(.......+.",
".+....(...(......(........(...(((...(((..(((...((((....(...(..(...(..(((........((((.......(..(..(........((...(..(..((....(...(.(.(..((((..(((...(((.......((((..(.((..(..(.......(.(.(..((((..(((...(.....(..(............(((..(..(..((....((((..(((...((((............((((..(.....((((..(..(..(..((............(.....(..(.....(((..(.((...((...(((..(..(.......(..(..(.((..(..(..(((..(((.........(...((((..(((.......(.((..(((...(.......(........+.",
".+....(...(......(........(.....(.....(..(..(.........(....(..(...(.....(..................(..(..(..........(..(..(..(.....(...((.((..(..(..(..(..(.........(..(..(..(..(..(.......(...(..(..(..(..(..(.....(..(............(....(..(..(.(...(..(..(..(..(..(............(..(..(.....(..(..(..(..(..(.(...(.......(.....(..(.....(....(..(.....(..(....(..(.......(..(..(..(..(..(..(....(..(........(...(..(..(.........(..(..(.....(......(.........+.",
".+....(....(((...(........(...((....((....((.........((((...((....(..(((...................(..(((........(((....((...(.....(...(...(..(..(..(..(..(((.......(..(..(..(..(((........(...(..(..(..(..(...(((...((.............(((...((...(..(..(..(..(..(..(..(............(..(..((((..(..(..(((...(..(..(..(.......((((..(...(((..(((..(..(..(((...(((..(((.........((...(..(..(((...(((..(..(........(...(..(..(((........(((..(.....((((..((((.......+.",
".+.....(........(........................................................................................................................................................................................................................................................................................(............................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".+....................................................................................................................................................................................................................................................................................................................................................................................................................................................+.",
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.",
"........................................................................................................................................................................................................................................................................................................................................................................................................................................................"};

View file

@ -1,6 +1,6 @@
/* /*
Copyright (C) 1996-1997 Id Software, Inc.
Copyright (C) 2015 Marco "eukara" Hladik Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License modify it under the terms of the GNU General Public License

View file

@ -1,4 +1,24 @@
// vid_x.c -- general x video driver /*
Copyright (C) 2015 Marco "eukara" Hladik
Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
// vid_gdk.c -- general gdk video driver
#include <ctype.h> #include <ctype.h>
#include <sys/time.h> #include <sys/time.h>
@ -9,6 +29,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h> #include <gdk/gdk.h>
#include <gdk/gdkx.h> #include <gdk/gdkx.h>
#include <gdk/gdkkeysyms.h> #include <gdk/gdkkeysyms.h>
@ -16,110 +37,38 @@
#include "globaldef.h" #include "globaldef.h"
#include "d_local.h" #include "d_local.h"
static char *quake_xpm[] = { viddef_t vid; // global video state
"64 64 5 1",
" c None",
". c #000000",
"+ c #1C1C89",
"@ c #ABBAC6",
"# c #E21616",
" ",
" ",
" ",
" ",
" ....................................................... ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++#+#++#++######++###++++++++++++#++++++++++++++@ ",
" .+++++++#+#++#++#+#++#++#+#++++++++++++#++++++++++++++@ ",
" .+++++++#+#++#++#+#++#++#+#++++++++++++#++++++++++++++@ ",
" .+++++++#+#++#++#+#++#++#+#++++++++++++#++++++++++++++@ ",
" .+++++++#+#++#++#+#++#++#+#++#+#+++##++#+#++###+++++++@ ",
" .+++++++#+#++#++#+#++#++#+#++#+#++++#++#+#++#+#+++++++@ ",
" .+++++++#+#++#++#+#++#++#+#++#+#++###++##+++#+#+++++++@ ",
" .+++++++#+#++#++#+#++#++#+#++#+#++#+#++#+#++###+++++++@ ",
" .+++++++#+#++#++#+#++#++#+#++#+#++#+#++#+#++#+++++++++@ ",
" .+++++++#+#++#++#+#++#++#+#++#+#++#+#++#+#++#+#+++++++@ ",
" .+++++++######++#+#++#++###++####+####+#+#++###+++++++@ ",
" .+++++++++++++++++++++++++#+++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .++++++++++++++++++++++#++++++###+++++++++++++++++++++@ ",
" .+++++++++++++++++++++##+++++##+##++++++++++++++++++++@ ",
" .+++++++++++++++++++++##+++++##+##++++++++++++++++++++@ ",
" .+++++++++++++++++++++##+++++##+##++++++++++++++++++++@ ",
" .+++++++++++++++++++++##+++++##+##++++++++++++++++++++@ ",
" .+++++++++++++++++++++##+++++##+##++++++++++++++++++++@ ",
" .+++++++++++++++++++++##+++++##+##++++++++++++++++++++@ ",
" .+++++++++++++++++++++##+++++##+##++++++++++++++++++++@ ",
" .+++++++++++++++++++++##+++++##+##++++++++++++++++++++@ ",
" .+++++++++++++++++++++##+++++##+##++++++++++++++++++++@ ",
" .+++++++++++++++++++++##+++++##+##++++++++++++++++++++@ ",
" .+++++++++++++++++++++##+++++##+##++++++++++++++++++++@ ",
" .+++++++++++++++++++++##+++++##+##++++++++++++++++++++@ ",
" .+++++++++++++++++++++##+##++##+##++++++++++++++++++++@ ",
" .+++++++++++++++++++++##+##+++###+++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
" ",
" ",
" ",
" ",
" "
};
viddef_t vid; // global video state
unsigned short d_8to16table[256]; unsigned short d_8to16table[256];
int num_shades = 32; int num_shades = 32;
int gdk_initialized = 0; int gdk_initialized = 0;
int scalefactor = 0;
float mouse_x, mouse_y;
float old_mouse_x, old_mouse_y;
qboolean mouse_enabled;
cvar_t *m_filter;
extern int deathcam_yesiamdead; // eukara - deathca
int p_mouse_x;
int p_mouse_y;
int d_con_indirect = 0; int d_con_indirect = 0;
int vid_buffersize; int vid_buffersize;
static GdkWindow *x_win; static GtkWidget *x_win;
static GdkWindow *x_icon; static GtkWidget *x_splash_image, *x_splash;
static GdkGC *x_gc; static GdkGC *x_gc;
static GdkPixmap *background;
static GdkBitmap *mask;
#if 0 GdkDisplay *x_disp;
GdkScreen *x_screen;
static GdkRgbCmap *x_cmap = NULL; static GdkRgbCmap *x_cmap = NULL;
#endif
#if 0
static qboolean oktodraw = false;
#endif
static unsigned char *x_framebuffer = NULL; static unsigned char *x_framebuffer = NULL;
static int verbose = 0; static int verbose = 0;
static byte current_palette[768];
static long X11_highhunkmark; static long X11_highhunkmark;
static long X11_buffersize; static long X11_buffersize;
@ -141,206 +90,163 @@ void TragicDeath(int signal_num)
void ResetFrameBuffer(void) void ResetFrameBuffer(void)
{ {
int mem;
if (x_framebuffer)
free(x_framebuffer);
int mem; if (d_pzbuffer) {
if (x_framebuffer) D_FlushCaches();
free(x_framebuffer); Hunk_FreeToHighMark(X11_highhunkmark);
d_pzbuffer = NULL;
}
X11_highhunkmark = Hunk_HighMark();
if (d_pzbuffer) { /* alloc an extra line in case we want to wrap, and allocate the z-buffer */
D_FlushCaches(); X11_buffersize = vid.width * vid.height * sizeof(*d_pzbuffer);
Hunk_FreeToHighMark(X11_highhunkmark); vid_surfcachesize = D_SurfaceCacheForRes(vid.width, vid.height);
d_pzbuffer = NULL; X11_buffersize += vid_surfcachesize;
} d_pzbuffer = Hunk_HighAllocName(X11_buffersize, "video");
X11_highhunkmark = Hunk_HighMark();
/* alloc an extra line in case we want to wrap, and allocate the z-buffer */ if (d_pzbuffer == NULL)
X11_buffersize = vid.width * vid.height * sizeof(*d_pzbuffer); Sys_Error("Not enough memory for video mode\n");
vid_surfcachesize = D_SurfaceCacheForRes(vid.width, vid.height); vid_surfcache = (byte *) d_pzbuffer + vid.width * vid.height * sizeof(*d_pzbuffer);
X11_buffersize += vid_surfcachesize; D_InitCaches(vid_surfcache, vid_surfcachesize);
d_pzbuffer = Hunk_HighAllocName(X11_buffersize, "video"); mem = ((vid.width + 7) & ~7) * vid.height;
if (d_pzbuffer == NULL)
Sys_Error("Not enough memory for video mode\n");
vid_surfcache = (byte *) d_pzbuffer x_framebuffer = malloc(vid.width * vid.height * 3);
+ vid.width * vid.height * sizeof(*d_pzbuffer);
D_InitCaches(vid_surfcache, vid_surfcachesize); if (!x_framebuffer)
Sys_Error("VID: gdk_image_new failed\n");
mem = ((vid.width + 7) & ~7) * vid.height; vid.buffer = (byte *) (x_framebuffer);
vid.conbuffer = vid.buffer;
x_framebuffer = malloc(vid.width * vid.height * 3);
if (!x_framebuffer)
Sys_Error("VID: gdk_image_new failed\n");
vid.buffer = (byte *) (x_framebuffer);
vid.conbuffer = vid.buffer;
} }
// Called at startup to set up translation tables, takes 256 8 bit RGB values // Called at startup to set up translation tables, takes 256 8 bit RGB values
// the palette data will go away after the call, so it must be copied off if // the palette data will go away after the call, so it must be copied off if
// the video driver will need it again // the video driver will need it again
void VID_Init(unsigned char *palette) void VID_Init(unsigned char *palette)
{ {
GdkWindowAttr attr; int pnum;
struct sigaction sa; GdkWindowAttr attr;
XWMHints wmhints; struct sigaction sa;
XWMHints wmhints;
vid.width = 320; vid.width = 320;
vid.height = 320; vid.height = 200;
vid.maxwarpwidth = WARP_WIDTH;
vid.maxwarpheight = WARP_HEIGHT;
vid.numpages = 2;
vid.colormap = host_colormap;
/* vid.cbits = VID_CBITS;
vid.grades = VID_GRADES; */
vid.fullbright = 256 - LittleLong(*((int *) vid.colormap + 2048));
scalefactor = vid.width / 53; if ((pnum=COM_CheckParm("-winsize")))
{
if (pnum >= com_argc-2)
Sys_Error("[VIDEO] -winsize <width> <height>\n");
vid.width = Q_atoi(com_argv[pnum+1]);
vid.height = Q_atoi(com_argv[pnum+2]);
if (!vid.width || !vid.height)
Sys_Error("[VIDEO] Bad window width/height\n");
}
if ((pnum=COM_CheckParm("-width"))) {
if (pnum >= com_argc-1)
Sys_Error("[VIDEO] -width <width>\n");
vid.width = Q_atoi(com_argv[pnum+1]);
if (!vid.width)
Sys_Error("[VIDEO] Bad window width\n");
}
if ((pnum=COM_CheckParm("-height"))) {
if (pnum >= com_argc-1)
Sys_Error("[VIDEO] -height <height>\n");
vid.height = Q_atoi(com_argv[pnum+1]);
if (!vid.height)
Sys_Error("[VIDEO] Bad window height\n");
}
srandom(getpid()); vid.maxwarpwidth = WARP_WIDTH;
vid.maxwarpheight = WARP_HEIGHT;
vid.maxlowwidth = LOW_WIDTH;
vid.maxlowheight = LOW_HEIGHT;
vid.numpages = 2;
vid.colormap = host_colormap;
vid.fullbright = 256 - LittleLong(*((int *) vid.colormap + 2048));
srandom(getpid());
verbose = COM_CheckParm("-verbose");
verbose = COM_CheckParm("-verbose"); /* initialize GDK */
gtk_init(NULL, NULL);
gdk_rgb_init();
gdk_initialized = 1;
/* initialize GDK */ sigaction(SIGINT, 0, &sa);
gdk_init(NULL, NULL); sa.sa_handler = TragicDeath;
gdk_rgb_init(); sigaction(SIGINT, &sa, 0);
gdk_initialized = 1; sigaction(SIGTERM, &sa, 0);
sigaction(SIGINT, 0, &sa);
sa.sa_handler = TragicDeath;
sigaction(SIGINT, &sa, 0);
sigaction(SIGTERM, &sa, 0);
/* setup attributes for main window */ /* setup attributes for main window */
memset(&attr, 0, sizeof(attr)); memset(&attr, 0, sizeof(attr));
attr.width = 64;
attr.height = 64;
attr.title = "quake";
attr.event_mask = GDK_EXPOSURE_MASK | GDK_KEY_PRESS_MASK |
GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK;
attr.visual = gdk_visual_get_system();
attr.colormap = gdk_colormap_get_system();
attr.wmclass_name = "quake";
attr.wmclass_class = "quake";
attr.window_type = GDK_WINDOW_TOPLEVEL;
/* create the main window */ /* create the main window */
x_win = gdk_window_new(NULL, &attr, GDK_WA_TITLE | GDK_WA_WMCLASS | x_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GDK_WA_VISUAL | GDK_WA_COLORMAP); gtk_window_set_title(GTK_WINDOW(x_win), "NGUNIX X11");
gtk_window_set_default_size(GTK_WINDOW(x_win), vid.width, vid.height);
memset(&attr, 0, sizeof(attr)); gtk_widget_realize(x_win);
attr.width = 64;
attr.height = 64;
attr.title = "quake";
attr.event_mask = GDK_EXPOSURE_MASK | GDK_KEY_PRESS_MASK |
GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK;
attr.visual = gdk_visual_get_system();
attr.colormap = gdk_colormap_get_system();
attr.wmclass_name = "quake";
attr.wmclass_class = "quake";
attr.window_type = GDK_WINDOW_TOPLEVEL;
x_icon = gdk_window_new(x_win, &attr, GDK_WA_TITLE | GDK_WA_WMCLASS);
wmhints.initial_state = WithdrawnState;
wmhints.icon_window = GDK_WINDOW_XWINDOW(x_icon);
wmhints.icon_x = 0;
wmhints.icon_y = 0;
wmhints.window_group = GDK_WINDOW_XWINDOW(x_win);
wmhints.flags =
StateHint | IconWindowHint | IconPositionHint | WindowGroupHint;
XSetWMHints(GDK_WINDOW_XDISPLAY(x_win), GDK_WINDOW_XWINDOW(x_win),
&wmhints);
/* create the GC */ /* create the GC */
x_gc = gdk_gc_new(x_win); x_gc = gdk_gc_new(gtk_widget_get_window(x_win));
if (!x_gc) if (!x_gc)
Sys_Error("VID: Cannot make GC\n"); Sys_Error("VID: Cannot make GC\n");
background =
gdk_pixmap_create_from_xpm_d(x_win, &mask, NULL, quake_xpm);
gdk_window_shape_combine_mask(x_win, mask, 0, 0);
gdk_window_shape_combine_mask(x_icon, mask, 0, 0);
gdk_window_set_back_pixmap(x_win, background, False);
gdk_window_set_back_pixmap(x_icon, background, False);
/* map the window */ /* map the window */
gdk_window_show(x_win); gtk_widget_show_all(x_win);
#if 0 ResetFrameBuffer();
/* wait for first exposure event */
do {
while (gdk_events_pending()) {
event = gdk_event_get();
if (event) {
if (event->type == GDK_EXPOSE && !event->expose.count)
oktodraw = true;
}
}
} while (!oktodraw);
/*now safe to draw */
#endif
ResetFrameBuffer(); vid.rowbytes = vid.width;
vid.buffer = x_framebuffer;
vid.direct = 0;
vid.conbuffer = x_framebuffer;
vid.conrowbytes = vid.rowbytes;
vid.conwidth = vid.width;
vid.conheight = vid.height;
vid.aspect =
((float) vid.height / (float) vid.width) * (320.0 / 240.0);
vid.rowbytes = vid.width; // x_disp = gdk_display_get_default();
vid.buffer = x_framebuffer; // x_screen = gdk_display_get_default_screen(x_disp);
vid.direct = 0; // mouse_enabled = true;
vid.conbuffer = x_framebuffer;
vid.conrowbytes = vid.rowbytes;
vid.conwidth = vid.width;
vid.conheight = vid.height;
vid.aspect =
((float) vid.height / (float) vid.width) * (320.0 / 320.0);
} }
void VID_ShiftPalette(unsigned char *p) void VID_ShiftPalette(unsigned char *p)
{ {
VID_SetPalette(p); VID_SetPalette(p);
} }
void VID_SetPalette(unsigned char *palette) void VID_SetPalette(unsigned char *palette)
{ {
int i = 768; int i = 768;
#if 0
unsigned char *ptr;
unsigned int colors[256];
if (x_cmap) { unsigned char *ptr;
gdk_rgb_cmap_free(x_cmap); unsigned int colors[256];
}
#endif
while (i--) if (x_cmap)
current_palette[i] = palette[i]; gdk_rgb_cmap_free(x_cmap);
#if 0 ptr = palette;
ptr = current_palette;
for (i = 0; i < 256; i++) { for (i = 0; i < 256; i++) {
unsigned char r, g, b; unsigned char r, g, b;
r = *ptr++; r = *ptr++;
g = *ptr++; g = *ptr++;
b = *ptr++; b = *ptr++;
colors[i] = r << 16 | g << 8 | b; colors[i] = r << 16 | g << 8 | b;
} }
x_cmap = gdk_rgb_cmap_new(colors, 256);
#endif x_cmap = gdk_rgb_cmap_new(colors, 256);
} }
/* Called at shutdown */ /* Called at shutdown */
void VID_Shutdown(void) void VID_Shutdown(void)
{ {
Con_Printf("VID_Shutdown\n"); Con_Printf("VID_Shutdown\n");
} }
int XLateKey(int keysym) int XLateKey(int keysym)
@ -459,17 +365,18 @@ int XLateKey(int keysym)
} }
struct { struct {
int key; int key;
int down; int down;
} keyq[64]; } keyq[64];
int keyq_head = 0; int keyq_head = 0;
int keyq_tail = 0; int keyq_tail = 0;
void GetEvent(void) void GetEvent(void)
{ {
GdkEvent *event; int x, y;
GdkEvent *event;
event = gdk_event_get(); event = gdk_event_get();
if (event) if (event)
switch (event->type) { switch (event->type) {
@ -484,69 +391,56 @@ void GetEvent(void)
keyq_head = (keyq_head + 1) & 63; keyq_head = (keyq_head + 1) & 63;
break; break;
case GDK_ENTER_NOTIFY: case GDK_ENTER_NOTIFY:
XSetInputFocus(GDK_WINDOW_XDISPLAY(x_win), XSetInputFocus(GDK_WINDOW_XDISPLAY(gtk_widget_get_window(x_win)),
GDK_WINDOW_XWINDOW(x_icon), RevertToNone, GDK_WINDOW_XWINDOW(gtk_widget_get_window(x_win)), RevertToNone,
CurrentTime); CurrentTime);
break; break;
case GDK_LEAVE_NOTIFY: case GDK_LEAVE_NOTIFY:
XSetInputFocus(GDK_WINDOW_XDISPLAY(x_win), XSetInputFocus(GDK_WINDOW_XDISPLAY(gtk_widget_get_window(x_win)),
None, RevertToNone, CurrentTime); None, RevertToNone, CurrentTime);
break; break;
case GDK_MOTION_NOTIFY:
if (mouse_enabled == true) {
//mouse_x = (float) ((int)x - (int)(vid.width/2));
//mouse_y = (float) ((int)y - (int)(vid.height/2));
/*XWarpPointer(GDK_WINDOW_XDISPLAY(x_win), None,
GDK_WINDOW_XWINDOW(x_win),0,0,0,0,
(vid.width/2),(vid.height/2));*/
}
break;
default: default:
break; break;
} }
} }
// flushes the given rectangles from the view buffer to the screen // flushes the given rectangles from the view buffer to the screen
void VID_Update(vrect_t * rects) void VID_Update(vrect_t * rects)
{ {
while (rects) { scr_fullupdate = 0;
unsigned char buf[53 * 53 * 3]; while (rects) {
unsigned char *bufptr = buf; gdk_draw_indexed_image(gtk_widget_get_window(x_win), x_gc, rects->x, rects->y, rects->width, rects->height, GDK_RGB_DITHER_NONE, x_framebuffer, vid.width, x_cmap);
unsigned char sample;
int x, y;
for (y = 0; y < 53; y++) {
for (x = 0; x < 53; x++) {
sample =
x_framebuffer[y * scalefactor * vid.width +
x * scalefactor];
*bufptr++ = current_palette[sample * 3];
*bufptr++ = current_palette[sample * 3 + 1];
*bufptr++ = current_palette[sample * 3 + 2];
}
}
/* printf("drawing: %d %d %d %d %d %d\n", rects->x, rects->y,
rects->x, rects->y, rects->width, rects->height); */
/*gdk_draw_indexed_image(x_win, x_gc, rects->x, rects->y,
rects->width, rects->height,
GDK_RGB_DITHER_NONE,
x_framebuffer,
vid.width, x_cmap); */
gdk_draw_rgb_image(x_win, x_gc, 5, 5, 53, 53, GDK_RGB_DITHER_NONE,
buf, 53 * 3);
gdk_draw_rgb_image(x_icon, x_gc, 5, 5, 53, 53, GDK_RGB_DITHER_NONE,
buf, 53 * 3);
rects = rects->pnext; rects = rects->pnext;
} }
} }
static int dither; static int dither;
void VID_DitherOn(void) void VID_DitherOn(void)
{ {
if (dither == 0) { if (dither == 0)
vid.recalc_refdef = 1; {
dither = 1; vid.recalc_refdef = 1;
} dither = 1;
}
} }
void VID_DitherOff(void) void VID_DitherOff(void)
{ {
if (dither) { if (dither)
vid.recalc_refdef = 1; {
dither = 0; vid.recalc_refdef = 1;
} dither = 0;
}
} }
int Sys_OpenWindow(void) int Sys_OpenWindow(void)
@ -579,34 +473,7 @@ void Sys_SendKeyEvents(void)
} }
} }
} }
/*
char *Sys_ConsoleInput(void)
{
static char text[256];
int len;
fd_set readfds;
int ready;
struct timeval timeout;
timeout.tv_sec = 0;
timeout.tv_usec = 0;
FD_ZERO(&readfds);
FD_SET(0, &readfds);
ready = select(1, &readfds, 0, 0, &timeout);
if (ready > 0) {
len = read(0, text, sizeof(text));
if (len >= 1) {
text[len - 1] = 0; // rip off the /n and terminate
return text;
}
}
return 0;
}
*/
void D_BeginDirectRect(int x, int y, byte * pbitmap, int width, int height) void D_BeginDirectRect(int x, int y, byte * pbitmap, int width, int height)
{ {
// direct drawing of the "accessing disk" icon isn't supported under Linux // direct drawing of the "accessing disk" icon isn't supported under Linux
@ -617,14 +484,133 @@ void D_EndDirectRect(int x, int y, int width, int height)
// direct drawing of the "accessing disk" icon isn't supported under Linux // direct drawing of the "accessing disk" icon isn't supported under Linux
} }
void VID_HandlePause(qboolean pause){}
void IN_Move(usercmd_t *cmd){} /*
===========
VID_HandlePause --eukara
===========
*/
void VID_HandlePause (qboolean pause)
{
if (pause)
{
IN_DeactivateMouse ();
IN_ShowMouse ();
}
else
{
IN_ActivateMouse ();
IN_HideMouse ();
}
}
extern vec3_t deathcam_angles; //eukara - deathcam
void IN_Move (usercmd_t *cmd)
{
vec3_t tangles; // eukara - deathcam
/*
if (m_filter->value) {
mouse_x = (mouse_x + old_mouse_x) * 0.5;
mouse_y = (mouse_y + old_mouse_y) * 0.5;
}
*/
old_mouse_x = mouse_x;
old_mouse_y = mouse_y;
mouse_x *= sensitivity->value;
mouse_y *= sensitivity->value;
if (deathcam_yesiamdead){
tangles[0] = deathcam_angles[0]; tangles[1] = deathcam_angles[1]; tangles[2] = deathcam_angles[2];
}
else{
tangles[0] = cl.viewangles[0]; tangles[1] = cl.viewangles[1]; tangles[2] = cl.viewangles[2];
}
if ( (in_strafe.state & 1) || (lookstrafe->value && ((in_mlook.state & 1) ^ ((int)m_look->value & 1)) ))
cmd->sidemove += m_side->value * mouse_x;
else
tangles[YAW] -= m_yaw->value * mouse_x; // eukara - was cl.viewangles, not tangles
if ((in_mlook.state & 1) ^ ((int)m_look->value & 1))
V_StopPitchDrift ();
if ( ((in_mlook.state & 1) ^ ((int)m_look->value & 1)) && !(in_strafe.state & 1)) {
tangles[PITCH] += m_pitch->value * mouse_y;
if (!deathcam_yesiamdead){
if (tangles[PITCH] > m_lockdown->value) // eukara - was cl.viewangles, not tangles
tangles[PITCH] = m_lockdown->value; // ditto for the next few lines
if (tangles[PITCH] < m_lockup->value)
tangles[PITCH] = m_lockup->value;}
} else {
if ((in_strafe.state & 1) && noclip_anglehack)
cmd->upmove -= m_forward->value * mouse_y;
else
cmd->forwardmove -= m_forward->value * mouse_y;
}
if (deathcam_yesiamdead){
deathcam_angles[0] = tangles[0]; deathcam_angles[1] = tangles[1]; deathcam_angles[2] = tangles[2];
}
else{
cl.viewangles[0] = tangles[0]; cl.viewangles[1] = tangles[1]; cl.viewangles[2] = tangles[2];
}
mouse_x = mouse_y = 0.0;
}
void IN_Commands(){} void IN_Commands(){}
void IN_Init(){} void IN_Init(){}
void IN_Shutdown(){} void IN_Shutdown(){}
void VID_CreateSplash(){}
gboolean VID_KillSplash(gpointer data){
gtk_widget_destroy((GtkWidget*)data);
gtk_main_quit ();
return(FALSE);
}
void VID_CreateSplash()
{
gtk_init(NULL, NULL);
x_splash = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request (x_splash, 440, 116);
gtk_window_set_decorated(GTK_WINDOW (x_splash), FALSE);
gtk_window_set_position(GTK_WINDOW(x_splash),GTK_WIN_POS_CENTER_ALWAYS);
gtk_window_set_resizable(GTK_WINDOW(x_splash), FALSE);
x_splash_image = gtk_image_new_from_file("./splash.xpm");
gtk_container_add(GTK_CONTAINER(x_splash), x_splash_image);
gtk_widget_show_all (x_splash);
g_timeout_add (1000, VID_KillSplash, x_splash);
gtk_main ();
}
void VID_Init_Cvars(){} void VID_Init_Cvars(){}
void IN_Init_Cvars(){} void IN_Init_Cvars(){}
/*
===========
IN_DeactivateMouse --eukara
===========
*/
void IN_DeactivateMouse (void)
{
mouse_enabled = false;
}
/*
===========
IN_DeactivateMouse --eukara
===========
*/
void IN_ActivateMouse (void)
{
mouse_enabled = true;
}
void IN_HideMouse (void)
{
//XDefineCursor(GDK_WINDOW_XDISPLAY(x_win), GDK_WINDOW_XWINDOW(x_win), CreateNullCursor(x_disp, x_win));
}
void IN_ShowMouse (void)
{
//XDefineCursor (GDK_WINDOW_XDISPLAY(x_win), GDK_WINDOW_XWINDOW(x_win), None);
}