Previous 199869 Revisions Next

r19131 Saturday 24th November, 2012 at 19:06:51 UTC by R. Belmont
esq5505: shared sample ROMs went back to the original VFX (nw)
[src/mess/drivers]esq5505.c

trunk/src/mess/drivers/esq5505.c
r19130r19131
3636    O6: To ESPHALT pin on ES5510
3737    O7: "SACK"
3838 
39    VFX-SD / SD-1 / SD-1 32 panel button codes:
40   2 = PROG-CNTL
41   3 = WRITE EDIT PROGRAM
42   4 = WAVE
43   5 = SELECT VOICE
44   6 = MIXER/SHAPER
45   7 & 8 =  EFFECT
46   9 = COPY EFFECTS PARAMETERS
47   10 = LFO
48   11 = PITCH
49   12 = ENV1
50   13 = PITCH MOD
51   14 = ENV2
52   15 = FILTER
53   16 = ENV3
54   17 = OUTPUT
55   20 = MASTER
56   24 = MIDI
57   25 = INT9
58   26 = PSEL
59   27 = STAT
60   28 = EFFECT
61   29 = INT9
62   30 = TRAX
63   31 = TRAX (page 2)
64   34 = INT8
65   35 = INT7
66   36 = VOL
67   37 = PAN
68   38 = TIMB
69   39 = ZONE
70   40 = XPOS
71   41 = RELS
72 
3973***************************************************************************/
4074
4175#include "emu.h"
r19130r19131
5589#define EPS     (1)
5690#define SQ1     (2)
5791
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
92#define KEYBOARD_HACK (1)   // 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
5993
6094#if KEYBOARD_HACK
6195static int program = 0;
r19130r19131
136170
137171READ16_MEMBER(esq5505_state::es5510_dsp_r)
138172{
139//  logerror("%06x: DSP read offset %04x (data is %04x)\n",space.device().safe_pc(),offset,es5510_dsp_ram[offset]);
173//   printf("%06x: DSP read offset %04x (data is %04x)\n",space.device().safe_pc(),offset,es5510_dsp_ram[offset]);
140174
175   // VFX hack
176   if (mame_stricmp(space.machine().system().name, "vfx") == 0)
177   {
178      if (space.device().safe_pc() == 0xc091f0)
179      {
180         return space.device().state().state_int(M68K_D2);
181      }
182   }
183
141184   switch(offset)
142185   {
143186      case 0x09: return (es5510_dil_latch >> 16) & 0xff;
r19130r19131
324367                break;
325368        }
326369
327        if (state->m_bCalibSecondByte)
370      if (state->m_bCalibSecondByte)
328371        {
329372            if (data == 0xfd)   // calibration request
330373            {
r19130r19131
396439#if KEYBOARD_HACK
397440INPUT_CHANGED_MEMBER(esq5505_state::key_stroke)
398441{
442    #if 1   // MIDI
399443    // send a MIDI Note On
400444    if (oldval == 0 && newval == 1)
401445    {
r19130r19131
441485            duart68681_rx_data(m_duart, 0, (UINT8)(FPTR)0x7f);
442486        }
443487    }
488    #else
489   int val = (UINT8)(FPTR)param;
490   val += 50;
491    if (oldval == 0 && newval == 1)
492    {
493        printf("key on %d\n", val&0x7f);
494        duart68681_rx_data(m_duart, 1, val);
495        duart68681_rx_data(m_duart, 1, 0x00);
496    }
497    else if (oldval == 1 && newval == 0)
498    {
499//        printf("key off %x\n", (UINT8)(FPTR)param);
500        duart68681_rx_data(m_duart, 1, val&0x7f);
501        duart68681_rx_data(m_duart, 1, 0x00);
502    }
503    #endif
444504}
445505#endif
446506
r19130r19131
474534   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
475535   MCFG_SOUND_ADD("ensoniq", ES5505, XTAL_10MHz)
476536   MCFG_SOUND_CONFIG(es5505_config)
477   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
478   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
537   MCFG_SOUND_ROUTE(0, "lspeaker", 2.0)
538   MCFG_SOUND_ROUTE(1, "rspeaker", 2.0)
479539MACHINE_CONFIG_END
480540
481541static MACHINE_CONFIG_DERIVED(eps, vfx)
r19130r19131
511571   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
512572   MCFG_SOUND_ADD("ensoniq", ES5505, XTAL_30_4761MHz / 2)
513573   MCFG_SOUND_CONFIG(es5505_config)
514   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
515   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
574   MCFG_SOUND_ROUTE(0, "lspeaker", 2.0)
575   MCFG_SOUND_ROUTE(1, "rspeaker", 2.0)
516576
517577    MCFG_WD1772x_ADD("wd1772", 8000000)
518578   MCFG_FLOPPY_DRIVE_ADD("wd1772:0", ensoniq_floppies, "35dd", 0, esq5505_state::floppy_formats)
r19130r19131
555615    ROM_LOAD16_BYTE( "vfx210b-high.bin", 0x000001, 0x010000, CRC(59853be8) SHA1(8e07f69d53f80885d15f624e0b912aeaf3212ee4) )
556616
557617    ROM_REGION(0x200000, "waverom", ROMREGION_ERASE00)
558    ROM_LOAD( "u14.bin",  0x000000, 0x080000, NO_DUMP ) // type 234000 on the schematic
559    ROM_LOAD( "u15.bin",  0x080000, 0x080000, NO_DUMP )
560    ROM_LOAD( "u16.bin",  0x100000, 0x080000, NO_DUMP )
618    ROM_LOAD16_BYTE( "u14.bin", 0x000001, 0x080000, CRC(85592299) SHA1(1aa7cf612f91972baeba15991d9686ccde01599c) )
619    ROM_LOAD16_BYTE( "u15.bin", 0x100001, 0x080000, CRC(c0055975) SHA1(5a22f1d5e437c6277eb0cfb1ff1b3f8dcdea1cc6) )
561620
562621    ROM_REGION(0x80000, "nibbles", ROMREGION_ERASE00)
622    ROM_LOAD( "u16.bin", 0x000000, 0x080000, CRC(c3ddaf95) SHA1(44a7bd89cd7e82952cc5100479e110c385246559) )
563623ROM_END
564624
565625ROM_START( vfxsd )
r19130r19131
662722DRIVER_INIT_MEMBER(esq5505_state,denib)
663723{
664724    UINT8 *pNibbles = (UINT8 *)machine().root_device().memregion("nibbles")->base();
665    UINT8 *pBS0 = (UINT8 *)machine().root_device().memregion("waverom")->base();
725    UINT8 *pBS0L = (UINT8 *)machine().root_device().memregion("waverom")->base();
726   UINT8 *pBS0H = pBS0L + 0x100000;
666727
667728    DRIVER_INIT_CALL(common);
668729
669730    // create the 12 bit samples by patching in the nibbles from the nibble ROM
670   for (int i = 0; i < 0x80000; i++)
671   {
672        *pBS0 = *pNibbles & 0xf0;
673        pBS0 += 2;
674        *pBS0 = (*pNibbles & 0x0f) << 4;
675        pBS0 += 2;
731   // low nibbles go with the lower ROM, high nibbles with the upper ROM
732    for (int i = 0; i < 0x80000; i++)
733    {
734        *pBS0L = (*pNibbles & 0x0f) << 4;
735        *pBS0H = (*pNibbles & 0xf0);
736        pBS0L += 2;
737        pBS0H += 2;
676738        pNibbles++;
677   }
739    }
678740}
679741
680742CONS( 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)
681CONS( 1989, vfx,   0, 0,   vfx,   vfx, esq5505_state, common, "Ensoniq", "VFX", GAME_NOT_WORKING )       // 2x40 VFD
743CONS( 1989, vfx,   0, 0,   vfx,   vfx, esq5505_state, denib, "Ensoniq", "VFX", GAME_NOT_WORKING )       // 2x40 VFD
682744CONS( 1989, vfxsd, 0, 0,   vfxsd, vfx, esq5505_state, denib,  "Ensoniq", "VFX-SD", GAME_NOT_WORKING )    // 2x40 VFD
683745CONS( 1990, sd1,   0, 0,   vfxsd, vfx, esq5505_state, denib,  "Ensoniq", "SD-1", GAME_NOT_WORKING )      // 2x40 VFD
684746CONS( 1990, sd132, sd1, 0, vfx32, vfx, esq5505_state, denib,  "Ensoniq", "SD-1 32", GAME_NOT_WORKING )   // 2x40 VFD
685747CONS( 1990, sq1,   0, 0,   sq1,   vfx, esq5505_state, sq1,    "Ensoniq", "SQ-1", GAME_NOT_WORKING )      // LCD of some sort
686

Previous 199869 Revisions Next


© 1997-2024 The MAME Team