summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author David Haywood <hazemamewip@hotmail.com>2018-03-29 07:33:03 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2018-03-29 08:33:03 +0200
commit5cc972ca978ece4192a4d3c7f02a244cade210d0 (patch)
tree8a5927e56897a4ddd23d0a3f1ed6e7eb39543baf
parent216281cc41c609661d1bd292f07b69d1b51171ba (diff)
use real C-chip ROM for MegaBlast [Team Caps0ff] (#3401)
(hook it up, for some definition of hook up, since it basically does nothing at all the game cares about)
-rw-r--r--src/mame/drivers/taito_f2.cpp22
-rw-r--r--src/mame/includes/taito_f2.h5
2 files changed, 24 insertions, 3 deletions
diff --git a/src/mame/drivers/taito_f2.cpp b/src/mame/drivers/taito_f2.cpp
index 63daba7d922..9250cc9f0a2 100644
--- a/src/mame/drivers/taito_f2.cpp
+++ b/src/mame/drivers/taito_f2.cpp
@@ -551,6 +551,18 @@ INTERRUPT_GEN_MEMBER(taitof2_state::taitof2_interrupt)
device.execute().set_input_line(5, HOLD_LINE);
}
+INTERRUPT_GEN_MEMBER(taitof2_state::megab_interrupt)
+{
+ taitof2_interrupt(device);
+ m_cchip->ext_interrupt(ASSERT_LINE);
+ m_cchip_irq_clear->adjust(attotime::zero);
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(taitof2_state::cchip_irq_clear_cb)
+{
+ m_cchip->ext_interrupt(CLEAR_LINE);
+}
+
/****************************************************************
SOUND
@@ -2985,8 +2997,12 @@ MACHINE_CONFIG_START(taitof2_state::megab)
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(megab_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", taitof2_state, megab_interrupt)
MCFG_TAITO_CCHIP_ADD("cchip", XTAL(24'000'000)/2) /* 12MHz */
+ // the ports don't appear to hook up to anything
+
+ MCFG_TIMER_DRIVER_ADD("cchip_irq_clear", taitof2_state, cchip_irq_clear_cb)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_megab)
@@ -4057,7 +4073,7 @@ ROM_START( megablst )
ROM_LOAD16_BYTE( "c11-11.38", 0x40001, 0x20000, CRC(263ecbf9) SHA1(b49c59058d6d11ea0d9f9b041789e381e5742905) )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
- ROM_LOAD( "cchip_c11", 0x0000, 0x2000, NO_DUMP )
+ ROM_LOAD( "cchip_c11", 0x0000, 0x2000, CRC(af49ee7f) SHA1(824d7ed371c19f31768b20117027edba6ffc890e) )
ROM_REGION( 0x080000, "gfx1", 0 ) /* SCR */
ROM_LOAD( "c11-05.58", 0x00000, 0x80000, CRC(733e6d8e) SHA1(47f3360f7c41b7e4a42e8198fc1bcce4e819181f) )
@@ -4093,7 +4109,7 @@ ROM_START( megablstu )
ROM_LOAD16_BYTE( "c11-10.38", 0x40001, 0x20000, CRC(bf379a43) SHA1(2a0294e55c2ce514caa2885b728e6387311ed482) )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
- ROM_LOAD( "cchip_c11", 0x0000, 0x2000, NO_DUMP )
+ ROM_LOAD( "cchip_c11", 0x0000, 0x2000, CRC(af49ee7f) SHA1(824d7ed371c19f31768b20117027edba6ffc890e) )
ROM_REGION( 0x080000, "gfx1", 0 ) /* SCR */
ROM_LOAD( "c11-05.58", 0x00000, 0x80000, CRC(733e6d8e) SHA1(47f3360f7c41b7e4a42e8198fc1bcce4e819181f) )
@@ -4121,7 +4137,7 @@ ROM_START( megablstj )
ROM_LOAD16_BYTE( "c11-09.38", 0x40001, 0x20000, CRC(c830aad5) SHA1(967ad3e052572300f5f49375e5f8348f2d595680) ) // c11-09.18
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
- ROM_LOAD( "cchip_c11", 0x0000, 0x2000, NO_DUMP )
+ ROM_LOAD( "cchip_c11", 0x0000, 0x2000, CRC(af49ee7f) SHA1(824d7ed371c19f31768b20117027edba6ffc890e) )
ROM_REGION( 0x080000, "gfx1", 0 ) /* SCR */
ROM_LOAD( "c11-05.58", 0x00000, 0x80000, CRC(733e6d8e) SHA1(47f3360f7c41b7e4a42e8198fc1bcce4e819181f) )
diff --git a/src/mame/includes/taito_f2.h b/src/mame/includes/taito_f2.h
index 1a30481d3b4..09b68adac48 100644
--- a/src/mame/includes/taito_f2.h
+++ b/src/mame/includes/taito_f2.h
@@ -15,6 +15,7 @@
#include "video/tc0280grd.h"
#include "video/tc0360pri.h"
#include "video/tc0480scp.h"
+#include "machine/timer.h"
class taitof2_state : public driver_device
@@ -41,6 +42,7 @@ public:
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_cchip(*this, "cchip"),
+ m_cchip_irq_clear(*this, "cchip_irq_clear"),
m_oki(*this, "oki"),
m_tc0100scn(*this, "tc0100scn"),
m_tc0100scn_1(*this, "tc0100scn_1"),
@@ -108,6 +110,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
optional_device<taito_cchip_device> m_cchip;
+ optional_device<timer_device> m_cchip_irq_clear;
optional_device<okim6295_device> m_oki;
optional_device<tc0100scn_device> m_tc0100scn;
optional_device<tc0100scn_device> m_tc0100scn_1;
@@ -181,6 +184,8 @@ public:
DECLARE_WRITE_LINE_MEMBER(screen_vblank_full_buffer_delayed);
DECLARE_WRITE_LINE_MEMBER(screen_vblank_partial_buffer_delayed_qzchikyu);
INTERRUPT_GEN_MEMBER(taitof2_interrupt);
+ INTERRUPT_GEN_MEMBER(megab_interrupt);
+ TIMER_DEVICE_CALLBACK_MEMBER(cchip_irq_clear_cb);
void reset_driveout_sound_region();
void taitof2_core_vh_start (int sprite_type, int hide, int flip_hide );
void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int *primasks, int uses_tc360_mixer );