trunk/src/mame/drivers/cps1.c
| r20879 | r20880 | |
| 2038 | 2038 | PORT_DIPSETTING( 0x00, DEF_STR( Test ) ) |
| 2039 | 2039 | INPUT_PORTS_END |
| 2040 | 2040 | |
| 2041 | | static INPUT_PORTS_START( knights ) |
| 2041 | INPUT_PORTS_START( knights ) |
| 2042 | 2042 | PORT_INCLUDE( cps1_3players ) |
| 2043 | 2043 | |
| 2044 | 2044 | PORT_MODIFY("IN0") |
| r20879 | r20880 | |
| 3276 | 3276 | MCFG_EEPROM_ADD("eeprom", qsound_eeprom_interface) |
| 3277 | 3277 | MACHINE_CONFIG_END |
| 3278 | 3278 | |
| 3279 | | /* |
| 3280 | 3279 | |
| 3281 | | CPU: |
| 3282 | | |
| 3283 | | 1x MC68000P12 ic65 main |
| 3284 | | 1x Z0840006PSC ic1 sound |
| 3285 | | 1x YM2151 ic29 sound |
| 3286 | | 1x YM3012 ic30 sound |
| 3287 | | 2x LM324 ic15,ic31 sound |
| 3288 | | 2x M5205 ic184,ic185 sound |
| 3289 | | 1x TDA2003 ic14 sound |
| 3290 | | 1x oscillator 24.000000MHz (close to main) |
| 3291 | | 1x oscillator 29.821000MHz (close to sound) |
| 3292 | | |
| 3293 | | ROMs |
| 3294 | | |
| 3295 | | 5x M27C2001 1,2,3,4,5 dumped |
| 3296 | | 4x maskrom KA,KB,KC,KD not dumped |
| 3297 | | |
| 3298 | | RAMs: |
| 3299 | | |
| 3300 | | 4x KM62256ALP ic112,ic113,ic168,ic170 |
| 3301 | | 1x SYC6116L ic24 |
| 3302 | | 1x MCM2018AN ic7,ic8,ic51,ic56,ic70,ic71,ic77,ic78 |
| 3303 | | |
| 3304 | | PLDs: |
| 3305 | | |
| 3306 | | 1x TPC1020AFN ic116 read protected |
| 3307 | | 3x GAL20V8A ic120,ic121,ic169 read protected |
| 3308 | | 3x GAL16V8A ic7,ic72,ic80 read protected |
| 3309 | | |
| 3310 | | Note: |
| 3311 | | |
| 3312 | | 1x JAMMA edge connector |
| 3313 | | 2x 10 legs connector |
| 3314 | | 1x trimmer (volume) |
| 3315 | | 3x 8x2 switches DIP |
| 3316 | | |
| 3317 | | */ |
| 3318 | | |
| 3319 | | // The following is temporary - new code is on the way |
| 3320 | | |
| 3321 | | static ADDRESS_MAP_START( sf2mdt_z80map, AS_PROGRAM, 8, cps_state ) |
| 3322 | | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 3323 | | AM_RANGE(0x8000, 0xd7ff) AM_RAM |
| 3324 | | AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("2151", ym2151_device, read, write) |
| 3325 | | AM_RANGE(0xdc00, 0xdc00) AM_READ(soundlatch_byte_r) |
| 3326 | | ADDRESS_MAP_END |
| 3327 | | |
| 3328 | | static void m5205_int1( device_t *device ) |
| 3329 | | { |
| 3330 | | cps_state *state = device->machine().driver_data<cps_state>(); |
| 3331 | | |
| 3332 | | msm5205_data_w(device, state->m_sample_buffer1 & 0x0f); |
| 3333 | | state->m_sample_buffer1 >>= 4; |
| 3334 | | state->m_sample_select1 ^= 1; |
| 3335 | | if (state->m_sample_select1 == 0) |
| 3336 | | state->m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 3337 | | } |
| 3338 | | |
| 3339 | | static void m5205_int2( device_t *device ) |
| 3340 | | { |
| 3341 | | cps_state *state = device->machine().driver_data<cps_state>(); |
| 3342 | | |
| 3343 | | msm5205_data_w(device, state->m_sample_buffer2 & 0x0f); |
| 3344 | | state->m_sample_buffer2 >>= 4; |
| 3345 | | state->m_sample_select2 ^= 1; |
| 3346 | | } |
| 3347 | | |
| 3348 | | static const msm5205_interface msm5205_interface1 = |
| 3349 | | { |
| 3350 | | m5205_int1, /* interrupt function */ |
| 3351 | | MSM5205_S96_4B /* 4KHz 4-bit */ |
| 3352 | | }; |
| 3353 | | |
| 3354 | | static const msm5205_interface msm5205_interface2 = |
| 3355 | | { |
| 3356 | | m5205_int2, /* interrupt function */ |
| 3357 | | MSM5205_S96_4B /* 4KHz 4-bit */ |
| 3358 | | }; |
| 3359 | | |
| 3360 | | |
| 3361 | | static MACHINE_CONFIG_START( knightsb, cps_state ) |
| 3362 | | |
| 3363 | | /* basic machine hardware */ |
| 3364 | | MCFG_CPU_ADD("maincpu", M68000, 24000000 / 2) |
| 3365 | | MCFG_CPU_PROGRAM_MAP(main_map) |
| 3366 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt) |
| 3367 | | |
| 3368 | | MCFG_CPU_ADD("audiocpu", Z80, 29821000 / 8) |
| 3369 | | MCFG_CPU_PROGRAM_MAP(sf2mdt_z80map) |
| 3370 | | |
| 3371 | | MCFG_MACHINE_START_OVERRIDE(cps_state,common) |
| 3372 | | |
| 3373 | | /* video hardware */ |
| 3374 | | MCFG_SCREEN_ADD("screen", RASTER) |
| 3375 | | MCFG_SCREEN_REFRESH_RATE(60) |
| 3376 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 3377 | | MCFG_SCREEN_SIZE(64*8, 32*8) |
| 3378 | | MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) |
| 3379 | | MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1) |
| 3380 | | MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) |
| 3381 | | |
| 3382 | | MCFG_GFXDECODE(cps1) |
| 3383 | | MCFG_PALETTE_LENGTH(0xc00) |
| 3384 | | |
| 3385 | | MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) |
| 3386 | | |
| 3387 | | /* sound hardware */ |
| 3388 | | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3389 | | |
| 3390 | | MCFG_YM2151_ADD("2151", 29821000 / 8) |
| 3391 | | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) |
| 3392 | | MCFG_SOUND_ROUTE(0, "mono", 0.35) |
| 3393 | | MCFG_SOUND_ROUTE(1, "mono", 0.35) |
| 3394 | | |
| 3395 | | /* has 2x MSM5205 instead of OKI6295 */ |
| 3396 | | MCFG_SOUND_ADD("msm1", MSM5205, 24000000/64) /* ? */ |
| 3397 | | MCFG_SOUND_CONFIG(msm5205_interface1) |
| 3398 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 3399 | | |
| 3400 | | MCFG_SOUND_ADD("msm2", MSM5205, 24000000/64) /* ? */ |
| 3401 | | MCFG_SOUND_CONFIG(msm5205_interface2) |
| 3402 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 3403 | | MACHINE_CONFIG_END |
| 3404 | | |
| 3405 | | |
| 3406 | | |
| 3407 | | |
| 3408 | 3280 | /*************************************************************************** |
| 3409 | 3281 | |
| 3410 | 3282 | Game driver(s) |
| r20879 | r20880 | |
| 7747 | 7619 | ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) |
| 7748 | 7620 | ROM_END |
| 7749 | 7621 | |
| 7750 | | /* bootleg */ |
| 7751 | | /* FIXME - GFX ROMs are wrong, copied from the other version */ |
| 7752 | | /* ROMs missing are KA.IC91 KB.IC92 KC.IC93 KD.IC94 */ |
| 7753 | | ROM_START( knightsb ) |
| 7754 | | ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ |
| 7755 | | ROM_LOAD16_BYTE( "3.ic173", 0x00001, 0x40000, CRC(c9c6e720) SHA1(e8a1cd73458b548e88fc49d8f659e0dc33a8e756) ) |
| 7756 | | ROM_LOAD16_BYTE( "5.ic172", 0x00000, 0x40000, CRC(7fd91118) SHA1(d2832b21309a467938891946d7af35d8095787a4) ) |
| 7757 | | ROM_LOAD16_BYTE( "2.ic175", 0x80001, 0x40000, CRC(1eb91343) SHA1(e02cfbbd7689346f14f2e3455ed17e7f0b51bad0) ) |
| 7758 | | ROM_LOAD16_BYTE( "4.ic176", 0x80000, 0x40000, CRC(af352703) SHA1(7855ac65752203f45af4ef41af8c291540a1c8a8) ) |
| 7759 | 7622 | |
| 7760 | | ROM_REGION( 0x400000, "gfx", 0 ) /* bootleg had 4x 1meg MASKroms, these need dumping so that the format is known */ |
| 7761 | | ROMX_LOAD( "kr_gfx1.rom", 0x000000, 0x80000, BAD_DUMP CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 7762 | | ROMX_LOAD( "kr_gfx3.rom", 0x000002, 0x80000, BAD_DUMP CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 7763 | | ROMX_LOAD( "kr_gfx2.rom", 0x000004, 0x80000, BAD_DUMP CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 7764 | | ROMX_LOAD( "kr_gfx4.rom", 0x000006, 0x80000, BAD_DUMP CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 7765 | | ROMX_LOAD( "kr_gfx5.rom", 0x200000, 0x80000, BAD_DUMP CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 7766 | | ROMX_LOAD( "kr_gfx7.rom", 0x200002, 0x80000, BAD_DUMP CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 7767 | | ROMX_LOAD( "kr_gfx6.rom", 0x200004, 0x80000, BAD_DUMP CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 7768 | | ROMX_LOAD( "kr_gfx8.rom", 0x200006, 0x80000, BAD_DUMP CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 7769 | | |
| 7770 | | ROM_REGION( 0x40000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ |
| 7771 | | ROM_LOAD( "1.ic26", 0x00000, 0x40000, CRC(bd6f9cc1) SHA1(9f33cccef224d2204736a9eae761196866bd6e41) ) |
| 7772 | | ROM_END |
| 7773 | | |
| 7774 | 7623 | /* B-Board 91635B-2 */ |
| 7775 | 7624 | ROM_START( sf2ce ) |
| 7776 | 7625 | ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ |
| r20879 | r20880 | |
| 11369 | 11218 | GAME( 1991, knightsu, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (USA 911127)", GAME_SUPPORTS_SAVE ) |
| 11370 | 11219 | GAME( 1991, knightsj, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (Japan 911127, B-Board 91634B-2)", GAME_SUPPORTS_SAVE ) |
| 11371 | 11220 | GAME( 1991, knightsja, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (Japan 911127, B-Board 89625B-1)", GAME_SUPPORTS_SAVE ) |
| 11372 | | GAME( 1991, knightsb, knights, knightsb, knights, cps_state, cps1, ROT0, "bootleg", "Knights of the Round (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 911127 - based on World version |
| 11373 | 11221 | GAME( 1992, sf2ce, 0, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (World 920513)", GAME_SUPPORTS_SAVE ) // "ETC" |
| 11374 | 11222 | GAME( 1992, sf2ceea, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (World 920313)", GAME_SUPPORTS_SAVE ) // "ETC" |
| 11375 | 11223 | GAME( 1992, sf2ceua, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (USA 920313)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/fcrash.c
| r20879 | r20880 | |
| 45 | 45 | - the layer enable and layer mask writes continue at 0x98000c and 0x980020-2 |
| 46 | 46 | |
| 47 | 47 | These read/writes are identical to those used by a Knights of the Round bootleg which uses the all sf2mdt sound |
| 48 | | hardware. This set is currently non-working in cps1.c but I will move it here soon. |
| 48 | hardware. This set is currently non-working. |
| 49 | 49 | |
| 50 | 50 | This also prevents the game from toggling the sprite address at m_cps_a_regs[0], similar to other bootlegs. |
| 51 | 51 | Currently the game is working somewhat, but only using the code left over from the original. If anyone wants to |
| r20879 | r20880 | |
| 100 | 100 | membank("bank1")->set_entry(data & 0x07); |
| 101 | 101 | } |
| 102 | 102 | |
| 103 | WRITE8_MEMBER( cps_state::knightsb_snd_bankswitch_w ) |
| 104 | { |
| 105 | m_msm_1->set_output_gain(0, (data & 0x20) ? 0.0 : 1.0); |
| 106 | m_msm_2->set_output_gain(0, (data & 0x10) ? 0.0 : 1.0); |
| 107 | |
| 108 | membank("bank1")->set_entry(data & 0x0f); |
| 109 | } |
| 110 | |
| 103 | 111 | static void m5205_int1( device_t *device ) |
| 104 | 112 | { |
| 105 | 113 | cps_state *state = device->machine().driver_data<cps_state>(); |
| r20879 | r20880 | |
| 148 | 156 | m_cps_b_regs[m_layer_mask_reg[2] / 2] = data; |
| 149 | 157 | } |
| 150 | 158 | |
| 159 | WRITE16_MEMBER(cps_state::knightsb_layer_w) |
| 160 | { |
| 161 | if (offset == 0x05) |
| 162 | m_cps_a_regs[0x14 / 2] = data + 0xffce; /* scroll 3x */ |
| 163 | else |
| 164 | if (offset == 0x04) |
| 165 | m_cps_a_regs[0x16 / 2] = data; /* scroll 3y */ |
| 166 | else |
| 167 | if (offset == 0x03) |
| 168 | m_cps_a_regs[0x10 / 2] = data + 0xffce; /* scroll 2x */ |
| 169 | else |
| 170 | if (offset == 0x01) |
| 171 | m_cps_a_regs[0x0c / 2] = data + 0xffc2; /* scroll 1x */ |
| 172 | else |
| 173 | if (offset == 0x02) |
| 174 | { |
| 175 | m_cps_a_regs[0x12 / 2] = data; /* scroll 2y */ |
| 176 | m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */ |
| 177 | } |
| 178 | else |
| 179 | if (offset == 0x00) |
| 180 | m_cps_a_regs[0x0e / 2] = data; /* scroll 1y - fixes scroll of high scores */ |
| 181 | else |
| 182 | if (offset == 0x06) |
| 183 | m_cps_b_regs[m_layer_enable_reg / 2] = data; |
| 184 | else |
| 185 | if (offset == 0x10) |
| 186 | m_cps_b_regs[m_layer_mask_reg[1] / 2] = data; |
| 187 | else |
| 188 | if (offset == 0x11) |
| 189 | m_cps_b_regs[m_layer_mask_reg[2] / 2] = data; |
| 190 | else |
| 191 | if (offset == 0x12) |
| 192 | m_cps_b_regs[m_layer_mask_reg[3] / 2] = data; |
| 193 | } |
| 194 | |
| 151 | 195 | WRITE16_MEMBER(cps_state::sf2mdt_layer_w) |
| 152 | 196 | { |
| 153 | 197 | /* 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 |
| r20879 | r20880 | |
| 409 | 453 | } |
| 410 | 454 | |
| 411 | 455 | |
| 456 | static ADDRESS_MAP_START( knightsb_map, AS_PROGRAM, 16, cps_state ) |
| 457 | AM_RANGE(0x000000, 0x3fffff) AM_ROM |
| 458 | AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN1") /* Player input ports */ |
| 459 | AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN2")//(cps1_in2_r) /* Player 3 controls */ |
| 460 | AM_RANGE(0x800006, 0x800007) AM_WRITE(cps1_soundlatch_w) /* Sound command */ |
| 461 | AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */ |
| 462 | AM_RANGE(0x800030, 0x800037) AM_WRITENOP //AM_WRITE(cps1_coinctrl_w) only writes bit 15 |
| 463 | AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */ |
| 464 | AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* CPS-B custom */ |
| 465 | AM_RANGE(0x800180, 0x800181) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */ |
| 466 | AM_RANGE(0x880000, 0x880001) AM_WRITENOP //? |
| 467 | AM_RANGE(0x900000, 0x93ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") |
| 468 | AM_RANGE(0x980000, 0x98002f) AM_WRITE(knightsb_layer_w) |
| 469 | AM_RANGE(0x991000, 0x993fff) AM_WRITENOP // could be bootleg_sprite_ram |
| 470 | AM_RANGE(0xff0000, 0xffffff) AM_RAM |
| 471 | ADDRESS_MAP_END |
| 472 | |
| 412 | 473 | static ADDRESS_MAP_START( fcrash_map, AS_PROGRAM, 16, cps_state ) |
| 413 | 474 | AM_RANGE(0x000000, 0x3fffff) AM_ROM |
| 414 | 475 | AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w) |
| r20879 | r20880 | |
| 454 | 515 | AM_RANGE(0xe800, 0xe800) AM_WRITE(fcrash_msm5205_1_data_w) |
| 455 | 516 | ADDRESS_MAP_END |
| 456 | 517 | |
| 518 | static ADDRESS_MAP_START( knightsb_z80map, AS_PROGRAM, 8, cps_state ) |
| 519 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 520 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") |
| 521 | AM_RANGE(0xd000, 0xd7ff) AM_RAM |
| 522 | AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("2151", ym2151_device, read, write) |
| 523 | AM_RANGE(0xdc00, 0xdc00) AM_READ(soundlatch_byte_r) |
| 524 | AM_RANGE(0xe000, 0xe000) AM_WRITE(knightsb_snd_bankswitch_w) |
| 525 | AM_RANGE(0xe400, 0xe400) AM_WRITE(fcrash_msm5205_0_data_w) |
| 526 | AM_RANGE(0xe800, 0xe800) AM_WRITE(fcrash_msm5205_1_data_w) |
| 527 | ADDRESS_MAP_END |
| 457 | 528 | |
| 529 | |
| 458 | 530 | #define CPS1_COINAGE_1 \ |
| 459 | 531 | PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) \ |
| 460 | 532 | PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \ |
| r20879 | r20880 | |
| 968 | 1040 | save_item(NAME(m_sample_select2)); |
| 969 | 1041 | } |
| 970 | 1042 | |
| 1043 | MACHINE_START_MEMBER(cps_state, knightsb) |
| 1044 | { |
| 1045 | UINT8 *ROM = memregion("soundcpu")->base(); |
| 1046 | |
| 1047 | membank("bank1")->configure_entries(0, 16, &ROM[0x10000], 0x4000); |
| 1048 | |
| 1049 | m_maincpu = machine().device<cpu_device>("maincpu"); |
| 1050 | m_audiocpu = machine().device<cpu_device>("soundcpu"); |
| 1051 | m_msm_1 = machine().device<msm5205_device>("msm1"); |
| 1052 | m_msm_2 = machine().device<msm5205_device>("msm2"); |
| 1053 | m_layer_enable_reg = 0x20; |
| 1054 | m_layer_mask_reg[0] = 0x28; |
| 1055 | m_layer_mask_reg[1] = 0x2a; |
| 1056 | m_layer_mask_reg[2] = 0x2c; |
| 1057 | m_layer_mask_reg[3] = 0x2e; |
| 1058 | m_layer_scroll1x_offset = 0; |
| 1059 | m_layer_scroll2x_offset = 0; |
| 1060 | m_layer_scroll3x_offset = 0; |
| 1061 | m_sprite_base = 0x1000; |
| 1062 | m_sprite_list_end_marker = 0xffff; |
| 1063 | m_sprite_x_offset = 0; |
| 1064 | } |
| 1065 | |
| 971 | 1066 | MACHINE_RESET_MEMBER(cps_state,fcrash) |
| 972 | 1067 | { |
| 973 | 1068 | m_sample_buffer1 = 0; |
| r20879 | r20880 | |
| 1118 | 1213 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1119 | 1214 | MACHINE_CONFIG_END |
| 1120 | 1215 | |
| 1216 | static MACHINE_CONFIG_START( knightsb, cps_state ) |
| 1121 | 1217 | |
| 1218 | /* basic machine hardware */ |
| 1219 | MCFG_CPU_ADD("maincpu", M68000, 24000000 / 2) |
| 1220 | MCFG_CPU_PROGRAM_MAP(knightsb_map) |
| 1221 | MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt) // to get past ETC screen |
| 1222 | MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cps_state, ganbare_interrupt, "screen", 0, 1) // to activate 98xxxx writes |
| 1223 | |
| 1224 | MCFG_CPU_ADD("soundcpu", Z80, 29821000 / 8) |
| 1225 | MCFG_CPU_PROGRAM_MAP(knightsb_z80map) |
| 1226 | |
| 1227 | MCFG_MACHINE_START_OVERRIDE(cps_state, knightsb) |
| 1228 | |
| 1229 | /* video hardware */ |
| 1230 | MCFG_SCREEN_ADD("screen", RASTER) |
| 1231 | MCFG_SCREEN_REFRESH_RATE(60) |
| 1232 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 1233 | MCFG_SCREEN_SIZE(64*8, 32*8) |
| 1234 | MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) |
| 1235 | MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1) |
| 1236 | MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) |
| 1237 | |
| 1238 | MCFG_GFXDECODE(cps1) |
| 1239 | MCFG_PALETTE_LENGTH(0xc00) |
| 1240 | |
| 1241 | MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) |
| 1242 | |
| 1243 | /* sound hardware */ |
| 1244 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1245 | |
| 1246 | MCFG_YM2151_ADD("2151", 29821000 / 8) |
| 1247 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) |
| 1248 | MCFG_SOUND_ROUTE(0, "mono", 0.35) |
| 1249 | MCFG_SOUND_ROUTE(1, "mono", 0.35) |
| 1250 | |
| 1251 | /* has 2x MSM5205 instead of OKI6295 */ |
| 1252 | MCFG_SOUND_ADD("msm1", MSM5205, 24000000/64) /* ? */ |
| 1253 | MCFG_SOUND_CONFIG(msm5205_interface1) |
| 1254 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1255 | |
| 1256 | MCFG_SOUND_ADD("msm2", MSM5205, 24000000/64) /* ? */ |
| 1257 | MCFG_SOUND_CONFIG(msm5205_interface2) |
| 1258 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1259 | MACHINE_CONFIG_END |
| 1260 | |
| 1261 | |
| 1122 | 1262 | ROM_START( fcrash ) |
| 1123 | 1263 | ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */ |
| 1124 | 1264 | ROM_LOAD16_BYTE( "9.bin", 0x00000, 0x20000, CRC(c6854c91) SHA1(29f01cc65be5eaa3f86e99eebdd284104623abb0) ) |
| r20879 | r20880 | |
| 1216 | 1356 | ROM_LOAD( "2.ic19", 0x00000, 0x40000, CRC(a2db1575) SHA1(1a4a29e4b045af50700adf1665697feab12cc234) ) |
| 1217 | 1357 | ROM_END |
| 1218 | 1358 | |
| 1359 | /* |
| 1360 | |
| 1361 | CPU: |
| 1362 | |
| 1363 | 1x MC68000P12 ic65 main |
| 1364 | 1x Z0840006PSC ic1 sound |
| 1365 | 1x YM2151 ic29 sound |
| 1366 | 1x YM3012 ic30 sound |
| 1367 | 2x LM324 ic15,ic31 sound |
| 1368 | 2x M5205 ic184,ic185 sound |
| 1369 | 1x TDA2003 ic14 sound |
| 1370 | 1x oscillator 24.000000MHz (close to main) |
| 1371 | 1x oscillator 29.821000MHz (close to sound) |
| 1372 | |
| 1373 | ROMs |
| 1374 | |
| 1375 | 5x M27C2001 1,2,3,4,5 dumped |
| 1376 | 4x maskrom KA,KB,KC,KD not dumped |
| 1377 | |
| 1378 | RAMs: |
| 1379 | |
| 1380 | 4x KM62256ALP ic112,ic113,ic168,ic170 |
| 1381 | 1x SYC6116L ic24 |
| 1382 | 1x MCM2018AN ic7,ic8,ic51,ic56,ic70,ic71,ic77,ic78 |
| 1383 | |
| 1384 | PLDs: |
| 1385 | |
| 1386 | 1x TPC1020AFN ic116 read protected |
| 1387 | 3x GAL20V8A ic120,ic121,ic169 read protected |
| 1388 | 3x GAL16V8A ic7,ic72,ic80 read protected |
| 1389 | |
| 1390 | Note: |
| 1391 | |
| 1392 | 1x JAMMA edge connector |
| 1393 | 2x 10 legs connector |
| 1394 | 1x trimmer (volume) |
| 1395 | 3x 8x2 switches DIP |
| 1396 | |
| 1397 | */ |
| 1398 | /* bootleg */ |
| 1399 | /* FIXME - GFX ROMs are wrong, copied from the other version */ |
| 1400 | /* ROMs missing are KA.IC91 KB.IC92 KC.IC93 KD.IC94 */ |
| 1401 | ROM_START( knightsb ) |
| 1402 | ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */ |
| 1403 | ROM_LOAD16_BYTE( "3.ic173", 0x00001, 0x40000, CRC(c9c6e720) SHA1(e8a1cd73458b548e88fc49d8f659e0dc33a8e756) ) |
| 1404 | ROM_LOAD16_BYTE( "5.ic172", 0x00000, 0x40000, CRC(7fd91118) SHA1(d2832b21309a467938891946d7af35d8095787a4) ) |
| 1405 | ROM_LOAD16_BYTE( "2.ic175", 0x80001, 0x40000, CRC(1eb91343) SHA1(e02cfbbd7689346f14f2e3455ed17e7f0b51bad0) ) |
| 1406 | ROM_LOAD16_BYTE( "4.ic176", 0x80000, 0x40000, CRC(af352703) SHA1(7855ac65752203f45af4ef41af8c291540a1c8a8) ) |
| 1407 | |
| 1408 | ROM_REGION( 0x400000, "gfx", 0 ) /* bootleg had 4x 1meg MASKroms, these need dumping so that the format is known */ |
| 1409 | ROMX_LOAD( "kr_gfx1.rom", 0x000000, 0x80000, BAD_DUMP CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1410 | ROMX_LOAD( "kr_gfx3.rom", 0x000002, 0x80000, BAD_DUMP CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1411 | ROMX_LOAD( "kr_gfx2.rom", 0x000004, 0x80000, BAD_DUMP CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1412 | ROMX_LOAD( "kr_gfx4.rom", 0x000006, 0x80000, BAD_DUMP CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1413 | ROMX_LOAD( "kr_gfx5.rom", 0x200000, 0x80000, BAD_DUMP CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1414 | ROMX_LOAD( "kr_gfx7.rom", 0x200002, 0x80000, BAD_DUMP CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1415 | ROMX_LOAD( "kr_gfx6.rom", 0x200004, 0x80000, BAD_DUMP CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1416 | ROMX_LOAD( "kr_gfx8.rom", 0x200006, 0x80000, BAD_DUMP CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 1417 | |
| 1418 | ROM_REGION( 0x50000, "soundcpu", 0 ) /* 64k for the audio CPU (+banks) */ |
| 1419 | ROM_LOAD( "1.ic26", 0x00000, 0x40000, CRC(bd6f9cc1) SHA1(9f33cccef224d2204736a9eae761196866bd6e41) ) |
| 1420 | ROM_RELOAD( 0x10000, 0x40000 ) |
| 1421 | ROM_END |
| 1422 | |
| 1219 | 1423 | ROM_START( cawingbl ) |
| 1220 | 1424 | ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */ |
| 1221 | 1425 | ROM_LOAD16_BYTE( "caw2.bin", 0x00000, 0x80000, CRC(8125d3f0) SHA1(a0e48c326c6164ca189c9372f5c38a7c103772c1) ) |
| r20879 | r20880 | |
| 1467 | 1671 | |
| 1468 | 1672 | GAME( 1990, fcrash, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg (Playmark)", "Final Crash (bootleg of Final Fight)", GAME_SUPPORTS_SAVE ) |
| 1469 | 1673 | 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" |
| 1674 | GAME( 1991, knightsb, knights, knightsb, knights, cps_state, cps1, ROT0, "bootleg", "Knights of the Round (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 911127 - based on World version |
| 1470 | 1675 | GAME( 1990, cawingbl, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 1)", GAME_SUPPORTS_SAVE ) |
| 1471 | 1676 | GAME( 1990, cawingb2, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 2)", GAME_SUPPORTS_SAVE ) |
| 1472 | 1677 | GAME( 1992, sf2mdt, sf2ce, sf2mdt, sf2mdt, cps_state, sf2mdt, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 1)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 920313 - based on (heavily modified) World version |