Merge branch 'master' of https://github.com/86Box/86Box
This commit is contained in:
@@ -1599,8 +1599,14 @@ sb_16_pnp_config_changed(uint8_t ld, isapnp_device_config_t *config, void *priv)
|
||||
sb_dsp_setdma8(&sb->dsp, val);
|
||||
|
||||
val = config->dma[1].dma;
|
||||
if (val != ISAPNP_DMA_DISABLED)
|
||||
sb_dsp_setdma16(&sb->dsp, val);
|
||||
sb_dsp_setdma16_enabled(&sb->dsp, val != ISAPNP_DMA_DISABLED);
|
||||
sb_dsp_setdma16_translate(&sb->dsp, val < ISAPNP_DMA_DISABLED);
|
||||
if (val != ISAPNP_DMA_DISABLED) {
|
||||
if (sb->dsp.sb_16_dma_supported)
|
||||
sb_dsp_setdma16(&sb->dsp, val);
|
||||
else
|
||||
sb_dsp_setdma16_8(&sb->dsp, val);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -1635,90 +1641,8 @@ sb_vibra16_pnp_config_changed(uint8_t ld, isapnp_device_config_t *config, void *
|
||||
|
||||
switch (ld) {
|
||||
case 0: /* Audio */
|
||||
io_removehandler(addr, 0x0004,
|
||||
sb->opl.read, NULL, NULL,
|
||||
sb->opl.write, NULL, NULL,
|
||||
sb->opl.priv);
|
||||
io_removehandler(addr + 8, 0x0002,
|
||||
sb->opl.read, NULL, NULL,
|
||||
sb->opl.write, NULL, NULL,
|
||||
sb->opl.priv);
|
||||
io_removehandler(addr + 4, 0x0002,
|
||||
sb_ct1745_mixer_read, NULL, NULL,
|
||||
sb_ct1745_mixer_write, NULL, NULL,
|
||||
sb);
|
||||
|
||||
addr = sb->opl_pnp_addr;
|
||||
if (addr) {
|
||||
sb->opl_pnp_addr = 0;
|
||||
io_removehandler(addr, 0x0004,
|
||||
sb->opl.read, NULL, NULL,
|
||||
sb->opl.write, NULL, NULL,
|
||||
sb->opl.priv);
|
||||
}
|
||||
|
||||
sb_dsp_setaddr(&sb->dsp, 0);
|
||||
sb_dsp_setirq(&sb->dsp, 0);
|
||||
sb_dsp_setdma8(&sb->dsp, ISAPNP_DMA_DISABLED);
|
||||
sb_dsp_setdma16(&sb->dsp, ISAPNP_DMA_DISABLED);
|
||||
|
||||
mpu401_change_addr(sb->mpu, 0);
|
||||
|
||||
if (config->activate) {
|
||||
addr = config->io[0].base;
|
||||
if (addr != ISAPNP_IO_DISABLED) {
|
||||
io_sethandler(addr, 0x0004,
|
||||
sb->opl.read, NULL, NULL,
|
||||
sb->opl.write, NULL, NULL,
|
||||
sb->opl.priv);
|
||||
io_sethandler(addr + 8, 0x0002,
|
||||
sb->opl.read, NULL, NULL,
|
||||
sb->opl.write, NULL, NULL,
|
||||
sb->opl.priv);
|
||||
io_sethandler(addr + 4, 0x0002,
|
||||
sb_ct1745_mixer_read, NULL, NULL,
|
||||
sb_ct1745_mixer_write, NULL, NULL,
|
||||
sb);
|
||||
|
||||
sb_dsp_setaddr(&sb->dsp, addr);
|
||||
}
|
||||
|
||||
addr = config->io[1].base;
|
||||
if (addr != ISAPNP_IO_DISABLED)
|
||||
mpu401_change_addr(sb->mpu, addr);
|
||||
|
||||
addr = config->io[2].base;
|
||||
if (addr != ISAPNP_IO_DISABLED) {
|
||||
sb->opl_pnp_addr = addr;
|
||||
io_sethandler(addr, 0x0004,
|
||||
sb->opl.read, NULL, NULL,
|
||||
sb->opl.write, NULL, NULL,
|
||||
sb->opl.priv);
|
||||
}
|
||||
|
||||
val = config->irq[0].irq;
|
||||
if (val != ISAPNP_IRQ_DISABLED)
|
||||
sb_dsp_setirq(&sb->dsp, val);
|
||||
|
||||
val = config->dma[0].dma;
|
||||
if (val != ISAPNP_DMA_DISABLED)
|
||||
sb_dsp_setdma8(&sb->dsp, val);
|
||||
|
||||
val = config->dma[1].dma;
|
||||
sb_dsp_setdma16_enabled(&sb->dsp, val != ISAPNP_DMA_DISABLED);
|
||||
sb_dsp_setdma16_translate(&sb->dsp, val < ISAPNP_DMA_DISABLED);
|
||||
if (val != ISAPNP_DMA_DISABLED) {
|
||||
if (sb->dsp.sb_16_dma_supported)
|
||||
sb_dsp_setdma16(&sb->dsp, val);
|
||||
else
|
||||
sb_dsp_setdma16_8(&sb->dsp, val);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 1: /* Game */
|
||||
gameport_remap(sb->gameport, (config->activate && (config->io[0].base != ISAPNP_IO_DISABLED)) ? config->io[0].base : 0);
|
||||
sb_16_pnp_config_changed(ld * 3, config, sb);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -2306,7 +2230,7 @@ sb_16_pnp_init(UNUSED(const device_t *info))
|
||||
sb_dsp_setdma16(&sb->dsp, ISAPNP_DMA_DISABLED);
|
||||
|
||||
mpu401_change_addr(sb->mpu, 0);
|
||||
ide_remove_handlers(2);
|
||||
ide_remove_handlers(3);
|
||||
|
||||
sb->gameport_addr = 0;
|
||||
gameport_remap(sb->gameport, 0);
|
||||
@@ -2635,7 +2559,8 @@ sb_awe32_pnp_init(const device_t *info)
|
||||
sb_dsp_setdma16(&sb->dsp, ISAPNP_DMA_DISABLED);
|
||||
|
||||
mpu401_change_addr(sb->mpu, 0);
|
||||
ide_remove_handlers(2);
|
||||
if ((info->local != 2) && (info->local != 3) && (info->local != 4))
|
||||
ide_remove_handlers(3);
|
||||
|
||||
emu8k_change_addr(&sb->emu8k, 0);
|
||||
|
||||
|
Reference in New Issue
Block a user