Merge pull request #2439 from JosJuice/company-from-id

Use an ID-to-name map when volume has no company string
This commit is contained in:
Ryan Houdek 2015-05-25 23:32:55 -04:00
commit 4ba430951a
5 changed files with 411 additions and 4 deletions

View File

@ -125,5 +125,6 @@ protected:
// Generic Switch function for all volumes
IVolume::ECountry CountrySwitch(u8 country_code);
u8 GetSysMenuRegion(u16 _TitleVersion);
std::string GetCompanyFromID(const std::string& company_id);
} // namespace

View File

@ -165,4 +165,405 @@ u8 GetSysMenuRegion(u16 _TitleVersion)
}
}
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" },
{ "PL", "Playlogic" },
{ "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 "";
}
}

View File

@ -129,6 +129,9 @@ GameFile::GameFile(const QString& fileName)
}
}
if (m_company.isEmpty() && m_unique_id.size() >= 6)
m_company = QString::fromStdString(DiscIO::GetCompanyFromID(m_unique_id.mid(4, 2).toStdString()));
if (m_valid)
{
IniFile ini = SCoreStartupParameter::LoadGameIni(m_unique_id.toStdString(), m_revision);

View File

@ -122,6 +122,9 @@ GameListItem::GameListItem(const std::string& _rFileName)
}
}
if (m_company.empty() && m_UniqueID.size() >= 6)
m_company = DiscIO::GetCompanyFromID(m_UniqueID.substr(4, 2));
if (IsValid())
{
IniFile ini = SCoreStartupParameter::LoadGameIni(m_UniqueID, m_Revision);

View File

@ -301,10 +301,9 @@ static std::string GetCompany(std::string filename)
DiscIO::IVolume* pVolume = DiscIO::CreateVolumeFromFilename(filename);
if (pVolume != nullptr)
{
std::string date = pVolume->GetCompany();
__android_log_print(ANDROID_LOG_INFO, DOLPHIN_TAG, "Company: %s", date.c_str());
return date;
std::string company = DiscIO::GetCompanyFromID(pVolume->GetMakerID());
__android_log_print(ANDROID_LOG_INFO, DOLPHIN_TAG, "Company: %s", company.c_str());
return company;
}
return std::string ("");
}