-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[TEST] Add VI Overclock #11486
base: master
Are you sure you want to change the base?
[TEST] Add VI Overclock #11486
Conversation
I'm going to have to be skeptical about this. Most games with frameskip and whatnot won't really go above 60 FPS even with hacks in the past. |
Regarding the UI, current design of this PR makes the Advanced tab even taller than it already is and further exacerbates the problem PR #8785 tries to address. With this PR we'll have enough UI controls related to overclocking to justify a new, dedicated tab, for them... |
If someone wants to toy around with this today, I rebased it here. |
I gave this branch a try and it works well to push Star Fox Adventures to 120 FPS (although it ends up triggering the same bug as RenaKunisaki/StarFoxAdventures#9). At least there are no more audio issues, unlike the previous approach where I increased emulation speed and decreased internal game speed. |
I briefly tested it on Skylanders: Spyro's Adventure with the 60 FPS patch1. The game runs at the same gameplay speed from 33% to 200% (it slows-down/speeds-up below/above that, it seems intentional2), though running it at 120 FPS is insanely demanding (the game is pretty demanding as is...). Here's some footage at 200% VI overclock (but 50% game speed, because my computer is too weak)3: SSA-120FPS.mp4Cutscenes are slightly broken: the characters walk more than they should (though it's only visual). This also happens on the Wii U version too, btw. Footnotes
|
So, experimented a little more with Skylanders: Spyro's Adventure, to go even further beyond. Click if you are curious on the technical detailsMaintaining high framerates in this game is wack: sometimes it intentionally decides to not run at the framerate I want. The FPS could be close to the VPS, I raise the emulated CPU clock a little, and suddenly the FPS goes down to exactly half the VPS (the specific percentages depend on the game's situation). What is going on? With the branch watch tool, I found the function called every vblank that makes the physics step and renders: 0x80171b9c. One thing I could do is remove the check from 0x80171b9c. While it does make the game do a physics step and render when it should, it also makes it do it when it shouldn't. Later, I noticed later that the lower/upper bound for delta times (see my previous post) weren't "fixed", but depended on another address, 0x8084f230, which is fixed at 1/60 (even in PAL50, I wonder if that's intentional...). If you want to play this game at higher framerates:
Use this patch:
Then, optionally:
Alternative stuff (not recommended)This replaces the target framerate patch, and *requires* the delta time bounds fix: ``` $Force physics/render step 04171BB8 60000000 # Remove check ``` If the emulated CPU clock isn't high enough, you will see older frames. FPS will (falsely) always match VPS.With this, if you overclock the emulated CPU more than needed, the emulation performance will be worse.
|
Here are the codes for Skylanders: Giants.
Then, optionally:
The speed of the title screen's background is tied to the FPS, for some reason. Alternative stuff (not recommended)``` $Force physics/render step 0417E8C8 60000000 # Remove check *If emulated CPU clock isn't high enough, you will see older frames. FPS will (falsely) always match VPS. ``` |
Skylanders: Swap Force is also able to go to higher framerates, and it doesn't exhibit the weird behavior of the other two games.
(A port of the fix for Cemu is coming soon™, EDIT: cemu-project/cemu_graphic_packs#639) Footnotes
|
Gave it a try on Need For Speed: Nitro (R7XP69). NFSNitro-144.mp4The game was sped up, but I made a code to adjust it:
Replace XXXX and YYYY with the upper and lower bytes (respectively) of 1/VPS. Examples
Multiplayer works too, just use this code to prevent the game from capping to 30 FPS. Caveats:
Older (simpler) code before EDIT
While this address is used for the game speed, it's also read in other places as well. (On an unrelated note: Gecko codes aren't really ideal for these "choose your own value". Cemu's graphics packs are so much nicer...) |
QFont vi_bf = font(); | ||
vi_bf.setBold(Config::GetActiveLayerForConfig(Config::MAIN_VI_OVERCLOCK_ENABLE) != | ||
Config::LayerType::Base); | ||
m_vi_clock_override_checkbox->setFont(bf); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bf
was probably meant to be vi_bf
here.
Super Mario Sunshine at 120 FPS. SMS-120.mp4Unfortunately, it's not really usable. This is caused by the VBI frequency specifically. Lowering it before the music plays "solves" the problem (which is how I got the music for the video, it refused to play on the level otherwise). Apparently, this is also hard to fix. Too bad. The code is a modified 60 FPS code (PAL) from the wiki. With the way this cheat works, 120 FPS is the maximum.
|
Tried Metroid Prime 2 (GC, PAL). MP2-120.mp4
Alternatively
It has issues though. (All of these happen even without VBI Overclock.)
I don't have the skills to fix those. On the bright side, at 90 FPS, that cutscene works fine, and bomb particles do despawn. |
Pikmin (GC NTSC 1.1) satisfies! Pikmin-120.mp4By default, the game doesn't speed up when changing the VBI overclock. However, there are few (not game breaking) things that are wrong:
(Keep in mind that these issues also happen with the 60 FPS patch on the wiki, they are just amplified.)
(Also, do note that normally, without cheat codes, some parts of the game (like the main menu) run at 60 FPS, while the main game runs at 30 FPS.) |
Crash Nitro Kart... just works perfectly. CNK-120.mp4 |
Pikmin 2 (GC NTSC) 120 FPS code.
Doing it for framerates that aren't |
AUDIO SPEED IS NOT AFFECTED BY VI OVERCLOCK SETTINGS
This is a much more reliable way of inducing a frame skip, and likely will induce much fewer bugs than VI Skip. It's main advantage is being able to increase the framerate, however this will 100% affect game speed when physics is tied to framerate.
I'm going to mark this as draft because it is definitely not usable at the moment.