From 805a231cdc38954b689163a9804885770ade5a36 Mon Sep 17 00:00:00 2001 From: Thomas Debesse Date: Tue, 21 Jul 2015 03:41:24 +0200 Subject: [PATCH] split fixaas stuff from q3map2 --- Makefile | 1 + tools/quake3/q3map2/fixaas.c | 110 +++++++++++++++++++++++++++++++++++ tools/quake3/q3map2/main.c | 78 +------------------------ tools/quake3/q3map2/q3map2.h | 3 +- 4 files changed, 114 insertions(+), 78 deletions(-) create mode 100644 tools/quake3/q3map2/fixaas.c diff --git a/Makefile b/Makefile index 93108547..2ad7c0a8 100644 --- a/Makefile +++ b/Makefile @@ -510,6 +510,7 @@ $(INSTALLDIR)/q3map2.$(EXE): \ tools/quake3/q3map2/convert_map.o \ tools/quake3/q3map2/decals.o \ tools/quake3/q3map2/facebsp.o \ + tools/quake3/q3map2/fixaas.o \ tools/quake3/q3map2/fog.o \ tools/quake3/q3map2/help.o \ tools/quake3/q3map2/image.o \ diff --git a/tools/quake3/q3map2/fixaas.c b/tools/quake3/q3map2/fixaas.c new file mode 100644 index 00000000..e08cd13c --- /dev/null +++ b/tools/quake3/q3map2/fixaas.c @@ -0,0 +1,110 @@ +/* ------------------------------------------------------------------------------- + + Copyright (C) 1999-2007 id Software, Inc. and contributors. + For a list of contributors, see the accompanying CONTRIBUTORS file. + + This file is part of GtkRadiant. + + GtkRadiant 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. + + GtkRadiant 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 GtkRadiant; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + ------------------------------------------------------------------------------- + + This code has been altered significantly from its original form, to support + several games based on the Quake III Arena engine, in the form of "Q3Map2." + + ------------------------------------------------------------------------------- */ + + + +/* dependencies */ +#include "q3map2.h" + + + +/* + MD4BlockChecksum() + calculates an md4 checksum for a block of data + */ + +static int MD4BlockChecksum( void *buffer, int length ){ + return Com_BlockChecksum( buffer, length ); +} + +/* + FixAASMain() + resets an aas checksum to match the given BSP + */ + +int FixAASMain( int argc, char **argv ){ + int length, checksum; + void *buffer; + FILE *file; + char aas[ 1024 ], **ext; + char *exts[] = + { + ".aas", + "_b0.aas", + "_b1.aas", + NULL + }; + + + /* arg checking */ + if ( argc < 2 ) { + Sys_Printf( "Usage: q3map -fixaas [-v] \n" ); + return 0; + } + + /* do some path mangling */ + strcpy( source, ExpandArg( argv[ argc - 1 ] ) ); + StripExtension( source ); + DefaultExtension( source, ".bsp" ); + + /* note it */ + Sys_Printf( "--- FixAAS ---\n" ); + + /* load the bsp */ + Sys_Printf( "Loading %s\n", source ); + length = LoadFile( source, &buffer ); + + /* create bsp checksum */ + Sys_Printf( "Creating checksum...\n" ); + checksum = LittleLong( MD4BlockChecksum( buffer, length ) ); + + /* write checksum to aas */ + ext = exts; + while ( *ext ) + { + /* mangle name */ + strcpy( aas, source ); + StripExtension( aas ); + strcat( aas, *ext ); + Sys_Printf( "Trying %s\n", aas ); + ext++; + + /* fix it */ + file = fopen( aas, "r+b" ); + if ( !file ) { + continue; + } + if ( fwrite( &checksum, 4, 1, file ) != 1 ) { + Error( "Error writing checksum to %s", aas ); + } + fclose( file ); + } + + /* return to sender */ + return 0; +} diff --git a/tools/quake3/q3map2/main.c b/tools/quake3/q3map2/main.c index 20161484..c106c91b 100644 --- a/tools/quake3/q3map2/main.c +++ b/tools/quake3/q3map2/main.c @@ -92,82 +92,6 @@ static void ExitQ3Map( void ){ } } -/* - MD4BlockChecksum() - calculates an md4 checksum for a block of data - */ - -static int MD4BlockChecksum( void *buffer, int length ){ - return Com_BlockChecksum( buffer, length ); -} - -/* - FixAAS() - resets an aas checksum to match the given BSP - */ - -int FixAAS( int argc, char **argv ){ - int length, checksum; - void *buffer; - FILE *file; - char aas[ 1024 ], **ext; - char *exts[] = - { - ".aas", - "_b0.aas", - "_b1.aas", - NULL - }; - - - /* arg checking */ - if ( argc < 2 ) { - Sys_Printf( "Usage: q3map -fixaas [-v] \n" ); - return 0; - } - - /* do some path mangling */ - strcpy( source, ExpandArg( argv[ argc - 1 ] ) ); - StripExtension( source ); - DefaultExtension( source, ".bsp" ); - - /* note it */ - Sys_Printf( "--- FixAAS ---\n" ); - - /* load the bsp */ - Sys_Printf( "Loading %s\n", source ); - length = LoadFile( source, &buffer ); - - /* create bsp checksum */ - Sys_Printf( "Creating checksum...\n" ); - checksum = LittleLong( MD4BlockChecksum( buffer, length ) ); - - /* write checksum to aas */ - ext = exts; - while ( *ext ) - { - /* mangle name */ - strcpy( aas, source ); - StripExtension( aas ); - strcat( aas, *ext ); - Sys_Printf( "Trying %s\n", aas ); - ext++; - - /* fix it */ - file = fopen( aas, "r+b" ); - if ( !file ) { - continue; - } - if ( fwrite( &checksum, 4, 1, file ) != 1 ) { - Error( "Error writing checksum to %s", aas ); - } - fclose( file ); - } - - /* return to sender */ - return 0; -} - /* main() q3map mojo... @@ -283,7 +207,7 @@ int main( int argc, char **argv ){ /* fixaas */ if ( !strcmp( argv[ 1 ], "-fixaas" ) ) { - r = FixAAS( argc - 1, argv + 1 ); + r = FixAASMain( argc - 1, argv + 1 ); } /* analyze */ diff --git a/tools/quake3/q3map2/q3map2.h b/tools/quake3/q3map2/q3map2.h index 5f9c9de6..53bb60da 100644 --- a/tools/quake3/q3map2/q3map2.h +++ b/tools/quake3/q3map2/q3map2.h @@ -1523,6 +1523,8 @@ void HelpMain(const char* arg); game_t *GetGame( char *arg ); void InitPaths( int *argc, char **argv ); +/* fixaas.c */ +int FixAASMain( int argc, char **argv ); /* bsp.c */ int BSPMain( int argc, char **argv ); @@ -1552,7 +1554,6 @@ int ConvertBSPToASE( char *bspName ); /* convert_obj.c */ int ConvertBSPToOBJ( char *bspName ); - /* brush.c */ sideRef_t *AllocSideRef( side_t *side, sideRef_t *next ); int CountBrushList( brush_t *brushes ); -- 2.39.2