We just released a prototype of the cancelled SNES port of Puggsy! Take a look!
As always, thank you for supporting The Cutting Room Floor on Patreon!

Angry Birds Arcade

From The Cutting Room Floor
Jump to navigation Jump to search

Click to upload a new image...Dummy link

Angry Birds Arcade

Developer: Play Mechanix
Publishers: Raw Thrills, ICE
Platform: Arcade (Raw Thrills PC-based)
Released in US: 2015


SourceIcon.png This game has uncompiled source code.
DevTextIcon.png This game has hidden development-related text.


So very stubbly.
This page is rather stubbly and could use some expansion.
Are you a bad enough dude to rescue this article?

The Angry Birds make their jump to the Arcade!

Developer Leftovers

Maya directories

Versions 0.26, 1.08, 1.12, 1.13, 1.15 and 1.17 have a few Maya directories in the data folder of the game, all are empty. Language based directories were likely added in 1.05 and removed in 1.15+. It's likely these were used to contain source material of the game's prerendered movies.

maya
maya_arabic
maya_portuguese
maya_russian
maya_spanish
maya_turkish

Source headers

Hmmm...
To do:
Figure out how to decrypt and upload them here.

There's four leftover source headers files in the prod/headers directory. Two for the G6 Engine, the game, and one for likely a ticket redemption library.

Hard Drive Leftovers

Hmmm...
To do:
  • There's a leftover KDevelop cache directory in root/.cache/kdevduchain, having a LOT of development text and possibly raw source code from both the game, engine and other proprietary libraries. The project file is removed, but it may be possible to recover the content from the String Index and Comment Repository.

The full HDD of an early release of the game for Dave & Busters was updated to v1.18 and dumped in 2019, containing a large portion of development assets, scattered in a variety of places.

User profile and root directory

Hmmm...
To do:
  • Find the other codenames.
  • Sort content and upload here.

The Linux profile directory, being home/raw and the root directory have a small portion of leftover source code at the root of the said directories and logs likely from a developer's computer likely interacting with an internal SVN repo that was later locally removed from the hard drive, along with a makefile. Interestingly, some code was carried from dino's source directory, being Jurassic Park Arcade, as well as motogp (the MotoGP arcade game) and 2XL.

datadigest.c tends to be from an SSL library for Play Mechanix and Raw Thrills, in a directory called pmrt_ssl, but present in the root of the profile directory.

// datadigest.c
// Play Mechanix - Video Game System
// Copyright (c) 2007 Play Mechanix Inc. All Rights Reserved
//

#include "datadigest.h"

#if defined(_WIN32)
#include <windows.h>
#else //Linux
#include <unistd.h>
#endif //_WIN32

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <time.h>

// to print err string:
// 	printf( "ERR: %s\n", ERR_error_string(ERR_get_error(),NULL) );


void FreeDataDigestHandle(DataDigestHandle *ddh)
{
	if( ddh == NULL )
		return;

	if ( ddh->digest_bio != NULL )
		BIO_free(ddh->digest_bio);

	if ( ddh->null_bio != NULL )
		BIO_free(ddh->null_bio);

	ddh->digest_bio = NULL;
	ddh->null_bio = NULL;
	memset(ddh->digest,0,sizeof(ddh->digest));
	ddh->digest_len = 0;

}

int CloseDataDigest(DataDigestHandle *ddh )
{
	FreeDataDigestHandle(ddh);
	return 0;
}

int ComputeDataDigest(DataDigestHandle *ddh )
{
	int ec;
	EVP_MD_CTX *mdcp;
	if( ddh == NULL )
		return DATADIGEST_RESULT_INVALID_HANDLE;
	mdcp = NULL;
	ec = BIO_get_md_ctx(ddh->digest_bio, &mdcp );
	if ( ec < 0 || mdcp == NULL )
	{
		FreeDataDigestHandle(ddh);
		return DATADIGEST_RESULT_FAILURE;
	}

	// clear out old digest
	memset(ddh->digest,0,sizeof(ddh->digest));
	ddh->digest_len = 0;

	ec = EVP_DigestFinal( mdcp, ddh->digest, &ddh->digest_len );
	if ( ec < 0 )
	{
		FreeDataDigestHandle(ddh);
		return DATADIGEST_RESULT_FAILURE;
	}


	// reset digest, so we can use it digest some more/different data
	BIO_set_md(ddh->digest_bio, ddh->digest_method);

	BIO_reset(ddh->digest_bio);


	return DATADIGEST_RESULT_SUCCESS;
}

int InitDataDigest(DataDigestHandle *ddh, int method )
{
	// const EVP_MD *digest_method = NULL;

	if( ddh == NULL )
		return DATADIGEST_RESULT_INVALID_HANDLE;

	ddh->digest_bio = NULL;

	// setup to digest stream
	ddh->digest_bio = BIO_new(BIO_f_md());
	if ( ddh->digest_bio == NULL )
	{
		FreeDataDigestHandle(ddh);
		return DATADIGEST_RESULT_FAILURE;
	}


	switch(method)
	{
	case DIGEST_MD5:
		ddh->digest_method = EVP_md5();
		break;
	case DIGEST_SHA1:
		ddh->digest_method = EVP_sha1();
		break;
	default: // no digest
		ddh->digest_method = EVP_md_null();
		break;
	}

	// set digest method
	if( BIO_set_md(ddh->digest_bio, ddh->digest_method) < 0 )
	{
		FreeDataDigestHandle(ddh);
		return DATADIGEST_RESULT_FAILURE;
	}



	// setup null stream
	ddh->null_bio = BIO_new(BIO_s_null());
	if ( ddh->null_bio == NULL )
	{
		FreeDataDigestHandle(ddh);
		return DATADIGEST_RESULT_FAILURE;
	}

	// chain the bios
	if ( BIO_push(ddh->digest_bio,ddh->null_bio)  < 0 ) 
	{
		FreeDataDigestHandle(ddh);
		return DATADIGEST_RESULT_FAILURE;
	}



	return DATADIGEST_RESULT_SUCCESS;

}

int WriteToDataDigest( DataDigestHandle *ddh, void *data, int *size )
{
	int ec;
	if( ddh == NULL || ddh->digest_bio == NULL )
		return DATADIGEST_RESULT_INVALID_HANDLE;

	if ( data == NULL || size == NULL || *size <= 0 )
		return DATADIGEST_RESULT_INVALID_PARAMS;



	ec = BIO_write(ddh->digest_bio, data, *size );
	if ( ec <= 0 )
		return DATADIGEST_RESULT_FAILURE;


	*size = ec;

	return DATADIGEST_RESULT_SUCCESS;
}


int DataDigestMem( int method, void *data, int size, unsigned char *digest, unsigned int *digest_len )
{
	int ec,s;
	DataDigestHandle ddh[100];

	if ( data == NULL || size <= 0 || digest == NULL || digest_len == NULL || *digest_len <= 0 )
	{
		return DATADIGEST_RESULT_INVALID_PARAMS;
	}

	ec = InitDataDigest( &ddh[0], method );
	if ( ec != DATADIGEST_RESULT_SUCCESS )
		return ec;

	s = size;
	ec = WriteToDataDigest( &ddh[0], data, &s );
	if ( ec != DATADIGEST_RESULT_SUCCESS || s != size )
	{
		CloseDataDigest(&ddh[0]);
		return DATADIGEST_RESULT_FAILURE;
	}

	ec = ComputeDataDigest(&ddh[0]);
	if ( ec != DATADIGEST_RESULT_SUCCESS )
	{
		CloseDataDigest(&ddh[0]);
		return ec;
	}

	// didn't provide enough space for digest
	if ( ddh[0].digest_len > *digest_len )
	{
		CloseDataDigest(&ddh[0]);
		return DATADIGEST_RESULT_FAILURE;
	}

	// zero out existing data
	memset(digest,0,*digest_len);
	// copy the digest and it's length
	memcpy(digest,ddh[0].digest,ddh[0].digest_len);
	*digest_len = ddh[0].digest_len;

	// all done!
	CloseDataDigest(&ddh[0]);
	return DATADIGEST_RESULT_SUCCESS;

}

int DataDigestFile( int method, char *filename, unsigned char *digest, unsigned int *digest_len )
{

	int ec;
	BIO *file_bio;
	BIO *digest_bio;
	char buf[1024];
	unsigned int len;
	const EVP_MD *digest_method = NULL;
	EVP_MD_CTX *mdcp = NULL;

	file_bio = NULL;
	digest_bio = NULL;

	// set file bio
	file_bio = BIO_new_file(filename,"rb");
	if ( file_bio == NULL )
	{
		return DATADIGEST_RESULT_FAILURE;
	}

	// setup to digest stream
	digest_bio = BIO_new(BIO_f_md());
	if ( digest_bio == NULL )
	{
		BIO_free(file_bio);
		return DATADIGEST_RESULT_FAILURE;
	}

	switch(method)
	{
	case DIGEST_MD5:
		digest_method = EVP_md5();
		break;
	case DIGEST_SHA1:
		digest_method = EVP_sha1();
		break;
	default: // no digest
		digest_method = EVP_md_null();
		break;
	}

	// set digest method
	if( BIO_set_md(digest_bio, digest_method) < 0 )
	{
		BIO_free(file_bio);
		BIO_free(digest_bio);
		return DATADIGEST_RESULT_FAILURE;
	}


	// chain the bios
	if ( BIO_push(digest_bio,file_bio)  < 0 ) 
	{
		BIO_free(file_bio);
		BIO_free(digest_bio);
		return DATADIGEST_RESULT_FAILURE;
	}


	// read in data 1k at a time
	ec = 0;
	while ( ec >= 0 )
	{
		ec = BIO_read(digest_bio, buf, sizeof(buf) );
		if ( ec == 0 && BIO_should_retry(digest_bio) == 0 ) // EOF
			break;
		if ( ec < 0 )
			break;
	}

	// read failed :(
	if ( ec < 0 )
	{
		BIO_free(file_bio);
		BIO_free(digest_bio);
		return DATADIGEST_RESULT_FAILURE;
	}

	// extract digest value
	ec = BIO_get_md_ctx(digest_bio, &mdcp );
	if ( ec < 0 || mdcp == NULL )
	{
		BIO_free(file_bio);
		BIO_free(digest_bio);
		return DATADIGEST_RESULT_FAILURE;
	}


	len = EVP_MD_CTX_size(mdcp);
	// didn't provide enough space for digest!
	if ( len > *digest_len )
	{
		BIO_free(file_bio);
		BIO_free(digest_bio);
		return DATADIGEST_RESULT_FAILURE;
	}

	// clear out  any existing data
	memset(digest,0,*digest_len);

	ec = EVP_DigestFinal( mdcp, digest, digest_len );
	if ( ec < 0 )
	{
		BIO_free(file_bio);
		BIO_free(digest_bio);
		return DATADIGEST_RESULT_FAILURE;
	}

	// all done!
	BIO_free(file_bio);
	BIO_free(digest_bio);

	return DATADIGEST_RESULT_SUCCESS;

}


int ConvertDataDigestToHexString( unsigned char *digest, unsigned int digest_len, char *dest, unsigned int dest_len, char seperator )
{
	unsigned int i;
	char buf[4];
	if ( digest == NULL || dest == NULL )
		return -1;
//	if ( dest_len < 3 * digest_len )
//		return -2;

	memset( dest, 0, dest_len );

	if ( seperator > 0 )
	{
		for ( i = 0; i < digest_len - 1; i++ )
		{
			sprintf( buf, "%02x%c", digest[i], seperator );
			if ( dest_len > 3 ) // need room for new chars plus NULL terminator
			{
				strncat(dest, buf, 3 );
				dest_len -= 3;
			}
		}
		// do last byte w/o a trailing seperator
		sprintf( buf, "%02x", digest[digest_len-1] );
		if ( dest_len > 2 )  // need room for new chars plus NULL terminator
		{
			strncat(dest, buf, 2 );
			dest_len -= 2;
		}

	}
	else
	{
		// no seperator
		for ( i = 0; i < digest_len ; i++ )
		{
			sprintf( buf, "%02x", digest[i] );
			if ( dest_len > 2 ) // need room for new chars plus NULL terminator
			{
				strncat(dest, buf, 2 );
				dest_len -= 2;
			}
		}
	}



	return 0;

}

int ConvertHexStringToDataDigest( char *src, unsigned int src_len, unsigned char *digest, unsigned int digest_len, char seperator )
{
	unsigned int i,j;
	int ec;
	char buf[3];
	char *start;
	if ( digest == NULL || src == NULL )
		return -1;
	if (seperator > 0 &&  src_len < 3 * digest_len )
		return -2;
	if (seperator <= 0 &&  src_len < 2 * digest_len )
		return -2;

	memset( digest, 0, digest_len );

	j = 0;
	start = src;
	for ( i = 0; i < digest_len; i++ )
	{
		memset( buf, 0, 3 );
		memcpy( buf, start, 2 );

		sscanf(buf, "%02x", &ec );
		digest[i] = ec;
		if ( seperator > 0 )
		{
			start+=3;
			j += 3;
		}
		else
		{
			start+=2;
			j += 2;
		}
		if ( j > src_len )
			break;
	}

	return 0;

}

int DataDigestCmp( unsigned char *digest1, unsigned char *digest2, unsigned int digest_len )
{
	unsigned int i;
	if ( digest1 == NULL || digest2 == NULL )
		return -1;

	for ( i = 0; i < digest_len; i++ )
	{
		if ( digest1[i] != digest2[i] )
			return 1;
	}

	return 0;
}


int SaveFileWithDataDigest( int method, char *filename, void *data, int data_size )
{
	int ec = 0;
	FILE *fh = NULL;
	unsigned char digest[DATADIGEST_MAX_DIGEST_LEN] = {0};
	unsigned int  digest_size = sizeof(digest);

	if ( ! filename || ! data || data_size <= 0 )
		return -1;


	ec = DataDigestMem( method, data, data_size, digest, &digest_size );
	if (ec!=0)
	{
		// something bad happened with the digest.  :(
		return ec;
	}

	fh = fopen( filename, "wb" );
	if ( ! fh )
	{
		return -2;
	}

	ec = fwrite( &digest_size, sizeof(digest_size), 1, fh );
	if ( ec != 1 )
	{
		fclose(fh);
		return -3;
	}
	ec = fwrite( digest, digest_size, 1, fh );
	if ( ec != 1 )
	{
		fclose(fh);
		return -4;
	}
	ec = fwrite( &data_size, sizeof(data_size), 1, fh );
	if ( ec != 1 )
	{
		fclose(fh);
		return -5;
	}
	ec = fwrite( data, data_size, 1, fh );
	if ( ec != 1 )
	{
		fclose(fh);
		return -6;
	}

	fclose(fh);
	return 0;

}

