summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/metalmx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/metalmx.cpp')
-rw-r--r--src/mame/drivers/metalmx.cpp124
1 files changed, 65 insertions, 59 deletions
diff --git a/src/mame/drivers/metalmx.cpp b/src/mame/drivers/metalmx.cpp
index 4bc40346486..afedb709ddd 100644
--- a/src/mame/drivers/metalmx.cpp
+++ b/src/mame/drivers/metalmx.cpp
@@ -505,30 +505,31 @@ WRITE32_MEMBER(metalmx_state::timer_w)
*
*************************************/
-ADDRESS_MAP_START(metalmx_state::main_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x200000, 0x3fffff) AM_ROM
- AM_RANGE(0x400000, 0x4000ff) AM_READWRITE(host_gsp_r, host_gsp_w)
- AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(host_dram_r, host_dram_w)
- AM_RANGE(0x700000, 0x7fffff) AM_READWRITE(host_vram_r, host_vram_w)
- AM_RANGE(0x800000, 0x80001f) AM_READWRITE(dsp32c_2_r, dsp32c_2_w)
- AM_RANGE(0x800020, 0x85ffff) AM_NOP /* Unknown */
- AM_RANGE(0x880000, 0x88001f) AM_READWRITE(dsp32c_1_r, dsp32c_1_w)
- AM_RANGE(0x980000, 0x9800ff) AM_WRITE(reset_w)
- AM_RANGE(0xb40000, 0xb40003) AM_READWRITE(sound_data_r, sound_data_w)
- AM_RANGE(0xf00000, 0xf00003) AM_RAM /* Network message port */
- AM_RANGE(0xf02000, 0xf02003) AM_READWRITE(watchdog_r, shifter_w)
- AM_RANGE(0xf03000, 0xf03003) AM_READ_PORT("P1") AM_WRITE(motor_w)
- AM_RANGE(0xf04000, 0xf04003) AM_READ_PORT("P2")
- AM_RANGE(0xf05000, 0xf05fff) AM_WRITENOP /* Lamps */ // f06000 = ADC // f01xxx = ADC
- AM_RANGE(0xf19000, 0xf19003) AM_WRITENOP /* Network */
- AM_RANGE(0xf1a000, 0xf1a003) AM_WRITENOP
- AM_RANGE(0xf1b000, 0xf1b003) AM_WRITENOP
- AM_RANGE(0xf1e000, 0xf1e003) AM_RAM /* Network status flags : 1000 = LIRQ 4000 = SFLAG 8000 = 68FLAG */
- AM_RANGE(0xf20000, 0xf2ffff) AM_WRITE(timer_w)
- AM_RANGE(0xfc0000, 0xfc1fff) AM_RAM /* Zero power RAM */
- AM_RANGE(0xfd0000, 0xffffff) AM_RAM /* Scratch RAM */
-ADDRESS_MAP_END
+void metalmx_state::main_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x3fffff).rom();
+ map(0x400000, 0x4000ff).rw(this, FUNC(metalmx_state::host_gsp_r), FUNC(metalmx_state::host_gsp_w));
+ map(0x600000, 0x6fffff).rw(this, FUNC(metalmx_state::host_dram_r), FUNC(metalmx_state::host_dram_w));
+ map(0x700000, 0x7fffff).rw(this, FUNC(metalmx_state::host_vram_r), FUNC(metalmx_state::host_vram_w));
+ map(0x800000, 0x80001f).rw(this, FUNC(metalmx_state::dsp32c_2_r), FUNC(metalmx_state::dsp32c_2_w));
+ map(0x800020, 0x85ffff).noprw(); /* Unknown */
+ map(0x880000, 0x88001f).rw(this, FUNC(metalmx_state::dsp32c_1_r), FUNC(metalmx_state::dsp32c_1_w));
+ map(0x980000, 0x9800ff).w(this, FUNC(metalmx_state::reset_w));
+ map(0xb40000, 0xb40003).rw(this, FUNC(metalmx_state::sound_data_r), FUNC(metalmx_state::sound_data_w));
+ map(0xf00000, 0xf00003).ram(); /* Network message port */
+ map(0xf02000, 0xf02003).rw(this, FUNC(metalmx_state::watchdog_r), FUNC(metalmx_state::shifter_w));
+ map(0xf03000, 0xf03003).portr("P1").w(this, FUNC(metalmx_state::motor_w));
+ map(0xf04000, 0xf04003).portr("P2");
+ map(0xf05000, 0xf05fff).nopw(); /* Lamps */ // f06000 = ADC // f01xxx = ADC
+ map(0xf19000, 0xf19003).nopw(); /* Network */
+ map(0xf1a000, 0xf1a003).nopw();
+ map(0xf1b000, 0xf1b003).nopw();
+ map(0xf1e000, 0xf1e003).ram(); /* Network status flags : 1000 = LIRQ 4000 = SFLAG 8000 = 68FLAG */
+ map(0xf20000, 0xf2ffff).w(this, FUNC(metalmx_state::timer_w));
+ map(0xfc0000, 0xfc1fff).ram(); /* Zero power RAM */
+ map(0xfd0000, 0xffffff).ram(); /* Scratch RAM */
+}
/*************************************
@@ -537,15 +538,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(metalmx_state::adsp_program_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("adsp_intprog")
-ADDRESS_MAP_END
+void metalmx_state::adsp_program_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram().share("adsp_intprog");
+}
-ADDRESS_MAP_START(metalmx_state::adsp_data_map)
- AM_RANGE(0x3800, 0x39ff) AM_RAM
- AM_RANGE(0x2000, 0x2007) AM_RAM
- AM_RANGE(0x3fe0, 0x3fff) AM_RAM // TODO: CPU control registers
-ADDRESS_MAP_END
+void metalmx_state::adsp_data_map(address_map &map)
+{
+ map(0x3800, 0x39ff).ram();
+ map(0x2000, 0x2007).ram();
+ map(0x3fe0, 0x3fff).ram(); // TODO: CPU control registers
+}
/*************************************
@@ -554,13 +557,14 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(metalmx_state::gsp_map)
- AM_RANGE(0x88800000, 0x8880000f) AM_RAM /* ? */
- AM_RANGE(0x88c00000, 0x88c0000f) AM_RAM /* ? */
- AM_RANGE(0xc0000000, 0xc00003ff) AM_DEVREADWRITE("gsp", tms34020_device, io_register_r, io_register_w)
- AM_RANGE(0xff000000, 0xff7fffff) AM_RAM AM_SHARE("gsp_dram")
- AM_RANGE(0xff800000, 0xffffffff) AM_RAM AM_SHARE("gsp_vram")
-ADDRESS_MAP_END
+void metalmx_state::gsp_map(address_map &map)
+{
+ map(0x88800000, 0x8880000f).ram(); /* ? */
+ map(0x88c00000, 0x88c0000f).ram(); /* ? */
+ map(0xc0000000, 0xc00003ff).rw(m_gsp, FUNC(tms34020_device::io_register_r), FUNC(tms34020_device::io_register_w));
+ map(0xff000000, 0xff7fffff).ram().share("gsp_dram");
+ map(0xff800000, 0xffffffff).ram().share("gsp_vram");
+}
/*************************************
@@ -569,16 +573,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(metalmx_state::dsp32c_1_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_RAM
- AM_RANGE(0x600000, 0x67ffff) AM_RAM
- AM_RANGE(0x700000, 0x700003) AM_WRITENOP /* LEDs? */
- AM_RANGE(0xa00000, 0xa00003) AM_READ(unk_r)
- AM_RANGE(0xb00000, 0xb00003) AM_READ(unk_r)
- AM_RANGE(0xc00000, 0xc00003) AM_RAM /* FIFO? */
- AM_RANGE(0xf00000, 0xffffff) AM_RAM /* 3D registers */
-ADDRESS_MAP_END
+void metalmx_state::dsp32c_1_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).ram();
+ map(0x600000, 0x67ffff).ram();
+ map(0x700000, 0x700003).nopw(); /* LEDs? */
+ map(0xa00000, 0xa00003).r(this, FUNC(metalmx_state::unk_r));
+ map(0xb00000, 0xb00003).r(this, FUNC(metalmx_state::unk_r));
+ map(0xc00000, 0xc00003).ram(); /* FIFO? */
+ map(0xf00000, 0xffffff).ram(); /* 3D registers */
+}
/*************************************
*
@@ -586,16 +591,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(metalmx_state::dsp32c_2_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_RAM
- AM_RANGE(0x600000, 0x67ffff) AM_RAM
- AM_RANGE(0x700000, 0x700003) AM_WRITENOP /* LEDs? */
- AM_RANGE(0xa00000, 0xa00003) AM_READ(unk_r)
- AM_RANGE(0xb00000, 0xb00003) AM_READ(unk_r)
- AM_RANGE(0xc00000, 0xc00003) AM_RAM /* FIFO? */
- AM_RANGE(0xf00000, 0xffffff) AM_RAM /* 3D registers */
-ADDRESS_MAP_END
+void metalmx_state::dsp32c_2_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).ram();
+ map(0x600000, 0x67ffff).ram();
+ map(0x700000, 0x700003).nopw(); /* LEDs? */
+ map(0xa00000, 0xa00003).r(this, FUNC(metalmx_state::unk_r));
+ map(0xb00000, 0xb00003).r(this, FUNC(metalmx_state::unk_r));
+ map(0xc00000, 0xc00003).ram(); /* FIFO? */
+ map(0xf00000, 0xffffff).ram(); /* 3D registers */
+}
/*************************************