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.cpp192
1 files changed, 94 insertions, 98 deletions
diff --git a/src/mame/drivers/igs011.cpp b/src/mame/drivers/igs011.cpp
index f218aac94a9..d4596193eeb 100644
--- a/src/mame/drivers/igs011.cpp
+++ b/src/mame/drivers/igs011.cpp
@@ -272,15 +272,15 @@ private:
void drgnwrld_gfx_decrypt();
void prot_mem_range_set();
- void drgnwrld(address_map &map);
- void drgnwrld_igs012(address_map &map);
- void lhb(address_map &map);
- void lhb2(address_map &map);
- void nkishusp(address_map &map);
- void vbowl(address_map &map);
- void vbowlhk(address_map &map);
- void wlcc(address_map &map);
- void xymg(address_map &map);
+ void drgnwrld_mem(address_map &map);
+ void drgnwrld_igs012_mem(address_map &map);
+ void lhb_mem(address_map &map);
+ void lhb2_mem(address_map &map);
+ void nkishusp_mem(address_map &map);
+ void vbowl_mem(address_map &map);
+ void vbowlhk_mem(address_map &map);
+ void wlcc_mem(address_map &map);
+ void xymg_mem(address_map &map);
};
@@ -2547,7 +2547,7 @@ void igs011_state::init_nkishusp()
***************************************************************************/
-void igs011_state::drgnwrld(address_map &map)
+void igs011_state::drgnwrld_mem(address_map &map)
{
// drgnwrld: IGS011 protection dynamically mapped at 1dd7x
// AM_RANGE( 0x01dd70, 0x01dd77 ) AM_WRITE(igs011_prot1_w )
@@ -2583,9 +2583,9 @@ void igs011_state::drgnwrld(address_map &map)
map(0xa88000, 0xa88001).r(FUNC(igs011_state::igs_3_dips_r));
}
-void igs011_state::drgnwrld_igs012(address_map &map)
+void igs011_state::drgnwrld_igs012_mem(address_map &map)
{
- drgnwrld(map);
+ drgnwrld_mem(map);
// IGS012
map(0x001600, 0x00160f).w(FUNC(igs011_state::igs012_prot_swap_w)).mirror(0x01c000); // swap (a5 / 55)
@@ -2627,7 +2627,7 @@ WRITE16_MEMBER(igs011_state::lhb_okibank_w)
// popmessage("oki %04x",data);
}
-void igs011_state::lhb(address_map &map)
+void igs011_state::lhb_mem(address_map &map)
{
map(0x000000, 0x07ffff).rom();
@@ -2670,7 +2670,7 @@ void igs011_state::lhb(address_map &map)
map(0x888000, 0x888001).r(FUNC(igs011_state::igs_5_dips_r));
}
-void igs011_state::xymg(address_map &map)
+void igs011_state::xymg_mem(address_map &map)
{
map(0x000000, 0x07ffff).rom();
@@ -2712,7 +2712,7 @@ void igs011_state::xymg(address_map &map)
map(0x888000, 0x888001).r(FUNC(igs011_state::igs_3_dips_r));
}
-void igs011_state::wlcc(address_map &map)
+void igs011_state::wlcc_mem(address_map &map)
{
// wlcc: IGS011 protection dynamically mapped at 834x
// AM_RANGE( 0x008340, 0x008347 ) AM_WRITE(igs011_prot1_w )
@@ -2753,7 +2753,7 @@ void igs011_state::wlcc(address_map &map)
-void igs011_state::lhb2(address_map &map)
+void igs011_state::lhb2_mem(address_map &map)
{
map(0x000000, 0x07ffff).rom();
@@ -2796,7 +2796,7 @@ void igs011_state::lhb2(address_map &map)
-void igs011_state::nkishusp(address_map &map)
+void igs011_state::nkishusp_mem(address_map &map)
{
map(0x000000, 0x07ffff).rom();
@@ -2900,7 +2900,7 @@ WRITE16_MEMBER(igs011_state::vbowl_link_1_w){ }
WRITE16_MEMBER(igs011_state::vbowl_link_2_w){ }
WRITE16_MEMBER(igs011_state::vbowl_link_3_w){ }
-void igs011_state::vbowl(address_map &map)
+void igs011_state::vbowl_mem(address_map &map)
{
map(0x000000, 0x07ffff).rom();
@@ -2972,9 +2972,9 @@ void igs011_state::vbowl(address_map &map)
}
-void igs011_state::vbowlhk(address_map &map)
+void igs011_state::vbowlhk_mem(address_map &map)
{
- vbowl(map);
+ vbowl_mem(map);
map(0x800000, 0x800003).w(FUNC(igs011_state::vbowlhk_igs003_w));
map(0x50f600, 0x50f7ff).r(FUNC(igs011_state::vbowlhk_igs011_prot2_r)); // read
}
@@ -4160,53 +4160,52 @@ static GFXDECODE_START( gfx_igs011_hi )
GFXDECODE_END
#endif
-MACHINE_CONFIG_START(igs011_state::igs011_base)
- MCFG_DEVICE_ADD("maincpu",M68000, XTAL(22'000'000)/3)
+void igs011_state::igs011_base(machine_config &config)
+{
+ M68000(config, m_maincpu, XTAL(22'000'000)/3);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(512, 256)
- MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(igs011_state, screen_update_igs011)
- MCFG_SCREEN_PALETTE("palette")
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(60);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ m_screen->set_size(512, 256);
+ m_screen->set_visarea(0, 512-1, 0, 240-1);
+ m_screen->set_screen_update(FUNC(igs011_state::screen_update_igs011));
+ m_screen->set_palette(m_palette);
PALETTE(config, m_palette, 0x2000/4);
m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR);
m_palette->set_membits(8);
-// MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_igs011)
+// GFXDECODE(config, "gfxdecode", m_palette, gfx_igs011);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(22'000'000)/21, okim6295_device::PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-MACHINE_CONFIG_END
-
+ OKIM6295(config, m_oki, XTAL(22'000'000)/21, okim6295_device::PIN7_HIGH);
+ m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
+}
TIMER_DEVICE_CALLBACK_MEMBER( igs011_state::lev5_timer_irq_cb )
{
m_maincpu->set_input_line(5, HOLD_LINE);
}
-MACHINE_CONFIG_START(igs011_state::drgnwrld)
+void igs011_state::drgnwrld(machine_config &config)
+{
igs011_base(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(drgnwrld)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", igs011_state, irq6_line_hold)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_irq", igs011_state, lev5_timer_irq_cb, attotime::from_hz(240)) // lev5 frequency drives the music tempo
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::drgnwrld_mem);
+ m_maincpu->set_vblank_int("screen", FUNC(igs011_state::irq6_line_hold));
+ TIMER(config, "timer_irq").configure_periodic(FUNC(igs011_state::lev5_timer_irq_cb), attotime::from_hz(240)); // lev5 frequency drives the music tempo
- MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
-MACHINE_CONFIG_END
+ YM3812(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 2.0);
+}
-MACHINE_CONFIG_START(igs011_state::drgnwrld_igs012)
+void igs011_state::drgnwrld_igs012(machine_config &config)
+{
drgnwrld(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(drgnwrld_igs012)
-MACHINE_CONFIG_END
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::drgnwrld_igs012_mem);
+}
INTERRUPT_GEN_MEMBER(igs011_state::lhb_vblank_irq)
@@ -4225,67 +4224,65 @@ TIMER_DEVICE_CALLBACK_MEMBER( igs011_state::lhb_timer_irq_cb )
m_maincpu->set_input_line(5, HOLD_LINE);
}
-MACHINE_CONFIG_START(igs011_state::lhb)
+void igs011_state::lhb(machine_config &config)
+{
igs011_base(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(lhb)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", igs011_state, lhb_vblank_irq)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_irq", igs011_state, lhb_timer_irq_cb, attotime::from_hz(240)) // lev5 frequency drives the music tempo
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::lhb_mem);
+ m_maincpu->set_vblank_int("screen", FUNC(igs011_state::lhb_vblank_irq));
+ TIMER(config, "timer_irq").configure_periodic(FUNC(igs011_state::lhb_timer_irq_cb), attotime::from_hz(240)); // lev5 frequency drives the music tempo
// irq 3 points to an apparently unneeded routine
-MACHINE_CONFIG_END
-
+}
TIMER_DEVICE_CALLBACK_MEMBER( igs011_state::lev3_timer_irq_cb )
{
m_maincpu->set_input_line(3, HOLD_LINE);
}
-MACHINE_CONFIG_START(igs011_state::wlcc)
+
+void igs011_state::wlcc(machine_config &config)
+{
igs011_base(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(wlcc)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", igs011_state, irq6_line_hold)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_irq", igs011_state, lev3_timer_irq_cb, attotime::from_hz(240)) // lev3 frequency drives the music tempo
-MACHINE_CONFIG_END
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::wlcc_mem);
+ m_maincpu->set_vblank_int("screen", FUNC(igs011_state::irq6_line_hold));
+ TIMER(config, "timer_irq").configure_periodic(FUNC(igs011_state::lev3_timer_irq_cb), attotime::from_hz(240)); // lev3 frequency drives the music tempo
+}
-MACHINE_CONFIG_START(igs011_state::xymg)
+void igs011_state::xymg(machine_config &config)
+{
igs011_base(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(xymg)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", igs011_state, irq6_line_hold)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_irq", igs011_state, lev3_timer_irq_cb, attotime::from_hz(240)) // lev3 frequency drives the music tempo
-MACHINE_CONFIG_END
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::xymg_mem);
+ m_maincpu->set_vblank_int("screen", FUNC(igs011_state::irq6_line_hold));
+ TIMER(config, "timer_irq").configure_periodic(FUNC(igs011_state::lev3_timer_irq_cb), attotime::from_hz(240)); // lev3 frequency drives the music tempo
+}
-MACHINE_CONFIG_START(igs011_state::lhb2)
+void igs011_state::lhb2(machine_config &config)
+{
igs011_base(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(lhb2)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", igs011_state, irq6_line_hold)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_irq", igs011_state, lev5_timer_irq_cb, attotime::from_hz(240)) // lev5 frequency drives the music tempo
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::lhb2_mem);
+ m_maincpu->set_vblank_int("screen", FUNC(igs011_state::irq6_line_hold));
+ TIMER(config, "timer_irq").configure_periodic(FUNC(igs011_state::lev5_timer_irq_cb), attotime::from_hz(240)); // lev5 frequency drives the music tempo
// MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_igs011_hi)
- MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
-MACHINE_CONFIG_END
+ YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 2.0);
+}
-MACHINE_CONFIG_START(igs011_state::nkishusp)
+void igs011_state::nkishusp(machine_config &config)
+{
igs011_base(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(nkishusp)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", igs011_state, irq6_line_hold)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_irq", igs011_state, lev3_timer_irq_cb, attotime::from_hz(240)) // lev3 frequency drives the music tempo
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::nkishusp_mem);
+ m_maincpu->set_vblank_int("screen", FUNC(igs011_state::irq6_line_hold));
+ TIMER(config, "timer_irq").configure_periodic(FUNC(igs011_state::lev3_timer_irq_cb), attotime::from_hz(240)); // lev3 frequency drives the music tempo
// VSync 60.0052Hz, HSync 15.620kHz
// MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_igs011_hi)
- MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
-MACHINE_CONFIG_END
+ YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 2.0);
+}
WRITE_LINE_MEMBER(igs011_state::sound_irq)
@@ -4293,30 +4290,29 @@ WRITE_LINE_MEMBER(igs011_state::sound_irq)
// m_maincpu->set_input_line(3, state);
}
-MACHINE_CONFIG_START(igs011_state::vbowl)
+void igs011_state::vbowl(machine_config &config)
+{
igs011_base(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(vbowl)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", igs011_state, irq6_line_hold)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_irq", igs011_state, lev3_timer_irq_cb, attotime::from_hz(240)) // lev3 frequency drives the music tempo
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::vbowl_mem);
+ m_maincpu->set_vblank_int("screen", FUNC(igs011_state::irq6_line_hold));
+ TIMER(config, "timer_irq").configure_periodic(FUNC(igs011_state::lev3_timer_irq_cb), attotime::from_hz(240)); // lev3 frequency drives the music tempo
// irq 5 points to a debug function (all routines are clearly patched out)
// irq 4 points to an apparently unneeded routine
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, igs011_state, screen_vblank_vbowl))
-// MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_igs011_hi)
+ m_screen->screen_vblank().set(FUNC(igs011_state::screen_vblank_vbowl));
+// GFXDECODE(config, "gfxdecode", m_palette, gfx_igs011_hi);
- MCFG_DEVICE_REMOVE("oki")
- MCFG_ICS2115_ADD("ics", 0)
- MCFG_ICS2115_IRQ_CB(WRITELINE(*this, igs011_state, sound_irq))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 5.0)
-MACHINE_CONFIG_END
+ config.device_remove("oki");
+ ICS2115(config, m_ics, 0);
+ m_ics->irq().set(FUNC(igs011_state::sound_irq));
+ m_ics->add_route(ALL_OUTPUTS, "mono", 5.0);
+}
-MACHINE_CONFIG_START(igs011_state::vbowlhk)
+void igs011_state::vbowlhk(machine_config &config)
+{
vbowl(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(vbowlhk)
-MACHINE_CONFIG_END
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::vbowlhk_mem);
+}
/***************************************************************************