Tillmann Karras
63257d1ee9
CoreTiming: set default overclock factors to 1.0
...
I'm not aware of any issue here but let's set meaningful defaults
anyway.
2025-08-30 03:05:35 +01:00
Jordan Woyak
c597c70316
CoreTiming: Fix unsafe usage of m_globals.global_timer in ScheduleEvent from non-CPU thread.
2025-06-29 20:55:43 -05:00
JMC47
5ec5db9240
Merge pull request #13392 from jordan-woyak/frame-pacing-accurate-time
...
CoreTiming: Add setting to pursue accurate overall emulation runtime
2025-06-06 19:17:44 -04:00
Martino Fontana
832570c658
Core: Add VBI Frequency Override
...
This feature allows overriding the frequency of the Vertical Blank Interrupt. For many games, this means that their gameplay speed will change without affecting audio, which would be useful by itself (e.g. grinding in RPGs).
However, there are games that use delta time for their game logic, which allows them to be played at >60 FPS at the same gameplay speed!
Some games aren't dynamic though, and require a patch to adjust their game speed variable.
2025-05-12 18:54:36 +02:00
Jordan Woyak
ec29d120b5
CoreTiming: Add a setting to pursue accurate emulation time.
2025-05-02 15:23:43 -05:00
Jordan Woyak
e4525ca7ee
Merge pull request #13499 from jordan-woyak/frame-pacing-better-math
...
CoreTiming: Cleanups to avoid drift from cumulative rounding errors.
2025-05-01 15:58:33 -05:00
Jordan Woyak
af960651e8
Common: SPSCQueue cleanups and improvements.
2025-04-22 23:49:32 -05:00
Jordan Woyak
a517c9f862
CoreTiming: Move VISkip calculation into a separate function.
2025-04-20 22:01:06 -05:00
Jordan Woyak
7236d1539a
CoreTiming: Cleanups to avoid drift from cumulative rounding errors.
2025-04-20 22:01:01 -05:00
Jordan Woyak
06afa0036a
CoreTiming: Fix Precision Frame Timing in Dual Core mode on Windows.
2025-04-04 19:13:53 -05:00
Jordan Woyak
7dc27753e2
CoreTiming: Add a setting to use Common::PrecisionTimer.
2025-04-03 15:48:51 -05:00
Jordan Woyak
e1745f682f
PerformanceMetrics: Eliminated a mutex. Code cleanups.
2025-03-14 03:10:13 -05:00
Jordan Woyak
7222188cde
Core/VideoCommon: Push presentation time calculated from CPU thread to GPU thread.
2025-03-10 16:40:46 -05:00
Jordan Woyak
81e842e2aa
CoreTiming: Don't Throttle in event queue processing.
2025-03-10 16:39:13 -05:00
Luz Paz
fb6c625fed
Core/Core: fix typos
...
Found via `codespell -q 3 -S "./Externals,./Data/Sys/wiitdb-??.txt,*.po,*.pot" -L andf,asnd,bootup,bufferin,clen,collet,datas,delt,fpr,inout,inport,interm,pixelx,re-use,re-used,sav,stateman,strat,wil`
2025-03-08 15:41:53 -05:00
mitaclaw
2edf6c6419
CoreTiming: Simplify algorithms using ranges and three-way comparison
2024-10-11 12:08:22 -07:00
JosJuice
7197e3abd0
Use structs for config callback IDs
...
This way you can't mix up regular config callback IDs and CPU thread
config callback IDs. (It would be rather bad if you did!)
2023-08-17 19:19:26 +02:00
iwubcode
e54b7ac356
Core: save core timing parameters into variables updated during refresh
2023-07-23 14:03:21 -05:00
JosJuice
f2be35c7cd
VideoCommon: Reword the unknown opcode error message
...
When faced with this error, users often don't try disabling dual core,
even though the error message suggests it. Perhaps the message is just
too long and lists too many things?
To try to improve the situation, I'm rewording the message and making it
say different things depending on what settings you are using.
2023-02-19 16:35:28 +01:00
Admiral H. Curtiss
41ad0490f0
CoreTiming: Avoid ppcState global.
2023-01-27 15:22:45 +01:00
Lioncash
3607c1dc7d
CoreTiming: Zero initialize all CoreTimingManager throttle members
...
Gives two members without explicit initialization default values to be
consistent with the rest of the class and also ensuring deterministic
values on construction.
2023-01-24 17:20:08 -05:00
Pierre Bourdon
8d5edb13a9
Merge pull request #11367 from Sam-Belliveau/lagbegone
...
VideoCommon: VI Skip
2023-01-19 01:20:01 +01:00
Scott Mansell
7c202ab411
Reset throttle on savestate load
2023-01-16 14:18:42 +13:00
Sam Belliveau
23ad07b368
Add VISkip
2023-01-14 01:56:37 -05:00
Sam Belliveau
e849172dc9
Limit Throttling to 1200hz
2023-01-13 18:17:24 -05:00
Sam Belliveau
901e4c7697
Reset Throttle Variables In Init
2023-01-09 11:06:12 -05:00
Sam Belliveau
bc1cc9eeb4
CoreTiming: Throttle Before Every Event Using Chrono
2023-01-06 17:21:17 -05:00
Admiral H. Curtiss
daa70533cd
CoreTiming: Store Globals in CoreTimingManager.
2022-11-27 03:47:12 +01:00
Admiral H. Curtiss
c9558ecb4c
CoreTiming: Refactor to class.
2022-11-27 03:47:12 +01:00
Admiral H. Curtiss
4273d3754c
CoreTiming: Move static variables into Core::System.
2022-11-26 04:22:32 +01:00
Admiral H. Curtiss
86f17511fc
CoreTiming: Move the 'Globals' instance into Core::System.
2022-11-26 04:22:32 +01:00
Admiral H. Curtiss
a36a5c1308
CoreTiming: Pass Core::System to Events.
2022-11-06 17:54:58 +01:00
Admiral H. Curtiss
7625cb7aca
CoreTiming: Cache the overclock factor instead of re-querying it every Advance().
2021-12-25 23:40:26 +01:00
Pierre Bourdon
e149ad4f0a
treewide: convert GPLv2+ license info to SPDX tags
...
SPDX standardizes how source code conveys its copyright and licensing
information. See https://spdx.github.io/spdx-spec/1-rationale/ . SPDX
tags are adopted in many large projects, including things like the Linux
kernel.
2021-07-05 04:35:56 +02:00
Techjar
ff972e3673
Reformat repo to clang-format 7.0 rules
2019-05-06 18:48:04 +00:00
MerryMage
e3d0de7442
JitArm64: Implement timer SPRs
2017-04-25 09:20:09 +01:00
MerryMage
38917a151d
CoreTiming: Pull globals into a single struct
2017-04-05 10:22:48 +01:00
Léo Lam
a085cd431d
Adjust event times after a PPC clock change
...
This likely doesn't change much, but it makes events trigger at the
correct time after a clock change.
2017-02-08 16:22:27 +01:00
EmptyChaos
fb5537213a
CoreTiming: Document initial startup behavior
...
Events don't update the downcount until after the first Advance(),
thus Advance() must be called once before scheduling works normally.
2016-09-03 14:55:45 +10:00
EmptyChaos
aa16282516
Core: Change CoreTiming event key from int to EventType*
...
Replace 'int' keys with something that carries type information.
Performance is neutral.
2016-09-03 14:55:44 +10:00
EmptyChaos
b88b188819
CoreTiming: Cleanup naming conventions
2016-09-03 12:46:14 +10:00
JosJuice
3443a10030
CoreTiming: Merge ScheduleEvent variants into one function
...
Now Core::IsCPUThread() only gets called once when using the AnyThread
variant. Also, I think the enum approach makes calling code clearer.
2016-08-11 12:45:57 +02:00
JosJuice
47c8bb26f8
Remove Immediate variants of ScheduleEvent
...
Usage of these are replaced with regular equivalents in order
to avoid executing event handlers in the middle of JIT blocks.
2016-08-10 16:34:06 +02:00
degasus
4c5f8f9c91
CoreTiming: Drop ProcessFifoWaitEvents.
...
globalTimer is only written in Advance, so this function has no function.
2016-06-26 11:29:25 +02:00
Pierre Bourdon
3570c7f03a
Reformat all the things. Have fun with merge conflicts.
2016-06-24 10:43:46 +02:00
Scott Mansell
5e50c37c13
Alternative fix: promote cycleslate to an s64 everywhere.
...
Also changed a few functions to be static.
2016-04-10 02:13:06 +12:00
Scott Mansell
27beef1ff4
Store an inverted copy of lastOCfactor.
...
The inverse operation is more common, especially when games check the
timer rapidly. So we do the division once and store the inverted copy.
2016-03-24 05:17:10 +13:00
Scott Mansell
407f86e01a
Mark global variables with g_ prefix
2016-03-24 04:32:12 +13:00
Scott Mansell
67dc26cf1d
CoreTiming: Fix 31bit overflow for events scheduling.
...
Events scheduled more than 4.12 seconds in the future (2.96 seconds for
Wii games) would overflow the sign bit and get scheduled in the past
instead, causing them to fire instantly.
2016-03-24 04:27:14 +13:00
Scott Mansell
2ebbfd6f85
Adjust cycle counts so they are accurate to the jit block level
...
Previously GlobalTimer was only updated at the end of each slice
when CoreTiming::Advance() was called, so it could be upto 20,000
cycles off.
This was causing huge problems with games which made heavy use of
the time base register, such as OoT (virtual console) and Pokemon
puzzle.
I've also made it so event scheduling will be accurate to the jit
block level, instead of accurate to the slice.
2016-03-24 04:24:53 +13:00