Previous 15994 Revisions Next

r14747 Sunday 11th March, 2012 at 17:43:03 UTC by Miodrag Milanović
Sync with MAME r15683 (nw)
[src]version.c
[src/emu]device.h save.h
[src/emu/cpu/i386]i386.c
[src/emu/cpu/lr35902]lr35902.c
[src/emu/cpu/m6502]ill02.h
[src/emu/cpu/m68000]m68kcpu.c
[src/emu/cpu/powerpc]ppcdrc.c
[src/emu/imagedev]flopdrv.c flopdrv.h
[src/emu/machine]ins8250.c nscsi_hd.c
[src/emu/sound]k054539.c k054539.h votrax.c votrax.h
[src/emu/video]bufsprite.h
[src/lib]lib.mak
[src/lib/util]cdrom.c
[src/mame]mame.lst
[src/mame/audio]gottlieb.c
[src/mame/drivers]armedf.c bbusters.c bfm_sc1.c bionicc.c blktiger.c boogwing.c cninja.c commando.c crshrace.c darkseal.c dassault.c dec8.c deco32.c gottlieb.c lastduel.c m90.c megatech.c namcops2.c naomi.c neodrvr.c popobear.c pyson.c seibuspi.c taitotz.c tnzs.c undrfire.c
[src/mame/includes]actfancr.h armedf.h bbusters.h bionicc.h exedexes.h galaga.h gng.h gottlieb.h hcastle.h lwings.h m92.h sidearms.h

