trunk/src/mame/audio/dcs.c
| r31387 | r31388 | |
| 298 | 298 | static ADDRESS_MAP_START( dcs_8k_program_map, AS_PROGRAM, 32, dcs_audio_device ) |
| 299 | 299 | AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("dcsint") |
| 300 | 300 | AM_RANGE(0x0800, 0x1fff) AM_RAM AM_SHARE("dcsext") |
| 301 | | AM_RANGE(0x3000, 0x3003) AM_READWRITE(input_latch32_r, output_latch32_w) |
| 301 | AM_RANGE(0x3000, 0x3003) AM_READWRITE(input_latch32_r, output_latch32_w) // why? |
| 302 | 302 | ADDRESS_MAP_END |
| 303 | 303 | |
| 304 | 304 | static ADDRESS_MAP_START( dcs_8k_data_map, AS_DATA, 16, dcs_audio_device ) |
| r31387 | r31388 | |
| 306 | 306 | AM_RANGE(0x0800, 0x1fff) AM_READWRITE(dcs_dataram_r, dcs_dataram_w) |
| 307 | 307 | AM_RANGE(0x2000, 0x2fff) AM_ROMBANK("databank") |
| 308 | 308 | AM_RANGE(0x3000, 0x3000) AM_WRITE(dcs_data_bank_select_w) |
| 309 | AM_RANGE(0x3400, 0x3403) AM_READWRITE(input_latch_r, output_latch_w) // mk3 etc. need this |
| 309 | 310 | AM_RANGE(0x3800, 0x39ff) AM_RAM |
| 310 | 311 | AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(adsp_control_r, adsp_control_w) |
| 311 | 312 | ADDRESS_MAP_END |
| r31387 | r31388 | |
| 1439 | 1440 | /* only boost for DCS2 boards */ |
| 1440 | 1441 | if (!m_auto_ack && !m_transfer.hle_enabled) |
| 1441 | 1442 | machine().scheduler().boost_interleave(attotime::from_nsec(500), attotime::from_usec(5)); |
| 1442 | | if (m_rev == 1 || m_rev == 15) |
| 1443 | if ( /* m_rev == 1 || */ m_rev == 15) // == 1 check breaks mk3 |
| 1443 | 1444 | return IS_OUTPUT_FULL() ? 0x80 : 0x00; |
| 1444 | 1445 | return m_latch_control; |
| 1445 | 1446 | } |
| r31387 | r31388 | |
| 1578 | 1579 | m_pre_output_data = data; |
| 1579 | 1580 | if (LOG_DCS_IO) |
| 1580 | 1581 | logerror("%08X:output_latch_w(%04X) (empty=%d)\n", space.device().safe_pc(), data, IS_OUTPUT_EMPTY()); |
| 1582 | |
| 1581 | 1583 | machine().scheduler().synchronize(timer_expired_delegate(FUNC(dcs_audio_device::latch_delayed_w),this), data>>8); |
| 1582 | 1584 | } |
| 1583 | 1585 | |
| r31387 | r31388 | |
| 1586 | 1588 | m_pre_output_data = data >> 8; |
| 1587 | 1589 | if (LOG_DCS_IO) |
| 1588 | 1590 | logerror("%08X:output_latch32_w(%04X) (empty=%d)\n", space.device().safe_pc(), data>>8, IS_OUTPUT_EMPTY()); |
| 1589 | | logerror("%08X:output_latch32_w(%04X) (empty=%d)\n", space.device().safe_pc(), data>>8, IS_OUTPUT_EMPTY()); |
| 1591 | |
| 1590 | 1592 | machine().scheduler().synchronize(timer_expired_delegate(FUNC(dcs_audio_device::latch_delayed_w),this), data>>8); |
| 1591 | 1593 | } |
| 1592 | 1594 | |