summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hash/ibm5150.xml3
-rw-r--r--hash/ibm5170.xml21
-rw-r--r--src/devices/cpu/alto2/alto2cpu.cpp103
-rw-r--r--src/devices/machine/6522via.cpp7
-rw-r--r--src/devices/machine/atmel_arm_aic.cpp41
-rw-r--r--src/devices/machine/cs8221.cpp9
-rw-r--r--src/devices/machine/genpc.cpp32
-rw-r--r--src/devices/machine/i80130.cpp12
-rw-r--r--src/devices/machine/i8271.cpp11
-rw-r--r--src/devices/machine/k054321.cpp34
-rw-r--r--src/devices/machine/mb8795.cpp23
-rw-r--r--src/devices/machine/mos6530n.cpp87
-rw-r--r--src/devices/machine/ncr5390.cpp27
-rw-r--r--src/devices/machine/pc_fdc.cpp15
-rw-r--r--src/devices/machine/sega_scu.cpp35
-rw-r--r--src/devices/machine/stvcd.cpp8
-rw-r--r--src/devices/machine/tms5501.cpp25
-rw-r--r--src/devices/machine/upd765.cpp118
-rw-r--r--src/devices/sound/cdp1869.cpp14
-rw-r--r--src/devices/sound/dave.cpp14
-rw-r--r--src/devices/video/huc6271.cpp17
-rw-r--r--src/devices/video/imagetek_i4100.cpp207
-rw-r--r--src/devices/video/jangou_blitter.cpp38
-rw-r--r--src/devices/video/msm6255.cpp9
-rw-r--r--src/devices/video/stvvdp1.cpp13
-rw-r--r--src/devices/video/stvvdp2.cpp88
-rw-r--r--src/emu/machine.cpp7
-rw-r--r--src/mame/audio/8080bw.cpp78
-rw-r--r--src/mame/audio/dcs.cpp244
-rw-r--r--src/mame/audio/flower.cpp17
-rw-r--r--src/mame/audio/irem.cpp44
-rw-r--r--src/mame/audio/midway.cpp17
-rw-r--r--src/mame/audio/segasnd.cpp7
-rw-r--r--src/mame/drivers/8080bw.cpp23
-rw-r--r--src/mame/drivers/abc80x.cpp51
-rw-r--r--src/mame/drivers/amiga.cpp55
-rw-r--r--src/mame/drivers/asuka.cpp20
-rw-r--r--src/mame/drivers/atlantis.cpp50
-rw-r--r--src/mame/drivers/bfm_sc2.cpp15
-rw-r--r--src/mame/drivers/bionicc.cpp130
-rw-r--r--src/mame/drivers/eolith.cpp13
-rw-r--r--src/mame/drivers/fmtowns.cpp171
-rw-r--r--src/mame/drivers/goldstar.cpp272
-rw-r--r--src/mame/drivers/intellec4.cpp64
-rw-r--r--src/mame/drivers/ngen.cpp51
-rw-r--r--src/mame/drivers/norautp.cpp16
-rw-r--r--src/mame/drivers/notetaker.cpp74
-rw-r--r--src/mame/drivers/pc8401a.cpp57
-rw-r--r--src/mame/drivers/pc88va.cpp24
-rw-r--r--src/mame/drivers/seattle.cpp85
-rw-r--r--src/mame/drivers/segas32.cpp137
-rw-r--r--src/mame/drivers/segaxbd.cpp99
-rw-r--r--src/mame/drivers/sg1000.cpp14
-rw-r--r--src/mame/drivers/superqix.cpp17
-rw-r--r--src/mame/drivers/taitottl.cpp51
-rw-r--r--src/mame/drivers/tourvis.cpp6
-rw-r--r--src/mame/drivers/trs80m2.cpp5
-rw-r--r--src/mame/drivers/vegas.cpp79
-rw-r--r--src/mame/drivers/williams.cpp9
-rw-r--r--src/mame/drivers/x1twin.cpp30
-rw-r--r--src/mame/etc/korgm1.cpp44
-rw-r--r--src/mame/etc/template_driver.cpp14
-rw-r--r--src/mame/includes/8080bw.h4
-rw-r--r--src/mame/includes/asuka.h30
-rw-r--r--src/mame/includes/bionicc.h77
-rw-r--r--src/mame/includes/saturn.h5
-rw-r--r--src/mame/machine/315-5881_crypt.cpp32
-rw-r--r--src/mame/machine/abc1600mac.cpp12
-rw-r--r--src/mame/machine/apricotkb.cpp19
-rw-r--r--src/mame/machine/at.cpp25
-rw-r--r--src/mame/machine/awboard.cpp19
-rw-r--r--src/mame/machine/cammu.cpp134
-rw-r--r--src/mame/machine/deco_irq.cpp13
-rw-r--r--src/mame/machine/fd1089.cpp7
-rw-r--r--src/mame/machine/interpro_arbga.cpp60
-rw-r--r--src/mame/machine/interpro_ioga.cpp83
-rw-r--r--src/mame/machine/interpro_mcga.cpp46
-rw-r--r--src/mame/machine/interpro_sga.cpp91
-rw-r--r--src/mame/machine/isbc_208.cpp11
-rw-r--r--src/mame/machine/iteagle_fpga.cpp37
-rw-r--r--src/mame/machine/k573dio.cpp65
-rw-r--r--src/mame/machine/m3comm.cpp11
-rw-r--r--src/mame/machine/maple-dc.cpp17
-rw-r--r--src/mame/machine/mega32x.cpp78
-rw-r--r--src/mame/machine/megadriv.cpp9
-rw-r--r--src/mame/machine/namco_c139.cpp16
-rw-r--r--src/mame/machine/namco_c148.cpp39
-rw-r--r--src/mame/machine/naomibd.cpp25
-rw-r--r--src/mame/machine/naomig1.cpp41
-rw-r--r--src/mame/machine/naomim1.cpp9
-rw-r--r--src/mame/machine/naomim4.cpp9
-rw-r--r--src/mame/machine/nextkbd.cpp17
-rw-r--r--src/mame/machine/nextmo.cpp23
-rw-r--r--src/mame/machine/prof80mmu.cpp12
-rw-r--r--src/mame/machine/segabb.cpp15
-rw-r--r--src/mame/machine/seicop.cpp23
-rw-r--r--src/mame/machine/st0016.cpp36
-rw-r--r--src/mame/machine/wpc_shift.cpp13
-rw-r--r--src/mame/machine/xbox_pci.cpp107
-rw-r--r--src/mame/mame.lst1
-rw-r--r--src/mame/video/abc1600.cpp94
-rw-r--r--src/mame/video/c45.cpp11
-rw-r--r--src/mame/video/gamate.cpp28
-rw-r--r--src/mame/video/gp9001.cpp13
-rw-r--r--src/mame/video/igs017_igs031.cpp23
-rw-r--r--src/mame/video/kaneko_grap2.cpp33
-rw-r--r--src/mame/video/nick.cpp27
-rw-r--r--src/mame/video/pc8401a.cpp9
-rw-r--r--src/mame/video/pc_t1t.cpp9
-rw-r--r--src/mame/video/pcd.cpp20
-rw-r--r--src/mame/video/powervr2.cpp124
-rw-r--r--src/mame/video/seibu_crtc.cpp17
-rw-r--r--src/mame/video/wpc_dmd.cpp21
-rw-r--r--src/mame/video/ygv608.cpp76
-rw-r--r--src/mame/video/zx8301.cpp7
115 files changed, 2700 insertions, 2184 deletions
diff --git a/hash/ibm5150.xml b/hash/ibm5150.xml
index 33c9fe3dbfc..4350f83b1f0 100644
--- a/hash/ibm5150.xml
+++ b/hash/ibm5150.xml
@@ -8344,7 +8344,8 @@ has been replaced with an all-zero block. -->
</part>
</software>
- <software name="lombrall">
+ <!-- black square glitches behind sprites -->
+ <software name="lombrall" supported="partial">
<description>Lombard RAC Rally</description>
<year>1989</year>
<publisher>Mandarin Software</publisher>
diff --git a/hash/ibm5170.xml b/hash/ibm5170.xml
index 864702aa110..dfc0290e539 100644
--- a/hash/ibm5170.xml
+++ b/hash/ibm5170.xml
@@ -7228,8 +7228,9 @@
</dataarea>
</part>
<part name="flop4" interface="floppy_3_5">
+ <!-- Modified - file added with copy protection answers -->
<dataarea name="flop" size = "1474560">
- <rom name="Alone in the Dark (France) (Disk 4).img" size="1474560" crc="8cd64cf1" sha1="1502555ba7fedabceb7e8fd859b77689c08bd214" offset="0"/>
+ <rom name="Alone in the Dark (France) (Disk 4).img" size="1474560" crc="8cd64cf1" sha1="1502555ba7fedabceb7e8fd859b77689c08bd214" offset="0" status="baddump"/>
</dataarea>
</part>
</software>
@@ -9703,6 +9704,24 @@
</part>
</software>
+ <software name="opstealth">
+ <description>Operation Stealth (Euro)</description>
+ <year>1990</year>
+ <publisher>Interplay</publisher>
+ <info name="developer" value="Delphine Software" />
+ <info name="usage" value="Mouse Required" />
+ <part name="flop1" interface="floppy_3_5">
+ <dataarea name="flop" size = "1474560">
+ <rom name="Operation Stealth [Interplay] [1990] [3.5HD] [Disk 1 of 2].img" size="1474560" crc="1ac0fa73" sha1="236588de744c62fadcb5271d6a17516e429cf31d" offset="0"/>
+ </dataarea>
+ </part>
+ <part name="flop2" interface="floppy_3_5">
+ <dataarea name="flop" size = "1474560">
+ <rom name="Operation Stealth [Interplay] [1990] [3.5HD] [Disk 2 of 2].img" size="1474560" crc="da712b27" sha1="bfeb9d003d89a19d868a1fca728462729a21de34" offset="0"/>
+ </dataarea>
+ </part>
+ </software>
+
<software name="paganitz">
<description>Paganitzu</description>
<year>1991</year>
diff --git a/src/devices/cpu/alto2/alto2cpu.cpp b/src/devices/cpu/alto2/alto2cpu.cpp
index 07c836e72ee..9fd32090a07 100644
--- a/src/devices/cpu/alto2/alto2cpu.cpp
+++ b/src/devices/cpu/alto2/alto2cpu.cpp
@@ -61,62 +61,65 @@ alto2_log_t logprintf;
// LIVE DEVICE
//**************************************************************************
-ADDRESS_MAP_START(alto2_cpu_device::ucode_map)
- AM_RANGE(0, 4*ALTO2_UCODE_PAGE_SIZE - 1) AM_READWRITE( crom_cram_r, crom_cram_w )
-ADDRESS_MAP_END
+void alto2_cpu_device::ucode_map(address_map &map)
+{
+ map(0, 4*ALTO2_UCODE_PAGE_SIZE - 1).rw(this, FUNC(alto2_cpu_device::crom_cram_r), FUNC(alto2_cpu_device::crom_cram_w));
+}
-ADDRESS_MAP_START(alto2_cpu_device::const_map)
- AM_RANGE(0, ALTO2_CONST_SIZE - 1) AM_READ ( const_r )
-ADDRESS_MAP_END
+void alto2_cpu_device::const_map(address_map &map)
+{
+ map(0, ALTO2_CONST_SIZE - 1).r(this, FUNC(alto2_cpu_device::const_r));
+}
-ADDRESS_MAP_START(alto2_cpu_device::iomem_map)
- AM_RANGE(0, ALTO2_IO_PAGE_BASE - 1) AM_READWRITE( ioram_r, ioram_w )
+void alto2_cpu_device::iomem_map(address_map &map)
+{
+ map(0, ALTO2_IO_PAGE_BASE - 1).rw(this, FUNC(alto2_cpu_device::ioram_r), FUNC(alto2_cpu_device::ioram_w));
// page 0376
- AM_RANGE(0177000, 0177015) AM_READWRITE( noop_r, noop_w ) // UNUSED RANGE
- AM_RANGE(0177016, 0177016) AM_READWRITE( utilout_r, utilout_w ) // UTILOUT register
- AM_RANGE(0177017, 0177017) AM_READWRITE( noop_r, noop_w ) // unused range
- AM_RANGE(0177020, 0177023) AM_READWRITE( xbus_r, xbus_w ) // XBUS[0-3] registers
- AM_RANGE(0177024, 0177024) AM_READ ( mear_r ) // MEAR (memory error address register)
- AM_RANGE(0177025, 0177025) AM_READWRITE( mesr_r, mesr_w ) // MESR (memory error status register)
- AM_RANGE(0177026, 0177026) AM_READWRITE( mecr_r, mecr_w ) // MECR (memory error control register)
- AM_RANGE(0177027, 0177027) AM_READWRITE( noop_r, noop_w ) // UNUSED RANGE
- AM_RANGE(0177030, 0177033) AM_READ ( utilin_r ) // UTILIN register
- AM_RANGE(0177034, 0177037) AM_READ ( kbd_ad_r ) // KBD_AD[0-3] matrix
- AM_RANGE(0177040, 0177057) AM_READWRITE( bank_reg_r, bank_reg_w ) // BANK[0-17] registers (4 bit)
- AM_RANGE(0177060, 0177077) AM_READWRITE( noop_r, noop_w ) // UNUSED RANGE
- AM_RANGE(0177100, 0177101) AM_READWRITE( noop_r, noop_w ) // { Summagraphics tablet X, Y }
- AM_RANGE(0177102, 0177137) AM_READWRITE( noop_r, noop_w ) // UNUSED RANGE
- AM_RANGE(0177140, 0177157) AM_READWRITE( noop_r, noop_w ) // { Organ keyboard }
- AM_RANGE(0177160, 0177177) AM_READWRITE( noop_r, noop_w ) // UNUSED RANGE
- AM_RANGE(0177200, 0177204) AM_READWRITE( noop_r, noop_w ) // { PROM programmer }
- AM_RANGE(0177205, 0177233) AM_READWRITE( noop_r, noop_w ) // UNUSED RANGE
- AM_RANGE(0177234, 0177237) AM_READWRITE( noop_r, noop_w ) // { Experimental cursor control }
- AM_RANGE(0177240, 0177257) AM_READWRITE( noop_r, noop_w ) // { Alto-II debugger }
+ map(0177000, 0177015).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // UNUSED RANGE
+ map(0177016, 0177016).rw(this, FUNC(alto2_cpu_device::utilout_r), FUNC(alto2_cpu_device::utilout_w)); // UTILOUT register
+ map(0177017, 0177017).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // unused range
+ map(0177020, 0177023).rw(this, FUNC(alto2_cpu_device::xbus_r), FUNC(alto2_cpu_device::xbus_w)); // XBUS[0-3] registers
+ map(0177024, 0177024).r(this, FUNC(alto2_cpu_device::mear_r)); // MEAR (memory error address register)
+ map(0177025, 0177025).rw(this, FUNC(alto2_cpu_device::mesr_r), FUNC(alto2_cpu_device::mesr_w)); // MESR (memory error status register)
+ map(0177026, 0177026).rw(this, FUNC(alto2_cpu_device::mecr_r), FUNC(alto2_cpu_device::mecr_w)); // MECR (memory error control register)
+ map(0177027, 0177027).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // UNUSED RANGE
+ map(0177030, 0177033).r(this, FUNC(alto2_cpu_device::utilin_r)); // UTILIN register
+ map(0177034, 0177037).r(this, FUNC(alto2_cpu_device::kbd_ad_r)); // KBD_AD[0-3] matrix
+ map(0177040, 0177057).rw(this, FUNC(alto2_cpu_device::bank_reg_r), FUNC(alto2_cpu_device::bank_reg_w)); // BANK[0-17] registers (4 bit)
+ map(0177060, 0177077).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // UNUSED RANGE
+ map(0177100, 0177101).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { Summagraphics tablet X, Y }
+ map(0177102, 0177137).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // UNUSED RANGE
+ map(0177140, 0177157).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { Organ keyboard }
+ map(0177160, 0177177).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // UNUSED RANGE
+ map(0177200, 0177204).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { PROM programmer }
+ map(0177205, 0177233).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // UNUSED RANGE
+ map(0177234, 0177237).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { Experimental cursor control }
+ map(0177240, 0177257).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { Alto-II debugger }
// AM_RANGE(0177244, 0177247) AM_READWRITE( noop_r, noop_w ) // { Graphics keyboard }
- AM_RANGE(0177260, 0177377) AM_READWRITE( noop_r, noop_w ) // UNUSED RANGE
+ map(0177260, 0177377).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // UNUSED RANGE
// page 0377
// AM_RANGE(0177400, 0177405) AM_READWRITE( noop_r, noop_w ) // { Maxc2 maintenance interface }
- AM_RANGE(0177400, 0177400) AM_READWRITE( noop_r, noop_w ) // { Alto DLS input }
- AM_RANGE(0177401, 0177417) AM_READWRITE( noop_r, noop_w ) // UNUSED RANGE
- AM_RANGE(0177420, 0177420) AM_READWRITE( noop_r, noop_w ) // { "" }
- AM_RANGE(0177421, 0177437) AM_READWRITE( noop_r, noop_w ) // UNUSED RANGE
- AM_RANGE(0177440, 0177440) AM_READWRITE( noop_r, noop_w ) // { "" }
- AM_RANGE(0177441, 0177457) AM_READWRITE( noop_r, noop_w ) // UNUSED RANGE
- AM_RANGE(0177460, 0177460) AM_READWRITE( noop_r, noop_w ) // { "" }
- AM_RANGE(0177461, 0177577) AM_READWRITE( noop_r, noop_w ) // UNUSED RANGE
- AM_RANGE(0177600, 0177677) AM_READWRITE( noop_r, noop_w ) // { Alto DLS output }
- AM_RANGE(0177700, 0177700) AM_READWRITE( noop_r, noop_w ) // { EIA interface output bit }
- AM_RANGE(0177701, 0177701) AM_READWRITE( noop_r, noop_w ) // { EIA interface input bit }
- AM_RANGE(0177702, 0177717) AM_READWRITE( noop_r, noop_w ) // UNUSED RANGE
- AM_RANGE(0177720, 0177737) AM_READWRITE( noop_r, noop_w ) // { TV camera interface }
- AM_RANGE(0177740, 0177763) AM_READWRITE( noop_r, noop_w ) // UNUSED RANGE
- AM_RANGE(0177764, 0177773) AM_READWRITE( noop_r, noop_w ) // { Redactron tape drive }
- AM_RANGE(0177774, 0177775) AM_READWRITE( noop_r, noop_w ) // UNUSED RANGE
- AM_RANGE(0177776, 0177776) AM_READWRITE( noop_r, noop_w ) // { Digital-Analog Converter, Joystick }
- AM_RANGE(0177777, 0177777) AM_READWRITE( noop_r, noop_w ) // { Digital-Analog Converter, Joystick }
-
- AM_RANGE(0200000, 0377777) AM_READWRITE( ioram_r, ioram_w )
-ADDRESS_MAP_END
+ map(0177400, 0177400).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { Alto DLS input }
+ map(0177401, 0177417).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // UNUSED RANGE
+ map(0177420, 0177420).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { "" }
+ map(0177421, 0177437).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // UNUSED RANGE
+ map(0177440, 0177440).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { "" }
+ map(0177441, 0177457).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // UNUSED RANGE
+ map(0177460, 0177460).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { "" }
+ map(0177461, 0177577).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // UNUSED RANGE
+ map(0177600, 0177677).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { Alto DLS output }
+ map(0177700, 0177700).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { EIA interface output bit }
+ map(0177701, 0177701).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { EIA interface input bit }
+ map(0177702, 0177717).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // UNUSED RANGE
+ map(0177720, 0177737).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { TV camera interface }
+ map(0177740, 0177763).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // UNUSED RANGE
+ map(0177764, 0177773).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { Redactron tape drive }
+ map(0177774, 0177775).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // UNUSED RANGE
+ map(0177776, 0177776).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { Digital-Analog Converter, Joystick }
+ map(0177777, 0177777).rw(this, FUNC(alto2_cpu_device::noop_r), FUNC(alto2_cpu_device::noop_w)); // { Digital-Analog Converter, Joystick }
+
+ map(0200000, 0377777).rw(this, FUNC(alto2_cpu_device::ioram_r), FUNC(alto2_cpu_device::ioram_w));
+}
//-------------------------------------------------
// alto2_cpu_device - constructor
diff --git a/src/devices/machine/6522via.cpp b/src/devices/machine/6522via.cpp
index 93f1f056b3f..28b322850ad 100644
--- a/src/devices/machine/6522via.cpp
+++ b/src/devices/machine/6522via.cpp
@@ -147,9 +147,10 @@ uint16_t via6522_device::get_counter1_value()
// device type definition
DEFINE_DEVICE_TYPE(VIA6522, via6522_device, "via6522", "6522 VIA")
-ADDRESS_MAP_START(via6522_device::map)
- AM_RANGE(0x00, 0x0f) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void via6522_device::map(address_map &map)
+{
+ map(0x00, 0x0f).rw(this, FUNC(via6522_device::read), FUNC(via6522_device::write));
+}
//-------------------------------------------------
// via6522_device - constructor
diff --git a/src/devices/machine/atmel_arm_aic.cpp b/src/devices/machine/atmel_arm_aic.cpp
index de18da3b132..d7e666c10ed 100644
--- a/src/devices/machine/atmel_arm_aic.cpp
+++ b/src/devices/machine/atmel_arm_aic.cpp
@@ -20,26 +20,27 @@
DEFINE_DEVICE_TYPE(ARM_AIC, arm_aic_device, "arm_aic", "ARM Advanced Interrupt Controller")
-ADDRESS_MAP_START(arm_aic_device::regs_map)
- AM_RANGE(0x000, 0x07f) AM_READWRITE(aic_smr_r, aic_smr_w) // AIC_SMR[32] (AIC_SMR) Source Mode Register
- AM_RANGE(0x080, 0x0ff) AM_READWRITE(aic_svr_r, aic_svr_w) // AIC_SVR[32] (AIC_SVR) Source Vector Register
- AM_RANGE(0x100, 0x103) AM_READ(irq_vector_r) // AIC_IVR IRQ Vector Register
- AM_RANGE(0x104, 0x107) AM_READ(firq_vector_r) // AIC_FVR FIQ Vector Register
- AM_RANGE(0x108, 0x10b) AM_READ(aic_isr_r) // AIC_ISR Interrupt Status Register
- AM_RANGE(0x10c, 0x10f) AM_READ(aic_ipr_r) // AIC_IPR Interrupt Pending Register
- AM_RANGE(0x110, 0x113) AM_READ(aic_imr_r) // AIC_IMR Interrupt Mask Register
- AM_RANGE(0x114, 0x117) AM_READ(aic_cisr_r) // AIC_CISR Core Interrupt Status Register
- AM_RANGE(0x120, 0x123) AM_WRITE(aic_iecr_w) // AIC_IECR Interrupt Enable Command Register
- AM_RANGE(0x124, 0x127) AM_WRITE(aic_idcr_w) // AIC_IDCR Interrupt Disable Command Register
- AM_RANGE(0x128, 0x12b) AM_WRITE(aic_iccr_w) // AIC_ICCR Interrupt Clear Command Register
- AM_RANGE(0x12c, 0x12f) AM_WRITE(aic_iscr_w) // AIC_ISCR Interrupt Set Command Register
- AM_RANGE(0x130, 0x133) AM_WRITE(aic_eoicr_w) // AIC_EOICR End of Interrupt Command Register
- AM_RANGE(0x134, 0x137) AM_WRITE(aic_spu_w) // AIC_SPU Spurious Vector Register
- AM_RANGE(0x138, 0x13b) AM_WRITE(aic_dcr_w) // AIC_DCR Debug Control Register (Protect)
- AM_RANGE(0x140, 0x143) AM_WRITE(aic_ffer_w) // AIC_FFER Fast Forcing Enable Register
- AM_RANGE(0x144, 0x147) AM_WRITE(aic_ffdr_w) // AIC_FFDR Fast Forcing Disable Register
- AM_RANGE(0x148, 0x14b) AM_READ(aic_ffsr_r) // AIC_FFSR Fast Forcing Status Register
-ADDRESS_MAP_END
+void arm_aic_device::regs_map(address_map &map)
+{
+ map(0x000, 0x07f).rw(this, FUNC(arm_aic_device::aic_smr_r), FUNC(arm_aic_device::aic_smr_w)); // AIC_SMR[32] (AIC_SMR) Source Mode Register
+ map(0x080, 0x0ff).rw(this, FUNC(arm_aic_device::aic_svr_r), FUNC(arm_aic_device::aic_svr_w)); // AIC_SVR[32] (AIC_SVR) Source Vector Register
+ map(0x100, 0x103).r(this, FUNC(arm_aic_device::irq_vector_r)); // AIC_IVR IRQ Vector Register
+ map(0x104, 0x107).r(this, FUNC(arm_aic_device::firq_vector_r)); // AIC_FVR FIQ Vector Register
+ map(0x108, 0x10b).r(this, FUNC(arm_aic_device::aic_isr_r)); // AIC_ISR Interrupt Status Register
+ map(0x10c, 0x10f).r(this, FUNC(arm_aic_device::aic_ipr_r)); // AIC_IPR Interrupt Pending Register
+ map(0x110, 0x113).r(this, FUNC(arm_aic_device::aic_imr_r)); // AIC_IMR Interrupt Mask Register
+ map(0x114, 0x117).r(this, FUNC(arm_aic_device::aic_cisr_r)); // AIC_CISR Core Interrupt Status Register
+ map(0x120, 0x123).w(this, FUNC(arm_aic_device::aic_iecr_w)); // AIC_IECR Interrupt Enable Command Register
+ map(0x124, 0x127).w(this, FUNC(arm_aic_device::aic_idcr_w)); // AIC_IDCR Interrupt Disable Command Register
+ map(0x128, 0x12b).w(this, FUNC(arm_aic_device::aic_iccr_w)); // AIC_ICCR Interrupt Clear Command Register
+ map(0x12c, 0x12f).w(this, FUNC(arm_aic_device::aic_iscr_w)); // AIC_ISCR Interrupt Set Command Register
+ map(0x130, 0x133).w(this, FUNC(arm_aic_device::aic_eoicr_w)); // AIC_EOICR End of Interrupt Command Register
+ map(0x134, 0x137).w(this, FUNC(arm_aic_device::aic_spu_w)); // AIC_SPU Spurious Vector Register
+ map(0x138, 0x13b).w(this, FUNC(arm_aic_device::aic_dcr_w)); // AIC_DCR Debug Control Register (Protect)
+ map(0x140, 0x143).w(this, FUNC(arm_aic_device::aic_ffer_w)); // AIC_FFER Fast Forcing Enable Register
+ map(0x144, 0x147).w(this, FUNC(arm_aic_device::aic_ffdr_w)); // AIC_FFDR Fast Forcing Disable Register
+ map(0x148, 0x14b).r(this, FUNC(arm_aic_device::aic_ffsr_r)); // AIC_FFSR Fast Forcing Status Register
+}
READ32_MEMBER(arm_aic_device::irq_vector_r)
{
diff --git a/src/devices/machine/cs8221.cpp b/src/devices/machine/cs8221.cpp
index 6e6cfb44545..9177a758340 100644
--- a/src/devices/machine/cs8221.cpp
+++ b/src/devices/machine/cs8221.cpp
@@ -90,10 +90,11 @@ void cs8221_device::device_reset()
//**************************************************************************
// READ/WRITE HANDLERS
//**************************************************************************
-ADDRESS_MAP_START(cs8221_device::map)
- AM_RANGE(0x0022, 0x0023) AM_DEVWRITE8("cs8221", cs8221_device, address_w, 0x00ff)
- AM_RANGE(0x0022, 0x0023) AM_DEVREADWRITE8("cs8221", cs8221_device, data_r, data_w, 0xff00)
-ADDRESS_MAP_END
+void cs8221_device::map(address_map &map)
+{
+ map(0x0022, 0x0022).w("cs8221", FUNC(cs8221_device::address_w));
+ map(0x0023, 0x0023).rw("cs8221", FUNC(cs8221_device::data_r), FUNC(cs8221_device::data_w));
+}
WRITE8_MEMBER( cs8221_device::address_w )
{
diff --git a/src/devices/machine/genpc.cpp b/src/devices/machine/genpc.cpp
index 65a25896392..132656b287e 100644
--- a/src/devices/machine/genpc.cpp
+++ b/src/devices/machine/genpc.cpp
@@ -528,14 +528,15 @@ ibm5160_mb_device::ibm5160_mb_device(
{
}
-ADDRESS_MAP_START(ibm5160_mb_device::map)
- AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("dma8237", am9517a_device, read, write)
- AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
- AM_RANGE(0x0040, 0x004f) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE(0x0060, 0x006f) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x0080, 0x008f) AM_WRITE(pc_page_w)
- AM_RANGE(0x00a0, 0x00a1) AM_WRITE(nmi_enable_w)
-ADDRESS_MAP_END
+void ibm5160_mb_device::map(address_map &map)
+{
+ map(0x0000, 0x000f).rw("dma8237", FUNC(am9517a_device::read), FUNC(am9517a_device::write));
+ map(0x0020, 0x002f).rw("pic8259", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x0040, 0x004f).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x0060, 0x006f).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x0080, 0x008f).w(this, FUNC(ibm5160_mb_device::pc_page_w));
+ map(0x00a0, 0x00a1).w(this, FUNC(ibm5160_mb_device::nmi_enable_w));
+}
//-------------------------------------------------
// device_start - device-specific startup
@@ -910,12 +911,13 @@ ioport_constructor pc_noppi_mb_device::device_input_ports() const
return INPUT_PORTS_NAME( pc_noppi_mb );
}
-ADDRESS_MAP_START(pc_noppi_mb_device::map)
- AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("dma8237", am9517a_device, read, write)
- AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
- AM_RANGE(0x0040, 0x004f) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE(0x0080, 0x008f) AM_WRITE(pc_page_w)
- AM_RANGE(0x00a0, 0x00a1) AM_WRITE(nmi_enable_w)
-ADDRESS_MAP_END
+void pc_noppi_mb_device::map(address_map &map)
+{
+ map(0x0000, 0x000f).rw("dma8237", FUNC(am9517a_device::read), FUNC(am9517a_device::write));
+ map(0x0020, 0x002f).rw("pic8259", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x0040, 0x004f).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x0080, 0x008f).w(this, FUNC(pc_noppi_mb_device::pc_page_w));
+ map(0x00a0, 0x00a1).w(this, FUNC(pc_noppi_mb_device::nmi_enable_w));
+}
DEFINE_DEVICE_TYPE(PCNOPPI_MOTHERBOARD, pc_noppi_mb_device, "pcnoppi_mb", "PCNOPPI_MOTHERBOARD")
diff --git a/src/devices/machine/i80130.cpp b/src/devices/machine/i80130.cpp
index a74aa577482..880c2c2d50c 100644
--- a/src/devices/machine/i80130.cpp
+++ b/src/devices/machine/i80130.cpp
@@ -19,15 +19,17 @@
DEFINE_DEVICE_TYPE(I80130, i80130_device, "i80130", "I80130")
-ADDRESS_MAP_START(i80130_device::rom_map)
+void i80130_device::rom_map(address_map &map)
+{
//AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("rom", 0)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(i80130_device::io_map)
- AM_RANGE(0x00, 0x0f) AM_READWRITE(io_r, io_w)
+void i80130_device::io_map(address_map &map)
+{
+ map(0x00, 0x0f).rw(this, FUNC(i80130_device::io_r), FUNC(i80130_device::io_w));
//AM_RANGE(0x00, 0x01) AM_MIRROR(0x2) AM_DEVREADWRITE8("pic", pic8259_device, read, write, 0x00ff)
//AM_RANGE(0x08, 0x0f) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+}
READ16_MEMBER( i80130_device::io_r )
{
diff --git a/src/devices/machine/i8271.cpp b/src/devices/machine/i8271.cpp
index 45902ee0f9d..eac2f47c0de 100644
--- a/src/devices/machine/i8271.cpp
+++ b/src/devices/machine/i8271.cpp
@@ -18,11 +18,12 @@ i8271_device::i8271_device(const machine_config &mconfig, const char *tag, devic
external_ready = false;
}
-ADDRESS_MAP_START(i8271_device::map)
- AM_RANGE(0x0, 0x0) AM_READWRITE(sr_r, cmd_w)
- AM_RANGE(0x1, 0x1) AM_READWRITE(rr_r, param_w)
- AM_RANGE(0x2, 0x2) AM_WRITE(reset_w)
-ADDRESS_MAP_END
+void i8271_device::map(address_map &map)
+{
+ map(0x0, 0x0).rw(this, FUNC(i8271_device::sr_r), FUNC(i8271_device::cmd_w));
+ map(0x1, 0x1).rw(this, FUNC(i8271_device::rr_r), FUNC(i8271_device::param_w));
+ map(0x2, 0x2).w(this, FUNC(i8271_device::reset_w));
+}
void i8271_device::set_ready_line_connected(bool _ready)
{
diff --git a/src/devices/machine/k054321.cpp b/src/devices/machine/k054321.cpp
index 82da72097e2..12c9e23fe07 100644
--- a/src/devices/machine/k054321.cpp
+++ b/src/devices/machine/k054321.cpp
@@ -37,22 +37,24 @@
DEFINE_DEVICE_TYPE(K054321, k054321_device, "k054321", "K054321 Maincpu-Soundcpu interface")
-ADDRESS_MAP_START(k054321_device::main_map)
- AM_RANGE(0x0, 0x0) AM_WRITE(active_w)
- AM_RANGE(0x2, 0x2) AM_WRITE(volume_reset_w)
- AM_RANGE(0x3, 0x3) AM_WRITE(volume_up_w)
- AM_RANGE(0x4, 0x4) AM_WRITE(dummy_w)
- AM_RANGE(0x6, 0x6) AM_WRITE(main1_w)
- AM_RANGE(0x7, 0x7) AM_WRITE(main2_w)
- AM_RANGE(0x8, 0x8) AM_READ(busy_r)
- AM_RANGE(0xa, 0xa) AM_READ(sound1_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(k054321_device::sound_map)
- AM_RANGE(0x0, 0x0) AM_WRITE(sound1_w)
- AM_RANGE(0x2, 0x2) AM_READ(main1_r)
- AM_RANGE(0x3, 0x3) AM_READ(main2_r)
-ADDRESS_MAP_END
+void k054321_device::main_map(address_map &map)
+{
+ map(0x0, 0x0).w(this, FUNC(k054321_device::active_w));
+ map(0x2, 0x2).w(this, FUNC(k054321_device::volume_reset_w));
+ map(0x3, 0x3).w(this, FUNC(k054321_device::volume_up_w));
+ map(0x4, 0x4).w(this, FUNC(k054321_device::dummy_w));
+ map(0x6, 0x6).w(this, FUNC(k054321_device::main1_w));
+ map(0x7, 0x7).w(this, FUNC(k054321_device::main2_w));
+ map(0x8, 0x8).r(this, FUNC(k054321_device::busy_r));
+ map(0xa, 0xa).r(this, FUNC(k054321_device::sound1_r));
+}
+
+void k054321_device::sound_map(address_map &map)
+{
+ map(0x0, 0x0).w(this, FUNC(k054321_device::sound1_w));
+ map(0x2, 0x2).r(this, FUNC(k054321_device::main1_r));
+ map(0x3, 0x3).r(this, FUNC(k054321_device::main2_r));
+}
k054321_device::k054321_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, K054321, tag, owner, clock),
diff --git a/src/devices/machine/mb8795.cpp b/src/devices/machine/mb8795.cpp
index c0cfb7157a5..b3b817c3cab 100644
--- a/src/devices/machine/mb8795.cpp
+++ b/src/devices/machine/mb8795.cpp
@@ -6,17 +6,18 @@
DEFINE_DEVICE_TYPE(MB8795, mb8795_device, "mb8795", "Fujitsu MB8795")
-ADDRESS_MAP_START(mb8795_device::map)
- AM_RANGE(0x0, 0x0) AM_READWRITE(txstat_r, txstat_w)
- AM_RANGE(0x1, 0x1) AM_READWRITE(txmask_r, txmask_w)
- AM_RANGE(0x2, 0x2) AM_READWRITE(rxstat_r, rxstat_w)
- AM_RANGE(0x3, 0x3) AM_READWRITE(rxmask_r, rxmask_w)
- AM_RANGE(0x4, 0x4) AM_READWRITE(txmode_r, txmode_w)
- AM_RANGE(0x5, 0x5) AM_READWRITE(rxmode_r, rxmode_w)
- AM_RANGE(0x6, 0x6) AM_WRITE(reset_w)
- AM_RANGE(0x7, 0x7) AM_READ(tdc_lsb_r)
- AM_RANGE(0x8, 0xf) AM_READWRITE(mac_r, mac_w) // Mapping limitation, real is up to 0xd
-ADDRESS_MAP_END
+void mb8795_device::map(address_map &map)
+{
+ map(0x0, 0x0).rw(this, FUNC(mb8795_device::txstat_r), FUNC(mb8795_device::txstat_w));
+ map(0x1, 0x1).rw(this, FUNC(mb8795_device::txmask_r), FUNC(mb8795_device::txmask_w));
+ map(0x2, 0x2).rw(this, FUNC(mb8795_device::rxstat_r), FUNC(mb8795_device::rxstat_w));
+ map(0x3, 0x3).rw(this, FUNC(mb8795_device::rxmask_r), FUNC(mb8795_device::rxmask_w));
+ map(0x4, 0x4).rw(this, FUNC(mb8795_device::txmode_r), FUNC(mb8795_device::txmode_w));
+ map(0x5, 0x5).rw(this, FUNC(mb8795_device::rxmode_r), FUNC(mb8795_device::rxmode_w));
+ map(0x6, 0x6).w(this, FUNC(mb8795_device::reset_w));
+ map(0x7, 0x7).r(this, FUNC(mb8795_device::tdc_lsb_r));
+ map(0x8, 0xf).rw(this, FUNC(mb8795_device::mac_r), FUNC(mb8795_device::mac_w)); // Mapping limitation, real is up to 0xd
+}
mb8795_device::mb8795_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, MB8795, tag, owner, clock),
diff --git a/src/devices/machine/mos6530n.cpp b/src/devices/machine/mos6530n.cpp
index 834d9513db4..8e42eb35428 100644
--- a/src/devices/machine/mos6530n.cpp
+++ b/src/devices/machine/mos6530n.cpp
@@ -28,47 +28,52 @@ DEFINE_DEVICE_TYPE(MOS6530_NEW, mos6530_new_device, "mos6530_new", "MOS 6530 (ne
DEFINE_DEVICE_TYPE(MOS6532_NEW, mos6532_new_device, "mos6532_new", "MOS 6532 (new)")
-ADDRESS_MAP_START(mos6530_new_device::rom_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3ff)
- AM_RANGE(0x000, 0x3ff) AM_READ(rom_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mos6530_new_device::ram_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3f)
- AM_RANGE(0x00, 0x3f) AM_READWRITE(ram_r, ram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mos6530_new_device::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xf)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x8) AM_READWRITE(pa_data_r, pa_data_w)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x8) AM_READWRITE(pa_ddr_r, pa_ddr_w)
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x8) AM_READWRITE(pb_data_r, pb_data_w)
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x8) AM_READWRITE(pb_ddr_r, pb_ddr_w)
- AM_RANGE(0x04, 0x07) AM_WRITE(timer_off_w)
- AM_RANGE(0x0c, 0x0f) AM_WRITE(timer_on_w)
- AM_RANGE(0x04, 0x04) AM_MIRROR(0x2) AM_READ(timer_off_r)
- AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x2) AM_READ(timer_on_r)
- AM_RANGE(0x05, 0x05) AM_MIRROR(0xa) AM_READ(irq_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mos6532_new_device::ram_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7f)
- AM_RANGE(0x00, 0x7f) AM_READWRITE(ram_r, ram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mos6532_new_device::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1f)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x18) AM_READWRITE(pa_data_r, pa_data_w) // SWCHA
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x18) AM_READWRITE(pa_ddr_r, pa_ddr_w) // SWACNT
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x18) AM_READWRITE(pb_data_r, pb_data_w) // SWCHB
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x18) AM_READWRITE(pb_ddr_r, pb_ddr_w) // SWBCNT
- AM_RANGE(0x14, 0x17) AM_WRITE(timer_off_w)
- AM_RANGE(0x1c, 0x1f) AM_WRITE(timer_on_w)
- AM_RANGE(0x04, 0x04) AM_MIRROR(0x12) AM_READ(timer_off_r)
- AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x12) AM_READ(timer_on_r)
- AM_RANGE(0x05, 0x05) AM_MIRROR(0x1a) AM_READ(irq_r)
- AM_RANGE(0x04, 0x07) AM_MIRROR(0x8) AM_WRITE(edge_w)
-ADDRESS_MAP_END
+void mos6530_new_device::rom_map(address_map &map)
+{
+ map.global_mask(0x3ff);
+ map(0x000, 0x3ff).r(this, FUNC(mos6530_new_device::rom_r));
+}
+
+void mos6530_new_device::ram_map(address_map &map)
+{
+ map.global_mask(0x3f);
+ map(0x00, 0x3f).rw(this, FUNC(mos6530_new_device::ram_r), FUNC(mos6530_new_device::ram_w));
+}
+
+void mos6530_new_device::io_map(address_map &map)
+{
+ map.global_mask(0xf);
+ map(0x00, 0x00).mirror(0x8).rw(this, FUNC(mos6530_new_device::pa_data_r), FUNC(mos6530_new_device::pa_data_w));
+ map(0x01, 0x01).mirror(0x8).rw(this, FUNC(mos6530_new_device::pa_ddr_r), FUNC(mos6530_new_device::pa_ddr_w));
+ map(0x02, 0x02).mirror(0x8).rw(this, FUNC(mos6530_new_device::pb_data_r), FUNC(mos6530_new_device::pb_data_w));
+ map(0x03, 0x03).mirror(0x8).rw(this, FUNC(mos6530_new_device::pb_ddr_r), FUNC(mos6530_new_device::pb_ddr_w));
+ map(0x04, 0x07).w(this, FUNC(mos6530_new_device::timer_off_w));
+ map(0x0c, 0x0f).w(this, FUNC(mos6530_new_device::timer_on_w));
+ map(0x04, 0x04).mirror(0x2).r(this, FUNC(mos6530_new_device::timer_off_r));
+ map(0x0c, 0x0c).mirror(0x2).r(this, FUNC(mos6530_new_device::timer_on_r));
+ map(0x05, 0x05).mirror(0xa).r(this, FUNC(mos6530_new_device::irq_r));
+}
+
+void mos6532_new_device::ram_map(address_map &map)
+{
+ map.global_mask(0x7f);
+ map(0x00, 0x7f).rw(this, FUNC(mos6532_new_device::ram_r), FUNC(mos6532_new_device::ram_w));
+}
+
+void mos6532_new_device::io_map(address_map &map)
+{
+ map.global_mask(0x1f);
+ map(0x00, 0x00).mirror(0x18).rw(this, FUNC(mos6532_new_device::pa_data_r), FUNC(mos6532_new_device::pa_data_w)); // SWCHA
+ map(0x01, 0x01).mirror(0x18).rw(this, FUNC(mos6532_new_device::pa_ddr_r), FUNC(mos6532_new_device::pa_ddr_w)); // SWACNT
+ map(0x02, 0x02).mirror(0x18).rw(this, FUNC(mos6532_new_device::pb_data_r), FUNC(mos6532_new_device::pb_data_w)); // SWCHB
+ map(0x03, 0x03).mirror(0x18).rw(this, FUNC(mos6532_new_device::pb_ddr_r), FUNC(mos6532_new_device::pb_ddr_w)); // SWBCNT
+ map(0x14, 0x17).w(this, FUNC(mos6532_new_device::timer_off_w));
+ map(0x1c, 0x1f).w(this, FUNC(mos6532_new_device::timer_on_w));
+ map(0x04, 0x04).mirror(0x12).r(this, FUNC(mos6532_new_device::timer_off_r));
+ map(0x0c, 0x0c).mirror(0x12).r(this, FUNC(mos6532_new_device::timer_on_r));
+ map(0x05, 0x05).mirror(0x1a).r(this, FUNC(mos6532_new_device::irq_r));
+ map(0x04, 0x07).mirror(0x8).w(this, FUNC(mos6532_new_device::edge_w));
+}
READ8_MEMBER(mos6532_new_device::io_r)
{
diff --git a/src/devices/machine/ncr5390.cpp b/src/devices/machine/ncr5390.cpp
index 576bb5e4ced..16c3e8071ec 100644
--- a/src/devices/machine/ncr5390.cpp
+++ b/src/devices/machine/ncr5390.cpp
@@ -10,19 +10,20 @@ DEFINE_DEVICE_TYPE(NCR5390, ncr5390_device, "ncr5390", "NCR 5390 SCSI")
DEFINE_DEVICE_TYPE(NCR53C90A, ncr53c90a_device, "ncr53c90a", "NCR 53C90A SCSI")
DEFINE_DEVICE_TYPE(NCR53C94, ncr53c94_device, "ncr53c94", "NCR 53C94 SCSI")
-ADDRESS_MAP_START(ncr5390_device::map)
- AM_RANGE(0x0, 0x0) AM_READWRITE(tcounter_lo_r, tcount_lo_w)
- AM_RANGE(0x1, 0x1) AM_READWRITE(tcounter_hi_r, tcount_hi_w)
- AM_RANGE(0x2, 0x2) AM_READWRITE(fifo_r, fifo_w)
- AM_RANGE(0x3, 0x3) AM_READWRITE(command_r, command_w)
- AM_RANGE(0x4, 0x4) AM_READWRITE(status_r, bus_id_w)
- AM_RANGE(0x5, 0x5) AM_READWRITE(istatus_r, timeout_w)
- AM_RANGE(0x6, 0x6) AM_READWRITE(seq_step_r, sync_period_w)
- AM_RANGE(0x7, 0x7) AM_READWRITE(fifo_flags_r, sync_offset_w)
- AM_RANGE(0x8, 0x8) AM_READWRITE(conf_r, conf_w)
- AM_RANGE(0xa, 0xa) AM_WRITE(test_w)
- AM_RANGE(0x9, 0x9) AM_WRITE(clock_w)
-ADDRESS_MAP_END
+void ncr5390_device::map(address_map &map)
+{
+ map(0x0, 0x0).rw(this, FUNC(ncr5390_device::tcounter_lo_r), FUNC(ncr5390_device::tcount_lo_w));
+ map(0x1, 0x1).rw(this, FUNC(ncr5390_device::tcounter_hi_r), FUNC(ncr5390_device::tcount_hi_w));
+ map(0x2, 0x2).rw(this, FUNC(ncr5390_device::fifo_r), FUNC(ncr5390_device::fifo_w));
+ map(0x3, 0x3).rw(this, FUNC(ncr5390_device::command_r), FUNC(ncr5390_device::command_w));
+ map(0x4, 0x4).rw(this, FUNC(ncr5390_device::status_r), FUNC(ncr5390_device::bus_id_w));
+ map(0x5, 0x5).rw(this, FUNC(ncr5390_device::istatus_r), FUNC(ncr5390_device::timeout_w));
+ map(0x6, 0x6).rw(this, FUNC(ncr5390_device::seq_step_r), FUNC(ncr5390_device::sync_period_w));
+ map(0x7, 0x7).rw(this, FUNC(ncr5390_device::fifo_flags_r), FUNC(ncr5390_device::sync_offset_w));
+ map(0x8, 0x8).rw(this, FUNC(ncr5390_device::conf_r), FUNC(ncr5390_device::conf_w));
+ map(0xa, 0xa).w(this, FUNC(ncr5390_device::test_w));
+ map(0x9, 0x9).w(this, FUNC(ncr5390_device::clock_w));
+}
ADDRESS_MAP_START(ncr53c90a_device::map)
AM_IMPORT_FROM(ncr5390_device::map)
diff --git a/src/devices/machine/pc_fdc.cpp b/src/devices/machine/pc_fdc.cpp
index f59d8af4bc3..cd3f6b41590 100644
--- a/src/devices/machine/pc_fdc.cpp
+++ b/src/devices/machine/pc_fdc.cpp
@@ -23,13 +23,14 @@ ADDRESS_MAP_START(pc_fdc_family_device::map)
ADDRESS_MAP_END
// The schematics show address decoding is minimal
-ADDRESS_MAP_START(pc_fdc_xt_device::map)
- AM_RANGE(0x0, 0x0) AM_DEVREAD("upd765", upd765a_device, msr_r) AM_WRITE(dor_w)
- AM_RANGE(0x1, 0x1) AM_DEVREAD("upd765", upd765a_device, fifo_r) AM_WRITE(dor_fifo_w)
- AM_RANGE(0x2, 0x2) AM_WRITE(dor_w)
- AM_RANGE(0x3, 0x3) AM_WRITE(dor_w)
- AM_RANGE(0x4, 0x5) AM_DEVICE("upd765", upd765a_device, map)
-ADDRESS_MAP_END
+void pc_fdc_xt_device::map(address_map &map)
+{
+ map(0x0, 0x0).r("upd765", FUNC(upd765a_device::msr_r)).w(this, FUNC(pc_fdc_xt_device::dor_w));
+ map(0x1, 0x1).r("upd765", FUNC(upd765a_device::fifo_r)).w(this, FUNC(pc_fdc_xt_device::dor_fifo_w));
+ map(0x2, 0x2).w(this, FUNC(pc_fdc_xt_device::dor_w));
+ map(0x3, 0x3).w(this, FUNC(pc_fdc_xt_device::dor_w));
+ map(0x4, 0x5).m("upd765", FUNC(upd765a_device::map));
+}
// Decoding is through a PAL, so presumably complete
diff --git a/src/devices/machine/sega_scu.cpp b/src/devices/machine/sega_scu.cpp
index 37bad76416b..2582557d1fb 100644
--- a/src/devices/machine/sega_scu.cpp
+++ b/src/devices/machine/sega_scu.cpp
@@ -116,29 +116,30 @@ DEFINE_DEVICE_TYPE(SEGA_SCU, sega_scu_device, "sega_scu", "Sega System Control U
//AM_RANGE(0x0010, 0x0013) DMA enable
//AM_RANGE(0x0014, 0x0017) DMA start factor
-ADDRESS_MAP_START(sega_scu_device::regs_map)
- AM_RANGE(0x0000, 0x0017) AM_READWRITE(dma_lv0_r,dma_lv0_w)
- AM_RANGE(0x0020, 0x0037) AM_READWRITE(dma_lv1_r,dma_lv1_w)
- AM_RANGE(0x0040, 0x0057) AM_READWRITE(dma_lv2_r,dma_lv2_w)
+void sega_scu_device::regs_map(address_map &map)
+{
+ map(0x0000, 0x0017).rw(this, FUNC(sega_scu_device::dma_lv0_r), FUNC(sega_scu_device::dma_lv0_w));
+ map(0x0020, 0x0037).rw(this, FUNC(sega_scu_device::dma_lv1_r), FUNC(sega_scu_device::dma_lv1_w));
+ map(0x0040, 0x0057).rw(this, FUNC(sega_scu_device::dma_lv2_r), FUNC(sega_scu_device::dma_lv2_w));
// Super Major League and Shin Megami Tensei - Akuma Zensho reads from there (undocumented), DMA status mirror?
- AM_RANGE(0x005c, 0x005f) AM_READ(dma_status_r)
+ map(0x005c, 0x005f).r(this, FUNC(sega_scu_device::dma_status_r));
// AM_RANGE(0x0060, 0x0063) AM_WRITE(dma_force_stop_w)
- AM_RANGE(0x007c, 0x007f) AM_READ(dma_status_r)
- AM_RANGE(0x0080, 0x0083) AM_DEVREADWRITE("scudsp",scudsp_cpu_device, program_control_r,program_control_w)
- AM_RANGE(0x0084, 0x0087) AM_DEVWRITE("scudsp", scudsp_cpu_device, program_w)
- AM_RANGE(0x0088, 0x008b) AM_DEVWRITE("scudsp", scudsp_cpu_device, ram_address_control_w)
- AM_RANGE(0x008c, 0x008f) AM_DEVREADWRITE("scudsp", scudsp_cpu_device, ram_address_r, ram_address_w)
- AM_RANGE(0x0090, 0x0093) AM_WRITE(t0_compare_w)
- AM_RANGE(0x0094, 0x0097) AM_WRITE(t1_setdata_w)
- AM_RANGE(0x0098, 0x009b) AM_WRITE16(t1_mode_w,0x0000ffff)
- AM_RANGE(0x00a0, 0x00a3) AM_READWRITE(irq_mask_r,irq_mask_w)
- AM_RANGE(0x00a4, 0x00a7) AM_READWRITE(irq_status_r,irq_status_w)
+ map(0x007c, 0x007f).r(this, FUNC(sega_scu_device::dma_status_r));
+ map(0x0080, 0x0083).rw("scudsp", FUNC(scudsp_cpu_device::program_control_r), FUNC(scudsp_cpu_device::program_control_w));
+ map(0x0084, 0x0087).w("scudsp", FUNC(scudsp_cpu_device::program_w));
+ map(0x0088, 0x008b).w("scudsp", FUNC(scudsp_cpu_device::ram_address_control_w));
+ map(0x008c, 0x008f).rw("scudsp", FUNC(scudsp_cpu_device::ram_address_r), FUNC(scudsp_cpu_device::ram_address_w));
+ map(0x0090, 0x0093).w(this, FUNC(sega_scu_device::t0_compare_w));
+ map(0x0094, 0x0097).w(this, FUNC(sega_scu_device::t1_setdata_w));
+ map(0x009a, 0x009b).w(this, FUNC(sega_scu_device::t1_mode_w));
+ map(0x00a0, 0x00a3).rw(this, FUNC(sega_scu_device::irq_mask_r), FUNC(sega_scu_device::irq_mask_w));
+ map(0x00a4, 0x00a7).rw(this, FUNC(sega_scu_device::irq_status_r), FUNC(sega_scu_device::irq_status_w));
// AM_RANGE(0x00a8, 0x00ab) AM_WRITE(abus_irqack_w)
// AM_RANGE(0x00b0, 0x00b7) AM_READWRITE(abus_set_r,abus_set_w)
// AM_RANGE(0x00b8, 0x00bb) AM_READWRITE(abus_refresh_r,abus_refresh_w)
// AM_RANGE(0x00c4, 0x00c7) AM_READWRITE(sdram_r,sdram_w)
- AM_RANGE(0x00c8, 0x00cb) AM_READ(version_r) // returns 4 for stock Saturn
-ADDRESS_MAP_END
+ map(0x00c8, 0x00cb).r(this, FUNC(sega_scu_device::version_r));
+}
//-------------------------------------------------
// sega_scu_device - constructor
diff --git a/src/devices/machine/stvcd.cpp b/src/devices/machine/stvcd.cpp
index 3535f2aa135..0d1dbfb59e3 100644
--- a/src/devices/machine/stvcd.cpp
+++ b/src/devices/machine/stvcd.cpp
@@ -1417,6 +1417,13 @@ void stvcd_device::cd_exec_command()
status_type = 0;
break;
+ // Get MPEG Card Boot ROM
+ // TODO: incomplete, needs to actually retrieve from MPEG ROM, just silence popmessage for now.
+ case 0xe2:
+ cr_standard_return(cd_stat);
+ hirqreg |= (CMOK|MPED);
+ break;
+
// following are MPEG commands, enough to get Sport Fishing to do something
// MPEG Get Status
case 0x90:
@@ -1449,6 +1456,7 @@ void stvcd_device::cd_exec_command()
cr4 = 0;
break;
+
default:
LOG("Unknown command %04x\n", cr1>>8);
popmessage("CD Block unknown command %02x, contact MAMEdev",cr1>>8);
diff --git a/src/devices/machine/tms5501.cpp b/src/devices/machine/tms5501.cpp
index ed770be8cfb..22afb2fd6b7 100644
--- a/src/devices/machine/tms5501.cpp
+++ b/src/devices/machine/tms5501.cpp
@@ -31,18 +31,19 @@ DEFINE_DEVICE_TYPE(TMS5501, tms5501_device, "tms5501", "TMS5501 Multifunction I/
// I/O address map
-ADDRESS_MAP_START(tms5501_device::io_map)
- AM_RANGE(0x00, 0x00) AM_READ(rb_r)
- AM_RANGE(0x01, 0x01) AM_READ(xi_r)
- AM_RANGE(0x02, 0x02) AM_READ(rst_r)
- AM_RANGE(0x03, 0x03) AM_READ(sta_r)
- AM_RANGE(0x04, 0x04) AM_WRITE(cmd_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(rr_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(tb_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(xo_w)
- AM_RANGE(0x08, 0x08) AM_WRITE(mr_w)
- AM_RANGE(0x09, 0x0d) AM_WRITE(tmr_w)
-ADDRESS_MAP_END
+void tms5501_device::io_map(address_map &map)
+{
+ map(0x00, 0x00).r(this, FUNC(tms5501_device::rb_r));
+ map(0x01, 0x01).r(this, FUNC(tms5501_device::xi_r));
+ map(0x02, 0x02).r(this, FUNC(tms5501_device::rst_r));
+ map(0x03, 0x03).r(this, FUNC(tms5501_device::sta_r));
+ map(0x04, 0x04).w(this, FUNC(tms5501_device::cmd_w));
+ map(0x05, 0x05).w(this, FUNC(tms5501_device::rr_w));
+ map(0x06, 0x06).w(this, FUNC(tms5501_device::tb_w));
+ map(0x07, 0x07).w(this, FUNC(tms5501_device::xo_w));
+ map(0x08, 0x08).w(this, FUNC(tms5501_device::mr_w));
+ map(0x09, 0x0d).w(this, FUNC(tms5501_device::tmr_w));
+}
diff --git a/src/devices/machine/upd765.cpp b/src/devices/machine/upd765.cpp
index 28ce1cd8126..d8ae17ecd31 100644
--- a/src/devices/machine/upd765.cpp
+++ b/src/devices/machine/upd765.cpp
@@ -22,78 +22,86 @@ DEFINE_DEVICE_TYPE(WD37C65C, wd37c65c_device, "wd37c65c", "Wes
DEFINE_DEVICE_TYPE(MCS3201, mcs3201_device, "mcs3201", "Motorola MCS3201 FDC")
DEFINE_DEVICE_TYPE(TC8566AF, tc8566af_device, "tc8566af", "Toshiba TC8566AF FDC")
-ADDRESS_MAP_START(upd765a_device::map)
- AM_RANGE(0x0, 0x0) AM_READ(msr_r)
- AM_RANGE(0x1, 0x1) AM_READWRITE(fifo_r, fifo_w)
-ADDRESS_MAP_END
+void upd765a_device::map(address_map &map)
+{
+ map(0x0, 0x0).r(this, FUNC(upd765a_device::msr_r));
+ map(0x1, 0x1).rw(this, FUNC(upd765a_device::fifo_r), FUNC(upd765a_device::fifo_w));
+}
ADDRESS_MAP_START(upd765b_device::map)
AM_RANGE(0x0, 0x0) AM_READ(msr_r)
AM_RANGE(0x1, 0x1) AM_READWRITE(fifo_r, fifo_w)
ADDRESS_MAP_END
-ADDRESS_MAP_START(i8272a_device::map)
- AM_RANGE(0x0, 0x0) AM_READ(msr_r)
- AM_RANGE(0x1, 0x1) AM_READWRITE(fifo_r, fifo_w)
-ADDRESS_MAP_END
+void i8272a_device::map(address_map &map)
+{
+ map(0x0, 0x0).r(this, FUNC(i8272a_device::msr_r));
+ map(0x1, 0x1).rw(this, FUNC(i8272a_device::fifo_r), FUNC(i8272a_device::fifo_w));
+}
-ADDRESS_MAP_START(upd72065_device::map)
- AM_RANGE(0x0, 0x0) AM_READ(msr_r)
- AM_RANGE(0x1, 0x1) AM_READWRITE(fifo_r, fifo_w)
-ADDRESS_MAP_END
+void upd72065_device::map(address_map &map)
+{
+ map(0x0, 0x0).r(this, FUNC(upd72065_device::msr_r));
+ map(0x1, 0x1).rw(this, FUNC(upd72065_device::fifo_r), FUNC(upd72065_device::fifo_w));
+}
ADDRESS_MAP_START(i82072_device::map)
AM_RANGE(0x0, 0x0) AM_READWRITE(msr_r, dsr_w)
AM_RANGE(0x1, 0x1) AM_READWRITE(fifo_r, fifo_w)
ADDRESS_MAP_END
-ADDRESS_MAP_START(smc37c78_device::map)
- AM_RANGE(0x2, 0x2) AM_READWRITE(dor_r, dor_w)
- AM_RANGE(0x3, 0x3) AM_READWRITE(tdr_r, tdr_w)
- AM_RANGE(0x4, 0x4) AM_READWRITE(msr_r, dsr_w)
- AM_RANGE(0x5, 0x5) AM_READWRITE(fifo_r, fifo_w)
- AM_RANGE(0x7, 0x7) AM_READWRITE(dir_r, ccr_w)
-ADDRESS_MAP_END
+void smc37c78_device::map(address_map &map)
+{
+ map(0x2, 0x2).rw(this, FUNC(smc37c78_device::dor_r), FUNC(smc37c78_device::dor_w));
+ map(0x3, 0x3).rw(this, FUNC(smc37c78_device::tdr_r), FUNC(smc37c78_device::tdr_w));
+ map(0x4, 0x4).rw(this, FUNC(smc37c78_device::msr_r), FUNC(smc37c78_device::dsr_w));
+ map(0x5, 0x5).rw(this, FUNC(smc37c78_device::fifo_r), FUNC(smc37c78_device::fifo_w));
+ map(0x7, 0x7).rw(this, FUNC(smc37c78_device::dir_r), FUNC(smc37c78_device::ccr_w));
+}
-ADDRESS_MAP_START(n82077aa_device::map)
- AM_RANGE(0x0, 0x0) AM_READ(sra_r)
- AM_RANGE(0x1, 0x1) AM_READ(srb_r)
- AM_RANGE(0x2, 0x2) AM_READWRITE(dor_r, dor_w)
- AM_RANGE(0x3, 0x3) AM_READWRITE(tdr_r, tdr_w)
- AM_RANGE(0x4, 0x4) AM_READWRITE(msr_r, dsr_w)
- AM_RANGE(0x5, 0x5) AM_READWRITE(fifo_r, fifo_w)
- AM_RANGE(0x7, 0x7) AM_READWRITE(dir_r, ccr_w)
-ADDRESS_MAP_END
+void n82077aa_device::map(address_map &map)
+{
+ map(0x0, 0x0).r(this, FUNC(n82077aa_device::sra_r));
+ map(0x1, 0x1).r(this, FUNC(n82077aa_device::srb_r));
+ map(0x2, 0x2).rw(this, FUNC(n82077aa_device::dor_r), FUNC(n82077aa_device::dor_w));
+ map(0x3, 0x3).rw(this, FUNC(n82077aa_device::tdr_r), FUNC(n82077aa_device::tdr_w));
+ map(0x4, 0x4).rw(this, FUNC(n82077aa_device::msr_r), FUNC(n82077aa_device::dsr_w));
+ map(0x5, 0x5).rw(this, FUNC(n82077aa_device::fifo_r), FUNC(n82077aa_device::fifo_w));
+ map(0x7, 0x7).rw(this, FUNC(n82077aa_device::dir_r), FUNC(n82077aa_device::ccr_w));
+}
-ADDRESS_MAP_START(pc_fdc_superio_device::map)
- AM_RANGE(0x0, 0x0) AM_READ(sra_r)
- AM_RANGE(0x1, 0x1) AM_READ(srb_r)
- AM_RANGE(0x2, 0x2) AM_READWRITE(dor_r, dor_w)
- AM_RANGE(0x3, 0x3) AM_READWRITE(tdr_r, tdr_w)
- AM_RANGE(0x4, 0x4) AM_READWRITE(msr_r, dsr_w)
- AM_RANGE(0x5, 0x5) AM_READWRITE(fifo_r, fifo_w)
- AM_RANGE(0x7, 0x7) AM_READWRITE(dir_r, ccr_w)
-ADDRESS_MAP_END
+void pc_fdc_superio_device::map(address_map &map)
+{
+ map(0x0, 0x0).r(this, FUNC(pc_fdc_superio_device::sra_r));
+ map(0x1, 0x1).r(this, FUNC(pc_fdc_superio_device::srb_r));
+ map(0x2, 0x2).rw(this, FUNC(pc_fdc_superio_device::dor_r), FUNC(pc_fdc_superio_device::dor_w));
+ map(0x3, 0x3).rw(this, FUNC(pc_fdc_superio_device::tdr_r), FUNC(pc_fdc_superio_device::tdr_w));
+ map(0x4, 0x4).rw(this, FUNC(pc_fdc_superio_device::msr_r), FUNC(pc_fdc_superio_device::dsr_w));
+ map(0x5, 0x5).rw(this, FUNC(pc_fdc_superio_device::fifo_r), FUNC(pc_fdc_superio_device::fifo_w));
+ map(0x7, 0x7).rw(this, FUNC(pc_fdc_superio_device::dir_r), FUNC(pc_fdc_superio_device::ccr_w));
+}
-ADDRESS_MAP_START(dp8473_device::map)
- AM_RANGE(0x0, 0x0) AM_READ(sra_r)
- AM_RANGE(0x1, 0x1) AM_READ(srb_r)
- AM_RANGE(0x2, 0x2) AM_READWRITE(dor_r, dor_w)
- AM_RANGE(0x3, 0x3) AM_READWRITE(tdr_r, tdr_w)
- AM_RANGE(0x4, 0x4) AM_READWRITE(msr_r, dsr_w)
- AM_RANGE(0x5, 0x5) AM_READWRITE(fifo_r, fifo_w)
- AM_RANGE(0x7, 0x7) AM_READWRITE(dir_r, ccr_w)
-ADDRESS_MAP_END
+void dp8473_device::map(address_map &map)
+{
+ map(0x0, 0x0).r(this, FUNC(dp8473_device::sra_r));
+ map(0x1, 0x1).r(this, FUNC(dp8473_device::srb_r));
+ map(0x2, 0x2).rw(this, FUNC(dp8473_device::dor_r), FUNC(dp8473_device::dor_w));
+ map(0x3, 0x3).rw(this, FUNC(dp8473_device::tdr_r), FUNC(dp8473_device::tdr_w));
+ map(0x4, 0x4).rw(this, FUNC(dp8473_device::msr_r), FUNC(dp8473_device::dsr_w));
+ map(0x5, 0x5).rw(this, FUNC(dp8473_device::fifo_r), FUNC(dp8473_device::fifo_w));
+ map(0x7, 0x7).rw(this, FUNC(dp8473_device::dir_r), FUNC(dp8473_device::ccr_w));
+}
-ADDRESS_MAP_START(pc8477a_device::map)
- AM_RANGE(0x0, 0x0) AM_READ(sra_r)
- AM_RANGE(0x1, 0x1) AM_READ(srb_r)
- AM_RANGE(0x2, 0x2) AM_READWRITE(dor_r, dor_w)
- AM_RANGE(0x3, 0x3) AM_READWRITE(tdr_r, tdr_w)
- AM_RANGE(0x4, 0x4) AM_READWRITE(msr_r, dsr_w)
- AM_RANGE(0x5, 0x5) AM_READWRITE(fifo_r, fifo_w)
- AM_RANGE(0x7, 0x7) AM_READWRITE(dir_r, ccr_w)
-ADDRESS_MAP_END
+void pc8477a_device::map(address_map &map)
+{
+ map(0x0, 0x0).r(this, FUNC(pc8477a_device::sra_r));
+ map(0x1, 0x1).r(this, FUNC(pc8477a_device::srb_r));
+ map(0x2, 0x2).rw(this, FUNC(pc8477a_device::dor_r), FUNC(pc8477a_device::dor_w));
+ map(0x3, 0x3).rw(this, FUNC(pc8477a_device::tdr_r), FUNC(pc8477a_device::tdr_w));
+ map(0x4, 0x4).rw(this, FUNC(pc8477a_device::msr_r), FUNC(pc8477a_device::dsr_w));
+ map(0x5, 0x5).rw(this, FUNC(pc8477a_device::fifo_r), FUNC(pc8477a_device::fifo_w));
+ map(0x7, 0x7).rw(this, FUNC(pc8477a_device::dir_r), FUNC(pc8477a_device::ccr_w));
+}
ADDRESS_MAP_START(wd37c65c_device::map)
AM_RANGE(0x0, 0x0) AM_READ(msr_r)
diff --git a/src/devices/sound/cdp1869.cpp b/src/devices/sound/cdp1869.cpp
index 3821d0fd7ef..e94e69f9202 100644
--- a/src/devices/sound/cdp1869.cpp
+++ b/src/devices/sound/cdp1869.cpp
@@ -73,14 +73,16 @@ ADDRESS_MAP_START(cdp1869_device::io_map)
ADDRESS_MAP_END
// character RAM map
-ADDRESS_MAP_START(cdp1869_device::char_map)
- AM_RANGE(0x000, 0x3ff) AM_READWRITE(char_ram_r, char_ram_w)
-ADDRESS_MAP_END
+void cdp1869_device::char_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw(this, FUNC(cdp1869_device::char_ram_r), FUNC(cdp1869_device::char_ram_w));
+}
// page RAM map
-ADDRESS_MAP_START(cdp1869_device::page_map)
- AM_RANGE(0x000, 0x7ff) AM_READWRITE(page_ram_r, page_ram_w)
-ADDRESS_MAP_END
+void cdp1869_device::page_map(address_map &map)
+{
+ map(0x000, 0x7ff).rw(this, FUNC(cdp1869_device::page_ram_r), FUNC(cdp1869_device::page_ram_w));
+}
// default address map
ADDRESS_MAP_START(cdp1869_device::cdp1869)
diff --git a/src/devices/sound/dave.cpp b/src/devices/sound/dave.cpp
index 20f0ef828e6..16ee02f5b60 100644
--- a/src/devices/sound/dave.cpp
+++ b/src/devices/sound/dave.cpp
@@ -28,13 +28,15 @@
DEFINE_DEVICE_TYPE(DAVE, dave_device, "dave", "Inteligent Designs DAVE")
-ADDRESS_MAP_START(dave_device::z80_program_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(program_r, program_w)
-ADDRESS_MAP_END
+void dave_device::z80_program_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(dave_device::program_r), FUNC(dave_device::program_w));
+}
-ADDRESS_MAP_START(dave_device::z80_io_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_r, io_w)
-ADDRESS_MAP_END
+void dave_device::z80_io_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(dave_device::io_r), FUNC(dave_device::io_w));
+}
ADDRESS_MAP_START(dave_device::program_map)
diff --git a/src/devices/video/huc6271.cpp b/src/devices/video/huc6271.cpp
index e6a1efde754..8f4b3102f97 100644
--- a/src/devices/video/huc6271.cpp
+++ b/src/devices/video/huc6271.cpp
@@ -40,14 +40,15 @@ huc6271_device::huc6271_device(const machine_config &mconfig, const char *tag, d
-ADDRESS_MAP_START(huc6271_device::regs)
- AM_RANGE(0x00, 0x01) AM_WRITENOP // hscroll
- AM_RANGE(0x02, 0x03) AM_WRITENOP // control
- AM_RANGE(0x04, 0x05) AM_WRITENOP // hsync
- AM_RANGE(0x06, 0x07) AM_WRITENOP // base Y
- AM_RANGE(0x08, 0x09) AM_WRITENOP // base U
- AM_RANGE(0x0a, 0x0b) AM_WRITENOP // base V
-ADDRESS_MAP_END
+void huc6271_device::regs(address_map &map)
+{
+ map(0x00, 0x01).nopw(); // hscroll
+ map(0x02, 0x03).nopw(); // control
+ map(0x04, 0x05).nopw(); // hsync
+ map(0x06, 0x07).nopw(); // base Y
+ map(0x08, 0x09).nopw(); // base U
+ map(0x0a, 0x0b).nopw(); // base V
+}
//-------------------------------------------------
// device_start - device-specific startup
diff --git a/src/devices/video/imagetek_i4100.cpp b/src/devices/video/imagetek_i4100.cpp
index 763b1413e1d..91a05b41a99 100644
--- a/src/devices/video/imagetek_i4100.cpp
+++ b/src/devices/video/imagetek_i4100.cpp
@@ -77,120 +77,123 @@ DEFINE_DEVICE_TYPE(I4100, imagetek_i4100_device, "i4100", "Imagetek I4100 052 VD
DEFINE_DEVICE_TYPE(I4220, imagetek_i4220_device, "i4220", "Imagetek I4220 071 VDP")
DEFINE_DEVICE_TYPE(I4300, imagetek_i4300_device, "i4300", "Imagetek I4300 095 VDP")
-ADDRESS_MAP_START(imagetek_i4100_device::map)
- AM_RANGE(0x00000, 0x1ffff) AM_READWRITE(vram_0_r, vram_0_w) AM_SHARE("vram_0")
- AM_RANGE(0x20000, 0x3ffff) AM_READWRITE(vram_1_r, vram_1_w) AM_SHARE("vram_1")
- AM_RANGE(0x40000, 0x5ffff) AM_READWRITE(vram_2_r, vram_2_w) AM_SHARE("vram_2")
- AM_RANGE(0x60000, 0x6ffff) AM_READ(gfxrom_r)
- AM_RANGE(0x70000, 0x71fff) AM_READWRITE(scratchram_r, scratchram_w) AM_SHARE("scratchram") // unknown, maybe palette
- AM_RANGE(0x72000, 0x73fff) AM_DEVREADWRITE("palette", palette_device, read16, write16) AM_SHARE("palette")
- AM_RANGE(0x74000, 0x74fff) AM_READWRITE(spriteram_r, spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x75000, 0x75fff) AM_READWRITE(rmw_vram_0_r, rmw_vram_0_w)
- AM_RANGE(0x76000, 0x76fff) AM_READWRITE(rmw_vram_1_r, rmw_vram_1_w)
- AM_RANGE(0x77000, 0x77fff) AM_READWRITE(rmw_vram_2_r, rmw_vram_2_w)
- AM_RANGE(0x78000, 0x787ff) AM_READWRITE(tiletable_r, tiletable_w) AM_SHARE("tiletable")
+void imagetek_i4100_device::map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rw(this, FUNC(imagetek_i4100_device::vram_0_r), FUNC(imagetek_i4100_device::vram_0_w)).share("vram_0");
+ map(0x20000, 0x3ffff).rw(this, FUNC(imagetek_i4100_device::vram_1_r), FUNC(imagetek_i4100_device::vram_1_w)).share("vram_1");
+ map(0x40000, 0x5ffff).rw(this, FUNC(imagetek_i4100_device::vram_2_r), FUNC(imagetek_i4100_device::vram_2_w)).share("vram_2");
+ map(0x60000, 0x6ffff).r(this, FUNC(imagetek_i4100_device::gfxrom_r));
+ map(0x70000, 0x71fff).rw(this, FUNC(imagetek_i4100_device::scratchram_r), FUNC(imagetek_i4100_device::scratchram_w)).share("scratchram"); // unknown, maybe palette
+ map(0x72000, 0x73fff).rw("palette", FUNC(palette_device::read16), FUNC(palette_device::write16)).share("palette");
+ map(0x74000, 0x74fff).rw(this, FUNC(imagetek_i4100_device::spriteram_r), FUNC(imagetek_i4100_device::spriteram_w)).share("spriteram");
+ map(0x75000, 0x75fff).rw(this, FUNC(imagetek_i4100_device::rmw_vram_0_r), FUNC(imagetek_i4100_device::rmw_vram_0_w));
+ map(0x76000, 0x76fff).rw(this, FUNC(imagetek_i4100_device::rmw_vram_1_r), FUNC(imagetek_i4100_device::rmw_vram_1_w));
+ map(0x77000, 0x77fff).rw(this, FUNC(imagetek_i4100_device::rmw_vram_2_r), FUNC(imagetek_i4100_device::rmw_vram_2_w));
+ map(0x78000, 0x787ff).rw(this, FUNC(imagetek_i4100_device::tiletable_r), FUNC(imagetek_i4100_device::tiletable_w)).share("tiletable");
// video registers
- AM_RANGE(0x78800, 0x78801) AM_READWRITE(sprite_count_r, sprite_count_w)
- AM_RANGE(0x78802, 0x78803) AM_READWRITE(sprite_priority_r, sprite_priority_w)
- AM_RANGE(0x78804, 0x78805) AM_READWRITE(sprite_yoffset_r, sprite_yoffset_w)
- AM_RANGE(0x78806, 0x78807) AM_READWRITE(sprite_xoffset_r, sprite_xoffset_w)
- AM_RANGE(0x78808, 0x78809) AM_READWRITE(sprite_color_code_r, sprite_color_code_w)
- AM_RANGE(0x78810, 0x78811) AM_READWRITE(layer_priority_r, layer_priority_w)
- AM_RANGE(0x78812, 0x78813) AM_READWRITE(background_color_r, background_color_w)
-
- AM_RANGE(0x78840, 0x7884d) AM_WRITE(blitter_w) AM_SHARE("blitter_regs")
- AM_RANGE(0x78850, 0x78851) AM_READWRITE(screen_yoffset_r, screen_yoffset_w)
- AM_RANGE(0x78852, 0x78853) AM_READWRITE(screen_xoffset_r, screen_xoffset_w)
- AM_RANGE(0x78860, 0x7886b) AM_READWRITE(window_r, window_w) AM_SHARE("windowregs")
- AM_RANGE(0x78870, 0x7887b) AM_READWRITE(scroll_r, scroll_w) AM_SHARE("scrollregs")
-
- AM_RANGE(0x78880, 0x78881) AM_WRITE(crtc_vert_w)
- AM_RANGE(0x78890, 0x78891) AM_WRITE(crtc_horz_w)
- AM_RANGE(0x788a0, 0x788a1) AM_WRITE(crtc_unlock_w)
- AM_RANGE(0x788aa, 0x788ab) AM_WRITE(rombank_w)
- AM_RANGE(0x788ac, 0x788ad) AM_WRITE(screen_ctrl_w)
-ADDRESS_MAP_END
+ map(0x78800, 0x78801).rw(this, FUNC(imagetek_i4100_device::sprite_count_r), FUNC(imagetek_i4100_device::sprite_count_w));
+ map(0x78802, 0x78803).rw(this, FUNC(imagetek_i4100_device::sprite_priority_r), FUNC(imagetek_i4100_device::sprite_priority_w));
+ map(0x78804, 0x78805).rw(this, FUNC(imagetek_i4100_device::sprite_yoffset_r), FUNC(imagetek_i4100_device::sprite_yoffset_w));
+ map(0x78806, 0x78807).rw(this, FUNC(imagetek_i4100_device::sprite_xoffset_r), FUNC(imagetek_i4100_device::sprite_xoffset_w));
+ map(0x78808, 0x78809).rw(this, FUNC(imagetek_i4100_device::sprite_color_code_r), FUNC(imagetek_i4100_device::sprite_color_code_w));
+ map(0x78810, 0x78811).rw(this, FUNC(imagetek_i4100_device::layer_priority_r), FUNC(imagetek_i4100_device::layer_priority_w));
+ map(0x78812, 0x78813).rw(this, FUNC(imagetek_i4100_device::background_color_r), FUNC(imagetek_i4100_device::background_color_w));
+
+ map(0x78840, 0x7884d).w(this, FUNC(imagetek_i4100_device::blitter_w)).share("blitter_regs");
+ map(0x78850, 0x78851).rw(this, FUNC(imagetek_i4100_device::screen_yoffset_r), FUNC(imagetek_i4100_device::screen_yoffset_w));
+ map(0x78852, 0x78853).rw(this, FUNC(imagetek_i4100_device::screen_xoffset_r), FUNC(imagetek_i4100_device::screen_xoffset_w));
+ map(0x78860, 0x7886b).rw(this, FUNC(imagetek_i4100_device::window_r), FUNC(imagetek_i4100_device::window_w)).share("windowregs");
+ map(0x78870, 0x7887b).rw(this, FUNC(imagetek_i4100_device::scroll_r), FUNC(imagetek_i4100_device::scroll_w)).share("scrollregs");
+
+ map(0x78880, 0x78881).w(this, FUNC(imagetek_i4100_device::crtc_vert_w));
+ map(0x78890, 0x78891).w(this, FUNC(imagetek_i4100_device::crtc_horz_w));
+ map(0x788a0, 0x788a1).w(this, FUNC(imagetek_i4100_device::crtc_unlock_w));
+ map(0x788aa, 0x788ab).w(this, FUNC(imagetek_i4100_device::rombank_w));
+ map(0x788ac, 0x788ad).w(this, FUNC(imagetek_i4100_device::screen_ctrl_w));
+}
// same as above but with moved video registers (now at 0x797**)
-ADDRESS_MAP_START(imagetek_i4220_device::v2_map)
- AM_RANGE(0x00000, 0x1ffff) AM_READWRITE(vram_0_r, vram_0_w) AM_SHARE("vram_0")
- AM_RANGE(0x20000, 0x3ffff) AM_READWRITE(vram_1_r, vram_1_w) AM_SHARE("vram_1")
- AM_RANGE(0x40000, 0x5ffff) AM_READWRITE(vram_2_r, vram_2_w) AM_SHARE("vram_2")
- AM_RANGE(0x60000, 0x6ffff) AM_READ(gfxrom_r)
- AM_RANGE(0x70000, 0x71fff) AM_READWRITE(scratchram_r, scratchram_w) AM_SHARE("scratchram") // unknown, maybe palette
- AM_RANGE(0x72000, 0x73fff) AM_DEVREADWRITE("palette", palette_device, read16, write16) AM_SHARE("palette")
- AM_RANGE(0x74000, 0x74fff) AM_READWRITE(spriteram_r, spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x75000, 0x75fff) AM_READWRITE(rmw_vram_0_r, rmw_vram_0_w)
- AM_RANGE(0x76000, 0x76fff) AM_READWRITE(rmw_vram_1_r, rmw_vram_1_w)
- AM_RANGE(0x77000, 0x77fff) AM_READWRITE(rmw_vram_2_r, rmw_vram_2_w)
- AM_RANGE(0x78000, 0x787ff) AM_READWRITE(tiletable_r, tiletable_w) AM_SHARE("tiletable")
-
- AM_RANGE(0x78840, 0x7884d) AM_WRITE(blitter_w) AM_SHARE("blitter_regs")
- AM_RANGE(0x78850, 0x78851) AM_READWRITE(screen_yoffset_r, screen_yoffset_w)
- AM_RANGE(0x78852, 0x78853) AM_READWRITE(screen_xoffset_r, screen_xoffset_w)
- AM_RANGE(0x78860, 0x7886b) AM_READWRITE(window_r, window_w) AM_SHARE("windowregs")
- AM_RANGE(0x78870, 0x7887b) AM_READWRITE(scroll_r, scroll_w) AM_SHARE("scrollregs")
-
- AM_RANGE(0x78880, 0x78881) AM_WRITE(crtc_vert_w)
- AM_RANGE(0x78890, 0x78891) AM_WRITE(crtc_horz_w)
- AM_RANGE(0x788a0, 0x788a1) AM_WRITE(crtc_unlock_w)
- AM_RANGE(0x788aa, 0x788ab) AM_WRITE(rombank_w)
- AM_RANGE(0x788ac, 0x788ad) AM_WRITE(screen_ctrl_w)
+void imagetek_i4220_device::v2_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rw(this, FUNC(imagetek_i4220_device::vram_0_r), FUNC(imagetek_i4220_device::vram_0_w)).share("vram_0");
+ map(0x20000, 0x3ffff).rw(this, FUNC(imagetek_i4220_device::vram_1_r), FUNC(imagetek_i4220_device::vram_1_w)).share("vram_1");
+ map(0x40000, 0x5ffff).rw(this, FUNC(imagetek_i4220_device::vram_2_r), FUNC(imagetek_i4220_device::vram_2_w)).share("vram_2");
+ map(0x60000, 0x6ffff).r(this, FUNC(imagetek_i4220_device::gfxrom_r));
+ map(0x70000, 0x71fff).rw(this, FUNC(imagetek_i4220_device::scratchram_r), FUNC(imagetek_i4220_device::scratchram_w)).share("scratchram"); // unknown, maybe palette
+ map(0x72000, 0x73fff).rw("palette", FUNC(palette_device::read16), FUNC(palette_device::write16)).share("palette");
+ map(0x74000, 0x74fff).rw(this, FUNC(imagetek_i4220_device::spriteram_r), FUNC(imagetek_i4220_device::spriteram_w)).share("spriteram");
+ map(0x75000, 0x75fff).rw(this, FUNC(imagetek_i4220_device::rmw_vram_0_r), FUNC(imagetek_i4220_device::rmw_vram_0_w));
+ map(0x76000, 0x76fff).rw(this, FUNC(imagetek_i4220_device::rmw_vram_1_r), FUNC(imagetek_i4220_device::rmw_vram_1_w));
+ map(0x77000, 0x77fff).rw(this, FUNC(imagetek_i4220_device::rmw_vram_2_r), FUNC(imagetek_i4220_device::rmw_vram_2_w));
+ map(0x78000, 0x787ff).rw(this, FUNC(imagetek_i4220_device::tiletable_r), FUNC(imagetek_i4220_device::tiletable_w)).share("tiletable");
+
+ map(0x78840, 0x7884d).w(this, FUNC(imagetek_i4220_device::blitter_w)).share("blitter_regs");
+ map(0x78850, 0x78851).rw(this, FUNC(imagetek_i4220_device::screen_yoffset_r), FUNC(imagetek_i4220_device::screen_yoffset_w));
+ map(0x78852, 0x78853).rw(this, FUNC(imagetek_i4220_device::screen_xoffset_r), FUNC(imagetek_i4220_device::screen_xoffset_w));
+ map(0x78860, 0x7886b).rw(this, FUNC(imagetek_i4220_device::window_r), FUNC(imagetek_i4220_device::window_w)).share("windowregs");
+ map(0x78870, 0x7887b).rw(this, FUNC(imagetek_i4220_device::scroll_r), FUNC(imagetek_i4220_device::scroll_w)).share("scrollregs");
+
+ map(0x78880, 0x78881).w(this, FUNC(imagetek_i4220_device::crtc_vert_w));
+ map(0x78890, 0x78891).w(this, FUNC(imagetek_i4220_device::crtc_horz_w));
+ map(0x788a0, 0x788a1).w(this, FUNC(imagetek_i4220_device::crtc_unlock_w));
+ map(0x788aa, 0x788ab).w(this, FUNC(imagetek_i4220_device::rombank_w));
+ map(0x788ac, 0x788ad).w(this, FUNC(imagetek_i4220_device::screen_ctrl_w));
// video registers
- AM_RANGE(0x79700, 0x79701) AM_READWRITE(sprite_count_r, sprite_count_w)
- AM_RANGE(0x79702, 0x79703) AM_READWRITE(sprite_priority_r, sprite_priority_w)
- AM_RANGE(0x79704, 0x79705) AM_READWRITE(sprite_yoffset_r, sprite_yoffset_w)
- AM_RANGE(0x79706, 0x79707) AM_READWRITE(sprite_xoffset_r, sprite_xoffset_w)
- AM_RANGE(0x79708, 0x79709) AM_READWRITE(sprite_color_code_r, sprite_color_code_w)
- AM_RANGE(0x79710, 0x79711) AM_READWRITE(layer_priority_r, layer_priority_w)
- AM_RANGE(0x79712, 0x79713) AM_READWRITE(background_color_r, background_color_w)
+ map(0x79700, 0x79701).rw(this, FUNC(imagetek_i4220_device::sprite_count_r), FUNC(imagetek_i4220_device::sprite_count_w));
+ map(0x79702, 0x79703).rw(this, FUNC(imagetek_i4220_device::sprite_priority_r), FUNC(imagetek_i4220_device::sprite_priority_w));
+ map(0x79704, 0x79705).rw(this, FUNC(imagetek_i4220_device::sprite_yoffset_r), FUNC(imagetek_i4220_device::sprite_yoffset_w));
+ map(0x79706, 0x79707).rw(this, FUNC(imagetek_i4220_device::sprite_xoffset_r), FUNC(imagetek_i4220_device::sprite_xoffset_w));
+ map(0x79708, 0x79709).rw(this, FUNC(imagetek_i4220_device::sprite_color_code_r), FUNC(imagetek_i4220_device::sprite_color_code_w));
+ map(0x79710, 0x79711).rw(this, FUNC(imagetek_i4220_device::layer_priority_r), FUNC(imagetek_i4220_device::layer_priority_w));
+ map(0x79712, 0x79713).rw(this, FUNC(imagetek_i4220_device::background_color_r), FUNC(imagetek_i4220_device::background_color_w));
// repeated here in Puzzlet compatibility mode
- AM_RANGE(0x78800, 0x78801) AM_READWRITE(sprite_count_r, sprite_count_w)
+ map(0x78800, 0x78801).rw(this, FUNC(imagetek_i4220_device::sprite_count_r), FUNC(imagetek_i4220_device::sprite_count_w));
// ... this one breaks Blazing Tornado tho
// AM_RANGE(0x78802, 0x78803) AM_READWRITE(sprite_priority_r, sprite_priority_w)
- AM_RANGE(0x78804, 0x78805) AM_READWRITE(sprite_yoffset_r, sprite_yoffset_w)
- AM_RANGE(0x78806, 0x78807) AM_READWRITE(sprite_xoffset_r, sprite_xoffset_w)
- AM_RANGE(0x78808, 0x78809) AM_READWRITE(sprite_color_code_r, sprite_color_code_w)
- AM_RANGE(0x78810, 0x78811) AM_READWRITE(layer_priority_r, layer_priority_w)
- AM_RANGE(0x78812, 0x78813) AM_READWRITE(background_color_r, background_color_w)
-ADDRESS_MAP_END
+ map(0x78804, 0x78805).rw(this, FUNC(imagetek_i4220_device::sprite_yoffset_r), FUNC(imagetek_i4220_device::sprite_yoffset_w));
+ map(0x78806, 0x78807).rw(this, FUNC(imagetek_i4220_device::sprite_xoffset_r), FUNC(imagetek_i4220_device::sprite_xoffset_w));
+ map(0x78808, 0x78809).rw(this, FUNC(imagetek_i4220_device::sprite_color_code_r), FUNC(imagetek_i4220_device::sprite_color_code_w));
+ map(0x78810, 0x78811).rw(this, FUNC(imagetek_i4220_device::layer_priority_r), FUNC(imagetek_i4220_device::layer_priority_w));
+ map(0x78812, 0x78813).rw(this, FUNC(imagetek_i4220_device::background_color_r), FUNC(imagetek_i4220_device::background_color_w));
+}
// more changes around, namely the screen offsets being reversed here
-ADDRESS_MAP_START(imagetek_i4300_device::v3_map)
- AM_RANGE(0x00000, 0x1ffff) AM_READWRITE(vram_0_r, vram_0_w) AM_SHARE("vram_0")
- AM_RANGE(0x20000, 0x3ffff) AM_READWRITE(vram_1_r, vram_1_w) AM_SHARE("vram_1")
- AM_RANGE(0x40000, 0x5ffff) AM_READWRITE(vram_2_r, vram_2_w) AM_SHARE("vram_2")
- AM_RANGE(0x60000, 0x6ffff) AM_READ(gfxrom_r)
- AM_RANGE(0x70000, 0x71fff) AM_READWRITE(scratchram_r, scratchram_w) AM_SHARE("scratchram") // unknown, maybe palette
- AM_RANGE(0x72000, 0x73fff) AM_DEVREADWRITE("palette", palette_device, read16, write16) AM_SHARE("palette")
- AM_RANGE(0x74000, 0x74fff) AM_READWRITE(spriteram_r, spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x75000, 0x75fff) AM_READWRITE(rmw_vram_0_r, rmw_vram_0_w)
- AM_RANGE(0x76000, 0x76fff) AM_READWRITE(rmw_vram_1_r, rmw_vram_1_w)
- AM_RANGE(0x77000, 0x77fff) AM_READWRITE(rmw_vram_2_r, rmw_vram_2_w)
- AM_RANGE(0x78000, 0x787ff) AM_READWRITE(tiletable_r, tiletable_w) AM_SHARE("tiletable")
- AM_RANGE(0x78808, 0x78809) AM_READWRITE(screen_xoffset_r, screen_xoffset_w)
- AM_RANGE(0x7880a, 0x7880b) AM_READWRITE(screen_yoffset_r, screen_yoffset_w)
- AM_RANGE(0x7880e, 0x7880f) AM_WRITE(screen_ctrl_w) // TODO: can be read back here (gakusai)
-
- AM_RANGE(0x78800, 0x78801) AM_WRITE(crtc_unlock_w)
- AM_RANGE(0x78802, 0x78803) AM_WRITE(crtc_horz_w)
- AM_RANGE(0x78804, 0x78805) AM_WRITE(crtc_vert_w)
-
- AM_RANGE(0x78840, 0x7884d) AM_WRITE(blitter_w) AM_SHARE("blitter_regs")
- AM_RANGE(0x78850, 0x7885b) AM_READWRITE(scroll_r, scroll_w) AM_SHARE("scrollregs")
- AM_RANGE(0x78860, 0x7886b) AM_READWRITE(window_r, window_w) AM_SHARE("windowregs")
- AM_RANGE(0x78870, 0x78871) AM_WRITE(rombank_w)
+void imagetek_i4300_device::v3_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rw(this, FUNC(imagetek_i4300_device::vram_0_r), FUNC(imagetek_i4300_device::vram_0_w)).share("vram_0");
+ map(0x20000, 0x3ffff).rw(this, FUNC(imagetek_i4300_device::vram_1_r), FUNC(imagetek_i4300_device::vram_1_w)).share("vram_1");
+ map(0x40000, 0x5ffff).rw(this, FUNC(imagetek_i4300_device::vram_2_r), FUNC(imagetek_i4300_device::vram_2_w)).share("vram_2");
+ map(0x60000, 0x6ffff).r(this, FUNC(imagetek_i4300_device::gfxrom_r));
+ map(0x70000, 0x71fff).rw(this, FUNC(imagetek_i4300_device::scratchram_r), FUNC(imagetek_i4300_device::scratchram_w)).share("scratchram"); // unknown, maybe palette
+ map(0x72000, 0x73fff).rw("palette", FUNC(palette_device::read16), FUNC(palette_device::write16)).share("palette");
+ map(0x74000, 0x74fff).rw(this, FUNC(imagetek_i4300_device::spriteram_r), FUNC(imagetek_i4300_device::spriteram_w)).share("spriteram");
+ map(0x75000, 0x75fff).rw(this, FUNC(imagetek_i4300_device::rmw_vram_0_r), FUNC(imagetek_i4300_device::rmw_vram_0_w));
+ map(0x76000, 0x76fff).rw(this, FUNC(imagetek_i4300_device::rmw_vram_1_r), FUNC(imagetek_i4300_device::rmw_vram_1_w));
+ map(0x77000, 0x77fff).rw(this, FUNC(imagetek_i4300_device::rmw_vram_2_r), FUNC(imagetek_i4300_device::rmw_vram_2_w));
+ map(0x78000, 0x787ff).rw(this, FUNC(imagetek_i4300_device::tiletable_r), FUNC(imagetek_i4300_device::tiletable_w)).share("tiletable");
+ map(0x78808, 0x78809).rw(this, FUNC(imagetek_i4300_device::screen_xoffset_r), FUNC(imagetek_i4300_device::screen_xoffset_w));
+ map(0x7880a, 0x7880b).rw(this, FUNC(imagetek_i4300_device::screen_yoffset_r), FUNC(imagetek_i4300_device::screen_yoffset_w));
+ map(0x7880e, 0x7880f).w(this, FUNC(imagetek_i4300_device::screen_ctrl_w)); // TODO: can be read back here (gakusai)
+
+ map(0x78800, 0x78801).w(this, FUNC(imagetek_i4300_device::crtc_unlock_w));
+ map(0x78802, 0x78803).w(this, FUNC(imagetek_i4300_device::crtc_horz_w));
+ map(0x78804, 0x78805).w(this, FUNC(imagetek_i4300_device::crtc_vert_w));
+
+ map(0x78840, 0x7884d).w(this, FUNC(imagetek_i4300_device::blitter_w)).share("blitter_regs");
+ map(0x78850, 0x7885b).rw(this, FUNC(imagetek_i4300_device::scroll_r), FUNC(imagetek_i4300_device::scroll_w)).share("scrollregs");
+ map(0x78860, 0x7886b).rw(this, FUNC(imagetek_i4300_device::window_r), FUNC(imagetek_i4300_device::window_w)).share("windowregs");
+ map(0x78870, 0x78871).w(this, FUNC(imagetek_i4300_device::rombank_w));
// video registers
- AM_RANGE(0x79700, 0x79701) AM_READWRITE(sprite_count_r, sprite_count_w)
- AM_RANGE(0x79702, 0x79703) AM_READWRITE(sprite_priority_r, sprite_priority_w)
- AM_RANGE(0x79704, 0x79705) AM_READWRITE(sprite_yoffset_r, sprite_yoffset_w)
- AM_RANGE(0x79706, 0x79707) AM_READWRITE(sprite_xoffset_r, sprite_xoffset_w)
- AM_RANGE(0x79708, 0x79709) AM_READWRITE(sprite_color_code_r, sprite_color_code_w)
- AM_RANGE(0x79710, 0x79711) AM_READWRITE(layer_priority_r, layer_priority_w)
- AM_RANGE(0x79712, 0x79713) AM_READWRITE(background_color_r, background_color_w)
-ADDRESS_MAP_END
+ map(0x79700, 0x79701).rw(this, FUNC(imagetek_i4300_device::sprite_count_r), FUNC(imagetek_i4300_device::sprite_count_w));
+ map(0x79702, 0x79703).rw(this, FUNC(imagetek_i4300_device::sprite_priority_r), FUNC(imagetek_i4300_device::sprite_priority_w));
+ map(0x79704, 0x79705).rw(this, FUNC(imagetek_i4300_device::sprite_yoffset_r), FUNC(imagetek_i4300_device::sprite_yoffset_w));
+ map(0x79706, 0x79707).rw(this, FUNC(imagetek_i4300_device::sprite_xoffset_r), FUNC(imagetek_i4300_device::sprite_xoffset_w));
+ map(0x79708, 0x79709).rw(this, FUNC(imagetek_i4300_device::sprite_color_code_r), FUNC(imagetek_i4300_device::sprite_color_code_w));
+ map(0x79710, 0x79711).rw(this, FUNC(imagetek_i4300_device::layer_priority_r), FUNC(imagetek_i4300_device::layer_priority_w));
+ map(0x79712, 0x79713).rw(this, FUNC(imagetek_i4300_device::background_color_r), FUNC(imagetek_i4300_device::background_color_w));
+}
//**************************************************************************
diff --git a/src/devices/video/jangou_blitter.cpp b/src/devices/video/jangou_blitter.cpp
index c0ec764e2d2..6eda24f873d 100644
--- a/src/devices/video/jangou_blitter.cpp
+++ b/src/devices/video/jangou_blitter.cpp
@@ -41,26 +41,28 @@ jangou_blitter_device::jangou_blitter_device(const machine_config &mconfig, cons
}
-ADDRESS_MAP_START(jangou_blitter_device::blit_v1_regs)
- AM_RANGE(0x00, 0x00) AM_WRITE(src_lo_address_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(src_md_address_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(x_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(y_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(width_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(height_and_trigger_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(src_hi_address_w)
-ADDRESS_MAP_END
+void jangou_blitter_device::blit_v1_regs(address_map &map)
+{
+ map(0x00, 0x00).w(this, FUNC(jangou_blitter_device::src_lo_address_w));
+ map(0x01, 0x01).w(this, FUNC(jangou_blitter_device::src_md_address_w));
+ map(0x02, 0x02).w(this, FUNC(jangou_blitter_device::x_w));
+ map(0x03, 0x03).w(this, FUNC(jangou_blitter_device::y_w));
+ map(0x04, 0x04).w(this, FUNC(jangou_blitter_device::width_w));
+ map(0x05, 0x05).w(this, FUNC(jangou_blitter_device::height_and_trigger_w));
+ map(0x06, 0x06).w(this, FUNC(jangou_blitter_device::src_hi_address_w));
+}
// Sexy Gal and variants (v2) swaps around upper src address
-ADDRESS_MAP_START(jangou_blitter_device::blit_v2_regs)
- AM_RANGE(0x00, 0x00) AM_WRITE(src_lo_address_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(src_md_address_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(src_hi_address_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(x_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(y_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(width_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(height_and_trigger_w)
-ADDRESS_MAP_END
+void jangou_blitter_device::blit_v2_regs(address_map &map)
+{
+ map(0x00, 0x00).w(this, FUNC(jangou_blitter_device::src_lo_address_w));
+ map(0x01, 0x01).w(this, FUNC(jangou_blitter_device::src_md_address_w));
+ map(0x02, 0x02).w(this, FUNC(jangou_blitter_device::src_hi_address_w));
+ map(0x03, 0x03).w(this, FUNC(jangou_blitter_device::x_w));
+ map(0x04, 0x04).w(this, FUNC(jangou_blitter_device::y_w));
+ map(0x05, 0x05).w(this, FUNC(jangou_blitter_device::width_w));
+ map(0x06, 0x06).w(this, FUNC(jangou_blitter_device::height_and_trigger_w));
+}
//-------------------------------------------------
// device_start - device-specific startup
diff --git a/src/devices/video/msm6255.cpp b/src/devices/video/msm6255.cpp
index 4513327160a..c30810214b1 100644
--- a/src/devices/video/msm6255.cpp
+++ b/src/devices/video/msm6255.cpp
@@ -54,10 +54,11 @@
DEFINE_DEVICE_TYPE(MSM6255, msm6255_device, "msm6255", "Oki MSM6255 LCD Controller")
// I/O map
-ADDRESS_MAP_START(msm6255_device::map)
- AM_RANGE(0x00, 0x00) AM_READWRITE(dr_r, dr_w)
- AM_RANGE(0x01, 0x01) AM_READWRITE(ir_r, ir_w)
-ADDRESS_MAP_END
+void msm6255_device::map(address_map &map)
+{
+ map(0x00, 0x00).rw(this, FUNC(msm6255_device::dr_r), FUNC(msm6255_device::dr_w));
+ map(0x01, 0x01).rw(this, FUNC(msm6255_device::ir_r), FUNC(msm6255_device::ir_w));
+}
// default address map
ADDRESS_MAP_START(msm6255_device::msm6255)
diff --git a/src/devices/video/stvvdp1.cpp b/src/devices/video/stvvdp1.cpp
index 3f439bdb89e..d8bafd6570c 100644
--- a/src/devices/video/stvvdp1.cpp
+++ b/src/devices/video/stvvdp1.cpp
@@ -1062,6 +1062,19 @@ void saturn_state::drawpixel_generic(int x, int y, int patterndata, int offsetcn
case 4: /* Gouraud shading */
m_vdp1.framebuffer_draw_lines[y][x] = stv_vdp1_apply_gouraud_shading( x, y, pix );
break;
+ case 7: /* Gouraud-shading + half-transparent */
+ // Lupin the 3rd Pyramid no Kenja enemy shadows
+ // Death Crimson lives indicators
+ // TODO: latter looks really bad.
+ if ( m_vdp1.framebuffer_draw_lines[y][x] & 0x8000 )
+ {
+ m_vdp1.framebuffer_draw_lines[y][x] = stv_vdp1_apply_gouraud_shading( x, y, alpha_blend_r16( m_vdp1.framebuffer_draw_lines[y][x], pix, 0x80 ) | 0x8000 );
+ }
+ else
+ {
+ m_vdp1.framebuffer_draw_lines[y][x] = stv_vdp1_apply_gouraud_shading( x, y, pix );
+ }
+ break;
default:
// TODO: mode 5: prohibited, mode 6: gouraud shading + half-luminance, mode 7: gouraud-shading + half-transparent
popmessage("VDP1 PMOD = %02x, contact MAMEdev",stv2_current_sprite.CMDPMOD & 0x7);
diff --git a/src/devices/video/stvvdp2.cpp b/src/devices/video/stvvdp2.cpp
index 64bede9535f..d6849470b92 100644
--- a/src/devices/video/stvvdp2.cpp
+++ b/src/devices/video/stvvdp2.cpp
@@ -4194,12 +4194,18 @@ void saturn_state::stv_vdp2_draw_basic_tilemap(bitmap_rgb32 &bitmap, const recta
// store map information
stv_vdp2_layer_data_placement.map_offset_min = 0x7fffffff;
stv_vdp2_layer_data_placement.map_offset_max = 0x00000000;
+
for (i = 0; i < stv2_current_tilemap.map_count; i++)
{
+ uint32_t max_base;
+
if ( base[i] < stv_vdp2_layer_data_placement.map_offset_min )
stv_vdp2_layer_data_placement.map_offset_min = base[i];
- if ( base[i] > stv_vdp2_layer_data_placement.map_offset_max )
- stv_vdp2_layer_data_placement.map_offset_max = base[i];
+
+ // Head On in Sega Memorial Collection 1 cares (uses RBG0 with all map regs equal to 0x20)
+ max_base = (base[i] + plsize_bytes/4);
+ if ( max_base > stv_vdp2_layer_data_placement.map_offset_max )
+ stv_vdp2_layer_data_placement.map_offset_max = max_base;
}
@@ -4505,7 +4511,7 @@ void saturn_state::stv_vdp2_check_tilemap(bitmap_rgb32 &bitmap, const rectangle
popmessage("Special Function Code Select enable %04x %04x, contact MAMEdev",STV_VDP2_SFSEL,STV_VDP2_SFCODE);
/* Albert Odyssey Gaiden 0x0001 */
- /* Asuka 120% (doesn't make sense?) 0x0101 */
+ /* Asuka 120% 0x0101 */
/* Slam n Jam 96 0x0003 */
if(STV_VDP2_ZMCTL & 0x0200)
popmessage("Reduction enable %04x, contact MAMEdev",STV_VDP2_ZMCTL);
@@ -4775,6 +4781,9 @@ void saturn_state::stv_vdp2_copy_roz_bitmap(bitmap_rgb32 &bitmap,
y = ys >> 16;
if ( x & clipxmask || y & clipymask ) continue;
+ if ( stv_vdp2_roz_window(hcnt, vcnt) == false )
+ continue;
+
if ( stv2_current_tilemap.roz_mode3 == true )
{
if( stv_vdp2_roz_mode3_window(hcnt, vcnt, iRP-1) == false )
@@ -4934,7 +4943,30 @@ void saturn_state::stv_vdp2_copy_roz_bitmap(bitmap_rgb32 &bitmap,
}
}
-bool saturn_state::stv_vdp2_roz_mode3_window(int x, int y, int rot_parameter)
+inline bool saturn_state::stv_vdp2_roz_window(int x, int y)
+{
+ int s_x=0,e_x=0,s_y=0,e_y=0;
+ int w0_pix, w1_pix;
+ uint8_t logic = STV_VDP2_R0LOG;
+ uint8_t w0_enable = STV_VDP2_R0W0E;
+ uint8_t w1_enable = STV_VDP2_R0W1E;
+ uint8_t w0_area = STV_VDP2_R0W0A;
+ uint8_t w1_area = STV_VDP2_R0W1A;
+
+ if (w0_enable == 0 &&
+ w1_enable == 0)
+ return true;
+
+ stv_vdp2_get_window0_coordinates(&s_x, &e_x, &s_y, &e_y);
+ w0_pix = get_roz_window_pixel(s_x,e_x,s_y,e_y,x,y,w0_enable, w0_area);
+
+ stv_vdp2_get_window1_coordinates(&s_x, &e_x, &s_y, &e_y);
+ w1_pix = get_roz_window_pixel(s_x,e_x,s_y,e_y,x,y,w1_enable, w1_area);
+
+ return (logic & 1 ? (w0_pix | w1_pix) : (w0_pix & w1_pix));
+}
+
+inline bool saturn_state::stv_vdp2_roz_mode3_window(int x, int y, int rot_parameter)
{
int s_x=0,e_x=0,s_y=0,e_y=0;
int w0_pix, w1_pix;
@@ -4949,15 +4981,15 @@ bool saturn_state::stv_vdp2_roz_mode3_window(int x, int y, int rot_parameter)
return rot_parameter ^ 1;
stv_vdp2_get_window0_coordinates(&s_x, &e_x, &s_y, &e_y);
- w0_pix = get_roz_mode3_window_pixel(s_x,e_x,s_y,e_y,x,y,w0_enable, w0_area);
+ w0_pix = get_roz_window_pixel(s_x,e_x,s_y,e_y,x,y,w0_enable, w0_area);
stv_vdp2_get_window1_coordinates(&s_x, &e_x, &s_y, &e_y);
- w1_pix = get_roz_mode3_window_pixel(s_x,e_x,s_y,e_y,x,y,w1_enable, w1_area);
+ w1_pix = get_roz_window_pixel(s_x,e_x,s_y,e_y,x,y,w1_enable, w1_area);
return (logic & 1 ? (w0_pix | w1_pix) : (w0_pix & w1_pix)) ^ rot_parameter;
}
-int saturn_state::get_roz_mode3_window_pixel(int s_x,int e_x,int s_y,int e_y,int x, int y,uint8_t winenable, uint8_t winarea)
+inline int saturn_state::get_roz_window_pixel(int s_x,int e_x,int s_y,int e_y,int x, int y,uint8_t winenable, uint8_t winarea)
{
int res;
@@ -5381,7 +5413,7 @@ void saturn_state::stv_vdp2_draw_NBG3(bitmap_rgb32 &bitmap, const rectangle &cli
void saturn_state::stv_vdp2_draw_rotation_screen(bitmap_rgb32 &bitmap, const rectangle &cliprect, int iRP)
{
- rectangle roz_clip_rect, mycliprect;
+ rectangle roz_clip_rect;
int planesizex = 0, planesizey = 0;
int planerenderedsizex, planerenderedsizey;
uint8_t colour_calculation_enabled;
@@ -5484,13 +5516,32 @@ void saturn_state::stv_vdp2_draw_rotation_screen(bitmap_rgb32 &bitmap, const rec
// which will be annoying to emulate with this video structure.
// Let's see if anything will do it ...
if(STV_VDP2_RPW0E || STV_VDP2_RPW1E)
- popmessage("ROZ Mode 3 enabled without zooming, contact MAMEdev!");
+ popmessage("ROZ Mode 3 window enabled without zooming, contact MAMEdev!");
if(iRP == 2)
return;
}
- stv_vdp2_check_tilemap(bitmap,cliprect);
+ // TODO: legacy code, to be removed
+ stv2_current_tilemap.window_control.logic = STV_VDP2_R0LOG;
+ stv2_current_tilemap.window_control.enabled[0] = STV_VDP2_R0W0E;
+ stv2_current_tilemap.window_control.enabled[1] = STV_VDP2_R0W1E;
+// stv2_current_tilemap.window_control.? = STV_VDP2_R0SWE;
+ stv2_current_tilemap.window_control.area[0] = STV_VDP2_R0W0A;
+ stv2_current_tilemap.window_control.area[1] = STV_VDP2_R0W1A;
+// stv2_current_tilemap.window_control.? = STV_VDP2_R0SWA;
+
+ rectangle mycliprect = cliprect;
+
+ if ( stv2_current_tilemap.window_control.enabled[0] || stv2_current_tilemap.window_control.enabled[1] )
+ {
+ //popmessage("Window control for RBG");
+ stv_vdp2_apply_window_on_layer(mycliprect);
+ stv2_current_tilemap.window_control.enabled[0] = 0;
+ stv2_current_tilemap.window_control.enabled[1] = 0;
+ }
+
+ stv_vdp2_check_tilemap(bitmap,mycliprect);
}
else
{
@@ -5554,9 +5605,10 @@ void saturn_state::stv_vdp2_draw_rotation_screen(bitmap_rgb32 &bitmap, const rec
stv2_current_tilemap.transparency = STV_TRANSPARENCY_ALPHA;
}
+ #ifdef UNUSED_FUNCTION
+ // old reference code
mycliprect = cliprect;
- /* TODO: remove me. */
if ( stv2_current_tilemap.window_control.enabled[0] || stv2_current_tilemap.window_control.enabled[1] )
{
//popmessage("Window control for RBG");
@@ -5564,11 +5616,12 @@ void saturn_state::stv_vdp2_draw_rotation_screen(bitmap_rgb32 &bitmap, const rec
stv2_current_tilemap.window_control.enabled[0] = 0;
stv2_current_tilemap.window_control.enabled[1] = 0;
}
+ #endif
stv2_current_tilemap.fade_control = fade_control;
g_profiler.start(PROFILER_USER2);
- stv_vdp2_copy_roz_bitmap(bitmap, m_vdp2.roz_bitmap[iRP-1], mycliprect, iRP, planesizex, planesizey, planerenderedsizex, planerenderedsizey );
+ stv_vdp2_copy_roz_bitmap(bitmap, m_vdp2.roz_bitmap[iRP-1], cliprect, iRP, planesizex, planesizey, planerenderedsizex, planerenderedsizey );
g_profiler.stop();
}
@@ -5629,12 +5682,13 @@ void saturn_state::stv_vdp2_draw_RBG0(bitmap_rgb32 &bitmap, const rectangle &cli
stv2_current_tilemap.colour_ram_address_offset = STV_VDP2_R0CAOS;
stv2_current_tilemap.fade_control = (STV_VDP2_R0COEN * 1) | (STV_VDP2_R0COSL * 2);
stv_vdp2_check_fade_control_for_layer();
- stv2_current_tilemap.window_control.logic = STV_VDP2_R0LOG;
- stv2_current_tilemap.window_control.enabled[0] = STV_VDP2_R0W0E;
- stv2_current_tilemap.window_control.enabled[1] = STV_VDP2_R0W1E;
+ // disable these, we apply them in the roz routines (they were interfering with stv_vdp2_roz_window() ?)
+ stv2_current_tilemap.window_control.logic = 0; //STV_VDP2_R0LOG;
+ stv2_current_tilemap.window_control.enabled[0] = 0; //STV_VDP2_R0W0E;
+ stv2_current_tilemap.window_control.enabled[1] = 0; //STV_VDP2_R0W1E;
// stv2_current_tilemap.window_control.? = STV_VDP2_R0SWE;
- stv2_current_tilemap.window_control.area[0] = STV_VDP2_R0W0A;
- stv2_current_tilemap.window_control.area[1] = STV_VDP2_R0W1A;
+ stv2_current_tilemap.window_control.area[0] = 0; //STV_VDP2_R0W0A;
+ stv2_current_tilemap.window_control.area[1] = 0; //STV_VDP2_R0W1A;
// stv2_current_tilemap.window_control.? = STV_VDP2_R0SWA;
stv2_current_tilemap.scrollx = 0;
diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp
index 47a860b9adb..f32d6c91d2d 100644
--- a/src/emu/machine.cpp
+++ b/src/emu/machine.cpp
@@ -1318,9 +1318,10 @@ WRITE8_MEMBER(dummy_space_device::write)
throw emu_fatalerror("Attempted to write to generic address space (offs %X = %02X)\n", offset, data);
}
-ADDRESS_MAP_START(dummy_space_device::dummy)
- AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void dummy_space_device::dummy(address_map &map)
+{
+ map(0x00000000, 0xffffffff).rw(this, FUNC(dummy_space_device::read), FUNC(dummy_space_device::write));
+}
DEFINE_DEVICE_TYPE(DUMMY_SPACE, dummy_space_device, "dummy_space", "Dummy Space")
diff --git a/src/mame/audio/8080bw.cpp b/src/mame/audio/8080bw.cpp
index b8ec710d20f..a62568a5ae8 100644
--- a/src/mame/audio/8080bw.cpp
+++ b/src/mame/audio/8080bw.cpp
@@ -1137,6 +1137,84 @@ WRITE8_MEMBER(_8080bw_state::schasercv_sh_port_2_w)
+/*****************************************/
+/* Crash Road preliminary sound */
+/* Much more work needs to be done */
+/*****************************************/
+
+WRITE8_MEMBER(_8080bw_state::crashrd_port03_w)
+{
+ int effect;
+
+ /* bit 0 - Dot Sound Pitch (SX1)
+ bit 2 - Explosion (SX5)
+ bit 4 - Dot Sound Enable (SX0)
+ bit 5 - Effect Sound C (SX4) */
+
+ m_discrete->write(space, SCHASER_SND_EN, BIT(data,5));
+ machine().sound().system_enable(BIT(data,5));
+ m_discrete->write(space, SCHASER_DOT_EN, BIT(data, 4));
+ m_discrete->write(space, SCHASER_DOT_SEL, BIT(data, 0));
+
+ /* The effect is a variable rate 555 timer. A diode/resistor array is used to
+ * select the frequency. Because of the diode voltage drop, we can not use the
+ * standard 555 time formulas. Also, when effect=0, the charge resistor
+ * is disconnected. This causes the charge on the cap to slowly bleed off, but
+ * but the bleed time is so long, that we can just cheat and put the time on hold
+ * when effect = 0. */
+ effect = 0; //(data >> 2) & 0x07;
+ if (m_schaser_last_effect != effect)
+ {
+ if (effect)
+ {
+ if (m_schaser_effect_555_time_remain != attotime::zero)
+ {
+ /* timer re-enabled, use up remaining 555 high time */
+ m_schaser_effect_555_timer->adjust(m_schaser_effect_555_time_remain, effect);
+ }
+ else if (!m_schaser_effect_555_is_low)
+ {
+ /* set 555 high time */
+ attotime new_time = attotime(0, ATTOSECONDS_PER_SECOND * .8873 * schaser_effect_rc[effect]);
+ m_schaser_effect_555_timer->adjust(new_time, effect);
+ }
+ }
+ else
+ {
+ /* disable effect - stops at end of low cycle */
+ if (!m_schaser_effect_555_is_low)
+ {
+ m_schaser_effect_555_time_remain = m_schaser_effect_555_timer->time_left();
+ m_schaser_effect_555_time_remain_savable = m_schaser_effect_555_time_remain.as_double();
+ m_schaser_effect_555_timer->adjust(attotime::never);
+ }
+ }
+ m_schaser_last_effect = effect;
+ }
+
+ m_schaser_explosion = BIT(data, 2);
+ if (m_schaser_explosion)
+ {
+ m_sn->amplitude_res_w(1.0 / (1.0/RES_K(200) + 1.0/RES_K(68)));
+ }
+ else
+ {
+ m_sn->amplitude_res_w(RES_K(200));
+ }
+ m_sn->enable_w(!(m_schaser_effect_555_is_low || m_schaser_explosion));
+ m_sn->one_shot_cap_voltage_w(!(m_schaser_effect_555_is_low || m_schaser_explosion) ? 0 : sn76477_device::EXTERNAL_VOLTAGE_DISCONNECT);
+ m_sn->mixer_b_w(m_schaser_explosion);
+}
+
+WRITE8_MEMBER(_8080bw_state::crashrd_port05_w)
+{
+ // bit 0 = bitstream audio
+ // bit 4 = not sure
+ m_discrete->write(space, SCHASER_MUSIC_BIT, BIT(data, 0));
+}
+
+
+
/*******************************************************************/
/* Yosakdon preliminary sound */
/* No information available as what the correct sounds are */
diff --git a/src/mame/audio/dcs.cpp b/src/mame/audio/dcs.cpp
index a15a3533b17..53fe54a4d2b 100644
--- a/src/mame/audio/dcs.cpp
+++ b/src/mame/audio/dcs.cpp
@@ -287,40 +287,44 @@ void dcs_audio_device::dcs_2k_data_map(address_map &map)
/* DCS 2k with UART memory map */
-ADDRESS_MAP_START(dcs_audio_device::dcs_2k_uart_data_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_READWRITE(dcs_dataram_r, dcs_dataram_w)
- AM_RANGE(0x2000, 0x2fff) AM_ROMBANK("databank")
- AM_RANGE(0x3000, 0x33ff) AM_WRITE(dcs_data_bank_select_w)
- AM_RANGE(0x3400, 0x3402) AM_NOP /* UART (ignored) */
- AM_RANGE(0x3403, 0x3403) AM_READWRITE(input_latch_r, output_latch_w)
- AM_RANGE(0x3404, 0x3405) AM_NOP /* UART (ignored) */
- AM_RANGE(0x3800, 0x39ff) AM_RAM AM_SHARE("iram")
- AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(adsp_control_r, adsp_control_w)
-ADDRESS_MAP_END
+void dcs_audio_device::dcs_2k_uart_data_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x1800).rw(this, FUNC(dcs_audio_device::dcs_dataram_r), FUNC(dcs_audio_device::dcs_dataram_w));
+ map(0x2000, 0x2fff).bankr("databank");
+ map(0x3000, 0x33ff).w(this, FUNC(dcs_audio_device::dcs_data_bank_select_w));
+ map(0x3400, 0x3402).noprw(); /* UART (ignored) */
+ map(0x3403, 0x3403).rw(this, FUNC(dcs_audio_device::input_latch_r), FUNC(dcs_audio_device::output_latch_w));
+ map(0x3404, 0x3405).noprw(); /* UART (ignored) */
+ map(0x3800, 0x39ff).ram().share("iram");
+ map(0x3fe0, 0x3fff).rw(this, FUNC(dcs_audio_device::adsp_control_r), FUNC(dcs_audio_device::adsp_control_w));
+}
/* DCS 8k memory map */
-ADDRESS_MAP_START(dcs_audio_device::dcs_8k_program_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("dcsint")
- AM_RANGE(0x0800, 0x1fff) AM_RAM AM_SHARE("dcsext")
- AM_RANGE(0x3000, 0x3003) AM_READWRITE(input_latch32_r, output_latch32_w) // why?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dcs_audio_device::dcs_8k_data_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x1fff) AM_READWRITE(dcs_dataram_r, dcs_dataram_w)
- AM_RANGE(0x2000, 0x2fff) AM_ROMBANK("databank")
- AM_RANGE(0x3000, 0x3000) AM_WRITE(dcs_data_bank_select_w)
- AM_RANGE(0x3400, 0x3403) AM_READWRITE(input_latch_r, output_latch_w) // mk3 etc. need this
- AM_RANGE(0x3800, 0x39ff) AM_RAM AM_SHARE("iram")
- AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(adsp_control_r, adsp_control_w)
-ADDRESS_MAP_END
+void dcs_audio_device::dcs_8k_program_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram().share("dcsint");
+ map(0x0800, 0x1fff).ram().share("dcsext");
+ map(0x3000, 0x3003).rw(this, FUNC(dcs_audio_device::input_latch32_r), FUNC(dcs_audio_device::output_latch32_w)); // why?
+}
+
+void dcs_audio_device::dcs_8k_data_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x1fff).rw(this, FUNC(dcs_audio_device::dcs_dataram_r), FUNC(dcs_audio_device::dcs_dataram_w));
+ map(0x2000, 0x2fff).bankr("databank");
+ map(0x3000, 0x3000).w(this, FUNC(dcs_audio_device::dcs_data_bank_select_w));
+ map(0x3400, 0x3403).rw(this, FUNC(dcs_audio_device::input_latch_r), FUNC(dcs_audio_device::output_latch_w)); // mk3 etc. need this
+ map(0x3800, 0x39ff).ram().share("iram");
+ map(0x3fe0, 0x3fff).rw(this, FUNC(dcs_audio_device::adsp_control_r), FUNC(dcs_audio_device::adsp_control_w));
+}
/* Williams WPC DCS/Security Pinball */
-ADDRESS_MAP_START(dcs_audio_device::dcs_wpc_program_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("dcsint")
- AM_RANGE(0x1000, 0x3fff) AM_RAM AM_SHARE("dcsext")
-ADDRESS_MAP_END
+void dcs_audio_device::dcs_wpc_program_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram().share("dcsint");
+ map(0x1000, 0x3fff).ram().share("dcsext");
+}
void dcs_audio_wpc_device::dcs_wpc_data_map(address_map &map)
{
@@ -339,40 +343,44 @@ void dcs_audio_wpc_device::dcs_wpc_data_map(address_map &map)
*
*************************************/
-ADDRESS_MAP_START(dcs_audio_device::dcs2_2115_program_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("dcsint")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dcs_audio_device::dcs2_2104_program_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x01ff) AM_RAM AM_SHARE("dcsint")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(dcs_audio_device::dcs2_2115_data_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0400, 0x0400) AM_READWRITE(input_latch_r, input_latch_ack_w)
- AM_RANGE(0x0401, 0x0401) AM_WRITE(output_latch_w)
- AM_RANGE(0x0402, 0x0402) AM_READWRITE(output_control_r, output_control_w)
- AM_RANGE(0x0403, 0x0403) AM_READ(latch_status_r)
- AM_RANGE(0x0404, 0x0407) AM_READ(fifo_input_r)
- AM_RANGE(0x0480, 0x0483) AM_READWRITE(sdrc_r, sdrc_w)
- AM_RANGE(0x3800, 0x39ff) AM_RAM AM_SHARE("iram")
- AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(adsp_control_r, adsp_control_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dcs_audio_device::dcs2_2104_data_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0400, 0x0400) AM_READWRITE(input_latch_r, input_latch_ack_w)
- AM_RANGE(0x0401, 0x0401) AM_WRITE(output_latch_w)
- AM_RANGE(0x0402, 0x0402) AM_READWRITE(output_control_r, output_control_w)
- AM_RANGE(0x0403, 0x0403) AM_READ(latch_status_r)
- AM_RANGE(0x0404, 0x0407) AM_READ(fifo_input_r)
- AM_RANGE(0x0480, 0x0483) AM_READWRITE(sdrc_r, sdrc_w)
- AM_RANGE(0x3800, 0x39ff) AM_RAM AM_SHARE("iram")
- AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(adsp_control_r, adsp_control_w)
-ADDRESS_MAP_END
+void dcs_audio_device::dcs2_2115_program_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).ram().share("dcsint");
+}
+
+void dcs_audio_device::dcs2_2104_program_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x01ff).ram().share("dcsint");
+}
+
+
+void dcs_audio_device::dcs2_2115_data_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0400, 0x0400).rw(this, FUNC(dcs_audio_device::input_latch_r), FUNC(dcs_audio_device::input_latch_ack_w));
+ map(0x0401, 0x0401).w(this, FUNC(dcs_audio_device::output_latch_w));
+ map(0x0402, 0x0402).rw(this, FUNC(dcs_audio_device::output_control_r), FUNC(dcs_audio_device::output_control_w));
+ map(0x0403, 0x0403).r(this, FUNC(dcs_audio_device::latch_status_r));
+ map(0x0404, 0x0407).r(this, FUNC(dcs_audio_device::fifo_input_r));
+ map(0x0480, 0x0483).rw(this, FUNC(dcs_audio_device::sdrc_r), FUNC(dcs_audio_device::sdrc_w));
+ map(0x3800, 0x39ff).ram().share("iram");
+ map(0x3fe0, 0x3fff).rw(this, FUNC(dcs_audio_device::adsp_control_r), FUNC(dcs_audio_device::adsp_control_w));
+}
+
+void dcs_audio_device::dcs2_2104_data_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0400, 0x0400).rw(this, FUNC(dcs_audio_device::input_latch_r), FUNC(dcs_audio_device::input_latch_ack_w));
+ map(0x0401, 0x0401).w(this, FUNC(dcs_audio_device::output_latch_w));
+ map(0x0402, 0x0402).rw(this, FUNC(dcs_audio_device::output_control_r), FUNC(dcs_audio_device::output_control_w));
+ map(0x0403, 0x0403).r(this, FUNC(dcs_audio_device::latch_status_r));
+ map(0x0404, 0x0407).r(this, FUNC(dcs_audio_device::fifo_input_r));
+ map(0x0480, 0x0483).rw(this, FUNC(dcs_audio_device::sdrc_r), FUNC(dcs_audio_device::sdrc_w));
+ map(0x3800, 0x39ff).ram().share("iram");
+ map(0x3fe0, 0x3fff).rw(this, FUNC(dcs_audio_device::adsp_control_r), FUNC(dcs_audio_device::adsp_control_w));
+}
@@ -382,33 +390,37 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(dcs_audio_device::dsio_program_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("dcsint")
-ADDRESS_MAP_END
+void dcs_audio_device::dsio_program_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).ram().share("dcsint");
+}
-ADDRESS_MAP_START(dcs_audio_device::dsio_data_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_DEVICE("data_map_bank", address_map_bank_device, amap16)
- AM_RANGE(0x2000, 0x3fdf) AM_RAM AM_SHARE("dcsint_data")
- AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(adsp_control_r, adsp_control_w)
-ADDRESS_MAP_END
+void dcs_audio_device::dsio_data_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).m("data_map_bank", FUNC(address_map_bank_device::amap16));
+ map(0x2000, 0x3fdf).ram().share("dcsint_data");
+ map(0x3fe0, 0x3fff).rw(this, FUNC(dcs_audio_device::adsp_control_r), FUNC(dcs_audio_device::adsp_control_w));
+}
-ADDRESS_MAP_START(dcs_audio_device::dsio_rambank_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_RAMBANK("databank")
-ADDRESS_MAP_END
+void dcs_audio_device::dsio_rambank_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x3fff).bankrw("databank");
+}
-ADDRESS_MAP_START(dcs_audio_device::dsio_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0400, 0x0400) AM_READWRITE(input_latch_r, input_latch_ack_w)
- AM_RANGE(0x0401, 0x0401) AM_WRITE(output_latch_w)
- AM_RANGE(0x0402, 0x0402) AM_READWRITE(output_control_r, output_control_w)
- AM_RANGE(0x0403, 0x0403) AM_READ(latch_status_r)
- AM_RANGE(0x0404, 0x0407) AM_READ(fifo_input_r)
- AM_RANGE(0x0480, 0x0483) AM_READWRITE(dsio_r, dsio_w)
-ADDRESS_MAP_END
+void dcs_audio_device::dsio_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0400, 0x0400).rw(this, FUNC(dcs_audio_device::input_latch_r), FUNC(dcs_audio_device::input_latch_ack_w));
+ map(0x0401, 0x0401).w(this, FUNC(dcs_audio_device::output_latch_w));
+ map(0x0402, 0x0402).rw(this, FUNC(dcs_audio_device::output_control_r), FUNC(dcs_audio_device::output_control_w));
+ map(0x0403, 0x0403).r(this, FUNC(dcs_audio_device::latch_status_r));
+ map(0x0404, 0x0407).r(this, FUNC(dcs_audio_device::fifo_input_r));
+ map(0x0480, 0x0483).rw(this, FUNC(dcs_audio_device::dsio_r), FUNC(dcs_audio_device::dsio_w));
+}
@@ -418,34 +430,38 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(dcs_audio_device::denver_program_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("dcsint")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(dcs_audio_device::denver_data_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_DEVICE("data_map_bank", address_map_bank_device, amap16)
- AM_RANGE(0x2000, 0x3fdf) AM_RAM AM_SHARE("dcsint_data")
- AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(adsp_control_r, adsp_control_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dcs_audio_device::denver_rambank_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_RAMBANK("databank")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(dcs_audio_device::denver_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0400, 0x0400) AM_READWRITE(input_latch_r, input_latch_ack_w)
- AM_RANGE(0x0401, 0x0401) AM_WRITE(output_latch_w)
- AM_RANGE(0x0402, 0x0402) AM_READWRITE(output_control_r, output_control_w)
- AM_RANGE(0x0403, 0x0403) AM_READ(latch_status_r)
- AM_RANGE(0x0404, 0x0407) AM_READ(fifo_input_r)
- AM_RANGE(0x0480, 0x0483) AM_READWRITE(denver_r, denver_w)
-ADDRESS_MAP_END
+void dcs_audio_device::denver_program_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).ram().share("dcsint");
+}
+
+
+void dcs_audio_device::denver_data_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).m("data_map_bank", FUNC(address_map_bank_device::amap16));
+ map(0x2000, 0x3fdf).ram().share("dcsint_data");
+ map(0x3fe0, 0x3fff).rw(this, FUNC(dcs_audio_device::adsp_control_r), FUNC(dcs_audio_device::adsp_control_w));
+}
+
+void dcs_audio_device::denver_rambank_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x3fff).bankrw("databank");
+}
+
+
+void dcs_audio_device::denver_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0400, 0x0400).rw(this, FUNC(dcs_audio_device::input_latch_r), FUNC(dcs_audio_device::input_latch_ack_w));
+ map(0x0401, 0x0401).w(this, FUNC(dcs_audio_device::output_latch_w));
+ map(0x0402, 0x0402).rw(this, FUNC(dcs_audio_device::output_control_r), FUNC(dcs_audio_device::output_control_w));
+ map(0x0403, 0x0403).r(this, FUNC(dcs_audio_device::latch_status_r));
+ map(0x0404, 0x0407).r(this, FUNC(dcs_audio_device::fifo_input_r));
+ map(0x0480, 0x0483).rw(this, FUNC(dcs_audio_device::denver_r), FUNC(dcs_audio_device::denver_w));
+}
/*************************************
diff --git a/src/mame/audio/flower.cpp b/src/mame/audio/flower.cpp
index 23a109e1b24..0380586b5dc 100644
--- a/src/mame/audio/flower.cpp
+++ b/src/mame/audio/flower.cpp
@@ -24,14 +24,15 @@
DEFINE_DEVICE_TYPE(FLOWER_CUSTOM, flower_sound_device, "flower_sound", "Flower Custom Sound")
// TODO: AM_SELECT unsupported by DEVICE_ADDRESS_MAP, so we need a trampoline here
-ADDRESS_MAP_START(flower_sound_device::regs_map)
- AM_RANGE(0x00, 0x03) AM_SELECT(0x38) AM_WRITE(frequency_w)
- AM_RANGE(0x04, 0x04) AM_SELECT(0x38) AM_WRITE(repeat_w)
- AM_RANGE(0x05, 0x05) AM_SELECT(0x38) AM_WRITE(unk_w)
- AM_RANGE(0x07, 0x07) AM_SELECT(0x38) AM_WRITE(volume_w)
- AM_RANGE(0x40, 0x45) AM_SELECT(0x38) AM_WRITE(start_address_w)
- AM_RANGE(0x47, 0x47) AM_SELECT(0x38) AM_WRITE(sample_trigger_w)
-ADDRESS_MAP_END
+void flower_sound_device::regs_map(address_map &map)
+{
+ map(0x00, 0x03).select(0x38).w(this, FUNC(flower_sound_device::frequency_w));
+ map(0x04, 0x04).select(0x38).w(this, FUNC(flower_sound_device::repeat_w));
+ map(0x05, 0x05).select(0x38).w(this, FUNC(flower_sound_device::unk_w));
+ map(0x07, 0x07).select(0x38).w(this, FUNC(flower_sound_device::volume_w));
+ map(0x40, 0x45).select(0x38).w(this, FUNC(flower_sound_device::start_address_w));
+ map(0x47, 0x47).select(0x38).w(this, FUNC(flower_sound_device::sample_trigger_w));
+}
//**************************************************************************
// LIVE DEVICE
diff --git a/src/mame/audio/irem.cpp b/src/mame/audio/irem.cpp
index 57940dfe1db..556ff0f1e63 100644
--- a/src/mame/audio/irem.cpp
+++ b/src/mame/audio/irem.cpp
@@ -358,32 +358,36 @@ DISCRETE_SOUND_END
/* complete address map verified from Moon Patrol/10 Yard Fight schematics */
/* large map uses 8k ROMs, small map uses 4k ROMs; this is selected via a jumper */
-ADDRESS_MAP_START(irem_audio_device::m52_small_sound_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x0fff) AM_WRITE(m52_adpcm_w)
- AM_RANGE(0x1000, 0x1fff) AM_WRITE(sound_irq_ack_w)
- AM_RANGE(0x2000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void irem_audio_device::m52_small_sound_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x0fff).w(this, FUNC(irem_audio_device::m52_adpcm_w));
+ map(0x1000, 0x1fff).w(this, FUNC(irem_audio_device::sound_irq_ack_w));
+ map(0x2000, 0x7fff).rom();
+}
-ADDRESS_MAP_START(irem_audio_device::m52_large_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_WRITE(m52_adpcm_w)
- AM_RANGE(0x2000, 0x3fff) AM_WRITE(sound_irq_ack_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void irem_audio_device::m52_large_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).w(this, FUNC(irem_audio_device::m52_adpcm_w));
+ map(0x2000, 0x3fff).w(this, FUNC(irem_audio_device::sound_irq_ack_w));
+ map(0x4000, 0xffff).rom();
+}
/* complete address map verified from Kid Niki schematics */
-ADDRESS_MAP_START(irem_audio_device::m62_sound_map)
- AM_RANGE(0x0800, 0x0800) AM_MIRROR(0xf7fc) AM_WRITE(sound_irq_ack_w)
- AM_RANGE(0x0801, 0x0802) AM_MIRROR(0xf7fc) AM_WRITE(m62_adpcm_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void irem_audio_device::m62_sound_map(address_map &map)
+{
+ map(0x0800, 0x0800).mirror(0xf7fc).w(this, FUNC(irem_audio_device::sound_irq_ack_w));
+ map(0x0801, 0x0802).mirror(0xf7fc).w(this, FUNC(irem_audio_device::m62_adpcm_w));
+ map(0x4000, 0xffff).rom();
+}
-ADDRESS_MAP_START(irem_audio_device::irem_sound_portmap)
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READWRITE(m6803_port1_r, m6803_port1_w)
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(m6803_port2_r, m6803_port2_w)
-ADDRESS_MAP_END
+void irem_audio_device::irem_sound_portmap(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1).rw(this, FUNC(irem_audio_device::m6803_port1_r), FUNC(irem_audio_device::m6803_port1_w));
+ map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(irem_audio_device::m6803_port2_r), FUNC(irem_audio_device::m6803_port2_w));
+}
/*
* Original recordings:
diff --git a/src/mame/audio/midway.cpp b/src/mame/audio/midway.cpp
index a1943dc6ac1..147708089a7 100644
--- a/src/mame/audio/midway.cpp
+++ b/src/mame/audio/midway.cpp
@@ -932,14 +932,15 @@ void midway_squawk_n_talk_device::squawkntalk_map(address_map &map)
// alternate address map if the ROM jumpers are changed to support a smaller
// ROM size of 2k
#ifdef UNUSED_FUNCTION
-ADDRESS_MAP_START(midway_squawk_n_talk_device::squawkntalk_alt_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x007f) AM_RAM // internal RAM
- AM_RANGE(0x0080, 0x0083) AM_MIRROR(0x676c) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0090, 0x0093) AM_MIRROR(0x676c) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x0800, 0x0fff) AM_MIRROR(0x6000) AM_WRITE(dac_w)
- AM_RANGE(0x8000, 0x9fff) AM_MIRROR(0x6000) AM_ROM
-ADDRESS_MAP_END
+void midway_squawk_n_talk_device::squawkntalk_alt_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x007f).ram(); // internal RAM
+ map(0x0080, 0x0083).mirror(0x676c).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0090, 0x0093).mirror(0x676c).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0800, 0x0fff).mirror(0x6000).w(this, FUNC(midway_squawk_n_talk_device::dac_w));
+ map(0x8000, 0x9fff).mirror(0x6000).rom();
+}
#endif
diff --git a/src/mame/audio/segasnd.cpp b/src/mame/audio/segasnd.cpp
index 53aa78b52f5..c74b2d2aefb 100644
--- a/src/mame/audio/segasnd.cpp
+++ b/src/mame/audio/segasnd.cpp
@@ -885,9 +885,10 @@ usb_rom_sound_device::usb_rom_sound_device(const machine_config &mconfig, const
{
}
-ADDRESS_MAP_START(usb_sound_device::usb_map_rom)
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION(":usbcpu", 0)
-ADDRESS_MAP_END
+void usb_sound_device::usb_map_rom(address_map &map)
+{
+ map(0x0000, 0x0fff).rom().region(":usbcpu", 0);
+}
MACHINE_CONFIG_START(usb_rom_sound_device::device_add_mconfig)
usb_sound_device::device_add_mconfig(config);
diff --git a/src/mame/drivers/8080bw.cpp b/src/mame/drivers/8080bw.cpp
index 546f5b3cc21..16c9eeaad40 100644
--- a/src/mame/drivers/8080bw.cpp
+++ b/src/mame/drivers/8080bw.cpp
@@ -187,9 +187,6 @@
- Steel Worker, Space Combat
Holding down the coin button causes the credits to rapidly increase.
- - Solfight
- On the stage with rolling balls, lots of random dashes appear.
-
*****************************************************************************/
@@ -1617,9 +1614,21 @@ void _8080bw_state::schasercv_io_map(address_map &map)
map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::schasercv_sh_port_1_w));
map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
map(0x05, 0x05).w(this, FUNC(_8080bw_state::schasercv_sh_port_2_w));
+ //map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+}
+
+void _8080bw_state::crashrd_io_map(address_map &map)
+{
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::crashrd_port03_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::crashrd_port05_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
}
+
static INPUT_PORTS_START( schasercv )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
@@ -1694,6 +1703,12 @@ MACHINE_CONFIG_START(_8080bw_state::schasercv)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
+MACHINE_CONFIG_START(_8080bw_state::crashrd)
+ schaser(config);
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_IO_MAP(crashrd_io_map)
+MACHINE_CONFIG_END
+
/*******************************************************/
@@ -5214,7 +5229,7 @@ GAME( 1979, schaserb, schaser, schaser, schaser, _8080bw_state, 0,
GAME( 1979, schaserc, schaser, schaser, schaser, _8080bw_state, 0, ROT270, "Taito", "Space Chaser (set 4)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS )
GAME( 1979, schasercv, schaser, schasercv, schasercv, _8080bw_state, 0, ROT270, "Taito", "Space Chaser (CV version - set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS )
GAME( 1979, schaserm, schaser, schaser, schaserm, _8080bw_state, 0, ROT270, "bootleg (Model Racing)", "Space Chaser (Model Racing bootleg)", MACHINE_SUPPORTS_SAVE ) // on original Taito PCB, hacked to be harder?
-GAME( 1979, crashrd, schaser, schaser, schaserm, _8080bw_state, 0, ROT270, "bootleg (Centromatic)", "Crash Road (bootleg of Space Chaser)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) // PCB marked 'Imbader'; "Taito Corporation" on title screen replaced with a Spanish phone number
+GAME( 1979, crashrd, schaser, crashrd, schaserm, _8080bw_state, 0, ROT270, "bootleg (Centromatic)", "Crash Road (bootleg of Space Chaser)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL ) // PCB marked 'Imbader'; "Taito Corporation" on title screen replaced with a Spanish phone number
GAME( 1979, sflush, 0, sflush, sflush, _8080bw_state, 0, ROT270, "Taito", "Straight Flush", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL)
diff --git a/src/mame/drivers/abc80x.cpp b/src/mame/drivers/abc80x.cpp
index f0fb206c4bb..e2f39912a4b 100644
--- a/src/mame/drivers/abc80x.cpp
+++ b/src/mame/drivers/abc80x.cpp
@@ -514,47 +514,50 @@ void abc800c_state::abc800c_mem(address_map &map)
// ADDRESS_MAP( abc800c_io )
//-------------------------------------------------
-ADDRESS_MAP_START(abc800_state::abc800c_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, inp_r, out_w)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, stat_r, cs_w)
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c1_w)
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c2_w)
- AM_RANGE(0x04, 0x04) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c3_w)
- AM_RANGE(0x05, 0x05) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c4_w)
- AM_RANGE(0x05, 0x05) AM_MIRROR(0x18) AM_READ(pling_r)
- AM_RANGE(0x06, 0x06) AM_MIRROR(0x18) AM_WRITE(hrs_w)
- AM_RANGE(0x07, 0x07) AM_MIRROR(0x18) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_device, rst_r) AM_WRITE(hrc_w)
- AM_RANGE(0x20, 0x23) AM_MIRROR(0x0c) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x40, 0x43) AM_MIRROR(0x1c) AM_DEVREADWRITE(Z80SIO_TAG, z80sio2_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x60, 0x63) AM_MIRROR(0x1c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
-ADDRESS_MAP_END
+void abc800_state::abc800c_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0x18).rw(ABCBUS_TAG, FUNC(abcbus_slot_device::inp_r), FUNC(abcbus_slot_device::out_w));
+ map(0x01, 0x01).mirror(0x18).rw(ABCBUS_TAG, FUNC(abcbus_slot_device::stat_r), FUNC(abcbus_slot_device::cs_w));
+ map(0x02, 0x02).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c1_w));
+ map(0x03, 0x03).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c2_w));
+ map(0x04, 0x04).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c3_w));
+ map(0x05, 0x05).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c4_w));
+ map(0x05, 0x05).mirror(0x18).r(this, FUNC(abc800_state::pling_r));
+ map(0x06, 0x06).mirror(0x18).w(this, FUNC(abc800_state::hrs_w));
+ map(0x07, 0x07).mirror(0x18).r(ABCBUS_TAG, FUNC(abcbus_slot_device::rst_r)).w(this, FUNC(abc800_state::hrc_w));
+ map(0x20, 0x23).mirror(0x0c).rw(m_dart, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0x40, 0x43).mirror(0x1c).rw(m_sio, FUNC(z80sio2_device::ba_cd_r), FUNC(z80sio2_device::ba_cd_w));
+ map(0x60, 0x63).mirror(0x1c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( abc800m_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(abc800_state::abc800m_mem)
+void abc800_state::abc800m_mem(address_map &map)
+{
map.unmap_value_high();
map(0x0000, 0x3fff).ram().share("video_ram");
map(0x4000, 0x77ff).rom();
map(0x7800, 0x7fff).ram().share("char_ram");
map(0x8000, 0xffff).ram();
-ADDRESS_MAP_END
+}
//-------------------------------------------------
// ADDRESS_MAP( abc800m_io )
//-------------------------------------------------
-ADDRESS_MAP_START(abc800_state::abc800m_io)
- AM_IMPORT_FROM( abc800c_io )
- AM_RANGE(0x31, 0x31) AM_MIRROR(0x06) AM_DEVREAD(MC6845_TAG, mc6845_device, register_r)
- AM_RANGE(0x38, 0x38) AM_MIRROR(0x06) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w)
- AM_RANGE(0x39, 0x39) AM_MIRROR(0x06) AM_DEVWRITE(MC6845_TAG, mc6845_device, register_w)
-ADDRESS_MAP_END
+void abc800_state::abc800m_io(address_map &map)
+{
+ abc800c_io(map);
+ map(0x31, 0x31).mirror(0x06).r(MC6845_TAG, FUNC(mc6845_device::register_r));
+ map(0x38, 0x38).mirror(0x06).w(MC6845_TAG, FUNC(mc6845_device::address_w));
+ map(0x39, 0x39).mirror(0x06).w(MC6845_TAG, FUNC(mc6845_device::register_w));
+}
//-------------------------------------------------
diff --git a/src/mame/drivers/amiga.cpp b/src/mame/drivers/amiga.cpp
index e16fe40c0db..9409ca59563 100644
--- a/src/mame/drivers/amiga.cpp
+++ b/src/mame/drivers/amiga.cpp
@@ -1018,39 +1018,44 @@ void a1000_state::a1000_mem(address_map &map)
}
// Gary/Super Gary/Gayle with 512KB chip RAM
-ADDRESS_MAP_START(amiga_state::overlay_512kb_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void amiga_state::overlay_512kb_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x07ffff).mirror(0x180000).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
// Gary/Super Gary/Gayle with 1MB chip RAM
-ADDRESS_MAP_START(amiga_state::overlay_1mb_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x0fffff) AM_MIRROR(0x100000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void amiga_state::overlay_1mb_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x0fffff).mirror(0x100000).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
// Gary/Super Gary/Gayle with 1MB chip RAM (32 bit system)
-ADDRESS_MAP_START(amiga_state::overlay_1mb_map32)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x0fffff) AM_MIRROR(0x100000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void amiga_state::overlay_1mb_map32(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x0fffff).mirror(0x100000).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
// Gary/Super Gary/Gayle with 2MB chip RAM (32 bit system)
-ADDRESS_MAP_START(amiga_state::overlay_2mb_map16)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void amiga_state::overlay_2mb_map16(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
// Gary/Super Gary/Gayle with 2MB chip RAM (32 bit system)
-ADDRESS_MAP_START(amiga_state::overlay_2mb_map32)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void amiga_state::overlay_2mb_map32(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
// 512KB chip RAM, 512KB slow RAM, RTC
void a2000_state::a2000_mem(address_map &map)
diff --git a/src/mame/drivers/asuka.cpp b/src/mame/drivers/asuka.cpp
index a322a657693..8bacf2b22d0 100644
--- a/src/mame/drivers/asuka.cpp
+++ b/src/mame/drivers/asuka.cpp
@@ -38,7 +38,7 @@ The other games seem identical but Eto is slightly different.
0x400000 - 0x40000f : input ports and dipswitches
0x3a0000 - 0x3a0003 : sprite control
0x3e0000 - 0x3e0003 : communication with sound CPU
-0xc00000 - 0xc2000f : TC0100SCN (see taitoic.c)
+0xc00000 - 0xc2000f : TC0100SCN (see video/tc0100scn.cpp)
0xd00000 - 0xd007ff : sprite RAM
@@ -261,15 +261,9 @@ INTERRUPT_GEN_MEMBER(asuka_state::cadash_interrupt)
WRITE8_MEMBER(asuka_state::sound_bankswitch_w)
{
- membank("audiobank")->set_entry(data & 0x03);
+ m_audiobank->set_entry(data & 0x03);
}
-WRITE8_MEMBER(asuka_state::sound_bankswitch_2151_w)
-{
- membank("audiobank")->set_entry(data & 0x03);
-}
-
-
WRITE_LINE_MEMBER(asuka_state::asuka_msm5205_vck)
{
@@ -798,7 +792,7 @@ GFXDECODE_END
void asuka_state::machine_start()
{
/* configure the banks */
- membank("audiobank")->configure_entries(0, 4, memregion("audiocpu")->base(), 0x04000);
+ m_audiobank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x04000);
save_item(NAME(m_adpcm_pos));
save_item(NAME(m_adpcm_ff));
@@ -961,7 +955,7 @@ MACHINE_CONFIG_START(asuka_state::asuka)
MCFG_YM2151_ADD("ymsnd", XTAL(16'000'000)/4) /* verified on pcb */
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(asuka_state,sound_bankswitch_2151_w))
+ MCFG_YM2151_PORT_WRITE_HANDLER(MEMBANK("audiobank")) MCFG_DEVCB_MASK(0x03)
MCFG_SOUND_ROUTE(0, "mono", 0.50)
MCFG_SOUND_ROUTE(1, "mono", 0.50)
@@ -1037,7 +1031,7 @@ MACHINE_CONFIG_START(asuka_state::cadash)
MCFG_YM2151_ADD("ymsnd", XTAL(8'000'000)/2) /* verified on pcb */
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(asuka_state,sound_bankswitch_2151_w))
+ MCFG_YM2151_PORT_WRITE_HANDLER(MEMBANK("audiobank")) MCFG_DEVCB_MASK(0x03)
MCFG_SOUND_ROUTE(0, "mono", 0.50)
MCFG_SOUND_ROUTE(1, "mono", 0.50)
@@ -1100,7 +1094,7 @@ MACHINE_CONFIG_START(asuka_state::mofflott)
MCFG_YM2151_ADD("ymsnd", 4000000)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(asuka_state,sound_bankswitch_2151_w))
+ MCFG_YM2151_PORT_WRITE_HANDLER(MEMBANK("audiobank")) MCFG_DEVCB_MASK(0x03)
MCFG_SOUND_ROUTE(0, "mono", 0.50)
MCFG_SOUND_ROUTE(1, "mono", 0.50)
@@ -1171,7 +1165,7 @@ MACHINE_CONFIG_START(asuka_state::eto)
MCFG_YM2151_ADD("ymsnd", 4000000)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(asuka_state,sound_bankswitch_2151_w))
+ MCFG_YM2151_PORT_WRITE_HANDLER(MEMBANK("audiobank")) MCFG_DEVCB_MASK(0x03)
MCFG_SOUND_ROUTE(0, "mono", 0.50)
MCFG_SOUND_ROUTE(1, "mono", 0.50)
diff --git a/src/mame/drivers/atlantis.cpp b/src/mame/drivers/atlantis.cpp
index 293f61a2f1f..5954dd949ce 100644
--- a/src/mame/drivers/atlantis.cpp
+++ b/src/mame/drivers/atlantis.cpp
@@ -665,43 +665,47 @@ void atlantis_state::device_timer(emu_timer &timer, device_timer_id id, int para
/*************************************
* Address Maps
*************************************/
-ADDRESS_MAP_START(atlantis_state::map0)
- AM_RANGE(0x00000000, 0x0001ffff) AM_READWRITE8(cmos_r, cmos_w, 0xff)
+void atlantis_state::map0(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).rw(this, FUNC(atlantis_state::cmos_r), FUNC(atlantis_state::cmos_w)).umask32(0x000000ff);
//AM_RANGE(0x00080000, 0x000?0000) AM_READWRITE8(zeus debug)
- AM_RANGE(0x00100000, 0x0010001f) AM_DEVREADWRITE8("uart1", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial UART1 (TL16C552 CS0)
- AM_RANGE(0x00180000, 0x0018001f) AM_DEVREADWRITE8("uart2", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial UART2 (TL16C552 CS1)
- AM_RANGE(0x00200000, 0x0020001f) AM_READWRITE8(parallel_r, parallel_w, 0xff) // Parallel UART (TL16C552 CS2)
- AM_RANGE(0x00400000, 0x007fffff) AM_READWRITE8(exprom_r, exprom_w, 0xff) // EXPROM
- AM_RANGE(0x00800000, 0x00f00003) AM_READWRITE(board_ctrl_r, board_ctrl_w)
+ map(0x00100000, 0x0010001f).rw(m_uart1, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask32(0x000000ff); // Serial UART1 (TL16C552 CS0)
+ map(0x00180000, 0x0018001f).rw(m_uart2, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask32(0x000000ff); // Serial UART2 (TL16C552 CS1)
+ map(0x00200000, 0x0020001f).rw(this, FUNC(atlantis_state::parallel_r), FUNC(atlantis_state::parallel_w)).umask32(0x000000ff); // Parallel UART (TL16C552 CS2)
+ map(0x00400000, 0x007fffff).rw(this, FUNC(atlantis_state::exprom_r), FUNC(atlantis_state::exprom_w)).umask32(0x000000ff); // EXPROM
+ map(0x00800000, 0x00f00003).rw(this, FUNC(atlantis_state::board_ctrl_r), FUNC(atlantis_state::board_ctrl_w));
//AM_RANGE(0x00d80000, 0x00d80003) AM_READWRITE(status_leds_r, status_leds_w)
//AM_RANGE(0x00e00000, 0x00e00003) AM_READWRITE(cmos_protect_r, cmos_protect_w)
//AM_RANGE(0x00e80000, 0x00e80003) AM_NOP // Watchdog
//AM_RANGE(0x00f00000, 0x00f00003) AM_NOP // Trackball ctrl
- ADDRESS_MAP_END
-
-ADDRESS_MAP_START(atlantis_state::map1)
- AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write)
- AM_RANGE(0x00200000, 0x00200003) AM_WRITE(dcs3_fifo_full_w)
- AM_RANGE(0x00400000, 0x00400003) AM_DEVWRITE("dcs", dcs_audio_device, dsio_idma_addr_w)
- AM_RANGE(0x00600000, 0x00600003) AM_DEVREADWRITE("dcs", dcs_audio_device, dsio_idma_data_r, dsio_idma_data_w)
- AM_RANGE(0x00800000, 0x00900003) AM_READWRITE16(port_ctrl_r, port_ctrl_w, 0xffff)
+ }
+
+void atlantis_state::map1(address_map &map)
+{
+ map(0x00000000, 0x0000003f).rw(m_ioasic, FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write));
+ map(0x00200000, 0x00200003).w(this, FUNC(atlantis_state::dcs3_fifo_full_w));
+ map(0x00400000, 0x00400003).w(m_dcs, FUNC(dcs_audio_device::dsio_idma_addr_w));
+ map(0x00600000, 0x00600003).rw(m_dcs, FUNC(dcs_audio_device::dsio_idma_data_r), FUNC(dcs_audio_device::dsio_idma_data_w));
+ map(0x00800000, 0x00900003).rw(this, FUNC(atlantis_state::port_ctrl_r), FUNC(atlantis_state::port_ctrl_w)).umask32(0x0000ffff);
//AM_RANGE(0x00880000, 0x00880003) // AUX Output Initial write 0000fff0, follow by sequence ffef, ffdf, ffbf, fff7. Row Select?
//AM_RANGE(0x00900000, 0x00900003) // AUX Input Read once before each sequence write to 0x00880000. Code checks bits 0,1,2. Keypad?
- AM_RANGE(0x00980000, 0x00980003) AM_READWRITE16(a2d_ctrl_r, a2d_ctrl_w, 0xffff) // A2D Control Read / Write. Bytes written 0x8f, 0xcf. Code if read 0x1 then read 00a00000.
- AM_RANGE(0x00a00000, 0x00a00003) AM_READWRITE16(a2d_data_r, a2d_data_w, 0xffff) // A2D Data
+ map(0x00980000, 0x00980001).rw(this, FUNC(atlantis_state::a2d_ctrl_r), FUNC(atlantis_state::a2d_ctrl_w)); // A2D Control Read / Write. Bytes written 0x8f, 0xcf. Code if read 0x1 then read 00a00000.
+ map(0x00a00000, 0x00a00001).rw(this, FUNC(atlantis_state::a2d_data_r), FUNC(atlantis_state::a2d_data_w)); // A2D Data
//AM_RANGE(0x00a80000, 0x00a80003) // Trackball Chan 0 16 bits
//AM_RANGE(0x00b00000, 0x00b00003) // Trackball Chan 1 16 bits
//AM_RANGE(0x00b80000, 0x00b80003) // Trackball Error 16 bits
//AM_RANGE(0x00c00000, 0x00c00003) // Trackball Pins 16 bits
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(atlantis_state::map2)
- AM_RANGE(0x00000000, 0x000001ff) AM_DEVREADWRITE("zeus2", zeus2_device, zeus2_r, zeus2_w)
-ADDRESS_MAP_END
+void atlantis_state::map2(address_map &map)
+{
+ map(0x00000000, 0x000001ff).rw(m_zeus, FUNC(zeus2_device::zeus2_r), FUNC(zeus2_device::zeus2_w));
+}
-ADDRESS_MAP_START(atlantis_state::map3)
+void atlantis_state::map3(address_map &map)
+{
//AM_RANGE(0x000000, 0xffffff) ROMBUS
-ADDRESS_MAP_END
+}
/*************************************
*
diff --git a/src/mame/drivers/bfm_sc2.cpp b/src/mame/drivers/bfm_sc2.cpp
index 3ceb99f0e97..48b809f7684 100644
--- a/src/mame/drivers/bfm_sc2.cpp
+++ b/src/mame/drivers/bfm_sc2.cpp
@@ -1575,13 +1575,14 @@ void bfm_sc2_state::sc2_basemap(address_map &map)
map(0x8000, 0xFFFF).rom();
}
-ADDRESS_MAP_START(bfm_sc2_novid_state::memmap_no_vid)
- AM_IMPORT_FROM( sc2_basemap )
- AM_RANGE(0x2000, 0x2000) AM_READ(vfd_status_r)
- AM_RANGE(0x2000, 0x20FF) AM_WRITE(reel12_w)
- AM_RANGE(0x2100, 0x21FF) AM_WRITE(reel34_w)
- AM_RANGE(0x2200, 0x22FF) AM_WRITE(reel56_w)
-ADDRESS_MAP_END
+void bfm_sc2_novid_state::memmap_no_vid(address_map &map)
+{
+ sc2_basemap(map);
+ map(0x2000, 0x2000).r(this, FUNC(bfm_sc2_novid_state::vfd_status_r));
+ map(0x2000, 0x20FF).w(this, FUNC(bfm_sc2_novid_state::reel12_w));
+ map(0x2100, 0x21FF).w(this, FUNC(bfm_sc2_novid_state::reel34_w));
+ map(0x2200, 0x22FF).w(this, FUNC(bfm_sc2_novid_state::reel56_w));
+}
// memory map for scorpion2 board video addon /////////////////////////////
diff --git a/src/mame/drivers/bionicc.cpp b/src/mame/drivers/bionicc.cpp
index cd2041bb586..81dc99907a9 100644
--- a/src/mame/drivers/bionicc.cpp
+++ b/src/mame/drivers/bionicc.cpp
@@ -54,22 +54,16 @@
- see the beginning of level 3: background screwed
- gray tiles around the title in Top Secret
- ToDo:
- - get rid of input port hack
-
- Controls appear to be mapped at 0xFE4000, alongside dip switches, but there
- is something strange going on that I can't (yet) figure out.
- Player controls and coin inputs are supposed to magically appear at
- 0xFFFFFB (coin/start)
- 0xFFFFFD (player 2)
- 0xFFFFFF (player 1)
+ Note: The MCU rom contains the string
+ "<for dealer-location test & USA show. 87/03/10 >"
+ which indicates it could be from an earlier version, especially with it
+ coming from a 'Top Secret' bootleg with identical program but unprotected
+ MCU, however f1dream has a similar string, and is verified as being from
+ a production board.
- This is probably done by the Intel C8751H MCU on the board (whose internal ROM
- is not yet available).
-
- The MCU also takes care of the commands for the sound CPU, which are stored
- at FFFFF9.
+ The MCU hookup is currently wrong, maybe IRQ4 related?
+ ToDo:
IRQ4 seems to be control related.
On each interrupt, it reads 0xFE4000 (coin/start), shift the bits around
and move the resulting byte into a dword RAM location. The dword RAM location
@@ -96,42 +90,66 @@
*
*************************************/
-WRITE16_MEMBER(bionicc_state::hacked_controls_w)
+
+READ8_MEMBER(bionicc_state::mcu_shared_r)
{
- logerror("%06x: hacked_controls_w %04x %02x\n", m_maincpu->pc(), offset, data);
- COMBINE_DATA(&m_inp[offset]);
+ uint8_t ret = m_ram16[(0x3000 / 2) + offset];
+ return ret;
}
-READ16_MEMBER(bionicc_state::hacked_controls_r)
+WRITE8_MEMBER(bionicc_state::mcu_shared_w)
{
- logerror("%06x: hacked_controls_r %04x %04x\n", m_maincpu->pc(), offset, m_inp[offset]);
- return m_inp[offset];
+ m_ram16[(0x3000 / 2) + offset] = (m_ram16[(0x3000 / 2) + offset] & 0xff00) | data;
}
-WRITE16_MEMBER(bionicc_state::mpu_trigger_w)
+WRITE8_MEMBER(bionicc_state::out1_w)
+{
+ m_soundlatch->write(space,0,data);
+}
+
+WRITE8_MEMBER(bionicc_state::out3_w)
{
- data = ioport("SYSTEM")->read() >> 12;
- m_inp[0] = data ^ 0x0f;
+ if ((m_old_p3 & 0x20) != (data & 0x20))
+ {
+ // guess
+ if (!(data & 0x20))
+ m_mcu->set_input_line(MCS51_INT0_LINE, CLEAR_LINE);
+ }
- data = ioport("P2")->read();
- m_inp[1] = data ^ 0xff;
+ if ((m_old_p3 & 0x40) != (data & 0x40))
+ {
+ // used, but for what?
+ }
- data = ioport("P1")->read();
- m_inp[2] = data ^ 0xff;
-}
+ if ((m_old_p3 & 0x01) != (data & 0x01))
+ {
+ // guess, toggles at the end of interrupt
+ if (!(data & 0x01))
+ {
+ m_maincpu->resume(SUSPEND_REASON_HALT);
+ // the MCU should be doing this but is writing to the wrong bits?!
+ data = ioport("SYSTEM")->read() >> 12;
+ m_ram16[0x3ffa/2] = /*(m_ram16[0x3ffa/2] & 0xff00) |*/ (data ^ 0x0f);
-WRITE16_MEMBER(bionicc_state::hacked_soundcommand_w)
-{
- COMBINE_DATA(&m_soundcommand);
- m_soundlatch->write(space, 0, m_soundcommand & 0xff);
+ data = ioport("P2")->read();
+ m_ram16[0x3ffc/2] = /*(m_ram16[0x3ffc/2] & 0xff00) |*/ (data ^ 0xff);
+
+ data = ioport("P1")->read();
+ m_ram16[0x3ffe/2] = /*(m_ram16[0x3ffe/2] & 0xff00) |*/ (data ^ 0xff);
+ }
+ }
+
+ m_old_p3 = data;
}
-READ16_MEMBER(bionicc_state::hacked_soundcommand_r)
+
+WRITE16_MEMBER(bionicc_state::mpu_trigger_w)
{
- return m_soundcommand;
-}
+ m_mcu->set_input_line(MCS51_INT0_LINE, ASSERT_LINE);
+ m_maincpu->suspend(SUSPEND_REASON_HALT, true); // see notes in f1dream driver
+}
/********************************************************************
@@ -151,11 +169,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(bionicc_state::scanline)
if(scanline == 240) // vblank-out irq
m_maincpu->set_input_line(2, HOLD_LINE);
- if(scanline == 0) // vblank-in or i8751 related irq
+ if(scanline == 128) // vblank-in or i8751 related irq (can't happen when the CPU is suspended)
m_maincpu->set_input_line(4, HOLD_LINE);
}
-
/*************************************
*
* Address maps
@@ -168,19 +185,17 @@ void bionicc_state::main_map(address_map &map)
map(0xfe0000, 0xfe07ff).ram(); /* RAM? */
map(0xfe0800, 0xfe0cff).ram().share("spriteram");
map(0xfe0d00, 0xfe3fff).ram(); /* RAM? */
- map(0xfe4000, 0xfe4001).w(this, FUNC(bionicc_state::gfxctrl_w)); /* + coin counters */
map(0xfe4000, 0xfe4001).portr("SYSTEM");
- map(0xfe4002, 0xfe4003).portr("DSW");
+ map(0xfe4000, 0xfe4001).w(this, FUNC(bionicc_state::gfxctrl_w)); /* + coin counters */
+ map(0xfe4002, 0xfe4003).portr("DSW").nopw();
map(0xfe8010, 0xfe8017).w(this, FUNC(bionicc_state::scroll_w));
map(0xfe8018, 0xfe8019).nopw(); // vblank irq ack?
- map(0xfe801a, 0xfe801b).w(this, FUNC(bionicc_state::mpu_trigger_w)); /* ??? not sure, but looks like it */
+ map(0xfe801a, 0xfe801b).w(this, FUNC(bionicc_state::mpu_trigger_w)); // based on the code this looks like the MCU trigger if compared to F1 Dream, but 0xfe4002 would match up closer in terms of addresses. Maybe this is IRQ4 related instead?
map(0xfec000, 0xfecfff).ram().w(this, FUNC(bionicc_state::txvideoram_w)).share("txvideoram");
map(0xff0000, 0xff3fff).ram().w(this, FUNC(bionicc_state::fgvideoram_w)).share("fgvideoram");
map(0xff4000, 0xff7fff).ram().w(this, FUNC(bionicc_state::bgvideoram_w)).share("bgvideoram");
map(0xff8000, 0xff87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- map(0xffc000, 0xfffff7).ram(); /* working RAM */
- map(0xfffff8, 0xfffff9).rw(this, FUNC(bionicc_state::hacked_soundcommand_r), FUNC(bionicc_state::hacked_soundcommand_w)); /* hack */
- map(0xfffffa, 0xffffff).rw(this, FUNC(bionicc_state::hacked_controls_r), FUNC(bionicc_state::hacked_controls_w)); /* hack */
+ map(0xffc000, 0xffffff).ram().share("ram16");
}
@@ -192,6 +207,10 @@ void bionicc_state::sound_map(address_map &map)
map(0xc000, 0xc7ff).ram();
}
+void bionicc_state::mcu_io(address_map &map)
+{
+ map(0x000, 0x7ff).rw(this, FUNC(bionicc_state::mcu_shared_r), FUNC(bionicc_state::mcu_shared_w));
+}
/*************************************
*
@@ -354,21 +373,15 @@ GFXDECODE_END
void bionicc_state::machine_start()
{
- save_item(NAME(m_soundcommand));
- save_item(NAME(m_inp));
save_item(NAME(m_scroll));
}
void bionicc_state::machine_reset()
{
- m_inp[0] = 0;
- m_inp[1] = 0;
- m_inp[2] = 0;
m_scroll[0] = 0;
m_scroll[1] = 0;
m_scroll[2] = 0;
m_scroll[3] = 0;
- m_soundcommand = 0;
}
MACHINE_CONFIG_START(bionicc_state::bionicc)
@@ -378,7 +391,6 @@ MACHINE_CONFIG_START(bionicc_state::bionicc)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bionicc_state, scanline, "screen", 0, 1)
- /* Protection MCU Intel C8751H-88 runs at 24MHz / 4 = 6MHz */
MCFG_CPU_ADD("audiocpu", Z80, XTAL(14'318'181) / 4) /* EXO3 C,B=GND, A=5V ==> Divisor 2^2 */
MCFG_CPU_PROGRAM_MAP(sound_map)
@@ -388,6 +400,11 @@ MACHINE_CONFIG_START(bionicc_state::bionicc)
*/
MCFG_CPU_PERIODIC_INT_DRIVER(bionicc_state, nmi_line_pulse, 4*60)
+ /* Protection MCU Intel C8751H-88 runs at 24MHz / 4 = 6MHz */
+ MCFG_CPU_ADD("mcu", I8751, XTAL(24'000'000) / 4)
+ MCFG_CPU_IO_MAP(mcu_io)
+ MCFG_MCS51_PORT_P1_OUT_CB(WRITE8(bionicc_state, out1_w))
+ MCFG_MCS51_PORT_P3_OUT_CB(WRITE8(bionicc_state, out3_w))
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -434,7 +451,7 @@ ROM_START( bionicc ) /* "Not for use in Japan" */
ROM_LOAD( "ts_01b.4e", 0x00000, 0x8000, CRC(a9a6cafa) SHA1(55e0a0e6ca11e8e73339d5b4604e130031211291) )
ROM_REGION( 0x1000, "mcu", 0 ) /* i8751 microcontroller */
- ROM_LOAD( "c8751h-88", 0x0000, 0x1000, NO_DUMP )
+ ROM_LOAD( "d8751h.bin", 0x0000, 0x1000, CRC(3ed7f0be) SHA1(db9e972065c8e60b5d74762dc3424271ea9524cb) ) /* from 'topsecrt' bootleg, but appears to be original */
ROM_REGION( 0x08000, "gfx1", 0 )
ROM_LOAD( "tsu_08.8l", 0x00000, 0x8000, CRC(9bf0b7a2) SHA1(1361335c3c2c8a9c6a7d99566048d8aac99e7c8f) ) /* VIDEORAM (text layer) tiles */
@@ -478,7 +495,7 @@ ROM_START( bionicc1 ) /* "Not for use outside of USA or Canada" revision B */
ROM_LOAD( "ts_01b.4e", 0x00000, 0x8000, CRC(a9a6cafa) SHA1(55e0a0e6ca11e8e73339d5b4604e130031211291) )
ROM_REGION( 0x1000, "mcu", 0 ) /* i8751 microcontroller */
- ROM_LOAD( "c8751h-88", 0x0000, 0x1000, NO_DUMP )
+ ROM_LOAD( "d8751h.bin", 0x0000, 0x1000, CRC(3ed7f0be) SHA1(db9e972065c8e60b5d74762dc3424271ea9524cb) ) /* from 'topsecrt' bootleg, but appears to be original */
ROM_REGION( 0x08000, "gfx1", 0 )
ROM_LOAD( "tsu_08.8l", 0x00000, 0x8000, CRC(9bf0b7a2) SHA1(1361335c3c2c8a9c6a7d99566048d8aac99e7c8f) ) /* VIDEORAM (text layer) tiles */
@@ -522,7 +539,7 @@ ROM_START( bionicc2 ) /* "Not for use outside of USA or Canada" 1st release */
ROM_LOAD( "ts_01b.4e", 0x00000, 0x8000, CRC(a9a6cafa) SHA1(55e0a0e6ca11e8e73339d5b4604e130031211291) )
ROM_REGION( 0x1000, "mcu", 0 ) /* i8751 microcontroller */
- ROM_LOAD( "c8751h-88", 0x0000, 0x1000, NO_DUMP )
+ ROM_LOAD( "d8751h.bin", 0x0000, 0x1000, CRC(3ed7f0be) SHA1(db9e972065c8e60b5d74762dc3424271ea9524cb) ) /* from 'topsecrt' bootleg, but appears to be original */
ROM_REGION( 0x08000, "gfx1", 0 )
ROM_LOAD( "tsu_08.8l", 0x00000, 0x8000, CRC(9bf0b7a2) SHA1(1361335c3c2c8a9c6a7d99566048d8aac99e7c8f) ) /* VIDEORAM (text layer) tiles */
@@ -566,8 +583,7 @@ ROM_START( topsecrt ) /* "Not for use in any other country but Japan" */
ROM_LOAD( "ts_01.4e", 0x00000, 0x8000, CRC(8ea07917) SHA1(e9ace70d89482fc3669860450a41aacacbee9083) )
ROM_REGION( 0x1000, "mcu", 0 ) /* i8751 microcontroller */
- //ROM_LOAD( "c8751h-88", 0x0000, 0x1000, NO_DUMP )
- ROM_LOAD( "d8751h.bin", 0x0000, 0x1000, CRC(3ed7f0be) SHA1(db9e972065c8e60b5d74762dc3424271ea9524cb) )
+ ROM_LOAD( "d8751h.bin", 0x0000, 0x1000, CRC(3ed7f0be) SHA1(db9e972065c8e60b5d74762dc3424271ea9524cb) ) /* from 'topsecrt' bootleg, but appears to be original */
ROM_REGION( 0x08000, "gfx1", 0 )
ROM_LOAD( "ts_08.8l", 0x00000, 0x8000, CRC(96ad379e) SHA1(accd3a560b259c186bc28cdc004ed8de0b12f9d5) ) /* VIDEORAM (text layer) tiles */
@@ -611,7 +627,7 @@ ROM_START( bioniccbl )
ROM_LOAD( "01.bin", 0x00000, 0x8000, CRC(8ea07917) SHA1(e9ace70d89482fc3669860450a41aacacbee9083) )
ROM_REGION( 0x1000, "mcu", 0 ) /* i8751 microcontroller */
- ROM_LOAD( "c8751h-88", 0x0000, 0x1000, NO_DUMP ) // 19.bin (protected)
+ ROM_LOAD( "d8751h.bin", 0x0000, 0x1000, CRC(3ed7f0be) SHA1(db9e972065c8e60b5d74762dc3424271ea9524cb) ) /* from 'topsecrt' bootleg, but appears to be original */
ROM_REGION( 0x08000, "gfx1", 0 )
ROM_LOAD( "06.bin", 0x00000, 0x4000, CRC(4e6b81d9) SHA1(052784d789b0c9193edf218fa1883b6e3b7df988) )
@@ -651,7 +667,7 @@ ROM_START( bioniccbl2 ) // only the 4 maincpu ROMs differ, they came from an ori
ROM_LOAD( "ts_01.4e", 0x00000, 0x8000, CRC(8ea07917) SHA1(e9ace70d89482fc3669860450a41aacacbee9083) )
ROM_REGION( 0x1000, "mcu", 0 ) /* i8751 microcontroller */
- ROM_LOAD( "c8751h-88", 0x0000, 0x1000, NO_DUMP )
+ ROM_LOAD( "d8751h.bin", 0x0000, 0x1000, CRC(3ed7f0be) SHA1(db9e972065c8e60b5d74762dc3424271ea9524cb) ) /* from 'topsecrt' bootleg, but appears to be original */
ROM_REGION( 0x08000, "gfx1", 0 )
ROM_LOAD( "ts_08.8l", 0x00000, 0x8000, CRC(96ad379e) SHA1(accd3a560b259c186bc28cdc004ed8de0b12f9d5) ) /* VIDEORAM (text layer) tiles */
diff --git a/src/mame/drivers/eolith.cpp b/src/mame/drivers/eolith.cpp
index 90f0f4020e5..32ba147b82f 100644
--- a/src/mame/drivers/eolith.cpp
+++ b/src/mame/drivers/eolith.cpp
@@ -231,13 +231,14 @@ void eolith_state::eolith_map(address_map &map)
map(0xfff80000, 0xffffffff).rom().region("maincpu", 0);
}
-ADDRESS_MAP_START(eolith_state::hidctch3_map)
- AM_IMPORT_FROM(eolith_map)
- AM_RANGE(0xfc200000, 0xfc200003) AM_WRITENOP // this generates pens vibration
+void eolith_state::hidctch3_map(address_map &map)
+{
+ eolith_map(map);
+ map(0xfc200000, 0xfc200003).nopw(); // this generates pens vibration
// It is not clear why the first reads are needed too
- AM_RANGE(0xfce00000, 0xfce00003) AM_MIRROR(0x00080000) AM_READ(hidctch3_pen_r<0>)
- AM_RANGE(0xfcf00000, 0xfcf00003) AM_MIRROR(0x00080000) AM_READ(hidctch3_pen_r<1>)
-ADDRESS_MAP_END
+ map(0xfce00000, 0xfce00003).mirror(0x00080000).r(this, FUNC(eolith_state::hidctch3_pen_r<0>));
+ map(0xfcf00000, 0xfcf00003).mirror(0x00080000).r(this, FUNC(eolith_state::hidctch3_pen_r<1>));
+}
/*************************************
diff --git a/src/mame/drivers/fmtowns.cpp b/src/mame/drivers/fmtowns.cpp
index c8c606722a5..b1567692ea2 100644
--- a/src/mame/drivers/fmtowns.cpp
+++ b/src/mame/drivers/fmtowns.cpp
@@ -2220,54 +2220,56 @@ void towns_state::towns_mem(address_map &map)
map(0xfffc0000, 0xffffffff).rom().region("user", 0x200000); // SYSTEM ROM
}
-ADDRESS_MAP_START(towns_state::marty_mem)
- AM_RANGE(0x00000000, 0x000bffff) AM_RAM
- AM_RANGE(0x000c0000, 0x000c7fff) AM_READWRITE8(towns_gfx_r,towns_gfx_w,0xffff)
- AM_RANGE(0x000c8000, 0x000cafff) AM_READWRITE8(towns_spriteram_low_r,towns_spriteram_low_w,0xffff)
- AM_RANGE(0x000cb000, 0x000cbfff) AM_READ_BANK("bank6") AM_WRITE_BANK("bank7")
- AM_RANGE(0x000cc000, 0x000cff7f) AM_RAM
- AM_RANGE(0x000cff80, 0x000cffff) AM_READWRITE8(towns_video_cff80_mem_r,towns_video_cff80_mem_w,0xffff)
- AM_RANGE(0x000d0000, 0x000d7fff) AM_RAM
- AM_RANGE(0x000d8000, 0x000d9fff) AM_READWRITE8(towns_cmos_low_r,towns_cmos_low_w,0xffff) AM_SHARE("nvram16") // CMOS? RAM
- AM_RANGE(0x000da000, 0x000effff) AM_RAM //READWRITE(SMH_BANK(11),SMH_BANK(11))
- AM_RANGE(0x000f0000, 0x000f7fff) AM_RAM //READWRITE(SMH_BANK(12),SMH_BANK(12))
- AM_RANGE(0x000f8000, 0x000fffff) AM_READ_BANK("bank11") AM_WRITE_BANK("bank12")
+void towns_state::marty_mem(address_map &map)
+{
+ map(0x00000000, 0x000bffff).ram();
+ map(0x000c0000, 0x000c7fff).rw(this, FUNC(towns_state::towns_gfx_r), FUNC(towns_state::towns_gfx_w));
+ map(0x000c8000, 0x000cafff).rw(this, FUNC(towns_state::towns_spriteram_low_r), FUNC(towns_state::towns_spriteram_low_w));
+ map(0x000cb000, 0x000cbfff).bankr("bank6").bankw("bank7");
+ map(0x000cc000, 0x000cff7f).ram();
+ map(0x000cff80, 0x000cffff).rw(this, FUNC(towns_state::towns_video_cff80_mem_r), FUNC(towns_state::towns_video_cff80_mem_w));
+ map(0x000d0000, 0x000d7fff).ram();
+ map(0x000d8000, 0x000d9fff).rw(this, FUNC(towns_state::towns_cmos_low_r), FUNC(towns_state::towns_cmos_low_w)).share("nvram16"); // CMOS? RAM
+ map(0x000da000, 0x000effff).ram(); //READWRITE(SMH_BANK(11),SMH_BANK(11))
+ map(0x000f0000, 0x000f7fff).ram(); //READWRITE(SMH_BANK(12),SMH_BANK(12))
+ map(0x000f8000, 0x000fffff).bankr("bank11").bankw("bank12");
// AM_RANGE(0x00100000, 0x005fffff) AM_RAM // some extra RAM - the Marty has 6MB RAM (not upgradable)
- AM_RANGE(0x00600000, 0x0067ffff) AM_ROM AM_REGION("user",0x000000) // OS
- AM_RANGE(0x00680000, 0x0087ffff) AM_ROM AM_REGION("user",0x280000) // EX ROM
- AM_RANGE(0x00a00000, 0x00a7ffff) AM_READWRITE8(towns_gfx_high_r,towns_gfx_high_w,0xffff) AM_MIRROR(0x180000) // VRAM
- AM_RANGE(0x00b00000, 0x00b7ffff) AM_ROM AM_REGION("user",0x180000) // FONT
- AM_RANGE(0x00c00000, 0x00c1ffff) AM_READWRITE8(towns_spriteram_r,towns_spriteram_w,0xffff) // Sprite RAM
- AM_RANGE(0x00d00000, 0x00dfffff) AM_DEVREADWRITE8("icmemcard", fmt_icmem_device, mem_read, mem_write, 0xffff)
- AM_RANGE(0x00e80000, 0x00efffff) AM_ROM AM_REGION("user",0x100000) // DIC ROM
- AM_RANGE(0x00f00000, 0x00f7ffff) AM_ROM AM_REGION("user",0x180000) // FONT
- AM_RANGE(0x00f80000, 0x00f80fff) AM_DEVREADWRITE8("pcm", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w, 0xffff) // WAVE RAM
- AM_RANGE(0x00fc0000, 0x00ffffff) AM_ROM AM_REGION("user",0x200000) // SYSTEM ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(towns_state::ux_mem)
- AM_RANGE(0x00000000, 0x000bffff) AM_RAM
- AM_RANGE(0x000c0000, 0x000c7fff) AM_READWRITE8(towns_gfx_r,towns_gfx_w,0xffff)
- AM_RANGE(0x000c8000, 0x000cafff) AM_READWRITE8(towns_spriteram_low_r,towns_spriteram_low_w,0xffff)
- AM_RANGE(0x000cb000, 0x000cbfff) AM_READ_BANK("bank6") AM_WRITE_BANK("bank7")
- AM_RANGE(0x000cc000, 0x000cff7f) AM_RAM
- AM_RANGE(0x000cff80, 0x000cffff) AM_READWRITE8(towns_video_cff80_mem_r,towns_video_cff80_mem_w,0xffff)
- AM_RANGE(0x000d0000, 0x000d7fff) AM_RAM
- AM_RANGE(0x000d8000, 0x000d9fff) AM_READWRITE8(towns_cmos_low_r,towns_cmos_low_w,0xffff) AM_SHARE("nvram16") // CMOS? RAM
- AM_RANGE(0x000da000, 0x000effff) AM_RAM //READWRITE(SMH_BANK(11),SMH_BANK(11))
- AM_RANGE(0x000f0000, 0x000f7fff) AM_RAM //READWRITE(SMH_BANK(12),SMH_BANK(12))
- AM_RANGE(0x000f8000, 0x000fffff) AM_READ_BANK("bank11") AM_WRITE_BANK("bank12")
+ map(0x00600000, 0x0067ffff).rom().region("user", 0x000000); // OS
+ map(0x00680000, 0x0087ffff).rom().region("user", 0x280000); // EX ROM
+ map(0x00a00000, 0x00a7ffff).rw(this, FUNC(towns_state::towns_gfx_high_r), FUNC(towns_state::towns_gfx_high_w)).mirror(0x180000); // VRAM
+ map(0x00b00000, 0x00b7ffff).rom().region("user", 0x180000); // FONT
+ map(0x00c00000, 0x00c1ffff).rw(this, FUNC(towns_state::towns_spriteram_r), FUNC(towns_state::towns_spriteram_w)); // Sprite RAM
+ map(0x00d00000, 0x00dfffff).rw(m_icmemcard, FUNC(fmt_icmem_device::mem_read), FUNC(fmt_icmem_device::mem_write));
+ map(0x00e80000, 0x00efffff).rom().region("user", 0x100000); // DIC ROM
+ map(0x00f00000, 0x00f7ffff).rom().region("user", 0x180000); // FONT
+ map(0x00f80000, 0x00f80fff).rw("pcm", FUNC(rf5c68_device::rf5c68_mem_r), FUNC(rf5c68_device::rf5c68_mem_w)); // WAVE RAM
+ map(0x00fc0000, 0x00ffffff).rom().region("user", 0x200000); // SYSTEM ROM
+}
+
+void towns_state::ux_mem(address_map &map)
+{
+ map(0x00000000, 0x000bffff).ram();
+ map(0x000c0000, 0x000c7fff).rw(this, FUNC(towns_state::towns_gfx_r), FUNC(towns_state::towns_gfx_w));
+ map(0x000c8000, 0x000cafff).rw(this, FUNC(towns_state::towns_spriteram_low_r), FUNC(towns_state::towns_spriteram_low_w));
+ map(0x000cb000, 0x000cbfff).bankr("bank6").bankw("bank7");
+ map(0x000cc000, 0x000cff7f).ram();
+ map(0x000cff80, 0x000cffff).rw(this, FUNC(towns_state::towns_video_cff80_mem_r), FUNC(towns_state::towns_video_cff80_mem_w));
+ map(0x000d0000, 0x000d7fff).ram();
+ map(0x000d8000, 0x000d9fff).rw(this, FUNC(towns_state::towns_cmos_low_r), FUNC(towns_state::towns_cmos_low_w)).share("nvram16"); // CMOS? RAM
+ map(0x000da000, 0x000effff).ram(); //READWRITE(SMH_BANK(11),SMH_BANK(11))
+ map(0x000f0000, 0x000f7fff).ram(); //READWRITE(SMH_BANK(12),SMH_BANK(12))
+ map(0x000f8000, 0x000fffff).bankr("bank11").bankw("bank12");
// AM_RANGE(0x00680000, 0x0087ffff) AM_ROM AM_REGION("user",0x280000) // EX ROM
- AM_RANGE(0x00a00000, 0x00a7ffff) AM_READWRITE8(towns_gfx_high_r,towns_gfx_high_w,0xffff) AM_MIRROR(0x180000) // VRAM
- AM_RANGE(0x00b00000, 0x00b7ffff) AM_ROM AM_REGION("user",0x180000) // FONT
- AM_RANGE(0x00c00000, 0x00c1ffff) AM_READWRITE8(towns_spriteram_r,towns_spriteram_w,0xffff) // Sprite RAM
- AM_RANGE(0x00d00000, 0x00dfffff) AM_DEVREADWRITE8("icmemcard", fmt_icmem_device, mem_read, mem_write, 0xffff)
- AM_RANGE(0x00e00000, 0x00e7ffff) AM_ROM AM_REGION("user",0x000000) // OS
- AM_RANGE(0x00e80000, 0x00efffff) AM_ROM AM_REGION("user",0x100000) // DIC ROM
- AM_RANGE(0x00f00000, 0x00f7ffff) AM_ROM AM_REGION("user",0x180000) // FONT
- AM_RANGE(0x00f80000, 0x00f80fff) AM_DEVREADWRITE8("pcm", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w, 0xffff) // WAVE RAM
- AM_RANGE(0x00fc0000, 0x00ffffff) AM_ROM AM_REGION("user",0x200000) // SYSTEM ROM
-ADDRESS_MAP_END
+ map(0x00a00000, 0x00a7ffff).rw(this, FUNC(towns_state::towns_gfx_high_r), FUNC(towns_state::towns_gfx_high_w)).mirror(0x180000); // VRAM
+ map(0x00b00000, 0x00b7ffff).rom().region("user", 0x180000); // FONT
+ map(0x00c00000, 0x00c1ffff).rw(this, FUNC(towns_state::towns_spriteram_r), FUNC(towns_state::towns_spriteram_w)); // Sprite RAM
+ map(0x00d00000, 0x00dfffff).rw(m_icmemcard, FUNC(fmt_icmem_device::mem_read), FUNC(fmt_icmem_device::mem_write));
+ map(0x00e00000, 0x00e7ffff).rom().region("user", 0x000000); // OS
+ map(0x00e80000, 0x00efffff).rom().region("user", 0x100000); // DIC ROM
+ map(0x00f00000, 0x00f7ffff).rom().region("user", 0x180000); // FONT
+ map(0x00f80000, 0x00f80fff).rw("pcm", FUNC(rf5c68_device::rf5c68_mem_r), FUNC(rf5c68_device::rf5c68_mem_w)); // WAVE RAM
+ map(0x00fc0000, 0x00ffffff).rom().region("user", 0x200000); // SYSTEM ROM
+}
void towns_state::towns_io(address_map &map)
{
@@ -2329,63 +2331,64 @@ void towns_state::towns_io(address_map &map)
map(0xff80, 0xffff).rw(this, FUNC(towns_state::towns_video_cff80_r), FUNC(towns_state::towns_video_cff80_w));
}
-ADDRESS_MAP_START(towns_state::towns16_io) // for the 386SX based systems
+void towns_state::towns16_io(address_map &map)
+{ // for the 386SX based systems
// System ports
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000,0x0003) AM_DEVREADWRITE8("pic8259_master", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x0010,0x0013) AM_DEVREADWRITE8("pic8259_slave", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x0020,0x0033) AM_READWRITE8(towns_system_r,towns_system_w, 0xffff)
- AM_RANGE(0x0040,0x0047) AM_DEVREADWRITE8("pit", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0x0050,0x0057) AM_DEVREADWRITE8("pit2", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0x0060,0x0061) AM_READWRITE8(towns_port60_r, towns_port60_w, 0x00ff)
- AM_RANGE(0x0068,0x006b) AM_READWRITE8(towns_intervaltimer2_r, towns_intervaltimer2_w, 0xffff)
- AM_RANGE(0x006c,0x006d) AM_READWRITE8(towns_sys6c_r,towns_sys6c_w, 0x00ff)
+ map.unmap_value_high();
+ map(0x0000, 0x0003).rw(m_pic_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0010, 0x0013).rw(m_pic_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0020, 0x0033).rw(this, FUNC(towns_state::towns_system_r), FUNC(towns_state::towns_system_w));
+ map(0x0040, 0x0047).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0x0050, 0x0057).rw("pit2", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0x0060, 0x0060).rw(this, FUNC(towns_state::towns_port60_r), FUNC(towns_state::towns_port60_w));
+ map(0x0068, 0x006b).rw(this, FUNC(towns_state::towns_intervaltimer2_r), FUNC(towns_state::towns_intervaltimer2_w));
+ map(0x006c, 0x006c).rw(this, FUNC(towns_state::towns_sys6c_r), FUNC(towns_state::towns_sys6c_w));
// 0x0070/0x0080 - CMOS RTC
- AM_RANGE(0x0070,0x0071) AM_READWRITE8(towns_rtc_r,towns_rtc_w,0x00ff)
- AM_RANGE(0x0080,0x0081) AM_WRITE8(towns_rtc_select_w,0x00ff)
+ map(0x0070, 0x0070).rw(this, FUNC(towns_state::towns_rtc_r), FUNC(towns_state::towns_rtc_w));
+ map(0x0080, 0x0080).w(this, FUNC(towns_state::towns_rtc_select_w));
// DMA controllers (uPD71071)
- AM_RANGE(0x00a0,0x00af) AM_READWRITE8(towns_dma1_r, towns_dma1_w, 0xffff)
- AM_RANGE(0x00b0,0x00bf) AM_READWRITE8(towns_dma2_r, towns_dma2_w, 0xffff)
+ map(0x00a0, 0x00af).rw(this, FUNC(towns_state::towns_dma1_r), FUNC(towns_state::towns_dma1_w));
+ map(0x00b0, 0x00bf).rw(this, FUNC(towns_state::towns_dma2_r), FUNC(towns_state::towns_dma2_w));
// Floppy controller
- AM_RANGE(0x0200,0x020f) AM_READWRITE8(towns_floppy_r, towns_floppy_w, 0xffff)
+ map(0x0200, 0x020f).rw(this, FUNC(towns_state::towns_floppy_r), FUNC(towns_state::towns_floppy_w));
// CRTC / Video
- AM_RANGE(0x0400,0x0401) AM_READ8(towns_video_unknown_r, 0x00ff) // R/O (0x400)
- AM_RANGE(0x0404,0x0407) AM_READWRITE8(towns_video_404_r, towns_video_404_w, 0xffff) // R/W (0x404)
- AM_RANGE(0x0440,0x045f) AM_READWRITE8(towns_video_440_r, towns_video_440_w, 0xffff)
+ map(0x0400, 0x0400).r(this, FUNC(towns_state::towns_video_unknown_r)); // R/O (0x400)
+ map(0x0404, 0x0407).rw(this, FUNC(towns_state::towns_video_404_r), FUNC(towns_state::towns_video_404_w)); // R/W (0x404)
+ map(0x0440, 0x045f).rw(this, FUNC(towns_state::towns_video_440_r), FUNC(towns_state::towns_video_440_w));
// System port
- AM_RANGE(0x0480,0x0481) AM_READWRITE8(towns_sys480_r,towns_sys480_w,0x00ff) // R/W (0x480)
+ map(0x0480, 0x0480).rw(this, FUNC(towns_state::towns_sys480_r), FUNC(towns_state::towns_sys480_w)); // R/W (0x480)
// IC Memory Card
- AM_RANGE(0x048a,0x048b) AM_DEVREAD8("icmemcard",fmt_icmem_device,status_r,0x00ff)
- AM_RANGE(0x0490,0x0491) AM_DEVREADWRITE8("icmemcard",fmt_icmem_device,bank_r,bank_w,0xffff)
+ map(0x048a, 0x048a).r(m_icmemcard, FUNC(fmt_icmem_device::status_r));
+ map(0x0490, 0x0491).rw(m_icmemcard, FUNC(fmt_icmem_device::bank_r), FUNC(fmt_icmem_device::bank_w));
// CD-ROM
- AM_RANGE(0x04c0,0x04cf) AM_READWRITE8(towns_cdrom_r,towns_cdrom_w,0x00ff)
+ map(0x04c0, 0x04cf).rw(this, FUNC(towns_state::towns_cdrom_r), FUNC(towns_state::towns_cdrom_w)).umask16(0x00ff);
// Joystick / Mouse ports
- AM_RANGE(0x04d0,0x04d3) AM_READ8(towns_padport_r, 0x00ff)
- AM_RANGE(0x04d6,0x04d7) AM_WRITE8(towns_pad_mask_w, 0x00ff)
+ map(0x04d0, 0x04d3).r(this, FUNC(towns_state::towns_padport_r)).umask16(0x00ff);
+ map(0x04d6, 0x04d6).w(this, FUNC(towns_state::towns_pad_mask_w));
// Sound (YM3438 [FM], RF5c68 [PCM])
- AM_RANGE(0x04d8,0x04df) AM_DEVREADWRITE8("fm", ym3438_device, read, write, 0x00ff)
- AM_RANGE(0x04e0,0x04e3) AM_READWRITE8(towns_volume_r,towns_volume_w,0xffff) // R/W -- volume ports
- AM_RANGE(0x04e4,0x04e7) AM_READ8(unksnd_r, 0xffff)
- AM_RANGE(0x04e8,0x04ef) AM_READWRITE8(towns_sound_ctrl_r,towns_sound_ctrl_w,0xffff)
- AM_RANGE(0x04f0,0x04fb) AM_DEVWRITE8("pcm", rf5c68_device, rf5c68_w, 0xffff)
+ map(0x04d8, 0x04df).rw("fm", FUNC(ym3438_device::read), FUNC(ym3438_device::write)).umask16(0x00ff);
+ map(0x04e0, 0x04e3).rw(this, FUNC(towns_state::towns_volume_r), FUNC(towns_state::towns_volume_w)); // R/W -- volume ports
+ map(0x04e4, 0x04e7).r(this, FUNC(towns_state::unksnd_r));
+ map(0x04e8, 0x04ef).rw(this, FUNC(towns_state::towns_sound_ctrl_r), FUNC(towns_state::towns_sound_ctrl_w));
+ map(0x04f0, 0x04fb).w("pcm", FUNC(rf5c68_device::rf5c68_w));
// CRTC / Video
- AM_RANGE(0x05c8,0x05cb) AM_READWRITE8(towns_video_5c8_r, towns_video_5c8_w, 0xffff)
+ map(0x05c8, 0x05cb).rw(this, FUNC(towns_state::towns_video_5c8_r), FUNC(towns_state::towns_video_5c8_w));
// System ports
- AM_RANGE(0x05e8,0x05ef) AM_READWRITE8(towns_sys5e8_r, towns_sys5e8_w, 0x00ff)
+ map(0x05e8, 0x05ef).rw(this, FUNC(towns_state::towns_sys5e8_r), FUNC(towns_state::towns_sys5e8_w)).umask16(0x00ff);
// Keyboard (8042 MCU)
- AM_RANGE(0x0600,0x0607) AM_READWRITE8(towns_keyboard_r, towns_keyboard_w,0x00ff)
+ map(0x0600, 0x0607).rw(this, FUNC(towns_state::towns_keyboard_r), FUNC(towns_state::towns_keyboard_w)).umask16(0x00ff);
// RS-232C interface
- AM_RANGE(0x0a00,0x0a0b) AM_READWRITE8(towns_serial_r, towns_serial_w, 0x00ff)
+ map(0x0a00, 0x0a0b).rw(this, FUNC(towns_state::towns_serial_r), FUNC(towns_state::towns_serial_w)).umask16(0x00ff);
// SCSI controller
- AM_RANGE(0x0c30,0x0c37) AM_DEVREADWRITE8("fmscsi",fmscsi_device,fmscsi_r,fmscsi_w,0x00ff)
+ map(0x0c30, 0x0c37).rw("fmscsi", FUNC(fmscsi_device::fmscsi_r), FUNC(fmscsi_device::fmscsi_w)).umask16(0x00ff);
// CMOS
- AM_RANGE(0x3000,0x4fff) AM_READWRITE8(towns_cmos_r, towns_cmos_w,0x00ff)
+ map(0x3000, 0x4fff).rw(this, FUNC(towns_state::towns_cmos_r), FUNC(towns_state::towns_cmos_w)).umask16(0x00ff);
// Something (MS-DOS wants this 0x41ff to be 1)
//AM_RANGE(0x41fc,0x41ff) AM_READ8(towns_41ff_r,0xff000000)
// CRTC / Video (again)
- AM_RANGE(0xfd90,0xfda3) AM_READWRITE8(towns_video_fd90_r, towns_video_fd90_w, 0xffff)
- AM_RANGE(0xff80,0xffff) AM_READWRITE8(towns_video_cff80_r,towns_video_cff80_w,0xffff)
-ADDRESS_MAP_END
+ map(0xfd90, 0xfda3).rw(this, FUNC(towns_state::towns_video_fd90_r), FUNC(towns_state::towns_video_fd90_w));
+ map(0xff80, 0xffff).rw(this, FUNC(towns_state::towns_video_cff80_r), FUNC(towns_state::towns_video_cff80_w));
+}
/* Input ports */
static INPUT_PORTS_START( towns )
diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp
index d6124e9072a..6356fc567e9 100644
--- a/src/mame/drivers/goldstar.cpp
+++ b/src/mame/drivers/goldstar.cpp
@@ -632,16 +632,17 @@ void cb3_state::ncb3_map(address_map &map)
map(0xf870, 0xf870).w("snsnd", FUNC(sn76489_device::write)); /* guess... device is initialized, but doesn't seems to be used.*/
}
-ADDRESS_MAP_START(goldstar_state::ncb3_readwriteport)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void goldstar_state::ncb3_readwriteport(address_map &map)
+{
+ map.global_mask(0xff);
// AM_RANGE(0x00, 0x00) AM_READ(ncb3_unkread_r) // read from 0x00 when controls set 1 is used...
// AM_RANGE(0x02, 0x02) AM_READ(ncb3_unkread_r) // read from 0x02 when controls set 2 is used...
// AM_RANGE(0x06, 0x06) AM_READ(ncb3_unkread_r) // unknown...
// AM_RANGE(0x08, 0x08) AM_READ(ncb3_unkread_r) // unknown...
- AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW5") /* confirmed for ncb3 */
- AM_RANGE(0x81, 0x81) AM_WRITE(ncb3_port81_w) // ---> large writes.
+ map(0x10, 0x10).portr("DSW5"); /* confirmed for ncb3 */
+ map(0x81, 0x81).w(this, FUNC(goldstar_state::ncb3_port81_w)); // ---> large writes.
-ADDRESS_MAP_END
+}
/* ncb3 findings...
@@ -755,26 +756,27 @@ void goldstar_state::cm_map(address_map &map)
}
-ADDRESS_MAP_START(goldstar_state::nfm_map)
- AM_RANGE(0x0000, 0xd7ff) AM_ROM AM_WRITENOP
+void goldstar_state::nfm_map(address_map &map)
+{
+ map(0x0000, 0xd7ff).rom().nopw();
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("nvram")
+ map(0xd800, 0xdfff).ram().share("nvram");
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
- AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w ) AM_SHARE("reel1_ram")
- AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w ) AM_SHARE("reel2_ram")
- AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w ) AM_SHARE("reel3_ram")
- AM_RANGE(0xf600, 0xf7ff) AM_RAM
+ map(0xf000, 0xf1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xf200, 0xf3ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xf400, 0xf5ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xf600, 0xf7ff).ram();
- AM_RANGE(0xf800, 0xf87f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xf880, 0xf9ff) AM_RAM
- AM_RANGE(0xfa00, 0xfa7f) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xfa80, 0xfbff) AM_RAM
- AM_RANGE(0xfc00, 0xfc7f) AM_RAM AM_SHARE("reel3_scroll")
- AM_RANGE(0xfc80, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xf800, 0xf87f).ram().share("reel1_scroll");
+ map(0xf880, 0xf9ff).ram();
+ map(0xfa00, 0xfa7f).ram().share("reel2_scroll");
+ map(0xfa80, 0xfbff).ram();
+ map(0xfc00, 0xfc7f).ram().share("reel3_scroll");
+ map(0xfc80, 0xffff).ram();
+}
@@ -879,61 +881,63 @@ void cmaster_state::amcoe2_portmap(address_map &map)
}
-ADDRESS_MAP_START(goldstar_state::lucky8_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
- AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
- AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll")
-
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */
- AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... only use both ports for DSWs */
- AM_RANGE(0xb850, 0xb850) AM_WRITE(p1_lamps_w)
- AM_RANGE(0xb860, 0xb860) AM_WRITE(p2_lamps_w)
- AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */
- AM_RANGE(0xc000, 0xf7ff) AM_ROM // could be used by some sets like super972.
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(goldstar_state::flaming7_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
-
- AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
+void goldstar_state::lucky8_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
+ map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xb040, 0xb07f).ram().share("reel1_scroll");
+ map(0xb080, 0xb0bf).ram().share("reel2_scroll");
+ map(0xb100, 0xb17f).ram().share("reel3_scroll");
+
+ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */
+ map(0xb830, 0xb830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
+ map(0xb850, 0xb850).w(this, FUNC(goldstar_state::p1_lamps_w));
+ map(0xb860, 0xb860).w(this, FUNC(goldstar_state::p2_lamps_w));
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
+ map(0xc000, 0xf7ff).rom(); // could be used by some sets like super972.
+ map(0xf800, 0xffff).ram();
+}
+
+void goldstar_state::flaming7_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
+
+ map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
// AM_RANGE(0x9a00, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
+ map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
// AM_RANGE(0xa200, 0xa7ff) AM_RAM
- AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
+ map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
// AM_RANGE(0xaa00, 0xafff) AM_RAM
// AM_RANGE(0xb000, 0xb03f) AM_RAM
- AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll")
+ map(0xb040, 0xb07f).ram().share("reel1_scroll");
+ map(0xb080, 0xb0bf).ram().share("reel2_scroll");
// AM_RANGE(0xb0c0, 0xb0ff) AM_RAM
- AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll")
- AM_RANGE(0xb180, 0xb7ff) AM_RAM
-
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports (92) */
- AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports (9B) */
- AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports (90) */
- AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... only use both ports for DSWs */
- AM_RANGE(0xb850, 0xb850) AM_WRITE(p1_lamps_w)
- AM_RANGE(0xb860, 0xb860) AM_WRITE(p2_lamps_w)
- AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */
+ map(0xb100, 0xb17f).ram().share("reel3_scroll");
+ map(0xb180, 0xb7ff).ram();
+
+ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports (92) */
+ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports (9B) */
+ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports (90) */
+ map(0xb830, 0xb830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
+ map(0xb850, 0xb850).w(this, FUNC(goldstar_state::p1_lamps_w));
+ map(0xb860, 0xb860).w(this, FUNC(goldstar_state::p2_lamps_w));
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
// AM_RANGE(0xc000, 0xd3ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xf800, 0xffff).ram();
+}
/*
W 9A00-B7FF FF
RW B000-B7FF 00
@@ -962,29 +966,30 @@ ADDRESS_MAP_END
AY8910 ports are OK.
*/
-ADDRESS_MAP_START(goldstar_state::mbstar_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
- AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
- AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll")
-
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */
- AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... only use both ports for DSWs */
- AM_RANGE(0xb850, 0xb850) AM_WRITE(p1_lamps_w)
- AM_RANGE(0xb860, 0xb860) AM_WRITE(p2_lamps_w)
- AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */
- AM_RANGE(0xc000, 0xf7ff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void goldstar_state::mbstar_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
+ map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xb040, 0xb07f).ram().share("reel1_scroll");
+ map(0xb080, 0xb0bf).ram().share("reel2_scroll");
+ map(0xb100, 0xb17f).ram().share("reel3_scroll");
+
+ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */
+ map(0xb830, 0xb830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
+ map(0xb850, 0xb850).w(this, FUNC(goldstar_state::p1_lamps_w));
+ map(0xb860, 0xb860).w(this, FUNC(goldstar_state::p2_lamps_w));
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
+ map(0xc000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram();
+}
WRITE8_MEMBER(wingco_state::magodds_outb850_w)
@@ -1100,29 +1105,30 @@ void goldstar_state::ladylinr_map(address_map &map)
map(0xf800, 0xffff).ram();
}
-ADDRESS_MAP_START(goldstar_state::wcat3_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
- AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
- AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll")
-
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */
- AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... only use both ports for DSWs */
- AM_RANGE(0xb850, 0xb850) AM_WRITE(p1_lamps_w)
- AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */
+void goldstar_state::wcat3_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
+ map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xb040, 0xb07f).ram().share("reel1_scroll");
+ map(0xb080, 0xb0bf).ram().share("reel2_scroll");
+ map(0xb100, 0xb17f).ram().share("reel3_scroll");
+
+ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */
+ map(0xb830, 0xb830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
+ map(0xb850, 0xb850).w(this, FUNC(goldstar_state::p1_lamps_w));
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
// AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write) /* Other PPI initialized? */
- AM_RANGE(0xd000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xd000, 0xefff).rom();
+ map(0xf000, 0xffff).ram();
+}
/* newer / more capable hw */
@@ -1265,16 +1271,17 @@ void unkch_state::megaline_map(address_map &map)
AY8910?: 60 - 80
*/
-ADDRESS_MAP_START(goldstar_state::megaline_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xa0, 0xa0) AM_DEVWRITE("sn1", sn76489_device, write) /* SN76489 #1 */
- AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("sn2", sn76489_device, write) /* SN76489 #2 */
- AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("sn3", sn76489_device, write) /* SN76489 #3 */
- AM_RANGE(0x60, 0x60) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* AY8910 control? */
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) /* AY8910 Input? */
+void goldstar_state::megaline_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xa0, 0xa0).w("sn1", FUNC(sn76489_device::write)); /* SN76489 #1 */
+ map(0xc0, 0xc0).w("sn2", FUNC(sn76489_device::write)); /* SN76489 #2 */
+ map(0xe0, 0xe0).w("sn3", FUNC(sn76489_device::write)); /* SN76489 #3 */
+ map(0x60, 0x60).w("aysnd", FUNC(ay8910_device::address_w)); /* AY8910 control? */
+ map(0x80, 0x80).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); /* AY8910 Input? */
// AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
// AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+}
void unkch_state::bonusch_map(address_map &map)
@@ -1319,16 +1326,17 @@ void unkch_state::bonusch_map(address_map &map)
60h = R
*/
-ADDRESS_MAP_START(goldstar_state::bonusch_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_READ_PORT("IN0")
- AM_RANGE(0x20, 0x20) AM_READ_PORT("IN1")
- AM_RANGE(0x50, 0x50) AM_DEVWRITE("sn1", sn76489_device, write) /* SN76489 #1 */
- AM_RANGE(0x51, 0x51) AM_DEVWRITE("sn2", sn76489_device, write) /* SN76489 #2 */
- AM_RANGE(0x52, 0x52) AM_DEVWRITE("sn3", sn76489_device, write) /* SN76489 #3 */
- AM_RANGE(0x53, 0x53) AM_DEVWRITE("sn4", sn76489_device, write) /* SN76489 #4 */
- AM_RANGE(0x60, 0x60) AM_READ_PORT("IN3")
-ADDRESS_MAP_END
+void goldstar_state::bonusch_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x10).portr("IN0");
+ map(0x20, 0x20).portr("IN1");
+ map(0x50, 0x50).w("sn1", FUNC(sn76489_device::write)); /* SN76489 #1 */
+ map(0x51, 0x51).w("sn2", FUNC(sn76489_device::write)); /* SN76489 #2 */
+ map(0x52, 0x52).w("sn3", FUNC(sn76489_device::write)); /* SN76489 #3 */
+ map(0x53, 0x53).w("sn4", FUNC(sn76489_device::write)); /* SN76489 #4 */
+ map(0x60, 0x60).portr("IN3");
+}
static INPUT_PORTS_START( cmv4_player )
diff --git a/src/mame/drivers/intellec4.cpp b/src/mame/drivers/intellec4.cpp
index 47d6b441f50..a5bb14e76cb 100644
--- a/src/mame/drivers/intellec4.cpp
+++ b/src/mame/drivers/intellec4.cpp
@@ -765,35 +765,41 @@ void intellec4_state::intellec4_rom_port_banks(address_map &map)
CPU views of address spaces
---------------------------------*/
-ADDRESS_MAP_START(intellec4_state::intellec4_rom)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000, 0x0fff) AM_DEVICE("prgbank", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intellec4_state::intellec4_ram_memory)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("memory") // 4 * 4002
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intellec4_state::intellec4_rom_ports)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_DEVICE("rpbank", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intellec4_state::intellec4_ram_status)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000, 0x003f) AM_RAM AM_SHARE("status") // 4 * 4002
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intellec4_state::intellec4_ram_ports)
- AM_RANGE(0x00, 0x00) AM_WRITE(ram0_out)
- AM_RANGE(0x01, 0x01) AM_WRITE(ram1_out)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intellec4_state::intellec4_program_memory)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000, 0x01ff) AM_READWRITE(pm_read, pm_write)
-ADDRESS_MAP_END
+void intellec4_state::intellec4_rom(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x0fff).m(m_program_banks, FUNC(address_map_bank_device::amap8));
+}
+
+void intellec4_state::intellec4_ram_memory(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x00ff).ram().share("memory"); // 4 * 4002
+}
+
+void intellec4_state::intellec4_rom_ports(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).m("rpbank", FUNC(address_map_bank_device::amap8));
+}
+
+void intellec4_state::intellec4_ram_status(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x003f).ram().share("status"); // 4 * 4002
+}
+
+void intellec4_state::intellec4_ram_ports(address_map &map)
+{
+ map(0x00, 0x00).w(this, FUNC(intellec4_state::ram0_out));
+ map(0x01, 0x01).w(this, FUNC(intellec4_state::ram1_out));
+}
+
+void intellec4_state::intellec4_program_memory(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x01ff).rw(this, FUNC(intellec4_state::pm_read), FUNC(intellec4_state::pm_write));
+}
/*----------------------------------
diff --git a/src/mame/drivers/ngen.cpp b/src/mame/drivers/ngen.cpp
index e07a7f27967..766e49e98c8 100644
--- a/src/mame/drivers/ngen.cpp
+++ b/src/mame/drivers/ngen.cpp
@@ -884,31 +884,34 @@ void ngen_state::ngen_io(address_map &map)
}
-ADDRESS_MAP_START(ngen_state::ngen386_mem)
- AM_RANGE(0x00000000, 0x000f7fff) AM_RAM
- AM_RANGE(0x000f8000, 0x000f9fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x000fa000, 0x000fbfff) AM_RAM AM_SHARE("fontram")
- AM_RANGE(0x000fc000, 0x000fcfff) AM_RAM
- AM_RANGE(0x000fe000, 0x000fffff) AM_ROM AM_REGION("bios",0)
- AM_RANGE(0x00100000, 0x00ffffff) AM_RAM // some extra RAM
- AM_RANGE(0xffffe000, 0xffffffff) AM_ROM AM_REGION("bios",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ngen_state::ngen386i_mem)
- AM_RANGE(0x00000000, 0x000f7fff) AM_RAM
- AM_RANGE(0x000f8000, 0x000f9fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x000fa000, 0x000fbfff) AM_RAM AM_SHARE("fontram")
- AM_RANGE(0x000fc000, 0x000fffff) AM_ROM AM_REGION("bios",0)
- AM_RANGE(0x00100000, 0x00ffffff) AM_RAM // some extra RAM
- AM_RANGE(0xffffc000, 0xffffffff) AM_ROM AM_REGION("bios",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ngen_state::ngen386_io)
- AM_RANGE(0x0000, 0x0003) AM_READWRITE16(xbus_r, xbus_w, 0x0000ffff)
+void ngen_state::ngen386_mem(address_map &map)
+{
+ map(0x00000000, 0x000f7fff).ram();
+ map(0x000f8000, 0x000f9fff).ram().share("vram");
+ map(0x000fa000, 0x000fbfff).ram().share("fontram");
+ map(0x000fc000, 0x000fcfff).ram();
+ map(0x000fe000, 0x000fffff).rom().region("bios", 0);
+ map(0x00100000, 0x00ffffff).ram(); // some extra RAM
+ map(0xffffe000, 0xffffffff).rom().region("bios", 0);
+}
+
+void ngen_state::ngen386i_mem(address_map &map)
+{
+ map(0x00000000, 0x000f7fff).ram();
+ map(0x000f8000, 0x000f9fff).ram().share("vram");
+ map(0x000fa000, 0x000fbfff).ram().share("fontram");
+ map(0x000fc000, 0x000fffff).rom().region("bios", 0);
+ map(0x00100000, 0x00ffffff).ram(); // some extra RAM
+ map(0xffffc000, 0xffffffff).rom().region("bios", 0);
+}
+
+void ngen_state::ngen386_io(address_map &map)
+{
+ map(0x0000, 0x0001).rw(this, FUNC(ngen_state::xbus_r), FUNC(ngen_state::xbus_w));
// AM_RANGE(0xf800, 0xfeff) AM_READWRITE16(peripheral_r, peripheral_w,0xffffffff)
- AM_RANGE(0xfd08, 0xfd0b) AM_READWRITE16(b38_crtc_r, b38_crtc_w,0xffffffff)
- AM_RANGE(0xfd0c, 0xfd0f) AM_READWRITE16(b38_keyboard_r, b38_keyboard_w,0xffffffff)
-ADDRESS_MAP_END
+ map(0xfd08, 0xfd0b).rw(this, FUNC(ngen_state::b38_crtc_r), FUNC(ngen_state::b38_crtc_w));
+ map(0xfd0c, 0xfd0f).rw(this, FUNC(ngen_state::b38_keyboard_r), FUNC(ngen_state::b38_keyboard_w));
+}
static INPUT_PORTS_START( ngen )
INPUT_PORTS_END
diff --git a/src/mame/drivers/norautp.cpp b/src/mame/drivers/norautp.cpp
index c2ad642bbb5..bbbaca9eb41 100644
--- a/src/mame/drivers/norautp.cpp
+++ b/src/mame/drivers/norautp.cpp
@@ -884,10 +884,11 @@ void norautp_state::norautx4_map(address_map &map)
}
#ifdef UNUSED_CODE
-ADDRESS_MAP_START(norautp_state::norautx8_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* need to be checked */
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram") /* 6116 */
-ADDRESS_MAP_END
+void norautp_state::norautx8_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); /* need to be checked */
+ map(0xc000, 0xc7ff).ram().share("nvram"); /* 6116 */
+}
#endif
void norautp_state::kimble_map(address_map &map)
@@ -898,9 +899,10 @@ void norautp_state::kimble_map(address_map &map)
}
#ifdef UNUSED_CODE
-ADDRESS_MAP_START(norautp_state::norautxp_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void norautp_state::norautxp_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+}
#endif
void norautp_state::newhilop_map(address_map &map)
diff --git a/src/mame/drivers/notetaker.cpp b/src/mame/drivers/notetaker.cpp
index 5c6fd9d0bcd..2e9fe92a731 100644
--- a/src/mame/drivers/notetaker.cpp
+++ b/src/mame/drivers/notetaker.cpp
@@ -538,7 +538,8 @@ BootSeqDone is 1, DisableROM is 0, mem map is 0x00000-0x00fff reading is t
BootSeqDone is 1, DisableROM is 1, mem map is entirely RAM or open bus for both reading and writing.
*/
-ADDRESS_MAP_START(notetaker_state::iop_mem)
+void notetaker_state::iop_mem(address_map &map)
+{
/*
AM_RANGE(0x00000, 0x00fff) AM_ROM AM_REGION("iop", 0xff000) // rom is here if either BootSeqDone OR DisableROM are zero. the 1.5 source code and the schematics implies writes here are ignored while rom is enabled; if disablerom is 1 this goes to mainram
AM_RANGE(0x01000, 0x3ffff) AM_RAM AM_REGION("mainram", 0) // 256k of ram (less 8k), shared between both processors. rom goes here if bootseqdone is 0
@@ -549,8 +550,8 @@ ADDRESS_MAP_START(notetaker_state::iop_mem)
//AM_RANGE(0xfffee, 0xfffef) AM_READ(parityErrLo_r);
AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("iop", 0xffff0)
*/
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE(iop_r, iop_w) // bypass MAME's memory map system as we need finer grained control
-ADDRESS_MAP_END
+ map(0x00000, 0xfffff).rw(this, FUNC(notetaker_state::iop_r), FUNC(notetaker_state::iop_w)); // bypass MAME's memory map system as we need finer grained control
+}
/* iop memory map comes from http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/notetaker/memos/19790605_Definition_of_8086_Ports.pdf
and from the schematic at http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/notetaker/schematics/19790423_Notetaker_IO_Processor.pdf
@@ -586,32 +587,33 @@ x x x x 0 x x x x x x 1 1 0 1 x 1 1 1
x x x x 0 x x x x x x 1 1 1 0 x x x x . R SelADCHi
x x x x 0 x x x x x x 1 1 1 1 x x x x . W CRTSwitch
*/
-ADDRESS_MAP_START(notetaker_state::iop_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_MIRROR(0x7e1c) AM_DEVREADWRITE8("iop_pic8259", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x20, 0x21) AM_MIRROR(0x7e1e) AM_WRITE(IPConReg_w) // I/O processor (rom mapping, etc) control register
- AM_RANGE(0x42, 0x43) AM_MIRROR(0x7e10) AM_DEVREAD8("kbduart", ay31015_device, receive, 0x00ff) // read keyboard data
- AM_RANGE(0x44, 0x45) AM_MIRROR(0x7e10) AM_READ(ReadOPStatus_r) // read keyboard fifo state
- AM_RANGE(0x48, 0x49) AM_MIRROR(0x7e10) AM_WRITE(LoadKeyCtlReg_w) // kbd uart control register
- AM_RANGE(0x4a, 0x4b) AM_MIRROR(0x7e10) AM_DEVWRITE8("kbduart", ay31015_device, transmit, 0x00ff) // kbd uart data register
- AM_RANGE(0x4c, 0x4d) AM_MIRROR(0x7e10) AM_WRITE(KeyDataReset_w) // kbd uart ddr switch (data reset)
- AM_RANGE(0x4e, 0x4f) AM_MIRROR(0x7e10) AM_WRITE(KeyChipReset_w) // kbd uart reset
- AM_RANGE(0x60, 0x61) AM_MIRROR(0x7e1e) AM_WRITE(FIFOReg_w) // DAC sample and hold and frequency setup
+void notetaker_state::iop_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x03).mirror(0x7e1c).rw(m_iop_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x20, 0x21).mirror(0x7e1e).w(this, FUNC(notetaker_state::IPConReg_w)); // I/O processor (rom mapping, etc) control register
+ map(0x42, 0x42).mirror(0x7e10).r(m_kbduart, FUNC(ay31015_device::receive)); // read keyboard data
+ map(0x44, 0x45).mirror(0x7e10).r(this, FUNC(notetaker_state::ReadOPStatus_r)); // read keyboard fifo state
+ map(0x48, 0x49).mirror(0x7e10).w(this, FUNC(notetaker_state::LoadKeyCtlReg_w)); // kbd uart control register
+ map(0x4a, 0x4a).mirror(0x7e10).w(m_kbduart, FUNC(ay31015_device::transmit)); // kbd uart data register
+ map(0x4c, 0x4d).mirror(0x7e10).w(this, FUNC(notetaker_state::KeyDataReset_w)); // kbd uart ddr switch (data reset)
+ map(0x4e, 0x4f).mirror(0x7e10).w(this, FUNC(notetaker_state::KeyChipReset_w)); // kbd uart reset
+ map(0x60, 0x61).mirror(0x7e1e).w(this, FUNC(notetaker_state::FIFOReg_w)); // DAC sample and hold and frequency setup
//AM_RANGE(0xa0, 0xa1) AM_MIRROR(0x7e18) AM_DEVREADWRITE("debug8255", 8255_device, read, write) // debugger board 8255
- AM_RANGE(0xc0, 0xc1) AM_MIRROR(0x7e1e) AM_WRITE(FIFOBus_w) // DAC data write to FIFO
- AM_RANGE(0x100, 0x101) AM_MIRROR(0x7e1e) AM_WRITE(DiskReg_w) // I/O register (adc speed, crtc pixel clock and clock enable, +5 and +12v relays for floppy, etc)
- AM_RANGE(0x120, 0x127) AM_MIRROR(0x7e18) AM_DEVREADWRITE8("wd1791", fd1791_device, read, write, 0x00FF) // floppy controller
- AM_RANGE(0x140, 0x15f) AM_MIRROR(0x7e00) AM_DEVREADWRITE8("crt5027", crt5027_device, read, write, 0x00FF) // crt controller
- AM_RANGE(0x160, 0x161) AM_MIRROR(0x7e1e) AM_WRITE(LoadDispAddr_w) // loads the start address for the display framebuffer
- AM_RANGE(0x1a0, 0x1a1) AM_MIRROR(0x7e10) AM_READ(ReadEIAStatus_r) // read eia fifo state
- AM_RANGE(0x1a2, 0x1a3) AM_MIRROR(0x7e10) AM_DEVREAD8("eiauart", ay31015_device, receive, 0x00ff) // read eia data
- AM_RANGE(0x1a8, 0x1a9) AM_MIRROR(0x7e10) AM_WRITE(LoadEIACtlReg_w) // eia uart control register
- AM_RANGE(0x1aa, 0x1ab) AM_MIRROR(0x7e10) AM_DEVWRITE8("eiauart", ay31015_device, transmit, 0x00ff) // eia uart data register
- AM_RANGE(0x1ac, 0x1ad) AM_MIRROR(0x7e10) AM_WRITE(EIADataReset_w) // eia uart ddr switch (data reset)
- AM_RANGE(0x1ae, 0x1af) AM_MIRROR(0x7e10) AM_WRITE(EIAChipReset_w) // eia uart reset
+ map(0xc0, 0xc1).mirror(0x7e1e).w(this, FUNC(notetaker_state::FIFOBus_w)); // DAC data write to FIFO
+ map(0x100, 0x101).mirror(0x7e1e).w(this, FUNC(notetaker_state::DiskReg_w)); // I/O register (adc speed, crtc pixel clock and clock enable, +5 and +12v relays for floppy, etc)
+ map(0x120, 0x127).mirror(0x7e18).rw(m_fdc, FUNC(fd1791_device::read), FUNC(fd1791_device::write)).umask16(0x00ff); // floppy controller
+ map(0x140, 0x15f).mirror(0x7e00).rw(m_crtc, FUNC(crt5027_device::read), FUNC(crt5027_device::write)).umask16(0x00ff); // crt controller
+ map(0x160, 0x161).mirror(0x7e1e).w(this, FUNC(notetaker_state::LoadDispAddr_w)); // loads the start address for the display framebuffer
+ map(0x1a0, 0x1a1).mirror(0x7e10).r(this, FUNC(notetaker_state::ReadEIAStatus_r)); // read eia fifo state
+ map(0x1a2, 0x1a2).mirror(0x7e10).r(m_eiauart, FUNC(ay31015_device::receive)); // read eia data
+ map(0x1a8, 0x1a9).mirror(0x7e10).w(this, FUNC(notetaker_state::LoadEIACtlReg_w)); // eia uart control register
+ map(0x1aa, 0x1aa).mirror(0x7e10).w(m_eiauart, FUNC(ay31015_device::transmit)); // eia uart data register
+ map(0x1ac, 0x1ad).mirror(0x7e10).w(this, FUNC(notetaker_state::EIADataReset_w)); // eia uart ddr switch (data reset)
+ map(0x1ae, 0x1af).mirror(0x7e10).w(this, FUNC(notetaker_state::EIAChipReset_w)); // eia uart reset
//AM_RANGE(0x1c0, 0x1c1) AM_MIRROR(0x7e1e) AM_READ(SelADCHi_r) // ADC read
//AM_RANGE(0x1e0, 0x1e1) AM_MIRROR(0x7e1e) AM_READ(CRTSwitch_w) // CRT power enable?
-ADDRESS_MAP_END
+}
/* iop_pic8259 interrupts:
irq0 parity error (parity error syndrome data will be in fffdx/fffex) - currently ignored
@@ -697,12 +699,13 @@ x x 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
x x 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 x x R FFFEE (Parity Error Address: row bits 15-8, column bits 7-0; reading this also acknowledges a parity interrupt)
*/
-ADDRESS_MAP_START(notetaker_state::ep_mem)
- AM_RANGE(0x00000, 0x01fff) AM_MIRROR(0xc0000) AM_RAM // actually a banked block of ram, 8kb (4kw)
- AM_RANGE(0x02000, 0x3ffff) AM_MIRROR(0xc0000) AM_RAM AM_REGION("mainram", 0x2000) // 256k of ram (less 8k), shared between both processors, mirrored 4 times
+void notetaker_state::ep_mem(address_map &map)
+{
+ map(0x00000, 0x01fff).mirror(0xc0000).ram(); // actually a banked block of ram, 8kb (4kw)
+ map(0x02000, 0x3ffff).mirror(0xc0000).ram().region("mainram", 0x2000); // 256k of ram (less 8k), shared between both processors, mirrored 4 times
//AM_RANGE(0xfffc0, 0xfffdf) AM_MIRROR(0xc0000) AM_READWRITE(proc_illinst_r, proc_illinst_w)
//AM_RANGE(0xfffe0, 0xfffef) AM_MIRROR(0xc0000) AM_READWRITE(proc_control_r, proc_control_w)
-ADDRESS_MAP_END
+}
/* note everything in the emulatorcpu's io range is incompletely decoded; so if
0x1800 is accessed it will write to both the debug 8255 AND the pic8259!
@@ -717,13 +720,14 @@ x x x x x x 1 x x x x x x x x x x x x
x x x x x 1 x x x x x x x x x x x x x x x W Writing anything here clears the parity error latch
*/
-ADDRESS_MAP_START(notetaker_state::ep_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x800, 0x803) AM_MIRROR(0x07fc) AM_DEVREADWRITE8("ep_pic8259", pic8259_device, read, write, 0x00ff)
+void notetaker_state::ep_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x800, 0x803).mirror(0x07fc).rw(m_ep_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
//AM_RANGE(0x1000, 0x1001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("debug8255", 8255_device, read, write) // debugger board 8255, is this the same one as the iop accesses? or are these two 8255s on separate cards?
- AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_WRITE(EPConReg_w) // emu processor control reg & leds
+ map(0x2000, 0x2001).mirror(0x07fe).w(this, FUNC(notetaker_state::EPConReg_w)); // emu processor control reg & leds
//AM_RANGE(0x4000, 0x4001) AM_MIRROR(0x07fe) AM_WRITE(EmuClearParity_w) // writes here clear the local 8k-ram parity error register
-ADDRESS_MAP_END
+}
/* Input ports */
diff --git a/src/mame/drivers/pc8401a.cpp b/src/mame/drivers/pc8401a.cpp
index 00ac3813e60..af4db125222 100644
--- a/src/mame/drivers/pc8401a.cpp
+++ b/src/mame/drivers/pc8401a.cpp
@@ -346,42 +346,43 @@ void pc8401a_state::pc8401a_io(address_map &map)
map.global_mask(0xff);
}
-ADDRESS_MAP_START(pc8401a_state::pc8500_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("Y.0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("Y.1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("Y.2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("Y.3")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("Y.4")
- AM_RANGE(0x05, 0x05) AM_READ_PORT("Y.5")
- AM_RANGE(0x06, 0x06) AM_READ_PORT("Y.6")
- AM_RANGE(0x07, 0x07) AM_READ_PORT("Y.7")
- AM_RANGE(0x08, 0x08) AM_READ_PORT("Y.8")
- AM_RANGE(0x09, 0x09) AM_READ_PORT("Y.9")
- AM_RANGE(0x10, 0x10) AM_WRITE(rtc_cmd_w)
- AM_RANGE(0x20, 0x20) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0x21, 0x21) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w)
- AM_RANGE(0x30, 0x30) AM_READWRITE(mmr_r, mmr_w)
+void pc8401a_state::pc8500_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("Y.0");
+ map(0x01, 0x01).portr("Y.1");
+ map(0x02, 0x02).portr("Y.2");
+ map(0x03, 0x03).portr("Y.3");
+ map(0x04, 0x04).portr("Y.4");
+ map(0x05, 0x05).portr("Y.5");
+ map(0x06, 0x06).portr("Y.6");
+ map(0x07, 0x07).portr("Y.7");
+ map(0x08, 0x08).portr("Y.8");
+ map(0x09, 0x09).portr("Y.9");
+ map(0x10, 0x10).w(this, FUNC(pc8401a_state::rtc_cmd_w));
+ map(0x20, 0x20).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x21, 0x21).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x30, 0x30).rw(this, FUNC(pc8401a_state::mmr_r), FUNC(pc8401a_state::mmr_w));
// AM_RANGE(0x31, 0x31)
- AM_RANGE(0x40, 0x40) AM_READWRITE(rtc_r, rtc_ctrl_w)
+ map(0x40, 0x40).rw(this, FUNC(pc8401a_state::rtc_r), FUNC(pc8401a_state::rtc_ctrl_w));
// AM_RANGE(0x41, 0x41)
// AM_RANGE(0x50, 0x51)
- AM_RANGE(0x60, 0x60) AM_DEVREADWRITE(SED1330_TAG, sed1330_device, status_r, data_w)
- AM_RANGE(0x61, 0x61) AM_DEVREADWRITE(SED1330_TAG, sed1330_device, data_r, command_w)
- AM_RANGE(0x70, 0x70) AM_READWRITE(port70_r, port70_w)
- AM_RANGE(0x71, 0x71) AM_READWRITE(port71_r, port71_w)
+ map(0x60, 0x60).rw(m_lcdc, FUNC(sed1330_device::status_r), FUNC(sed1330_device::data_w));
+ map(0x61, 0x61).rw(m_lcdc, FUNC(sed1330_device::data_r), FUNC(sed1330_device::command_w));
+ map(0x70, 0x70).rw(this, FUNC(pc8401a_state::port70_r), FUNC(pc8401a_state::port70_w));
+ map(0x71, 0x71).rw(this, FUNC(pc8401a_state::port71_r), FUNC(pc8401a_state::port71_w));
// AM_RANGE(0x80, 0x80) modem status, set to 0xff to boot
// AM_RANGE(0x8b, 0x8b)
// AM_RANGE(0x90, 0x93)
// AM_RANGE(0xa0, 0xa1)
- AM_RANGE(0x98, 0x98) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w)
- AM_RANGE(0x99, 0x99) AM_DEVREADWRITE(MC6845_TAG, mc6845_device, register_r, register_w)
- AM_RANGE(0xb0, 0xb3) AM_WRITE(io_rom_addr_w)
- AM_RANGE(0xb3, 0xb3) AM_READ(io_rom_data_r)
+ map(0x98, 0x98).w(m_crtc, FUNC(mc6845_device::address_w));
+ map(0x99, 0x99).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xb0, 0xb3).w(this, FUNC(pc8401a_state::io_rom_addr_w));
+ map(0xb3, 0xb3).r(this, FUNC(pc8401a_state::io_rom_data_r));
// AM_RANGE(0xc8, 0xc8)
- AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write)
-ADDRESS_MAP_END
+ map(0xfc, 0xff).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
/* Input Ports */
diff --git a/src/mame/drivers/pc88va.cpp b/src/mame/drivers/pc88va.cpp
index 7cddd40f074..ea0e60d7d62 100644
--- a/src/mame/drivers/pc88va.cpp
+++ b/src/mame/drivers/pc88va.cpp
@@ -1334,10 +1334,11 @@ TIMER_CALLBACK_MEMBER(pc88va_state::pc8801fd_upd765_tc_to_zero)
/* FDC subsytem CPU */
#if TEST_SUBFDC
-ADDRESS_MAP_START(pc88va_state::pc88va_z80_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_RAM
-ADDRESS_MAP_END
+void pc88va_state::pc88va_z80_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x7fff).ram();
+}
READ8_MEMBER(pc88va_state::upd765_tc_r)
{
@@ -1357,14 +1358,15 @@ WRITE8_MEMBER(pc88va_state::upd765_mc_w)
machine().device<floppy_connector>("upd765:1")->get_device()->mon_w(!(data & 2));
}
-ADDRESS_MAP_START(pc88va_state::pc88va_z80_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(fdc_irq_vector_w) // Interrupt Opcode Port
+void pc88va_state::pc88va_z80_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).w(this, FUNC(pc88va_state::fdc_irq_vector_w)); // Interrupt Opcode Port
// AM_RANGE(0xf4, 0xf4) // Drive Control Port
- AM_RANGE(0xf8, 0xf8) AM_READWRITE(upd765_tc_r,upd765_mc_w) // (R) Terminal Count Port (W) Motor Control Port
- AM_RANGE(0xfa, 0xfb) AM_DEVICE("upd765", upd765a_device, map )
- AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE("d8255_2s", i8255_device, read, write)
-ADDRESS_MAP_END
+ map(0xf8, 0xf8).rw(this, FUNC(pc88va_state::upd765_tc_r), FUNC(pc88va_state::upd765_mc_w)); // (R) Terminal Count Port (W) Motor Control Port
+ map(0xfa, 0xfb).m(m_fdc, FUNC(upd765a_device::map));
+ map(0xfc, 0xff).rw("d8255_2s", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
#endif
/* TODO: active low or active high? */
diff --git a/src/mame/drivers/seattle.cpp b/src/mame/drivers/seattle.cpp
index 3ef3b0879b9..d53f4c9994c 100644
--- a/src/mame/drivers/seattle.cpp
+++ b/src/mame/drivers/seattle.cpp
@@ -1103,50 +1103,55 @@ PCI Mem = 08000000-09FFFFFF
*/
-ADDRESS_MAP_START(seattle_state::seattle_cs0_map)
-ADDRESS_MAP_END
+void seattle_state::seattle_cs0_map(address_map &map)
+{
+}
-ADDRESS_MAP_START(seattle_state::seattle_cs1_map)
- AM_RANGE(0x01000000, 0x01000003) AM_WRITE(asic_fifo_w)
-ADDRESS_MAP_END
+void seattle_state::seattle_cs1_map(address_map &map)
+{
+ map(0x01000000, 0x01000003).w(this, FUNC(seattle_state::asic_fifo_w));
+}
-ADDRESS_MAP_START(seattle_state::seattle_cs2_map)
- AM_RANGE(0x00000000, 0x00000003) AM_READWRITE(analog_port_r, analog_port_w) // Flagstaff only
-ADDRESS_MAP_END
+void seattle_state::seattle_cs2_map(address_map &map)
+{
+ map(0x00000000, 0x00000003).rw(this, FUNC(seattle_state::analog_port_r), FUNC(seattle_state::analog_port_w)); // Flagstaff only
+}
// This map shares the PHOENIX, SEATTLE, and SEATTLE_WIDGET calls
-ADDRESS_MAP_START(seattle_state::seattle_cs3_map)
- AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write)
- AM_RANGE(0x00100000, 0x0011ffff) AM_READWRITE(cmos_r, cmos_w)
- AM_RANGE(0x00800000, 0x0080001f) AM_READWRITE(carnevil_gun_r, carnevil_gun_w) // Carnevil driver only
- AM_RANGE(0x00c00000, 0x00c0001f) AM_READWRITE(widget_r, widget_w); // Seattle widget only
- AM_RANGE(0x01000000, 0x01000003) AM_READWRITE(cmos_protect_r, cmos_protect_w)
- AM_RANGE(0x01100000, 0x01100003) AM_WRITE(seattle_watchdog_w)
- AM_RANGE(0x01300000, 0x01300003) AM_READWRITE(seattle_interrupt_enable_r, seattle_interrupt_enable_w)
- AM_RANGE(0x01400000, 0x01400003) AM_READWRITE(interrupt_config_r, interrupt_config_w)
- AM_RANGE(0x01500000, 0x01500003) AM_READ(interrupt_state_r)
- AM_RANGE(0x01600000, 0x01600003) AM_READ(interrupt_state2_r)
- AM_RANGE(0x01700000, 0x01700003) AM_WRITE(vblank_clear_w)
- AM_RANGE(0x01800000, 0x01800003) AM_NOP
- AM_RANGE(0x01900000, 0x01900003) AM_READWRITE(status_leds_r, status_leds_w)
- AM_RANGE(0x01f00000, 0x01f00003) AM_READWRITE(asic_reset_r, asic_reset_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seattle_state::seattle_flagstaff_cs3_map)
- AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write)
- AM_RANGE(0x00100000, 0x0011ffff) AM_READWRITE(cmos_r, cmos_w)
- AM_RANGE(0x00c00000, 0x00c0003f) AM_READWRITE(ethernet_r, ethernet_w);
- AM_RANGE(0x01000000, 0x01000003) AM_READWRITE(cmos_protect_r, cmos_protect_w)
- AM_RANGE(0x01100000, 0x01100003) AM_WRITE(seattle_watchdog_w)
- AM_RANGE(0x01300000, 0x01300003) AM_READWRITE(seattle_interrupt_enable_r, seattle_interrupt_enable_w)
- AM_RANGE(0x01400000, 0x01400003) AM_READWRITE(interrupt_config_r, interrupt_config_w)
- AM_RANGE(0x01500000, 0x01500003) AM_READ(interrupt_state_r)
- AM_RANGE(0x01600000, 0x01600003) AM_READ(interrupt_state2_r)
- AM_RANGE(0x01700000, 0x01700003) AM_WRITE(vblank_clear_w)
- AM_RANGE(0x01800000, 0x01800003) AM_NOP
- AM_RANGE(0x01900000, 0x01900003) AM_READWRITE(status_leds_r, status_leds_w)
- AM_RANGE(0x01f00000, 0x01f00003) AM_READWRITE(asic_reset_r, asic_reset_w)
-ADDRESS_MAP_END
+void seattle_state::seattle_cs3_map(address_map &map)
+{
+ map(0x00000000, 0x0000003f).rw(m_ioasic, FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write));
+ map(0x00100000, 0x0011ffff).rw(this, FUNC(seattle_state::cmos_r), FUNC(seattle_state::cmos_w));
+ map(0x00800000, 0x0080001f).rw(this, FUNC(seattle_state::carnevil_gun_r), FUNC(seattle_state::carnevil_gun_w)); // Carnevil driver only
+ map(0x00c00000, 0x00c0001f).rw(this, FUNC(seattle_state::widget_r), FUNC(seattle_state::widget_w)); // Seattle widget only
+ map(0x01000000, 0x01000003).rw(this, FUNC(seattle_state::cmos_protect_r), FUNC(seattle_state::cmos_protect_w));
+ map(0x01100000, 0x01100003).w(this, FUNC(seattle_state::seattle_watchdog_w));
+ map(0x01300000, 0x01300003).rw(this, FUNC(seattle_state::seattle_interrupt_enable_r), FUNC(seattle_state::seattle_interrupt_enable_w));
+ map(0x01400000, 0x01400003).rw(this, FUNC(seattle_state::interrupt_config_r), FUNC(seattle_state::interrupt_config_w));
+ map(0x01500000, 0x01500003).r(this, FUNC(seattle_state::interrupt_state_r));
+ map(0x01600000, 0x01600003).r(this, FUNC(seattle_state::interrupt_state2_r));
+ map(0x01700000, 0x01700003).w(this, FUNC(seattle_state::vblank_clear_w));
+ map(0x01800000, 0x01800003).noprw();
+ map(0x01900000, 0x01900003).rw(this, FUNC(seattle_state::status_leds_r), FUNC(seattle_state::status_leds_w));
+ map(0x01f00000, 0x01f00003).rw(this, FUNC(seattle_state::asic_reset_r), FUNC(seattle_state::asic_reset_w));
+}
+
+void seattle_state::seattle_flagstaff_cs3_map(address_map &map)
+{
+ map(0x00000000, 0x0000003f).rw(m_ioasic, FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write));
+ map(0x00100000, 0x0011ffff).rw(this, FUNC(seattle_state::cmos_r), FUNC(seattle_state::cmos_w));
+ map(0x00c00000, 0x00c0003f).rw(this, FUNC(seattle_state::ethernet_r), FUNC(seattle_state::ethernet_w));
+ map(0x01000000, 0x01000003).rw(this, FUNC(seattle_state::cmos_protect_r), FUNC(seattle_state::cmos_protect_w));
+ map(0x01100000, 0x01100003).w(this, FUNC(seattle_state::seattle_watchdog_w));
+ map(0x01300000, 0x01300003).rw(this, FUNC(seattle_state::seattle_interrupt_enable_r), FUNC(seattle_state::seattle_interrupt_enable_w));
+ map(0x01400000, 0x01400003).rw(this, FUNC(seattle_state::interrupt_config_r), FUNC(seattle_state::interrupt_config_w));
+ map(0x01500000, 0x01500003).r(this, FUNC(seattle_state::interrupt_state_r));
+ map(0x01600000, 0x01600003).r(this, FUNC(seattle_state::interrupt_state2_r));
+ map(0x01700000, 0x01700003).w(this, FUNC(seattle_state::vblank_clear_w));
+ map(0x01800000, 0x01800003).noprw();
+ map(0x01900000, 0x01900003).rw(this, FUNC(seattle_state::status_leds_r), FUNC(seattle_state::status_leds_w));
+ map(0x01f00000, 0x01f00003).rw(this, FUNC(seattle_state::asic_reset_r), FUNC(seattle_state::asic_reset_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/segas32.cpp b/src/mame/drivers/segas32.cpp
index b82f70568e7..1b95ee7b3e9 100644
--- a/src/mame/drivers/segas32.cpp
+++ b/src/mame/drivers/segas32.cpp
@@ -1129,30 +1129,33 @@ void segas32_state::system32_sound_portmap(address_map &map)
}
-ADDRESS_MAP_START(segas32_state::multi32_sound_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM AM_REGION("soundcpu", 0)
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_DEVREADWRITE("sega", multipcm_device, read, write)
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("z80_shared_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas32_state::multi32_sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write)
- AM_RANGE(0xa0, 0xaf) AM_WRITE(sound_bank_lo_w)
- AM_RANGE(0xb0, 0xbf) AM_WRITE(multipcm_bank_w)
- AM_RANGE(0xc0, 0xcf) AM_WRITE(sound_int_control_lo_w)
- AM_RANGE(0xd0, 0xd3) AM_MIRROR(0x04) AM_WRITE(sound_int_control_hi_w)
- AM_RANGE(0xf1, 0xf1) AM_READWRITE(sound_dummy_r, sound_dummy_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(segas32_state::multipcm_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x17ffff) AM_ROMBANK("multipcmbanklo")
- AM_RANGE(0x180000, 0x1fffff) AM_ROMBANK("multipcmbankhi")
-ADDRESS_MAP_END
+void segas32_state::multi32_sound_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom().region("soundcpu", 0);
+ map(0xa000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xdfff).rw("sega", FUNC(multipcm_device::read), FUNC(multipcm_device::write));
+ map(0xe000, 0xffff).ram().share("z80_shared_ram");
+}
+
+void segas32_state::multi32_sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x80, 0x83).mirror(0x0c).rw("ymsnd", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0xa0, 0xaf).w(this, FUNC(segas32_state::sound_bank_lo_w));
+ map(0xb0, 0xbf).w(this, FUNC(segas32_state::multipcm_bank_w));
+ map(0xc0, 0xcf).w(this, FUNC(segas32_state::sound_int_control_lo_w));
+ map(0xd0, 0xd3).mirror(0x04).w(this, FUNC(segas32_state::sound_int_control_hi_w));
+ map(0xf1, 0xf1).rw(this, FUNC(segas32_state::sound_dummy_r), FUNC(segas32_state::sound_dummy_w));
+}
+
+
+void segas32_state::multipcm_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x17ffff).bankr("multipcmbanklo");
+ map(0x180000, 0x1fffff).bankr("multipcmbankhi");
+}
/*************************************
*
@@ -1160,11 +1163,12 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(segas32_state::v25_map)
- AM_RANGE(0x00000, 0x0ffff) AM_ROM AM_REGION("mcu", 0)
- AM_RANGE(0x10000, 0x1ffff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w)
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("mcu", 0)
-ADDRESS_MAP_END
+void segas32_state::v25_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).rom().region("mcu", 0);
+ map(0x10000, 0x1ffff).rw("dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+ map(0xf0000, 0xfffff).rom().region("mcu", 0);
+}
/*************************************
@@ -1173,13 +1177,15 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(segas32_state::upd7725_prg_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("dspprg", 0)
-ADDRESS_MAP_END
+void segas32_state::upd7725_prg_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom().region("dspprg", 0);
+}
-ADDRESS_MAP_START(segas32_state::upd7725_data_map)
- AM_RANGE(0x0000, 0x03ff) AM_ROM AM_REGION("dspdata", 0)
-ADDRESS_MAP_END
+void segas32_state::upd7725_data_map(address_map &map)
+{
+ map(0x0000, 0x03ff).rom().region("dspdata", 0);
+}
/*************************************
@@ -2254,11 +2260,12 @@ segas32_regular_state::segas32_regular_state(const machine_config &mconfig, cons
-ADDRESS_MAP_START(segas32_state::system32_analog_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(system32_map)
- AM_RANGE(0xc00050, 0xc00057) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("adc", msm6253_device, d7_r, address_w, 0x00ff)
-ADDRESS_MAP_END
+void segas32_state::system32_analog_map(address_map &map)
+{
+ map.unmap_value_high();
+ system32_map(map);
+ map(0xc00050, 0xc00057).mirror(0x0fff80).rw("adc", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::address_w)).umask16(0x00ff);
+}
MACHINE_CONFIG_START(segas32_analog_state::device_add_mconfig)
segas32_state::device_add_mconfig(config);
@@ -2331,11 +2338,12 @@ segas32_trackball_state::segas32_trackball_state(const machine_config &mconfig,
-ADDRESS_MAP_START(segas32_state::system32_4player_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(system32_map)
- AM_RANGE(0xc00060, 0xc00067) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+void segas32_state::system32_4player_map(address_map &map)
+{
+ map.unmap_value_high();
+ system32_map(map);
+ map(0xc00060, 0xc00067).mirror(0x0fff80).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+}
MACHINE_CONFIG_START(segas32_4player_state::device_add_mconfig)
segas32_state::device_add_mconfig(config);
@@ -2365,11 +2373,12 @@ segas32_4player_state::segas32_4player_state(const machine_config &mconfig, devi
-ADDRESS_MAP_START(segas32_state::ga2_main_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(system32_4player_map)
- AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8("dpram", mb8421_device, right_r, right_w, 0x00ff)
-ADDRESS_MAP_END
+void segas32_state::ga2_main_map(address_map &map)
+{
+ map.unmap_value_high();
+ system32_4player_map(map);
+ map(0xa00000, 0xa00fff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w)).umask16(0x00ff);
+}
MACHINE_CONFIG_START(segas32_v25_state::device_add_mconfig)
segas32_4player_state::device_add_mconfig(config);
@@ -2442,16 +2451,17 @@ WRITE_LINE_MEMBER(segas32_cd_state::scsi_drq_w)
printf("%02x DRQ\n",state);
}
-ADDRESS_MAP_START(segas32_state::system32_cd_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(system32_map)
+void segas32_state::system32_cd_map(address_map &map)
+{
+ map.unmap_value_high();
+ system32_map(map);
#if S32_KOKOROJI_TEST_CD
- AM_RANGE(0xc00040, 0xc0005f) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("mb89352", mb89352_device, mb89352_r, mb89352_w, 0x00ff)
+ map(0xc00040, 0xc0005f).mirror(0x0fff80).rw("mb89352", FUNC(mb89352_device::mb89352_r), FUNC(mb89352_device::mb89352_w)).umask16(0x00ff);
#else
- AM_RANGE(0xc00040, 0xc0005f) AM_MIRROR(0x0fff80) AM_NOP
+ map(0xc00040, 0xc0005f).mirror(0x0fff80).noprw();
#endif
- AM_RANGE(0xc00060, 0xc0006f) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("cxdio", cxd1095_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+ map(0xc00060, 0xc0006f).mirror(0x0fff80).rw("cxdio", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff);
+}
void segas32_cd_state::cdrom_config(device_t *device)
{
@@ -2623,12 +2633,13 @@ sega_multi32_analog_state::sega_multi32_analog_state(const machine_config &mconf
}
-ADDRESS_MAP_START(segas32_state::multi32_6player_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_IMPORT_FROM(multi32_map)
- AM_RANGE(0xc00060, 0xc00067) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff00ff)
-ADDRESS_MAP_END
+void segas32_state::multi32_6player_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xffffff);
+ multi32_map(map);
+ map(0xc00060, 0xc00067).mirror(0x07ff80).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask32(0x00ff00ff);
+}
MACHINE_CONFIG_START(sega_multi32_6player_state::device_add_mconfig)
sega_multi32_state::device_add_mconfig(config);
diff --git a/src/mame/drivers/segaxbd.cpp b/src/mame/drivers/segaxbd.cpp
index 3b855b2865e..ad075b7f811 100644
--- a/src/mame/drivers/segaxbd.cpp
+++ b/src/mame/drivers/segaxbd.cpp
@@ -990,9 +990,10 @@ void segaxbd_state::main_map(address_map &map)
map(0x3fc000, 0x3fffff).ram().share("backup2");
}
-ADDRESS_MAP_START(segaxbd_state::decrypted_opcodes_map)
- AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes")
-ADDRESS_MAP_END
+void segaxbd_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes");
+}
//**************************************************************************
// SUB CPU ADDRESS MAPS
@@ -1044,18 +1045,20 @@ void segaxbd_state::sound_portmap(address_map &map)
// Sound Board
// The extra sound is used when the cabinet is Deluxe(Air Drive), or Cockpit. The soundlatch is
// shared with the main board sound.
-ADDRESS_MAP_START(segaxbd_state::smgp_sound2_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf0ff) AM_MIRROR(0x0700) AM_DEVREADWRITE("pcm2", segapcm_device, sega_pcm_r, sega_pcm_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segaxbd_state::smgp_sound2_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf0ff).mirror(0x0700).rw("pcm2", FUNC(segapcm_device::sega_pcm_r), FUNC(segapcm_device::sega_pcm_w));
+ map(0xf800, 0xffff).ram();
+}
-ADDRESS_MAP_START(segaxbd_state::smgp_sound2_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
-ADDRESS_MAP_END
+void segaxbd_state::smgp_sound2_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x40, 0x40).mirror(0x3f).r(this, FUNC(segaxbd_state::sound_data_r));
+}
@@ -1064,18 +1067,20 @@ ADDRESS_MAP_END
//**************************************************************************
// Motor Board, not yet emulated
-ADDRESS_MAP_START(segaxbd_state::smgp_airdrive_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xafff) AM_RAM
-ADDRESS_MAP_END
+void segaxbd_state::smgp_airdrive_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xafff).ram();
+}
-ADDRESS_MAP_START(segaxbd_state::smgp_airdrive_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_READNOP
- AM_RANGE(0x02, 0x03) AM_NOP
-ADDRESS_MAP_END
+void segaxbd_state::smgp_airdrive_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x01, 0x01).nopr();
+ map(0x02, 0x03).noprw();
+}
@@ -1084,17 +1089,19 @@ ADDRESS_MAP_END
//**************************************************************************
// Link Board, not yet emulated
-ADDRESS_MAP_START(segaxbd_state::smgp_comm_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0x47ff) AM_RAM // MB8421 Dual-Port SRAM
-ADDRESS_MAP_END
+void segaxbd_state::smgp_comm_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).ram();
+ map(0x4000, 0x47ff).ram(); // MB8421 Dual-Port SRAM
+}
-ADDRESS_MAP_START(segaxbd_state::smgp_comm_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void segaxbd_state::smgp_comm_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
@@ -1103,16 +1110,18 @@ ADDRESS_MAP_END
//**************************************************************************
// Z80, unknown function
-ADDRESS_MAP_START(segaxbd_state::rascot_z80_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xafff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segaxbd_state::rascot_z80_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void segaxbd_state::rascot_z80_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xafff).ram();
+}
+
+void segaxbd_state::rascot_z80_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
diff --git a/src/mame/drivers/sg1000.cpp b/src/mame/drivers/sg1000.cpp
index c9ce4f770fc..984a5bf6d80 100644
--- a/src/mame/drivers/sg1000.cpp
+++ b/src/mame/drivers/sg1000.cpp
@@ -194,13 +194,13 @@ void sg1000_state::sc3000_io_map(address_map &map)
}
/* This is how the I/O ports are really mapped, but MAME does not support overlapping ranges
-ADDRESS_MAP_START(sg1000_state::sc3000_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- map(0x00, 0x00) AM_MIRROR(0xdf) AM_DEVREADWRITE(UPD9255_TAG, i8255_device, read, write)
- map(0x00, 0x00) AM_MIRROR(0x7f) AM_DEVWRITE(SN76489AN_TAG, sn76489a_device, write)
- map(0x00, 0x00) AM_MIRROR(0xae) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, vram_read, vram_write)
- map(0x01, 0x01) AM_MIRROR(0xae) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, register_read, register_write)
- map(0x60, 0x60) AM_MIRROR(0x9f) AM_READ(sc3000_r_r)
+void sg1000_state::sc3000_io_map(address_map &map)
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0xdf).rw(UPD9255_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x00, 0x00).mirror(0x7f).w(SN76489AN_TAG, FUNC(sn76489a_device::write));
+ map(0x00, 0x00).mirror(0xae).rw(TMS9918A_TAG, FUNC(tms9918a_device::vram_read), FUNC(tms9918a_device::vram_write));
+ map(0x01, 0x01).mirror(0xae).rw(TMS9918A_TAG, FUNC(tms9918a_device::register_read), FUNC(tms9918a_device::register_write));
+ map(0x60, 0x60).mirror(0x9f).r(this, FUNC(sg1000_state::sc3000_r_r));
ADDRESS_MAP_END
*/
diff --git a/src/mame/drivers/superqix.cpp b/src/mame/drivers/superqix.cpp
index 5dc13ec5743..9e4634545b9 100644
--- a/src/mame/drivers/superqix.cpp
+++ b/src/mame/drivers/superqix.cpp
@@ -979,15 +979,16 @@ MACHINE_START_MEMBER(hotsmash_state, pbillian)
}
-ADDRESS_MAP_START(superqix_state_base::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
+void superqix_state_base::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
// the following four ranges are part of a single 6264 64Kibit SRAM chip, called 'VRAM' in POST
- AM_RANGE(0xe000, 0xe0ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe100, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(superqix_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xe000, 0xe0ff).ram().share("spriteram");
+ map(0xe100, 0xe7ff).ram();
+ map(0xe800, 0xefff).ram().w(this, FUNC(superqix_state_base::superqix_videoram_w)).share("videoram");
+ map(0xf000, 0xffff).ram();
+}
void hotsmash_state::pbillian_port_map(address_map &map)
{ // used by both pbillian and hotsmash
diff --git a/src/mame/drivers/taitottl.cpp b/src/mame/drivers/taitottl.cpp
index f6ffb7d9c1d..e0946626043 100644
--- a/src/mame/drivers/taitottl.cpp
+++ b/src/mame/drivers/taitottl.cpp
@@ -53,7 +53,7 @@
T. T. Block C (05/1978) UNKNOWN
T. T. Block CU (08/1978) UNKNOWN
T. T. Speed Race (06/1978) UNKNOWN
- T. T. Speed Race CL (??/1978) UNKNOWN
+ T. T. Speed Race CL (10/1978) YES
T. T. Top Bowler (??/1978) UNKNOWN
T. T. Zun Zun Block (??/1979) YES 3 - (2 x 512bytes, 1 x 32bytes)
Wall Block (08/1978) UNKNOWN
@@ -307,6 +307,54 @@ ROM_START( ttblock )
ROM_LOAD( "tl01.4a", 0x0000, 0x0800, CRC(65b730f7) SHA1(f82931c9a128021c97d1d41b5eac05df55dd5994) ) // MMI 6353
ROM_END
+/*
+
+TT Speed Race Color
+14.314 mhz XTAL
+
+ label loc. Part # Use?
+ ==========================================================
+TOP PCB: [CEN00008 CE070013 CE-44 B]
+ CE01 7J Harris 7643
+ SD06 4D Harris 7643
+ SD07 4C Harris 7643
+ SD05 5B MMI 6301
+
+MIDDLE PCB: [CEN00007 CE070012 CE-44]
+ CR11 4A MMI 6301
+ CR11 4J MMI 6301
+ TE-01 2B Harris 7643
+
+BOTTOM PCB: [CEN00006 CE070011 CE-44 B]
+ SD08 5E MMI 6331
+ SD09 5D MMI 6331
+ SD10 6M MMI 6331
+ RED 2H MMI 6331
+
+SOUND PCB: [CEN00004A CE070004A]
+
+*/
+
+ROM_START( ttsracec )
+ ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
+
+ ROM_REGION( 0x0800, "roms", ROMREGION_ERASE00 )
+ ROM_LOAD( "ce01.7j", 0x0000, 0x0800, CRC(277cd3ca) SHA1(9493f3b4575a10d0b243446d92fdc56a540bc0e4) )
+ ROM_LOAD( "sd06.4d", 0x0000, 0x0800, CRC(2ff92235) SHA1(7be446300937362e365b85181d90006e901534aa) )
+ ROM_LOAD( "sd07.4c", 0x0000, 0x0800, CRC(38b69397) SHA1(6a072e74d4537c8128bf4a3b91f5636640f2472f) )
+ ROM_LOAD( "sd05.5b", 0x0000, 0x0100, CRC(d10920ee) SHA1(39bcff62a028373193875f873a76a42b9105a647) )
+
+ ROM_LOAD( "cr11.4a", 0x0000, 0x0100, CRC(b3250118) SHA1(ab8bfa11b112b03b8ff00b09b3e6d9b221051ad2) )
+ ROM_LOAD( "cr11.4j", 0x0000, 0x0100, CRC(b3250118) SHA1(ab8bfa11b112b03b8ff00b09b3e6d9b221051ad2) )
+ ROM_LOAD( "te-01.2b", 0x0000, 0x0800, CRC(1bafaae6) SHA1(5b6dcdf1e2f3842b0a7313cbd308ae312a675298) )
+
+ ROM_LOAD( "sd08.5e", 0x0000, 0x0020, CRC(a0fc7c02) SHA1(ea2cf44ab64bfa8d5f9105069a8f38dc75505c30) )
+ ROM_LOAD( "sd09.5d", 0x0000, 0x0020, CRC(6e4fa64e) SHA1(04368bcdb2e91a17cd7815ee98ad846bb9732d9b) )
+ ROM_LOAD( "sd10.6m", 0x0000, 0x0020, CRC(402e0c59) SHA1(a8e43fe7c2f194ae49977e8ef753049f6b378937) )
+ ROM_LOAD( "red.2h", 0x0000, 0x0020, CRC(43a3b7ff) SHA1(a1ff087f7aba211a021a8ead688a3a8780d34174) )
+ROM_END
+
+
ROM_START( zzblock )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
@@ -321,4 +369,5 @@ GAME( 1977, fisco400, 0, taitottl, 0, taitottl_state, 0, ROT0, "Taito",
GAME( 1977, gunman, 0, taitottl, 0, taitottl_state, 0, ROT0, "Taito", "Gunman [TTL]", MACHINE_IS_SKELETON )
GAME( 1977, missilex, 0, taitottl, 0, taitottl_state, 0, ROT0, "Taito", "Missile-X [TTL]", MACHINE_IS_SKELETON )
GAME( 1977, ttblock, 0, taitottl, 0, taitottl_state, 0, ROT0, "Taito", "T.T Block [TTL]", MACHINE_IS_SKELETON )
+GAME( 1978, ttsracec, 0, taitottl, 0, taitottl_state, 0, ROT0, "Taito", "T.T Speed Race Color [TTL]", MACHINE_IS_SKELETON )
GAME( 1979, zzblock, 0, taitottl, 0, taitottl_state, 0, ROT0, "Taito", "Zun Zun Block [TTL]", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/tourvis.cpp b/src/mame/drivers/tourvis.cpp
index f88212ca648..c7992e3626a 100644
--- a/src/mame/drivers/tourvis.cpp
+++ b/src/mame/drivers/tourvis.cpp
@@ -453,8 +453,10 @@ MACHINE_CONFIG_END
ROMX_LOAD( "v4-43.ic29", 0x0000, 0x8000, CRC(88da23f3) SHA1(9d24faa116129783e55c7f79a4a08902a236d5a6), ROM_BIOS(5) ) \
ROM_SYSTEM_BIOS( 5, "40", "V4-40" ) \
ROMX_LOAD( "v4-40.ic29", 0x0000, 0x8000, CRC(ba6290cc) SHA1(92b0e9f55791e892ec209de4fadd80faef370622), ROM_BIOS(6) ) \
- ROM_SYSTEM_BIOS( 6, "12", "V1-20" ) \
- ROMX_LOAD( "v1_2.0.bin", 0x0000, 0x8000, CRC(36012f88) SHA1(5bd42fb51aa48ff65e704ea06a9181bb87ed2137), ROM_BIOS(7) )
+ ROM_SYSTEM_BIOS( 6, "20", "VT-20" ) \
+ ROMX_LOAD( "vt_2.0.bin", 0x0000, 0x8000, CRC(36012f88) SHA1(5bd42fb51aa48ff65e704ea06a9181bb87ed2137), ROM_BIOS(7) ) \
+ ROM_SYSTEM_BIOS( 7, "11", "VT-11" ) \
+ ROMX_LOAD( "vt_1.1.bin", 0x0000, 0x8000, CRC(27abbc36) SHA1(881ea7802b9e241473bc8ced0472e0f1851c9886), ROM_BIOS(8) )
ROM_START(tourvis)
diff --git a/src/mame/drivers/trs80m2.cpp b/src/mame/drivers/trs80m2.cpp
index 8d90f060809..da546f91e3b 100644
--- a/src/mame/drivers/trs80m2.cpp
+++ b/src/mame/drivers/trs80m2.cpp
@@ -362,12 +362,13 @@ void trs80m16_state::m16_z80_io(address_map &map)
// ADDRESS_MAP( m68000_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(trs80m2_state::m68000_mem)
+void trs80m2_state::m68000_mem(address_map &map)
+{
// AM_RANGE(0x7800d0, 0x7800d1) 9519A (C/D = UDS)
// AM_RANGE(0x7800d2, 0x7800d3) limit/offset 2
// AM_RANGE(0x7800d4, 0x7800d5) limit/offset 1
// AM_RANGE(0x7800d6, 0x7800d7) Z80 IRQ
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/vegas.cpp b/src/mame/drivers/vegas.cpp
index 82c2e91d22e..365ce816a1a 100644
--- a/src/mame/drivers/vegas.cpp
+++ b/src/mame/drivers/vegas.cpp
@@ -1666,45 +1666,52 @@ INPUT_PORTS_END
* Memory maps
*
*************************************/
-ADDRESS_MAP_START(vegas_state::vegas_cs2_map)
- AM_RANGE(0x00000000, 0x00007003) AM_READWRITE8(sio_r, sio_w, 0xffffffff)
-ADDRESS_MAP_END
+void vegas_state::vegas_cs2_map(address_map &map)
+{
+ map(0x00000000, 0x00007003).rw(this, FUNC(vegas_state::sio_r), FUNC(vegas_state::sio_w));
+}
-ADDRESS_MAP_START(vegas_state::vegas_cs3_map)
- AM_RANGE(0x00000000, 0x00000003) AM_READWRITE(analog_port_r, analog_port_w)
+void vegas_state::vegas_cs3_map(address_map &map)
+{
+ map(0x00000000, 0x00000003).rw(this, FUNC(vegas_state::analog_port_r), FUNC(vegas_state::analog_port_w));
//AM_RANGE(0x00001000, 0x00001003) AM_READWRITE(lcd_r, lcd_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vegas_state::vegas_cs4_map)
- AM_RANGE(0x00000000, 0x00007fff) AM_READWRITE(timekeeper_r, timekeeper_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vegas_state::vegas_cs5_map)
- AM_RANGE(0x00000000, 0x00000003) AM_READWRITE8(cpu_io_r, cpu_io_w, 0xffffffff)
- AM_RANGE(0x00100000, 0x001fffff) AM_READ(unknown_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vegas_state::vegas_cs6_map)
- AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, packed_r, packed_w)
- AM_RANGE(0x00001000, 0x00001003) AM_WRITE(asic_fifo_w)
- AM_RANGE(0x00003000, 0x00003003) AM_WRITE(dcs3_fifo_full_w) // if (m_dcs_idma_cs != 0)
- AM_RANGE(0x00005000, 0x00005003) AM_DEVWRITE("dcs", dcs_audio_device, dsio_idma_addr_w) // if (m_dcs_idma_cs == 6)
- AM_RANGE(0x00007000, 0x00007003) AM_DEVREADWRITE("dcs", dcs_audio_device, dsio_idma_data_r, dsio_idma_data_w) // if (m_dcs_idma_cs == 6)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vegas_state::vegas_cs7_map)
+}
+
+void vegas_state::vegas_cs4_map(address_map &map)
+{
+ map(0x00000000, 0x00007fff).rw(this, FUNC(vegas_state::timekeeper_r), FUNC(vegas_state::timekeeper_w));
+}
+
+void vegas_state::vegas_cs5_map(address_map &map)
+{
+ map(0x00000000, 0x00000003).rw(this, FUNC(vegas_state::cpu_io_r), FUNC(vegas_state::cpu_io_w));
+ map(0x00100000, 0x001fffff).r(this, FUNC(vegas_state::unknown_r));
+}
+
+void vegas_state::vegas_cs6_map(address_map &map)
+{
+ map(0x00000000, 0x0000003f).rw(m_ioasic, FUNC(midway_ioasic_device::packed_r), FUNC(midway_ioasic_device::packed_w));
+ map(0x00001000, 0x00001003).w(this, FUNC(vegas_state::asic_fifo_w));
+ map(0x00003000, 0x00003003).w(this, FUNC(vegas_state::dcs3_fifo_full_w)); // if (m_dcs_idma_cs != 0)
+ map(0x00005000, 0x00005003).w(m_dcs, FUNC(dcs_audio_device::dsio_idma_addr_w)); // if (m_dcs_idma_cs == 6)
+ map(0x00007000, 0x00007003).rw(m_dcs, FUNC(dcs_audio_device::dsio_idma_data_r), FUNC(dcs_audio_device::dsio_idma_data_w)); // if (m_dcs_idma_cs == 6)
+}
+
+void vegas_state::vegas_cs7_map(address_map &map)
+{
//AM_RANGE(0x00000000, 0x00000003) AM_READWRITE8(nss_r, nss_w, 0xffffffff)
- AM_RANGE(0x00001000, 0x0000100f) AM_READWRITE(ethernet_r, ethernet_w)
- AM_RANGE(0x00005000, 0x00005003) AM_DEVWRITE("dcs", dcs_audio_device, dsio_idma_addr_w) // if (m_dcs_idma_cs == 7)
- AM_RANGE(0x00007000, 0x00007003) AM_DEVREADWRITE("dcs", dcs_audio_device, dsio_idma_data_r, dsio_idma_data_w) // if (m_dcs_idma_cs == 7)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vegas_state::vegas_cs8_map)
- AM_RANGE(0x01000000, 0x0100001f) AM_DEVREADWRITE8("uart1", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial ttyS01 (TL16C552 CS0)
- AM_RANGE(0x01400000, 0x0140001f) AM_DEVREADWRITE8("uart2", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial ttyS02 (TL16C552 CS1)
- AM_RANGE(0x01800000, 0x0180001f) AM_READWRITE8(parallel_r, parallel_w, 0xff) // Parallel UART (TL16C552 CS2)
- AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE8(mpsreset_w, 0xff) // MPS Reset
-ADDRESS_MAP_END
+ map(0x00001000, 0x0000100f).rw(this, FUNC(vegas_state::ethernet_r), FUNC(vegas_state::ethernet_w));
+ map(0x00005000, 0x00005003).w(m_dcs, FUNC(dcs_audio_device::dsio_idma_addr_w)); // if (m_dcs_idma_cs == 7)
+ map(0x00007000, 0x00007003).rw(m_dcs, FUNC(dcs_audio_device::dsio_idma_data_r), FUNC(dcs_audio_device::dsio_idma_data_w)); // if (m_dcs_idma_cs == 7)
+}
+
+void vegas_state::vegas_cs8_map(address_map &map)
+{
+ map(0x01000000, 0x0100001f).rw(m_uart1, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask32(0x000000ff); // Serial ttyS01 (TL16C552 CS0)
+ map(0x01400000, 0x0140001f).rw(m_uart2, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask32(0x000000ff); // Serial ttyS02 (TL16C552 CS1)
+ map(0x01800000, 0x0180001f).rw(this, FUNC(vegas_state::parallel_r), FUNC(vegas_state::parallel_w)).umask32(0x000000ff); // Parallel UART (TL16C552 CS2)
+ map(0x01c00000, 0x01c00000).w(this, FUNC(vegas_state::mpsreset_w)); // MPS Reset
+}
/*************************************
*
diff --git a/src/mame/drivers/williams.cpp b/src/mame/drivers/williams.cpp
index 922f9394606..c8f16936117 100644
--- a/src/mame/drivers/williams.cpp
+++ b/src/mame/drivers/williams.cpp
@@ -667,10 +667,11 @@ void williams2_state::williams2_d000_ram_map(address_map &map)
/* tshoot and joust2: D000-DFFF is ROM */
-ADDRESS_MAP_START(williams2_state::williams2_d000_rom_map)
- AM_IMPORT_FROM(williams2_common_map)
- AM_RANGE(0xd000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void williams2_state::williams2_d000_rom_map(address_map &map)
+{
+ williams2_common_map(map);
+ map(0xd000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/x1twin.cpp b/src/mame/drivers/x1twin.cpp
index 5f0e3f2af72..6a7f5f1a5e2 100644
--- a/src/mame/drivers/x1twin.cpp
+++ b/src/mame/drivers/x1twin.cpp
@@ -65,20 +65,22 @@ void x1twin_state::x1_io(address_map &map)
}
#if 0
-ADDRESS_MAP_START(x1twin_state::pce_mem)
- AM_RANGE( 0x000000, 0x09FFFF) AM_ROM
- AM_RANGE( 0x1F0000, 0x1F1FFF) AM_RAM AM_MIRROR(0x6000)
- AM_RANGE( 0x1FE000, 0x1FE3FF) AM_READWRITE( vdc_r, vdc_w )
- AM_RANGE( 0x1FE400, 0x1FE7FF) AM_READWRITE( vce_r, vce_w )
- AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE( "c6280", c6280_device, c6280_r, c6280_w )
- AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_READWRITE( h6280_timer_r, h6280_timer_w )
- AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE( pce_joystick_r, pce_joystick_w )
- AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE( "maincpu", h6280_device, irq_status_r, irq_status_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(x1twin_state::pce_io)
- AM_RANGE( 0x00, 0x03) AM_READWRITE( vdc_r, vdc_w )
-ADDRESS_MAP_END
+void x1twin_state::pce_mem(address_map &map)
+{
+ map(0x000000, 0x09FFFF).rom();
+ map(0x1F0000, 0x1F1FFF).ram().mirror(0x6000);
+ map(0x1FE000, 0x1FE3FF).rw(this, FUNC(x1twin_state::vdc_r), FUNC(x1twin_state::vdc_w));
+ map(0x1FE400, 0x1FE7FF).rw(this, FUNC(x1twin_state::vce_r), FUNC(x1twin_state::vce_w));
+ map(0x1FE800, 0x1FEBFF).rw("c6280", FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w));
+ map(0x1FEC00, 0x1FEFFF).rw(this, FUNC(x1twin_state::h6280_timer_r), FUNC(x1twin_state::h6280_timer_w));
+ map(0x1FF000, 0x1FF3FF).rw(this, FUNC(x1twin_state::pce_joystick_r), FUNC(x1twin_state::pce_joystick_w));
+ map(0x1FF400, 0x1FF7FF).rw("maincpu", FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w));
+}
+
+void x1twin_state::pce_io(address_map &map)
+{
+ map(0x00, 0x03).rw(this, FUNC(x1twin_state::vdc_r), FUNC(x1twin_state::vdc_w));
+}
#endif
/*************************************
diff --git a/src/mame/etc/korgm1.cpp b/src/mame/etc/korgm1.cpp
index 0f5ddb73f6c..2cc318bf347 100644
--- a/src/mame/etc/korgm1.cpp
+++ b/src/mame/etc/korgm1.cpp
@@ -54,28 +54,30 @@ uint32_t korgm1_state::screen_update( screen_device &screen, bitmap_ind16 &bitma
return 0;
}
-ADDRESS_MAP_START(korgm1_state::korgm1_map)
- AM_RANGE(0x00000, 0x0ffff) AM_RAM // 64 KB
-// AM_RANGE(0x50000, 0x57fff) AM_RAM // memory card 32 KB
- AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("ipl", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(korgm1_state::korgm1_io)
-// AM_RANGE(0x0000, 0x00ff) internal peripheral (?)
-// AM_RANGE(0x0100, 0x01ff) VDF 1 (MB87404)
-// AM_RANGE(0x0200, 0x02ff) VDF 2 (MB87404)
-// AM_RANGE(0x0500, 0x0503) MDE (MB87405)
-// AM_RANGE(0x0600, 0x0601) OPZ 1 (8-bit port)
-// AM_RANGE(0x0700, 0x0701) OPZ 2 (8-bit port)
-// AM_RANGE(0x0800, 0x0801) SCAN (8-bit port) (keyboard)
-// AM_RANGE(0x0900, 0x0900) ADC (M58990P, compatible with ADC0808; Joystick, "value" and After Touch routes here)
-// AM_RANGE(0x0a00, 0x0a07) PIO (CXD1095Q; LCD, LED and SW routes here; also controls ADC channel select and TG/VDF/MDE reset line)
-// AM_RANGE(0x0b00, 0x0b01) LCDC (8-bit port)
-// AM_RANGE(0x1000, 0x11ff) TG (MB87402)
-// AM_RANGE(0x2000, 0x23ff) SCSI
-// AM_RANGE(0x3000, 0x33ff) FDC
+void korgm1_state::korgm1_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).ram(); // 64 KB
+// map(0x50000, 0x57fff).ram(); // memory card 32 KB
+ map(0xe0000, 0xfffff).rom().region("ipl", 0);
+}
+
+void korgm1_state::korgm1_io(address_map &map)
+{
+// map(0x0000, 0x00ff); internal peripheral (?)
+// map(0x0100, 0x01ff); VDF 1 (MB87404)
+// map(0x0200, 0x02ff); VDF 2 (MB87404)
+// map(0x0500, 0x0503); MDE (MB87405)
+// map(0x0600, 0x0601); OPZ 1 (8-bit port)
+// map(0x0700, 0x0701); OPZ 2 (8-bit port)
+// map(0x0800, 0x0801); SCAN (8-bit port) (keyboard)
+// map(0x0900, 0x0900); ADC (M58990P, compatible with ADC0808; Joystick, "value" and After Touch routes here)
+// map(0x0a00, 0x0a07); PIO (CXD1095Q; LCD, LED and SW routes here; also controls ADC channel select and TG/VDF/MDE reset line)
+// map(0x0b00, 0x0b01); LCDC (8-bit port)
+// map(0x1000, 0x11ff); TG (MB87402)
+// map(0x2000, 0x23ff); SCSI
+// map(0x3000, 0x33ff); FDC
// TG 2?
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( korgm1 )
/* dummy active high structure */
diff --git a/src/mame/etc/template_driver.cpp b/src/mame/etc/template_driver.cpp
index 9048e8a26d2..067e2f4d1e9 100644
--- a/src/mame/etc/template_driver.cpp
+++ b/src/mame/etc/template_driver.cpp
@@ -52,13 +52,15 @@ uint32_t xxx_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap,
return 0;
}
-ADDRESS_MAP_START(xxx_state::xxx_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void xxx_state::xxx_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
-ADDRESS_MAP_START(xxx_state::xxx_io)
-// ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void xxx_state::xxx_io(address_map &map)
+{
+ map.global_mask(0xff);
+}
static INPUT_PORTS_START( xxx )
/* dummy active high structure */
diff --git a/src/mame/includes/8080bw.h b/src/mame/includes/8080bw.h
index 4bf4ae01ab0..5445758f042 100644
--- a/src/mame/includes/8080bw.h
+++ b/src/mame/includes/8080bw.h
@@ -102,6 +102,8 @@ public:
DECLARE_READ8_MEMBER(schasercv_02_r);
DECLARE_WRITE8_MEMBER(schasercv_sh_port_1_w);
DECLARE_WRITE8_MEMBER(schasercv_sh_port_2_w);
+ DECLARE_WRITE8_MEMBER(crashrd_port03_w);
+ DECLARE_WRITE8_MEMBER(crashrd_port05_w);
DECLARE_WRITE8_MEMBER(yosakdon_sh_port_1_w);
DECLARE_WRITE8_MEMBER(yosakdon_sh_port_2_w);
DECLARE_READ8_MEMBER(shuttlei_ff_r);
@@ -194,6 +196,7 @@ public:
void darthvdr(machine_config &config);
void ballbomb(machine_config &config);
void spacecom(machine_config &config);
+ void crashrd(machine_config &config);
void schasercv(machine_config &config);
void lupin3(machine_config &config);
void spacerng(machine_config &config);
@@ -206,6 +209,7 @@ public:
void cosmicmo_io_map(address_map &map);
void cosmo_io_map(address_map &map);
void cosmo_map(address_map &map);
+ void crashrd_io_map(address_map &map);
void darthvdr_io_map(address_map &map);
void darthvdr_map(address_map &map);
void escmars_map(address_map &map);
diff --git a/src/mame/includes/asuka.h b/src/mame/includes/asuka.h
index c07ec411923..556d34ec6a3 100644
--- a/src/mame/includes/asuka.h
+++ b/src/mame/includes/asuka.h
@@ -32,19 +32,20 @@ public:
};
asuka_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_cadash_shared_ram(*this, "sharedram"),
- m_maincpu(*this, "maincpu"),
- m_audiocpu(*this, "audiocpu"),
- m_cchip(*this, "cchip"),
- m_msm(*this, "msm"),
- m_adpcm_select(*this, "adpcm_select"),
- m_sound_data(*this, "ymsnd"),
- m_pc090oj(*this, "pc090oj"),
- m_tc0100scn(*this, "tc0100scn"),
- m_tc0110pcr(*this, "tc0110pcr"),
- m_tc0220ioc(*this, "tc0220ioc"),
- m_cchip_irq_clear(*this, "cchip_irq_clear")
+ : driver_device(mconfig, type, tag)
+ , m_cadash_shared_ram(*this, "sharedram")
+ , m_maincpu(*this, "maincpu")
+ , m_audiocpu(*this, "audiocpu")
+ , m_cchip(*this, "cchip")
+ , m_msm(*this, "msm")
+ , m_adpcm_select(*this, "adpcm_select")
+ , m_sound_data(*this, "ymsnd")
+ , m_pc090oj(*this, "pc090oj")
+ , m_tc0100scn(*this, "tc0100scn")
+ , m_tc0110pcr(*this, "tc0110pcr")
+ , m_tc0220ioc(*this, "tc0220ioc")
+ , m_cchip_irq_clear(*this, "cchip_irq_clear")
+ , m_audiobank(*this, "audiobank")
{ }
DECLARE_WRITE8_MEMBER(coin_control_w);
@@ -53,7 +54,6 @@ public:
DECLARE_READ16_MEMBER(cadash_share_r);
DECLARE_WRITE16_MEMBER(cadash_share_w);
DECLARE_WRITE16_MEMBER(asuka_spritectrl_w);
- DECLARE_WRITE8_MEMBER(sound_bankswitch_2151_w);
DECLARE_WRITE8_MEMBER(asuka_msm5205_start_w);
DECLARE_WRITE8_MEMBER(asuka_msm5205_stop_w);
DECLARE_WRITE8_MEMBER(counters_w);
@@ -111,6 +111,8 @@ protected:
optional_device<tc0220ioc_device> m_tc0220ioc;
optional_device<timer_device> m_cchip_irq_clear;
+
+ required_memory_bank m_audiobank;
};
#endif // MAME_INCLUDES_ASUKA_H
diff --git a/src/mame/includes/bionicc.h b/src/mame/includes/bionicc.h
index f0761c0956f..59d597a61bf 100644
--- a/src/mame/includes/bionicc.h
+++ b/src/mame/includes/bionicc.h
@@ -11,48 +11,35 @@
#include "machine/timer.h"
#include "video/bufsprite.h"
#include "video/tigeroad_spr.h"
+#include "cpu/mcs51/mcs51.h"
class bionicc_state : public driver_device
{
public:
bionicc_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_spriteram(*this, "spriteram") ,
- m_txvideoram(*this, "txvideoram"),
- m_fgvideoram(*this, "fgvideoram"),
- m_bgvideoram(*this, "bgvideoram"),
m_maincpu(*this, "maincpu"),
+ m_mcu(*this, "mcu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_spritegen(*this, "spritegen"),
- m_soundlatch(*this, "soundlatch")
+ m_soundlatch(*this, "soundlatch"),
+ m_spriteram(*this, "spriteram") ,
+ m_txvideoram(*this, "txvideoram"),
+ m_fgvideoram(*this, "fgvideoram"),
+ m_bgvideoram(*this, "bgvideoram"),
+ m_ram16(*this, "ram16"),
+ m_old_p3(0xff)
{ }
- /* memory pointers */
- required_device<buffered_spriteram16_device> m_spriteram;
- required_shared_ptr<uint16_t> m_txvideoram;
- required_shared_ptr<uint16_t> m_fgvideoram;
- required_shared_ptr<uint16_t> m_bgvideoram;
+ void bionicc(machine_config &config);
- /* video-related */
- tilemap_t *m_tx_tilemap;
- tilemap_t *m_bg_tilemap;
- tilemap_t *m_fg_tilemap;
- uint16_t m_scroll[4];
+private:
- uint16_t m_inp[3];
- uint16_t m_soundcommand;
+ void main_map(address_map &map);
+ void sound_map(address_map &map);
+ void mcu_io(address_map &map);
- DECLARE_WRITE16_MEMBER(hacked_controls_w);
- DECLARE_READ16_MEMBER(hacked_controls_r);
- DECLARE_WRITE16_MEMBER(mpu_trigger_w);
- DECLARE_WRITE16_MEMBER(hacked_soundcommand_w);
- DECLARE_READ16_MEMBER(hacked_soundcommand_r);
- DECLARE_WRITE16_MEMBER(bgvideoram_w);
- DECLARE_WRITE16_MEMBER(fgvideoram_w);
- DECLARE_WRITE16_MEMBER(txvideoram_w);
- DECLARE_WRITE16_MEMBER(scroll_w);
- DECLARE_WRITE16_MEMBER(gfxctrl_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
TILE_GET_INFO_MEMBER(get_tx_tile_info);
@@ -62,12 +49,42 @@ public:
DECLARE_PALETTE_DECODER(RRRRGGGGBBBBIIII);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(scanline);
+
+ /* handlers */
+ DECLARE_WRITE16_MEMBER(mpu_trigger_w);
+ DECLARE_WRITE16_MEMBER(bgvideoram_w);
+ DECLARE_WRITE16_MEMBER(fgvideoram_w);
+ DECLARE_WRITE16_MEMBER(txvideoram_w);
+ DECLARE_WRITE16_MEMBER(scroll_w);
+ DECLARE_WRITE16_MEMBER(gfxctrl_w);
+
+ DECLARE_READ8_MEMBER(mcu_shared_r);
+ DECLARE_WRITE8_MEMBER(mcu_shared_w);
+
+ DECLARE_WRITE8_MEMBER(out1_w);
+ DECLARE_WRITE8_MEMBER(out3_w);
+
+ /* video-related */
+ tilemap_t *m_tx_tilemap;
+ tilemap_t *m_bg_tilemap;
+ tilemap_t *m_fg_tilemap;
+ uint16_t m_scroll[4];
+
+ /* devices */
required_device<cpu_device> m_maincpu;
+ required_device<cpu_device> m_mcu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<tigeroad_spr_device> m_spritegen;
required_device<generic_latch_8_device> m_soundlatch;
- void bionicc(machine_config &config);
- void main_map(address_map &map);
- void sound_map(address_map &map);
+
+ /* memory */
+ required_device<buffered_spriteram16_device> m_spriteram;
+ required_shared_ptr<uint16_t> m_txvideoram;
+ required_shared_ptr<uint16_t> m_fgvideoram;
+ required_shared_ptr<uint16_t> m_bgvideoram;
+ required_shared_ptr<uint16_t> m_ram16;
+
+ /* misc */
+ int m_old_p3;
};
diff --git a/src/mame/includes/saturn.h b/src/mame/includes/saturn.h
index 17d05898528..bfcff4c4846 100644
--- a/src/mame/includes/saturn.h
+++ b/src/mame/includes/saturn.h
@@ -282,8 +282,9 @@ public:
void stv_vdp2_check_tilemap_with_linescroll(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void stv_vdp2_check_tilemap(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void stv_vdp2_copy_roz_bitmap(bitmap_rgb32 &bitmap, bitmap_rgb32 &roz_bitmap, const rectangle &cliprect, int iRP, int planesizex, int planesizey, int planerenderedsizex, int planerenderedsizey);
- bool stv_vdp2_roz_mode3_window(int x, int y, int rot_parameter);
- int get_roz_mode3_window_pixel(int s_x,int e_x,int s_y,int e_y,int x, int y,uint8_t winenable,uint8_t winarea);
+ inline bool stv_vdp2_roz_window(int x, int y);
+ inline bool stv_vdp2_roz_mode3_window(int x, int y, int rot_parameter);
+ inline int get_roz_window_pixel(int s_x,int e_x,int s_y,int e_y,int x, int y,uint8_t winenable,uint8_t winarea);
void stv_vdp2_fill_rotation_parameter_table( uint8_t rot_parameter );
uint8_t stv_vdp2_check_vram_cycle_pattern_registers( uint8_t access_command_pnmdr, uint8_t access_command_cpdr, uint8_t bitmap_enable );
uint8_t stv_vdp2_is_rotation_applied(void);
diff --git a/src/mame/machine/315-5881_crypt.cpp b/src/mame/machine/315-5881_crypt.cpp
index eab07f56785..c1e1645c20f 100644
--- a/src/mame/machine/315-5881_crypt.cpp
+++ b/src/mame/machine/315-5881_crypt.cpp
@@ -24,22 +24,24 @@ DEFINE_DEVICE_TYPE(SEGA315_5881_CRYPT, sega_315_5881_crypt_device, "sega315_5881
// TODO: standard hookup doesn't work properly (causes a crash in LA Machine Gun)
// might be due of high address variables not properly set (@see sega_315_5881_crypt_device::set_addr_high)
-ADDRESS_MAP_START(sega_315_5881_crypt_device::iomap_64be)
- AM_RANGE(0x0000, 0x0001) AM_READ(ready_r)
+void sega_315_5881_crypt_device::iomap_64be(address_map &map)
+{
+ map(0x0000, 0x0001).r(this, FUNC(sega_315_5881_crypt_device::ready_r));
// TODO: it is unknown if the
- AM_RANGE(0x0010, 0x0011) AM_WRITE(addrlo_w)
- AM_RANGE(0x0012, 0x0013) AM_WRITE(addrhi_w)
- AM_RANGE(0x0018, 0x0019) AM_WRITE(subkey_be_w)
- AM_RANGE(0x001c, 0x001d) AM_READ(decrypt_be_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sega_315_5881_crypt_device::iomap_le)
- AM_RANGE(0x0000, 0x0001) AM_READ(ready_r)
- AM_RANGE(0x0008, 0x0009) AM_WRITE(addrlo_w)
- AM_RANGE(0x000a, 0x000b) AM_WRITE(addrhi_w)
- AM_RANGE(0x000c, 0x000d) AM_WRITE(subkey_le_w)
- AM_RANGE(0x000e, 0x000f) AM_READ(decrypt_le_r)
-ADDRESS_MAP_END
+ map(0x0010, 0x0011).w(this, FUNC(sega_315_5881_crypt_device::addrlo_w));
+ map(0x0012, 0x0013).w(this, FUNC(sega_315_5881_crypt_device::addrhi_w));
+ map(0x0018, 0x0019).w(this, FUNC(sega_315_5881_crypt_device::subkey_be_w));
+ map(0x001c, 0x001d).r(this, FUNC(sega_315_5881_crypt_device::decrypt_be_r));
+}
+
+void sega_315_5881_crypt_device::iomap_le(address_map &map)
+{
+ map(0x0000, 0x0001).r(this, FUNC(sega_315_5881_crypt_device::ready_r));
+ map(0x0008, 0x0009).w(this, FUNC(sega_315_5881_crypt_device::addrlo_w));
+ map(0x000a, 0x000b).w(this, FUNC(sega_315_5881_crypt_device::addrhi_w));
+ map(0x000c, 0x000d).w(this, FUNC(sega_315_5881_crypt_device::subkey_le_w));
+ map(0x000e, 0x000f).r(this, FUNC(sega_315_5881_crypt_device::decrypt_le_r));
+}
sega_315_5881_crypt_device::sega_315_5881_crypt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, SEGA315_5881_CRYPT, tag, owner, clock)
diff --git a/src/mame/machine/abc1600mac.cpp b/src/mame/machine/abc1600mac.cpp
index c586a76d2b9..cd546fc1229 100644
--- a/src/mame/machine/abc1600mac.cpp
+++ b/src/mame/machine/abc1600mac.cpp
@@ -57,13 +57,15 @@
DEFINE_DEVICE_TYPE(ABC1600_MAC, abc1600_mac_device, "abc1600mac", "ABC 1600 MAC")
-ADDRESS_MAP_START(abc1600_mac_device::map)
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void abc1600_mac_device::map(address_map &map)
+{
+ map(0x00000, 0xfffff).rw(this, FUNC(abc1600_mac_device::read), FUNC(abc1600_mac_device::write));
+}
-ADDRESS_MAP_START(abc1600_mac_device::program_map)
-ADDRESS_MAP_END
+void abc1600_mac_device::program_map(address_map &map)
+{
+}
MACHINE_CONFIG_START(abc1600_mac_device::device_add_mconfig)
diff --git a/src/mame/machine/apricotkb.cpp b/src/mame/machine/apricotkb.cpp
index dd96ff8430e..e3dd5d20d83 100644
--- a/src/mame/machine/apricotkb.cpp
+++ b/src/mame/machine/apricotkb.cpp
@@ -51,15 +51,16 @@ const tiny_rom_entry *apricot_keyboard_device::device_rom_region() const
//-------------------------------------------------
#ifdef UPD7507_EMULATED
-ADDRESS_MAP_START(apricot_keyboard_device::apricot_keyboard_io)
- AM_RANGE(0x00, 0x00) AM_READ(kb_lo_r)
- AM_RANGE(0x01, 0x01) AM_READ(kb_hi_r)
- AM_RANGE(0x03, 0x03) AM_WRITE(kb_p3_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(kb_y0_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(kb_y4_w)
- AM_RANGE(0x06, 0x06) AM_READWRITE(kb_p6_r, kb_yc_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(kb_y8_w)
-ADDRESS_MAP_END
+void apricot_keyboard_device::apricot_keyboard_io(address_map &map)
+{
+ map(0x00, 0x00).r(this, FUNC(apricot_keyboard_device::kb_lo_r));
+ map(0x01, 0x01).r(this, FUNC(apricot_keyboard_device::kb_hi_r));
+ map(0x03, 0x03).w(this, FUNC(apricot_keyboard_device::kb_p3_w));
+ map(0x04, 0x04).w(this, FUNC(apricot_keyboard_device::kb_y0_w));
+ map(0x05, 0x05).w(this, FUNC(apricot_keyboard_device::kb_y4_w));
+ map(0x06, 0x06).rw(this, FUNC(apricot_keyboard_device::kb_p6_r), FUNC(apricot_keyboard_device::kb_yc_w));
+ map(0x07, 0x07).w(this, FUNC(apricot_keyboard_device::kb_y8_w));
+}
#endif
diff --git a/src/mame/machine/at.cpp b/src/mame/machine/at.cpp
index 9502d532fce..b3b9c292228 100644
--- a/src/mame/machine/at.cpp
+++ b/src/mame/machine/at.cpp
@@ -144,18 +144,19 @@ MACHINE_CONFIG_START(at_mb_device::device_add_mconfig)
MACHINE_CONFIG_END
-ADDRESS_MAP_START(at_mb_device::map)
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", am9517a_device, read, write, 0xffffffff)
- AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_master", pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8254_device, read, write, 0xffffffff)
- AM_RANGE(0x0060, 0x0061) AM_READWRITE8(portb_r, portb_w, 0xff00)
- AM_RANGE(0x0060, 0x0061) AM_DEVREADWRITE8("keybc", at_keyboard_controller_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x0064, 0x0065) AM_DEVREADWRITE8("keybc", at_keyboard_controller_device, status_r, command_w, 0x00ff)
- AM_RANGE(0x0070, 0x007f) AM_DEVREAD8("rtc", mc146818_device, read, 0xffffffff) AM_WRITE8(write_rtc, 0xffffffff)
- AM_RANGE(0x0080, 0x009f) AM_READWRITE8(page8_r, page8_w, 0xffffffff)
- AM_RANGE(0x00a0, 0x00bf) AM_DEVREADWRITE8("pic8259_slave", pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("dma8237_2", am9517a_device, read, write, 0x00ff00ff)
-ADDRESS_MAP_END
+void at_mb_device::map(address_map &map)
+{
+ map(0x0000, 0x001f).rw("dma8237_1", FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask16(0xffff);
+ map(0x0020, 0x003f).rw("pic8259_master", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0xffff);
+ map(0x0040, 0x005f).rw("pit8254", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0xffff);
+ map(0x0061, 0x0061).rw(this, FUNC(at_mb_device::portb_r), FUNC(at_mb_device::portb_w));
+ map(0x0060, 0x0060).rw("keybc", FUNC(at_keyboard_controller_device::data_r), FUNC(at_keyboard_controller_device::data_w));
+ map(0x0064, 0x0064).rw("keybc", FUNC(at_keyboard_controller_device::status_r), FUNC(at_keyboard_controller_device::command_w));
+ map(0x0070, 0x007f).r("rtc", FUNC(mc146818_device::read)).umask16(0xffff).w(this, FUNC(at_mb_device::write_rtc)).umask16(0xffff);
+ map(0x0080, 0x009f).rw(this, FUNC(at_mb_device::page8_r), FUNC(at_mb_device::page8_w)).umask16(0xffff);
+ map(0x00a0, 0x00bf).rw("pic8259_slave", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0xffff);
+ map(0x00c0, 0x00df).rw("dma8237_2", FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask16(0x00ff);
+}
/*************************************************************
*
diff --git a/src/mame/machine/awboard.cpp b/src/mame/machine/awboard.cpp
index 58e4c451dab..aae1d1f1d47 100644
--- a/src/mame/machine/awboard.cpp
+++ b/src/mame/machine/awboard.cpp
@@ -159,15 +159,16 @@ ROM board internal layouts:
DEFINE_DEVICE_TYPE(AW_ROM_BOARD, aw_rom_board, "aw_rom_board", "Sammy Atomiswave ROM Board")
-ADDRESS_MAP_START(aw_rom_board::submap)
- AM_RANGE(0x00, 0x01) AM_WRITE(epr_offsetl_w)
- AM_RANGE(0x02, 0x03) AM_WRITE(epr_offseth_w)
- AM_RANGE(0x06, 0x07) AM_WRITE(mpr_record_index_w)
- AM_RANGE(0x08, 0x09) AM_WRITE(mpr_first_file_index_w)
- AM_RANGE(0x0a, 0x0b) AM_WRITE(mpr_file_offsetl_w)
- AM_RANGE(0x0c, 0x0d) AM_WRITE(mpr_file_offseth_w)
- AM_RANGE(0x40, 0x41) AM_READWRITE(pio_r, pio_w)
-ADDRESS_MAP_END
+void aw_rom_board::submap(address_map &map)
+{
+ map(0x00, 0x01).w(this, FUNC(aw_rom_board::epr_offsetl_w));
+ map(0x02, 0x03).w(this, FUNC(aw_rom_board::epr_offseth_w));
+ map(0x06, 0x07).w(this, FUNC(aw_rom_board::mpr_record_index_w));
+ map(0x08, 0x09).w(this, FUNC(aw_rom_board::mpr_first_file_index_w));
+ map(0x0a, 0x0b).w(this, FUNC(aw_rom_board::mpr_file_offsetl_w));
+ map(0x0c, 0x0d).w(this, FUNC(aw_rom_board::mpr_file_offseth_w));
+ map(0x40, 0x41).rw(this, FUNC(aw_rom_board::pio_r), FUNC(aw_rom_board::pio_w));
+}
aw_rom_board::aw_rom_board(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: naomi_g1_device(mconfig, AW_ROM_BOARD, tag, owner, clock)
diff --git a/src/mame/machine/cammu.cpp b/src/mame/machine/cammu.cpp
index c027d2d59e5..3a8c0156075 100644
--- a/src/mame/machine/cammu.cpp
+++ b/src/mame/machine/cammu.cpp
@@ -42,71 +42,75 @@
#include "logmacro.h"
// each variant of the cammu has different registers and a different addressing map
-ADDRESS_MAP_START(cammu_c4t_device::map)
- AM_RANGE(0x008, 0x00b) AM_READWRITE(ram_line_r, ram_line_w)
- AM_RANGE(0x010, 0x013) AM_READWRITE(s_pdo_r, s_pdo_w)
- AM_RANGE(0x018, 0x01b) AM_READWRITE(u_pdo_r, u_pdo_w)
- AM_RANGE(0x020, 0x023) AM_READWRITE(htlb_offset_r, htlb_offset_w)
- AM_RANGE(0x028, 0x02b) AM_READWRITE(i_fault_r, i_fault_w)
- AM_RANGE(0x030, 0x033) AM_READWRITE(fault_address_1_r, fault_address_1_w)
- AM_RANGE(0x038, 0x03b) AM_READWRITE(fault_address_2_r, fault_address_2_w)
- AM_RANGE(0x040, 0x043) AM_READWRITE(fault_data_1_lo_r, fault_data_1_lo_w)
- AM_RANGE(0x048, 0x04b) AM_READWRITE(fault_data_1_hi_r, fault_data_1_hi_w)
- AM_RANGE(0x050, 0x053) AM_READWRITE(fault_data_2_lo_r, fault_data_2_lo_w)
- AM_RANGE(0x058, 0x05b) AM_READWRITE(fault_data_2_hi_r, fault_data_2_hi_w)
- AM_RANGE(0x060, 0x063) AM_READWRITE(c4_bus_poll_r, c4_bus_poll_w)
- AM_RANGE(0x068, 0x06b) AM_READWRITE(control_r, control_w)
- AM_RANGE(0x070, 0x073) AM_READWRITE(bio_control_r, bio_control_w)
- AM_RANGE(0x078, 0x07b) AM_READWRITE(bio_address_tag_r, bio_address_tag_w)
-
- AM_RANGE(0x100, 0x103) AM_READWRITE(cache_data_lo_r, cache_data_lo_w)
- AM_RANGE(0x104, 0x107) AM_READWRITE(cache_data_hi_r, cache_data_hi_w)
- AM_RANGE(0x108, 0x10b) AM_READWRITE(cache_cpu_tag_r, cache_cpu_tag_w)
- AM_RANGE(0x10c, 0x10f) AM_READWRITE(cache_system_tag_valid_r, cache_system_tag_valid_w)
- AM_RANGE(0x110, 0x113) AM_READWRITE(cache_system_tag_r, cache_system_tag_w)
- AM_RANGE(0x118, 0x11b) AM_READWRITE(tlb_va_line_r, tlb_va_line_w)
- AM_RANGE(0x11c, 0x11f) AM_READWRITE(tlb_ra_line_r, tlb_ra_line_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cammu_c4i_device::map)
- AM_RANGE(0x000, 0x003) AM_READWRITE(reset_r, reset_w)
- AM_RANGE(0x010, 0x013) AM_READWRITE(s_pdo_r, s_pdo_w)
- AM_RANGE(0x018, 0x01b) AM_READWRITE(u_pdo_r, u_pdo_w)
- AM_RANGE(0x020, 0x023) AM_READWRITE(clr_s_data_tlb_r, clr_s_data_tlb_w)
- AM_RANGE(0x028, 0x02b) AM_READWRITE(clr_u_data_tlb_r, clr_u_data_tlb_w)
- AM_RANGE(0x030, 0x033) AM_READWRITE(clr_s_insn_tlb_r, clr_s_insn_tlb_w)
- AM_RANGE(0x038, 0x03b) AM_READWRITE(clr_u_insn_tlb_r, clr_u_insn_tlb_w)
-
- AM_RANGE(0x068, 0x06b) AM_READWRITE(control_r, control_w)
-
- AM_RANGE(0x080, 0x083) AM_READWRITE(test_data_r, test_data_w)
- AM_RANGE(0x088, 0x08b) AM_READWRITE(i_fault_r, i_fault_w)
- AM_RANGE(0x090, 0x093) AM_READWRITE(fault_address_1_r, fault_address_1_w)
- AM_RANGE(0x098, 0x09b) AM_READWRITE(fault_address_2_r, fault_address_2_w)
- AM_RANGE(0x0a0, 0x0a3) AM_READWRITE(fault_data_1_lo_r, fault_data_1_lo_w)
- AM_RANGE(0x0a8, 0x0ab) AM_READWRITE(fault_data_1_hi_r, fault_data_1_hi_w)
- AM_RANGE(0x0b0, 0x0b3) AM_READWRITE(fault_data_2_lo_r, fault_data_2_lo_w)
- AM_RANGE(0x0b8, 0x0bb) AM_READWRITE(fault_data_2_hi_r, fault_data_2_hi_w)
- AM_RANGE(0x0c0, 0x0c3) AM_READWRITE(test_address_r, test_address_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cammu_c3_device::map)
- AM_RANGE(0x000, 0x0ff) AM_NOP // tlb
- AM_RANGE(0x104, 0x107) AM_READWRITE(s_pdo_r, s_pdo_w)
- AM_RANGE(0x108, 0x10b) AM_READWRITE(u_pdo_r, u_pdo_w)
- AM_RANGE(0x110, 0x113) AM_READWRITE(fault_r, fault_w)
- AM_RANGE(0x140, 0x143) AM_READWRITE(control_r, control_w)
- AM_RANGE(0x180, 0x183) AM_READWRITE(reset_r, reset_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cammu_c3_device::map_global)
- AM_RANGE(0x000, 0x0ff) AM_NOP // global tlb
- AM_RANGE(0x104, 0x107) AM_WRITE(g_s_pdo_w)
- AM_RANGE(0x108, 0x10b) AM_WRITE(g_u_pdo_w)
- AM_RANGE(0x110, 0x113) AM_WRITE(g_fault_w)
- AM_RANGE(0x140, 0x143) AM_WRITE(g_control_w)
- AM_RANGE(0x180, 0x183) AM_WRITE(g_reset_w)
-ADDRESS_MAP_END
+void cammu_c4t_device::map(address_map &map)
+{
+ map(0x008, 0x00b).rw(this, FUNC(cammu_c4t_device::ram_line_r), FUNC(cammu_c4t_device::ram_line_w));
+ map(0x010, 0x013).rw(this, FUNC(cammu_c4t_device::s_pdo_r), FUNC(cammu_c4t_device::s_pdo_w));
+ map(0x018, 0x01b).rw(this, FUNC(cammu_c4t_device::u_pdo_r), FUNC(cammu_c4t_device::u_pdo_w));
+ map(0x020, 0x023).rw(this, FUNC(cammu_c4t_device::htlb_offset_r), FUNC(cammu_c4t_device::htlb_offset_w));
+ map(0x028, 0x02b).rw(this, FUNC(cammu_c4t_device::i_fault_r), FUNC(cammu_c4t_device::i_fault_w));
+ map(0x030, 0x033).rw(this, FUNC(cammu_c4t_device::fault_address_1_r), FUNC(cammu_c4t_device::fault_address_1_w));
+ map(0x038, 0x03b).rw(this, FUNC(cammu_c4t_device::fault_address_2_r), FUNC(cammu_c4t_device::fault_address_2_w));
+ map(0x040, 0x043).rw(this, FUNC(cammu_c4t_device::fault_data_1_lo_r), FUNC(cammu_c4t_device::fault_data_1_lo_w));
+ map(0x048, 0x04b).rw(this, FUNC(cammu_c4t_device::fault_data_1_hi_r), FUNC(cammu_c4t_device::fault_data_1_hi_w));
+ map(0x050, 0x053).rw(this, FUNC(cammu_c4t_device::fault_data_2_lo_r), FUNC(cammu_c4t_device::fault_data_2_lo_w));
+ map(0x058, 0x05b).rw(this, FUNC(cammu_c4t_device::fault_data_2_hi_r), FUNC(cammu_c4t_device::fault_data_2_hi_w));
+ map(0x060, 0x063).rw(this, FUNC(cammu_c4t_device::c4_bus_poll_r), FUNC(cammu_c4t_device::c4_bus_poll_w));
+ map(0x068, 0x06b).rw(this, FUNC(cammu_c4t_device::control_r), FUNC(cammu_c4t_device::control_w));
+ map(0x070, 0x073).rw(this, FUNC(cammu_c4t_device::bio_control_r), FUNC(cammu_c4t_device::bio_control_w));
+ map(0x078, 0x07b).rw(this, FUNC(cammu_c4t_device::bio_address_tag_r), FUNC(cammu_c4t_device::bio_address_tag_w));
+
+ map(0x100, 0x103).rw(this, FUNC(cammu_c4t_device::cache_data_lo_r), FUNC(cammu_c4t_device::cache_data_lo_w));
+ map(0x104, 0x107).rw(this, FUNC(cammu_c4t_device::cache_data_hi_r), FUNC(cammu_c4t_device::cache_data_hi_w));
+ map(0x108, 0x10b).rw(this, FUNC(cammu_c4t_device::cache_cpu_tag_r), FUNC(cammu_c4t_device::cache_cpu_tag_w));
+ map(0x10c, 0x10f).rw(this, FUNC(cammu_c4t_device::cache_system_tag_valid_r), FUNC(cammu_c4t_device::cache_system_tag_valid_w));
+ map(0x110, 0x113).rw(this, FUNC(cammu_c4t_device::cache_system_tag_r), FUNC(cammu_c4t_device::cache_system_tag_w));
+ map(0x118, 0x11b).rw(this, FUNC(cammu_c4t_device::tlb_va_line_r), FUNC(cammu_c4t_device::tlb_va_line_w));
+ map(0x11c, 0x11f).rw(this, FUNC(cammu_c4t_device::tlb_ra_line_r), FUNC(cammu_c4t_device::tlb_ra_line_w));
+}
+
+void cammu_c4i_device::map(address_map &map)
+{
+ map(0x000, 0x003).rw(this, FUNC(cammu_c4i_device::reset_r), FUNC(cammu_c4i_device::reset_w));
+ map(0x010, 0x013).rw(this, FUNC(cammu_c4i_device::s_pdo_r), FUNC(cammu_c4i_device::s_pdo_w));
+ map(0x018, 0x01b).rw(this, FUNC(cammu_c4i_device::u_pdo_r), FUNC(cammu_c4i_device::u_pdo_w));
+ map(0x020, 0x023).rw(this, FUNC(cammu_c4i_device::clr_s_data_tlb_r), FUNC(cammu_c4i_device::clr_s_data_tlb_w));
+ map(0x028, 0x02b).rw(this, FUNC(cammu_c4i_device::clr_u_data_tlb_r), FUNC(cammu_c4i_device::clr_u_data_tlb_w));
+ map(0x030, 0x033).rw(this, FUNC(cammu_c4i_device::clr_s_insn_tlb_r), FUNC(cammu_c4i_device::clr_s_insn_tlb_w));
+ map(0x038, 0x03b).rw(this, FUNC(cammu_c4i_device::clr_u_insn_tlb_r), FUNC(cammu_c4i_device::clr_u_insn_tlb_w));
+
+ map(0x068, 0x06b).rw(this, FUNC(cammu_c4i_device::control_r), FUNC(cammu_c4i_device::control_w));
+
+ map(0x080, 0x083).rw(this, FUNC(cammu_c4i_device::test_data_r), FUNC(cammu_c4i_device::test_data_w));
+ map(0x088, 0x08b).rw(this, FUNC(cammu_c4i_device::i_fault_r), FUNC(cammu_c4i_device::i_fault_w));
+ map(0x090, 0x093).rw(this, FUNC(cammu_c4i_device::fault_address_1_r), FUNC(cammu_c4i_device::fault_address_1_w));
+ map(0x098, 0x09b).rw(this, FUNC(cammu_c4i_device::fault_address_2_r), FUNC(cammu_c4i_device::fault_address_2_w));
+ map(0x0a0, 0x0a3).rw(this, FUNC(cammu_c4i_device::fault_data_1_lo_r), FUNC(cammu_c4i_device::fault_data_1_lo_w));
+ map(0x0a8, 0x0ab).rw(this, FUNC(cammu_c4i_device::fault_data_1_hi_r), FUNC(cammu_c4i_device::fault_data_1_hi_w));
+ map(0x0b0, 0x0b3).rw(this, FUNC(cammu_c4i_device::fault_data_2_lo_r), FUNC(cammu_c4i_device::fault_data_2_lo_w));
+ map(0x0b8, 0x0bb).rw(this, FUNC(cammu_c4i_device::fault_data_2_hi_r), FUNC(cammu_c4i_device::fault_data_2_hi_w));
+ map(0x0c0, 0x0c3).rw(this, FUNC(cammu_c4i_device::test_address_r), FUNC(cammu_c4i_device::test_address_w));
+}
+
+void cammu_c3_device::map(address_map &map)
+{
+ map(0x000, 0x0ff).noprw(); // tlb
+ map(0x104, 0x107).rw(this, FUNC(cammu_c3_device::s_pdo_r), FUNC(cammu_c3_device::s_pdo_w));
+ map(0x108, 0x10b).rw(this, FUNC(cammu_c3_device::u_pdo_r), FUNC(cammu_c3_device::u_pdo_w));
+ map(0x110, 0x113).rw(this, FUNC(cammu_c3_device::fault_r), FUNC(cammu_c3_device::fault_w));
+ map(0x140, 0x143).rw(this, FUNC(cammu_c3_device::control_r), FUNC(cammu_c3_device::control_w));
+ map(0x180, 0x183).rw(this, FUNC(cammu_c3_device::reset_r), FUNC(cammu_c3_device::reset_w));
+}
+
+void cammu_c3_device::map_global(address_map &map)
+{
+ map(0x000, 0x0ff).noprw(); // global tlb
+ map(0x104, 0x107).w(this, FUNC(cammu_c3_device::g_s_pdo_w));
+ map(0x108, 0x10b).w(this, FUNC(cammu_c3_device::g_u_pdo_w));
+ map(0x110, 0x113).w(this, FUNC(cammu_c3_device::g_fault_w));
+ map(0x140, 0x143).w(this, FUNC(cammu_c3_device::g_control_w));
+ map(0x180, 0x183).w(this, FUNC(cammu_c3_device::g_reset_w));
+}
DEFINE_DEVICE_TYPE(CAMMU_C4T, cammu_c4t_device, "c4t", "C4E/C4T CAMMU")
DEFINE_DEVICE_TYPE(CAMMU_C4I, cammu_c4i_device, "c4i", "C4I CAMMU")
diff --git a/src/mame/machine/deco_irq.cpp b/src/mame/machine/deco_irq.cpp
index cf3f66ce5be..10fb9a6c821 100644
--- a/src/mame/machine/deco_irq.cpp
+++ b/src/mame/machine/deco_irq.cpp
@@ -130,12 +130,13 @@ TIMER_CALLBACK_MEMBER( deco_irq_device::scanline_callback )
// INTERFACE
//**************************************************************************
-ADDRESS_MAP_START(deco_irq_device::map)
- AM_RANGE(0x0, 0x0) AM_WRITE(control_w)
- AM_RANGE(0x1, 0x1) AM_READWRITE(scanline_r, scanline_w)
- AM_RANGE(0x2, 0x2) AM_READWRITE(raster_irq_ack_r, vblank_irq_ack_w)
- AM_RANGE(0x3, 0x3) AM_READ(status_r)
-ADDRESS_MAP_END
+void deco_irq_device::map(address_map &map)
+{
+ map(0x0, 0x0).w(this, FUNC(deco_irq_device::control_w));
+ map(0x1, 0x1).rw(this, FUNC(deco_irq_device::scanline_r), FUNC(deco_irq_device::scanline_w));
+ map(0x2, 0x2).rw(this, FUNC(deco_irq_device::raster_irq_ack_r), FUNC(deco_irq_device::vblank_irq_ack_w));
+ map(0x3, 0x3).r(this, FUNC(deco_irq_device::status_r));
+}
WRITE8_MEMBER( deco_irq_device::control_w )
{
diff --git a/src/mame/machine/fd1089.cpp b/src/mame/machine/fd1089.cpp
index e7318a3de61..286391d458e 100644
--- a/src/mame/machine/fd1089.cpp
+++ b/src/mame/machine/fd1089.cpp
@@ -208,9 +208,10 @@ const fd1089_base_device::decrypt_parameters fd1089_base_device::s_data_params_a
{ 0xac, 1,6,3,5,0,7,4,2 },
};
-ADDRESS_MAP_START(fd1089_base_device::decrypted_opcodes_map)
- AM_RANGE(0x00000, 0xfffff) AM_ROM AM_SHARE(":fd1089_decrypted_opcodes")
-ADDRESS_MAP_END
+void fd1089_base_device::decrypted_opcodes_map(address_map &map)
+{
+ map(0x00000, 0xfffff).rom().share(":fd1089_decrypted_opcodes");
+}
//**************************************************************************
diff --git a/src/mame/machine/interpro_arbga.cpp b/src/mame/machine/interpro_arbga.cpp
index 8407b4db2b3..15a350d456d 100644
--- a/src/mame/machine/interpro_arbga.cpp
+++ b/src/mame/machine/interpro_arbga.cpp
@@ -22,40 +22,42 @@
#if 0
// this might be for an earlier revision of the device
-ADDRESS_MAP_START(interpro_arbga_device::map)
- AM_RANGE(0x00, 0x03) AM_READWRITE(sdepid_r, sdepid_w)
- AM_RANGE(0x04, 0x07) AM_READWRITE(snapid_r, snapid_w)
- AM_RANGE(0x08, 0x0b) AM_READWRITE(prilo_r, prilo_w)
- AM_RANGE(0x0c, 0x0f) AM_READWRITE(prihi_r, prihi_w)
- AM_RANGE(0x10, 0x13) AM_READWRITE(errdomlo_r, errdomlo_w)
- AM_RANGE(0x14, 0x17) AM_READWRITE(errdomhi_r, errdomhi_w)
- AM_RANGE(0x18, 0x1b) AM_READWRITE(tmctrl_r, tmctrl_w)
+void interpro_arbga_device::map(address_map &map)
+{
+ map(0x00, 0x03).rw(this, FUNC(interpro_arbga_device::sdepid_r), FUNC(interpro_arbga_device::sdepid_w));
+ map(0x04, 0x07).rw(this, FUNC(interpro_arbga_device::snapid_r), FUNC(interpro_arbga_device::snapid_w));
+ map(0x08, 0x0b).rw(this, FUNC(interpro_arbga_device::prilo_r), FUNC(interpro_arbga_device::prilo_w));
+ map(0x0c, 0x0f).rw(this, FUNC(interpro_arbga_device::prihi_r), FUNC(interpro_arbga_device::prihi_w));
+ map(0x10, 0x13).rw(this, FUNC(interpro_arbga_device::errdomlo_r), FUNC(interpro_arbga_device::errdomlo_w));
+ map(0x14, 0x17).rw(this, FUNC(interpro_arbga_device::errdomhi_r), FUNC(interpro_arbga_device::errdomhi_w));
+ map(0x18, 0x1b).rw(this, FUNC(interpro_arbga_device::tmctrl_r), FUNC(interpro_arbga_device::tmctrl_w));
- AM_RANGE(0x24, 0x27) AM_READWRITE(tmsrnem_r, tmsrnem_w)
- AM_RANGE(0x28, 0x2b) AM_READWRITE(tmsrhog_r, tmsrhog_w)
- AM_RANGE(0x2c, 0x2f) AM_READWRITE(tmscale_r, tmscale_w)
-ADDRESS_MAP_END
+ map(0x24, 0x27).rw(this, FUNC(interpro_arbga_device::tmsrnem_r), FUNC(interpro_arbga_device::tmsrnem_w));
+ map(0x28, 0x2b).rw(this, FUNC(interpro_arbga_device::tmsrhog_r), FUNC(interpro_arbga_device::tmsrhog_w));
+ map(0x2c, 0x2f).rw(this, FUNC(interpro_arbga_device::tmscale_r), FUNC(interpro_arbga_device::tmscale_w));
+}
#endif
// derived from the FDM "dump_arb" command
-ADDRESS_MAP_START(interpro_arbga_device::map)
- AM_RANGE(0x00, 0x03) AM_READWRITE(sdepid_r, sdepid_w)
- AM_RANGE(0x04, 0x07) AM_READWRITE(arbsnap_r, arbsnap_w)
- AM_RANGE(0x08, 0x0b) AM_READWRITE(fixprils_r, fixprils_w)
- AM_RANGE(0x0c, 0x0f) AM_READWRITE(fixprims_r, fixprims_w)
- AM_RANGE(0x10, 0x13) AM_READWRITE(sysdomls_r, sysdomls_w)
- AM_RANGE(0x14, 0x17) AM_READWRITE(sysdomms_r, sysdomms_w)
- AM_RANGE(0x18, 0x1b) AM_READWRITE(tctrl_r, tctrl_w)
- AM_RANGE(0x1c, 0x1f) AM_READWRITE8(inem_r, inem_w, 0x0000ff00) // boot code writes 0x10
- AM_RANGE(0x20, 0x23) AM_READWRITE8(enem_r, enem_w, 0x0000ff00) // boot code writes 0x07
- AM_RANGE(0x24, 0x27) AM_READWRITE(hog_r, hog_w)
- AM_RANGE(0x28, 0x2b) AM_READWRITE(lock_r, lock_w)
- AM_RANGE(0x2c, 0x2f) AM_READWRITE(lockprs_r, lockprs_w)
- AM_RANGE(0x30, 0x33) AM_READWRITE(hiblockls_r, hiblockls_w)
- AM_RANGE(0x34, 0x37) AM_READWRITE(hiblockms_r, hiblockms_w)
+void interpro_arbga_device::map(address_map &map)
+{
+ map(0x00, 0x03).rw(this, FUNC(interpro_arbga_device::sdepid_r), FUNC(interpro_arbga_device::sdepid_w));
+ map(0x04, 0x07).rw(this, FUNC(interpro_arbga_device::arbsnap_r), FUNC(interpro_arbga_device::arbsnap_w));
+ map(0x08, 0x0b).rw(this, FUNC(interpro_arbga_device::fixprils_r), FUNC(interpro_arbga_device::fixprils_w));
+ map(0x0c, 0x0f).rw(this, FUNC(interpro_arbga_device::fixprims_r), FUNC(interpro_arbga_device::fixprims_w));
+ map(0x10, 0x13).rw(this, FUNC(interpro_arbga_device::sysdomls_r), FUNC(interpro_arbga_device::sysdomls_w));
+ map(0x14, 0x17).rw(this, FUNC(interpro_arbga_device::sysdomms_r), FUNC(interpro_arbga_device::sysdomms_w));
+ map(0x18, 0x1b).rw(this, FUNC(interpro_arbga_device::tctrl_r), FUNC(interpro_arbga_device::tctrl_w));
+ map(0x1d, 0x1d).rw(this, FUNC(interpro_arbga_device::inem_r), FUNC(interpro_arbga_device::inem_w)); // boot code writes 0x10
+ map(0x21, 0x21).rw(this, FUNC(interpro_arbga_device::enem_r), FUNC(interpro_arbga_device::enem_w)); // boot code writes 0x07
+ map(0x24, 0x27).rw(this, FUNC(interpro_arbga_device::hog_r), FUNC(interpro_arbga_device::hog_w));
+ map(0x28, 0x2b).rw(this, FUNC(interpro_arbga_device::lock_r), FUNC(interpro_arbga_device::lock_w));
+ map(0x2c, 0x2f).rw(this, FUNC(interpro_arbga_device::lockprs_r), FUNC(interpro_arbga_device::lockprs_w));
+ map(0x30, 0x33).rw(this, FUNC(interpro_arbga_device::hiblockls_r), FUNC(interpro_arbga_device::hiblockls_w));
+ map(0x34, 0x37).rw(this, FUNC(interpro_arbga_device::hiblockms_r), FUNC(interpro_arbga_device::hiblockms_w));
- AM_RANGE(0x3c, 0x3f) AM_READWRITE(arbrev_r, arbrev_w)
-ADDRESS_MAP_END
+ map(0x3c, 0x3f).rw(this, FUNC(interpro_arbga_device::arbrev_r), FUNC(interpro_arbga_device::arbrev_w));
+}
DEFINE_DEVICE_TYPE(INTERPRO_ARBGA, interpro_arbga_device, "arbga", "SRX Arbiter Gate Array")
diff --git a/src/mame/machine/interpro_ioga.cpp b/src/mame/machine/interpro_ioga.cpp
index 8f3b7865f15..25af9add1c1 100644
--- a/src/mame/machine/interpro_ioga.cpp
+++ b/src/mame/machine/interpro_ioga.cpp
@@ -99,55 +99,58 @@ const interpro_ioga_device::interrupt_data_t interpro_ioga_device::m_interrupt_d
{ INT_SOFT_HI, IRQ_SOFT15, IRQ_PENDING, "soft int 15", "soft" },
};
-ADDRESS_MAP_START(interpro_ioga_device::map)
-
- AM_RANGE(0x0c, 0x1b) AM_READWRITE(dma_plotter_r, dma_plotter_w)
- AM_RANGE(0x1c, 0x1f) AM_READWRITE(dma_plotter_eosl_r, dma_plotter_eosl_w)
- AM_RANGE(0x20, 0x2f) AM_READWRITE(dma_scsi_r, dma_scsi_w)
- AM_RANGE(0x30, 0x3f) AM_READWRITE(dma_floppy_r, dma_floppy_w)
- AM_RANGE(0x40, 0x43) AM_READWRITE(serial_dma0_addr_r, serial_dma0_addr_w)
- AM_RANGE(0x44, 0x47) AM_READWRITE(serial_dma0_ctrl_r, serial_dma0_ctrl_w)
- AM_RANGE(0x48, 0x4b) AM_READWRITE(serial_dma1_addr_r, serial_dma1_addr_w)
- AM_RANGE(0x4c, 0x4f) AM_READWRITE(serial_dma1_ctrl_r, serial_dma1_ctrl_w)
- AM_RANGE(0x50, 0x53) AM_READWRITE(serial_dma2_addr_r, serial_dma2_addr_w)
- AM_RANGE(0x54, 0x57) AM_READWRITE(serial_dma2_ctrl_r, serial_dma2_ctrl_w)
+void interpro_ioga_device::map(address_map &map)
+{
+
+ map(0x0c, 0x1b).rw(this, FUNC(interpro_ioga_device::dma_plotter_r), FUNC(interpro_ioga_device::dma_plotter_w));
+ map(0x1c, 0x1f).rw(this, FUNC(interpro_ioga_device::dma_plotter_eosl_r), FUNC(interpro_ioga_device::dma_plotter_eosl_w));
+ map(0x20, 0x2f).rw(this, FUNC(interpro_ioga_device::dma_scsi_r), FUNC(interpro_ioga_device::dma_scsi_w));
+ map(0x30, 0x3f).rw(this, FUNC(interpro_ioga_device::dma_floppy_r), FUNC(interpro_ioga_device::dma_floppy_w));
+ map(0x40, 0x43).rw(this, FUNC(interpro_ioga_device::serial_dma0_addr_r), FUNC(interpro_ioga_device::serial_dma0_addr_w));
+ map(0x44, 0x47).rw(this, FUNC(interpro_ioga_device::serial_dma0_ctrl_r), FUNC(interpro_ioga_device::serial_dma0_ctrl_w));
+ map(0x48, 0x4b).rw(this, FUNC(interpro_ioga_device::serial_dma1_addr_r), FUNC(interpro_ioga_device::serial_dma1_addr_w));
+ map(0x4c, 0x4f).rw(this, FUNC(interpro_ioga_device::serial_dma1_ctrl_r), FUNC(interpro_ioga_device::serial_dma1_ctrl_w));
+ map(0x50, 0x53).rw(this, FUNC(interpro_ioga_device::serial_dma2_addr_r), FUNC(interpro_ioga_device::serial_dma2_addr_w));
+ map(0x54, 0x57).rw(this, FUNC(interpro_ioga_device::serial_dma2_ctrl_r), FUNC(interpro_ioga_device::serial_dma2_ctrl_w));
// 5a - sib control?
- AM_RANGE(0x5c, 0x7f) AM_READWRITE16(icr_r, icr_w, 0xffffffff)
- AM_RANGE(0x80, 0x83) AM_READWRITE16(icr18_r, icr18_w, 0x0000ffff)
- AM_RANGE(0x80, 0x83) AM_READWRITE8(softint_r, softint_w, 0x00ff0000)
- AM_RANGE(0x80, 0x83) AM_READWRITE8(nmictrl_r, nmictrl_w, 0xff000000)
- AM_RANGE(0x84, 0x87) AM_READWRITE(mouse_status_r, mouse_status_w)
- AM_RANGE(0x88, 0x8b) AM_READWRITE(prescaler_r, prescaler_w)
- AM_RANGE(0x8c, 0x8f) AM_READWRITE(timer0_r, timer0_w)
- AM_RANGE(0x90, 0x93) AM_READWRITE(timer1_r, timer1_w)
- AM_RANGE(0x94, 0x97) AM_READ(error_address_r)
- AM_RANGE(0x98, 0x9b) AM_READ(error_businfo_r)
- AM_RANGE(0x9c, 0x9f) AM_READWRITE16(arbctl_r, arbctl_w, 0x0000ffff)
+ map(0x5c, 0x7f).rw(this, FUNC(interpro_ioga_device::icr_r), FUNC(interpro_ioga_device::icr_w));
+ map(0x80, 0x81).rw(this, FUNC(interpro_ioga_device::icr18_r), FUNC(interpro_ioga_device::icr18_w));
+ map(0x82, 0x82).rw(this, FUNC(interpro_ioga_device::softint_r), FUNC(interpro_ioga_device::softint_w));
+ map(0x83, 0x83).rw(this, FUNC(interpro_ioga_device::nmictrl_r), FUNC(interpro_ioga_device::nmictrl_w));
+ map(0x84, 0x87).rw(this, FUNC(interpro_ioga_device::mouse_status_r), FUNC(interpro_ioga_device::mouse_status_w));
+ map(0x88, 0x8b).rw(this, FUNC(interpro_ioga_device::prescaler_r), FUNC(interpro_ioga_device::prescaler_w));
+ map(0x8c, 0x8f).rw(this, FUNC(interpro_ioga_device::timer0_r), FUNC(interpro_ioga_device::timer0_w));
+ map(0x90, 0x93).rw(this, FUNC(interpro_ioga_device::timer1_r), FUNC(interpro_ioga_device::timer1_w));
+ map(0x94, 0x97).r(this, FUNC(interpro_ioga_device::error_address_r));
+ map(0x98, 0x9b).r(this, FUNC(interpro_ioga_device::error_businfo_r));
+ map(0x9c, 0x9d).rw(this, FUNC(interpro_ioga_device::arbctl_r), FUNC(interpro_ioga_device::arbctl_w));
//AM_RANGE(0x9c, 0x9f) AM_READWRITE16(?, ?, 0xffff0000) // ip2000 boot code writes 0x7f18
- AM_RANGE(0xa0, 0xa3) AM_READWRITE(timer2_count_r, timer2_count_w)
- AM_RANGE(0xa4, 0xa7) AM_READWRITE(timer2_value_r, timer2_value_w)
- AM_RANGE(0xa8, 0xab) AM_READWRITE(timer3_r, timer3_w)
- AM_RANGE(0xac, 0xaf) AM_READWRITE(bus_timeout_r, bus_timeout_w) // boot writes 0x64
- AM_RANGE(0xb0, 0xbf) AM_READWRITE16(softint_vector_r, softint_vector_w, 0xffffffff)
+ map(0xa0, 0xa3).rw(this, FUNC(interpro_ioga_device::timer2_count_r), FUNC(interpro_ioga_device::timer2_count_w));
+ map(0xa4, 0xa7).rw(this, FUNC(interpro_ioga_device::timer2_value_r), FUNC(interpro_ioga_device::timer2_value_w));
+ map(0xa8, 0xab).rw(this, FUNC(interpro_ioga_device::timer3_r), FUNC(interpro_ioga_device::timer3_w));
+ map(0xac, 0xaf).rw(this, FUNC(interpro_ioga_device::bus_timeout_r), FUNC(interpro_ioga_device::bus_timeout_w)); // boot writes 0x64
+ map(0xb0, 0xbf).rw(this, FUNC(interpro_ioga_device::softint_vector_r), FUNC(interpro_ioga_device::softint_vector_w));
//c0, c4, c8 -ethernet address a,b,c?
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(turquoise_ioga_device::map)
- AM_IMPORT_FROM(interpro_ioga_device::map)
+void turquoise_ioga_device::map(address_map &map)
+{
+ interpro_ioga_device::map(map);
- AM_RANGE(0x00, 0x03) AM_READWRITE(eth_base_r, eth_base_w)
- AM_RANGE(0x04, 0x07) AM_READWRITE16(eth_control_r, eth_control_w, 0xffff)
-ADDRESS_MAP_END
+ map(0x00, 0x03).rw(this, FUNC(turquoise_ioga_device::eth_base_r), FUNC(turquoise_ioga_device::eth_base_w));
+ map(0x04, 0x05).rw(this, FUNC(turquoise_ioga_device::eth_control_r), FUNC(turquoise_ioga_device::eth_control_w));
+}
-ADDRESS_MAP_START(sapphire_ioga_device::map)
- AM_IMPORT_FROM(interpro_ioga_device::map)
+void sapphire_ioga_device::map(address_map &map)
+{
+ interpro_ioga_device::map(map);
- AM_RANGE(0x00, 0x03) AM_READWRITE(eth_remap_r, eth_remap_w)
- AM_RANGE(0x04, 0x07) AM_READWRITE(eth_mappg_r, eth_mappg_w)
- AM_RANGE(0x08, 0x0b) AM_READWRITE(eth_control_r, eth_control_w)
-ADDRESS_MAP_END
+ map(0x00, 0x03).rw(this, FUNC(sapphire_ioga_device::eth_remap_r), FUNC(sapphire_ioga_device::eth_remap_w));
+ map(0x04, 0x07).rw(this, FUNC(sapphire_ioga_device::eth_mappg_r), FUNC(sapphire_ioga_device::eth_mappg_w));
+ map(0x08, 0x0b).rw(this, FUNC(sapphire_ioga_device::eth_control_r), FUNC(sapphire_ioga_device::eth_control_w));
+}
static INPUT_PORTS_START(interpro_mouse)
PORT_START("mouse_buttons")
diff --git a/src/mame/machine/interpro_mcga.cpp b/src/mame/machine/interpro_mcga.cpp
index 5c5667f4703..1e4f436c083 100644
--- a/src/mame/machine/interpro_mcga.cpp
+++ b/src/mame/machine/interpro_mcga.cpp
@@ -21,29 +21,31 @@
#define VERBOSE 0
#include "logmacro.h"
-ADDRESS_MAP_START(interpro_mcga_device::map)
- AM_RANGE(0x00, 0x03) AM_READWRITE16(reg00_r, reg00_w, 0xffff)
- AM_RANGE(0x08, 0x0b) AM_READWRITE16(control_r, control_w, 0xffff)
- AM_RANGE(0x10, 0x13) AM_READWRITE16(error_r, error_w, 0xffff)
- AM_RANGE(0x18, 0x1b) AM_READWRITE8(frcrd_r, frcrd_w, 0xff)
- AM_RANGE(0x20, 0x23) AM_READWRITE8(cbsub_r, cbsub_w, 0xff)
- AM_RANGE(0x28, 0x2b) AM_READWRITE16(reg28_r, reg28_w, 0xffff)
- AM_RANGE(0x30, 0x33) AM_READWRITE16(reg30_r, reg30_w, 0xffff)
- AM_RANGE(0x38, 0x3b) AM_READWRITE16(memsize_r, memsize_w, 0xffff)
-ADDRESS_MAP_END
+void interpro_mcga_device::map(address_map &map)
+{
+ map(0x00, 0x01).rw(this, FUNC(interpro_mcga_device::reg00_r), FUNC(interpro_mcga_device::reg00_w));
+ map(0x08, 0x09).rw(this, FUNC(interpro_mcga_device::control_r), FUNC(interpro_mcga_device::control_w));
+ map(0x10, 0x11).rw(this, FUNC(interpro_mcga_device::error_r), FUNC(interpro_mcga_device::error_w));
+ map(0x18, 0x18).rw(this, FUNC(interpro_mcga_device::frcrd_r), FUNC(interpro_mcga_device::frcrd_w));
+ map(0x20, 0x20).rw(this, FUNC(interpro_mcga_device::cbsub_r), FUNC(interpro_mcga_device::cbsub_w));
+ map(0x28, 0x29).rw(this, FUNC(interpro_mcga_device::reg28_r), FUNC(interpro_mcga_device::reg28_w));
+ map(0x30, 0x31).rw(this, FUNC(interpro_mcga_device::reg30_r), FUNC(interpro_mcga_device::reg30_w));
+ map(0x38, 0x39).rw(this, FUNC(interpro_mcga_device::memsize_r), FUNC(interpro_mcga_device::memsize_w));
+}
-ADDRESS_MAP_START(interpro_fmcc_device::map)
- AM_RANGE(0x00, 0x03) AM_READWRITE16(reg00_r, reg00_w, 0xffff)
- AM_RANGE(0x08, 0x0b) AM_READWRITE16(control_r, control_w, 0xffff)
- AM_RANGE(0x10, 0x13) AM_READWRITE16(error_r, error_w, 0xffff)
- AM_RANGE(0x18, 0x1b) AM_READWRITE8(frcrd_r, frcrd_w, 0xff)
- AM_RANGE(0x20, 0x23) AM_READWRITE8(cbsub_r, cbsub_w, 0xff)
- AM_RANGE(0x28, 0x2b) AM_READWRITE16(reg28_r, reg28_w, 0xffff)
- AM_RANGE(0x30, 0x33) AM_READWRITE16(reg30_r, reg30_w, 0xffff)
- AM_RANGE(0x38, 0x3b) AM_READWRITE16(memsize_r, memsize_w, 0xffff)
- AM_RANGE(0x40, 0x43) AM_NOP // unknown
- AM_RANGE(0x48, 0x4b) AM_READWRITE16(error_control_r, error_control_w, 0xffff)
-ADDRESS_MAP_END
+void interpro_fmcc_device::map(address_map &map)
+{
+ map(0x00, 0x01).rw(this, FUNC(interpro_fmcc_device::reg00_r), FUNC(interpro_fmcc_device::reg00_w));
+ map(0x08, 0x09).rw(this, FUNC(interpro_fmcc_device::control_r), FUNC(interpro_fmcc_device::control_w));
+ map(0x10, 0x11).rw(this, FUNC(interpro_fmcc_device::error_r), FUNC(interpro_fmcc_device::error_w));
+ map(0x18, 0x18).rw(this, FUNC(interpro_fmcc_device::frcrd_r), FUNC(interpro_fmcc_device::frcrd_w));
+ map(0x20, 0x20).rw(this, FUNC(interpro_fmcc_device::cbsub_r), FUNC(interpro_fmcc_device::cbsub_w));
+ map(0x28, 0x29).rw(this, FUNC(interpro_fmcc_device::reg28_r), FUNC(interpro_fmcc_device::reg28_w));
+ map(0x30, 0x31).rw(this, FUNC(interpro_fmcc_device::reg30_r), FUNC(interpro_fmcc_device::reg30_w));
+ map(0x38, 0x39).rw(this, FUNC(interpro_fmcc_device::memsize_r), FUNC(interpro_fmcc_device::memsize_w));
+ map(0x40, 0x43).noprw(); // unknown
+ map(0x48, 0x49).rw(this, FUNC(interpro_fmcc_device::error_control_r), FUNC(interpro_fmcc_device::error_control_w));
+}
DEFINE_DEVICE_TYPE(INTERPRO_MCGA, interpro_mcga_device, "mcga", "Memory Controller Gate Array")
DEFINE_DEVICE_TYPE(INTERPRO_FMCC, interpro_fmcc_device, "fmcc", "Fast Memory Control Chip")
diff --git a/src/mame/machine/interpro_sga.cpp b/src/mame/machine/interpro_sga.cpp
index bc6d2642b31..794b135ef1e 100644
--- a/src/mame/machine/interpro_sga.cpp
+++ b/src/mame/machine/interpro_sga.cpp
@@ -20,51 +20,52 @@
#define VERBOSE 0
#include "logmacro.h"
-ADDRESS_MAP_START(interpro_sga_device::map)
- AM_RANGE(0x00, 0x03) AM_READWRITE(gcsr_r, gcsr_w)
- AM_RANGE(0x04, 0x07) AM_READWRITE(ipoll_r, ipoll_w)
- AM_RANGE(0x08, 0x0b) AM_READWRITE(imask_r, imask_w)
- AM_RANGE(0x0c, 0x0f) AM_READWRITE(range_base_r, range_base_w)
- AM_RANGE(0x10, 0x13) AM_READWRITE(range_end_r, range_end_w)
- AM_RANGE(0x14, 0x17) AM_READWRITE(cttag_r, cttag_w) // aka diag1
- AM_RANGE(0x18, 0x1b) AM_READWRITE(address_r, address_w) // aka diag0
- AM_RANGE(0x1c, 0x1f) AM_READWRITE(dmacsr_r, dmacsr_w)
- AM_RANGE(0x20, 0x23) AM_READWRITE(edmacsr_r, edmacsr_w) // esga
- AM_RANGE(0x24, 0x27) AM_READWRITE(reg6_range_r, reg6_range_w) // esga
-
- AM_RANGE(0x80, 0x83) AM_READWRITE(ddpta0_r, ddpta0_w) // dma 0 device page table address (esga)
- AM_RANGE(0x84, 0x87) AM_READWRITE(ddpad0_r, ddpad0_w) // dma 0 device page address
- AM_RANGE(0x88, 0x8b) AM_READWRITE(ddoff0_r, ddoff0_w) // dma 0 device page offset
- AM_RANGE(0x8c, 0x8f) AM_READWRITE(ddtc0_r, ddtc0_w) // dma 0 device transfer context
-
- AM_RANGE(0x90, 0x93) AM_READWRITE(dspta0_r, dspta0_w) // dma 0 SRX page table address (esga)
- AM_RANGE(0x94, 0x97) AM_READWRITE(dspad0_r, dspad0_w) // dma 0 SRX page address
- AM_RANGE(0x98, 0x9b) AM_READWRITE(dsoff0_r, dsoff0_w) // dma 0 SRX page offset
- AM_RANGE(0x9c, 0x9f) AM_READWRITE(dstc0_r, dstc0_w) // dma 0 SRX transfer context
-
- AM_RANGE(0xa4, 0xa7) AM_READWRITE(dspad1_r, dspad1_w) // dma 1 source page address
- AM_RANGE(0xa8, 0xab) AM_READWRITE(dsoff1_r, dsoff1_w) // dma 1 source page offset
- AM_RANGE(0xac, 0xaf) AM_READWRITE(dstc1_r, dstc1_w) // dma 1 source transfer count
-
- AM_RANGE(0xb4, 0xb7) AM_READWRITE(ddpad1_r, ddpad1_w) // dma 1 destination page address
- AM_RANGE(0xb8, 0xbb) AM_READWRITE(ddoff1_r, ddoff1_w) // dma 1 destination page offset
- AM_RANGE(0xbc, 0xbf) AM_READWRITE(ddtc1_r, ddtc1_w) // dma 1 destination transfer count
-
- AM_RANGE(0xc0, 0xc3) AM_READWRITE(ddpta2_r, ddpta2_w) // dma 2 device page table address (esga)
- AM_RANGE(0xc4, 0xc7) AM_READWRITE(ddpad2_r, ddpad2_w) // dma 2 device page address
- AM_RANGE(0xc8, 0xcb) AM_READWRITE(ddoff2_r, ddoff2_w) // dma 2 device page offset
- AM_RANGE(0xcc, 0xcf) AM_READWRITE(ddtc2_r, ddtc2_w) // dma 2 device transfer context
-
- AM_RANGE(0xd0, 0xd3) AM_READWRITE(dspta2_r, dspta2_w) // dma 2 SRX page table address (esga)
- AM_RANGE(0xd4, 0xd7) AM_READWRITE(dspad2_r, dspad2_w) // dma 2 SRX page address
- AM_RANGE(0xd8, 0xdb) AM_READWRITE(dsoff2_r, dsoff2_w) // dma 2 SRX page offset
- AM_RANGE(0xdc, 0xdf) AM_READWRITE(dstc2_r, dstc2_w) // dma 2 SRX transfer context
-
- AM_RANGE(0xe0, 0xe3) AM_READWRITE(ddrd2_r, ddrd2_w) // dma 2 device record descriptor (esga)
- AM_RANGE(0xe4, 0xe7) AM_READWRITE(dsrd2_r, dsrd2_w) // dma 2 SRX record descriptor (esga)
- AM_RANGE(0xe8, 0xeb) AM_READWRITE(dcksum0_r, dcksum0_w) // dma 1 device checksum register 0 (esga)
- AM_RANGE(0xec, 0xef) AM_READWRITE(dcksum1_r, dcksum1_w) // dma 1 device checksum register 1 (esga)
-ADDRESS_MAP_END
+void interpro_sga_device::map(address_map &map)
+{
+ map(0x00, 0x03).rw(this, FUNC(interpro_sga_device::gcsr_r), FUNC(interpro_sga_device::gcsr_w));
+ map(0x04, 0x07).rw(this, FUNC(interpro_sga_device::ipoll_r), FUNC(interpro_sga_device::ipoll_w));
+ map(0x08, 0x0b).rw(this, FUNC(interpro_sga_device::imask_r), FUNC(interpro_sga_device::imask_w));
+ map(0x0c, 0x0f).rw(this, FUNC(interpro_sga_device::range_base_r), FUNC(interpro_sga_device::range_base_w));
+ map(0x10, 0x13).rw(this, FUNC(interpro_sga_device::range_end_r), FUNC(interpro_sga_device::range_end_w));
+ map(0x14, 0x17).rw(this, FUNC(interpro_sga_device::cttag_r), FUNC(interpro_sga_device::cttag_w)); // aka diag1
+ map(0x18, 0x1b).rw(this, FUNC(interpro_sga_device::address_r), FUNC(interpro_sga_device::address_w)); // aka diag0
+ map(0x1c, 0x1f).rw(this, FUNC(interpro_sga_device::dmacsr_r), FUNC(interpro_sga_device::dmacsr_w));
+ map(0x20, 0x23).rw(this, FUNC(interpro_sga_device::edmacsr_r), FUNC(interpro_sga_device::edmacsr_w)); // esga
+ map(0x24, 0x27).rw(this, FUNC(interpro_sga_device::reg6_range_r), FUNC(interpro_sga_device::reg6_range_w)); // esga
+
+ map(0x80, 0x83).rw(this, FUNC(interpro_sga_device::ddpta0_r), FUNC(interpro_sga_device::ddpta0_w)); // dma 0 device page table address (esga)
+ map(0x84, 0x87).rw(this, FUNC(interpro_sga_device::ddpad0_r), FUNC(interpro_sga_device::ddpad0_w)); // dma 0 device page address
+ map(0x88, 0x8b).rw(this, FUNC(interpro_sga_device::ddoff0_r), FUNC(interpro_sga_device::ddoff0_w)); // dma 0 device page offset
+ map(0x8c, 0x8f).rw(this, FUNC(interpro_sga_device::ddtc0_r), FUNC(interpro_sga_device::ddtc0_w)); // dma 0 device transfer context
+
+ map(0x90, 0x93).rw(this, FUNC(interpro_sga_device::dspta0_r), FUNC(interpro_sga_device::dspta0_w)); // dma 0 SRX page table address (esga)
+ map(0x94, 0x97).rw(this, FUNC(interpro_sga_device::dspad0_r), FUNC(interpro_sga_device::dspad0_w)); // dma 0 SRX page address
+ map(0x98, 0x9b).rw(this, FUNC(interpro_sga_device::dsoff0_r), FUNC(interpro_sga_device::dsoff0_w)); // dma 0 SRX page offset
+ map(0x9c, 0x9f).rw(this, FUNC(interpro_sga_device::dstc0_r), FUNC(interpro_sga_device::dstc0_w)); // dma 0 SRX transfer context
+
+ map(0xa4, 0xa7).rw(this, FUNC(interpro_sga_device::dspad1_r), FUNC(interpro_sga_device::dspad1_w)); // dma 1 source page address
+ map(0xa8, 0xab).rw(this, FUNC(interpro_sga_device::dsoff1_r), FUNC(interpro_sga_device::dsoff1_w)); // dma 1 source page offset
+ map(0xac, 0xaf).rw(this, FUNC(interpro_sga_device::dstc1_r), FUNC(interpro_sga_device::dstc1_w)); // dma 1 source transfer count
+
+ map(0xb4, 0xb7).rw(this, FUNC(interpro_sga_device::ddpad1_r), FUNC(interpro_sga_device::ddpad1_w)); // dma 1 destination page address
+ map(0xb8, 0xbb).rw(this, FUNC(interpro_sga_device::ddoff1_r), FUNC(interpro_sga_device::ddoff1_w)); // dma 1 destination page offset
+ map(0xbc, 0xbf).rw(this, FUNC(interpro_sga_device::ddtc1_r), FUNC(interpro_sga_device::ddtc1_w)); // dma 1 destination transfer count
+
+ map(0xc0, 0xc3).rw(this, FUNC(interpro_sga_device::ddpta2_r), FUNC(interpro_sga_device::ddpta2_w)); // dma 2 device page table address (esga)
+ map(0xc4, 0xc7).rw(this, FUNC(interpro_sga_device::ddpad2_r), FUNC(interpro_sga_device::ddpad2_w)); // dma 2 device page address
+ map(0xc8, 0xcb).rw(this, FUNC(interpro_sga_device::ddoff2_r), FUNC(interpro_sga_device::ddoff2_w)); // dma 2 device page offset
+ map(0xcc, 0xcf).rw(this, FUNC(interpro_sga_device::ddtc2_r), FUNC(interpro_sga_device::ddtc2_w)); // dma 2 device transfer context
+
+ map(0xd0, 0xd3).rw(this, FUNC(interpro_sga_device::dspta2_r), FUNC(interpro_sga_device::dspta2_w)); // dma 2 SRX page table address (esga)
+ map(0xd4, 0xd7).rw(this, FUNC(interpro_sga_device::dspad2_r), FUNC(interpro_sga_device::dspad2_w)); // dma 2 SRX page address
+ map(0xd8, 0xdb).rw(this, FUNC(interpro_sga_device::dsoff2_r), FUNC(interpro_sga_device::dsoff2_w)); // dma 2 SRX page offset
+ map(0xdc, 0xdf).rw(this, FUNC(interpro_sga_device::dstc2_r), FUNC(interpro_sga_device::dstc2_w)); // dma 2 SRX transfer context
+
+ map(0xe0, 0xe3).rw(this, FUNC(interpro_sga_device::ddrd2_r), FUNC(interpro_sga_device::ddrd2_w)); // dma 2 device record descriptor (esga)
+ map(0xe4, 0xe7).rw(this, FUNC(interpro_sga_device::dsrd2_r), FUNC(interpro_sga_device::dsrd2_w)); // dma 2 SRX record descriptor (esga)
+ map(0xe8, 0xeb).rw(this, FUNC(interpro_sga_device::dcksum0_r), FUNC(interpro_sga_device::dcksum0_w)); // dma 1 device checksum register 0 (esga)
+ map(0xec, 0xef).rw(this, FUNC(interpro_sga_device::dcksum1_r), FUNC(interpro_sga_device::dcksum1_w)); // dma 1 device checksum register 1 (esga)
+}
DEFINE_DEVICE_TYPE(INTERPRO_SGA, interpro_sga_device, "sga", "SRX Gate Array")
diff --git a/src/mame/machine/isbc_208.cpp b/src/mame/machine/isbc_208.cpp
index 1040870b01c..12600e2bd67 100644
--- a/src/mame/machine/isbc_208.cpp
+++ b/src/mame/machine/isbc_208.cpp
@@ -44,11 +44,12 @@ MACHINE_CONFIG_START(isbc_208_device::device_add_mconfig)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", isbc_208_floppies, "525dd", isbc_208_device::floppy_formats)
MACHINE_CONFIG_END
-ADDRESS_MAP_START(isbc_208_device::map)
- AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("dmac", am9517a_device, read, write)
- AM_RANGE(0x10, 0x11) AM_DEVICE("fdc", i8272a_device, map)
- AM_RANGE(0x12, 0x15) AM_READWRITE(stat_r, aux_w)
-ADDRESS_MAP_END
+void isbc_208_device::map(address_map &map)
+{
+ map(0x00, 0x0f).rw("dmac", FUNC(am9517a_device::read), FUNC(am9517a_device::write));
+ map(0x10, 0x11).m("fdc", FUNC(i8272a_device::map));
+ map(0x12, 0x15).rw(this, FUNC(isbc_208_device::stat_r), FUNC(isbc_208_device::aux_w));
+}
WRITE_LINE_MEMBER(isbc_208_device::out_eop_w)
diff --git a/src/mame/machine/iteagle_fpga.cpp b/src/mame/machine/iteagle_fpga.cpp
index 81aeec15293..2df0987eabf 100644
--- a/src/mame/machine/iteagle_fpga.cpp
+++ b/src/mame/machine/iteagle_fpga.cpp
@@ -17,18 +17,21 @@
DEFINE_DEVICE_TYPE(ITEAGLE_FPGA, iteagle_fpga_device, "iteagle_fpga", "ITEagle FPGA")
-ADDRESS_MAP_START(iteagle_fpga_device::fpga_map)
- AM_RANGE(0x000, 0x01f) AM_READWRITE(fpga_r, fpga_w)
-ADDRESS_MAP_END
+void iteagle_fpga_device::fpga_map(address_map &map)
+{
+ map(0x000, 0x01f).rw(this, FUNC(iteagle_fpga_device::fpga_r), FUNC(iteagle_fpga_device::fpga_w));
+}
-ADDRESS_MAP_START(iteagle_fpga_device::rtc_map)
- AM_RANGE(0x000, 0x7ff) AM_READWRITE(rtc_r, rtc_w)
-ADDRESS_MAP_END
+void iteagle_fpga_device::rtc_map(address_map &map)
+{
+ map(0x000, 0x7ff).rw(this, FUNC(iteagle_fpga_device::rtc_r), FUNC(iteagle_fpga_device::rtc_w));
+}
-ADDRESS_MAP_START(iteagle_fpga_device::ram_map)
- AM_RANGE(0x00000, 0x3f) AM_READWRITE(e1_nvram_r, e1_nvram_w)
- AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(e1_ram_r, e1_ram_w)
-ADDRESS_MAP_END
+void iteagle_fpga_device::ram_map(address_map &map)
+{
+ map(0x00000, 0x3f).rw(this, FUNC(iteagle_fpga_device::e1_nvram_r), FUNC(iteagle_fpga_device::e1_nvram_w));
+ map(0x10000, 0x1ffff).rw(this, FUNC(iteagle_fpga_device::e1_ram_r), FUNC(iteagle_fpga_device::e1_ram_w));
+}
iteagle_fpga_device::iteagle_fpga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: pci_device(mconfig, ITEAGLE_FPGA, tag, owner, clock),
@@ -643,9 +646,10 @@ WRITE32_MEMBER( iteagle_fpga_device::e1_ram_w )
DEFINE_DEVICE_TYPE(ITEAGLE_EEPROM, iteagle_eeprom_device, "iteagle_eeprom", "ITEagle EEPROM AT93C46")
-ADDRESS_MAP_START(iteagle_eeprom_device::eeprom_map)
- AM_RANGE(0x0000, 0x000F) AM_READWRITE(eeprom_r, eeprom_w)
-ADDRESS_MAP_END
+void iteagle_eeprom_device::eeprom_map(address_map &map)
+{
+ map(0x0000, 0x000F).rw(this, FUNC(iteagle_eeprom_device::eeprom_r), FUNC(iteagle_eeprom_device::eeprom_w));
+}
MACHINE_CONFIG_START(iteagle_eeprom_device::device_add_mconfig)
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
@@ -767,9 +771,10 @@ MACHINE_CONFIG_END
DEFINE_DEVICE_TYPE(ITEAGLE_PERIPH, iteagle_periph_device, "iteagle_periph", "ITEagle Peripheral Controller")
-ADDRESS_MAP_START(iteagle_periph_device::ctrl_map)
- AM_RANGE(0x000, 0x0cf) AM_READWRITE(ctrl_r, ctrl_w)
-ADDRESS_MAP_END
+void iteagle_periph_device::ctrl_map(address_map &map)
+{
+ map(0x000, 0x0cf).rw(this, FUNC(iteagle_periph_device::ctrl_r), FUNC(iteagle_periph_device::ctrl_w));
+}
iteagle_periph_device::iteagle_periph_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: pci_device(mconfig, ITEAGLE_PERIPH, tag, owner, clock),
diff --git a/src/mame/machine/k573dio.cpp b/src/mame/machine/k573dio.cpp
index d3a6121d88f..784e9f0e421 100644
--- a/src/mame/machine/k573dio.cpp
+++ b/src/mame/machine/k573dio.cpp
@@ -67,38 +67,39 @@
DEFINE_DEVICE_TYPE(KONAMI_573_DIGITAL_IO_BOARD, k573dio_device, "k573_dio", "Konami 573 digital I/O board")
-ADDRESS_MAP_START(k573dio_device::amap)
- AM_RANGE(0x00, 0x01) AM_READ(a00_r)
- AM_RANGE(0x02, 0x03) AM_READ(a02_r)
- AM_RANGE(0x04, 0x05) AM_READ(a04_r)
- AM_RANGE(0x06, 0x07) AM_READ(a06_r)
- AM_RANGE(0x0a, 0x0b) AM_READ(a0a_r)
- AM_RANGE(0x80, 0x81) AM_READ(a80_r)
- AM_RANGE(0xa0, 0xa1) AM_WRITE(mpeg_start_adr_high_w)
- AM_RANGE(0xa2, 0xa3) AM_WRITE(mpeg_start_adr_low_w)
- AM_RANGE(0xa4, 0xa5) AM_WRITE(mpeg_end_adr_high_w)
- AM_RANGE(0xa6, 0xa7) AM_WRITE(mpeg_end_adr_low_w)
- AM_RANGE(0xa8, 0xa9) AM_WRITE(mpeg_key_1_w)
- AM_RANGE(0xac, 0xad) AM_READWRITE(mas_i2c_r, mas_i2c_w)
- AM_RANGE(0xae, 0xaf) AM_WRITE(mpeg_ctrl_w)
- AM_RANGE(0xb0, 0xb1) AM_WRITE(ram_write_adr_high_w)
- AM_RANGE(0xb2, 0xb3) AM_WRITE(ram_write_adr_low_w)
- AM_RANGE(0xb4, 0xb5) AM_READWRITE(ram_r, ram_w)
- AM_RANGE(0xb6, 0xb7) AM_WRITE(ram_read_adr_high_w)
- AM_RANGE(0xb8, 0xb9) AM_WRITE(ram_read_adr_low_w)
- AM_RANGE(0xe0, 0xe1) AM_WRITE(output_1_w)
- AM_RANGE(0xe2, 0xe3) AM_WRITE(output_0_w)
- AM_RANGE(0xe4, 0xe5) AM_WRITE(output_3_w)
- AM_RANGE(0xe6, 0xe7) AM_WRITE(output_7_w)
- AM_RANGE(0xea, 0xeb) AM_WRITE(mpeg_key_2_w)
- AM_RANGE(0xec, 0xed) AM_WRITE(mpeg_key_3_w)
- AM_RANGE(0xee, 0xef) AM_READWRITE(digital_id_r, digital_id_w)
- AM_RANGE(0xf6, 0xf7) AM_READ(fpga_status_r)
- AM_RANGE(0xf8, 0xf9) AM_WRITE(fpga_firmware_w)
- AM_RANGE(0xfa, 0xfb) AM_WRITE(output_4_w)
- AM_RANGE(0xfc, 0xfd) AM_WRITE(output_5_w)
- AM_RANGE(0xfe, 0xff) AM_WRITE(output_2_w)
-ADDRESS_MAP_END
+void k573dio_device::amap(address_map &map)
+{
+ map(0x00, 0x01).r(this, FUNC(k573dio_device::a00_r));
+ map(0x02, 0x03).r(this, FUNC(k573dio_device::a02_r));
+ map(0x04, 0x05).r(this, FUNC(k573dio_device::a04_r));
+ map(0x06, 0x07).r(this, FUNC(k573dio_device::a06_r));
+ map(0x0a, 0x0b).r(this, FUNC(k573dio_device::a0a_r));
+ map(0x80, 0x81).r(this, FUNC(k573dio_device::a80_r));
+ map(0xa0, 0xa1).w(this, FUNC(k573dio_device::mpeg_start_adr_high_w));
+ map(0xa2, 0xa3).w(this, FUNC(k573dio_device::mpeg_start_adr_low_w));
+ map(0xa4, 0xa5).w(this, FUNC(k573dio_device::mpeg_end_adr_high_w));
+ map(0xa6, 0xa7).w(this, FUNC(k573dio_device::mpeg_end_adr_low_w));
+ map(0xa8, 0xa9).w(this, FUNC(k573dio_device::mpeg_key_1_w));
+ map(0xac, 0xad).rw(this, FUNC(k573dio_device::mas_i2c_r), FUNC(k573dio_device::mas_i2c_w));
+ map(0xae, 0xaf).w(this, FUNC(k573dio_device::mpeg_ctrl_w));
+ map(0xb0, 0xb1).w(this, FUNC(k573dio_device::ram_write_adr_high_w));
+ map(0xb2, 0xb3).w(this, FUNC(k573dio_device::ram_write_adr_low_w));
+ map(0xb4, 0xb5).rw(this, FUNC(k573dio_device::ram_r), FUNC(k573dio_device::ram_w));
+ map(0xb6, 0xb7).w(this, FUNC(k573dio_device::ram_read_adr_high_w));
+ map(0xb8, 0xb9).w(this, FUNC(k573dio_device::ram_read_adr_low_w));
+ map(0xe0, 0xe1).w(this, FUNC(k573dio_device::output_1_w));
+ map(0xe2, 0xe3).w(this, FUNC(k573dio_device::output_0_w));
+ map(0xe4, 0xe5).w(this, FUNC(k573dio_device::output_3_w));
+ map(0xe6, 0xe7).w(this, FUNC(k573dio_device::output_7_w));
+ map(0xea, 0xeb).w(this, FUNC(k573dio_device::mpeg_key_2_w));
+ map(0xec, 0xed).w(this, FUNC(k573dio_device::mpeg_key_3_w));
+ map(0xee, 0xef).rw(this, FUNC(k573dio_device::digital_id_r), FUNC(k573dio_device::digital_id_w));
+ map(0xf6, 0xf7).r(this, FUNC(k573dio_device::fpga_status_r));
+ map(0xf8, 0xf9).w(this, FUNC(k573dio_device::fpga_firmware_w));
+ map(0xfa, 0xfb).w(this, FUNC(k573dio_device::output_4_w));
+ map(0xfc, 0xfd).w(this, FUNC(k573dio_device::output_5_w));
+ map(0xfe, 0xff).w(this, FUNC(k573dio_device::output_2_w));
+}
k573dio_device::k573dio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, KONAMI_573_DIGITAL_IO_BOARD, tag, owner, clock),
diff --git a/src/mame/machine/m3comm.cpp b/src/mame/machine/m3comm.cpp
index 2182a321747..0cacad10bd6 100644
--- a/src/mame/machine/m3comm.cpp
+++ b/src/mame/machine/m3comm.cpp
@@ -88,11 +88,12 @@ SEGA 1998
#define M68K_TAG "m3commcpu"
//////// Model 3 (main CPU @ C00xxxxx) and Hikaru (MMctrl bank 0E) interface
-ADDRESS_MAP_START(m3comm_device::m3_map)
- AM_RANGE(0x0000000, 0x000ffff) AM_READWRITE8(m3_comm_ram_r, m3_comm_ram_w, 0xffffffff)
- AM_RANGE(0x0010000, 0x00101ff) AM_READWRITE16(m3_ioregs_r, m3_ioregs_w, 0xffff0000)
- AM_RANGE(0x0020000, 0x003ffff) AM_READWRITE16(m3_m68k_ram_r, m3_m68k_ram_w, 0xffff0000)
-ADDRESS_MAP_END
+void m3comm_device::m3_map(address_map &map)
+{
+ map(0x0000000, 0x000ffff).rw(this, FUNC(m3comm_device::m3_comm_ram_r), FUNC(m3comm_device::m3_comm_ram_w));
+ map(0x0010000, 0x00101ff).rw(this, FUNC(m3comm_device::m3_ioregs_r), FUNC(m3comm_device::m3_ioregs_w)).umask32(0xffff0000);
+ map(0x0020000, 0x003ffff).rw(this, FUNC(m3comm_device::m3_m68k_ram_r), FUNC(m3comm_device::m3_m68k_ram_w)).umask32(0xffff0000);
+}
/*************************************
diff --git a/src/mame/machine/maple-dc.cpp b/src/mame/machine/maple-dc.cpp
index 6583d1d0353..f607b2ca10c 100644
--- a/src/mame/machine/maple-dc.cpp
+++ b/src/mame/machine/maple-dc.cpp
@@ -7,14 +7,15 @@
DEFINE_DEVICE_TYPE(MAPLE_DC, maple_dc_device, "maple_dc", "Dreamcast Maple Bus")
-ADDRESS_MAP_START(maple_dc_device::amap)
- AM_RANGE(0x04, 0x07) AM_READWRITE(sb_mdstar_r, sb_mdstar_w)
- AM_RANGE(0x10, 0x13) AM_READWRITE(sb_mdtsel_r, sb_mdtsel_w)
- AM_RANGE(0x14, 0x17) AM_READWRITE(sb_mden_r, sb_mden_w)
- AM_RANGE(0x18, 0x1b) AM_READWRITE(sb_mdst_r, sb_mdst_w)
- AM_RANGE(0x80, 0x83) AM_READWRITE(sb_msys_r, sb_msys_w)
- AM_RANGE(0x8c, 0x8f) AM_WRITE(sb_mdapro_w)
-ADDRESS_MAP_END
+void maple_dc_device::amap(address_map &map)
+{
+ map(0x04, 0x07).rw(this, FUNC(maple_dc_device::sb_mdstar_r), FUNC(maple_dc_device::sb_mdstar_w));
+ map(0x10, 0x13).rw(this, FUNC(maple_dc_device::sb_mdtsel_r), FUNC(maple_dc_device::sb_mdtsel_w));
+ map(0x14, 0x17).rw(this, FUNC(maple_dc_device::sb_mden_r), FUNC(maple_dc_device::sb_mden_w));
+ map(0x18, 0x1b).rw(this, FUNC(maple_dc_device::sb_mdst_r), FUNC(maple_dc_device::sb_mdst_w));
+ map(0x80, 0x83).rw(this, FUNC(maple_dc_device::sb_msys_r), FUNC(maple_dc_device::sb_msys_w));
+ map(0x8c, 0x8f).w(this, FUNC(maple_dc_device::sb_mdapro_w));
+}
maple_dc_device::maple_dc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, MAPLE_DC, tag, owner, clock)
diff --git a/src/mame/machine/mega32x.cpp b/src/mame/machine/mega32x.cpp
index 91f6a66ebb8..402aff23d58 100644
--- a/src/mame/machine/mega32x.cpp
+++ b/src/mame/machine/mega32x.cpp
@@ -1492,63 +1492,65 @@ _32X_MAP_WRITEHANDLERS(slave_401c,slave_401e) // _32x_sh2_slave_401c_slave_401e_
// SH2 memory maps
/**********************************************************************************************/
-ADDRESS_MAP_START(sega_32x_device::sh2_main_map)
- AM_RANGE(0x00000000, 0x00003fff) AM_ROMBANK("masterbios")
+void sega_32x_device::sh2_main_map(address_map &map)
+{
+ map(0x00000000, 0x00003fff).bankr("masterbios");
- AM_RANGE(0x00004000, 0x00004003) AM_READWRITE(_32x_sh2_master_4000_common_4002_r, _32x_sh2_master_4000_common_4002_w )
- AM_RANGE(0x00004004, 0x00004007) AM_READWRITE(_32x_sh2_common_4004_common_4006_r, _32x_sh2_common_4004_common_4006_w)
+ map(0x00004000, 0x00004003).rw(this, FUNC(sega_32x_device::_32x_sh2_master_4000_common_4002_r), FUNC(sega_32x_device::_32x_sh2_master_4000_common_4002_w));
+ map(0x00004004, 0x00004007).rw(this, FUNC(sega_32x_device::_32x_sh2_common_4004_common_4006_r), FUNC(sega_32x_device::_32x_sh2_common_4004_common_4006_w));
- AM_RANGE(0x00004008, 0x00004013) AM_READWRITE16(_32x_dreq_common_r, _32x_dreq_common_w, 0xffffffff )
+ map(0x00004008, 0x00004013).rw(this, FUNC(sega_32x_device::_32x_dreq_common_r), FUNC(sega_32x_device::_32x_dreq_common_w));
- AM_RANGE(0x00004014, 0x00004017) AM_READNOP AM_WRITE(_32x_sh2_master_4014_master_4016_w ) // IRQ clear
- AM_RANGE(0x00004018, 0x0000401b) AM_READNOP AM_WRITE(_32x_sh2_master_4018_master_401a_w ) // IRQ clear
- AM_RANGE(0x0000401c, 0x0000401f) AM_READNOP AM_WRITE(_32x_sh2_master_401c_master_401e_w ) // IRQ clear
+ map(0x00004014, 0x00004017).nopr().w(this, FUNC(sega_32x_device::_32x_sh2_master_4014_master_4016_w)); // IRQ clear
+ map(0x00004018, 0x0000401b).nopr().w(this, FUNC(sega_32x_device::_32x_sh2_master_4018_master_401a_w)); // IRQ clear
+ map(0x0000401c, 0x0000401f).nopr().w(this, FUNC(sega_32x_device::_32x_sh2_master_401c_master_401e_w)); // IRQ clear
- AM_RANGE(0x00004020, 0x0000402f) AM_READWRITE16(_32x_68k_m_commsram_r, _32x_68k_m_commsram_w, 0xffffffff )
- AM_RANGE(0x00004030, 0x0000403f) AM_READWRITE16(_32x_pwm_r, _32x_pwm_w, 0xffffffff )
+ map(0x00004020, 0x0000402f).rw(this, FUNC(sega_32x_device::_32x_68k_m_commsram_r), FUNC(sega_32x_device::_32x_68k_m_commsram_w));
+ map(0x00004030, 0x0000403f).rw(this, FUNC(sega_32x_device::_32x_pwm_r), FUNC(sega_32x_device::_32x_pwm_w));
- AM_RANGE(0x00004100, 0x0000410b) AM_READWRITE16(_32x_common_vdp_regs_r, _32x_common_vdp_regs_w , 0xffffffff)
- AM_RANGE(0x00004200, 0x000043ff) AM_READWRITE16(_32x_68k_palette_r, _32x_68k_palette_w, 0xffffffff)
+ map(0x00004100, 0x0000410b).rw(this, FUNC(sega_32x_device::_32x_common_vdp_regs_r), FUNC(sega_32x_device::_32x_common_vdp_regs_w));
+ map(0x00004200, 0x000043ff).rw(this, FUNC(sega_32x_device::_32x_68k_palette_r), FUNC(sega_32x_device::_32x_68k_palette_w));
- AM_RANGE(0x04000000, 0x0401ffff) AM_READWRITE16(_32x_68k_dram_r, _32x_68k_dram_w, 0xffffffff)
- AM_RANGE(0x04020000, 0x0403ffff) AM_READWRITE16(_32x_68k_dram_overwrite_r, _32x_68k_dram_overwrite_w, 0xffffffff)
+ map(0x04000000, 0x0401ffff).rw(this, FUNC(sega_32x_device::_32x_68k_dram_r), FUNC(sega_32x_device::_32x_68k_dram_w));
+ map(0x04020000, 0x0403ffff).rw(this, FUNC(sega_32x_device::_32x_68k_dram_overwrite_r), FUNC(sega_32x_device::_32x_68k_dram_overwrite_w));
- AM_RANGE(0x06000000, 0x0603ffff) AM_RAM AM_SHARE("sh2_shared")
- AM_RANGE(0x02000000, 0x023fffff) AM_ROM AM_REGION(":gamecart_sh2", 0) // program is writeable (wwfraw)
+ map(0x06000000, 0x0603ffff).ram().share("sh2_shared");
+ map(0x02000000, 0x023fffff).rom().region(":gamecart_sh2", 0); // program is writeable (wwfraw)
- AM_RANGE(0x22000000, 0x223fffff) AM_ROM AM_REGION(":gamecart_sh2", 0) // cart mirror (fifa96)
+ map(0x22000000, 0x223fffff).rom().region(":gamecart_sh2", 0); // cart mirror (fifa96)
- AM_RANGE(0xc0000000, 0xc0000fff) AM_RAM
-ADDRESS_MAP_END
+ map(0xc0000000, 0xc0000fff).ram();
+}
-ADDRESS_MAP_START(sega_32x_device::sh2_slave_map)
- AM_RANGE(0x00000000, 0x00003fff) AM_ROMBANK("slavebios")
+void sega_32x_device::sh2_slave_map(address_map &map)
+{
+ map(0x00000000, 0x00003fff).bankr("slavebios");
- AM_RANGE(0x00004000, 0x00004003) AM_READWRITE(_32x_sh2_slave_4000_common_4002_r, _32x_sh2_slave_4000_common_4002_w )
- AM_RANGE(0x00004004, 0x00004007) AM_READWRITE(_32x_sh2_common_4004_common_4006_r, _32x_sh2_common_4004_common_4006_w)
+ map(0x00004000, 0x00004003).rw(this, FUNC(sega_32x_device::_32x_sh2_slave_4000_common_4002_r), FUNC(sega_32x_device::_32x_sh2_slave_4000_common_4002_w));
+ map(0x00004004, 0x00004007).rw(this, FUNC(sega_32x_device::_32x_sh2_common_4004_common_4006_r), FUNC(sega_32x_device::_32x_sh2_common_4004_common_4006_w));
- AM_RANGE(0x00004008, 0x00004013) AM_READWRITE16(_32x_dreq_common_r, _32x_dreq_common_w, 0xffffffff )
+ map(0x00004008, 0x00004013).rw(this, FUNC(sega_32x_device::_32x_dreq_common_r), FUNC(sega_32x_device::_32x_dreq_common_w));
- AM_RANGE(0x00004014, 0x00004017) AM_READNOP AM_WRITE(_32x_sh2_slave_4014_slave_4016_w ) // IRQ clear
- AM_RANGE(0x00004018, 0x0000401b) AM_READNOP AM_WRITE(_32x_sh2_slave_4018_slave_401a_w ) // IRQ clear
- AM_RANGE(0x0000401c, 0x0000401f) AM_READNOP AM_WRITE(_32x_sh2_slave_401c_slave_401e_w ) // IRQ clear
+ map(0x00004014, 0x00004017).nopr().w(this, FUNC(sega_32x_device::_32x_sh2_slave_4014_slave_4016_w)); // IRQ clear
+ map(0x00004018, 0x0000401b).nopr().w(this, FUNC(sega_32x_device::_32x_sh2_slave_4018_slave_401a_w)); // IRQ clear
+ map(0x0000401c, 0x0000401f).nopr().w(this, FUNC(sega_32x_device::_32x_sh2_slave_401c_slave_401e_w)); // IRQ clear
- AM_RANGE(0x00004020, 0x0000402f) AM_READWRITE16(_32x_68k_m_commsram_r, _32x_68k_m_commsram_w, 0xffffffff )
- AM_RANGE(0x00004030, 0x0000403f) AM_READWRITE16(_32x_pwm_r, _32x_pwm_w, 0xffffffff )
+ map(0x00004020, 0x0000402f).rw(this, FUNC(sega_32x_device::_32x_68k_m_commsram_r), FUNC(sega_32x_device::_32x_68k_m_commsram_w));
+ map(0x00004030, 0x0000403f).rw(this, FUNC(sega_32x_device::_32x_pwm_r), FUNC(sega_32x_device::_32x_pwm_w));
- AM_RANGE(0x00004100, 0x0000410b) AM_READWRITE16(_32x_common_vdp_regs_r, _32x_common_vdp_regs_w , 0xffffffff)
- AM_RANGE(0x00004200, 0x000043ff) AM_READWRITE16(_32x_68k_palette_r, _32x_68k_palette_w, 0xffffffff)
+ map(0x00004100, 0x0000410b).rw(this, FUNC(sega_32x_device::_32x_common_vdp_regs_r), FUNC(sega_32x_device::_32x_common_vdp_regs_w));
+ map(0x00004200, 0x000043ff).rw(this, FUNC(sega_32x_device::_32x_68k_palette_r), FUNC(sega_32x_device::_32x_68k_palette_w));
- AM_RANGE(0x04000000, 0x0401ffff) AM_READWRITE16(_32x_68k_dram_r, _32x_68k_dram_w, 0xffffffff)
- AM_RANGE(0x04020000, 0x0403ffff) AM_READWRITE16(_32x_68k_dram_overwrite_r, _32x_68k_dram_overwrite_w, 0xffffffff)
+ map(0x04000000, 0x0401ffff).rw(this, FUNC(sega_32x_device::_32x_68k_dram_r), FUNC(sega_32x_device::_32x_68k_dram_w));
+ map(0x04020000, 0x0403ffff).rw(this, FUNC(sega_32x_device::_32x_68k_dram_overwrite_r), FUNC(sega_32x_device::_32x_68k_dram_overwrite_w));
- AM_RANGE(0x06000000, 0x0603ffff) AM_RAM AM_SHARE("sh2_shared")
- AM_RANGE(0x02000000, 0x023fffff) AM_ROM AM_REGION(":gamecart_sh2", 0) // program is writeable (wwfraw)
+ map(0x06000000, 0x0603ffff).ram().share("sh2_shared");
+ map(0x02000000, 0x023fffff).rom().region(":gamecart_sh2", 0); // program is writeable (wwfraw)
- AM_RANGE(0x22000000, 0x223fffff) AM_ROM AM_REGION(":gamecart_sh2", 0) // cart mirror (fifa96)
+ map(0x22000000, 0x223fffff).rom().region(":gamecart_sh2", 0); // cart mirror (fifa96)
- AM_RANGE(0xc0000000, 0xc0000fff) AM_RAM
-ADDRESS_MAP_END
+ map(0xc0000000, 0xc0000fff).ram();
+}
/****************************************** END 32X related *************************************/
diff --git a/src/mame/machine/megadriv.cpp b/src/mame/machine/megadriv.cpp
index 2ebef72e48f..9eb0ea259c4 100644
--- a/src/mame/machine/megadriv.cpp
+++ b/src/mame/machine/megadriv.cpp
@@ -468,10 +468,11 @@ void md_base_state::megadriv_map(address_map &map)
}
-ADDRESS_MAP_START(md_base_state::dcat16_megadriv_map)
- AM_IMPORT_FROM(megadriv_map)
- AM_RANGE(0x000000, 0x7fffff) AM_ROM
-ADDRESS_MAP_END
+void md_base_state::dcat16_megadriv_map(address_map &map)
+{
+ megadriv_map(map);
+ map(0x000000, 0x7fffff).rom();
+}
/* z80 sounds/sub CPU */
diff --git a/src/mame/machine/namco_c139.cpp b/src/mame/machine/namco_c139.cpp
index 757bfedc49d..8ef4bf26271 100644
--- a/src/mame/machine/namco_c139.cpp
+++ b/src/mame/machine/namco_c139.cpp
@@ -28,17 +28,19 @@ DEFINE_DEVICE_TYPE(NAMCO_C139, namco_c139_device, "namco_c139", "Namco C139 Seri
// LIVE DEVICE
//**************************************************************************
-ADDRESS_MAP_START(namco_c139_device::data_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("sharedram")
-ADDRESS_MAP_END
+void namco_c139_device::data_map(address_map &map)
+{
+ map(0x0000, 0x3fff).ram().share("sharedram");
+}
-ADDRESS_MAP_START(namco_c139_device::regs_map)
- AM_RANGE(0x00, 0x01) AM_READ(status_r) // WRITE clears flags
- AM_RANGE(0x02, 0x03) AM_NOP // settings?
+void namco_c139_device::regs_map(address_map &map)
+{
+ map(0x00, 0x01).r(this, FUNC(namco_c139_device::status_r)); // WRITE clears flags
+ map(0x02, 0x03).noprw(); // settings?
// AM_RANGE(0x0a, 0x0b) // WRITE tx_w
// AM_RANGE(0x0c, 0x0d) // READ rx_r
// AM_RANGE(0x0e, 0x0f) //
-ADDRESS_MAP_END
+}
//-------------------------------------------------
// namco_c139_device - constructor
diff --git a/src/mame/machine/namco_c148.cpp b/src/mame/machine/namco_c148.cpp
index b132af74f39..cfcc1a0ac86 100644
--- a/src/mame/machine/namco_c148.cpp
+++ b/src/mame/machine/namco_c148.cpp
@@ -75,25 +75,26 @@ namco_c148_device::namco_c148_device(const machine_config &mconfig, const char *
}
// (*) denotes master CPU only
-ADDRESS_MAP_START(namco_c148_device::map)
- AM_RANGE(0x04000, 0x05fff) AM_READWRITE8(bus_ctrl_r, bus_ctrl_w, 0x00ff)
- AM_RANGE(0x06000, 0x07fff) AM_READWRITE8(cpu_irq_level_r,cpu_irq_level_w,0x00ff) // CPUIRQ lv
- AM_RANGE(0x08000, 0x09fff) AM_READWRITE8(ex_irq_level_r,ex_irq_level_w,0x00ff) // EXIRQ lv
- AM_RANGE(0x0a000, 0x0bfff) AM_READWRITE8(pos_irq_level_r,pos_irq_level_w,0x00ff) // POSIRQ lv
- AM_RANGE(0x0c000, 0x0dfff) AM_READWRITE8(sci_irq_level_r,sci_irq_level_w,0x00ff) // SCIRQ lv
- AM_RANGE(0x0e000, 0x0ffff) AM_READWRITE8(vblank_irq_level_r,vblank_irq_level_w,0x00ff) // VBlank IRQ lv
-
- AM_RANGE(0x10000, 0x11fff) AM_WRITE(cpu_irq_assert_w)
- AM_RANGE(0x16000, 0x17fff) AM_READWRITE(cpu_irq_ack_r, cpu_irq_ack_w) // CPUIRQ ack
- AM_RANGE(0x18000, 0x19fff) AM_READWRITE(ex_irq_ack_r, ex_irq_ack_w) // EXIRQ ack
- AM_RANGE(0x1a000, 0x1bfff) AM_READWRITE(pos_irq_ack_r, pos_irq_ack_w) // POSIRQ ack
- AM_RANGE(0x1c000, 0x1dfff) AM_READWRITE(sci_irq_ack_r, sci_irq_ack_w) // SCIRQ ack
- AM_RANGE(0x1e000, 0x1ffff) AM_READWRITE(vblank_irq_ack_r, vblank_irq_ack_w) // VBlank IRQ ack
- AM_RANGE(0x20000, 0x21fff) AM_READ8(ext_r,0x00ff) // EEPROM ready status (*)
- AM_RANGE(0x22000, 0x23fff) AM_READNOP AM_WRITE8(ext1_w,0x00ff) // sound CPU reset (*)
- AM_RANGE(0x24000, 0x25fff) AM_WRITE8(ext2_w,0x00ff) // slave & i/o reset (*)
- AM_RANGE(0x26000, 0x27fff) AM_NOP // watchdog
-ADDRESS_MAP_END
+void namco_c148_device::map(address_map &map)
+{
+ map(0x04000, 0x05fff).rw(this, FUNC(namco_c148_device::bus_ctrl_r), FUNC(namco_c148_device::bus_ctrl_w)).umask16(0x00ff);
+ map(0x06000, 0x07fff).rw(this, FUNC(namco_c148_device::cpu_irq_level_r), FUNC(namco_c148_device::cpu_irq_level_w)).umask16(0x00ff); // CPUIRQ lv
+ map(0x08000, 0x09fff).rw(this, FUNC(namco_c148_device::ex_irq_level_r), FUNC(namco_c148_device::ex_irq_level_w)).umask16(0x00ff); // EXIRQ lv
+ map(0x0a000, 0x0bfff).rw(this, FUNC(namco_c148_device::pos_irq_level_r), FUNC(namco_c148_device::pos_irq_level_w)).umask16(0x00ff); // POSIRQ lv
+ map(0x0c000, 0x0dfff).rw(this, FUNC(namco_c148_device::sci_irq_level_r), FUNC(namco_c148_device::sci_irq_level_w)).umask16(0x00ff); // SCIRQ lv
+ map(0x0e000, 0x0ffff).rw(this, FUNC(namco_c148_device::vblank_irq_level_r), FUNC(namco_c148_device::vblank_irq_level_w)).umask16(0x00ff); // VBlank IRQ lv
+
+ map(0x10000, 0x11fff).w(this, FUNC(namco_c148_device::cpu_irq_assert_w));
+ map(0x16000, 0x17fff).rw(this, FUNC(namco_c148_device::cpu_irq_ack_r), FUNC(namco_c148_device::cpu_irq_ack_w)); // CPUIRQ ack
+ map(0x18000, 0x19fff).rw(this, FUNC(namco_c148_device::ex_irq_ack_r), FUNC(namco_c148_device::ex_irq_ack_w)); // EXIRQ ack
+ map(0x1a000, 0x1bfff).rw(this, FUNC(namco_c148_device::pos_irq_ack_r), FUNC(namco_c148_device::pos_irq_ack_w)); // POSIRQ ack
+ map(0x1c000, 0x1dfff).rw(this, FUNC(namco_c148_device::sci_irq_ack_r), FUNC(namco_c148_device::sci_irq_ack_w)); // SCIRQ ack
+ map(0x1e000, 0x1ffff).rw(this, FUNC(namco_c148_device::vblank_irq_ack_r), FUNC(namco_c148_device::vblank_irq_ack_w)); // VBlank IRQ ack
+ map(0x20000, 0x21fff).r(this, FUNC(namco_c148_device::ext_r)).umask16(0x00ff); // EEPROM ready status (*)
+ map(0x22000, 0x23fff).nopr().w(this, FUNC(namco_c148_device::ext1_w)).umask16(0x00ff); // sound CPU reset (*)
+ map(0x24000, 0x25fff).w(this, FUNC(namco_c148_device::ext2_w)).umask16(0x00ff); // slave & i/o reset (*)
+ map(0x26000, 0x27fff).noprw(); // watchdog
+}
diff --git a/src/mame/machine/naomibd.cpp b/src/mame/machine/naomibd.cpp
index 64412e8c420..14b7777412a 100644
--- a/src/mame/machine/naomibd.cpp
+++ b/src/mame/machine/naomibd.cpp
@@ -60,18 +60,19 @@
Normal address starts with 0xa0000000 to enable auto-advance and 8MB ROM addressing mode.
*/
-ADDRESS_MAP_START(naomi_board::submap)
- AM_RANGE(0x00, 0xff) AM_READ(default_r)
-
- AM_RANGE(0x00, 0x01) AM_WRITE(rom_offseth_w)
- AM_RANGE(0x02, 0x03) AM_WRITE(rom_offsetl_w)
- AM_RANGE(0x04, 0x05) AM_READWRITE(rom_data_r, rom_data_w)
- AM_RANGE(0x06, 0x07) AM_WRITE(dma_offseth_w)
- AM_RANGE(0x08, 0x09) AM_WRITE(dma_offsetl_w)
- AM_RANGE(0x0a, 0x0b) AM_WRITE(dma_count_w)
- AM_RANGE(0x3c, 0x3d) AM_WRITE(boardid_w)
- AM_RANGE(0x3e, 0x3f) AM_READ(boardid_r)
-ADDRESS_MAP_END
+void naomi_board::submap(address_map &map)
+{
+ map(0x00, 0xff).r(this, FUNC(naomi_board::default_r));
+
+ map(0x00, 0x01).w(this, FUNC(naomi_board::rom_offseth_w));
+ map(0x02, 0x03).w(this, FUNC(naomi_board::rom_offsetl_w));
+ map(0x04, 0x05).rw(this, FUNC(naomi_board::rom_data_r), FUNC(naomi_board::rom_data_w));
+ map(0x06, 0x07).w(this, FUNC(naomi_board::dma_offseth_w));
+ map(0x08, 0x09).w(this, FUNC(naomi_board::dma_offsetl_w));
+ map(0x0a, 0x0b).w(this, FUNC(naomi_board::dma_count_w));
+ map(0x3c, 0x3d).w(this, FUNC(naomi_board::boardid_w));
+ map(0x3e, 0x3f).r(this, FUNC(naomi_board::boardid_r));
+}
naomi_board::naomi_board(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: naomi_g1_device(mconfig, type, tag, owner, clock)
diff --git a/src/mame/machine/naomig1.cpp b/src/mame/machine/naomig1.cpp
index 4964d0bbb58..226b2e45dc4 100644
--- a/src/mame/machine/naomig1.cpp
+++ b/src/mame/machine/naomig1.cpp
@@ -4,26 +4,27 @@
#include "emu.h"
#include "machine/naomig1.h"
-ADDRESS_MAP_START(naomi_g1_device::amap)
- AM_RANGE(0x04, 0x07) AM_READWRITE(sb_gdstar_r, sb_gdstar_w)
- AM_RANGE(0x08, 0x0b) AM_READWRITE(sb_gdlen_r, sb_gdlen_w)
- AM_RANGE(0x0c, 0x0f) AM_READWRITE(sb_gddir_r, sb_gddir_w)
- AM_RANGE(0x14, 0x17) AM_READWRITE(sb_gden_r, sb_gden_w)
- AM_RANGE(0x18, 0x1b) AM_READWRITE(sb_gdst_r, sb_gdst_w)
- AM_RANGE(0x80, 0x83) AM_WRITE(sb_g1rrc_w)
- AM_RANGE(0x84, 0x87) AM_WRITE(sb_g1rwc_w)
- AM_RANGE(0x88, 0x8b) AM_WRITE(sb_g1frc_w)
- AM_RANGE(0x8c, 0x8f) AM_WRITE(sb_g1fwc_w)
- AM_RANGE(0x90, 0x93) AM_WRITE(sb_g1crc_w)
- AM_RANGE(0x94, 0x97) AM_WRITE(sb_g1cwc_w)
- AM_RANGE(0xa0, 0xa3) AM_WRITE(sb_g1gdrc_w)
- AM_RANGE(0xa4, 0xa7) AM_WRITE(sb_g1gdwc_w)
- AM_RANGE(0xb0, 0xb3) AM_READ(sb_g1sysm_r)
- AM_RANGE(0xb4, 0xb7) AM_WRITE(sb_g1crdyc_w)
- AM_RANGE(0xb8, 0xbb) AM_WRITE(sb_gdapro_w)
- AM_RANGE(0xf4, 0xf7) AM_READ(sb_gdstard_r)
- AM_RANGE(0xf8, 0xfb) AM_READ(sb_gdlend_r)
-ADDRESS_MAP_END
+void naomi_g1_device::amap(address_map &map)
+{
+ map(0x04, 0x07).rw(this, FUNC(naomi_g1_device::sb_gdstar_r), FUNC(naomi_g1_device::sb_gdstar_w));
+ map(0x08, 0x0b).rw(this, FUNC(naomi_g1_device::sb_gdlen_r), FUNC(naomi_g1_device::sb_gdlen_w));
+ map(0x0c, 0x0f).rw(this, FUNC(naomi_g1_device::sb_gddir_r), FUNC(naomi_g1_device::sb_gddir_w));
+ map(0x14, 0x17).rw(this, FUNC(naomi_g1_device::sb_gden_r), FUNC(naomi_g1_device::sb_gden_w));
+ map(0x18, 0x1b).rw(this, FUNC(naomi_g1_device::sb_gdst_r), FUNC(naomi_g1_device::sb_gdst_w));
+ map(0x80, 0x83).w(this, FUNC(naomi_g1_device::sb_g1rrc_w));
+ map(0x84, 0x87).w(this, FUNC(naomi_g1_device::sb_g1rwc_w));
+ map(0x88, 0x8b).w(this, FUNC(naomi_g1_device::sb_g1frc_w));
+ map(0x8c, 0x8f).w(this, FUNC(naomi_g1_device::sb_g1fwc_w));
+ map(0x90, 0x93).w(this, FUNC(naomi_g1_device::sb_g1crc_w));
+ map(0x94, 0x97).w(this, FUNC(naomi_g1_device::sb_g1cwc_w));
+ map(0xa0, 0xa3).w(this, FUNC(naomi_g1_device::sb_g1gdrc_w));
+ map(0xa4, 0xa7).w(this, FUNC(naomi_g1_device::sb_g1gdwc_w));
+ map(0xb0, 0xb3).r(this, FUNC(naomi_g1_device::sb_g1sysm_r));
+ map(0xb4, 0xb7).w(this, FUNC(naomi_g1_device::sb_g1crdyc_w));
+ map(0xb8, 0xbb).w(this, FUNC(naomi_g1_device::sb_gdapro_w));
+ map(0xf4, 0xf7).r(this, FUNC(naomi_g1_device::sb_gdstard_r));
+ map(0xf8, 0xfb).r(this, FUNC(naomi_g1_device::sb_gdlend_r));
+}
naomi_g1_device::naomi_g1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, type, tag, owner, clock)
diff --git a/src/mame/machine/naomim1.cpp b/src/mame/machine/naomim1.cpp
index dfc89fc3c01..e20717b6c27 100644
--- a/src/mame/machine/naomim1.cpp
+++ b/src/mame/machine/naomim1.cpp
@@ -6,10 +6,11 @@
DEFINE_DEVICE_TYPE(NAOMI_M1_BOARD, naomi_m1_board, "naomi_m1_board", "Sega NAOMI M1 Board")
-ADDRESS_MAP_START(naomi_m1_board::submap)
- AM_IMPORT_FROM(naomi_board::submap)
- AM_RANGE(0x0a, 0x0b) AM_READ(actel_id_r)
-ADDRESS_MAP_END
+void naomi_m1_board::submap(address_map &map)
+{
+ naomi_board::submap(map);
+ map(0x0a, 0x0b).r(this, FUNC(naomi_m1_board::actel_id_r));
+}
naomi_m1_board::naomi_m1_board(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: naomi_board(mconfig, NAOMI_M1_BOARD, tag, owner, clock)
diff --git a/src/mame/machine/naomim4.cpp b/src/mame/machine/naomim4.cpp
index 90839878a31..dedb44ea195 100644
--- a/src/mame/machine/naomim4.cpp
+++ b/src/mame/machine/naomim4.cpp
@@ -40,10 +40,11 @@ static uint8_t cfidata[] = {
0x01,0x00
};
-ADDRESS_MAP_START(naomi_m4_board::submap)
- AM_IMPORT_FROM(naomi_board::submap)
- AM_RANGE(0x1a, 0x1b) AM_READ(m4_id_r) // Read: bits 8-15 - 0x55, bit 7 - 1 if IC7 EPR rom enabled; Write: bit 0 - master/slave board selection.
-ADDRESS_MAP_END
+void naomi_m4_board::submap(address_map &map)
+{
+ naomi_board::submap(map);
+ map(0x1a, 0x1b).r(this, FUNC(naomi_m4_board::m4_id_r)); // Read: bits 8-15 - 0x55, bit 7 - 1 if IC7 EPR rom enabled; Write: bit 0 - master/slave board selection.
+}
naomi_m4_board::naomi_m4_board(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: naomi_board(mconfig, NAOMI_M4_BOARD, tag, owner, clock)
diff --git a/src/mame/machine/nextkbd.cpp b/src/mame/machine/nextkbd.cpp
index 827b7952aad..8e703ab6a94 100644
--- a/src/mame/machine/nextkbd.cpp
+++ b/src/mame/machine/nextkbd.cpp
@@ -6,14 +6,15 @@
DEFINE_DEVICE_TYPE(NEXTKBD, nextkbd_device, "nextkbd", "NeXT Keyboard")
-ADDRESS_MAP_START(nextkbd_device::amap)
- AM_RANGE(0x0, 0x3) AM_READWRITE8(status_snd_r, ctrl_snd_w, 0xff000000)
- AM_RANGE(0x0, 0x3) AM_READWRITE8(status_kms_r, ctrl_kms_w, 0x00ff0000)
- AM_RANGE(0x0, 0x3) AM_READWRITE8(status_dma_r, ctrl_dma_w, 0x0000ff00)
- AM_RANGE(0x0, 0x3) AM_READWRITE8(status_cmd_r, ctrl_cmd_w, 0x000000ff)
- AM_RANGE(0x4, 0x7) AM_READWRITE(cdata_r, cdata_w)
- AM_RANGE(0x8, 0xb) AM_READWRITE(kmdata_r, kmdata_w)
-ADDRESS_MAP_END
+void nextkbd_device::amap(address_map &map)
+{
+ map(0x0, 0x0).rw(this, FUNC(nextkbd_device::status_snd_r), FUNC(nextkbd_device::ctrl_snd_w));
+ map(0x1, 0x1).rw(this, FUNC(nextkbd_device::status_kms_r), FUNC(nextkbd_device::ctrl_kms_w));
+ map(0x2, 0x2).rw(this, FUNC(nextkbd_device::status_dma_r), FUNC(nextkbd_device::ctrl_dma_w));
+ map(0x3, 0x3).rw(this, FUNC(nextkbd_device::status_cmd_r), FUNC(nextkbd_device::ctrl_cmd_w));
+ map(0x4, 0x7).rw(this, FUNC(nextkbd_device::cdata_r), FUNC(nextkbd_device::cdata_w));
+ map(0x8, 0xb).rw(this, FUNC(nextkbd_device::kmdata_r), FUNC(nextkbd_device::kmdata_w));
+}
nextkbd_device::nextkbd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, NEXTKBD, tag, owner, clock),
diff --git a/src/mame/machine/nextmo.cpp b/src/mame/machine/nextmo.cpp
index c7239dd976f..ea389a6cd8a 100644
--- a/src/mame/machine/nextmo.cpp
+++ b/src/mame/machine/nextmo.cpp
@@ -6,17 +6,18 @@
DEFINE_DEVICE_TYPE(NEXTMO, nextmo_device, "nextmo", "NeXT Magneto-optical drive")
-ADDRESS_MAP_START(nextmo_device::map)
- AM_RANGE(0x04, 0x04) AM_READWRITE(r4_r, r4_w)
- AM_RANGE(0x05, 0x05) AM_READWRITE(r5_r, r5_w)
- AM_RANGE(0x06, 0x06) AM_READWRITE(r6_r, r6_w)
- AM_RANGE(0x07, 0x07) AM_READWRITE(r7_r, r7_w)
- AM_RANGE(0x08, 0x08) AM_READWRITE(r8_r, r8_w)
- AM_RANGE(0x09, 0x09) AM_READWRITE(r9_r, r9_w)
- AM_RANGE(0x0a, 0x0a) AM_READWRITE(ra_r, ra_w)
- AM_RANGE(0x0b, 0x0b) AM_READWRITE(rb_r, rb_w)
- AM_RANGE(0x10, 0x17) AM_READWRITE(r10_r, r10_w)
-ADDRESS_MAP_END
+void nextmo_device::map(address_map &map)
+{
+ map(0x04, 0x04).rw(this, FUNC(nextmo_device::r4_r), FUNC(nextmo_device::r4_w));
+ map(0x05, 0x05).rw(this, FUNC(nextmo_device::r5_r), FUNC(nextmo_device::r5_w));
+ map(0x06, 0x06).rw(this, FUNC(nextmo_device::r6_r), FUNC(nextmo_device::r6_w));
+ map(0x07, 0x07).rw(this, FUNC(nextmo_device::r7_r), FUNC(nextmo_device::r7_w));
+ map(0x08, 0x08).rw(this, FUNC(nextmo_device::r8_r), FUNC(nextmo_device::r8_w));
+ map(0x09, 0x09).rw(this, FUNC(nextmo_device::r9_r), FUNC(nextmo_device::r9_w));
+ map(0x0a, 0x0a).rw(this, FUNC(nextmo_device::ra_r), FUNC(nextmo_device::ra_w));
+ map(0x0b, 0x0b).rw(this, FUNC(nextmo_device::rb_r), FUNC(nextmo_device::rb_w));
+ map(0x10, 0x17).rw(this, FUNC(nextmo_device::r10_r), FUNC(nextmo_device::r10_w));
+}
nextmo_device::nextmo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, NEXTMO, tag, owner, clock),
diff --git a/src/mame/machine/prof80mmu.cpp b/src/mame/machine/prof80mmu.cpp
index 6df56ee82c5..bf6d7044e08 100644
--- a/src/mame/machine/prof80mmu.cpp
+++ b/src/mame/machine/prof80mmu.cpp
@@ -18,12 +18,14 @@
DEFINE_DEVICE_TYPE(PROF80_MMU, prof80_mmu_device, "prof80_mmu", "PROF80 MMU")
-ADDRESS_MAP_START(prof80_mmu_device::z80_program_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(program_r, program_w)
-ADDRESS_MAP_END
+void prof80_mmu_device::z80_program_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(prof80_mmu_device::program_r), FUNC(prof80_mmu_device::program_w));
+}
-ADDRESS_MAP_START(prof80_mmu_device::program_map)
-ADDRESS_MAP_END
+void prof80_mmu_device::program_map(address_map &map)
+{
+}
diff --git a/src/mame/machine/segabb.cpp b/src/mame/machine/segabb.cpp
index 30cc2eb6f11..b297d1916e3 100644
--- a/src/mame/machine/segabb.cpp
+++ b/src/mame/machine/segabb.cpp
@@ -5,14 +5,17 @@
DEFINE_DEVICE_TYPE(SEGA_LINDBERGH_BASEBOARD, sega_lindbergh_baseboard_device, "lindbergh_baseboard", "Sega Lindbergh Baseboard")
-ADDRESS_MAP_START(sega_lindbergh_baseboard_device::map1)
-ADDRESS_MAP_END
+void sega_lindbergh_baseboard_device::map1(address_map &map)
+{
+}
-ADDRESS_MAP_START(sega_lindbergh_baseboard_device::map2)
-ADDRESS_MAP_END
+void sega_lindbergh_baseboard_device::map2(address_map &map)
+{
+}
-ADDRESS_MAP_START(sega_lindbergh_baseboard_device::map3)
-ADDRESS_MAP_END
+void sega_lindbergh_baseboard_device::map3(address_map &map)
+{
+}
sega_lindbergh_baseboard_device::sega_lindbergh_baseboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: pci_device(mconfig, SEGA_LINDBERGH_BASEBOARD, tag, owner, clock)
diff --git a/src/mame/machine/seicop.cpp b/src/mame/machine/seicop.cpp
index 47bc52ebe48..f0aa292915a 100644
--- a/src/mame/machine/seicop.cpp
+++ b/src/mame/machine/seicop.cpp
@@ -233,17 +233,18 @@ WRITE16_MEMBER(seibu_cop_bootleg_device::d104_move_w)
}
// anything that is read thru ROM range 0xc**** is replacement code, therefore on this HW they are latches.
-ADDRESS_MAP_START(seibu_cop_bootleg_device::seibucopbl_map)
- AM_RANGE(0x01e, 0x01f) AM_RAM // angle step, PC=0xc0186
- AM_RANGE(0x046, 0x049) AM_READWRITE(d104_move_r,d104_move_w)
- AM_RANGE(0x070, 0x07f) AM_RAM // DMA registers, PC=0xc0034
- AM_RANGE(0x0a0, 0x0af) AM_READWRITE(reg_hi_addr_r,reg_hi_addr_w)
- AM_RANGE(0x0c0, 0x0cf) AM_READWRITE(reg_lo_addr_r,reg_lo_addr_w)
- AM_RANGE(0x100, 0x105) AM_WRITE(cmd_trigger_w)
- AM_RANGE(0x1b0, 0x1b1) AM_READ(status_r)
- AM_RANGE(0x1b2, 0x1b3) AM_READ(dist_r)
- AM_RANGE(0x1b4, 0x1b5) AM_READ(angle_r)
-ADDRESS_MAP_END
+void seibu_cop_bootleg_device::seibucopbl_map(address_map &map)
+{
+ map(0x01e, 0x01f).ram(); // angle step, PC=0xc0186
+ map(0x046, 0x049).rw(this, FUNC(seibu_cop_bootleg_device::d104_move_r), FUNC(seibu_cop_bootleg_device::d104_move_w));
+ map(0x070, 0x07f).ram(); // DMA registers, PC=0xc0034
+ map(0x0a0, 0x0af).rw(this, FUNC(seibu_cop_bootleg_device::reg_hi_addr_r), FUNC(seibu_cop_bootleg_device::reg_hi_addr_w));
+ map(0x0c0, 0x0cf).rw(this, FUNC(seibu_cop_bootleg_device::reg_lo_addr_r), FUNC(seibu_cop_bootleg_device::reg_lo_addr_w));
+ map(0x100, 0x105).w(this, FUNC(seibu_cop_bootleg_device::cmd_trigger_w));
+ map(0x1b0, 0x1b1).r(this, FUNC(seibu_cop_bootleg_device::status_r));
+ map(0x1b2, 0x1b3).r(this, FUNC(seibu_cop_bootleg_device::dist_r));
+ map(0x1b4, 0x1b5).r(this, FUNC(seibu_cop_bootleg_device::angle_r));
+}
seibu_cop_bootleg_device::seibu_cop_bootleg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, SEIBU_COP_BOOTLEG, tag, owner, clock),
diff --git a/src/mame/machine/st0016.cpp b/src/mame/machine/st0016.cpp
index d9dfce67473..120e4877f8c 100644
--- a/src/mame/machine/st0016.cpp
+++ b/src/mame/machine/st0016.cpp
@@ -9,23 +9,25 @@
DEFINE_DEVICE_TYPE(ST0016_CPU, st0016_cpu_device, "st0016_cpu", "ST0016")
-ADDRESS_MAP_START(st0016_cpu_device::st0016_cpu_internal_map)
- AM_RANGE(0xc000, 0xcfff) AM_READ(st0016_sprite_ram_r) AM_WRITE(st0016_sprite_ram_w)
- AM_RANGE(0xd000, 0xdfff) AM_READ(st0016_sprite2_ram_r) AM_WRITE(st0016_sprite2_ram_w)
- AM_RANGE(0xea00, 0xebff) AM_READ(st0016_palette_ram_r) AM_WRITE(st0016_palette_ram_w)
- AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w)
- AM_RANGE(0xe900, 0xe9ff) AM_DEVREADWRITE("stsnd", st0016_device, st0016_snd_r, st0016_snd_w) /* sound regs 8 x $20 bytes, see notes */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(st0016_cpu_device::st0016_cpu_internal_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0xbf) AM_READ(st0016_vregs_r) AM_WRITE(st0016_vregs_w) /* video/crt regs ? */
- AM_RANGE(0xe2, 0xe2) AM_WRITE(st0016_sprite_bank_w)
- AM_RANGE(0xe3, 0xe4) AM_WRITE(st0016_character_bank_w)
- AM_RANGE(0xe5, 0xe5) AM_WRITE(st0016_palette_bank_w)
- AM_RANGE(0xf0, 0xf0) AM_READ(st0016_dma_r)
-ADDRESS_MAP_END
+void st0016_cpu_device::st0016_cpu_internal_map(address_map &map)
+{
+ map(0xc000, 0xcfff).r(this, FUNC(st0016_cpu_device::st0016_sprite_ram_r)).w(this, FUNC(st0016_cpu_device::st0016_sprite_ram_w));
+ map(0xd000, 0xdfff).r(this, FUNC(st0016_cpu_device::st0016_sprite2_ram_r)).w(this, FUNC(st0016_cpu_device::st0016_sprite2_ram_w));
+ map(0xea00, 0xebff).r(this, FUNC(st0016_cpu_device::st0016_palette_ram_r)).w(this, FUNC(st0016_cpu_device::st0016_palette_ram_w));
+ map(0xec00, 0xec1f).r(this, FUNC(st0016_cpu_device::st0016_character_ram_r)).w(this, FUNC(st0016_cpu_device::st0016_character_ram_w));
+ map(0xe900, 0xe9ff).rw("stsnd", FUNC(st0016_device::st0016_snd_r), FUNC(st0016_device::st0016_snd_w)); /* sound regs 8 x $20 bytes, see notes */
+}
+
+
+void st0016_cpu_device::st0016_cpu_internal_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0xbf).r(this, FUNC(st0016_cpu_device::st0016_vregs_r)).w(this, FUNC(st0016_cpu_device::st0016_vregs_w)); /* video/crt regs ? */
+ map(0xe2, 0xe2).w(this, FUNC(st0016_cpu_device::st0016_sprite_bank_w));
+ map(0xe3, 0xe4).w(this, FUNC(st0016_cpu_device::st0016_character_bank_w));
+ map(0xe5, 0xe5).w(this, FUNC(st0016_cpu_device::st0016_palette_bank_w));
+ map(0xf0, 0xf0).r(this, FUNC(st0016_cpu_device::st0016_dma_r));
+}
// note: a lot of bits are left uninitialized by the games, the default values are uncertain
diff --git a/src/mame/machine/wpc_shift.cpp b/src/mame/machine/wpc_shift.cpp
index 0dd7c30fff9..59f9c6e42d9 100644
--- a/src/mame/machine/wpc_shift.cpp
+++ b/src/mame/machine/wpc_shift.cpp
@@ -15,12 +15,13 @@ wpc_shift_device::~wpc_shift_device()
{
}
-ADDRESS_MAP_START(wpc_shift_device::registers)
- AM_RANGE(0, 0) AM_READWRITE(adrh_r, adrh_w)
- AM_RANGE(1, 1) AM_READWRITE(adrl_r, adrl_w)
- AM_RANGE(2, 2) AM_READWRITE(val1_r, val1_w)
- AM_RANGE(3, 3) AM_READWRITE(val2_r, val2_w)
-ADDRESS_MAP_END
+void wpc_shift_device::registers(address_map &map)
+{
+ map(0, 0).rw(this, FUNC(wpc_shift_device::adrh_r), FUNC(wpc_shift_device::adrh_w));
+ map(1, 1).rw(this, FUNC(wpc_shift_device::adrl_r), FUNC(wpc_shift_device::adrl_w));
+ map(2, 2).rw(this, FUNC(wpc_shift_device::val1_r), FUNC(wpc_shift_device::val1_w));
+ map(3, 3).rw(this, FUNC(wpc_shift_device::val2_r), FUNC(wpc_shift_device::val2_w));
+}
READ8_MEMBER(wpc_shift_device::adrh_r)
diff --git a/src/mame/machine/xbox_pci.cpp b/src/mame/machine/xbox_pci.cpp
index 962f574c06b..b33f4d6ab42 100644
--- a/src/mame/machine/xbox_pci.cpp
+++ b/src/mame/machine/xbox_pci.cpp
@@ -61,10 +61,11 @@ void nv2a_host_device::device_reset()
DEFINE_DEVICE_TYPE(NV2A_RAM, nv2a_ram_device, "nv2a_ram", "NV2A Memory Controller - SDRAM")
-ADDRESS_MAP_START(nv2a_ram_device::config_map)
- AM_IMPORT_FROM(pci_device::config_map)
- AM_RANGE(0x6c, 0x6f) AM_READWRITE(config_register_r, config_register_w)
-ADDRESS_MAP_END
+void nv2a_ram_device::config_map(address_map &map)
+{
+ pci_device::config_map(map);
+ map(0x6c, 0x6f).rw(this, FUNC(nv2a_ram_device::config_register_r), FUNC(nv2a_ram_device::config_register_w));
+}
nv2a_ram_device::nv2a_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: pci_device(mconfig, NV2A_RAM, tag, owner, clock)
@@ -86,9 +87,10 @@ WRITE32_MEMBER(nv2a_ram_device::config_register_w)
DEFINE_DEVICE_TYPE(MCPX_LPC, mcpx_lpc_device, "mcpx_lpc", "MCPX HUB Interface - ISA Bridge")
-ADDRESS_MAP_START(mcpx_lpc_device::lpc_io)
- AM_RANGE(0x00000000, 0x000000ff) AM_READWRITE(lpc_r, lpc_w)
-ADDRESS_MAP_END
+void mcpx_lpc_device::lpc_io(address_map &map)
+{
+ map(0x00000000, 0x000000ff).rw(this, FUNC(mcpx_lpc_device::lpc_r), FUNC(mcpx_lpc_device::lpc_w));
+}
mcpx_lpc_device::mcpx_lpc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: pci_device(mconfig, MCPX_LPC, tag, owner, clock)
@@ -122,17 +124,20 @@ WRITE32_MEMBER(mcpx_lpc_device::lpc_w)
DEFINE_DEVICE_TYPE(MCPX_SMBUS, mcpx_smbus_device, "mcpx_smbus", "MCPX SMBus Controller")
-ADDRESS_MAP_START(mcpx_smbus_device::smbus_io0)
- AM_RANGE(0x00000000, 0x0000000f) AM_NOP
-ADDRESS_MAP_END
+void mcpx_smbus_device::smbus_io0(address_map &map)
+{
+ map(0x00000000, 0x0000000f).noprw();
+}
-ADDRESS_MAP_START(mcpx_smbus_device::smbus_io1)
- AM_RANGE(0x00000000, 0x0000000f) AM_READWRITE(smbus_r, smbus_w)
-ADDRESS_MAP_END
+void mcpx_smbus_device::smbus_io1(address_map &map)
+{
+ map(0x00000000, 0x0000000f).rw(this, FUNC(mcpx_smbus_device::smbus_r), FUNC(mcpx_smbus_device::smbus_w));
+}
-ADDRESS_MAP_START(mcpx_smbus_device::smbus_io2)
- AM_RANGE(0x00000000, 0x0000001f) AM_NOP
-ADDRESS_MAP_END
+void mcpx_smbus_device::smbus_io2(address_map &map)
+{
+ map(0x00000000, 0x0000001f).noprw();
+}
mcpx_smbus_device::mcpx_smbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: pci_device(mconfig, MCPX_SMBUS, tag, owner, clock),
@@ -221,9 +226,10 @@ WRITE32_MEMBER(mcpx_smbus_device::smbus_w)
DEFINE_DEVICE_TYPE(MCPX_OHCI, mcpx_ohci_device, "mcpx_ohci", "MCPX OHCI USB Controller")
-ADDRESS_MAP_START(mcpx_ohci_device::ohci_mmio)
- AM_RANGE(0x00000000, 0x00000fff) AM_READWRITE(ohci_r, ohci_w)
-ADDRESS_MAP_END
+void mcpx_ohci_device::ohci_mmio(address_map &map)
+{
+ map(0x00000000, 0x00000fff).rw(this, FUNC(mcpx_ohci_device::ohci_r), FUNC(mcpx_ohci_device::ohci_w));
+}
mcpx_ohci_device::mcpx_ohci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: pci_device(mconfig, MCPX_OHCI, tag, owner, clock),
@@ -318,13 +324,15 @@ WRITE32_MEMBER(mcpx_ohci_device::ohci_w)
DEFINE_DEVICE_TYPE(MCPX_ETH, mcpx_eth_device, "mcpx_eth", "MCP Networking Adapter")
-ADDRESS_MAP_START(mcpx_eth_device::eth_mmio)
- AM_RANGE(0x00000000, 0x0000003ff) AM_READWRITE(eth_r, eth_w)
-ADDRESS_MAP_END
+void mcpx_eth_device::eth_mmio(address_map &map)
+{
+ map(0x00000000, 0x0000003ff).rw(this, FUNC(mcpx_eth_device::eth_r), FUNC(mcpx_eth_device::eth_w));
+}
-ADDRESS_MAP_START(mcpx_eth_device::eth_io)
- AM_RANGE(0x00000000, 0x000000007) AM_READWRITE(eth_io_r, eth_io_w)
-ADDRESS_MAP_END
+void mcpx_eth_device::eth_io(address_map &map)
+{
+ map(0x00000000, 0x000000007).rw(this, FUNC(mcpx_eth_device::eth_io_r), FUNC(mcpx_eth_device::eth_io_w));
+}
mcpx_eth_device::mcpx_eth_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: pci_device(mconfig, MCPX_ETH, tag, owner, clock)
@@ -369,9 +377,10 @@ WRITE32_MEMBER(mcpx_eth_device::eth_io_w)
DEFINE_DEVICE_TYPE(MCPX_APU, mcpx_apu_device, "mcpx_apu", "MCP APU")
-ADDRESS_MAP_START(mcpx_apu_device::apu_mmio)
- AM_RANGE(0x00000000, 0x00007ffff) AM_READWRITE(apu_r, apu_w)
-ADDRESS_MAP_END
+void mcpx_apu_device::apu_mmio(address_map &map)
+{
+ map(0x00000000, 0x00007ffff).rw(this, FUNC(mcpx_apu_device::apu_r), FUNC(mcpx_apu_device::apu_w));
+}
mcpx_apu_device::mcpx_apu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: pci_device(mconfig, MCPX_APU, tag, owner, clock),
@@ -562,17 +571,20 @@ WRITE32_MEMBER(mcpx_apu_device::apu_w)
DEFINE_DEVICE_TYPE(MCPX_AC97_AUDIO, mcpx_ac97_audio_device, "mcpx_ac97_audio", "MCPX AC'97 Audio Codec Interface")
-ADDRESS_MAP_START(mcpx_ac97_audio_device::ac97_mmio)
- AM_RANGE(0x00000000, 0x000000fff) AM_READWRITE(ac97_audio_r, ac97_audio_w)
-ADDRESS_MAP_END
+void mcpx_ac97_audio_device::ac97_mmio(address_map &map)
+{
+ map(0x00000000, 0x000000fff).rw(this, FUNC(mcpx_ac97_audio_device::ac97_audio_r), FUNC(mcpx_ac97_audio_device::ac97_audio_w));
+}
-ADDRESS_MAP_START(mcpx_ac97_audio_device::ac97_io0)
- AM_RANGE(0x00000000, 0x0000000ff) AM_READWRITE(ac97_audio_io0_r, ac97_audio_io0_w)
-ADDRESS_MAP_END
+void mcpx_ac97_audio_device::ac97_io0(address_map &map)
+{
+ map(0x00000000, 0x0000000ff).rw(this, FUNC(mcpx_ac97_audio_device::ac97_audio_io0_r), FUNC(mcpx_ac97_audio_device::ac97_audio_io0_w));
+}
-ADDRESS_MAP_START(mcpx_ac97_audio_device::ac97_io1)
- AM_RANGE(0x00000000, 0x00000007f) AM_READWRITE(ac97_audio_io1_r, ac97_audio_io1_w)
-ADDRESS_MAP_END
+void mcpx_ac97_audio_device::ac97_io1(address_map &map)
+{
+ map(0x00000000, 0x00000007f).rw(this, FUNC(mcpx_ac97_audio_device::ac97_audio_io1_r), FUNC(mcpx_ac97_audio_device::ac97_audio_io1_w));
+}
mcpx_ac97_audio_device::mcpx_ac97_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: pci_device(mconfig, MCPX_AC97_AUDIO, tag, owner, clock)
@@ -678,9 +690,10 @@ mcpx_ac97_modem_device::mcpx_ac97_modem_device(const machine_config &mconfig, co
DEFINE_DEVICE_TYPE(MCPX_IDE, mcpx_ide_device, "mcpx_ide", "MCPX IDE Controller")
-ADDRESS_MAP_START(mcpx_ide_device::mcpx_ide_io)
- AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("ide", bus_master_ide_controller_device, bmdma_r, bmdma_w)
-ADDRESS_MAP_END
+void mcpx_ide_device::mcpx_ide_io(address_map &map)
+{
+ map(0x0000, 0x000f).rw("ide", FUNC(bus_master_ide_controller_device::bmdma_r), FUNC(bus_master_ide_controller_device::bmdma_w));
+}
mcpx_ide_device::mcpx_ide_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: pci_device(mconfig, MCPX_IDE, tag, owner, clock),
@@ -739,13 +752,15 @@ void nv2a_agp_device::device_reset()
DEFINE_DEVICE_TYPE(NV2A_GPU, nv2a_gpu_device, "nv2a_gpu", "NVIDIA NV2A GPU")
-ADDRESS_MAP_START(nv2a_gpu_device::nv2a_mmio)
- AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_READWRITE(geforce_r, geforce_w)
-ADDRESS_MAP_END
+void nv2a_gpu_device::nv2a_mmio(address_map &map)
+{
+ map(0x00000000, 0x00ffffff).ram().rw(this, FUNC(nv2a_gpu_device::geforce_r), FUNC(nv2a_gpu_device::geforce_w));
+}
-ADDRESS_MAP_START(nv2a_gpu_device::nv2a_mirror)
- AM_RANGE(0x00000000, 0x07ffffff) AM_RAM AM_READWRITE(nv2a_mirror_r, nv2a_mirror_w)
-ADDRESS_MAP_END
+void nv2a_gpu_device::nv2a_mirror(address_map &map)
+{
+ map(0x00000000, 0x07ffffff).ram().rw(this, FUNC(nv2a_gpu_device::nv2a_mirror_r), FUNC(nv2a_gpu_device::nv2a_mirror_w));
+}
nv2a_gpu_device::nv2a_gpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: pci_device(mconfig, NV2A_GPU, tag, owner, clock),
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 9f812260462..d3aa035bd60 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -36513,6 +36513,7 @@ fisco400 // (c) 1977 Taito
gunman // (c) 1977 Taito
missilex // (c) 1977 Taito
ttblock // (c) 1977 Taito
+ttsracec // (c) 1978 Taito
zzblock // (c) 1979 Taito
@source:taitotx.cpp
diff --git a/src/mame/video/abc1600.cpp b/src/mame/video/abc1600.cpp
index 744e61bac9a..8eace59747b 100644
--- a/src/mame/video/abc1600.cpp
+++ b/src/mame/video/abc1600.cpp
@@ -47,50 +47,56 @@
DEFINE_DEVICE_TYPE(ABC1600_MOVER, abc1600_mover_device, "abc1600mover", "ABC 1600 Mover")
-ADDRESS_MAP_START(abc1600_mover_device::vram_map)
- AM_RANGE(0x00000, 0x7ffff) AM_READWRITE(video_ram_r, video_ram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(abc1600_mover_device::crtc_map)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xfe) AM_DEVREADWRITE(SY6845E_TAG, mc6845_device, status_r, address_w)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0xfe) AM_DEVREADWRITE(SY6845E_TAG, mc6845_device, register_r, register_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(abc1600_mover_device::iowr0_map)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_READ(iord0_r)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xf8) AM_WRITE(ldsx_hb_w)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0xf8) AM_WRITE(ldsx_lb_w)
- AM_RANGE(0x02, 0x02) AM_MIRROR(0xf8) AM_WRITE(ldsy_hb_w)
- AM_RANGE(0x03, 0x03) AM_MIRROR(0xf8) AM_WRITE(ldsy_lb_w)
- AM_RANGE(0x04, 0x04) AM_MIRROR(0xf8) AM_WRITE(ldtx_hb_w)
- AM_RANGE(0x05, 0x05) AM_MIRROR(0xf8) AM_WRITE(ldtx_lb_w)
- AM_RANGE(0x06, 0x06) AM_MIRROR(0xf8) AM_WRITE(ldty_hb_w)
- AM_RANGE(0x07, 0x07) AM_MIRROR(0xf8) AM_WRITE(ldty_lb_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(abc1600_mover_device::iowr1_map)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_READNOP
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xf8) AM_WRITE(ldfx_hb_w)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0xf8) AM_WRITE(ldfx_lb_w)
- AM_RANGE(0x02, 0x02) AM_MIRROR(0xf8) AM_WRITE(ldfy_hb_w)
- AM_RANGE(0x03, 0x03) AM_MIRROR(0xf8) AM_WRITE(ldfy_lb_w)
- AM_RANGE(0x05, 0x05) AM_MIRROR(0xf8) AM_WRITE(wrml_w)
- AM_RANGE(0x07, 0x07) AM_MIRROR(0xf8) AM_WRITE(wrdl_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(abc1600_mover_device::iowr2_map)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_READNOP
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xf8) AM_WRITE(wrmask_strobe_hb_w)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0xf8) AM_WRITE(wrmask_strobe_lb_w)
- AM_RANGE(0x02, 0x02) AM_MIRROR(0xf8) AM_WRITE(enable_clocks_w)
- AM_RANGE(0x03, 0x03) AM_MIRROR(0xf8) AM_WRITE(flag_strobe_w)
- AM_RANGE(0x04, 0x04) AM_MIRROR(0xf8) AM_WRITE(endisp_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(abc1600_mover_device::mover_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM
-ADDRESS_MAP_END
+void abc1600_mover_device::vram_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rw(this, FUNC(abc1600_mover_device::video_ram_r), FUNC(abc1600_mover_device::video_ram_w));
+}
+
+void abc1600_mover_device::crtc_map(address_map &map)
+{
+ map(0x00, 0x00).mirror(0xfe).rw(SY6845E_TAG, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x01, 0x01).mirror(0xfe).rw(SY6845E_TAG, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+}
+
+void abc1600_mover_device::iowr0_map(address_map &map)
+{
+ map(0x00, 0x00).mirror(0xff).r(this, FUNC(abc1600_mover_device::iord0_r));
+ map(0x00, 0x00).mirror(0xf8).w(this, FUNC(abc1600_mover_device::ldsx_hb_w));
+ map(0x01, 0x01).mirror(0xf8).w(this, FUNC(abc1600_mover_device::ldsx_lb_w));
+ map(0x02, 0x02).mirror(0xf8).w(this, FUNC(abc1600_mover_device::ldsy_hb_w));
+ map(0x03, 0x03).mirror(0xf8).w(this, FUNC(abc1600_mover_device::ldsy_lb_w));
+ map(0x04, 0x04).mirror(0xf8).w(this, FUNC(abc1600_mover_device::ldtx_hb_w));
+ map(0x05, 0x05).mirror(0xf8).w(this, FUNC(abc1600_mover_device::ldtx_lb_w));
+ map(0x06, 0x06).mirror(0xf8).w(this, FUNC(abc1600_mover_device::ldty_hb_w));
+ map(0x07, 0x07).mirror(0xf8).w(this, FUNC(abc1600_mover_device::ldty_lb_w));
+}
+
+void abc1600_mover_device::iowr1_map(address_map &map)
+{
+ map(0x00, 0x00).mirror(0xff).nopr();
+ map(0x00, 0x00).mirror(0xf8).w(this, FUNC(abc1600_mover_device::ldfx_hb_w));
+ map(0x01, 0x01).mirror(0xf8).w(this, FUNC(abc1600_mover_device::ldfx_lb_w));
+ map(0x02, 0x02).mirror(0xf8).w(this, FUNC(abc1600_mover_device::ldfy_hb_w));
+ map(0x03, 0x03).mirror(0xf8).w(this, FUNC(abc1600_mover_device::ldfy_lb_w));
+ map(0x05, 0x05).mirror(0xf8).w(this, FUNC(abc1600_mover_device::wrml_w));
+ map(0x07, 0x07).mirror(0xf8).w(this, FUNC(abc1600_mover_device::wrdl_w));
+}
+
+void abc1600_mover_device::iowr2_map(address_map &map)
+{
+ map(0x00, 0x00).mirror(0xff).nopr();
+ map(0x00, 0x00).mirror(0xf8).w(this, FUNC(abc1600_mover_device::wrmask_strobe_hb_w));
+ map(0x01, 0x01).mirror(0xf8).w(this, FUNC(abc1600_mover_device::wrmask_strobe_lb_w));
+ map(0x02, 0x02).mirror(0xf8).w(this, FUNC(abc1600_mover_device::enable_clocks_w));
+ map(0x03, 0x03).mirror(0xf8).w(this, FUNC(abc1600_mover_device::flag_strobe_w));
+ map(0x04, 0x04).mirror(0xf8).w(this, FUNC(abc1600_mover_device::endisp_w));
+}
+
+
+void abc1600_mover_device::mover_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram();
+}
//-------------------------------------------------
diff --git a/src/mame/video/c45.cpp b/src/mame/video/c45.cpp
index 215ce7b92a9..eb77aaa8215 100644
--- a/src/mame/video/c45.cpp
+++ b/src/mame/video/c45.cpp
@@ -65,11 +65,12 @@ GFXDECODE_MEMBER( namco_c45_road_device::gfxinfo )
GFXDECODE_END
-ADDRESS_MAP_START(namco_c45_road_device::map)
- AM_RANGE(0x00000, 0x0ffff) AM_RAM_WRITE(tilemap_w) AM_SHARE("tmapram")
- AM_RANGE(0x10000, 0x1f9ff) AM_RAM_WRITE(tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x1fa00, 0x1ffff) AM_RAM AM_SHARE("lineram")
-ADDRESS_MAP_END
+void namco_c45_road_device::map(address_map &map)
+{
+ map(0x00000, 0x0ffff).ram().w(this, FUNC(namco_c45_road_device::tilemap_w)).share("tmapram");
+ map(0x10000, 0x1f9ff).ram().w(this, FUNC(namco_c45_road_device::tileram_w)).share("tileram");
+ map(0x1fa00, 0x1ffff).ram().share("lineram");
+}
//-------------------------------------------------
diff --git a/src/mame/video/gamate.cpp b/src/mame/video/gamate.cpp
index df216499478..05e861acaae 100644
--- a/src/mame/video/gamate.cpp
+++ b/src/mame/video/gamate.cpp
@@ -31,19 +31,21 @@
DEFINE_DEVICE_TYPE(GAMATE_VIDEO, gamate_video_device, "gamate_vid", "Gamate Video Hardware")
-ADDRESS_MAP_START(gamate_video_device::regs_map)
- AM_RANGE(0x01,0x01) AM_WRITE(lcdcon_w)
- AM_RANGE(0x02,0x02) AM_WRITE(xscroll_w)
- AM_RANGE(0x03,0x03) AM_WRITE(yscroll_w)
- AM_RANGE(0x04,0x04) AM_WRITE(xpos_w)
- AM_RANGE(0x05,0x05) AM_WRITE(ypos_w)
- AM_RANGE(0x06,0x06) AM_READ(vram_r)
- AM_RANGE(0x07,0x07) AM_WRITE(vram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gamate_video_device::vram_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("vram") // 2x 8KB SRAMs
-ADDRESS_MAP_END
+void gamate_video_device::regs_map(address_map &map)
+{
+ map(0x01, 0x01).w(this, FUNC(gamate_video_device::lcdcon_w));
+ map(0x02, 0x02).w(this, FUNC(gamate_video_device::xscroll_w));
+ map(0x03, 0x03).w(this, FUNC(gamate_video_device::yscroll_w));
+ map(0x04, 0x04).w(this, FUNC(gamate_video_device::xpos_w));
+ map(0x05, 0x05).w(this, FUNC(gamate_video_device::ypos_w));
+ map(0x06, 0x06).r(this, FUNC(gamate_video_device::vram_r));
+ map(0x07, 0x07).w(this, FUNC(gamate_video_device::vram_w));
+}
+
+void gamate_video_device::vram_map(address_map &map)
+{
+ map(0x0000, 0x3fff).ram().share("vram"); // 2x 8KB SRAMs
+}
gamate_video_device::gamate_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, GAMATE_VIDEO, tag, owner, clock),
diff --git a/src/mame/video/gp9001.cpp b/src/mame/video/gp9001.cpp
index b4e576a015c..4e876c6c67f 100644
--- a/src/mame/video/gp9001.cpp
+++ b/src/mame/video/gp9001.cpp
@@ -173,13 +173,14 @@ WRITE16_MEMBER(gp9001vdp_device::top_tmap_w)
}
-ADDRESS_MAP_START(gp9001vdp_device::map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(bg_tmap_w) AM_SHARE("vram_bg")
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(fg_tmap_w) AM_SHARE("vram_fg")
- AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(top_tmap_w) AM_SHARE("vram_top")
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") AM_MIRROR(0x0800)
+void gp9001vdp_device::map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().w(this, FUNC(gp9001vdp_device::bg_tmap_w)).share("vram_bg");
+ map(0x1000, 0x1fff).ram().w(this, FUNC(gp9001vdp_device::fg_tmap_w)).share("vram_fg");
+ map(0x2000, 0x2fff).ram().w(this, FUNC(gp9001vdp_device::top_tmap_w)).share("vram_top");
+ map(0x3000, 0x37ff).ram().share("spriteram").mirror(0x0800);
// AM_RANGE(0x3800, 0x3fff) AM_RAM // sprite mirror?
-ADDRESS_MAP_END
+}
const gfx_layout gp9001vdp_device::tilelayout =
diff --git a/src/mame/video/igs017_igs031.cpp b/src/mame/video/igs017_igs031.cpp
index 9af3e93b9c2..ce3be5514aa 100644
--- a/src/mame/video/igs017_igs031.cpp
+++ b/src/mame/video/igs017_igs031.cpp
@@ -28,22 +28,23 @@ all the known IGS017 / IGS031 games use the following memory map, is the IGS017
-ADDRESS_MAP_START(igs017_igs031_device::map)
- AM_RANGE( 0x1000, 0x17ff ) AM_RAM AM_SHARE("spriteram")
+void igs017_igs031_device::map(address_map &map)
+{
+ map(0x1000, 0x17ff).ram().share("spriteram");
// AM_RANGE( 0x1800, 0x1bff ) AM_RAM //_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
- AM_RANGE( 0x1800, 0x1bff ) AM_RAM_WRITE(palram_w) AM_SHARE("palram")
- AM_RANGE( 0x1c00, 0x1fff ) AM_RAM
+ map(0x1800, 0x1bff).ram().w(this, FUNC(igs017_igs031_device::palram_w)).share("palram");
+ map(0x1c00, 0x1fff).ram();
- AM_RANGE( 0x2010, 0x2013 ) AM_READ(i8255_r)
- AM_RANGE( 0x2012, 0x2012 ) AM_WRITE(video_disable_w )
+ map(0x2010, 0x2013).r(this, FUNC(igs017_igs031_device::i8255_r));
+ map(0x2012, 0x2012).w(this, FUNC(igs017_igs031_device::video_disable_w));
- AM_RANGE( 0x2014, 0x2014 ) AM_WRITE(nmi_enable_w )
- AM_RANGE( 0x2015, 0x2015 ) AM_WRITE(irq_enable_w )
+ map(0x2014, 0x2014).w(this, FUNC(igs017_igs031_device::nmi_enable_w));
+ map(0x2015, 0x2015).w(this, FUNC(igs017_igs031_device::irq_enable_w));
- AM_RANGE( 0x4000, 0x5fff ) AM_RAM_WRITE(fg_w ) AM_SHARE("fg_videoram")
- AM_RANGE( 0x6000, 0x7fff ) AM_RAM_WRITE(bg_w ) AM_SHARE("bg_videoram")
+ map(0x4000, 0x5fff).ram().w(this, FUNC(igs017_igs031_device::fg_w)).share("fg_videoram");
+ map(0x6000, 0x7fff).ram().w(this, FUNC(igs017_igs031_device::bg_w)).share("bg_videoram");
-ADDRESS_MAP_END
+}
READ8_MEMBER(igs017_igs031_device::i8255_r)
{
diff --git a/src/mame/video/kaneko_grap2.cpp b/src/mame/video/kaneko_grap2.cpp
index 5ec64cb0008..d78383e0e8d 100644
--- a/src/mame/video/kaneko_grap2.cpp
+++ b/src/mame/video/kaneko_grap2.cpp
@@ -14,22 +14,23 @@
#include "emu.h"
#include "kaneko_grap2.h"
-ADDRESS_MAP_START(kaneko_grap2_device::grap2_map)
- AM_RANGE(0x000000, 0x0003ff) AM_READWRITE(unk1_r, unk1_w)
- AM_RANGE(0x000400, 0x000401) AM_WRITE(framebuffer1_scrollx_w)
- AM_RANGE(0x000800, 0x000bff) AM_READWRITE(unk2_r, unk2_w)
- AM_RANGE(0x000c00, 0x000c01) AM_WRITE(framebuffer1_scrolly_w)
- AM_RANGE(0x000c02, 0x000c03) AM_WRITE(framebuffer1_enable_w)
- AM_RANGE(0x000c06, 0x000c07) AM_WRITE(framebuffer1_bgcol_w)
- AM_RANGE(0x000c10, 0x000c11) AM_READWRITE(framebuffer1_fbbright1_r, framebuffer1_fbbright1_w )
- AM_RANGE(0x000c12, 0x000c13) AM_READWRITE(framebuffer1_fbbright2_r, framebuffer1_fbbright2_w )
- AM_RANGE(0x000c18, 0x000c1b) AM_WRITE(regs1_address_w)
- AM_RANGE(0x000c1c, 0x000c1d) AM_WRITE(regs2_w)
- AM_RANGE(0x000c1e, 0x000c1f) AM_WRITE(regs1_go_w)
- AM_RANGE(0x000c00, 0x000c1f) AM_READ(regs1_r)
- AM_RANGE(0x080000, 0x0801ff) AM_READWRITE( pal_r, framebuffer1_palette_w )
- AM_RANGE(0x100000, 0x17ffff) AM_READWRITE( framebuffer_r, framebuffer_w )
-ADDRESS_MAP_END
+void kaneko_grap2_device::grap2_map(address_map &map)
+{
+ map(0x000000, 0x0003ff).rw(this, FUNC(kaneko_grap2_device::unk1_r), FUNC(kaneko_grap2_device::unk1_w));
+ map(0x000400, 0x000401).w(this, FUNC(kaneko_grap2_device::framebuffer1_scrollx_w));
+ map(0x000800, 0x000bff).rw(this, FUNC(kaneko_grap2_device::unk2_r), FUNC(kaneko_grap2_device::unk2_w));
+ map(0x000c00, 0x000c01).w(this, FUNC(kaneko_grap2_device::framebuffer1_scrolly_w));
+ map(0x000c02, 0x000c03).w(this, FUNC(kaneko_grap2_device::framebuffer1_enable_w));
+ map(0x000c06, 0x000c07).w(this, FUNC(kaneko_grap2_device::framebuffer1_bgcol_w));
+ map(0x000c10, 0x000c11).rw(this, FUNC(kaneko_grap2_device::framebuffer1_fbbright1_r), FUNC(kaneko_grap2_device::framebuffer1_fbbright1_w));
+ map(0x000c12, 0x000c13).rw(this, FUNC(kaneko_grap2_device::framebuffer1_fbbright2_r), FUNC(kaneko_grap2_device::framebuffer1_fbbright2_w));
+ map(0x000c18, 0x000c1b).w(this, FUNC(kaneko_grap2_device::regs1_address_w));
+ map(0x000c1c, 0x000c1d).w(this, FUNC(kaneko_grap2_device::regs2_w));
+ map(0x000c1e, 0x000c1f).w(this, FUNC(kaneko_grap2_device::regs1_go_w));
+ map(0x000c00, 0x000c1f).r(this, FUNC(kaneko_grap2_device::regs1_r));
+ map(0x080000, 0x0801ff).rw(this, FUNC(kaneko_grap2_device::pal_r), FUNC(kaneko_grap2_device::framebuffer1_palette_w));
+ map(0x100000, 0x17ffff).rw(this, FUNC(kaneko_grap2_device::framebuffer_r), FUNC(kaneko_grap2_device::framebuffer_w));
+}
DEFINE_DEVICE_TYPE(KANEKO_GRAP2, kaneko_grap2_device, "kaneko_grap2", "Kaneko GRAP2")
diff --git a/src/mame/video/nick.cpp b/src/mame/video/nick.cpp
index 4eb50551d9a..1f9f6ca3205 100644
--- a/src/mame/video/nick.cpp
+++ b/src/mame/video/nick.cpp
@@ -76,21 +76,24 @@
DEFINE_DEVICE_TYPE(NICK, nick_device, "nick", "NICK")
-ADDRESS_MAP_START(nick_device::vram_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(vram_r, vram_w)
-ADDRESS_MAP_END
+void nick_device::vram_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(nick_device::vram_r), FUNC(nick_device::vram_w));
+}
-ADDRESS_MAP_START(nick_device::vio_map)
- AM_RANGE(0x00, 0x00) AM_WRITE(fixbias_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(border_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(lpl_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(lph_w)
-ADDRESS_MAP_END
+void nick_device::vio_map(address_map &map)
+{
+ map(0x00, 0x00).w(this, FUNC(nick_device::fixbias_w));
+ map(0x01, 0x01).w(this, FUNC(nick_device::border_w));
+ map(0x02, 0x02).w(this, FUNC(nick_device::lpl_w));
+ map(0x03, 0x03).w(this, FUNC(nick_device::lph_w));
+}
-ADDRESS_MAP_START(nick_device::nick_map)
- AM_RANGE(0x0000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void nick_device::nick_map(address_map &map)
+{
+ map(0x0000, 0xffff).ram();
+}
diff --git a/src/mame/video/pc8401a.cpp b/src/mame/video/pc8401a.cpp
index 13922922a7a..0fe16b3ee9f 100644
--- a/src/mame/video/pc8401a.cpp
+++ b/src/mame/video/pc8401a.cpp
@@ -49,10 +49,11 @@ void pc8401a_state::pc8401a_lcdc(address_map &map)
map(0x0000, 0x1fff).ram();
}
-ADDRESS_MAP_START(pc8401a_state::pc8500_lcdc)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x3fff) AM_RAM
-ADDRESS_MAP_END
+void pc8401a_state::pc8500_lcdc(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x3fff).ram();
+}
/* Machine Drivers */
diff --git a/src/mame/video/pc_t1t.cpp b/src/mame/video/pc_t1t.cpp
index f54d6ac03a3..05e9835ffc5 100644
--- a/src/mame/video/pc_t1t.cpp
+++ b/src/mame/video/pc_t1t.cpp
@@ -110,10 +110,11 @@ void pcvideo_pcjr_device::device_start()
***************************************************************************/
-ADDRESS_MAP_START(pc_t1t_device::vram_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x20000, 0x3ffff) AM_NOP
-ADDRESS_MAP_END
+void pc_t1t_device::vram_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x20000, 0x3ffff).noprw();
+}
MACHINE_CONFIG_START(pcvideo_t1000_device::device_add_mconfig)
MCFG_SCREEN_ADD(T1000_SCREEN_NAME, RASTER)
diff --git a/src/mame/video/pcd.cpp b/src/mame/video/pcd.cpp
index 8f1f9bf6817..29b24637d68 100644
--- a/src/mame/video/pcd.cpp
+++ b/src/mame/video/pcd.cpp
@@ -429,12 +429,13 @@ void pcd_video_device::device_reset()
m_t1 = CLEAR_LINE;
}
-ADDRESS_MAP_START(pcd_video_device::map)
- AM_RANGE(0x00, 0x0f) AM_DEVWRITE8("crtc", scn2674_device, write, 0x00ff)
- AM_RANGE(0x00, 0x0f) AM_DEVREAD8("crtc", scn2674_device, read, 0xff00)
- AM_RANGE(0x20, 0x21) AM_WRITE8(vram_sw_w, 0x00ff)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE8("graphics", i8741_device, upi41_master_r, upi41_master_w, 0x00ff)
-ADDRESS_MAP_END
+void pcd_video_device::map(address_map &map)
+{
+ map(0x00, 0x0f).w("crtc", FUNC(scn2674_device::write)).umask16(0x00ff);
+ map(0x00, 0x0f).r("crtc", FUNC(scn2674_device::read)).umask16(0xff00);
+ map(0x20, 0x20).w(this, FUNC(pcd_video_device::vram_sw_w));
+ map(0x30, 0x33).rw("graphics", FUNC(i8741_device::upi41_master_r), FUNC(i8741_device::upi41_master_w)).umask16(0x00ff);
+}
void pcx_video_device::device_start()
{
@@ -457,9 +458,10 @@ void pcx_video_device::device_reset()
m_txd_handler(1);
}
-ADDRESS_MAP_START(pcx_video_device::map)
- AM_RANGE(0x0, 0xf) AM_READWRITE8(term_r, term_w, 0xffff)
-ADDRESS_MAP_END
+void pcx_video_device::map(address_map &map)
+{
+ map(0x0, 0xf).rw(this, FUNC(pcx_video_device::term_r), FUNC(pcx_video_device::term_w));
+}
READ8_MEMBER(pcx_video_device::rx_callback)
{
diff --git a/src/mame/video/powervr2.cpp b/src/mame/video/powervr2.cpp
index dc34a292c49..0ee20a83094 100644
--- a/src/mame/video/powervr2.cpp
+++ b/src/mame/video/powervr2.cpp
@@ -15,33 +15,34 @@
DEFINE_DEVICE_TYPE(POWERVR2, powervr2_device, "powervr2", "PowerVR 2")
-ADDRESS_MAP_START(powervr2_device::ta_map)
- AM_RANGE(0x0000, 0x0003) AM_READ( id_r)
- AM_RANGE(0x0004, 0x0007) AM_READ( revision_r)
- AM_RANGE(0x0008, 0x000b) AM_READWRITE(softreset_r, softreset_w)
- AM_RANGE(0x0014, 0x0017) AM_WRITE( startrender_w)
+void powervr2_device::ta_map(address_map &map)
+{
+ map(0x0000, 0x0003).r(this, FUNC(powervr2_device::id_r));
+ map(0x0004, 0x0007).r(this, FUNC(powervr2_device::revision_r));
+ map(0x0008, 0x000b).rw(this, FUNC(powervr2_device::softreset_r), FUNC(powervr2_device::softreset_w));
+ map(0x0014, 0x0017).w(this, FUNC(powervr2_device::startrender_w));
// 18 = test select
- AM_RANGE(0x0020, 0x0023) AM_READWRITE(param_base_r, param_base_w)
- AM_RANGE(0x002c, 0x002f) AM_READWRITE(region_base_r, region_base_w)
+ map(0x0020, 0x0023).rw(this, FUNC(powervr2_device::param_base_r), FUNC(powervr2_device::param_base_w));
+ map(0x002c, 0x002f).rw(this, FUNC(powervr2_device::region_base_r), FUNC(powervr2_device::region_base_w));
// 30 = span sort cfg
- AM_RANGE(0x0040, 0x0043) AM_READWRITE(vo_border_col_r, vo_border_col_w)
- AM_RANGE(0x0044, 0x0047) AM_READWRITE(fb_r_ctrl_r, fb_r_ctrl_w)
- AM_RANGE(0x0048, 0x004b) AM_READWRITE(fb_w_ctrl_r, fb_w_ctrl_w)
- AM_RANGE(0x004c, 0x004f) AM_READWRITE(fb_w_linestride_r, fb_w_linestride_w)
- AM_RANGE(0x0050, 0x0053) AM_READWRITE(fb_r_sof1_r, fb_r_sof1_w)
- AM_RANGE(0x0054, 0x0057) AM_READWRITE(fb_r_sof2_r, fb_r_sof2_w)
- AM_RANGE(0x005c, 0x005f) AM_READWRITE(fb_r_size_r, fb_r_size_w)
- AM_RANGE(0x0060, 0x0063) AM_READWRITE(fb_w_sof1_r, fb_w_sof1_w)
- AM_RANGE(0x0064, 0x0067) AM_READWRITE(fb_w_sof2_r, fb_w_sof2_w)
- AM_RANGE(0x0068, 0x006b) AM_READWRITE(fb_x_clip_r, fb_x_clip_w)
- AM_RANGE(0x006c, 0x006f) AM_READWRITE(fb_y_clip_r, fb_y_clip_w)
+ map(0x0040, 0x0043).rw(this, FUNC(powervr2_device::vo_border_col_r), FUNC(powervr2_device::vo_border_col_w));
+ map(0x0044, 0x0047).rw(this, FUNC(powervr2_device::fb_r_ctrl_r), FUNC(powervr2_device::fb_r_ctrl_w));
+ map(0x0048, 0x004b).rw(this, FUNC(powervr2_device::fb_w_ctrl_r), FUNC(powervr2_device::fb_w_ctrl_w));
+ map(0x004c, 0x004f).rw(this, FUNC(powervr2_device::fb_w_linestride_r), FUNC(powervr2_device::fb_w_linestride_w));
+ map(0x0050, 0x0053).rw(this, FUNC(powervr2_device::fb_r_sof1_r), FUNC(powervr2_device::fb_r_sof1_w));
+ map(0x0054, 0x0057).rw(this, FUNC(powervr2_device::fb_r_sof2_r), FUNC(powervr2_device::fb_r_sof2_w));
+ map(0x005c, 0x005f).rw(this, FUNC(powervr2_device::fb_r_size_r), FUNC(powervr2_device::fb_r_size_w));
+ map(0x0060, 0x0063).rw(this, FUNC(powervr2_device::fb_w_sof1_r), FUNC(powervr2_device::fb_w_sof1_w));
+ map(0x0064, 0x0067).rw(this, FUNC(powervr2_device::fb_w_sof2_r), FUNC(powervr2_device::fb_w_sof2_w));
+ map(0x0068, 0x006b).rw(this, FUNC(powervr2_device::fb_x_clip_r), FUNC(powervr2_device::fb_x_clip_w));
+ map(0x006c, 0x006f).rw(this, FUNC(powervr2_device::fb_y_clip_r), FUNC(powervr2_device::fb_y_clip_w));
// 74 = fpu_shad_scale
// 78 = fpu_cull_val
- AM_RANGE(0x007c, 0x007f) AM_READWRITE(fpu_param_cfg_r, fpu_param_cfg_w)
+ map(0x007c, 0x007f).rw(this, FUNC(powervr2_device::fpu_param_cfg_r), FUNC(powervr2_device::fpu_param_cfg_w));
// 80 = half_offset
// 84 = fpu_perp_val
// 88 = isp_backgnd_d
- AM_RANGE(0x008c, 0x008f) AM_READWRITE(isp_backgnd_t_r, isp_backgnd_t_w)
+ map(0x008c, 0x008f).rw(this, FUNC(powervr2_device::isp_backgnd_t_r), FUNC(powervr2_device::isp_backgnd_t_w));
// 98 = isp_feed_cfg
// a0 = sdram_refresh
// a4 = sdram_arb_cfg
@@ -52,53 +53,54 @@ ADDRESS_MAP_START(powervr2_device::ta_map)
// bc = fog_clamp_max
// c0 = fog_clamp_min
// c4 = spg_trigger_pos
- AM_RANGE(0x00c8, 0x00cb) AM_READWRITE(spg_hblank_int_r, spg_hblank_int_w)
- AM_RANGE(0x00cc, 0x00cf) AM_READWRITE(spg_vblank_int_r, spg_vblank_int_w)
- AM_RANGE(0x00d0, 0x00d3) AM_READWRITE(spg_control_r, spg_control_w)
- AM_RANGE(0x00d4, 0x00d7) AM_READWRITE(spg_hblank_r, spg_hblank_w)
- AM_RANGE(0x00d8, 0x00db) AM_READWRITE(spg_load_r, spg_load_w)
- AM_RANGE(0x00dc, 0x00df) AM_READWRITE(spg_vblank_r, spg_vblank_w)
- AM_RANGE(0x00e0, 0x00e3) AM_READWRITE(spg_width_r, spg_width_w)
- AM_RANGE(0x00e4, 0x00e7) AM_READWRITE(text_control_r, text_control_w)
- AM_RANGE(0x00e8, 0x00eb) AM_READWRITE(vo_control_r, vo_control_w)
- AM_RANGE(0x00ec, 0x00ef) AM_READWRITE(vo_startx_r, vo_startx_w)
- AM_RANGE(0x00f0, 0x00f3) AM_READWRITE(vo_starty_r, vo_starty_w)
+ map(0x00c8, 0x00cb).rw(this, FUNC(powervr2_device::spg_hblank_int_r), FUNC(powervr2_device::spg_hblank_int_w));
+ map(0x00cc, 0x00cf).rw(this, FUNC(powervr2_device::spg_vblank_int_r), FUNC(powervr2_device::spg_vblank_int_w));
+ map(0x00d0, 0x00d3).rw(this, FUNC(powervr2_device::spg_control_r), FUNC(powervr2_device::spg_control_w));
+ map(0x00d4, 0x00d7).rw(this, FUNC(powervr2_device::spg_hblank_r), FUNC(powervr2_device::spg_hblank_w));
+ map(0x00d8, 0x00db).rw(this, FUNC(powervr2_device::spg_load_r), FUNC(powervr2_device::spg_load_w));
+ map(0x00dc, 0x00df).rw(this, FUNC(powervr2_device::spg_vblank_r), FUNC(powervr2_device::spg_vblank_w));
+ map(0x00e0, 0x00e3).rw(this, FUNC(powervr2_device::spg_width_r), FUNC(powervr2_device::spg_width_w));
+ map(0x00e4, 0x00e7).rw(this, FUNC(powervr2_device::text_control_r), FUNC(powervr2_device::text_control_w));
+ map(0x00e8, 0x00eb).rw(this, FUNC(powervr2_device::vo_control_r), FUNC(powervr2_device::vo_control_w));
+ map(0x00ec, 0x00ef).rw(this, FUNC(powervr2_device::vo_startx_r), FUNC(powervr2_device::vo_startx_w));
+ map(0x00f0, 0x00f3).rw(this, FUNC(powervr2_device::vo_starty_r), FUNC(powervr2_device::vo_starty_w));
// f4 = scaler_ctl
- AM_RANGE(0x0108, 0x010b) AM_READWRITE(pal_ram_ctrl_r, pal_ram_ctrl_w)
- AM_RANGE(0x010c, 0x010f) AM_READ( spg_status_r)
+ map(0x0108, 0x010b).rw(this, FUNC(powervr2_device::pal_ram_ctrl_r), FUNC(powervr2_device::pal_ram_ctrl_w));
+ map(0x010c, 0x010f).r(this, FUNC(powervr2_device::spg_status_r));
// 110 = fb_burstctrl
// 118 = y_coeff
// 11c = pt_alpha_ref
- AM_RANGE(0x0124, 0x0127) AM_READWRITE(ta_ol_base_r, ta_ol_base_w)
- AM_RANGE(0x0128, 0x012b) AM_READWRITE(ta_isp_base_r, ta_isp_base_w)
- AM_RANGE(0x012c, 0x012f) AM_READWRITE(ta_ol_limit_r, ta_ol_limit_w)
- AM_RANGE(0x0130, 0x0133) AM_READWRITE(ta_isp_limit_r, ta_isp_limit_w)
- AM_RANGE(0x0134, 0x0137) AM_READ( ta_next_opb_r)
- AM_RANGE(0x0138, 0x013b) AM_READ( ta_itp_current_r)
+ map(0x0124, 0x0127).rw(this, FUNC(powervr2_device::ta_ol_base_r), FUNC(powervr2_device::ta_ol_base_w));
+ map(0x0128, 0x012b).rw(this, FUNC(powervr2_device::ta_isp_base_r), FUNC(powervr2_device::ta_isp_base_w));
+ map(0x012c, 0x012f).rw(this, FUNC(powervr2_device::ta_ol_limit_r), FUNC(powervr2_device::ta_ol_limit_w));
+ map(0x0130, 0x0133).rw(this, FUNC(powervr2_device::ta_isp_limit_r), FUNC(powervr2_device::ta_isp_limit_w));
+ map(0x0134, 0x0137).r(this, FUNC(powervr2_device::ta_next_opb_r));
+ map(0x0138, 0x013b).r(this, FUNC(powervr2_device::ta_itp_current_r));
// 13c = ta_glob_tile_clip
- AM_RANGE(0x0140, 0x0143) AM_READWRITE(ta_alloc_ctrl_r, ta_alloc_ctrl_w)
- AM_RANGE(0x0144, 0x0147) AM_READWRITE(ta_list_init_r, ta_list_init_w)
- AM_RANGE(0x0148, 0x014b) AM_READWRITE(ta_yuv_tex_base_r, ta_yuv_tex_base_w)
- AM_RANGE(0x014c, 0x014f) AM_READWRITE(ta_yuv_tex_ctrl_r, ta_yuv_tex_ctrl_w)
- AM_RANGE(0x0150, 0x0153) AM_READWRITE(ta_yuv_tex_cnt_r, ta_yuv_tex_cnt_w)
- AM_RANGE(0x0160, 0x0163) AM_WRITE( ta_list_cont_w)
- AM_RANGE(0x0164, 0x0167) AM_READWRITE(ta_next_opb_init_r, ta_next_opb_init_w)
-
- AM_RANGE(0x0200, 0x03ff) AM_READWRITE(fog_table_r, fog_table_w)
- AM_RANGE(0x1000, 0x1fff) AM_READWRITE(palette_r, palette_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(powervr2_device::pd_dma_map)
- AM_RANGE(0x00, 0x03) AM_READWRITE(sb_pdstap_r, sb_pdstap_w)
- AM_RANGE(0x04, 0x07) AM_READWRITE(sb_pdstar_r, sb_pdstar_w)
- AM_RANGE(0x08, 0x0b) AM_READWRITE(sb_pdlen_r, sb_pdlen_w)
- AM_RANGE(0x0c, 0x0f) AM_READWRITE(sb_pddir_r, sb_pddir_w)
- AM_RANGE(0x10, 0x13) AM_READWRITE(sb_pdtsel_r, sb_pdtsel_w)
- AM_RANGE(0x14, 0x17) AM_READWRITE(sb_pden_r, sb_pden_w)
- AM_RANGE(0x18, 0x1b) AM_READWRITE(sb_pdst_r, sb_pdst_w)
- AM_RANGE(0x80, 0x83) AM_READWRITE(sb_pdapro_r, sb_pdapro_w)
-ADDRESS_MAP_END
+ map(0x0140, 0x0143).rw(this, FUNC(powervr2_device::ta_alloc_ctrl_r), FUNC(powervr2_device::ta_alloc_ctrl_w));
+ map(0x0144, 0x0147).rw(this, FUNC(powervr2_device::ta_list_init_r), FUNC(powervr2_device::ta_list_init_w));
+ map(0x0148, 0x014b).rw(this, FUNC(powervr2_device::ta_yuv_tex_base_r), FUNC(powervr2_device::ta_yuv_tex_base_w));
+ map(0x014c, 0x014f).rw(this, FUNC(powervr2_device::ta_yuv_tex_ctrl_r), FUNC(powervr2_device::ta_yuv_tex_ctrl_w));
+ map(0x0150, 0x0153).rw(this, FUNC(powervr2_device::ta_yuv_tex_cnt_r), FUNC(powervr2_device::ta_yuv_tex_cnt_w));
+ map(0x0160, 0x0163).w(this, FUNC(powervr2_device::ta_list_cont_w));
+ map(0x0164, 0x0167).rw(this, FUNC(powervr2_device::ta_next_opb_init_r), FUNC(powervr2_device::ta_next_opb_init_w));
+
+ map(0x0200, 0x03ff).rw(this, FUNC(powervr2_device::fog_table_r), FUNC(powervr2_device::fog_table_w));
+ map(0x1000, 0x1fff).rw(this, FUNC(powervr2_device::palette_r), FUNC(powervr2_device::palette_w));
+}
+
+void powervr2_device::pd_dma_map(address_map &map)
+{
+ map(0x00, 0x03).rw(this, FUNC(powervr2_device::sb_pdstap_r), FUNC(powervr2_device::sb_pdstap_w));
+ map(0x04, 0x07).rw(this, FUNC(powervr2_device::sb_pdstar_r), FUNC(powervr2_device::sb_pdstar_w));
+ map(0x08, 0x0b).rw(this, FUNC(powervr2_device::sb_pdlen_r), FUNC(powervr2_device::sb_pdlen_w));
+ map(0x0c, 0x0f).rw(this, FUNC(powervr2_device::sb_pddir_r), FUNC(powervr2_device::sb_pddir_w));
+ map(0x10, 0x13).rw(this, FUNC(powervr2_device::sb_pdtsel_r), FUNC(powervr2_device::sb_pdtsel_w));
+ map(0x14, 0x17).rw(this, FUNC(powervr2_device::sb_pden_r), FUNC(powervr2_device::sb_pden_w));
+ map(0x18, 0x1b).rw(this, FUNC(powervr2_device::sb_pdst_r), FUNC(powervr2_device::sb_pdst_w));
+ map(0x80, 0x83).rw(this, FUNC(powervr2_device::sb_pdapro_r), FUNC(powervr2_device::sb_pdapro_w));
+}
const int powervr2_device::pvr_parconfseq[] = {1,2,3,2,3,4,5,6,5,6,7,8,9,10,11,12,13,14,13,14,15,16,17,16,17,0,0,0,0,0,18,19,20,19,20,21,22,23,22,23};
const int powervr2_device::pvr_wordsvertex[24] = {8,8,8,8,8,16,16,8,8,8, 8, 8,8,8,8,8,16,16, 8,16,16,8,16,16};
diff --git a/src/mame/video/seibu_crtc.cpp b/src/mame/video/seibu_crtc.cpp
index ef8781a8745..fc3999c10d9 100644
--- a/src/mame/video/seibu_crtc.cpp
+++ b/src/mame/video/seibu_crtc.cpp
@@ -215,14 +215,15 @@ List of default vregs (title screen):
// device type definition
DEFINE_DEVICE_TYPE(SEIBU_CRTC, seibu_crtc_device, "seibu_crtc", "Seibu CRT Controller")
-ADDRESS_MAP_START(seibu_crtc_device::seibu_crtc_vregs)
- AM_RANGE(0x0000, 0x004f) AM_RAM // debug
- AM_RANGE(0x0014, 0x0015) AM_WRITE(decrypt_key_w)
- AM_RANGE(0x001a, 0x001b) AM_READWRITE(reg_1a_r, reg_1a_w)
- AM_RANGE(0x001c, 0x001d) AM_WRITE(layer_en_w)
- AM_RANGE(0x0020, 0x002b) AM_WRITE(layer_scroll_w)
- AM_RANGE(0x002c, 0x003b) AM_WRITE(layer_scroll_base_w)
-ADDRESS_MAP_END
+void seibu_crtc_device::seibu_crtc_vregs(address_map &map)
+{
+ map(0x0000, 0x004f).ram(); // debug
+ map(0x0014, 0x0015).w(this, FUNC(seibu_crtc_device::decrypt_key_w));
+ map(0x001a, 0x001b).rw(this, FUNC(seibu_crtc_device::reg_1a_r), FUNC(seibu_crtc_device::reg_1a_w));
+ map(0x001c, 0x001d).w(this, FUNC(seibu_crtc_device::layer_en_w));
+ map(0x0020, 0x002b).w(this, FUNC(seibu_crtc_device::layer_scroll_w));
+ map(0x002c, 0x003b).w(this, FUNC(seibu_crtc_device::layer_scroll_base_w));
+}
WRITE16_MEMBER(seibu_crtc_device::decrypt_key_w)
{
diff --git a/src/mame/video/wpc_dmd.cpp b/src/mame/video/wpc_dmd.cpp
index cee4887a7da..8558ecc4b32 100644
--- a/src/mame/video/wpc_dmd.cpp
+++ b/src/mame/video/wpc_dmd.cpp
@@ -7,16 +7,17 @@
DEFINE_DEVICE_TYPE(WPC_DMD, wpc_dmd_device, "wpc_dmd", "Williams Pinball Controller Dot Matrix Display")
-ADDRESS_MAP_START(wpc_dmd_device::registers)
- AM_RANGE(0, 0) AM_WRITE(bank2_w)
- AM_RANGE(1, 1) AM_WRITE(bank0_w)
- AM_RANGE(2, 2) AM_WRITE(bank6_w)
- AM_RANGE(3, 3) AM_WRITE(bank4_w)
- AM_RANGE(4, 4) AM_WRITE(banka_w)
- AM_RANGE(5, 5) AM_WRITE(firq_scanline_w)
- AM_RANGE(6, 6) AM_WRITE(bank8_w)
- AM_RANGE(7, 7) AM_WRITE(visible_page_w)
-ADDRESS_MAP_END
+void wpc_dmd_device::registers(address_map &map)
+{
+ map(0, 0).w(this, FUNC(wpc_dmd_device::bank2_w));
+ map(1, 1).w(this, FUNC(wpc_dmd_device::bank0_w));
+ map(2, 2).w(this, FUNC(wpc_dmd_device::bank6_w));
+ map(3, 3).w(this, FUNC(wpc_dmd_device::bank4_w));
+ map(4, 4).w(this, FUNC(wpc_dmd_device::banka_w));
+ map(5, 5).w(this, FUNC(wpc_dmd_device::firq_scanline_w));
+ map(6, 6).w(this, FUNC(wpc_dmd_device::bank8_w));
+ map(7, 7).w(this, FUNC(wpc_dmd_device::visible_page_w));
+}
wpc_dmd_device::wpc_dmd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
diff --git a/src/mame/video/ygv608.cpp b/src/mame/video/ygv608.cpp
index 7eca917fafc..6f0a3866532 100644
--- a/src/mame/video/ygv608.cpp
+++ b/src/mame/video/ygv608.cpp
@@ -248,47 +248,48 @@ GFXDECODE_END
***************************************/
// we use decimals here to match documentation
-ADDRESS_MAP_START(ygv608_device::regs_map)
+void ygv608_device::regs_map(address_map &map)
+{
// address pointers
- AM_RANGE( 0, 0) AM_READWRITE(pattern_name_table_y_r,pattern_name_table_y_w)
- AM_RANGE( 1, 1) AM_READWRITE(pattern_name_table_x_r,pattern_name_table_x_w)
+ map(0, 0).rw(this, FUNC(ygv608_device::pattern_name_table_y_r), FUNC(ygv608_device::pattern_name_table_y_w));
+ map(1, 1).rw(this, FUNC(ygv608_device::pattern_name_table_x_r), FUNC(ygv608_device::pattern_name_table_x_w));
- AM_RANGE( 2, 2) AM_READWRITE(ram_access_ctrl_r,ram_access_ctrl_w)
+ map(2, 2).rw(this, FUNC(ygv608_device::ram_access_ctrl_r), FUNC(ygv608_device::ram_access_ctrl_w));
- AM_RANGE( 3, 3) AM_READWRITE(sprite_address_r,sprite_address_w)
- AM_RANGE( 4, 4) AM_READWRITE(scroll_address_r,scroll_address_w)
- AM_RANGE( 5, 5) AM_READWRITE(palette_address_r,palette_address_w)
- AM_RANGE( 6, 6) AM_READWRITE(sprite_bank_r,sprite_bank_w)
+ map(3, 3).rw(this, FUNC(ygv608_device::sprite_address_r), FUNC(ygv608_device::sprite_address_w));
+ map(4, 4).rw(this, FUNC(ygv608_device::scroll_address_r), FUNC(ygv608_device::scroll_address_w));
+ map(5, 5).rw(this, FUNC(ygv608_device::palette_address_r), FUNC(ygv608_device::palette_address_w));
+ map(6, 6).rw(this, FUNC(ygv608_device::sprite_bank_r), FUNC(ygv608_device::sprite_bank_w));
// screen control
- AM_RANGE( 7, 7) AM_READWRITE(screen_ctrl_7_r, screen_ctrl_7_w)
- AM_RANGE( 8, 8) AM_READWRITE(screen_ctrl_8_r, screen_ctrl_8_w)
- AM_RANGE( 9, 9) AM_READWRITE(screen_ctrl_9_r, screen_ctrl_9_w)
- AM_RANGE(10, 10) AM_READWRITE(screen_ctrl_10_r, screen_ctrl_10_w)
- AM_RANGE(11, 11) AM_READWRITE(screen_ctrl_11_r, screen_ctrl_11_w)
- AM_RANGE(12, 12) AM_READWRITE(screen_ctrl_12_r, screen_ctrl_12_w)
-
- AM_RANGE(13, 13) AM_WRITE(border_color_w)
+ map(7, 7).rw(this, FUNC(ygv608_device::screen_ctrl_7_r), FUNC(ygv608_device::screen_ctrl_7_w));
+ map(8, 8).rw(this, FUNC(ygv608_device::screen_ctrl_8_r), FUNC(ygv608_device::screen_ctrl_8_w));
+ map(9, 9).rw(this, FUNC(ygv608_device::screen_ctrl_9_r), FUNC(ygv608_device::screen_ctrl_9_w));
+ map(10, 10).rw(this, FUNC(ygv608_device::screen_ctrl_10_r), FUNC(ygv608_device::screen_ctrl_10_w));
+ map(11, 11).rw(this, FUNC(ygv608_device::screen_ctrl_11_r), FUNC(ygv608_device::screen_ctrl_11_w));
+ map(12, 12).rw(this, FUNC(ygv608_device::screen_ctrl_12_r), FUNC(ygv608_device::screen_ctrl_12_w));
+
+ map(13, 13).w(this, FUNC(ygv608_device::border_color_w));
// interrupt section
- AM_RANGE(14, 14) AM_READWRITE(irq_mask_r,irq_mask_w)
- AM_RANGE(15, 16) AM_READWRITE(irq_ctrl_r,irq_ctrl_w)
+ map(14, 14).rw(this, FUNC(ygv608_device::irq_mask_r), FUNC(ygv608_device::irq_mask_w));
+ map(15, 16).rw(this, FUNC(ygv608_device::irq_ctrl_r), FUNC(ygv608_device::irq_ctrl_w));
// base address
- AM_RANGE(17, 24) AM_WRITE(base_address_w)
+ map(17, 24).w(this, FUNC(ygv608_device::base_address_w));
// ROZ parameters
- AM_RANGE(25, 27) AM_WRITE(roz_ax_w)
- AM_RANGE(28, 29) AM_WRITE(roz_dx_w)
- AM_RANGE(30, 31) AM_WRITE(roz_dxy_w)
- AM_RANGE(32, 34) AM_WRITE(roz_ay_w)
- AM_RANGE(35, 36) AM_WRITE(roz_dy_w)
- AM_RANGE(37, 38) AM_WRITE(roz_dyx_w)
+ map(25, 27).w(this, FUNC(ygv608_device::roz_ax_w));
+ map(28, 29).w(this, FUNC(ygv608_device::roz_dx_w));
+ map(30, 31).w(this, FUNC(ygv608_device::roz_dxy_w));
+ map(32, 34).w(this, FUNC(ygv608_device::roz_ay_w));
+ map(35, 36).w(this, FUNC(ygv608_device::roz_dy_w));
+ map(37, 38).w(this, FUNC(ygv608_device::roz_dyx_w));
// CRTC
- AM_RANGE(39, 46) AM_WRITE(crtc_w)
+ map(39, 46).w(this, FUNC(ygv608_device::crtc_w));
// 47-48 ROM transfer control - DMA source address
// 49 ROM transfer control - DMA size
-ADDRESS_MAP_END
+}
/***************************************
*
@@ -296,16 +297,17 @@ ADDRESS_MAP_END
*
***************************************/
-ADDRESS_MAP_START(ygv608_device::port_map)
- AM_RANGE(0x00, 0x00) AM_READWRITE(pattern_name_table_r,pattern_name_table_w)
- AM_RANGE(0x01, 0x01) AM_READWRITE(sprite_data_r,sprite_data_w)
- AM_RANGE(0x02, 0x02) AM_READWRITE(scroll_data_r,scroll_data_w)
- AM_RANGE(0x03, 0x03) AM_READWRITE(palette_data_r,palette_data_w)
- AM_RANGE(0x04, 0x04) AM_READWRITE(register_data_r,register_data_w)
- AM_RANGE(0x05, 0x05) AM_READNOP AM_WRITE(register_select_w)
- AM_RANGE(0x06, 0x06) AM_READWRITE(status_port_r,status_port_w)
- AM_RANGE(0x07, 0x07) AM_READWRITE(system_control_r,system_control_w)
-ADDRESS_MAP_END
+void ygv608_device::port_map(address_map &map)
+{
+ map(0x00, 0x00).rw(this, FUNC(ygv608_device::pattern_name_table_r), FUNC(ygv608_device::pattern_name_table_w));
+ map(0x01, 0x01).rw(this, FUNC(ygv608_device::sprite_data_r), FUNC(ygv608_device::sprite_data_w));
+ map(0x02, 0x02).rw(this, FUNC(ygv608_device::scroll_data_r), FUNC(ygv608_device::scroll_data_w));
+ map(0x03, 0x03).rw(this, FUNC(ygv608_device::palette_data_r), FUNC(ygv608_device::palette_data_w));
+ map(0x04, 0x04).rw(this, FUNC(ygv608_device::register_data_r), FUNC(ygv608_device::register_data_w));
+ map(0x05, 0x05).nopr().w(this, FUNC(ygv608_device::register_select_w));
+ map(0x06, 0x06).rw(this, FUNC(ygv608_device::status_port_r), FUNC(ygv608_device::status_port_w));
+ map(0x07, 0x07).rw(this, FUNC(ygv608_device::system_control_r), FUNC(ygv608_device::system_control_w));
+}
//-------------------------------------------------
diff --git a/src/mame/video/zx8301.cpp b/src/mame/video/zx8301.cpp
index 74f6976553e..213327afb3a 100644
--- a/src/mame/video/zx8301.cpp
+++ b/src/mame/video/zx8301.cpp
@@ -56,9 +56,10 @@ DEFINE_DEVICE_TYPE(ZX8301, zx8301_device, "zx8301", "Sinclair ZX8301")
// default address map
-ADDRESS_MAP_START(zx8301_device::zx8301)
- AM_RANGE(0x00000, 0x1ffff) AM_RAM
-ADDRESS_MAP_END
+void zx8301_device::zx8301(address_map &map)
+{
+ map(0x00000, 0x1ffff).ram();
+}
//-------------------------------------------------