- switch(cfg->map_type[i]) {
- case MAPTYPE_ROM:
- if (CHKRANGE(addr, cfg->map_offset[i], cfg->map_size[i]))
- return 1;
- break;
- case MAPTYPE_RAM:
- if (CHKRANGE(addr, cfg->map_offset[i], cfg->map_size[i]))
- write_addr = cfg->map_data[i] + (addr - cfg->map_offset[i]);
- break;
- case MAPTYPE_REGISTER:
- if (CHKRANGE(addr, cfg->map_offset[i], cfg->map_size[i]))
- handle_regs = 1;
- break;
- }
-
- if (!write_addr && !handle_regs)
- continue;
-
- if (handle_regs) {
- return handle_register_write(addr, value, type);
- }
- else if (write_addr) {
- //printf("[PC: %.8X] Write %s to %s (%.8X) (%d)\n", m68k_get_reg(NULL, M68K_REG_PC), op_type_names[type], map_type_names[cfg->map_type[i]], addr, mirror);
- //printf("Writeaddr: %.8lX (Base %.8lX\n", (uint64_t)(write_addr), (uint64_t)cfg->map_data[i]);
- switch(type) {
- case OP_TYPE_BYTE:
- write_addr[0] = (unsigned char)value;
- //printf("Write val: %.8X (%d)\n", (uint32_t)value, value);
- return 1;
- break;
- case OP_TYPE_WORD:
- ((short *)write_addr)[0] = htobe16(value);
- //printf("Write val: %.8X (%d)\n", (uint32_t)value, value);
+ else if (CHKRANGE_ABS(addr, cfg->map_offset[i], cfg->map_high[i])) {
+ switch(cfg->map_type[i]) {
+ case MAPTYPE_ROM: