diff options
author | bmcphail <bmcphail@vcmame.net> | 2018-08-22 14:35:46 -0400 |
---|---|---|
committer | bmcphail <bmcphail@vcmame.net> | 2018-08-22 14:35:46 -0400 |
commit | b2e856bbc00864d6696fd1c880680f9229ee71a6 (patch) | |
tree | c3a9fd593c9341f78e7e46ed9770a93e58ec970a /src/mame | |
parent | 7eeb77c1551e9e1c2f221e41d440dfd3bef5141b (diff) | |
parent | 2ed5eafa69939491d782617d83025dff732ef99a (diff) |
Merge branch 'master' of https://github.com/mamedev/mame
Diffstat (limited to 'src/mame')
-rw-r--r-- | src/mame/arcade.flt | 1 | ||||
-rw-r--r-- | src/mame/drivers/amiga.cpp | 72 | ||||
-rw-r--r-- | src/mame/drivers/amusco.cpp | 14 | ||||
-rw-r--r-- | src/mame/drivers/cp1.cpp | 12 | ||||
-rw-r--r-- | src/mame/drivers/cvs.cpp | 113 | ||||
-rw-r--r-- | src/mame/drivers/equites.cpp | 10 | ||||
-rw-r--r-- | src/mame/drivers/exp85.cpp | 2 | ||||
-rw-r--r-- | src/mame/drivers/g627.cpp | 10 | ||||
-rw-r--r-- | src/mame/drivers/galaxia.cpp | 4 | ||||
-rw-r--r-- | src/mame/drivers/kyocera.cpp | 40 | ||||
-rw-r--r-- | src/mame/drivers/mephistp.cpp | 10 | ||||
-rw-r--r-- | src/mame/drivers/meyc8088.cpp | 18 | ||||
-rw-r--r-- | src/mame/drivers/paranoia.cpp | 10 | ||||
-rw-r--r-- | src/mame/drivers/sbugger.cpp | 10 | ||||
-rw-r--r-- | src/mame/drivers/sdk85.cpp | 6 | ||||
-rw-r--r-- | src/mame/drivers/testconsole.cpp | 2 | ||||
-rw-r--r-- | src/mame/drivers/tourvis.cpp | 10 | ||||
-rw-r--r-- | src/mame/drivers/unkhorse.cpp | 8 | ||||
-rw-r--r-- | src/mame/drivers/videosaa.cpp | 183 | ||||
-rw-r--r-- | src/mame/drivers/vixen.cpp | 20 | ||||
-rw-r--r-- | src/mame/drivers/vp415.cpp | 8 | ||||
-rw-r--r-- | src/mame/includes/cvs.h | 22 | ||||
-rw-r--r-- | src/mame/mame.lst | 6 |
23 files changed, 418 insertions, 173 deletions
diff --git a/src/mame/arcade.flt b/src/mame/arcade.flt index b4a23feeb3e..f938e9c1ae4 100644 --- a/src/mame/arcade.flt +++ b/src/mame/arcade.flt @@ -1316,6 +1316,7 @@ vicdual.cpp victory.cpp videopin.cpp videopkr.cpp +videosaa.cpp vigilant.cpp vindictr.cpp viper.cpp diff --git a/src/mame/drivers/amiga.cpp b/src/mame/drivers/amiga.cpp index 8cbbaaf8e71..4eabbdab678 100644 --- a/src/mame/drivers/amiga.cpp +++ b/src/mame/drivers/amiga.cpp @@ -8,6 +8,7 @@ #include "emu.h" #include "includes/amiga.h" + #include "bus/amiga/keyboard/keyboard.h" #include "bus/amiga/zorro/zorro.h" #include "cpu/m68000/m68000.h" @@ -1437,12 +1438,6 @@ MACHINE_CONFIG_START(amiga_state::amiga_base) MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, amiga_state, centronics_select_w)) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") - // keyboard - MCFG_AMIGA_KEYBOARD_INTERFACE_ADD("kbd", "a500_us") - MCFG_AMIGA_KEYBOARD_KCLK_HANDLER(WRITELINE("cia_0", mos8520_device, cnt_w)) - MCFG_AMIGA_KEYBOARD_KDAT_HANDLER(WRITELINE("cia_0", mos8520_device, sp_w)) - MCFG_AMIGA_KEYBOARD_KRST_HANDLER(WRITELINE(*this, amiga_state, kbreset_w)) - // software MCFG_SOFTWARE_LIST_ADD("wb_list", "amiga_workbench") MCFG_SOFTWARE_LIST_ADD("hardware_list", "amiga_hardware") @@ -1453,6 +1448,12 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(a1000_state::a1000) amiga_base(config); + + // keyboard + MCFG_AMIGA_KEYBOARD_INTERFACE_ADD("kbd", amiga_keyboard_devices, "a2000_us") + MCFG_AMIGA_KEYBOARD_KCLK_HANDLER(WRITELINE("cia_0", mos8520_device, cnt_w)) + MCFG_AMIGA_KEYBOARD_KDAT_HANDLER(WRITELINE("cia_0", mos8520_device, sp_w)) + // main cpu MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL) MCFG_DEVICE_PROGRAM_MAP(a1000_mem) @@ -1465,6 +1466,7 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(a1000_state::a1000n) a1000(config); + MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MCFG_DEVICE_REMOVE("screen") @@ -1481,6 +1483,12 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(a2000_state::a2000) amiga_base(config); + + // keyboard + MCFG_AMIGA_KEYBOARD_INTERFACE_ADD("kbd", amiga_keyboard_devices, "a2000_us") + MCFG_AMIGA_KEYBOARD_KCLK_HANDLER(WRITELINE("cia_0", mos8520_device, cnt_w)) + MCFG_AMIGA_KEYBOARD_KDAT_HANDLER(WRITELINE("cia_0", mos8520_device, sp_w)) + // main cpu MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL) MCFG_DEVICE_PROGRAM_MAP(a2000_mem) @@ -1506,6 +1514,7 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(a2000_state::a2000n) a2000(config); + MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MCFG_DEVICE_REMOVE("screen") @@ -1522,6 +1531,13 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(a500_state::a500) amiga_base(config); + + // keyboard + MCFG_AMIGA_KEYBOARD_INTERFACE_ADD("kbd", a500_keyboard_devices, "a500_us") + MCFG_AMIGA_KEYBOARD_KCLK_HANDLER(WRITELINE("cia_0", mos8520_device, cnt_w)) + MCFG_AMIGA_KEYBOARD_KDAT_HANDLER(WRITELINE("cia_0", mos8520_device, sp_w)) + MCFG_AMIGA_KEYBOARD_KRST_HANDLER(WRITELINE(*this, amiga_state, kbreset_w)) + // main cpu MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL) MCFG_DEVICE_PROGRAM_MAP(a500_mem) @@ -1552,6 +1568,12 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(cdtv_state::cdtv) amiga_base(config); + + // keyboard + MCFG_AMIGA_KEYBOARD_INTERFACE_ADD("kbd", amiga_keyboard_devices, "a2000_us") + MCFG_AMIGA_KEYBOARD_KCLK_HANDLER(WRITELINE("cia_0", mos8520_device, cnt_w)) + MCFG_AMIGA_KEYBOARD_KDAT_HANDLER(WRITELINE("cia_0", mos8520_device, sp_w)) + // main cpu MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL) MCFG_DEVICE_PROGRAM_MAP(cdtv_mem) @@ -1623,6 +1645,12 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(a3000_state::a3000) amiga_base(config); + + // keyboard + MCFG_AMIGA_KEYBOARD_INTERFACE_ADD("kbd", amiga_keyboard_devices, "a2000_us") + MCFG_AMIGA_KEYBOARD_KCLK_HANDLER(WRITELINE("cia_0", mos8520_device, cnt_w)) + MCFG_AMIGA_KEYBOARD_KDAT_HANDLER(WRITELINE("cia_0", mos8520_device, sp_w)) + // main cpu MCFG_DEVICE_ADD("maincpu", M68030, XTAL(32'000'000) / 2) MCFG_DEVICE_PROGRAM_MAP(a3000_mem) @@ -1653,6 +1681,13 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(a500p_state::a500p) amiga_base(config); + + // keyboard + MCFG_AMIGA_KEYBOARD_INTERFACE_ADD("kbd", a500_keyboard_devices, "a500_us") + MCFG_AMIGA_KEYBOARD_KCLK_HANDLER(WRITELINE("cia_0", mos8520_device, cnt_w)) + MCFG_AMIGA_KEYBOARD_KDAT_HANDLER(WRITELINE("cia_0", mos8520_device, sp_w)) + MCFG_AMIGA_KEYBOARD_KRST_HANDLER(WRITELINE(*this, amiga_state, kbreset_w)) + // main cpu MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL) MCFG_DEVICE_PROGRAM_MAP(a500p_mem) @@ -1687,6 +1722,13 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(a600_state::a600) amiga_base(config); + + // keyboard + MCFG_AMIGA_KEYBOARD_INTERFACE_ADD("kbd", a600_keyboard_devices, "a600_us") + MCFG_AMIGA_KEYBOARD_KCLK_HANDLER(WRITELINE("cia_0", mos8520_device, cnt_w)) + MCFG_AMIGA_KEYBOARD_KDAT_HANDLER(WRITELINE("cia_0", mos8520_device, sp_w)) + MCFG_AMIGA_KEYBOARD_KRST_HANDLER(WRITELINE(*this, amiga_state, kbreset_w)) + // main cpu MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL) MCFG_DEVICE_PROGRAM_MAP(a600_mem) @@ -1729,6 +1771,13 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(a1200_state::a1200) amiga_base(config); + + // keyboard + MCFG_AMIGA_KEYBOARD_INTERFACE_ADD("kbd", amiga_keyboard_devices, "a1200_us") // FIXME: replace with Amiga 1200 devices when we have mask ROM dump + MCFG_AMIGA_KEYBOARD_KCLK_HANDLER(WRITELINE("cia_0", mos8520_device, cnt_w)) + MCFG_AMIGA_KEYBOARD_KDAT_HANDLER(WRITELINE("cia_0", mos8520_device, sp_w)) + MCFG_AMIGA_KEYBOARD_KRST_HANDLER(WRITELINE(*this, amiga_state, kbreset_w)) + // main cpu MCFG_DEVICE_ADD("maincpu", M68EC020, amiga_state::CLK_28M_PAL / 2) MCFG_DEVICE_PROGRAM_MAP(a1200_mem) @@ -1789,6 +1838,12 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(a4000_state::a4000) amiga_base(config); + + // keyboard + MCFG_AMIGA_KEYBOARD_INTERFACE_ADD("kbd", amiga_keyboard_devices, "a2000_us") + MCFG_AMIGA_KEYBOARD_KCLK_HANDLER(WRITELINE("cia_0", mos8520_device, cnt_w)) + MCFG_AMIGA_KEYBOARD_KDAT_HANDLER(WRITELINE("cia_0", mos8520_device, sp_w)) + // main cpu MCFG_DEVICE_ADD("maincpu", M68040, XTAL(50'000'000) / 2) MCFG_DEVICE_PROGRAM_MAP(a4000_mem) @@ -1819,6 +1874,7 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(a4000_state::a4000n) a4000(config); + MCFG_DEVICE_REMOVE("screen") ntsc_video(config); MCFG_DEVICE_MODIFY("screen") @@ -1863,6 +1919,7 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(cd32_state::cd32) amiga_base(config); + // main cpu MCFG_DEVICE_ADD("maincpu", M68EC020, amiga_state::CLK_28M_PAL / 2) MCFG_DEVICE_PROGRAM_MAP(cd32_mem) @@ -1900,11 +1957,11 @@ MACHINE_CONFIG_START(cd32_state::cd32) MCFG_CDROM_ADD("cdrom") MCFG_CDROM_INTERFACE("cd32_cdrom") MCFG_SOFTWARE_LIST_ADD("cd_list", "cd32") - MCFG_DEVICE_REMOVE("kbd") MACHINE_CONFIG_END MACHINE_CONFIG_START(cd32_state::cd32n) cd32(config); + MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_CLOCK(amiga_state::CLK_28M_NTSC / 2) MCFG_DEVICE_REMOVE("screen") @@ -1934,6 +1991,7 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(a4000_state::a4000tn) a4000(config); + MCFG_DEVICE_REMOVE("screen") ntsc_video(config); MCFG_DEVICE_MODIFY("screen") diff --git a/src/mame/drivers/amusco.cpp b/src/mame/drivers/amusco.cpp index 0c18032b648..54263f56049 100644 --- a/src/mame/drivers/amusco.cpp +++ b/src/mame/drivers/amusco.cpp @@ -558,17 +558,17 @@ MACHINE_CONFIG_START(amusco_state::amusco) MCFG_I8255_IN_PORTB_CB(IOPORT("IN1")) MCFG_I8255_IN_PORTC_CB(IOPORT("IN2")) - MCFG_DEVICE_ADD("lpt_interface", I8155, 0) - MCFG_I8155_OUT_PORTA_CB(WRITE8(*this, amusco_state, lpt_data_w)) - MCFG_I8155_IN_PORTB_CB(READ8(*this, amusco_state, lpt_status_r)) + i8155_device &i8155a(I8155(config, "lpt_interface", 0)); + i8155a.out_pa_callback().set(FUNC(amusco_state::lpt_data_w)); + i8155a.in_pb_callback().set(FUNC(amusco_state::lpt_status_r)); // Port C uses ALT 3 mode, which MAME does not currently emulate MCFG_DEVICE_ADD("rtc", MSM5832, 32.768_kHz_XTAL) - MCFG_DEVICE_ADD("rtc_interface", I8155, 0) - MCFG_I8155_OUT_PORTA_CB(WRITE8(*this, amusco_state, rtc_control_w)) - MCFG_I8155_IN_PORTC_CB(READ8("rtc", msm5832_device, data_r)) - MCFG_I8155_OUT_PORTC_CB(WRITE8("rtc", msm5832_device, data_w)) + i8155_device &i8155b(I8155(config, "rtc_interface", 0)); + i8155b.out_pa_callback().set(FUNC(amusco_state::rtc_control_w)); + i8155b.in_pc_callback().set("rtc", FUNC(msm5832_device::data_r)); + i8155b.out_pc_callback().set("rtc", FUNC(msm5832_device::data_w)); MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(30), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH) diff --git a/src/mame/drivers/cp1.cpp b/src/mame/drivers/cp1.cpp index 7fdf206a24c..ff9532ff477 100644 --- a/src/mame/drivers/cp1.cpp +++ b/src/mame/drivers/cp1.cpp @@ -277,13 +277,13 @@ MACHINE_CONFIG_START(cp1_state::cp1) maincpu.t0_in_cb().set_log("t0_r"); maincpu.t1_in_cb().set_log("t1_r"); - MCFG_DEVICE_ADD("i8155", I8155, 0) - MCFG_I8155_OUT_PORTA_CB(WRITE8(*this, cp1_state, i8155_porta_w)) - MCFG_I8155_IN_PORTB_CB(READ8(*this, cp1_state, i8155_portb_r)) - MCFG_I8155_OUT_PORTB_CB(WRITE8(*this, cp1_state, i8155_portb_w)) - MCFG_I8155_OUT_PORTC_CB(WRITE8(*this, cp1_state, i8155_portc_w)) + i8155_device &i8155(I8155(config, "i8155", 0)); + i8155.out_pa_callback().set(FUNC(cp1_state::i8155_porta_w)); + i8155.in_pb_callback().set(FUNC(cp1_state::i8155_portb_r)); + i8155.out_pb_callback().set(FUNC(cp1_state::i8155_portb_w)); + i8155.out_pc_callback().set(FUNC(cp1_state::i8155_portc_w)); - MCFG_DEVICE_ADD("i8155_cp3", I8155, 0) + I8155(config, "i8155_cp3", 0); config.set_default_layout(layout_cp1); diff --git a/src/mame/drivers/cvs.cpp b/src/mame/drivers/cvs.cpp index 8c376d0ffaf..cb8ae39a1b7 100644 --- a/src/mame/drivers/cvs.cpp +++ b/src/mame/drivers/cvs.cpp @@ -1549,23 +1549,21 @@ ROM_END * *************************************/ -void cvs_state::init_huncholy() +READ8_MEMBER(cvs_state::huncholy_prot_r) { - uint8_t *ROM = memregion("maincpu")->base(); + if (offset == 1) + { + m_protection_counter++; + if ((m_protection_counter & 0x0f) == 0x01) return 0x00; + return 0xff; + } - /* patch out protection */ - ROM[0x0082] = 0xc0; - ROM[0x0083] = 0xc0; - ROM[0x0084] = 0xc0; - ROM[0x00b7] = 0xc0; - ROM[0x00b8] = 0xc0; - ROM[0x00b9] = 0xc0; - ROM[0x00d9] = 0xc0; - ROM[0x00da] = 0xc0; - ROM[0x00db] = 0xc0; - ROM[0x4456] = 0xc0; - ROM[0x4457] = 0xc0; - ROM[0x4458] = 0xc0; + return 0; // offset 0 +} + +void cvs_state::init_huncholy() +{ + m_maincpu->space(AS_PROGRAM).install_read_handler(0x6ff1, 0x6ff2, read8_delegate(FUNC(cvs_state::huncholy_prot_r),this)); } @@ -1578,57 +1576,48 @@ void cvs_state::init_hunchbaka() } -void cvs_state::init_superbik() +READ8_MEMBER(cvs_state::superbik_prot_r) { - uint8_t *ROM = memregion("maincpu")->base(); + m_protection_counter++; + if ((m_protection_counter & 0x0f) == 0x02) return 0; + return 0xff; +} - /* patch out protection */ - ROM[0x0079] = 0xc0; - ROM[0x007a] = 0xc0; - ROM[0x007b] = 0xc0; - ROM[0x0081] = 0xc0; - ROM[0x0082] = 0xc0; - ROM[0x0083] = 0xc0; - ROM[0x00b6] = 0xc0; - ROM[0x00b7] = 0xc0; - ROM[0x00b8] = 0xc0; - ROM[0x0168] = 0xc0; - ROM[0x0169] = 0xc0; - ROM[0x016a] = 0xc0; - - ROM[0x413f] = 0xc0; - ROM[0x4140] = 0xc0; - ROM[0x4141] = 0xc0; - - /* and speed up the protection check */ - ROM[0x0099] = 0xc0; - ROM[0x009a] = 0xc0; - ROM[0x009b] = 0xc0; - ROM[0x00bb] = 0xc0; - ROM[0x00bc] = 0xc0; - ROM[0x00bd] = 0xc0; +void cvs_state::init_superbik() +{ + m_protection_counter = 0; + m_maincpu->space(AS_PROGRAM).install_read_handler(0x73f1, 0x73f2, read8_delegate(FUNC(cvs_state::superbik_prot_r),this)); } -void cvs_state::init_hero() +READ8_MEMBER(cvs_state::hero_prot_r) { - uint8_t *ROM = memregion("maincpu")->base(); + u8 *ROM = memregion("maincpu")->base() + 0x73f0; + + switch (offset + 0x73f0) + { + case 0x73f0: // pc: 7d, ab9 + return 0xff; // 0x03 at this address in ROM - /* patch out protection */ - ROM[0x0087] = 0xc0; - ROM[0x0088] = 0xc0; - ROM[0x0aa1] = 0xc0; - ROM[0x0aa2] = 0xc0; - ROM[0x0aa3] = 0xc0; - ROM[0x0aaf] = 0xc0; - ROM[0x0ab0] = 0xc0; - ROM[0x0ab1] = 0xc0; - ROM[0x0abd] = 0xc0; - ROM[0x0abe] = 0xc0; - ROM[0x0abf] = 0xc0; - ROM[0x4de0] = 0xc0; - ROM[0x4de1] = 0xc0; - ROM[0x4de2] = 0xc0; + case 0x73f1: // pc: 83, read and then overwritten by 0x73f2 read + return 0; // 0x02 at this address in ROM + + case 0x73f2: // pc: 86, needs to match read from 0x73f0 + return 0xff & 0x7e; // 0x04 at this address in ROM + + case 0x73f9: // pc: A9f, not sure what this is suppose to do? + return 0x00; // 0x1e at this address in ROM + + case 0x73fe: // aa8 + return 0xff; // 0x5e at this address in ROM + } + + return ROM[offset]; +} + +void cvs_state::init_hero() +{ + m_maincpu->space(AS_PROGRAM).install_read_handler(0x73f0, 0x73ff, read8_delegate(FUNC(cvs_state::hero_prot_r),this)); } @@ -1672,8 +1661,8 @@ GAME( 1982, diggerc, 0, cvs, diggerc, cvs_state, empty_init, ROT90 GAME( 1983, heartatk, 0, cvs, heartatk, cvs_state, empty_init, ROT90, "Century Electronics", "Heart Attack", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1983, hunchbak, 0, cvs, hunchbak, cvs_state, empty_init, ROT90, "Century Electronics", "Hunchback (set 1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1983, hunchbaka, hunchbak, cvs, hunchbak, cvs_state, init_hunchbaka, ROT90, "Century Electronics", "Hunchback (set 2)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, superbik, 0, cvs, superbik, cvs_state, init_superbik, ROT90, "Century Electronics", "Superbike", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, raiders, 0, cvs, raiders, cvs_state, init_raiders, ROT90, "Century Electronics", "Raiders", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, raidersr3, raiders, cvs, raiders, cvs_state, init_raiders, ROT90, "Century Electronics", "Raiders (Rev.3)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, superbik, 0, cvs, superbik, cvs_state, init_superbik, ROT90, "Century Electronics", "Superbike", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, raiders, 0, cvs, raiders, cvs_state, init_raiders, ROT90, "Century Electronics", "Raiders", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION| MACHINE_SUPPORTS_SAVE ) +GAME( 1983, raidersr3, raiders, cvs, raiders, cvs_state, init_raiders, ROT90, "Century Electronics", "Raiders (Rev.3)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION| MACHINE_SUPPORTS_SAVE ) GAME( 1984, hero, 0, cvs, hero, cvs_state, init_hero, ROT90, "Century Electronics / Seatongrove Ltd", "Hero", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // (C) 1984 CVS on titlescreen, (C) 1983 Seatongrove on highscore screen GAME( 1984, huncholy, 0, cvs, huncholy, cvs_state, init_huncholy, ROT90, "Century Electronics / Seatongrove Ltd", "Hunchback Olympic", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/equites.cpp b/src/mame/drivers/equites.cpp index 8a408c924d4..07878546874 100644 --- a/src/mame/drivers/equites.cpp +++ b/src/mame/drivers/equites.cpp @@ -1047,11 +1047,11 @@ MACHINE_CONFIG_START(equites_state::common_sound) MCFG_DEVICE_IO_MAP(sound_portmap) MCFG_I8085A_CLK_OUT_DEVICE("audio8155") - MCFG_DEVICE_ADD("audio8155", I8155, 0) - MCFG_I8155_OUT_PORTA_CB(WRITE8(*this, equites_state, equites_8155_porta_w)) - MCFG_I8155_OUT_PORTB_CB(WRITE8(*this, equites_state, equites_8155_portb_w)) - MCFG_I8155_OUT_PORTC_CB(WRITE8(*this, equites_state, equites_8155_portc_w)) - MCFG_I8155_OUT_TIMEROUT_CB(WRITELINE(*this, equites_state, equites_8155_timer_pulse)) + i8155_device &i8155(I8155(config, "audio8155", 0)); + i8155.out_pa_callback().set(FUNC(equites_state::equites_8155_porta_w)); + i8155.out_pb_callback().set(FUNC(equites_state::equites_8155_portb_w)); + i8155.out_pc_callback().set(FUNC(equites_state::equites_8155_portc_w)); + i8155.out_to_callback().set(FUNC(equites_state::equites_8155_timer_pulse)); /* sound hardware */ SPEAKER(config, "speaker").front_center(); diff --git a/src/mame/drivers/exp85.cpp b/src/mame/drivers/exp85.cpp index efadf87c382..a6c4eea8cf6 100644 --- a/src/mame/drivers/exp85.cpp +++ b/src/mame/drivers/exp85.cpp @@ -194,7 +194,7 @@ MACHINE_CONFIG_START(exp85_state::exp85) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) /* devices */ - MCFG_DEVICE_ADD(I8155_TAG, I8155, 6.144_MHz_XTAL/2) + I8155(config, I8155_TAG, 6.144_MHz_XTAL/2); MCFG_DEVICE_ADD(I8355_TAG, I8355, 6.144_MHz_XTAL/2) MCFG_I8355_IN_PA_CB(READ8(*this, exp85_state, i8355_a_r)) diff --git a/src/mame/drivers/g627.cpp b/src/mame/drivers/g627.cpp index 322780abe5a..63f78774e00 100644 --- a/src/mame/drivers/g627.cpp +++ b/src/mame/drivers/g627.cpp @@ -302,11 +302,11 @@ MACHINE_CONFIG_START(g627_state::g627) MCFG_DEVICE_PROGRAM_MAP(mem_map) MCFG_DEVICE_IO_MAP(io_map) - MCFG_DEVICE_ADD("i8156", I8156, 14138000/8) - MCFG_I8155_IN_PORTA_CB(READ8(*this, g627_state, porta_r)) - MCFG_I8155_IN_PORTB_CB(READ8(*this, g627_state, portb_r)) - MCFG_I8155_OUT_PORTC_CB(WRITE8(*this, g627_state, portc_w)) - MCFG_I8155_OUT_TIMEROUT_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + i8156_device &i8156(I8156(config, "i8156", 14138000/8)); + i8156.in_pa_callback().set(FUNC(g627_state::porta_r)); + i8156.in_pb_callback().set(FUNC(g627_state::portb_r)); + i8156.out_pc_callback().set(FUNC(g627_state::portc_w)); + i8156.out_to_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); MCFG_NVRAM_ADD_0FILL("nvram") diff --git a/src/mame/drivers/galaxia.cpp b/src/mame/drivers/galaxia.cpp index 69fdfa9beb7..39a90258bd0 100644 --- a/src/mame/drivers/galaxia.cpp +++ b/src/mame/drivers/galaxia.cpp @@ -308,7 +308,7 @@ MACHINE_CONFIG_START(galaxia_state::galaxia) MCFG_DEVICE_IO_MAP(galaxia_io_map) MCFG_DEVICE_DATA_MAP(galaxia_data_map) MCFG_S2650_SENSE_INPUT(READLINE("screen", screen_device, vblank)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, cvs_state, write_s2650_flag)) + MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, galaxia_state, write_s2650_flag)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -352,7 +352,7 @@ MACHINE_CONFIG_START(galaxia_state::astrowar) MCFG_DEVICE_IO_MAP(galaxia_io_map) MCFG_DEVICE_DATA_MAP(galaxia_data_map) MCFG_S2650_SENSE_INPUT(READLINE("screen", screen_device, vblank)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, cvs_state, write_s2650_flag)) + MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, galaxia_state, write_s2650_flag)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/kyocera.cpp b/src/mame/drivers/kyocera.cpp index 29cf737aa30..a7348a87446 100644 --- a/src/mame/drivers/kyocera.cpp +++ b/src/mame/drivers/kyocera.cpp @@ -1363,11 +1363,11 @@ MACHINE_CONFIG_START(kc85_state::kc85) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) /* devices */ - MCFG_DEVICE_ADD(I8155_TAG, I8155, XTAL(4'915'200)/2) - MCFG_I8155_OUT_PORTA_CB(WRITE8(*this, kc85_state, i8155_pa_w)) - MCFG_I8155_OUT_PORTB_CB(WRITE8(*this, kc85_state, i8155_pb_w)) - MCFG_I8155_IN_PORTC_CB(READ8(*this, kc85_state, i8155_pc_r)) - MCFG_I8155_OUT_TIMEROUT_CB(WRITELINE(*this, kc85_state, i8155_to_w)) + i8155_device &i8155(I8155(config, I8155_TAG, XTAL(4'915'200)/2)); + i8155.out_pa_callback().set(FUNC(kc85_state::i8155_pa_w)); + i8155.out_pb_callback().set(FUNC(kc85_state::i8155_pb_w)); + i8155.in_pc_callback().set(FUNC(kc85_state::i8155_pc_r)); + i8155.out_to_callback().set(FUNC(kc85_state::i8155_to_w)); MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL(32'768), NOOP, INPUTLINE(I8085_TAG, I8085_RST75_LINE)) @@ -1411,11 +1411,11 @@ MACHINE_CONFIG_START(pc8201_state::pc8201) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) /* devices */ - MCFG_DEVICE_ADD(I8155_TAG, I8155, XTAL(4'915'200)/2) - MCFG_I8155_OUT_PORTA_CB(WRITE8(*this, kc85_state, i8155_pa_w)) - MCFG_I8155_OUT_PORTB_CB(WRITE8(*this, kc85_state, i8155_pb_w)) - MCFG_I8155_IN_PORTC_CB(READ8(*this, kc85_state, i8155_pc_r)) - MCFG_I8155_OUT_TIMEROUT_CB(WRITELINE(*this, kc85_state, i8155_to_w)) + i8155_device &i8155(I8155(config, I8155_TAG, XTAL(4'915'200)/2)); + i8155.out_pa_callback().set(FUNC(kc85_state::i8155_pa_w)); + i8155.out_pb_callback().set(FUNC(kc85_state::i8155_pb_w)); + i8155.in_pc_callback().set(FUNC(kc85_state::i8155_pc_r)); + i8155.out_to_callback().set(FUNC(kc85_state::i8155_to_w)); MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL(32'768), NOOP, INPUTLINE(I8085_TAG, I8085_RST75_LINE)) @@ -1469,11 +1469,11 @@ MACHINE_CONFIG_START(trsm100_state::trsm100) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) /* devices */ - MCFG_DEVICE_ADD(I8155_TAG, I8155, XTAL(4'915'200)/2) - MCFG_I8155_OUT_PORTA_CB(WRITE8(*this, kc85_state, i8155_pa_w)) - MCFG_I8155_OUT_PORTB_CB(WRITE8(*this, kc85_state, i8155_pb_w)) - MCFG_I8155_IN_PORTC_CB(READ8(*this, kc85_state, i8155_pc_r)) - MCFG_I8155_OUT_TIMEROUT_CB(WRITELINE(*this, kc85_state, i8155_to_w)) + i8155_device &i8155(I8155(config, I8155_TAG, XTAL(4'915'200)/2)); + i8155.out_pa_callback().set(FUNC(kc85_state::i8155_pa_w)); + i8155.out_pb_callback().set(FUNC(kc85_state::i8155_pb_w)); + i8155.in_pc_callback().set(FUNC(kc85_state::i8155_pc_r)); + i8155.out_to_callback().set(FUNC(kc85_state::i8155_to_w)); MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL(32'768), NOOP, INPUTLINE(I8085_TAG, I8085_RST75_LINE)) @@ -1526,11 +1526,11 @@ MACHINE_CONFIG_START(tandy200_state::tandy200) // MCFG_TCM5089_ADD(TCM5089_TAG, XTAL(3'579'545)) /* devices */ - MCFG_DEVICE_ADD(I8155_TAG, I8155, XTAL(4'915'200)/2) - MCFG_I8155_OUT_PORTA_CB(WRITE8(*this, tandy200_state, i8155_pa_w)) - MCFG_I8155_OUT_PORTB_CB(WRITE8(*this, tandy200_state, i8155_pb_w)) - MCFG_I8155_IN_PORTC_CB(READ8(*this, tandy200_state, i8155_pc_r)) - MCFG_I8155_OUT_TIMEROUT_CB(WRITELINE(*this, tandy200_state, i8155_to_w)) + i8155_device &i8155(I8155(config, I8155_TAG, XTAL(4'915'200)/2)); + i8155.out_pa_callback().set(FUNC(tandy200_state::i8155_pa_w)); + i8155.out_pb_callback().set(FUNC(tandy200_state::i8155_pb_w)); + i8155.in_pc_callback().set(FUNC(tandy200_state::i8155_pc_r)); + i8155.out_to_callback().set(FUNC(tandy200_state::i8155_to_w)); MCFG_DEVICE_ADD(RP5C01A_TAG, RP5C01, XTAL(32'768)) diff --git a/src/mame/drivers/mephistp.cpp b/src/mame/drivers/mephistp.cpp index 915909fc55e..7ae993818ae 100644 --- a/src/mame/drivers/mephistp.cpp +++ b/src/mame/drivers/mephistp.cpp @@ -172,11 +172,13 @@ MACHINE_CONFIG_START(mephisto_pinball_state::mephisto) //MCFG_I8256_IRQ_HANDLER(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) //MCFG_I8256_TXD_HANDLER(INPUTLINE("audiocpu", MCS51_RX_LINE)) - MCFG_DEVICE_ADD("ic20", I8155, XTAL(18'000'000)/6) - //MCFG_I8155_OUT_TIMEROUT_CB(WRITELINE("muart", i8256_device, write_txc)) + I8155(config, "ic20", XTAL(18'000'000)/6); + //i8155_device &i8155_1(I8155(config, "ic20", XTAL(18'000'000)/6)); + //i8155_1.out_to_callback().set("muart", FUNC(i8256_device::write_txc)); - MCFG_DEVICE_ADD("ic9", I8155, XTAL(18'000'000)/6) - //MCFG_I8155_OUT_TIMEROUT_CB(WRITELINE(*this, mephisto_pinball_state, clk_shift_w)) + I8155(config, "ic9", XTAL(18'000'000)/6); + //i8155_device &i8155_2(I8155(config, "ic9", XTAL(18'000'000)/6)); + //i8155_2.out_to_callback().set(FUNC(mephisto_pinball_state::clk_shift_w)); MCFG_DEVICE_ADD("soundcpu", I8051, XTAL(12'000'000)) MCFG_DEVICE_PROGRAM_MAP(mephisto_8051_map) // EA tied high for external program ROM diff --git a/src/mame/drivers/meyc8088.cpp b/src/mame/drivers/meyc8088.cpp index 04610e5e222..78b09f77814 100644 --- a/src/mame/drivers/meyc8088.cpp +++ b/src/mame/drivers/meyc8088.cpp @@ -370,19 +370,19 @@ MACHINE_CONFIG_START(meyc8088_state::meyc8088) MCFG_DEVICE_ADD(m_maincpu, I8088, (XTAL(15'000'000) / 3) * 0.95) // NOTE: underclocked to prevent errors on diagnostics, MAME i8088 cycle timing is probably inaccurate MCFG_DEVICE_PROGRAM_MAP(meyc8088_map) - MCFG_DEVICE_ADD("i8155_1", I8155, XTAL(15'000'000) / (3*1)) + i8155_device &i8155_1(I8155(config, "i8155_1", XTAL(15'000'000) / (3*1))); // all ports set to input - MCFG_I8155_IN_PORTA_CB(READ8(*this, meyc8088_state, input_r)) - MCFG_I8155_IN_PORTB_CB(IOPORT("SW")) - MCFG_I8155_IN_PORTC_CB(READ8(*this, meyc8088_state, status_r)) + i8155_1.in_pa_callback().set(FUNC(meyc8088_state::input_r)); + i8155_1.in_pb_callback().set_ioport("SW"); + i8155_1.in_pc_callback().set(FUNC(meyc8088_state::status_r)); // i8251A trigger txc/rxc (debug related, unpopulated on sold boards) - MCFG_DEVICE_ADD("i8155_2", I8155, XTAL(15'000'000) / (3*32)) + i8155_device &i8155_2(I8155(config, "i8155_2", XTAL(15'000'000) / (3*32))); // all ports set to output - MCFG_I8155_OUT_PORTA_CB(WRITE8(*this, meyc8088_state, lights2_w)) - MCFG_I8155_OUT_PORTB_CB(WRITE8(*this, meyc8088_state, lights1_w)) - MCFG_I8155_OUT_PORTC_CB(WRITE8(*this, meyc8088_state, common_w)) - MCFG_I8155_OUT_TIMEROUT_CB(WRITELINE("dac", dac_bit_interface, write)) + i8155_2.out_pa_callback().set(FUNC(meyc8088_state::lights2_w)); + i8155_2.out_pb_callback().set(FUNC(meyc8088_state::lights1_w)); + i8155_2.out_pc_callback().set(FUNC(meyc8088_state::common_w)); + i8155_2.out_to_callback().set("dac", FUNC(dac_bit_interface::write)); MCFG_NVRAM_ADD_0FILL("nvram") diff --git a/src/mame/drivers/paranoia.cpp b/src/mame/drivers/paranoia.cpp index fbe47b2aa19..e51b1d7e0bd 100644 --- a/src/mame/drivers/paranoia.cpp +++ b/src/mame/drivers/paranoia.cpp @@ -185,11 +185,11 @@ MACHINE_CONFIG_START(paranoia_state::paranoia) MCFG_DEVICE_PROGRAM_MAP(paranoia_z80_map) MCFG_DEVICE_IO_MAP(paranoia_z80_io_map) - MCFG_DEVICE_ADD("i8155", I8155, 1000000 /*?*/) - MCFG_I8155_OUT_PORTA_CB(WRITE8(*this, paranoia_state, i8155_a_w)) - MCFG_I8155_OUT_PORTB_CB(WRITE8(*this, paranoia_state, i8155_b_w)) - MCFG_I8155_OUT_PORTC_CB(WRITE8(*this, paranoia_state, i8155_c_w)) - MCFG_I8155_OUT_TIMEROUT_CB(WRITELINE(*this, paranoia_state, i8155_timer_out)) + i8155_device &i8155(I8155(config, "i8155", 1000000 /*?*/)); + i8155.out_pa_callback().set(FUNC(paranoia_state::i8155_a_w)); + i8155.out_pb_callback().set(FUNC(paranoia_state::i8155_b_w)); + i8155.out_pc_callback().set(FUNC(paranoia_state::i8155_c_w)); + i8155.out_to_callback().set(FUNC(paranoia_state::i8155_timer_out)); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/sbugger.cpp b/src/mame/drivers/sbugger.cpp index b7870da3b67..b45c15a53cb 100644 --- a/src/mame/drivers/sbugger.cpp +++ b/src/mame/drivers/sbugger.cpp @@ -220,11 +220,11 @@ MACHINE_CONFIG_START(sbugger_state::sbugger) MCFG_DEVICE_PROGRAM_MAP(sbugger_map) MCFG_DEVICE_IO_MAP(sbugger_io_map) - MCFG_DEVICE_ADD("i8156", I8156, 200000) /* freq is an approximation */ - MCFG_I8155_IN_PORTA_CB(IOPORT("INPUTS")) - MCFG_I8155_IN_PORTB_CB(IOPORT("DSW1")) - MCFG_I8155_IN_PORTC_CB(IOPORT("DSW2")) - MCFG_I8155_OUT_TIMEROUT_CB(INPUTLINE("maincpu", I8085_RST75_LINE)) + i8156_device &i8156(I8156(config, "i8156", 200000)); /* freq is an approximation */ + i8156.in_pa_callback().set_ioport("INPUTS"); + i8156.in_pb_callback().set_ioport("DSW1"); + i8156.in_pc_callback().set_ioport("DSW2"); + i8156.out_to_callback().set_inputline(m_maincpu, I8085_RST75_LINE); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sbugger) diff --git a/src/mame/drivers/sdk85.cpp b/src/mame/drivers/sdk85.cpp index 239942208ae..dbca31faeb1 100644 --- a/src/mame/drivers/sdk85.cpp +++ b/src/mame/drivers/sdk85.cpp @@ -158,10 +158,10 @@ MACHINE_CONFIG_START(sdk85_state::sdk85) MCFG_DEVICE_ADD("expromio", I8355, 6.144_MHz_XTAL / 2) // Expansion ROM (A15) - MCFG_DEVICE_ADD("ramio", I8155, 6.144_MHz_XTAL / 2) // Basic RAM (A16) - MCFG_I8155_OUT_TIMEROUT_CB(INPUTLINE("maincpu", I8085_TRAP_LINE)) + i8155_device &i8155(I8155(config, "ramio", 6.144_MHz_XTAL / 2)); // Basic RAM (A16) + i8155.out_to_callback().set_inputline(m_maincpu, I8085_TRAP_LINE); - MCFG_DEVICE_ADD("expramio", I8155, 6.144_MHz_XTAL / 2) // Expansion RAM (A17) + I8155(config, "expramio", 6.144_MHz_XTAL / 2); // Expansion RAM (A17) /* video hardware */ config.set_default_layout(layout_sdk85); diff --git a/src/mame/drivers/testconsole.cpp b/src/mame/drivers/testconsole.cpp index ee68ee91d28..f9e118cc6c2 100644 --- a/src/mame/drivers/testconsole.cpp +++ b/src/mame/drivers/testconsole.cpp @@ -180,7 +180,7 @@ MACHINE_CONFIG_START(whouse_testcons_state::whousetc) MCFG_DEVICE_PROGRAM_MAP(program_map) MCFG_DEVICE_IO_MAP(io_map) - MCFG_DEVICE_ADD("i8155", I8155, 6.144_MHz_XTAL) + I8155(config, "i8155", 6.144_MHz_XTAL); MCFG_DEVICE_ADD("i8255", I8255, 0) diff --git a/src/mame/drivers/tourvis.cpp b/src/mame/drivers/tourvis.cpp index 6b04d125006..19daf8c831d 100644 --- a/src/mame/drivers/tourvis.cpp +++ b/src/mame/drivers/tourvis.cpp @@ -419,11 +419,11 @@ MACHINE_CONFIG_START(tourvision_state::tourvision) MCFG_HUC6270_VRAM_SIZE(0x10000) MCFG_HUC6270_IRQ_CHANGED_CB(INPUTLINE("maincpu", 0)) - MCFG_DEVICE_ADD("i8155", I8155, 1000000 /*?*/) - MCFG_I8155_OUT_PORTA_CB(WRITE8(*this, tourvision_state, tourvision_i8155_a_w)) - MCFG_I8155_OUT_PORTB_CB(WRITE8(*this, tourvision_state, tourvision_i8155_b_w)) - MCFG_I8155_OUT_PORTC_CB(WRITE8(*this, tourvision_state, tourvision_i8155_c_w)) - MCFG_I8155_OUT_TIMEROUT_CB(WRITELINE(*this, tourvision_state, tourvision_timer_out)) + i8155_device &i8155(I8155(config, "i8155", 1000000 /*?*/)); + i8155.out_pa_callback().set(FUNC(tourvision_state::tourvision_i8155_a_w)); + i8155.out_pb_callback().set(FUNC(tourvision_state::tourvision_i8155_b_w)); + i8155.out_pc_callback().set(FUNC(tourvision_state::tourvision_i8155_c_w)); + i8155.out_to_callback().set(FUNC(tourvision_state::tourvision_timer_out)); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); diff --git a/src/mame/drivers/unkhorse.cpp b/src/mame/drivers/unkhorse.cpp index 290caa9a691..becbcfb60ee 100644 --- a/src/mame/drivers/unkhorse.cpp +++ b/src/mame/drivers/unkhorse.cpp @@ -199,10 +199,10 @@ MACHINE_CONFIG_START(horse_state::horse) MCFG_DEVICE_PROGRAM_MAP(horse_map) MCFG_DEVICE_IO_MAP(horse_io_map) - MCFG_DEVICE_ADD("i8155", I8155, XTAL(12'000'000) / 4) // port A input, B output, C output but unused - MCFG_I8155_IN_PORTA_CB(READ8(*this, horse_state, input_r)) - MCFG_I8155_OUT_PORTB_CB(WRITE8(*this, horse_state, output_w)) - MCFG_I8155_OUT_TIMEROUT_CB(WRITELINE("speaker", speaker_sound_device, level_w)) + i8155_device &i8155(I8155(config, "i8155", XTAL(12'000'000) / 4)); // port A input, B output, C output but unused + i8155.in_pa_callback().set(FUNC(horse_state::input_r)); + i8155.out_pb_callback().set(FUNC(horse_state::output_w)); + i8155.out_to_callback().set("speaker", FUNC(speaker_sound_device::level_w)); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/videosaa.cpp b/src/mame/drivers/videosaa.cpp new file mode 100644 index 00000000000..8f975ff0cd1 --- /dev/null +++ b/src/mame/drivers/videosaa.cpp @@ -0,0 +1,183 @@ +// license:BSD-3-Clause +// copyright-holders: +/* + Skeleton driver for gambling (?) games running on very similar PCBs manufactured by 'Videos A A'. + + Probably manufactured in Italy since PCBs are marked 'lato componenti' (components side) and 'lato + saldature' (solder side). Lady Gum's 68HC705 ROM contains strings in French, though. + + PCBs couldn't be tested so game titles are taken from ROM stickers. + + The only complete dump is Lady Gum, all the others are missing at least the 68HC705 internal ROM. + + Hardware overview: + Main CPU: MC68HC705C8ACS (verified on Winner, stickers and PCB marks on other games say 68HC705) + CRTC: HD46505SP-2 + Sound: NEC D7759C + RAM: 2 x 6116 or equivalent + OSC: 10 MHz + Dips: 1 x 8 dips bank +*/ + +#include "emu.h" +#include "emupal.h" +#include "cpu/m6805/m68hc05.h" +#include "sound/upd7759.h" +#include "video/mc6845.h" +#include "screen.h" + +class videosaa_state : public driver_device +{ +public: + videosaa_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu") + { } + + void videosaa(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + +private: + required_device<cpu_device> m_maincpu; + + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); +}; + +void videosaa_state::video_start() +{ +} + +uint32_t videosaa_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +static INPUT_PORTS_START( videosaa ) +INPUT_PORTS_END + +static const gfx_layout tiles_layout = // seems to give reasonable results but needs verifying +{ + 8,8, + RGN_FRAC(1,3), + 3, + { RGN_FRAC(1,3), RGN_FRAC(2,3), RGN_FRAC(0,3) }, + { 0, 1, 2, 3, 4, 5, 6, 7 }, + { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, + 8*8 +}; + +static GFXDECODE_START( gfx ) + GFXDECODE_ENTRY( "gfx", 0, tiles_layout, 0, 1 ) +GFXDECODE_END + +void videosaa_state::machine_start() +{ +} + +void videosaa_state::machine_reset() +{ +} + +void videosaa_state::videosaa(machine_config &config) +{ + /* basic machine hardware */ + M68HC705C8A(config, m_maincpu, 10_MHz_XTAL); // unknown divider + + /* video hardware */ + // all wrong + 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, 480); + screen.set_visarea(0, 640-1, 0, 480-1); + screen.set_screen_update(FUNC(videosaa_state::screen_update)); + + H46505(config, "crtc", 10_MHz_XTAL); // unknown divider + + GFXDECODE(config, "gfxdecode", "palette", gfx); + + palette_device& palette(PALETTE(config, "palette", 8)); + palette.set_init("palette", FUNC(palette_device::palette_init_3bit_rgb)); + + /* sound hardware */ + UPD7759(config, "upd"); +} + +/*************************************************************************** + + Game drivers + +***************************************************************************/ + +ROM_START( jokrlady ) + ROM_REGION(0x2000, "maincpu", 0) + ROM_LOAD( "68hc705-jokerlady.0d", 0x0000, 0x2000, NO_DUMP ) // was missing on the PCB + + ROM_REGION( 0x6000, "gfx", 0 ) // all 27C64 + ROM_LOAD( "jokerlady-video0.5b", 0x0000, 0x2000, NO_DUMP ) // damaged, reads weren't consistent + ROM_LOAD( "jokerlady-video1.7b", 0x2000, 0x2000, CRC(196932d8) SHA1(5130f03dd88f841a00ef328f12c6211bec377c77) ) + ROM_LOAD( "jokerlady-video2.8b", 0x4000, 0x2000, CRC(58d62dbd) SHA1(cfcab2ca0c081f62185ce59e98124e2c5d368f49) ) + + ROM_REGION( 0x10000, "upd", 0 ) + ROM_LOAD( "jokerlady-msg0.5a", 0x00000, 0x10000, NO_DUMP ) // 27512, damaged, reads weren't consistent + + ROM_REGION( 0x200, "plds", 0 ) + ROM_LOAD( "st16as15hb1.9c", 0x000, 0x117, NO_DUMP ) +ROM_END + +ROM_START( ladygum ) + ROM_REGION(0x2000, "maincpu", 0) + ROM_LOAD( "68hc705-ladygum-4.0d", 0x0000, 0x2000, CRC(ea099edf) SHA1(eb0e4ccb025cf2a71d2016d501b4da11f8d21677) ) // actual label 68hc705-ladygum-#4.0d + + ROM_REGION( 0x6000, "gfx", 0 ) // all 27C64 + ROM_LOAD( "ladygum-video0.5b", 0x0000, 0x2000, CRC(c1b72a5b) SHA1(abb9c19be474a83e4f4568a5431634ba7a61d8db) ) + ROM_LOAD( "ladygum-video1.7b", 0x2000, 0x2000, CRC(70448e1f) SHA1(3c0a94284193e7d0f4efb8ffa746b9150d0119e4) ) + ROM_LOAD( "ladygum-video2.8b", 0x4000, 0x2000, CRC(58d62dbd) SHA1(cfcab2ca0c081f62185ce59e98124e2c5d368f49) ) + + ROM_REGION( 0x10000, "upd", 0 ) + ROM_LOAD( "ladygum-msg0.5a", 0x00000, 0x10000, CRC(c1f23f58) SHA1(c89579e53545291638be66e51512458b67251f67) ) // 27512 + + ROM_REGION( 0x200, "plds", 0 ) + ROM_LOAD( "st16as15hb1.9c", 0x000, 0x117, CRC(a76721d4) SHA1(c9f14107eceeeed9fa788916e3c40c9dd2fe5c41) ) +ROM_END + +ROM_START( paradar ) + ROM_REGION(0x2000, "maincpu", 0) + ROM_LOAD( "68hc705-paradar.0d", 0x0000, 0x2000, NO_DUMP ) + + ROM_REGION( 0x6000, "gfx", 0 ) // all 27C64 + ROM_LOAD( "paradar-video0.5b", 0x0000, 0x2000, CRC(b66a8b54) SHA1(aecc7b8ceed6189954a7cd3550d90dabd3bb23d6) ) + ROM_LOAD( "paradar-video1.7b", 0x2000, 0x2000, CRC(72b05246) SHA1(65988850188915583870a7fbb23b84193c1e753d) ) + ROM_LOAD( "paradar-video2.8b", 0x4000, 0x2000, CRC(b5eb61a0) SHA1(3ce63c7a68cf3e5343ceec53d477a1322e7f2929) ) + + ROM_REGION( 0x10000, "upd", 0 ) + ROM_LOAD( "paradar-msg0.5a", 0x00000, 0x10000, CRC(81f7c0cb) SHA1(15ee0c12a8f9c94beac7e5fe894e5f82a53d9fc1) ) // 27512 + + ROM_REGION( 0x200, "plds", 0 ) + ROM_LOAD( "gal16v8b.9c", 0x000, 0x117, CRC(3e031d55) SHA1(827c5380ec54bb162873bf19a19218255bd73e9d) ) +ROM_END + +ROM_START( winner ) // dump confirmed from 3 different PCBs + ROM_REGION(0x2000, "maincpu", 0) + ROM_LOAD( "68hc705-winner.0d", 0x0000, 0x2000, NO_DUMP ) // programmer gives a 'BOOTLOADER NOT RESPONDING' error + + ROM_REGION( 0x6000, "gfx", 0 ) // all 27C64 + ROM_LOAD( "winner-video0.5b", 0x0000, 0x2000, CRC(14740cf5) SHA1(ac3dc4de1d3135a33eb68e73e527059d53638354) ) + ROM_LOAD( "winner-video1.7b", 0x2000, 0x2000, CRC(caa4ef76) SHA1(2dab5bbe2a4bd60247219a9fc38cae017b81cdbf) ) + ROM_LOAD( "winner-video2.8b", 0x4000, 0x2000, CRC(ed520709) SHA1(10707aa2985eea06724c1f32c55c3c6b17e57333) ) + + ROM_REGION( 0x10000, "upd", 0 ) + ROM_LOAD( "winner-msg0.5a", 0x00000, 0x10000, CRC(81f7c0cb) SHA1(15ee0c12a8f9c94beac7e5fe894e5f82a53d9fc1) ) // 27512 + + ROM_REGION( 0x200, "plds", 0 ) + ROM_LOAD( "palce16v8h-25pc-4.9c", 0x000, 0x117, CRC(ac0347ee) SHA1(26b27d2037400c06e63528e0e59be6d7d1a81cab) ) +ROM_END + +GAME( 1995?, jokrlady, 0, videosaa, videosaa, videosaa_state, empty_init, ROT0, "Videos A A", "Joker Lady", MACHINE_IS_SKELETON ) +GAME( 1995?, ladygum, 0, videosaa, videosaa, videosaa_state, empty_init, ROT0, "Videos A A", "Lady Gum", MACHINE_IS_SKELETON ) +GAME( 1995?, paradar, 0, videosaa, videosaa, videosaa_state, empty_init, ROT0, "Videos A A", "Paradar", MACHINE_IS_SKELETON ) +GAME( 1995?, winner, 0, videosaa, videosaa, videosaa_state, empty_init, ROT0, "Videos A A", "Winner", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/vixen.cpp b/src/mame/drivers/vixen.cpp index 010e24cf639..19455fbff65 100644 --- a/src/mame/drivers/vixen.cpp +++ b/src/mame/drivers/vixen.cpp @@ -764,16 +764,16 @@ MACHINE_CONFIG_START(vixen_state::vixen) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) // devices - MCFG_DEVICE_ADD(P8155H_TAG, I8155, 23.9616_MHz_XTAL / 6) - MCFG_I8155_IN_PORTA_CB(READ8(*this, vixen_state, i8155_pa_r)) - MCFG_I8155_OUT_PORTB_CB(WRITE8(*this, vixen_state, i8155_pb_w)) - MCFG_I8155_OUT_PORTC_CB(WRITE8(*this, vixen_state, i8155_pc_w)) - - MCFG_DEVICE_ADD(P8155H_IO_TAG, I8155, 23.9616_MHz_XTAL / 6) - MCFG_I8155_OUT_PORTA_CB(WRITE8(m_ieee488, ieee488_device, host_dio_w)) - MCFG_I8155_OUT_PORTB_CB(WRITE8(*this, vixen_state, io_i8155_pb_w)) - MCFG_I8155_OUT_PORTC_CB(WRITE8(*this, vixen_state, io_i8155_pc_w)) - MCFG_I8155_OUT_TIMEROUT_CB(WRITELINE(*this, vixen_state, io_i8155_to_w)) + i8155_device &i8155(I8155(config, P8155H_TAG, 23.9616_MHz_XTAL / 6)); + i8155.in_pa_callback().set(FUNC(vixen_state::i8155_pa_r)); + i8155.out_pb_callback().set(FUNC(vixen_state::i8155_pb_w)); + i8155.out_pc_callback().set(FUNC(vixen_state::i8155_pc_w)); + + i8155_device &i8155_io(I8155(config, P8155H_IO_TAG, 23.9616_MHz_XTAL / 6)); + i8155_io.out_pa_callback().set(m_ieee488, FUNC(ieee488_device::host_dio_w)); + i8155_io.out_pb_callback().set(FUNC(vixen_state::io_i8155_pb_w)); + i8155_io.out_pc_callback().set(FUNC(vixen_state::io_i8155_pc_w)); + i8155_io.out_to_callback().set(FUNC(vixen_state::io_i8155_to_w)); MCFG_DEVICE_ADD(P8251A_TAG, I8251, 0) MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) diff --git a/src/mame/drivers/vp415.cpp b/src/mame/drivers/vp415.cpp index 8bc039dc66c..0881c3e66ae 100644 --- a/src/mame/drivers/vp415.cpp +++ b/src/mame/drivers/vp415.cpp @@ -528,10 +528,10 @@ MACHINE_CONFIG_START(vp415_state::vp415) MCFG_DEVICE_PROGRAM_MAP(drive_program_map) MCFG_DEVICE_IO_MAP(drive_io_map) - MCFG_DEVICE_ADD(I8155_TAG, I8155, 0) - MCFG_I8155_OUT_PORTA_CB(WRITE8(CHARGEN_TAG, mb88303_device, da_w)) - MCFG_I8155_IN_PORTB_CB(READ8(*this, vp415_state, drive_i8155_pb_r)) - MCFG_I8155_IN_PORTC_CB(READ8(*this, vp415_state, drive_i8155_pc_r)) + i8155_device &i8155(I8155(config, I8155_TAG, 0)); + i8155.out_pa_callback().set(CHARGEN_TAG, FUNC(mb88303_device::da_w)); + i8155.in_pb_callback().set(FUNC(vp415_state::drive_i8155_pb_r)); + i8155.in_pc_callback().set(FUNC(vp415_state::drive_i8155_pc_r)); MCFG_DEVICE_ADD(I8255_TAG, I8255, 0) MCFG_I8255_OUT_PORTA_CB(WRITE8(*this, vp415_state, drive_i8255_pa_w)) diff --git a/src/mame/includes/cvs.h b/src/mame/includes/cvs.h index 49499306105..3687b2971c8 100644 --- a/src/mame/includes/cvs.h +++ b/src/mame/includes/cvs.h @@ -48,8 +48,20 @@ public: , m_lamps(*this, "lamp%u", 1U) { } + void init_raiders(); + void init_huncholy(); + void init_hero(); + void init_superbik(); + void init_hunchbaka(); + void cvs(machine_config &config); + +protected: + + DECLARE_WRITE_LINE_MEMBER(write_s2650_flag); // used by galaxia_state + DECLARE_READ8_MEMBER(huncholy_prot_r); + DECLARE_READ8_MEMBER(superbik_prot_r); + DECLARE_READ8_MEMBER(hero_prot_r); DECLARE_READ_LINE_MEMBER(speech_rom_read_bit); - DECLARE_WRITE_LINE_MEMBER(write_s2650_flag); DECLARE_WRITE_LINE_MEMBER(cvs_slave_cpu_interrupt); DECLARE_READ8_MEMBER(cvs_input_r); DECLARE_WRITE8_MEMBER(cvs_speech_rom_address_lo_w); @@ -75,11 +87,6 @@ public: DECLARE_WRITE8_MEMBER(cvs_unknown_w); DECLARE_WRITE8_MEMBER(cvs_tms5110_ctl_w); DECLARE_WRITE8_MEMBER(cvs_tms5110_pdc_w); - void init_raiders(); - void init_huncholy(); - void init_hero(); - void init_superbik(); - void init_hunchbaka(); DECLARE_VIDEO_START(cvs); DECLARE_PALETTE_INIT(cvs); uint32_t screen_update_cvs(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -90,14 +97,12 @@ public: void cvs_init_stars(); void cvs_update_stars(bitmap_ind16 &bitmap, const rectangle &cliprect, const pen_t star_pen, bool update_always); void start_393hz_timer(); - void cvs(machine_config &config); void cvs_dac_cpu_map(address_map &map); void cvs_main_cpu_data_map(address_map &map); void cvs_main_cpu_io_map(address_map &map); void cvs_main_cpu_map(address_map &map); void cvs_speech_cpu_map(address_map &map); -protected: virtual void machine_start() override; virtual void machine_reset() override; @@ -123,6 +128,7 @@ protected: int m_s2650_flag; emu_timer *m_cvs_393hz_timer; uint8_t m_cvs_393hz_clock; + uint8_t m_protection_counter; uint8_t m_character_banking_mode; uint16_t m_character_ram_page_start; diff --git a/src/mame/mame.lst b/src/mame/mame.lst index dcbadec3fb2..418c8c0d8f9 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -38200,6 +38200,12 @@ videocba // (c) 1987 InterFlip videodad // (c) 1987 InterFlip videopkr // (c) 1984 InterFlip +@source:videosaa.cpp +jokrlady // +ladygum // +paradar // +winner // + @source:vigilant.cpp buccanrs // (c) 1989 Duintronic buccanrsa // (c) 1989 Duintronic |