diff options
author | Oxore <oxore@protonmail.com> | 2023-06-12 23:57:00 +0300 |
---|---|---|
committer | Oxore <oxore@protonmail.com> | 2023-06-12 23:57:00 +0300 |
commit | 47ffe952bcfc31a78c16be8620109955fdc17f2f (patch) | |
tree | a1962e8a0e73bedce8b09514ad01f84e8b3e47b5 | |
parent | 2da31a5111e1e7aa942c4260f5b7a08673e10845 (diff) |
Optimize debug run
-rw-r--r-- | CMakeLists.txt | 16 | ||||
-rw-r--r-- | emulator.cpp | 4 |
2 files changed, 15 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 5f89536..487b6fd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,14 @@ target_include_directories(musashi_m68k PRIVATE # TODO make SDL2 optional for headless mode find_package(SDL2 REQUIRED) +set(common_debug_flags + # XXX Sanitizers make everything really slow + #-fsanitize=address + -O1 + # Uncomment to enable profiling + #-pg + ) + add_executable(emulator ${emulator_sources}) target_compile_options(emulator PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-fms-extensions> @@ -65,11 +73,12 @@ target_compile_options(emulator PRIVATE -Wlogical-op -pedantic -g3 - -O2 - -fsanitize=address,undefined + $<$<CONFIG:DEBUG>:${common_debug_flags}> ) -target_link_options(emulator PRIVATE -fsanitize=address,undefined) +target_link_options(emulator PRIVATE + $<$<CONFIG:DEBUG>:${common_debug_flags}> + ) target_link_libraries(emulator musashi_m68k) # TODO make SDL2 optional for headless mode target_include_directories(emulator PRIVATE ${SDL2_INCLUDE_DIRS}) @@ -83,6 +92,7 @@ target_compile_definitions(emulator PRIVATE HAS_GRAPHICS=1 ) + ## Target for GDB Remote Debugging protocol implementation testing #add_executable(gdbremote # gdbremote.cpp diff --git a/emulator.cpp b/emulator.cpp index 0dc63b9..72d5184 100644 --- a/emulator.cpp +++ b/emulator.cpp @@ -442,13 +442,13 @@ void ParseAndReact( static void RunSingleVideoCycle(M68KDebuggingControl& m68k_debug, Graphics& graphics) { do { - g_cycles_counter += m68k_execute(100000); + g_cycles_counter += m68k_execute(4000); if (m68k_debug.HasBreakpoint()) { return; } } while (!g_vdp.Scanline()); graphics.Render(g_vdp); - g_cycles_counter += m68k_execute(800000); + g_cycles_counter += m68k_execute(400000); } int emulator(M68KDebuggingControl& m68k_debug, Graphics& graphics) |