Previous 199869 Revisions Next

r30741 Saturday 31st May, 2014 at 12:46:59 UTC by David Haywood
update csplayh5.c (nw)

(these Nichibutsu games all seem to use common sound systems, so we could probably combine the sound system emulation in a single file rather then duplicating it)
[src/mame/drivers]csplayh5.c

trunk/src/mame/drivers/csplayh5.c
r30740r30741
4949      { }
5050
5151   UINT16 m_mux_data;
52   UINT8 m_pio_dir[5];
53   UINT8 m_pio_latch[5];
5452
53
5554   required_device<cpu_device> m_maincpu;
5655   required_device<tmp68301_device> m_tmp68301;
5756   required_device<v9958_device> m_v9958;
r30740r30741
6160   DECLARE_READ16_MEMBER(test_r);
6261   DECLARE_READ8_MEMBER(csplayh5_sound_r);
6362   DECLARE_WRITE8_MEMBER(csplayh5_soundclr_w);
64   DECLARE_READ8_MEMBER(tmpz84c011_pio_r);
65   DECLARE_WRITE8_MEMBER(tmpz84c011_pio_w);
66   DECLARE_READ8_MEMBER(tmpz84c011_0_pa_r);
67   DECLARE_READ8_MEMBER(tmpz84c011_0_pb_r);
68   DECLARE_READ8_MEMBER(tmpz84c011_0_pc_r);
69   DECLARE_READ8_MEMBER(tmpz84c011_0_pd_r);
70   DECLARE_READ8_MEMBER(tmpz84c011_0_pe_r);
71   DECLARE_WRITE8_MEMBER(tmpz84c011_0_pa_w);
72   DECLARE_WRITE8_MEMBER(tmpz84c011_0_pb_w);
73   DECLARE_WRITE8_MEMBER(tmpz84c011_0_pc_w);
74   DECLARE_WRITE8_MEMBER(tmpz84c011_0_pd_w);
75   DECLARE_WRITE8_MEMBER(tmpz84c011_0_pe_w);
76   DECLARE_READ8_MEMBER(tmpz84c011_0_dir_pa_r);
77   DECLARE_READ8_MEMBER(tmpz84c011_0_dir_pb_r);
78   DECLARE_READ8_MEMBER(tmpz84c011_0_dir_pc_r);
79   DECLARE_READ8_MEMBER(tmpz84c011_0_dir_pd_r);
80   DECLARE_READ8_MEMBER(tmpz84c011_0_dir_pe_r);
81   DECLARE_WRITE8_MEMBER(tmpz84c011_0_dir_pa_w);
82   DECLARE_WRITE8_MEMBER(tmpz84c011_0_dir_pb_w);
83   DECLARE_WRITE8_MEMBER(tmpz84c011_0_dir_pc_w);
84   DECLARE_WRITE8_MEMBER(tmpz84c011_0_dir_pd_w);
85   DECLARE_WRITE8_MEMBER(tmpz84c011_0_dir_pe_w);
63   
64   DECLARE_READ8_MEMBER(soundcpu_portd_r);
65   DECLARE_WRITE8_MEMBER(soundcpu_porta_w);
66   DECLARE_WRITE8_MEMBER(soundcpu_dac2_w);
67   DECLARE_WRITE8_MEMBER(soundcpu_dac1_w);
68   DECLARE_WRITE8_MEMBER(soundcpu_porte_w);
69
8670   DECLARE_DRIVER_INIT(mjmania);
8771   DECLARE_DRIVER_INIT(csplayh5);
8872   DECLARE_DRIVER_INIT(fuudol);
r30740r30741
212196   soundlatch_clear_byte_w(space, 0, 0);
213197}
214198
215READ8_MEMBER(csplayh5_state::tmpz84c011_pio_r)
216{
217   int portdata;
218199
219   switch (offset)
220   {
221      case 0:         /* PA_0 */
222         portdata = 0xff;
223         break;
224      case 1:         /* PB_0 */
225         portdata = 0xff;
226         break;
227      case 2:         /* PC_0 */
228         portdata = 0xff;
229         break;
230      case 3:         /* PD_0 */
231         portdata = csplayh5_sound_r(space, 0);
232         break;
233      case 4:         /* PE_0 */
234         portdata = 0xff;
235         break;
236
237      default:
238         logerror("%s: TMPZ84C011_PIO Unknown Port Read %02X\n", machine().describe_context(), offset);
239         portdata = 0xff;
240         break;
241   }
242
243   return portdata;
244}
245
246WRITE8_MEMBER(csplayh5_state::tmpz84c011_pio_w)
200READ8_MEMBER(csplayh5_state::soundcpu_portd_r)
247201{
248   switch (offset)
249   {
250      case 0:         /* PA_0 */
251         csplayh5_soundbank_w(machine(), data & 0x03);
252         break;
253      case 1:         /* PB_0 */
254         m_dac2->DAC_WRITE(data);
255         break;
256      case 2:         /* PC_0 */
257         m_dac1->DAC_WRITE(data);
258         break;
259      case 3:         /* PD_0 */
260         break;
261      case 4:         /* PE_0 */
262         if (!(data & 0x01)) csplayh5_soundclr_w(space, 0, 0);
263         break;
264
265      default:
266         logerror("%s: TMPZ84C011_PIO Unknown Port Write %02X, %02X\n", machine().describe_context(), offset, data);
267         break;
268   }
202   return csplayh5_sound_r(space, 0);
269203}
270204
271
272/* CPU interface */
273READ8_MEMBER(csplayh5_state::tmpz84c011_0_pa_r)
205WRITE8_MEMBER(csplayh5_state::soundcpu_porta_w)
274206{
275   return (tmpz84c011_pio_r(space,0) & ~m_pio_dir[0]) | (m_pio_latch[0] & m_pio_dir[0]);
207   csplayh5_soundbank_w(machine(), data & 0x03);
276208}
277209
278READ8_MEMBER(csplayh5_state::tmpz84c011_0_pb_r)
210WRITE8_MEMBER(csplayh5_state::soundcpu_dac2_w)
279211{
280   return (tmpz84c011_pio_r(space,1) & ~m_pio_dir[1]) | (m_pio_latch[1] & m_pio_dir[1]);
212   m_dac2->DAC_WRITE(data);
281213}
282214
283READ8_MEMBER(csplayh5_state::tmpz84c011_0_pc_r)
215WRITE8_MEMBER(csplayh5_state::soundcpu_dac1_w)
284216{
285   return (tmpz84c011_pio_r(space,2) & ~m_pio_dir[2]) | (m_pio_latch[2] & m_pio_dir[2]);
217   m_dac1->DAC_WRITE(data);
286218}
287219
288READ8_MEMBER(csplayh5_state::tmpz84c011_0_pd_r)
220WRITE8_MEMBER(csplayh5_state::soundcpu_porte_w)
289221{
290   return (tmpz84c011_pio_r(space,3) & ~m_pio_dir[3]) | (m_pio_latch[3] & m_pio_dir[3]);
222   if (!(data & 0x01)) csplayh5_soundclr_w(space, 0, 0);
291223}
292224
293READ8_MEMBER(csplayh5_state::tmpz84c011_0_pe_r)
294{
295   return (tmpz84c011_pio_r(space,4) & ~m_pio_dir[4]) | (m_pio_latch[4] & m_pio_dir[4]);
296}
297225
298WRITE8_MEMBER(csplayh5_state::tmpz84c011_0_pa_w)
299{
300   m_pio_latch[0] = data;
301   tmpz84c011_pio_w(space, 0, data);
302}
303226
304WRITE8_MEMBER(csplayh5_state::tmpz84c011_0_pb_w)
305{
306   m_pio_latch[1] = data;
307   tmpz84c011_pio_w(space, 1, data);
308}
309227
310WRITE8_MEMBER(csplayh5_state::tmpz84c011_0_pc_w)
311{
312   m_pio_latch[2] = data;
313   tmpz84c011_pio_w(space, 2, data);
314}
315228
316WRITE8_MEMBER(csplayh5_state::tmpz84c011_0_pd_w)
317{
318   m_pio_latch[3] = data;
319   tmpz84c011_pio_w(space, 3, data);
320}
321229
322WRITE8_MEMBER(csplayh5_state::tmpz84c011_0_pe_w)
323{
324   m_pio_latch[4] = data;
325   tmpz84c011_pio_w(space, 4, data);
326}
327
328
329READ8_MEMBER(csplayh5_state::tmpz84c011_0_dir_pa_r)
330{
331   return m_pio_dir[0];
332}
333
334READ8_MEMBER(csplayh5_state::tmpz84c011_0_dir_pb_r)
335{
336   return m_pio_dir[1];
337}
338
339READ8_MEMBER(csplayh5_state::tmpz84c011_0_dir_pc_r)
340{
341   return m_pio_dir[2];
342}
343
344READ8_MEMBER(csplayh5_state::tmpz84c011_0_dir_pd_r)
345{
346   return m_pio_dir[3];
347}
348
349READ8_MEMBER(csplayh5_state::tmpz84c011_0_dir_pe_r)
350{
351   return m_pio_dir[4];
352}
353
354
355WRITE8_MEMBER(csplayh5_state::tmpz84c011_0_dir_pa_w)
356{
357   m_pio_dir[0] = data;
358}
359
360WRITE8_MEMBER(csplayh5_state::tmpz84c011_0_dir_pb_w)
361{
362   m_pio_dir[1] = data;
363}
364
365WRITE8_MEMBER(csplayh5_state::tmpz84c011_0_dir_pc_w)
366{
367   m_pio_dir[2] = data;
368}
369
370WRITE8_MEMBER(csplayh5_state::tmpz84c011_0_dir_pd_w)
371{
372   m_pio_dir[3] = data;
373}
374
375WRITE8_MEMBER(csplayh5_state::tmpz84c011_0_dir_pe_w)
376{
377   m_pio_dir[4] = data;
378}
379
380
381230static ADDRESS_MAP_START( csplayh5_sound_map, AS_PROGRAM, 8, csplayh5_state )
382231   AM_RANGE(0x0000, 0x77ff) AM_ROM
383232   AM_RANGE(0x7800, 0x7fff) AM_RAM
r30740r30741
387236static ADDRESS_MAP_START( csplayh5_sound_io_map, AS_IO, 8, csplayh5_state )
388237   ADDRESS_MAP_GLOBAL_MASK(0xff)
389238   AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
390   AM_RANGE(0x50, 0x50) AM_READWRITE(tmpz84c011_0_pa_r, tmpz84c011_0_pa_w)
391   AM_RANGE(0x51, 0x51) AM_READWRITE(tmpz84c011_0_pb_r, tmpz84c011_0_pb_w)
392   AM_RANGE(0x52, 0x52) AM_READWRITE(tmpz84c011_0_pc_r, tmpz84c011_0_pc_w)
393   AM_RANGE(0x30, 0x30) AM_READWRITE(tmpz84c011_0_pd_r, tmpz84c011_0_pd_w)
394   AM_RANGE(0x40, 0x40) AM_READWRITE(tmpz84c011_0_pe_r, tmpz84c011_0_pe_w)
395   AM_RANGE(0x54, 0x54) AM_READWRITE(tmpz84c011_0_dir_pa_r, tmpz84c011_0_dir_pa_w)
396   AM_RANGE(0x55, 0x55) AM_READWRITE(tmpz84c011_0_dir_pb_r, tmpz84c011_0_dir_pb_w)
397   AM_RANGE(0x56, 0x56) AM_READWRITE(tmpz84c011_0_dir_pc_r, tmpz84c011_0_dir_pc_w)
398   AM_RANGE(0x34, 0x34) AM_READWRITE(tmpz84c011_0_dir_pd_r, tmpz84c011_0_dir_pd_w)
399   AM_RANGE(0x44, 0x44) AM_READWRITE(tmpz84c011_0_dir_pe_r, tmpz84c011_0_dir_pe_w)
400239   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ymsnd", ym3812_device, write)
401240ADDRESS_MAP_END
402241
r30740r30741
596435
597436void csplayh5_state::machine_reset()
598437{
599   address_space &space = m_maincpu->space(AS_PROGRAM);
600   int i;
601
602   // initialize TMPZ84C011 PIO
603   for (i = 0; i < 5; i++)
604   {
605      m_pio_dir[i] = m_pio_latch[i] = 0;
606      tmpz84c011_pio_w(space, i, 0);
607   }
608438}
609439
610440TIMER_DEVICE_CALLBACK_MEMBER(csplayh5_state::csplayh5_irq)
r30740r30741
644474   MCFG_CPU_IO_MAP(csplayh5_sub_io_map)
645475#endif
646476
647   MCFG_CPU_ADD("audiocpu", Z80, 8000000)  /* TMPZ84C011, unknown clock */
477   MCFG_CPU_ADD("audiocpu", TMPZ84C011, 8000000)  /* TMPZ84C011, unknown clock */
648478   MCFG_CPU_CONFIG(daisy_chain_sound)
649479   MCFG_CPU_PROGRAM_MAP(csplayh5_sound_map)
650480   MCFG_CPU_IO_MAP(csplayh5_sound_io_map)
481   MCFG_TMPZ84C011_PORTA_WRITE_CALLBACK(WRITE8(csplayh5_state, soundcpu_porta_w))
482   MCFG_TMPZ84C011_PORTB_WRITE_CALLBACK(WRITE8(csplayh5_state,soundcpu_dac2_w))
483   MCFG_TMPZ84C011_PORTC_WRITE_CALLBACK(WRITE8(csplayh5_state,soundcpu_dac1_w))
484   MCFG_TMPZ84C011_PORTD_READ_CALLBACK(READ8(csplayh5_state, soundcpu_portd_r))
485   MCFG_TMPZ84C011_PORTE_WRITE_CALLBACK(WRITE8(csplayh5_state,soundcpu_porte_w))
651486
652487   MCFG_DEVICE_ADD("ctc", Z80CTC, 8000000)
653488   MCFG_Z80CTC_INTR_CB(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))

Previous 199869 Revisions Next


© 1997-2024 The MAME Team