int LoadFileWithDataDigest( int method, char *filename, void **data, int *data_size, void *(*malloc_func)(size_t), void (*free_func)(void *), int nullTerminate )
{
	int ec = 0;
	int mallocd = 0;
	int required_size = 0;
	int size = 0;
	FILE *fh = NULL;
	unsigned char digest[DATADIGEST_MAX_DIGEST_LEN] = {0};
	unsigned int  digest_size = sizeof(digest);

	unsigned char digest_test[DATADIGEST_MAX_DIGEST_LEN] = {0};
	unsigned int  digest_test_size = sizeof(digest_test);

	if ( ! malloc_func )
		malloc_func = malloc;
	if ( ! free_func )
		free_func = free;


	if ( ! filename || ! data  )
		return -1;
	if ( *data != NULL && data_size == NULL )
		return -2;




	fh = fopen( filename, "rb" );
	if ( ! fh )
	{
		return -2;
	}

	ec = fread( &digest_size, sizeof(digest_size), 1, fh );
	if ( ec != 1 )
	{
		fclose(fh);
		return -3;
	}

	ec = fread( digest, digest_size, 1, fh );
	if ( ec != 1 )
	{
		fclose(fh);
		return -4;
	}

	ec = fread( &size, sizeof(size), 1, fh );
	if ( ec != 1 )
	{
		fclose(fh);
		return -5;
	}

	if ( nullTerminate )
		required_size = size + 2;  // nullterminate enough for uns16 buffer
	else
		required_size = size;

	if ( *data == NULL )
	{
		*data = malloc_func(required_size);
		mallocd=1;
		if ( ! *data )
		{
			fclose(fh);
			return -6;
		}
	}
	else
	{
		if ( *data_size < required_size )
		{
			// not enough space!
			fclose(fh);
			return -7;
		}
	}

	// clear out the buffer first, this nullTerminates if required_size > size
	memset(*data,0,required_size);

	ec = fread( *data, size, 1, fh );
	if ( ec != 1 )
	{
		fclose(fh);
		if ( mallocd )
			free_func(*data);
		return -8;
	}
	fclose(fh);

	if ( data_size )
		*data_size = required_size;


	// now check if the data digest matches
	ec = DataDigestMem( method, *data, size, digest_test, &digest_test_size );
	if (ec!=0)
	{
		// something bad happened with the digest.  :(
		if ( mallocd )
			free_func(*data);
		return -9;
	}

	ec = DataDigestCmp( digest_test, digest, digest_test_size );
	if ( ec ) // not a match
	{
		if ( mallocd )
			free_func(*data);
		return -10;
	}

	return 0;

}

vid.c tends to be from the G6 Engine, in pm/g6/g6engine/src/g6.

// vid.c
//
//	video graphics interface - pc
//	Play Mechanix Platform Independent Video System
//	Copyright 1998-2014 Play Mechanix Inc. All Rights Reserved
//
// JFL 07 Oct 04; from ah

///#include <GL/freeglut.h>

#include "g6.h"

// dimensions of our gun space, used by GunWorldPos for converting gun to world cords
// some bogus dflt values...
//int gGunSpace[4] = { 0, 0, 100, 100 };

HashTable gFogSettings;


VidDispInfo VidDisp; // display info computed

/*
// useful/common GL matrices
GLint vglViewport[4]; // 0,0,width,height
GLdouble vglProjection[16];
GLdouble vglModelView[16];
*/

// frame
typedef struct _vp {
  struct _vp *next;
  uns32 flags;
} Vid;

void* vidSysMem0=NUL;
///////////////////////////////////////////////////////////////////////////////
// VID


int VidSetup(int fullscreen, int screen_width, int screen_height, float aspect_ratio )
{
	VidDisp.fullscreen = fullscreen;
	VidDisp.screenW = screen_width;
	VidDisp.screenH = screen_height;
	VidDisp.screenAspectRatio = aspect_ratio;
	return 0;
}


int VidInit(void)
{
	int ec = 0, i=0;
	float angle_radians = 0.0f;
	vidSysMem0=NUL;
	// MEMZ(VidDisp);

	// setup dflt fog
	VidDisp.fogMode=GL_LINEAR;
	VidDisp.fogNear=10000.0;
	VidDisp.fogFar=10001.0;
	VidDisp.fogDensity=0.20f;
	VidDisp.fogRGBA[0]=1.0f;
	VidDisp.fogRGBA[1]=1.0f;
	VidDisp.fogRGBA[2]=1.0f;
	VidDisp.fogRGBA[3]=0.0f; // alpha is used for the fog clamp, 0 means no clamp on the fog (go to full fog)
	VidDisp.flags|=M_VIDDISP_FOG|M_VIDDISP_FOG_C;

	VidDisp.ReflectionMapScale = 1.0f;

	/*
	VidDisp.gridSize=10;
	VidDisp.gridDim=10;
	*/


	if(sizeof(GLfloat)!=sizeof(float))
	{
		// assumptions are made in the data & program
		LOCKUP(BP_VIDINIT);
		return -2;
	}

	VidDisp.blanktex = 255;

	VidDisp.dbgDisableTex[0] = 0;

	VidDisp.dbgDisableDiff = 0;
	VidDisp.dbgDisableSpec = 0;
	VidDisp.dbgUseDbgShiny = 0;
	VidDisp.dbgShiny = 2;




	VidDisp.ShadSplitLambda = RenderG.SHADMAP_SPLIT_LAMBDA;

	VidDisp.dbgOverrideTexEnable = 0;
	for( i=0; i<VIDDISP_MAX_TEXOVERRIDE_SLOTS; i++ )
	{
		VidDisp.dbgOverrideTex[i] = 0;
		VidDisp.dbgOverrideRes[i] = NULL;
	}

	VidDisp.dbgDisablePostFX = 0;

	VidDisp.global_facesort_angle = DEFAULT_GLOBAL_FACE_RESORT_ANGLE;
	VidDisp.dbgUseFacesortThreshold = 0;
	angle_radians = DEFAULT_GLOBAL_FACE_RESORT_ANGLE * (PI/180.0f);
	VidDisp.dbgFacesortThreshold = cosf(angle_radians);

	VidDisp.VSyncAvailable = 0;
	VidDisp.VSyncMode = 0;
	VidDisp.VSyncOn = -1;


	strncpy( VidDisp.ScreenGrab.name, "screen_grab", COUNT(VidDisp.ScreenGrab.name) );
	VidDisp.takeScreenshot = 0;

	//
	// CREATE VIDEO WINDOW/SCREEN
	//
	VidSetDflt2DCamDim( (float)VidDisp.screenW, (float)VidDisp.screenH  );

	if( (ec=WndOpen(VidDisp.screenW,VidDisp.screenH,VidDisp.fullscreen, SystemInfoGetValue(SYSINFO_GAME_FULLNAME)) ) < 0 )
	{
		SysLog("WndOpen() failed! (ec=%d)\n", ec);
		goto BAIL;
	}

	if( (ec=VidStart()) < 0 )
	{
		SysLog("VidStart() failed! (ec=%d)\n", ec);
		goto BAIL;
	}

	// this may seem like an odd place for this, but it must come after
	// we have opened a window...
#ifdef SYS_PC
	ec = glewInit();
#endif
	WndShowCursor(0);


	// initialize the system font, which requires glewInit to be called first.
	// note that the corresponding FontSysQuit occurs during FontFinal()
	FontSysInit();


BAIL:
	return ec;
} // VidInit()

// JFL 03 Sep 04
void VidFinal(void)
{
} // VidFinal()

// JFL 22 Sep 04
int VidReset(uns reset)
{
	VidDisp.flags&=~(M_VIDDISP_FOG);

#ifdef FORCE_VID_ROTATE_RIGHT
	VidDisp.flags|=M_VIDDISP_ROTATE_RIGHT;
#endif


	/*
	if ( VidDisp.ActiveShader != NULL )
	{
		DisableShaders();
		VidDisp.ActiveShader = NULL;
	}
	*/


	VidDisp.DisableLightGroupLights = 0;
	VidDisp.ReflectionLightGroup = -1;

	// setup dflt fog
	VidDisp.fogMode=GL_LINEAR;
	VidDisp.fogNear=10000.0;
	VidDisp.fogFar=10001.0;
	VidDisp.fogDensity=0.20f;
	VidDisp.fogRGBA[0]=1.0f;
	VidDisp.fogRGBA[1]=1.0f;
	VidDisp.fogRGBA[2]=1.0f;
	VidDisp.fogRGBA[3]=1.0f; // alpha is used for the fog clamp, 0 means no clamp on the fog (go to full fog), 1 means no fog
	VidDisp.flags|=M_VIDDISP_FOG|M_VIDDISP_FOG_C;


	VidDisp.ReflectionMapScale = 1.0f;

	V3SetXYZ(VidDisp.ClearColor,0,0,0);
	V3SetXYZ(VidDisp.ReflectionMapClearColor,0,0,0);

	VidDisp.VSyncOn = -1;
	VidSetVSyncMode(RenderG.DFLT_VSYNC);

	VidSetMinFrameTime(RenderG.DFLT_MINFRAMETIME);
	VidDisp.LoadingScreenActive = 0;


	return 0;
} // VidReset()


//
// IsExtensionSupported
//	Check to see if OpenGL extension is supported
//	from:
//	http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=45
//
// in:
//	szTargetExtension = ptr to character string name of extension
// out:
//	<>0 = supported
// global:
//
// GNP 25 Nov 05
//
uns8 IsExtensionSupported( char* szTargetExtension )
{
	const unsigned char *pszExtensions = NULL;
	const unsigned char *pszStart;
	unsigned char *pszWhere, *pszTerminator;

	// Extension names should not have spaces
	pszWhere = (unsigned char *) strchr( szTargetExtension, ' ' );
	if( pszWhere || *szTargetExtension == '\0' )
		return(0);

	// Get Extensions String
	pszExtensions = glGetString( GL_EXTENSIONS );

	// Search The Extensions String For An Exact Copy
	pszStart = pszExtensions;
	for(;;)
	{
		pszWhere = (unsigned char *) strstr( (const char *) pszStart, szTargetExtension );
		if( !pszWhere )
			break;
		pszTerminator = pszWhere + strlen( szTargetExtension );
		if( pszWhere == pszStart || *( pszWhere - 1 ) == ' ' )
			if( *pszTerminator == ' ' || *pszTerminator == '\0' )
				return(1);
		pszStart = pszTerminator;
	}
	return(0);
//DONE("IsExtensionSupported")
} // IsExtensionSupported

// JFL 03 Sep 04
// JFL 07 Oct 04
int VidStart( )
{
	int ec;
	GLint i1;
	float v[4];
	char buf[128];


	/*
	VidDisp.screenW = screen_width;
	VidDisp.screenH = screen_height;
	VidDisp.screenAspectRatio = aspect_ratio;
	*/

	//
	// OpenGL settings
	//

	VidDisp.apiVendor = (void*)glGetString(GL_VENDOR);
	VidDisp.apiVersion = (void*)glGetString(GL_VERSION);
	VidDisp.apiRenderer = (void*)glGetString(GL_RENDERER);
	VidDisp.apiExtensions = (void*)glGetString(GL_EXTENSIONS);

	StringChangeCase( VidDisp.apiVendor, buf, 0 );
	if ( strstr( buf, "nvidia" ) )
		RenderG.PLATFORM_NVIDIA = 1;
	else if ( strstr( buf, "ati" ) )
		RenderG.PLATFORM_ATI = 1;

#if DEBUG
	SysLog("GL Vendor: %s\n",VidDisp.apiVendor);
	SysLog("GL Version: %s\n",VidDisp.apiVersion);
	SysLog("GL Renderer: %s\n",VidDisp.apiRenderer);

// prints a list of OpenGL extensions
#if 0
	SysLog("GL Extensions:\n");
	s1=VidDisp.apiExtensions;
	while ((s2 = strchr(s1,0x20)) != NULL)
	{
		int pos;
		pos = s2-s1;
		strncpy(tS,s1,pos+1);
		tS[pos+1]=0;
		SysLog("%s\n",tS);
		s1=s2+1;
	}
#endif

#endif //DEBUG

	// Figure out if the platform and video driver can support VSync
#if defined SYS_PC
	if ( strstr(VidDisp.apiExtensions, "WGL_EXT_swap_control") != NULL )
	{
		VidDisp.VSyncAvailable = 1;
		// TODO: Check whether Windows platform can support adaptive VSync
		//if (strstr(VidDisp.apiExtensions, "EXT_swap_control_tear") != NULL )
		//	VidDisp.VSyncAvailable = 2;
	}
#elif defined SYS_LINUX
	// TODO: Add check to see if the Linux platform and the driver can support VSync
	VidDisp.VSyncAvailable = 1;
#endif // defined SYS_PC
		


	// we really don't want nicest here?!?!?
	glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_FASTEST);//GL_NICEST);

#if DEBUG
	// 1=bilinear 2=anisotropic
	glGetIntegerv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &i1);
	SysLog("GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = %d\n",i1);
#endif //DEBUG

	// glEnable(GL_POLYGON_SMOOTH);

	//Using GL Hints it's not recommended. Performance of Your program will 
	//get much lower. If You want to make antialiasing of polygons try enabling
	//GL_POLYGON_SMOOTH, but remember that You also have to enable GL_BLEND 
	//with glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA).
	//Else method of antialiasing is multisample, but You can be sure that 
	//it will eat many of FPS

	// http://developer.nvidia.com/object/gdc_ogl_multisample.html
	// Will's research:
	// http://www.opengl.org/resources/tutorials/sig99/advanced99/course_slides/vissim/sld031.htm
	// http://www.nvnews.net/previews/geforce_6600_gt/page_3.shtml
	// http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_filter_anisotropic.txt
	// http://www.opengl.org/resources/tutorials/advanced/advanced98/notes/node37.html
	// http://www.sulaco.co.za/tut4.htm
	// http://www.opengl.org/resources/tutorials/sig99/advanced99/notes/node56.html
	// http://www.flipcode.com/articles/article_advgltextures.shtml

	// set defaults
	// routines must save & restore these settings if changed

	glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,GL_FALSE);
	glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_FALSE);
	glFrontFace(GL_CCW); // front faces counter clock wise
	glDisable(GL_SCISSOR_TEST);
	glDisable(GL_STENCIL_TEST);
	glDisable(GL_COLOR_LOGIC_OP);
	glDisable(GL_INDEX_LOGIC_OP);

	glClearDepth(1.0f);
	glClearStencil(0);

	// default global ambient light
	v[0]=v[1]=v[2]=0;v[3]=1;
	glLightModelfv(GL_LIGHT_MODEL_AMBIENT,v);

	glGetIntegerv(GL_MAX_TEXTURE_SIZE,&i1);
	if(i1<2048)
		BP(BP_VIDSTART); // game needs at least 2048x2048 texture size


	ec=0;

	return ec;
} // VidStart()




// from res.c
extern ResDataCam sys2d_cam;
extern ResDataCam sys3d_cam;

void VidSetDflt2DCamDim( float w, float h )
{
	VidDisp.Cam2D_W = w;
	VidDisp.Cam2D_H = h;

	sys2d_cam.trans[0] = VidDisp.Cam2D_W / 2.0f;
	sys2d_cam.trans[1] = VidDisp.Cam2D_H / 2.0f;

	sys2d_cam.orthoWidth = VidDisp.Cam2D_W;
}



void VidSetRecording(int on, char *filename )
{
	if ( on && filename )
	{
		VidDisp.enableRecording=on;
		strncpy(VidDisp.RecordingFile,filename, sizeof(VidDisp.RecordingFile) );
	}
	else
		VidDisp.enableRecording=0;

}


