/****************************************************************************
* Copyright (C) 2013 Cyan
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
****************************************************************************/
#ifndef NIN_CONFIG_H_
#define NIN_CONFIG_H_
#include
#define NIN_MAGIC 0x01070CF6
#define NIN_CFG_VERSION 0x00000009
typedef struct NIN_CFG
{
u32 Magicbytes; // 0x01070CF6
u32 Version; // v4 since v3.354, v5 since v3.358, v6 since v3.368, v7 since v4.424, v8 since v4.431, v9 since v6.487
u32 Config;
u32 VideoMode;
u32 Language;
char GamePath[255];
char CheatPath[255];
u32 MaxPads; // added in r42 - cfg version 2
u32 GameID; // added in r83 - cfg version 2
union
{
u32 MemCardBlocks; // added in v1.135 - cfg version 3 - u32 in v3, Char in v4
struct
{
char MemCardBlocksV4;// replaced in v3.354 - cfg version 4 - from u32 in v3 to Char in v4
char VideoScale; // added in v3.354 - cfg version 4
char VideoOffset; // added in v3.354 - cfg version 4
char NetworkProfile; // added in v6.487 - cfg version 9
};
};
} NIN_CFG;
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
NIN_CFG_WIIU_WIDE = (1<<15), // v2.258
NIN_CFG_ARCADE_MODE = (1<<16), // v4.424
NIN_CFG_CC_RUMBLE = (1 << 17),// v4.431 cfg version 8
NIN_CFG_SKIP_IPL = (1 << 18),// v4.435
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), // replaced by FORCE_DF in v2.200 - v2.207
NIN_VID_FORCE_DF = (4<<16), // v2.208+
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 */
NIN_LAN_AUTO = -1,
};
// blocks = value , internal code , file size/bytes
//Mem0059 = 0, 0x04, 0x0080000
//Mem0123 = 1, 0x08, 0x0100000
//Mem0251 = 2, 0x10, 0x0200000
//Mem0507 = 3, 0x20, 0x0400000
//Mem1019 = 4, 0x40, 0x0800000
//Mem2043 = 5, 0x80, 0x1000000
#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)
#endif