diff z80_to_x86.c @ 506:a3b48a57e847

Fix timing of certain ld and jp instructions in the Z80 core
author Michael Pavone <pavone@retrodev.com>
date Mon, 27 Jan 2014 22:12:22 -0800
parents b7b7a1cab44a
children 6b248602ab84 ea80559c67cb 6aa2a8ab9c70
line wrap: on
line diff
--- a/z80_to_x86.c	Mon Jan 06 22:54:05 2014 -0800
+++ b/z80_to_x86.c	Mon Jan 27 22:12:22 2014 -0800
@@ -346,6 +346,9 @@
 			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 @@
 			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 @@
 	}
 	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;