trunk/src/mame/drivers/r2dx_v33.c
| r32200 | r32201 | |
| 61 | 61 | DECLARE_WRITE16_MEMBER(mcu_prog_w2); |
| 62 | 62 | DECLARE_WRITE16_MEMBER(mcu_prog_offs_w); |
| 63 | 63 | DECLARE_WRITE16_MEMBER(rdx_v33_eeprom_w); |
| 64 | DECLARE_WRITE16_MEMBER(zerotm2k_eeprom_w); |
| 64 | 65 | DECLARE_WRITE16_MEMBER(r2dx_rom_bank_w); |
| 65 | 66 | DECLARE_DRIVER_INIT(rdx_v33); |
| 66 | 67 | DECLARE_DRIVER_INIT(nzerotea); |
| r32200 | r32201 | |
| 369 | 370 | } |
| 370 | 371 | } |
| 371 | 372 | |
| 372 | | static ADDRESS_MAP_START( nzerotea_map, AS_PROGRAM, 16, r2dx_v33_state ) |
| 373 | static ADDRESS_MAP_START( nzeroteam_base_map, AS_PROGRAM, 16, r2dx_v33_state ) |
| 373 | 374 | AM_RANGE(0x00000, 0x003ff) AM_RAM //stack area |
| 374 | 375 | |
| 376 | AM_RANGE(0x00400, 0x00401) AM_WRITENOP // tilemaps to private buffer |
| 377 | AM_RANGE(0x00402, 0x00403) AM_WRITENOP // palettes to private buffer |
| 378 | // 0x404 is bank on r2dx, this doesn't need it |
| 379 | // AM_RANGE(0x00406, 0x00407) AM_WRITE(tile_bank_w) // not the same? |
| 380 | |
| 375 | 381 | AM_RANGE(0x00420, 0x00421) AM_WRITE(r2dx_unk1_w) // frequent |
| 376 | 382 | AM_RANGE(0x00422, 0x00423) AM_WRITE(r2dx_unk2_w) // frequent |
| 377 | 383 | |
| r32200 | r32201 | |
| 396 | 402 | // AM_RANGE(0x006dc, 0x006dd) AM_READ(nzerotea_unknown_r) |
| 397 | 403 | // AM_RANGE(0x006de, 0x006df) AM_WRITE(mcu_unkaa_w) // mcu command related? |
| 398 | 404 | //AM_RANGE(0x00700, 0x00701) AM_WRITE(rdx_v33_eeprom_w) |
| 399 | | AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW") |
| 400 | | AM_RANGE(0x00744, 0x00745) AM_READ_PORT("INPUT") |
| 401 | | AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM") |
| 405 | |
| 402 | 406 | // AM_RANGE(0x00762, 0x00763) AM_READ(nzerotea_unknown_r) |
| 403 | 407 | |
| 404 | 408 | AM_RANGE(0x00780, 0x0079f) AM_READWRITE(nzerotea_sound_comms_r,nzerotea_sound_comms_w) |
| r32200 | r32201 | |
| 419 | 423 | AM_RANGE(0x20000, 0xfffff) AM_ROM AM_REGION("mainprg", 0x20000 ) |
| 420 | 424 | ADDRESS_MAP_END |
| 421 | 425 | |
| 426 | static ADDRESS_MAP_START( nzerotea_map, AS_PROGRAM, 16, r2dx_v33_state ) |
| 427 | AM_IMPORT_FROM( nzeroteam_base_map ) |
| 428 | AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW") |
| 429 | AM_RANGE(0x00744, 0x00745) AM_READ_PORT("INPUT") |
| 430 | AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM") |
| 431 | ADDRESS_MAP_END |
| 432 | |
| 433 | WRITE16_MEMBER(r2dx_v33_state::zerotm2k_eeprom_w) |
| 434 | { |
| 435 | // printf("zerotm2k_eeprom_w %04x %04x\n", data, mem_mask); |
| 436 | |
| 437 | m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE); |
| 438 | m_eeprom->di_write((data & 0x04) >> 2); |
| 439 | m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); |
| 440 | } |
| 441 | |
| 442 | static ADDRESS_MAP_START( zerotm2k_map, AS_PROGRAM, 16, r2dx_v33_state ) |
| 443 | AM_IMPORT_FROM( nzeroteam_base_map ) |
| 444 | AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW") // doesn't have dips but address is still read (maybe service switch, check) |
| 445 | AM_RANGE(0x00744, 0x00745) AM_READ_PORT("INPUT") |
| 446 | AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM") |
| 447 | AM_RANGE(0x00748, 0x00749) AM_WRITE(zerotm2k_eeprom_w) |
| 448 | ADDRESS_MAP_END |
| 449 | |
| 450 | |
| 451 | |
| 422 | 452 | INTERRUPT_GEN_MEMBER(r2dx_v33_state::rdx_v33_interrupt) |
| 423 | 453 | { |
| 424 | 454 | device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xc0/4); /* VBL */ |
| r32200 | r32201 | |
| 513 | 543 | PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 ) |
| 514 | 544 | PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) |
| 515 | 545 | PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 516 | | //PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) |
| 546 | PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 517 | 547 | PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 518 | 548 | PORT_DIPNAME( 0x0040, 0x0040, "Test Mode" ) |
| 519 | 549 | PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) |
| r32200 | r32201 | |
| 593 | 623 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 594 | 624 | INPUT_PORTS_END |
| 595 | 625 | |
| 626 | static INPUT_PORTS_START( zerotm2k ) |
| 627 | PORT_INCLUDE( nzerotea ) |
| 628 | |
| 629 | PORT_MODIFY("INPUT") |
| 630 | PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) |
| 631 | INPUT_PORTS_END |
| 596 | 632 | |
| 633 | |
| 597 | 634 | MACHINE_RESET_MEMBER(r2dx_v33_state,r2dx_v33) |
| 598 | 635 | { |
| 599 | 636 | common_reset(); |
| r32200 | r32201 | |
| 686 | 723 | |
| 687 | 724 | MACHINE_CONFIG_END |
| 688 | 725 | |
| 726 | static MACHINE_CONFIG_DERIVED( zerotm2k, nzerotea ) |
| 727 | MCFG_CPU_MODIFY("maincpu") |
| 728 | MCFG_CPU_PROGRAM_MAP(zerotm2k_map) |
| 689 | 729 | |
| 730 | MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") |
| 731 | MACHINE_CONFIG_END |
| 732 | |
| 690 | 733 | DRIVER_INIT_MEMBER(r2dx_v33_state,rdx_v33) |
| 691 | 734 | { |
| 692 | 735 | init_blending(raiden_blended_colors); |
| r32200 | r32201 | |
| 939 | 982 | GAME( 1997, nzeroteam, zeroteam, nzerotea, nzerotea, r2dx_v33_state, nzerotea, ROT0, "Seibu Kaihatsu", "New Zero Team", GAME_NOT_WORKING|GAME_NO_SOUND) |
| 940 | 983 | |
| 941 | 984 | // 'V33 SYSTEM TYPE_C VER2' - uses V33 CPU, COPX-D3 external protection rom, but still has the proper sound system, unencrypted sprites, EEPROM for settings. PCB also seen without 'VER2', looks the same |
| 942 | | GAME( 2000, zerotm2k, zeroteam, nzerotea, nzerotea, r2dx_v33_state, zerotm2k, ROT0, "Seibu Kaihatsu", "Zero Team 2000", GAME_NOT_WORKING|GAME_NO_SOUND) |
| 985 | GAME( 2000, zerotm2k, zeroteam, zerotm2k, zerotm2k, r2dx_v33_state, zerotm2k, ROT0, "Seibu Kaihatsu", "Zero Team 2000", GAME_NOT_WORKING|GAME_NO_SOUND) |