
#ifndef __COMMON_CONFIG_H__
#define __COMMON_CONFIG_H__

#define NIN_CFG_VERSION		0x00000009
#define NIN_CFG_MAXPAD 4
#define MEM_CARD_MAX (5)
#define MEM_CARD_CODE(x) (1<<(x+2))
#define MEM_CARD_SIZE(x) (1<<(x+19))
#define MEM_CARD_BLOCKS(x) ((1<<(x+6))-5)

// nin_cfg version does not match nintendont version
typedef struct NIN_CFG
{
	unsigned int		Magicbytes;		// 0x01070CF6
	unsigned int		Version;		// v3 since rev135, v4 since v3.354, v5 since v3.358, v6 since v3.368, v7 since v4.424, v8 since v4.431, v9 since v6.487
	unsigned int		Config;
	unsigned int		VideoMode;
	unsigned int		Language;
	char	GamePath[255];
	char	CheatPath[255];
	unsigned int		MaxPads;
	unsigned int		GameID;
	unsigned char		MemCardBlocks;
	signed char			VideoScale; // 40 to 120 or 0 for auto, is added to 600 for 640 to 720
	signed char			VideoOffset;// -20 to 20 or 0 for center
	unsigned char		NetworkProfile;
} NIN_CFG;

// NIN_CFG_REMLIMIT is disc read speed limt enabled by default. It keeps loading speed at GC speed.
// disabling it may speed up loading times but cause other game issues.
enum ninconfig
{
	NIN_CFG_CHEATS			= (1<<0),
	NIN_CFG_DEBUGGER		= (1<<1),	// Only for Wii Version
	NIN_CFG_DEBUGWAIT		= (1<<2),	// Only for Wii Version
	NIN_CFG_MEMCARDEMU		= (1<<3),
	NIN_CFG_CHEAT_PATH		= (1<<4),
	NIN_CFG_FORCE_WIDE		= (1<<5),
	NIN_CFG_FORCE_PROG		= (1<<6),
	NIN_CFG_AUTO_BOOT		= (1<<7),
	NIN_CFG_HID				= (1<<8),	// Unused since v3.304
	NIN_CFG_REMLIMIT		= (1<<8),	// v3.358 cfg version 5
	NIN_CFG_OSREPORT		= (1<<9),
	NIN_CFG_USB				= (1<<10),	// r40
	NIN_CFG_LED				= (1<<11),	// v1.45
	NIN_CFG_LOG				= (1<<12),	// v1.109
	NIN_CFG_MC_MULTI		= (1<<13),	// v1.135
	NIN_CFG_NATIVE_SI		= (1<<14),	// v2.189 - only for Wii
	NIN_CFG_WIIU_WIDE		= (1<<15),	// v2.258 - only for Wii U
	NIN_CFG_ARCADE_MODE 	= (1<<16),	// v4.424 cfg version 7
	NIN_CFG_BIT_CC_RUMBLE 	= (1<<17),	// v4.431 cfg version 8
	NIN_CFG_SKIP_IPL 		= (1<<18),	// v4.435 cfg version 8
	NIN_CFG_BBA_EMU			= (1<<19), // v6.487 cfg version 9
};

enum ninvideomode
{
	NIN_VID_AUTO		= (0<<16),
	NIN_VID_FORCE		= (1<<16),
	NIN_VID_NONE		= (2<<16),
	NIN_VID_FORCE_DF	= (4<<16),

	NIN_VID_MASK		= NIN_VID_AUTO|NIN_VID_FORCE|NIN_VID_NONE|NIN_VID_FORCE_DF,

	NIN_VID_FORCE_PAL50	= (1<<0),
	NIN_VID_FORCE_PAL60	= (1<<1),
	NIN_VID_FORCE_NTSC	= (1<<2),
	NIN_VID_FORCE_MPAL	= (1<<3),

	NIN_VID_FORCE_MASK	= NIN_VID_FORCE_PAL50|NIN_VID_FORCE_PAL60|NIN_VID_FORCE_NTSC|NIN_VID_FORCE_MPAL,

	NIN_VID_PROG		= (1<<4),	
	NIN_VID_PATCH_PAL50 = (1<<5),	// v3.368 cfg version 6	
};

enum ninlanguage
{
	NIN_LAN_ENGLISH		= 0,
	NIN_LAN_GERMAN		= 1,
	NIN_LAN_FRENCH		= 2,
	NIN_LAN_SPANISH		= 3,
	NIN_LAN_ITALIAN		= 4,
	NIN_LAN_DUTCH		= 5,

/* Auto will use English for E/P region codes and 
   only other languages when these region codes are used: D/F/S/I/J  */

	NIN_LAN_AUTO		= -1, 
};


#endif
