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

Dynamic resolution support #328

Open
wants to merge 263 commits into
base: main
Choose a base branch
from
Open

Dynamic resolution support #328

wants to merge 263 commits into from

Conversation

ds-sloth
Copy link
Collaborator

@ds-sloth ds-sloth commented May 8, 2022

I've had these features backported for a while. Now is a good time to begin testing and discussing, since they're now based on the main branch rather than another PR.

Some areas I think may have things to discuss:

  • Which NPCs should activate when they are visible, and which should activate when they are within 800x600 of the player? (Should the answer depend on whether the screen is bigger or smaller than 800x600?) Answer: we have a good set of defaults for now, future cases can be raised in Issues.
  • How should section resizes be animated? During 2P mode?
  • Should gameplay field resolutions above 1728x720 (2.4 aspect ratio 720p) be supported? Answer: probably not -- too far above the original game's 600p.
  • Correct handling to force at least 800x600 during Mode 2/3, and in multiplayer.
  • Finish the fog-of-war effect. Answer: still too many things to discuss, instead limit the world map view by default.
  • Ensure that the ini files for the new world map border and backdrop assets are correctly loaded.
  • How does this work on Vita? Other non-desktop platforms? Answer: @suicvne says there are a few issues with rendering that are more obvious here, but also occur in 2P mode on the non-multires version.
  • Resolve minor gameplay recording divergences recently discovered by @ds-sloth
  • Resolve 2P object spawn issues discovered by Sapphire Bullet Bill
  • Improve rendering for AutoCode HUDs that target 800x600. >800x600 done, <800x600 isn't possible in most cases. I now agree with @0lhi that it's up to the user's discretion if they're playing content designed for SMBX64/AutoCode.

I'm sure there are also other suggestions or bugs that I haven't mentioned here. I'm looking forward to hearing lots of feedback.

ds-sloth added 25 commits May 8, 2022 00:02
(useful for full-level recordings where original behavior is desired)
This makes them act more like generators, which have always had this behavior.
(Somehow, the enter/exit fullscreen on the old multires branch is much more reliable at least on my system. Not sure why though...)
Thinking about best ways to handle case where section bounds change during splitscreen, and splitscreen is maintained.....
We need to ensure that the number of frames matches exactly in compat mode.
@ds-sloth
Copy link
Collaborator Author

ds-sloth commented May 8, 2022

There may be some frame-count compatibility issues with the qScreen code during 2 player mode. Need to investigate further. This code is really tricky to debug. However, we now have animations like this:

@ChristianSilvermoon
Copy link

ChristianSilvermoon commented May 11, 2022

I do personally think higher resolutions should be supported, since 4K and 8K displays are a thing now days and it's always nice to be able to take advantage of the hardware you have.

Though admittedly I have a 4K screen I run at 1080p because that's just asking a bit too much of my poor 1050ti when it comes to gaming.

I unfortunately don't have any exotic resolution hardware to test the game on.
My Pine64 Pinephone has a 720p screen and my PiBoy DMG has a 480p screen

@ds-sloth
Copy link
Collaborator Author

I do personally think higher resolutions should be supported, since 4K and 8K displays are a thing now days and it's always nice to be able to take advantage of the hardware you have.

So, @Wohlstand built good scaling code and I've added integer scaling as an option. You'll certainly be able to run the game at 4K display resolution. (Even with integer scaling! It's 3x720p.) The question is whether the game's internal resolution should be able to be set above 1728x720. You can experiment by setting InternalW and InternalH in config.ini to something like 1920 and 1080 (or even 3840 and 2160) and seeing what things look like.

@0lhi
Copy link
Collaborator

0lhi commented May 12, 2022

Could we have an option to have the window size fixed (except for dynamic), and automatically adjust to the res selection?

EDIT: Also, some codes to change resolutions on the fly would be convenient:

  • gbaview and 480x320
  • snesview [...]
  • ndsview [...]
  • vgaview [...]
  • 3dsview [...]
  • smbxview [...]
  • hdview [...]
  • dynview
  • dyn{integer}x{integer}go

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

Successfully merging this pull request may close these issues.

Resizing A Section The Player Isn't In Freezes The Game Background Rendering Bug on Section Size Change
9 participants