forked from dolphin-emu/dolphin
		
	This lets us get rid of VideoInterface::SetRegionReg, a huge hack in CEXIMemoryCard, and some minor things.
		
			
				
	
	
		
			580 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			580 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Copyright 2016 Dolphin Emulator Project
 | 
						|
// Licensed under GPLv2+
 | 
						|
// Refer to the license.txt file included.
 | 
						|
 | 
						|
#include <map>
 | 
						|
#include <string>
 | 
						|
 | 
						|
#include "Common/CommonTypes.h"
 | 
						|
#include "Common/Logging/Log.h"
 | 
						|
#include "DiscIO/Enums.h"
 | 
						|
 | 
						|
namespace DiscIO
 | 
						|
{
 | 
						|
bool IsNTSC(Region region)
 | 
						|
{
 | 
						|
  return region == Region::NTSC_J || region == Region::NTSC_U || region == Region::NTSC_K;
 | 
						|
}
 | 
						|
 | 
						|
// Increment CACHE_REVISION (ISOFile.cpp & GameFile.cpp) if the code below is modified
 | 
						|
 | 
						|
Region RegionSwitchGC(u8 country_code)
 | 
						|
{
 | 
						|
  Region region = RegionSwitchWii(country_code);
 | 
						|
  return region == Region::NTSC_K ? Region::UNKNOWN_REGION : region;
 | 
						|
}
 | 
						|
 | 
						|
Region RegionSwitchWii(u8 country_code)
 | 
						|
{
 | 
						|
  switch (country_code)
 | 
						|
  {
 | 
						|
  case 'J':
 | 
						|
  case 'W':
 | 
						|
    return Region::NTSC_J;
 | 
						|
 | 
						|
  case 'B':
 | 
						|
  case 'E':
 | 
						|
  case 'N':
 | 
						|
  case 'Z':
 | 
						|
    return Region::NTSC_U;
 | 
						|
 | 
						|
  case 'D':
 | 
						|
  case 'F':
 | 
						|
  case 'H':
 | 
						|
  case 'I':
 | 
						|
  case 'L':
 | 
						|
  case 'M':
 | 
						|
  case 'P':
 | 
						|
  case 'R':
 | 
						|
  case 'S':
 | 
						|
  case 'U':
 | 
						|
  case 'X':
 | 
						|
  case 'Y':
 | 
						|
    return Region::PAL;
 | 
						|
 | 
						|
  case 'K':
 | 
						|
  case 'Q':
 | 
						|
  case 'T':
 | 
						|
    return Region::NTSC_K;
 | 
						|
 | 
						|
  default:
 | 
						|
    return Region::UNKNOWN_REGION;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
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 "";
 | 
						|
}
 | 
						|
}
 |