text: #ifndef __FCEU_GIT
  #define __FCEU_GIT
  
  enum EGIT
  {
  	GIT_CART	= 0,  //Cart
  	GIT_VSUNI	= 1,  //VS Unisystem
  	GIT_FDS		= 2,  // Famicom Disk System
  	GIT_NSF		= 3,  //NES Sound Format
  };
  
  enum EGIV
  {
  	GIV_NTSC	= 0,  //NTSC emulation.
  	GIV_PAL		= 1,  //PAL emulation.
  	GIV_USER	= 2,  //What was set by FCEUI_SetVidSys().
  };
  
  enum ESIS
  {
  	SIS_NONE		= 0,
  	SIS_DATACH		= 1,
  	SIS_NWC			= 2,
  	SIS_VSUNISYSTEM	= 3,
  	SIS_NSF			= 4,
  };
  
  //input device types for the standard joystick port
  enum ESI
  {
  	SI_UNSET		= -1,
  	SI_NONE			= 0,
  	SI_GAMEPAD		= 1,
  	SI_ZAPPER		= 2,
  	SI_POWERPADA	= 3,
  	SI_POWERPADB	= 4,
  	SI_ARKANOID		= 5,
  	SI_MOUSE		= 6,
  
  	SI_COUNT = SI_MOUSE
  };
  
  inline const char* ESI_Name(ESI esi)
  {
  	static const char * const names[] =
  	{
  		"<none>",
  		"Gamepad",
  		"Zapper",
  		"Power Pad A",
  		"Power Pad B",
  		"Arkanoid Paddle",
  		"Mouse"
  	};
  
  	if(esi >= SI_NONE && esi <= SI_COUNT)
  		return names[esi];
  	else return "<invalid ESI>";
  }
  
  
  //input device types for the expansion port
  enum ESIFC
  {
  	SIFC_UNSET		= -1,
  	SIFC_NONE		= 0,
  	SIFC_ARKANOID	= 1,
  	SIFC_SHADOW		= 2,
  	SIFC_4PLAYER	= 3,
  	SIFC_FKB		= 4,
  	SIFC_SUBORKB	= 5,
  	SIFC_HYPERSHOT	= 6,
  	SIFC_MAHJONG	= 7,
  	SIFC_QUIZKING	= 8,
  	SIFC_FTRAINERA	= 9,
  	SIFC_FTRAINERB	= 10,
  	SIFC_OEKAKIDS	= 11,
  	SIFC_BWORLD		= 12,
  	SIFC_TOPRIDER	= 13,
  
  	SIFC_COUNT = SIFC_TOPRIDER
  };
  
  
  inline const char* ESIFC_Name(ESIFC esifc)
  {
  	static const char * const names[] =
  	{
  		"<none>",
  		"Arkanoid Paddle",
  		"Hyper Shot gun",
  		"4-Player Adapter",
  		"Family Keyboard",
  		"Subor Keyboard",
  		"HyperShot Pads",
  		"Mahjong",
  		"Quiz King Buzzers",
  		"Family Trainer A",
  		"Family Trainer B",
  		"Oeka Kids Tablet",
  		"Barcode World",
  		"Top Rider"
  	};
  
  	if(esifc >= SIFC_NONE && esifc <= SIFC_COUNT)
  		return names[esifc];
  	else return "<invalid ESIFC>";
  }
  
  
  #include "utils/md5.h"
  
  struct FCEUGI
  {
  	FCEUGI();
  	~FCEUGI();
  
  	uint8 *name;	//Game name, UTF8 encoding
  	int mappernum;
  
  	EGIT type;
  	EGIV vidsys;    //Current emulated video system;
  	ESI input[2];   //Desired input for emulated input ports 1 and 2; -1 for unknown desired input.
  	ESIFC inputfc;  //Desired Famicom expansion port device. -1 for unknown desired input.
  	ESIS cspecial;  //Special cart expansion: DIP switches, barcode reader, etc.
  
  	MD5DATA MD5;
  
  	//mbg 6/8/08 - ???
  	int soundrate;  //For Ogg Vorbis expansion sound wacky support.  0 for default.
  	int soundchan;  //Number of sound channels.
  
  	char* filename;
  	char* archiveFilename;
  	int archiveCount;
  };
  
  #endif
  