Fixes #6 by using xwd to take screenshots.

This commit is contained in:
eukos 2015-09-05 23:44:37 +02:00
parent d068c4613e
commit e6542eeca6
3 changed files with 120 additions and 331 deletions

8
README
View file

@ -8,7 +8,7 @@ This is a novelty engine rendering in software mode, aka on your CPU.
It uses standard X11 functions, so aside from that no dependencies are necessary.
For sound, please get the Open Sound System running.
It can run Xuake with all its fancy waterwarping, too.
It can run Q1 with all its fancy waterwarping, too.
************
Features
@ -42,8 +42,8 @@ For a release build (smaller and faster) issue 'make build_release'.
- Main sound is done via OSS, not ALSA - aoss will most likely not work
- The input is 'not good' right now
- Originally based on engoo by leileilol
- If you want to run Xuake with it, launch it with -data id1.
You can get a particles.spr file for Quake here: http://euksy.oldtimes-software.com/files/NGUNIX/particle.spr
- If you want to run Q1 with it, launch it with -data id1.
You can get a particles.spr file for Q1 here: http://euksy.oldtimes-software.com/files/NGUNIX/particle.spr
*********
Plans
@ -51,6 +51,6 @@ For a release build (smaller and faster) issue 'make build_release'.
- Menu system done primarily using CSQC
- HUD system done primarily using CSQC
- Make the bots less Xuake specific, controllable via SSQC
- Make the bots less Q1 specific, controllable via SSQC
- Ship with a game directory that can be used as a base and torn apart for any use
- Ship with a scratch QC base and the new engine extensions

View file

