diff --git a/Frameworks/lazyusf/lazyusf/r4300/interupt.c b/Frameworks/lazyusf/lazyusf/r4300/interupt.c index 95609d3e0..ce05e92d4 100644 --- a/Frameworks/lazyusf/lazyusf/r4300/interupt.c +++ b/Frameworks/lazyusf/lazyusf/r4300/interupt.c @@ -305,8 +305,6 @@ void translate_event_queue(usf_state_t * state, unsigned int base) } add_interupt_event_count(state, COMPARE_INT, state->g_cp0_regs[CP0_COMPARE_REG]); add_interupt_event_count(state, SPECIAL_INT, 0); - - r4300_reset_checkpoint(state, base); } int save_eventqueue_infos(usf_state_t * state, char *buf) @@ -505,8 +503,6 @@ static void nmi_int_handler(usf_state_t * state) void osal_fastcall gen_interupt(usf_state_t * state) { - r4300_checkpoint(state); - if (state->stop == 1) { state->g_gs_vi_counter = 0; // debug diff --git a/Frameworks/lazyusf/lazyusf/r4300/pure_interp.c b/Frameworks/lazyusf/lazyusf/r4300/pure_interp.c index 7b15dbb80..1009bb16c 100644 --- a/Frameworks/lazyusf/lazyusf/r4300/pure_interp.c +++ b/Frameworks/lazyusf/lazyusf/r4300/pure_interp.c @@ -738,8 +738,5 @@ void pure_interpreter(usf_state_t * state) state->PC = &state->interp_PC; while (!state->stop) - { - r4300_checkpoint(state); InterpretOpcode(state); - } } diff --git a/Frameworks/lazyusf/lazyusf/r4300/r4300.c b/Frameworks/lazyusf/lazyusf/r4300/r4300.c index fdde0aa9a..e4d0cd29a 100644 --- a/Frameworks/lazyusf/lazyusf/r4300/r4300.c +++ b/Frameworks/lazyusf/lazyusf/r4300/r4300.c @@ -272,31 +272,8 @@ void r4300_begin(usf_state_t * state) } } -void r4300_reset_checkpoint(usf_state_t * state, unsigned int new_cp0_count) -{ - unsigned int diff = state->g_cp0_regs[CP0_COUNT_REG] - state->g_timer_checkpoint; - state->g_timer_checkpoint = new_cp0_count - diff; -} - -void r4300_checkpoint(usf_state_t * state) -{ - if (state->g_cp0_regs[CP0_COUNT_REG] - state->g_timer_checkpoint >= state->count_per_op * 20000000) - { - if (state->last_sample_buffer_count == state->sample_buffer_count) - { - DebugMessage(state, 1, "Emulator appears to be stuck!"); - return; - } - state->last_sample_buffer_count = state->sample_buffer_count; - state->g_timer_checkpoint = state->g_cp0_regs[CP0_COUNT_REG]; - } -} - void r4300_execute(usf_state_t * state) { - state->g_timer_checkpoint = state->g_cp0_regs[CP0_COUNT_REG]; - state->last_sample_buffer_count = state->sample_buffer_count; - if (state->r4300emu == CORE_PURE_INTERPRETER) { pure_interpreter(state); @@ -319,10 +296,7 @@ void r4300_execute(usf_state_t * state) return; while (!state->stop) - { - r4300_checkpoint(state); state->PC->ops(state); - } } } diff --git a/Frameworks/lazyusf/lazyusf/r4300/r4300.h b/Frameworks/lazyusf/lazyusf/r4300/r4300.h index 4d3d2e36b..bbff2a7fe 100644 --- a/Frameworks/lazyusf/lazyusf/r4300/r4300.h +++ b/Frameworks/lazyusf/lazyusf/r4300/r4300.h @@ -36,9 +36,6 @@ void r4300_begin(usf_state_t *); void r4300_execute(usf_state_t *); void r4300_end(usf_state_t *); -void r4300_reset_checkpoint(usf_state_t *, unsigned int new_cp0_count); -void r4300_checkpoint(usf_state_t *); - /* Jump to the given address. This works for all r4300 emulator, but is slower. * Use this for common code which can be executed from any r4300 emulator. */ void generic_jump_to(usf_state_t *, unsigned int address); diff --git a/Frameworks/lazyusf/lazyusf/r4300/x86/gr4300.c b/Frameworks/lazyusf/lazyusf/r4300/x86/gr4300.c index 7fc37b686..81f879952 100644 --- a/Frameworks/lazyusf/lazyusf/r4300/x86/gr4300.c +++ b/Frameworks/lazyusf/lazyusf/r4300/x86/gr4300.c @@ -631,10 +631,10 @@ void gentest_idle(usf_state_t * state) mov_reg32_m32(state, reg, (unsigned int *)(&state->next_interupt)); sub_reg32_m32(state, reg, (unsigned int *)(&state->g_cp0_regs[CP0_COUNT_REG])); - cmp_reg32_imm8(state, reg, 5); - jbe_rj(state, 18); + cmp_reg32_imm8(state, reg, 3); + jbe_rj(state, 12); - sub_reg32_imm32(state, reg, 2); // 6 + //sub_reg32_imm32(state, reg, 2); // 6 and_reg32_imm32(state, reg, 0xFFFFFFFC); // 6 add_m32_reg32(state, (unsigned int *)(&state->g_cp0_regs[CP0_COUNT_REG]), reg); // 6