Doom (PrBoom) 60fps option not working in game

Hi, I recently altered the option in the PrBoom core to run Doom at 60fps.

Retroarch reports the frame rate as 60, and so does Fraps, but I can see it is running at 40fps (the default).

Weirdly, while the demo gameplay is running it looks like 60fps.

If I crank it up to 120fps I definitely see an improvement, but my display only supports up to 60, so I then see screen tearing.

Just wondering if anyone has an idea what’s happening? Or a possible solution? :thinking:

I can confirm this issue. 60fps doesn’t look like it’s 60fps.

1 Like

It’s 60fps but it’s displaying whatever is there when the native 35fps gets interpolated I think.
35/70/105/140 are probably all smooth (I could test 70 which is fine, when you reach 120 it’s less apparent).
That’s perhaps what causes gsync to not work well at 120.

Thanks for the update to you both :+1: I tried 70fps, this caused frame tearing (as expected, my monitor is limited to 60), and although it was hard to tell, it also didn’t look like it was reaching 70fps.

It’s weird that the rolling demo gameplay doesn’t have any issues :thinking:

I tried the original PrBoom and PrBoom Plus, both have an option to uncap the framerate which has no issues and gave me 60fps (I’m guessing limited by v-sync); perhaps this option could be introduced to the core?

When I use the “Frameadvance” hotkey (I think by default it’s bound to “K”, I can see movement on every frame.

It’s hard to be able to exactly know what’s the problem when everything seems to report it as 60 fps.

It’s strange that you mention that you don’t have problems with the demo, because there should be no difference. Is it just a matter of “feeling”, or is there a specific way I can test this? Does having the menu open on top of the demo make any difference vs not showing the menu?

Btw, the movement of the player and the motion of monsters (not their animations, obviously) should be 60fps, but doors, sectors and scrolling flats are not (those require updating the thinkers and there were some gitches I didn’t get around to fix yet).

I tried the original PrBoom and PrBoom Plus, both have an option to uncap the framerate which has no issues and gave me 60fps (I’m guessing limited by v-sync); perhaps this option could be introduced to the core?

That was what I actually was doing. The problem is that libretro cores work a bit different, specially if you want to keep being able to control the speed through the frontend. PrBoom uses timers and that’s not a good fit for libretro, so instead each frame a fraction of the game tic is added (there’s meant to be 35 tics per second in original Doom, things like demo playback and multiplayer rely on that). So that’s why multiples of 35 work best, the movement gets interpolated to make it smoother, but the actual game still tries to behave as if it was 35 fps for compatibility, most Doom engines do that.

Use the K hotkey while you keep a direction (turn or strafe) pushed down at 60fps.
You should see 1 long movement, then 1 shorter, 1 longer, etc.

Hi, on second inspection, the demo gameplay isn’t at 60fps; I think because the movement was so fast it gave me the impression of a better rate.

I recorded some footage, this is from Retroarch - no audio: https://app.box.com/s/v195t3r2mmed029f701a6rbjtmenppm6

And this is PrBoom (original version, not Plus) - no audio: https://app.box.com/s/2ieodg2bbhqu8qb0xte175pybx32mloj

If you view them in a media player, like SMPlayer etc, you can advance a frame at a time and see what’s going on (use ‘<’ and ‘>’ keys in SMPlayer).

Like you said, it appears to be filling in the additional frames with slight movement; so although it is 60fps, there is barely any movement on those additional frames to make it feel smooth.

So it seems there may be no way to stop this from happening; unless there is an option in Retroarch that could help?

I do prefer Retroarch as I can play with a gamepad with no hassle and the CRT shaders look good.

Could you try to redownload from the updater the PrBoom core and try the newest version? I committed some improvements and hopefully it should be better now.

Also the doors, elevators, crushers and scrolling textures should be 60 fps now too.

That’s a massive improvement, thanks :+1:

I’ve uploaded an updated video of the Retroarch core (2.5.0 - 6950ee0) here: https://app.box.com/s/0ytpgin0spepey6cdkfcogfvpus30jzf

Frame rate is now great. Even runs incredibly smooth on my 240hz monitor with the 140fps option (for some reason works better than the 120fps option).

I noticed some unrelated issues though, when you find a secret there is no message or sound cue. Even if it’s ON in the options. Also, i don’t seem i can increase the sound channels from only 8. Even if i do it in the cfg, it automatically gets back to 8 (so you get a lot of muted sounds when a lot is happening).