From aa7e687734703551bade9688baa81edf2df94efe Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Sat, 5 Jan 2013 00:53:50 -0800 Subject: Fix predec address mode when used as source --- blastem.c | 4 ++++ m68k_to_x86.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/blastem.c b/blastem.c index 637ba4c..f2b778b 100644 --- a/blastem.c +++ b/blastem.c @@ -34,6 +34,10 @@ int load_rom(char * filename) } fseek(f, 0, SEEK_END); long filesize = ftell(f); + if (filesize/2 > CARTRIDGE_WORDS) { + //carts bigger than 4MB not currently supported + filesize = CARTRIDGE_WORDS*2; + } fseek(f, 0, SEEK_SET); fread(cart, 2, MIN(filesize/2, CARTRIDGE_WORDS), f); fclose(f); diff --git a/m68k_to_x86.c b/m68k_to_x86.c index 8120f04..2ae0dc5 100644 --- a/m68k_to_x86.c +++ b/m68k_to_x86.c @@ -130,9 +130,9 @@ uint8_t * translate_m68k_src(m68kinst * inst, x86_ea * ea, uint8_t * out, x86_68 dec_amount = inst->extra.size == OPSIZE_WORD ? 2 : (inst->extra.size == OPSIZE_LONG ? 4 : 1); out = cycles(out, PREDEC_PENALTY); if (opts->aregs[inst->src.params.regs.pri] >= 0) { - out = sub_ir(out, inc_amount, opts->aregs[inst->src.params.regs.pri], SZ_D); + out = sub_ir(out, dec_amount, opts->aregs[inst->src.params.regs.pri], SZ_D); } else { - out = sub_irdisp8(out, inc_amount, CONTEXT, reg_offset(&(inst->src)), SZ_D); + out = sub_irdisp8(out, dec_amount, CONTEXT, reg_offset(&(inst->src)), SZ_D); } case MODE_AREG_INDIRECT: case MODE_AREG_POSTINC: -- cgit v1.2.3