HaloSPV3 / HXE

A wrapper for HCE and loader for SPV3.
https://github.com/yumiris/HXE.Legacy
zlib License
4 stars 0 forks source link

Add support for Chimera 0.40.202 FPS Throttle #301

Open BinToss opened 2 years ago

BinToss commented 2 years ago

nToss — 01/23/2021

So I was proven wrong when arguing about the ancient Chimera version we use It turns out It does have framerate throttle image

nToss — 01/24/2021

I still haven't figured out where Chimera-202 saves the framerate throttle setting Kava said it's supposed to save to chimera.bin, but the file was unchanged each time changed the throttle. and the throttle is saved after closing the game and loaded when starting the game

Miris Wisdom — 01/24/2021

0xB5 is the chimera fps throttle (seems to vary depending on whether the value is, e.g. 15 vs 59.99 -- also can't confirm if other values are applied in the binary as an invisible side effect) but on the positive note, the fps throttle is absolutely saved in the chimera.bin. i'll have a look again more closely soon

Miris Wisdom — 01/24/2021

figuring out how the number is encoded will be interesting

Miris Wisdom — 02/09/2021

there was a super epic time where i had a struct of the chimera we use and could therefore know how the chimera_fps_throttle is stored

BinToss commented 2 years ago

ArecadianFox provided some FPS values via labelled chimera.bin configs https://docs.google.com/spreadsheets/d/1_bDBeSsxGjLbN4aA6p-mduVEnNB9qOMog_kpjCVRYCY/edit?usp=sharing

BinToss commented 10 months ago

C# floats (Half, Single, Double, Decimal) are bit-masked slightly different than C/C++ floats (float, double). See System.Runtime.InteropServices.NFloat

BinToss commented 9 months ago

Something I recently learned is Chimera's FPS throttle is exactly that—a throttle. Sure, it limits the max FPS, but it does so by making the main thread sleep. While sleeping, no user input is registered and processed which leads to perceived input latency.

What we should do is uncap FPS and then use/encourage driver- or software-based¹ framerate limiting. In fact, V-Sync alternatives (e.g. Fast Sync, Adaptive Sync (maybe), FreeSync, G-Sync, et cetera) would be preferable.

¹ SpecialK offers a framerate limiter, but I can't promise it doesn't introduce significant input latency.

See https://github.com/SnowyMouse/chimera/issues/106#issuecomment-1868343405