summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/m90.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/m90.cpp')
-rw-r--r--src/mame/drivers/m90.cpp194
1 files changed, 93 insertions, 101 deletions
diff --git a/src/mame/drivers/m90.cpp b/src/mame/drivers/m90.cpp
index fe63826ffa9..39b3747a95a 100644
--- a/src/mame/drivers/m90.cpp
+++ b/src/mame/drivers/m90.cpp
@@ -23,7 +23,6 @@
#include "includes/iremipt.h"
#include "cpu/nec/nec.h"
-#include "cpu/nec/v25.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/irem_cpu.h"
@@ -730,32 +729,32 @@ WRITE_LINE_MEMBER(m90_state::bomblord_vblank_int_w)
/* Basic hardware -- no decryption table is setup for CPU */
-MACHINE_CONFIG_START(m90_state::m90)
+void m90_state::m90(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", V35, XTAL(32'000'000)/2)
- MCFG_DEVICE_PROGRAM_MAP(m90_main_cpu_map)
- MCFG_DEVICE_IO_MAP(m90_main_cpu_io_map)
+ V35(config, m_maincpu, XTAL(32'000'000)/2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &m90_state::m90_main_cpu_map);
+ m_maincpu->set_addrmap(AS_IO, &m90_state::m90_main_cpu_io_map);
- MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(3'579'545)) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(m90_sound_cpu_map)
- MCFG_DEVICE_IO_MAP(m90_sound_cpu_io_map)
- MCFG_DEVICE_PERIODIC_INT_DRIVER(m90_state, nmi_line_pulse, 128*60) /* clocked by V1? (Vigilante) */
- /* IRQs are generated by main Z80 and YM2151 */
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("soundirq", rst_neg_buffer_device, inta_cb)
+ Z80(config, m_soundcpu, XTAL(3'579'545)); /* verified on pcb */
+ m_soundcpu->set_addrmap(AS_PROGRAM, &m90_state::m90_sound_cpu_map);
+ m_soundcpu->set_addrmap(AS_IO, &m90_state::m90_sound_cpu_io_map);
+ m_soundcpu->set_periodic_int(FUNC(m90_state::nmi_line_pulse), attotime::from_hz(128*60)); /* clocked by V1? (Vigilante) */
+ /* IRQs are generated by main Z80 and YM2151 */
+ m_soundcpu->set_irq_acknowledge_callback("soundirq", FUNC(rst_neg_buffer_device::inta_cb));
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 64*8)
- MCFG_SCREEN_VISIBLE_AREA(6*8, 54*8-1, 17*8, 47*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(m90_state, screen_update_m90)
- MCFG_SCREEN_PALETTE("palette")
- MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", NEC_INPUT_LINE_INTP0))
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_m90)
- MCFG_PALETTE_ADD("palette", 512)
- MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ 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(64*8, 64*8);
+ m_screen->set_visarea(6*8, 54*8-1, 17*8, 47*8-1);
+ m_screen->set_screen_update(FUNC(m90_state::screen_update_m90));
+ m_screen->set_palette(m_palette);
+ m_screen->screen_vblank().set_inputline("maincpu", NEC_INPUT_LINE_INTP0);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_m90);
+ PALETTE(config, m_palette, 512).set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
@@ -766,122 +765,115 @@ MACHINE_CONFIG_START(m90_state::m90)
RST_NEG_BUFFER(config, "soundirq", 0).int_callback().set_inputline(m_soundcpu, 0);
- MCFG_DEVICE_ADD("m72", IREM_M72_AUDIO)
+ IREM_M72_AUDIO(config, "m72");
ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545))); /* verified on pcb */
ymsnd.irq_handler().set("soundirq", FUNC(rst_neg_buffer_device::rst28_w));
ymsnd.add_route(0, "speaker", 0.15);
ymsnd.add_route(1, "speaker", 0.15);
- MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.1) // unknown DAC
- MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
-MACHINE_CONFIG_END
-
+ DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.1); // unknown DAC
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
+ vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+}
-MACHINE_CONFIG_START(m90_state::hasamu)
+void m90_state::hasamu(machine_config &config)
+{
m90(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_V25_CONFIG(gunforce_decryption_table)
-MACHINE_CONFIG_END
+ subdevice<v35_device>("maincpu")->set_decryption_table(gunforce_decryption_table);
+}
-MACHINE_CONFIG_START(m90_state::quizf1)
+void m90_state::quizf1(machine_config &config)
+{
m90(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(quizf1_main_cpu_map)
- MCFG_DEVICE_IO_MAP(quizf1_main_cpu_io_map)
- MCFG_V25_CONFIG(lethalth_decryption_table)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VISIBLE_AREA(6*8, 54*8-1, 17*8-8, 47*8-1+8)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(m90_state::matchit2)
+ m_maincpu->set_addrmap(AS_PROGRAM, &m90_state::quizf1_main_cpu_map);
+ m_maincpu->set_addrmap(AS_IO, &m90_state::quizf1_main_cpu_io_map);
+ subdevice<v35_device>("maincpu")->set_decryption_table(lethalth_decryption_table);
+
+ m_screen->set_visarea(6*8, 54*8-1, 17*8-8, 47*8-1+8);
+}
+
+void m90_state::matchit2(machine_config &config)
+{
m90(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_V25_CONFIG(matchit2_decryption_table)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VISIBLE_AREA(6*8, 54*8-1, 17*8-8, 47*8-1+8)
-MACHINE_CONFIG_END
+ subdevice<v35_device>("maincpu")->set_decryption_table(matchit2_decryption_table);
+ m_screen->set_visarea(6*8, 54*8-1, 17*8-8, 47*8-1+8);
+}
-MACHINE_CONFIG_START(m90_state::riskchal)
+void m90_state::riskchal(machine_config &config)
+{
m90(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_V25_CONFIG(gussun_decryption_table)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VISIBLE_AREA(10*8, 50*8-1, 17*8, 47*8-1)
-MACHINE_CONFIG_END
+ subdevice<v35_device>("maincpu")->set_decryption_table(gussun_decryption_table);
+ m_screen->set_visarea(10*8, 50*8-1, 17*8, 47*8-1);
+}
-MACHINE_CONFIG_START(m90_state::bombrman)
+void m90_state::bombrman(machine_config &config)
+{
m90(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_V25_CONFIG(bomberman_decryption_table)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VISIBLE_AREA(10*8, 50*8-1, 17*8, 47*8-1)
-MACHINE_CONFIG_END
+ subdevice<v35_device>("maincpu")->set_decryption_table(bomberman_decryption_table);
+ m_screen->set_visarea(10*8, 50*8-1, 17*8, 47*8-1);
+}
-MACHINE_CONFIG_START(m90_state::bbmanwj)
+void m90_state::bbmanwj(machine_config &config)
+{
m90(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_V25_CONFIG(dynablaster_decryption_table)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VISIBLE_AREA(10*8, 50*8-1, 17*8, 47*8-1)
-MACHINE_CONFIG_END
+ subdevice<v35_device>("maincpu")->set_decryption_table(dynablaster_decryption_table);
+ m_screen->set_visarea(10*8, 50*8-1, 17*8, 47*8-1);
+}
-MACHINE_CONFIG_START(m90_state::bbmanw)
+void m90_state::bbmanw(machine_config &config)
+{
bbmanwj(config);
- MCFG_DEVICE_MODIFY("soundcpu")
- MCFG_DEVICE_IO_MAP(m99_sound_cpu_io_map)
- MCFG_DEVICE_PERIODIC_INT_DRIVER(m90_state, fake_nmi, 128*60)
-MACHINE_CONFIG_END
-
+ m_soundcpu->set_addrmap(AS_IO, &m90_state::m99_sound_cpu_io_map);
+ m_soundcpu->set_periodic_int(FUNC(m90_state::fake_nmi), attotime::from_hz(128*60));
+}
-MACHINE_CONFIG_START(m90_state::bomblord)
+void m90_state::bomblord(machine_config &config)
+{
m90(config);
- MCFG_DEVICE_REPLACE("maincpu", V30, 32000000/4)
- MCFG_DEVICE_PROGRAM_MAP(bomblord_main_cpu_map)
- MCFG_DEVICE_IO_MAP(m90_main_cpu_io_map)
+ V30(config.replace(), m_maincpu, 32000000/4);
+ m_maincpu->set_addrmap(AS_PROGRAM, &m90_state::bomblord_main_cpu_map);
+ m_maincpu->set_addrmap(AS_IO, &m90_state::m90_main_cpu_io_map);
- MCFG_DEVICE_MODIFY("soundcpu")
- MCFG_DEVICE_IO_MAP(m99_sound_cpu_io_map)
- MCFG_DEVICE_PERIODIC_INT_DRIVER(m90_state, bomblord_fake_nmi, 128*60)
+ m_soundcpu->set_addrmap(AS_IO, &m90_state::m99_sound_cpu_io_map);
+ m_soundcpu->set_periodic_int(FUNC(m90_state::bomblord_fake_nmi), attotime::from_hz(128*60));
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VISIBLE_AREA(10*8, 50*8-1, 17*8, 47*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(m90_state, screen_update_bomblord)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, m90_state, bomblord_vblank_int_w))
+ m_screen->set_visarea(10*8, 50*8-1, 17*8, 47*8-1);
+ m_screen->set_screen_update(FUNC(m90_state::screen_update_bomblord));
+ m_screen->screen_vblank().set(FUNC(m90_state::bomblord_vblank_int_w));
MCFG_VIDEO_START_OVERRIDE(m90_state,bomblord)
-MACHINE_CONFIG_END
-
+}
-MACHINE_CONFIG_START(m90_state::dynablsb)
+void m90_state::dynablsb(machine_config &config)
+{
m90(config);
- MCFG_DEVICE_REPLACE("maincpu", V30, 32000000/4)
- MCFG_DEVICE_PROGRAM_MAP(dynablsb_main_cpu_map)
- MCFG_DEVICE_IO_MAP(dynablsb_main_cpu_io_map)
+ V30(config.replace(), m_maincpu, 32000000/4);
+ m_maincpu->set_addrmap(AS_PROGRAM, &m90_state::dynablsb_main_cpu_map);
+ m_maincpu->set_addrmap(AS_IO, &m90_state::dynablsb_main_cpu_io_map);
- MCFG_DEVICE_MODIFY("soundcpu")
- MCFG_DEVICE_IO_MAP(dynablsb_sound_cpu_io_map)
- MCFG_DEVICE_PERIODIC_INT_DRIVER(m90_state, irq0_line_hold, 64*60) /* half the sample rate of the original */
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_REMOVE()
+ m_soundcpu->set_addrmap(AS_IO, &m90_state::dynablsb_sound_cpu_io_map);
+ m_soundcpu->set_periodic_int(FUNC(m90_state::irq0_line_hold), attotime::from_hz(64*60)); /* half the sample rate of the original */
+ m_soundcpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate());
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_SIZE(320, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_DRIVER(m90_state, screen_update_dynablsb)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, m90_state, dynablsb_vblank_int_w))
+ m_screen->set_size(320, 240);
+ m_screen->set_visarea(0, 319, 0, 239);
+ m_screen->set_screen_update(FUNC(m90_state::screen_update_dynablsb));
+ m_screen->screen_vblank().set(FUNC(m90_state::dynablsb_vblank_int_w));
MCFG_VIDEO_START_OVERRIDE(m90_state,dynablsb)
- MCFG_DEVICE_REMOVE("m72")
- MCFG_DEVICE_REMOVE("soundirq")
+ config.device_remove("m72");
+ config.device_remove("soundirq");
auto &soundlatch(*subdevice<generic_latch_8_device>("soundlatch"));
soundlatch.data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI);
soundlatch.set_separate_acknowledge(false);
subdevice<ym2151_device>("ymsnd")->irq_handler().set_nop(); /* this bootleg polls the YM2151 instead of taking interrupts from it */
-MACHINE_CONFIG_END
+}
/***************************************************************************/