prepare model 2 for 315-5881

This commit is contained in:
mamehaze 2015-01-22 15:08:45 +00:00
parent 22721420b3
commit 5f7e2f4169
3 changed files with 122 additions and 79 deletions

View File

@ -124,7 +124,6 @@
#include "sound/2612intf.h"
#include "includes/model2.h"
enum {
DSP_TYPE_TGP = 1,
DSP_TYPE_SHARC = 2,
@ -1247,7 +1246,7 @@ READ32_MEMBER(model2_state::model2_prot_r)
if (offset == 0x10000/4)
{
// status: bit 0 = 1 for busy, 0 for ready
return 0; // we're always ready
retval = 0; // we're always ready
}
else if (offset == 0x1000e/4)
{
@ -1264,17 +1263,21 @@ READ32_MEMBER(model2_state::model2_prot_r)
{
m_prot_a = !m_prot_a;
if (m_prot_a)
return 0xffff;
retval = 0xffff;
else
return 0xfff0;
retval = 0xfff0;
}
else logerror("Unhandled Protection READ @ %x mask %x (PC=%x)\n", offset, mem_mask, space.device().safe_pc());
printf("model2_prot_r %08x: %08x (%08x)\n", offset*4, retval, mem_mask);
return retval;
}
WRITE32_MEMBER(model2_state::model2_prot_w)
{
printf("model2_prot_w %08x: %08x (%08x)\n", offset*4, data, mem_mask);
if (mem_mask == 0xffff0000)
{
data >>= 16;
@ -1330,7 +1333,13 @@ WRITE32_MEMBER(model2_state::model2_prot_w)
break;
}
}
else if (offset == 0x7ff2/4)
else logerror("Unhandled Protection WRITE %x @ %x mask %x (PC=%x)\n", data, offset, mem_mask, space.device().safe_pc());
}
WRITE32_MEMBER(model2_state::doa_prot_w)
{
if (offset == 0x7ff2 / 4)
{
if (data == 0)
{
@ -1339,7 +1348,6 @@ WRITE32_MEMBER(model2_state::model2_prot_w)
}
}
else logerror("Unhandled Protection WRITE %x @ %x mask %x (PC=%x)\n", data, offset, mem_mask, space.device().safe_pc());
}
/* Daytona "To The MAXX" PIC protection simulation */
@ -2534,6 +2542,17 @@ static MACHINE_CONFIG_DERIVED( manxttdx, model2a ) /* Includes a Model 1 Sound b
MCFG_SEGAM1AUDIO_ADD("m1audio")
MACHINE_CONFIG_END
UINT16 model2_state::crypt_read_callback(UINT32 addr)
{
UINT16 dat= m_maincpu->space().read_word((0x1d80000+2*addr));
return ((dat&0xff00)>>8)|((dat&0x00ff)<<8);
}
static MACHINE_CONFIG_DERIVED( model2a_5881, model2a )
MCFG_DEVICE_ADD("315_5881", SEGA315_5881_CRYPT, 0)
MCFG_SET_READ_CALLBACK(model2_state, crypt_read_callback)
MACHINE_CONFIG_END
READ8_MEMBER(model2_state::driveio_port_r)
{
return m_driveio_comm_data;
@ -2631,6 +2650,12 @@ static MACHINE_CONFIG_START( model2b, model2_state )
MCFG_SOUND_ROUTE(0, "rspeaker", 2.0)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( model2b_5881, model2b )
MCFG_DEVICE_ADD("315_5881", SEGA315_5881_CRYPT, 0)
MCFG_SET_READ_CALLBACK(model2_state, crypt_read_callback)
MACHINE_CONFIG_END
static ADDRESS_MAP_START( copro_tgpx4_map, AS_PROGRAM, 32, model2_state )
AM_RANGE(0x00000000, 0x00007fff) AM_RAM AM_SHARE("tgpx4_program")
ADDRESS_MAP_END
@ -2690,6 +2715,12 @@ static MACHINE_CONFIG_DERIVED( stcc, model2c )
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( model2c_5881, model2c )
MCFG_DEVICE_ADD("315_5881", SEGA315_5881_CRYPT, 0)
MCFG_SET_READ_CALLBACK(model2_state, crypt_read_callback)
MACHINE_CONFIG_END
/* ROM definitions */
/*
@ -5886,23 +5917,19 @@ DRIVER_INIT_MEMBER(model2_state,genprot)
DRIVER_INIT_MEMBER(model2_state,pltkids)
{
UINT32 *ROM = (UINT32 *)memregion("maincpu")->base();
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x01d80000, 0x01dfffff, read32_delegate(FUNC(model2_state::model2_prot_r),this), write32_delegate(FUNC(model2_state::model2_prot_w),this));
m_protstate = m_protpos = 0;
DRIVER_INIT_CALL(genprot);
// fix bug in program: it destroys the interrupt table and never fixes it
UINT32 *ROM = (UINT32 *)memregion("maincpu")->base();
ROM[0x730/4] = 0x08000004;
}
DRIVER_INIT_MEMBER(model2_state,zerogun)
{
UINT32 *ROM = (UINT32 *)memregion("maincpu")->base();
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x01d80000, 0x01dfffff, read32_delegate(FUNC(model2_state::model2_prot_r),this), write32_delegate(FUNC(model2_state::model2_prot_w),this));
m_protstate = m_protpos = 0;
DRIVER_INIT_CALL(genprot);
// fix bug in program: it destroys the interrupt table and never fixes it
UINT32 *ROM = (UINT32 *)memregion("maincpu")->base();
ROM[0x700/4] = 0x08000004;
}
@ -5939,13 +5966,11 @@ WRITE32_MEMBER(model2_state::jaleco_network_w)
DRIVER_INIT_MEMBER(model2_state,sgt24h)
{
UINT32 *ROM = (UINT32 *)memregion("maincpu")->base();
// DRIVER_INIT_CALL(genprot);
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x01d80000, 0x01dfffff, read32_delegate(FUNC(model2_state::model2_prot_r),this), write32_delegate(FUNC(model2_state::model2_prot_w),this));
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x01a10000, 0x01a1ffff, read32_delegate(FUNC(model2_state::jaleco_network_r),this), write32_delegate(FUNC(model2_state::jaleco_network_w),this));
m_protstate = m_protpos = 0;
UINT32 *ROM = (UINT32 *)memregion("maincpu")->base();
ROM[0x56578/4] = 0x08000004;
//ROM[0x5b3e8/4] = 0x08000004;
}
@ -5958,11 +5983,11 @@ DRIVER_INIT_MEMBER(model2_state,overrev)
DRIVER_INIT_MEMBER(model2_state,doa)
{
UINT32 *ROM = (UINT32 *)memregion("maincpu")->base();
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x01d80000, 0x01dfffff, read32_delegate(FUNC(model2_state::model2_prot_r),this), write32_delegate(FUNC(model2_state::model2_prot_w),this));
m_maincpu->space(AS_PROGRAM).install_write_handler(0x01d80000, 0x01dfffff, write32_delegate(FUNC(model2_state::doa_prot_w),this));
m_protstate = m_protpos = 0;
UINT32 *ROM = (UINT32 *)memregion("maincpu")->base();
ROM[0x630/4] = 0x08000004;
ROM[0x808/4] = 0x08000004;
}
@ -5991,63 +6016,63 @@ GAME( 1994, vcop, 0, model2o, vcop, driver_device, 0, ROT0,
GAME( 1994, vcopa, vcop, model2o, vcop, driver_device, 0, ROT0, "Sega", "Virtua Cop (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
// Model 2A-CRX (TGPs, SCSP sound board)
GAME( 1995, manxtt, 0, manxttdx,manxtt, driver_device, 0, ROT0, "Sega", "Manx TT Superbike - DX (Revision D)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, manxttc, 0, model2a, manxtt, driver_device, 0, ROT0, "Sega", "Manx TT Superbike - Twin (Revision C)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, srallyc, 0, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - TWIN (Revision C)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, srallycb, srallyc, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - TWIN (Revision B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, srallyca, srallyc, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - DX (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, vf2, 0, model2a, model2, driver_device, 0, ROT0, "Sega", "Virtua Fighter 2 (Version 2.1)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, vf2b, vf2, model2a, model2, driver_device, 0, ROT0, "Sega", "Virtua Fighter 2 (Revision B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, vf2a, vf2, model2a, model2, driver_device, 0, ROT0, "Sega", "Virtua Fighter 2 (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, vf2o, vf2, model2a, model2, driver_device, 0, ROT0, "Sega", "Virtua Fighter 2", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, vcop2, 0, model2a, vcop2, driver_device, 0, ROT0, "Sega", "Virtua Cop 2", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, skytargt, 0, model2a, skytargt,driver_device, 0, ROT0, "Sega", "Sky Target", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, doaa, doa, model2a, model2, model2_state, doa, ROT0, "Sega", "Dead or Alive (Model 2A, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, zeroguna, zerogun, model2a, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, zerogunaj, zerogun, model2a, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, motoraid, 0, model2a, manxtt, driver_device, 0, ROT0, "Sega", "Motor Raid - Twin", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, dynamcop, 0, model2a, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Cop (Export, Model 2A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, dyndeka2, dynamcop, model2a, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Deka 2 (Japan, Model 2A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, pltkidsa, pltkids, model2a, model2, model2_state, pltkids, ROT0, "Psikyo", "Pilot Kids (Model 2A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, manxtt, 0, manxttdx ,manxtt, driver_device, 0, ROT0, "Sega", "Manx TT Superbike - DX (Revision D)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, manxttc, 0, model2a, manxtt, driver_device, 0, ROT0, "Sega", "Manx TT Superbike - Twin (Revision C)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, srallyc, 0, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - TWIN (Revision C)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, srallycb, srallyc, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - TWIN (Revision B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, srallyca, srallyc, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - DX (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, vf2, 0, model2a, model2, driver_device, 0, ROT0, "Sega", "Virtua Fighter 2 (Version 2.1)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, vf2b, vf2, model2a, model2, driver_device, 0, ROT0, "Sega", "Virtua Fighter 2 (Revision B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, vf2a, vf2, model2a, model2, driver_device, 0, ROT0, "Sega", "Virtua Fighter 2 (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, vf2o, vf2, model2a, model2, driver_device, 0, ROT0, "Sega", "Virtua Fighter 2", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, vcop2, 0, model2a, vcop2, driver_device, 0, ROT0, "Sega", "Virtua Cop 2", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, skytargt, 0, model2a, skytargt,driver_device, 0, ROT0, "Sega", "Sky Target", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, doaa, doa, model2a, model2, model2_state, doa, ROT0, "Sega", "Dead or Alive (Model 2A, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, zeroguna, zerogun, model2a_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, zerogunaj, zerogun, model2a_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, motoraid, 0, model2a, manxtt, driver_device, 0, ROT0, "Sega", "Motor Raid - Twin", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, dynamcop, 0, model2a_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Cop (Export, Model 2A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, dyndeka2, dynamcop, model2a_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Deka 2 (Japan, Model 2A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, pltkidsa, pltkids, model2a_5881, model2, model2_state, pltkids, ROT0, "Psikyo", "Pilot Kids (Model 2A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
// Model 2B-CRX (SHARC, SCSP sound board)
GAME( 1994, vstriker, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Virtua Striker (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1994, vstrikero,vstriker, model2b, model2, driver_device, 0, ROT0, "Sega", "Virtua Striker", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, fvipers, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Fighting Vipers (Revision D)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, gunblade, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Gunblade NY (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, indy500, 0, model2b, srallyc, driver_device, 0, ROT0, "Sega", "INDY 500 Twin (Revision A, Newer)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, indy500d, indy500, model2b, srallyc, driver_device, 0, ROT0, "Sega", "INDY 500 Deluxe (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, indy500to, indy500, model2b, srallyc, driver_device, 0, ROT0, "Sega", "INDY 500 Twin (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, schamp, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Sonic Championship (USA)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, sfight, schamp, model2b, model2, driver_device, 0, ROT0, "Sega", "Sonic the Fighters (Japan)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, lastbrnx, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Last Bronx (Export, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, lastbrnxu,lastbrnx, model2b, model2, driver_device, 0, ROT0, "Sega", "Last Bronx (USA, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, lastbrnxj,lastbrnx, model2b, model2, driver_device, 0, ROT0, "Sega", "Last Bronx (Japan, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, doa, 0, model2b, model2, model2_state, doa, ROT0, "Sega", "Dead or Alive (Model 2B, Revision B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, sgt24h, 0, model2b, srallyc, model2_state, sgt24h, ROT0, "Jaleco", "Super GT 24h", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, von, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (USA, Revision B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, vonj, von, model2b, model2, driver_device, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (Japan, Revision B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, dynabb, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Dynamite Baseball", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, dynabb97, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Dynamite Baseball 97 (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, overrevb, overrev, model2b, srallyc, model2_state, overrev, ROT0, "Jaleco", "Over Rev (Model 2B, Revision B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, zerogun, 0, model2b, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, zerogunj, zerogun, model2b, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, dynamcopb,dynamcop, model2b, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Cop (Export, Model 2B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, dyndeka2b,dynamcop, model2b, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Deka 2 (Japan, Model 2B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, pltkids, 0, model2b, model2, model2_state, pltkids, ROT0, "Psikyo", "Pilot Kids (Model 2B, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, rchase2, 0, model2b, rchase2, model2_state, rchase2, ROT0, "Sega", "Rail Chase 2 (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1994, vstriker, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Virtua Striker (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1994, vstrikero,vstriker, model2b, model2, driver_device, 0, ROT0, "Sega", "Virtua Striker", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, fvipers, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Fighting Vipers (Revision D)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, gunblade, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Gunblade NY (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, indy500, 0, model2b, srallyc, driver_device, 0, ROT0, "Sega", "INDY 500 Twin (Revision A, Newer)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, indy500d, indy500, model2b, srallyc, driver_device, 0, ROT0, "Sega", "INDY 500 Deluxe (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, indy500to, indy500, model2b, srallyc, driver_device, 0, ROT0, "Sega", "INDY 500 Twin (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, schamp, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Sonic Championship (USA)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, sfight, schamp, model2b, model2, driver_device, 0, ROT0, "Sega", "Sonic the Fighters (Japan)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, lastbrnx, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Last Bronx (Export, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, lastbrnxu,lastbrnx, model2b, model2, driver_device, 0, ROT0, "Sega", "Last Bronx (USA, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, lastbrnxj,lastbrnx, model2b, model2, driver_device, 0, ROT0, "Sega", "Last Bronx (Japan, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, doa, 0, model2b, model2, model2_state, doa, ROT0, "Sega", "Dead or Alive (Model 2B, Revision B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, sgt24h, 0, model2b, srallyc, model2_state, sgt24h, ROT0, "Jaleco", "Super GT 24h", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, von, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (USA, Revision B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, vonj, von, model2b, model2, driver_device, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (Japan, Revision B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, dynabb, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Dynamite Baseball", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, dynabb97, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Dynamite Baseball 97 (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, overrevb, overrev, model2b, srallyc, model2_state, overrev, ROT0, "Jaleco", "Over Rev (Model 2B, Revision B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, zerogun, 0, model2b_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, zerogunj, zerogun, model2b_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, dynamcopb,dynamcop, model2b_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Cop (Export, Model 2B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, dyndeka2b,dynamcop, model2b_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Deka 2 (Japan, Model 2B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, pltkids, 0, model2b_5881, model2, model2_state, pltkids, ROT0, "Psikyo", "Pilot Kids (Model 2B, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, rchase2, 0, model2b, rchase2, model2_state, rchase2, ROT0, "Sega", "Rail Chase 2 (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
// Model 2C-CRX (TGPx4, SCSP sound board)
GAME( 1996, skisuprg, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "Sega Ski Super G", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS|GAME_UNEMULATED_PROTECTION )
GAME( 1996, stcc, 0, stcc, model2, driver_device, 0, ROT0, "Sega", "Sega Touring Car Championship", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, stccb, stcc, stcc, model2, driver_device, 0, ROT0, "Sega", "Sega Touring Car Championship (Revision B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, stcca, stcc, stcc, model2, driver_device, 0, ROT0, "Sega", "Sega Touring Car Championship (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, waverunr, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "Wave Runner (Japan, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, hotd, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "House of the Dead", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, overrev, 0, model2c, srallyc, model2_state, overrev, ROT0, "Jaleco", "Over Rev (Model 2C, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, segawski, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "Sega Water Ski (Japan, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, topskatr, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "Top Skater (Export, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, topskatru,topskatr, model2c, model2, driver_device, 0, ROT0, "Sega", "Top Skater (USA, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, topskatrj,topskatr, model2c, model2, driver_device, 0, ROT0, "Sega", "Top Skater (Japan)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, bel, 0, model2c, bel, driver_device, 0, ROT0, "Sega / EPL Productions", "Behind Enemy Lines", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, dynamcopc,dynamcop, model2c, model2, driver_device, 0, ROT0, "Sega", "Dynamite Cop (USA, Model 2C)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, skisuprg, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "Sega Ski Super G", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS|GAME_UNEMULATED_PROTECTION )
GAME( 1996, stcc, 0, stcc, model2, driver_device, 0, ROT0, "Sega", "Sega Touring Car Championship", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, stccb, stcc, stcc, model2, driver_device, 0, ROT0, "Sega", "Sega Touring Car Championship (Revision B)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, stcca, stcc, stcc, model2, driver_device, 0, ROT0, "Sega", "Sega Touring Car Championship (Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1996, waverunr, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "Wave Runner (Japan, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, hotd, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "House of the Dead", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, overrev, 0, model2c, srallyc, model2_state, overrev, ROT0, "Jaleco", "Over Rev (Model 2C, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, segawski, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "Sega Water Ski (Japan, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, topskatr, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "Top Skater (Export, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, topskatru,topskatr, model2c, model2, driver_device, 0, ROT0, "Sega", "Top Skater (USA, Revision A)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1997, topskatrj,topskatr, model2c, model2, driver_device, 0, ROT0, "Sega", "Top Skater (Japan)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, bel, 0, model2c, bel, driver_device, 0, ROT0, "Sega / EPL Productions", "Behind Enemy Lines", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, dynamcopc,dynamcop, model2c_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Cop (USA, Model 2C)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )

View File

@ -4,6 +4,7 @@
#include "machine/eepromser.h"
#include "cpu/i960/i960.h"
#include "sound/scsp.h"
#include "machine/315-5881_crypt.h"
struct raster_state;
struct geo_state;
@ -34,7 +35,9 @@ public:
m_eeprom(*this, "eeprom"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_scsp(*this, "scsp") { }
m_scsp(*this, "scsp"),
m_cryptdevice(*this, "315_5881")
{ }
required_shared_ptr<UINT32> m_workram;
required_shared_ptr<UINT32> m_bufferram;
@ -59,6 +62,7 @@ public:
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
optional_device<scsp_device> m_scsp;
optional_device<sega_315_5881_crypt_device> m_cryptdevice;
UINT32 m_intreq;
UINT32 m_intena;
@ -156,6 +160,7 @@ public:
DECLARE_WRITE32_MEMBER(model2_serial_w);
DECLARE_READ32_MEMBER(model2_prot_r);
DECLARE_WRITE32_MEMBER(model2_prot_w);
DECLARE_WRITE32_MEMBER(doa_prot_w);
DECLARE_READ32_MEMBER(maxx_r);
DECLARE_READ32_MEMBER(network_r);
DECLARE_WRITE32_MEMBER(network_w);
@ -217,6 +222,8 @@ public:
DECLARE_WRITE32_MEMBER(copro_tgp_fifoout_push);
DECLARE_READ8_MEMBER(virtuacop_lightgun_r);
DECLARE_READ8_MEMBER(virtuacop_lightgun_offscreen_r);
UINT16 crypt_read_callback(UINT32 addr);
bool copro_fifoin_pop(device_t *device, UINT32 *result,UINT32 offset, UINT32 mem_mask);
void copro_fifoin_push(device_t *device, UINT32 data, UINT32 offset, UINT32 mem_mask);

View File

@ -123,7 +123,18 @@ static const struct game_keys keys_table[] =
{ "airtrix", 0x091b02c7 }, // 834-14149 2000 317-0294-COM Hikaru
{ "pharrier", 0x0912c68a }, // 834-14144 2001 317-0297-COM Hikaru
{ "dynamcop", 0x0c2a4a93 }, // ???? 317-0236-COM Model 2
{ "dynamcop", 0x0c2a4a93 }, // 1998 317-0236-COM Model 2
{ "dyndeka2", 0x0c2a4a93 }, // 1998 317-0236-COM Model 2
{ "dynamcopb", 0x0c2a4a93 }, // 1998 317-0236-COM Model 2
{ "dyndeka2b", 0x0c2a4a93 }, // 1998 317-0236-COM Model 2
{ "dynamcopc", 0x0c2a4a93 }, // 1998 317-0236-COM Model 2
{ "pltkids", -1 }, // 1998 317-5044-COM Model 2
{ "pltkidsa", -1 }, // 1998 317-5044-COM Model 2
{ "zerogun", -1 }, // 1997 317-5038-COM Model 2 // lowest numbered chip?
{ "zerogunj", -1 }, // 1997 317-5038-COM Model 2
{ "zeroguna", -1 }, // 1997 317-5038-COM Model 2
{ "zerogunaj", -1 }, // 1997 317-5038-COM Model 2
{ "vs298", 0x09234e96 }, // ???? 317-0237-COM Model 3
{ "swt", 0x11272a01 }, // ???? 317-0241-COM Model 3