@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "globaldef.h"
int sb_scaled;
int sb_updates; // if >= vid.numpages, no update needed
int sb_updates; // if >= vid.numpages, no update needed
#define STAT_MINUS 10 // num frame for '-' stats digit
qpic_t *sb_nums[2][11];
@ -63,92 +63,6 @@ cvar_t *hud_inv_align;
void Sbar_MiniDeathmatchOverlay (void);
void Sbar_DeathmatchOverlay (void);
void M_DrawPic (int x, int y, qpic_t *pic);
/*
=============
Draw_SubPic
=============
*/
void Draw_SubPic(int x, int y, qpic_t *pic, int srcx, int srcy, int width, int height)
{
byte *dest, *source;
unsigned short *pusdest;
int v, u;
if ((x < 0) ||
(x + width > vid.width) ||
(y < 0) ||
(y + height > vid.height))
{
Sys_Error ("Draw_SubPic: bad coordinates");
}
source = pic->data + srcy * pic->width + srcx;
{
dest = vid.buffer + y * vid.rowbytes + x;
for (v=0 ; v<height ; v++)
{
Q_memcpy (dest, source, width);
dest += vid.rowbytes;
source += pic->width;
}
}
}
void Draw_SubPic_Scaled(int x, int y, qpic_t *pic, int srcx, int srcy, int width, int height)
{
byte *dest, *source;
unsigned short *pusdest;
int v, u, s;
float vmax, umax;
if ((x < 0) ||
(x + width > vid.width) ||
(y < 0) ||
(y + height > vid.height))
{
Sys_Error ("Draw_SubPic: bad coordinates");
}
source = pic->data + srcy * pic->width + srcx;
umax = pic->width * vid.width / (float)vid.vconwidth;
vmax = pic->height * vid.height / (float)vid.vconheight;
{
byte *dest = vid.buffer + (y*vid.height/vid.vconheight) * vid.rowbytes + (x*vid.width/vid.vconwidth);
for (v = 0; v < vmax; v++)
{
for (u = 0; u < umax; u++)
{
s = u * vid.vconwidth / vid.width + (v * vid.vconheight/vid.height) * pic->width;
dest[u] = source[s];
}
dest += vid.rowbytes;
}
}
}
/*
=============
Sbar_DrawSubPic
=============
JACK: Draws a portion of the picture in the status bar.
*/
void Sbar_DrawSubPic(int x, int y, qpic_t *pic, int srcx, int srcy, int width, int height)
{
if (sb_scaled){
//Draw_SubPic_Scaled (x, y+(vid.vconheight-SBAR_HEIGHT), pic, srcx, srcy, vid.vconwidth, vid.vconheight);
}else
Draw_SubPic (x, y+(vid.height-SBAR_HEIGHT), pic, srcx, srcy, width, height);
}
/*
===============
@ -304,7 +218,7 @@ void Sbar_Init (void)
hud_ammo_posy = Cvar_Get ("hud_ammo_posy", "0", CVAR_ARCHIVE | CVAR_ORIGINAL);
hud_ammo_align = Cvar_Get ("hud_ammo_align", "0", CVAR_ARCHIVE | CVAR_ORIGINAL);
hud_inv = Cvar_Get ("hud_inv", "1", CVAR_ARCHIVE | CVAR_ORIGINAL);
hud_inv = Cvar_Get ("hud_inv", "0", CVAR_ARCHIVE | CVAR_ORIGINAL);
hud_inv_numbers = Cvar_Get ("hud_inv_numbers", "1", CVAR_ARCHIVE | CVAR_ORIGINAL);
hud_inv_posx = Cvar_Get ("hud_inv_posx", "0", CVAR_ARCHIVE | CVAR_ORIGINAL);
hud_inv_posy = Cvar_Get ("hud_inv_posy", "-24", CVAR_ARCHIVE | CVAR_ORIGINAL);
@ -338,26 +252,8 @@ void Sbar_DrawPic (int x, int y, qpic_t *pic, int align)
Draw_Pic_Scaled (x, y, pic);
else
Draw_Pic (x, y, pic);
}
void Sbar_DrawPicHalf (int x, int y, qpic_t *pic, int align)
{
if (cl.gametype != GAME_DEATHMATCH)
x += ((vid.vconwidth - 320)>>1);
if(align)
y += SBAR_HEIGHT;
else
y += (vid.vconheight-SBAR_HEIGHT);
if (sb_scaled)
Draw_Pic_Scaled_Two (x, y, pic);
else
Draw_Pic (x, y, pic);
}
/*x
================
Sbar_DrawCharacter
@ -378,9 +274,9 @@ void Sbar_DrawCharacter (int x, int y, int num, int align)
if (sb_scaled)
Draw_Character_Scaled ( x /*+ ((vid.vconwidth - 320)>>1) */ + 4 , y, num);
Draw_Character_Scaled ( x + 4 , y, num);
else
Draw_Character ( x /*+ ((vid.width - 320)>>1) */ + 4 , y, num);
Draw_Character ( x + 4 , y, num);
}
/*
@ -478,13 +374,12 @@ void Sbar_DrawNum (int x, int y, int num, int digits, int color, int align)
//=============================================================================
int fragsort[MAX_SCOREBOARD];
int fragsort[MAX_SCOREBOARD];
int scoreboardtop[MAX_SCOREBOARD];
int scoreboardbottom[MAX_SCOREBOARD];
int scoreboardcount[MAX_SCOREBOARD];
int scoreboardlines;
char scoreboardtext[MAX_SCOREBOARD][20];
int scoreboardtop[MAX_SCOREBOARD];
int scoreboardbottom[MAX_SCOREBOARD];
int scoreboardcount[MAX_SCOREBOARD];
int scoreboardlines;
/*
===============
@ -516,7 +411,7 @@ void Sbar_SortFrags (void)
}
}
int Sbar_ColorForMap (int m)
int Sbar_ColorForMap (int m)
{
return m < 128 ? m + 8 : m + 8;
}
@ -710,11 +605,11 @@ Sbar_DrawFrags
*/
void Sbar_DrawFrags (void)
{
int i, k, l;
int top, bottom;
int x, y, f;
int xofs;
char num[12];
int i, k, l;
int top, bottom;
int x, y, f;
int xofs;
char num[12];
scoreboard_t *s;
Sbar_SortFrags ();
@ -1093,23 +988,16 @@ Sbar_DeathmatchOverlay
*/
void Sbar_MiniDeathmatchOverlay (void)
{
// qpic_t *pic; // 2000-07-30 DJGPP compiler warning fix by Norberto Alfredo Bensa
int i, k; //, l // 2001-12-10 Reduced compiler warnings by Jeff Ford
int top, bottom;
int x, y, f;
char num[12];
int i, k; //, l // 2001-12-10 Reduced compiler warnings by Jeff Ford
int top, bottom;
int x, y, f;
char num[12];
scoreboard_t *s;
int numlines;
int numlines;
if (sb_scaled){
if (vid.vconwidth < 512)
if ((sb_scaled && vid.vconwidth < 512) || (!sb_scaled && vid.width < 51))
return;
}
else
{
if (vid.width < 512)
return;
}
scr_copyeverything = 1;
scr_fullupdate = 0;

View file

@ -258,11 +258,6 @@ float CalcFovy (float fov_x, float width, float height)
return a;
}
// QUAKESPASM CODE BY SEZERO END
// leilei - i am a dirty bitch for not figuring this out on my own .-_-.
/*
====================
CalcFov
@ -270,32 +265,14 @@ CalcFov
*/
float CalcFov (float fov_x, float width, float height)
{
/*
float a;
float x;
float x;
if (fov_x < 1 || fov_x > 179){
fov_x = 179; // leilei - don't crash.
}
// Sys_Error ("Bad fov: %f", fov_x);
x = width/tan(fov_x/360*M_PI);
a = atan (height/x);
a = a*360/M_PI;
return a;
*/
float x;
x = width / tan(fov_x / 360 * M_PI);
return atan (height / x) * 360 / M_PI;
}
// MH's correct thing
float SCR_CalcFovX (float fov_y, float width, float height)
{
// bound, don't crash
@ -361,8 +338,7 @@ float CalcFovOld (float fov_x, float width, float height)
return a;
}
int yeahimconsoled;
int screenfake; // leilei - forcing 320x200 metrics in any resolution no matter what (HACK HACK HACK!)
int screenfake;
void SCR_StretchInit (void)
{
@ -375,12 +351,10 @@ void SCR_StretchInit (void)
vid.vconwidth = Q_atoi(com_argv[i+1]);
scalefactor = vid.width / vid.vconwidth;
scalefactorv = vid.height / vid.vconheight;
// vid.vconwidth = vid.width / scalefactor;
// vid.vconheight = vid.height / scalefactor; // leilei - variable height doesn't work right now.
yeahimconsoled = 1;
sb_scaled = 1;
menu_scaled = 1;
console_scaled = 1; // currently bugged
console_scaled = 1;
}
else if ((i = COM_CheckParm("-youpickedupaclip")) != 0){
@ -388,122 +362,63 @@ void SCR_StretchInit (void)
vid.vconheight = 32;
scalefactor = vid.width / vid.vconwidth;
scalefactorv = vid.height / 32;
// vid.vconwidth = vid.width / scalefactor;
// vid.vconheight = vid.height / scalefactor; // leilei - variable height doesn't work right now.
yeahimconsoled = 0;
sb_scaled = 1;
menu_scaled = 0;
console_scaled = 0; // currently bugged
console_scaled = 0;
}
else if ((i = COM_CheckParm("-conheight")) != 0){
vid.vconheight = Q_atoi(com_argv[i+1]);
scalefactor = vid.width / vid.vconwidth;
scalefactor = vid.width / vid.vconwidth;
scalefactorv = vid.height / vid.vconheight;
// vid.vconwidth = vid.width / scalefactor;
// vid.vconheight = vid.height / scalefactor; // leilei - variable height doesn't work right now.
yeahimconsoled = 1;
sb_scaled = 1;
menu_scaled = 1;
console_scaled = 1; // currently bugged
console_scaled = 1;
}
else{
else
scalefactor = 0; // we don't stretch.
}
if (scalefactor > (vid.height / 200))
scalefactor = vid.height / 200;
// scr_scale->value = scalefactor + scalefactorv / 2; // transfer are cvar's ovar.
/*
int i;
float eh;
if ((i = COM_CheckParm("-conwidth")) != 0){
vid.vconwidth = Q_atoi(com_argv[i+1]);
eh = vid.width / vid.vconwidth;
vid.vconwidth = vid.width / eh;
vid.vconheight = vid.height / eh; // leilei - variable height doesn't work right now.
yeahimconsoled = 1;
sb_scaled = 1;
menu_scaled = 1;
console_scaled = 0; // currently bugged
}
else
vid.vconwidth = vid.width;
*/
/*
if (yeahimconsoled){
vid.vconwidth &= 0xfff8; // make it a multiple of eight
// pick a conheight that matches with correct aspect
// vid.vconheight = vid.vconwidth*3 / 4;
if ((i = COM_CheckParm("-conheight")) != 0)
// vid.vconheight = Q_atoi(com_argv[i+1]);
vid.vconheight = vid.height / (vid.width / vid.vconwidth); // leilei - variable height doesn't work right now.
if (vid.vconheight < 200)
vid.vconheight = 200;
}
else
{
vid.vconwidth = vid.width;
vid.vconheight = vid.height;
}
*/
// if (vid.vconheight > vid.height)
// vid.vconheight = 200; // clamping it crashes, so fall back to 320x200 anyway
// if (yeahimconsoled)
// vid.vconheight = vid.height / (vid.width / vid.vconwidth); // leilei - variable height doesn't work right now.
if (scalefactor > (vid.height / 200))
scalefactor = vid.height / 200;
};
void SCR_CvarCheck (void)
{
scalefactor = scr_scale->value;
scalefactorv = scr_scale->value;
scalefactor = scr_scale->value;
scalefactorv = scr_scale->value;
if (scr_retroscale->value){
scalefactorv = vid.height / 200; // force old metrics etc!!
if (scr_retroscale->value)
{
scalefactorv = vid.height / 200;
scalefactor = scalefactorv;
retroscalefactor = 1;
}
else
retroscalefactor = 0;
scalefactor = scalefactorv;
retroscalefactor = 1;
}
else
retroscalefactor = 0;
if (scalefactorv > (vid.height / 200))
scalefactorv = vid.height / 200; // if we go beyond 320x200, then clamp!
// if (scalefactor > (vid.width / 320))
// scalefactor = vid.width / 320; // if we go beyond 320x200, then clamp!
if (scalefactor < 1)
scalefactor = 1;
if (scalefactorv < 1)
scalefactorv = 1;
SCR_StretchRefresh();
if (scalefactorv > (vid.height / 200))
scalefactorv = vid.height / 200;
if (scalefactor < 1)
scalefactor = 1;
if (scalefactorv < 1)
scalefactorv = 1;
SCR_StretchRefresh();
};
void SCR_StretchRefresh (void)
{
int i;
int i;
float eh;
if (!scalefactor)
return; // don't even try
return; // don't even try
if (!scalefactorv)
return; // don't even try
return; // don't even try
/*
screenfake = 0;
if (screenfake == 1){
vid.vconwidth = 320;
@ -563,6 +478,8 @@ void SCR_StretchRefresh (void)
return;
}
*/
if (scalefactorv < 1){
vid.vconheight = vid.height;
yeahimconsoled = 0;
@ -579,38 +496,33 @@ void SCR_StretchRefresh (void)
return; // avoid div0 at all costs
}
// if (scalefactor > (vid.height / 200))
// scalefactor = vid.height / 200;
// if (scalefactor < (vid.vconheight / vid.height))
// scalefactor = vid.vconheight / vid.height;
vid.vconwidth = vid.width / scalefactor;
vid.vconheight = vid.height / scalefactorv; // leilei - variable height doesn't work right now.
yeahimconsoled = 1;
sb_scaled = 1;
menu_scaled = 1;
console_scaled = 0; // currently bugged
yeahimconsoled = 1;
sb_scaled = 1;
menu_scaled = 1;
console_scaled = 0;
// minimum safeguards so we don't make a size too small to enter
// the evil land of crash city
if (vid.vconwidth < 320) vid.vconwidth = 320;
if (vid.vconheight < 200) vid.vconheight = 200;
if (vid.vconwidth < 320)
vid.vconwidth = 320;
if (vid.vconheight < 200)
vid.vconheight = 200;
if (vid.vconwidth > vid.width && vid.vconheight > vid.height){
if (vid.vconwidth > vid.width && vid.vconheight > vid.height)
{
vid.vconwidth = vid.width;
vid.vconheight = vid.height;
yeahimconsoled = 0;
sb_scaled = 0;
menu_scaled = 0;
sb_scaled = 0;
menu_scaled = 0;
console_scaled = 0;
scalefactor = 1;
scalefactor = 1;
scalefactorv = 1;
}
vid.recalc_refdef = 1; // yeah
};
vid.recalc_refdef = 1;
}
/*
=================
@ -688,7 +600,6 @@ static void SCR_CalcRefdef (void)
// notify the refresh of the change
R_ViewChanged (&vrect, sb_what_lines, vid.aspect);
// R_ViewChanged (vid.aspect);
}
//============================================================================
@ -714,14 +625,12 @@ void SCR_Init_Cvars (void)
scr_centertime = Cvar_Get ("scr_centertime", "2", CVAR_ORIGINAL);
scr_printspeed = Cvar_Get ("scr_printspeed", "8", CVAR_ORIGINAL);
scr_fov_adapt = Cvar_Get ("scr_fov_adapt", "1", CVAR_ARCHIVE | CVAR_ORIGINAL);
// 2000-01-12 Variable console height by Fett start
scr_conheight = Cvar_Get ("scr_conheight", "0.5", CVAR_ARCHIVE);
Cvar_SetRangecheck (scr_conheight, Cvar_RangecheckFloat, 0, 1);
Cvar_Set(scr_conheight, scr_conheight->string); // do rangecheck
// 2000-01-12 Variable console height by Fett end
Cvar_Set(scr_conheight, scr_conheight->string);
scr_scale = Cvar_Get ("scr_scale", "2", CVAR_ARCHIVE | CVAR_ORIGINAL); // leilei - default to 2
scr_retroscale = Cvar_Get ("scr_retroscale", "1", CVAR_ARCHIVE | CVAR_ORIGINAL); // leilei - default to 1 since it's fast now.....
scr_scale = Cvar_Get ("scr_scale", "2", CVAR_ARCHIVE | CVAR_ORIGINAL);
scr_retroscale = Cvar_Get ("scr_retroscale", "1", CVAR_ARCHIVE | CVAR_ORIGINAL);
scr_aspectmode = Cvar_Get ("scr_aspectmode", "1", CVAR_ARCHIVE | CVAR_ORIGINAL);
}
// 2001-09-18 New cvar system by Maddes (Init) end
@ -733,7 +642,7 @@ SCR_Init
*/
void SCR_Init (void)
{
Cmd_AddCommand ("screenshot",SCR_ScreenShot_f);
Cmd_AddCommand ("screenshot", SCR_ScreenShot_f);
scr_ram = Draw_PicFromWad ("ram");
scr_net = Draw_PicFromWad ("net");
@ -742,8 +651,6 @@ void SCR_Init (void)
scr_initialized = true;
}
/*
==============
SCR_DrawRam
@ -753,13 +660,13 @@ void SCR_DrawRam (void)
{
if (!scr_showram->value)
return;
if (!r_cache_thrash)
return;
if (menu_scaled)
Draw_Pic_Scaled (scr_vrect.x+32, scr_vrect.y, scr_ram);
else
Draw_Pic (scr_vrect.x+32, scr_vrect.y, scr_ram);
if (menu_scaled)
Draw_Pic_Scaled (scr_vrect.x+32, scr_vrect.y, scr_ram);
else
Draw_Pic (scr_vrect.x+32, scr_vrect.y, scr_ram);
}
/*
@ -774,22 +681,21 @@ void SCR_DrawTurtle (void)
if (!scr_showturtle->value)
return;
// 2001-10-20 TIMESCALE extension by Tomaz/Maddes start
// if (host_frametime < 0.1)
if (host_cpu_frametime < 0.1)
// 2001-10-20 TIMESCALE extension by Tomaz/Maddes end
{
count = 0;
return;
}
count++;
if (count < 3)
return;
if (menu_scaled)
Draw_Pic_Scaled (scr_vrect.x, scr_vrect.y, scr_turtle);
else
Draw_Pic (scr_vrect.x, scr_vrect.y, scr_turtle);
if (menu_scaled)
Draw_Pic_Scaled (scr_vrect.x, scr_vrect.y, scr_turtle);
else
Draw_Pic (scr_vrect.x, scr_vrect.y, scr_turtle);
}
/*
@ -803,10 +709,11 @@ void SCR_DrawNet (void)
return;
if (cls.demoplayback)
return;
if (menu_scaled)
Draw_Pic_Scaled (scr_vrect.x+64, scr_vrect.y, scr_net);
else
Draw_Pic (scr_vrect.x+64, scr_vrect.y, scr_net);
if (menu_scaled)
Draw_Pic_Scaled (scr_vrect.x+64, scr_vrect.y, scr_net);
else
Draw_Pic (scr_vrect.x+64, scr_vrect.y, scr_net);
}
// 2001-11-31 FPS display by QuakeForge/Muff start
@ -828,22 +735,27 @@ void SCR_DrawFPS (void)
return;
t = Sys_FloatTime ();
if ((t - lastframetime) >= 1.0) {
if ((t - lastframetime) >= 1.0)
{
lastfps = fps_count;
fps_count = 0;
lastframetime = t;
}
sprintf(st, "%3d FPS", lastfps);
if (sb_scaled)
x = vid.vconwidth - strlen(st) * 16 - 16;
x = vid.vconwidth - strlen(st) * 16 - 16;
else
x = vid.width - strlen(st) * 16 - 16;
y = 0 ;
x = vid.width - strlen(st) * 16 - 16;
y = 0;
if (sb_scaled)
Draw_String_Scaled(x, y, st);
Draw_String_Scaled(x, y, st);
else
Draw_String(x, y, st);
Draw_String(x, y, st);
}
// 2001-11-31 FPS display by QuakeForge/Muff end
@ -859,11 +771,11 @@ void SCR_DrawPause (void)
if (!scr_showpause->value) // turn off for screenshots
return;
if (!cl.paused)
return;
pic = Draw_CachePic ("gfx/pause.lmp");
if (menu_scaled)
Draw_Pic_Scaled ( (vid.vconwidth - pic->width)/2,
(vid.vconheight - 48 - pic->height)/2, pic);
@ -872,8 +784,6 @@ void SCR_DrawPause (void)
(vid.height - 48 - pic->height)/2, pic);
}
/*
==============
SCR_DrawLoading
@ -887,12 +797,11 @@ void SCR_DrawLoading (void)
return;
pic = Draw_CachePic ("gfx/loading.lmp");
if (menu_scaled)
Draw_Pic_Scaled ( (vid.vconwidth - pic->width)/2,
(vid.vconheight - 48 - pic->height)/2, pic);
else
Draw_Pic ( (vid.width - pic->width)/2,
(vid.height - 48 - pic->height)/2, pic);
if (menu_scaled)
Draw_Pic_Scaled ( (vid.vconwidth - pic->width)/2, (vid.vconheight - 48 - pic->height)/2, pic);
else
Draw_Pic ( (vid.width - pic->width)/2, (vid.height - 48 - pic->height)/2, pic);
}
@ -905,7 +814,7 @@ else
SCR_SetUpToDrawConsole
==================
*/
extern cvar_t *con_alpha; // 2000-08-04 "Transparent" console background for software renderer by Norberto Alfredo Bensa/Maddes
extern cvar_t *con_alpha;
void SCR_SetUpToDrawConsole (void)
{
@ -1116,7 +1025,7 @@ void SCR_ScreenShot_f (void)
//
// find a file name to save it to
//
#ifndef LINUX
#ifndef linux
strcpy(pcxname,"scrsh00.pcx");
#else
strcpy(pcxname,"scrsh00.xwd");
@ -1132,28 +1041,20 @@ void SCR_ScreenShot_f (void)
}
if (i==100)
{
Con_Printf ("SCR_ScreenShot_f: Couldn't create a PCX file\n");
Con_Printf ("SCR_ScreenShot_f: Couldn't create a screenshot!\n");
return;
}
#ifndef LINUX
#ifndef linux
//
// save the pcx file
//
D_EnableBackBufferAccess (); // enable direct drawing of console to back
printf("Writing PCX - %ix%i named %s\n", vid.width, vid.height, pcxname);
#ifdef _WIN32
WritePCXfile (pcxname, vid.buffer, vid.width, vid.height, vid.rowbytes, vid_curpal);
#else
WritePCXfile (pcxname, vid.buffer, vid.width, vid.height, vid.rowbytes, host_basepal);
#endif
// WritePCXfile (pcxname, vid.buffer, vid.width, vid.height, vid.rowbytes, host_basepal);
D_DisableBackBufferAccess (); // for adapters that can't stay mapped in
#else
sprintf(pcxnametwo, "xwd -name 'NGUNIX X11' -out %s", pcxname);
sprintf(pcxnametwo, "xwd -name \"NGUNIX X11\" -display :0 -out ./%s/%s", com_gamedir, pcxname);
system(pcxnametwo);
// popen(buffer, "r");
#endif
Con_Printf ("Wrote %s\n", pcxname);
@ -1356,7 +1257,7 @@ void SCR_ReallyRender (void)
V_RenderView ();
}
int dontevendraw;
int dontevendraw;
void SCR_UpdateScreen (void)
{
static float oldlcd_x;