From de3bb62e0c7518d350296a58fd8e7fd0bb9ffd05 Mon Sep 17 00:00:00 2001 From: SarahW Date: Tue, 14 May 2019 20:32:32 +0100 Subject: [PATCH] Interpreter now updates TSC every instruction. Fixes Desert Strike. --- src/386.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/386.c b/src/386.c index 48522c9..6b0dcd0 100644 --- a/src/386.c +++ b/src/386.c @@ -165,6 +165,8 @@ void exec386(int cycs) // pclog("%i %02X\n", ins, ram[8]); while (cycdiff < cycle_period) { + int ins_cycles = cycles; + cpu_state.oldpc = cpu_state.pc; cpu_state.op32 = use32; @@ -212,6 +214,9 @@ void exec386(int cycs) } } } + ins_cycles -= cycles; + tsc += ins_cycles; + cycdiff=oldcyc-cycles; if (trap) @@ -289,7 +294,6 @@ void exec386(int cycs) } } - tsc += cycdiff; if (TIMER_VAL_LESS_THAN_VAL(timer_target, (uint32_t)tsc)) timer_process(); }