summaryrefslogtreecommitdiff
path: root/z80_to_x86.c
diff options
context:
space:
mode:
Diffstat (limited to 'z80_to_x86.c')
-rw-r--r--z80_to_x86.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/z80_to_x86.c b/z80_to_x86.c
index c1702bd..2cab1c9 100644
--- a/z80_to_x86.c
+++ b/z80_to_x86.c
@@ -346,6 +346,9 @@ uint8_t * translate_z80inst(z80inst * inst, uint8_t * dst, z80_context * context
if (inst->ea_reg == Z80_IX || inst->ea_reg == Z80_IY) {
cycles += 4;
}
+ if (inst->reg == Z80_I || inst->ea_reg == Z80_I) {
+ cycles += 5;
+ }
break;
case Z80_IMMED:
cycles = size == SZ_B ? 7 : 10;
@@ -355,7 +358,7 @@ uint8_t * translate_z80inst(z80inst * inst, uint8_t * dst, z80_context * context
break;
case Z80_IX_DISPLACE:
case Z80_IY_DISPLACE:
- cycles = 12;
+ cycles = 16;
break;
}
if ((inst->reg >= Z80_IXL && inst->reg <= Z80_IYH) || inst->reg == Z80_IX || inst->reg == Z80_IY) {
@@ -1312,7 +1315,7 @@ uint8_t * translate_z80inst(z80inst * inst, uint8_t * dst, z80_context * context
}
case Z80_JP: {
cycles = 4;
- if (inst->addr_mode != Z80_REG) {
+ if (inst->addr_mode != Z80_REG_INDIRECT) {
cycles += 6;
} else if(inst->ea_reg == Z80_IX || inst->ea_reg == Z80_IY) {
cycles += 4;