int VidFogInit()
{
	int error_code = 0;
	// load fog settings...
	if (HashTableCreate( &gFogSettings, 128, MemAllocCoreConfig, MemFree ) < -1) {
		SysLog("Failed to create hash table for fog; Game is in an unstable state!\n");
		BP(-1);

		error_code = -2;
		return error_code;
	}
	if (VidLoadFog() < 0) {
		error_code = -1;
	}
	return error_code;

}

int VidSetFogValues( char *name, float	Density, float	Near, float	Far, float	*RGBA  )
{
	int ec = 0;
	char buf[32];
	
	if ( ! name || ! RGBA )
		return -1;

	snprintf( buf,  sizeof(buf), "%f", Density );
	ec = HashTable2dSetStringByString( &gFogSettings, name, "density", buf );
	if ( ec < 0 )
		return ec;
	snprintf( buf,  sizeof(buf), "%f", Near );
	ec = HashTable2dSetStringByString( &gFogSettings, name, "near", buf );
	if ( ec < 0 )
		return ec;
	snprintf( buf,  sizeof(buf), "%f", Far );
	ec = HashTable2dSetStringByString( &gFogSettings, name, "far", buf );
	if ( ec < 0 )
		return ec;

	snprintf( buf,  sizeof(buf), "%f", RGBA[0] );
	ec = HashTable2dSetStringByString( &gFogSettings, name, "red", buf );
	if ( ec < 0 )
		return ec;

	snprintf( buf,  sizeof(buf), "%f", RGBA[1] );
	ec = HashTable2dSetStringByString( &gFogSettings, name, "green", buf );
	if ( ec < 0 )
		return ec;

	snprintf( buf,  sizeof(buf), "%f", RGBA[2] );
	ec = HashTable2dSetStringByString( &gFogSettings, name, "blue", buf );
	if ( ec < 0 )
		return ec;

	snprintf( buf,  sizeof(buf), "%f", RGBA[3] );
	ec = HashTable2dSetStringByString( &gFogSettings, name, "clamp", buf );
	if ( ec < 0 )
		return ec;


	return ec;

}
int VidUseFog( char *name )
{
	if ( name == NULL )
		return 0;
	VidDisp.fogMode = GL_LINEAR;
	VidDisp.fogDensity = HashTable2dConfGetFloat( &gFogSettings, name, "density", VidDisp.fogDensity );
	VidDisp.fogNear = HashTable2dConfGetFloat( &gFogSettings, name, "near", VidDisp.fogNear );
	VidDisp.fogFar = HashTable2dConfGetFloat( &gFogSettings, name, "far", VidDisp.fogFar );
	VidDisp.fogRGBA[0] = HashTable2dConfGetFloat( &gFogSettings, name, "red", VidDisp.fogRGBA[0] );
	VidDisp.fogRGBA[1] = HashTable2dConfGetFloat( &gFogSettings, name, "green", VidDisp.fogRGBA[1] );
	VidDisp.fogRGBA[2] = HashTable2dConfGetFloat( &gFogSettings, name, "blue", VidDisp.fogRGBA[2] );
	VidDisp.fogRGBA[3] = HashTable2dConfGetFloat( &gFogSettings, name, "clamp", VidDisp.fogRGBA[3] );
	VidDisp.flags |= M_VIDDISP_FOG|M_VIDDISP_FOG_C;

	return 0;
}

int FogLoadFile( char *file, void *data )
{
	char *c;
	char name[64];
	int ec;
	HashTable ht = { 0, };
	HashTable *oht;


	StringGetNameFromPath( file, name, sizeof(name), NULL );
	c = strstr(name,".");
	if ( c )
		*c = '\0';

	// maybe a '.blahblah' file (like .svn)
	if ( name[0]=='\0' )
		return 0;

	ec = FileAccess_LoadFileHashTableStringByString( FILEACCESS_TYPE_FOG, file, &ht, MemAllocCoreConfig );
	if ( ec < 0 )
		goto BAIL;

	oht = HashTable2dGetTableByString( &gFogSettings, name );
	if ( oht )
		HashTableFree( oht );

	ec = HashTableSetNodeDataByString( &gFogSettings, name, &ht, sizeof(HashTable) );
	if ( ec < 0 )
		goto BAIL;


	ec = 0;
BAIL:
	if ( ec < 0 ) {
		SysLog( "Error loading fog file: %s\n", file );
	}
	return ec;


}
int VidLoadFog()
{
	return FileAccess_WalkFiles( FILEACCESS_TYPE_FOG, NULL, FILEACCESS_RESULT_MODE_FULLPATHS, FogLoadFile, NULL ); 
}

int VidReloadFog()
{
	HashTableFree( &gFogSettings );
	HashTableCreate( &gFogSettings, 128, MemAllocCoreConfig, MemFree );
	return VidLoadFog();
}


int VidSaveFog( char* fog_name )
{
	char filename[FILEACCESS_MAX_FILENAME_LEN];
	char fullpath[FILEACCESS_MAX_FILENAME_LEN];
	int ec;
	int i,count = 0;
	HashTable *ht;
	char **keys;
	char *name;
	char *buffer;
	int buffer_len;

	keys = NULL;

	count = HashTableGetStringKeys( &gFogSettings, &keys, 0 );
	for ( i = 0 ; i < count; i++ )
	{
		name=keys[i];
		if ( strcmp(fog_name, name) != 0 ) {
			continue;
		}

		ht = HashTable2dGetTableByString( &gFogSettings, name );
		if ( ht )
		{
			snprintf(filename, COUNT(filename), "%s.txt", name );
			ec = FileAccess_GetFileSavePath( FILEACCESS_TYPE_FOG, NULL, filename, fullpath, COUNT(fullpath) );
			/*
			ec = FileAccess_FindFile( FILEACCESS_TYPE_FOG, NULL, filename, fullpath, COUNT(fullpath) );
			if ( ec < 0 )
			{
				// else save to dflt path
				path[0]='\0'; // safety
				FileAccess_GetPath( FILEACCESS_TYPE_FOG, path, COUNT(path) );
				snprintf(fullpath, COUNT(fullpath), "%s/%s", path, filename );
			}
			*/
			buffer=NULL;
			buffer_len=0;
			ec = FileAccess_SaveFileHashTableStringByString( FILEACCESS_TYPE_FOG, fullpath, ht );
			if ( ec < 0 )
			{
				SysLog( "Error saving fog file '%s'\n", fullpath );
				return ec;
			}
		}
	}

	MemFree( keys );
	keys = NULL;

	return 0;
	//	return HashTable2dSaveStringByString( &gFogSettings, buf, ".", " = " );
}



/*
int WaterLoadFile( char *file, void *data )
{
	int count;
	char *c;
	char name[64];
	int ec;
	VidWaterParams vwp = { 0, };

	StringGetNameFromPath( file, name, sizeof(name), NULL );
	c = strstr(name,".");
	if ( c )
		*c = '\0';

	// maybe a '.blahblah' file (like .svn)
	if ( name[0]=='\0' )
		return 0;

	ec = FileAccess_LoadFileRTDT( FILEACCESS_TYPE_WATER, file, "VidWaterParams", &vwp );
	if ( ec < 0 ) {
		SysLog( "Error loading water file: %s\n", file );
		return ec;
	}

	strcpy( vwp.name, name );

	count = *(int*)data;
	gWaterSets.params[count] = vwp;
	count++;
	*(int*)data = count;


	return 0;


}


int VidLoadWater()
{
	int i;
	int ec;
	int count = 1;
	float trans[3],rot[3];
	V3Cpy(trans,gWaterSets.trans);
	V3Cpy(rot,gWaterSets.rot);
	memset(&gWaterSets,0,sizeof(gWaterSets));

	ec = FileAccess_WalkFiles( FILEACCESS_TYPE_WATER, NULL, FILEACCESS_RESULT_MODE_FULLPATHS, WaterLoadFile, &count  );

	// ec = RTDataTypeParser_LoadFromFile( &gRTDTParser, "VidWaterSettings", &gWaterSets, buf, NULL, NULL );

	for ( i = 0; i < COUNT(gWaterSets.params); i++ )
	{		
		gWaterSets.params[i].wave[0].scale[2]=1.0f; 
		gWaterSets.params[i].wave[1].scale[2]=1.0f;
		gWaterSets.params[i].LastUpdate = 0;
	}
	V3Cpy(gWaterSets.trans,trans);
	V3Cpy(gWaterSets.rot,rot);

	// Set up the first entry in the list as the "default" entry
	strncpy(gWaterSets.params[0].name, "default", sizeof(gWaterSets.params[0].name) - 1);
	gWaterSets.params[0].uNormalMapAmp =	1.0f;
	gWaterSets.params[0].uDistortionAmp =	0.080508f;
	gWaterSets.params[0].uVertAmp =			0.0f;
	gWaterSets.params[0].uMinReflectivity =	0.216102f;
	gWaterSets.params[0].uReflectionScale =	0.360170f;
	gWaterSets.params[0].uReflectionDistortion =	0.881356;
	V2Zero(gWaterSets.params[0].uVertSpeed);
	V2Zero(gWaterSets.params[0].uVertFreq);
	V3Zero(gWaterSets.params[0].wave[0].rot);
	V3Zero(gWaterSets.params[0].wave[0].speed);
	V3Zero(gWaterSets.params[0].wave[0].pos);
	V3SetXYZ(gWaterSets.params[0].wave[0].scale, 0.0f, 0.0f, 1.0f);
	V3Zero(gWaterSets.params[0].wave[1].rot);
	V3Zero(gWaterSets.params[0].wave[1].speed);
	V3Zero(gWaterSets.params[0].wave[1].pos);
	V3SetXYZ(gWaterSets.params[0].wave[1].scale, 0.0f, 0.0f, 1.0f);
	gWaterSets.params[0].LastUpdate = 0;
	

	return ec;
}

int VidReloadWater()
{
	return VidLoadWater();
}

int VidSaveWater( char *water_name )
{
	char filename[FILEACCESS_MAX_FILENAME_LEN];
	char fullpath[FILEACCESS_MAX_FILENAME_LEN];

	int ec,i;
	VidWaterParams *vwp;

	for ( i = 0; i < COUNT(gWaterSets.params); i++ )
	{		
		vwp = &gWaterSets.params[i];

		if ( (vwp->name[0] == '\0') || (strcmp(water_name, vwp->name) != 0) ) {
			continue;
		}

		snprintf(filename, COUNT(filename), "%s.txt",  vwp->name );

		ec = FileAccess_GetFileSavePath( FILEACCESS_TYPE_WATER, NULL, filename, fullpath, COUNT(fullpath) );
		if ( ec < 0 )
			return ec;

		ec = FileAccess_SaveFileRTDT( FILEACCESS_TYPE_WATER, fullpath, "VidWaterParams", vwp, 0 );
		return ec;
	}

	// Did not save anything
	ec = -1;
	return ec;
}

int VidWaterSetReflectionPlaneRes( char *name )
{
	Res *r;
	ResDataKan *kan;
	ResDataKanKey *key;
	if ( ! name )
		return -1;
	r = ResFindSubNth( NULL, name, RESSUB_KAN, 0 );
	if ( ! r || ! r->data )
		return -2;
	kan=(ResDataKan*)r->data;
	key=(ResDataKanKey*)&kan[1];

	VidWaterSetReflectionPlane( &key->rts[RESDATAKANKEY_CH_TX], &key->rts[RESDATAKANKEY_CH_RX] );
	return 0;
}


void VidWaterSetReflectionPlane( float *trans, float *rot )
{
	if ( ! rot || ! trans )
		return;
	V3Cpy( gWaterSets.rot, rot );
	V3Cpy( gWaterSets.trans, trans );
}

int VidWaterUpdatePos(int preset)
{
	int i;
	float TimeDelta;
	if ( preset > COUNT(gWaterSets.params) || preset < 0 )
		return -1;
	if ( gWaterSets.params[preset].LastUpdate==0 || gWaterSets.params[preset].LastUpdate != GameWaveTime )
	{
		TimeDelta = (float)GameLoopDelta / 200000.0f;

		for ( i = 0; i < 3; i++ )
		{
			gWaterSets.params[preset].wave[0].pos[i] += TimeDelta * gWaterSets.params[preset].wave[0].speed[i];
			gWaterSets.params[preset].wave[1].pos[i] += TimeDelta * gWaterSets.params[preset].wave[1].speed[i];
			// wrap around 1.0
			gWaterSets.params[preset].wave[0].pos[i] -= (int)gWaterSets.params[preset].wave[0].pos[i];
			gWaterSets.params[preset].wave[1].pos[i] -= (int)gWaterSets.params[preset].wave[1].pos[i];
		}


		gWaterSets.params[preset].LastUpdate = GameWaveTime;
	}
	return 0;

}

int VidWaterGetPresetByName( char *name )
{
	int i;
	if ( ! name || name[0] == '\0' )
		return 0;
	for ( i = 0; i < COUNT(gWaterSets.params); i++ )
	{
		if ( strcmp(name,gWaterSets.params[i].name) == 0 )
			return i;
	}
	return 0;
}
*/

void VidSetGfxCardBrightness(float brightness)
{
#if defined(SYS_LINUX)
	char cmd[64]={0};

	// This command assumes that "export DISPLAY=0:0" has been called at some point. Should be called in a start-up script.
	sprintf(cmd, "nvidia-settings -a Brightness=%0.2f", brightness);
	system(cmd);
#endif
}

void VidSetGfxCardContrast(float contrast)
{
#if defined(SYS_LINUX)
	char cmd[64]={0};

	// as of driver nvidia 275.43, setting contrast resets brightness setting (and vice versa)
	// so can only pick one of the two, for now we pick brightness
	// This command assumes that "export DISPLAY=0:0" has been called at some point. Should be called in a start-up script.
	//sprintf(cmd, "nvidia-settings -a Contrast=%0.2f", contrast);
	//system(cmd);
#endif
}

void VidSetGlobalFaceResortAngle(float angle)
{
	VidDisp.global_facesort_angle = angle;
}


void VidSetVSyncMode(int mode)
{
	switch(mode)
	{
	case VID_VSYNC_MODE_OFF:
	default:
		VidEnableVSync(0);
		break;

	case VID_VSYNC_MODE_ON:
		VidEnableVSync(1);
		break;

	case VID_VSYNC_MODE_ON_SMART:
		VidEnableVSync(-1);
		break;
	}

	VidDisp.VSyncMode = mode;
}


void VidEnableVSync(int on)
{
	if ( on != VidDisp.VSyncOn )
	{
	#if defined SYS_LINUX
		//glXSwapIntervalSGI(on);
	#else	// defined SYS_LINUX (system is Windows)
		wglSwapIntervalEXT(on);
	#endif	// defined SYS_LINUX
	}
	VidDisp.VSyncOn = on;
}


void VidSetMinFrameTime(uns64 msecs)
{
	VidDisp.MinFrameTime = msecs;
}


