openMSX
RomInfo.cc
Go to the documentation of this file.
1 #include "MinimalPerfectHash.hh"
2 #include "RomInfo.hh"
3 #include "StringOp.hh"
4 #include "ranges.hh"
5 #include "stl.hh"
6 #include "unreachable.hh"
7 #include "view.hh"
8 #include <array>
9 #include <cassert>
10 
11 using std::string_view;
12 
13 namespace openmsx {
14 
15 // This contains extra information for each RomType. This structure only
16 // contains the primary (non-alias) romtypes.
17 struct RomTypeInfo {
18  unsigned blockSize;
19  string_view name;
20  string_view description;
21 };
22 static constexpr auto romTypeInfoArray = [] {
23  std::array<RomTypeInfo, RomType::ROM_LAST> r = {};
24 
25  // Generic ROM types that don't exist in real ROMs
26  // (should not occur in any database!)
27  r[ROM_GENERIC_8KB] = {0x2000, "8kB", "Generic 8kB"};
28  r[ROM_GENERIC_16KB] = {0x4000, "16kB", "Generic 16kB"};
29 
30  // ROM mapper types for normal software (mainly games)
31  r[ROM_KONAMI] = {0x2000, "Konami", "Konami MegaROM"};
32  r[ROM_KONAMI_SCC] = {0x2000, "KonamiSCC", "Konami with SCC"};
33  r[ROM_KBDMASTER] = {0x4000, "KeyboardMaster", "Konami Keyboard Master with VLM5030"}; // officially plain 16K
34  r[ROM_ASCII8] = {0x2000, "ASCII8", "ASCII 8kB"};
35  r[ROM_ASCII16] = {0x4000, "ASCII16", "ASCII 16kB"};
36  r[ROM_R_TYPE] = {0x4000, "R-Type", "R-Type"};
37  r[ROM_CROSS_BLAIM] = {0x4000, "CrossBlaim", "Cross Blaim"};
38  r[ROM_HARRY_FOX] = {0x4000, "HarryFox", "Harry Fox"};
39  r[ROM_HALNOTE] = {0x2000, "Halnote", "Halnote"};
40  r[ROM_ZEMINA25IN1] = {0x2000, "Zemina25in1", "Zemina 25 in 1"};
41  r[ROM_ZEMINA80IN1] = {0x2000, "Zemina80in1", "Zemina 80 in 1"};
42  r[ROM_ZEMINA90IN1] = {0x2000, "Zemina90in1", "Zemina 90 in 1"};
43  r[ROM_ZEMINA126IN1] = {0x2000, "Zemina126in1", "Zemina 126 in 1"};
44  r[ROM_ASCII16_2] = {0x4000, "ASCII16SRAM2", "ASCII 16kB with 2kB SRAM"};
45  r[ROM_ASCII16_8] = {0x4000, "ASCII16SRAM8", "ASCII 16kB with 8kB SRAM"};
46  r[ROM_ASCII8_8] = {0x2000, "ASCII8SRAM8", "ASCII 8kB with 8kB SRAM"};
47  r[ROM_ASCII8_32] = {0x2000, "ASCII8SRAM32", "ASCII 8kB with 32kB SRAM"};
48  r[ROM_ASCII8_2] = {0x2000, "ASCII8SRAM2", "ASCII 8kB with 2kB SRAM"};
49  r[ROM_KOEI_8] = {0x2000, "KoeiSRAM8", "Koei with 8kB SRAM"};
50  r[ROM_KOEI_32] = {0x2000, "KoeiSRAM32", "Koei with 32kB SRAM"};
51  r[ROM_WIZARDRY] = {0x2000, "Wizardry", "Wizardry"};
52  r[ROM_GAME_MASTER2] = {0x1000, "GameMaster2", "Konami's Game Master 2"};
53  r[ROM_MAJUTSUSHI] = {0x2000, "Majutsushi", "Hai no Majutsushi"};
54  r[ROM_SYNTHESIZER] = {0x4000, "Synthesizer", "Konami's Synthesizer"}; // officially plain 32K
55  r[ROM_PLAYBALL] = {0x4000, "PlayBall", "Sony's PlayBall"}; // officially plain 32K
56  r[ROM_NETTOU_YAKYUU] = {0x2000, "NettouYakyuu", "Nettou Yakuu"};
57  r[ROM_HOLY_QURAN] = {0x2000, "AlQuranDecoded", "Holy Qu'ran (pre-decrypted)"};
58  r[ROM_HOLY_QURAN2] = {0x2000, "AlQuran", "Holy Qu'ran"};
59  r[ROM_PADIAL8] = {0x2000, "Padial8", "Padial 8kB"};
60  r[ROM_PADIAL16] = {0x4000, "Padial16", "Padial 16kB"};
61  r[ROM_SUPERLODERUNNER] = {0x4000, "SuperLodeRunner", "Super Lode Runner"};
62  r[ROM_SUPERSWANGI] = {0x4000, "SuperSwangi", "Super Swangi"};
63  r[ROM_MSXDOS2] = {0x4000, "MSXDOS2", "MSX-DOS2"};
64  r[ROM_MITSUBISHIMLTS2] = {0x2000, "MitsubishiMLTS2", "Mitsubishi ML-TS2 firmware"};
65  r[ROM_MANBOW2] = {0x2000, "Manbow2", "Manbow2"};
66  r[ROM_MANBOW2_2] = {0x2000, "Manbow2_2", "Manbow2 - Second Release"};
67  r[ROM_RBSC_FLASH_KONAMI_SCC]={0x2000,"RBSC_Flash_KonamiSCC","RBSC 2MB flash, Konami SCC mapper"};
68  r[ROM_HAMARAJANIGHT] = {0x2000, "HamarajaNight", "Best of Hamaraja Night"};
69  r[ROM_MEGAFLASHROMSCC] = {0x2000, "MegaFlashRomScc", "Mega Flash ROM SCC"};
70  r[ROM_MATRAINK] = {0x0000, "MatraInk", "Matra Ink"};
71  r[ROM_MATRACOMPILATION]= {0x2000, "MatraCompilation","Matra Compilation"};
72  r[ROM_ARC] = {0x4000, "Arc", "Parallax' ARC"}; // officially plain 32K
73  r[ROM_ROMHUNTERMK2] = {0x0000, "ROMHunterMk2", "ROM Hunter Mk2"};
74  r[ROM_DOOLY] = {0x4000, "Dooly", "Baby Dinosaur Dooly"}; // officially 32K blocksize, but spread over 2 pages
75  r[ROM_MSXTRA] = {0x0000, "MSXtra", "PTC MSXtra"};
76  r[ROM_MSXWRITE] = {0x4000, "MSXWrite", "Japanese MSX Write"};
77  r[ROM_MULTIROM] = {0x0000, "MultiRom", "MultiRom Collection"};
78  r[ROM_RAMFILE] = {0x0000, "RAMFILE", "Tecall MSX RAMFILE"};
79  r[ROM_COLECOMEGACART] = {0x4000, "ColecoMegaCart", "ColecoVision MegaCart"};
80  r[ROM_MEGAFLASHROMSCCPLUS]={0x0000,"MegaFlashRomSccPlus","Mega Flash ROM SCC Plus"};
81  r[ROM_REPRO_CARTRIDGE1]= {0x0000, "ReproCartridgeV1","Repro Cartridge V1"};
82  r[ROM_REPRO_CARTRIDGE2]= {0x0000, "ReproCartridgeV2","Repro Cartridge V2"};
83  r[ROM_KONAMI_ULTIMATE_COLLECTION]={0x0000,"KonamiUltimateCollection","Konami Ultimate Collection"};
84 
85  // ROM mapper types used for system ROMs in machines
86  r[ROM_PANASONIC] = {0x2000, "Panasonic", "Panasonic internal mapper"};
87  r[ROM_NATIONAL] = {0x4000, "National", "National internal mapper"};
88  r[ROM_FSA1FM1] = {0x0000, "FSA1FM1", "Panasonic FS-A1FM internal mapper 1"}; // TODO: romblocks debuggable?
89  r[ROM_FSA1FM2] = {0x2000, "FSA1FM2", "Panasonic FS-A1FM internal mapper 2"};
90  r[ROM_DRAM] = {0x2000, "DRAM", "MSXturboR DRAM"};
91 
92  // Non-mapper ROM types
93  r[ROM_MIRRORED] = {0x2000, "Mirrored", "Plain rom, mirrored (any size)"};
94  r[ROM_MIRRORED0000] = {0x2000, "Mirrored0000", "Plain rom, mirrored start at 0x0000"};
95  r[ROM_MIRRORED4000] = {0x2000, "Mirrored4000", "Plain rom, mirrored start at 0x4000"};
96  r[ROM_MIRRORED8000] = {0x2000, "Mirrored8000", "Plain rom, mirrored start at 0x8000"};
97  r[ROM_MIRROREDC000] = {0x2000, "MirroredC000", "Plain rom, mirrored start at 0xC000"};
98  r[ROM_NORMAL] = {0x2000, "Normal", "Plain rom (any size)"};
99  r[ROM_NORMAL0000] = {0x2000, "Normal0000", "Plain rom start at 0x0000"};
100  r[ROM_NORMAL4000] = {0x2000, "Normal4000", "Plain rom start at 0x4000"};
101  r[ROM_NORMAL8000] = {0x2000, "Normal8000", "Plain rom start at 0x8000"};
102  r[ROM_NORMALC000] = {0x2000, "NormalC000", "Plain rom start at 0xC000"};
103  r[ROM_PAGE0] = {0x2000, "Page0", "Plain 16kB page 0"};
104  r[ROM_PAGE1] = {0x2000, "Page1", "Plain 16kB page 1"};
105  r[ROM_PAGE2] = {0x2000, "Page2", "Plain 16kB page 2 (BASIC)"};
106  r[ROM_PAGE3] = {0x2000, "Page3", "Plain 16kB page 3"};
107  r[ROM_PAGE01] = {0x2000, "Page01", "Plain 32kB page 0-1"};
108  r[ROM_PAGE12] = {0x2000, "Page12", "Plain 32kB page 1-2"};
109  r[ROM_PAGE23] = {0x2000, "Page23", "Plain 32kB page 2-3"};
110  r[ROM_PAGE012] = {0x2000, "Page012", "Plain 48kB page 0-2"};
111  r[ROM_PAGE123] = {0x2000, "Page123", "Plain 48kB page 1-3"};
112  r[ROM_PAGE0123] = {0x2000, "Page0123", "Plain 64kB"};
113  return r;
114 }();
115 
118  std::string_view name;
119 };
120 static constexpr std::array aliasTable = {
122  RomTypeAndName{ROM_GENERIC_8KB, "GenericKonami"}, // probably actually used in a Zemina Box
123  RomTypeAndName{ROM_GENERIC_16KB,"1"},
124  RomTypeAndName{ROM_KONAMI_SCC, "2"},
125  RomTypeAndName{ROM_KONAMI_SCC, "SCC"},
126  RomTypeAndName{ROM_KONAMI_SCC, "KONAMI5"},
127  RomTypeAndName{ROM_KONAMI, "KONAMI4"},
128  RomTypeAndName{ROM_KONAMI, "3"},
129  RomTypeAndName{ROM_ASCII8, "4"},
130  RomTypeAndName{ROM_ASCII16, "5"},
131  RomTypeAndName{ROM_MIRRORED, "64kB"},
132  RomTypeAndName{ROM_MIRRORED, "Plain"},
133  RomTypeAndName{ROM_NORMAL0000, "0x0000"},
134  RomTypeAndName{ROM_NORMAL4000, "0x4000"},
135  RomTypeAndName{ROM_NORMAL8000, "0x8000"},
136  RomTypeAndName{ROM_NORMALC000, "0xC000"},
137  RomTypeAndName{ROM_ASCII16_2, "HYDLIDE2"},
138  RomTypeAndName{ROM_GAME_MASTER2,"RC755"},
139  RomTypeAndName{ROM_NORMAL8000, "ROMBAS"},
140  RomTypeAndName{ROM_R_TYPE, "RTYPE"},
141  RomTypeAndName{ROM_ZEMINA80IN1, "KOREAN80IN1"},
142  RomTypeAndName{ROM_ZEMINA90IN1, "KOREAN90IN1"},
143  RomTypeAndName{ROM_ZEMINA126IN1,"KOREAN126IN1"},
144  RomTypeAndName{ROM_HOLY_QURAN, "HolyQuran"},
145 };
146 
147 static constexpr auto combinedRomTable = [] {
148  constexpr auto N = std::size(romTypeInfoArray) + std::size(aliasTable);
149  std::array<RomTypeAndName, N> result = {};
150  size_t i = 0;
151  for (const auto& e : romTypeInfoArray) {
152  result[i].romType = static_cast<RomType>(i);
153  result[i].name = e.name;
154  ++i;
155  }
156  for (const auto& e : aliasTable) {
157  result[i++] = e;
158  }
159  return result;
160 }();
161 
163  constexpr uint32_t operator()(std::string_view str) const {
164  constexpr uint8_t MASK = ~('a' - 'A'); // case insensitive
165  uint32_t d = 0;
166  for (char c : str) {
167  d = (d ^ (c & MASK)) * 0x01000193;
168  }
169  return d;
170  }
171 };
172 
173 // Construct perfect hash function to lookup RomType by name.
174 static constexpr auto pmh = [] {
175  auto getKey = [](size_t i) { return combinedRomTable[i].name; };
176  return PerfectMinimalHash::create<std::size(combinedRomTable)>(RomTypeNameHash{}, getKey);
177 }();
178 
180 {
181  auto idx = pmh.lookupIndex(name);
182  assert(idx < std::size(combinedRomTable));
183  StringOp::casecmp cmp;
184  if (cmp(combinedRomTable[idx].name, name)) {
185  return combinedRomTable[idx].romType;
186  }
187  return ROM_UNKNOWN;
188 }
189 
190 std::vector<string_view> RomInfo::getAllRomTypes()
191 {
192  return to_vector(view::transform(romTypeInfoArray, [](const auto& r) { return r.name; }));
193 }
194 
196 {
197  return romTypeInfoArray[type].name;
198 }
199 
201 {
202  return romTypeInfoArray[type].description;
203 }
204 
206 {
207  return romTypeInfoArray[type].blockSize;
208 }
209 
210 } // namespace openmsx
openmsx::ROM_PADIAL8
@ ROM_PADIAL8
Definition: RomTypes.hh:63
openmsx::ROM_ASCII8_8
@ ROM_ASCII8_8
Definition: RomTypes.hh:12
openmsx::ROM_PAGE123
@ ROM_PAGE123
Definition: RomTypes.hh:73
openmsx::ROM_SUPERLODERUNNER
@ ROM_SUPERLODERUNNER
Definition: RomTypes.hh:80
openmsx::ROM_MULTIROM
@ ROM_MULTIROM
Definition: RomTypes.hh:55
openmsx::ROM_ZEMINA25IN1
@ ROM_ZEMINA25IN1
Definition: RomTypes.hh:84
openmsx::ROM_MEGAFLASHROMSCCPLUS
@ ROM_MEGAFLASHROMSCCPLUS
Definition: RomTypes.hh:45
openmsx::ROM_PADIAL16
@ ROM_PADIAL16
Definition: RomTypes.hh:64
openmsx::ROM_ASCII8_32
@ ROM_ASCII8_32
Definition: RomTypes.hh:11
openmsx::ROM_ARC
@ ROM_ARC
Definition: RomTypes.hh:8
openmsx::ROM_R_TYPE
@ ROM_R_TYPE
Definition: RomTypes.hh:77
openmsx::RomInfo::getAllRomTypes
static std::vector< std::string_view > getAllRomTypes()
Definition: RomInfo.cc:190
openmsx::RomTypeAndName
Definition: RomInfo.cc:116
openmsx::ROM_NETTOU_YAKYUU
@ ROM_NETTOU_YAKYUU
Definition: RomTypes.hh:57
openmsx::ROM_NORMAL
@ ROM_NORMAL
Definition: RomTypes.hh:58
utf8::unchecked::size
size_t size(std::string_view utf8)
Definition: utf8_unchecked.hh:227
openmsx::ROM_GAME_MASTER2
@ ROM_GAME_MASTER2
Definition: RomTypes.hh:22
openmsx::ROM_NORMAL4000
@ ROM_NORMAL4000
Definition: RomTypes.hh:60
openmsx::ROM_HOLY_QURAN
@ ROM_HOLY_QURAN
Definition: RomTypes.hh:28
openmsx::ROM_ASCII16_8
@ ROM_ASCII16_8
Definition: RomTypes.hh:15
openmsx::ROM_CROSS_BLAIM
@ ROM_CROSS_BLAIM
Definition: RomTypes.hh:17
openmsx::ROM_MIRRORED0000
@ ROM_MIRRORED0000
Definition: RomTypes.hh:47
StringOp::casecmp
Definition: StringOp.hh:68
ranges.hh
openmsx::ROM_ASCII16
@ ROM_ASCII16
Definition: RomTypes.hh:13
openmsx::ROM_MEGAFLASHROMSCC
@ ROM_MEGAFLASHROMSCC
Definition: RomTypes.hh:44
openmsx::ROM_MIRROREDC000
@ ROM_MIRROREDC000
Definition: RomTypes.hh:50
openmsx::ROM_ZEMINA126IN1
@ ROM_ZEMINA126IN1
Definition: RomTypes.hh:87
openmsx::ROM_HOLY_QURAN2
@ ROM_HOLY_QURAN2
Definition: RomTypes.hh:29
openmsx::ROM_DOOLY
@ ROM_DOOLY
Definition: RomTypes.hh:18
openmsx::ROM_SYNTHESIZER
@ ROM_SYNTHESIZER
Definition: RomTypes.hh:82
openmsx::ROM_ASCII16_2
@ ROM_ASCII16_2
Definition: RomTypes.hh:14
openmsx::ROM_MAJUTSUSHI
@ ROM_MAJUTSUSHI
Definition: RomTypes.hh:38
openmsx::ROM_MSXWRITE
@ ROM_MSXWRITE
Definition: RomTypes.hh:54
openmsx::ROM_WIZARDRY
@ ROM_WIZARDRY
Definition: RomTypes.hh:83
openmsx::ROM_MIRRORED
@ ROM_MIRRORED
Definition: RomTypes.hh:46
openmsx::ROM_PAGE2
@ ROM_PAGE2
Definition: RomTypes.hh:68
openmsx::ROM_KOEI_32
@ ROM_KOEI_32
Definition: RomTypes.hh:32
openmsx::ROM_FSA1FM2
@ ROM_FSA1FM2
Definition: RomTypes.hh:21
view::transform
auto transform(Range &&range, UnaryOp op)
Definition: view.hh:306
openmsx::RomTypeNameHash
Definition: RomInfo.cc:162
openmsx::ROM_MIRRORED4000
@ ROM_MIRRORED4000
Definition: RomTypes.hh:48
openmsx::ROM_ZEMINA90IN1
@ ROM_ZEMINA90IN1
Definition: RomTypes.hh:86
openmsx::ROM_NORMAL8000
@ ROM_NORMAL8000
Definition: RomTypes.hh:61
openmsx::RomTypeAndName::romType
RomType romType
Definition: RomInfo.cc:117
openmsx::ROM_MSXDOS2
@ ROM_MSXDOS2
Definition: RomTypes.hh:52
openmsx::ROM_MITSUBISHIMLTS2
@ ROM_MITSUBISHIMLTS2
Definition: RomTypes.hh:51
openmsx::ROM_REPRO_CARTRIDGE2
@ ROM_REPRO_CARTRIDGE2
Definition: RomTypes.hh:36
openmsx::ROM_MANBOW2_2
@ ROM_MANBOW2_2
Definition: RomTypes.hh:40
openmsx::ROM_ASCII8_2
@ ROM_ASCII8_2
Definition: RomTypes.hh:10
openmsx::ROM_MATRAINK
@ ROM_MATRAINK
Definition: RomTypes.hh:42
openmsx::ROM_COLECOMEGACART
@ ROM_COLECOMEGACART
Definition: RomTypes.hh:16
openmsx::ROM_PAGE1
@ ROM_PAGE1
Definition: RomTypes.hh:66
openmsx::ROM_NATIONAL
@ ROM_NATIONAL
Definition: RomTypes.hh:56
openmsx::ROM_MSXTRA
@ ROM_MSXTRA
Definition: RomTypes.hh:53
openmsx::ROM_ROMHUNTERMK2
@ ROM_ROMHUNTERMK2
Definition: RomTypes.hh:79
openmsx::ROM_KONAMI_SCC
@ ROM_KONAMI_SCC
Definition: RomTypes.hh:34
openmsx::ROM_PANASONIC
@ ROM_PANASONIC
Definition: RomTypes.hh:75
openmsx::RomTypeAndName::name
std::string_view name
Definition: RomInfo.cc:118
openmsx::ROM_REPRO_CARTRIDGE1
@ ROM_REPRO_CARTRIDGE1
Definition: RomTypes.hh:35
openmsx::N
constexpr unsigned N
Definition: ResampleHQ.cc:225
openmsx::ROM_PAGE23
@ ROM_PAGE23
Definition: RomTypes.hh:72
openmsx::ROM_NORMAL0000
@ ROM_NORMAL0000
Definition: RomTypes.hh:59
view.hh
openmsx::ROM_HARRY_FOX
@ ROM_HARRY_FOX
Definition: RomTypes.hh:27
openmsx::ROM_RBSC_FLASH_KONAMI_SCC
@ ROM_RBSC_FLASH_KONAMI_SCC
Definition: RomTypes.hh:41
openmsx::ROM_MANBOW2
@ ROM_MANBOW2
Definition: RomTypes.hh:39
openmsx::ROM_KONAMI_ULTIMATE_COLLECTION
@ ROM_KONAMI_ULTIMATE_COLLECTION
Definition: RomTypes.hh:37
openmsx::ROM_PLAYBALL
@ ROM_PLAYBALL
Definition: RomTypes.hh:76
openmsx::ROM_ASCII8
@ ROM_ASCII8
Definition: RomTypes.hh:9
openmsx::RomTypeInfo
Definition: RomInfo.cc:17
openmsx::RomInfo::nameToRomType
static RomType nameToRomType(std::string_view name)
Definition: RomInfo.cc:179
openmsx::RomTypeInfo::name
string_view name
Definition: RomInfo.cc:19
openmsx::ROM_SUPERSWANGI
@ ROM_SUPERSWANGI
Definition: RomTypes.hh:81
openmsx::ROM_RAMFILE
@ ROM_RAMFILE
Definition: RomTypes.hh:78
openmsx::ROM_PAGE012
@ ROM_PAGE012
Definition: RomTypes.hh:70
RomInfo.hh
StringOp.hh
openmsx::ROM_PAGE0
@ ROM_PAGE0
Definition: RomTypes.hh:65
openmsx::RomInfo::getBlockSize
static unsigned getBlockSize(RomType type)
Definition: RomInfo.cc:205
openmsx::ROM_MIRRORED8000
@ ROM_MIRRORED8000
Definition: RomTypes.hh:49
openmsx::ROM_FSA1FM1
@ ROM_FSA1FM1
Definition: RomTypes.hh:20
openmsx::ROM_PAGE0123
@ ROM_PAGE0123
Definition: RomTypes.hh:74
openmsx::RomTypeInfo::description
string_view description
Definition: RomInfo.cc:20
openmsx::RomInfo::getDescription
static std::string_view getDescription(RomType type)
Definition: RomInfo.cc:200
openmsx::ROM_PAGE01
@ ROM_PAGE01
Definition: RomTypes.hh:67
openmsx::ROM_UNKNOWN
@ ROM_UNKNOWN
Definition: RomTypes.hh:90
openmsx::ROM_ZEMINA80IN1
@ ROM_ZEMINA80IN1
Definition: RomTypes.hh:85
openmsx::ROM_KONAMI
@ ROM_KONAMI
Definition: RomTypes.hh:33
stl.hh
openmsx::RomTypeInfo::blockSize
unsigned blockSize
Definition: RomInfo.cc:18
openmsx::ROM_KBDMASTER
@ ROM_KBDMASTER
Definition: RomTypes.hh:30
openmsx::RomTypeNameHash::operator()
constexpr uint32_t operator()(std::string_view str) const
Definition: RomInfo.cc:163
openmsx::ROM_NORMALC000
@ ROM_NORMALC000
Definition: RomTypes.hh:62
unreachable.hh
openmsx::RomType
RomType
Definition: RomTypes.hh:6
openmsx
This file implemented 3 utility functions:
Definition: Autofire.cc:5
openmsx::ROM_GENERIC_8KB
@ ROM_GENERIC_8KB
Definition: RomTypes.hh:23
to_vector
auto to_vector(Range &&range) -> std::vector< detail::ToVectorType< T, decltype(std::begin(range))>>
Definition: stl.hh:316
openmsx::ROM_PAGE12
@ ROM_PAGE12
Definition: RomTypes.hh:69
openmsx::ROM_PAGE3
@ ROM_PAGE3
Definition: RomTypes.hh:71
openmsx::ROM_HAMARAJANIGHT
@ ROM_HAMARAJANIGHT
Definition: RomTypes.hh:26
MinimalPerfectHash.hh
openmsx::ROM_GENERIC_16KB
@ ROM_GENERIC_16KB
Definition: RomTypes.hh:24
openmsx::ROM_MATRACOMPILATION
@ ROM_MATRACOMPILATION
Definition: RomTypes.hh:43
openmsx::RomInfo::romTypeToName
static std::string_view romTypeToName(RomType type)
Definition: RomInfo.cc:195
openmsx::ROM_KOEI_8
@ ROM_KOEI_8
Definition: RomTypes.hh:31
openmsx::ROM_HALNOTE
@ ROM_HALNOTE
Definition: RomTypes.hh:25
openmsx::ROM_DRAM
@ ROM_DRAM
Definition: RomTypes.hh:19