trunk/src/mame/drivers/hankin.c
| r31764 | r31765 | |
| 430 | 430 | { |
| 431 | 431 | m_timer_s[2]++; |
| 432 | 432 | offs_t offs = (m_timer_s[2] & 31) | (m_ic2a << 5); |
| 433 | | m_dac->write_unsigned8(m_p_prom[offs]<< m_vol); |
| 433 | m_dac->write_unsigned8(m_p_prom[offs]<< 4); |
| 434 | 434 | } |
| 435 | 435 | else |
| 436 | 436 | m_timer_s[2] = 0; |
| r31764 | r31765 | |
| 441 | 441 | void hankin_state::machine_reset() |
| 442 | 442 | { |
| 443 | 443 | m_p_prom = memregion("roms")->base() + 0x1800; |
| 444 | m_vol = 0; |
| 444 | 445 | } |
| 445 | 446 | |
| 446 | 447 | // PA0-3 = sound data from main cpu |
| r31764 | r31765 | |
| 454 | 455 | { |
| 455 | 456 | m_ic2a = data >> 4; |
| 456 | 457 | offs_t offs = (m_timer_s[2] & 31) | (m_ic2a << 5); |
| 457 | | m_dac->write_unsigned8(m_p_prom[offs]<< m_vol); |
| 458 | m_dac->write_unsigned8(m_p_prom[offs]<< 4); |
| 458 | 459 | } |
| 459 | 460 | |
| 460 | 461 | // PB0-3 = preset on 74LS161 |
| r31764 | r31765 | |
| 462 | 463 | WRITE8_MEMBER( hankin_state::ic2_b_w ) |
| 463 | 464 | { |
| 464 | 465 | m_ic2b = data; |
| 465 | | m_vol = (m_ic2b & 0xf0) / 50; // 0 to 4 |
| 466 | |
| 467 | data >>= 4; |
| 468 | |
| 469 | if (data != m_vol) |
| 470 | { |
| 471 | m_vol = data; |
| 472 | float vol = m_vol/16.666+0.1; |
| 473 | m_dac->set_output_gain(0, vol); |
| 474 | } |
| 475 | |
| 466 | 476 | } |
| 467 | 477 | |
| 468 | 478 | // low to divide 555 by 2 |