summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/igs011.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/igs011.cpp')
-rw-r--r--src/mame/drivers/igs011.cpp529
1 files changed, 269 insertions, 260 deletions
diff --git a/src/mame/drivers/igs011.cpp b/src/mame/drivers/igs011.cpp
index de1938637a5..9f279d3db57 100644
--- a/src/mame/drivers/igs011.cpp
+++ b/src/mame/drivers/igs011.cpp
@@ -2563,61 +2563,63 @@ DRIVER_INIT_MEMBER(igs011_state,nkishusp)
***************************************************************************/
-ADDRESS_MAP_START(igs011_state::drgnwrld)
+void igs011_state::drgnwrld(address_map &map)
+{
// drgnwrld: IGS011 protection dynamically mapped at 1dd7x
// AM_RANGE( 0x01dd70, 0x01dd77 ) AM_WRITE(igs011_prot1_w )
// AM_RANGE( 0x01dd78, 0x01dd79 ) AM_READ ( igs011_prot1_r )
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram")
- AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram")
- AM_RANGE( 0x500000, 0x500001 ) AM_READ_PORT( "COIN" )
- AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE( 0x700000, 0x700003 ) AM_DEVWRITE8("ymsnd", ym3812_device, write, 0x00ff)
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram().share("nvram");
+ map(0x200000, 0x200fff).ram().share("priority_ram");
+ map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram");
+ map(0x500000, 0x500001).portr("COIN");
+ map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x700000, 0x700003).w("ymsnd", FUNC(ym3812_device::write)).umask16(0x00ff);
- AM_RANGE( 0x800000, 0x800003 ) AM_WRITE(drgnwrld_igs003_w )
- AM_RANGE( 0x800002, 0x800003 ) AM_READ(drgnwrld_igs003_r )
+ map(0x800000, 0x800003).w(this, FUNC(igs011_state::drgnwrld_igs003_w));
+ map(0x800002, 0x800003).r(this, FUNC(igs011_state::drgnwrld_igs003_r));
- AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w )
- AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w )
+ map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w));
+ map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w));
- AM_RANGE( 0xa50000, 0xa50001 ) AM_WRITE(igs011_prot_addr_w )
+ map(0xa50000, 0xa50001).w(this, FUNC(igs011_state::igs011_prot_addr_w));
// AM_RANGE( 0xa50000, 0xa50005 ) AM_READ(igs011_prot_fake_r )
- AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w )
- AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w )
- AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w )
- AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w )
- AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w )
- AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w )
- AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w )
- AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w )
- AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w )
- AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_3_dips_r )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(igs011_state::drgnwrld_igs012)
- AM_IMPORT_FROM(drgnwrld)
+ map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w));
+ map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w));
+ map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w));
+ map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w));
+ map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w));
+ map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w));
+ map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w));
+ map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w));
+ map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w));
+ map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_3_dips_r));
+}
+
+void igs011_state::drgnwrld_igs012(address_map &map)
+{
+ drgnwrld(map);
// IGS012
- AM_RANGE( 0x001600, 0x00160f ) AM_WRITE(igs012_prot_swap_w ) AM_MIRROR(0x01c000) // swap (a5 / 55)
- AM_RANGE( 0x001610, 0x00161f ) AM_READ(igs012_prot_r ) AM_MIRROR(0x01c000) // read (mode 0)
- AM_RANGE( 0x001620, 0x00162f ) AM_WRITE(igs012_prot_dec_inc_w ) AM_MIRROR(0x01c000) // dec (aa), inc (fa)
- AM_RANGE( 0x001630, 0x00163f ) AM_WRITE(igs012_prot_inc_w ) AM_MIRROR(0x01c000) // inc (ff)
- AM_RANGE( 0x001640, 0x00164f ) AM_WRITE(igs012_prot_copy_w ) AM_MIRROR(0x01c000) // copy (22)
- AM_RANGE( 0x001650, 0x00165f ) AM_WRITE(igs012_prot_dec_copy_w ) AM_MIRROR(0x01c000) // dec (5a), copy (33)
- AM_RANGE( 0x001660, 0x00166f ) AM_READ(igs012_prot_r ) AM_MIRROR(0x01c000) // read (mode 1)
- AM_RANGE( 0x001670, 0x00167f ) AM_WRITE(igs012_prot_mode_w ) AM_MIRROR(0x01c000) // mode (cc / dd)
-
- AM_RANGE( 0x00d400, 0x00d43f ) AM_WRITE(igs011_prot2_dec_w ) // dec (33)
- AM_RANGE( 0x00d440, 0x00d47f ) AM_WRITE(drgnwrld_igs011_prot2_swap_w ) // swap (33)
- AM_RANGE( 0x00d480, 0x00d4bf ) AM_WRITE(igs011_prot2_reset_w ) // reset (33)
- AM_RANGE( 0x00d4c0, 0x00d4ff ) AM_READ(drgnwrldv20j_igs011_prot2_r ) // read
-
- AM_RANGE( 0x902000, 0x902fff ) AM_WRITE(igs012_prot_reset_w ) // reset?
+ map(0x001600, 0x00160f).w(this, FUNC(igs011_state::igs012_prot_swap_w)).mirror(0x01c000); // swap (a5 / 55)
+ map(0x001610, 0x00161f).r(this, FUNC(igs011_state::igs012_prot_r)).mirror(0x01c000); // read (mode 0)
+ map(0x001620, 0x00162f).w(this, FUNC(igs011_state::igs012_prot_dec_inc_w)).mirror(0x01c000); // dec (aa), inc (fa)
+ map(0x001630, 0x00163f).w(this, FUNC(igs011_state::igs012_prot_inc_w)).mirror(0x01c000); // inc (ff)
+ map(0x001640, 0x00164f).w(this, FUNC(igs011_state::igs012_prot_copy_w)).mirror(0x01c000); // copy (22)
+ map(0x001650, 0x00165f).w(this, FUNC(igs011_state::igs012_prot_dec_copy_w)).mirror(0x01c000); // dec (5a), copy (33)
+ map(0x001660, 0x00166f).r(this, FUNC(igs011_state::igs012_prot_r)).mirror(0x01c000); // read (mode 1)
+ map(0x001670, 0x00167f).w(this, FUNC(igs011_state::igs012_prot_mode_w)).mirror(0x01c000); // mode (cc / dd)
+
+ map(0x00d400, 0x00d43f).w(this, FUNC(igs011_state::igs011_prot2_dec_w)); // dec (33)
+ map(0x00d440, 0x00d47f).w(this, FUNC(igs011_state::drgnwrld_igs011_prot2_swap_w)); // swap (33)
+ map(0x00d480, 0x00d4bf).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (33)
+ map(0x00d4c0, 0x00d4ff).r(this, FUNC(igs011_state::drgnwrldv20j_igs011_prot2_r)); // read
+
+ map(0x902000, 0x902fff).w(this, FUNC(igs011_state::igs012_prot_reset_w)); // reset?
// AM_RANGE( 0x902000, 0x902005 ) AM_WRITE(igs012_prot_fake_r )
-ADDRESS_MAP_END
+}
@@ -2640,207 +2642,212 @@ WRITE16_MEMBER(igs011_state::lhb_okibank_w)
// popmessage("oki %04x",data);
}
-ADDRESS_MAP_START(igs011_state::lhb)
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
+void igs011_state::lhb(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
// lhb: IGS011 protection dynamically mapped at 834x
// AM_RANGE( 0x008340, 0x008347 ) AM_WRITE(igs011_prot1_w )
// AM_RANGE( 0x008348, 0x008349 ) AM_READ ( igs011_prot1_r )
- AM_RANGE( 0x010000, 0x010001 ) AM_WRITE(lhb_okibank_w )
+ map(0x010000, 0x010001).w(this, FUNC(igs011_state::lhb_okibank_w));
- AM_RANGE( 0x010200, 0x0103ff ) AM_WRITE(igs011_prot2_inc_w )
- AM_RANGE( 0x010400, 0x0105ff ) AM_WRITE(lhb_igs011_prot2_swap_w )
- AM_RANGE( 0x010600, 0x0107ff ) AM_READ(lhb_igs011_prot2_r )
+ map(0x010200, 0x0103ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w));
+ map(0x010400, 0x0105ff).w(this, FUNC(igs011_state::lhb_igs011_prot2_swap_w));
+ map(0x010600, 0x0107ff).r(this, FUNC(igs011_state::lhb_igs011_prot2_r));
// no reset
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram")
- AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w )
- AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram")
- AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE( 0x700000, 0x700001 ) AM_READ_PORT( "COIN" )
- AM_RANGE( 0x700002, 0x700005 ) AM_READ(lhb_inputs_r )
- AM_RANGE( 0x700002, 0x700003 ) AM_WRITE(lhb_inputs_w )
- AM_RANGE( 0x820000, 0x820001 ) AM_WRITE(igs011_priority_w )
- AM_RANGE( 0x838000, 0x838001 ) AM_WRITE(lhb_irq_enable_w )
- AM_RANGE( 0x840000, 0x840001 ) AM_WRITE(igs_dips_w )
-
- AM_RANGE( 0x850000, 0x850001 ) AM_WRITE(igs011_prot_addr_w )
+ map(0x100000, 0x103fff).ram().share("nvram");
+ map(0x200000, 0x200fff).ram().share("priority_ram");
+ map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w));
+ map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram");
+ map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x700000, 0x700001).portr("COIN");
+ map(0x700002, 0x700005).r(this, FUNC(igs011_state::lhb_inputs_r));
+ map(0x700002, 0x700003).w(this, FUNC(igs011_state::lhb_inputs_w));
+ map(0x820000, 0x820001).w(this, FUNC(igs011_state::igs011_priority_w));
+ map(0x838000, 0x838001).w(this, FUNC(igs011_state::lhb_irq_enable_w));
+ map(0x840000, 0x840001).w(this, FUNC(igs011_state::igs_dips_w));
+
+ map(0x850000, 0x850001).w(this, FUNC(igs011_state::igs011_prot_addr_w));
// AM_RANGE( 0x850000, 0x850005 ) AM_WRITE(igs011_prot_fake_r )
- AM_RANGE( 0x858000, 0x858001 ) AM_WRITE(igs011_blit_x_w )
- AM_RANGE( 0x858800, 0x858801 ) AM_WRITE(igs011_blit_y_w )
- AM_RANGE( 0x859000, 0x859001 ) AM_WRITE(igs011_blit_w_w )
- AM_RANGE( 0x859800, 0x859801 ) AM_WRITE(igs011_blit_h_w )
- AM_RANGE( 0x85a000, 0x85a001 ) AM_WRITE(igs011_blit_gfx_lo_w )
- AM_RANGE( 0x85a800, 0x85a801 ) AM_WRITE(igs011_blit_gfx_hi_w )
- AM_RANGE( 0x85b000, 0x85b001 ) AM_WRITE(igs011_blit_flags_w )
- AM_RANGE( 0x85b800, 0x85b801 ) AM_WRITE(igs011_blit_pen_w )
- AM_RANGE( 0x85c000, 0x85c001 ) AM_WRITE(igs011_blit_depth_w )
- AM_RANGE( 0x888000, 0x888001 ) AM_READ(igs_5_dips_r )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(igs011_state::xymg)
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
+ map(0x858000, 0x858001).w(this, FUNC(igs011_state::igs011_blit_x_w));
+ map(0x858800, 0x858801).w(this, FUNC(igs011_state::igs011_blit_y_w));
+ map(0x859000, 0x859001).w(this, FUNC(igs011_state::igs011_blit_w_w));
+ map(0x859800, 0x859801).w(this, FUNC(igs011_state::igs011_blit_h_w));
+ map(0x85a000, 0x85a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w));
+ map(0x85a800, 0x85a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w));
+ map(0x85b000, 0x85b001).w(this, FUNC(igs011_state::igs011_blit_flags_w));
+ map(0x85b800, 0x85b801).w(this, FUNC(igs011_state::igs011_blit_pen_w));
+ map(0x85c000, 0x85c001).w(this, FUNC(igs011_state::igs011_blit_depth_w));
+ map(0x888000, 0x888001).r(this, FUNC(igs011_state::igs_5_dips_r));
+}
+
+void igs011_state::xymg(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
// xymg: IGS011 protection dynamically mapped at 834x
// AM_RANGE( 0x008340, 0x008347 ) AM_WRITE(igs011_prot1_w )
// AM_RANGE( 0x008348, 0x008349 ) AM_READ ( igs011_prot1_r )
- AM_RANGE( 0x010000, 0x010001 ) AM_WRITE(lhb_okibank_w )
+ map(0x010000, 0x010001).w(this, FUNC(igs011_state::lhb_okibank_w));
- AM_RANGE( 0x010200, 0x0103ff ) AM_WRITE(igs011_prot2_inc_w ) // inc (33)
- AM_RANGE( 0x010400, 0x0105ff ) AM_WRITE(lhb_igs011_prot2_swap_w ) // swap (33)
- AM_RANGE( 0x010600, 0x0107ff ) AM_READ(lhb_igs011_prot2_r ) // read
+ map(0x010200, 0x0103ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w)); // inc (33)
+ map(0x010400, 0x0105ff).w(this, FUNC(igs011_state::lhb_igs011_prot2_swap_w)); // swap (33)
+ map(0x010600, 0x0107ff).r(this, FUNC(igs011_state::lhb_igs011_prot2_r)); // read
// no reset
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM
- AM_RANGE( 0x1f0000, 0x1f3fff ) AM_RAM AM_SHARE("nvram") // extra ram
- AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram")
- AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w )
- AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram")
- AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE( 0x700000, 0x700003 ) AM_WRITE(xymg_igs003_w )
- AM_RANGE( 0x700002, 0x700003 ) AM_READ(xymg_igs003_r )
- AM_RANGE( 0x820000, 0x820001 ) AM_WRITE(igs011_priority_w )
- AM_RANGE( 0x840000, 0x840001 ) AM_WRITE(igs_dips_w )
-
- AM_RANGE( 0x850000, 0x850001 ) AM_WRITE(igs011_prot_addr_w )
+ map(0x100000, 0x103fff).ram();
+ map(0x1f0000, 0x1f3fff).ram().share("nvram"); // extra ram
+ map(0x200000, 0x200fff).ram().share("priority_ram");
+ map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w));
+ map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram");
+ map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x700000, 0x700003).w(this, FUNC(igs011_state::xymg_igs003_w));
+ map(0x700002, 0x700003).r(this, FUNC(igs011_state::xymg_igs003_r));
+ map(0x820000, 0x820001).w(this, FUNC(igs011_state::igs011_priority_w));
+ map(0x840000, 0x840001).w(this, FUNC(igs011_state::igs_dips_w));
+
+ map(0x850000, 0x850001).w(this, FUNC(igs011_state::igs011_prot_addr_w));
// AM_RANGE( 0x850000, 0x850005 ) AM_WRITE(igs011_prot_fake_r )
- AM_RANGE( 0x858000, 0x858001 ) AM_WRITE(igs011_blit_x_w )
- AM_RANGE( 0x858800, 0x858801 ) AM_WRITE(igs011_blit_y_w )
- AM_RANGE( 0x859000, 0x859001 ) AM_WRITE(igs011_blit_w_w )
- AM_RANGE( 0x859800, 0x859801 ) AM_WRITE(igs011_blit_h_w )
- AM_RANGE( 0x85a000, 0x85a001 ) AM_WRITE(igs011_blit_gfx_lo_w )
- AM_RANGE( 0x85a800, 0x85a801 ) AM_WRITE(igs011_blit_gfx_hi_w )
- AM_RANGE( 0x85b000, 0x85b001 ) AM_WRITE(igs011_blit_flags_w )
- AM_RANGE( 0x85b800, 0x85b801 ) AM_WRITE(igs011_blit_pen_w )
- AM_RANGE( 0x85c000, 0x85c001 ) AM_WRITE(igs011_blit_depth_w )
- AM_RANGE( 0x888000, 0x888001 ) AM_READ(igs_3_dips_r )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(igs011_state::wlcc)
+ map(0x858000, 0x858001).w(this, FUNC(igs011_state::igs011_blit_x_w));
+ map(0x858800, 0x858801).w(this, FUNC(igs011_state::igs011_blit_y_w));
+ map(0x859000, 0x859001).w(this, FUNC(igs011_state::igs011_blit_w_w));
+ map(0x859800, 0x859801).w(this, FUNC(igs011_state::igs011_blit_h_w));
+ map(0x85a000, 0x85a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w));
+ map(0x85a800, 0x85a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w));
+ map(0x85b000, 0x85b001).w(this, FUNC(igs011_state::igs011_blit_flags_w));
+ map(0x85b800, 0x85b801).w(this, FUNC(igs011_state::igs011_blit_pen_w));
+ map(0x85c000, 0x85c001).w(this, FUNC(igs011_state::igs011_blit_depth_w));
+ map(0x888000, 0x888001).r(this, FUNC(igs011_state::igs_3_dips_r));
+}
+
+void igs011_state::wlcc(address_map &map)
+{
// wlcc: IGS011 protection dynamically mapped at 834x
// AM_RANGE( 0x008340, 0x008347 ) AM_WRITE(igs011_prot1_w )
// AM_RANGE( 0x008348, 0x008349 ) AM_READ(igs011_prot1_r )
- AM_RANGE( 0x518000, 0x5181ff ) AM_WRITE(igs011_prot2_inc_w ) // inc (33)
- AM_RANGE( 0x518200, 0x5183ff ) AM_WRITE(wlcc_igs011_prot2_swap_w ) // swap (33)
- AM_RANGE( 0x518800, 0x5189ff ) AM_READ(igs011_prot2_reset_r ) // reset
- AM_RANGE( 0x519000, 0x5195ff ) AM_READ(lhb_igs011_prot2_r ) // read
-
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram")
- AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w )
- AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram")
- AM_RANGE( 0x520000, 0x520001 ) AM_READ_PORT( "COIN" )
- AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE( 0x800000, 0x800003 ) AM_WRITE(wlcc_igs003_w )
- AM_RANGE( 0x800002, 0x800003 ) AM_READ(wlcc_igs003_r )
- AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w )
- AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w )
-
- AM_RANGE( 0xa50000, 0xa50001 ) AM_WRITE(igs011_prot_addr_w )
+ map(0x518000, 0x5181ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w)); // inc (33)
+ map(0x518200, 0x5183ff).w(this, FUNC(igs011_state::wlcc_igs011_prot2_swap_w)); // swap (33)
+ map(0x518800, 0x5189ff).r(this, FUNC(igs011_state::igs011_prot2_reset_r)); // reset
+ map(0x519000, 0x5195ff).r(this, FUNC(igs011_state::lhb_igs011_prot2_r)); // read
+
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram().share("nvram");
+ map(0x200000, 0x200fff).ram().share("priority_ram");
+ map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w));
+ map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram");
+ map(0x520000, 0x520001).portr("COIN");
+ map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x800000, 0x800003).w(this, FUNC(igs011_state::wlcc_igs003_w));
+ map(0x800002, 0x800003).r(this, FUNC(igs011_state::wlcc_igs003_r));
+ map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w));
+ map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w));
+
+ map(0xa50000, 0xa50001).w(this, FUNC(igs011_state::igs011_prot_addr_w));
// AM_RANGE( 0xa50000, 0xa50005 ) AM_READ(igs011_prot_fake_r )
- AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w )
- AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w )
- AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w )
- AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w )
- AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w )
- AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w )
- AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w )
- AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w )
- AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w )
- AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_4_dips_r )
-ADDRESS_MAP_END
+ map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w));
+ map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w));
+ map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w));
+ map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w));
+ map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w));
+ map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w));
+ map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w));
+ map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w));
+ map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w));
+ map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_4_dips_r));
+}
-ADDRESS_MAP_START(igs011_state::lhb2)
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
+void igs011_state::lhb2(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
// lhb2: IGS011 protection dynamically mapped at 1ff8x
// AM_RANGE( 0x01ff80, 0x01ff87 ) AM_WRITE(igs011_prot1_w )
// AM_RANGE( 0x01ff88, 0x01ff89 ) AM_READ ( igs011_prot1_r )
- AM_RANGE( 0x020000, 0x0201ff ) AM_WRITE(igs011_prot2_inc_w ) // inc (55)
- AM_RANGE( 0x020200, 0x0203ff ) AM_WRITE(lhb_igs011_prot2_swap_w ) // swap (33)
- AM_RANGE( 0x020400, 0x0205ff ) AM_READ(lhb2_igs011_prot2_r ) // read
- AM_RANGE( 0x020600, 0x0207ff ) AM_WRITE(igs011_prot2_reset_w ) // reset (55)
-
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x200000, 0x200001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE( 0x204000, 0x204003 ) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
- AM_RANGE( 0x208000, 0x208003 ) AM_WRITE(lhb2_igs003_w )
- AM_RANGE( 0x208002, 0x208003 ) AM_READ(lhb2_igs003_r )
- AM_RANGE( 0x20c000, 0x20cfff ) AM_RAM AM_SHARE("priority_ram")
- AM_RANGE( 0x210000, 0x211fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram")
- AM_RANGE( 0x214000, 0x214001 ) AM_READ_PORT( "COIN" )
- AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w )
- AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w )
- AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w )
-
- AM_RANGE( 0xa50000, 0xa50001 ) AM_WRITE(igs011_prot_addr_w )
+ map(0x020000, 0x0201ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w)); // inc (55)
+ map(0x020200, 0x0203ff).w(this, FUNC(igs011_state::lhb_igs011_prot2_swap_w)); // swap (33)
+ map(0x020400, 0x0205ff).r(this, FUNC(igs011_state::lhb2_igs011_prot2_r)); // read
+ map(0x020600, 0x0207ff).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (55)
+
+ map(0x100000, 0x103fff).ram().share("nvram");
+ map(0x200001, 0x200001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x204000, 0x204003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x208000, 0x208003).w(this, FUNC(igs011_state::lhb2_igs003_w));
+ map(0x208002, 0x208003).r(this, FUNC(igs011_state::lhb2_igs003_r));
+ map(0x20c000, 0x20cfff).ram().share("priority_ram");
+ map(0x210000, 0x211fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram");
+ map(0x214000, 0x214001).portr("COIN");
+ map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w));
+ map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w));
+ map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w));
+
+ map(0xa50000, 0xa50001).w(this, FUNC(igs011_state::igs011_prot_addr_w));
// AM_RANGE( 0xa50000, 0xa50005 ) AM_READ(igs011_prot_fake_r )
- AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w )
- AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w )
- AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w )
- AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w )
- AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w )
- AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w )
- AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w )
- AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w )
- AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w )
- AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_3_dips_r )
-ADDRESS_MAP_END
+ map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w));
+ map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w));
+ map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w));
+ map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w));
+ map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w));
+ map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w));
+ map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w));
+ map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w));
+ map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w));
+ map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_3_dips_r));
+}
-ADDRESS_MAP_START(igs011_state::nkishusp)
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
+void igs011_state::nkishusp(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
// nkishusp: IGS011 protection dynamically mapped at 1ff8x
// AM_RANGE( 0x01ff80, 0x01ff87 ) AM_WRITE(igs011_prot1_w )
// AM_RANGE( 0x01ff88, 0x01ff89 ) AM_READ ( igs011_prot1_r )
// to be done:
- AM_RANGE( 0x023000, 0x0231ff ) AM_WRITE(igs011_prot2_inc_w ) // inc (55)
- AM_RANGE( 0x023200, 0x0233ff ) AM_WRITE(lhb_igs011_prot2_swap_w ) // swap (33)
- AM_RANGE( 0x023400, 0x0235ff ) AM_READ(lhb2_igs011_prot2_r ) // read
- AM_RANGE( 0x023600, 0x0237ff ) AM_WRITE(igs011_prot2_reset_w ) // reset (55)
-
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x200000, 0x200001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE( 0x204000, 0x204003 ) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
- AM_RANGE( 0x208000, 0x208003 ) AM_WRITE(lhb2_igs003_w )
- AM_RANGE( 0x208002, 0x208003 ) AM_READ(lhb2_igs003_r )
- AM_RANGE( 0x20c000, 0x20cfff ) AM_RAM AM_SHARE("priority_ram")
- AM_RANGE( 0x210000, 0x211fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram")
- AM_RANGE( 0x214000, 0x214001 ) AM_READ_PORT( "COIN" )
- AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w )
- AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w )
- AM_RANGE( 0xa38000, 0xa38001 ) AM_WRITE(lhb_irq_enable_w )
- AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w )
-
- AM_RANGE( 0xa50000, 0xa50001 ) AM_WRITE(igs011_prot_addr_w )
+ map(0x023000, 0x0231ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w)); // inc (55)
+ map(0x023200, 0x0233ff).w(this, FUNC(igs011_state::lhb_igs011_prot2_swap_w)); // swap (33)
+ map(0x023400, 0x0235ff).r(this, FUNC(igs011_state::lhb2_igs011_prot2_r)); // read
+ map(0x023600, 0x0237ff).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (55)
+
+ map(0x100000, 0x103fff).ram().share("nvram");
+ map(0x200001, 0x200001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x204000, 0x204003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x208000, 0x208003).w(this, FUNC(igs011_state::lhb2_igs003_w));
+ map(0x208002, 0x208003).r(this, FUNC(igs011_state::lhb2_igs003_r));
+ map(0x20c000, 0x20cfff).ram().share("priority_ram");
+ map(0x210000, 0x211fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram");
+ map(0x214000, 0x214001).portr("COIN");
+ map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w));
+ map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w));
+ map(0xa38000, 0xa38001).w(this, FUNC(igs011_state::lhb_irq_enable_w));
+ map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w));
+
+ map(0xa50000, 0xa50001).w(this, FUNC(igs011_state::igs011_prot_addr_w));
// AM_RANGE( 0xa50000, 0xa50005 ) AM_READ(igs011_prot_fake_r )
- AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w )
- AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w )
- AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w )
- AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w )
- AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w )
- AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w )
- AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w )
- AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w )
- AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w )
- AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_3_dips_r )
-ADDRESS_MAP_END
+ map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w));
+ map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w));
+ map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w));
+ map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w));
+ map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w));
+ map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w));
+ map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w));
+ map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w));
+ map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w));
+ map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_3_dips_r));
+}
@@ -2905,81 +2912,83 @@ WRITE16_MEMBER(igs011_state::vbowl_link_1_w){ }
WRITE16_MEMBER(igs011_state::vbowl_link_2_w){ }
WRITE16_MEMBER(igs011_state::vbowl_link_3_w){ }
-ADDRESS_MAP_START(igs011_state::vbowl)
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
+void igs011_state::vbowl(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
// vbowl: IGS011 protection dynamically mapped at 834x
// AM_RANGE( 0x008340, 0x008347 ) AM_WRITE(igs011_prot1_w )
// AM_RANGE( 0x008348, 0x008349 ) AM_READ(igs011_prot1_r )
// IGS012
- AM_RANGE( 0x001600, 0x00160f ) AM_WRITE(igs012_prot_swap_w ) AM_MIRROR(0x01c000) // swap (a5 / 55)
- AM_RANGE( 0x001610, 0x00161f ) AM_READ(igs012_prot_r ) AM_MIRROR(0x01c000) // read (mode 0)
- AM_RANGE( 0x001620, 0x00162f ) AM_WRITE(igs012_prot_dec_inc_w ) AM_MIRROR(0x01c000) // dec (aa), inc (fa)
- AM_RANGE( 0x001630, 0x00163f ) AM_WRITE(igs012_prot_inc_w ) AM_MIRROR(0x01c000) // inc (ff)
- AM_RANGE( 0x001640, 0x00164f ) AM_WRITE(igs012_prot_copy_w ) AM_MIRROR(0x01c000) // copy (22)
- AM_RANGE( 0x001650, 0x00165f ) AM_WRITE(igs012_prot_dec_copy_w ) AM_MIRROR(0x01c000) // dec (5a), copy (33)
- AM_RANGE( 0x001660, 0x00166f ) AM_READ(igs012_prot_r ) AM_MIRROR(0x01c000) // read (mode 1)
- AM_RANGE( 0x001670, 0x00167f ) AM_WRITE(igs012_prot_mode_w ) AM_MIRROR(0x01c000) // mode (cc / dd)
-
- AM_RANGE( 0x00d400, 0x00d43f ) AM_WRITE(igs011_prot2_dec_w ) // dec (33)
- AM_RANGE( 0x00d440, 0x00d47f ) AM_WRITE(drgnwrld_igs011_prot2_swap_w ) // swap (33)
- AM_RANGE( 0x00d480, 0x00d4bf ) AM_WRITE(igs011_prot2_reset_w ) // reset (33)
- AM_RANGE( 0x00d4c0, 0x00d4ff ) AM_READ(drgnwrldv20j_igs011_prot2_r ) // read
-
- AM_RANGE( 0x50f000, 0x50f1ff ) AM_WRITE(igs011_prot2_dec_w ) // dec (33)
- AM_RANGE( 0x50f200, 0x50f3ff ) AM_WRITE(vbowl_igs011_prot2_swap_w ) // swap (33)
- AM_RANGE( 0x50f400, 0x50f5ff ) AM_WRITE(igs011_prot2_reset_w ) // reset (33)
- AM_RANGE( 0x50f600, 0x50f7ff ) AM_READ(vbowl_igs011_prot2_r ) // read
-
- AM_RANGE( 0x902000, 0x902fff ) AM_WRITE(igs012_prot_reset_w ) // reset?
+ map(0x001600, 0x00160f).w(this, FUNC(igs011_state::igs012_prot_swap_w)).mirror(0x01c000); // swap (a5 / 55)
+ map(0x001610, 0x00161f).r(this, FUNC(igs011_state::igs012_prot_r)).mirror(0x01c000); // read (mode 0)
+ map(0x001620, 0x00162f).w(this, FUNC(igs011_state::igs012_prot_dec_inc_w)).mirror(0x01c000); // dec (aa), inc (fa)
+ map(0x001630, 0x00163f).w(this, FUNC(igs011_state::igs012_prot_inc_w)).mirror(0x01c000); // inc (ff)
+ map(0x001640, 0x00164f).w(this, FUNC(igs011_state::igs012_prot_copy_w)).mirror(0x01c000); // copy (22)
+ map(0x001650, 0x00165f).w(this, FUNC(igs011_state::igs012_prot_dec_copy_w)).mirror(0x01c000); // dec (5a), copy (33)
+ map(0x001660, 0x00166f).r(this, FUNC(igs011_state::igs012_prot_r)).mirror(0x01c000); // read (mode 1)
+ map(0x001670, 0x00167f).w(this, FUNC(igs011_state::igs012_prot_mode_w)).mirror(0x01c000); // mode (cc / dd)
+
+ map(0x00d400, 0x00d43f).w(this, FUNC(igs011_state::igs011_prot2_dec_w)); // dec (33)
+ map(0x00d440, 0x00d47f).w(this, FUNC(igs011_state::drgnwrld_igs011_prot2_swap_w)); // swap (33)
+ map(0x00d480, 0x00d4bf).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (33)
+ map(0x00d4c0, 0x00d4ff).r(this, FUNC(igs011_state::drgnwrldv20j_igs011_prot2_r)); // read
+
+ map(0x50f000, 0x50f1ff).w(this, FUNC(igs011_state::igs011_prot2_dec_w)); // dec (33)
+ map(0x50f200, 0x50f3ff).w(this, FUNC(igs011_state::vbowl_igs011_prot2_swap_w)); // swap (33)
+ map(0x50f400, 0x50f5ff).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (33)
+ map(0x50f600, 0x50f7ff).r(this, FUNC(igs011_state::vbowl_igs011_prot2_r)); // read
+
+ map(0x902000, 0x902fff).w(this, FUNC(igs011_state::igs012_prot_reset_w)); // reset?
// AM_RANGE( 0x902000, 0x902005 ) AM_WRITE(igs012_prot_fake_r )
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram")
- AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w )
- AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram")
- AM_RANGE( 0x520000, 0x520001 ) AM_READ_PORT( "COIN" )
- AM_RANGE( 0x600000, 0x600007 ) AM_READWRITE(ics2115_word_r, ics2115_word_w )
- AM_RANGE( 0x700000, 0x700003 ) AM_RAM AM_SHARE("vbowl_trackball")
- AM_RANGE( 0x700004, 0x700005 ) AM_WRITE(vbowl_pen_hi_w )
- AM_RANGE( 0x800000, 0x800003 ) AM_WRITE(vbowl_igs003_w )
- AM_RANGE( 0x800002, 0x800003 ) AM_READ(vbowl_igs003_r )
-
- AM_RANGE( 0xa00000, 0xa00001 ) AM_WRITE(vbowl_link_0_w )
- AM_RANGE( 0xa08000, 0xa08001 ) AM_WRITE(vbowl_link_1_w )
- AM_RANGE( 0xa10000, 0xa10001 ) AM_WRITE(vbowl_link_2_w )
- AM_RANGE( 0xa18000, 0xa18001 ) AM_WRITE(vbowl_link_3_w )
-
- AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w )
+ map(0x100000, 0x103fff).ram().share("nvram");
+ map(0x200000, 0x200fff).ram().share("priority_ram");
+ map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w));
+ map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram");
+ map(0x520000, 0x520001).portr("COIN");
+ map(0x600000, 0x600007).rw(this, FUNC(igs011_state::ics2115_word_r), FUNC(igs011_state::ics2115_word_w));
+ map(0x700000, 0x700003).ram().share("vbowl_trackball");
+ map(0x700004, 0x700005).w(this, FUNC(igs011_state::vbowl_pen_hi_w));
+ map(0x800000, 0x800003).w(this, FUNC(igs011_state::vbowl_igs003_w));
+ map(0x800002, 0x800003).r(this, FUNC(igs011_state::vbowl_igs003_r));
+
+ map(0xa00000, 0xa00001).w(this, FUNC(igs011_state::vbowl_link_0_w));
+ map(0xa08000, 0xa08001).w(this, FUNC(igs011_state::vbowl_link_1_w));
+ map(0xa10000, 0xa10001).w(this, FUNC(igs011_state::vbowl_link_2_w));
+ map(0xa18000, 0xa18001).w(this, FUNC(igs011_state::vbowl_link_3_w));
+
+ map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w));
// AM_RANGE( 0xa38000, 0xa38001 ) AM_WRITE(lhb_irq_enable_w )
- AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w )
+ map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w));
- AM_RANGE( 0xa48000, 0xa48001 ) AM_WRITE(igs011_prot_addr_w )
+ map(0xa48000, 0xa48001).w(this, FUNC(igs011_state::igs011_prot_addr_w));
// AM_RANGE( 0xa48000, 0xa48005 ) AM_WRITE(igs011_prot_fake_r )
- AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w )
- AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w )
- AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w )
- AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w )
- AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w )
- AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w )
- AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w )
- AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w )
- AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w )
-
- AM_RANGE( 0xa80000, 0xa80001 ) AM_READ(vbowl_unk_r ) // comm
- AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_4_dips_r )
- AM_RANGE( 0xa90000, 0xa90001 ) AM_READ(vbowl_unk_r ) // comm
- AM_RANGE( 0xa98000, 0xa98001 ) AM_READ(vbowl_unk_r ) // comm
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(igs011_state::vbowlhk)
- AM_IMPORT_FROM(vbowl)
- AM_RANGE( 0x800000, 0x800003 ) AM_WRITE(vbowlhk_igs003_w )
- AM_RANGE( 0x50f600, 0x50f7ff ) AM_READ(vbowlhk_igs011_prot2_r ) // read
-ADDRESS_MAP_END
+ map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w));
+ map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w));
+ map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w));
+ map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w));
+ map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w));
+ map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w));
+ map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w));
+ map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w));
+ map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w));
+
+ map(0xa80000, 0xa80001).r(this, FUNC(igs011_state::vbowl_unk_r)); // comm
+ map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_4_dips_r));
+ map(0xa90000, 0xa90001).r(this, FUNC(igs011_state::vbowl_unk_r)); // comm
+ map(0xa98000, 0xa98001).r(this, FUNC(igs011_state::vbowl_unk_r)); // comm
+}
+
+
+void igs011_state::vbowlhk(address_map &map)
+{
+ vbowl(map);
+ map(0x800000, 0x800003).w(this, FUNC(igs011_state::vbowlhk_igs003_w));
+ map(0x50f600, 0x50f7ff).r(this, FUNC(igs011_state::vbowlhk_igs011_prot2_r)); // read
+}