1
0
Fork 0

- Fix SB16 16-bit interrupt cause identification (makes games using CT-VOICE.DRV work).

- Add SB16 identification bit for an older version of CT-VOICE.DRV
Thanks ripsaw8080.

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3625
This commit is contained in:
Ralf Grillenberger 2010-07-28 20:18:04 +00:00
parent 0af0da678c
commit 8d916cfa5a

View file

@ -504,6 +504,8 @@ static void GenerateDMASound(Bitu size) {
sb.dma.left-=read;
if (!sb.dma.left) {
PIC_RemoveEvents(END_DMA_Event);
if (sb.dma.mode >= DSP_DMA_16) SB_RaiseIRQ(SB_IRQ_16);
else SB_RaiseIRQ(SB_IRQ_8);
if (!sb.dma.autoinit) {
LOG(LOG_SB,LOG_NORMAL)("Single cycle transfer ended");
sb.mode=MODE_NONE;
@ -515,8 +517,6 @@ static void GenerateDMASound(Bitu size) {
sb.mode=MODE_NONE;
}
}
if (sb.dma.mode >= DSP_DMA_16) SB_RaiseIRQ(SB_IRQ_16);
else SB_RaiseIRQ(SB_IRQ_8);
}
}
@ -1345,7 +1345,8 @@ static Bit8u CTMIXER_Read(void) {
return ret;
case 0x82: /* IRQ Status */
return (sb.irq.pending_8bit ? 0x1 : 0) |
(sb.irq.pending_16bit ? 0x2 : 0);
(sb.irq.pending_16bit ? 0x2 : 0) |
((sb.type == SBT_16) ? 0x20 : 0);
default:
if ( ((sb.type == SBT_PRO1 || sb.type == SBT_PRO2) && sb.mixer.index==0x0c) || /* Input control on SBPro */
(sb.type == SBT_16 && sb.mixer.index >= 0x3b && sb.mixer.index <= 0x47)) /* New SB16 registers */