From a830ca053d33e0817a3ba518be734a42f7d41b94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Banaan=20Ananas?= Date: Thu, 3 May 2012 01:47:06 +0000 Subject: [PATCH] some driver updates, nw --- src/mame/drivers/byvid.c | 136 +++++++++++++++++++++++++++++---------- src/mame/mame.lst | 1 + 2 files changed, 102 insertions(+), 35 deletions(-) diff --git a/src/mame/drivers/byvid.c b/src/mame/drivers/byvid.c index 317355c9641..c852b58cf3b 100644 --- a/src/mame/drivers/byvid.c +++ b/src/mame/drivers/byvid.c @@ -8,6 +8,7 @@ #include "cpu/m6809/m6809.h" #include "video/tms9928a.h" #include "machine/6821pia.h" +#include "sound/dac.h" class by133_state : public driver_device { @@ -16,17 +17,22 @@ public: : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_videocpu(*this, "videocpu"), - m_pia(*this, "pia") + m_audiocpu(*this, "audiocpu"), + m_videopia(*this, "videopia") { } - // devices required_device m_maincpu; required_device m_videocpu; - required_device m_pia; + required_device m_audiocpu; + required_device m_videopia; - DECLARE_INPUT_CHANGED_MEMBER(test_switch_press); + DECLARE_READ8_MEMBER(m6803_port2_r); + + DECLARE_INPUT_CHANGED_MEMBER(video_test); + DECLARE_INPUT_CHANGED_MEMBER(sound_test); // UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + protected: // driver_device overrides @@ -40,7 +46,7 @@ UINT32 by133_state::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, } #endif -static ADDRESS_MAP_START( by133_map, AS_PROGRAM, 8, by133_state ) +static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, by133_state ) AM_RANGE(0x0000, 0xffff) AM_NOP ADDRESS_MAP_GLOBAL_MASK(0x7fff) AM_RANGE(0x1000, 0x7fff) AM_ROM @@ -48,26 +54,51 @@ ADDRESS_MAP_END -static ADDRESS_MAP_START( by133_video_map, AS_PROGRAM, 8, by133_state ) +static ADDRESS_MAP_START( video_map, AS_PROGRAM, 8, by133_state ) // AM_RANGE(0x0000, 0x1fff) communication with main CPU - AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE( "tms9928a", tms9928a_device, vram_read, vram_write ) - AM_RANGE(0x4001, 0x4001) AM_DEVREADWRITE( "tms9928a", tms9928a_device, register_read, register_write ) + AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("videopia", pia6821_device, read, write) + AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) + AM_RANGE(0x4001, 0x4001) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write) AM_RANGE(0x6000, 0x63ff) AM_RAM AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END -INPUT_CHANGED_MEMBER(by133_state::test_switch_press) -{ + +READ8_MEMBER(by133_state::m6803_port2_r) +{ + // TODO: port 2 to /reset pin (see schematics) + UINT8 d0 = m_videopia->cb2_output() ? 1 : 0; + return (m_videopia->b_output() << 1 & 0x1e) | d0; +} + +static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, by133_state ) + AM_RANGE(0xc000, 0xffff) AM_ROM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, by133_state ) + AM_RANGE(M6801_PORT1, M6801_PORT1) AM_DEVWRITE_LEGACY("dac", dac_w) + AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READ(m6803_port2_r) +ADDRESS_MAP_END + + +INPUT_CHANGED_MEMBER(by133_state::video_test) +{ if(newval) device_set_input_line(m_videocpu, INPUT_LINE_NMI, PULSE_LINE); } +INPUT_CHANGED_MEMBER(by133_state::sound_test) +{ + if(newval) + device_set_input_line(m_audiocpu, INPUT_LINE_NMI, PULSE_LINE); +} + static INPUT_PORTS_START( by133 ) - /* service switch is directly hard-wired with the NMI signal */ + /* test switch is directly hard-wired to the NMI signal */ PORT_START("TEST") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, by133_state,test_switch_press, 0) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Video Test") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, by133_state, video_test, 0) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Sound Test") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, by133_state, sound_test, 0) INPUT_PORTS_END void by133_state::machine_reset() @@ -80,7 +111,7 @@ static DRIVER_INIT( by133 ) static WRITE_LINE_DEVICE_HANDLER(vdp_interrupt) { - cputag_set_input_line(device->machine(), "videocpu", M6809_IRQ_LINE, (state ? ASSERT_LINE : CLEAR_LINE)); + cputag_set_input_line(device->machine(), "videocpu", M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); } static TMS9928A_INTERFACE(byvid_tms9928a_interface) @@ -90,9 +121,17 @@ static TMS9928A_INTERFACE(byvid_tms9928a_interface) DEVCB_LINE(vdp_interrupt) }; -static WRITE_LINE_DEVICE_HANDLER( by133_firq ) +static WRITE_LINE_DEVICE_HANDLER(by133_firq) { - cputag_set_input_line(device->machine(), "videocpu", M6809_FIRQ_LINE, (state ? ASSERT_LINE : CLEAR_LINE)); + by133_state *drv_state = device->machine().driver_data(); + device_set_input_line(drv_state->m_videocpu, M6809_FIRQ_LINE, (drv_state->m_videopia->irq_a_state() || drv_state->m_videopia->irq_b_state()) ? ASSERT_LINE : CLEAR_LINE); +} + +static WRITE_LINE_DEVICE_HANDLER(by133_cb2) +{ + // to M6803 port 2 d0 + by133_state *drv_state = device->machine().driver_data(); + device_set_input_line(drv_state->m_audiocpu, M6801_TIN_LINE, state ? ASSERT_LINE : CLEAR_LINE); } static READ8_DEVICE_HANDLER(by133_portb_r) @@ -100,7 +139,7 @@ static READ8_DEVICE_HANDLER(by133_portb_r) return 0; } -static const pia6821_interface pia_intf = +static const pia6821_interface videopia_intf = { DEVCB_NULL, /* port A in */ DEVCB_HANDLER(by133_portb_r), /* port B in */ @@ -111,7 +150,7 @@ static const pia6821_interface pia_intf = DEVCB_NULL, /* port A out */ DEVCB_NULL, /* port B out */ DEVCB_NULL, /* line CA2 out */ - DEVCB_NULL, /* port CB2 out */ + DEVCB_LINE(by133_cb2), /* line CB2 out */ DEVCB_LINE(by133_firq), /* IRQA */ DEVCB_LINE(by133_firq) /* IRQB */ }; @@ -121,23 +160,27 @@ static MACHINE_CONFIG_START( by133, by133_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, 3580000/4) MCFG_DEVICE_DISABLE() - MCFG_CPU_PROGRAM_MAP(by133_map) + MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_ADD("videocpu", M6809, 3580000/4) - MCFG_CPU_PROGRAM_MAP(by133_video_map) + MCFG_CPU_PROGRAM_MAP(video_map) - MCFG_PIA6821_ADD("pia", pia_intf) + MCFG_CPU_ADD("audiocpu", M6803, XTAL_3_579545MHz) + MCFG_CPU_PROGRAM_MAP(sound_map) + MCFG_CPU_IO_MAP(sound_portmap) + + MCFG_PIA6821_ADD("videopia", videopia_intf) /* video hardware */ MCFG_TMS9928A_ADD( "tms9928a", TMS9928A, byvid_tms9928a_interface ) MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update ) - /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") -// MCFG_SOUND_ADD("aysnd", AY8910, MAIN_CLOCK/4) -// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) + + MCFG_SOUND_ADD("dac", DAC, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END /*----------------------------------------------------- @@ -149,14 +192,34 @@ ROM_START(babypac) ROM_CONTINUE( 0x5000, 0x0800) ROM_LOAD( "891-u6.732", 0x1800, 0x0800, CRC(6136d636) SHA1(c01a0a2fcad3bdabd649128e012ab558b1c90cd3) ) ROM_CONTINUE( 0x5800, 0x0800) - ROM_RELOAD( 0x7000, 0x1000) + ROM_RELOAD( 0x7000, 0x1000) + ROM_REGION(0x10000, "videocpu", 0) - ROM_LOAD( "891-u9.764", 0x8000, 0x2000, CRC(7fa570f3) SHA1(423ad9266b1ded00fa52ce4180d518874142a203)) - ROM_LOAD( "891-u10.764", 0xa000, 0x2000, CRC(28f4df8b) SHA1(bd6a3598c2c90b5a3a59327616d2f5b9940d98bc)) - ROM_LOAD( "891-u11.764", 0xc000, 0x2000, CRC(0a5967a4) SHA1(26d56ddea3f39d41e382449007bf7ba113c0285f)) - ROM_LOAD( "891-u12.764", 0xe000, 0x2000, CRC(58cfe542) SHA1(e024d14019866bd460d1da6b901f9b786a76a181)) - ROM_REGION(0x10000, "soundcpu", 0) - ROM_LOAD( "891-u29.764", 0xe000, 0x2000, CRC(0b57fd5d) SHA1(43a03e6d16c87c3305adb04722484f992f23a1bd)) + ROM_LOAD( "891-16-u09.764", 0x8000, 0x2000, CRC(781e90e9) SHA1(940047cc875ae531a825af069bb650d59c9495a6)) + ROM_LOAD( "891-11-u10.764", 0xa000, 0x2000, CRC(28f4df8b) SHA1(bd6a3598c2c90b5a3a59327616d2f5b9940d98bc)) + ROM_LOAD( "891-05-u11.764", 0xc000, 0x2000, CRC(0a5967a4) SHA1(26d56ddea3f39d41e382449007bf7ba113c0285f)) + ROM_LOAD( "891-06-u12.764", 0xe000, 0x2000, CRC(58cfe542) SHA1(e024d14019866bd460d1da6b901f9b786a76a181)) + + ROM_REGION(0x10000, "audiocpu", 0) + ROM_LOAD( "891-12-u29.764", 0xe000, 0x2000, CRC(0b57fd5d) SHA1(43a03e6d16c87c3305adb04722484f992f23a1bd)) +ROM_END + +ROM_START(babypac2) + ROM_REGION(0x10000, "maincpu", 0) + ROM_LOAD( "891-u2.732", 0x1000, 0x0800, CRC(7f7242d1) SHA1(213a697bb7fc69f93ea04621f0fcfdd796f35196)) + ROM_CONTINUE( 0x5000, 0x0800) + ROM_LOAD( "891-u6.732", 0x1800, 0x0800, CRC(6136d636) SHA1(c01a0a2fcad3bdabd649128e012ab558b1c90cd3) ) + ROM_CONTINUE( 0x5800, 0x0800) + ROM_RELOAD( 0x7000, 0x1000) + + ROM_REGION(0x10000, "videocpu", 0) + ROM_LOAD( "891-13-u09.764", 0x8000, 0x2000, CRC(7fa570f3) SHA1(423ad9266b1ded00fa52ce4180d518874142a203)) + ROM_LOAD( "891-11-u10.764", 0xa000, 0x2000, CRC(28f4df8b) SHA1(bd6a3598c2c90b5a3a59327616d2f5b9940d98bc)) + ROM_LOAD( "891-05-u11.764", 0xc000, 0x2000, CRC(0a5967a4) SHA1(26d56ddea3f39d41e382449007bf7ba113c0285f)) + ROM_LOAD( "891-06-u12.764", 0xe000, 0x2000, CRC(58cfe542) SHA1(e024d14019866bd460d1da6b901f9b786a76a181)) + + ROM_REGION(0x10000, "audiocpu", 0) + ROM_LOAD( "891-12-u29.764", 0xe000, 0x2000, CRC(0b57fd5d) SHA1(43a03e6d16c87c3305adb04722484f992f23a1bd)) ROM_END /*----------------------------------------------------------------- @@ -168,7 +231,8 @@ ROM_START(granny) ROM_CONTINUE( 0x5000, 0x0800) ROM_LOAD( "cpu_u6.532", 0x1800, 0x0800, CRC(306aa673) SHA1(422c3d9decf9214a18edb536c2077bf52b272e7d) ) ROM_CONTINUE( 0x5800, 0x0800) - ROM_RELOAD( 0xf000, 0x1000) + ROM_RELOAD( 0xf000, 0x1000) + ROM_REGION(0x10000, "videocpu", 0) ROM_LOAD( "vid_u4.764", 0x4000, 0x2000, CRC(3a3d4c6b) SHA1(a6c27eee178a4bde67004e11f6ddf3b6414571dd)) ROM_LOAD( "vid_u5.764", 0x6000, 0x2000, CRC(78bcb0fb) SHA1(d9dc1cc1bef063d5fbdbf2d1daf793234a9c55a0)) @@ -176,10 +240,12 @@ ROM_START(granny) ROM_LOAD( "vid_u7.764", 0xa000, 0x2000, CRC(aa71cf29) SHA1(b69cd4060f5d4d2a7f85d901552cdc987013fde2)) ROM_LOAD( "vid_u8.764", 0xc000, 0x2000, CRC(a442bc01) SHA1(2c01123dc5799561ae9e7c5d6db588b82b5ae59c)) ROM_LOAD( "vid_u9.764", 0xe000, 0x2000, CRC(6b67a1f7) SHA1(251c2b941898363bbd6ee1a94710e2b2938ec851)) - ROM_REGION(0x10000, "soundcpu", 0) + + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD( "cs_u3.764", 0xe000, 0x2000, CRC(0a39a51d) SHA1(98342ba38e48578ce9870f2ee85b553d46c0e35f)) ROM_END -GAME(1982, babypac, 0, by133, by133, by133, ROT90, "Bally", "Baby Pacman (Video/Pinball Combo)", GAME_IS_SKELETON_MECHANICAL) -GAME(1984, granny, 0, by133, by133, by133, ROT0, "Bally", "Granny and the Gators (Video/Pinball Combo)", GAME_IS_SKELETON_MECHANICAL) +GAME( 1982, babypac, 0, by133, by133, by133, ROT90, "Bally", "Baby Pac-Man (set 1)", GAME_IS_SKELETON_MECHANICAL) +GAME( 1982, babypac2, babypac, by133, by133, by133, ROT90, "Bally", "Baby Pac-Man (set 2)", GAME_IS_SKELETON_MECHANICAL) +GAME( 1984, granny, 0, by133, by133, by133, ROT0, "Bally", "Granny and the Gators", GAME_IS_SKELETON_MECHANICAL) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 3db6716116e..705bc780420 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -20082,6 +20082,7 @@ trucksp2 Bally MPU AS-2518-133 */ babypac +babypac2 granny // by68701.c