diff --git a/src/game/gameport.c b/src/game/gameport.c index 67447d447..5bbfe8aac 100644 --- a/src/game/gameport.c +++ b/src/game/gameport.c @@ -306,6 +306,9 @@ gameport_remap(void *priv, uint16_t address) gameport_t *dev = (gameport_t *) priv; gameport_t *other_dev; + if (dev == NULL) + return; + if (dev->addr) { /* Remove this port from the active ports list. */ if (active_gameports == dev) { diff --git a/src/sound/snd_sb.c b/src/sound/snd_sb.c index cb2ede45a..4c73abf21 100644 --- a/src/sound/snd_sb.c +++ b/src/sound/snd_sb.c @@ -1152,8 +1152,9 @@ sb_ct1745_mixer_write(uint16_t addr, uint8_t val, void *priv) else if ((val & 0x06) == 0x02) mpu401_change_addr(sb->mpu, 0); } + + sb->gameport_addr = 0; if (sb->gameport != NULL) { - sb->gameport_addr = 0; gameport_remap(sb->gameport, 0); if (!(val & 0x01)) { sb->gameport_addr = 0x200; @@ -1373,7 +1374,7 @@ sb_ct1745_mixer_read(uint16_t addr, void *priv) else ret = 0x06; /* Should never happen. */ } - if (!sb->gameport_addr && (sb->gameport != NULL)) + if (!sb->gameport_addr) ret |= 0x01; break;