summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2018-12-09 14:24:28 +0100
committer mooglyguy <therealmogminer@gmail.com>2018-12-09 14:24:54 +0100
commit6ba8b0f1ae4d98f9cfb7525aa90bf7d597da59bf (patch)
tree68df38e52143abe681018cd8049dfa38f28a76d1
parentbac960a725fa7e411cde4e140a372d6e82e232c3 (diff)
-mips, rsp: Removed MCFG, nw
-aleck64, hng64, kinst, namcops2, namcos23, ps2sony, pyson, vp101: Removed MACHINE_CONFIG_*, nw
-rw-r--r--src/devices/cpu/mips/mips3.h10
-rw-r--r--src/devices/cpu/rsp/rsp.h25
-rw-r--r--src/devices/imagedev/harddriv.h2
-rw-r--r--src/devices/machine/ioptimer.h5
-rw-r--r--src/mame/drivers/aleck64.cpp84
-rw-r--r--src/mame/drivers/hng64.cpp50
-rw-r--r--src/mame/drivers/kinst.cpp34
-rw-r--r--src/mame/drivers/magictg.cpp25
-rw-r--r--src/mame/drivers/n64.cpp96
-rw-r--r--src/mame/drivers/namcops2.cpp32
-rw-r--r--src/mame/drivers/namcos23.cpp253
-rw-r--r--src/mame/drivers/ps2sony.cpp78
-rw-r--r--src/mame/drivers/pyson.cpp29
-rw-r--r--src/mame/drivers/vp101.cpp87
14 files changed, 379 insertions, 431 deletions
diff --git a/src/devices/cpu/mips/mips3.h b/src/devices/cpu/mips/mips3.h
index f13ce45169e..8d16c6cbd84 100644
--- a/src/devices/cpu/mips/mips3.h
+++ b/src/devices/cpu/mips/mips3.h
@@ -264,16 +264,6 @@ struct mips3_tlb_entry {
#define MIPS3_MAX_TLB_ENTRIES 48
-#define MCFG_MIPS3_ICACHE_SIZE(_size) \
- downcast<mips3_device &>(*device).set_icache_size(_size);
-
-#define MCFG_MIPS3_DCACHE_SIZE(_size) \
- downcast<mips3_device &>(*device).set_dcache_size(_size);
-
-#define MCFG_MIPS3_SYSTEM_CLOCK(_clock) \
- downcast<mips3_device &>(*device).set_system_clock(_clock);
-
-
class mips3_frontend;
class mips3_device : public cpu_device, public device_vtlb_interface {
diff --git a/src/devices/cpu/rsp/rsp.h b/src/devices/cpu/rsp/rsp.h
index 0e07b732ad2..70e68867d6a 100644
--- a/src/devices/cpu/rsp/rsp.h
+++ b/src/devices/cpu/rsp/rsp.h
@@ -83,21 +83,6 @@ enum
#define RSPDRC_STRICT_VERIFY 0x0001 /* verify all instructions */
-#define MCFG_RSP_DP_REG_R_CB(_devcb) \
- downcast<rsp_device &>(*device).set_dp_reg_r_callback(DEVCB_##_devcb);
-
-#define MCFG_RSP_DP_REG_W_CB(_devcb) \
- downcast<rsp_device &>(*device).set_dp_reg_w_callback(DEVCB_##_devcb);
-
-#define MCFG_RSP_SP_REG_R_CB(_devcb) \
- downcast<rsp_device &>(*device).set_sp_reg_r_callback(DEVCB_##_devcb);
-
-#define MCFG_RSP_SP_REG_W_CB(_devcb) \
- downcast<rsp_device &>(*device).set_sp_reg_w_callback(DEVCB_##_devcb);
-
-#define MCFG_RSP_SP_SET_STATUS_CB(_devcb) \
- downcast<rsp_device &>(*device).set_status_callback(DEVCB_##_devcb);
-
class rsp_device : public cpu_device
{
@@ -111,11 +96,11 @@ public:
virtual ~rsp_device() override;
void resolve_cb();
- template <class Object> devcb_base &set_dp_reg_r_callback(Object &&cb) { return m_dp_reg_r_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_dp_reg_w_callback(Object &&cb) { return m_dp_reg_w_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_sp_reg_r_callback(Object &&cb) { return m_sp_reg_r_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_sp_reg_w_callback(Object &&cb) { return m_sp_reg_w_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_status_callback(Object &&cb) { return m_sp_set_status_func.set_callback(std::forward<Object>(cb)); }
+ auto dp_reg_r() { return m_dp_reg_r_func.bind(); }
+ auto dp_reg_w() { return m_dp_reg_w_func.bind(); }
+ auto sp_reg_r() { return m_sp_reg_r_func.bind(); }
+ auto sp_reg_w() { return m_sp_reg_w_func.bind(); }
+ auto status_set() { return m_sp_set_status_func.bind(); }
void rspdrc_flush_drc_cache();
void rspdrc_set_options(uint32_t options);
diff --git a/src/devices/imagedev/harddriv.h b/src/devices/imagedev/harddriv.h
index 674ff5c3570..92a6b733275 100644
--- a/src/devices/imagedev/harddriv.h
+++ b/src/devices/imagedev/harddriv.h
@@ -25,7 +25,7 @@ class harddisk_image_device : public device_t,
{
public:
// construction/destruction
- harddisk_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ harddisk_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
virtual ~harddisk_image_device();
template <typename Object> void set_device_load(Object &&cb) { m_device_image_load = std::forward<Object>(cb); }
diff --git a/src/devices/machine/ioptimer.h b/src/devices/machine/ioptimer.h
index 316349e7a90..8683f3cd61e 100644
--- a/src/devices/machine/ioptimer.h
+++ b/src/devices/machine/ioptimer.h
@@ -14,15 +14,12 @@
#pragma once
-#define MCFG_IOP_TIMER_IRQ_CALLBACK(_write) \
- downcast<iop_timer_device &>(*device).set_int_cb(DEVCB_##_write);
-
class iop_timer_device : public device_t
{
public:
iop_timer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_int_cb(Object &&cb) { return m_int_cb.set_callback(std::forward<Object>(cb)); }
+ auto irq() { return m_int_cb.bind(); }
DECLARE_READ32_MEMBER(read);
DECLARE_WRITE32_MEMBER(write);
diff --git a/src/mame/drivers/aleck64.cpp b/src/mame/drivers/aleck64.cpp
index d39085010aa..77b1883d10a 100644
--- a/src/mame/drivers/aleck64.cpp
+++ b/src/mame/drivers/aleck64.cpp
@@ -187,10 +187,11 @@ class aleck64_state : public n64_state
{
public:
aleck64_state(const machine_config &mconfig, device_type type, const char *tag)
- : n64_state(mconfig, type, tag),
- m_e90_vram(*this,"e90vram"),
- m_e90_pal(*this,"e90pal"),
- m_dip_read_offset(0) { }
+ : n64_state(mconfig, type, tag)
+ , m_e90_vram(*this,"e90vram")
+ , m_e90_pal(*this,"e90pal")
+ , m_dip_read_offset(0)
+ { }
void aleck64(machine_config &config);
void a64_e90(machine_config &config);
@@ -972,45 +973,43 @@ static INPUT_PORTS_START( srmvs )
INPUT_PORTS_END
-MACHINE_CONFIG_START(aleck64_state::aleck64)
-
+void aleck64_state::aleck64(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", VR4300BE, 93750000)
- MCFG_MIPS3_ICACHE_SIZE(16384)
- MCFG_MIPS3_DCACHE_SIZE(8192)
- MCFG_MIPS3_SYSTEM_CLOCK(62500000)
- MCFG_DEVICE_PROGRAM_MAP(n64_map)
- MCFG_CPU_FORCE_NO_DRC()
-
- MCFG_DEVICE_ADD("rsp", RSP, 62500000)
- MCFG_RSP_DP_REG_R_CB(READ32("rcp",n64_periphs, dp_reg_r))
- MCFG_RSP_DP_REG_W_CB(WRITE32("rcp",n64_periphs, dp_reg_w))
- MCFG_RSP_SP_REG_R_CB(READ32("rcp",n64_periphs, sp_reg_r))
- MCFG_RSP_SP_REG_W_CB(WRITE32("rcp",n64_periphs, sp_reg_w))
- MCFG_RSP_SP_SET_STATUS_CB(WRITE32("rcp",n64_periphs, sp_set_status))
- MCFG_DEVICE_PROGRAM_MAP(rsp_map)
- MCFG_CPU_FORCE_NO_DRC()
-
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(640, 525)
- MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
- MCFG_SCREEN_UPDATE_DRIVER(aleck64_state, screen_update_n64)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, aleck64_state, screen_vblank_n64))
-
- MCFG_PALETTE_ADD("palette", 0x1000)
+ VR4300BE(config, m_vr4300, 93750000);
+ m_vr4300->set_icache_size(16384);
+ m_vr4300->set_dcache_size(8192);
+ m_vr4300->set_system_clock(62500000);
+ m_vr4300->set_addrmap(AS_PROGRAM, &aleck64_state::n64_map);
+ m_vr4300->set_force_no_drc(true);
+
+ RSP(config, m_rsp, 62500000);
+ m_rsp->dp_reg_r().set(m_rcp_periphs, FUNC(n64_periphs::dp_reg_r));
+ m_rsp->dp_reg_w().set(m_rcp_periphs, FUNC(n64_periphs::dp_reg_w));
+ m_rsp->sp_reg_r().set(m_rcp_periphs, FUNC(n64_periphs::sp_reg_r));
+ m_rsp->sp_reg_w().set(m_rcp_periphs, FUNC(n64_periphs::sp_reg_w));
+ m_rsp->status_set().set(m_rcp_periphs, FUNC(n64_periphs::sp_set_status));
+ m_rsp->set_addrmap(AS_PROGRAM, &aleck64_state::rsp_map);
+ m_rsp->set_force_no_drc(true);
+
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen.set_size(640, 525);
+ screen.set_visarea(0, 639, 0, 239);
+ screen.set_screen_update(FUNC(aleck64_state::screen_update_n64));
+ screen.screen_vblank().set(FUNC(aleck64_state::screen_vblank_n64));
+
+ PALETTE(config, "palette", 0x1000);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("dac1", DMADAC)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_DEVICE_ADD("dac2", DMADAC)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ DMADAC(config, "dac1").add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ DMADAC(config, "dac2").add_route(ALL_OUTPUTS, "rspeaker", 1.0);
- N64PERIPH(config, "rcp", 0);
-MACHINE_CONFIG_END
+ N64PERIPH(config, m_rcp_periphs, 0);
+}
uint32_t aleck64_state::screen_update_e90(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
@@ -1087,14 +1086,13 @@ uint32_t aleck64_state::screen_update_e90(screen_device &screen, bitmap_rgb32 &b
return 0;
}
-MACHINE_CONFIG_START(aleck64_state::a64_e90)
+void aleck64_state::a64_e90(machine_config &config)
+{
aleck64(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(e90_map)
+ m_vr4300->set_addrmap(AS_PROGRAM, &aleck64_state::e90_map);
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_DRIVER(aleck64_state, screen_update_e90)
-MACHINE_CONFIG_END
+ subdevice<screen_device>("screen")->set_screen_update(FUNC(aleck64_state::screen_update_e90));
+}
void aleck64_state::init_aleck64()
{
diff --git a/src/mame/drivers/hng64.cpp b/src/mame/drivers/hng64.cpp
index 10d02f4944d..f4bc58d3e25 100644
--- a/src/mame/drivers/hng64.cpp
+++ b/src/mame/drivers/hng64.cpp
@@ -2108,25 +2108,25 @@ void hng64_state::init_io()
MACHINE_CONFIG_START(hng64_state::hng64)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", VR4300BE, HNG64_MASTER_CLOCK) // actually R4300
- MCFG_MIPS3_ICACHE_SIZE(16384)
- MCFG_MIPS3_DCACHE_SIZE(16384)
- MCFG_DEVICE_PROGRAM_MAP(hng_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hng64_state, hng64_irq, "screen", 0, 1)
+ VR4300BE(config, m_maincpu, HNG64_MASTER_CLOCK); // actually R4300
+ m_maincpu->set_icache_size(16384);
+ m_maincpu->set_dcache_size(16384);
+ m_maincpu->set_addrmap(AS_PROGRAM, &hng64_state::hng_map);
+
+ TIMER(config, "scantimer", 0).configure_scanline(FUNC(hng64_state::hng64_irq), "screen", 0, 1);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_DEVICE_ADD("rtc", RTC62423, XTAL(32'768))
+ RTC62423(config, m_rtc, XTAL(32'768));
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_hng64)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_hng64);
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_DRIVER(hng64_state, screen_update_hng64)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, hng64_state, screen_vblank_hng64))
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
+ m_screen->set_screen_update(FUNC(hng64_state::screen_update_hng64));
+ m_screen->screen_vblank().set(FUNC(hng64_state::screen_vblank_hng64));
- MCFG_PALETTE_ADD("palette", 0x1000)
- MCFG_PALETTE_FORMAT(XRGB)
+ PALETTE(config, m_palette, 0x1000).set_format(PALETTE_FORMAT_XRGB);
hng64_audio(config);
hng64_network(config);
@@ -2161,11 +2161,12 @@ MACHINE_CONFIG_START(hng64_state::hng64)
iomcu.serial0_out_cb().set(FUNC(hng64_state::sio0_w));
//iomcu.serial1_out_cb().set(FUNC(hng64_state::sio1_w)); // not initialized / used
- MCFG_DEVICE_ADD("dt71321_dpram", IDT71321, 0)
+ IDT71321(config, "dt71321_dpram", 0);
//MCFG_MB8421_INTL_AN0R(INPUTLINE("xxx", 0)) // I don't think the IRQs are connected
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(hng64_state::hng64_default)
+void hng64_state::hng64_default(machine_config &config)
+{
hng64(config);
hng64_lamps_device &lamps(HNG64_LAMPS(config, m_lamps, 0));
@@ -2177,31 +2178,34 @@ MACHINE_CONFIG_START(hng64_state::hng64_default)
lamps.lamps5_out_cb().set(FUNC(hng64_state::hng64_default_lamps5_w));
lamps.lamps6_out_cb().set(FUNC(hng64_state::hng64_default_lamps6_w));
lamps.lamps7_out_cb().set(FUNC(hng64_state::hng64_default_lamps7_w));
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(hng64_state::hng64_drive)
+void hng64_state::hng64_drive(machine_config &config)
+{
hng64(config);
hng64_lamps_device &lamps(HNG64_LAMPS(config, m_lamps, 0));
lamps.lamps5_out_cb().set(FUNC(hng64_state::hng64_drive_lamps5_w)); // force feedback steering
lamps.lamps6_out_cb().set(FUNC(hng64_state::hng64_drive_lamps6_w)); // lamps + coin counter
lamps.lamps7_out_cb().set(FUNC(hng64_state::hng64_drive_lamps7_w)); // lamps
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(hng64_state::hng64_shoot)
+void hng64_state::hng64_shoot(machine_config &config)
+{
hng64(config);
hng64_lamps_device &lamps(HNG64_LAMPS(config, m_lamps, 0));
lamps.lamps6_out_cb().set(FUNC(hng64_state::hng64_shoot_lamps6_w)); // start lamps (some misisng?!)
lamps.lamps7_out_cb().set(FUNC(hng64_state::hng64_shoot_lamps7_w)); // gun lamps
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(hng64_state::hng64_fight)
+void hng64_state::hng64_fight(machine_config &config)
+{
hng64(config);
hng64_lamps_device &lamps(HNG64_LAMPS(config, m_lamps, 0));
lamps.lamps6_out_cb().set(FUNC(hng64_state::hng64_fight_lamps6_w)); // coin counters
-MACHINE_CONFIG_END
+}
#define ROM_LOAD_HNG64_BIOS(bios,name,offset,length,hash) \
diff --git a/src/mame/drivers/kinst.cpp b/src/mame/drivers/kinst.cpp
index edb37fba599..72bfea15efd 100644
--- a/src/mame/drivers/kinst.cpp
+++ b/src/mame/drivers/kinst.cpp
@@ -718,33 +718,33 @@ INPUT_PORTS_END
*
*************************************/
-MACHINE_CONFIG_START(kinst_state::kinst)
-
+void kinst_state::kinst(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD(m_maincpu, R4600LE, MASTER_CLOCK*2)
- MCFG_MIPS3_ICACHE_SIZE(16384)
- MCFG_MIPS3_DCACHE_SIZE(16384)
- MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", kinst_state, irq0_start)
+ R4600LE(config, m_maincpu, MASTER_CLOCK*2);
+ m_maincpu->set_icache_size(16384);
+ m_maincpu->set_dcache_size(16384);
+ m_maincpu->set_addrmap(AS_PROGRAM, &kinst_state::main_map);
+ m_maincpu->set_vblank_int("screen", FUNC(kinst_state::irq0_start));
ATA_INTERFACE(config, m_ata).options(ata_devices, "hdd", nullptr, true);
m_ata->irq_handler().set_inputline("maincpu", 1);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_SIZE(320, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_DRIVER(kinst_state, screen_update)
- MCFG_SCREEN_PALETTE("palette")
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ screen.set_size(320, 240);
+ screen.set_visarea(0, 319, 0, 239);
+ screen.set_screen_update(FUNC(kinst_state::screen_update));
+ screen.set_palette("palette");
- MCFG_PALETTE_ADD_BBBBBGGGGGRRRRR("palette")
+ PALETTE(config, "palette", 32768).set_init("palette", FUNC(palette_device::palette_init_BBBBBGGGGGRRRRR));
/* sound hardware */
DCS_AUDIO_2K(config, m_dcs, 0);
-MACHINE_CONFIG_END
+}
diff --git a/src/mame/drivers/magictg.cpp b/src/mame/drivers/magictg.cpp
index b95338367fa..9a749b09e5b 100644
--- a/src/mame/drivers/magictg.cpp
+++ b/src/mame/drivers/magictg.cpp
@@ -159,7 +159,7 @@ public:
void magictg(machine_config &config);
private:
- required_device<cpu_device> m_mips;
+ required_device<mips3_device> m_mips;
required_device<adsp2181_device> m_adsp;
required_device<pci_bus_legacy_device> m_pci;
@@ -911,24 +911,21 @@ INPUT_PORTS_END
*************************************/
MACHINE_CONFIG_START(magictg_state::magictg)
- MCFG_DEVICE_ADD("mips", R5000BE, 150000000) /* TODO: CPU type and clock are unknown */
- //MCFG_MIPS3_ICACHE_SIZE(16384) /* TODO: Unknown */
- //MCFG_MIPS3_DCACHE_SIZE(16384) /* TODO: Unknown */
- MCFG_DEVICE_PROGRAM_MAP(magictg_map)
+ R5000BE(config, m_mips, 150000000); /* TODO: CPU type and clock are unknown */
+ //m_mips->set_icache_size(16384); /* TODO: Unknown */
+ //m_mips->set_dcache_size(16384); /* TODO: Unknown */
+ m_mips->set_addrmap(AS_PROGRAM, &magictg_state::magictg_map);
- MCFG_DEVICE_ADD("adsp", ADSP2181, 16000000)
- MCFG_DEVICE_PROGRAM_MAP(adsp_program_map)
- MCFG_DEVICE_DATA_MAP(adsp_data_map)
- MCFG_DEVICE_IO_MAP(adsp_io_map)
+ ADSP2181(config, m_adsp, 16000000);
+ m_adsp->set_addrmap(AS_PROGRAM, &magictg_state::adsp_program_map);
+ m_adsp->set_addrmap(AS_DATA, &magictg_state::adsp_data_map);
+ m_adsp->set_addrmap(AS_IO, &magictg_state::adsp_io_map);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("dac1", DMADAC)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
-
- MCFG_DEVICE_ADD("dac2", DMADAC)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ DMADAC(config, "dac1").add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ DMADAC(config, "dac2").add_route(ALL_OUTPUTS, "lspeaker", 1.0);
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(0, DEVICE_SELF, magictg_state, pci_dev0_r, pci_dev0_w)
diff --git a/src/mame/drivers/n64.cpp b/src/mame/drivers/n64.cpp
index 44687dc35c0..7c59945aadc 100644
--- a/src/mame/drivers/n64.cpp
+++ b/src/mame/drivers/n64.cpp
@@ -430,78 +430,70 @@ INTERRUPT_GEN_MEMBER(n64_mess_state::n64_reset_poll)
MACHINE_CONFIG_START(n64_mess_state::n64)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", VR4300BE, 93750000)
- MCFG_CPU_FORCE_NO_DRC()
- //MCFG_MIPS3_ICACHE_SIZE(16384) /* ?? */
- //MCFG_MIPS3_DCACHE_SIZE(8192) /* ?? */
- //MCFG_MIPS3_SYSTEM_CLOCK(62500000) /* ?? */
- MCFG_DEVICE_PROGRAM_MAP(n64_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", n64_mess_state, n64_reset_poll)
-
- MCFG_DEVICE_ADD("rsp", RSP, 62500000)
- MCFG_CPU_FORCE_NO_DRC()
- MCFG_RSP_DP_REG_R_CB(READ32("rcp",n64_periphs, dp_reg_r))
- MCFG_RSP_DP_REG_W_CB(WRITE32("rcp",n64_periphs, dp_reg_w))
- MCFG_RSP_SP_REG_R_CB(READ32("rcp",n64_periphs, sp_reg_r))
- MCFG_RSP_SP_REG_W_CB(WRITE32("rcp",n64_periphs, sp_reg_w))
- MCFG_RSP_SP_SET_STATUS_CB(WRITE32("rcp",n64_periphs, sp_set_status))
- MCFG_DEVICE_PROGRAM_MAP(rsp_map)
-
- MCFG_QUANTUM_TIME(attotime::from_hz(500000))
- //MCFG_QUANTUM_TIME(attotime::from_hz(1200))
+ VR4300BE(config, m_vr4300, 93750000);
+ m_vr4300->set_force_no_drc(true);
+ //m_vr4300->set_icache_size(16384);
+ //m_vr4300->set_dcache_size(8192);
+ //m_vr4300->set_system_clock(62500000);
+ m_vr4300->set_addrmap(AS_PROGRAM, &n64_mess_state::n64_map);
+ m_vr4300->set_vblank_int("screen", FUNC(n64_mess_state::n64_reset_poll));
+
+ RSP(config, m_rsp, 62500000);
+ m_rsp->set_force_no_drc(true);
+ m_rsp->dp_reg_r().set(m_rcp_periphs, FUNC(n64_periphs::dp_reg_r));
+ m_rsp->dp_reg_w().set(m_rcp_periphs, FUNC(n64_periphs::dp_reg_w));
+ m_rsp->sp_reg_r().set(m_rcp_periphs, FUNC(n64_periphs::sp_reg_r));
+ m_rsp->sp_reg_w().set(m_rcp_periphs, FUNC(n64_periphs::sp_reg_w));
+ m_rsp->status_set().set(m_rcp_periphs, FUNC(n64_periphs::sp_set_status));
+ m_rsp->set_addrmap(AS_PROGRAM, &n64_mess_state::rsp_map);
+
+ config.m_minimum_quantum = attotime::from_hz(500000);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
/* Video DACRATE is for quarter pixels, so the horizontal is also given in quarter pixels. However, the horizontal and vertical timing and sizing is adjustable by register and will be reset when the registers are written. */
- MCFG_SCREEN_RAW_PARAMS(DACRATE_NTSC*2,3093,0,3093,525,0,525)
- //MCFG_SCREEN_REFRESH_RATE(60)
- //MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- //MCFG_SCREEN_SIZE(640, 525)
- //MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE_DRIVER(n64_state, screen_update_n64)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, n64_state, screen_vblank_n64))
+ screen.set_raw(DACRATE_NTSC*2,3093,0,3093,525,0,525);
+ screen.set_screen_update(FUNC(n64_state::screen_update_n64));
+ screen.screen_vblank().set(FUNC(n64_state::screen_vblank_n64));
- MCFG_PALETTE_ADD("palette", 0x1000)
+ PALETTE(config, "palette", 0x1000);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("dac2", DMADAC)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_DEVICE_ADD("dac1", DMADAC)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ DMADAC(config, "dac2").add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ DMADAC(config, "dac1").add_route(ALL_OUTPUTS, "rspeaker", 1.0);
- N64PERIPH(config, "rcp", 0);
+ N64PERIPH(config, m_rcp_periphs, 0);
/* cartridge */
- MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "n64_cart")
- MCFG_GENERIC_EXTENSIONS("v64,z64,rom,n64,bin")
- MCFG_GENERIC_MANDATORY
- MCFG_GENERIC_LOAD(n64_mess_state, n64_cart)
+ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "n64_cart"));
+ cartslot.set_extensions("v64,z64,rom,n64,bin");
+ cartslot.set_must_be_loaded(true);
+ cartslot.set_device_load(device_image_load_delegate(&n64_mess_state::device_image_load_n64_cart, this));
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("cart_list", "n64")
-MACHINE_CONFIG_END
+ SOFTWARE_LIST(config, "cart_list").set_original("n64");
+}
-MACHINE_CONFIG_START(n64_mess_state::n64dd)
+void n64_mess_state::n64dd(machine_config &config)
+{
n64(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(n64dd_map)
+ m_vr4300->set_addrmap(AS_PROGRAM, &n64_mess_state::n64dd_map);
MCFG_MACHINE_START_OVERRIDE(n64_mess_state, n64dd)
- MCFG_DEVICE_REMOVE("cartslot")
- MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "n64_cart")
- MCFG_GENERIC_EXTENSIONS("v64,z64,rom,n64,bin")
- MCFG_GENERIC_LOAD(n64_mess_state, n64_cart)
+ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "n64_cart"));
+ cartslot.set_extensions("v64,z64,rom,n64,bin");
+ cartslot.set_device_load(device_image_load_delegate(&n64_mess_state::device_image_load_n64_cart, this));
- MCFG_HARDDISK_ADD("n64disk")
- MCFG_HARDDISK_LOAD(n64_mess_state,n64dd)
- MCFG_HARDDISK_UNLOAD(n64_mess_state,n64dd)
- MCFG_HARDDISK_INTERFACE("n64dd_disk")
+ harddisk_image_device &hdd(HARDDISK(config, "n64disk"));
+ hdd.set_device_load(device_image_load_delegate(&n64_mess_state::device_image_load_n64dd, this));
+ hdd.set_device_unload(device_image_func_delegate(&n64_mess_state::device_image_unload_n64dd, this));
+ hdd.set_interface("n64dd_disk");
- MCFG_SOFTWARE_LIST_ADD("dd_list", "n64dd")
-MACHINE_CONFIG_END
+ SOFTWARE_LIST(config, "dd_list").set_original("n64dd");
+}
ROM_START( n64 )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF ) /* dummy region for R4300 */
diff --git a/src/mame/drivers/namcops2.cpp b/src/mame/drivers/namcops2.cpp
index 3090da63b44..0667fb02c31 100644
--- a/src/mame/drivers/namcops2.cpp
+++ b/src/mame/drivers/namcops2.cpp
@@ -894,7 +894,7 @@ private:
void ps2_map(address_map &map);
// devices
- required_device<cpu_device> m_maincpu;
+ required_device<mips3_device> m_maincpu;
// driver_device overrides
virtual void video_start() override;
@@ -919,25 +919,27 @@ void namcops2_state::ps2_map(address_map &map)
static INPUT_PORTS_START( system246 )
INPUT_PORTS_END
-MACHINE_CONFIG_START(namcops2_state::system246)
- MCFG_DEVICE_ADD("maincpu", R5000LE, 294000000) // actually R5900 @ 294 MHz
- MCFG_MIPS3_ICACHE_SIZE(16384)
- MCFG_MIPS3_DCACHE_SIZE(16384)
- MCFG_DEVICE_PROGRAM_MAP(ps2_map)
+void namcops2_state::system246(machine_config &config)
+{
+ R5000LE(config, m_maincpu, 294000000); // actually R5900 @ 294 MHz
+ m_maincpu->set_icache_size(16384);
+ m_maincpu->set_dcache_size(16384);
+ m_maincpu->set_addrmap(AS_PROGRAM, &namcops2_state::ps2_map);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE_DRIVER(namcops2_state, screen_update)
- MCFG_SCREEN_SIZE(640, 480)
- MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_screen_update(FUNC(namcops2_state::screen_update));
+ screen.set_size(640, 480);
+ screen.set_visarea(0, 639, 0, 479);
- MCFG_PALETTE_ADD("palette", 65536)
-MACHINE_CONFIG_END
+ PALETTE(config, "palette", 65536);
+}
-MACHINE_CONFIG_START(namcops2_state::system256)
+void namcops2_state::system256(machine_config &config)
+{
system246(config);
-MACHINE_CONFIG_END
+}
#define SYSTEM246_BIOS \
ROM_LOAD( "r27v1602f.7d", 0x000000, 0x200000, CRC(2b2e41a2) SHA1(f0a74bbcaf801f3fd0b7002ebd0118564aae3528) )
diff --git a/src/mame/drivers/namcos23.cpp b/src/mame/drivers/namcos23.cpp
index 88d54d326ea..2ce2143ffeb 100644
--- a/src/mame/drivers/namcos23.cpp
+++ b/src/mame/drivers/namcos23.cpp
@@ -3594,33 +3594,30 @@ static GFXDECODE_START( gfx_namcos23 )
GFXDECODE_END
-MACHINE_CONFIG_START(namcos23_state::gorgon)
-
+void namcos23_state::gorgon(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD(m_maincpu, R4650BE, BUSCLOCK*4)
- MCFG_MIPS3_ICACHE_SIZE(8192) // VERIFIED
- MCFG_MIPS3_DCACHE_SIZE(8192) // VERIFIED
- MCFG_DEVICE_PROGRAM_MAP(gorgon_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos23_state, interrupt)
+ R4650BE(config, m_maincpu, BUSCLOCK*4);
+ m_maincpu->set_icache_size(8192); // VERIFIED
+ m_maincpu->set_dcache_size(8192); // VERIFIED
+ m_maincpu->set_addrmap(AS_PROGRAM, &namcos23_state::gorgon_map);
+ m_maincpu->set_vblank_int("screen", FUNC(namcos23_state::interrupt));
- MCFG_DEVICE_ADD(m_subcpu, H83002, H8CLOCK)
- MCFG_DEVICE_PROGRAM_MAP( s23h8rwmap )
- MCFG_DEVICE_IO_MAP( s23h8iomap )
+ H83002(config, m_subcpu, H8CLOCK);
+ m_subcpu->set_addrmap(AS_PROGRAM, &namcos23_state::s23h8rwmap);
+ m_subcpu->set_addrmap(AS_IO, &namcos23_state::s23h8iomap);
// Timer at 115200*16 for the jvs serial clock
- MCFG_DEVICE_MODIFY("subcpu:sci0")
- MCFG_H8_SCI_SET_EXTERNAL_CLOCK_PERIOD(attotime::from_hz(JVSCLOCK/8))
+ m_subcpu->subdevice<h8_sci_device>("sci0")->set_external_clock_period(attotime::from_hz(JVSCLOCK/8));
- MCFG_DEVICE_ADD(m_iocpu, H83334, JVSCLOCK )
- MCFG_DEVICE_PROGRAM_MAP( s23iobrdmap )
- MCFG_DEVICE_IO_MAP( s23iobrdiomap )
+ H83334(config, m_iocpu, JVSCLOCK);
+ m_iocpu->set_addrmap(AS_PROGRAM, &namcos23_state::s23iobrdmap);
+ m_iocpu->set_addrmap(AS_IO, &namcos23_state::s23iobrdiomap);
- MCFG_DEVICE_MODIFY("iocpu:sci0")
- MCFG_H8_SCI_TX_CALLBACK(WRITELINE("subcpu:sci0", h8_sci_device, rx_w))
- MCFG_DEVICE_MODIFY("subcpu:sci0")
- MCFG_H8_SCI_TX_CALLBACK(WRITELINE("iocpu:sci0", h8_sci_device, rx_w))
+ m_iocpu->subdevice<h8_sci_device>("sci0")->tx_handler().set("subcpu:sci0", FUNC(h8_sci_device::rx_w));
+ m_subcpu->subdevice<h8_sci_device>("sci0")->tx_handler().set("iocpu:sci0", FUNC(h8_sci_device::rx_w));
- MCFG_QUANTUM_TIME(attotime::from_hz(2*115200))
+ config.m_minimum_quantum = attotime::from_hz(2*115200);
NAMCO_SETTINGS(config, m_settings, 0);
@@ -3636,17 +3633,17 @@ MACHINE_CONFIG_START(namcos23_state::gorgon)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(VSYNC1)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // Not in any way accurate
- MCFG_SCREEN_SIZE(640, 480)
- MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE_DRIVER(namcos23_state, screen_update)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, namcos23_state, sub_irq))
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(VSYNC1);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // Not in any way accurate
+ m_screen->set_size(640, 480);
+ m_screen->set_visarea(0, 639, 0, 479);
+ m_screen->set_screen_update(FUNC(namcos23_state::screen_update));
+ m_screen->screen_vblank().set(FUNC(namcos23_state::sub_irq));
- MCFG_PALETTE_ADD("palette", 0x8000)
+ PALETTE(config, m_palette, 0x8000);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_namcos23)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_namcos23);
MCFG_VIDEO_START_OVERRIDE(namcos23_state,s23)
@@ -3654,41 +3651,38 @@ MACHINE_CONFIG_START(namcos23_state::gorgon)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("c352", C352, C352CLOCK, C352DIV)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
- MCFG_SOUND_ROUTE(2, "lspeaker", 1.00)
- MCFG_SOUND_ROUTE(3, "rspeaker", 1.00)
-MACHINE_CONFIG_END
-
+ c352_device &c352(C352(config, "c352", C352CLOCK, C352DIV));
+ c352.add_route(0, "lspeaker", 1.00);
+ c352.add_route(1, "rspeaker", 1.00);
+ c352.add_route(2, "lspeaker", 1.00);
+ c352.add_route(3, "rspeaker", 1.00);
+}
-MACHINE_CONFIG_START(namcos23_state::s23)
+void namcos23_state::s23(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD(m_maincpu, R4650BE, BUSCLOCK*4)
- MCFG_MIPS3_ICACHE_SIZE(8192) // VERIFIED
- MCFG_MIPS3_DCACHE_SIZE(8192) // VERIFIED
- MCFG_DEVICE_PROGRAM_MAP(s23_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos23_state, interrupt)
+ R4650BE(config, m_maincpu, BUSCLOCK*4);
+ m_maincpu->set_icache_size(8192); // VERIFIED
+ m_maincpu->set_dcache_size(8192); // VERIFIED
+ m_maincpu->set_addrmap(AS_PROGRAM, &namcos23_state::s23_map);
+ m_maincpu->set_vblank_int("screen", FUNC(namcos23_state::interrupt));
- MCFG_DEVICE_ADD(m_subcpu, H83002, H8CLOCK)
- MCFG_DEVICE_PROGRAM_MAP( s23h8rwmap )
- MCFG_DEVICE_IO_MAP( s23h8iomap )
+ H83002(config, m_subcpu, H8CLOCK);
+ m_subcpu->set_addrmap(AS_PROGRAM, &namcos23_state::s23h8rwmap);
+ m_subcpu->set_addrmap(AS_IO, &namcos23_state::s23h8iomap);
// Timer at 115200*16 for the jvs serial clock
- MCFG_DEVICE_MODIFY("subcpu:sci0")
- MCFG_H8_SCI_SET_EXTERNAL_CLOCK_PERIOD(attotime::from_hz(JVSCLOCK/8))
+ m_subcpu->subdevice<h8_sci_device>("sci0")->set_external_clock_period(attotime::from_hz(JVSCLOCK/8));
- MCFG_DEVICE_ADD(m_iocpu, H83334, JVSCLOCK )
- MCFG_DEVICE_PROGRAM_MAP( s23iobrdmap )
- MCFG_DEVICE_IO_MAP( s23iobrdiomap )
+ H83334(config, m_iocpu, JVSCLOCK);
+ m_iocpu->set_addrmap(AS_PROGRAM, &namcos23_state::s23iobrdmap);
+ m_iocpu->set_addrmap(AS_IO, &namcos23_state::s23iobrdiomap);
- MCFG_DEVICE_MODIFY("iocpu:sci0")
- MCFG_H8_SCI_TX_CALLBACK(WRITELINE("subcpu:sci0", h8_sci_device, rx_w))
- MCFG_DEVICE_MODIFY("subcpu:sci0")
- MCFG_H8_SCI_TX_CALLBACK(WRITELINE("iocpu:sci0", h8_sci_device, rx_w))
+ m_iocpu->subdevice<h8_sci_device>("sci0")->tx_handler().set("subcpu:sci0", FUNC(h8_sci_device::rx_w));
+ m_subcpu->subdevice<h8_sci_device>("sci0")->tx_handler().set("iocpu:sci0", FUNC(h8_sci_device::rx_w));
- MCFG_QUANTUM_TIME(attotime::from_hz(2*115200))
+ config.m_minimum_quantum = attotime::from_hz(2*115200);
NAMCO_SETTINGS(config, m_settings, 0);
@@ -3704,17 +3698,17 @@ MACHINE_CONFIG_START(namcos23_state::s23)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(VSYNC1)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // Not in any way accurate
- MCFG_SCREEN_SIZE(640, 480)
- MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE_DRIVER(namcos23_state, screen_update)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, namcos23_state, sub_irq))
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(VSYNC1);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // Not in any way accurate
+ m_screen->set_size(640, 480);
+ m_screen->set_visarea(0, 639, 0, 479);
+ m_screen->set_screen_update(FUNC(namcos23_state::screen_update));
+ m_screen->screen_vblank().set(FUNC(namcos23_state::sub_irq));
- MCFG_PALETTE_ADD("palette", 0x8000)
+ PALETTE(config, m_palette, 0x8000);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_namcos23)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_namcos23);
MCFG_VIDEO_START_OVERRIDE(namcos23_state,s23)
@@ -3722,54 +3716,52 @@ MACHINE_CONFIG_START(namcos23_state::s23)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("c352", C352, C352CLOCK, C352DIV)
- MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
- MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
- MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
- MCFG_SOUND_ROUTE(3, "lspeaker", 1.00)
-MACHINE_CONFIG_END
+ c352_device &c352(C352(config, "c352", C352CLOCK, C352DIV));
+ c352.add_route(0, "rspeaker", 1.00);
+ c352.add_route(1, "lspeaker", 1.00);
+ c352.add_route(2, "rspeaker", 1.00);
+ c352.add_route(3, "lspeaker", 1.00);
+}
-MACHINE_CONFIG_START(namcos23_state::timecrs2)
+void namcos23_state::timecrs2(machine_config &config)
+{
s23(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("iocpu")
- MCFG_DEVICE_PROGRAM_MAP( timecrs2iobrdmap )
-MACHINE_CONFIG_END
+ m_iocpu->set_addrmap(AS_PROGRAM, &namcos23_state::timecrs2iobrdmap);
+}
-MACHINE_CONFIG_START(namcos23_state::gmen)
+void namcos23_state::gmen(machine_config &config)
+{
s23(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_CLOCK(BUSCLOCK*5)
- MCFG_DEVICE_PROGRAM_MAP(gmen_mips_map)
+ m_maincpu->set_clock(BUSCLOCK*5);
+ m_maincpu->set_addrmap(AS_PROGRAM, &namcos23_state::gmen_mips_map);
- MCFG_DEVICE_ADD("gmen_sh2", SH2, XTAL(28'700'000))
- MCFG_DEVICE_PROGRAM_MAP(gmen_sh2_map)
+ SH2(config, m_gmen_sh2, XTAL(28'700'000));
+ m_gmen_sh2->set_addrmap(AS_PROGRAM, &namcos23_state::gmen_sh2_map);
MCFG_MACHINE_RESET_OVERRIDE(namcos23_state,gmen)
-MACHINE_CONFIG_END
-
-
-MACHINE_CONFIG_START(namcos23_state::ss23)
+}
+void namcos23_state::ss23(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD(m_maincpu, R4650BE, BUSCLOCK*5)
- MCFG_MIPS3_ICACHE_SIZE(8192) // VERIFIED
- MCFG_MIPS3_DCACHE_SIZE(8192) // VERIFIED
- MCFG_DEVICE_PROGRAM_MAP(s23_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos23_state, interrupt)
+ R4650BE(config, m_maincpu, BUSCLOCK*5);
+ m_maincpu->set_icache_size(8192); // VERIFIED
+ m_maincpu->set_dcache_size(8192); // VERIFIED
+ m_maincpu->set_addrmap(AS_PROGRAM, &namcos23_state::s23_map);
+ m_maincpu->set_vblank_int("screen", FUNC(namcos23_state::interrupt));
- MCFG_DEVICE_ADD(m_subcpu, H83002, H8CLOCK)
- MCFG_DEVICE_PROGRAM_MAP( s23h8rwmap )
- MCFG_DEVICE_IO_MAP( s23h8iomap )
+ H83002(config, m_subcpu, H8CLOCK);
+ m_subcpu->set_addrmap(AS_PROGRAM, &namcos23_state::s23h8rwmap);
+ m_subcpu->set_addrmap(AS_IO, &namcos23_state::s23h8iomap);
// Timer at 115200*16 for the jvs serial clock
- MCFG_DEVICE_MODIFY("subcpu:sci0")
- MCFG_H8_SCI_SET_EXTERNAL_CLOCK_PERIOD(attotime::from_hz(JVSCLOCK/8))
+ m_subcpu->subdevice<h8_sci_device>("sci0")->set_external_clock_period(attotime::from_hz(JVSCLOCK/8));
- MCFG_QUANTUM_TIME(attotime::from_hz(2*115200))
+ config.m_minimum_quantum = attotime::from_hz(2*115200);
NAMCO_SETTINGS(config, m_settings, 0);
@@ -3785,17 +3777,17 @@ MACHINE_CONFIG_START(namcos23_state::ss23)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(VSYNC1)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // Not in any way accurate
- MCFG_SCREEN_SIZE(640, 480)
- MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE_DRIVER(namcos23_state, screen_update)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, namcos23_state, sub_irq))
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(VSYNC1);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // Not in any way accurate
+ m_screen->set_size(640, 480);
+ m_screen->set_visarea(0, 639, 0, 479);
+ m_screen->set_screen_update(FUNC(namcos23_state::screen_update));
+ m_screen->screen_vblank().set(FUNC(namcos23_state::sub_irq));
- MCFG_PALETTE_ADD("palette", 0x8000)
+ PALETTE(config, m_palette, 0x8000);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_namcos23)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_namcos23);
MCFG_VIDEO_START_OVERRIDE(namcos23_state,s23)
@@ -3803,42 +3795,39 @@ MACHINE_CONFIG_START(namcos23_state::ss23)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("c352", C352, C352CLOCK, C352DIV)
- MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
- MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
- MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
- MCFG_SOUND_ROUTE(3, "lspeaker", 1.00)
-MACHINE_CONFIG_END
+ c352_device &c352(C352(config, "c352", C352CLOCK, C352DIV));
+ c352.add_route(0, "rspeaker", 1.00);
+ c352.add_route(1, "lspeaker", 1.00);
+ c352.add_route(2, "rspeaker", 1.00);
+ c352.add_route(3, "lspeaker", 1.00);
+}
-MACHINE_CONFIG_START(namcos23_state::timecrs2v4a)
+void namcos23_state::timecrs2v4a(machine_config &config)
+{
ss23(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("iocpu", H83334, JVSCLOCK )
- MCFG_DEVICE_PROGRAM_MAP( timecrs2iobrdmap )
- MCFG_DEVICE_IO_MAP( s23iobrdiomap )
+ H83334(config, m_iocpu, JVSCLOCK);
+ m_iocpu->set_addrmap(AS_PROGRAM, &namcos23_state::timecrs2iobrdmap);
+ m_iocpu->set_addrmap(AS_IO, &namcos23_state::s23iobrdiomap);
- MCFG_DEVICE_MODIFY("iocpu:sci0")
- MCFG_H8_SCI_TX_CALLBACK(WRITELINE("subcpu:sci0", h8_sci_device, rx_w))
- MCFG_DEVICE_MODIFY("subcpu:sci0")
- MCFG_H8_SCI_TX_CALLBACK(WRITELINE("iocpu:sci0", h8_sci_device, rx_w))
-MACHINE_CONFIG_END
+ m_iocpu->subdevice<h8_sci_device>("sci0")->tx_handler().set("subcpu:sci0", FUNC(h8_sci_device::rx_w));
+ m_subcpu->subdevice<h8_sci_device>("sci0")->tx_handler().set("iocpu:sci0", FUNC(h8_sci_device::rx_w));
+}
-MACHINE_CONFIG_START(namcos23_state::ss23e2)
+void namcos23_state::ss23e2(machine_config &config)
+{
ss23(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_CLOCK(BUSCLOCK*6)
-
- MCFG_DEVICE_ADD("iocpu", H83334, JVSCLOCK )
- MCFG_DEVICE_PROGRAM_MAP( s23iobrdmap )
- MCFG_DEVICE_IO_MAP( s23iobrdiomap )
-
- MCFG_DEVICE_MODIFY("iocpu:sci0")
- MCFG_H8_SCI_TX_CALLBACK(WRITELINE("subcpu:sci0", h8_sci_device, rx_w))
- MCFG_DEVICE_MODIFY("subcpu:sci0")
- MCFG_H8_SCI_TX_CALLBACK(WRITELINE("iocpu:sci0", h8_sci_device, rx_w))
-MACHINE_CONFIG_END
+ m_maincpu->set_clock(BUSCLOCK*6);
+
+ H83334(config, m_iocpu, JVSCLOCK);
+ m_iocpu->set_addrmap(AS_PROGRAM, &namcos23_state::s23iobrdmap);
+ m_iocpu->set_addrmap(AS_IO, &namcos23_state::s23iobrdiomap);
+
+ m_iocpu->subdevice<h8_sci_device>("sci0")->tx_handler().set("subcpu:sci0", FUNC(h8_sci_device::rx_w));
+ m_subcpu->subdevice<h8_sci_device>("sci0")->tx_handler().set("iocpu:sci0", FUNC(h8_sci_device::rx_w));
+}
diff --git a/src/mame/drivers/ps2sony.cpp b/src/mame/drivers/ps2sony.cpp
index fdc9df57534..c5329397ab5 100644
--- a/src/mame/drivers/ps2sony.cpp
+++ b/src/mame/drivers/ps2sony.cpp
@@ -252,7 +252,7 @@ protected:
void mem_map(address_map &map);
void iop_map(address_map &map);
- required_device<cpu_device> m_maincpu;
+ required_device<r5900le_device> m_maincpu;
required_device<iop_device> m_iop;
required_device_array<ps2_timer_device, 4> m_timer;
required_device<ps2_dmac_device> m_dmac;
@@ -734,54 +734,54 @@ void ps2sony_state::iop_map(address_map &map)
static INPUT_PORTS_START( ps2sony )
INPUT_PORTS_END
-MACHINE_CONFIG_START(ps2sony_state::ps2sony)
- MCFG_DEVICE_ADD(m_maincpu, R5900LE, 294'912'000, m_vu0)
- MCFG_CPU_FORCE_NO_DRC()
- MCFG_MIPS3_ICACHE_SIZE(16384)
- MCFG_MIPS3_DCACHE_SIZE(16384)
- MCFG_DEVICE_PROGRAM_MAP(mem_map)
+void ps2sony_state::ps2sony(machine_config &config)
+{
+ R5900LE(config, m_maincpu, 294'912'000, m_vu0);
+ m_maincpu->set_force_no_drc(true);
+ m_maincpu->set_icache_size(16384);
+ m_maincpu->set_dcache_size(16384);
+ m_maincpu->set_addrmap(AS_PROGRAM, &ps2sony_state::mem_map);
- MCFG_DEVICE_ADD(m_vu0, SONYPS2_VU0, 294'912'000, m_vu1)
- MCFG_DEVICE_ADD(m_vu1, SONYPS2_VU1, 294'912'000, m_gs)
+ SONYPS2_VU0(config, m_vu0, 294'912'000, m_vu1);
+ SONYPS2_VU1(config, m_vu1, 294'912'000, m_gs);
- MCFG_DEVICE_ADD(m_timer[0], SONYPS2_TIMER, 294912000/2, true)
- MCFG_DEVICE_ADD(m_timer[1], SONYPS2_TIMER, 294912000/2, true)
- MCFG_DEVICE_ADD(m_timer[2], SONYPS2_TIMER, 294912000/2, false)
- MCFG_DEVICE_ADD(m_timer[3], SONYPS2_TIMER, 294912000/2, false)
+ SONYPS2_TIMER(config, m_timer[0], 294912000/2, true);
+ SONYPS2_TIMER(config, m_timer[1], 294912000/2, true);
+ SONYPS2_TIMER(config, m_timer[2], 294912000/2, false);
+ SONYPS2_TIMER(config, m_timer[3], 294912000/2, false);
- MCFG_DEVICE_ADD(m_intc, SONYPS2_INTC, m_maincpu)
- MCFG_DEVICE_ADD(m_gs, SONYPS2_GS, 294912000/2, m_intc, m_vu1)
- MCFG_DEVICE_ADD(m_dmac, SONYPS2_DMAC, 294912000/2, m_maincpu, m_ram, m_sif, m_gs, m_vu1)
- MCFG_DEVICE_ADD(m_sif, SONYPS2_SIF, m_intc)
+ SONYPS2_INTC(config, m_intc, m_maincpu);
+ SONYPS2_GS(config, m_gs, 294912000/2, m_intc, m_vu1);
+ SONYPS2_DMAC(config, m_dmac, 294912000/2, m_maincpu, m_ram, m_sif, m_gs, m_vu1);
+ SONYPS2_SIF(config, m_sif, m_intc);
- MCFG_DEVICE_ADD(m_iop, SONYPS2_IOP, XTAL(67'737'600)/2)
- MCFG_DEVICE_PROGRAM_MAP(iop_map)
+ SONYPS2_IOP(config, m_iop, XTAL(67'737'600)/2);
+ m_iop->set_addrmap(AS_PROGRAM, &ps2sony_state::iop_map);
- MCFG_QUANTUM_PERFECT_CPU("maincpu")
- MCFG_QUANTUM_PERFECT_CPU("iop")
+ config.m_perfect_cpu_quantum = subtag("iop");
- MCFG_DEVICE_ADD(m_pad[0], SONYPS2_PAD)
- MCFG_DEVICE_ADD(m_pad[1], SONYPS2_PAD)
- MCFG_DEVICE_ADD(m_mc, SONYPS2_MC)
+ SONYPS2_PAD(config, m_pad[0]);
+ SONYPS2_PAD(config, m_pad[1]);
+ SONYPS2_MC(config, m_mc);
- MCFG_DEVICE_ADD(m_iop_intc, SONYIOP_INTC, m_iop)
- MCFG_DEVICE_ADD(m_iop_sio2, SONYIOP_SIO2, m_iop_intc, m_pad[0], m_pad[1], m_mc)
- MCFG_DEVICE_ADD(m_iop_cdvd, SONYIOP_CDVD, m_iop_intc)
- MCFG_DEVICE_ADD(m_iop_timer, SONYIOP_TIMER, XTAL(67'737'600)/2)
- MCFG_IOP_TIMER_IRQ_CALLBACK(WRITELINE(*this, ps2sony_state, iop_timer_irq))
- MCFG_DEVICE_ADD(m_iop_spu, SONYIOP_SPU, XTAL(67'737'600)/2, m_iop, m_iop_intc)
+ SONYIOP_INTC(config, m_iop_intc, m_iop);
+ SONYIOP_SIO2(config, m_iop_sio2, m_iop_intc, m_pad[0], m_pad[1], m_mc);
+ SONYIOP_CDVD(config, m_iop_cdvd, m_iop_intc);
+ SONYIOP_TIMER(config, m_iop_timer, XTAL(67'737'600)/2);
+ m_iop_timer->irq().set(FUNC(ps2sony_state::iop_timer_irq));
+ SONYIOP_SPU(config, m_iop_spu, XTAL(67'737'600)/2, m_iop, m_iop_intc);
- MCFG_DEVICE_ADD(m_iop_dma, SONYIOP_DMA, XTAL(67'737'600)/2, m_iop_intc, m_iop_ram, m_sif, m_iop_spu, m_iop_sio2)
+ SONYIOP_DMA(config, m_iop_dma, XTAL(67'737'600)/2, m_iop_intc, m_iop_ram, m_sif, m_iop_spu, m_iop_sio2);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE_DRIVER(ps2sony_state, screen_update)
- MCFG_SCREEN_SIZE(640, 256)
- MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 223)
-
- MCFG_PALETTE_ADD("palette", 65536)
-MACHINE_CONFIG_END
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_screen_update(FUNC(ps2sony_state::screen_update));
+ screen.set_size(640, 256);
+ screen.set_visarea(0, 639, 0, 223);
+
+ PALETTE(config, "palette", 65536);
+}
ROM_START( ps2 )
diff --git a/src/mame/drivers/pyson.cpp b/src/mame/drivers/pyson.cpp
index 1d7747fb2a9..eaaaa296767 100644
--- a/src/mame/drivers/pyson.cpp
+++ b/src/mame/drivers/pyson.cpp
@@ -173,7 +173,7 @@ private:
void ps2_map(address_map &map);
// devices
- required_device<cpu_device> m_maincpu;
+ required_device<mips3_device> m_maincpu;
// driver_device overrides
virtual void video_start() override;
@@ -198,21 +198,22 @@ void pyson_state::ps2_map(address_map &map)
static INPUT_PORTS_START( pyson )
INPUT_PORTS_END
-MACHINE_CONFIG_START(pyson_state::pyson)
- MCFG_DEVICE_ADD("maincpu", R5000LE, 294000000) // imported from namcops2.c driver
- MCFG_MIPS3_ICACHE_SIZE(16384)
- MCFG_MIPS3_DCACHE_SIZE(16384)
- MCFG_DEVICE_PROGRAM_MAP(ps2_map)
+void pyson_state::pyson(machine_config &config)
+{
+ R5000LE(config, m_maincpu, 294000000); // imported from namcops2.c driver
+ m_maincpu->set_icache_size(16384);
+ m_maincpu->set_dcache_size(16384);
+ m_maincpu->set_addrmap(AS_PROGRAM, &pyson_state::ps2_map);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE_DRIVER(pyson_state, screen_update)
- MCFG_SCREEN_SIZE(640, 480)
- MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
-
- MCFG_PALETTE_ADD("palette", 65536)
-MACHINE_CONFIG_END
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_screen_update(FUNC(pyson_state::screen_update));
+ screen.set_size(640, 480);
+ screen.set_visarea(0, 639, 0, 479);
+
+ PALETTE(config, "palette", 65536);
+}
#define PYSON_BIOS \
ROM_LOAD( "b22a01.u42", 0x000000, 0x080000, CRC(98de405e) SHA1(4bc268a996825c1bdf6ae277d331fe7bdc0cc00c) )
diff --git a/src/mame/drivers/vp101.cpp b/src/mame/drivers/vp101.cpp
index 033c573b925..67dbc098949 100644
--- a/src/mame/drivers/vp101.cpp
+++ b/src/mame/drivers/vp101.cpp
@@ -253,19 +253,14 @@ void vp10x_state::video_start()
uint32_t vp10x_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- const uint32_t *video_ram;
- uint32_t word;
- uint32_t *line;
- int y, x;
-
- for (y = 0; y < 240; y++)
+ for (int y = 0; y < 240; y++)
{
- line = &bitmap.pix32(y);
- video_ram = (const uint32_t *) &m_mainram[(0x7400000/4) + (y * (0x1000/4)) + 4];
+ uint32_t *line = &bitmap.pix32(y);
+ const uint32_t *video_ram = (const uint32_t *) &m_mainram[(0x7400000/4) + (y * (0x1000/4)) + 4];
- for (x = 0; x < 320; x++)
+ for (int x = 0; x < 320; x++)
{
- word = *(video_ram++);
+ uint32_t word = *(video_ram++);
video_ram++;
*line++ = word;
}
@@ -276,23 +271,19 @@ uint32_t vp10x_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
// TODO: Palette is not at 0, where is it?
uint32_t vp10x_state::vp50_screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- const uint8_t *video_ram;
- uint32_t *line;
- int y, x;
- int r,g,b;
const uint16_t *pal_ram = (const uint16_t *) &m_mainram[0];
- for (y = 0; y < 240; y++)
+ for (int y = 0; y < 240; y++)
{
- line = &bitmap.pix32(y);
- video_ram = (const uint8_t *) &m_mainram[(0x10000/4)+(y * 100)];
+ uint32_t *line = &bitmap.pix32(y);
+ const uint8_t *video_ram = (const uint8_t *) &m_mainram[(0x10000/4)+(y * 100)];
- for (x = 0; x < 400; x++)
+ for (int x = 0; x < 400; x++)
{
// assume 565
- r = pal_ram[video_ram[x]] >> 11;
- g = (pal_ram[video_ram[x]] >> 5) & 0x3f;
- b = pal_ram[video_ram[x]] & 0x1f;
+ int r = pal_ram[video_ram[x]] >> 11;
+ int g = (pal_ram[video_ram[x]] >> 5) & 0x3f;
+ int b = pal_ram[video_ram[x]] & 0x1f;
*line++ = (r << 19) | (g << 10) | (b << 3);
}
@@ -368,42 +359,44 @@ static INPUT_PORTS_START( vp50 )
PORT_BIT( 0xfffffff0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
INPUT_PORTS_END
-MACHINE_CONFIG_START(vp10x_state::vp101)
- MCFG_DEVICE_ADD("maincpu", VR5500LE, 400000000)
- MCFG_MIPS3_DCACHE_SIZE(32768)
- MCFG_MIPS3_SYSTEM_CLOCK(100000000)
- MCFG_DEVICE_PROGRAM_MAP(main_map)
-
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_UPDATE_DRIVER(vp10x_state, screen_update)
- MCFG_SCREEN_SIZE(320, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
+void vp10x_state::vp101(machine_config &config)
+{
+ VR5500LE(config, m_maincpu, 400000000);
+ m_maincpu->set_dcache_size(32768);
+ m_maincpu->set_system_clock(100000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &vp10x_state::main_map);
+
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ screen.set_screen_update(FUNC(vp10x_state::screen_update));
+ screen.set_size(320, 240);
+ screen.set_visarea(0, 319, 0, 239);
ATA_INTERFACE(config, m_ata).options(ata_devices, "hdd", nullptr, false);
m_ata->dmarq_handler().set(FUNC(vp10x_state::dmarq_w));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(vp10x_state::vp50)
- MCFG_DEVICE_ADD("maincpu", TX4925LE, 200000000)
- MCFG_MIPS3_DCACHE_SIZE(32768)
- MCFG_MIPS3_SYSTEM_CLOCK(100000000)
- MCFG_DEVICE_PROGRAM_MAP(vp50_map)
+}
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_UPDATE_DRIVER(vp10x_state, vp50_screen_update)
- MCFG_SCREEN_SIZE(400, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 239)
+void vp10x_state::vp50(machine_config &config)
+{
+ TX4925LE(config, m_maincpu, 200000000);
+ m_maincpu->set_dcache_size(32768);
+ m_maincpu->set_system_clock(100000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &vp10x_state::vp50_map);
+
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ screen.set_screen_update(FUNC(vp10x_state::vp50_screen_update));
+ screen.set_size(400, 240);
+ screen.set_visarea(0, 399, 0, 239);
ATA_INTERFACE(config, m_ata).options(ata_devices, "hdd", nullptr, false);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-MACHINE_CONFIG_END
+}
ROM_START(jnero)
ROM_REGION(0x400000, "maincpu", 0) /* Boot ROM */