void VidLoadingScreenAdv( char *text )
{
	float m4[16];
	char buf[256];

	dbgLogGLErrors( "Before LoadScreen" );


 	glViewport( 0, 0, VidDisp.screenW, VidDisp.screenH );
	glClearColor( 0, 0, 0, 0 );
	glClear( GL_COLOR_BUFFER_BIT );

	dbgLogGLErrors( "Before proj mat" );


	RenderState_SetColor(1, 1, 1, 1.0f);
	RenderState_SetMatrixMode(GL_PROJECTION);
	camOrtho( 0, VidDisp.screenW, VidDisp.screenH, 0, 1.0f, 1000.0f, m4 );
	glLoadMatrixf( m4 );

	dbgLogGLErrors( "Before model view" );

	RenderState_SetMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	glTranslatef( 0, 0, -100.0f );

	dbgLogGLErrors( "Before cull face" );

	RenderState_SetCullFace( RENDERSTATE_CULL_FACE_NONE );

	dbgLogGLErrors( "Before bind tex" );

	RenderState_BindTex(0, GL_TEXTURE0, 0 );

	dbgLogGLErrors( "Before LoadScreen Font Draws" );


	snprintf( buf, COUNT(buf), "Welcome to %s v%s\n", SystemInfoGetValue(SYSINFO_GAME_FULLNAME), SystemInfoGetValue(SYSINFO_GAME_VER));
	FontSysX(buf, 20, 20, 1024, 1024);

	snprintf( buf, COUNT(buf), "Initializing Systems, Please Be Patient.\n" );
	FontSysX(buf, 20, 35, 1024, 1024);
	FontSysX(text, 20, 50, 1024, 1024);

	WndSwap(WndCur());

	RenderState_SetCullFace( RENDERSTATE_CULL_FACE_BACK );
	RenderState_SetMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	RenderState_SetMatrixMode(GL_PROJECTION);
	glLoadIdentity();

	dbgLogGLErrors( "After LoadScreen" );

	return;

}

// EOF



makefile tends to be from the G6 Engine.

# makefile -- gnu make
# g6 engine

# get the subversion repo rev number
SVNDEF := -D'G6_SVN_REV="$(shell /usr/bin/svnversion -n /pm/g6/g6engine/. | sed -e 's/.*://g' )"' -D'LIBRARIES_SVN_REV="$(shell /usr/bin/svnversion -n /pm/libraries/.)"'

