summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/konamigx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/konamigx.cpp')
-rw-r--r--src/mame/drivers/konamigx.cpp189
1 files changed, 98 insertions, 91 deletions
diff --git a/src/mame/drivers/konamigx.cpp b/src/mame/drivers/konamigx.cpp
index a1f1a1614e1..f9c121f1897 100644
--- a/src/mame/drivers/konamigx.cpp
+++ b/src/mame/drivers/konamigx.cpp
@@ -985,87 +985,92 @@ WRITE32_MEMBER(konamigx_state::type1_cablamps_w)
/* 68EC020 memory handlers */
/**********************************************************************************/
-ADDRESS_MAP_START(konamigx_state::gx_base_memmap)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM // BIOS ROM
- AM_RANGE(0x200000, 0x3fffff) AM_ROM // main program ROM
- AM_RANGE(0x400000, 0x7fffff) AM_ROM // data ROM
- AM_RANGE(0xc00000, 0xc1ffff) AM_RAM AM_SHARE("workram")
- AM_RANGE(0xd00000, 0xd01fff) AM_DEVREAD("k056832", k056832_device, k_5bpp_rom_long_r)
- AM_RANGE(0xd20000, 0xd20fff) AM_DEVREADWRITE16("k055673", k055673_device, k053247_word_r, k053247_word_w, 0xffffffff)
- AM_RANGE(0xd21000, 0xd21fff) AM_RAM // second bank of sprite RAM, accessed thru ESC
- AM_RANGE(0xd22000, 0xd23fff) AM_RAM // extra bank checked at least by sexyparo, pending further investigation.
- AM_RANGE(0xd40000, 0xd4003f) AM_DEVWRITE("k056832", k056832_device, long_w)
- AM_RANGE(0xd44000, 0xd4400f) AM_WRITE(konamigx_tilebank_w)
- AM_RANGE(0xd48000, 0xd48007) AM_DEVWRITE16("k055673", k055673_device, k053246_word_w, 0xffffffff)
- AM_RANGE(0xd4a000, 0xd4a00f) AM_DEVREAD16("k055673", k055673_device, k055673_rom_word_r, 0xffffffff)
- AM_RANGE(0xd4a010, 0xd4a01f) AM_DEVWRITE16("k055673", k055673_device, k055673_reg_word_w, 0xffffffff)
- AM_RANGE(0xd4c000, 0xd4c01f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0xff00ff00)
- AM_RANGE(0xd4e000, 0xd4e01f) AM_WRITENOP // left-over for "secondary" CCU, apparently (used by type 3/4 for slave screen?)
- AM_RANGE(0xd50000, 0xd500ff) AM_DEVWRITE("k055555", k055555_device, K055555_long_w)
- AM_RANGE(0xd52000, 0xd5201f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xff00ff00)
- AM_RANGE(0xd56000, 0xd56003) AM_WRITE(eeprom_w)
- AM_RANGE(0xd58000, 0xd58003) AM_WRITE(control_w)
- AM_RANGE(0xd5a000, 0xd5a003) AM_READ_PORT("SYSTEM_DSW")
- AM_RANGE(0xd5c000, 0xd5c003) AM_READ_PORT("INPUTS")
- AM_RANGE(0xd5e000, 0xd5e003) AM_READ_PORT("SERVICE")
- AM_RANGE(0xd80000, 0xd8001f) AM_DEVWRITE("k054338", k054338_device, long_w)
- AM_RANGE(0xda0000, 0xda1fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w)
- AM_RANGE(0xda2000, 0xda3fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konamigx_state::gx_type1_map)
- AM_IMPORT_FROM(gx_base_memmap)
- AM_RANGE(0xd90000, 0xd97fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0xdc0000, 0xdc1fff) AM_RAM // LAN RAM? (Racin' Force has, Open Golf doesn't)
- AM_RANGE(0xdd0000, 0xdd00ff) AM_READNOP AM_WRITENOP // LAN board
- AM_RANGE(0xdda000, 0xddafff) AM_WRITE_PORT("ADC-WRPORT")
- AM_RANGE(0xddc000, 0xddcfff) AM_READ_PORT("ADC-RDPORT")
- AM_RANGE(0xdde000, 0xdde003) AM_WRITE(type1_cablamps_w)
- AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_SHARE("k053936_0_ctrl")
- AM_RANGE(0xe20000, 0xe2000f) AM_WRITENOP
- AM_RANGE(0xe40000, 0xe40003) AM_WRITENOP
- AM_RANGE(0xe80000, 0xe81fff) AM_RAM AM_SHARE("k053936_0_line") // chips 21L+19L / S
- AM_RANGE(0xec0000, 0xedffff) AM_RAM_WRITE(konamigx_t1_psacmap_w) AM_SHARE("psacram") // chips 20J+23J+18J / S
- AM_RANGE(0xf00000, 0xf3ffff) AM_READ(type1_roz_r1) // ROM readback
- AM_RANGE(0xf40000, 0xf7ffff) AM_READ(type1_roz_r2) // ROM readback
- AM_RANGE(0xf80000, 0xf80fff) AM_RAM // chip 21Q / S
- AM_RANGE(0xfc0000, 0xfc00ff) AM_RAM // chip 22N / S
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konamigx_state::gx_type2_map)
- AM_IMPORT_FROM(gx_base_memmap)
- AM_RANGE(0xcc0000, 0xcc0003) AM_WRITE(esc_w)
- AM_RANGE(0xd90000, 0xd97fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konamigx_state::gx_type3_map)
- AM_IMPORT_FROM(gx_base_memmap)
- AM_RANGE(0xd90000, 0xd97fff) AM_RAM
+void konamigx_state::gx_base_memmap(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom(); // BIOS ROM
+ map(0x200000, 0x3fffff).rom(); // main program ROM
+ map(0x400000, 0x7fffff).rom(); // data ROM
+ map(0xc00000, 0xc1ffff).ram().share("workram");
+ map(0xd00000, 0xd01fff).r(m_k056832, FUNC(k056832_device::k_5bpp_rom_long_r));
+ map(0xd20000, 0xd20fff).rw(m_k055673, FUNC(k055673_device::k053247_word_r), FUNC(k055673_device::k053247_word_w));
+ map(0xd21000, 0xd21fff).ram(); // second bank of sprite RAM, accessed thru ESC
+ map(0xd22000, 0xd23fff).ram(); // extra bank checked at least by sexyparo, pending further investigation.
+ map(0xd40000, 0xd4003f).w(m_k056832, FUNC(k056832_device::long_w));
+ map(0xd44000, 0xd4400f).w(this, FUNC(konamigx_state::konamigx_tilebank_w));
+ map(0xd48000, 0xd48007).w(m_k055673, FUNC(k055673_device::k053246_word_w));
+ map(0xd4a000, 0xd4a00f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r));
+ map(0xd4a010, 0xd4a01f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w));
+ map(0xd4c000, 0xd4c01f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask32(0xff00ff00);
+ map(0xd4e000, 0xd4e01f).nopw(); // left-over for "secondary" CCU, apparently (used by type 3/4 for slave screen?)
+ map(0xd50000, 0xd500ff).w(m_k055555, FUNC(k055555_device::K055555_long_w));
+ map(0xd52000, 0xd5201f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w)).umask32(0xff00ff00);
+ map(0xd56000, 0xd56003).w(this, FUNC(konamigx_state::eeprom_w));
+ map(0xd58000, 0xd58003).w(this, FUNC(konamigx_state::control_w));
+ map(0xd5a000, 0xd5a003).portr("SYSTEM_DSW");
+ map(0xd5c000, 0xd5c003).portr("INPUTS");
+ map(0xd5e000, 0xd5e003).portr("SERVICE");
+ map(0xd80000, 0xd8001f).w(m_k054338, FUNC(k054338_device::long_w));
+ map(0xda0000, 0xda1fff).rw(m_k056832, FUNC(k056832_device::ram_long_r), FUNC(k056832_device::ram_long_w));
+ map(0xda2000, 0xda3fff).rw(m_k056832, FUNC(k056832_device::ram_long_r), FUNC(k056832_device::ram_long_w));
+}
+
+void konamigx_state::gx_type1_map(address_map &map)
+{
+ gx_base_memmap(map);
+ map(0xd90000, 0xd97fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0xdc0000, 0xdc1fff).ram(); // LAN RAM? (Racin' Force has, Open Golf doesn't)
+ map(0xdd0000, 0xdd00ff).nopr().nopw(); // LAN board
+ map(0xdda000, 0xddafff).portw("ADC-WRPORT");
+ map(0xddc000, 0xddcfff).portr("ADC-RDPORT");
+ map(0xdde000, 0xdde003).w(this, FUNC(konamigx_state::type1_cablamps_w));
+ map(0xe00000, 0xe0001f).ram().share("k053936_0_ctrl");
+ map(0xe20000, 0xe2000f).nopw();
+ map(0xe40000, 0xe40003).nopw();
+ map(0xe80000, 0xe81fff).ram().share("k053936_0_line"); // chips 21L+19L / S
+ map(0xec0000, 0xedffff).ram().w(this, FUNC(konamigx_state::konamigx_t1_psacmap_w)).share("psacram"); // chips 20J+23J+18J / S
+ map(0xf00000, 0xf3ffff).r(this, FUNC(konamigx_state::type1_roz_r1)); // ROM readback
+ map(0xf40000, 0xf7ffff).r(this, FUNC(konamigx_state::type1_roz_r2)); // ROM readback
+ map(0xf80000, 0xf80fff).ram(); // chip 21Q / S
+ map(0xfc0000, 0xfc00ff).ram(); // chip 22N / S
+}
+
+void konamigx_state::gx_type2_map(address_map &map)
+{
+ gx_base_memmap(map);
+ map(0xcc0000, 0xcc0003).w(this, FUNC(konamigx_state::esc_w));
+ map(0xd90000, 0xd97fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+}
+
+void konamigx_state::gx_type3_map(address_map &map)
+{
+ gx_base_memmap(map);
+ map(0xd90000, 0xd97fff).ram();
//AM_RANGE(0xcc0000, 0xcc0007) AM_WRITE(type4_prot_w)
- AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_SHARE("k053936_0_ctrl")
+ map(0xe00000, 0xe0001f).ram().share("k053936_0_ctrl");
//AM_RANGE(0xe20000, 0xe20003) AM_WRITENOP
- AM_RANGE(0xe40000, 0xe40003) AM_WRITE(konamigx_type3_psac2_bank_w) AM_SHARE("psac2_bank")
- AM_RANGE(0xe60000, 0xe60fff) AM_RAM AM_SHARE("k053936_0_line")
- AM_RANGE(0xe80000, 0xe83fff) AM_RAM AM_SHARE("paletteram") // main monitor palette
- AM_RANGE(0xea0000, 0xea3fff) AM_RAM AM_SHARE("subpaletteram")
- AM_RANGE(0xec0000, 0xec0003) AM_READ(type3_sync_r)
+ map(0xe40000, 0xe40003).w(this, FUNC(konamigx_state::konamigx_type3_psac2_bank_w)).share("psac2_bank");
+ map(0xe60000, 0xe60fff).ram().share("k053936_0_line");
+ map(0xe80000, 0xe83fff).ram().share("paletteram"); // main monitor palette
+ map(0xea0000, 0xea3fff).ram().share("subpaletteram");
+ map(0xec0000, 0xec0003).r(this, FUNC(konamigx_state::type3_sync_r));
//AM_RANGE(0xf00000, 0xf07fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konamigx_state::gx_type4_map)
- AM_IMPORT_FROM(gx_base_memmap)
- AM_RANGE(0xcc0000, 0xcc0007) AM_WRITE(type4_prot_w)
- AM_RANGE(0xd90000, 0xd97fff) AM_RAM
- AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_SHARE("k053936_0_ctrl")
- AM_RANGE(0xe20000, 0xe20003) AM_WRITENOP
- AM_RANGE(0xe40000, 0xe40003) AM_WRITENOP
- AM_RANGE(0xe60000, 0xe60fff) AM_RAM AM_SHARE("k053936_0_line") // 29C & 29G (PSAC2 line control)
- AM_RANGE(0xe80000, 0xe87fff) AM_RAM AM_SHARE("paletteram") // 11G/13G/15G (main screen palette RAM)
- AM_RANGE(0xea0000, 0xea7fff) AM_RAM AM_SHARE("subpaletteram") // 5G/7G/9G (sub screen palette RAM)
- AM_RANGE(0xec0000, 0xec0003) AM_READ(type3_sync_r) // type 4 polls this too
- AM_RANGE(0xf00000, 0xf07fff) AM_RAM_WRITE(konamigx_t4_psacmap_w) AM_SHARE("psacram") // PSAC2 tilemap
+}
+
+void konamigx_state::gx_type4_map(address_map &map)
+{
+ gx_base_memmap(map);
+ map(0xcc0000, 0xcc0007).w(this, FUNC(konamigx_state::type4_prot_w));
+ map(0xd90000, 0xd97fff).ram();
+ map(0xe00000, 0xe0001f).ram().share("k053936_0_ctrl");
+ map(0xe20000, 0xe20003).nopw();
+ map(0xe40000, 0xe40003).nopw();
+ map(0xe60000, 0xe60fff).ram().share("k053936_0_line"); // 29C & 29G (PSAC2 line control)
+ map(0xe80000, 0xe87fff).ram().share("paletteram"); // 11G/13G/15G (main screen palette RAM)
+ map(0xea0000, 0xea7fff).ram().share("subpaletteram"); // 5G/7G/9G (sub screen palette RAM)
+ map(0xec0000, 0xec0003).r(this, FUNC(konamigx_state::type3_sync_r)); // type 4 polls this too
+ map(0xf00000, 0xf07fff).ram().w(this, FUNC(konamigx_state::konamigx_t4_psacmap_w)).share("psacram"); // PSAC2 tilemap
// AM_RANGE(0xf00000, 0xf07fff) AM_RAM
-ADDRESS_MAP_END
+}
/**********************************************************************************/
/* Sound handling */
@@ -1104,20 +1109,22 @@ WRITE16_MEMBER(konamigx_state::tms57002_control_word_w)
}
/* 68000 memory handling */
-ADDRESS_MAP_START(konamigx_state::gxsndmap)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_1", k054539_device, read, write, 0xff00)
- AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_2", k054539_device, read, write, 0x00ff)
- AM_RANGE(0x300000, 0x300001) AM_READWRITE(tms57002_data_word_r, tms57002_data_word_w)
- AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0x00ff)
- AM_RANGE(0x500000, 0x500001) AM_READWRITE(tms57002_status_word_r, tms57002_control_word_w)
- AM_RANGE(0x580000, 0x580001) AM_WRITENOP // 'NRES' - D2: K056602 /RESET
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konamigx_state::gxtmsmap)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM
-ADDRESS_MAP_END
+void konamigx_state::gxsndmap(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x2004ff).rw(m_k054539_1, FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0xff00);
+ map(0x200000, 0x2004ff).rw(m_k054539_2, FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0x00ff);
+ map(0x300000, 0x300001).rw(this, FUNC(konamigx_state::tms57002_data_word_r), FUNC(konamigx_state::tms57002_data_word_w));
+ map(0x400000, 0x40001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff);
+ map(0x500000, 0x500001).rw(this, FUNC(konamigx_state::tms57002_status_word_r), FUNC(konamigx_state::tms57002_control_word_w));
+ map(0x580000, 0x580001).nopw(); // 'NRES' - D2: K056602 /RESET
+}
+
+void konamigx_state::gxtmsmap(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram();
+}
WRITE_LINE_MEMBER(konamigx_state::k054539_irq_gen)