|
|
| version 1.7, 2004/03/30 08:48:46 | version 1.8, 2004/06/02 11:02:53 |
|---|---|
| Line 19 static const SINT32 pcm86rescue[] = {PCM | Line 19 static const SINT32 pcm86rescue[] = {PCM |
| static void IOOUTCALL pcm86_oa460(UINT port, REG8 val) { | static void IOOUTCALL pcm86_oa460(UINT port, REG8 val) { |
| // TRACEOUT(("86pcm out %.4x %.2x", port, val)); | |
| pcm86.extfunc = val; | pcm86.extfunc = val; |
| fmboard_extenable((REG8)(val & 1)); | fmboard_extenable((REG8)(val & 1)); |
| (void)port; | (void)port; |
| Line 26 static void IOOUTCALL pcm86_oa460(UINT p | Line 27 static void IOOUTCALL pcm86_oa460(UINT p |
| static void IOOUTCALL pcm86_oa466(UINT port, REG8 val) { | static void IOOUTCALL pcm86_oa466(UINT port, REG8 val) { |
| // TRACEOUT(("86pcm out %.4x %.2x", port, val)); | |
| if ((val & 0xe0) == 0xa0) { | if ((val & 0xe0) == 0xa0) { |
| sound_sync(); | sound_sync(); |
| pcm86.vol5 = (~val) & 15; | pcm86.vol5 = (~val) & 15; |
| Line 38 static void IOOUTCALL pcm86_oa468(UINT p | Line 40 static void IOOUTCALL pcm86_oa468(UINT p |
| REG8 xchgbit; | REG8 xchgbit; |
| // TRACEOUT(("86pcm out %.4x %.2x", port, val)); | |
| sound_sync(); | sound_sync(); |
| xchgbit = pcm86.fifo ^ val; | xchgbit = pcm86.fifo ^ val; |
| // バッファリセット判定 | // バッファリセット判定 |
| Line 50 static void IOOUTCALL pcm86_oa468(UINT p | Line 53 static void IOOUTCALL pcm86_oa468(UINT p |
| pcm86.lastclock <<= 6; | pcm86.lastclock <<= 6; |
| } | } |
| if ((xchgbit & 0x10) && (!(val & 0x10))) { | if ((xchgbit & 0x10) && (!(val & 0x10))) { |
| pcm86.write = 0; | pcm86.irqflag = 0; |
| pcm86.reqirq = 0; | // pcm86.write = 0; |
| // pcm86.reqirq = 0; | |
| } | } |
| // サンプリングレート変更 | // サンプリングレート変更 |
| if (xchgbit & 7) { | if (xchgbit & 7) { |
| pcm86.rescue = pcm86rescue[val & 7] << pcm86.stepbit; | pcm86.rescue = pcm86rescue[val & 7] << pcm86.stepbit; |
| pcm86_setpcmrate(val); | pcm86_setpcmrate(val); |
| } | } |
| #if 1 // これ重大なバグ.... | |
| pcm86.fifo = val; | |
| #else | |
| pcm86.fifo = val & (~0x10); | pcm86.fifo = val & (~0x10); |
| #endif | |
| if ((xchgbit & 0x80) && (val & 0x80)) { | if ((xchgbit & 0x80) && (val & 0x80)) { |
| pcm86.lastclock = CPU_CLOCK + CPU_BASECLOCK - CPU_REMCLOCK; | pcm86.lastclock = CPU_CLOCK + CPU_BASECLOCK - CPU_REMCLOCK; |
| pcm86.lastclock <<= 6; | pcm86.lastclock <<= 6; |
| Line 69 static void IOOUTCALL pcm86_oa468(UINT p | Line 77 static void IOOUTCALL pcm86_oa468(UINT p |
| static void IOOUTCALL pcm86_oa46a(UINT port, REG8 val) { | static void IOOUTCALL pcm86_oa46a(UINT port, REG8 val) { |
| // TRACEOUT(("86pcm out %.4x %.2x", port, val)); | |
| sound_sync(); | sound_sync(); |
| if (pcm86.fifo & 0x20) { | if (pcm86.fifo & 0x20) { |
| #if 1 | #if 1 |
| Line 97 static void IOOUTCALL pcm86_oa46a(UINT p | Line 106 static void IOOUTCALL pcm86_oa46a(UINT p |
| static void IOOUTCALL pcm86_oa46c(UINT port, REG8 val) { | static void IOOUTCALL pcm86_oa46c(UINT port, REG8 val) { |
| // TRACEOUT(("86pcm out %.4x %.2x", port, val)); | |
| if (pcm86.virbuf < PCM86_LOGICALBUF) { | if (pcm86.virbuf < PCM86_LOGICALBUF) { |
| pcm86.virbuf++; | pcm86.virbuf++; |
| pcm86.buffer[pcm86.wrtpos] = val; | pcm86.buffer[pcm86.wrtpos] = val; |
| Line 107 static void IOOUTCALL pcm86_oa46c(UINT p | Line 117 static void IOOUTCALL pcm86_oa46c(UINT p |
| pcm86.realbuf &= 3; // align4決めウチ | pcm86.realbuf &= 3; // align4決めウチ |
| pcm86.realbuf += PCM86_REALBUFSIZE - 4; | pcm86.realbuf += PCM86_REALBUFSIZE - 4; |
| } | } |
| pcm86.write = 1; | // pcm86.write = 1; |
| pcm86.reqirq = 1; | pcm86.reqirq = 1; |
| } | } |
| (void)port; | (void)port; |
| Line 147 static REG8 IOINPCALL pcm86_ia466(UINT p | Line 157 static REG8 IOINPCALL pcm86_ia466(UINT p |
| ret |= 0x40; // ちと変… | ret |= 0x40; // ちと変… |
| } | } |
| (void)port; | (void)port; |
| // TRACEOUT(("86pcm in %.4x %.2x", port, ret)); | |
| return(ret); | return(ret); |
| } | } |
| Line 182 static REG8 IOINPCALL pcm86_ia468(UINT p | Line 193 static REG8 IOINPCALL pcm86_ia468(UINT p |
| } | } |
| #endif | #endif |
| (void)port; | (void)port; |
| // TRACEOUT(("86pcm in %.4x %.2x", port, ret)); | |
| return(ret); | return(ret); |
| } | } |
| static REG8 IOINPCALL pcm86_ia46a(UINT port) { | static REG8 IOINPCALL pcm86_ia46a(UINT port) { |
| (void)port; | (void)port; |
| // TRACEOUT(("86pcm in %.4x %.2x", port, pcm86.dactrl)); | |
| return(pcm86.dactrl); | return(pcm86.dactrl); |
| } | } |