mirror of
https://github.com/holub/mame
synced 2025-05-22 21:58:57 +03:00
03718: shdancer: Freeze on stage 2-4 [Phil Bennett]
segaic16.c: Treat unsupported read and write accesses to defined devices/memory as open-bus reads or unmapped writes instead of falling through to the memory-mapping registers [Phil Bennett]
This commit is contained in:
parent
2cd0d9ca47
commit
71090cf8fa
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user