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)
This commit is contained in:
David Haywood 2018-03-29 07:33:03 +01:00 committed by Ivan Vangelista
parent 216281cc41
commit 5cc972ca97
2 changed files with 24 additions and 3 deletions

View File

@ -551,6 +551,18 @@ INTERRUPT_GEN_MEMBER(taitof2_state::taitof2_interrupt)
device.execute().set_input_line(5, HOLD_LINE); 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 SOUND
@ -2985,8 +2997,12 @@ MACHINE_CONFIG_START(taitof2_state::megab)
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_MODIFY("maincpu") MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(megab_map) 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 */ 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 */ /* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_megab) 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_LOAD16_BYTE( "c11-11.38", 0x40001, 0x20000, CRC(263ecbf9) SHA1(b49c59058d6d11ea0d9f9b041789e381e5742905) )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 ) 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_REGION( 0x080000, "gfx1", 0 ) /* SCR */
ROM_LOAD( "c11-05.58", 0x00000, 0x80000, CRC(733e6d8e) SHA1(47f3360f7c41b7e4a42e8198fc1bcce4e819181f) ) 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_LOAD16_BYTE( "c11-10.38", 0x40001, 0x20000, CRC(bf379a43) SHA1(2a0294e55c2ce514caa2885b728e6387311ed482) )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 ) 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_REGION( 0x080000, "gfx1", 0 ) /* SCR */
ROM_LOAD( "c11-05.58", 0x00000, 0x80000, CRC(733e6d8e) SHA1(47f3360f7c41b7e4a42e8198fc1bcce4e819181f) ) 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_LOAD16_BYTE( "c11-09.38", 0x40001, 0x20000, CRC(c830aad5) SHA1(967ad3e052572300f5f49375e5f8348f2d595680) ) // c11-09.18
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 ) 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_REGION( 0x080000, "gfx1", 0 ) /* SCR */
ROM_LOAD( "c11-05.58", 0x00000, 0x80000, CRC(733e6d8e) SHA1(47f3360f7c41b7e4a42e8198fc1bcce4e819181f) ) ROM_LOAD( "c11-05.58", 0x00000, 0x80000, CRC(733e6d8e) SHA1(47f3360f7c41b7e4a42e8198fc1bcce4e819181f) )

View File

@ -15,6 +15,7 @@
#include "video/tc0280grd.h" #include "video/tc0280grd.h"
#include "video/tc0360pri.h" #include "video/tc0360pri.h"
#include "video/tc0480scp.h" #include "video/tc0480scp.h"
#include "machine/timer.h"
class taitof2_state : public driver_device class taitof2_state : public driver_device
@ -41,6 +42,7 @@ public:
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_cchip(*this, "cchip"), m_cchip(*this, "cchip"),
m_cchip_irq_clear(*this, "cchip_irq_clear"),
m_oki(*this, "oki"), m_oki(*this, "oki"),
m_tc0100scn(*this, "tc0100scn"), m_tc0100scn(*this, "tc0100scn"),
m_tc0100scn_1(*this, "tc0100scn_1"), m_tc0100scn_1(*this, "tc0100scn_1"),
@ -108,6 +110,7 @@ public:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_audiocpu;
optional_device<taito_cchip_device> m_cchip; optional_device<taito_cchip_device> m_cchip;
optional_device<timer_device> m_cchip_irq_clear;
optional_device<okim6295_device> m_oki; optional_device<okim6295_device> m_oki;
optional_device<tc0100scn_device> m_tc0100scn; optional_device<tc0100scn_device> m_tc0100scn;
optional_device<tc0100scn_device> m_tc0100scn_1; 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_full_buffer_delayed);
DECLARE_WRITE_LINE_MEMBER(screen_vblank_partial_buffer_delayed_qzchikyu); DECLARE_WRITE_LINE_MEMBER(screen_vblank_partial_buffer_delayed_qzchikyu);
INTERRUPT_GEN_MEMBER(taitof2_interrupt); INTERRUPT_GEN_MEMBER(taitof2_interrupt);
INTERRUPT_GEN_MEMBER(megab_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(cchip_irq_clear_cb);
void reset_driveout_sound_region(); void reset_driveout_sound_region();
void taitof2_core_vh_start (int sprite_type, int hide, int flip_hide ); 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 ); void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int *primasks, int uses_tc360_mixer );