changeset 461:6221f8f534fa

Merge
author Mike Pavone <pavone@retrodev.com>
date Tue, 10 Sep 2013 00:30:39 -0700
parents 788ba843a731 (current diff) c49ecf575784 (diff)
children 5677c053edd6
files vdp.c
diffstat 3 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/blastem.c	Tue Sep 10 00:29:46 2013 -0700
+++ b/blastem.c	Tue Sep 10 00:30:39 2013 -0700
@@ -347,7 +347,6 @@
 						blocked = 0;
 					}
 				}
-				context->current_cycle = v_context->cycles / MCLKS_PER_68K;
 			} else {
 				adjust_int_cycle(context, v_context);
 			}
@@ -356,7 +355,7 @@
 			exit(1);
 		}
 		if (v_context->cycles != before_cycle) {
-			//printf("68K paused for %d cycles at cycle %d\n", v_context->cycles / MCLKS_PER_68K - context->current_cycle, context->current_cycle);
+			//printf("68K paused for %d (%d) cycles at cycle %d (%d)\n", v_context->cycles / MCLKS_PER_68K - context->current_cycle, v_context->cycles - before_cycle, context->current_cycle, before_cycle);
 			context->current_cycle = v_context->cycles / MCLKS_PER_68K;
 		}
 	} else if (vdp_port < 0x18) {
@@ -420,7 +419,6 @@
 			value = vdp_hv_counter_read(v_context);
 			//printf("HV Counter: %X at cycle %d\n", value, v_context->cycles);
 		}
-		context->current_cycle = v_context->cycles/MCLKS_PER_68K;
 	} else {
 		printf("Illegal read from PSG or test register port %X\n", vdp_port);
 		exit(1);
--- a/m68k_to_x86.c	Tue Sep 10 00:29:46 2013 -0700
+++ b/m68k_to_x86.c	Tue Sep 10 00:30:39 2013 -0700
@@ -2952,7 +2952,9 @@
 	case M68K_BCLR:
 	case M68K_BSET:
 	case M68K_BTST:
-		dst = cycles(dst, inst->extra.size == OPSIZE_BYTE ? 4 : 6);
+		dst = cycles(dst, inst->extra.size == OPSIZE_BYTE ? 4 : (
+			inst->op == M68K_BTST ? 6 : (inst->op == M68K_BCLR ? 10 : 8))
+		);
 		if (src_op.mode == MODE_IMMED) {
 			if (inst->extra.size == OPSIZE_BYTE) {
 				src_op.disp &= 0x7;
--- a/vdp.c	Tue Sep 10 00:29:46 2013 -0700
+++ b/vdp.c	Tue Sep 10 00:30:39 2013 -0700
@@ -1521,7 +1521,7 @@
 	}
 	uint32_t line= context->cycles / MCLKS_LINE;
 	uint32_t linecyc = context->cycles % MCLKS_LINE;
-	if (line >= (context->latched_mode & BIT_PAL ? PAL_ACTIVE : NTSC_ACTIVE) || context->cycles < (context->latched_mode & BIT_H40 ? 16*4 : 16*5)) {
+	if (line >= (context->latched_mode & BIT_PAL ? PAL_ACTIVE : NTSC_ACTIVE)) {
 		value |= 0x8;
 	}
 	if (linecyc < (context->latched_mode & BIT_H40 ? HBLANK_CLEAR_H40 : HBLANK_CLEAR_H32)) {
@@ -1533,6 +1533,7 @@
 	if (context->latched_mode & BIT_PAL) {//Not sure about this, need to verify
 		value |= 0x1;
 	}
+	//printf("status read at cycle %d returned %X\n", context->cycles, value);
 	//TODO: Sprite overflow, sprite collision, odd frame flag
 	return value;
 }