From 1b36f593c82d167d0f88796e1d9c9034b9c82940 Mon Sep 17 00:00:00 2001 From: emoose Date: Sun, 5 Jan 2020 22:27:00 +0000 Subject: [PATCH] [Base] Test changing frequency to 49.875 instead of 50 Some public slides mention this is the actual frequency it runs at (slide 15: https://slideplayer.com/slide/9528088/) KeQueryPerfFrequency always returns 50MHz though. --- src/xenia/emulator.cc | 4 ++-- src/xenia/kernel/xboxkrnl/xboxkrnl_threading.cc | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/xenia/emulator.cc b/src/xenia/emulator.cc index 9cf17667f..bcb2924ba 100644 --- a/src/xenia/emulator.cc +++ b/src/xenia/emulator.cc @@ -119,8 +119,8 @@ X_STATUS Emulator::Setup( display_window_ = display_window; // Initialize clock. - // 360 uses a 50MHz clock. - Clock::set_guest_tick_frequency(50000000); + // 360 uses a ~49.875MHz clock. + Clock::set_guest_tick_frequency(49875000); // We could reset this with save state data/constant value to help replays. Clock::set_guest_system_time_base(Clock::QueryHostSystemTime()); // This can be adjusted dynamically, as well. diff --git a/src/xenia/kernel/xboxkrnl/xboxkrnl_threading.cc b/src/xenia/kernel/xboxkrnl/xboxkrnl_threading.cc index b12325dcd..92760b536 100644 --- a/src/xenia/kernel/xboxkrnl/xboxkrnl_threading.cc +++ b/src/xenia/kernel/xboxkrnl/xboxkrnl_threading.cc @@ -283,8 +283,7 @@ void KeSetCurrentProcessType(dword_t type) { DECLARE_XBOXKRNL_EXPORT1(KeSetCurrentProcessType, kThreading, kImplemented); dword_result_t KeQueryPerformanceFrequency() { - uint64_t result = Clock::guest_tick_frequency(); - return static_cast(result); + return 50000000; // always returns 50MHz, even though X360 is at 49.875 or so } DECLARE_XBOXKRNL_EXPORT2(KeQueryPerformanceFrequency, kThreading, kImplemented, kHighFrequency);