trunk/src/mame/drivers/cps1.c
| r19352 | r19353 | |
| 3177 | 3177 | MCFG_EEPROM_ADD("eeprom", qsound_eeprom_interface) |
| 3178 | 3178 | MACHINE_CONFIG_END |
| 3179 | 3179 | |
| 3180 | | /* incomplete */ |
| 3181 | | static ADDRESS_MAP_START( sf2mdt_z80map, AS_PROGRAM, 8, cps_state ) |
| 3182 | | AM_RANGE(0x0000, 0xcfff) AM_ROM |
| 3183 | | AM_RANGE(0xd000, 0xd7ff) AM_RAM |
| 3184 | | ADDRESS_MAP_END |
| 3185 | | |
| 3186 | | static void m5205_int1(device_t *device) |
| 3187 | | { |
| 3188 | | // msm5205_data_w(device, sample_buffer1 & 0x0F); |
| 3189 | | // sample_buffer1 >>= 4; |
| 3190 | | // sample_select1 ^= 1; |
| 3191 | | // if (sample_select1 == 0) |
| 3192 | | // machine.device("audiocpu")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 3193 | | } |
| 3194 | | |
| 3195 | | static void m5205_int2(device_t *device) |
| 3196 | | { |
| 3197 | | // msm5205_data_w(device, sample_buffer2 & 0x0F); |
| 3198 | | // sample_buffer2 >>= 4; |
| 3199 | | // sample_select2 ^= 1; |
| 3200 | | } |
| 3201 | | |
| 3202 | | static const msm5205_interface msm5205_interface1 = |
| 3203 | | { |
| 3204 | | m5205_int1, /* interrupt function */ |
| 3205 | | MSM5205_S96_4B /* 4KHz 4-bit */ |
| 3206 | | }; |
| 3207 | | |
| 3208 | | static const msm5205_interface msm5205_interface2 = |
| 3209 | | { |
| 3210 | | m5205_int2, /* interrupt function */ |
| 3211 | | MSM5205_S96_4B /* 4KHz 4-bit */ |
| 3212 | | }; |
| 3213 | | |
| 3214 | | static MACHINE_CONFIG_START( sf2mdt, cps_state ) |
| 3215 | | |
| 3216 | | /* basic machine hardware */ |
| 3217 | | MCFG_CPU_ADD("maincpu", M68000, 12000000) |
| 3218 | | MCFG_CPU_PROGRAM_MAP(main_map) |
| 3219 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt) |
| 3220 | | |
| 3221 | | MCFG_CPU_ADD("audiocpu", Z80, 3579545) |
| 3222 | | MCFG_CPU_PROGRAM_MAP(sf2mdt_z80map) |
| 3223 | | |
| 3224 | | MCFG_MACHINE_START_OVERRIDE(cps_state,common) |
| 3225 | | |
| 3226 | | /* video hardware */ |
| 3227 | | MCFG_SCREEN_ADD("screen", RASTER) |
| 3228 | | MCFG_SCREEN_REFRESH_RATE(60) |
| 3229 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 3230 | | MCFG_SCREEN_SIZE(64*8, 32*8) |
| 3231 | | MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) |
| 3232 | | MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1) |
| 3233 | | MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) |
| 3234 | | |
| 3235 | | MCFG_GFXDECODE(cps1) |
| 3236 | | MCFG_PALETTE_LENGTH(0xc00) |
| 3237 | | |
| 3238 | | MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) |
| 3239 | | |
| 3240 | | /* sound hardware */ |
| 3241 | | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3242 | | |
| 3243 | | MCFG_YM2151_ADD("2151", 3579545) |
| 3244 | | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) |
| 3245 | | MCFG_SOUND_ROUTE(0, "mono", 0.35) |
| 3246 | | MCFG_SOUND_ROUTE(1, "mono", 0.35) |
| 3247 | | |
| 3248 | | /* has 2x MSM5205 instead of OKI6295 */ |
| 3249 | | MCFG_SOUND_ADD("msm1", MSM5205, 24000000/64) /* ? */ |
| 3250 | | MCFG_SOUND_CONFIG(msm5205_interface1) |
| 3251 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 3252 | | |
| 3253 | | MCFG_SOUND_ADD("msm2", MSM5205, 24000000/64) /* ? */ |
| 3254 | | MCFG_SOUND_CONFIG(msm5205_interface2) |
| 3255 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 3256 | | MACHINE_CONFIG_END |
| 3257 | | |
| 3258 | 3180 | /* |
| 3259 | 3181 | |
| 3260 | 3182 | CPU: |
| r19352 | r19353 | |
| 3303 | 3225 | MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt) |
| 3304 | 3226 | |
| 3305 | 3227 | MCFG_CPU_ADD("audiocpu", Z80, 29821000 / 8) |
| 3306 | | MCFG_CPU_PROGRAM_MAP(sf2mdt_z80map) |
| 3228 | // MCFG_CPU_PROGRAM_MAP(sf2mdt_z80map) |
| 3307 | 3229 | |
| 3308 | 3230 | MCFG_MACHINE_START_OVERRIDE(cps_state,common) |
| 3309 | 3231 | |
| r19352 | r19353 | |
| 3331 | 3253 | |
| 3332 | 3254 | /* has 2x MSM5205 instead of OKI6295 */ |
| 3333 | 3255 | MCFG_SOUND_ADD("msm1", MSM5205, 24000000/64) /* ? */ |
| 3334 | | MCFG_SOUND_CONFIG(msm5205_interface1) |
| 3256 | // MCFG_SOUND_CONFIG(msm5205_interface1) |
| 3335 | 3257 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 3336 | 3258 | |
| 3337 | 3259 | MCFG_SOUND_ADD("msm2", MSM5205, 24000000/64) /* ? */ |
| 3338 | | MCFG_SOUND_CONFIG(msm5205_interface2) |
| 3260 | // MCFG_SOUND_CONFIG(msm5205_interface2) |
| 3339 | 3261 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 3340 | 3262 | MACHINE_CONFIG_END |
| 3341 | 3263 | |
| r19352 | r19353 | |
| 8711 | 8633 | ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) |
| 8712 | 8634 | ROM_END |
| 8713 | 8635 | |
| 8714 | | /* |
| 8715 | | CPU |
| 8716 | | |
| 8717 | | 1x MC68000P12 (main) |
| 8718 | | 1x TPC1020AFN-084C (main) |
| 8719 | | 1x Z0840006PSC-Z80CPU (sound) |
| 8720 | | 1x YM2151 (sound) |
| 8721 | | 1x YM3012 (sound) |
| 8722 | | 2x M5205 (sound) |
| 8723 | | 2x LM324N (sound) |
| 8724 | | 1x TDA2003 (sound) |
| 8725 | | 1x oscillator 24.000000MHz |
| 8726 | | 1x oscillator 30.000MHz |
| 8727 | | ROMs |
| 8728 | | |
| 8729 | | 14x AM27C040 (1,3,6,7,8,9,10,11,12,13,14,15,16,17) |
| 8730 | | 3x TMS27C010A (2,4,5) |
| 8731 | | 3x PAL 16S20 (ic7,ic72, ic80) (read protected, not dumped) |
| 8732 | | 3x GAL20V8A (ic120, ic121, ic169) (read protected, not dumped) |
| 8733 | | |
| 8734 | | Note |
| 8735 | | |
| 8736 | | 1x JAMMA edge connector |
| 8737 | | 1x trimmer (volume) |
| 8738 | | 3x 8x2 switches dip |
| 8739 | | */ |
| 8740 | | |
| 8741 | | ROM_START( sf2mdt ) |
| 8742 | | ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ |
| 8743 | | ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(5301b41f) SHA1(6855a57b21e8c5d74e5cb18f9ce6af650d7fb422) ) |
| 8744 | | ROM_LOAD16_BYTE( "1.ic171", 0x000001, 0x80000, CRC(c1c803f6) SHA1(9fe18ae2553a63d8e4dcc20bafd5a4634f8b93c4) ) |
| 8745 | | ROM_LOAD16_BYTE( "4.ic176", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) ) |
| 8746 | | ROM_LOAD16_BYTE( "2.ic175", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) ) |
| 8747 | | |
| 8748 | | ROM_REGION( 0x600000, "gfx", 0 ) /* rearranged in init */ |
| 8749 | | ROMX_LOAD( "7.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8750 | | ROMX_LOAD( "10.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8751 | | ROMX_LOAD( "13.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8752 | | ROMX_LOAD( "16.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8753 | | ROMX_LOAD( "6.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8754 | | ROMX_LOAD( "9.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8755 | | ROMX_LOAD( "12.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8756 | | ROMX_LOAD( "15.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8757 | | ROMX_LOAD( "8.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8758 | | ROMX_LOAD( "11.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8759 | | ROMX_LOAD( "14.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8760 | | ROMX_LOAD( "17.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8761 | | |
| 8762 | | ROM_REGION( 0x28000, "audiocpu", 0 ) /* Sound program + samples */ |
| 8763 | | ROM_LOAD( "5.ic26", 0x00000, 0x08000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) ) |
| 8764 | | ROM_CONTINUE( 0x10000, 0x18000 ) |
| 8765 | | ROM_END |
| 8766 | | |
| 8767 | | ROM_START( sf2mdta ) |
| 8768 | | /* unconfirmed if working on real hardware, pf4 is a bad dump (bad pin) */ |
| 8769 | | ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ |
| 8770 | | ROM_LOAD16_BYTE( "3.mdta", 0x000000, 0x80000, CRC(9f544ef4) SHA1(f784809e59a5fcabd6d15d3f1c36250a5528c9f8) ) |
| 8771 | | ROM_LOAD16_BYTE( "5.mdta", 0x000001, 0x80000, CRC(d76d6621) SHA1(aa9cea9ddace212a7b3c535b8f6e3fbc50da1f94) ) |
| 8772 | | ROM_LOAD16_BYTE( "2.mdta", 0x100000, 0x20000, CRC(74844192) SHA1(99cd546c78cce7f632007af454d8a55eddb6b19b) ) |
| 8773 | | ROM_LOAD16_BYTE( "4.mdta", 0x100001, 0x20000, CRC(bd98ff15) SHA1(ed902d949b0b5c5beaaea78a4b418ffa6db9e1df) ) |
| 8774 | | |
| 8775 | | ROM_REGION( 0x600000, "gfx", 0 ) |
| 8776 | | ROMX_LOAD( "pf4 sh058.ic89", 0x000000, 0x80000, BAD_DUMP CRC(40fdf624) SHA1(cb928602744bf36e6851527f00d90da29de751e6), ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8777 | | ROM_CONTINUE( 0x000002, 0x80000) |
| 8778 | | ROMX_LOAD( "pf7 sh072.ic92", 0x000004, 0x80000, CRC(fb78022e) SHA1(b8974387056dd52db96b01cc4648edc814398c7e), ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8779 | | ROM_CONTINUE( 0x000006, 0x80000) |
| 8780 | | ROMX_LOAD( "pf5 sh036.ic90", 0x200000, 0x80000, CRC(0a6be48b) SHA1(b7e72c94d4e3eb4a6bba6608d9b9a093c8901ad9), ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8781 | | ROM_CONTINUE( 0x200002, 0x80000) |
| 8782 | | ROMX_LOAD( "pf8 sh074.ic93", 0x200004, 0x80000, CRC(6258c7cf) SHA1(4cd7519245c0aa816934a43e6743160f715d7dc2), ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8783 | | ROM_CONTINUE( 0x200006, 0x80000) |
| 8784 | | ROMX_LOAD( "pf6 sh070.ic88", 0x400000, 0x80000, CRC(9b5b09d7) SHA1(698a6aab41e495bd0c37a19aee16a84f04d15797), ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8785 | | ROM_CONTINUE( 0x400002, 0x80000) |
| 8786 | | ROMX_LOAD( "pf9 sh001.ic91", 0x400004, 0x80000, CRC(9f25090e) SHA1(12ff0431ef6550db446985c8914ac7d78eec6b6d), ROM_GROUPWORD | ROM_SKIP(6) ) |
| 8787 | | ROM_CONTINUE( 0x400006, 0x80000) |
| 8788 | | |
| 8789 | | ROM_REGION( 0x28000, "audiocpu", 0 ) /* Sound program + samples */ |
| 8790 | | ROM_LOAD( "1.ic28", 0x00000, 0x08000, CRC(d5bee9cc) SHA1(e638cb5ce7a22c18b60296a7defe8b03418da56c) ) |
| 8791 | | ROM_CONTINUE( 0x10000, 0x18000 ) |
| 8792 | | ROM_END |
| 8793 | | |
| 8794 | 8636 | /* B-Board 89625B-1 */ |
| 8795 | 8637 | ROM_START( cworld2j ) |
| 8796 | 8638 | ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ |
| r19352 | r19353 | |
| 11092 | 10934 | DRIVER_INIT_CALL(pang3b); |
| 11093 | 10935 | } |
| 11094 | 10936 | |
| 11095 | | READ16_MEMBER(cps_state::sf2mdt_r) |
| 11096 | | { |
| 11097 | | return 0xffff; |
| 11098 | | } |
| 11099 | | |
| 11100 | | DRIVER_INIT_MEMBER(cps_state,sf2mdt) |
| 11101 | | { |
| 11102 | | int i; |
| 11103 | | UINT32 gfx_size = machine().root_device().memregion( "gfx" )->bytes(); |
| 11104 | | UINT8 *rom = machine().root_device().memregion( "gfx" )->base(); |
| 11105 | | UINT8 tmp; |
| 11106 | | |
| 11107 | | for( i = 0; i < gfx_size; i += 8 ) |
| 11108 | | { |
| 11109 | | tmp = rom[i + 1]; |
| 11110 | | rom[i + 1] = rom[i + 4]; |
| 11111 | | rom[i + 4] = tmp; |
| 11112 | | tmp = rom[i + 3]; |
| 11113 | | rom[i + 3] = rom[i + 6]; |
| 11114 | | rom[i + 6] = tmp; |
| 11115 | | } |
| 11116 | | machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x70c01a, 0x70c01b, read16_delegate(FUNC(cps_state::sf2mdt_r),this)); |
| 11117 | | machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x70c01c, 0x70c01d, read16_delegate(FUNC(cps_state::sf2mdt_r),this)); |
| 11118 | | machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x70c01e, 0x70c01f, read16_delegate(FUNC(cps_state::sf2mdt_r),this)); |
| 11119 | | machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x70c010, 0x70c011, read16_delegate(FUNC(cps_state::sf2mdt_r),this)); |
| 11120 | | machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x70c018, 0x70c019, read16_delegate(FUNC(cps_state::sf2mdt_r),this)); |
| 11121 | | |
| 11122 | | DRIVER_INIT_CALL(cps1); |
| 11123 | | } |
| 11124 | | |
| 11125 | 10937 | DRIVER_INIT_MEMBER(cps_state,dinohunt) |
| 11126 | 10938 | { |
| 11127 | 10939 | // is this shared with the new sound hw? |
| r19352 | r19353 | |
| 11253 | 11065 | GAME( 1992, sf2m8, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M8, bootleg)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE ) |
| 11254 | 11066 | GAME( 1992, sf2yyc, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (YYC, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version |
| 11255 | 11067 | GAME( 1992, sf2koryu, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (Xiang Long, Chinese bootleg)", GAME_SUPPORTS_SAVE ) // 811102 !!! - based on World version |
| 11256 | | GAME( 1992, sf2mdt, sf2ce, sf2mdt, sf2hack, cps_state, sf2mdt, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // 920313 - based on (heavily modified) World version |
| 11257 | | GAME( 1992, sf2mdta, sf2ce, sf2mdt, sf2hack, cps_state, sf2mdt, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // 920313 - based on World version |
| 11258 | 11068 | GAME( 1992, cworld2j, 0, cps1_12MHz, cworld2j, cps_state, cps1, ROT0, "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611)", GAME_SUPPORTS_SAVE ) |
| 11259 | 11069 | GAME( 1992, varth, 0, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom", "Varth: Operation Thunderstorm (World 920714)", GAME_SUPPORTS_SAVE ) // "ETC" // 12MHz verified |
| 11260 | 11070 | GAME( 1992, varthr1, varth, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom", "Varth: Operation Thunderstorm (World 920612)", GAME_SUPPORTS_SAVE ) // "ETC" |
trunk/src/mame/drivers/fcrash.c
| r19352 | r19353 | |
| 59 | 59 | WRITE16_MEMBER(cps_state::cawingbl_soundlatch_w) |
| 60 | 60 | { |
| 61 | 61 | cps_state *state = space.machine().driver_data<cps_state>(); |
| 62 | | |
| 62 | |
| 63 | 63 | if (ACCESSING_BITS_8_15) |
| 64 | 64 | { |
| 65 | 65 | state->soundlatch_byte_w(space, 0, data >> 8); |
| r19352 | r19353 | |
| 77 | 77 | state->membank("bank1")->set_entry(data & 0x07); |
| 78 | 78 | } |
| 79 | 79 | |
| 80 | static WRITE8_HANDLER( sf2mdt_snd_bankswitch_w ) |
| 81 | { |
| 82 | cps_state *state = space.machine().driver_data<cps_state>(); |
| 83 | |
| 84 | state->m_msm_1->set_output_gain(0, (data & 0x20) ? 0.0 : 1.0); |
| 85 | state->m_msm_2->set_output_gain(0, (data & 0x10) ? 0.0 : 1.0); |
| 86 | |
| 87 | state->membank("bank1")->set_entry(data & 0x07); |
| 88 | } |
| 89 | |
| 80 | 90 | static void m5205_int1( device_t *device ) |
| 81 | 91 | { |
| 82 | 92 | cps_state *state = device->machine().driver_data<cps_state>(); |
| r19352 | r19353 | |
| 126 | 136 | state->m_cps_b_regs[state->m_layer_mask_reg[2] / 2] = data; |
| 127 | 137 | } |
| 128 | 138 | |
| 139 | WRITE16_MEMBER(cps_state::sf2mdt_layer_w) |
| 140 | { |
| 141 | cps_state *state = space.machine().driver_data<cps_state>(); |
| 142 | |
| 143 | /* layer enable and scroll registers are written here - passing them to m_cps_b_regs and m_cps_a_regs for now for drawing routines */ |
| 144 | if (offset == 0x0086) |
| 145 | state->m_cps_a_regs[0x14 / 2] = data + 0xffce; /* scroll 3x */ |
| 146 | else |
| 147 | if (offset == 0x0087) |
| 148 | state->m_cps_a_regs[0x16 / 2] = data; /* scroll 3y */ |
| 149 | else |
| 150 | if (offset == 0x0088) |
| 151 | state->m_cps_a_regs[0x10 / 2] = data + 0xffcd; /* scroll 2x */ |
| 152 | else |
| 153 | if (offset == 0x0089) |
| 154 | state->m_cps_a_regs[0x0c / 2] = data + 0xffca; /* scroll 1x */ |
| 155 | else |
| 156 | if (offset == 0x008a) { |
| 157 | state->m_cps_a_regs[0x12 / 2] = data; /* scroll 2y */ |
| 158 | state->m_cps_a_regs[0x20 / 2] = data; /* row scroll start */ |
| 159 | state->m_cps_a_regs[0x08 / 2] = m_bootleg_work_ram[0x802e / 2]; /* pretty gross hack?, but the row scroll table address isn't written anywhere else */ |
| 160 | } else |
| 161 | if (offset == 0x008b) |
| 162 | state->m_cps_a_regs[0x0e / 2] = data; /* scroll 1y */ |
| 163 | else |
| 164 | if (offset == 0x00a6) |
| 165 | state->m_cps_b_regs[m_layer_enable_reg / 2] = data; |
| 166 | } |
| 129 | 167 | |
| 168 | |
| 130 | 169 | /* not verified */ |
| 131 | 170 | #define CPS1_ROWSCROLL_OFFS (0x20/2) /* base of row scroll offsets in other RAM */ |
| 132 | 171 | |
| r19352 | r19353 | |
| 157 | 196 | int pos; |
| 158 | 197 | int base = state->m_sprite_base / 2; |
| 159 | 198 | int num_sprites = machine.gfx[2]->elements(); |
| 199 | int last_sprite_offset = 0x1ffc; |
| 200 | UINT16 *sprite_ram = state->m_gfxram; |
| 160 | 201 | |
| 161 | 202 | // sprite base registers need hooking up properly.. on fcrash it is NOT cps1_cps_a_regs[0] |
| 162 | 203 | // on kodb, it might still be, unless that's just a leftover and it writes somewhere else too |
| 163 | 204 | // if (state->m_cps_a_regs[0] & 0x00ff) base = 0x10c8/2; |
| 164 | 205 | // printf("cps1_cps_a_regs %04x\n", state->m_cps_a_regs[0]); |
| 165 | | |
| 206 | |
| 207 | /* if we have separate sprite ram, use it */ |
| 208 | if (state->m_bootleg_sprite_ram) sprite_ram = state->m_bootleg_sprite_ram; |
| 209 | |
| 166 | 210 | /* get end of sprite list marker */ |
| 167 | | int last_sprite_offset = 0x1ffc; |
| 168 | | |
| 169 | 211 | for (pos = 0x1ffc; pos >= 0x0000; pos -= 4) |
| 170 | 212 | { |
| 171 | | if (state->m_gfxram[base + pos - 1] == state->m_sprite_list_end_marker) last_sprite_offset = pos; |
| 213 | if (sprite_ram[base + pos - 1] == state->m_sprite_list_end_marker) last_sprite_offset = pos; |
| 172 | 214 | } |
| 173 | | |
| 215 | |
| 174 | 216 | for (pos = last_sprite_offset; pos >= 0x0000; pos -= 4) |
| 175 | 217 | { |
| 176 | 218 | int tileno; |
| r19352 | r19353 | |
| 179 | 221 | int flipx, flipy; |
| 180 | 222 | int colour; |
| 181 | 223 | |
| 182 | | tileno = state->m_gfxram[base + pos]; |
| 224 | tileno = sprite_ram[base + pos]; |
| 183 | 225 | if (tileno >= num_sprites) continue; /* don't render anything outside our tiles */ |
| 184 | | xpos = state->m_gfxram[base + pos + 2] & 0x1ff; |
| 185 | | ypos = state->m_gfxram[base + pos - 1] & 0x1ff; |
| 186 | | flipx = state->m_gfxram[base + pos + 1] & 0x20; |
| 187 | | flipy = state->m_gfxram[base + pos + 1] & 0x40; |
| 188 | | colour = state->m_gfxram[base + pos + 1] & 0x1f; |
| 226 | xpos = sprite_ram[base + pos + 2] & 0x1ff; |
| 227 | ypos = sprite_ram[base + pos - 1] & 0x1ff; |
| 228 | flipx = sprite_ram[base + pos + 1] & 0x20; |
| 229 | flipy = sprite_ram[base + pos + 1] & 0x40; |
| 230 | colour = sprite_ram[base + pos + 1] & 0x1f; |
| 189 | 231 | ypos = 256 - ypos; |
| 232 | xpos += state->m_sprite_x_offset; |
| 190 | 233 | |
| 191 | 234 | pdrawgfx_transpen(bitmap, cliprect, machine.gfx[2], tileno, colour, flipx, flipy, xpos + 49, ypos - 16, machine.priority_bitmap, 0x02, 15); |
| 192 | 235 | |
| r19352 | r19353 | |
| 365 | 408 | AM_RANGE(0xd000, 0xd7ff) AM_RAM |
| 366 | 409 | AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("2151", ym2151_device, read, write) |
| 367 | 410 | AM_RANGE(0xe400, 0xe400) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 368 | | AM_RANGE(0xe800, 0xe800) AM_READ(soundlatch_byte_r) /* Sound command */ |
| 411 | AM_RANGE(0xe800, 0xe800) AM_READ(soundlatch_byte_r) |
| 369 | 412 | ADDRESS_MAP_END |
| 370 | 413 | |
| 414 | static ADDRESS_MAP_START( sf2mdt_z80map, AS_PROGRAM, 8, cps_state ) |
| 415 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 416 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") |
| 417 | AM_RANGE(0xd000, 0xd7ff) AM_RAM |
| 418 | AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("2151", ym2151_device, read, write) |
| 419 | AM_RANGE(0xdc00, 0xdc00) AM_READ(soundlatch_byte_r) |
| 420 | AM_RANGE(0xe000, 0xe000) AM_WRITE_LEGACY(sf2mdt_snd_bankswitch_w) |
| 421 | AM_RANGE(0xe400, 0xe400) AM_WRITE_LEGACY(fcrash_msm5205_0_data_w) |
| 422 | AM_RANGE(0xe800, 0xe800) AM_WRITE_LEGACY(fcrash_msm5205_1_data_w) |
| 423 | ADDRESS_MAP_END |
| 371 | 424 | |
| 425 | |
| 372 | 426 | #define CPS1_COINAGE_1 \ |
| 373 | 427 | PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) \ |
| 374 | 428 | PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \ |
| r19352 | r19353 | |
| 700 | 754 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 ) |
| 701 | 755 | INPUT_PORTS_END |
| 702 | 756 | |
| 757 | static INPUT_PORTS_START( sf2mdt ) |
| 758 | PORT_START("IN0") |
| 759 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 760 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 761 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) |
| 762 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 763 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) |
| 764 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) |
| 765 | PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW ) |
| 766 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 703 | 767 | |
| 768 | PORT_START("IN1") |
| 769 | PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) |
| 770 | PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) |
| 771 | PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) |
| 772 | PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) |
| 773 | PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Jab Punch") PORT_PLAYER(1) |
| 774 | PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Strong Punch") PORT_PLAYER(1) |
| 775 | PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Fierce Punch") PORT_PLAYER(1) |
| 776 | PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 777 | PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) |
| 778 | PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) |
| 779 | PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) |
| 780 | PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) |
| 781 | PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Jab Punch") PORT_PLAYER(2) |
| 782 | PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Strong Punch") PORT_PLAYER(2) |
| 783 | PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P2 Fierce Punch") PORT_PLAYER(2) |
| 784 | PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 785 | |
| 786 | PORT_START("IN2") /* Extra buttons */ |
| 787 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P1 Short Kick") PORT_PLAYER(1) |
| 788 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P1 Forward Kick") PORT_PLAYER(1) |
| 789 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P1 Roundhouse Kick") PORT_PLAYER(1) |
| 790 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 791 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P2 Short Kick") PORT_PLAYER(2) |
| 792 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P2 Forward Kick") PORT_PLAYER(2) |
| 793 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P2 Roundhouse Kick") PORT_PLAYER(2) |
| 794 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 795 | |
| 796 | PORT_START("DSWA") |
| 797 | CPS1_COINAGE_1 |
| 798 | PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7") |
| 799 | PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) |
| 800 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 801 | PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" ) |
| 802 | |
| 803 | PORT_START("DSWB") |
| 804 | CPS1_DIFFICULTY_1( "SW(B)" ) |
| 805 | PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(B):4" ) |
| 806 | PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW(B):5" ) |
| 807 | PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" ) |
| 808 | PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" ) |
| 809 | PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" ) |
| 810 | |
| 811 | PORT_START("DSWC") |
| 812 | PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" ) |
| 813 | PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" ) |
| 814 | PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3") |
| 815 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 816 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 817 | PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4") |
| 818 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 819 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 820 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5") |
| 821 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 822 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 823 | PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6") |
| 824 | PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) |
| 825 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 826 | PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7") |
| 827 | PORT_DIPSETTING( 0x40, DEF_STR( No ) ) |
| 828 | PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) |
| 829 | PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8") |
| 830 | PORT_DIPSETTING( 0x80, "Game" ) |
| 831 | PORT_DIPSETTING( 0x00, DEF_STR( Test ) ) |
| 832 | INPUT_PORTS_END |
| 833 | |
| 834 | |
| 704 | 835 | static const msm5205_interface msm5205_interface1 = |
| 705 | 836 | { |
| 706 | 837 | m5205_int1, /* interrupt function */ |
| r19352 | r19353 | |
| 735 | 866 | m_layer_scroll3x_offset = 64; |
| 736 | 867 | m_sprite_base = 0x50c8; |
| 737 | 868 | m_sprite_list_end_marker = 0x8000; |
| 869 | m_sprite_x_offset = 0; |
| 738 | 870 | |
| 739 | 871 | save_item(NAME(m_sample_buffer1)); |
| 740 | 872 | save_item(NAME(m_sample_buffer2)); |
| r19352 | r19353 | |
| 757 | 889 | m_layer_scroll3x_offset = 0; |
| 758 | 890 | m_sprite_base = 0x50c8; |
| 759 | 891 | m_sprite_list_end_marker = 0xffff; |
| 892 | m_sprite_x_offset = 0; |
| 760 | 893 | } |
| 761 | 894 | |
| 762 | 895 | MACHINE_START_MEMBER(cps_state, cawingbl) |
| r19352 | r19353 | |
| 774 | 907 | m_sprite_base = 0x1000; |
| 775 | 908 | } |
| 776 | 909 | |
| 910 | MACHINE_START_MEMBER(cps_state, sf2mdt) |
| 911 | { |
| 912 | UINT8 *ROM = memregion("soundcpu")->base(); |
| 913 | |
| 914 | membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x4000); |
| 915 | |
| 916 | m_maincpu = machine().device<cpu_device>("maincpu"); |
| 917 | m_audiocpu = machine().device<cpu_device>("soundcpu"); |
| 918 | m_msm_1 = machine().device<msm5205_device>("msm1"); |
| 919 | m_msm_2 = machine().device<msm5205_device>("msm2"); |
| 920 | |
| 921 | m_layer_enable_reg = 0x26; |
| 922 | m_layer_mask_reg[0] = 0x28; |
| 923 | m_layer_mask_reg[1] = 0x2a; |
| 924 | m_layer_mask_reg[2] = 0x2c; |
| 925 | m_layer_mask_reg[3] = 0x2e; |
| 926 | m_layer_scroll1x_offset = 0; |
| 927 | m_layer_scroll2x_offset = 0; |
| 928 | m_layer_scroll3x_offset = 0; |
| 929 | m_sprite_base = 0x1000; |
| 930 | m_sprite_list_end_marker = 0x8000; |
| 931 | m_sprite_x_offset = 3; |
| 932 | |
| 933 | save_item(NAME(m_sample_buffer1)); |
| 934 | save_item(NAME(m_sample_buffer2)); |
| 935 | save_item(NAME(m_sample_select1)); |
| 936 | save_item(NAME(m_sample_select2)); |
| 937 | } |
| 938 | |
| 777 | 939 | MACHINE_RESET_MEMBER(cps_state,fcrash) |
| 778 | 940 | { |
| 779 | 941 | m_sample_buffer1 = 0; |
| r19352 | r19353 | |
| 880 | 1042 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 881 | 1043 | MACHINE_CONFIG_END |
| 882 | 1044 | |
| 1045 | static MACHINE_CONFIG_START( sf2mdt, cps_state ) |
| 883 | 1046 | |
| 1047 | /* basic machine hardware */ |
| 1048 | MCFG_CPU_ADD("maincpu", M68000, 12000000) |
| 1049 | MCFG_CPU_PROGRAM_MAP(fcrash_map) |
| 1050 | MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, irq4_line_hold) /* triggers the sprite ram and scroll writes */ |
| 884 | 1051 | |
| 1052 | MCFG_CPU_ADD("soundcpu", Z80, 3579545) |
| 1053 | MCFG_CPU_PROGRAM_MAP(sf2mdt_z80map) |
| 1054 | |
| 1055 | MCFG_MACHINE_START_OVERRIDE(cps_state, sf2mdt) |
| 1056 | MCFG_MACHINE_RESET_OVERRIDE(cps_state,fcrash) |
| 1057 | |
| 1058 | /* video hardware */ |
| 1059 | MCFG_SCREEN_ADD("screen", RASTER) |
| 1060 | MCFG_SCREEN_REFRESH_RATE(60) |
| 1061 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 1062 | MCFG_SCREEN_SIZE(64*8, 32*8) |
| 1063 | MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) |
| 1064 | MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash) |
| 1065 | MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) |
| 1066 | |
| 1067 | MCFG_GFXDECODE(cps1) |
| 1068 | MCFG_PALETTE_LENGTH(4096) |
| 1069 | |
| 1070 | MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) |
| 1071 | |
| 1072 | /* sound hardware */ |
| 1073 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1074 | |
| 1075 | MCFG_YM2151_ADD("2151", 3579545) |
| 1076 | MCFG_SOUND_ROUTE(0, "mono", 0.35) |
| 1077 | MCFG_SOUND_ROUTE(1, "mono", 0.35) |
| 1078 | |
| 1079 | /* has 2x MSM5205 instead of OKI6295 */ |
| 1080 | MCFG_SOUND_ADD("msm1", MSM5205, 24000000/64) /* ? */ |
| 1081 | MCFG_SOUND_CONFIG(msm5205_interface1) |
| 1082 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1083 | |
| 1084 | MCFG_SOUND_ADD("msm2", MSM5205, 24000000/64) /* ? */ |
| 1085 | MCFG_SOUND_CONFIG(msm5205_interface2) |
| 1086 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1087 | MACHINE_CONFIG_END |
| 1088 | |
| 1089 | |
| 885 | 1090 | ROM_START( fcrash ) |
| 886 | 1091 | ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */ |
| 887 | 1092 | ROM_LOAD16_BYTE( "9.bin", 0x00000, 0x20000, CRC(c6854c91) SHA1(29f01cc65be5eaa3f86e99eebdd284104623abb0) ) |
| r19352 | r19353 | |
| 1029 | 1234 | ROM_RELOAD( 0x10000, 0x20000 ) |
| 1030 | 1235 | ROM_END |
| 1031 | 1236 | |
| 1237 | /* |
| 1238 | CPU |
| 1239 | |
| 1240 | 1x MC68000P12 (main) |
| 1241 | 1x TPC1020AFN-084C (main) |
| 1242 | 1x Z0840006PSC-Z80CPU (sound) |
| 1243 | 1x YM2151 (sound) |
| 1244 | 1x YM3012 (sound) |
| 1245 | 2x M5205 (sound) |
| 1246 | 2x LM324N (sound) |
| 1247 | 1x TDA2003 (sound) |
| 1248 | 1x oscillator 24.000000MHz |
| 1249 | 1x oscillator 30.000MHz |
| 1250 | ROMs |
| 1251 | |
| 1252 | 14x AM27C040 (1,3,6,7,8,9,10,11,12,13,14,15,16,17) |
| 1253 | 3x TMS27C010A (2,4,5) |
| 1254 | 3x PAL 16S20 (ic7,ic72, ic80) (read protected, not dumped) |
| 1255 | 3x GAL20V8A (ic120, ic121, ic169) (read protected, not dumped) |
| 1256 | |
| 1257 | Note |
| 1258 | |
| 1259 | 1x JAMMA edge connector |
| 1260 | 1x trimmer (volume) |
| 1261 | 3x 8x2 switches dip |
| 1262 | */ |
| 1263 | |
| 1264 | ROM_START( sf2mdt ) |
| 1265 | ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */ |
| 1266 | ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(5301b41f) SHA1(6855a57b21e8c5d74e5cb18f9ce6af650d7fb422) ) |
| 1267 | ROM_LOAD16_BYTE( "1.ic171", 0x000001, 0x80000, CRC(c1c803f6) SHA1(9fe18ae2553a63d8e4dcc20bafd5a4634f8b93c4) ) |
| 1268 | ROM_LOAD16_BYTE( "4.ic176", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) ) |
| 1269 | ROM_LOAD16_BYTE( "2.ic175", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) ) |
| 1270 | |
| 1271 | ROM_REGION( 0x600000, "gfx", 0 ) /* rearranged in init */ |
| 1272 | ROMX_LOAD( "7.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1273 | ROMX_LOAD( "10.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1274 | ROMX_LOAD( "13.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1275 | ROMX_LOAD( "16.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1276 | ROMX_LOAD( "6.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1277 | ROMX_LOAD( "9.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1278 | ROMX_LOAD( "12.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1279 | ROMX_LOAD( "15.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1280 | ROMX_LOAD( "8.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1281 | ROMX_LOAD( "11.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1282 | ROMX_LOAD( "14.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1283 | ROMX_LOAD( "17.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1284 | |
| 1285 | ROM_REGION( 0x30000, "soundcpu", 0 ) /* Sound program + samples */ |
| 1286 | ROM_LOAD( "5.ic26", 0x00000, 0x20000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) ) |
| 1287 | ROM_RELOAD( 0x10000, 0x20000 ) |
| 1288 | ROM_END |
| 1289 | |
| 1290 | ROM_START( sf2mdta ) |
| 1291 | /* unconfirmed if working on real hardware, pf4 is a bad dump (bad pin) */ |
| 1292 | ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */ |
| 1293 | ROM_LOAD16_BYTE( "3.mdta", 0x000000, 0x80000, CRC(9f544ef4) SHA1(f784809e59a5fcabd6d15d3f1c36250a5528c9f8) ) |
| 1294 | ROM_LOAD16_BYTE( "5.mdta", 0x000001, 0x80000, CRC(d76d6621) SHA1(aa9cea9ddace212a7b3c535b8f6e3fbc50da1f94) ) |
| 1295 | ROM_LOAD16_BYTE( "2.mdta", 0x100000, 0x20000, CRC(74844192) SHA1(99cd546c78cce7f632007af454d8a55eddb6b19b) ) |
| 1296 | ROM_LOAD16_BYTE( "4.mdta", 0x100001, 0x20000, CRC(bd98ff15) SHA1(ed902d949b0b5c5beaaea78a4b418ffa6db9e1df) ) |
| 1297 | |
| 1298 | ROM_REGION( 0x600000, "gfx", 0 ) |
| 1299 | ROMX_LOAD( "pf4 sh058.ic89", 0x000000, 0x80000, BAD_DUMP CRC(40fdf624) SHA1(cb928602744bf36e6851527f00d90da29de751e6), ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1300 | ROM_CONTINUE( 0x000002, 0x80000) |
| 1301 | ROMX_LOAD( "pf7 sh072.ic92", 0x000004, 0x80000, CRC(fb78022e) SHA1(b8974387056dd52db96b01cc4648edc814398c7e), ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1302 | ROM_CONTINUE( 0x000006, 0x80000) |
| 1303 | ROMX_LOAD( "pf5 sh036.ic90", 0x200000, 0x80000, CRC(0a6be48b) SHA1(b7e72c94d4e3eb4a6bba6608d9b9a093c8901ad9), ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1304 | ROM_CONTINUE( 0x200002, 0x80000) |
| 1305 | ROMX_LOAD( "pf8 sh074.ic93", 0x200004, 0x80000, CRC(6258c7cf) SHA1(4cd7519245c0aa816934a43e6743160f715d7dc2), ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1306 | ROM_CONTINUE( 0x200006, 0x80000) |
| 1307 | ROMX_LOAD( "pf6 sh070.ic88", 0x400000, 0x80000, CRC(9b5b09d7) SHA1(698a6aab41e495bd0c37a19aee16a84f04d15797), ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1308 | ROM_CONTINUE( 0x400002, 0x80000) |
| 1309 | ROMX_LOAD( "pf9 sh001.ic91", 0x400004, 0x80000, CRC(9f25090e) SHA1(12ff0431ef6550db446985c8914ac7d78eec6b6d), ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1310 | ROM_CONTINUE( 0x400006, 0x80000) |
| 1311 | |
| 1312 | ROM_REGION( 0x30000, "soundcpu", 0 ) /* Sound program + samples */ |
| 1313 | ROM_LOAD( "1.ic28", 0x00000, 0x20000, CRC(d5bee9cc) SHA1(e638cb5ce7a22c18b60296a7defe8b03418da56c) ) |
| 1314 | ROM_RELOAD( 0x10000, 0x20000 ) |
| 1315 | ROM_END |
| 1316 | |
| 1032 | 1317 | // 24mhz crystal (maincpu), 28.322 crystal (video), 3.579545 crystal (sound) |
| 1033 | 1318 | // sound cpu is (239 V 249521 VC5006 KABUKI DL-030P-110V) - recycled Kabuki Z80 from genuine Capcom HW? |
| 1034 | 1319 | // 3x8 dsws |
| r19352 | r19353 | |
| 1097 | 1382 | DRIVER_INIT_CALL(cps1); |
| 1098 | 1383 | } |
| 1099 | 1384 | |
| 1385 | DRIVER_INIT_MEMBER(cps_state, sf2mdt) |
| 1386 | { |
| 1387 | int i; |
| 1388 | UINT32 gfx_size = machine().root_device().memregion( "gfx" )->bytes(); |
| 1389 | UINT8 *rom = machine().root_device().memregion( "gfx" )->base(); |
| 1390 | UINT8 tmp; |
| 1100 | 1391 | |
| 1392 | for( i = 0; i < gfx_size; i += 8 ) |
| 1393 | { |
| 1394 | tmp = rom[i + 1]; |
| 1395 | rom[i + 1] = rom[i + 4]; |
| 1396 | rom[i + 4] = tmp; |
| 1397 | tmp = rom[i + 3]; |
| 1398 | rom[i + 3] = rom[i + 6]; |
| 1399 | rom[i + 6] = tmp; |
| 1400 | } |
| 1401 | |
| 1402 | machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x70c018, 0x70c01f, read16_delegate(FUNC(cps_state::cps1_dsw_r),this)); |
| 1403 | machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x708000, 0x708fff, write16_delegate(FUNC(cps_state::sf2mdt_layer_w),this)); |
| 1404 | machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_port(0x70c000, 0x70c001, "IN1"); |
| 1405 | machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_port(0x70c008, 0x70c009, "IN2"); |
| 1406 | |
| 1407 | /* bootleg sprite ram */ |
| 1408 | m_bootleg_sprite_ram = (UINT16*)machine().device("maincpu")->memory().space(AS_PROGRAM).install_ram(0x700000, 0x703fff); |
| 1409 | machine().device("maincpu")->memory().space(AS_PROGRAM).install_ram(0x704000, 0x707fff, m_bootleg_sprite_ram); /* both of these need to be mapped */ |
| 1410 | machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x70c106, 0x70c107, write16_delegate(FUNC(cps_state::cawingbl_soundlatch_w),this)); |
| 1411 | |
| 1412 | m_bootleg_work_ram = (UINT16*)machine().device("maincpu")->memory().space(AS_PROGRAM).install_ram(0xff0000, 0xffffff); |
| 1413 | |
| 1414 | machine().device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0x800030, 0x800031); /* coin lockout doesn't work (unmap it) */ |
| 1415 | |
| 1416 | DRIVER_INIT_CALL(cps1); |
| 1417 | } |
| 1418 | |
| 1419 | |
| 1101 | 1420 | GAME( 1990, fcrash, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg (Playmark)", "Final Crash (bootleg of Final Fight)", GAME_SUPPORTS_SAVE ) |
| 1102 | 1421 | GAME( 1991, kodb, kod, kodb, kodb, cps_state, kodb, ROT0, "bootleg (Playmark)", "The King of Dragons (bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 910731 "ETC" |
| 1103 | 1422 | GAME( 1990, cawingbl, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 1)", GAME_SUPPORTS_SAVE ) |
| 1104 | 1423 | GAME( 1990, cawingb2, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 2)", GAME_SUPPORTS_SAVE ) |
| 1424 | GAME( 1992, sf2mdt, sf2ce, sf2mdt, sf2mdt, cps_state, sf2mdt, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 1)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 920313 - based on (heavily modified) World version |
| 1425 | GAME( 1992, sf2mdta, sf2ce, sf2mdt, sf2mdt, cps_state, sf2mdt, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // 920313 - based on World version |
| 1105 | 1426 | GAME( 199?, sgyxz, wof, sgyxz, fcrash, cps_state, cps1, ROT0, "bootleg (All-In Electronic)", "Warriors of Fate ('sgyxz' bootleg)", GAME_NOT_WORKING | GAME_NO_SOUND ) |