diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mame/drivers/cps1.c | 199 | ||||
| -rw-r--r-- | src/mame/mamedriv.c | 1 | ||||
| -rw-r--r-- | src/mame/video/cps1.c | 1 |
3 files changed, 187 insertions, 14 deletions
diff --git a/src/mame/drivers/cps1.c b/src/mame/drivers/cps1.c index 0fc5a669f96..c22ec8c2795 100644 --- a/src/mame/drivers/cps1.c +++ b/src/mame/drivers/cps1.c @@ -10,6 +10,9 @@ 68000 clock speeds are unknown for all games (except where commented) + todo: move the bootleg sets with modified hardware into their own + drivers, like fcrash.c + Stephh's notes (based on the games M68000 code and some tests) : @@ -157,6 +160,8 @@ Stephh's log (2006.09.20) : #include "sound/2151intf.h" #include "sound/okim6295.h" #include "sound/qsound.h" +#include "sound/msm5205.h" + #include "cps1.h" /* External CPS1 definitions */ @@ -3725,6 +3730,84 @@ static MACHINE_DRIVER_START( wofhfh ) MDRV_NVRAM_HANDLER(qsound) MACHINE_DRIVER_END +/* incomplete */ +static ADDRESS_MAP_START( sf2mdt_z80map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0xcfff) AM_ROM + AM_RANGE(0xd000, 0xd7ff) AM_RAM +ADDRESS_MAP_END + +static void m5205_int1(running_machine *machine, int data) +{ +// MSM5205_data_w(0, sample_buffer1 & 0x0F); +// sample_buffer1 >>= 4; +// sample_select1 ^= 1; +// if (sample_select1 == 0) +// cpunum_set_input_line(machine, 1, INPUT_LINE_NMI, PULSE_LINE); +} + +static void m5205_int2(running_machine *machine, int data) +{ +// MSM5205_data_w(1, sample_buffer2 & 0x0F); +// sample_buffer2 >>= 4; +// sample_select2 ^= 1; +} + +static const struct MSM5205interface msm5205_interface1 = +{ + m5205_int1, /* interrupt function */ + MSM5205_S96_4B /* 4KHz 4-bit */ +}; + +static const struct MSM5205interface msm5205_interface2 = +{ + m5205_int2, /* interrupt function */ + MSM5205_S96_4B /* 4KHz 4-bit */ +}; + +static MACHINE_DRIVER_START( sf2mdt ) + + /* basic machine hardware */ + MDRV_CPU_ADD_TAG("main", M68000, 12000000) + MDRV_CPU_PROGRAM_MAP(main_map,0) + MDRV_CPU_VBLANK_INT("main", cps1_interrupt) + + MDRV_CPU_ADD_TAG("sound", Z80, 3579545) + /* audio CPU */ + MDRV_CPU_PROGRAM_MAP(sf2mdt_z80map,0) + + /* video hardware */ + MDRV_SCREEN_ADD("main", RASTER) + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(64*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) + + MDRV_GFXDECODE(cps1) + MDRV_PALETTE_LENGTH(0xc00) + + MDRV_VIDEO_START(cps1) + MDRV_VIDEO_EOF(cps1) + MDRV_VIDEO_UPDATE(cps1) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_MONO("mono") + + MDRV_SOUND_ADD_TAG("2151", YM2151, 3579545) + MDRV_SOUND_CONFIG(ym2151_interface) + MDRV_SOUND_ROUTE(0, "mono", 0.35) + MDRV_SOUND_ROUTE(1, "mono", 0.35) + + /* has 2x MSM5205 instead of OKI6295 */ + MDRV_SOUND_ADD(MSM5205, 24000000/64) /* ? */ + MDRV_SOUND_CONFIG(msm5205_interface1) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) + + MDRV_SOUND_ADD(MSM5205, 24000000/64) /* ? */ + MDRV_SOUND_CONFIG(msm5205_interface2) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_DRIVER_END + #endif @@ -6946,6 +7029,63 @@ ROM_START( sf2koryu ) ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) ROM_END +/* +CPU + +1x MC68000P12 (main) +1x TPC1020AFN-084C (main) +1x Z0840006PSC-Z80CPU (sound) +1x YM2151 (sound) +1x YM3012 (sound) +2x M5205 (sound) +2x LM324N (sound) +1x TDA2003 (sound) +1x oscillator 24.000000MHz +1x oscillator 30.000MHz +ROMs + +14x AM27C040 (1,3,6,7,8,9,10,11,12,13,14,15,16,17) +3x TMS27C010A (2,4,5) +3x PAL 16S20 (ic7,ic72, ic80) (read protected, not dumped) +3x GAL20V8A (ic120, ic121, ic169) (read protected, not dumped) + +Note + +1x JAMMA edge connector +1x trimmer (volume) +3x 8x2 switches dip + +*/ + +ROM_START( sf2mdt ) + ROM_REGION( CODE_SIZE, REGION_CPU1, 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(5301b41f) SHA1(6855a57b21e8c5d74e5cb18f9ce6af650d7fb422) ) + ROM_LOAD16_BYTE( "1.ic171", 0x000001, 0x80000, CRC(c1c803f6) SHA1(9fe18ae2553a63d8e4dcc20bafd5a4634f8b93c4) ) + ROM_LOAD16_BYTE( "4.ic176", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) ) + ROM_LOAD16_BYTE( "2.ic175", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) ) + + ROM_REGION( 0x600000, REGION_GFX1, 0 ) /* rearranged in init */ + ROMX_LOAD( "7.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "10.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "13.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "16.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "6.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "9.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "12.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "15.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "8.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "11.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "14.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "17.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x8000, REGION_GFX2, 0 ) + ROM_COPY( REGION_GFX1, 0x000000, 0x000000, 0x8000 ) /* stars */ + + ROM_REGION( 0x28000, REGION_CPU2, 0 ) /* Sound program + samples */ + ROM_LOAD( "5.ic26", 0x00000, 0x08000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) ) + ROM_CONTINUE( 0x10000, 0x18000 ) +ROM_END + /* B-Board 89624B */ ROM_START( varth ) ROM_REGION( CODE_SIZE, REGION_CPU1, 0 ) /* 68000 code */ @@ -8350,6 +8490,36 @@ static DRIVER_INIT( pang3j ) } #endif +static READ16_HANDLER( sf2mdt_r ) +{ + return 0xffff; +} + +static DRIVER_INIT( sf2mdt ) +{ + int i; + UINT32 gfx_size = memory_region_length( machine, REGION_GFX1 ); + UINT8 *rom = memory_region( machine, REGION_GFX1 ); + UINT8 tmp; + + for( i = 0; i < gfx_size; i += 8 ) + { + tmp = rom[i+1]; + rom[i+1] = rom[i+4]; + rom[i+4] = tmp; + tmp = rom[i+3]; + rom[i+3] = rom[i+6]; + rom[i+6] = tmp; + } + memory_install_read16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x70c01a, 0x70c01b, 0, 0, sf2mdt_r); + memory_install_read16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x70c01c, 0x70c01d, 0, 0, sf2mdt_r); + memory_install_read16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x70c01e, 0x70c01f, 0, 0, sf2mdt_r); + memory_install_read16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x70c010, 0x70c011, 0, 0, sf2mdt_r); + memory_install_read16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x70c018, 0x70c019, 0, 0, sf2mdt_r); + + driver_init_cps1(machine); +} + GAME( 1988, forgottn, 0, cps1_10MHz, forgottn, forgottn, ROT0, "Capcom", "Forgotten Worlds (US)", 0 ) GAME( 1988, forgott1, forgottn, cps1_10MHz, forgottn, forgottn, ROT0, "Capcom", "Forgotten Worlds (World?)", GAME_NOT_WORKING ) @@ -8425,20 +8595,21 @@ GAME( 1992, sf2ceua, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "Capcom" GAME( 1992, sf2ceub, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "Capcom", "Street Fighter II' - Champion Edition (US 920513)", 0 ) GAME( 1992, sf2ceuc, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "Capcom", "Street Fighter II' - Champion Edition (US 920803)", 0 ) GAME( 1992, sf2cej, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "Capcom", "Street Fighter II' - Champion Edition (Japan 920513)", 0 ) -GAME( 1992, sf2rb, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II' - Champion Edition (Rainbow set 1)" , 0) // 920322 - based on World version -GAME( 1992, sf2rb2, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II' - Champion Edition (Rainbow set 2)" , 0) // 920322 - based on World version -GAME( 1992, sf2red, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II' - Champion Edition (Red Wave)" , 0) // 920313 - based on World version -GAME( 1992, sf2v004, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II! - Champion Edition (V004)", 0 ) // "102092" !!! - based on (heavily modified) World version -GAME( 1992, sf2accp2, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II' - Champion Edition (Accelerator Pt.II)" , 0) // 920313 - based on USA version -GAME( 1992, sf2m1, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II' - Champion Edition (M1)", GAME_NOT_WORKING ) -GAME( 1992, sf2m2, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II' - Champion Edition (M2)", GAME_NOT_WORKING ) -GAME( 1992, sf2m3, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II' - Champion Edition (M3)", GAME_NOT_WORKING ) -GAME( 1992, sf2m4, sf2ce, cps1_12MHz, sf2j, sf2hack, ROT0, "bootleg","Street Fighter II' - Champion Edition (M4)", 0 ) -GAME( 1992, sf2m5, sf2ce, cps1_12MHz, sf2, sf2hack, ROT0, "bootleg","Street Fighter II' - Champion Edition (M5)", 0 ) -GAME( 1992, sf2m6, sf2ce, cps1_12MHz, sf2, sf2hack, ROT0, "bootleg","Street Fighter II' - Champion Edition (M6)", 0 ) -GAME( 1992, sf2m7, sf2ce, cps1_12MHz, sf2, sf2hack, ROT0, "bootleg","Street Fighter II' - Champion Edition (M7)", 0 ) -GAME( 1992, sf2yyc, sf2ce, cps1_12MHz, sf2, sf2hack, ROT0, "bootleg","Street Fighter II' - Champion Edition (YYC)", 0 ) -GAME( 1992, sf2koryu, sf2ce, cps1_12MHz, sf2, sf2hack, ROT0, "bootleg","Street Fighter II' - Champion Edition (Kouryu)", 0 ) +GAME( 1992, sf2rb, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II' - Champion Edition (Rainbow set 1, bootleg)" , 0) // 920322 - based on World version +GAME( 1992, sf2rb2, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II' - Champion Edition (Rainbow set 2, bootleg)" , 0) // 920322 - based on World version +GAME( 1992, sf2red, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II' - Champion Edition (Red Wave, bootleg)" , 0) // 920313 - based on World version +GAME( 1992, sf2v004, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II! - Champion Edition (V004, bootleg)", 0 ) // "102092" !!! - based on (heavily modified) World version +GAME( 1992, sf2accp2, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II' - Champion Edition (Accelerator Pt.II, bootleg)" , 0) // 920313 - based on USA version +GAME( 1992, sf2m1, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II' - Champion Edition (M1, bootleg)", GAME_NOT_WORKING ) +GAME( 1992, sf2m2, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II' - Champion Edition (M2, bootleg)", GAME_NOT_WORKING ) +GAME( 1992, sf2m3, sf2ce, cps1_12MHz, sf2, cps1, ROT0, "bootleg","Street Fighter II' - Champion Edition (M3, bootleg)", GAME_NOT_WORKING ) +GAME( 1992, sf2m4, sf2ce, cps1_12MHz, sf2j, sf2hack, ROT0, "bootleg","Street Fighter II' - Champion Edition (M4, bootleg)", 0 ) +GAME( 1992, sf2m5, sf2ce, cps1_12MHz, sf2, sf2hack, ROT0, "bootleg","Street Fighter II' - Champion Edition (M5, bootleg)", 0 ) +GAME( 1992, sf2m6, sf2ce, cps1_12MHz, sf2, sf2hack, ROT0, "bootleg","Street Fighter II' - Champion Edition (M6, bootleg)", 0 ) +GAME( 1992, sf2m7, sf2ce, cps1_12MHz, sf2, sf2hack, ROT0, "bootleg","Street Fighter II' - Champion Edition (M7, bootleg)", 0 ) +GAME( 1992, sf2yyc, sf2ce, cps1_12MHz, sf2, sf2hack, ROT0, "bootleg","Street Fighter II' - Champion Edition (YYC, bootleg)", 0 ) +GAME( 1992, sf2koryu, sf2ce, cps1_12MHz, sf2, sf2hack, ROT0, "bootleg","Street Fighter II' - Champion Edition (Xiang Long, Chinese bootleg)", 0 ) +GAME( 1992, sf2mdt, sf2ce, sf2mdt, sf2, sf2mdt, ROT0, "bootleg","Street Fighter II' - Champion Edition (Magic Delta Turbo, bootleg)", GAME_NOT_WORKING|GAME_NO_SOUND ); // heavily modified, different sound & gfx hardware GAME( 1992, varth, 0, cps1_12MHz, varth, cps1, ROT270, "Capcom", "Varth - Operation Thunderstorm (World 920714)" , 0) // "ETC" 12MHz not verified but game slows down at 10MHz GAME( 1992, varthr1, varth, cps1_12MHz, varth, cps1, ROT270, "Capcom", "Varth - Operation Thunderstorm (World 920612)" , 0) // "ETC" GAME( 1992, varthu, varth, cps1_12MHz, varth, cps1, ROT270, "Capcom (Romstar license)", "Varth - Operation Thunderstorm (US 920612)", 0 ) diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c index 93326b1c566..e4c8d76cb16 100644 --- a/src/mame/mamedriv.c +++ b/src/mame/mamedriv.c @@ -2466,6 +2466,7 @@ V-V TP-027 DRIVER( sf2m7 ) /* hack */ DRIVER( sf2yyc ) /* hack */ DRIVER( sf2koryu ) /* hack */ + DRIVER( sf2mdt ) /* bootleg */ DRIVER( varth ) /* 14/07/1992 (c) 1992 (World) */ DRIVER( varthr1 ) /* 12/06/1992 (c) 1992 (World) */ DRIVER( varthu ) /* 12/06/1992 (c) 1992 (US) */ diff --git a/src/mame/video/cps1.c b/src/mame/video/cps1.c index 290ccc6e85c..9065f2fccd9 100644 --- a/src/mame/video/cps1.c +++ b/src/mame/video/cps1.c @@ -1251,6 +1251,7 @@ static const struct CPS1config cps1_config_table[]= {"sf2m7", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 }, {"sf2yyc", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 }, {"sf2koryu", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 }, + {"sf2mdt", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 }, {"varth", CPS_B_04, mapper_VA63B }, /* CPSB test has been patched out (60=0008) register is also written to, possibly leftover from development */ {"varthr1", CPS_B_04, mapper_VA63B }, /* CPSB test has been patched out (60=0008) register is also written to, possibly leftover from development */ {"varthu", CPS_B_04, mapper_VA63B }, /* CPSB test has been patched out (60=0008) register is also written to, possibly leftover from development */ |
