summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/mystwarr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/mystwarr.cpp')
-rw-r--r--src/mame/drivers/mystwarr.cpp421
1 files changed, 215 insertions, 206 deletions
diff --git a/src/mame/drivers/mystwarr.cpp b/src/mame/drivers/mystwarr.cpp
index 86c33ba5f42..0bebfd6c7dd 100644
--- a/src/mame/drivers/mystwarr.cpp
+++ b/src/mame/drivers/mystwarr.cpp
@@ -292,94 +292,97 @@ WRITE16_MEMBER(mystwarr_state::k053247_scattered_word_w)
/* 68000 memory handlers */
/* Mystic Warriors */
-ADDRESS_MAP_START(mystwarr_state::mystwarr_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gx_workram")
- AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(k053247_scattered_word_r,k053247_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x480000, 0x4800ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
- AM_RANGE(0x482000, 0x48200f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r)
- AM_RANGE(0x482010, 0x48201f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w)
- AM_RANGE(0x484000, 0x484007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w)
- AM_RANGE(0x48a000, 0x48a01f) AM_DEVWRITE("k054338", k054338_device, word_w)
- AM_RANGE(0x48c000, 0x48c03f) AM_DEVWRITE("k056832", k056832_device,word_w)
- AM_RANGE(0x490000, 0x490001) AM_WRITE(mweeprom_w)
- AM_RANGE(0x492000, 0x492001) AM_NOP // watchdog
- AM_RANGE(0x494000, 0x494001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x494002, 0x494003) AM_READ_PORT("P3_P4")
- AM_RANGE(0x496000, 0x496001) AM_READ_PORT("IN0")
- AM_RANGE(0x496002, 0x496003) AM_READ(eeprom_r)
- AM_RANGE(0x498000, 0x49801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
- AM_RANGE(0x49a000, 0x49a001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x49c000, 0x49c01f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
- AM_RANGE(0x49e000, 0x49e007) AM_WRITE(irq_ack_w) // VSCCS (custom)
- AM_RANGE(0x600000, 0x601fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w)
- AM_RANGE(0x602000, 0x603fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read(essential)
- AM_RANGE(0x680000, 0x683fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
- AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
+void mystwarr_state::mystwarr_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // main program
+ map(0x200000, 0x20ffff).ram().share("gx_workram");
+ map(0x400000, 0x40ffff).rw(this, FUNC(mystwarr_state::k053247_scattered_word_r), FUNC(mystwarr_state::k053247_scattered_word_w)).share("spriteram");
+ map(0x480000, 0x4800ff).w(m_k055555, FUNC(k055555_device::K055555_word_w));
+ map(0x482000, 0x48200f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r));
+ map(0x482010, 0x48201f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w));
+ map(0x484000, 0x484007).w(m_k055673, FUNC(k055673_device::k053246_word_w));
+ map(0x48a000, 0x48a01f).w(m_k054338, FUNC(k054338_device::word_w));
+ map(0x48c000, 0x48c03f).w(m_k056832, FUNC(k056832_device::word_w));
+ map(0x490000, 0x490001).w(this, FUNC(mystwarr_state::mweeprom_w));
+ map(0x492000, 0x492001).noprw(); // watchdog
+ map(0x494000, 0x494001).portr("P1_P2");
+ map(0x494002, 0x494003).portr("P3_P4");
+ map(0x496000, 0x496001).portr("IN0");
+ map(0x496002, 0x496003).r(this, FUNC(mystwarr_state::eeprom_r));
+ map(0x498000, 0x49801f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x49a000, 0x49a001).w(this, FUNC(mystwarr_state::sound_irq_w));
+ map(0x49c000, 0x49c01f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff);
+ map(0x49e000, 0x49e007).w(this, FUNC(mystwarr_state::irq_ack_w)); // VSCCS (custom)
+ map(0x600000, 0x601fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w));
+ map(0x602000, 0x603fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read(essential)
+ map(0x680000, 0x683fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r));
+ map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
/* Metamorphic Force */
-ADDRESS_MAP_START(mystwarr_state::metamrph_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gx_workram")
- AM_RANGE(0x210000, 0x210fff) AM_DEVREADWRITE("k055673", k055673_device,k053247_word_r,k053247_word_w)
- AM_RANGE(0x211000, 0x21ffff) AM_RAM
- AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w)
- AM_RANGE(0x244000, 0x24400f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r)
- AM_RANGE(0x244010, 0x24401f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w)
- AM_RANGE(0x24c000, 0x24ffff) AM_DEVREADWRITE("k053250_1", k053250_device, ram_r, ram_w)
- AM_RANGE(0x250000, 0x25000f) AM_DEVREADWRITE("k053250_1", k053250_device, reg_r, reg_w)
- AM_RANGE(0x254000, 0x25401f) AM_DEVWRITE("k054338", k054338_device, word_w)
- AM_RANGE(0x258000, 0x2580ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
- AM_RANGE(0x260000, 0x26001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
- AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x268000, 0x26801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
- AM_RANGE(0x26c000, 0x26c007) AM_DEVWRITE("k056832", k056832_device,b_word_w)
- AM_RANGE(0x270000, 0x27003f) AM_DEVWRITE("k056832", k056832_device,word_w)
- AM_RANGE(0x274000, 0x274001) AM_READ_PORT("P1_P3")
- AM_RANGE(0x274002, 0x274003) AM_READ_PORT("P2_P4")
- AM_RANGE(0x278000, 0x278001) AM_READ_PORT("IN0")
- AM_RANGE(0x278002, 0x278003) AM_READ(eeprom_r)
- AM_RANGE(0x27c000, 0x27c001) AM_READNOP // watchdog lives here
- AM_RANGE(0x27c000, 0x27c001) AM_WRITE(mmeeprom_w)
- AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w)
- AM_RANGE(0x302000, 0x303fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read/write (essential)
- AM_RANGE(0x310000, 0x311fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
- AM_RANGE(0x320000, 0x321fff) AM_DEVREAD("k053250_1", k053250_device, rom_r)
- AM_RANGE(0x330000, 0x331fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
+void mystwarr_state::metamrph_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // main program
+ map(0x200000, 0x20ffff).ram().share("gx_workram");
+ map(0x210000, 0x210fff).rw(m_k055673, FUNC(k055673_device::k053247_word_r), FUNC(k055673_device::k053247_word_w));
+ map(0x211000, 0x21ffff).ram();
+ map(0x240000, 0x240007).w(m_k055673, FUNC(k055673_device::k053246_word_w));
+ map(0x244000, 0x24400f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r));
+ map(0x244010, 0x24401f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w));
+ map(0x24c000, 0x24ffff).rw("k053250_1", FUNC(k053250_device::ram_r), FUNC(k053250_device::ram_w));
+ map(0x250000, 0x25000f).rw("k053250_1", FUNC(k053250_device::reg_r), FUNC(k053250_device::reg_w));
+ map(0x254000, 0x25401f).w(m_k054338, FUNC(k054338_device::word_w));
+ map(0x258000, 0x2580ff).w(m_k055555, FUNC(k055555_device::K055555_word_w));
+ map(0x260000, 0x26001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff);
+ map(0x264000, 0x264001).w(this, FUNC(mystwarr_state::sound_irq_w));
+ map(0x268000, 0x26801f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x26c000, 0x26c007).w(m_k056832, FUNC(k056832_device::b_word_w));
+ map(0x270000, 0x27003f).w(m_k056832, FUNC(k056832_device::word_w));
+ map(0x274000, 0x274001).portr("P1_P3");
+ map(0x274002, 0x274003).portr("P2_P4");
+ map(0x278000, 0x278001).portr("IN0");
+ map(0x278002, 0x278003).r(this, FUNC(mystwarr_state::eeprom_r));
+ map(0x27c000, 0x27c001).nopr(); // watchdog lives here
+ map(0x27c000, 0x27c001).w(this, FUNC(mystwarr_state::mmeeprom_w));
+ map(0x300000, 0x301fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w));
+ map(0x302000, 0x303fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read/write (essential)
+ map(0x310000, 0x311fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r));
+ map(0x320000, 0x321fff).r("k053250_1", FUNC(k053250_device::rom_r));
+ map(0x330000, 0x331fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
/* Violent Storm */
-ADDRESS_MAP_START(mystwarr_state::viostorm_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gx_workram")
- AM_RANGE(0x210000, 0x210fff) AM_DEVREADWRITE("k055673", k055673_device, k053247_word_r,k053247_word_w)
- AM_RANGE(0x211000, 0x21ffff) AM_RAM
- AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w)
- AM_RANGE(0x244000, 0x24400f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r)
- AM_RANGE(0x244010, 0x24401f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w)
- AM_RANGE(0x24c000, 0x24ffff) AM_RAM // K053250 ram
- AM_RANGE(0x250000, 0x25000f) AM_RAM // K053250 reg
- AM_RANGE(0x254000, 0x25401f) AM_DEVWRITE("k054338", k054338_device, word_w)
- AM_RANGE(0x258000, 0x2580ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
- AM_RANGE(0x25c000, 0x25c03f) AM_READWRITE(K055550_word_r,K055550_word_w)
- AM_RANGE(0x260000, 0x26001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
- AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x268000, 0x26801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
- AM_RANGE(0x26c000, 0x26c007) AM_DEVWRITE("k056832", k056832_device,b_word_w)
- AM_RANGE(0x270000, 0x27003f) AM_DEVWRITE("k056832", k056832_device,word_w)
- AM_RANGE(0x274000, 0x274001) AM_READ_PORT("P1_P3")
- AM_RANGE(0x274002, 0x274003) AM_READ_PORT("P2_P4")
- AM_RANGE(0x278000, 0x278001) AM_READ_PORT("IN0")
- AM_RANGE(0x278002, 0x278003) AM_READ(eeprom_r)
- AM_RANGE(0x27c000, 0x27c001) AM_READNOP // watchdog lives here
- AM_RANGE(0x27c000, 0x27c001) AM_WRITE(mmeeprom_w)
- AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w)
- AM_RANGE(0x302000, 0x303fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read(essential)
- AM_RANGE(0x304000, 0x3041ff) AM_RAM
- AM_RANGE(0x310000, 0x311fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
- AM_RANGE(0x330000, 0x331fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
+void mystwarr_state::viostorm_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // main program
+ map(0x200000, 0x20ffff).ram().share("gx_workram");
+ map(0x210000, 0x210fff).rw(m_k055673, FUNC(k055673_device::k053247_word_r), FUNC(k055673_device::k053247_word_w));
+ map(0x211000, 0x21ffff).ram();
+ map(0x240000, 0x240007).w(m_k055673, FUNC(k055673_device::k053246_word_w));
+ map(0x244000, 0x24400f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r));
+ map(0x244010, 0x24401f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w));
+ map(0x24c000, 0x24ffff).ram(); // K053250 ram
+ map(0x250000, 0x25000f).ram(); // K053250 reg
+ map(0x254000, 0x25401f).w(m_k054338, FUNC(k054338_device::word_w));
+ map(0x258000, 0x2580ff).w(m_k055555, FUNC(k055555_device::K055555_word_w));
+ map(0x25c000, 0x25c03f).rw(this, FUNC(mystwarr_state::K055550_word_r), FUNC(mystwarr_state::K055550_word_w));
+ map(0x260000, 0x26001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff);
+ map(0x264000, 0x264001).w(this, FUNC(mystwarr_state::sound_irq_w));
+ map(0x268000, 0x26801f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x26c000, 0x26c007).w(m_k056832, FUNC(k056832_device::b_word_w));
+ map(0x270000, 0x27003f).w(m_k056832, FUNC(k056832_device::word_w));
+ map(0x274000, 0x274001).portr("P1_P3");
+ map(0x274002, 0x274003).portr("P2_P4");
+ map(0x278000, 0x278001).portr("IN0");
+ map(0x278002, 0x278003).r(this, FUNC(mystwarr_state::eeprom_r));
+ map(0x27c000, 0x27c001).nopr(); // watchdog lives here
+ map(0x27c000, 0x27c001).w(this, FUNC(mystwarr_state::mmeeprom_w));
+ map(0x300000, 0x301fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w));
+ map(0x302000, 0x303fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read(essential)
+ map(0x304000, 0x3041ff).ram();
+ map(0x310000, 0x311fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r));
+ map(0x330000, 0x331fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
// Martial Champion specific interfaces
READ16_MEMBER(mystwarr_state::k053247_martchmp_word_r)
@@ -444,102 +447,105 @@ WRITE16_MEMBER(mystwarr_state::mceeprom_w)
}
/* Martial Champion */
-ADDRESS_MAP_START(mystwarr_state::martchmp_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // main program
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("gx_workram") // work RAM
- AM_RANGE(0x300000, 0x3fffff) AM_ROM // data ROM
- AM_RANGE(0x400000, 0x4000ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) // PCU2
- AM_RANGE(0x402000, 0x40200f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) // sprite ROM readback
- AM_RANGE(0x402010, 0x40201f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w) // OBJSET2
- AM_RANGE(0x404000, 0x404007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // OBJSET1
- AM_RANGE(0x40a000, 0x40a01f) AM_DEVWRITE("k054338", k054338_device, word_w) // CLTC
- AM_RANGE(0x40c000, 0x40c03f) AM_DEVWRITE("k056832", k056832_device,word_w) // VACSET
- AM_RANGE(0x40e000, 0x40e03f) AM_WRITE(K053990_martchmp_word_w) // protection
- AM_RANGE(0x410000, 0x410001) AM_WRITE(mceeprom_w)
- AM_RANGE(0x412000, 0x412001) AM_READWRITE(mccontrol_r,mccontrol_w)
- AM_RANGE(0x414000, 0x414001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x414002, 0x414003) AM_READ_PORT("P3_P4")
- AM_RANGE(0x416000, 0x416001) AM_READ_PORT("IN0")
- AM_RANGE(0x416002, 0x416003) AM_READ(eeprom_r) // eeprom read
- AM_RANGE(0x418000, 0x41801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
- AM_RANGE(0x41a000, 0x41a001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x41c000, 0x41c01f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CCU
- AM_RANGE(0x41e000, 0x41e007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS
- AM_RANGE(0x480000, 0x483fff) AM_READWRITE(k053247_martchmp_word_r,k053247_martchmp_word_w) AM_SHARE("spriteram") // sprite RAM
- AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette RAM
- AM_RANGE(0x680000, 0x681fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM
- AM_RANGE(0x682000, 0x683fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read/write (essential)
- AM_RANGE(0x700000, 0x703fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) // tile ROM readback
-ADDRESS_MAP_END
+void mystwarr_state::martchmp_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // main program
+ map(0x100000, 0x10ffff).ram().share("gx_workram"); // work RAM
+ map(0x300000, 0x3fffff).rom(); // data ROM
+ map(0x400000, 0x4000ff).w(m_k055555, FUNC(k055555_device::K055555_word_w)); // PCU2
+ map(0x402000, 0x40200f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r)); // sprite ROM readback
+ map(0x402010, 0x40201f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w)); // OBJSET2
+ map(0x404000, 0x404007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); // OBJSET1
+ map(0x40a000, 0x40a01f).w(m_k054338, FUNC(k054338_device::word_w)); // CLTC
+ map(0x40c000, 0x40c03f).w(m_k056832, FUNC(k056832_device::word_w)); // VACSET
+ map(0x40e000, 0x40e03f).w(this, FUNC(mystwarr_state::K053990_martchmp_word_w)); // protection
+ map(0x410000, 0x410001).w(this, FUNC(mystwarr_state::mceeprom_w));
+ map(0x412000, 0x412001).rw(this, FUNC(mystwarr_state::mccontrol_r), FUNC(mystwarr_state::mccontrol_w));
+ map(0x414000, 0x414001).portr("P1_P2");
+ map(0x414002, 0x414003).portr("P3_P4");
+ map(0x416000, 0x416001).portr("IN0");
+ map(0x416002, 0x416003).r(this, FUNC(mystwarr_state::eeprom_r)); // eeprom read
+ map(0x418000, 0x41801f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x41a000, 0x41a001).w(this, FUNC(mystwarr_state::sound_irq_w));
+ map(0x41c000, 0x41c01f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); // CCU
+ map(0x41e000, 0x41e007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS
+ map(0x480000, 0x483fff).rw(this, FUNC(mystwarr_state::k053247_martchmp_word_r), FUNC(mystwarr_state::k053247_martchmp_word_w)).share("spriteram"); // sprite RAM
+ map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // palette RAM
+ map(0x680000, 0x681fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM
+ map(0x682000, 0x683fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read/write (essential)
+ map(0x700000, 0x703fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r)); // tile ROM readback
+}
/* Ultimate Battler Dadandarn */
-ADDRESS_MAP_START(mystwarr_state::dadandrn_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program and data ROM
- AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(k053247_scattered_word_r,k053247_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x410000, 0x411fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM
- AM_RANGE(0x412000, 0x413fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read/write (essential)
- AM_RANGE(0x420000, 0x421fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x430000, 0x430007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w)
- AM_RANGE(0x440000, 0x443fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
- AM_RANGE(0x450000, 0x45000f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r)
- AM_RANGE(0x450010, 0x45001f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w)
- AM_RANGE(0x460000, 0x46001f) AM_WRITEONLY AM_SHARE("k053936_0_ct16")
- AM_RANGE(0x470000, 0x470fff) AM_RAM AM_SHARE("k053936_0_li16")
- AM_RANGE(0x480000, 0x48003f) AM_DEVWRITE("k056832", k056832_device,word_w) // VACSET
- AM_RANGE(0x482000, 0x482007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS
- AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w)
- AM_RANGE(0x486000, 0x48601f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
- AM_RANGE(0x488000, 0x4880ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
- AM_RANGE(0x48a000, 0x48a01f) AM_DEVICE8("k054321", k054321_device, main_map, 0xff00)
- AM_RANGE(0x48c000, 0x48c01f) AM_DEVWRITE("k054338", k054338_device, word_w)
- AM_RANGE(0x48e000, 0x48e001) AM_READ_PORT("IN0_P1") // bit 3 (0x8) is test switch
- AM_RANGE(0x48e020, 0x48e021) AM_READ(dddeeprom_r)
- AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gx_workram")
- AM_RANGE(0x680000, 0x68003f) AM_READWRITE(K055550_word_r,K055550_word_w)
- AM_RANGE(0x6a0000, 0x6a0001) AM_WRITE(mmeeprom_w)
- AM_RANGE(0x6c0000, 0x6c0001) AM_WRITE(ddd_053936_enable_w)
- AM_RANGE(0x6e0000, 0x6e0001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x800000, 0x87ffff) AM_READ(ddd_053936_tilerom_0_r) // 256k tilemap readback
- AM_RANGE(0xa00000, 0xa7ffff) AM_READ(ddd_053936_tilerom_1_r) // 128k tilemap readback
- AM_RANGE(0xc00000, 0xdfffff) AM_READ(ddd_053936_tilerom_2_r) // tile character readback
- AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // watchdog
-ADDRESS_MAP_END
+void mystwarr_state::dadandrn_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // main program and data ROM
+ map(0x400000, 0x40ffff).rw(this, FUNC(mystwarr_state::k053247_scattered_word_r), FUNC(mystwarr_state::k053247_scattered_word_w)).share("spriteram");
+ map(0x410000, 0x411fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM
+ map(0x412000, 0x413fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read/write (essential)
+ map(0x420000, 0x421fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x430000, 0x430007).w(m_k055673, FUNC(k055673_device::k053246_word_w));
+ map(0x440000, 0x443fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r));
+ map(0x450000, 0x45000f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r));
+ map(0x450010, 0x45001f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w));
+ map(0x460000, 0x46001f).writeonly().share("k053936_0_ct16");
+ map(0x470000, 0x470fff).ram().share("k053936_0_li16");
+ map(0x480000, 0x48003f).w(m_k056832, FUNC(k056832_device::word_w)); // VACSET
+ map(0x482000, 0x482007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS
+ map(0x484000, 0x484003).w(this, FUNC(mystwarr_state::ddd_053936_clip_w));
+ map(0x486000, 0x48601f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff);
+ map(0x488000, 0x4880ff).w(m_k055555, FUNC(k055555_device::K055555_word_w));
+ map(0x48a000, 0x48a01f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0xff00);
+ map(0x48c000, 0x48c01f).w(m_k054338, FUNC(k054338_device::word_w));
+ map(0x48e000, 0x48e001).portr("IN0_P1"); // bit 3 (0x8) is test switch
+ map(0x48e020, 0x48e021).r(this, FUNC(mystwarr_state::dddeeprom_r));
+ map(0x600000, 0x60ffff).ram().share("gx_workram");
+ map(0x680000, 0x68003f).rw(this, FUNC(mystwarr_state::K055550_word_r), FUNC(mystwarr_state::K055550_word_w));
+ map(0x6a0000, 0x6a0001).w(this, FUNC(mystwarr_state::mmeeprom_w));
+ map(0x6c0000, 0x6c0001).w(this, FUNC(mystwarr_state::ddd_053936_enable_w));
+ map(0x6e0000, 0x6e0001).w(this, FUNC(mystwarr_state::sound_irq_w));
+ map(0x800000, 0x87ffff).r(this, FUNC(mystwarr_state::ddd_053936_tilerom_0_r)); // 256k tilemap readback
+ map(0xa00000, 0xa7ffff).r(this, FUNC(mystwarr_state::ddd_053936_tilerom_1_r)); // 128k tilemap readback
+ map(0xc00000, 0xdfffff).r(this, FUNC(mystwarr_state::ddd_053936_tilerom_2_r)); // tile character readback
+ map(0xe00000, 0xe00001).nopw(); // watchdog
+}
/* Gaiapolis */
// a00000 = the 128k tilemap
// 800000 = the 256k tilemap
// c00000 = 936 tiles (7fffff window)
-ADDRESS_MAP_START(mystwarr_state::gaiapols_map)
- AM_RANGE(0x000000, 0x2fffff) AM_ROM // main program
- AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(k053247_scattered_word_r,k053247_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x410000, 0x411fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM
- AM_RANGE(0x412000, 0x413fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read / write (essential)
- AM_RANGE(0x420000, 0x421fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x430000, 0x430007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w)
- AM_RANGE(0x440000, 0x441fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
- AM_RANGE(0x450000, 0x45000f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r)
- AM_RANGE(0x450010, 0x45001f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w)
- AM_RANGE(0x460000, 0x46001f) AM_WRITEONLY AM_SHARE("k053936_0_ct16")
- AM_RANGE(0x470000, 0x470fff) AM_RAM AM_SHARE("k053936_0_li16")
- AM_RANGE(0x480000, 0x48003f) AM_DEVWRITE("k056832", k056832_device,word_w) // VACSET
- AM_RANGE(0x482000, 0x482007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS
- AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w)
- AM_RANGE(0x486000, 0x48601f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
- AM_RANGE(0x488000, 0x4880ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
- AM_RANGE(0x48a000, 0x48a01f) AM_DEVICE8("k054321", k054321_device, main_map, 0xff00)
- AM_RANGE(0x48c000, 0x48c01f) AM_DEVWRITE("k054338", k054338_device, word_w)
- AM_RANGE(0x48e000, 0x48e001) AM_READ_PORT("IN0_P1") // bit 3 (0x8) is test switch
- AM_RANGE(0x48e020, 0x48e021) AM_READ(dddeeprom_r)
- AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gx_workram")
- AM_RANGE(0x660000, 0x6600ff) AM_DEVREADWRITE("k054000", k054000_device, lsb_r, lsb_w)
- AM_RANGE(0x6a0000, 0x6a0001) AM_WRITE(mmeeprom_w)
- AM_RANGE(0x6c0000, 0x6c0001) AM_WRITE(ddd_053936_enable_w)
- AM_RANGE(0x6e0000, 0x6e0001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x800000, 0x87ffff) AM_READ(gai_053936_tilerom_0_r) // 256k tilemap readback
- AM_RANGE(0xa00000, 0xa7ffff) AM_READ(ddd_053936_tilerom_1_r) // 128k tilemap readback
- AM_RANGE(0xc00000, 0xdfffff) AM_READ(gai_053936_tilerom_2_r) // tile character readback
- AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // watchdog
-ADDRESS_MAP_END
+void mystwarr_state::gaiapols_map(address_map &map)
+{
+ map(0x000000, 0x2fffff).rom(); // main program
+ map(0x400000, 0x40ffff).rw(this, FUNC(mystwarr_state::k053247_scattered_word_r), FUNC(mystwarr_state::k053247_scattered_word_w)).share("spriteram");
+ map(0x410000, 0x411fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM
+ map(0x412000, 0x413fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read / write (essential)
+ map(0x420000, 0x421fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x430000, 0x430007).w(m_k055673, FUNC(k055673_device::k053246_word_w));
+ map(0x440000, 0x441fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r));
+ map(0x450000, 0x45000f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r));
+ map(0x450010, 0x45001f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w));
+ map(0x460000, 0x46001f).writeonly().share("k053936_0_ct16");
+ map(0x470000, 0x470fff).ram().share("k053936_0_li16");
+ map(0x480000, 0x48003f).w(m_k056832, FUNC(k056832_device::word_w)); // VACSET
+ map(0x482000, 0x482007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS
+ map(0x484000, 0x484003).w(this, FUNC(mystwarr_state::ddd_053936_clip_w));
+ map(0x486000, 0x48601f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff);
+ map(0x488000, 0x4880ff).w(m_k055555, FUNC(k055555_device::K055555_word_w));
+ map(0x48a000, 0x48a01f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0xff00);
+ map(0x48c000, 0x48c01f).w(m_k054338, FUNC(k054338_device::word_w));
+ map(0x48e000, 0x48e001).portr("IN0_P1"); // bit 3 (0x8) is test switch
+ map(0x48e020, 0x48e021).r(this, FUNC(mystwarr_state::dddeeprom_r));
+ map(0x600000, 0x60ffff).ram().share("gx_workram");
+ map(0x660000, 0x6600ff).rw("k054000", FUNC(k054000_device::lsb_r), FUNC(k054000_device::lsb_w));
+ map(0x6a0000, 0x6a0001).w(this, FUNC(mystwarr_state::mmeeprom_w));
+ map(0x6c0000, 0x6c0001).w(this, FUNC(mystwarr_state::ddd_053936_enable_w));
+ map(0x6e0000, 0x6e0001).w(this, FUNC(mystwarr_state::sound_irq_w));
+ map(0x800000, 0x87ffff).r(this, FUNC(mystwarr_state::gai_053936_tilerom_0_r)); // 256k tilemap readback
+ map(0xa00000, 0xa7ffff).r(this, FUNC(mystwarr_state::ddd_053936_tilerom_1_r)); // 128k tilemap readback
+ map(0xc00000, 0xdfffff).r(this, FUNC(mystwarr_state::gai_053936_tilerom_2_r)); // tile character readback
+ map(0xe00000, 0xe00001).nopw(); // watchdog
+}
/**********************************************************************************/
@@ -560,39 +566,42 @@ WRITE8_MEMBER(mystwarr_state::sound_ctrl_w)
quite similar to xexex/gijoe/asterix's sound.
*/
-ADDRESS_MAP_START(mystwarr_state::mystwarr_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank")
- AM_RANGE(0x0000, 0xbfff) AM_WRITENOP
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539_1", k054539_device, read, write)
- AM_RANGE(0xe230, 0xe3ff) AM_RAM
- AM_RANGE(0xe400, 0xe62f) AM_DEVREADWRITE("k054539_2", k054539_device, read, write)
- AM_RANGE(0xe630, 0xe7ff) AM_RAM
- AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map)
- AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w)
- AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP // unknown write
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(mystwarr_state::martchmp_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank")
- AM_RANGE(0x0000, 0xbfff) AM_WRITENOP
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write)
- AM_RANGE(0xe230, 0xe3ff) AM_RAM
- AM_RANGE(0xe400, 0xe62f) AM_NOP
- AM_RANGE(0xe630, 0xe7ff) AM_RAM
- AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map)
- AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w)
- AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP // unknown write
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(mystwarr_state::mystwarr_k054539_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION("k054539", 0)
-ADDRESS_MAP_END
+void mystwarr_state::mystwarr_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("z80bank");
+ map(0x0000, 0xbfff).nopw();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe22f).rw(m_k054539_1, FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xe230, 0xe3ff).ram();
+ map(0xe400, 0xe62f).rw(m_k054539_2, FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xe630, 0xe7ff).ram();
+ map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map));
+ map(0xf800, 0xf800).w(this, FUNC(mystwarr_state::sound_ctrl_w));
+ map(0xfff0, 0xfff3).nopw(); // unknown write
+}
+
+
+void mystwarr_state::martchmp_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("z80bank");
+ map(0x0000, 0xbfff).nopw();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe22f).rw("k054539", FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xe230, 0xe3ff).ram();
+ map(0xe400, 0xe62f).noprw();
+ map(0xe630, 0xe7ff).ram();
+ map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map));
+ map(0xf800, 0xf800).w(this, FUNC(mystwarr_state::sound_ctrl_w));
+ map(0xfff0, 0xfff3).nopw(); // unknown write
+}
+
+
+void mystwarr_state::mystwarr_k054539_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom().region("k054539", 0);
+}
WRITE_LINE_MEMBER(mystwarr_state::k054539_nmi_gen)