Use an ID-to-name map when volume has no company string
This is written so that the result of GetCompanyFromID never is cached (except on Android?). Caching is unnecessary because the string can be obtained quickly at runtime, and not caching it means that the cache doesn't have to be invalidated when GetCompanyFromID is edited.
This commit is contained in:
parent
a784a12b51
commit
d2e6adb045
|
@ -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
|
||||
|
|
|
@ -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 "";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -312,10 +312,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 ("");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue