use std::fmt;
#[non_exhaustive]
#[derive(Debug)]
pub enum Licensee {
None,
Nintendo,
Capcom,
HotB,
Jaleco,
Coconuts,
EliteSystems,
ElectronicArts,
Hudsonsoft,
ItcEntertainment,
Yanoman,
Clary,
Virgin,
Kss,
PcmComplete,
SanX,
KotobukiSystems,
Seta,
Infogrames,
Bandai,
NewLicenseeField,
Konami,
Hector,
Banpresto,
EntertainmentI,
Gremlin,
Ubisoft,
Atlus,
Malibu,
Angel,
SpectrumHoloby,
Irem,
USGold,
Absolute,
Acclaim,
Activision,
AmericanSammy,
Gametek,
ParkPlace,
Ljn,
Matchbox,
MiltonBradley,
Mindscape,
Romstar,
NaxatSoft,
Tradewest,
Titus,
Ocean,
ElectroBrain,
Interplay,
Broderbund,
SculpteredSoft,
TheSalesCurve,
THq,
Accolade,
TriffixEntertainment,
Microprose,
Kemco,
MisawaEntertainment,
Lozc,
TokumaShotenIntermedia,
BulletProofSoftware,
VicTokai,
Ape,
IMax,
ChunSoft,
VideoSystem,
Tsuburava,
Varie,
YonezawaSPal,
Kaneko,
Arc,
NihonBussan,
Tecmo,
Imagineer,
Nova,
HoriElectric,
Kawada,
Takara,
TechnosJapan,
ToeiAnimation,
Toho,
Namco,
AsciiOrNexoft,
Enix,
Hal,
Snk,
PonyCanyon,
CultureBrainO,
Sunsoft,
SonyImagesoft,
Sammy,
Taito,
Squaresoft,
DataEast,
TonkinHouse,
Koei,
Ufl,
Ultra,
Vap,
Use,
Meldac,
PonyCanyonOr,
Sofel,
Quest,
SigmaEnterprises,
AskKodansha,
CopyaSystems,
Tomy,
Ncs,
Human,
Altron,
Towachiki,
Uutaka,
Epoch,
Athena,
Asmik,
Natsume,
KingRecords,
EpicSonyRecords,
Igs,
AWave,
ExtremeEntertainment,
Unknown(u8),
}
impl From<u8> for Licensee {
#[allow(clippy::too_many_lines)]
fn from(data: u8) -> Self {
match data {
0 => Self::None,
1 | 49 => Self::Nintendo,
8 | 56 => Self::Capcom,
9 => Self::HotB,
10 | 224 => Self::Jaleco,
11 => Self::Coconuts,
12 | 110 => Self::EliteSystems,
19 | 105 => Self::ElectronicArts,
20 | 32 => Self::Kss,
24 => Self::Hudsonsoft,
25 => Self::ItcEntertainment,
26 => Self::Yanoman,
29 => Self::Clary,
31 | 74 | 97 => Self::Virgin,
36 => Self::PcmComplete,
37 => Self::SanX,
40 => Self::KotobukiSystems,
41 => Self::Seta,
48 | 112 => Self::Infogrames,
50 | 162 | 178 => Self::Bandai,
51 => Self::NewLicenseeField,
52 | 164 => Self::Konami,
53 => Self::Hector,
57 | 157 | 217 => Self::Banpresto,
60 => Self::EntertainmentI,
62 => Self::Gremlin,
65 => Self::Ubisoft,
66 | 235 => Self::Atlus,
68 | 77 => Self::Malibu,
70 | 207 => Self::Angel,
71 => Self::SpectrumHoloby,
73 => Self::Irem,
79 => Self::USGold,
80 => Self::Absolute,
81 | 176 => Self::Acclaim,
82 => Self::Activision,
83 => Self::AmericanSammy,
84 => Self::Gametek,
85 => Self::ParkPlace,
86 | 219 | 255 => Self::Ljn,
87 => Self::Matchbox,
89 => Self::MiltonBradley,
90 => Self::Mindscape,
91 => Self::Romstar,
92 | 214 => Self::NaxatSoft,
93 => Self::Tradewest,
96 => Self::Titus,
103 => Self::Ocean,
111 => Self::ElectroBrain,
113 => Self::Interplay,
114 | 170 => Self::Broderbund,
115 => Self::SculpteredSoft,
117 => Self::TheSalesCurve,
120 => Self::THq,
121 => Self::Accolade,
122 => Self::TriffixEntertainment,
124 => Self::Microprose,
127 | 194 => Self::Kemco,
128 => Self::MisawaEntertainment,
131 => Self::Lozc,
134 | 196 => Self::TokumaShotenIntermedia,
139 => Self::BulletProofSoftware,
140 => Self::VicTokai,
142 => Self::Ape,
143 => Self::IMax,
145 => Self::ChunSoft,
146 => Self::VideoSystem,
147 => Self::Tsuburava,
149 | 227 => Self::Varie,
150 => Self::YonezawaSPal,
151 => Self::Kaneko,
153 => Self::Arc,
154 => Self::NihonBussan,
155 => Self::Tecmo,
156 => Self::Imagineer,
159 => Self::Nova,
161 => Self::HoriElectric,
166 => Self::Kawada,
167 => Self::Takara,
169 => Self::TechnosJapan,
172 => Self::ToeiAnimation,
173 => Self::Toho,
175 => Self::Namco,
177 => Self::AsciiOrNexoft,
180 => Self::Enix,
182 => Self::Hal,
183 => Self::Snk,
185 => Self::PonyCanyon,
186 => Self::CultureBrainO,
187 => Self::Sunsoft,
189 => Self::SonyImagesoft,
191 => Self::Sammy,
192 | 208 => Self::Taito,
195 => Self::Squaresoft,
197 => Self::DataEast,
198 => Self::TonkinHouse,
200 => Self::Koei,
201 => Self::Ufl,
202 => Self::Ultra,
203 => Self::Vap,
204 => Self::Use,
205 => Self::Meldac,
206 => Self::PonyCanyonOr,
209 => Self::Sofel,
210 => Self::Quest,
211 => Self::SigmaEnterprises,
212 => Self::AskKodansha,
215 => Self::CopyaSystems,
218 => Self::Tomy,
221 => Self::Ncs,
222 => Self::Human,
223 => Self::Altron,
225 => Self::Towachiki,
226 => Self::Uutaka,
229 => Self::Epoch,
231 => Self::Athena,
232 => Self::Asmik,
233 => Self::Natsume,
234 => Self::KingRecords,
236 => Self::EpicSonyRecords,
238 => Self::Igs,
240 => Self::AWave,
243 => Self::ExtremeEntertainment,
_ => Self::Unknown(data),
}
}
}
impl fmt::Display for Licensee {
#[allow(clippy::too_many_lines)]
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
match self {
Self::None => write!(fmt, "None")?,
Self::Nintendo => write!(fmt, "Nintendo")?,
Self::Capcom => write!(fmt, "Capcom")?,
Self::HotB => write!(fmt, "HOT-B")?,
Self::Jaleco => write!(fmt, "Jaleco")?,
Self::Coconuts => write!(fmt, "Coconuts Japan")?,
Self::EliteSystems => write!(fmt, "Elite Systems")?,
Self::ElectronicArts => write!(fmt, "EA (Electronic Arts)")?,
Self::Hudsonsoft => write!(fmt, "Hudson Soft")?,
Self::ItcEntertainment => write!(fmt, "ITC Entertainment")?,
Self::Yanoman => write!(fmt, "Yanoman")?,
Self::Clary => write!(fmt, "Japan Clary")?,
Self::Virgin => write!(fmt, "Virgin Games Ltd.")?,
Self::Kss => write!(fmt, "KSS")?,
Self::PcmComplete => write!(fmt, "PCM Complete")?,
Self::SanX => write!(fmt, "San-X")?,
Self::KotobukiSystems | Self::Kemco => write!(fmt, "Kemco")?,
Self::Seta => write!(fmt, "SETA Corporation")?,
Self::Infogrames => write!(fmt, "Infogrames")?,
Self::Bandai => write!(fmt, "Bandai")?,
Self::NewLicenseeField => write!(fmt, "Check New Licensee Field")?,
Self::Konami => write!(fmt, "Konami")?,
Self::Hector => write!(fmt, "HectorSoft")?,
Self::Banpresto => write!(fmt, "Banpresto")?,
Self::EntertainmentI => write!(fmt, ".Entertainment i")?,
Self::Gremlin => write!(fmt, "Gremlin")?,
Self::Ubisoft => write!(fmt, "Ubi Soft")?,
Self::Atlus => write!(fmt, "Atlus")?,
Self::Malibu => write!(fmt, "Malibu Interactive")?,
Self::Angel => write!(fmt, "Angel")?,
Self::SpectrumHoloby => write!(fmt, "Spectrum Holoby")?,
Self::Irem => write!(fmt, "Irem")?,
Self::USGold => write!(fmt, "U.S. Gold")?,
Self::Absolute => write!(fmt, "Absolute")?,
Self::Acclaim => write!(fmt, "Acclaim Entertainment")?,
Self::Activision => write!(fmt, "Activision")?,
Self::AmericanSammy => write!(fmt, "Sammy USA Corporation")?,
Self::Gametek => write!(fmt, "GameTek")?,
Self::ParkPlace => write!(fmt, "Park Place")?,
Self::Ljn => write!(fmt, "LJN")?,
Self::Matchbox => write!(fmt, "Matchbox")?,
Self::MiltonBradley => write!(fmt, "Milton Bradley Company")?,
Self::Mindscape => write!(fmt, "Mindscape")?,
Self::Romstar => write!(fmt, "Romstar")?,
Self::NaxatSoft => write!(fmt, "Naxat Soft")?,
Self::Tradewest => write!(fmt, "Tradewest")?,
Self::Titus => write!(fmt, "Titus Interactive")?,
Self::Ocean => write!(fmt, "Ocean Software")?,
Self::ElectroBrain => write!(fmt, "Electro Brain")?,
Self::Interplay => write!(fmt, "Interplay Entertainment")?,
Self::Broderbund => write!(fmt, "Broderbund")?,
Self::SculpteredSoft => write!(fmt, "Sculptured Software")?,
Self::TheSalesCurve => write!(fmt, "The Sales Curve Limited")?,
Self::THq => write!(fmt, "THQ")?,
Self::Accolade => write!(fmt, "Accolade")?,
Self::TriffixEntertainment => write!(fmt, "Triffix Entertainment")?,
Self::Microprose => write!(fmt, "Microprose")?,
Self::MisawaEntertainment => write!(fmt, "Misawa Entertainment")?,
Self::Lozc => write!(fmt, "Lozc")?,
Self::TokumaShotenIntermedia => write!(fmt, "Tokuma Shoten")?,
Self::BulletProofSoftware => write!(fmt, "Bullet-Proof Software")?,
Self::VicTokai => write!(fmt, "Vic Tokai")?,
Self::Ape => write!(fmt, "Ape")?,
Self::IMax => write!(fmt, "I’Max")?,
Self::ChunSoft => write!(fmt, "Chunsoft Co.")?,
Self::VideoSystem => write!(fmt, "Video System")?,
Self::Tsuburava => write!(fmt, "Tsubaraya Productions")?,
Self::Varie => write!(fmt, "Varie")?,
Self::YonezawaSPal => write!(fmt, "Yonezawa/S’Pal")?,
Self::Kaneko => write!(fmt, "Kaneco")?,
Self::Arc => write!(fmt, "Arc")?,
Self::NihonBussan => write!(fmt, "Nihon Bussan")?,
Self::Tecmo => write!(fmt, "Tecmo")?,
Self::Imagineer => write!(fmt, "Imagineer")?,
Self::Nova => write!(fmt, "Nova")?,
Self::HoriElectric => write!(fmt, "Hori Electric")?,
Self::Kawada => write!(fmt, "Kawada")?,
Self::Takara => write!(fmt, "Takara")?,
Self::TechnosJapan => write!(fmt, "Technos Japan")?,
Self::ToeiAnimation => write!(fmt, "Toei Animation")?,
Self::Toho => write!(fmt, "Toho")?,
Self::Namco => write!(fmt, "Namco")?,
Self::AsciiOrNexoft => write!(fmt, "ASCII Corporation or Nexsoft")?,
Self::Enix => write!(fmt, "Square Enix")?,
Self::Hal => write!(fmt, "HAL Laboratory")?,
Self::Snk => write!(fmt, "SNK")?,
Self::PonyCanyon | Self::PonyCanyonOr => write!(fmt, "Pony Canyon")?,
Self::CultureBrainO => write!(fmt, "Culture Brain")?,
Self::Sunsoft => write!(fmt, "Sunsoft")?,
Self::SonyImagesoft => write!(fmt, "Sony Imagesoft")?,
Self::Sammy => write!(fmt, "Sammy Corporation")?,
Self::Taito => write!(fmt, "Taito")?,
Self::Squaresoft => write!(fmt, "Square")?,
Self::DataEast => write!(fmt, "Data East")?,
Self::TonkinHouse => write!(fmt, "Tonkinhouse")?,
Self::Koei => write!(fmt, "Koei")?,
Self::Ufl => write!(fmt, "UFL")?,
Self::Ultra => write!(fmt, "Ultra")?,
Self::Vap => write!(fmt, "Vap")?,
Self::Use => write!(fmt, "Use Corporation")?,
Self::Meldac => write!(fmt, "Meldac")?,
Self::Sofel => write!(fmt, "Sofel")?,
Self::Quest => write!(fmt, "Quest")?,
Self::SigmaEnterprises => write!(fmt, "Sigma Enterprises")?,
Self::AskKodansha => write!(fmt, "ASK Kodansha Co.")?,
Self::CopyaSystems => write!(fmt, "Copya System")?,
Self::Tomy => write!(fmt, "Tomy")?,
Self::Ncs => write!(fmt, "NCS")?,
Self::Human => write!(fmt, "Human")?,
Self::Altron => write!(fmt, "Altron")?,
Self::Towachiki => write!(fmt, "Towa Chiki")?,
Self::Uutaka => write!(fmt, "Yutaka")?,
Self::Epoch => write!(fmt, "Epcoh")?,
Self::Athena => write!(fmt, "Athena")?,
Self::Asmik => write!(fmt, "Asmik Ace Entertainment")?,
Self::Natsume => write!(fmt, "Natsume")?,
Self::KingRecords => write!(fmt, "King Records")?,
Self::EpicSonyRecords => write!(fmt, "Epic/Sony Records")?,
Self::Igs => write!(fmt, "IGS")?,
Self::AWave => write!(fmt, "A Wave")?,
Self::ExtremeEntertainment => write!(fmt, "Extreme Entertainment")?,
Self::Unknown(data) => write!(fmt, "Unknown {data}")?,
}
Ok(())
}
}
#[non_exhaustive]
#[derive(Debug)]
pub enum NewLicensee {
None,
Nintendo,
Capcom,
GameFreak,
ElectronicArts,
Hudsonsoft,
BAi,
Kss,
Pow,
PcmComplete,
SanX,
KemcoJapan,
Seta,
Viacom,
Bandia,
OceanAcclaim,
Konami,
Hector,
Taito,
Hudson,
Banpresto,
UbiSoft,
Atlus,
Malibu,
Angel,
PulletProof,
Irem,
Absolute,
Acclaim,
Activision,
AmericanSammy,
HiTechEntertainment,
Ljn,
Matchbox,
Mattel,
MiltonBradley,
Titus,
Virgin,
Lucasarts,
Ocean,
Infogrames,
Interplay,
Broderbund,
Sculptured,
Sci,
THq,
Accolade,
Misawa,
Lozc,
TokumaShotenI,
TsukudaOri,
ChunSoft,
VideoSystem,
Varie,
YonezawaSPal,
Kaneko,
PackInSoft,
Unknown(u8),
}
impl From<u8> for NewLicensee {
fn from(data: u8) -> Self {
match data {
0 => Self::None,
1 | 49 => Self::Nintendo,
8 => Self::Capcom,
16 => Self::GameFreak,
19 | 105 => Self::ElectronicArts,
24 => Self::Hudsonsoft,
25 => Self::BAi,
32 => Self::Kss,
34 => Self::Pow,
36 => Self::PcmComplete,
37 => Self::SanX,
40 => Self::KemcoJapan,
41 => Self::Seta,
48 => Self::Viacom,
50 => Self::Bandia,
51 | 147 => Self::OceanAcclaim,
52 | 84 => Self::Konami,
53 => Self::Hector,
55 => Self::Taito,
56 => Self::Hudson,
57 => Self::Banpresto,
65 => Self::UbiSoft,
66 => Self::Atlus,
68 => Self::Malibu,
70 => Self::Angel,
71 => Self::PulletProof,
73 => Self::Irem,
80 => Self::Absolute,
81 => Self::Acclaim,
82 => Self::Activision,
83 => Self::AmericanSammy,
85 => Self::HiTechEntertainment,
86 => Self::Ljn,
87 => Self::Matchbox,
88 => Self::Mattel,
89 => Self::MiltonBradley,
96 => Self::Titus,
97 => Self::Virgin,
100 => Self::Lucasarts,
103 => Self::Ocean,
112 => Self::Infogrames,
113 => Self::Interplay,
114 => Self::Broderbund,
115 => Self::Sculptured,
117 => Self::Sci,
120 => Self::THq,
121 => Self::Accolade,
128 => Self::Misawa,
131 => Self::Lozc,
134 => Self::TokumaShotenI,
135 => Self::TsukudaOri,
145 => Self::ChunSoft,
146 => Self::VideoSystem,
149 => Self::Varie,
150 => Self::YonezawaSPal,
151 => Self::Kaneko,
153 => Self::PackInSoft,
_ => Self::Unknown(data),
}
}
}
impl fmt::Display for NewLicensee {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
match self {
Self::None => write!(fmt, "None")?,
Self::Nintendo => write!(fmt, "Nintendo")?,
Self::Capcom => write!(fmt, "Capcom")?,
Self::GameFreak => write!(fmt, "Game Freak")?,
Self::ElectronicArts => write!(fmt, "EA (Electronic Arts)")?,
Self::Hudsonsoft | Self::Hudson => write!(fmt, "Hudson Soft")?,
Self::BAi => write!(fmt, "B-AI")?,
Self::Kss => write!(fmt, "KSS")?,
Self::Pow => write!(fmt, "Planning Office WADA")?,
Self::PcmComplete => write!(fmt, "PCM Complete")?,
Self::SanX => write!(fmt, "San-X")?,
Self::KemcoJapan => write!(fmt, "Kemco")?,
Self::Seta => write!(fmt, "SETA Corporation")?,
Self::Viacom => write!(fmt, "Viacom")?,
Self::Bandia => write!(fmt, "Bandai")?,
Self::OceanAcclaim => write!(fmt, "Ocean Software/Acclaim Entertainment")?,
Self::Konami => write!(fmt, "Konami")?,
Self::Hector => write!(fmt, "HectorSoft")?,
Self::Taito => write!(fmt, "Taito")?,
Self::Banpresto => write!(fmt, "Banpresto")?,
Self::UbiSoft => write!(fmt, "Ubi Soft1")?,
Self::Atlus => write!(fmt, "Atlus")?,
Self::Malibu => write!(fmt, "Malibu Interactive")?,
Self::Angel => write!(fmt, "Angel")?,
Self::PulletProof => write!(fmt, "Bullet-Proof Software2")?,
Self::Irem => write!(fmt, "Irem")?,
Self::Absolute => write!(fmt, "Absolute")?,
Self::Acclaim => write!(fmt, "Acclaim Entertainment")?,
Self::Activision => write!(fmt, "Activision")?,
Self::AmericanSammy => write!(fmt, "Sammy USA Corporation")?,
Self::HiTechEntertainment => write!(fmt, "Hi Tech Expressions")?,
Self::Ljn => write!(fmt, "LJN")?,
Self::Matchbox => write!(fmt, "Matchbox")?,
Self::Mattel => write!(fmt, "Mattel")?,
Self::MiltonBradley => write!(fmt, "Milton Bradley Company")?,
Self::Titus => write!(fmt, "Titus Interactive")?,
Self::Virgin => write!(fmt, "Virgin Games Ltd.3")?,
Self::Lucasarts => write!(fmt, "Lucasfilm Games4")?,
Self::Ocean => write!(fmt, "Ocean Software")?,
Self::Infogrames => write!(fmt, "Infogrames5")?,
Self::Interplay => write!(fmt, "Interplay Entertainment")?,
Self::Broderbund => write!(fmt, "Broderbund")?,
Self::Sculptured => write!(fmt, "Sculptured Software6")?,
Self::Sci => write!(fmt, "The Sales Curve Limited7")?,
Self::THq => write!(fmt, "THQ")?,
Self::Accolade => write!(fmt, "Accolade")?,
Self::Misawa => write!(fmt, "Misawa Entertainment")?,
Self::Lozc => write!(fmt, "lozc")?,
Self::TokumaShotenI => write!(fmt, "Tokuma Shoten")?,
Self::TsukudaOri => write!(fmt, "Tsukuda Original")?,
Self::ChunSoft => write!(fmt, "Chunsoft Co.8")?,
Self::VideoSystem => write!(fmt, "Video System")?,
Self::Varie => write!(fmt, "Varie")?,
Self::YonezawaSPal => write!(fmt, "Yonezawa/s’pal")?,
Self::Kaneko => write!(fmt, "Kaneko")?,
Self::PackInSoft => write!(fmt, "Pack-In-Video")?,
Self::Unknown(data) => write!(fmt, "Unknown {data}")?,
}
Ok(())
}
}