From f07b34a451a8f74373f5d90210842372c5a81b9d Mon Sep 17 00:00:00 2001 From: kanjitalk755 Date: Wed, 16 Mar 2022 13:40:14 +0900 Subject: [PATCH] BII: additional delay test --- BasiliskII/src/Unix/main_unix.cpp | 10 ++++++++++ BasiliskII/src/Windows/main_windows.cpp | 10 ++++++++++ BasiliskII/src/prefs_items.cpp | 1 + BasiliskII/src/uae_cpu/newcpu.h | 10 +++++++--- BasiliskII/src/uae_cpu_2021/newcpu.h | 10 +++++++--- 5 files changed, 35 insertions(+), 6 deletions(-) diff --git a/BasiliskII/src/Unix/main_unix.cpp b/BasiliskII/src/Unix/main_unix.cpp index b0a9c2c1..7f4974fd 100755 --- a/BasiliskII/src/Unix/main_unix.cpp +++ b/BasiliskII/src/Unix/main_unix.cpp @@ -374,6 +374,16 @@ void cpu_do_check_ticks(void) if (emulated_ticks <= 0) emulated_ticks += emulated_ticks_quantum; } +#else +uint16 emulated_ticks; +void cpu_do_check_ticks(void) +{ + static int delay = -1; + if (delay < 0) + delay = PrefsFindInt32("delay"); + if (delay) + usleep(delay); +} #endif diff --git a/BasiliskII/src/Windows/main_windows.cpp b/BasiliskII/src/Windows/main_windows.cpp index 148aba6d..8266e96e 100755 --- a/BasiliskII/src/Windows/main_windows.cpp +++ b/BasiliskII/src/Windows/main_windows.cpp @@ -190,6 +190,16 @@ static void sigsegv_dump_state(sigsegv_info_t *sip) #endif } +uint16 emulated_ticks; +void cpu_do_check_ticks(void) +{ + static int delay = -1; + if (delay < 0) + delay = PrefsFindInt32("delay"); + if (delay) + usleep(delay); +} + /* * Main program diff --git a/BasiliskII/src/prefs_items.cpp b/BasiliskII/src/prefs_items.cpp index 33f3254a..3d749292 100644 --- a/BasiliskII/src/prefs_items.cpp +++ b/BasiliskII/src/prefs_items.cpp @@ -85,6 +85,7 @@ prefs_desc common_prefs_items[] = { {"title", TYPE_STRING, false, "window title"}, {"sound_buffer", TYPE_INT32, false, "sound buffer length"}, {"name_encoding", TYPE_INT32, false, "file name encoding"}, + {"delay", TYPE_INT32, false, "additional delay [uS] every 64k instructions"}, {NULL, TYPE_END, false, NULL} // End of list }; diff --git a/BasiliskII/src/uae_cpu/newcpu.h b/BasiliskII/src/uae_cpu/newcpu.h index e2d5b5ed..fee52ba1 100644 --- a/BasiliskII/src/uae_cpu/newcpu.h +++ b/BasiliskII/src/uae_cpu/newcpu.h @@ -338,9 +338,9 @@ extern void m68k_execute(void); #if USE_JIT extern void m68k_compile_execute(void); #endif +extern void cpu_do_check_ticks(void); #ifdef USE_CPU_EMUL_SERVICES extern int32 emulated_ticks; -extern void cpu_do_check_ticks(void); static inline void cpu_check_ticks(void) { @@ -348,8 +348,12 @@ static inline void cpu_check_ticks(void) cpu_do_check_ticks(); } #else -#define cpu_check_ticks() -#define cpu_do_check_ticks() +extern uint16 emulated_ticks; +static inline void cpu_check_ticks(void) +{ + if (!++emulated_ticks) + cpu_do_check_ticks(); +} #endif #endif /* NEWCPU_H */ diff --git a/BasiliskII/src/uae_cpu_2021/newcpu.h b/BasiliskII/src/uae_cpu_2021/newcpu.h index 478a3785..5e49817b 100644 --- a/BasiliskII/src/uae_cpu_2021/newcpu.h +++ b/BasiliskII/src/uae_cpu_2021/newcpu.h @@ -316,9 +316,9 @@ extern void m68k_execute(void); extern void m68k_compile_execute(void); extern void m68k_do_compile_execute(void); #endif +extern void cpu_do_check_ticks(void); #ifdef USE_CPU_EMUL_SERVICES extern int32 emulated_ticks; -extern void cpu_do_check_ticks(void); static inline void cpu_check_ticks(void) { @@ -326,8 +326,12 @@ static inline void cpu_check_ticks(void) cpu_do_check_ticks(); } #else -#define cpu_check_ticks() -#define cpu_do_check_ticks() +extern uint16 emulated_ticks; +static inline void cpu_check_ticks(void) +{ + if (!++emulated_ticks) + cpu_do_check_ticks(); +} #endif cpuop_func op_illg_1;