144 std::unique_ptr<MSXDevice> result;
147 result = make_unique<MSXPPI>(conf);
148 }
else if (type ==
"SVIPPI") {
149 result = make_unique<SVIPPI>(conf);
150 }
else if (type ==
"RAM") {
151 result = make_unique<MSXRam>(conf);
152 }
else if (type ==
"VDP") {
153 result = make_unique<VDP>(conf);
154 }
else if (type ==
"E6Timer") {
155 result = make_unique<MSXE6Timer>(conf);
156 }
else if (type ==
"HiResTimer") {
157 result = make_unique<MSXHiResTimer>(conf);
158 }
else if (type ==
one_of(
"ResetStatusRegister",
"F4Device")) {
159 result = make_unique<MSXResetStatusRegister>(conf);
160 }
else if (type ==
"TurboRPause") {
161 result = make_unique<MSXTurboRPause>(conf);
162 }
else if (type ==
"TurboRPCM") {
163 result = make_unique<MSXTurboRPCM>(conf);
164 }
else if (type ==
"S1985") {
165 result = make_unique<MSXS1985>(conf);
166 }
else if (type ==
"S1990") {
167 result = make_unique<MSXS1990>(conf);
168 }
else if (type ==
"ColecoJoystick") {
169 result = make_unique<ColecoJoystickIO>(conf);
170 }
else if (type ==
"SuperGameModule") {
171 result = make_unique<ColecoSuperGameModule>(conf);
172 }
else if (type ==
"SG1000Joystick") {
173 result = make_unique<SG1000JoystickIO>(conf);
174 }
else if (type ==
"SG1000Pause") {
175 result = make_unique<SG1000Pause>(conf);
176 }
else if (type ==
"SC3000PPI") {
177 result = make_unique<SC3000PPI>(conf);
178 }
else if (type ==
"PSG") {
179 result = make_unique<MSXPSG>(conf);
180 }
else if (type ==
"SVIPSG") {
181 result = make_unique<SVIPSG>(conf);
182 }
else if (type ==
"SNPSG") {
183 result = make_unique<SNPSG>(conf);
184 }
else if (type ==
"MSX-MUSIC") {
185 result = make_unique<MSXMusic>(conf);
186 }
else if (type ==
"MSX-MUSIC-WX") {
187 result = make_unique<MSXMusicWX>(conf);
188 }
else if (type ==
"FMPAC") {
189 result = make_unique<MSXFmPac>(conf);
190 }
else if (type ==
"MSX-AUDIO") {
191 result = make_unique<MSXAudio>(conf);
192 }
else if (type ==
"MusicModuleMIDI") {
193 result = make_unique<MusicModuleMIDI>(conf);
194 }
else if (type ==
"JVCMSXMIDI") {
195 result = make_unique<JVCMSXMIDI>(conf);
196 }
else if (type ==
"FACMIDIInterface") {
197 result = make_unique<MSXFacMidiInterface>(conf);
198 }
else if (type ==
"YamahaSFG") {
199 result = make_unique<MSXYamahaSFG>(conf);
200 }
else if (type ==
"MoonSound") {
201 result = make_unique<MSXMoonSound>(conf);
202 }
else if (type ==
"OPL3Cartridge") {
203 result = make_unique<MSXOPL3Cartridge>(conf);
204 }
else if (type ==
"Kanji") {
205 result = make_unique<MSXKanji>(conf);
206 }
else if (type ==
"Bunsetsu") {
207 result = make_unique<MSXBunsetsu>(conf);
208 }
else if (type ==
"MemoryMapper") {
209 result = make_unique<MSXMemoryMapper>(conf);
210 }
else if (type ==
"PanasonicRAM") {
211 result = make_unique<PanasonicRam>(conf);
212 }
else if (type ==
"RTC") {
213 result = make_unique<MSXRTC>(conf);
214 }
else if (type ==
"PasswordCart") {
215 result = make_unique<PasswordCart>(conf);
216 }
else if (type ==
"ROM") {
218 }
else if (type ==
"PrinterPort") {
219 result = make_unique<MSXPrinterPort>(conf);
220 }
else if (type ==
"SVIPrinterPort") {
221 result = make_unique<SVIPrinterPort>(conf);
222 }
else if (type ==
"SCCplus") {
223 result = make_unique<MSXSCCPlusCart>(conf);
224 }
else if (type ==
one_of(
"WD2793",
"WD1770")) {
225 result = createWD2793BasedFDC(conf);
226 }
else if (type ==
"Microsol") {
228 "Microsol as FDC type is deprecated, please update "
229 "your config file to use WD2793 with connectionstyle "
231 result = make_unique<MicrosolFDC>(conf);
232 }
else if (type ==
"MB8877A") {
234 "MB8877A as FDC type is deprecated, please update your "
235 "config file to use WD2793 with connectionstyle National!");
236 result = make_unique<NationalFDC>(conf);
237 }
else if (type ==
"TC8566AF") {
238 result = make_unique<TurboRFDC>(conf);
239 }
else if (type ==
"TDC600") {
240 result = make_unique<TalentTDC600>(conf);
241 }
else if (type ==
"ToshibaTCX-200x") {
242 result = make_unique<MSXToshibaTcx200x>(conf);
243 }
else if (type ==
"SVIFDC") {
244 result = make_unique<SVIFDC>(conf);
245 }
else if (type ==
"BeerIDE") {
246 result = make_unique<BeerIDE>(conf);
247 }
else if (type ==
"SunriseIDE") {
248 result = make_unique<SunriseIDE>(conf);
249 }
else if (type ==
"GoudaSCSI") {
250 result = make_unique<GoudaSCSI>(conf);
251 }
else if (type ==
"MegaSCSI") {
252 result = make_unique<MegaSCSI>(conf);
253 }
else if (type ==
"ESERAM") {
254 result = make_unique<ESE_RAM>(conf);
255 }
else if (type ==
"WaveSCSI") {
256 result = make_unique<ESE_SCC>(conf,
true);
257 }
else if (type ==
"ESESCC") {
258 result = make_unique<ESE_SCC>(conf,
false);
259 }
else if (type ==
"Matsushita") {
260 result = make_unique<MSXMatsushita>(conf);
261 }
else if (type ==
"VictorHC9xSystemControl") {
262 result = make_unique<MSXVictorHC9xSystemControl>(conf);
263 }
else if (type ==
"CielTurbo") {
264 result = make_unique<MSXCielTurbo>(conf);
265 }
else if (type ==
"Kanji12") {
266 result = make_unique<MSXKanji12>(conf);
267 }
else if (type ==
"MSX-MIDI") {
268 result = make_unique<MSXMidi>(conf);
269 }
else if (type ==
"MSX-Modem") {
270 result = make_unique<MSXModem>(conf);
271 }
else if (type ==
"MSX-RS232") {
272 result = make_unique<MSXRS232>(conf);
273 }
else if (type ==
"MegaRam") {
274 result = make_unique<MSXMegaRam>(conf);
275 }
else if (type ==
"PAC") {
276 result = make_unique<MSXPac>(conf);
277 }
else if (type ==
"HBI55") {
278 result = make_unique<MSXHBI55>(conf);
279 }
else if (type ==
"DebugDevice") {
280 result = make_unique<DebugDevice>(conf);
281 }
else if (type ==
"V9990") {
282 result = make_unique<V9990>(conf);
283 }
else if (type ==
"Video9000") {
284 result = make_unique<Video9000>(conf);
285 }
else if (type ==
"ADVram") {
286 result = make_unique<ADVram>(conf);
287 }
else if (type ==
"PioneerLDControl") {
288#if COMPONENT_LASERDISC
289 result = make_unique<PioneerLDControl>(conf);
291 throw MSXException(
"Laserdisc component not compiled in");
293 }
else if (type ==
"Nowind") {
294 result = make_unique<NowindInterface>(conf);
295 }
else if (type ==
"Mirror") {
296 result = make_unique<MSXMirrorDevice>(conf);
297 }
else if (type ==
"SensorKid") {
298 result = make_unique<SensorKid>(conf);
299 }
else if (type ==
"FraelSwitchableROM") {
300 result = make_unique<FraelSwitchableROM>(conf);
301 }
else if (type ==
"ChakkariCopy") {
302 result = make_unique<ChakkariCopy>(conf);
303 }
else if (type ==
"CanonWordProcessor") {
304 result = make_unique<CanonWordProcessor>(conf);
305 }
else if (type ==
"MegaFlashRomSCCPlusSD") {
306 result = make_unique<MegaFlashRomSCCPlusSD>(conf);
307 }
else if (type ==
"MusicalMemoryMapper") {
308 result = make_unique<MusicalMemoryMapper>(conf);
309 }
else if (type ==
"Carnivore2") {
310 result = make_unique<Carnivore2>(conf);
311 }
else if (type ==
"YamahaSKW01") {
312 result = make_unique<YamahaSKW01>(conf);
313 }
else if (type ==
one_of(
"T7775",
"T7937",
"T9763",
"T9769")) {
317 "\" specified in configuration");
319 if (result) result->init();