26TH OCTOBER UPDATE ( GET TICK COUNT , THE PROBLEM SOURCE )Vegas Stutter Remover
If everything is working right then it should create a new sr_New_Vegas_Stutter_Remover.log, which will include a line like "Improved_GetTickCount seems to be working".
4GB exe Memory/Stutter Remover Mod
FNV4GB additionally hooks and replaces the Windows GetTickCount() function that may improve stuttering.
I was doing more research today and googled " Windows GetTickCount() " , this is what is improved or fixed in both the stutter fix mods for oblivion/fallout 3/vegas , which fixes my frameskipping.
but if I understand your code correctly, what bFix64Hertz does is replace GetTickCount with a version that has a 1ms resolution rather than the ~15ms resolution of the stock one? And I'm guessing this works because Oblivion uses its own timer routines (but using GetTickCount to get elapsed time) rather than the Windows ones?
Reply to the above Quote
The windows ones actually come from the HAL rather than windows itself, which might explain why there aren't complaints about this from xbox users... HALs differ a bit between different sorts of computers. Or that's my understanding, all I do is mess with how GetTickCount gets linked in to Oblivion.exe/Fallout/Vegas.
I ran this code (post#5) and the only problem I see is periodic stuttering of movement, maybe due to the way GetTickCount values are used. What specific issues are you seeing?
GetTickCount Wikipedia
GetTickCount works on all Windows platforms that support the Windows API. It measures time in milliseconds (though it does not have millisecond resolution; its value is typically updated every 16ms), and is in many cases precise enough to measure the speed of code execution in algorithms.
Another VERY interesting post quote
Note that this also makes a number of other changes besides the spincounts, including changing Oblivion from running its main game logic timer off of GetTickCount (which increments at 64 Hertz on most computers, creating a nasty interference patterns with most refresh rates, aka microstuttering) to running it off of timeGetTime, wrapping Oblivion in a timeBeginPeriod(1) region, causing it to yield unneeded time with Sleep, and several changes to the way Oblivion game logic timing reacts to framerates and fluctuations in framerates.
I'm tired and sleepy, so excuse any mistakes.
It's not a tick stutter. It's still frame stutter. The thing is that you use GetTickCount() to measure the time in ms since the system got started.
So you call the function, you get a value like 256, then later on you call it again and you get 272. You can use the delta between subsequent calls to measure the time that has elapsed (16 ms) and use this to see which things within the game engine need to be handled. E.g. the renderer might be hardwired to run every 30 ms (giving a theoretical maximum of ~33 frames per second).
GetTickCount()'s granularity has varied over the course of various Windows versions, apparently 5 ms on Windows 95 up to 15-16 on more recent versions. (I am not entirely sure which part of the hardware it uses to pull timing from, it doesn't seem to be either RTC or ACPI, maybe the old 8254 PIT?)
I think the problem lies that if you have a granularity of 16 ms and you use a refresh of 60 Hz for your monitor, the rendering parts of your code will constantly be triggered on wrong timing parts to properly coincide with the refresh of the monitor. Using timeGetTime() will give you, typically, a more precise counter, although the default apparently is 5 ms, but that would coincide better with the 60 Hz refresh of the monitor.
(And for those who are more versed in engine/rendering coding, feel free to point out my mistakes, I am still relatively new to graphics engine programming.)
DOOM 3 / PREY
Apparently Doom 3 has a fixed 60 fps tic check system wherbyes you can not run it at more than 60 fps. Its like a 1 second interval check, apparently to stop online cheating.
The more i looked into it the more cases i have found with people experiencing this "tic stutter bug".
com_fixedtic 1 and com_precisetic 0 are meant to fix the stutter but alas for me they dont.
What do you guys make of that? , a Possible problem with some systems and TIC Rates? , is it called the tic stutter bug?. Why does the GetTickCount cause me so much grief with frameskipping?.