--- nono/vm/xiospace.cpp 2026/04/29 17:05:10 1.1.1.10 +++ nono/vm/xiospace.cpp 2026/04/29 17:05:14 1.1.1.11 @@ -9,8 +9,10 @@ // #include "xiospace.h" +#include "adpcm.h" #include "areaset.h" #include "busio.h" +#include "config.h" #include "crtc.h" #include "dmac.h" #include "fdc.h" @@ -22,6 +24,7 @@ #include "pluto.h" #include "printer.h" #include "ram.h" +#include "romemu_x68k.h" #include "romimg_x68k.h" #include "rp5c15.h" #include "scc.h" @@ -31,6 +34,7 @@ #include "sysport.h" #include "tvram.h" #include "videoctlr.h" +#include "vm.h" // // 1つの 8KB ブロックを複数のデバイスで共有する場合 @@ -156,15 +160,20 @@ XIOSpaceDevice::XIOSpaceDevice() } while (0) // デバイスクラス作成 (順序に注意) + ADD_DEVICE(ADPCM, new BusIO_EB()); ADD_DEVICE(AreaSet, new AreaSetDevice()); ADD_DEVICE(CGROM, new CGROMDevice()); ADD_DEVICE(CRTC, new BusIO_W()); - ADD_DEVICE(DMAC, new BusIO_B()); + ADD_DEVICE(DMAC, new DMACDevice()); ADD_DEVICE(FDC, new BusIO_EB()); ADD_DEVICE(GVRAM, new GVRAMDevice()); ADD_DEVICE(PEDEC, new BusIO_EB()); ADD_DEVICE(IPLROM1, new IPLROM1Device()); - ADD_DEVICE(IPLROM2, new IPLROM2Device()); + if (gConfig->Find("iplrom2-image").AsString().empty()) { + ADD_DEVICE(IPLROM2, new ROM30EmuDevice()); + } else { + ADD_DEVICE(IPLROM2, new IPLROM2Device()); + } ADD_DEVICE(MFP, new BusIO_EB()); ADD_DEVICE(PlaneVRAM, new TVRAMDevice()); ADD_DEVICE(Pluto, new PlutoDevice());