comparison romdb.c @ 1324:2fc444b69351

Minor optimization to avoid invalidating translated code when the bank has not actually changed. Makes a nasty edge case in the 68K debugger slightly less severe when dealing with code that uses banking
author Michael Pavone <pavone@retrodev.com>
date Fri, 21 Apr 2017 01:19:40 -0700
parents 5ceb316c479a
children 071e761bcdcf
comparison
equal deleted inserted replaced
1323:c9dc2603b087 1324:2fc444b69351
294 { 294 {
295 context->mem_pointers[gen->mapper_start_index + i] = gen->cart + 0x40000*gen->bank_regs[i]; 295 context->mem_pointers[gen->mapper_start_index + i] = gen->cart + 0x40000*gen->bank_regs[i];
296 } 296 }
297 } 297 }
298 } else { 298 } else {
299 m68k_invalidate_code_range(gen->m68k, address * 0x80000, (address + 1) * 0x80000); 299 void *new_ptr = gen->cart + 0x40000*value;
300 context->mem_pointers[gen->mapper_start_index + address] = gen->cart + 0x40000*value; 300 if (context->mem_pointers[gen->mapper_start_index + address] != new_ptr) {
301 m68k_invalidate_code_range(gen->m68k, address * 0x80000, (address + 1) * 0x80000);
302 context->mem_pointers[gen->mapper_start_index + address] = new_ptr;
303 }
301 } 304 }
302 return context; 305 return context;
303 } 306 }
304 307
305 m68k_context * write_bank_reg_b(uint32_t address, m68k_context * context, uint8_t value) 308 m68k_context * write_bank_reg_b(uint32_t address, m68k_context * context, uint8_t value)