Mercurial > repos > blastem
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) |