Previous 199869 Revisions Next

r28735 Wednesday 19th March, 2014 at 18:22:17 UTC by Osso
Converted qs1000_device to devcb2 (nw)
[src/emu/sound]qs1000.c qs1000.h
[src/mame/drivers]eolith.c ghosteo.c limenko.c vamphalf.c vegaeo.c

trunk/src/mame/drivers/vamphalf.c
r28734r28735
945945GFXDECODE_END
946946
947947
948
949
950static QS1000_INTERFACE( qs1000_intf )
951{
952   /* External ROM */
953   true,
954
955   /* P1-P3 read handlers */
956   DEVCB_DRIVER_MEMBER(vamphalf_state, qs1000_p1_r),
957   DEVCB_NULL,
958   DEVCB_NULL,
959
960   /* P1-P3 write handlers */
961   DEVCB_NULL,
962   DEVCB_NULL,
963   DEVCB_DRIVER_MEMBER(vamphalf_state, qs1000_p3_w),
964};
965
966
967
968
969
970948static MACHINE_CONFIG_START( common, vamphalf_state )
971949   MCFG_CPU_ADD("maincpu", E116T, 50000000)    /* 50 MHz */
972950   MCFG_CPU_PROGRAM_MAP(common_map)
r28734r28735
1018996   /* sound hardware */
1019997   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
1020998
1021   MCFG_QS1000_ADD("qs1000", XTAL_24MHz, qs1000_intf)
999   MCFG_SOUND_ADD("qs1000", QS1000, XTAL_24MHz)
1000   MCFG_QS1000_EXTERNAL_ROM(true)
1001   MCFG_QS1000_IN_P1_CB(READ8(vamphalf_state, qs1000_p1_r))
1002   MCFG_QS1000_OUT_P3_CB(WRITE8(vamphalf_state, qs1000_p3_w))
10221003   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
10231004   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
10241005MACHINE_CONFIG_END
trunk/src/mame/drivers/limenko.c
r28734r28735
711711
712712
713713/*****************************************************************************************************
714 INTERFACES
715 *****************************************************************************************************/
716
717static QS1000_INTERFACE( qs1000_intf )
718{
719   /* External ROM */
720   true,
721
722   /* P1-P3 read handlers */
723   DEVCB_DRIVER_MEMBER(limenko_state, qs1000_p1_r),
724   DEVCB_NULL,
725   DEVCB_NULL,
726
727   /* P1-P3 write handlers */
728   DEVCB_DRIVER_MEMBER(limenko_state, qs1000_p1_w),
729   DEVCB_DRIVER_MEMBER(limenko_state, qs1000_p2_w),
730   DEVCB_DRIVER_MEMBER(limenko_state, qs1000_p3_w),
731};
732
733/*****************************************************************************************************
734714  MACHINE DRIVERS
735715*****************************************************************************************************/
736716
r28734r28735
759739   /* sound hardware */
760740   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
761741
762   MCFG_QS1000_ADD("qs1000", XTAL_24MHz, qs1000_intf)
742   MCFG_SOUND_ADD("qs1000", QS1000, XTAL_24MHz)
743   MCFG_QS1000_EXTERNAL_ROM(true)
744   MCFG_QS1000_IN_P1_CB(READ8(limenko_state, qs1000_p1_r))
745   MCFG_QS1000_OUT_P1_CB(WRITE8(limenko_state, qs1000_p1_w))
746   MCFG_QS1000_OUT_P2_CB(WRITE8(limenko_state, qs1000_p2_w))
747   MCFG_QS1000_OUT_P3_CB(WRITE8(limenko_state, qs1000_p3_w))
763748   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
764749   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
765750MACHINE_CONFIG_END
trunk/src/mame/drivers/ghosteo.c
r28734r28735
625625   m_maincpu->space(AS_PROGRAM).install_read_handler(0x4d000010, 0x4d000013,read32_delegate(FUNC(ghosteo_state::bballoon_speedup_r), this));
626626}
627627
628static QS1000_INTERFACE( qs1000_intf )
629{
630   /* External ROM */
631   true,
632
633   /* P1-P3 read handlers */
634   DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p1_r),
635   DEVCB_NULL,
636   DEVCB_NULL,
637
638   /* P1-P3 write handlers */
639   DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p1_w),
640   DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p2_w),
641   DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p3_w)
642};
643
644628static MACHINE_CONFIG_START( ghosteo, ghosteo_state )
645629
646630   /* basic machine hardware */
r28734r28735
666650   /* sound hardware */
667651   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
668652
669   MCFG_QS1000_ADD("qs1000", XTAL_24MHz, qs1000_intf)
653   MCFG_SOUND_ADD("qs1000", QS1000, XTAL_24MHz)
654   MCFG_QS1000_EXTERNAL_ROM(true)
655   MCFG_QS1000_IN_P1_CB(READ8(ghosteo_state, qs1000_p1_r))
656   MCFG_QS1000_OUT_P1_CB(WRITE8(ghosteo_state, qs1000_p1_w))
657   MCFG_QS1000_OUT_P2_CB(WRITE8(ghosteo_state, qs1000_p2_w))
658   MCFG_QS1000_OUT_P3_CB(WRITE8(ghosteo_state, qs1000_p3_w))
670659   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
671660   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
672661MACHINE_CONFIG_END
trunk/src/mame/drivers/eolith.c
r28734r28735
539539
540540/*************************************
541541 *
542 *  QS1000 interface
543 *
544 *************************************/
545
546static QS1000_INTERFACE( qs1000_intf )
547{
548   /* External ROM */
549   true,
550
551   /* P1-P3 read handlers */
552   DEVCB_DRIVER_MEMBER(eolith_state, qs1000_p1_r),
553   DEVCB_NULL,
554   DEVCB_NULL,
555
556   /* P1-P3 write handlers */
557   DEVCB_DRIVER_MEMBER(eolith_state, qs1000_p1_w),
558   DEVCB_NULL,
559   DEVCB_NULL,
560};
561
562
563/*************************************
564 *
565542 *  Machine driver
566543 *
567544 *************************************/
r28734r28735
600577   /* sound hardware */
601578   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
602579
603   MCFG_QS1000_ADD("qs1000", XTAL_24MHz, qs1000_intf)
580   MCFG_SOUND_ADD("qs1000", QS1000, XTAL_24MHz)
581   MCFG_QS1000_EXTERNAL_ROM(true)
582   MCFG_QS1000_IN_P1_CB(READ8(eolith_state, qs1000_p1_r))
583   MCFG_QS1000_OUT_P1_CB(WRITE8(eolith_state, qs1000_p1_w))
604584   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
605585   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
606586MACHINE_CONFIG_END
trunk/src/mame/drivers/vegaeo.c
r28734r28735
222222}
223223
224224
225
226/*************************************
227 *
228 *  QS1000 interface
229 *
230 *************************************/
231
232static QS1000_INTERFACE( qs1000_intf )
233{
234   /* External ROM */
235   true,
236
237   /* P1-P3 read handlers */
238   DEVCB_DRIVER_MEMBER(vegaeo_state, qs1000_p1_r),
239   DEVCB_NULL,
240   DEVCB_NULL,
241
242   /* P1-P3 write handlers */
243   DEVCB_DRIVER_MEMBER(vegaeo_state, qs1000_p1_w),
244   DEVCB_DRIVER_MEMBER(vegaeo_state, qs1000_p2_w),
245   DEVCB_DRIVER_MEMBER(vegaeo_state, qs1000_p3_w)
246};
247
248
249225static MACHINE_CONFIG_START( vega, vegaeo_state )
250226   MCFG_CPU_ADD("maincpu", GMS30C2132, XTAL_55MHz)
251227   MCFG_CPU_PROGRAM_MAP(vega_map)
r28734r28735
270246   /* sound hardware */
271247   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
272248
273   MCFG_QS1000_ADD("qs1000", XTAL_24MHz, qs1000_intf)
249   MCFG_SOUND_ADD("qs1000", QS1000, XTAL_24MHz)
250   MCFG_QS1000_EXTERNAL_ROM(true)
251   MCFG_QS1000_IN_P1_CB(READ8(vegaeo_state, qs1000_p1_r))
252   MCFG_QS1000_OUT_P1_CB(WRITE8(vegaeo_state, qs1000_p1_w))
253   MCFG_QS1000_OUT_P2_CB(WRITE8(vegaeo_state, qs1000_p2_w))
254   MCFG_QS1000_OUT_P3_CB(WRITE8(vegaeo_state, qs1000_p3_w))
274255   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
275256   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
276257MACHINE_CONFIG_END
trunk/src/emu/sound/qs1000.c
r28734r28735
183183   : device_t(mconfig, QS1000, "QS1000", tag, owner, clock, "qs1000", __FILE__),
184184      device_sound_interface(mconfig, *this),
185185      device_memory_interface(mconfig, *this),
186      m_external_rom(false),
187      m_in_p1_cb(*this),
188      m_in_p2_cb(*this),
189      m_in_p3_cb(*this),
190      m_out_p1_cb(*this),
191      m_out_p2_cb(*this),
192      m_out_p3_cb(*this),
193      //m_serial_w_cb(*this),
186194      m_space_config("samples", ENDIANNESS_LITTLE, 8, 24, 0, NULL),
187195      m_stream(NULL),
188196      m_direct(NULL),
r28734r28735
226234   m_stream = stream_alloc(0, 2, clock() / 32);
227235
228236   // Resolve CPU port callbacks
229   m_p1_r_func.resolve(m_in_p1_cb, *this);
230   m_p2_r_func.resolve(m_in_p2_cb, *this);
231   m_p3_r_func.resolve(m_in_p3_cb, *this);
237   m_in_p1_cb.resolve_safe(0);
238   m_in_p2_cb.resolve_safe(0);
239   m_in_p3_cb.resolve_safe(0);
232240
233   m_p1_w_func.resolve(m_out_p1_cb, *this);
234   m_p2_w_func.resolve(m_out_p2_cb, *this);
235   m_p3_w_func.resolve(m_out_p3_cb, *this);
241   m_out_p1_cb.resolve_safe();
242   m_out_p2_cb.resolve_safe();
243   m_out_p3_cb.resolve_safe();
244   
245   //m_serial_w_cb.resolve_safe();
236246
237247   m_cpu->i8051_set_serial_rx_callback(read8_delegate(FUNC(qs1000_device::data_to_i8052),this));
238248
r28734r28735
274284
275285
276286//-------------------------------------------------
277//  device_config_complete
278//-------------------------------------------------
279void qs1000_device::device_config_complete()
280{
281   const qs1000_interface *intf = reinterpret_cast<const qs1000_interface *>(static_config());
282
283   if (intf != NULL)
284      *static_cast<qs1000_interface *>(this) = *intf;
285}
286
287
288//-------------------------------------------------
289287//  device_reset - device-specific reset
290288//-------------------------------------------------
291289void qs1000_device::device_reset()
r28734r28735
330328//-------------------------------------------------
331329READ8_MEMBER( qs1000_device::p1_r )
332330{
333   return m_p1_r_func(0);
331   return m_in_p1_cb(0);
334332}
335333
336334
r28734r28735
339337//-------------------------------------------------
340338READ8_MEMBER( qs1000_device::p2_r )
341339{
342   return m_p2_r_func(0);
340   return m_in_p2_cb(0);
343341}
344342
345343
r28734r28735
348346//-------------------------------------------------
349347READ8_MEMBER( qs1000_device::p3_r )
350348{
351   return m_p3_r_func(0);
349   return m_in_p3_cb(0);
352350}
353351
354352
355353//-------------------------------------------------
356//  p1_w
354//  p0_w
357355//-------------------------------------------------
358356WRITE8_MEMBER( qs1000_device::p0_w )
359357{
r28734r28735
366364
367365WRITE8_MEMBER( qs1000_device::p1_w )
368366{
369   m_p1_w_func(0, data);
367   m_out_p1_cb((offs_t)0, data);
370368}
371369
372370
r28734r28735
376374
377375WRITE8_MEMBER( qs1000_device::p2_w )
378376{
379   m_p2_w_func(0, data);
377   m_out_p2_cb((offs_t)0, data);
380378}
381379
382380
r28734r28735
386384
387385WRITE8_MEMBER( qs1000_device::p3_w )
388386{
389   m_p3_w_func(0, data);
387   m_out_p3_cb((offs_t)0, data);
390388}
391389
392390
trunk/src/emu/sound/qs1000.h
r28734r28735
1818//  INTERFACE CONFIGURATION MACROS
1919//**************************************************************************
2020
21#define MCFG_QS1000_ADD(_tag, _clock, _config) \
22   MCFG_DEVICE_ADD(_tag, QS1000, _clock) \
23   MCFG_DEVICE_CONFIG(_config)
21#define MCFG_QS1000_EXTERNAL_ROM(_bool) \
22   qs1000_device::set_external_rom(*device, _bool);
2423
25#define QS1000_INTERFACE(name) \
26   const qs1000_interface (name) =
24#define MCFG_QS1000_IN_P1_CB(_devcb) \
25   devcb = &qs1000_device::set_in_p1_callback(*device, DEVCB2_##_devcb);
2726
27#define MCFG_QS1000_IN_P2_CB(_devcb) \
28   devcb = &qs1000_device::set_in_p2_callback(*device, DEVCB2_##_devcb);
2829
30#define MCFG_QS1000_IN_P3_CB(_devcb) \
31   devcb = &qs1000_device::set_in_p3_callback(*device, DEVCB2_##_devcb);
2932
33#define MCFG_QS1000_OUT_P1_CB(_devcb) \
34   devcb = &qs1000_device::set_out_p1_callback(*device, DEVCB2_##_devcb);
35
36#define MCFG_QS1000_OUT_P2_CB(_devcb) \
37   devcb = &qs1000_device::set_out_p2_callback(*device, DEVCB2_##_devcb);
38
39#define MCFG_QS1000_OUT_P3_CB(_devcb) \
40   devcb = &qs1000_device::set_out_p3_callback(*device, DEVCB2_##_devcb);
41   
42/*#define MCFG_QS1000_SERIAL_W_CB(_devcb) \
43   devcb = &qs1000_device::set_serial_w_callback(*device, DEVCB2_##_devcb);*/
44
3045//**************************************************************************
3146//  TYPE DEFINITIONS
3247//**************************************************************************
r28734r28735
3449#define QS1000_CHANNELS         32
3550#define QS1000_ADDRESS_MASK     0xffffff
3651
37class qs1000_device;
38
39
40struct qs1000_interface
41{
42   bool                    m_external_rom;
43
44   devcb_read8             m_in_p1_cb;
45   devcb_read8             m_in_p2_cb;
46   devcb_read8             m_in_p3_cb;
47
48   devcb_write8            m_out_p1_cb;
49   devcb_write8            m_out_p2_cb;
50   devcb_write8            m_out_p3_cb;
51
52   devcb_write8            m_serial_w;
53};
54
5552// ======================> qs1000_device
5653
5754class qs1000_device :   public device_t,
5855                  public device_sound_interface,
59                  public device_memory_interface,
60                  public qs1000_interface
56                  public device_memory_interface
6157{
6258public:
6359   // construction/destruction
6460   qs1000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
6561
62   static void set_external_rom(device_t &device, bool external_rom) { downcast<qs1000_device &>(device).m_external_rom = external_rom; }
63   template<class _Object> static devcb2_base &set_in_p1_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_in_p1_cb.set_callback(object); }
64   template<class _Object> static devcb2_base &set_in_p2_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_in_p2_cb.set_callback(object); }
65   template<class _Object> static devcb2_base &set_in_p3_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_in_p3_cb.set_callback(object); }
66   template<class _Object> static devcb2_base &set_out_p1_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_out_p1_cb.set_callback(object); }
67   template<class _Object> static devcb2_base &set_out_p2_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_out_p2_cb.set_callback(object); }
68   template<class _Object> static devcb2_base &set_out_p3_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_out_p3_cb.set_callback(object); }
69   //template<class _Object> static devcb2_base &set_serial_w_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_serial_w_cb.set_callback(object); }
70   
6671   // external
6772   void serial_in(UINT8 data);
6873   void set_irq(int state);
r28734r28735
7176   // device-level overrides
7277   virtual const rom_entry *device_rom_region() const;
7378   virtual machine_config_constructor device_mconfig_additions() const;
74   virtual void device_config_complete();
7579   virtual void device_start();
7680   virtual void device_reset();
7781   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
r28734r28735
108112   void start_voice(int ch);
109113   void set_voice_regs(int ch);
110114
115   bool                    m_external_rom;
116   
111117   // Callbacks
112   devcb_resolved_read8            m_p1_r_func;
113   devcb_resolved_read8            m_p2_r_func;
114   devcb_resolved_read8            m_p3_r_func;
115   devcb_resolved_write8           m_p1_w_func;
116   devcb_resolved_write8           m_p2_w_func;
117   devcb_resolved_write8           m_p3_w_func;
118   devcb2_read8             m_in_p1_cb;
119   devcb2_read8             m_in_p2_cb;
120   devcb2_read8             m_in_p3_cb;
118121
122   devcb2_write8            m_out_p1_cb;
123   devcb2_write8            m_out_p2_cb;
124   devcb2_write8            m_out_p3_cb;
125
126   //devcb2_write8            m_serial_w_cb;
127
119128   // Internal state
120129   const address_space_config      m_space_config;
121130   sound_stream *                  m_stream;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team