|
|
| version 1.6, 2004/03/30 07:12:03 | version 1.7, 2004/03/30 08:48:46 |
|---|---|
| Line 121 static REG8 IOINPCALL pcm86_ia460(UINT p | Line 121 static REG8 IOINPCALL pcm86_ia460(UINT p |
| static REG8 IOINPCALL pcm86_ia466(UINT port) { | static REG8 IOINPCALL pcm86_ia466(UINT port) { |
| UINT32 nowclk; | |
| UINT32 past; | UINT32 past; |
| UINT32 cnt; | |
| UINT32 stepclock; | |
| REG8 ret; | REG8 ret; |
| // こんなんでお茶濁すんなら ちゃんと書き直しましょうね 漏れ… | past = CPU_CLOCK + CPU_BASECLOCK - CPU_REMCLOCK; |
| if (!(pcm86.fifo & 0x80)) { | past <<= 6; |
| ret = 0; | past -= pcm86.lastclock; |
| } | stepclock = pcm86.stepclock; |
| else { | if (past >= stepclock) { |
| sound_sync(); | cnt = past / stepclock; |
| nowclk = CPU_CLOCK + CPU_BASECLOCK - CPU_REMCLOCK; | pcm86.lastclock += (cnt * stepclock); |
| nowclk <<= 6; | past -= cnt * stepclock; |
| past = nowclk - pcm86.lastclock; | if (pcm86.fifo & 0x80) { |
| if (past >= pcm86.stepclock) { | sound_sync(); |
| RECALC_NOWCLKWAIT; | RECALC_NOWCLKWAIT(cnt); |
| past = nowclk - pcm86.lastclock; | |
| } | } |
| ret = ((past << 1) >= pcm86.stepclock)?1:0; | |
| } | } |
| ret = ((past << 1) >= stepclock)?1:0; | |
| if (pcm86.virbuf >= PCM86_LOGICALBUF) { // バッファフル | if (pcm86.virbuf >= PCM86_LOGICALBUF) { // バッファフル |
| ret |= 0x80; | ret |= 0x80; |
| } | } |