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