mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-22 04:31:09 +00:00
Reactor yesterdays work
This commit is contained in:
parent
1d8109cbbc
commit
9edf27f103
7 changed files with 76 additions and 85 deletions
14
Makefile
14
Makefile
|
@ -41,13 +41,6 @@ CC := gcc
|
||||||
|
|
||||||
# ----------
|
# ----------
|
||||||
|
|
||||||
# Options
|
|
||||||
|
|
||||||
# Enables .jpg texture support
|
|
||||||
JPEG := 1
|
|
||||||
|
|
||||||
# ----------
|
|
||||||
|
|
||||||
# Base CFLAGS.
|
# Base CFLAGS.
|
||||||
#
|
#
|
||||||
# -O2 are enough optimizations.
|
# -O2 are enough optimizations.
|
||||||
|
@ -175,13 +168,8 @@ build/refresher/%.o: %.c
|
||||||
${Q}$(CC) -c $(CFLAGS) $(SDLCFLAGS) $(INCLUDE) -o $@ $<
|
${Q}$(CC) -c $(CFLAGS) $(SDLCFLAGS) $(INCLUDE) -o $@ $<
|
||||||
|
|
||||||
release/ref_gl.so : CFLAGS += -fPIC
|
release/ref_gl.so : CFLAGS += -fPIC
|
||||||
release/ref_gl.so : LDFLAGS += -shared
|
release/ref_gl.so : LDFLAGS += -shared -ljpeg
|
||||||
|
|
||||||
ifdef JPEG
|
|
||||||
release/ref_gl.so : CFLAGS += -DWITH_JPEG
|
|
||||||
release/ref_gl.so : LDFLAGS += -ljpeg
|
|
||||||
endif
|
|
||||||
|
|
||||||
# ----------
|
# ----------
|
||||||
|
|
||||||
# The baseq2 game
|
# The baseq2 game
|
||||||
|
|
|
@ -24,8 +24,6 @@
|
||||||
* =======================================================================
|
* =======================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef WITH_JPEG
|
|
||||||
|
|
||||||
#include "../header/local.h"
|
#include "../header/local.h"
|
||||||
#include <jpeglib.h>
|
#include <jpeglib.h>
|
||||||
|
|
||||||
|
@ -55,7 +53,7 @@ void jpg_skip_input_data(j_decompress_ptr cinfo, long num_bytes)
|
||||||
cinfo->src->bytes_in_buffer -= (size_t) num_bytes;
|
cinfo->src->bytes_in_buffer -= (size_t) num_bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
void jpeg_mem_src (j_decompress_ptr cinfo, byte *mem, int len)
|
void jpeg_mem_src (j_decompress_ptr cinfo, unsigned char *mem, unsigned long len)
|
||||||
{
|
{
|
||||||
cinfo->src = (struct jpeg_source_mgr *)(*cinfo->mem->alloc_small)((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(struct jpeg_source_mgr));
|
cinfo->src = (struct jpeg_source_mgr *)(*cinfo->mem->alloc_small)((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(struct jpeg_source_mgr));
|
||||||
cinfo->src->init_source = jpg_null;
|
cinfo->src->init_source = jpg_null;
|
||||||
|
@ -72,10 +70,9 @@ void jpeg_mem_src (j_decompress_ptr cinfo, byte *mem, int len)
|
||||||
LoadJPG
|
LoadJPG
|
||||||
==============
|
==============
|
||||||
*/
|
*/
|
||||||
image_t *
|
void
|
||||||
LoadJPG (char *oldname, int *width, int *height, imagetype_t type)
|
LoadJPG (char *origname, byte **pic, int *width, int *height)
|
||||||
{
|
{
|
||||||
byte *pic = NULL;
|
|
||||||
struct jpeg_decompress_struct cinfo;
|
struct jpeg_decompress_struct cinfo;
|
||||||
char filename[256];
|
char filename[256];
|
||||||
struct jpeg_error_mgr jerr;
|
struct jpeg_error_mgr jerr;
|
||||||
|
@ -83,35 +80,37 @@ LoadJPG (char *oldname, int *width, int *height, imagetype_t type)
|
||||||
byte *rawdata, *rgbadata, *scanline, *p, *q;
|
byte *rawdata, *rgbadata, *scanline, *p, *q;
|
||||||
unsigned int rawsize, i;
|
unsigned int rawsize, i;
|
||||||
|
|
||||||
len = strlen( oldname );
|
/* Add the extension */
|
||||||
|
len = strlen( origname );
|
||||||
|
|
||||||
if ( strcmp( oldname + len - 4, ".jpg" ) )
|
if ( strcmp( origname + len - 4, ".jpg" ) )
|
||||||
{
|
{
|
||||||
strncpy(filename, oldname, 256);
|
strncpy(filename, origname, 256);
|
||||||
strncat(filename, ".jpg", 255);
|
strncat(filename, ".jpg", 255);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
strncpy(filename, oldname, 256);
|
strncpy(filename, origname, 256);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*pic = NULL;
|
||||||
|
|
||||||
// Load JPEG file into memory
|
// Load JPEG file into memory
|
||||||
rawsize = ri.FS_LoadFile(filename, (void **)&rawdata);
|
rawsize = ri.FS_LoadFile(filename, (void **)&rawdata);
|
||||||
|
|
||||||
if (!rawdata)
|
if (!rawdata)
|
||||||
return NULL;
|
return;
|
||||||
|
|
||||||
if (rawsize < 10 || rawdata[6] != 'J' || rawdata[7] != 'F' || rawdata[8] != 'I' || rawdata[9] != 'F')
|
if (rawsize < 10 || rawdata[6] != 'J' || rawdata[7] != 'F' || rawdata[8] != 'I' || rawdata[9] != 'F')
|
||||||
{
|
{
|
||||||
ri.Con_Printf (PRINT_ALL, "Invalid JPEG header: %s\n", filename);
|
ri.Con_Printf (PRINT_ALL, "Invalid JPEG header: %s\n", filename);
|
||||||
ri.FS_FreeFile(rawdata);
|
ri.FS_FreeFile(rawdata);
|
||||||
return NULL;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cinfo.err = jpeg_std_error(&jerr);
|
cinfo.err = jpeg_std_error(&jerr);
|
||||||
jpeg_create_decompress(&cinfo);
|
jpeg_create_decompress(&cinfo);
|
||||||
jpeg_mem_src(&cinfo, rawdata, rawsize);
|
jpeg_mem_src(&cinfo, (unsigned char *) rawdata, (unsigned long) rawsize);
|
||||||
jpeg_read_header(&cinfo, true);
|
jpeg_read_header(&cinfo, true);
|
||||||
jpeg_start_decompress(&cinfo);
|
jpeg_start_decompress(&cinfo);
|
||||||
|
|
||||||
|
@ -120,7 +119,7 @@ LoadJPG (char *oldname, int *width, int *height, imagetype_t type)
|
||||||
ri.Con_Printf(PRINT_ALL, "Invalid JPEG colour components\n");
|
ri.Con_Printf(PRINT_ALL, "Invalid JPEG colour components\n");
|
||||||
jpeg_destroy_decompress(&cinfo);
|
jpeg_destroy_decompress(&cinfo);
|
||||||
ri.FS_FreeFile(rawdata);
|
ri.FS_FreeFile(rawdata);
|
||||||
return NULL;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allocate Memory for decompressed image
|
// Allocate Memory for decompressed image
|
||||||
|
@ -130,7 +129,7 @@ LoadJPG (char *oldname, int *width, int *height, imagetype_t type)
|
||||||
ri.Con_Printf(PRINT_ALL, "Insufficient memory for JPEG buffer\n");
|
ri.Con_Printf(PRINT_ALL, "Insufficient memory for JPEG buffer\n");
|
||||||
jpeg_destroy_decompress(&cinfo);
|
jpeg_destroy_decompress(&cinfo);
|
||||||
ri.FS_FreeFile(rawdata);
|
ri.FS_FreeFile(rawdata);
|
||||||
return NULL;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pass sizes to output
|
// Pass sizes to output
|
||||||
|
@ -145,7 +144,7 @@ LoadJPG (char *oldname, int *width, int *height, imagetype_t type)
|
||||||
free (rgbadata);
|
free (rgbadata);
|
||||||
jpeg_destroy_decompress (&cinfo);
|
jpeg_destroy_decompress (&cinfo);
|
||||||
ri.FS_FreeFile (rawdata);
|
ri.FS_FreeFile (rawdata);
|
||||||
return NULL;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read Scanlines, and expand from RGB to RGBA
|
// Read Scanlines, and expand from RGB to RGBA
|
||||||
|
@ -170,14 +169,6 @@ LoadJPG (char *oldname, int *width, int *height, imagetype_t type)
|
||||||
jpeg_finish_decompress (&cinfo);
|
jpeg_finish_decompress (&cinfo);
|
||||||
jpeg_destroy_decompress (&cinfo);
|
jpeg_destroy_decompress (&cinfo);
|
||||||
|
|
||||||
pic = rgbadata;
|
*pic = rgbadata;
|
||||||
|
|
||||||
if ( !pic )
|
|
||||||
{
|
|
||||||
return ( NULL );
|
|
||||||
}
|
|
||||||
|
|
||||||
return R_LoadPic( filename, pic, *width, *height, type, 32 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // WITH_JPEG
|
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#include "../header/local.h"
|
#include "../header/local.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
LoadPCX ( char *oldname, byte **pic, byte **palette, int *width, int *height )
|
LoadPCX ( char *origname, byte **pic, byte **palette, int *width, int *height )
|
||||||
{
|
{
|
||||||
byte *raw;
|
byte *raw;
|
||||||
pcx_t *pcx;
|
pcx_t *pcx;
|
||||||
|
@ -38,16 +38,17 @@ LoadPCX ( char *oldname, byte **pic, byte **palette, int *width, int *height )
|
||||||
byte *out, *pix;
|
byte *out, *pix;
|
||||||
char filename[256];
|
char filename[256];
|
||||||
|
|
||||||
filelen = strlen( oldname );
|
/* Add the extension */
|
||||||
|
filelen = strlen( origname );
|
||||||
|
|
||||||
if ( strcmp( oldname + filelen - 4, ".pcx" ) )
|
if ( strcmp( origname + filelen - 4, ".pcx" ) )
|
||||||
{
|
{
|
||||||
strncpy(filename, oldname, 256);
|
strncpy(filename, origname, 256);
|
||||||
strncat(filename, ".pcx", 255);
|
strncat(filename, ".pcx", 255);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
strncpy(filename, oldname, 256);
|
strncpy(filename, origname, 256);
|
||||||
}
|
}
|
||||||
|
|
||||||
*pic = NULL;
|
*pic = NULL;
|
||||||
|
|
|
@ -35,10 +35,9 @@ typedef struct _TargaHeader
|
||||||
unsigned char pixel_size, attributes;
|
unsigned char pixel_size, attributes;
|
||||||
} TargaHeader;
|
} TargaHeader;
|
||||||
|
|
||||||
image_t *
|
void
|
||||||
LoadTGA ( char *oldname, int *width, int *height, imagetype_t type )
|
LoadTGA ( char *origname, byte **pic, int *width, int *height )
|
||||||
{
|
{
|
||||||
byte *pic = NULL;
|
|
||||||
int columns, rows, numPixels;
|
int columns, rows, numPixels;
|
||||||
byte *pixbuf;
|
byte *pixbuf;
|
||||||
int row, column;
|
int row, column;
|
||||||
|
@ -51,16 +50,17 @@ LoadTGA ( char *oldname, int *width, int *height, imagetype_t type )
|
||||||
byte tmp [ 2 ];
|
byte tmp [ 2 ];
|
||||||
char name[256];
|
char name[256];
|
||||||
|
|
||||||
len = strlen( oldname );
|
/* Add the extension */
|
||||||
|
len = strlen( origname );
|
||||||
|
|
||||||
if ( strcmp( oldname + len - 4, ".tga" ) )
|
if ( strcmp( origname + len - 4, ".tga" ) )
|
||||||
{
|
{
|
||||||
strncpy( name, oldname, 256 );
|
strncpy( name, origname, 256 );
|
||||||
strncat(name, ".tga", 255);
|
strncat(name, ".tga", 255);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
strncpy( name, oldname, 256 );
|
strncpy( name, origname, 256 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ LoadTGA ( char *oldname, int *width, int *height, imagetype_t type )
|
||||||
if ( !buffer )
|
if ( !buffer )
|
||||||
{
|
{
|
||||||
ri.Con_Printf( PRINT_DEVELOPER, "Bad tga file %s\n", name );
|
ri.Con_Printf( PRINT_DEVELOPER, "Bad tga file %s\n", name );
|
||||||
return NULL;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf_p = buffer;
|
buf_p = buffer;
|
||||||
|
@ -115,8 +115,6 @@ LoadTGA ( char *oldname, int *width, int *height, imagetype_t type )
|
||||||
rows = targa_header.height;
|
rows = targa_header.height;
|
||||||
numPixels = columns * rows;
|
numPixels = columns * rows;
|
||||||
|
|
||||||
// FIXME Custommaps
|
|
||||||
|
|
||||||
if ( width )
|
if ( width )
|
||||||
{
|
{
|
||||||
*width = columns;
|
*width = columns;
|
||||||
|
@ -127,9 +125,8 @@ LoadTGA ( char *oldname, int *width, int *height, imagetype_t type )
|
||||||
*height = rows;
|
*height = rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
targa_rgba = malloc( numPixels * 4 );
|
targa_rgba = malloc( numPixels * 4 );
|
||||||
pic = targa_rgba;
|
*pic = targa_rgba;
|
||||||
|
|
||||||
if ( targa_header.id_length != 0 )
|
if ( targa_header.id_length != 0 )
|
||||||
{
|
{
|
||||||
|
@ -288,12 +285,5 @@ LoadTGA ( char *oldname, int *width, int *height, imagetype_t type )
|
||||||
}
|
}
|
||||||
|
|
||||||
ri.FS_FreeFile( buffer );
|
ri.FS_FreeFile( buffer );
|
||||||
|
|
||||||
if ( !pic )
|
|
||||||
{
|
|
||||||
return ( NULL );
|
|
||||||
}
|
|
||||||
|
|
||||||
return R_LoadPic( name, pic, *width, *height, type, 32 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "../header/local.h"
|
#include "../header/local.h"
|
||||||
|
|
||||||
image_t *
|
image_t *
|
||||||
LoadWal ( char *oldname )
|
LoadWal ( char *origname )
|
||||||
{
|
{
|
||||||
miptex_t *mt;
|
miptex_t *mt;
|
||||||
int width, height, ofs;
|
int width, height, ofs;
|
||||||
|
@ -9,16 +9,17 @@ LoadWal ( char *oldname )
|
||||||
int len;
|
int len;
|
||||||
char name[256];
|
char name[256];
|
||||||
|
|
||||||
len = strlen( oldname );
|
/* Add the extension */
|
||||||
|
len = strlen( origname );
|
||||||
|
|
||||||
if ( strcmp( oldname + len - 4, ".wal" ) )
|
if ( strcmp( origname + len - 4, ".wal" ) )
|
||||||
{
|
{
|
||||||
strncpy(name, oldname, 256);
|
strncpy(name, origname, 256);
|
||||||
strncat(name, ".wal", 255);
|
strncat(name, ".wal", 255);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
strncpy(name, oldname, 256);
|
strncpy(name, origname, 256);
|
||||||
}
|
}
|
||||||
|
|
||||||
ri.FS_LoadFile( name, (void **) &mt );
|
ri.FS_LoadFile( name, (void **) &mt );
|
||||||
|
|
|
@ -313,7 +313,10 @@ void R_ResampleTexture ( unsigned *in, int inwidth, int inheight, unsigned *out,
|
||||||
struct image_s *R_RegisterSkin ( char *name );
|
struct image_s *R_RegisterSkin ( char *name );
|
||||||
|
|
||||||
void LoadPCX ( char *filename, byte **pic, byte **palette, int *width, int *height );
|
void LoadPCX ( char *filename, byte **pic, byte **palette, int *width, int *height );
|
||||||
qboolean GetWalInfo (char *name, int *width, int *height);
|
image_t *LoadWal ( char *name );
|
||||||
|
void LoadJPG ( char *origname, byte **pic, int *width, int *height );
|
||||||
|
void LoadTGA ( char *origname, byte **pic, int *width, int *height );
|
||||||
|
qboolean GetWalInfo ( char *name, int *width, int *height );
|
||||||
image_t *R_LoadPic ( char *name, byte *pic, int width, int height, imagetype_t type, int bits );
|
image_t *R_LoadPic ( char *name, byte *pic, int width, int height, imagetype_t type, int bits );
|
||||||
image_t *R_FindImage ( char *name, imagetype_t type );
|
image_t *R_FindImage ( char *name, imagetype_t type );
|
||||||
void R_TextureMode ( char *string );
|
void R_TextureMode ( char *string );
|
||||||
|
|
|
@ -51,11 +51,6 @@ int gl_tex_alpha_format = 4;
|
||||||
int gl_filter_min = GL_LINEAR_MIPMAP_NEAREST;
|
int gl_filter_min = GL_LINEAR_MIPMAP_NEAREST;
|
||||||
int gl_filter_max = GL_LINEAR;
|
int gl_filter_max = GL_LINEAR;
|
||||||
|
|
||||||
image_t *LoadWal ( char *name );
|
|
||||||
image_t *LoadTGA ( char *name, int *width, int *height, imagetype_t type );
|
|
||||||
#ifdef WITH_JPEG
|
|
||||||
image_t *LoadJPG (char *filename, int *width, int *height, imagetype_t type);
|
|
||||||
#endif
|
|
||||||
int Draw_GetPalette ( void );
|
int Draw_GetPalette ( void );
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
@ -1026,11 +1021,13 @@ R_FindImage ( char *name, imagetype_t type )
|
||||||
{
|
{
|
||||||
return ( NULL );
|
return ( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(namewe, 0, 256);
|
|
||||||
|
|
||||||
len = strlen( name );
|
len = strlen( name );
|
||||||
|
|
||||||
|
/* Remove the extension */
|
||||||
|
memset(namewe, 0, 256);
|
||||||
|
memcpy(namewe, name, len - 4);
|
||||||
|
|
||||||
if ( len < 5 )
|
if ( len < 5 )
|
||||||
{
|
{
|
||||||
return ( NULL );
|
return ( NULL );
|
||||||
|
@ -1069,29 +1066,49 @@ R_FindImage ( char *name, imagetype_t type )
|
||||||
}
|
}
|
||||||
else if ( !strcmp( name + len - 4, ".wal" ) )
|
else if ( !strcmp( name + len - 4, ".wal" ) )
|
||||||
{
|
{
|
||||||
/* Remove the extension */
|
/* Get size of the original texture */
|
||||||
memcpy(namewe, name, len - 4);
|
|
||||||
|
|
||||||
GetWalInfo(name, &realwidth, &realheight);
|
GetWalInfo(name, &realwidth, &realheight);
|
||||||
image = LoadTGA( namewe, &width, &height, type );
|
|
||||||
|
|
||||||
if( image == NULL )
|
/* Try to load a TGA */
|
||||||
|
LoadTGA( namewe, &pic, &width, &height );
|
||||||
|
|
||||||
|
if( !pic )
|
||||||
{
|
{
|
||||||
image = LoadJPG( namewe, &width, &height, type );
|
/* JPEG if no TGA available */
|
||||||
|
LoadJPG( namewe, &pic, &width, &height );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Upload TGA */
|
||||||
|
image = R_LoadPic( name, pic, width, height, type, 32 );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( image == NULL)
|
if( !pic )
|
||||||
{
|
{
|
||||||
|
/* WAL of no JPEG available (exists always) */
|
||||||
image = LoadWal( namewe );
|
image = LoadWal( namewe );
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Upload JPEG */
|
||||||
|
image = R_LoadPic( name, pic, width, height, type, 32 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !image )
|
||||||
|
{
|
||||||
|
/* No texture found */
|
||||||
|
return ( NULL );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if ( !strcmp( name + len - 4, ".tga" ) )
|
else if ( !strcmp( name + len - 4, ".tga" ) )
|
||||||
{
|
{
|
||||||
return LoadTGA( name, &width, &height, type );
|
LoadTGA( name, &pic, &width, &height );
|
||||||
|
image = R_LoadPic( name, pic, width, height, type, 32 );
|
||||||
}
|
}
|
||||||
else if ( !strcmp( name + len - 4, ".jpg" ) )
|
else if ( !strcmp( name + len - 4, ".jpg" ) )
|
||||||
{
|
{
|
||||||
return LoadJPG( name, &width, &height, type );
|
LoadJPG( name, &pic, &width, &height );
|
||||||
|
image = R_LoadPic( name, pic, width, height, type, 32 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue