trunk/src/emu/sound/k053260.c
| r32718 | r32719 | |
| 318 | 318 | m_position = 0; |
| 319 | 319 | m_counter = 0; |
| 320 | 320 | m_output = 0; |
| 321 | | m_playing = 0; |
| 321 | m_playing = false; |
| 322 | 322 | m_start = 0; |
| 323 | 323 | m_length = 0; |
| 324 | 324 | m_pitch = 0; |
| 325 | 325 | m_volume = 0; |
| 326 | 326 | m_pan = 0; |
| 327 | | m_loop = 0; |
| 328 | | m_kadpcm = 0; |
| 327 | m_loop = false; |
| 328 | m_kadpcm = false; |
| 329 | 329 | update_pan_volume(); |
| 330 | 330 | } |
| 331 | 331 | |
| r32718 | r32719 | |
| 389 | 389 | |
| 390 | 390 | else |
| 391 | 391 | { |
| 392 | | m_position = m_kadpcm; // for kadpcm low bit is nybble offset, so must start at 1 due to preincrement |
| 392 | m_position = m_kadpcm ? 1 : 0; // for kadpcm low bit is nybble offset, so must start at 1 due to preincrement |
| 393 | 393 | m_counter = 0x1000 - CLOCKS_PER_SAMPLE; // force update on next sound_stream_update |
| 394 | 394 | m_output = 0; |
| 395 | | m_playing = 1; |
| 395 | m_playing = true; |
| 396 | 396 | if (LOG) logerror("K053260: start = %06x, length = %06x, pitch = %04x, vol = %02x, loop = %s, %s\n", |
| 397 | 397 | m_start, m_length, m_pitch, m_volume, m_loop ? "yes" : "no", m_kadpcm ? "KADPCM" : "PCM" ); |
| 398 | 398 | } |
| r32718 | r32719 | |
| 402 | 402 | { |
| 403 | 403 | m_position = 0; |
| 404 | 404 | m_output = 0; |
| 405 | | m_playing = 0; |
| 405 | m_playing = false; |
| 406 | 406 | } |
| 407 | 407 | |
| 408 | 408 | void k053260_device::KDSC_Voice::play(stream_sample_t *outputs) |
| r32718 | r32719 | |
| 413 | 413 | { |
| 414 | 414 | m_counter = m_counter - 0x1000 + m_pitch; |
| 415 | 415 | |
| 416 | | UINT32 bytepos = ++m_position >> m_kadpcm; |
| 416 | UINT32 bytepos = ++m_position >> ( m_kadpcm ? 1 : 0 ); |
| 417 | 417 | /* |
| 418 | 418 | Yes, _pre_increment. Playback must start 1 byte position after the |
| 419 | 419 | start address written to the register, or else ADPCM sounds will |
| r32718 | r32719 | |
| 432 | 432 | } |
| 433 | 433 | else |
| 434 | 434 | { |
| 435 | | m_playing = 0; |
| 435 | m_playing = false; |
| 436 | 436 | return; |
| 437 | 437 | } |
| 438 | 438 | } |