src/mame/mame.lst
r14746r14747
23562356pwrshovl        // E74 (c) 1999 Taito
23572357landhigh      // E82 (c) 1999 Taito
23582358batlgr2         // E87 (c) 2000 Taito (2.04J)
2359batlgr2a         // E87 (c) 2000 Taito (2.01J)
2359batlgr2a      // E87 (c) 2000 Taito (2.01J)
23602360
23612361// Toaplan games
23622362perfrman      // (c) 1985 Data East Corporation (Japan)
r14746r14747
1190011900sc1barcd
1190111901sc1barcda
1190211902sc1bigmt
11903sc1btclka
11904sc1btclkb
1190311905sc1calyp
1190411906sc1carro
11907sc1cdmp
1190511908sc1cshat
1190611909sc1cshata
1190711910sc1cshatb
r14746r14747
1196411967sc1dream   // Dream Machine (Bellfruit)
1196511968sc1final   // Final Touch (Bellfruit)
1196611969sc1flash   // Flash (Bellfruit)
11970sc1frpusa
1196711971sc1fruit   // Fruit Lines (Bellfruit)
1196811972sc1frtln   // Fruitlines (Bellfruit)
1196911973sc1funh      // Fun House Club (Bellfruit)
r14746r14747
1197511979sc1gprix   // Grand Prix (Bellfruit)
1197611980sc1gslam   // Grand Slam (Bellfruit) (Dutch)
1197711981sc1happy   // Happy Hour (Bellfruit - Elam)
11982sc1hfccp
1197811983sc1impc      // Impact (Bellfruit)
1197911984sc1kings   // Kings Club (Bellfruit)
1198011985sc1linx      // Linx (Bellfruit)
src/mame/audio/gottlieb.c
r14746r14747
44
55    Gottlieb 6502-based sound hardware implementations.
66
7   Dedicated to Warren Davis, Jeff Lee, Tim Skelly & David Thiel
7    Dedicated to Warren Davis, Jeff Lee, Tim Skelly & David Thiel
88
99****************************************************************************
1010
r14746r14747
361361
362362//-------------------------------------------------
363363//  r6532_portb_w - handle writes to the RIOT's
364//   port B
364//  port B
365365//-------------------------------------------------
366366
367367WRITE8_MEMBER( gottlieb_sound_r1_device::r6532_portb_w )
r14746r14747
372372
373373
374374//-------------------------------------------------
375//  votrax_data_w - write data to the Votrax SC-01
375//  votrax_data_w - write data to the Votrax SC-01
376376//  speech chip
377377//-------------------------------------------------
378378
r14746r14747
392392
393393//-------------------------------------------------
394394//  speech_clock_dac_w - modify the clock driving
395//    the Votrax SC-01 speech chip
395// the Votrax SC-01 speech chip
396396//-------------------------------------------------
397397
398398WRITE8_MEMBER( gottlieb_sound_r1_device::speech_clock_dac_w )
r14746r14747
403403      if (data != m_last_speech_clock)
404404      {
405405         mame_printf_debug("clock = %02X\n", data);
406         
406
407407         // totally random guesswork; would like to get real measurements on a board
408408         if (m_votrax != NULL)
409409            m_votrax->set_unscaled_clock(600000 + (data - 0xa0) * 10000);
r14746r14747
415415
416416//-------------------------------------------------
417417//  votrax_request - map the VOTRAX SC-01 request
418//   line to the NMI pin on the sound chip
418//  line to the NMI pin on the sound chip
419419//-------------------------------------------------
420420
421421WRITE_LINE_MEMBER( gottlieb_sound_r1_device::votrax_request )
r14746r14747
483483
484484MACHINE_CONFIG_FRAGMENT( gottlieb_sound_r1_with_votrax )
485485   MCFG_FRAGMENT_ADD(gottlieb_sound_r1)
486   
486
487487   // add the VOTRAX
488488   MCFG_VOTRAX_SC01_ADD("votrax", 720000, gottlieb_votrax_interface)
489489   MCFG_SOUND_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.50)
r14746r14747
552552//**************************************************************************
553553
554554//-------------------------------------------------
555//  gottlieb_sound_r1_with_votrax_device -
556//   constructor
555//  gottlieb_sound_r1_with_votrax_device -
556//  constructor
557557//-------------------------------------------------
558558
559559gottlieb_sound_r1_with_votrax_device::gottlieb_sound_r1_with_votrax_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
r14746r14747
618618
619619//-------------------------------------------------
620620//  static_enable_cobram3_mods - enable changes
621//   for cobram3
621//  for cobram3
622622//-------------------------------------------------
623623
624624void gottlieb_sound_r2_device::static_enable_cobram3_mods(device_t &device)
r14746r14747
652652
653653//-------------------------------------------------
654654//  nmi_timer_adjust - adjust the NMI timer to
655//   fire based on its configured rate
655//  fire based on its configured rate
656656//-------------------------------------------------
657657
658658inline void gottlieb_sound_r2_device::nmi_timer_adjust()
r14746r14747
664664
665665//-------------------------------------------------
666666//  nmi_state_update - update the NMI state based
667//   on the timer firing and the enable control
667//  on the timer firing and the enable control
668668//-------------------------------------------------
669669
670670inline void gottlieb_sound_r2_device::nmi_state_update()
r14746r14747
676676
677677//-------------------------------------------------
678678//  speech_data_r - read the input command latch
679//   from the audio CPU
679//  from the audio CPU
680680//-------------------------------------------------
681681
682682READ8_MEMBER( gottlieb_sound_r2_device::audio_data_r )
r14746r14747
688688
689689//-------------------------------------------------
690690//  speech_data_r - read the input command latch
691//   from the speech CPU
691//  from the speech CPU
692692//-------------------------------------------------
693693
694694READ8_MEMBER( gottlieb_sound_r2_device::speech_data_r )
r14746r14747
700700
701701//-------------------------------------------------
702702//  signal_audio_nmi_w - signal an NMI from the
703//   speech CPU to the audio CPU
703//  speech CPU to the audio CPU
704704//-------------------------------------------------
705705
706706WRITE8_MEMBER( gottlieb_sound_r2_device::signal_audio_nmi_w )
r14746r14747
712712
713713//-------------------------------------------------
714714//  nmi_rate_w - adjust the NMI rate on the speech
715//   CPU
715//  CPU
716716//-------------------------------------------------
717717
718718WRITE8_MEMBER( gottlieb_sound_r2_device::nmi_rate_w )
r14746r14747
723723
724724
725725//-------------------------------------------------
726//  speech_drq_custom_r - return the SP0250
727//   request line as an input port bit
726//  speech_drq_custom_r - return the SP0250
727//  request line as an input port bit
728728//-------------------------------------------------
729729
730730CUSTOM_INPUT_MEMBER( gottlieb_sound_r2_device::speech_drq_custom_r )
r14746r14747
735735
736736//-------------------------------------------------
737737//  dac_w - write to one of the two DACs on the
738//   board
738//  board
739739//-------------------------------------------------
740740
741741WRITE8_MEMBER( gottlieb_sound_r2_device::dac_w )
r14746r14747
748748
749749
750750//-------------------------------------------------
751//  speech_control_w - primary audio control
752//   register on the speech board
751//  speech_control_w - primary audio control
752//  register on the speech board
753753//-------------------------------------------------
754754
755755WRITE8_MEMBER( gottlieb_sound_r2_device::speech_control_w )
r14746r14747
761761   nmi_state_update();
762762
763763   // bit 1 controls a LED on the sound board
764   
764
765765   // bits 2-4 control the AY-8913, but act differently between the
766766   // standard sound board and the modified Cobra Command board
767767   if (!m_cobram3_mod)
r14746r14747
805805
806806//-------------------------------------------------
807807//  psg_latch_w - store an 8-bit value in the PSG
808//   latch register
808//  latch register
809809//-------------------------------------------------
810810
811811WRITE8_MEMBER( gottlieb_sound_r2_device::psg_latch_w )
r14746r14747
815815
816816
817817//-------------------------------------------------
818//  psg_latch_w - store an 8-bit value in the
819//   SP0250 latch register
818//  psg_latch_w - store an 8-bit value in the
819//  SP0250 latch register
820820//-------------------------------------------------
821821
822822WRITE8_MEMBER( gottlieb_sound_r2_device::sp0250_latch_w )
r14746r14747
935935
936936   // reset the DACs
937937   m_dac_data[0] = m_dac_data[1] = 0xff;
938   
938
939939   // disable the non-speech CPU for cobram3
940940   if (m_cobram3_mod)
941941      m_audiocpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
r14746r14747
967967         // adjust the NMI timer for the next time
968968         nmi_timer_adjust();
969969         break;
970     
970
971971      case TID_NMI_CLEAR:
972972         // update state
973973         m_nmi_state = 0;
974974         nmi_state_update();
975975         break;
976     
976
977977      case TID_SOUND_LATCH_WRITE:
978978         // each CPU has its own latch
979979         m_audiocpu_latch = param;
src/mame/includes/hcastle.h
r14746r14747
3232   device_t *m_audiocpu;
3333   device_t *m_k007121_1;
3434   device_t *m_k007121_2;
35   
35
3636   required_device<buffered_spriteram8_device> m_spriteram;
3737   required_device<buffered_spriteram8_device> m_spriteram2;
3838};
src/mame/includes/exedexes.h
r14746r14747
2828   int            m_objon;
2929   int            m_sc1on;
3030   int            m_sc2on;
31   
31
3232   required_device<buffered_spriteram8_device> m_spriteram;
3333};
3434
src/mame/includes/lwings.h
r14746r14747
2929   UINT8    m_soundstate;
3030   UINT8    m_adpcm;
3131   UINT8    m_nmi_mask;
32   
32
3333   required_device<buffered_spriteram8_device> m_spriteram;
3434};
3535
src/mame/includes/armedf.h
r14746r14747
2929   int      m_sprite_offy;
3030   int      m_old_mcu_mode;
3131   int      m_waiting_msb;
32   
32
3333   required_device<buffered_spriteram16_device> m_spriteram;
3434};
3535
src/mame/includes/actfancr.h
r14746r14747
1515   UINT16 m_spriteram16[0x800/2]; // a 16-bit copy of spriteram for use with the MXC06 code
1616
1717   /* video-related */
18   int                  m_flipscreen;
18   int               m_flipscreen;
1919
2020   /* misc */
2121   int            m_trio_control_select;
src/mame/includes/bbusters.h
r14746r14747
2525   UINT16 *m_pf2_data;
2626   UINT16 *m_pf1_scroll_data;
2727   UINT16 *m_pf2_scroll_data;
28   
28
2929   required_device<buffered_spriteram16_device> m_spriteram;
3030   optional_device<buffered_spriteram16_device> m_spriteram2;
3131};
src/mame/includes/bionicc.h
r14746r14747
2727
2828   UINT16    m_inp[3];
2929   UINT16    m_soundcommand;
30   
30
3131   required_device<buffered_spriteram16_device> m_spriteram;
3232};
3333
src/mame/includes/gng.h
r14746r14747
2424   tilemap_t    *m_fg_tilemap;
2525   UINT8      m_scrollx[2];
2626   UINT8      m_scrolly[2];
27   
27
2828   required_device<buffered_spriteram8_device> m_spriteram;
2929};
3030
src/mame/includes/galaga.h
r14746r14747
6565
6666   UINT8 *m_bosco_radarx;
6767   UINT8 *m_bosco_radary;
68   
68
6969   UINT8 *m_spriteram;
7070   UINT8 *m_spriteram2;
7171   UINT32 m_spriteram_size;
src/mame/includes/sidearms.h
r14746r14747
2727   UINT32 m_hcount_191;
2828   UINT32 m_vcount_191;
2929   UINT32 m_latch_374;
30   
30
3131   required_device<buffered_spriteram8_device> m_spriteram;
3232};
3333
src/mame/includes/gottlieb.h
r14746r14747
6262// ======================> gottlieb_sound_r1_device
6363
6464// rev 1 sound board, with unpopulated VOTRAX
65class gottlieb_sound_r1_device :    public device_t,
65class gottlieb_sound_r1_device :   public device_t,
6666                           public device_mixer_interface
6767{
6868public:
r14746r14747
7272
7373   // read/write
7474   DECLARE_WRITE8_MEMBER( write );
75   
75
7676   // internal communications
7777   DECLARE_WRITE_LINE_MEMBER( snd_interrupt );
7878   DECLARE_WRITE8_MEMBER( r6532_portb_w );
r14746r14747
8888
8989private:
9090   // devices
91   required_device<m6502_device>       m_audiocpu;
92   required_device<riot6532_device>    m_riot;
91   required_device<m6502_device>      m_audiocpu;
92   required_device<riot6532_device>   m_riot;
9393   required_device<dac_device>       m_dac;
9494   optional_device<votrax_sc01_device>   m_votrax;
9595
9696   // internal state
9797   bool         m_populate_votrax;
98   UINT8          m_last_speech_clock;
98   UINT8         m_last_speech_clock;
9999
100100#if USE_FAKE_VOTRAX
101101protected:
r14746r14747
128128// ======================> gottlieb_sound_r2_device
129129
130130// fully populated rev 2 sound board
131class gottlieb_sound_r2_device :    public device_t,
131class gottlieb_sound_r2_device :   public device_t,
132132                           public device_mixer_interface
133133{
134134public:
r14746r14747
140140
141141   // read/write
142142   DECLARE_WRITE8_MEMBER( write );
143   
143
144144   // internal communications
145145   DECLARE_READ8_MEMBER( speech_data_r );
146146   DECLARE_READ8_MEMBER( audio_data_r );
r14746r14747
171171      TID_NMI_CLEAR,
172172      TID_SOUND_LATCH_WRITE
173173   };
174   
174
175175   // devices
176   required_device<m6502_device>    m_audiocpu;
177   required_device<m6502_device>    m_speechcpu;
176   required_device<m6502_device>   m_audiocpu;
177   required_device<m6502_device>   m_speechcpu;
178178   required_device<dac_device>    m_dac;
179   required_device<ay8913_device>    m_ay1;
180   required_device<ay8913_device>    m_ay2;
181   optional_device<sp0250_device>    m_sp0250;
179   required_device<ay8913_device>   m_ay1;
180   required_device<ay8913_device>   m_ay2;
181   optional_device<sp0250_device>   m_sp0250;
182182
183183   // internal state
184184   bool      m_cobram3_mod;
185185   emu_timer *   m_nmi_timer;
186   UINT8       m_nmi_rate;
187   UINT8       m_nmi_state;
186   UINT8      m_nmi_rate;
187   UINT8      m_nmi_state;
188188   UINT8      m_audiocpu_latch;
189189   UINT8      m_speechcpu_latch;
190   UINT8       m_speech_control;
191   UINT8       m_last_command;
192   UINT8       m_dac_data[2];
190   UINT8      m_speech_control;
191   UINT8      m_last_command;
192   UINT8      m_dac_data[2];
193193   UINT8      m_psg_latch;
194   UINT8       m_psg_data_latch;
194   UINT8      m_psg_data_latch;
195195   UINT8      m_sp0250_latch;
196196};
197197
src/mame/includes/m92.h
r14746r14747
3333   UINT16 m_pf_master_control[4];
3434   INT32 m_sprite_list;
3535   UINT8 m_palette_bank;
36   
36
3737   required_device<buffered_spriteram16_device> m_spriteram;
3838};
3939
src/mame/drivers/blktiger.c
r14746r14747
349349   MCFG_PALETTE_LENGTH(1024)
350350
351351   MCFG_VIDEO_START(blktiger)
352   
352
353353   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
354354
355355   /* sound hardware */
src/mame/drivers/bfm_sc1.c
r14746r14747
14021402   ROM_REGION( 0x10000, "maincpu", 0 )
14031403   ROM_LOAD( "cash_attraction_b", 0x0000, 0x8000, CRC(79870574) SHA1(89e5db89064a9e24bc37389d78f4defb7d2f479b) )
14041404   ROM_LOAD( "cash_attraction_a", 0x8000, 0x8000, CRC(fab3283c) SHA1(669b425687faad0ebf88c1aaaafa40c446fa2e24) )
1405   
1405
14061406   ROM_REGION( 0x10000, "altrevs", 0 )
14071407   ROM_LOAD( "957172.40 b std var%.bin", 0x0000, 0x008000, CRC(5e4381f9) SHA1(ae6d64c42ae7ddc2ed0ab5c3b56222090004d88a) )
14081408   ROM_LOAD( "957182.20 var% proto a.bin", 0x0000, 0x008000, CRC(3a2dd72d) SHA1(29d962702095aa0f252210da68a89c557fa9db69) )
r14746r14747
14661466   ROM_REGION( 0x10000, "maincpu", 0 )
14671467   ROM_LOAD( "cashxpl2.bin", 0x0000, 0x8000, CRC(0199136c) SHA1(bed1df64ecc0d7ef951a59717e219e6fe7ebf99c) )
14681468   ROM_LOAD( "cashxpl1.bin", 0x8000, 0x8000, CRC(0fe62ead) SHA1(bd56a216292e9bf2b7753616a6cd25b37e22095f) )
1469   
1469
14701470   ROM_REGION( 0x10000, "altrevs", 0 ) // i think some of this is on different hw (SC2?)
14711471   ROM_LOAD( "cash_explosion_dat_ac_8_10pnd_20p_a.bin", 0x0000, 0x010000, CRC(1d155799) SHA1(4e76328a4d093d1f9c64c633c3558db2dce4e219) )
14721472   ROM_LOAD( "cash_explosion_dat_ac_var_8pnd_a.bin", 0x0000, 0x010000, CRC(4aa53121) SHA1(cf0510e224de62b837915d39c2fe3559cfe8c85f) )
r14746r14747
15041504   ROM_REGION( 0x10000, "maincpu", 0 )
15051505   ROM_LOAD( "95717206b std.bin", 0x0000, 0x8000, CRC(2478530f) SHA1(be82a4e36a3c076b9e94fa2364904ca463b6b4ed) )
15061506   ROM_LOAD( "95717205a std.bin", 0x8000, 0x8000, CRC(795bbeea) SHA1(22e0fc9bc3c70e05e51cb98837a9c706eb2ca080) )
1507   
1507
15081508   ROM_REGION( 0x10000, "altrevs", 0 )//these seem to be halves without a partner, do these share the same b ROM?
15091509   ROM_LOAD( "95718205a std ptel.bin", 0x0000, 0x008000, CRC(c88f476c) SHA1(a5d8f12ade77bdb100ece5f2eecec35ae09f3b0e) )
15101510   ROM_LOAD( "95718210a proto var.bin", 0x0000, 0x008000, CRC(0997c4e9) SHA1(1013a12803796d3926cceeb671c7c07cc66d418e) )
r14746r14747
15711571   ROM_REGION( 0x10000, "maincpu", 0 )
15721572   ROM_LOAD( "club-china-town_std_ac_150pnd_lfj_bss.bin", 0x0000, 0x8000, CRC(d41c6999) SHA1(cc2eb2e74ca3bfa78d74dd08f83acb2fe650e13d) )
15731573   ROM_LOAD( "club-china-town_std_ac_150pnd_lfj_ass.bin", 0x8000, 0x8000, CRC(8c3e69f1) SHA1(cb0cbf7a6039549b969160a162a0cd5511b24cd3) )
1574   
1574
15751575   sc1_china_sound
15761576ROM_END
15771577
r14746r14747
16791679   ROM_REGION( 0x10000, "maincpu", 0 )
16801680   ROM_LOAD( "club-six-five-special_std_ac_rot_10po_bss.bin", 0x0000, 0x8000, CRC(3371dc55) SHA1(52d75a90933acc7a03821e5c2821df6126c72a6c) )
16811681   ROM_LOAD( "club-six-five-special_std_ac_rot_10po_ass.bin", 0x8000, 0x8000, CRC(cf48ba99) SHA1(5da4321ff349964e903f1bebd3e5ddd0799fc478) )
1682   
1682
16831683   sc1_cl65_sound_alt
16841684ROM_END
16851685
r14746r14747
16871687   ROM_REGION( 0x10000, "maincpu", 0 )
16881688   ROM_LOAD( "club-six-five-special_std_ac_rot_10po_bss.bin", 0x0000, 0x8000, CRC(3371dc55) SHA1(52d75a90933acc7a03821e5c2821df6126c72a6c) )
16891689   ROM_LOAD( "club-six-five-special_dat_ac_rot_10po_ass.bin", 0x8000, 0x8000, CRC(77ddf81d) SHA1(522d9f84ab6e31586f371548e2f146ac193f06f5) )
1690   
1690
16911691   sc1_cl65_sound_alt
16921692ROM_END
16931693
r14746r14747
17521752   ROM_REGION( 0x10000, "maincpu", 0 )
17531753   ROM_LOAD( "temptp2", 0x0000, 0x8000, CRC(d165fa87) SHA1(aef8a4af8b6e83ef09dffc8aca305eaf7dd3936b) )
17541754   ROM_LOAD( "temptp1", 0x8000, 0x8000, CRC(6f03648d) SHA1(a6402c94ebf4d570d1d3fb462eb621566c27f307) )
1755   
1755
17561756   ROM_REGION( 0x40000, "upd", 0 )
17571757   ROM_LOAD( "tempsnd1.bin", 0x00000, 0x10000, CRC(168e2a18) SHA1(db97acf9131b1a54efe1cd375aecae1679bab19e) )
17581758   ROM_LOAD( "tempsnd2.bin", 0x00000, 0x10000, CRC(b717f347) SHA1(189c82318d622f18580a23eed48b17c0c34dedd5) )
r14746r14747
18591859   ROM_REGION( 0x10000, "maincpu", 0 )
18601860   ROM_LOAD( "doublechancegame2.bin", 0x0000, 0x008000, CRC(d4f49454) SHA1(53b97f941a4abfeb3e498b4295f98e80bd182b7e) )
18611861   ROM_LOAD( "doublechancegame1.bin", 0x8000, 0x008000, CRC(9e24e0e3) SHA1(fff1fe9219c052750709d13c06148c7926a22910) )
1862   
1862
18631863   ROM_REGION( 0x40000, "altrevs", 0 )//orphans?
18641864   ROM_LOAD( "95717787 10p20p.bin", 0x0000, 0x008000, CRC(69ba126c) SHA1(f59aa5a632d0bc5102c206f986f86b6c7c1352fb) )
18651865   ROM_LOAD( "95717789 10p.bin", 0x0000, 0x008000, CRC(fc338d38) SHA1(65457f2611ffa22ac35f1e7ad10c290c01b9c3ac) )
r14746r14747
24092409   sc1_winst_sound
24102410ROM_END
24112411
2412   
2412
24132413ROM_START( sc1winstp )
24142414   ROM_REGION( 0x10000, "maincpu", 0 )
24152415   ROM_LOAD( "95717110 var% b.bin", 0x0000, 0x8000, CRC(1c2ebd26) SHA1(462baa4df7c01d101798df1d90bb5719cdc9647e) )
r14746r14747
26012601   ROM_REGION( 0x10000, "maincpu", 0 )
26022602   ROM_LOAD( "dsnl1-6.p2", 0x0000, 0x8000, CRC(0eb10c01) SHA1(16456ec1e32bfbd873bdebd6a760041bc9cd8648) )
26032603   ROM_LOAD( "dsnl1-6.p1", 0x8000, 0x8000, CRC(174c4432) SHA1(82519ede8220d3d717ee0ebe57374357afe38949) )
2604   
2604
26052605   sc1_driv_sound
26062606ROM_END
2607   
2607
26082608ROM_START( sc1vsd )
26092609   ROM_REGION( 0x10000, "maincpu", 0 )
26102610   ROM_LOAD( "supd1-4n.p1", 0x8000, 0x8000, CRC(ad581f7d) SHA1(99b9bf1016cd52467f5c9f6e427305e81033e82f) )
r14746r14747
27332733   ROM_LOAD( "bc6-4_0b.bin", 0x0000, 0x8000, CRC(106265c8) SHA1(6465f7e868c5b04776fee69295a52197abb45ad0) )
27342734   ROM_LOAD( "bc6-4_0a.bin", 0x8000, 0x8000, CRC(750645e7) SHA1(65eee2a00a1914bb8dc989b131eaa39d2881105d) )
27352735
2736//   ROM_REGION( 0x80000, "altrevs", 0 )
2736//  ROM_REGION( 0x80000, "altrevs", 0 )
27372737
27382738   ROM_REGION( 0x200000, "upd", ROMREGION_ERASE00 )
27392739ROM_END
src/mame/drivers/deco32.c
r14746r14747
19651965   MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
19661966   MCFG_SCREEN_UPDATE_STATIC(dragngun)
19671967   MCFG_SCREEN_VBLANK_STATIC(dragngun)
1968   
1968
19691969   MCFG_BUFFERED_SPRITERAM32_ADD("spriteram")
19701970
19711971   MCFG_DECO16IC_ADD("tilegen1", dragngun_deco16ic_tilegen1_intf)
r14746r14747
20382038   MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
20392039   MCFG_SCREEN_UPDATE_STATIC(dragngun)
20402040   MCFG_SCREEN_VBLANK_STATIC(dragngun)
2041   
2041
20422042   MCFG_BUFFERED_SPRITERAM32_ADD("spriteram")
20432043
20442044   MCFG_DECO16IC_ADD("tilegen1", lockload_deco16ic_tilegen1_intf)
src/mame/drivers/namcops2.c
r14746r14747
208208    SYSTEM246_BIOS
209209
210210    ROM_REGION(0x840000, "key", ROMREGION_ERASE00)
211    ROM_LOAD( "sc31002-na-a.ic002", 0x000000, 0x840000, CRC(2ebf91ff) SHA1(01e628344b2cde2edbda9ffea53af6a63e3bddf1) )
211    ROM_LOAD( "sc31002-na-a.ic002", 0x000000, 0x840000, CRC(2ebf91ff) SHA1(01e628344b2cde2edbda9ffea53af6a63e3bddf1) )
212212
213213    DISK_REGION("dvd")
214214    DISK_IMAGE_READONLY( "sc31001-na-dvd0-b", 0, SHA1(b46ee35083f8fcc091ce562951c55fbdbb929e4b) )
r14746r14747
291291   SYSTEM246_BIOS
292292
293293   ROM_REGION(0x840000, "key", ROMREGION_ERASE00)
294    ROM_LOAD( "tef1verc.ic002", 0x000000, 0x840000, CRC(92697a2b) SHA1(e9ec254d52187f5be0d9be58b25821c1e63bba8e) )
294    ROM_LOAD( "tef1verc.ic002", 0x000000, 0x840000, CRC(92697a2b) SHA1(e9ec254d52187f5be0d9be58b25821c1e63bba8e) )
295295
296296   DISK_REGION("dvd")
297297   DISK_IMAGE_READONLY( "tef1dvd0", 0, SHA1(f39aa37156245f622a6e19e8a0e081418e247b36) )
src/mame/drivers/darkseal.c
r14746r14747
279279
280280   MCFG_GFXDECODE(darkseal)
281281   MCFG_PALETTE_LENGTH(2048)
282   
282
283283   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
284284
285285   MCFG_DECO16IC_ADD("tilegen1", darkseal_deco16ic_tilegen1_intf)
src/mame/drivers/bionicc.c
r14746r14747
387387   MCFG_PALETTE_LENGTH(1024)
388388
389389   MCFG_VIDEO_START(bionicc)
390   
390
391391   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
392392
393393   MCFG_SPEAKER_STANDARD_MONO("mono")
src/mame/drivers/lastduel.c
r14746r14747
521521   MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
522522   MCFG_SCREEN_UPDATE_STATIC(lastduel)
523523   MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
524   
524
525525   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
526526
527527   MCFG_GFXDECODE(lastduel)
src/mame/drivers/commando.c
r14746r14747
272272
273273   MCFG_PALETTE_INIT(RRRR_GGGG_BBBB)
274274   MCFG_VIDEO_START(commando)
275   
275
276276   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
277277
278278   /* sound hardware */
src/mame/drivers/naomi.c
r14746r14747
55245524    NAOMI_DEFAULT_EEPROM
55255525
55265526    ROM_REGION( 0x10000000, "rom_board", ROMREGION_ERASEFF)
5527    ROM_LOAD( "maz1fl1.2d",  0x0000000, 0x0800000, CRC(620cdbb6) SHA1(95e9d0858e1d3060b3c1c41adfff0539185fb03d) )
5527    ROM_LOAD( "maz1fl1.2d",  0x0000000, 0x0800000, CRC(620cdbb6) SHA1(95e9d0858e1d3060b3c1c41adfff0539185fb03d) )
55285528   ROM_RELOAD( 0x800000, 0x800000 )
5529    ROM_LOAD( "maz1ma1.4m",  0x1000000, 0x1000000, CRC(68e12189) SHA1(5a434bd0305189620a62c785c5ac2812dae033d6) )
5530    ROM_LOAD( "maz1ma2.4l",  0x2000000, 0x1000000, CRC(c7a05b44) SHA1(dfbeb3be5adfdf3d4f1d330f3654a5532eb28cc2) )
5531    ROM_LOAD( "maz1ma3.4k",  0x3000000, 0x1000000, CRC(48e1a8a5) SHA1(8b0d83c02ab576d90c95aad297c7447326154c0e) )
5532    ROM_LOAD( "maz1ma4.4j",  0x4000000, 0x1000000, CRC(0187cdab) SHA1(aaa9fd208103426eb0eee58ae0a64a191abcd126) )
5533    ROM_LOAD( "maz1ma5.4h",  0x5000000, 0x1000000, CRC(c6885ee7) SHA1(14e7e017438adcbe0136d7d863af95fe65bd15d8) )
5534    ROM_LOAD( "maz1ma6.4f",  0x6000000, 0x1000000, CRC(a6593c36) SHA1(627bf19d960037ea92b673b786a9da7208acd447) )
5535    ROM_LOAD( "maz1ma7.4e",  0x7000000, 0x1000000, CRC(6103ad9c) SHA1(e4abbb5867cae6a9bf9067ab3a091ef7b18fa0cd) )
5536    ROM_LOAD( "maz1ma8.4d",  0x8000000, 0x1000000, CRC(d46c9f40) SHA1(45eec7fa3d4261f12438e841254fa75d572331b3) )
5529    ROM_LOAD( "maz1ma1.4m",  0x1000000, 0x1000000, CRC(68e12189) SHA1(5a434bd0305189620a62c785c5ac2812dae033d6) )
5530    ROM_LOAD( "maz1ma2.4l",  0x2000000, 0x1000000, CRC(c7a05b44) SHA1(dfbeb3be5adfdf3d4f1d330f3654a5532eb28cc2) )
5531    ROM_LOAD( "maz1ma3.4k",  0x3000000, 0x1000000, CRC(48e1a8a5) SHA1(8b0d83c02ab576d90c95aad297c7447326154c0e) )
5532    ROM_LOAD( "maz1ma4.4j",  0x4000000, 0x1000000, CRC(0187cdab) SHA1(aaa9fd208103426eb0eee58ae0a64a191abcd126) )
5533    ROM_LOAD( "maz1ma5.4h",  0x5000000, 0x1000000, CRC(c6885ee7) SHA1(14e7e017438adcbe0136d7d863af95fe65bd15d8) )
5534    ROM_LOAD( "maz1ma6.4f",  0x6000000, 0x1000000, CRC(a6593c36) SHA1(627bf19d960037ea92b673b786a9da7208acd447) )
5535    ROM_LOAD( "maz1ma7.4e",  0x7000000, 0x1000000, CRC(6103ad9c) SHA1(e4abbb5867cae6a9bf9067ab3a091ef7b18fa0cd) )
5536    ROM_LOAD( "maz1ma8.4d",  0x8000000, 0x1000000, CRC(d46c9f40) SHA1(45eec7fa3d4261f12438e841254fa75d572331b3) )
55375537
55385538    ROM_REGION( 4, "rom_key", 0 )
5539    ROM_LOAD( "maz1-key.bin", 0x000000, 0x000004, CRC(79ebd41a) SHA1(3545dacdeac66b46e8706565f0eca784291040d1) )
5539    ROM_LOAD( "maz1-key.bin", 0x000000, 0x000004, CRC(79ebd41a) SHA1(3545dacdeac66b46e8706565f0eca784291040d1) )
55405540ROM_END
55415541
55425542ROM_START( vtenis2c )
r14746r14747
79077907/* 25349801 */ GAME( 2000, toukon4,  naomi, naomim2, naomi,    naomi,    ROT0, "Capcom / Namco", "Shin Nihon Pro Wrestling Toukon Retsuden 4 Arcade Edition (TRF1 Ver. A)", GAME_UNEMULATED_PROTECTION|GAME_FLAGS )
79087908// 25469801 Ninja Assault
79097909/* 25709801 */ GAME( 2001, gunsur2,  naomi, naomi,   naomi,    naomi,    ROT0, "Capcom / Namco", "Gun Survivor 2 Biohazard Code: Veronica (BHF1 Ver. A)", GAME_UNEMULATED_PROTECTION|GAME_FLAGS )
7910/* 25869812 */ GAME( 2002, mazan,    naomi, naomim2, naomi,    naomi,    ROT0, "Capcom / Namco", "Mazan: Flash of the Blade (MAZ1 Ver. A)", GAME_UNEMULATED_PROTECTION|GAME_FLAGS )
7910/* 25869812 */ GAME( 2002, mazan,    naomi, naomim2, naomi,    naomi,    ROT0, "Capcom / Namco", "Mazan: Flash of the Blade (MAZ1 Ver. A)", GAME_UNEMULATED_PROTECTION|GAME_FLAGS )
79117911
79127912/* GDS-xxxx (Sega GD-ROM games) */
79137913/* 0001  */ GAME( 2000, confmiss,  naomigd,  naomigd, hotd2,    naomigd,    ROT0, "Sega", "Confidential Mission (GDS-0001)", GAME_FLAGS )
src/mame/drivers/megatech.c
r14746r14747
314314static WRITE8_HANDLER( bios_ctrl_w )
315315{
316316   mtech_state *state = space->machine().driver_data<mtech_state>();
317   
317
318318   if (offset == 1)
319319   {
320320      output_set_value("Alarm_sound", data>>7 & 0x01);
r14746r14747
324324   {
325325      output_set_value("Flash_screen", data>>1 & 0x01);
326326   }
327   
327
328328   state->m_bios_ctrl[offset] = data;
329329}
330330
src/mame/drivers/cninja.c
r14746r14747
932932
933933   MCFG_GFXDECODE(cninja)
934934   MCFG_PALETTE_LENGTH(2048)
935   
935
936936   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
937937
938938   MCFG_DECOCOMN_ADD("deco_common", cninja_decocomn_intf)
src/mame/drivers/dassault.c
r14746r14747
593593
594594   MCFG_GFXDECODE(dassault)
595595   MCFG_PALETTE_LENGTH(4096)
596   
596
597597   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
598598   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2")
599599
src/mame/drivers/pyson.c
r14746r14747
33Konami Pyson Hardware Overview
44Konami 2001-2005
55 
6This system uses a standard GH-006 PS2 main board (the older Playstation 2 square type) with a 
7Sony-supplied PS2 power supply which bolts onto the top of the main board. This power supply 
8has a single 12 volt power input and creates all of the voltages for the PS2. The same 12 volt input 
9extends via a splitter to the Konami interface PCB into CN3. The PS2 main board is connected to the 
10custom Konami interface PCB via the PS2 main board AV connector and the IEEE 1394 'i.LINK' connector. 
6This system uses a standard GH-006 PS2 main board (the older Playstation 2 square type) with a
7Sony-supplied PS2 power supply which bolts onto the top of the main board. This power supply
8has a single 12 volt power input and creates all of the voltages for the PS2. The same 12 volt input
9extends via a splitter to the Konami interface PCB into CN3. The PS2 main board is connected to the
10custom Konami interface PCB via the PS2 main board AV connector and the IEEE 1394 'i.LINK' connector.
1111A security dongle with no label on the top which looks like a PS2 memory card is plugged into the left
1212PS2 memory card slot. This card is identical to the dongles used in Namco System 246/256. Note that the
13two games dumped so far have the same label on the security dongle (KN00002) but the ROM inside is not 
14identical. So far all the Konami game software resides on a 128M CF card. However there are probably 
13two games dumped so far have the same label on the security dongle (KN00002) but the ROM inside is not
14identical. So far all the Konami game software resides on a 128M CF card. However there are probably
1515HDD/CDROM/DVDROM-based games too since the Konami interface board has connectors for IDE drives.
1616 
1717Games known to run on this system include....                      DIN5
18                                                       CF Card     Dongle                 PS2 Cart   
18                                                       CF Card     Dongle                 PS2 Cart
1919Game Title                                             Label       Label                  Label (bottom)
2020---------------------------------------------------------------------------------------------------------
2121*Baseball Heroes 2005
r14746r14747
3030*Paintball Mania
3131*Perfect Pool
3232*Pool Pocket Fortunes
33*R.P.M. Red
33*R.P.M. Red
3434World Soccer Winning Eleven Arcade Game Style          C18JAA03    DIN5 dongle GCC27JA    KN00002
3535World Soccer Winning Eleven Arcade Game Style 2003     C27JAA03    not used               KN00002
3636---------------------------------------------------------------------------------------------------------
3737 
38* denotes not dumped. If you can help with the remaining undumped games
38* denotes not dumped. If you can help with the remaining undumped games
3939please contact us via http://mamedev.org or http://guru.mameworld.info
4040 
4141 
r14746r14747
9090      TMPR3927   - Toshiba TMPR3927 32-bit R3000A-based RISC micro-controller (QFP240)
9191      48LC2M32B2 - Micron 48LC2M32B2 512k x32-bit x4-banks (64MBit) SDRAM (TSOP86)
9292      XC9536     - Xilinx XC9536XL CPLD stamped 'QB22A1' (PLCC44)
93      B22A01.U42 - Fujitsu MBM29F400 512k x8-bit flash ROM stamped 'B22A01' (TSOP48). This is probably
93      B22A01.U42 - Fujitsu MBM29F400 512k x8-bit flash ROM stamped 'B22A01' (TSOP48). This is probably
9494                   the common-to-all-games Pyson BIOS for the TMPR3927
9595      XCS10XL    - Xilinx Spartan XCS10XL FPGA (TQFP144)
9696      M48T58Y    - ST Microelectronics M48T58Y 8k Timekeeper/NVRAM (DIP28). As well as being used for protection
97                   with the Konami game code/year etc (the usual first 16 bytes) it also seems to contain code 
98                   or other data in some of the games, meaning it's not possible to hand-create the NVRAMs. 
97                   with the Konami game code/year etc (the usual first 16 bytes) it also seems to contain code
98                   or other data in some of the games, meaning it's not possible to hand-create the NVRAMs.
9999                   The same 'extended usage' of this chip is also present on Konami Viper PCBs.
100100      DS2430     - Dallas DS2430 256-bit EEPROM and silicon serial number (3 pin TO-92 package)
101101      CN2        - RJ45 network connector
r14746r14747
107107      CN15       - 28 way edge connector which connects to the filter board along with the JAMMA edge connector
108108      CN16       - 40 pin standard IDE connector (for CDROM/DVDROM or 3.5" IDE HDD)
109109      CN17       - 44 pin standard IDE connector (for 2.5" IDE HDD)
110      CN19       - DIN5 connector for plug-in security module. The module contains a Dallas DS2430 which
110      CN19       - DIN5 connector for plug-in security module. The module contains a Dallas DS2430 which
111111                   effectively replaces the common-to-most-games one on the main board (same a Viper h/w)
112112      CN20       - 4 pin connector
113113      CN21       - Standard Compact Flash card slot
114114      SW4        - 4 position DIP switch
115                   
116       
115 
116 
117117Filter Board
118118------------
119119 
r14746r14747
133133|-------------------------------------------------------------------------|
134134Notes:
135135      CN4      - 8-pin mini-DIN connector
136      CN5/7    - 15-pin VGA connectors
136      CN5/7    - 15-pin VGA connectors
137137      CN14     - Standard USB connector. This connects to a standard JVS I/O board. It was tested with
138138                 a common Sega JVS I/O and works fine however Konami probably have their own JVS I/O board
139139                 for use with this system
src/mame/drivers/taitotz.c
r14746r14747
520520   TAITOTZ_BIOS
521521
522522   ROM_REGION( 0x40000, "io_cpu", 0 )
523    ROM_LOAD16_BYTE( "e74-04.ic14",   0x000000, 0x020000, CRC(ef21a261) SHA1(7398826dbf48014b9c7e9454f978f3e419ebc64b) )
524    ROM_LOAD16_BYTE( "e74-05.ic15",   0x000001, 0x020000, CRC(2466217d) SHA1(dc814da3a1679cff001f179d3c1641af985a6490) )
523    ROM_LOAD16_BYTE( "e74-04.ic14",   0x000000, 0x020000, CRC(ef21a261) SHA1(7398826dbf48014b9c7e9454f978f3e419ebc64b) )
524    ROM_LOAD16_BYTE( "e74-05.ic15",   0x000001, 0x020000, CRC(2466217d) SHA1(dc814da3a1679cff001f179d3c1641af985a6490) )
525525
526526   ROM_REGION( 0x10000, "sound_cpu", 0 ) /* Internal ROM :( */
527527   ROM_LOAD( "e68-01.ic7", 0x000000, 0x010000, NO_DUMP )
src/mame/drivers/m90.c
r14746r14747
950950
951951ROM_START( dynablstb2 )
952952   ROM_REGION( CODE_SIZE, "maincpu", 0 )
953    ROM_LOAD16_BYTE( "2.bin", 0x000001, 0x020000, CRC(9c3e996a) SHA1(9244f6a8b498d0f488bbfc68465916ea0560f3be) )
954    ROM_LOAD16_BYTE( "3.bin", 0x000000, 0x020000, CRC(697a2ed9) SHA1(d329987f7a0321414347b8e6a6dfc4304fbe4987) )
953    ROM_LOAD16_BYTE( "2.bin", 0x000001, 0x020000, CRC(9c3e996a) SHA1(9244f6a8b498d0f488bbfc68465916ea0560f3be) )
954    ROM_LOAD16_BYTE( "3.bin", 0x000000, 0x020000, CRC(697a2ed9) SHA1(d329987f7a0321414347b8e6a6dfc4304fbe4987) )
955955    ROM_COPY( "maincpu", 0x3fff0,  0xffff0, 0x10 )   /* start vector */
956956
957957   ROM_REGION( 0x10000, "soundcpu", 0 )
src/mame/drivers/boogwing.c
r14746r14747
361361   MCFG_GFXDECODE(boogwing)
362362
363363   MCFG_VIDEO_START(boogwing)
364   
364
365365   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
366366   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2")
367367
src/mame/drivers/neodrvr.c
r14746r14747
427427    -- SNKPLAYMORE --
428428    . NEO-MVS CHAFIO (2003.7.24) - used only with NEO-CMC 90G06C7050
429429
430   -- SNK development boards --
431   . NEO-MVS CHAMC2
430    -- SNK development boards --
431    . NEO-MVS CHAMC2
432432
433433    MVS PROG:
434434    -- SNK --
r14746r14747
463463    . NEO-MVS PROGBK3S (2003.10.1)
464464    . NEO-MVS PROGBK2S (2003.10.18)
465465
466   -- SNK development boards --
467   . NEO-MVS PROGMC2
466    -- SNK development boards --
467    . NEO-MVS PROGMC2
468468
469469
470470    AES CHA:
src/mame/drivers/gottlieb.c
r14746r14747
692692 *  Main CPU memory handlers
693693 *
694694 *************************************/
695
695
696696static WRITE8_HANDLER( gottlieb_sh_w )
697697{
698698   gottlieb_state *state = space->machine().driver_data<gottlieb_state>();
r14746r14747
24852485
24862486/* games using rev 1 sound board */
24872487GAME( 1982, reactor,   0,        reactor,         reactor,  ramtiles, ROT0,   "Gottlieb", "Reactor", GAME_IMPERFECT_SOUND )
2488GAME( 1982, qbert,     0,        qbert,          qbert,    romtiles, ROT270, "Gottlieb", "Q*bert (US set 1)", GAME_IMPERFECT_SOUND )
2488GAME( 1982, qbert,     0,        qbert,          qbert,    romtiles, ROT270, "Gottlieb", "Q*bert (US set 1)", GAME_IMPERFECT_SOUND )
24892489GAME( 1982, qberta,    qbert,    qbert,          qbert,    romtiles, ROT270, "Gottlieb", "Q*bert (US set 2)", GAME_IMPERFECT_SOUND )
2490GAME( 1982, qbertj,    qbert,    qbert,           qbert,    romtiles, ROT270, "Gottlieb (Konami license)", "Q*bert (Japan)", GAME_IMPERFECT_SOUND )
2491GAME( 1982, myqbert,   qbert,    qbert,           qbert,    romtiles, ROT270, "Gottlieb", "Mello Yello Q*bert", GAME_IMPERFECT_SOUND )
2492GAME( 1982, qberttst,  qbert,    qbert,           qbert,    romtiles, ROT270, "Gottlieb", "Q*bert (early test version)", GAME_IMPERFECT_SOUND )
2493GAME( 1982, qbtrktst,  qbert,    qbert,           qbert,    romtiles, ROT270, "Gottlieb", "Q*bert Board Input Test Rom", GAME_IMPERFECT_SOUND )
2490GAME( 1982, qbertj,    qbert,    qbert,          qbert,    romtiles, ROT270, "Gottlieb (Konami license)", "Q*bert (Japan)", GAME_IMPERFECT_SOUND )
2491GAME( 1982, myqbert,   qbert,    qbert,          qbert,    romtiles, ROT270, "Gottlieb", "Mello Yello Q*bert", GAME_IMPERFECT_SOUND )
2492GAME( 1982, qberttst,  qbert,    qbert,          qbert,    romtiles, ROT270, "Gottlieb", "Q*bert (early test version)", GAME_IMPERFECT_SOUND )
2493GAME( 1982, qbtrktst,  qbert,    qbert,          qbert,    romtiles, ROT270, "Gottlieb", "Q*bert Board Input Test Rom", GAME_IMPERFECT_SOUND )
24942494GAME( 1982, insector,  0,        gottlieb1,       insector, romtiles, ROT0,   "Gottlieb", "Insector (prototype)", 0 )
24952495GAME( 1982, tylz,      0,        gottlieb1_votrax,   tylz,     romtiles, ROT0,   "Mylstar",  "Tylz (prototype)", GAME_IMPERFECT_SOUND ) // modified sound hw?
24962496GAME( 1984, argusg,    0,        gottlieb1,       argusg,   ramtiles, ROT0,   "Gottlieb", "Argus (Gottlieb, prototype)" , 0) // aka Guardian / Protector?
r14746r14747
24982498GAME( 1983, mplanetsuk,mplanets, gottlieb1,       mplanets, romtiles, ROT270, "Gottlieb (Taitel license)", "Mad Planets (UK)", 0 )
24992499GAME( 1983, krull,     0,        gottlieb1,       krull,    ramtiles, ROT270, "Gottlieb", "Krull", 0 )
25002500GAME( 1983, kngtmare,  0,        gottlieb1,       kngtmare, romtiles, ROT0,   "Gottlieb", "Knightmare (prototype)", GAME_NO_SOUND )
2501GAME( 1983, sqbert,    0,        qbert,            qbert,    romtiles, ROT270, "Mylstar", "Faster, Harder, More Challenging Q*bert (prototype)", GAME_IMPERFECT_SOUND )
2502GAME( 1983, qbertqub,  0,        qbert,           qbertqub, romtiles, ROT270, "Mylstar", "Q*bert's Qubes", GAME_IMPERFECT_SOUND )
2501GAME( 1983, sqbert,    0,        qbert,          qbert,    romtiles, ROT270, "Mylstar", "Faster, Harder, More Challenging Q*bert (prototype)", GAME_IMPERFECT_SOUND )
2502GAME( 1983, qbertqub,  0,        qbert,          qbertqub, romtiles, ROT270, "Mylstar", "Q*bert's Qubes", GAME_IMPERFECT_SOUND )
25032503GAME( 1984, curvebal,  0,        gottlieb1,       curvebal, romtiles, ROT270, "Mylstar", "Curve Ball", 0 )
25042504
25052505/* games using rev 2 sound board */
src/mame/drivers/seibuspi.c
r14746r14747
34023402
34033403ROM_START( rfjett ) /* SPI Cart, Taiwan */
34043404   ROM_REGION32_LE(0x200000, "user1", 0)   /* i386 program */
3405    ROM_LOAD32_BYTE( "prg0.u0211",   0x000000, 0x080000, CRC(a4734579) SHA1(dfbd8e2a3178c7cfd7bd3698999f14bc80f5212f) )
3406    ROM_LOAD32_BYTE( "prg1.u0212",   0x000001, 0x080000, CRC(5e4ad3a4) SHA1(ff66e16f48978b88b298c78e21309208ccb3ff15) )
3407    ROM_LOAD32_BYTE( "prg2.u0221",   0x000002, 0x080000, CRC(21c9942e) SHA1(ededa05a4b5dae2dec5c4409f22e9a66d2c8e98e) )
3408    ROM_LOAD32_BYTE( "prg3.u0220",   0x000003, 0x080000, CRC(ea3657f4) SHA1(2291e31243af7d2e79ae727d9b5484e8d49cc7d9) )
3405    ROM_LOAD32_BYTE( "prg0.u0211",   0x000000, 0x080000, CRC(a4734579) SHA1(dfbd8e2a3178c7cfd7bd3698999f14bc80f5212f) )
3406    ROM_LOAD32_BYTE( "prg1.u0212",   0x000001, 0x080000, CRC(5e4ad3a4) SHA1(ff66e16f48978b88b298c78e21309208ccb3ff15) )
3407    ROM_LOAD32_BYTE( "prg2.u0221",   0x000002, 0x080000, CRC(21c9942e) SHA1(ededa05a4b5dae2dec5c4409f22e9a66d2c8e98e) )
3408    ROM_LOAD32_BYTE( "prg3.u0220",   0x000003, 0x080000, CRC(ea3657f4) SHA1(2291e31243af7d2e79ae727d9b5484e8d49cc7d9) )
34093409
34103410   ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF)
34113411   ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(8bc080be) SHA1(ad296fb98242c963072346a8de289e704b445ad4) )
src/mame/drivers/popobear.c
r14746r14747
11/*******************************************************************************************
22
3   Popo Bear (c) 2000 BMC
3    Popo Bear (c) 2000 BMC
44
5   preliminary driver by Angelo Salese
5    preliminary driver by Angelo Salese
66
7   TODO:
8   - auto-animation speed is erratic (way too fast);
9   - sprites;
10   - tilemap effects (scrolling, colscroll, linescroll);
11   - BGM seems quite off, YM2413 core bug?
12   - I/Os;
13   - IRQ generation;
14   - Port 0x620000 is quite a mystery, some silly protection?
7    TODO:
8    - auto-animation speed is erratic (way too fast);
9    - sprites;
10    - tilemap effects (scrolling, colscroll, linescroll);
11    - BGM seems quite off, YM2413 core bug?
12    - I/Os;
13    - IRQ generation;
14    - Port 0x620000 is quite a mystery, some silly protection?
1515
1616============================================================================================
1717Popo Bear - BMC-A00211
r14746r14747
106106   const UINT8 vreg_base[] = { 0x10/2, 0x14/2 };
107107   int xscroll,yscroll;
108108
109//   count = (state->m_vregs[vreg_base[layer_n]]<<5);
110//   count &= 0xfc000;
109//  count = (state->m_vregs[vreg_base[layer_n]]<<5);
110//  count &= 0xfc000;
111111   count = (0xf0000+layer_n*0x4000);
112112   if(layer_n & 2)
113113   {
r14746r14747
153153                  bitmap.pix16(yoffs+512, xoffs+1) = machine.pens[color];
154154
155155               //if(cliprect.contains(xoffs+1, yoffs+256) && color)
156               //   bitmap.pix16(yoffs+512, xoffs+1) = machine.pens[color];
156               //  bitmap.pix16(yoffs+512, xoffs+1) = machine.pens[color];
157157
158158               color = (vram[((xi+1+yi*1024)+xtile+ytile) & 0xfffff] & 0xff);
159159
r14746r14747
188188   #endif
189189
190190   /*
191   ???? ---- ---- ---- unused?
192   ---- xxxx ---- ---- priority?
193   ---- ---- x--- ---- Y direction
194   ---- ---- -x-- ---- X direction
195   ---- ---- --xx ---- width
196   ---- ---- ---- xx-- color bank
197   ---- ---- ---- --xx height?
198   */
191    ???? ---- ---- ---- unused?
192    ---- xxxx ---- ---- priority?
193    ---- ---- x--- ---- Y direction
194    ---- ---- -x-- ---- X direction
195    ---- ---- --xx ---- width
196    ---- ---- ---- xx-- color bank
197    ---- ---- ---- --xx height?
198    */
199199
200200   /* 0x106 = 8 x 8 */
201201   /* 0x*29 = 32 x 32 */
r14746r14747
218218         continue;
219219
220220      //if(param & bank_test)
221      //   continue;
221      //  continue;
222222
223223      spr_num <<= 3;
224224
r14746r14747
251251
252252SCREEN_UPDATE_IND16( popobear )
253253{
254//   popobear_state *state = screen.machine().driver_data<popobear_state>();
254//  popobear_state *state = screen.machine().driver_data<popobear_state>();
255255
256256   bitmap.fill(0, cliprect);
257257
r14746r14747
295295   AM_RANGE(0x480000, 0x48001f) AM_RAM AM_BASE_MEMBER(popobear_state, m_vregs)
296296   AM_RANGE(0x480020, 0x480023) AM_RAM
297297   AM_RANGE(0x480028, 0x48002d) AM_RAM
298//   AM_RANGE(0x480020, 0x480021) AM_NOP //AM_READ(popo_480020_r) AM_WRITE(popo_480020_w)
299//   AM_RANGE(0x480028, 0x480029) AM_NOP //AM_WRITE(popo_480028_w)
300//   AM_RANGE(0x48002c, 0x48002d) AM_NOP //AM_WRITE(popo_48002c_w)
298//  AM_RANGE(0x480020, 0x480021) AM_NOP //AM_READ(popo_480020_r) AM_WRITE(popo_480020_w)
299//  AM_RANGE(0x480028, 0x480029) AM_NOP //AM_WRITE(popo_480028_w)
300//  AM_RANGE(0x48002c, 0x48002d) AM_NOP //AM_WRITE(popo_48002c_w)
301301   AM_RANGE(0x480030, 0x480031) AM_WRITE8(popobear_irq_ack_w, 0x00ff)
302302   AM_RANGE(0x480034, 0x480035) AM_RAM // coin counter or coin lockout
303303   AM_RANGE(0x48003a, 0x48003b) AM_RAM //AM_READ(popo_48003a_r) AM_WRITE(popo_48003a_w)
r14746r14747
461461   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
462462   MCFG_SCREEN_UPDATE_STATIC(popobear)
463463
464//   MCFG_GFXDECODE(popobear)
464//  MCFG_GFXDECODE(popobear)
465465
466466   MCFG_SCREEN_SIZE(128*8, 32*8)
467467   MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
src/mame/drivers/undrfire.c
r14746r14747
457457   output_set_value("Lamp_5", (data >> 4) & 1 );
458458   output_set_value("Lamp_6", (data >> 5) & 1 );
459459   output_set_value("Wheel_vibration", (data >> 6) & 1 );
460   
460
461461   cputag_set_input_line(space->machine(), "sub", INPUT_LINE_RESET, (data & 0x1000) ? CLEAR_LINE : ASSERT_LINE);
462462}
463463
src/mame/drivers/armedf.c
r14746r14747
12651265
12661266   MCFG_GFXDECODE(armedf)
12671267   MCFG_PALETTE_LENGTH(2048)
1268   
1268
12691269   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
12701270
12711271   /* sound hardware */
src/mame/drivers/bbusters.c
r14746r14747
696696   MCFG_PALETTE_LENGTH(2048)
697697
698698   MCFG_VIDEO_START(bbuster)
699   
699
700700   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
701701   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2")
702702
src/mame/drivers/tnzs.c
r14746r14747
21382138
21392139ROM_START( arknoid2b )
21402140   ROM_REGION( 0x30000, "maincpu", 0 )            /* Region 0 - main cpu */
2141    ROM_LOAD( "boot.11c",  0x00000, 0x08000, CRC(3847dfb0) SHA1(993c8af3df7a4d5a2523f0e31a6df1c07ba13c7d) )
2141    ROM_LOAD( "boot.11c",  0x00000, 0x08000, CRC(3847dfb0) SHA1(993c8af3df7a4d5a2523f0e31a6df1c07ba13c7d) )
21422142   ROM_CONTINUE(           0x18000, 0x08000 )         /* banked at 8000-bfff */
21432143   /* 20000-2ffff empty */
21442144
src/mame/drivers/crshrace.c
r14746r14747
487487
488488   MCFG_GFXDECODE(crshrace)
489489   MCFG_PALETTE_LENGTH(2048)
490   
490
491491   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
492492   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2")
493493
src/mame/drivers/dec8.c
r14746r14747
339339static WRITE8_HANDLER( srdarwin_i8751_w )
340340{
341341   dec8_state *state = space->machine().driver_data<dec8_state>();
342   
342
343343   /* Japan coinage first, then World coinage - US coinage shall be the same as the Japan one */
344344   int lneed1[2][4] = {{1, 1, 1, 2}, {1, 1, 1, 1}};   /* slot 1 : coins needed */
345345   int lcred1[2][4] = {{1, 2, 3, 1}, {2, 3, 4, 6}};   /* slot 1 : credits awarded */
r14746r14747
398398   if (state->m_i8751_value == 0x5000) { state->m_i8751_return = ((state->m_credits / 10) << 4) | (state->m_credits % 10); } /* Credits request */
399399   if (state->m_i8751_value == 0x6000 && state->m_credits) { state->m_i8751_value = -1; state->m_credits--; }     /* Credits clear */
400400
401/*
402   This next value is the index to a series of tables,
401/*
402    This next value is the index to a series of tables,
403403    each table controls the end of level bad guy,
404404    wrong values crash the cpu right away via a bogus jump.
405405
r14746r14747
20652065
20662066   /* video hardware */
20672067   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
2068   
2068
20692069   MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
20702070   deco_karnovsprites_device::set_gfx_region(*device, 1);
20712071
r14746r14747
21142114
21152115   /* video hardware */
21162116   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
2117   
2117
21182118   MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
21192119   deco_karnovsprites_device::set_gfx_region(*device, 1);
21202120
r14746r14747
21632163
21642164   /* video hardware */
21652165   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
2166   
2166
21672167   MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
21682168   deco_karnovsprites_device::set_gfx_region(*device, 1);
21692169
r14746r14747
22132213
22142214   /* video hardware */
22152215   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
2216   
2216
22172217   MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
22182218   deco_karnovsprites_device::set_gfx_region(*device, 1);
22192219
r14746r14747
22632263
22642264   /* video hardware */
22652265   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
2266   
2266
22672267   MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
22682268   deco_bac06_device::set_gfx_region_wide(*device, 2,2,0);
22692269
r14746r14747
23182318
23192319   /* video hardware */
23202320   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
2321   
2321
23222322   MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
23232323   deco_karnovsprites_device::set_gfx_region(*device, 1);
23242324
r14746r14747
23722372
23732373   /* video hardware */
23742374   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
2375   
2375
23762376   MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
23772377   deco_bac06_device::set_gfx_region_wide(*device, 2,2,0);
23782378
r14746r14747
24212421
24222422   /* video hardware */
24232423   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
2424   
2424
24252425   MCFG_SCREEN_ADD("screen", RASTER)
24262426   MCFG_SCREEN_REFRESH_RATE(58)
24272427   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
r14746r14747
24642464
24652465   /* video hardware */
24662466   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
2467   
2467
24682468   MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
24692469   deco_bac06_device::set_gfx_region_wide(*device, 2,2,0);
24702470   MCFG_DEVICE_ADD("tilegen2", DECO_BAC06, 0)
src/emu/cpu/m68000/m68kcpu.c
r14746r14747
19111911
19121912static CPU_INIT( m68301 )
19131913{
1914//   m68ki_cpu_core *m68k = get_safe_token(device);
1914//  m68ki_cpu_core *m68k = get_safe_token(device);
19151915
19161916   CPU_INIT_CALL(m68000);
19171917
r14746r14747
19411941   CPU_INIT_CALL(m68000);
19421942
19431943   /* basic CS logic, timers, mbus, serial logic
1944      set via remappable register
1945   */
1944       set via remappable register
1945    */
19461946   new(&m68k->memory) m68k_memory_interface;
19471947   m68k->memory.init16_68307(*m68k->program);
19481948
src/emu/cpu/i386/i386.c
r14746r14747
406406      if((cpustate->sreg[seg].flags & 0x0018) == 0x0010 && cpustate->sreg[seg].flags & 0x0004) // if expand-down data segment
407407      {
408408         // compare if greater then 0xffffffff when we're passed the access size
409         if((offset <= cpustate->sreg[seg].limit) || ((cpustate->sreg[seg].d)?0:(offset > 0xffff)))
409         if((offset <= cpustate->sreg[seg].limit) || ((cpustate->sreg[seg].d)?0:(offset > 0xffff)))
410410         {
411411            logerror("Limit check at 0x%08x failed. Segment %04x, limit %08x, offset %08x (expand-down)\n",cpustate->pc,cpustate->sreg[seg].selector,cpustate->sreg[seg].limit,offset);
412412            return 1;
src/emu/cpu/m6502/ill02.h
r14746r14747
175175/* 6510 ********************************************************
176176 *  OAL load accumulator and index X
177177 ***************************************************************/
178#define OAL_6510                                     \
178#define OAL_6510                                    \
179179   A = X = (UINT8)((A|0xee)&tmp);                        \
180180   SET_NZ(A)
181181
src/emu/cpu/powerpc/ppcdrc.c
r14746r14747
22702270   if (xermask & XER_OV)
22712271   {
22722272      UML_ROLAND(block, I0, I0, 31, 1);                        // roland  i0,i0,31,0x0001
2273      UML_OR(block, XERSO32, XERSO32, I0);                     // or      [xerso],i0
2273      UML_OR(block, XERSO32, XERSO32, I0);                     // or      [xerso],i0
22742274        UML_AND(block, CR32(0), CR32(0), 0xfffffffe);                   // and  [cr0], [cr0], 0xfffffffe (clear SO copy in CR32)
2275      UML_OR(block, CR32(0), I1, XERSO32);                     // or      [cr0],i1,[xerso]
2275      UML_OR(block, CR32(0), I1, XERSO32);                     // or      [cr0],i1,[xerso]
22762276   }
22772277   else
22782278    {
src/emu/cpu/lr35902/lr35902.c
r14746r14747
157157
158158   state_add(STATE_GENPC, "curpc", m_PC).callimport().callexport().formatstr("%8s").noshow();
159159   state_add(STATE_GENFLAGS, "GENFLAGS",  m_F).mask(0xf0).formatstr("%8s").noshow();
160   
160
161161   m_icountptr = &m_icount;
162162}
163163
src/emu/video/bufsprite.h
r14746r14747
8989   buffered_spriteram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, UINT32 clock)
9090      : device_t(mconfig, type, "Buffered Sprite RAM", tag, owner, clock),
9191        m_spriteram(*owner, tag) { }
92     
92
9393   // getters
9494   _Type *live() const { return m_spriteram; }
9595   _Type *buffer() { return m_buffered; }
9696   UINT32 bytes() const { return m_spriteram.bytes(); }
97   
97
9898   // operations
9999   _Type *copy(UINT32 srcoffset = 0, UINT32 srclength = 0x7fffffff)
100100   {
r14746r14747
103103         memcpy(m_buffered, m_spriteram + srcoffset, MIN(srclength, m_spriteram.bytes() / sizeof(_Type) - srcoffset) * sizeof(_Type));
104104      return m_buffered;
105105   }
106   
106
107107   // read/write handlers
108108   void write(address_space &space, offs_t offset, _Type data, _Type mem_mask = ~_Type(0)) { copy(); }
109109 
r14746r14747
124124 
125125private:
126126   // internal state
127   required_shared_ptr<_Type>    m_spriteram;
127   required_shared_ptr<_Type>   m_spriteram;
128128   dynamic_array<_Type>      m_buffered;
129129};
130130 
src/emu/sound/k054539.c
r14746r14747
123123      else
124124         lval = rval = 0;
125125      rbase[reverb_pos] = 0;
126     
126
127127      for(int ch=0; ch<8; ch++)
128128         if(regs[0x22c] & (1<<ch)) {
129129            unsigned char *base1 = regs + 0x20*ch;
r14746r14747
165165            rdelta = (rdelta + reverb_pos) & 0x3fff;
166166
167167            int cur_pos = (base1[0x0c] | (base1[0x0d] << 8) | (base1[0x0e] << 16)) & rom_mask;
168         
168
169169            int fdelta, pdelta;
170170            if(base2[0] & 0x20) {
171171               delta = -delta;
r14746r14747
281281            lval += cur_val * lvol;
282282            rval += cur_val * rvol;
283283            rbase[(rdelta + reverb_pos) & 0x1fff] += INT16(cur_val*rbvol);
284         
284
285285            chan->pos = cur_pos;
286286            chan->pfrac = cur_pfrac;
287287            chan->pval = cur_pval;
288288            chan->val = cur_val;
289         
289
290290            if(regupdate()) {
291291               base1[0x0c] = cur_pos     & 0xff;
292292               base1[0x0d] = cur_pos>> 8 & 0xff;
r14746r14747
349349      int voice, reg;
350350
351351      /* The K054539 has behavior like many other wavetable chips including
352         the Ensoniq 550x and Gravis GF-1: if a voice is active, writing
353         to it's current position is silently ignored.
352           the Ensoniq 550x and Gravis GF-1: if a voice is active, writing
353           to it's current position is silently ignored.
354354
355         Dadandaan depends on this or the vocals go wrong.
356      */
355           Dadandaan depends on this or the vocals go wrong.
356        */
357357      if (offset < 8*0x20)
358358      {
359359         voice = offset / 0x20;
src/emu/sound/k054539.h
r14746r14747
5555   void init_flags(int flags);
5656
5757   /*
58     Note that the eight PCM channels of a K054539 do not have separate
59     volume controls. Considering the global attenuation equation may not
60     be entirely accurate, k054539_set_gain() provides means to control
61     channel gain. It can be called anywhere but preferrably from
62     DRIVER_INIT().
58      Note that the eight PCM channels of a K054539 do not have separate
59      volume controls. Considering the global attenuation equation may not
60      be entirely accurate, k054539_set_gain() provides means to control
61      channel gain. It can be called anywhere but preferrably from
62      DRIVER_INIT().
6363
64     Parameters:
65           channel : 0 - 7
66        gain    : 0.0=silent, 1.0=no gain, 2.0=twice as loud, etc.
67   */
64      Parameters:
65          channel : 0 - 7
66          gain    : 0.0=silent, 1.0=no gain, 2.0=twice as loud, etc.
67    */
6868   void set_gain(int channel, double gain);
6969
7070protected:
src/emu/sound/votrax.c
r14746r14747
9595// it is only an approximation
9696const double votrax_sc01_device::s_glottal_wave[16] =
9797{
98   0, 
99   16.0/22.0,
100   -22.0/22.0,
101   -17.0/22.0,
102   -15.0/22.0,
103   -10.0/22.0, 
104   -7.0/22.0, 
98   0,
99   16.0/22.0,
100   -22.0/22.0,
101   -17.0/22.0,
102   -15.0/22.0,
103   -10.0/22.0,
104   -7.0/22.0,
105105   -4.0/22.0,
106   0,   
107   0,   
108   0,   
109   0,   
110   0,   
111   0,   
112   0,   
106   0,
107   0,
108   0,
109   0,
110   0,
111   0,
112   0,
113113   0
114114};
115115
r14746r14747
161161   // only 6 bits matter
162162   m_phoneme = data & 0x3f;
163163const UINT8 *rom = m_rom + (m_phoneme << 3);
164mame_printf_debug("%s: STROBE %s (F1=%X F2=%X FC=%X F3=%X F2Q=%X VA=%X FA=%X CL=%X CLD=%X VD=%X PAC=%X PH=%02X)\n",
164mame_printf_debug("%s: STROBE %s (F1=%X F2=%X FC=%X F3=%X F2Q=%X VA=%X FA=%X CL=%X CLD=%X VD=%X PAC=%X PH=%02X)\n",
165165      machine().time().as_string(3), s_phoneme_table[m_phoneme],
166166      rom[0] >> 4, rom[1] >> 4, rom[2] >> 4, rom[3] >> 4, rom[4] >> 4, rom[5] >> 4, rom[6] >> 4,
167167      rom[3] & 0xf, rom[4] & 0xf, rom[5] & 0xf, rom[6] & 0xf, rom[7]);
168   
168
169169   // the STROBE signal resets the phoneme counter
170170   m_counter_84 = 0xf;
171   
171
172172   // not in the schematics, but necessary to fully reset the request latch
173173   m_latch_92 = 0;
174174
r14746r14747
179179
180180
181181//-------------------------------------------------
182//  inflection_w - handle a write to the
183//   inflection bits
182//  inflection_w - handle a write to the
183//  inflection bits
184184//-------------------------------------------------
185185
186186WRITE8_MEMBER( votrax_sc01_device::inflection_w )
r14746r14747
189189   data &= 3;
190190   if (m_inflection == data)
191191      return;
192   
192
193193   // append an inflection marker
194194   m_stream->update();
195195   m_inflection = data;
r14746r14747
202202//**************************************************************************
203203
204204//-------------------------------------------------
205//  update_subphoneme_clock_period - re-compute the
206//  period of the sub-phoneme clock, as a multiple
205//  update_subphoneme_clock_period - re-compute the
206//  period of the sub-phoneme clock, as a multiple
207207//  of the master clock
208208//-------------------------------------------------
209209
210210void votrax_sc01_device::update_subphoneme_clock_period()
211211{
212212   assert(m_latch_80 < 128);
213   
213
214214/*
215   The sub-phoneme timing circuit is based off the switching capacitor
216   technique described in the Votrax patent. Replacing the capacitor
217   ladder with [Rx] representing the effective resistance, the circuit
218   becomes essentially a pair of op-amps:
215    The sub-phoneme timing circuit is based off the switching capacitor
216    technique described in the Votrax patent. Replacing the capacitor
217    ladder with [Rx] representing the effective resistance, the circuit
218    becomes essentially a pair of op-amps:
219219
220       VM
221       | i1
222      [R1]
223       |                       Vc
224       +----------------------+
225       |        +---|C1|---+  |
226      [R2]      |          |  |  |\
227       |Vb i2   |    |\    |  +--++\
228       +--[Rx]--+----+-\   |     |  >
229       |             |  >--+-----+-/
230      [R3]      +----++/   Vc    |/
231       |i3      |    |/
232       +--------+ Va
233       |
234      [R4]
235       |
236       0
220         VM
221         | i1
222        [R1]
223         |                       Vc
224         +----------------------+
225         |        +---|C1|---+  |
226        [R2]      |          |  |  |\
227         |Vb i2   |    |\    |  +--++\
228         +--[Rx]--+----+-\   |     |  >
229         |             |  >--+-----+-/
230        [R3]      +----++/   Vc    |/
231         |i3      |    |/
232         +--------+ Va
233         |
234        [R4]
235         |
236         0
237237
238   We have two op-amps, the left used as a standard amplifier, the right
239   one as a comparator.  The circuit triggers when the two inputs of the
240   right op-amp are equal.
238    We have two op-amps, the left used as a standard amplifier, the right
239    one as a comparator.  The circuit triggers when the two inputs of the
240    right op-amp are equal.
241241
242   The left part of the circuit (before C1) is simply a current injector.
243   It's all made of resistors, there's no modulated input, so everything
244   is going to be constant.  If you don't know about op-amps used as
245   amplifiers, you just need to know that it forces its two inputs to
246   have the same voltage while not sending or providing any current
247   through there (only though its output in fact).
242    The left part of the circuit (before C1) is simply a current injector.
243    It's all made of resistors, there's no modulated input, so everything
244    is going to be constant.  If you don't know about op-amps used as
245    amplifiers, you just need to know that it forces its two inputs to
246    have the same voltage while not sending or providing any current
247    through there (only though its output in fact).
248248
249   In the schema, the injected current is i2.  Basic equations apply:
250     Va = R4.i3
251     Vb = Va + R3.i3
252     Vb = Va + Rx.i2
253     Vc = Vb + R2.i1
254     VM = Vc + R1.i1
255     i1 = i2 + i3
249    In the schema, the injected current is i2.  Basic equations apply:
250      Va = R4.i3
251      Vb = Va + R3.i3
252      Vb = Va + Rx.i2
253      Vc = Vb + R2.i1
254      VM = Vc + R1.i1
255      i1 = i2 + i3
256256
257   And the tipping happens when the voltage on the right of C1 reaches
258   Vc, so:
259     Vc = Va + i2.T/C1
257    And the tipping happens when the voltage on the right of C1 reaches
258    Vc, so:
259      Vc = Va + i2.T/C1
260260
261   (i2 being a constant, the integration is kinda easy)
261    (i2 being a constant, the integration is kinda easy)
262262
263   Some maths later:
264     R3.i3 = Rx.i2 -> i3 = Rx/R3.i2
265     i1 = (1+Rx/R3).i2
266     Va + (Rx + R2 + R2.Rx/R3).i2 = Va + T/C1.i2
267     T = C1*(Rx*(1+R2/R3) + R2)
263    Some maths later:
264      R3.i3 = Rx.i2 -> i3 = Rx/R3.i2
265      i1 = (1+Rx/R3).i2
266      Va + (Rx + R2 + R2.Rx/R3).i2 = Va + T/C1.i2
267      T = C1*(Rx*(1+R2/R3) + R2)
268268
269   Which isn't, interestingly though not surprisingly, dependant on Vm,
270   R1 or R4.  And you have to round it to the next multiple of
271   0.2ms+0.1ms due to the clocking on p2 and its offset to p1 (charging
272   only happens on p1 active), and add one p1/p2 cycle (0.2ms) for the
273   discharge.
269    Which isn't, interestingly though not surprisingly, dependant on Vm,
270    R1 or R4.  And you have to round it to the next multiple of
271    0.2ms+0.1ms due to the clocking on p2 and its offset to p1 (charging
272    only happens on p1 active), and add one p1/p2 cycle (0.2ms) for the
273    discharge.
274274
275   So now you have your base clock, which you have to multiply by 16 to
276   get the phoneme length.
275    So now you have your base clock, which you have to multiply by 16 to
276    get the phoneme length.
277277
278   r2 = 9e3
279   r3 = 1e3
280   c1 = 1000e-12
281   rx = 1/(5KHz * cx)
278    r2 = 9e3
279    r3 = 1e3
280    c1 = 1000e-12
281    rx = 1/(5KHz * cx)
282282*/
283283
284284   // determine total capacitance
r14746r14747
290290   if ((m_latch_80 & 0x10) != 0) cx += 86e-12;
291291   if ((m_latch_80 & 0x20) != 0) cx += 173e-12;
292292   if ((m_latch_80 & 0x40) != 0) cx += 345e-12;
293   
293
294294   // apply the equation above to determine charging time
295295   // note that the 5kHz listed above for P1 is for a nominal master
296296   // clock frequency of 1.28MHz, meaning it is master clock / 128
r14746r14747
298298   double p1_frequency = double(m_master_clock_freq) / double(1 << (P_CLOCK_BIT + 2));
299299   double rx = 1.0 / (p1_frequency * cx);
300300   double period = 1000e-12 * (rx * (1.0 + 9e3 / 1e3) + 9e3);
301   
301
302302   // convert to master clock cycles and round up
303303   m_subphoneme_period = UINT32(ceil(period * double(m_master_clock_freq)));
304304}
r14746r14747
489489   double fpeak = sqrt(fabs(k[0]*k[1]-k[2]))/(2*M_PI*k[2]);
490490   double zc = 2*M_PI*fpeak/tan(M_PI*fpeak/fs);
491491
492    double m0 = zc*k[0];
493    double m1 = zc*k[1];
494    double m2 = zc*zc*k[2];
492   double m0 = zc*k[0];
493   double m1 = zc*k[1];
494   double m2 = zc*zc*k[2];
495495
496496   a[0] = 1+m0;
497497   a[1] = 3+m0;
r14746r14747
578578
579579         // update master clock
580580         m_master_clock ^= 1;
581         
581
582582         // on the falling edge of the master clock, advance the 10-bit counter at 34
583583         UINT8 old_latch_72 = m_latch_72;
584584         if (m_master_clock == 0)
r14746r14747
590590         }
591591
592592         // derive beta 1 clock:
593         //   set if m_latch_70.0 == 1
594         //   reset if m_latch_70.0 == 0
595//         UINT8 old_beta1 = m_beta1;
593         //  set if m_latch_70.0 == 1
594         //  reset if m_latch_70.0 == 0
595//          UINT8 old_beta1 = m_beta1;
596596         m_beta1 = BIT(m_latch_70, 0);
597597
598598         // derive p2 clock:
599         //   set if (m_counter_34.P_CLOCK_BIT & clock) == 1
600         //   reset if (m_counter_34.P_CLOCK_BIT == 0)
599         //  set if (m_counter_34.P_CLOCK_BIT & clock) == 1
600         //  reset if (m_counter_34.P_CLOCK_BIT == 0)
601601         UINT8 old_p2 = m_p2;
602602         if (BIT(m_counter_34, P_CLOCK_BIT) & m_master_clock)
603603            m_p2 = 1;
604604         else if (!BIT(m_counter_34, P_CLOCK_BIT))
605605            m_p2 = 0;
606         
606
607607         // derive p1 clock:
608         //   set if (!m_counter_34.P_CLOCK_BIT & clock) == 1
609         //   reset if (m_counter_34.P_CLOCK_BIT == 1)
610//         UINT8 old_p1 = m_p1;
608         //  set if (!m_counter_34.P_CLOCK_BIT & clock) == 1
609         //  reset if (m_counter_34.P_CLOCK_BIT == 1)
610//          UINT8 old_p1 = m_p1;
611611         if (BIT(~m_counter_34, P_CLOCK_BIT) & m_master_clock)
612612            m_p1 = 1;
613613         else if (BIT(m_counter_34, P_CLOCK_BIT))
614614            m_p1 = 0;
615         
615
616616         // derive phi2 clock:
617         //   set if (m_counter_34.PHI_CLOCK_BIT & clock) == 1
618         //   reset if (m_counter_34.PHI_CLOCK_BIT == 0)
617         //  set if (m_counter_34.PHI_CLOCK_BIT & clock) == 1
618         //  reset if (m_counter_34.PHI_CLOCK_BIT == 0)
619619         UINT8 old_phi2 = m_phi2;
620620         if (BIT(m_counter_34, PHI_CLOCK_BIT) & m_master_clock)
621621            m_phi2 = 1;
622622         else if (!BIT(m_counter_34, PHI_CLOCK_BIT))
623623            m_phi2 = 0;
624         
624
625625         // derive phi1 clock:
626         //   set if (!m_counter_34.PHI_CLOCK_BIT & clock) == 1
627         //   reset if (m_counter_34.PHI_CLOCK_BIT == 1)
626         //  set if (!m_counter_34.PHI_CLOCK_BIT & clock) == 1
627         //  reset if (m_counter_34.PHI_CLOCK_BIT == 1)
628628         UINT8 old_phi1 = m_phi1;
629629         if (BIT(~m_counter_34, PHI_CLOCK_BIT) & m_master_clock)
630630            m_phi1 = 1;
r14746r14747
632632            m_phi1 = 0;
633633
634634         // derive alternate phi2 clock:
635         //   set if (m_counter_34.PHI_CLOCK_BIT & clock) == 1
636         //   reset if (m_counter_34.PHI_CLOCK_BIT == 0)
635         //  set if (m_counter_34.PHI_CLOCK_BIT & clock) == 1
636         //  reset if (m_counter_34.PHI_CLOCK_BIT == 0)
637637         UINT8 old_phi2_20 = m_phi2_20;
638638         if (BIT(m_counter_34, PHI_CLOCK_BIT + 2) & m_master_clock)
639639            m_phi2_20 = 1;
640640         else if (!BIT(m_counter_34, PHI_CLOCK_BIT + 2))
641641            m_phi2_20 = 0;
642         
642
643643         // derive alternate phi1 clock:
644         //   set if (!m_counter_34.PHI_CLOCK_BIT & clock) == 1
645         //   reset if (m_counter_34.PHI_CLOCK_BIT == 1)
646//         UINT8 old_phi1_20 = m_phi1_20;
644         //  set if (!m_counter_34.PHI_CLOCK_BIT & clock) == 1
645         //  reset if (m_counter_34.PHI_CLOCK_BIT == 1)
646//          UINT8 old_phi1_20 = m_phi1_20;
647647         if (BIT(~m_counter_34, PHI_CLOCK_BIT + 2) & m_master_clock)
648648            m_phi1_20 = 1;
649649         else if (BIT(m_counter_34, PHI_CLOCK_BIT + 2))
650650            m_phi1_20 = 0;
651651
652652         // determine rising edges of each clock of interest
653//         UINT8 beta1_rising = (old_beta1 ^ m_beta1) & m_beta1;
653//          UINT8 beta1_rising = (old_beta1 ^ m_beta1) & m_beta1;
654654         UINT8 p2_rising = (old_p2 ^ m_p2) & m_p2;
655//         UINT8 p1_rising = (old_p1 ^ m_p1) & m_p1;
655//          UINT8 p1_rising = (old_p1 ^ m_p1) & m_p1;
656656         UINT8 phi2_rising = (old_phi2 ^ m_phi2) & m_phi2;
657657         UINT8 phi1_rising = (old_phi1 ^ m_phi1) & m_phi1;
658658         UINT8 phi2_20_rising = (old_phi2_20 ^ m_phi2_20) & m_phi2_20;
659//         UINT8 phi1_20_rising = (old_phi1_20 ^ m_phi1_20) & m_phi1_20;
659//          UINT8 phi1_20_rising = (old_phi1_20 ^ m_phi1_20) & m_phi1_20;
660660         UINT8 a0_rising = BIT((old_latch_72 ^ m_latch_72) & m_latch_72, 0);
661661         UINT8 a2_rising = BIT((old_latch_72 ^ m_latch_72) & m_latch_72, 2);
662662         UINT8 _125k_rising = BIT((old_latch_72 ^ m_latch_72) & m_latch_72, 3);
r14746r14747
673673         UINT8 old_clock_88 = m_clock_88;
674674         m_clock_88 = !m_latch_42;   //!(m_latch_42 | m_phi1); -- figure 7 seems to be wrong here
675675         UINT8 clock_88_rising = (old_clock_88 ^ m_clock_88) & m_clock_88;
676         
676
677677         // the A/R line holds the counter in reset except during phoneme processing,
678678         // when it is clocked on the rising edge of the subphoneme timer clock
679679         if (m_internal_request != CLEAR_LINE)
r14746r14747
683683            m_counter_84 = (m_counter_84 - 1) & 0x0f;
684684mame_printf_debug("counter=%d\n", m_counter_84);
685685         }
686         
686
687687         // clock the zero count latch
688688         if (p2_rising)
689689            m_latch_92 = ((m_counter_84 == 0) | (m_latch_92 << 1)) & 3;
690         
690
691691         // once both bits are set, the request line goes high
692692         if (m_latch_92 == 3)
693693         {
r14746r14747
708708         UINT8 romdata = m_rom[(m_phoneme << 3) | ((m_counter_34 >> 4) & 7)];
709709
710710         // update the ROM data; ROM format is (upper nibble/lower nibble)
711         //   +00 = F1 parameter / 0
712         //   +01 = F2 parameter / 0
713         //   +02 = FC parameter / 0
714         //   +03 = F3 parameter / CL
715         //   +04 = F2Q Parameter / CLD
716         //   +05 = VA Parameter / VD
717         //   +06 = FA Parameter / PAC
718         //   +07 = Phoneme timing (full 7 bits)
719         
711         //  +00 = F1 parameter / 0
712         //  +01 = F2 parameter / 0
713         //  +02 = FC parameter / 0
714         //  +03 = F3 parameter / CL
715         //  +04 = F2Q Parameter / CLD
716         //  +05 = VA Parameter / VD
717         //  +06 = FA Parameter / PAC
718         //  +07 = Phoneme timing (full 7 bits)
719
720720         // latch a new value from ROM on phi2
721721         UINT8 a = m_latch_72 & 7;
722722         UINT8 romdata_swapped;
r14746r14747
728728               case 3:
729729                  m_srff_132 = m_srff_114 & BIT(~romdata, 3);
730730                  break;
731           
731
732732               // update CLD
733733               case 4:
734734                  romdata_swapped = (BIT(romdata, 0) << 3) | (BIT(romdata, 1) << 2) | (BIT(romdata, 2) << 1) | (BIT(romdata, 3) << 0);
735735                  if (m_counter_84 != 0 && romdata_swapped == (m_counter_84 ^ 0xf))
736736                     m_srff_114 = 1;
737737                  break;
738           
738
739739               // update VD
740740               case 5:
741741                  romdata_swapped = (BIT(romdata, 0) << 3) | (BIT(romdata, 1) << 2) | (BIT(romdata, 2) << 1) | (BIT(romdata, 3) << 0);
742742                  if (m_counter_84 != 0 && romdata_swapped == (m_counter_84 ^ 0xf))
743743                     m_srff_112 = 1;
744744                  break;
745           
745
746746               // update FF == PAC & (VA | FA)
747747               case 6:
748748                  m_srff_142 = BIT(romdata, 3);
749749                  break;
750               
750
751751               // update PH
752752               case 7:
753753                  if (m_latch_80 != (romdata & 0x7f))
r14746r14747
762762                  break;
763763            }
764764         }
765         
765
766766         //==============================================
767767         //
768768         // Glottal circuit (patent figure 6)
r14746r14747
787787                  m_counter_224 = (m_counter_224 + 1) & 0xf;
788788            }
789789         }
790         
790
791791         // clock remaining glottal counters (220, 222, 236) on rising edge of phi2
792792         if (phi2_20_rising)
793793         {
r14746r14747
800800               else
801801                  m_counter_220 = (m_counter_220 + 1) & 0xf;
802802            }
803           
803
804804            // counter 222 is always enabled
805805            if (1)
806806            {
r14746r14747
810810               else
811811                  m_counter_222 = (m_counter_222 + 1) & 0xf;
812812            }
813           
813
814814            // counter 236 is always enabled
815815            if (1)
816816            {
817817               m_counter_236 = (m_counter_236 + 1) & 0xf;
818           
818
819819               // rising edge of Q1 from counter 236 clocks counter 234
820820               if ((m_counter_236 & 0x3) == 0x2)
821821               {
r14746r14747
825825               }
826826            }
827827         }
828         
828
829829         // update FGATE state
830830         if (counter_220_tc)
831831            m_fgate = 0;
832832         if (counter_224_tc)
833833            m_fgate = 1;
834         
834
835835         // apply asynchronous clear to counters 234/236
836836         if (counter_220_tc && m_phi1_20)
837837            m_counter_236 = m_counter_234 = 0;
838           
838
839839         // derive glottal circuit output signals
840840#if !TEMP_HACKS
841841         UINT8 old_glottal_sync = m_glottal_sync;
842842#endif
843843         m_glottal_sync = (m_counter_234 == 0);
844844         glottal_out = s_glottal_wave[m_counter_234];
845         
845
846846         //==============================================
847847         //
848848         // Transition circuit (patent figure 3a/3b)
849849         //
850850         //==============================================
851         
851
852852         // divide 1.25k clock by 2 (lower-left of 46)
853853         UINT8 old_0625_clock = m_0625_clock;
854854         if (_125k_rising)
855855            m_0625_clock = !m_0625_clock;
856856         UINT8 _0625_rising = (old_0625_clock ^ m_0625_clock) & m_0625_clock;
857         
857
858858         // update counter above
859859         if (_0625_rising)
860860         {
r14746r14747
863863            else
864864               m_counter_46 = (m_counter_46 + 1) & 0xf;
865865         }
866         
866
867867         // and then the latch to the right
868868         if (a2_rising)
869869            m_latch_46 = (BIT(m_counter_46, 1) << 0) |
r14746r14747
885885               if (!(m_srff_142 & !((m_fa == 0) & (m_va == 0))) && (m_latch_46 & 0x3) == 0x3)
886886                  ram_write = 1;
887887               break;
888           
888
889889            case 5:
890890               if ((m_latch_46 & 0xc) == 0xc && m_srff_112)
891891                  ram_write = 1;
892892               break;
893           
893
894894            case 6:
895895               if ((m_latch_46 & 0xc) == 0xc && m_srff_114)
896896                  ram_write = 1;
897897               break;
898898         }
899         
899
900900         // gate on the phi2 clock (OR gate @ 172)
901901         ram_write &= m_phi2;
902         
902
903903         // write the transitioned values to RAM if requested
904904         // (note we consolidate the serial addition and clocking steps here)
905905         if (ram_write)
r14746r14747
907907            UINT8 old = (m_latch_168 << 4) | m_latch_170;
908908            m_ram[a] = old - (old >> 3) + ((romdata & 0xf0) >> 3);
909909         }
910         
910
911911         // latch some parameter values on rising edge of phi2
912912         if (phi2_rising)
913913         {
r14746r14747
916916               case 2:
917917                  m_fc = m_latch_168;
918918                  break;
919               
919
920920               case 5:
921921                  m_va = m_latch_168;
922922                  break;
923               
923
924924               case 6:
925925                  m_fa = m_latch_168;
926926                  break;
927927            }
928928         }
929         
929
930930         // latch remaining parameter values on rising edge of (phi2 & glottal sync)
931931#if TEMP_HACKS
932932         if (phi2_rising)
r14746r14747
940940               case 0:
941941                  m_f1 = m_latch_168;
942942                  break;
943               
943
944944               case 1:
945945                  m_f2 = (m_latch_168 << 1) | (m_latch_170 >> 3);
946946                  break;
947               
947
948948               case 3:
949949                  m_f3 = m_latch_168;
950950                  break;
951               
951
952952               case 4:
953953                  m_f2q = m_latch_168;
954954                  break;
955955            }
956         
956
957957         // latch value from RAM on rising edge of phi1
958958         if (phi1_rising)
959959         {
r14746r14747
966966         // Noise generator circuit (patent figure 8)
967967         //
968968         //==============================================
969         
969
970970         // nose is clocked by the NOR of /FA and P1
971971         UINT8 old_noise_clock = m_noise_clock;
972972         m_noise_clock = !((m_fa == 0) | m_p1);
973973         UINT8 noise_clock_rising = (old_noise_clock ^ m_noise_clock) & m_noise_clock;
974974         UINT8 noise_clock_falling = (old_noise_clock ^ m_noise_clock) & old_noise_clock;
975         
975
976976         // falling edge clocks the shift register
977977         if (noise_clock_falling)
978978         {
r14746r14747
981981            // XOR'ed input goes into d4, which shifts in to d2, then d3, then d1
982982            // thus the full 18-bit value is effectively
983983            //
984            //   d4 = (m_shift_252 >> 0) & 0x1f;
985            //   d2 = (m_shift_252 >> 5) & 0x1f;
986            //   d3 = (m_shift_252 >> 10) & 0xf;
987            //   d1 = (m_shift_252 >> 14) & 0xf;
984            //  d4 = (m_shift_252 >> 0) & 0x1f;
985            //  d2 = (m_shift_252 >> 5) & 0x1f;
986            //  d3 = (m_shift_252 >> 10) & 0xf;
987            //  d1 = (m_shift_252 >> 14) & 0xf;
988988            //
989989            // input at the low end is ((d1+4 ^ d2+5) ^ (d4+4 ^ d4+5)) ^ !(counter2 | counter3)
990990            // output is tapped at d3+4
991991
992992            UINT32 old_shift = m_shift_252;
993993            m_shift_252 <<= 1;
994            m_shift_252 |= ((BIT(old_shift, 17) ^ BIT(old_shift, 9)) ^ (BIT(old_shift, 3) ^ BIT(old_shift, 4))) ^
994            m_shift_252 |= ((BIT(old_shift, 17) ^ BIT(old_shift, 9)) ^ (BIT(old_shift, 3) ^ BIT(old_shift, 4))) ^
995995                         ((m_counter_250 & 0xc) == 0);
996996         }
997         
997
998998         // rising edge clocks the counter
999999         if (noise_clock_rising)
10001000         {
r14746r14747
10041004            else
10051005               m_counter_250 = (m_counter_250 + 1) & 0xf;
10061006         }
1007         
1007
10081008         // compute final noise out signal
10091009         noise_out_digital = !(BIT(m_shift_252, 13) & (m_fgate | (m_va == 0)));
10101010      }
r14746r14747
11321132      double s4_out = apply_filter(m_s4i_hist, m_s4_hist, a, b);
11331133      shift_hist(s4_out, m_s4_hist, 4);
11341134
1135     
1135
11361136      // TODO: apply closure circuit (undocumented)
1137     
1137
11381138      // output the current result
11391139      *dest++ = INT16(s4_out * 4000);
11401140   }
r14746r14747
11681168   m_stream = stream_alloc(0, 1, m_master_clock_freq / 16);
11691169   m_phoneme_timer = timer_alloc();
11701170   m_rom = subregion("phoneme")->base();
1171   
1171
11721172   // reset inputs
11731173   m_inflection = 0;
11741174   m_phoneme = 0x3f;
1175   
1175
11761176   // reset outputs
11771177   m_request_func.resolve(m_request_cb, *this);
11781178   m_request_state = ASSERT_LINE;
11791179   m_internal_request = ASSERT_LINE;
1180   
1180
11811181   // save inputs
11821182   save_item(NAME(m_inflection));
11831183   save_item(NAME(m_phoneme));
1184   
1184
11851185   // save outputs
11861186   save_item(NAME(m_request_state));
11871187   save_item(NAME(m_internal_request));
1188   
1188
11891189   // save timing circuit
11901190   save_item(NAME(m_master_clock_freq));
11911191   save_item(NAME(m_master_clock));
r14746r14747
12031203   save_item(NAME(m_latch_42));
12041204   save_item(NAME(m_counter_84));
12051205   save_item(NAME(m_latch_92));
1206   
1206
12071207   // save low parameter clocking
12081208   save_item(NAME(m_srff_132));
12091209   save_item(NAME(m_srff_114));
12101210   save_item(NAME(m_srff_112));
12111211   save_item(NAME(m_srff_142));
12121212   save_item(NAME(m_latch_80));
1213   
1213
12141214   // save glottal circuit
12151215   save_item(NAME(m_counter_220));
12161216   save_item(NAME(m_counter_222));
r14746r14747
12341234   save_item(NAME(m_f2q));
12351235   save_item(NAME(m_va));
12361236   save_item(NAME(m_fa));
1237   
1237
12381238   // save noise generator circuit
12391239   save_item(NAME(m_noise_clock));
12401240   save_item(NAME(m_shift_252));
r14746r14747
12631263{
12641264   // set the initial state
12651265   m_stream->update();
1266   
1266
12671267   // reset inputs
12681268   m_phoneme = 0x3f;
12691269   m_request_func(m_internal_request = m_request_state = ASSERT_LINE);
1270   
1270
12711271   // reset timing circuit
12721272   m_master_clock = 0;
12731273   m_counter_34 = 0;
r14746r14747
12841284   m_latch_42 = 0;
12851285   m_counter_84 = 0;
12861286   m_latch_92 = 0;
1287   
1287
12881288   // reset low parameter clocking
12891289   m_srff_132 = 0;
12901290   m_srff_114 = 0;
r14746r14747
12921292   m_srff_142 = 0;
12931293   m_latch_80 = 50;
12941294   update_subphoneme_clock_period();
1295   
1295
12961296   // reset glottal circuit
12971297   m_counter_220 = 0;
12981298   m_counter_222 = 0;
r14746r14747
13011301   m_counter_236 = 0;
13021302   m_fgate = 0;
13031303   m_glottal_sync = 0;
1304   
1304
13051305   // reset transition circuit
13061306   m_0625_clock = 0;
13071307   m_counter_46 = 0;
r14746r14747
13161316   m_f2q = 0;
13171317   m_va = 0;
13181318   m_fa = 0;
1319   
1319
13201320   // reset noise circuit
13211321   m_noise_clock = 0;
13221322   m_shift_252 = 0;
r14746r14747
13391339
13401340//-------------------------------------------------
13411341//  device_clock_changed - handle dynamic clock
1342//   changes by altering our output frequency
1342//  changes by altering our output frequency
13431343//-------------------------------------------------
13441344
13451345void votrax_sc01_device::device_clock_changed()
r14746r14747
13541354         m_stream->update();
13551355         m_stream->set_sample_rate(newfreq / 16);
13561356      }
1357     
1357
13581358      // determine how many clock ticks remained on the phoneme timer
13591359      UINT64 remaining = m_phoneme_timer->remaining().as_ticks(m_master_clock_freq);
1360     
1360
13611361      // recompute the master clock
13621362      m_master_clock_freq = newfreq;
13631363
r14746r14747
13761376{
13771377   // force a stream update
13781378   m_stream->update();
1379   
1379
13801380   // if we're requesting more data, no need for timing
13811381   if (m_request_state == ASSERT_LINE)
13821382      return;
1383   
1383
13841384   // if we're supposed to have fired, do it now
13851385   if (m_internal_request == ASSERT_LINE)
13861386   {
r14746r14747
13971397         clocks_until_request += m_subphoneme_period - m_subphoneme_count;
13981398      clocks_until_request += m_subphoneme_period * (m_counter_84 - 1);
13991399   }
1400         
1400
14011401   // plus 1/2
14021402   clocks_until_request = MAX(clocks_until_request, (1 << P_CLOCK_BIT) / 2);
14031403   timer.adjust(attotime::from_ticks(clocks_until_request, m_master_clock_freq));
src/emu/sound/votrax.h
r14746r14747
5252#define MCFG_VOTRAX_SC01_ADD(_tag, _clock, _interface) \
5353   MCFG_DEVICE_ADD(_tag, VOTRAX_SC01, _clock) \
5454   votrax_sc01_device::static_set_interface(*device, _interface); \
55   
5655
5756
57
5858//**************************************************************************
5959//  TYPE DEFINITIONS
6060//**************************************************************************
r14746r14747
117117   devcb_resolved_write_line   m_request_func;         // request callback
118118   UINT8                  m_request_state;      // request as seen to the outside world
119119   UINT8                  m_internal_request;      // request managed by stream timing
120   
120
121121   // timing circuit
122122   UINT32                  m_master_clock_freq;   // frequency of the master clock
123123   UINT8                  m_master_clock;         // master clock
r14746r14747
137137   UINT8                  m_latch_42;            // D flip-flop @ 42
138138   UINT8                  m_counter_84;         // 4-bit phoneme counter @ 84
139139   UINT8                  m_latch_92;            // 2-bit latch @ 92
140   
140
141141   // low parameter clocking
142142   UINT8                  m_srff_132;            // S/R flip-flop @ 132
143143   UINT8                  m_srff_114;            // S/R flip-flop @ 114
144144   UINT8                  m_srff_112;            // S/R flip-flop @ 112
145145   UINT8                  m_srff_142;            // S/R flip-flop @ 142
146146   UINT8                  m_latch_80;            // phoneme timing latch @ 80
147   
147
148148   // glottal circuit
149149   UINT8                  m_counter_220;         // 4-bit counter @ 220
150150   UINT8                  m_counter_222;         // 4-bit counter @ 222
r14746r14747
153153   UINT8                  m_counter_236;         // 4-bit counter @ 236
154154   UINT8                  m_fgate;            // FGATE signal
155155   UINT8                  m_glottal_sync;         // Glottal Sync signal
156   
156
157157   // transition circuit
158158   UINT8                  m_0625_clock;         // state of 0.625kHz clock
159159   UINT8                  m_counter_46;         // 4-bit counter in block @ 46
r14746r14747
168168   UINT8                  m_f2q;               // latched 4-bit F2Q value
169169   UINT8                  m_va;               // latched 4-bit VA value
170170   UINT8                  m_fa;               // latched 4-bit FA value
171   
171
172172   // noise generator circuit
173173   UINT8                  m_noise_clock;         // clock input to noise generator
174174   UINT32                  m_shift_252;         // shift register @ 252
175175   UINT8                  m_counter_250;         // 4-bit counter @ 250
176176
177177   // stages outputs history
178   double                   m_ni_hist[4];
179   double                   m_no_hist[4];
180   double                   m_va_hist[4];
181   double                   m_s1_hist[4];
182   double                   m_s2g_hist[4];
183   double                   m_s2ni_hist[4];
184   double                   m_s2n_hist[4];
185   double                   m_s2_hist[4];
186   double                   m_s3_hist[4];
187   double                   m_s4i_hist[4];
188   double                   m_s4_hist[4];
178   double                  m_ni_hist[4];
179   double                  m_no_hist[4];
180   double                  m_va_hist[4];
181   double                  m_s1_hist[4];
182   double                  m_s2g_hist[4];
183   double                  m_s2ni_hist[4];
184   double                  m_s2n_hist[4];
185   double                  m_s2_hist[4];
186   double                  m_s3_hist[4];
187   double                  m_s4i_hist[4];
188   double                  m_s4_hist[4];
189189
190190   // static tables
191191   static const char *const s_phoneme_table[64];
src/emu/imagedev/flopdrv.c
r14746r14747
963963         cnt++;
964964      }
965965      image_specify_extension( m_extension_list, 256, floppy_options[i].extensions );
966   }   
967   
966   }
967
968968   // set brief and instance name
969969   update_names();
970970}
src/emu/imagedev/flopdrv.h
r14746r14747
191191   ~legacy_floppy_image_device();
192192
193193   virtual bool call_load();
194   virtual bool call_softlist_load(char *swlist, char *swname, rom_entry *start_entry) {    return load_software(swlist, swname, start_entry); }
194   virtual bool call_softlist_load(char *swlist, char *swname, rom_entry *start_entry) {   return load_software(swlist, swname, start_entry); }
195195   virtual bool call_create(int format_type, option_resolution *format_options);
196196   virtual void call_unload();
197197   virtual void call_display_info();
r14746r14747
206206   virtual const char *image_interface() const;
207207   virtual const char *file_extensions() const { return m_extension_list; }
208208   virtual const option_guide *create_option_guide() const { return floppy_option_guide; }
209   
209
210210   // access to legacy token
211   void *token() const { assert(m_token != NULL); return m_token; }   
211   void *token() const { assert(m_token != NULL); return m_token; }
212212protected:
213213   // device overrides
214214   virtual void device_config_complete();
215215   virtual void device_start();
216   
216
217217   void *m_token;
218218   char         m_extension_list[256];
219219};
src/emu/device.h
r14746r14747
365365      optional_shared_ptr(device_t &base, const char *tag) : auto_finder_type<_PointerType *, false>(base, tag), m_bytes(0) { }
366366      virtual void findit(device_t &base) { this->set_target(reinterpret_cast<_PointerType *>(this->find_shared_ptr(base, this->m_tag, m_bytes))); }
367367      UINT32 bytes() const { return m_bytes; }
368   
368
369369   private:
370370      // internal state
371371      size_t m_bytes;
r14746r14747
379379      required_shared_ptr(device_t &base, const char *tag) : auto_finder_type<_PointerType *, true>(base, tag), m_bytes(0) { }
380380      virtual void findit(device_t &base) { this->set_target(reinterpret_cast<_PointerType *>(this->find_shared_ptr(base, this->m_tag, m_bytes))); }
381381      UINT32 bytes() const { return m_bytes; }
382   
382
383383   private:
384384      // internal state
385385      size_t m_bytes;
src/emu/machine/nscsi_hd.c
r14746r14747
161161            scsi_cmdbuf[pos++] = 0x00; // Meh
162162            scsi_cmdbuf[pos++] = 0x00; // Double meh
163163            break;
164           
164
165165         case 0x03:  { // Format parameters page
166166            scsi_cmdbuf[pos++] = 0x83; // PS, page id
167167            scsi_cmdbuf[pos++] = 0x16; // Page length
src/emu/machine/ins8250.c
r14746r14747
2121
2222The original 8250 pulses the interrupt line if a higher priority interrupt is
2323cleared but a lower priority one is still active.  It also clears the tsre bit
24for a moment before loading the tsr from the thr.  These may be the bugs the
24for a moment before loading the tsr from the thr.  These may be the bugs the
2525PC and XT depend on as the 8250A and up fix them.
2626
2727INS8250-B
r14746r14747
140140      {
141141         m_regs.iir |=0x04;
142142         if ((m_int_pending & COM_INT_PENDING_CHAR_TIMEOUT) == 0x11)
143            m_regs.iir |= 0x08;
143            m_regs.iir |= 0x08;
144144      }
145145      else if (m_regs.ier & m_int_pending & COM_INT_PENDING_TRANSMITTER_HOLDING_REGISTER_EMPTY)
146146         m_regs.iir |=0x02;
r14746r14747
390390{
391391   if(!(m_regs.fcr & 1))
392392      return ins8250_uart_device::rcv_complete();
393   
393
394394   receive_register_extract();
395   
395
396396   if(m_rnum == 16)
397397   {
398398      m_regs.lsr |= 0x02; //overrun
399399      trigger_int(COM_INT_PENDING_RECEIVER_LINE_STATUS);
400400      return;
401401   }
402     
402
403403   m_regs.lsr |= 0x01;
404404   m_rfifo[m_rhead] = get_received_char();
405405   ++m_rhead &= 0x0f;
r14746r14747
568568{
569569   UINT8 data = m_rfifo[m_rtail];
570570   clear_int(COM_INT_PENDING_CHAR_TIMEOUT & ~1); // don't clear bit 1 yet
571   
571
572572   if(m_rnum)
573573   {
574574      ++m_rtail &= 0x0f;
r14746r14747
576576   }
577577   else
578578      data = 0;
579   
579
580580   if(m_rnum < m_rintlvl)
581581      clear_int(COM_INT_PENDING_RECEIVED_DATA_AVAILABLE);
582582
583583   if(m_rnum)
584584      set_timer();
585   else
585   else
586586   {
587587      m_timeout->adjust(attotime::never);
588588      m_regs.lsr &= ~1;
src/emu/save.h
r14746r14747
307307
308308
309309//-------------------------------------------------
310//  save_item - specialized save_item for
310//  save_item - specialized save_item for
311311//  dynamic_arrays
312312//-------------------------------------------------
313313
src/lib/lib.mak
r14746r14747
295295ARCHFLAGS = -m32 -arch i386 -DWORDS_BIGENDIAN=0
296296endif
297297endif   # BIGENDIAN
298else    # ifeq ($(TARGETOS),macosx)
298else    # ifeq ($(TARGETOS),macosx)
299299ARCHFLAGS = -DWORDS_BIGENDIAN=0
300300endif   # ifeq ($(TARGETOS),macosx)
301301
src/lib/util/cdrom.c
r14746r14747
864864        else
865865        {
866866            metadata.format(GDROM_TRACK_METADATA_FORMAT, i + 1, cdrom_get_type_string(toc->tracks[i].trktype),
867                    cdrom_get_subtype_string(toc->tracks[i].subtype), toc->tracks[i].frames, toc->tracks[i].padframes,
868                    toc->tracks[i].pregap, cdrom_get_type_string(toc->tracks[i].pgtype),
867                    cdrom_get_subtype_string(toc->tracks[i].subtype), toc->tracks[i].frames, toc->tracks[i].padframes,
868                    toc->tracks[i].pregap, cdrom_get_type_string(toc->tracks[i].pgtype),
869869                    cdrom_get_subtype_string(toc->tracks[i].pgsub), toc->tracks[i].postgap);
870870
871871            err = chd->write_metadata(GDROM_TRACK_METADATA_TAG, i, metadata);
src/version.c
r14746r14747
3838***************************************************************************/
3939
4040extern const char build_version[];
41const char build_version[] = "0.145u3 ("__DATE__")";
41const char build_version[] = "0.145u4 ("__DATE__")";

Previous 15994 Revisions Next


© 1998-2018 The MESS Team