-
João Magalhães authoredJoão Magalhães authored
licensee.rs 18.95 KiB
//! Game Boy licensee vendors information and static enumerations.
use std::fmt::{self, Display, Formatter};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(feature = "wasm", wasm_bindgen)]
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
pub enum Licensee {
Unknown,
None,
Nintendo,
Capcom,
HOTB,
Jaleco,
CoconutsJapan,
EliteSystems,
EAElectronicArts,
HudsonSoft,
ITCEntertainment,
Yanoman,
JapanClary,
VirginGamesLtd,
PCMComplete,
SanX,
Kemco,
SETACorporation,
Infogrames,
Bandai,
NewLicensee,
Konami,
HectorSoft,
Banpresto,
EntertainmentI,
Gremlin,
UbiSoft,
Atlus,
MalibuInteractive,
Angel,
SpectrumHoloby,
Irem,
USGold,
Absolute,
AcclaimEntertainment,
Activision,
SammyUSACorporation,
GameTek,
ParkPlace,
LJN,
Matchbox,
MiltonBradleyCompany,
Mindscape,
Romstar,
NaxatSoft,
Tradewest,
TitusInteractive,
OceanSoftware,
EliteSystems2,
ElectroBrain,
InterplayEntertainment,
Broderbund,
SculpturedSoftware,
TheSalesCurveLimited,
THQ,
Accolade,
TriffixEntertainment,
Microprose,
MisawaEntertainment,
Lozc,
TokumaShoten,
BulletProofSoftware,
VicTokai,
Ape,
IMax,
Chunsoft,
VideoSystem,
TsubarayaProductions,
Varie,
YonezawaSpal,
Arc,
NihonBussan,
Tecmo,
Imagineer,
Nova,
HoriElectric,
Kawada,
Takara,
TechnosJapan,
ToeiAnimation,
Toho,
Namco,
ASCIICorporationOrNexsoft,
SquareEnix,
HALLaboratory,
SNK,
PonyCanyon,
CultureBrain,
Sunsoft,
SonyImagesoft,
SammyCorporation,
Taito,
Square,
DataEast,
Tonkinhouse,
Koei,
UFL,
Ultra,
Vap,
UseCorporation,
Meldac,
PoneyCanyon,
Sofel,
Quest,
SigmaEnterprises,
ASKKodanshaCo,
CopyaSystem,
Tomy,
NCS,
Human,
Altron,
TowaChiki,
Yutaka,
Epcoh,
Athena,
AsmikAceEntertainment,
Natsume,
KingRecords,
EpicSonyRecords,
IGS,
AWave,
ExtremeEntertainment,
// new licensee only codes (use 0x33 as old code)
NintendoResearchDevelopment1,
BAI,
KSS,
PlanningOfficeWADA,
Viacom,
HiTechExpressions,
Mattel,
LucasfilmGames,
TsukudaOriginal,
ChunsoftCo,
OceanSoftwareAcclaimEntertainment,
Kaneko,
PackInVideo,
BottomUp,
KonamiYuGiOh,
MTO,
Kodansha,
}
impl Licensee {
pub fn from_data(old_code: u8, new_code: &[u8]) -> Licensee {
let mut licensee = match old_code {
0x00 => Licensee::None,
0x01 => Licensee::Nintendo,
0x08 => Licensee::Capcom,
0x09 => Licensee::HOTB,
0x0a => Licensee::Jaleco,
0x0b => Licensee::CoconutsJapan,
0x0c => Licensee::EliteSystems,
0x13 => Licensee::EAElectronicArts,
0x18 => Licensee::HudsonSoft,
0x19 => Licensee::ITCEntertainment,
0x1a => Licensee::Yanoman,
0x1d => Licensee::JapanClary,
0x1f => Licensee::VirginGamesLtd,
0x24 => Licensee::PCMComplete,
0x25 => Licensee::SanX,
0x28 => Licensee::Kemco,
0x29 => Licensee::SETACorporation,
0x30 => Licensee::Infogrames,
0x31 => Licensee::Nintendo,
0x32 => Licensee::Bandai,
0x33 => Licensee::NewLicensee,
0x34 => Licensee::Konami,
0x35 => Licensee::HectorSoft,
0x38 => Licensee::Capcom,
0x39 => Licensee::Banpresto,
0x3c => Licensee::EntertainmentI,
0x3e => Licensee::Gremlin,
0x41 => Licensee::UbiSoft,
0x42 => Licensee::Atlus,
0x44 => Licensee::MalibuInteractive,
0x46 => Licensee::Angel,
0x47 => Licensee::SpectrumHoloby,
0x49 => Licensee::Irem,
0x4a => Licensee::VirginGamesLtd,
0x4d => Licensee::MalibuInteractive,
0x4f => Licensee::USGold,
0x50 => Licensee::Absolute,
0x51 => Licensee::AcclaimEntertainment,
0x52 => Licensee::Activision,
0x53 => Licensee::SammyUSACorporation,
0x54 => Licensee::GameTek,
0x55 => Licensee::ParkPlace,
0x56 => Licensee::LJN,
0x57 => Licensee::Matchbox,
0x59 => Licensee::MiltonBradleyCompany,
0x5a => Licensee::Mindscape,
0x5b => Licensee::Romstar,
0x5c => Licensee::NaxatSoft,
0x5d => Licensee::Tradewest,
0x60 => Licensee::TitusInteractive,
0x61 => Licensee::VirginGamesLtd,
0x67 => Licensee::OceanSoftware,
0x69 => Licensee::EAElectronicArts,
0x6e => Licensee::EliteSystems2,
0x6f => Licensee::ElectroBrain,
0x70 => Licensee::Infogrames,
0x71 => Licensee::InterplayEntertainment,
0x72 => Licensee::Broderbund,
0x73 => Licensee::SculpturedSoftware,
0x75 => Licensee::TheSalesCurveLimited,
0x78 => Licensee::THQ,
0x79 => Licensee::Accolade,
0x7a => Licensee::TriffixEntertainment,
0x7c => Licensee::Microprose,
0x7f => Licensee::Kemco,
0x80 => Licensee::MisawaEntertainment,
0x83 => Licensee::Lozc,
0x86 => Licensee::TokumaShoten,
0x8b => Licensee::BulletProofSoftware,
0x8c => Licensee::VicTokai,
0x8e => Licensee::Ape,
0x8f => Licensee::IMax,
0x91 => Licensee::Chunsoft,
0x92 => Licensee::VideoSystem,
0x93 => Licensee::TsubarayaProductions,
0x95 => Licensee::Varie,
0x96 => Licensee::YonezawaSpal,
0x97 => Licensee::Kemco,
0x99 => Licensee::Arc,
0x9a => Licensee::NihonBussan,
0x9b => Licensee::Tecmo,
0x9c => Licensee::Imagineer,
0x9d => Licensee::Banpresto,
0x9f => Licensee::Nova,
0xa1 => Licensee::HoriElectric,
0xa2 => Licensee::Bandai,
0xa4 => Licensee::Konami,
0xa6 => Licensee::Kawada,
0xa7 => Licensee::Takara,
0xa9 => Licensee::TechnosJapan,
0xaa => Licensee::Broderbund,
0xac => Licensee::ToeiAnimation,
0xad => Licensee::Toho,
0xaf => Licensee::Namco,
0xb0 => Licensee::AcclaimEntertainment,
0xb1 => Licensee::ASCIICorporationOrNexsoft,
0xb2 => Licensee::Bandai,
0xb4 => Licensee::SquareEnix,
0xb6 => Licensee::HALLaboratory,
0xb7 => Licensee::SNK,
0xb9 => Licensee::PonyCanyon,
0xba => Licensee::CultureBrain,
0xbb => Licensee::Sunsoft,
0xbd => Licensee::SonyImagesoft,
0xbf => Licensee::SammyCorporation,
0xc0 => Licensee::Taito,
0xc2 => Licensee::Kemco,
0xc3 => Licensee::Square,
0xc4 => Licensee::TokumaShoten,
0xc5 => Licensee::DataEast,
0xc6 => Licensee::Tonkinhouse,
0xc8 => Licensee::Koei,
0xc9 => Licensee::UFL,
0xca => Licensee::Ultra,
0xcb => Licensee::Vap,
0xcc => Licensee::UseCorporation,
0xcd => Licensee::Meldac,
0xce => Licensee::PonyCanyon,
0xcf => Licensee::Angel,
0xd0 => Licensee::Taito,
0xd1 => Licensee::Sofel,
0xd2 => Licensee::Quest,
0xd3 => Licensee::SigmaEnterprises,
0xd4 => Licensee::ASKKodanshaCo,
0xd6 => Licensee::NaxatSoft,
0xd7 => Licensee::CopyaSystem,
0xd9 => Licensee::Banpresto,
0xda => Licensee::Tomy,
0xdb => Licensee::LJN,
0xdd => Licensee::NCS,
0xde => Licensee::Human,
0xdf => Licensee::Altron,
0xe0 => Licensee::Jaleco,
0xe1 => Licensee::TowaChiki,
0xe2 => Licensee::Yutaka,
0xe3 => Licensee::Varie,
0xe5 => Licensee::Epcoh,
0xe7 => Licensee::Athena,
0xe8 => Licensee::AsmikAceEntertainment,
0xe9 => Licensee::Natsume,
0xea => Licensee::KingRecords,
0xeb => Licensee::Atlus,
0xec => Licensee::EpicSonyRecords,
0xee => Licensee::IGS,
0xf0 => Licensee::AWave,
0xf3 => Licensee::ExtremeEntertainment,
0xff => Licensee::LJN,
_ => Licensee::Unknown,
};
if licensee == Licensee::NewLicensee {
let new_code_s = std::str::from_utf8(new_code).unwrap_or("");
licensee = match new_code_s {
"00" => Licensee::None,
"01" => Licensee::NintendoResearchDevelopment1,
"08" => Licensee::Capcom,
"13" => Licensee::EAElectronicArts,
"18" => Licensee::HudsonSoft,
"19" => Licensee::BAI,
"20" => Licensee::KSS,
"22" => Licensee::PlanningOfficeWADA,
"24" => Licensee::PCMComplete,
"25" => Licensee::SanX,
"28" => Licensee::Kemco,
"29" => Licensee::SETACorporation,
"30" => Licensee::Viacom,
"31" => Licensee::Nintendo,
"32" => Licensee::Bandai,
"33" => Licensee::OceanSoftwareAcclaimEntertainment,
"34" => Licensee::Konami,
"35" => Licensee::HectorSoft,
"37" => Licensee::Taito,
"38" => Licensee::HudsonSoft,
"39" => Licensee::Banpresto,
"41" => Licensee::UbiSoft,
"42" => Licensee::Atlus,
"44" => Licensee::MalibuInteractive,
"46" => Licensee::Angel,
"47" => Licensee::BulletProofSoftware,
"49" => Licensee::Irem,
"50" => Licensee::Absolute,
"51" => Licensee::AcclaimEntertainment,
"52" => Licensee::Activision,
"53" => Licensee::SammyUSACorporation,
"54" => Licensee::Konami,
"55" => Licensee::HiTechExpressions,
"56" => Licensee::LJN,
"57" => Licensee::Matchbox,
"58" => Licensee::Mattel,
"59" => Licensee::MiltonBradleyCompany,
"60" => Licensee::TitusInteractive,
"61" => Licensee::VirginGamesLtd,
"64" => Licensee::LucasfilmGames,
"67" => Licensee::OceanSoftware,
"69" => Licensee::EAElectronicArts,
"70" => Licensee::Infogrames,
"71" => Licensee::InterplayEntertainment,
"72" => Licensee::Broderbund,
"73" => Licensee::SculpturedSoftware,
"75" => Licensee::TheSalesCurveLimited,
"78" => Licensee::THQ,
"79" => Licensee::Accolade,
"80" => Licensee::MisawaEntertainment,
"83" => Licensee::Lozc,
"86" => Licensee::TokumaShoten,
"87" => Licensee::TsukudaOriginal,
"91" => Licensee::Chunsoft,
"92" => Licensee::VideoSystem,
"93" => Licensee::OceanSoftwareAcclaimEntertainment,
"95" => Licensee::Varie,
"96" => Licensee::YonezawaSpal,
"97" => Licensee::Kaneko,
"99" => Licensee::PackInVideo,
"9H" => Licensee::BottomUp,
"A4" => Licensee::KonamiYuGiOh,
"BL" => Licensee::MTO,
"DK" => Licensee::Kodansha,
_ => Licensee::Unknown,
}
}
licensee
}
pub fn description(&self) -> &'static str {
match self {
Licensee::Unknown => "Unknown",
Licensee::None => "None",
Licensee::Nintendo => "Nintendo",
Licensee::Capcom => "Capcom",
Licensee::HOTB => "HOT-B",
Licensee::Jaleco => "Jaleco",
Licensee::CoconutsJapan => "Coconuts Japan",
Licensee::EliteSystems => "Elite Systems",
Licensee::EAElectronicArts => "EA (Electronic Arts)",
Licensee::HudsonSoft => "Hudson Soft",
Licensee::ITCEntertainment => "ITC Entertainment",
Licensee::Yanoman => "Yanoman",
Licensee::JapanClary => "Japan Clary",
Licensee::VirginGamesLtd => "Virgin Games Ltd.",
Licensee::PCMComplete => "PCM Complete",
Licensee::SanX => "San-X",
Licensee::Kemco => "Kemco",
Licensee::SETACorporation => "SETA Corporation",
Licensee::Infogrames => "Infogrames",
Licensee::Bandai => "Bandai",
Licensee::NewLicensee => "Indicates that the New licensee code should be used instead.",
Licensee::Konami => "Konami",
Licensee::HectorSoft => "HectorSoft",
Licensee::Banpresto => "Banpresto",
Licensee::EntertainmentI => ".Entertainment i",
Licensee::Gremlin => "Gremlin",
Licensee::UbiSoft => "Ubi Soft",
Licensee::Atlus => "Atlus",
Licensee::MalibuInteractive => "Malibu Interactive",
Licensee::Angel => "Angel",
Licensee::SpectrumHoloby => "Spectrum Holoby",
Licensee::Irem => "Irem",
Licensee::USGold => "U.S. Gold",
Licensee::Absolute => "Absolute",
Licensee::AcclaimEntertainment => "Acclaim Entertainment",
Licensee::Activision => "Activision",
Licensee::SammyUSACorporation => "Sammy USA Corporation",
Licensee::GameTek => "GameTek",
Licensee::ParkPlace => "Park Place",
Licensee::LJN => "LJN",
Licensee::Matchbox => "Matchbox",
Licensee::MiltonBradleyCompany => "Milton Bradley Company",
Licensee::Mindscape => "Mindscape",
Licensee::Romstar => "Romstar",
Licensee::NaxatSoft => "Naxat Soft",
Licensee::Tradewest => "Tradewest",
Licensee::TitusInteractive => "Titus Interactive",
Licensee::OceanSoftware => "Ocean Software",
Licensee::EliteSystems2 => "Elite Systems",
Licensee::ElectroBrain => "Electro Brain",
Licensee::InterplayEntertainment => "Interplay Entertainment",
Licensee::Broderbund => "Broderbund",
Licensee::SculpturedSoftware => "Sculptured Software",
Licensee::TheSalesCurveLimited => "The Sales Curve Limited",
Licensee::THQ => "THQ",
Licensee::Accolade => "Accolade",
Licensee::TriffixEntertainment => "Triffix Entertainment",
Licensee::Microprose => "Microprose",
Licensee::MisawaEntertainment => "Misawa Entertainment",
Licensee::Lozc => "Lozc",
Licensee::TokumaShoten => "Tokuma Shoten",
Licensee::BulletProofSoftware => "Bullet-Proof Software",
Licensee::VicTokai => "Vic Tokai",
Licensee::Ape => "Ape",
Licensee::IMax => "I’Max",
Licensee::Chunsoft => "Chunsoft Co.",
Licensee::VideoSystem => "Video System",
Licensee::TsubarayaProductions => "Tsubaraya Productions",
Licensee::Varie => "Varie",
Licensee::YonezawaSpal => "Yonezawa/S’Pal",
Licensee::Arc => "Arc",
Licensee::NihonBussan => "Nihon Bussan",
Licensee::Tecmo => "Tecmo",
Licensee::Imagineer => "Imagineer",
Licensee::Nova => "Nova",
Licensee::HoriElectric => "Hori Electric",
Licensee::Kawada => "Kawada",
Licensee::Takara => "Takara",
Licensee::TechnosJapan => "Technos Japan",
Licensee::ToeiAnimation => "Toei Animation",
Licensee::Toho => "Toho",
Licensee::Namco => "Namco",
Licensee::ASCIICorporationOrNexsoft => "ASCII Corporation or Nexsoft",
Licensee::SquareEnix => "Square Enix",
Licensee::HALLaboratory => "HAL Laboratory",
Licensee::SNK => "SNK",
Licensee::PonyCanyon => "Pony Canyon",
Licensee::CultureBrain => "Culture Brain",
Licensee::Sunsoft => "Sunsoft",
Licensee::SonyImagesoft => "Sony Imagesoft",
Licensee::SammyCorporation => "Sammy Corporation",
Licensee::Taito => "Taito",
Licensee::Square => "Square",
Licensee::DataEast => "Data East",
Licensee::Tonkinhouse => "Tonkinhouse",
Licensee::Koei => "Koei",
Licensee::UFL => "UFL",
Licensee::Ultra => "Ultra",
Licensee::Vap => "Vap",
Licensee::UseCorporation => "Use Corporation",
Licensee::Meldac => "Meldac",
Licensee::PoneyCanyon => "Pony Canyon",
Licensee::Sofel => "Sofel",
Licensee::Quest => "Quest",
Licensee::SigmaEnterprises => "Sigma Enterprises",
Licensee::ASKKodanshaCo => "ASK Kodansha Co.",
Licensee::CopyaSystem => "Copya System",
Licensee::Tomy => "Tomy",
Licensee::NCS => "NCS",
Licensee::Human => "Human",
Licensee::Altron => "Altron",
Licensee::TowaChiki => "Towa Chiki",
Licensee::Yutaka => "Yutaka",
Licensee::Epcoh => "Epcoh",
Licensee::Athena => "Athena",
Licensee::AsmikAceEntertainment => "Asmik Ace Entertainment",
Licensee::Natsume => "Natsume",
Licensee::KingRecords => "King Records",
Licensee::EpicSonyRecords => "Epic/Sony Records",
Licensee::IGS => "IGS",
Licensee::AWave => "A Wave",
Licensee::ExtremeEntertainment => "Extreme Entertainment",
Licensee::NintendoResearchDevelopment1 => "Nintendo Research & Development 1",
Licensee::BAI => "B-AI",
Licensee::KSS => "KSS",
Licensee::PlanningOfficeWADA => "Planning Office WADA",
Licensee::Viacom => "Viacom",
Licensee::HiTechExpressions => "Hi Tech Expressions",
Licensee::Mattel => "Mattel",
Licensee::LucasfilmGames => "Lucasfilm Games",
Licensee::TsukudaOriginal => "Tsukuda Original",
Licensee::ChunsoftCo => "Chunsoft Co.",
Licensee::OceanSoftwareAcclaimEntertainment => "Ocean Software/Acclaim Entertainment",
Licensee::Kaneko => "Kaneko",
Licensee::PackInVideo => "Pack-In-Video",
Licensee::BottomUp => "Bottom Up",
Licensee::KonamiYuGiOh => "Konami (Yu-Gi-Oh!)",
Licensee::MTO => "MTO",
Licensee::Kodansha => "Kodansha",
}
}
}
impl Display for Licensee {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.description())
}
}