diff --git a/tools/quake3/q3map2/convert_bsp.c b/tools/quake3/q3map2/convert_bsp.c index ba982e87..44950e7d 100644 --- a/tools/quake3/q3map2/convert_bsp.c +++ b/tools/quake3/q3map2/convert_bsp.c @@ -33,6 +33,75 @@ +/* + 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( (int)Com_BlockChecksum( buffer, length ) ); // md4 checksum for a block of data + + /* 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; +} + + + /* AnalyzeBSP() - ydnar analyzes a Quake engine BSP file diff --git a/tools/quake3/q3map2/main.c b/tools/quake3/q3map2/main.c index dd12d751..93f2f4ab 100644 --- a/tools/quake3/q3map2/main.c +++ b/tools/quake3/q3map2/main.c @@ -96,83 +96,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; -} - - void FixDOSName( char *src ){ if ( src == NULL ) { diff --git a/tools/quake3/q3map2/q3map2.h b/tools/quake3/q3map2/q3map2.h index 932f5673..23c160a0 100644 --- a/tools/quake3/q3map2/q3map2.h +++ b/tools/quake3/q3map2/q3map2.h @@ -1540,6 +1540,7 @@ int BSPMain( int argc, char **argv ); int MiniMapBSPMain( int argc, char **argv ); /* convert_bsp.c */ +int FixAAS( int argc, char **argv ); int AnalyzeBSP( int argc, char **argv ); int BSPInfo( int count, char **fileNames ); int ScaleBSPMain( int argc, char **argv );