trunk/src/mess/drivers/esq5505.c
| r19099 | r19100 | |
| 35 | 35 | O2: "AN2" (disk side select on EPS/EPS-16) |
| 36 | 36 | O6: To ESPHALT pin on ES5510 |
| 37 | 37 | O7: "SACK" |
| 38 | | |
| 39 | | |
| 38 | |
| 40 | 39 | ***************************************************************************/ |
| 41 | 40 | |
| 42 | 41 | #include "emu.h" |
| r19099 | r19100 | |
| 56 | 55 | #define EPS (1) |
| 57 | 56 | #define SQ1 (2) |
| 58 | 57 | |
| 59 | | #define KEYBOARD_HACK (0) // turn on to play the SQ-1: Z and X are program up/down, A/S/D/F/G/H/J/K/L and Q/W/E/R/T/Y/U play notes |
| 58 | #define KEYBOARD_HACK (0) // turn on to play the SQ-1, SD-1, and SD-1 32-voice: Z and X are program up/down, A/S/D/F/G/H/J/K/L and Q/W/E/R/T/Y/U play notes |
| 60 | 59 | |
| 61 | 60 | #if KEYBOARD_HACK |
| 62 | 61 | static int program = 0; |
| r19099 | r19100 | |
| 110 | 109 | DECLARE_DRIVER_INIT(eps); |
| 111 | 110 | DECLARE_DRIVER_INIT(common); |
| 112 | 111 | DECLARE_DRIVER_INIT(sq1); |
| 112 | DECLARE_DRIVER_INIT(sd1); |
| 113 | 113 | DECLARE_INPUT_CHANGED_MEMBER(key_stroke); |
| 114 | 114 | }; |
| 115 | 115 | |
| r19099 | r19100 | |
| 398 | 398 | #if KEYBOARD_HACK |
| 399 | 399 | INPUT_CHANGED_MEMBER(esq5505_state::key_stroke) |
| 400 | 400 | { |
| 401 | | esq5505_state *state = device.machine().driver_data<esq5505_state>(); |
| 402 | | |
| 403 | 401 | // send a MIDI Note On |
| 404 | 402 | if (oldval == 0 && newval == 1) |
| 405 | 403 | { |
| r19099 | r19100 | |
| 468 | 466 | }; |
| 469 | 467 | |
| 470 | 468 | static MACHINE_CONFIG_START( vfx, esq5505_state ) |
| 471 | | MCFG_CPU_ADD("maincpu", M68000, 10000000) |
| 469 | MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) |
| 472 | 470 | MCFG_CPU_PROGRAM_MAP(vfx_map) |
| 473 | 471 | |
| 474 | 472 | MCFG_ESQ2x40_ADD("vfd") |
| r19099 | r19100 | |
| 476 | 474 | MCFG_DUART68681_ADD("duart", 4000000, duart_config) |
| 477 | 475 | |
| 478 | 476 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 479 | | MCFG_SOUND_ADD("ensoniq", ES5505, 30476100/2) |
| 477 | MCFG_SOUND_ADD("ensoniq", ES5505, XTAL_10MHz) |
| 480 | 478 | MCFG_SOUND_CONFIG(es5505_config) |
| 481 | 479 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 482 | 480 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 483 | 481 | MACHINE_CONFIG_END |
| 484 | 482 | |
| 485 | | static MACHINE_CONFIG_DERIVED(sq1, vfx) |
| 486 | | MCFG_ESQ2x40_REMOVE("vfd") |
| 487 | | MCFG_ESQ2x40_SQ1_ADD("sq1vfd") |
| 488 | | MACHINE_CONFIG_END |
| 489 | | |
| 490 | 483 | static MACHINE_CONFIG_DERIVED(eps, vfx) |
| 491 | 484 | MCFG_CPU_MODIFY( "maincpu" ) |
| 492 | 485 | MCFG_CPU_PROGRAM_MAP(eps_map) |
| r19099 | r19100 | |
| 508 | 501 | MCFG_FLOPPY_DRIVE_ADD("wd1772:0", ensoniq_floppies, "35dd", 0, esq5505_state::floppy_formats) |
| 509 | 502 | MACHINE_CONFIG_END |
| 510 | 503 | |
| 504 | // 32-voice machines with the VFX-SD type config |
| 505 | static MACHINE_CONFIG_START(vfx32, esq5505_state) |
| 506 | MCFG_CPU_ADD("maincpu", M68000, XTAL_30_4761MHz / 2) |
| 507 | MCFG_CPU_PROGRAM_MAP(vfxsd_map) |
| 508 | |
| 509 | MCFG_ESQ2x40_ADD("vfd") |
| 510 | |
| 511 | MCFG_DUART68681_ADD("duart", 4000000, duart_config) |
| 512 | |
| 513 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 514 | MCFG_SOUND_ADD("ensoniq", ES5505, XTAL_30_4761MHz / 2) |
| 515 | MCFG_SOUND_CONFIG(es5505_config) |
| 516 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 517 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 518 | |
| 519 | MCFG_WD1772x_ADD("wd1772", 8000000) |
| 520 | MCFG_FLOPPY_DRIVE_ADD("wd1772:0", ensoniq_floppies, "35dd", 0, esq5505_state::floppy_formats) |
| 521 | MACHINE_CONFIG_END |
| 522 | |
| 523 | static MACHINE_CONFIG_DERIVED(sq1, vfx32) |
| 524 | MCFG_ESQ2x40_REMOVE("vfd") |
| 525 | MCFG_ESQ2x40_SQ1_ADD("sq1vfd") |
| 526 | MACHINE_CONFIG_END |
| 527 | |
| 511 | 528 | static INPUT_PORTS_START( vfx ) |
| 512 | 529 | #if KEYBOARD_HACK |
| 513 | 530 | PORT_START("KEY0") |
| r19099 | r19100 | |
| 567 | 584 | ROM_LOAD16_BYTE( "sd1_410_lo.bin", 0x000000, 0x020000, CRC(faa613a6) SHA1(60066765cddfa9d3b5d09057d8f83fb120f4e65e) ) |
| 568 | 585 | ROM_LOAD16_BYTE( "sd1_410_hi.bin", 0x000001, 0x010000, CRC(618c0aa8) SHA1(74acf458aa1d04a0a7a0cd5855c49e6855dbd301) ) |
| 569 | 586 | |
| 570 | | ROM_REGION(0x200000, "waverom", ROMREGION_ERASE00) |
| 571 | | ROM_LOAD( "sd1-waves-1.bin", 0x000000, 0x080000, NO_DUMP ) |
| 572 | | ROM_LOAD( "sd1-waves-2.bin", 0x100000, 0x080000, NO_DUMP ) |
| 587 | ROM_REGION(0x200000, "waverom", ROMREGION_ERASE00) // BS=0 region (12-bit) |
| 588 | ROM_LOAD16_BYTE( "u34.bin", 0x000001, 0x080000, CRC(85592299) SHA1(1aa7cf612f91972baeba15991d9686ccde01599c) ) |
| 589 | ROM_LOAD16_BYTE( "u35.bin", 0x100001, 0x080000, CRC(c0055975) SHA1(5a22f1d5e437c6277eb0cfb1ff1b3f8dcdea1cc6) ) |
| 590 | |
| 591 | ROM_REGION(0x200000, "waverom2", ROMREGION_ERASE00) // BS=1 region (16-bit) |
| 592 | |
| 593 | ROM_REGION(0x80000, "nibbles", 0) |
| 594 | ROM_LOAD( "u36.bin", 0x000000, 0x080000, CRC(c3ddaf95) SHA1(44a7bd89cd7e82952cc5100479e110c385246559) ) |
| 573 | 595 | ROM_END |
| 574 | 596 | |
| 575 | 597 | ROM_START( sd132 ) |
| r19099 | r19100 | |
| 577 | 599 | ROM_LOAD16_BYTE( "sd1_32_402_lo.bin", 0x000000, 0x020000, CRC(5da2572b) SHA1(cb6ddd637ed13bfeb40a99df56000479e63fc8ec) ) |
| 578 | 600 | ROM_LOAD16_BYTE( "sd1_32_402_hi.bin", 0x000001, 0x010000, CRC(fc45c210) SHA1(23b81ebd9176112e6eae0c7c75b39fcb1656c953) ) |
| 579 | 601 | |
| 580 | | ROM_REGION(0x200000, "waverom", ROMREGION_ERASE00) |
| 581 | | ROM_LOAD( "sd1-waves-1.bin", 0x000000, 0x080000, NO_DUMP ) |
| 582 | | ROM_LOAD( "sd1-waves-2.bin", 0x100000, 0x080000, NO_DUMP ) |
| 602 | ROM_REGION(0x200000, "waverom", ROMREGION_ERASE00) // BS=0 region (12-bit) |
| 603 | ROM_LOAD16_BYTE( "u34.bin", 0x000001, 0x080000, CRC(85592299) SHA1(1aa7cf612f91972baeba15991d9686ccde01599c) ) |
| 604 | ROM_LOAD16_BYTE( "u35.bin", 0x100001, 0x080000, CRC(c0055975) SHA1(5a22f1d5e437c6277eb0cfb1ff1b3f8dcdea1cc6) ) |
| 605 | |
| 606 | ROM_REGION(0x200000, "waverom2", ROMREGION_ERASE00) // BS=1 region (16-bit) |
| 607 | |
| 608 | ROM_REGION(0x80000, "nibbles", ROMREGION_ERASE00) |
| 609 | ROM_LOAD( "u36.bin", 0x000000, 0x080000, CRC(c3ddaf95) SHA1(44a7bd89cd7e82952cc5100479e110c385246559) ) |
| 583 | 610 | ROM_END |
| 584 | 611 | |
| 612 | |
| 585 | 613 | ROM_START( sq1 ) |
| 586 | | ROM_REGION(0x20000, "osrom", 0) |
| 614 | ROM_REGION(0x40000, "osrom", 0) |
| 587 | 615 | ROM_LOAD16_BYTE( "esq5505lo.bin", 0x000000, 0x010000, CRC(b004cf05) SHA1(567b0dae2e35b06e39da108f9c041fd9bc38fa35) ) |
| 588 | 616 | ROM_LOAD16_BYTE( "esq5505up.bin", 0x000001, 0x010000, CRC(2e927873) SHA1(06a948cb71fa254b23f4b9236f29035d10778da1) ) |
| 589 | 617 | |
| r19099 | r19100 | |
| 629 | 657 | m_system_type = SQ1; |
| 630 | 658 | } |
| 631 | 659 | |
| 660 | DRIVER_INIT_MEMBER(esq5505_state,sd1) |
| 661 | { |
| 662 | UINT8 *pNibbles = (UINT8 *)machine().root_device().memregion("nibbles")->base(); |
| 663 | UINT8 *pBS0 = (UINT8 *)machine().root_device().memregion("waverom")->base(); |
| 664 | |
| 665 | DRIVER_INIT_CALL(common); |
| 666 | |
| 667 | // create the 12 bit samples by patching in the nibbles from the nibble ROM |
| 668 | for (int i = 0; i < 0x80000; i++) |
| 669 | { |
| 670 | *pBS0 = *pNibbles & 0xf0; |
| 671 | pBS0 += 2; |
| 672 | *pBS0 = (*pNibbles & 0x0f) << 4; |
| 673 | pBS0 += 2; |
| 674 | pNibbles++; |
| 675 | } |
| 676 | } |
| 677 | |
| 632 | 678 | CONS( 1988, eps, 0, 0, eps, vfx, esq5505_state, eps, "Ensoniq", "EPS", GAME_NOT_WORKING ) // custom VFD: one alphanumeric 22-char row, one graphics-capable row (alpha row can also do bar graphs) |
| 633 | 679 | CONS( 1989, vfx, 0, 0, vfx, vfx, esq5505_state, common, "Ensoniq", "VFX", GAME_NOT_WORKING ) // 2x40 VFD |
| 634 | 680 | CONS( 1989, vfxsd, 0, 0, vfxsd, vfx, esq5505_state, common, "Ensoniq", "VFX-SD", GAME_NOT_WORKING ) // 2x40 VFD |
| 635 | | CONS( 1990, sd1, 0, 0, vfxsd, vfx, esq5505_state, common, "Ensoniq", "SD-1", GAME_NOT_WORKING ) // 2x40 VFD |
| 636 | | CONS( 1990, sd132, 0, 0, vfxsd, vfx, esq5505_state, common, "Ensoniq", "SD-1 32", GAME_NOT_WORKING ) // 2x40 VFD |
| 681 | CONS( 1990, sd1, 0, 0, vfxsd, vfx, esq5505_state, sd1, "Ensoniq", "SD-1", GAME_NOT_WORKING ) // 2x40 VFD |
| 682 | CONS( 1990, sd132, sd1, 0, vfx32, vfx, esq5505_state, sd1, "Ensoniq", "SD-1 32", GAME_NOT_WORKING ) // 2x40 VFD |
| 637 | 683 | CONS( 1990, sq1, 0, 0, sq1, vfx, esq5505_state, sq1, "Ensoniq", "SQ-1", GAME_NOT_WORKING ) // LCD of some sort |
| 638 | 684 | |