fabiangreffrath / taradino

SDL2 port of Rise of the Triad
GNU General Public License v2.0
29 stars 8 forks source link

Unstable framerate #56

Open vanfanel opened 4 months ago

vanfanel commented 4 months ago

Hi there,

This engine runs at 35FPS, so running it on a 70Hz video mode with VSYNC really makes it look smooth. However, movement becomes "jerky" sometimes: I initially though i was because of audio effects being played, but even in absence of these, framerate becomes jerky sometimes without apparent reason.

I tried disabling internal SDL_Delay() calls to no avail. What does this engine that could be causing the intermitent sub-35FPS framerates? Any clues?

fabiangreffrath commented 3 months ago

I initially though i was because of audio effects being played

In fact, all audio effects in Taradino are already getting prechached at startup.

I tried disabling internal SDL_Delay() calls to no avail. What does this engine that could be causing the intermitent sub-35FPS framerates? Any clues?

Have you applied any code changes?

vanfanel commented 3 months ago

@fabiangreffrath No, no Code changed at all. But consider that I am using the Wayland backend on SDL2 where "every frame IS perfect" so thankfully there is no tearing but to achieve completely smooth movenent I should know the exact framerate of the Engine. I know It is around 35 FPS, but what exactly? Or, in display terms, whats the screen refresh rate that the Engine expected in DOS? Should be something like 69.xx or 70.xx

vanfanel commented 2 months ago

@fabiangreffrath What about a possible crispy-taradino? With uncapped framerate, etc

fabiangreffrath commented 2 months ago

We don't need to become "Crispy" for this. It's already on the agenda. 😉

vanfanel commented 2 months ago

@fabiangreffrath ahh!!! So great to hear!!! I'll be first in line to test!

Also, I discovered a nasty "trick": since my monitor can go down to 35Hz video modes, I can set a 35Hz video mode using wlr-randr on the script I use to launch the engine, and I get silk-smooth 35FPS on a 35Hz monitor! (70Hz should work too since 70=35*2 but it doesn't and there's occasional hiccups). Also, I can change VBLCOUNTER in rott/isr.h from 35 to whatever value matching my monitor refresh rate and the game is smooth and as fast/slow as I want it to be. But this is a nasty trick so as I said... uncapped framerate will be the definitive solution!