COFILES = $(patsubst %.c,%.o,$(wildcard g6/*.c))
CPPOFILES = $(patsubst %.cpp,%.opp,$(wildcard g6/*.cpp))

TOOL3OFILES = $(patsubst %.cpp,%.opp,$(wildcard g6/tool3/*.cpp))
DIAGOFILES = $(patsubst %.c,%.o,$(wildcard g6/Diag/*.c))

TARGETLIB = libg6.a

DEPENDTESTFILE = makedeptest
DEPENDLIBFILE = makedeplib

CC	= gcc
CPP	= g++
CFLAGS = -DSYS_LINUX
CFLAGS+=$(SVNDEF)
#CFLAGS  += -O0 -ggdb
#CFLAGS  += -O3
#CFLAGS += -DDEBUG
#CFLAGS += -DPRODUCTION -DNO_TOOL

# "-DLINUX" is needed for PhysX!!!!!
CFLAGS += -DLINUX -fno-stack-protector
CFLAGS += -I g6
CFLAGS += -I /pm/include
CFLAGS += -I /pm/include/libtheoraplayer
CFLAGS += -I /pm/include/bullet
CFLAGS += -I /pm/include/bullet/BulletFileLoader
CFLAGS += -I /pm/include/bullet/BulletWorldImporter
CFLAGS += -I /usr/include/SDL
CFLAGS +=-I /usr/X11/include
CPPFLAGS=$(CFLAGS)
LINKFLAGS  =  -Xlinker -Map -Xlinker $(TARGET).map

.PHONY: all clean debug prod

all: debug 

debug: CFLAGS+=-O0 -DDEBUG -ggdb
debug: CPPFLAGS=$(CFLAGS)
debug: $(TARGETLIB)


prod: CFLAGS+=-O3 -DPRODUCTION -DNO_TOOL -DUSE_DONGLE_NOISE_THREAD -ggdb
prod: CPPFLAGS=$(CFLAGS)
prod: $(TARGETLIB)


$(TARGETLIB) : $(COFILES) $(CPPOFILES) $(TOOL3OFILES) $(DIAGOFILES) makefile
	ar rs $(TARGETLIB) $(COFILES) $(CPPOFILES) $(TOOL3OFILES) $(DIAGOFILES)
	-mkdir -p /pm/include/g6
	-mkdir -p /pm/include/g6/tool3
	-mkdir -p /pm/include/g6/Diag
	-cp $(TARGETLIB) /pm/lib
	-cp g6/*.h /pm/include/g6
	-cp g6/tool3/*.h /pm/include/g6/tool3
	-cp g6/tool3/*.hpp /pm/include/g6/tool3
	-cp g6/Diag/*.h /pm/include/g6/Diag

clean:
	-rm $(COFILES) $(CPPOFILES) $(TOOL3OFILES) $(DIAGOFILES) $(TARGETLIB)


g6/%.o : g6/%.c
	$(CC) $(CFLAGS) -c $< -o $@

g6/%.opp : g6/%.cpp
	$(CPP) $(CPPFLAGS) -c $< -o $@
	
g6/tool3/%.opp : g6/tool3/%.cpp
	$(CPP) $(CPPFLAGS) -c $< -o $@

g6/Diag/%.o : g6/Diag/%.c
	$(CC) $(CFLAGS) -c $< -o $@


A Samba config for the eyes of the said companies.

#
#  Generic Samba configuration file for Raw Thrills / PlayMechanix 
#

#======================= Global Settings =======================

[global]

## Browsing/Identification ###

	workgroup = WORKGROUP
	server string = %h server (Samba, Ubuntu)
	dns proxy = no
	name resolve order = lmhosts host wins bcast

#### Networking ####
#### Debugging/Accounting ####

	log file = /var/log/samba/log.%m
	max log size = 1000
	syslog = 0
	panic action = /usr/share/samba/panic-action %d


####### Authentication #######

	security = user
	encrypt passwords = true
	passdb backend = tdbsam
	obey pam restrictions = yes
	unix password sync = yes
	
	passwd program = /usr/bin/passwd %u
	passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

	pam password change = yes
	map to guest = bad user

########## Domains ###########
########## Printing ##########
############ Misc ############

	socket options = TCP_NODELAY

	# Some defaults for winbind
	idmap uid = 10000-20000
	idmap gid = 10000-20000
	template shell = /bin/bash
	usershare max shares = 100
	usershare allow guests = no

#======================= Share Definitions =======================

[pm]
	path = /pm
	writeable = yes
	browseable = yes
	valid users = raw
	
[pm_collection]
	path = /pm_collection
	writeable = yes
	browseable = yes
	valid users = raw

	
# EOF

A few command history logs for setting up the machine internally before distribution.

diff /usr/lib/i386-linux-gnu/libssl.a /pm/lib/libssl.a
gdb tui ./game
gdb -tui ./game
y
cd /pm/libraries/external/GWEN/
ls
cd Projects/linux/
ls
cd gmake/
ls
make
make GWEN-Static
ls
cd obj
ls
cd Release/
ls
cd GWEN-Static/
ls
cd ../../../../..
ls
cd ..
ls
cd bin
ls
cd ../lib
ls
cd linux/
l
ls
cp ./libgwen_static.a /pm/lib
ll
cd /pm/lib
ll | grep GWEN
ll | grep gwen
cd /pm/libraries/external/GWEN/
ls
cd lib
ls
ll
cd linux/
ll
rm -f libgwen_static.a 
cd ../../Projects/linux/
ls
cd gmake
make GWEN-Static
make clean
make GWEN-Static
cd /pm/g6/motogp/src/
make
gdb -tui ./game
make clean
ll /pm/lib/libgwen_static.a 
make
gdb -tui ./game
cd /pm/libraries/external/GWEN/
svn st
cd lib/linux/
ls
cd gmake/
ls
ll
ls
cd ../../..
ls
cd Projects/
cd linux/
ls
cd gmake/
ls
make clean
make GWEN-Static
cd ../../../lib/linux/gmake/
ll
cp ./libgwen_static.a /pm/lib
cd /pm/lib
ll | grep gwen
cd /pm/g6/motogp/src/
make clean
make
gdb -tui ./game
cd ../../g6engine/src/g6/
ls
cd tool3/
ls
vim tool3_debugsettings.cpp 
cd ../..
make
cd ../../motogp/src/
make
gdb -tui ./game
cd /pm/libraries/external/GWEN/src/
ls
vim Utility.cpp 
cd ..
ls
cd Projects/linux/gmake/
make clean
make
make GWEN-Static 
cd ../../..
ls
cd lib/linux/
ls
cd gmake/
ls
rm -f libgwen.so 
cp ./libgwen_static.a /pm/lib
cd /pm/g6/motogp/src/
make
gdb -tui ./game
cd ../../g6engine/src/
make
cd ../../motogp/src/
make
gdb -tui ./game
cd ../../g6engine/src/
make
cd ../../motogp/src/
make
gdb -tui ./game
cd ../../g6engine/src/
make
cd /pm/g6/motogp/src/
ls
make
cd /root
ls
./NVIDIA-Linux-x86-334.21.run 
service lightdm stop
./NVIDIA-Linux-x86-334.21.run 
less /var/log/nvidia-installer.log 
./NVIDIA-Linux-x86-334.21.run 
service lightdm start
service lightdm stop
service
man service
service status
service status all
man service
ps -e
service --status-all
service lightdm stop
reboot
nvidia-settings
service lightdm start
find / -iname 'libssl.a'
reboot
cd /pm/g6/motogp/src/
ls
vim make
vim makefile 
make
make clean
make
vim makefile 
make clean; make
cd /pm/g6/motogp/src/
make
./game -m -c -t -e
vim makefile 
make
make clean; make
./game -m -c -t -e
vim makefile 
make clean; make
./game -m -c -t -e
vim makefile 
make clean; make
./game -m -c -t -e
vim makefile 
make clean; make
./game -m -c -t -e
vim makefile 
make clean; make
./game -m -c -t -e
cd /pm/libraries/
svn st
cd pmrt/pmrt_ssl/
vim datadigest.h
make
vim datadigest.h
make
cd /pm/g6/motogp/src/
vim src/xl_moto.c
make
./game -m -c -t -w1280x720
vim src/xl_moto.c
make
./game -m -c -t -w1280x720
echo @ $SHELL @
stty -echo;PS1="<wingdb>"
echo
tty
sleep 8640000
echo @ $SHELL @
stty -echo;PS1="<wingdb>"
echo
gdb  --interpreter=mi --tty=/dev/pts/27 
cd /
ll
mkdir -p /netbeans/pm/g6/motogp
cd /netbeans/pm/g6/motogp/
cd ..
ll
rm -rdf motogp/
cd /pm/libraries/
svn st
diff external/GWEN/src/Utility.cpp 
svn diff external/GWEN/src/Utility.cpp 
svn st
svn diff pmrt/pmrt_ssl/datadigest.h
:q
svn st
cd external/GWEN/
ls
cd lib/linux/gmake/
ls
cd ../../../../..
vim install-external-libs-linux.sh 
cd external/GWEN/
svn st
diff lib/linux/libgwen_static.a lib/linux/gmake/libgwen_static.a 
cd ../..
svn st
svn ci --message="" external/GWEN/src/Utility.cpp pmrt/pmrt_ssl/datadigest.h
cd ../g6/g6engine/
svn st
svn diff src/g6/tool3/tool3_debugsettings.cpp
svn revert src/g6/tool3/tool3_debugsettings.cpp
svn st
cd ../motogp/src/
svn st
svn diff makefile 
svn ci --message="" makefile 
cd ..
svn st
cd ../g6engine/src/
make
make clean; make
cd /pm/g6/motogp/src/
make
top
cd /pm/g6/g6engine/src/
make
cd ../../motogp/src/
make
vim src/bike_calibration.h
make
vim src/game_statemachines.c
cd ../../2XL/Tech/
make
cd ../Code/
make
cd ../../g6engine/src/
make
cd ../../motogp/src/
make
cd ../../g6engine/
cd src/
make
cd ../../motogp/src/
make
./game -m -c -t -w1280x720
gdb -tui ./game
./game -m -c -t -w1280x720
vim src/xl_moto.c
make
vim src/xl_moto.c
make
./game -m -c -t -w1280x720
vim ../data/programs/bike_cal/TextProg.txt 
vim ../data/programs/bike_cal/BIKECAL_SCENE.txt 
./game -m -c -t -w1280x720
gdb -tui ./game
y
vim src/game_statemachines.c
make
vim ../data/programs/bike_cal/BIKECAL_SCENE.txt 
./game -m -c -t -w1280x720
gdb -tui ./game
ll src
gdb -tui ./game
vim src/bike_calibration.c
make
./game -m -c -t -w1280x720
gdb -tui ./game
cd ../../2XL/Code/
make
cd ../../motogp/st
cd ../../motogp/src/
make
./game -m -c -t -w1280x720
cd ../../2XL/Code/
make
cd ../../motogp/src/
make
./game -m -c -t -w1280x720
cd ../../2XL/Code/
vim Game/MotoGPVehicle.cpp
make
cd ../../motogp/src/
make
./game -m -c -t -w1280x720
cd ../../2XL/Code/
vim Game/MotoGPVehicle.cpp
make
cd ../../motogp/src/
vim src/xl_moto.c
make
./game -m -c -t -w1280x720
cd ../../2XL/Code/
vim Game/MotoGPVehicle.cpp
make
cd ../Tech/
make
cd ../../g6engine/src/
make
cd ../../motogp/src/
make
./game -m -c -t -w1280x720
echo @ $SHELL @
stty -echo;PS1="<wingdb>"
echo
ps -U `id -u` -o pid,user,comm
kill -2 8249
ps -U `id -u` -o pid,user,comm
kill -2 9259
echo @ $SHELL @
stty -echo;PS1="<wingdb>"
echo
tty
sleep 8640000
echo @ $SHELL @
stty -echo;PS1="<wingdb>"
echo
gdb  --interpreter=mi --tty=/dev/pts/25 
cd /pm/g6/motogp/src/
make
cd ..
cd pmuser/
ls
cd aud
ls
cd save/
ls
cd ../../..
cd src
vim src/bike_calibration.c
make
cd /root/projects/
ls
rm -rf MotoGP/
ls
rm -rf MotoGP/
cd /pm/g6/2XL/Tech/
make
cd ../Code/
make
cd ../../g6engine/src/
ls
make
cd /pm/libraries/
make clean
make
cd /pm/g6/g6engine/src/
make
cd ../../2XL/Tech/
make
ls
rm -f libxltech.a 
make
cd ../Code/
make
ls
rm -f libxlgame.a 
make
cd ../../motogp/src/
make
top
ls
rm src.kdev4 
man make
cd /pm
cd g6/motogp/src/
gdb -tui ./game
./game -m -c -t -w1280x720
ls
gdb -tui ./game
./game -m -c -t -w1280x720
ls
./game -m -c -t -w1280x720
cd /pm/g6/2XL/Code/Game/
vim MotoGPVehicle.cpp
cd /pm/g6/motogp/src/
ls
vim src/xl_moto.c
make
killall -9 game
cd ../../2XL/Code/Game/
cd ..
vim Game/MotoGPVehicle.cpp 
make
vim Game/MotoGPVehicle.cpp 
cd /pm/libraries/external/xiph/
ls
cd ../..
./install-external-libs-linux.sh 
cd /pm/g6/g6engine/src/
make prod
make clean
make prod
cd ../../2XL/Tech/
make clean
make prod
cd ../Code/
make clean
make prod
cd /pm/online/src/
make
cd ..
ls
make clean
make prod
vim makefile 
make prodG6
cd ../g6/motogp/src/
make clean
make prod
uname
man uname
uname -o
man uname
uname -a
service lightdm start
cd /pm/g6/2XL/Code
vim Game/MotoGPVehicle.cpp 
make
cd ../../motogp/src/
make
cd /pm/g6/2XL/Code
vim Game/MotoGPVehicle.cpp 
make
cd ../../motogp/src/
make
cd /pm/g6/2XL/Code
vim Game/MotoGPVehicle.cpp 
make
cd ../../motogp/src/
make
dhclient
ifconfig
cd ../../2XL/Code/
ls
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
vim makefile
make
/root/moto-build.sh
svn st
rm -rf *.opp
svn diff makefile
svn st
svn ci --message="2XL: Removed .cpp files from makefile that no longer exist" makefile
vim Game/MotoGPVehicle.cpp 
make
cd ../../motogp/src/
make
cd /pm
ls
rm -rf *
ls
cd /
du s
du 
du -s
reboot
cd /pm
./game -t -w1280x720
vim /pm/g6/motogp/data/conf/vehicles/motogp.ini 
/root/moto-revert-update.sh 
./game -t -w1280x720
cd g6/2XL/Code/
vim Game/MotoGPVehicle.cpp 
make
cd /pm/g6/motogp/data/conf/vehicles
vim motogp.ini 
cd /pm/g6/2XL/Code/Game/
cd..
cd ..
vim Game/MotoGPVehicle.cpp 
vim Game/MotoGPPhysicsVehicle.cpp 
make
vim Game/MotoGPPhysicsVehicle.cpp 
make
cd ../../motogp/src/
make
./game -t -w1280x720
/root/moto-revert-update.sh \
cd /pm/g6/2XL/Tech/Code/
vim XLNetworkTCPSocket.h 
cd /pm/g6/2XL/Tech
vim makefile 
ls
cd Code
ls
ll | grep Network
cd /pm/g6/2XL/Tech/
make
:q
cd /pm
ls
cd /root
ls
./moto-revert-update.sh 
/root/lib-build.sh 
/root/moto-build.sh
/root/lib-build.sh 
/root/moto-build.sh
stat /pm
stat -L /pm
/root/moto-build.sh
top
clear
cd /pm/g6/motogp/src/
make
cd ../../2XL/Tech/
make
svn st
svn st | grep ^M
Code/XLNetworkTCPSocket.cpp: In member function âvirtual XL::Networking::SocketStatus XL::Networking::TCPSocketFactory::CreateSocket(XL::Networking::ITCPSocket*&, const XL::Networking::IPEndPoint&, const XL::Networking::SocketOptions&)â
:Code/XLNetworkTCPSocket.cpp:166:26: error: âmSocketâ was not declared in this scope
Code/XLNetworkTCPSocket.cpp:47:31: error: âXL::Networking::_Internal::InterfaceError {anonymous}::TCPSocketImplemenation::mErrorâ is private
Code/XLNetworkTCPSocket.cpp:198:11: error: within this context
Code/XLNetworkTCPSocket.cpp:48:21: error: âSOCKET {anonymous}::TCPSocketImplemenation::mSocketâ is private
Code/XLNetworkTCPSocket.cpp:199:11: error: within this context
Code/XLNetworkTCPSocket.cpp:49:28: error: âSOCKET {anonymous}::TCPSocketImplemenation::mPipe [2]â is private
Code/XLNetworkTCPSocket.cpp:200:11: error: within this context
Code/XLNetworkTCPSocket.cpp:49:28: error: âSOCKET {anonymous}::TCPSocketImplemenation::mPipe [2]â is private
Code/XLNetworkTCPSocket.cpp:201:11: error: within this context
Code/XLNetworkTCPSocket.cpp:50:21: error: âbool {anonymous}::TCPSocketImplemenation::mCreatedPipeSocketsâ is private
Code/XLNetworkTCPSocket.cpp:202:11: error: within this context
make
cd ..
ls
cd Code/
make
cd /pm/g6/g6engine/
ls
cd src/
make
cd /pm/g6/motogp/src/src/
make
cd ..
make
cd ../../2XL/Code/
make
cd ../../motogp/src/
make
cd ../../2XL/Tech/
make
cd ../../motogp/src/
make
cd ../../2XL/Tech/
make clean
make
cd ../Code/
make clean
make
cd ../../motogp/src/src/
cd ..
make clean
make
cd ../..
cd motogp/
svn st
cd ../2XL/
svn st
svn st | grep ^M
service lightdm start
cd /pm/g6/motogp/src/
ls
vim  src/
vim src/xl_moto.c
make
vim src/xl_moto.c
make
cd /pm/g6/motogp/data/conf/
vim gameconf.txt 
cd /pm/g6/2XL/Tech/
vim makefile 
cd ../Code/
vim makefile 
cd ../Tech
make prod
make clean
make prod
make
svn st
rm -f src/xl_moto.c*
svn st
svn up
make
glxinfo
glxinfo | long
glxinfo > out.txt
vim out.txt
cd /pm/g6/2XL/Tech/Code/
ll | grep Network
cd ../CrossplatformRUDP/
ls
ll | grep *.cpp
ll | grep '*.cpp'
ll | grep cpp
cd ../Code/
ls
vim XLNetworkInternal.cpp 
vim XLNetworkTCPSocket.cpp 
cd /pm
ll
./game -h -t -f1920x1080
apt-get install gparted
gparted
find / -iname 'fstab'
vim /etc/fstab
reboot
apt-get remove gparted
top
service lightdm start
df
cd /pm
du -sh .
rm -rf 
rm -rf *
reboot
ifconfig
exit
ls
apt-get update
ifconfig
dhclient eth0
apt-get update
apt-get install xfce4
apt-get remove --purge libreoffice-common
ls
/etc/lightdm/
cd /etc/lightdm/
ls
cd /usr/share/lightdm/
ls
cd lightdm.conf.d/
ls
vim 50-ubuntu.conf 
cd /usr/share/xsessions/
ls
ifconfig
exit
ifconfig
dhclient eth0
exit
ifconfig
cd /pm/g6/motogp/data/
ls
cd g6
l
ls
lsusb
dmesg
dpkg -i aksusbd_2.2-1_i386.deb 
service lightdm start
ls
cd /pm/g6/motogp/pmuser/
vim gamelog.txt 
ls
killall game
killall -9 game
vim /pm/g6/motogp/pmuser/gamelog.txt 
lsusb
reboot
ls
rm moto-build.sh~
rm moto-tool.sh~
rm moto-update.sh~
ls
exit
ifconfig
cd /pm
ls
cd libraries/r
cd libraries/
ls
vim makefile
cd ../g6/g6engine/src/
vim makefile 
ls
cd ../../2XL/
ls
vim Tech
vim Tech/makefile 
vim Code/makefile 
cd ../motogp/src
vim makefile 
exit
ls
service lightdm start
ls
ifconfig
ls
cd /pm/g6/motogp/
vim pmuser/gamelog.txt 
ls
cd src
vim makefile 
ifconfig
reboot
ifconfig
dmesg
ls
ifconfig
ifconfig eth0 down
ifconfig
ifconfig eth0 up
ifconfig
dmesg
ifconfig
exit
cd /pm/g6/g6engine/src/
vim makefile 
cd ../..
ls
cd ..
ls
vim online/
cd online/
ls
vim makefile 
exit
vim moto-build.sh 
exit
ifconfig
exit
cd /pm/g6/2XL/
svn st | grep ^M
svn revert
svn revert .
svn st | grep ^M
svn revert Code/makefile Tech/makefile 
cd ..
svn revert g6engine/src/makefile motogp/src/makefile 
ifconfig
dhclient eth0
ifconfig
dmesg
ls
ifconfig
ls
cd g6engine/src/
vim makefile 
cd ../../2XL/Code/
vim makefile 
vim ../Tech/makefile 
cd ../../motogp/src/
vim makefile 
cd /pm/online/
vim makefile 
cd
ls
./moto-build.sh 
ifconfig
exit
shutdown -P now
ls
ifconfig
ls
cd /pm/g6/motogp/src/
make -j2 prod
cd /pm
ls
cd /pm/g6/motogp/src
vim make
vim makefile 
cd
cd /pm
./game -w -e
ls
killall -12 game
ls
Broadcom-tg3/
ls
cd Broadcom-tg3/
ls
vim README.TXT 
lspci
exit
ifconfig eth0 down
ls
ifconfig
service lightdm start
ls
cd /pm/g6/motogp/pmuser/
vim gamelog.txt 
killall -12 game
ls
ifconfig
ls
ifconfig
ls
ifconfig
dhclient wlan0&
ifconfig
ifconfig -a
ifconfig
iwconfig
ifconfig
lsusb
ifconfig
iwconfig
ifconfig wlan0 down
ifconfig eth0 up
ifconfig
apt-get install network-manager
ifconfig
apt-get install network-manager
apt-get install nm-applet
ifconfig
network-admin
apt-get install network-admin
ifconfig
apt-get install network-admin
apt-get update
ifconfig
apt-get upgrade
apt-get dist-upgrade
reboot
ls
ethtool -h
exit
ls
ifconfig
ethtool -h
ethtool eth0
ethtool
ethtool -h
ethtool -i eth0
ethtool -S eth0
ifconfig
ping google.com
ifconfig
ping google.com
ifconfig
lsusb
lsusb -t
ifconfig
tcpdump
exit
ifconfig
exit
ls
cd /usr/lib
ls
ls -l
cd nvidia-331
ls
cd ../nvidia
ls
cd ..
cd nvidia-331-prime/
ls
cd ..
ls
ls -l
ls -l | grep libGL
ifconfig
ls -l | grep libGL
cd nvidia-331
ls
ls -l
ls
exit
ls
cd
cd /pm/g6/motogp/src
make
exit
vim note
exit
cd /var/log
ls
ll
du .
du -sh .
apt-get remove --purge netbeans
apt-get autoremove
cd
ls
rm Broadcom-tg3/
rm -rf Broadcom-tg3/
ls
ls -l
ls -h
ls -a
remove -rf .netbeans
rm -rf .netbeans
du -sh /
du -sh .
du -h .
du -s /
cd .cache
ls
rm -rf netbeans
apt-get remove unity unity-asset-pool unity-control-center unity-control-center-signon unity-gtk-module-common unity-lens* unity-services unity-settings-daemon unity-webapps* unity-voice-service
apt-get remove --purge unity unity-asset-pool unity-control-center unity-control-center-signon unity-gtk-module-common unity-lens* unity-services unity-settings-daemon unity-webapps* unity-voice-service
ls
apt-get remove --purge linux-headers-3.13.0-24
apt-get remove --purge linux-headers-3.13.0-24-generic
apt-get remove --purge linux-image-3.13.0-24
apt-get remove --purge linux-image-extra-3.13.0-24
apt-get remove --purge linux-headers-3.13.0-30
apt-get remove --purge linux-image-3.13.0-30
ls
apt-get remove --purge myspell-en-au
apt-get remove --purge myspell-en-gb
apt-get remove --purge transmission-common
apt-get remove --purge sudoku
apt-get remove --purge gnome-sudoku
apt-get remove --purge gnome-mahjongg
apt-get remove --purge gnome-mines
apt-get remove --purge friends
apt-get remove --purge friends-dispatcher
apt-get remove --purge fonts-tlwg*
apt-get remove --purge fonts-tibetan-machine
apt-get remove --purge fonts-thai-tlwg
apt-get remove --purge fonts-sil*
apt-get remove --purge fonts-lklug-sinhala
apt-get remove --purge flashplugin-installer
ls
apt-get -h
apt-get autoclean
apt-cache -h
apt-get clean
apt-get remove --purge ubuntu-docs
apt-get remove --purge gnome-user-guide
apt-get remove --purge fonts-nanum
apt-get remove --purge humanity-icon-theme
apt-get remove --purge tango-icon-theme
apt-get remove --purge ubuntu-wallpapers-trusty
apt-get remove --purge shotwell
apt-get remove --purge shotwell-common
apt-get remove --purge nautilus
apt-get remove --purge nautilus-data
apt-get remove --purge nautilus-sendto-empathy
apt-get remove --purge myspell-en-za
apt-get remove --purge empathy
apt-get remove --purge empathy-common
apt-get remove --purge firefox-locale-en
gcc --version
apt-get purge gnome-accessibility-themes
gparted
ls
rm -rf mozilla/
ls
rm -rf unity unity-lens-photos
ls
exit
ifconfig
ls
cd /pm/g6/motogp/src/
make
ls
apt-get remove --purge thunderbird
ls
cd
ls
dpkg
dpkg -l
dpkg -l > package_list.txt
vim package_list.txt 
apt-get autoremove
apt-get autoclean
apt-get remove --purge oxygen-icon-theme
apt-get remove oxygen-icon-theme
apt-get remove --purge firefox
uname -a
apt-get autoclean
ls
vim package_list.txt 
dpkg -l > package_list.txt 
vim package_list.txt 
dpkg -l > package_list.txt 
vim package_list.txt 
dpkg -l > package_list.txt 
vim package_list.txt 
dpkg -l > package_list.txt 
vim package_list.txt 
apt-get remove nvidia-331
ls
./NVIDIA-Linux-x86-334.21.run 
apt-get remove --purge aisleriot
apt-get remove --purge unity
ls
apt-get remove --purge unity*
dpkg -h
dpkg --help
dpkg-query -W --showformat='${Installed-Size;10}\t${Package}\n' | sort -k1,1n
dpkg-query -W --showformat='${Installed-Size;10}\t${Package}\n' | sort -k1,1n > package_size.txt
vim package_size.txt 
dpkg-query -W --showformat='${Installed-Size;10}\t${Package}\n' | sort -k1,1n > package_size.txt
vim package_size.txt 
dpkg-query -W --showformat='${Installed-Size;10}\t${Package}\n' | sort -k1,1n > package_size.txt
vim package_size.txt 
uname -a
ifconfig
ifconfig wlan0 down
ifconfig
ethtool 
ethtool -h
service lightdm start
service lightdm stop
ls
./NVIDIA-Linux-x86-334.21.run 
reboot
ls
cd /
ls
cd pm
ls
cd ..
ls -l
df
fdisk
fdisk -l
mkfs.ext3 /dev/sda2
fdisk -l
df
ls
mv pm pm_old
ls -l
df
fdisk -l
mkdir /pm
mount /dev/sda2 /pm
ls -l
cd pm
ls
cd ..
df
cd pm
ls
cd /pm_old
lks
ls
cd /
cp -a /pm_old/* /pm
cd /pm
ls
cd /
rm -rf pm_old
ls -l
df
reboot
nvidia-settings 
ls
cd /pm
ls
exit
ls
cd 
ls
mount /media/root/875e9d03-0ca9-412b-8c7c-97aaece079a4/ /pm
exit
ls
rm package_list.txt 
rm package_size.txt 
ls
cd Downloads/
ls
cd ..
ls
cd Downloads/
ls
rm netbeans-8.0-cpp-linux.sh 
rm openssl-1.0.1h.tar.gz 
cd
vim README
exit
cd /
ls
cd pm
ls
ls -l
cd ..
ls -l
exit
cd /
ls
cd boot
ls
cd grub
ls
cd /etc
ls
ls lilo*
cd /boot/grub
ls
ls -l
cat grub.cfg
vim grub.cfg
cd /usr
ls
cd sbin
ls
service lightdm start
service lightdm stop
cd /usr/share/lightdm/
ls
cd lightdm.conf.d/
ls
cd /etc/lightdm/
ls
vim lightdm.conf 
ls
cd /usr/share/lightdm/lightdm.conf.d/
ls
cd /etc/lightdm/
ls
cd /usr/share/lightdm/lightdm.conf.d/
ls
vim 50-ubuntu.conf
service lightdm start
cd /
df
/dev/sda2 /pm ext3 defaults 0 2
cd /etc
ls'
ls -l
ls fstab
ls fs*
vim fstab
reboot
df
cd /
ls
ls -l
cd boot
ls
lks -l
ls -l
cd grub
ls -l
df
cd /
ls
cd pm
ls
cd /media
ls
cd root
ls
cd 875e9d03-0ca9-412b-8c7c-97aaece079a4/
ls
cd /
cd pm
ls
cd ..
rm pm
rm -rf pm
ls
ls -l
cd g3
df
umount media
umount media/root/875e9d03-0ca9-412b-8c7c-97aaece079a4/
df
mount dev/sda2 /pm
mkdir pm
mount dev/sda2 /pm
cd pm
ls
df
/dev/sda2 /pm ext3 defaults 0 2
sudo su -
df
fdisk l
fdisk -l
df
ls -l
cd /
ls -l
cd pm
ls
cd ..
mount /dev/sda2 /pm
ls -l
cd pm
ls
cd /
cd /etc
ls
cd fstab.d
ls
cd ..
cat fstab
fdisk
fdisk -l
df
cat fstab
blkid
vim fstab
rebot
reboot
ls -l
cd /
ls -l
cd pm
ls
fdisk -l
df
reboot
cd /pm
ls
cd /etc
vim fstab
cat fstab
reboot
ls -l
cd /
ls -l
cd pm
ls
cd /
cd /etc
cat fstab
cd /boot/grub
ls
ls -l
cat grub.cfg
vim grub.cfg
ls
cd ..
ls
cd /etc
ls -l
cd grub.d
ls
ls -l
cat README 
LS
ls
cat 00_header 
vim 00_header 
ls
vim 40_custom 
ls
vim 41_custom 
cd ..
cd default
ls
cat grub
cd ..
cd grub.d
ls
vim 00_header
ls
vim 10_linux 
cd /boot/grub
ls
vim grub.cfg
cd /etc
cd grub
cd default
vim grub
update-grub
ls
cd ..
cd grub.d
ls
vim 00_header 
cd /boot
cd grub
ls
vim grub.cfg
reboot
cd /
ls
cd -l
ls -l
df
cd pm
ls
reboot
df
fdisk -l
reboot
fdisk -l
df
reboot
cd /
ls
service lightdm start
sudo su -
apt-get install gparted
fdisk -l
df
reboot
fdisk -l
df
reboot
fdisk -l
df
service lightdm start
cd etc
sudo su -
cd /
cd etc
cat fstab
vim fstab
cd /pm
ls
cd lost+found
ls
cd ..
cd /
fdisk
fdisk -l
df
cd /pm
ls
cd /
cd etc
cat fstab
cd /usr
ls
service lightdm start
mount /dev/sdb1/ /mnt
cd /mnt
ls
ls -l
chmod 777 imagel
ls -l
sudo su -
cd /mnt
ls -l
chmod 777 imagel
ls -l
cd /etc
cat fstab
cd /etc
ls
cat fstab
cd /pm
ls
cd /
mount /dev/sdb1 /mnt
cd /mnt
ls
cd MakeDistro/
ls
ls -l
./ make_distro.sh 
./make_distro.sh
ls
./make_distro.sh
cd /
ls
cd /mnt
ls
cd ImageForLinux/
ls
./imagel
cd /
mount /dev/sdb1 /mnt
fdisk -l
mount /dev/sdc1 /mnt
cd /mnt
ls
cd /pm
ls
mkdir ImageForLinuxGUI
cd ImageForLinuxGUI/
cp -rv /mnt/ImageForLinuxGUI/* .
ls
./setup 
LS -L
ls -l
./imagel
apt-get install libjpeg62:i386
./imagel
cd /mnt
ls
cd MakeDistro/
ls
rm DistroVersion.txt~
rm helper_functions.sh~
rm make_distro.sh~
ls
./make_distro.sh 
ls
cd Distro
cd DistroImages/
ls
cd /
ls
cd /mnt
ls
cd MakeDistro/
ls
./make_distro.sh 
cd /
umount /mnt
fdisk -l
mount /dev/sdc1 /mnt
cd /mnt
ls
cd DistroImages/
ls
cd /
cd mnt
cd MakeDistro/
ls
./make_distro.sh
cd /mnt
cd MakeDistro/
ls
ls -l
df
cd /
umount /mnt
cd /mnt
cd MakeDistro/
ls
ls -l
umount /mnt
fdisk -l
df
umount /media/root/ADATA\ UFD/
ls -l
df
mount /dev/sdc1 /mnt
cd /mnt
ls
cd MakeDistro/
ls
./make_distro.sh 
service lightdm start
mount /dev/sdb1 /mnt
cd /mnt
cd MakeDistro/
ls
df
fdisk
fdisk -l
df
cd /mnt
cd MakeDistro/
ls
ls -l
cd /
umount /mnt
mount /dev/sdb1 /mnt
cd mnt
ls
cd MakeDistro/
ls
./make_distro.sh 
ls
./make_distro.sh 
./MakeDistro.sh 
ls /mnt/*.iso
cd /
ls
cd /mnt
ls
ls -l
./MakeDistro.sh 
umount /mnt
fdisk -l
mount /dev/sdb1 /mnt
umount /mnt
fdisk -l
ls
cd /
ls
mkdir mnt2
ls
mount /dev/sdc1 /mnt2
cd /mnt2
fdisk -l
mount /dev/sdb1 /mnt
cd mnt
cd /mnt
ls -l
./MakeDistro.sh 
umount /mnt
umount /mnt2
fdisk -l
mount /dev/sdb1 /mnt
cd /
rm -rf mnt2
ls -l
cd /mnt
ls
ls -l
cd /
ls -l
cd /mnt
ls
ls -l
cd /
ls -l
cd mnt
./MakeDistro.sh 
passwd
sed
./MakeDistro.sh 
cd /
umount /mnt
passwd
fdisk -l
mount /dev/sdb1 /mnt
passwd
mount /dev/sdb1 /mnt
cd /
pwconv
cd /etc
cat shadow
cat shadow | sed -e 's!^root:'
passwd
apg -a 1 -M SNCL
apg -a 1 -M SNCL -m 10
apg -a 1 -M SNCL
cd /
passwd
service lightdm start
mount /dev/sdb1 /mnt
cd /
cd mnt
ls -l
./MakeDistro.sh
cd MakeDistroFiles/
ls -l
cat /mnt/DistroHelperFiles/LinuxName.txt
cd /mnt
cd DistroHelperFiles
ls -l
./MakeDistro.sh
ls
ls -l
./MakeDistro.sh
tput cols
./MakeDistro.sh
echo -e "\xC3\xBE\x02"
echo -e "\xc3\xbe\x02"
echo -e "\xda"
echo -e "\xb9"
echo "\xb9"
printf "\xb9"
echo -e "\x3c"
echo -e "\x80"
echo -e "\x81"
echo \e(0 \xA6 \e(B"
echo "\e(0 \xA6 \e(B"
echo -e "\e(0 \xA6 \e(B"
echo -e "\e(0 \x2500 \e(B"
echo -e "\e(0 2500 \e(B"
echo -e "\e(0 \2500 \e(B"
echo -e "\e(0 \x6a \e(B"
echo "\e(0 \x6a \e(B"
echo -e "\e(0 \x6c\x71\x6b \e(B"
printf "\e(0 \x6c\x71\x6b \e(B"
cd /mnt
ls
cd PorteusDistroDev/
ls
cd porteus/
ls
cd rootcopy/
ls
cd rawsrc/
ls
./GlobalRestore.sh 
printf "\e(0\x6c\e(B"
./GlobalRestore.sh 
tput setaf 9
tput setab9
tput setab 9
tput setab 0
tput setab 1
tput setab 2
tput setab 3
tput setab 4
tput setab 5
tput setab 6
tput setab 7
tput setab 8
tput setab 9
./GlobalRestore.sh 
tput setab 9
tput setaf 9
./GlobalRestore.sh 
cd /mnt
ls -l
./MakeDistro.sh
tput setab 7
tput setab 4
tput setaf 1
tput setaf 3
tput setaf 2
cd /mnt
ls -l
./MakeDistro.sh
cd /
umount /mnt
cd /etc
ls -l
ls grub*
cd /boot
cat grub
ls
cd grub
ls
cat grub.cgf
cat grub.cfg
ls
cd ..
cd /defaults
cd /etc/defaults
cd /etc
ls default*
cd default
cat grub
vim grub
reboot
cd /etc/default
vim grub
update-grub
reboot
cd /etc/defaults
cd /etc/default
vim grub
update-grub
reboot
cd /etc/default
vim grub
update-grub
reboot
cd /etc/default
vim grub
update-grub
reboot
apt-get install fbi
apt-get install v86d
cd /etc/initramfs-tools
cd conf.d
vim splash
ls -l
cat splash
cd ..
ls -l
vim modules
update-initramfs -u
cd /etc/default
vim grub
update_initramfs -u
update-initramfs -u
update-grub
reboot
mount /dev/sdb1 /mnt
cd /mnt
apt-get install plymouth-theme-script
cd /etc/alternatives/
ls d*
ls -l default.plymouth
update-alternatives --install /lib/plymouth/themes/default.plymouth default.plymouth /lib/plymouth/themes/PlayMechanix/PlayMechanix.plymouth 100
update-alternatives --config default.plymouth
update-initramfs -u
service lightdm start
service lightdm stop
mount /dev/sdb1 /mnt
cd /mnt
ls -l
fbi -T2 PM_BG2.jpg
fbi -T 2 PM_BG2.jpg
fbi -T 2 PM_Anamorphic.jpg
fbi -T 2 PM_BG2.jpg
ps -e
killall -9 fbi
ps -e
service lightdm start
mount /dev/sdb1 /mnt
cd /mnt
ls -l
fbi
ls -l
rm -rf /mnt/"System Volume Information"
ls -l
cd Scripts/ls
cd Scripts
ls
ls -l
service lightdm start
ifconfig
reboot
apt-get install firefox
apt-get purge webbrowser-app
service lightdm start
reboot
service lightdm start
apt-get autoremove
apt-get clean
mount /dev/sdb1 /mnt
cd /mnt
cd Scrip
cd Scripts/
vim MakeDistro.sh 
cd ..
ls -l
cd MakeDistroFiles/
ls -l
cp DistroVersion.txt /root/
ls /root
diff DistroVersion.txt /root/DistroVersion.txt 
cd /root
vim DistroVersion.txt 
cd /mnt/MakeDistroFiles/
diff DistroVersion.txt /root/DistroVersion.txt 
cmp DistroVersion.txt /root/DistroVersion.txt 
vim /root/DistroVersion.txt 
cmp DistroVersion.txt /root/DistroVersion.txt 
cmp DistroVersion.txt /root/DistroVersion.txt; RESULT=$?; if [ RESULT ]; then echo "difference"; else echo "no difference"; fi
cmp DistroVersion.txt /root/DistroVersion.txt; RESULT=$?; if [ RESULT == "" ]; then echo "difference"; else echo "no difference"; fi
cmp DistroVersion.txt /root/DistroVersion.txt; if [ $? == "" ]; then echo "difference"; else echo "no difference"; fi
vim /root/DistroVersion.txt 
cmp DistroVersion.txt /root/DistroVersion.txt; if [ $? == "" ]; then echo "difference"; else echo "no difference"; fi
cmp DistroVersion.txt /root/DistroVersion.txt; if [ $? == "" ]; then echo "no difference"; else echo "difference"; fi
cmp DistroVersion.txt /root/DistroVersion.txt; if [ $? = "" ]; then echo "no difference"; else echo "difference"; fi
vim /root/DistroVersion.txt 
cmp DistroVersion.txt /root/DistroVersion.txt; if [ $? = "" ]; then echo "no difference"; else echo "difference"; fi
cmp DistroVersion.txt /root/DistroVersion.txt; RESULT=$?; echo ${RESULT}; if [ ${RESULT} = "" ]; then echo "no difference"; else echo "difference"; fi
cmp DistroVersion.txt /root/DistroVersion.txt; RESULT=$?; echo ${RESULT}; if [ ${RESULT} eq 0 ]; then echo "no difference"; else echo "difference"; fi
cmp DistroVersion.txt /root/DistroVersion.txt; RESULT=$?; echo ${RESULT}; if [ ${RESULT} -eq 0 ]; then echo "no difference"; else echo "difference"; fi
vim /root/DistroVersion.txt 
cmp DistroVersion.txt /root/DistroVersion.txt; RESULT=$?; echo ${RESULT}; if [ ${RESULT} -eq 0 ]; then echo "no difference"; else echo "difference"; fi
man cmp
cmp -s DistroVersion.txt /root/DistroVersion.txt; RESULT=$?; echo ${RESULT}; if [ ${RESULT} -eq 0 ]; then echo "no difference"; else echo "difference"; fi
cmp -s DistroVersion.txt /root/DistroVersion.txt; if [ $? -eq 0 ]; then echo "no difference"; else echo "difference"; fi
vim /root/DistroVersion.txt 
cmp -s DistroVersion.txt /root/DistroVersion.txt; if [ $? -eq 0 ]; then echo "no difference"; else echo "difference"; fi
cmp -s DistroVersion.txt /root/DistroVersion.txt; if [ $? -ne 0 ]; then echo "difference"; else echo "no difference"; fi
cd /
umount /mnt
ls -l
cd src
ls
cd ..
rm -rf src
ls -l
unlink initrd.img
unlink vmlinuz
ls -l
service lightdm start
service lightdm stop
service lightdm start
service lightdm stop
service lightdm start
service lightdm stop
service lightdm start
service lightdm stop
service lightdm start
service lightdm stop
service lightdm start
fdisk -l
df
service lightdm start
cd /etc/default
vim grub
update-grub
reboot
service lightdm start
mount /dev/sdb1 /mnt
cd /mnt
ls -l
cd porteus/
ls
ls -l
cd ..
cd boot
ls -l
./Porteus-installer-for-Linux.com 
reboot
service lightdm start
ls -l
ifconfig
killall -9 go.sh rtinit
service lightdm start
reboot
apt-get update
apt-get dist-upgrade
apt-get install --install-recommends linux-generic-lts-vivid xserver-xorg-core-lts-vivid xserver-xorg-lts-vivid xserver-xorg-video-all-lts-vivid xserver-xorg-input-all-lts-vivid libwayland-egl1-mesa-lts-vivid
reboot
mount /dev/sdb1 /mnt
cd /mnt
ls -l
cd ubuntu/
ls -l
./NVIDIA-Linux-x86-334.21.run 
ls -l
cd /var/log
ls -l
cat nvidia-installer.log 
gcc -version
gcc -help
gcc -h
gcc
man gcc
gcc --version
cd /mnt
cd ubuntu/
ls -l
cd /
umount /mnt
mount /dev/sdb1 /mnt
cd /mnt
ls -l
cd nvidia/
ls -l
./NVIDIA-Linux-x86-352.21.run 
cd /mnt
umount /mnt
cd /
umount /mnt
cd /usr/lib
ls -l
ls libGL.so
cd i386-linux-gnu/
ls -l
ls libGL.so
ls libGL.so -l
cd ..
ls libGL.so -l
ln -s i386-linux-gnu/libGL.so libGL.so
ls libGL.so -l
update-initramfs -u
reboot
cd /root
ls -l
vim .profile
reboot
cd /etc/network/
ls -l
vim interfaces
cd ..
ls -l
vim hostname
vim hosts
reboot
service lightdm start
ifconfig
ifconfig eth0 up
dhclient eth0
ifconfig
cd /etc/network
vim interfaces
cat interfaces
vim interfaces
cat interfaces
reboot
service lightdm start
cd /etc
vim hostname
cd hosts
vim hosts
ifconfig
ifconfig eth0 up
dhclient eth0
ifconfig
killall -9 go.sh rtinit
killall fbi
service lightdm start
reboot
service lightdm start
ifconfig
ifup eth0
ls -l
chmod 755 svh.sh
chmod 755 svn.sh
ls -l
chmod 777 svn.sh
ls -l
cd /root/Downloads/
ls
./NVIDIA-Linux-x86-375.66.run
sudo ./NVIDIA-Linux-x86-375.66.run
ls -l
chmod 777 NVIDIA-Linux-x86-375.66.run 
./NVIDIA-Linux-x86-375.66.run 
ifup eth0
ifconfig
cd /root/Downloads/
./NVIDIA-Linux-x86-375.66.run 
tail --lines=50 /var/log/nvidia-installer.log 
echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/disable-nouveau.conf
update-initramfs -u
reboot
ifconfig
ifup eth0
service lightdm start
cd /usr/lib
ls -l libGL*
ifconfig
ln -s i386-linux-gnu/libGL.so.1 libGL.so
ls -l libGL*
ps -e
killall -9 go.sh rtinit
killall fbi
service lightdm start
killall -9 go.sh rtinit
killall fbi
service lightdm start
killall -9 rtinit go.sh
killall fbi
service lightdm start
mount /dev/sdb1 /mnt
cd /mnt/Scripts/
ls -l
./ProdDistroStrip.sh 
reboot
cd /
ifconfig
pwd
ll
cd dev_setup_ubuntu_14.04/
ll
cd files
ll
cd ..
ll
chmod 777 *.sh
ll
sudo ./dev_setup_ubuntu_14.04.sh | tee output.log
cd /root
cp /pm/g6/motogp/tools/*.sh .
ll
./moto-revert-update.sh 
lsblk
cd /pm
ll
cd libraries/
cd pmrt/card/
ll
chmod 777 makefile 
ll
cd ../irtrack3/
ll
chmod 777 makefile 
cd ../libtherm/
chmod 777 makefile 
cd ../modem2/
chmod 777 makefile 
cd ../pmrt_projector/
chmod 777 makefile 
cd /pm/libraries/
make
passwd
cd /pm/g6/g6engine/src/
make
chmod 777 makefile
ll
vim makefile
apt-get install vim
vim makefile
make
make clean; make
vim makefile
vim g6/sys_linux.c 
uname
uname -a
gcc
exit
pwd
cd /
ll
cd /pm
ll
cd /pm_collection/
ll
cd /pm
cd /root
sudo cd /rood
clear
cd /
ll
g++ --version
cd /pm/g6/motogp/tools/
ll
chmod 777 *.sh
./moto-revert-update.sh 
ll
./moto-revert-update.sh 
sudo ./moto-revert-update.sh 
cd /root
su
su -
sudo bash
exit
service lightdm stop
ps -e
kill lightdm
killall lightdm
sudo killall lightdm
cd /pm/g6/g6engine/src/
chmod 777 g6/*
:q
su -
cd /usr/include
ll
vim ucontext.h
vim feature.h
vim features.h
cd /usr/include
find . -name 'ucontext.h'
vim i386-linux-gnu/sys/ucontext.h 
vim ucontext.h
vim i386-linux-gnu/sys/ucontext.h 
vim ucontext.h
cd sys
ll
cd ..
vim ucontext.h
vim i386-linux-gnu/sys/ucontext.h 
vim ucontext.h
vim i386-linux-gnu/sys/ucontext.h 
grep '__USE_GNU' .
grep -r '__USE_GNU' .
grep -r '_GNU_SOURCE' .
:q
ls
cd g6/g6engine/src/
sl
ls
make
vim makefile 
ls
su
sudo su -
visudo
sudo visudo
exit
pwd
sudo service lightdm start

gcc -v
gcc -v | grep multilib
gcc -v | grep poop
ls
cd ..
ls
cd ..
ls
cd pm
ls
cd /root
su cd /root
su
cd /pm/g6/g6engine/src
make
vim make
vim makefile
cd /usr/include
vim ucontext.h 
cd sys
ll
cd ..
vim ucontext.h 
find -name 'ucontext.h' .
find . -name 'ucontext.h'
vim i386-linux-gnu/sys/ucontext.h 
cd /pm/g6/g6engine/src/
vim g6/sys_linux.c 
make
vim g6/sys_linux.c 
vim makefile
make
vim g6/sys_linux.c 
make
vim makefile
vim g6/sys_linux.c 
make
svn diff makefile
svn st 
vim g6/sys_linux.c 
svn revert g6/sys_linux.c makefile
svn cleanup
su -
cd /usr/include/linux/
ll
cd ..
ll
ls
cd i386-linux-gnu/sys/
vim types.h
cd /usr/include/
grep -r '__GNUC_PREREQ' *
find . -name 'features.h'
cd /usr/lib
ll
cd /pm/lib
ll
ls
cd 2XL/
ls
man nm
cd /usr/lib
ls
ls | grep GL
find . -name 'libGL'
find . -name 'libGL.a'
cd x86_64-linux-gnu/
ls
cd ../X11
ls
cd ..
ls
cd nvidia
ls
cd ..
ls
nm /pm/lib/libSDL_mixer.a 
nm /pm/lib/libSDL_mixer.a | grep ALSA_CloseAudio
nm /pm/lib/libSDL_mixer.a | grep ALSA_
nm * | grep ALSA_CloseAudio
ls
ls | grep SDL
ls | grep mixer
nm * | grep ALSA_CloseAudio 2> /dev/null
nm -o * 2>/dev/null | grep ALSA_CloseAudio
nm -o * 2>/dev/null | grep snd_pcm_drain
sdl-config --static-libs
sdl-config --libs
man pkgconfig
pkgconfig -h
man pkgconfig
pkgconfig -h
clear
ls
nm -o * 2>/dev/null | grep glXSwapIntervalSGI
apt-file search libglew
man apt-file
apt-file list libglew-dev
ldd libSDL.a 
ldd libSDL.so
nm -o * 2>/dev/null | grep SDL_MixAudio
nm -o * 2>/dev/null | grep glXSwapInterval
nm -o * 2>/dev/null | grep glX
man find
find . -name '*GL*'
nm -o i386-linux-gnu/* 2>/dev/null | grep glXSwapInterval
nm -o i386-linux-gnu/* 2>/dev/null | grep glX
nm -o i386-linux-gnu/* 2>/dev/null | grep SwapInterval
nm -o nvidia-331/* 2>/dev/null | grep glX
nm -o i386-linux-gnu/* 2>/dev/null | grep SwapInterval
man apt-get
apt-get update
su -
cd /pm
ls
./game -t -m -c -w1280x720
gdb -tui ./game
./game -t -m -c -w1280x720
gdb -tui ./game
vim /pm/g6/motogp/pmuser/gamelog.txt 
gdb -tui ./game
./game -t -m -c -w1280x720
gdb -tui ./game
exit
ps -e
killall game
su -
d /pm
cd /pm
su -

Two viminfo dotfiles generated while using the Vim text editor for editing system config files, C/C++ source codes, and makefiles (assumed by its history). The first one is at the user's directory, and the latter one is in the root's.

# This viminfo file was generated by Vim 7.4.
# You may edit it if you're careful!

# Value of 'encoding' when this file was written
*encoding=utf-8


# hlsearch on (H) or off (h):
~h
# Command Line History (newest to oldest):
:q
:wq

# Search String History (newest to oldest):

# Expression History (newest to oldest):

# Input Line History (newest to oldest):

# Input Line History (newest to oldest):

# Registers:

# File marks:
'0  21  16  /pm_collection/pm_dino/g6/g6engine/src/g6/sys_linux.c
'1  1  0  /pm_collection/pm_dino/g6/g6engine/src/makefile
'2  28  21  /pm_collection/pm_dino/g6/g6engine/src/makefile

# Jumplist (newest first):
-'  21  16  /pm_collection/pm_dino/g6/g6engine/src/g6/sys_linux.c
-'  1  0  /pm_collection/pm_dino/g6/g6engine/src/g6/sys_linux.c
-'  1  0  /pm_collection/pm_dino/g6/g6engine/src/makefile
-'  28  21  /pm_collection/pm_dino/g6/g6engine/src/makefile
-'  1  0  /pm_collection/pm_dino/g6/g6engine/src/makefile
-'  28  21  /pm_collection/pm_dino/g6/g6engine/src/makefile

# History of marks within files (newest to oldest):

> /pm_collection/pm_dino/g6/g6engine/src/g6/sys_linux.c
	"	21	16
	^	21	17

> /pm_collection/pm_dino/g6/g6engine/src/makefile
	"	1	0
	^	28	22
	.	28	21
	+	28	21
# This viminfo file was generated by Vim 7.4.
# You may edit it if you're careful!

# Value of 'encoding' when this file was written
*encoding=utf-8


# hlsearch on (H) or off (h):
~h
# Last Search Pattern:
~Msle0~/\<GRUB_HIDDEN_TIMEOUT\>

# Last Substitute String:
$

# Command Line History (newest to oldest):
:wq
:q
:WQ
:q!
:w

# Search String History (newest to oldest):
? \<GRUB_HIDDEN_TIMEOUT\>
? \<UUID\>
?/Contrast
?/contrast
?/HighContrast
?/empathy
?/nautilus
?/shotwell
?/sudoku
?/transmission
?/trans
?/linux-
?/linux-header
?/linux-image
?/netbeans
?/linux
?/mSocket
?/Handle
?/TestFor
?/roll
?/Test
?/Assist
?/O
?/Objective
?/DataFriend
?/Cold
?/assist
?/aiass
?/printf
?/mAIAssist
?/mAI
?/throttle
?/Input
?/mExter
?/sizeof
?/L"
?/Debug
?/RAND_bytes
?/THREAD
?/Thread
?/thread
?/ssl
?/Swap
?/Mem(
?/mem(
?/ozcol

# Expression History (newest to oldest):

# Input Line History (newest to oldest):

# Input Line History (newest to oldest):

# Registers:
"0	CHAR	0
	h
"1	LINE	0
	Code/XLNetworkTCP.cpp\
"2	LINE	0
	Code/XLNetwork.cpp\
"3	LINE	0
	Game/Data/MotoGPDataSlashCommand.cpp\
"4	LINE	0
	Game/Data/MotoGPDataObjective.cpp\
"5	LINE	0
	Game/MotoGPTeamManager.cpp\
"6	LINE	0
	Game/MotoGPSystemBillboard.cpp\
"7	LINE	0
	Game/MotoGPSocialImageCache.cpp\
"8	LINE	0
	Game/MotoGPSocial.cpp\
"9	LINE	0
	Game/MotoGPRaceStats.cpp\
""-	CHAR	0
	P

# File marks:
'0  2  19  /etc/hosts
'1  1  9  /etc/hostname
'2  5  11  /etc/network/interfaces
'3  4  19  /etc/network/interfaces
'4  9  15  ~/.profile
'5  1  0  /etc/default/grub
'6  14  0  /etc/default/grub
'7  63  0  /mnt/Scripts/MakeDistro.sh
'8  1  1  ~/DistroVersion.txt
'9  97  0  /mnt/Scripts/MakeDistro.sh

# Jumplist (newest first):
-'  2  19  /etc/hosts
-'  1  0  /etc/hosts
-'  1  9  /etc/hostname
-'  5  11  /etc/network/interfaces
-'  1  0  /etc/network/interfaces
-'  4  19  /etc/network/interfaces
-'  9  15  ~/.profile
-'  1  0  ~/.profile
-'  1  0  /etc/default/grub
-'  14  0  /etc/default/grub
-'  63  0  /mnt/Scripts/MakeDistro.sh
-'  1  0  /mnt/Scripts/MakeDistro.sh
-'  1  1  ~/DistroVersion.txt
-'  97  0  /mnt/Scripts/MakeDistro.sh
-'  28  0  /etc/default/grub
-'  12  6  /etc/initramfs-tools/modules
-'  1  0  /etc/initramfs-tools/modules
-'  1  12  /etc/initramfs-tools/conf.d/splash
-'  9  13  /etc/default/grub
-'  7  0  /etc/default/grub
-'  14  18  /etc/fstab
-'  1  0  /etc/fstab
-'  1  0  /boot/grub/grub.cfg
-'  90  0  /etc/grub.d/00_header
-'  1  0  /etc/grub.d/00_header
-'  115  0  /boot/grub/grub.cfg
-'  145  0  /etc/grub.d/10_linux
-'  1  0  /etc/grub.d/10_linux
-'  390  0  /etc/grub.d/00_header
-'  1  0  /etc/grub.d/41_custom
-'  1  0  /etc/grub.d/40_custom
-'  200  0  /etc/grub.d/00_header
-'  7  0  /etc/fstab
-'  8  0  /etc/fstab
-'  11  45  /etc/fstab
-'  1  0  ~/README
-'  2  16  /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
-'  1  0  /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
-'  1  0  /etc/lightdm/lightdm.conf
-'  237  0  /boot/grub/grub.cfg
-'  2166  4  ~/package_size.txt
-'  2060  4  ~/package_size.txt
-'  1  8  ~/package_size.txt
-'  2319  4  ~/package_size.txt
-'  2323  4  ~/package_size.txt
-'  1  9  ~/note
-'  344  0  ~/Broadcom-tg3/README.TXT
-'  1  27  ~/Broadcom-tg3/README.TXT
-'  2064  0  /pm/g6/motogp/pmuser/gamelog.txt
-'  1  0  /pm/g6/motogp/pmuser/gamelog.txt
-'  120  0  /pm/g6/motogp/src/makefile
-'  1  0  /pm/g6/motogp/src/makefile
-'  1  0  /pm/g6/motogp/src/make
-'  47  0  /pm/g6/motogp/prodify.conf
-'  1  0  /pm/g6/motogp/prodify.conf
-'  140  0  /pm/g6/motogp/src/makefile
-'  102  7  /pm/g6/motogp/src/makefile
-'  1581  0  /pm/g6/motogp/pmuser/gamelog.txt
-'  146  1  /pm/g6/motogp/src/makefile
-'  134  86  /pm/g6/motogp/src/makefile
-'  123  29  /pm/g6/motogp/src/makefile
-'  53  45  /pm/online/makefile
-'  1  0  /pm/online/makefile
-'  442  0  /pm/g6/2XL/Tech/makefile
-'  1  0  /pm/g6/2XL/Tech/makefile
-'  250  1  /pm/g6/2XL/Code/makefile
-'  1  0  /pm/g6/2XL/Code/makefile
-'  67  36  /pm/g6/g6engine/src/makefile
-'  1  0  /pm/g6/g6engine/src/makefile
-'  51  0  /pm/online/makefile
-'  117  17  /pm/g6/motogp/src/makefile
-'  468  22  /pm/g6/2XL/Tech/makefile
-'  238  22  /pm/g6/2XL/Code/makefile
-'  63  24  /pm/g6/g6engine/src/makefile
-'  951  0  /pm/g6/motogp/pmuser/gamelog.txt
-'  106  0  ~/moto-build.sh
-'  1  0  ~/moto-build.sh
-'  413  0  /pm/g6/motogp/pmuser/gamelog.txt
-'  1  1  /pm/g6/2XL/Tech
-'  28  0  /pm/libraries/makefile
-'  1  0  /pm/libraries/makefile
-'  130  0  /pm/g6/motogp/pmuser/gamelog.txt
-'  127  0  /pm/g6/motogp/pmuser/gamelog.txt
-'  3  16  /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
-'  10  0  /etc/fstab
-'  50  0  /pm/g6/2XL/Tech/Code/XLNetworkTCPSocket.cpp
-'  166  12  /pm/g6/2XL/Tech/Code/XLNetworkTCPSocket.cpp
-'  36  4  /pm/g6/2XL/Tech/Code/XLNetworkTCPSocket.cpp
-'  1  0  /pm/g6/2XL/Tech/Code/XLNetworkTCPSocket.cpp
-'  132  8  /pm/g6/2XL/Tech/Code/XLNetworkTCPSocket.cpp
-'  331  39  /pm/g6/2XL/Tech/Code/XLNetworkInternal.cpp
-'  1  0  /pm/g6/2XL/Tech/Code/XLNetworkInternal.cpp
-'  295  35  /pm/g6/2XL/Tech/makefile
-'  19  4  /pm/g6/motogp/src/out.txt
-'  1  0  /pm/g6/motogp/src/out.txt
-'  231  0  /pm/g6/2XL/Code/makefile
-'  464  0  /pm/g6/2XL/Tech/makefile

# History of marks within files (newest to oldest):

> /etc/hosts
	"	2	19
	^	2	20
	.	2	19
	+	2	19

> /etc/hostname
	"	1	9
	^	1	10
	.	1	9
	+	1	9

> /etc/network/interfaces
	"	5	11
	^	5	12
	.	5	11
	+	4	20
	+	5	11

> ~/.profile
	"	9	15
	^	9	16
	.	9	15
	+	9	15

> /etc/default/grub
	"	1	0
	^	14	0
	.	13	25
	+	9	13
	+	7	0
	+	9	13
	+	27	26
	+	13	25

> /mnt/Scripts/MakeDistro.sh
	"	63	0

> ~/DistroVersion.txt
	"	1	1
	^	1	2
	.	1	2
	+	1	2

> /etc/initramfs-tools/modules
	"	12	6
	^	12	7
	.	12	6
	+	12	6

> /etc/initramfs-tools/conf.d/splash
	"	1	12
	^	1	13
	.	1	12
	+	1	12

> /etc/fstab
	"	14	18
	^	14	19
	.	14	19
	+	10	0
	+	11	46
	+	8	0
	+	11	64
	+	13	35
	+	12	1
	+	9	2
	+	12	60
	+	14	33
	+	7	0
	+	14	19

> /boot/grub/grub.cfg
	"	1	0

> /etc/grub.d/00_header
	"	90	0

> /etc/grub.d/10_linux
	"	145	0

> /etc/grub.d/41_custom
	"	1	0

> /etc/grub.d/40_custom
	"	1	0

> ~/README
	"	1	0
	^	1	0
	.	1	0
	+	1	0

> /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
	"	2	16
	^	2	17
	.	2	16
	+	3	16
	+	2	16

> /etc/lightdm/lightdm.conf
	"	1	0
	^	3	19
	.	3	18
	+	3	18

> ~/package_size.txt
	"	2166	4

> ~/package_list.txt
	"	1	0
	^	208	1
	.	208	1
	+	208	1

> ~/note
	"	1	9
	^	1	10
	.	6	0
	+	7	30
	+	2	0
	+	1	9
	+	8	15
	+	3	78
	+	4	74
	+	6	0

> ~/Broadcom-tg3/README.TXT
	"	344	0

> /pm/g6/motogp/pmuser/gamelog.txt
	"	2064	0
	^	130	1
	.	130	1
	+	130	1

> /pm/g6/motogp/src/makefile
	"	120	0
	^	131	8
	.	131	8
	+	59	32
	+	57	0
	+	61	0
	+	59	32
	+	61	0
	+	59	32
	+	106	129
	+	59	32
	+	61	0
	+	106	130
	+	35	78
	+	59	32
	+	61	0
	+	59	61
	+	61	29
	+	106	115
	+	59	32
	+	61	42
	+	63	26
	+	62	0
	+	63	0
	+	61	0
	+	60	0
	+	61	0
	+	106	115
	+	81	0
	+	61	0
	+	81	0
	+	105	0
	+	105	0
	+	105	0
	+	81	0
	+	105	0
	+	105	0
	+	105	0
	+	105	0
	+	106	129
	+	117	17
	+	123	30
	+	125	18
	+	131	8

> /pm/g6/motogp/src/make
	"	1	0

> /pm/g6/motogp/prodify.conf
	"	47	0

> /pm/online/makefile
	"	53	45
	^	53	46
	.	53	46
	+	40	33
	+	53	46

> /pm/g6/2XL/Tech/makefile
	"	442	0
	^	468	23
	.	468	22
	+	141	0
	+	142	28
	+	143	26
	+	146	27
	+	146	0
	+	293	38
	+	468	22

> /pm/g6/2XL/Code/makefile
	"	250	1
	^	238	23
	.	238	22
	+	159	0
	+	27	0
	+	159	0
	+	162	0
	+	164	0
	+	166	0
	+	168	0
	+	170	0
	+	171	0
	+	178	0
	+	180	0
	+	181	0
	+	188	0
	+	238	22

> /pm/g6/g6engine/src/makefile
	"	67	36
	^	67	37
	.	67	37
	+	63	24
	+	67	37

> ~/moto-build.sh
	"	106	0

> /pm/libraries/makefile
	"	28	0

> /pm/g6/2XL/Tech/Code/XLNetworkTCPSocket.cpp
	"	50	0

> /pm/g6/2XL/Tech/Code/XLNetworkTCPSocket.h
	"	47	0

> /pm/g6/2XL/Tech/Code/XLNetworkInternal.cpp
	"	331	39
	^	331	40
	.	331	39
	+	331	39

> /pm/g6/motogp/src/out.txt
	"	19	4

> /pm/g6/motogp/data/conf/gameconf.txt
	"	21	34
	^	21	35
	.	21	34
	+	30	26
	+	24	36
	+	26	31
	+	21	34
	+	22	34
	+	23	34
	+	24	36
	+	26	31
	+	24	36
	+	23	34
	+	21	34

> /pm/g6/motogp/data/conf/vehicles/motogp.ini
	"	508	30
	^	508	31
	.	508	30
	+	134	28
	+	508	30

> /pm/g6/2XL/Code/Game/MotoGPVehicle.cpp
	"	1281	108
	^	1281	109
	.	1281	108
	+	1139	81
	+	1137	61
	+	1138	3
	+	1139	7
	+	1140	4
	+	875	22
	+	1149	3
	+	875	22
	+	828	22
	+	1102	3
	+	1280	3
	+	1281	108

> /pm/g6/2XL/Code/Game/MotoGPPhysicsVehicle.cpp
	"	2069	17
	^	2069	18
	.	2069	17
	+	2044	13
	+	2100	13
	+	2069	17

> /pm/g6/motogp/src/src/xl_moto.c
	"	72	3
	^	72	4
	.	72	3
	+	55	41
	+	69	105
	+	69	2
	+	72	3

> /pm/g6/motogp/src/src/game_flow.h
	"	3	0

> /pm/g6/motogp/src/src/bike_calibration.c
	"	31	26
	^	31	27
	.	31	26
	+	26	26
	+	31	26

> /pm/g6/motogp/data/programs/bike_cal/BIKECAL_SCENE.txt
	"	22	25
	^	22	26
	.	22	25
	+	4	17
	+	9	17
	+	14	17
	+	19	17
	+	23	26
	+	24	24
	+	22	25

> /pm/g6/motogp/src/src/game_statemachines.c
	"	628	16
	^	628	17
	.	628	16
	+	629	0
	+	627	1
	+	629	0
	+	628	16

> /pm/g6/motogp/data/programs/bike_cal/TextProg.txt
	"	1	0

> /pm/g6/motogp/src/src/bike_calibration.h
	"	1	0

> /pm/libraries/install-external-libs-linux.sh
	"	114	0
	^	18	37
	.	18	37
	+	17	37
	+	18	37

> /pm/libraries/pmrt/pmrt_ssl/datadigest.h
	"	41	38
	^	41	39
	.	41	38
	+	41	38

> /pm/g6/g6engine/src/g6/tool3/tool3.cpp
	"	124	0

> /pm/g6/g6engine/src/g6/tool3/tool3_renderer.cpp
	"	2	0

> g6/tool3/tool3/renderer.cpp
	"	1	0

> /pm/libraries/external/GWEN/src/Utility.cpp
	"	22	19
	^	31	25
	.	31	24
	+	19	6
	+	23	5
	+	31	24

> /pm/g6/g6engine/src/g6/tool3/tool3_debugsettings.cpp
	"	222	2
	^	222	3
	.	222	2
	+	222	2

> /etc/X11/xorg.conf
	"	35	16

> /pm/libraries/pmrt/pmrt_ssl/datadigest.c
	"	41	0
	^	72	0
	.	72	0
	+	179	1
	+	207	1
	+	179	0
	+	187	0
	+	194	0
	+	207	0
	+	73	1
	+	78	1
	+	73	0
	+	78	0
	+	65	1
	+	72	1
	+	65	0
	+	72	0

> /pm/libraries/external/openssl-1.0.0e/linux/include/openssl/ssl.h
	"	1	0

> /pm/libraries/external/openssl-1.0.0e/linux/crypto/rand/rand_lib.c
	"	154	4

> /pm/libraries/external/openssl-1.0.0e/linux/crypto/rand/md_rand.c
	"	314	2

> /pm/libraries/external/openssl-1.0.0e/linux/Makefile
	"	232	0
	^	242	21
	.	242	21
	+	242	21

> /pm/libraries/external/openssl-1.0.0e/linux/INSTALL
	"	1	0

> /pm/libraries/external/openssl-1.0.0e/linux/README
	"	118	0

> /pm/g6/g6engine/src/g6/vid.c
	"	845	24
	^	845	2
	.	845	2
	+	845	2

> /pm_collection/pm_dino/libraries/pmrt/pmrt_ssl/keygenerate.c
	"	757	19
	^	757	20
	.	757	20
	+	738	18
	+	744	21
	+	749	20
	+	754	28
	+	757	22
	+	738	13
	+	744	19
	+	749	18
	+	754	26
	+	757	20

> /pm_collection/pm_dino/utilities/modem_info/makefile
	"	19	40
	^	19	41
	.	19	40
	+	17	28
	+	19	31
	+	13	73
	+	24	40
	+	13	53
	+	19	40

> /pm_collection/pm_dino/g6/motogp/src/makefile
	"	111	0
	^	15	65
	.	15	65
	+	89	0
	+	33	3
	+	15	65

> /pm_collection/pm_dino/g6/motogp/src/mkae
	"	1	0

> /pm_collection/pm_dino/g6/motogp/rtinit/Makefile
	"	4	18
	^	8	16
	.	4	18
	+	8	11
	+	4	18
	+	8	15
	+	4	18

> ~/svn-moto.sh
	"	17	0

> /pm_collection/pm_dino/libraries/external/openssl-1.0.0e/linux/Makefile
	"	46	0

> /pm_collection/pm_dino/libraries/pmrt/pmrt_ssl/makefile
	"	14	0
	^	15	24
	.	15	24
	+	15	24

> ~/.subversion/servers
	"	55	0

> ~/.subversion/README.txt
	"	18	5

> ~/.subversion/config
	"	55	0

> /home/raw/.subversion/config
	"	55	0

> ~/Desktop/Update.sh
	"	1	0

> /etc/samba/smb.conf
	"	59	18
	^	65	19
	.	65	19
	+	59	23
	+	65	22
	+	2	0
	+	55	9
	+	56	9
	+	59	19
	+	65	19

> /etc/sudoers
	"	1	0

> /etc/rcS.d/sudoers
	"	1	0

> /etc/rc.local
	"	1	0

> /etc/ssh/sshd_config
	"	28	18
	^	28	19
	.	28	18
	+	28	18

> /pm_collection/pm_dino/g6/g6engine/src/makefile
	"	28	16
	^	28	17
	.	28	17
	+	28	17

> /pm_collection/pm_dino/libraries/pmrt/pmrt_utils/makefile
	"	17	54
	^	17	55
	.	17	55
	+	17	55

> /pm_collection/pm_dino/libraries/external/openssl-1.0.0e/linux/test/md2test.c
	"	1	0

> /pm_collection/pm_dino/libraries/external/openssl-1.0.0e/linux/test/dummytest.c
	"	1	0

> /pm_collection/pm_dino/g6/2XL/Code/makefile
	"	248	5
	^	248	6
	.	248	6
	+	247	5
	+	248	6

> /pm_collection/pm_dino/g6/2XL/Tech/Code/XLPrecompiledHeader.h
	"	144	0

> /pm_collection/pm_dino/g6/2XL/Tech/makefile
	"	454	28
	^	454	29
	.	454	28
	+	431	5
	+	432	6
	+	454	28

> /pm_collection/pm_dino/g6/2XL/Tech/PlatformSpecificLinux/XLInputLinux.cpp
	"	2	0

> /pm_collection/pm_dino/g6/g6engine/src/g6/webcam.c
	"	12	24
	^	12	25
	.	12	24
	+	12	24

> /pm_collection/pm_dino/g6/g6engine/src/g6/sys_linux.c
	"	7	66
	^	7	67
	.	7	66
	+	27	25
	+	28	18
	+	30	21
	+	32	5
	+	30	0
	+	31	0
	+	32	0
	+	30	22
	+	30	6
	+	30	0
	+	22	18
	+	22	0
	+	7	66

> /pm_collection/pm_dino/g6/g6engine/src/make
	"	1	0

> /g6/sys_lin
	"	1	0

A .vimrc file that executes vim commands at initialization. Mostly contain setting network whitelist related variables inside the editor itself.

let g:netrw_dirhistmax  =10
let g:netrw_dirhist_cnt =3
let g:netrw_dirhist_1='/pm/g6/motogp/src/src'
let g:netrw_dirhist_2='/pm/g6/2XL/Tech'
let g:netrw_dirhist_3='/pm/online'