From 49f4b2c8fb2c263f6863d27e0d2497c28134859b Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 16 Jul 2022 02:52:50 +0200 Subject: [PATCH] AudioPCI and GUS. --- src/sound/snd_audiopci.c | 4 +++- src/sound/snd_gus.c | 12 +++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/sound/snd_audiopci.c b/src/sound/snd_audiopci.c index 251fda72f..fe00038c7 100644 --- a/src/sound/snd_audiopci.c +++ b/src/sound/snd_audiopci.c @@ -306,7 +306,9 @@ es1371_reset(void *p) es1371_t *dev = (es1371_t *) p; int i; +#ifdef OLD_NMI_BEHAVIOR nmi = 0; +#endif /* Interrupt/Chip Select Control Register, Address 00H Addressable as byte, word, longword */ @@ -1240,7 +1242,7 @@ capture_event(es1371_t *dev, int type, int rw, uint16_t port) dev->legacy_ctrl &= ~LEGACY_EVENT_TYPE_RW; dev->legacy_ctrl |= ((port << LEGACY_EVENT_ADDR_SHIFT) & LEGACY_EVENT_ADDR_MASK); dev->legacy_ctrl &= ~LEGACY_INT; - nmi = 1; + nmi_raise(); } static void diff --git a/src/sound/snd_gus.c b/src/sound/snd_gus.c index 293be8915..2bef7edac 100644 --- a/src/sound/snd_gus.c +++ b/src/sound/snd_gus.c @@ -452,11 +452,15 @@ writegus(uint16_t addr, uint8_t val, void *p) gus->irqstatus &= ~8; if (!(val & 0x20)) { gus->ad_status &= ~0x18; +#ifdef OLD_NMI_BEHAVIOR nmi = 0; +#endif } if (!(val & 0x02)) { gus->ad_status &= ~0x01; +#ifdef OLD_NMI_BEHAVIOR nmi = 0; +#endif } gus->tctrl = val; gus->sb_ctrl = val; @@ -492,7 +496,7 @@ writegus(uint16_t addr, uint8_t val, void *p) gus->ad_status |= 0x01; if (gus->sb_ctrl & 0x02) { if (gus->sb_nmi) - nmi = 1; + nmi_raise(); else if (gus->irq != -1) picint(1 << gus->irq); } @@ -568,7 +572,7 @@ writegus(uint16_t addr, uint8_t val, void *p) gus->ad_status |= 0x08; if (gus->sb_ctrl & 0x20) { if (gus->sb_nmi) - nmi = 1; + nmi_raise(); else if (gus->irq != -1) picint(1 << gus->irq); } @@ -580,7 +584,7 @@ writegus(uint16_t addr, uint8_t val, void *p) gus->ad_status |= 0x10; if (gus->sb_ctrl & 0x20) { if (gus->sb_nmi) - nmi = 1; + nmi_raise(); else if (gus->irq != -1) picint(1 << gus->irq); } @@ -832,7 +836,9 @@ readgus(uint16_t addr, void *p) case 0x209: gus->ad_status &= ~0x01; +#ifdef OLD_NMI_BEHAVIOR nmi = 0; +#endif /*FALLTHROUGH*/ case 0x389: val = gus->ad_data;