dolphin/Source/Core/DiscIO/Enums.cpp
JosJuice 0a15aaaa12 Move DiscIO enums to a new file
At first there weren't many enums in Volume.h, but the number has been
growing, and I'm planning to add one more for regions. To not make
Volume.h too large, and to avoid needing to include Volume.h in code
that doesn't use volume objects, I'm moving the enums to a new file.
I'm also turning them into enum classes while I'm at it.
2016-07-13 17:29:27 +02:00

530 lines
14 KiB
C++

// Copyright 2016 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#include <map>
#include <string>
#include "DiscIO/Enums.h"
#include "Common/CommonTypes.h"
#include "Common/Logging/Log.h"
namespace DiscIO
{
// Increment CACHE_REVISION (ISOFile.cpp & GameFile.cpp) if the code below is modified
Country CountrySwitch(u8 country_code)
{
switch (country_code)
{
// Worldwide
case 'A':
return Country::COUNTRY_WORLD;
// PAL
case 'D':
return Country::COUNTRY_GERMANY;
case 'X': // Used by a couple PAL games
case 'Y': // German, French
case 'L': // Japanese import to PAL regions
case 'M': // Japanese import to PAL regions
case 'P':
return Country::COUNTRY_EUROPE;
case 'U':
return Country::COUNTRY_AUSTRALIA;
case 'F':
return Country::COUNTRY_FRANCE;
case 'I':
return Country::COUNTRY_ITALY;
case 'H':
return Country::COUNTRY_NETHERLANDS;
case 'R':
return Country::COUNTRY_RUSSIA;
case 'S':
return Country::COUNTRY_SPAIN;
// NTSC
case 'E':
case 'N': // Japanese import to USA and other NTSC regions
case 'Z': // Prince of Persia - The Forgotten Sands (Wii)
case 'B': // Ufouria: The Saga (Virtual Console)
return Country::COUNTRY_USA;
case 'J':
return Country::COUNTRY_JAPAN;
case 'K':
case 'Q': // Korea with Japanese language
case 'T': // Korea with English language
return Country::COUNTRY_KOREA;
case 'W':
return Country::COUNTRY_TAIWAN;
default:
if (country_code > 'A') // Silently ignore IOS wads
WARN_LOG(DISCIO, "Unknown Country Code! %c", country_code);
return Country::COUNTRY_UNKNOWN;
}
}
u8 GetSysMenuRegion(u16 title_version)
{
switch (title_version)
{
case 128:
case 192:
case 224:
case 256:
case 288:
case 352:
case 384:
case 416:
case 448:
case 480:
case 512:
return 'J';
case 97:
case 193:
case 225:
case 257:
case 289:
case 353:
case 385:
case 417:
case 449:
case 481:
case 513:
return 'E';
case 130:
case 162:
case 194:
case 226:
case 258:
case 290:
case 354:
case 386:
case 418:
case 450:
case 482:
case 514:
return 'P';
case 326:
case 390:
case 454:
case 486:
case 518:
return 'K';
default:
return 'A';
}
}
std::string GetCompanyFromID(const std::string& company_id)
{
static const std::map<std::string, std::string> companies = {
{"01", "Nintendo"},
{"02", "Rocket Games / Ajinomoto"},
{"03", "Imagineer-Zoom"},
{"04", "Gray Matter"},
{"05", "Zamuse"},
{"06", "Falcom"},
{"07", "Enix"},
{"08", "Capcom"},
{"09", "Hot B Co."},
{"0A", "Jaleco"},
{"0B", "Coconuts Japan"},
{"0C", "Coconuts Japan / GX Media"},
{"0D", "Micronet"},
{"0E", "Technos"},
{"0F", "Mebio Software"},
{"0G", "Shouei System"},
{"0H", "Starfish"},
{"0J", "Mitsui Fudosan / Dentsu"},
{"0L", "Warashi Inc."},
{"0N", "Nowpro"},
{"0P", "Game Village"},
{"0Q", "IE Institute"},
{"12", "Infocom"},
{"13", "Electronic Arts Japan"},
{"15", "Cobra Team"},
{"16", "Human / Field"},
{"17", "KOEI"},
{"18", "Hudson Soft"},
{"19", "S.C.P."},
{"1A", "Yanoman"},
{"1C", "Tecmo Products"},
{"1D", "Japan Glary Business"},
{"1E", "Forum / OpenSystem"},
{"1F", "Virgin Games (Japan)"},
{"1G", "SMDE"},
{"1J", "Daikokudenki"},
{"1P", "Creatures Inc."},
{"1Q", "TDK Deep Impresion"},
{"20", "Zoo"},
{"21", "Sunsoft / Tokai Engineering"},
{"22", "Planning Office Wada / VR1 Japan"},
{"23", "Micro World"},
{"25", "San-X"},
{"26", "Enix"},
{"27", "Loriciel / Electro Brain"},
{"28", "Kemco Japan"},
{"29", "Seta"},
{"2A", "Culture Brain"},
{"2C", "Palsoft"},
{"2D", "Visit Co., Ltd."},
{"2E", "Intec"},
{"2F", "System Sacom"},
{"2G", "Poppo"},
{"2H", "Ubisoft Japan"},
{"2J", "Media Works"},
{"2K", "NEC InterChannel"},
{"2L", "Tam"},
{"2M", "Jordan"},
{"2N", "Smilesoft / Rocket"},
{"2Q", "Mediakite"},
{"30", "Viacom"},
{"31", "Carrozzeria"},
{"32", "Dynamic"},
{"34", "Magifact"},
{"35", "Hect"},
{"36", "Codemasters"},
{"37", "Taito / GAGA Communications"},
{"38", "Laguna"},
{"39", "Telstar / Event / Taito "},
{"3B", "Arcade Zone Ltd."},
{"3C", "Entertainment International / Empire Software"},
{"3D", "Loriciel"},
{"3E", "Gremlin Graphics"},
{"3F", "K. Amusement Leasing Co."},
{"40", "Seika Corp."},
{"41", "Ubisoft Entertainment"},
{"42", "Sunsoft US"},
{"44", "Life Fitness"},
{"46", "System 3"},
{"47", "Spectrum Holobyte"},
{"49", "IREM"},
{"4B", "Raya Systems"},
{"4C", "Renovation Products"},
{"4D", "Malibu Games"},
{"4F", "Eidos"},
{"4G", "Playmates Interactive"},
{"4J", "Fox Interactive"},
{"4K", "Time Warner Interactive"},
{"4Q", "Disney Interactive"},
{"4S", "Black Pearl"},
{"4U", "Advanced Productions"},
{"4X", "GT Interactive"},
{"4Y", "Rare"},
{"4Z", "Crave Entertainment"},
{"50", "Absolute Entertainment"},
{"51", "Acclaim"},
{"52", "Activision"},
{"53", "American Sammy"},
{"54", "Take 2 Interactive / GameTek"},
{"55", "Hi Tech"},
{"56", "LJN Ltd."},
{"58", "Mattel"},
{"5A", "Mindscape / Red Orb Entertainment"},
{"5B", "Romstar"},
{"5C", "Taxan"},
{"5D", "Midway / Tradewest"},
{"5F", "American Softworks"},
{"5G", "Majesco Sales Inc."},
{"5H", "3DO"},
{"5K", "Hasbro"},
{"5L", "NewKidCo"},
{"5M", "Telegames"},
{"5N", "Metro3D"},
{"5P", "Vatical Entertainment"},
{"5Q", "LEGO Media"},
{"5S", "Xicat Interactive"},
{"5T", "Cryo Interactive"},
{"5W", "Red Storm Entertainment"},
{"5X", "Microids"},
{"5Z", "Data Design / Conspiracy / Swing"},
{"60", "Titus"},
{"61", "Virgin Interactive"},
{"62", "Maxis"},
{"64", "LucasArts Entertainment"},
{"67", "Ocean"},
{"68", "Bethesda Softworks"},
{"69", "Electronic Arts"},
{"6B", "Laser Beam"},
{"6E", "Elite Systems"},
{"6F", "Electro Brain"},
{"6G", "The Learning Company"},
{"6H", "BBC"},
{"6J", "Software 2000"},
{"6K", "UFO Interactive Games"},
{"6L", "BAM! Entertainment"},
{"6M", "Studio 3"},
{"6Q", "Classified Games"},
{"6S", "TDK Mediactive"},
{"6U", "DreamCatcher"},
{"6V", "JoWood Produtions"},
{"6W", "Sega"},
{"6X", "Wannado Edition"},
{"6Y", "LSP (Light & Shadow Prod.)"},
{"6Z", "ITE Media"},
{"70", "Atari (Infogrames)"},
{"71", "Interplay"},
{"72", "JVC (US)"},
{"73", "Parker Brothers"},
{"75", "Sales Curve (Storm / SCI)"},
{"78", "THQ"},
{"79", "Accolade"},
{"7A", "Triffix Entertainment"},
{"7C", "Microprose Software"},
{"7D", "Sierra / Universal Interactive"},
{"7F", "Kemco"},
{"7G", "Rage Software"},
{"7H", "Encore"},
{"7J", "Zoo"},
{"7K", "Kiddinx"},
{"7L", "Simon & Schuster Interactive"},
{"7M", "Asmik Ace Entertainment Inc."},
{"7N", "Empire Interactive"},
{"7Q", "Jester Interactive"},
{"7S", "Rockstar Games"},
{"7T", "Scholastic"},
{"7U", "Ignition Entertainment"},
{"7V", "Summitsoft"},
{"7W", "Stadlbauer"},
{"80", "Misawa"},
{"81", "Teichiku"},
{"82", "Namco Ltd."},
{"83", "LOZC"},
{"84", "KOEI"},
{"86", "Tokuma Shoten Intermedia"},
{"87", "Tsukuda Original"},
{"88", "DATAM-Polystar"},
{"8B", "Bullet-Proof Software"},
{"8C", "Vic Tokai Inc."},
{"8E", "Character Soft"},
{"8F", "I'Max"},
{"8G", "Saurus"},
{"8J", "General Entertainment"},
{"8N", "Success"},
{"8P", "Sega Japan"},
{"90", "Takara Amusement"},
{"91", "Chunsoft"},
{"92", "Video System / Mc O' River"},
{"93", "BEC"},
{"95", "Varie"},
{"96", "Yonezawa / S'pal"},
{"97", "Kaneko"},
{"99", "Marvelous Entertainment"},
{"9A", "Nichibutsu / Nihon Bussan"},
{"9B", "Tecmo"},
{"9C", "Imagineer"},
{"9F", "Nova"},
{"9G", "Take2 / Den'Z / Global Star"},
{"9H", "Bottom Up"},
{"9J", "Technical Group Laboratory"},
{"9L", "Hasbro Japan"},
{"9N", "Marvelous Entertainment"},
{"9P", "Keynet Inc."},
{"9Q", "Hands-On Entertainment"},
{"A0", "Telenet"},
{"A1", "Hori"},
{"A4", "Konami"},
{"A5", "K. Amusement Leasing Co."},
{"A6", "Kawada"},
{"A7", "Takara"},
{"A9", "Technos Japan Corp."},
{"AA", "JVC / Victor"},
{"AC", "Toei Animation"},
{"AD", "Toho"},
{"AF", "Namco"},
{"AG", "Media Rings Corporation"},
{"AH", "J-Wing"},
{"AJ", "Pioneer LDC"},
{"AK", "KID"},
{"AL", "Mediafactory"},
{"AP", "Infogrames / Hudson"},
{"AQ", "Kiratto Ludic Inc."},
{"B0", "Acclaim Japan"},
{"B1", "ASCII"},
{"B2", "Bandai"},
{"B4", "Enix"},
{"B6", "HAL Laboratory"},
{"B7", "SNK"},
{"B9", "Pony Canyon"},
{"BA", "Culture Brain"},
{"BB", "Sunsoft"},
{"BC", "Toshiba EMI"},
{"BD", "Sony Imagesoft"},
{"BF", "Sammy"},
{"BG", "Magical"},
{"BH", "Visco"},
{"BJ", "Compile"},
{"BL", "MTO Inc."},
{"BN", "Sunrise Interactive"},
{"BP", "Global A Entertainment"},
{"BQ", "Fuuki"},
{"C0", "Taito"},
{"C2", "Kemco"},
{"C3", "Square"},
{"C4", "Tokuma Shoten"},
{"C5", "Data East"},
{"C6", "Tonkin House / Tokyo Shoseki"},
{"C8", "Koei"},
{"CA", "Konami / Ultra / Palcom"},
{"CB", "NTVIC / VAP"},
{"CC", "Use Co., Ltd."},
{"CD", "Meldac"},
{"CE", "Pony Canyon / FCI "},
{"CF", "Angel / Sotsu Agency / Sunrise"},
{"CG", "Yumedia / Aroma Co., Ltd"},
{"CJ", "Boss"},
{"CK", "Axela / Crea-Tech"},
{"CL", "Sekaibunka-Sha / Sumire Kobo / Marigul Management Inc."},
{"CM", "Konami Computer Entertainment Osaka"},
{"CN", "NEC Interchannel"},
{"CP", "Enterbrain"},
{"CQ", "From Software"},
{"D0", "Taito / Disco"},
{"D1", "Sofel"},
{"D2", "Quest / Bothtec"},
{"D3", "Sigma"},
{"D4", "Ask Kodansha"},
{"D6", "Naxat"},
{"D7", "Copya System"},
{"D8", "Capcom Co., Ltd."},
{"D9", "Banpresto"},
{"DA", "Tomy"},
{"DB", "LJN Japan"},
{"DD", "NCS"},
{"DE", "Human Entertainment"},
{"DF", "Altron"},
{"DG", "Jaleco"},
{"DH", "Gaps Inc."},
{"DN", "Elf"},
{"DQ", "Compile Heart"},
{"E0", "Jaleco"},
{"E2", "Yutaka"},
{"E3", "Varie"},
{"E4", "T&E Soft"},
{"E5", "Epoch"},
{"E7", "Athena"},
{"E8", "Asmik"},
{"E9", "Natsume"},
{"EA", "King Records"},
{"EB", "Atlus"},
{"EC", "Epic / Sony Records"},
{"EE", "Information Global Service"},
{"EG", "Chatnoir"},
{"EH", "Right Stuff"},
{"EL", "Spike"},
{"EM", "Konami Computer Entertainment Tokyo"},
{"EN", "Alphadream Corporation"},
{"EP", "Sting"},
{"ES", "Star-Fish"},
{"F0", "A Wave"},
{"F1", "Motown Software"},
{"F2", "Left Field Entertainment"},
{"F3", "Extreme Ent. Grp."},
{"F4", "TecMagik"},
{"F9", "Cybersoft"},
{"FB", "Psygnosis"},
{"FE", "Davidson / Western Tech."},
{"FK", "The Game Factory"},
{"FL", "Hip Games"},
{"FM", "Aspyr"},
{"FP", "Mastiff"},
{"FQ", "iQue"},
{"FR", "Digital Tainment Pool"},
{"FS", "XS Games / Jack Of All Games"},
{"FT", "Daiwon"},
{"G0", "Alpha Unit"},
{"G1", "PCCW Japan"},
{"G2", "Yuke's Media Creations"},
{"G4", "KiKi Co., Ltd."},
{"G5", "Open Sesame Inc."},
{"G6", "Sims"},
{"G7", "Broccoli"},
{"G8", "Avex"},
{"G9", "D3 Publisher"},
{"GB", "Konami Computer Entertainment Japan"},
{"GD", "Square-Enix"},
{"GE", "KSG"},
{"GF", "Micott & Basara Inc."},
{"GH", "Orbital Media"},
{"GJ", "Detn8 Games"},
{"GL", "Gameloft / Ubisoft"},
{"GM", "Gamecock Media Group"},
{"GN", "Oxygen Games"},
{"GT", "505 Games"},
{"GY", "The Game Factory"},
{"H1", "Treasure"},
{"H2", "Aruze"},
{"H3", "Ertain"},
{"H4", "SNK Playmore"},
{"HF", "Level-5"},
{"HJ", "Genius Products"},
{"HY", "Reef Entertainment"},
{"HZ", "Nordcurrent"},
{"IH", "Yojigen"},
{"J9", "AQ Interactive"},
{"JF", "Arc System Works"},
{"JJ", "Deep Silver"},
{"JW", "Atari"},
{"K6", "Nihon System"},
{"KB", "NIS America"},
{"KM", "Deep Silver"},
{"KP", "Purple Hills"},
{"LH", "Trend Verlag / East Entertainment"},
{"LT", "Legacy Interactive"},
{"MJ", "Mumbo Jumbo"},
{"MR", "Mindscape"},
{"MS", "Milestone / UFO Interactive"},
{"MT", "Blast!"},
{"N9", "Terabox"},
{"NG", "Nordic Games"},
{"NK", "Neko Entertainment / Diffusion / Naps team"},
{"NP", "Nobilis"},
{"NQ", "Namco Bandai"},
{"NR", "Data Design / Destineer Studios"},
{"NS", "NIS America"},
{"PL", "Playlogic"},
{"QC", "Kadokawa Shoten"},
{"RM", "Rondomedia"},
{"RS", "Warner Bros. Interactive Entertainment Inc."},
{"RT", "RTL Games"},
{"RW", "RealNetworks"},
{"S5", "Southpeak Interactive"},
{"SP", "Blade Interactive Studios"},
{"SV", "SevenGames"},
{"SZ", "Storm City"},
{"TK", "Tasuke / Works"},
{"TV", "Tivola"},
{"UG", "Metro 3D / Data Design"},
{"VN", "Valcon Games"},
{"VP", "Virgin Play"},
{"VZ", "Little Orbit"},
{"WR", "Warner Bros. Interactive Entertainment Inc."},
{"XJ", "Xseed Games"},
{"XS", "Aksys Games"},
{"YT", "Valcon Games"},
{"Z4", "Ntreev Soft"},
{"ZA", "WBA Interactive"},
{"ZH", "Internal Engine"},
{"ZS", "Zinkia"},
{"ZW", "Judo Baby"},
{"ZX", "Topware Interactive"}};
auto iterator = companies.find(company_id);
if (iterator != companies.end())
return iterator->second;
else
return "";
}
}