public static InitDriverPtr init_mgd2 = new InitDriverPtr() { public void handler() 
	{
		UBytePtr gfxdata = memory_region(REGION_GFX2);
		int len = memory_region_length(REGION_GFX2);
	
	
		init_neogeo.handler();
	
		/*
			data is now in the order 0 4 8 12... 1 5 9 13... 2 6 10 14... 3 7 11 15...
			we must convert it to the MVS order 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15...
			to do so we use a recursive function which doesn't use additional memory
			(it could be easily converted into an iterative one).
			It's called shuffle because it mimics the shuffling of a deck of cards.
		*/
		shuffle(gfxdata,len);
		/* data is now in the order 0 2 4 8 10 12 14... 1 3 5 7 9 11 13 15... */
		shuffle(gfxdata,len);
		/* data is now in the order 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15... */
	} }