Dolphin, the GameCube and Wii emulator - Forums

Full Version: FPS, VPS and video backend query
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I wasn't sure where to post this so I hope it's ok here.

I've got a couple of queries about FPS and VPS in terms of what the values mean.

Would I be right in thinking that if the VPS is showing as 60 and 100% speed then the emulator is running pretty much as a real machine would be (assuming it's supposed to be outputting at a max framerate of 60fps)?

If that's the case then with a VPS value of 60 the FPS value should be pretty much what a real machine would be outputting at that particular moment... right? It could be less than 60 but that's not a problem if (a) the game is locked to, say, 30FPS or (b) the game is a variable frame rate game.

Assuming I've not got any of the above wrong, would I be right in thinking that the video backend *shouldn't* affect the internal FPS? - i.e. if a particular section of a game runs at, say, 30FPS using OpenGL then you'd expect it to also run at 30FPS using D3D if the VPS in both cases was showing as 60 and the emulation speed was 100%.

The reason for my confusion is that I've been playing Rogue Ops recently and it's a variable framerate title. If I switch the frame limiter off I can run the game at over 200% speed so I thought I'd try out the overclocking feature to see if I could get 60FPS throughout (I can). However, before I did that I thought I'd try a couple of test sections first to see what I was getting without overclocking. I noticed I'd get a fairly consistent 30/60/100% (FPS/VPS/%) at the start of one level if I used OpenGL (my usual setting) but got 60/60/100% using D3D and just spinning around and general mucking about showed that it was definitely more fluid. If I turned frame dump on then the D3D backend matched the OpenGL backend - i.e. it drops to an effective rate of 30FPS.

Have I totally misunderstood the whole FPS, VPS situation or is this behaviour as you'd expect? In terms of my settings, I'm pretty certain that other than using 4x internal resolution I hadn't altered any other settings. I was using 4.0-5394 but I've just switched to 4.0-5718 and I'm getting the same result.

EDIT: OK, I assume it's something to do with the dual-core option being selected. If I disable it I get 30/30/50% using OpenGL (i.e. it effectively matches D3D's 60FPS..... right??!??). I'm still a bit confused about what the "proper" framerate should be but I guess that it's whatever the frame dumper produces.... right? Sorry, just a bit confused in general! Wink
For Dolphin, AMD GPUs are known to be faster for most games when using d3d instead of ogl. Or maybe the game in general runs faster in d3d than it does in ogl.

As for the game running at constant 30 fps when running slower, i can think of 2 reasons for this:
- You have vsync turned on, or you are using windowed mode/borderless fullscreen and you have aero enabled
- The game just doesn't use fps between 30 and 60, and falls back to 30 whenever there's a small hiccup
My first post was a bit long-winded but I wasn't sure how to best to explain myself. I'm still not.... probably! Wink

The basic thing I don't understand is how choosing a different video backend affects the number of frames per second that the emulator renders internally (as opposed to realtime). I can understand how it might produce a different FPS value but I didn't think that would be the case if the VPS value is the same with both backends. (Obviously, the dual-core option may be causing it to glitch and produce different values in realtime but I'm still unsure why that would be only happening with D3D but not OpenGL).

I'm working on the assumption here that if the VPS value is a constant 60 then whatever FPS value you get is the same rate at what a real Gamecube would be knocking out as well.

What I mean is, if you only ever got a VPS value of, say, 45 but were getting a FPS value of 45 as well then as far as the emulator is concerned it's actually producing 60fps internally, it's just that I'm only seeing it do it at a rate of 45 so it looks a bit slower than it should. You just take 60 and divide it by the VPS, then multiply by your FPS value and you get what the emulator thinks it's knocking frames out at.... well, that's what I'm assuming here.

Yeah, sorry.... I've probably been just as bad wording what I'm trying to say but hey! I hope you get what I mean! Smile