sm64pc / sm64ex

Fork of https://github.com/sm64-port/sm64-port with additional features.
1.59k stars 489 forks source link

(Question) How do you get the game to run in 60FPS? #158

Open Birdman7 opened 4 years ago

Birdman7 commented 4 years ago

The game by default is capped to 30 FPS. Are there any methods or plans in the future for uncapped framerates?

wabberz commented 4 years ago

The whole game logic is tied to the framerate. There would need to be substancial changes to the code to achieve this.

Birdman7 commented 4 years ago

That's true. I guess a limit-removing port of the game (Akin to Crispy DOOM) would be a separate effort entirely.

AaronMT commented 4 years ago

If you want to see what it looks like at 60 while still breaking the logic of the game you can turn off vsync and enable a frame limit in Nvidia control panel 3D application settings for the app

RandomDude4 commented 4 years ago

People have made updated/modded ROMs with 60 fps with fixes for the physics etc. I tried one of these a few years ago and at first glance it seemed to work well, but perhaps there are some bugs that I did not see. Here is an example: https://www.dsogaming.com/news/you-can-finally-play-super-mario-64-with-60fps-and-proper-physics-on-the-pc-via-n64-emulators/

Has anyone tried to compile sm64pc with such a modded ROM? Would it work?

zrckr commented 4 years ago

@RandomDude4, we using original .z64 ROMs for assets extraction only. Any code modifications from modded ROMs does not affect on PC port's code.

RandomDude4 commented 4 years ago

How was the logic/physics from the game coded into sm64pc? Must have been understood by someone in order to write the code... that person should know if it's easy to upgrade the code to work at 60 fps and perhaps what to change as well?

60 fps would be a very nice option to this game in my mind, 30 fps feels low by today's standards. But perhaps one should keep a legacy 30 fps mode in the options for thst original feel.

uper333 commented 4 years ago

Good, I just tried a compilation for nintendo switch that works at 60fps, they just implemented it and it has some textures flaws but it works very well, although I haven't tried too much, are you planning to add 60fps to this version?

Buenas, acabo de probar una compilacion para nintendo switch que funciona a 60fps, lo acaban de implementar y tiene algunos fallos de texturas pero por lo demas funciona muy bien, aunque no he probado demasiado, se tiene pensado añadir 60fps a esta version?

Birdman7 commented 4 years ago

@uper333 I doubt it's high on their priority list. I guess they're going for more of a Chocolate DOOM style port of the game, unless I'm mistaken.

enigma9o7 commented 4 years ago

hi-rez textrures would make this look more pretty than doubling framerate..... personal opinion... but if you been watchin gthose side-by-side videos like me,the framerate is a mnor improvement... the ai textures make it look super

fgsfdsfgs commented 4 years ago

It would be ideal to untie the game logic from framerate completely (for example by multiplying everything by frametime), however it might affect some aspects of the game. The aforementioned Switch build does exist, but it's closed source.

Birdman7 commented 4 years ago

Is frame interpolation an option? I heard it's what various DOOM source ports use to get uncapped framerate.

DimensionWarped commented 4 years ago

It's an option, but it's kind of a bad one. It means you are always visually a half-step behind the real simulation.

It's also not exactly easy.

Birdman7 commented 4 years ago

My idea? To heighten the framecap, you must first slow the physics down.

DimensionWarped commented 4 years ago

Well, usually you would take every frame based movement/acceleration value and convert that into a time based velocity/acceleration value... each frame you calculate the difference in time from the last frame prior to running the physics on everything (your time delta) and you multiply that by your time based changes.

An alternative is to target a specific higher framerate and just decouple the rendering frames from the physics. There are pros and cons to that approach... it's generally easier to do and easier to fix bugs for If you just target 240hz. But if you are running on a monitor doing 144hz you might end up having to pick less than ideal frames sometimes... but I think the Forza games after/including 2 do that. Of course, they have the luxury of generally just running on 60hz displays (and of course if you have a 144hz monitor you can usually choose to run at 120hz instead).

Of course having a higher simulation framerate that isn't done in a time-based manner means that the game would slow down on hardware that couldn't keep up. But getting rid of the variability might be worth it.

Tatsuya79 commented 4 years ago

You've got some patches shared here: https://sm64pc.info/forum/viewtopic.php?f=4&t=2&i=2

60fps_interpolation_wip.zip

MichiruNakam commented 4 years ago

You've got some patches shared here: https://sm64pc.info/forum/viewtopic.php?f=4&t=2&i=2

60fps_interpolation_wip.zip

Tried on Ubuntu and 60fps with capping is not working, but without capping is working. Anyone can help please?

Marcelo20XX commented 4 years ago

You've got some patches shared here: https://sm64pc.info/forum/viewtopic.php?f=4&t=2&i=2

60fps_interpolation_wip.zip

I applied the patch but now I get sound stuttering, is this a glitch of the 60FPS code? any chances for a fix?. I am on Windows 7 64 bits