Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shadow Shoot and Puyo Pop Fever DX, FPS counter and limiting issues #68

Open
TwoSpacesSG opened this issue Mar 6, 2025 · 1 comment

Comments

@TwoSpacesSG
Copy link

TwoSpacesSG commented Mar 6, 2025

Shadow Shoot normally runs at a consistently low FPS (seemingly around 10) during gameplay, while during loads it appears to uncap the FPS. For the sake of speedruns, it makes sense to limit the FPS to 60 in order to prevent advantages related to a fast PC making the loads faster, and potentially to show the FPS counter for speedrun verification.

This is where the problem is visible - at the 60 FPS limit in freej2me+, the loads appear to run at 30 fps, while at the same time the FPS counter shows 20 FPS, double the visual FPS count. This means that not only is the FPS counter inaccurate, but there's no way to limit the FPS for loading times in this game to 60, which would prevent unfair advantages in speedruns while being a decent approximation of loads on Nokia and SE phones.

I'm far from an expert, but I think it might be related to the way of double buffering used by these two Sega games, unlike for example Sonic 1 which I don't think uses anything like that. If you use KEmulator's memory view (not available with Java versions above 8) in this game, you'll see that the game stores an image of the game screen in memory before outputting it onto the canvas.

This also seems to happen in Puyo Pop Fever DX, but it's harder to notice there due to the type of gameplay that game has.

@TwoSpacesSG
Copy link
Author

TwoSpacesSG commented Mar 7, 2025

Oh, wait, I just checked Sonic 1 Part 1, and it also has this issue. FPS counter shows double (around 120 FPS when uncapped), and setting the limit to 60 limits FPS to 30. It used to be like that, but then improvements were done to make the display and limiting more accurate, but now it seems to have regressed back?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant