123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886 |
- // Copyright 2016 Dolphin Emulator Project
- // SPDX-License-Identifier: GPL-2.0-or-later
- #include "DiscIO/Enums.h"
- #include <map>
- #include <string>
- #include "Common/Assert.h"
- #include "Common/Common.h"
- #include "Common/CommonTypes.h"
- #include "Common/Logging/Log.h"
- #include "Common/MsgHandler.h"
- namespace DiscIO
- {
- std::string GetName(Country country, bool translate)
- {
- std::string name;
- switch (country)
- {
- case Country::Europe:
- name = _trans("Europe");
- break;
- case Country::Japan:
- name = _trans("Japan");
- break;
- case Country::USA:
- name = _trans("USA");
- break;
- case Country::Australia:
- name = _trans("Australia");
- break;
- case Country::France:
- name = _trans("France");
- break;
- case Country::Germany:
- name = _trans("Germany");
- break;
- case Country::Italy:
- name = _trans("Italy");
- break;
- case Country::Korea:
- name = _trans("Korea");
- break;
- case Country::Netherlands:
- name = _trans("Netherlands");
- break;
- case Country::Russia:
- name = _trans("Russia");
- break;
- case Country::Spain:
- name = _trans("Spain");
- break;
- case Country::Taiwan:
- name = _trans("Taiwan");
- break;
- case Country::World:
- name = _trans("World");
- break;
- default:
- name = _trans("Unknown");
- break;
- }
- return translate ? Common::GetStringT(name.c_str()) : name;
- }
- std::string GetName(Language language, bool translate)
- {
- std::string name;
- switch (language)
- {
- case Language::Japanese:
- name = _trans("Japanese");
- break;
- case Language::English:
- name = _trans("English");
- break;
- case Language::German:
- name = _trans("German");
- break;
- case Language::French:
- name = _trans("French");
- break;
- case Language::Spanish:
- name = _trans("Spanish");
- break;
- case Language::Italian:
- name = _trans("Italian");
- break;
- case Language::Dutch:
- name = _trans("Dutch");
- break;
- case Language::SimplifiedChinese:
- name = _trans("Simplified Chinese");
- break;
- case Language::TraditionalChinese:
- name = _trans("Traditional Chinese");
- break;
- case Language::Korean:
- name = _trans("Korean");
- break;
- default:
- name = _trans("Unknown");
- break;
- }
- return translate ? Common::GetStringT(name.c_str()) : name;
- }
- std::string GetName(Region region, bool translate)
- {
- std::string name;
- switch (region)
- {
- case Region::NTSC_J:
- name = _trans("NTSC-J");
- break;
- case Region::NTSC_U:
- name = _trans("NTSC-U");
- break;
- case Region::PAL:
- name = _trans("PAL");
- break;
- case Region::NTSC_K:
- name = _trans("NTSC-K");
- break;
- default:
- name = _trans("Unknown");
- break;
- }
- return translate ? Common::GetStringT(name.c_str()) : name;
- }
- bool IsDisc(Platform volume_type)
- {
- return volume_type == Platform::GameCubeDisc || volume_type == Platform::Triforce ||
- volume_type == Platform::WiiDisc;
- }
- bool IsWii(Platform volume_type)
- {
- return volume_type == Platform::WiiDisc || volume_type == Platform::WiiWAD;
- }
- bool IsNTSC(Region region)
- {
- return region == Region::NTSC_J || region == Region::NTSC_U || region == Region::NTSC_K;
- }
- int ToGameCubeLanguage(Language language)
- {
- if (language < Language::English || language > Language::Dutch)
- return 0;
- else
- return static_cast<int>(language) - 1;
- }
- Language FromGameCubeLanguage(int language)
- {
- if (language < 0 || language > 5)
- return Language::Unknown;
- else
- return static_cast<Language>(language + 1);
- }
- // Increment CACHE_REVISION (GameFileCache.cpp) if the code below is modified
- Country TypicalCountryForRegion(Region region)
- {
- switch (region)
- {
- case Region::NTSC_J:
- return Country::Japan;
- case Region::NTSC_U:
- return Country::USA;
- case Region::PAL:
- return Country::Europe;
- case Region::NTSC_K:
- return Country::Korea;
- default:
- return Country::Unknown;
- }
- }
- Region SysConfCountryToRegion(u8 country_code)
- {
- if (country_code == 0)
- return Region::Unknown;
- if (country_code < 0x08) // Japan
- return Region::NTSC_J;
- if (country_code < 0x40) // Americas
- return Region::NTSC_U;
- if (country_code < 0x80) // Europe, Oceania, parts of Africa
- return Region::PAL;
- if (country_code < 0xa8) // Southeast Asia
- return country_code == 0x88 ? Region::NTSC_K : Region::NTSC_J;
- if (country_code < 0xc0) // Middle East
- return Region::NTSC_U;
- return Region::Unknown;
- }
- Region CountryCodeToRegion(u8 country_code, Platform platform, Region expected_region,
- std::optional<u16> revision)
- {
- switch (country_code)
- {
- case '\2':
- return expected_region; // Wii Menu (same title ID for all regions)
- case 'J':
- return Region::NTSC_J;
- case 'W':
- if (expected_region == Region::PAL)
- return Region::PAL; // Only the Nordic version of Ratatouille (Wii)
- else
- return Region::NTSC_J; // Korean GC games in English or Taiwanese Wii games
- case 'E':
- if (platform != Platform::GameCubeDisc)
- return Region::NTSC_U; // The most common country code for NTSC-U
- if (revision)
- {
- if (*revision >= 0x30)
- return Region::NTSC_J; // Korean GC games in English
- else
- return Region::NTSC_U; // The most common country code for NTSC-U
- }
- else
- {
- if (expected_region == Region::NTSC_J)
- return Region::NTSC_J; // Korean GC games in English
- else
- return Region::NTSC_U; // The most common country code for NTSC-U
- }
- case 'B':
- case 'N':
- return Region::NTSC_U;
- case 'X':
- case 'Y':
- case 'Z':
- // Additional language versions, store-exclusive versions, other special versions
- return expected_region == Region::NTSC_U ? Region::NTSC_U : Region::PAL;
- case 'D':
- case 'F':
- case 'H':
- case 'I':
- case 'L':
- case 'M':
- case 'P':
- case 'R':
- case 'S':
- case 'U':
- case 'V':
- return Region::PAL;
- case 'K':
- case 'Q':
- case 'T':
- // All of these country codes are Korean, but the NTSC-K region doesn't exist on GC
- return platform == Platform::GameCubeDisc ? Region::NTSC_J : Region::NTSC_K;
- default:
- return Region::Unknown;
- }
- }
- Country CountryCodeToCountry(u8 country_code, Platform platform, Region region,
- std::optional<u16> revision)
- {
- switch (country_code)
- {
- // Worldwide
- case 'A':
- return Country::World;
- // Mixed regions
- case 'X':
- case 'Y':
- case 'Z':
- // Additional language versions, store-exclusive versions, other special versions
- return region == Region::NTSC_U ? Country::USA : Country::Europe;
- case 'W':
- if (platform == Platform::GameCubeDisc)
- return Country::Korea; // GC games in English released in Korea
- else if (region == Region::PAL)
- return Country::Europe; // Only the Nordic version of Ratatouille (Wii)
- else
- return Country::Taiwan; // Wii games in traditional Chinese released in Taiwan
- // PAL
- case 'D':
- return Country::Germany;
- case 'L': // NTSC-J games released on PAL VC
- case 'M': // NTSC-U games released on PAL VC
- case 'V': // Used by some Nordic Wii releases
- case 'P': // The most common country code for PAL
- return Country::Europe;
- case 'U':
- return Country::Australia;
- case 'F':
- return Country::France;
- case 'I':
- return Country::Italy;
- case 'H':
- return Country::Netherlands;
- case 'R':
- return Country::Russia;
- case 'S':
- return Country::Spain;
- // NTSC
- case 'E':
- if (platform != Platform::GameCubeDisc)
- return Country::USA; // The most common country code for NTSC-U
- if (revision)
- {
- if (*revision >= 0x30)
- return Country::Korea; // GC games in English released in Korea
- else
- return Country::USA; // The most common country code for NTSC-U
- }
- else
- {
- if (region == Region::NTSC_J)
- return Country::Korea; // GC games in English released in Korea
- else
- return Country::USA; // The most common country code for NTSC-U
- }
- case 'B': // PAL games released on NTSC-U VC
- case 'N': // NTSC-J games released on NTSC-U VC
- return Country::USA;
- case 'J':
- return Country::Japan;
- case 'K': // Games in Korean released in Korea
- case 'Q': // NTSC-J games released on NTSC-K VC
- case 'T': // NTSC-U games released on NTSC-K VC
- return Country::Korea;
- default:
- if (country_code > 'A') // Silently ignore IOS wads
- WARN_LOG_FMT(DISCIO, "Unknown Country Code! {}", static_cast<char>(country_code));
- return Country::Unknown;
- }
- }
- Region GetSysMenuRegion(u16 title_version)
- {
- switch (title_version & 0xf)
- {
- case 0:
- return Region::NTSC_J;
- case 1:
- return Region::NTSC_U;
- case 2:
- return Region::PAL;
- case 6:
- return Region::NTSC_K;
- default:
- return Region::Unknown;
- }
- }
- std::string GetSysMenuVersionString(u16 title_version, bool is_vwii)
- {
- std::string version;
- char region_letter = '\0';
- switch (GetSysMenuRegion(title_version))
- {
- case Region::NTSC_J:
- region_letter = 'J';
- break;
- case Region::NTSC_U:
- region_letter = 'U';
- break;
- case Region::PAL:
- region_letter = 'E';
- break;
- case Region::NTSC_K:
- region_letter = 'K';
- break;
- case Region::Unknown:
- WARN_LOG_FMT(DISCIO, "Unknown region for Wii Menu version {}", title_version);
- break;
- }
- if (is_vwii)
- {
- // For vWii return the Wii U version which installed the menu
- switch (title_version & 0xff0)
- {
- case 512:
- version = "1.0.0";
- break;
- case 544:
- version = "4.0.0";
- break;
- case 608:
- version = "5.2.0";
- break;
- default:
- version = "?.?.?";
- break;
- }
- }
- else
- {
- switch (title_version & 0xff0)
- {
- case 32:
- version = "1.0";
- break;
- case 96:
- case 128:
- version = "2.0";
- break;
- case 160:
- version = "2.1";
- break;
- case 192:
- version = "2.2";
- break;
- case 224:
- version = "3.0";
- break;
- case 256:
- version = "3.1";
- break;
- case 288:
- version = "3.2";
- break;
- case 320:
- case 352:
- version = "3.3";
- break;
- case 384:
- version = (region_letter != 'K' ? "3.4" : "3.5");
- break;
- case 416:
- version = "4.0";
- break;
- case 448:
- version = "4.1";
- break;
- case 480:
- version = "4.2";
- break;
- case 512:
- version = "4.3";
- break;
- default:
- version = "?.?";
- break;
- }
- }
- if (region_letter != '\0')
- version += region_letter;
- return version;
- }
- const std::string& GetCompanyFromID(const std::string& company_id)
- {
- static const std::map<std::string, std::string> companies = {
- {"01", "Nintendo"},
- {"02", "Nintendo"},
- {"08", "Capcom"},
- {"0A", "Jaleco / Jaleco Entertainment"},
- {"0L", "Warashi"},
- {"0M", "Entertainment Software Publishing"},
- {"0Q", "IE Institute"},
- {"13", "Electronic Arts Japan"},
- {"18", "Hudson Soft / Hudson Entertainment"},
- {"1K", "Titus Software"},
- {"20", "DSI Games / ZOO Digital Publishing"},
- {"28", "Kemco Japan"},
- {"29", "SETA Corporation"},
- {"2K", "NEC Interchannel"},
- {"2L", "Agatsuma Entertainment"},
- {"2M", "Jorudan"},
- {"2N", "Smilesoft / Rocket Company"},
- {"2Q", "MediaKite"},
- {"36", "Codemasters"},
- {"41", "Ubisoft"},
- {"4F", "Eidos Interactive"},
- {"4Q", "Disney Interactive Studios / Buena Vista Games"},
- {"4Z", "Crave Entertainment / Red Wagon Games"},
- {"51", "Acclaim Entertainment"},
- {"52", "Activision"},
- {"54", "Take-Two Interactive / GameTek / Rockstar Games / Global Star Software"},
- {"5D", "Midway Games / Tradewest"},
- {"5G", "Majesco Entertainment"},
- {"5H", "3DO / Global Star Software"},
- {"5L", "NewKidCo"},
- {"5S", "Evolved Games / Xicat Interactive"},
- {"5V", "Agetec"},
- {"5Z", "Data Design / Conspiracy Entertainment"},
- {"60", "Titus Interactive / Titus Software"},
- {"64", "LucasArts"},
- {"68", "Bethesda Softworks / Mud Duck Productions / Vir2L Studios"},
- {"69", "Electronic Arts"},
- {"6E", "Sega"},
- {"6K", "UFO Interactive Games"},
- {"6L", "BAM! Entertainment"},
- {"6M", "System 3"},
- {"6N", "Midas Interactive Entertainment"},
- {"6S", "TDK Mediactive"},
- {"6U", "The Adventure Company / DreamCatcher Interactive"},
- {"6V", "JoWooD Entertainment"},
- {"6W", "Sega"},
- {"6X", "Wanadoo Edition"},
- {"6Z", "NDS Software"},
- {"70", "Atari (Infogrames)"},
- {"71", "Interplay Entertainment"},
- {"75", "SCi Games"},
- {"78", "THQ / Play THQ"},
- {"7D", "Sierra Entertainment / Vivendi Games / Universal Interactive Studios"},
- {"7F", "Kemco"},
- {"7G", "Rage Software"},
- {"7H", "Encore Software"},
- {"7J", "Zushi Games / ZOO Digital Publishing"},
- {"7K", "Kiddinx Entertainment"},
- {"7L", "Simon & Schuster Interactive"},
- {"7M", "Badland Games"},
- {"7N", "Empire Interactive / Xplosiv"},
- {"7S", "Rockstar Games"},
- {"7T", "Scholastic"},
- {"7U", "Ignition Entertainment"},
- {"82", "Namco"},
- {"8G", "NEC Interchannel"},
- {"8J", "Kadokawa Shoten"},
- {"8M", "CyberFront"},
- {"8N", "Success"},
- {"8P", "Sega"},
- {"91", "Chunsoft"},
- {"99", "Marvelous Entertainment / Victor Entertainment / Pack-In-Video / Rising Star Games"},
- {"9B", "Tecmo"},
- {"9G",
- "Take-Two Interactive / Global Star Software / Gotham Games / Gathering of Developers"},
- {"9S", "Brother International"},
- {"9Z", "Crunchyroll"},
- {"A4", "Konami"},
- {"A7", "Takara"},
- {"AF", "Namco Bandai Games"},
- {"AU", "Alternative Software"},
- {"AX", "Vivendi"},
- {"B0", "Acclaim Japan"},
- {"B2", "Bandai Games"},
- {"BB", "Sunsoft"},
- {"BL", "MTO"},
- {"BM", "XING"},
- {"BN", "Sunrise Interactive"},
- {"BP", "Global A Entertainment"},
- {"C0", "Taito"},
- {"C8", "Koei"},
- {"CM", "Konami Computer Entertainment Osaka"},
- {"CQ", "From Software"},
- {"D9", "Banpresto"},
- {"DA", "Tomy / Takara Tomy"},
- {"DQ", "Compile Heart / Idea Factory"},
- {"E5", "Epoch"},
- {"E6", "Game Arts"},
- {"E7", "Athena"},
- {"E8", "Asmik Ace Entertainment"},
- {"E9", "Natsume"},
- {"EB", "Atlus"},
- {"EL", "Spike"},
- {"EM", "Konami Computer Entertainment Tokyo"},
- {"EP", "Sting Entertainment"},
- {"ES", "Starfish-SD"},
- {"EY", "Vblank Entertainment"},
- {"FH", "Easy Interactive"},
- {"FJ", "Virtual Toys"},
- {"FK", "The Game Factory"},
- {"FP", "Mastiff"},
- {"FR", "Digital Tainment Pool"},
- {"FS", "XS Games"},
- {"G0", "Alpha Unit"},
- {"G2", "Yuke's"},
- {"G6", "SIMS"},
- {"G9", "D3 Publisher"},
- {"GA", "PIN Change"},
- {"GD", "Square Enix"},
- {"GE", "Kids Station"},
- {"GG", "O3 Entertainment"},
- {"GJ", "Detn8 Games"},
- {"GK", "Genki"},
- {"GL", "Gameloft / Ubisoft"},
- {"GM", "Gamecock Media Group"},
- {"GN", "Oxygen Games"},
- {"GR", "GSP"},
- {"GT", "505 Games"},
- {"GX", "Commodore"},
- {"GY", "The Game Factory"},
- {"GZ", "Gammick Entertainment"},
- {"H3", "Zen United"},
- {"H4", "SNK Playmore"},
- {"HA", "Nobilis"},
- {"HE", "Gust"},
- {"HF", "Level-5"},
- {"HG", "Graffiti Entertainment"},
- {"HH", "Focus Home Interactive"},
- {"HJ", "Genius Products"},
- {"HK", "D2C Games"},
- {"HL", "Frontier Developments"},
- {"HM", "HMH Interactive"},
- {"HN", "High Voltage Software"},
- {"HQ", "Abstraction Games"},
- {"HS", "Tru Blu"},
- {"HT", "Big Blue Bubble"},
- {"HU", "Ghostfire Games"},
- {"HW", "Incredible Technologies"},
- {"HY", "Reef Entertainment"},
- {"HZ", "Nordcurrent"},
- {"J8", "D4 Enterprise"},
- {"J9", "AQ Interactive"},
- {"JD", "SKONEC Entertainment"},
- {"JE", "E Frontier"},
- {"JF", "Arc System Works"},
- {"JG", "The Games Company"},
- {"JH", "City Interactive"},
- {"JJ", "Deep Silver"},
- {"JP", "redspotgames"},
- {"JR", "Engine Software"},
- {"JS", "Digital Leisure"},
- {"JT", "Empty Clip Studios"},
- {"JU", "Riverman Media"},
- {"JV", "JV Games"},
- {"JW", "BigBen Interactive"},
- {"JX", "Shin'en Multimedia"},
- {"JY", "Steel Penny Games"},
- {"JZ", "505 Games"},
- {"K2", "Coca-Cola (Japan) Company"},
- {"K3", "Yudo"},
- {"K6", "Nihon System"},
- {"KB", "Nippon Ichi Software"},
- {"KG", "Kando Games"},
- {"KH", "Joju Games"},
- {"KJ", "Studio Zan"},
- {"KK", "DK Games"},
- {"KL", "Abylight"},
- {"KM", "Deep Silver"},
- {"KN", "Gameshastra"},
- {"KP", "Purple Hills"},
- {"KQ", "Over the Top Games"},
- {"KR", "KREA Medie"},
- {"KT", "The Code Monkeys"},
- {"KW", "Semnat Studios"},
- {"KY", "Medaverse Studios"},
- {"L3", "G-Mode"},
- {"L8", "FujiSoft"},
- {"LB", "Tryfirst"},
- {"LD", "Studio Zan"},
- {"LF", "Kemco"},
- {"LG", "Black Bean Games"},
- {"LJ", "Legendo Entertainment"},
- {"LL", "HB Studios"},
- {"LN", "GameOn"},
- {"LP", "Left Field Productions"},
- {"LR", "Koch Media"},
- {"LT", "Legacy Interactive"},
- {"LU", "Lexis Num\xc3\xa9rique"}, // We can't use a u8 prefix due to C++20's u8string
- {"LW", "Grendel Games"},
- {"LY", "Icon Games / Super Icon"},
- {"M0", "Studio Zan"},
- {"M1", "Grand Prix Games"},
- {"M2", "HomeMedia"},
- {"M4", "Cybird"},
- {"M6", "Perpetuum"},
- {"MB", "Agenda"},
- {"MD", "Ateam"},
- {"ME", "Silver Star Japan"},
- {"MF", "Yamasa"},
- {"MH", "Mentor Interactive"},
- {"MJ", "Mumbo Jumbo"},
- {"ML", "DTP Young Entertainment"},
- {"MM", "Big John Games"},
- {"MN", "Mindscape"},
- {"MR", "Mindscape"},
- {"MS", "Milestone / UFO Interactive Games"},
- {"MT", "Blast! Entertainment"},
- {"MV", "Marvelous Entertainment"},
- {"MZ", "Mad Catz"},
- {"N0", "Exkee"},
- {"N4", "Zoom"},
- {"N7", "T&S"},
- {"N9", "Tera Box"},
- {"NA", "Tom Create"},
- {"NB", "HI Games & Publishing"},
- {"NE", "Kosaido"},
- {"NF", "Peakvox"},
- {"NG", "Nordic Games"},
- {"NH", "Gevo Entertainment"},
- {"NJ", "Enjoy Gaming"},
- {"NK", "Neko Entertainment"},
- {"NL", "Nordic Softsales"},
- {"NN", "Nnooo"},
- {"NP", "Nobilis"},
- {"NQ", "Namco Bandai Partners"},
- {"NR", "Destineer Publishing / Bold Games"},
- {"NS", "Nippon Ichi Software America"},
- {"NT", "Nocturnal Entertainment"},
- {"NV", "Nicalis"},
- {"NW", "Deep Fried Entertainment"},
- {"NX", "Barnstorm Games"},
- {"NY", "Nicalis"},
- {"P1", "Poisoft"},
- {"PH", "Playful Entertainment"},
- {"PK", "Knowledge Adventure"},
- {"PL", "Playlogic Entertainment"},
- {"PM", "Warner Bros. Interactive Entertainment"},
- {"PN", "P2 Games"},
- {"PQ", "PopCap Games"},
- {"PS", "Bplus"},
- {"PT", "Firemint"},
- {"PU", "Pub Company"},
- {"PV", "Pan Vision"},
- {"PY", "Playstos Entertainment"},
- {"PZ", "GameMill Publishing"},
- {"Q2", "Santa Entertainment"},
- {"Q3", "Asterizm"},
- {"Q4", "Hamster"},
- {"Q5", "Recom"},
- {"QA", "Miracle Kidz"},
- {"QC", "Kadokawa Shoten / Enterbrain"},
- {"QH", "Virtual Play Games"},
- {"QK", "MACHINE Studios"},
- {"QM", "Object Vision Software"},
- {"QQ", "Gamelion"},
- {"QR", "Lapland Studio"},
- {"QT", "CALARIS"},
- {"QU", "QubicGames"},
- {"QV", "Ludia"},
- {"QW", "Kaasa Solution"},
- {"QX", "Press Play"},
- {"QZ", "Hands-On Mobile"},
- {"RA", "Office Create"},
- {"RG", "Ronimo Games"},
- {"RH", "h2f Games"},
- {"RM", "Rondomedia"},
- {"RN", "Mastiff / N3V Games"},
- {"RQ", "GolemLabs & Zoozen"},
- {"RS", "Brash Entertainment"},
- {"RT", "RTL Enterprises"},
- {"RV", "bitComposer Games"},
- {"RW", "RealArcade"},
- {"RX", "Reflexive Entertainment"},
- {"RZ", "Akaoni Studio"},
- {"S5", "SouthPeak Games"},
- {"SH", "Sabarasa"},
- {"SJ", "Cosmonaut Games"},
- {"SP", "Blade Interactive Studios"},
- {"SQ", "Sonalysts"},
- {"SR", "SnapDragon Games"},
- {"SS", "Sanuk Games"},
- {"ST", "Stickmen Studios"},
- {"SU", "Slitherine"},
- {"SV", "SevenOne Intermedia"},
- {"SZ", "Storm City Games"},
- {"TH", "Kolkom"},
- {"TJ", "Broken Rules"},
- {"TL", "Telltale Games"},
- {"TR", "Tetris Online"},
- {"TS", "Triangle Studios"},
- {"TV", "Tivola"},
- {"TW", "Two Tribes"},
- {"TY", "Teyon"},
- {"UG", "Data Design Interactive / Popcorn Arcade / Metro 3D"},
- {"UH", "Intenium Console"},
- {"UJ", "Ghostlight"},
- {"UK", "iFun4all"},
- {"UN", "Chillingo"},
- {"UP", "EnjoyUp Games"},
- {"UR", "Sudden Games"},
- {"US", "USM"},
- {"UU", "Onteca"},
- {"UV", "Fugazo"},
- {"UW", "Coresoft"},
- {"VG", "Vogster Entertainment"},
- {"VK", "Sandlot Games"},
- {"VL", "Eko Software"},
- {"VN", "Valcon Games"},
- {"VP", "Virgin Play"},
- {"VS", "Korner Entertainment"},
- {"VT", "Microforum Games"},
- {"VU", "Double Jungle"},
- {"VV", "Pixonauts"},
- {"VX", "Frontline Studios"},
- {"VZ", "Little Orbit"},
- {"WD", "Amazon"},
- {"WG", "2D Boy"},
- {"WH", "NinjaBee"},
- {"WJ", "Studio Walljump"},
- {"WL", "Wired Productions"},
- {"WN", "tons of bits"},
- {"WP", "White Park Bay Software"},
- {"WQ", "Revistronic"},
- {"WR", "Warner Bros. Interactive Entertainment"},
- {"WS", "MonkeyPaw Games"},
- {"WW", "Slang Publishing"},
- {"WY", "WayForward Technologies"},
- {"WZ", "Wizarbox"},
- {"X0", "SDP Games"},
- {"X3", "CK Games"},
- {"X4", "Easy Interactive"},
- {"XB", "Hulu"},
- {"XG", "XGen Studios"},
- {"XJ", "XSEED Games"},
- {"XK", "Exkee"},
- {"XM", "DreamBox Games"},
- {"XN", "Netflix"},
- {"XS", "Aksys Games"},
- {"XT", "Funbox Media"},
- {"XU", "Shanblue Interactive"},
- {"XV", "Keystone Game Studio"},
- {"XW", "Lemon Games"},
- {"XY", "Gaijin Games"},
- {"Y1", "Tubby Games"},
- {"Y5", "Easy Interactive"},
- {"Y6", "Motiviti"},
- {"Y7", "The Learning Company"},
- {"Y9", "RadiationBurn"},
- {"YC", "NECA"},
- {"YD", "Infinite Dreams"},
- {"YF", "O2 Games"},
- {"YG", "Maximum Family Games"},
- {"YJ", "Frozen Codebase"},
- {"YK", "MAD Multimedia"},
- {"YN", "Game Factory"},
- {"YS", "Yullaby"},
- {"YT", "Corecell Technology"},
- {"YV", "KnapNok Games"},
- {"YX", "Selectsoft"},
- {"YY", "FDG Entertainment"},
- {"Z4", "Ntreev Soft"},
- {"Z5", "Shinsegae I&C"},
- {"ZA", "WBA Interactive"},
- {"ZG", "Zallag"},
- {"ZH", "Internal Engine"},
- {"ZJ", "Performance Designed Products"},
- {"ZK", "Anima Game Studio"},
- {"ZP", "Fishing Cactus"},
- {"ZS", "Zinkia Entertainment"},
- {"ZV", "RedLynx"},
- {"ZW", "Judo Baby"},
- {"ZX", "TopWare Interactive"}};
- static const std::string EMPTY_STRING;
- auto iterator = companies.find(company_id);
- if (iterator != companies.end())
- return iterator->second;
- else
- return EMPTY_STRING;
- }
- } // namespace DiscIO
|