diff --git a/src/mame/machine/segaic16.c b/src/mame/machine/segaic16.c index 2b061ea41ff..1ab0e8a5c0f 100644 --- a/src/mame/machine/segaic16.c +++ b/src/mame/machine/segaic16.c @@ -295,11 +295,12 @@ static UINT16 memory_mapper_r(struct memory_mapper_chip *chip, offs_t offset, UI static void update_memory_mapping(running_machine *machine, struct memory_mapper_chip *chip, int decrypt) { int rgnum; + address_space *space = cpu_get_address_space(chip->cpu, ADDRESS_SPACE_PROGRAM); if (LOG_MEMORY_MAP) mame_printf_debug("----\nRemapping:\n"); /* first reset everything back to the beginning */ - memory_install_readwrite16_handler(cpu_get_address_space(chip->cpu, ADDRESS_SPACE_PROGRAM), 0x000000, 0xffffff, 0, 0, segaic16_memory_mapper_lsb_r, segaic16_memory_mapper_lsb_w); + memory_install_readwrite16_handler(space, 0x000000, 0xffffff, 0, 0, segaic16_memory_mapper_lsb_r, segaic16_memory_mapper_lsb_w); /* loop over the regions */ for (rgnum = 0; chip->map[rgnum].regbase != 0; rgnum++) @@ -328,13 +329,18 @@ static void update_memory_mapping(running_machine *machine, struct memory_mapper /* map it */ if (read != NULL) - memory_install_read16_handler(cpu_get_address_space(chip->cpu, ADDRESS_SPACE_PROGRAM), region_start, region_end, 0, region_mirror, read); + memory_install_read16_handler(space, region_start, region_end, 0, region_mirror, read); else if (readbank != NULL) - memory_install_read_bank(cpu_get_address_space(chip->cpu, ADDRESS_SPACE_PROGRAM), region_start, region_end, 0, region_mirror, readbank); + memory_install_read_bank(space, region_start, region_end, 0, region_mirror, readbank); + else + memory_install_read16_handler(space, region_start, region_end, 0, region_mirror, segaic16_open_bus_r); + if (write != NULL) - memory_install_write16_handler(cpu_get_address_space(chip->cpu, ADDRESS_SPACE_PROGRAM), region_start, region_end, 0, region_mirror, write); + memory_install_write16_handler(space, region_start, region_end, 0, region_mirror, write); else if (writebank != NULL) - memory_install_write_bank(cpu_get_address_space(chip->cpu, ADDRESS_SPACE_PROGRAM), region_start, region_end, 0, region_mirror, writebank); + memory_install_write_bank(space, region_start, region_end, 0, region_mirror, writebank); + else + memory_unmap_write(space, region_start, region_end, 0, region_mirror); /* set the bank pointer */ if (readbank != NULL)