Open-PS2-Loader icon indicating copy to clipboard operation
Open-PS2-Loader copied to clipboard

[FR] Support magnification control in GSM

Open wolf-re opened this issue 4 years ago • 1 comments

Is your feature request related to a problem? Please describe. Yes: Some games have the wrong aspect ratio for higher resolution outputs, like 720p / 1080p, which possibly is a spcific game thing. Besides that some TVs don't allow changing the aspect ratio to 4:3 in game mode, so this could also help with that.

Describe the solution you'd like DISPLAY1 and DISPLAY2 registers on the EE not only support moving the image around (which is currently supported with the X/Y offsets in GSM menu). But also change the horizontal and vertical "magnification" (stretch factor) with the MAGH / MAGV registers. So adding an option on the GSM submenu to also influence these two parameters could address the issue. It also possibly adds interesting zoom functions for other use cases (e.g. cropping away hard-matted widescreen bars in games).

Describe alternatives you've considered So the games I tested that do have aspect ratio issues with higher resolutions, tend to work with lower ones (e.g. DTV 480p and such). They are not as crisp though as with 720 / 1080p resolution, especially when taking the 4:3 active area inside the 16:9 display area into account.

Additional context I got the idea looking at this thread explaining the details. Looking at the OPL code, adding the menu options should be rather easy:

  • https://github.com/ps2homebrew/Open-PS2-Loader/blob/426014779e42465c8f0fbfe4bde6e5f3089d34f8/src/dialogs.c#L444
  • https://github.com/ps2homebrew/Open-PS2-Loader/blob/426014779e42465c8f0fbfe4bde6e5f3089d34f8/src/gsm.c#L29

However I'm not entirely sure how those settings are then propagated / how GSM is actually done? I could find this command line building:

  • https://github.com/ps2homebrew/Open-PS2-Loader/blob/426014779e42465c8f0fbfe4bde6e5f3089d34f8/src/gsm.c#L141
  • https://github.com/ps2homebrew/Open-PS2-Loader/blob/426014779e42465c8f0fbfe4bde6e5f3089d34f8/src/system.c#L784

Which is passed on to an ELF:

  • https://github.com/ps2homebrew/Open-PS2-Loader/blob/426014779e42465c8f0fbfe4bde6e5f3089d34f8/src/system.c#L838

But how it continues from there, I'm not sure ...

Also the above linked post quotes this formular:

Height_in_pixels=(DH+1)/(MAGV+1);

... which suggests a more complex relationship between the registers, which may need to be replicated in the command line building / ELF being called.

Feel free to ask any questions of course :smile:

And also: awesome project, it greatly improved my gaming experience, thanks a lot! :+1:

wolf-re avatar Feb 07 '21 14:02 wolf-re

I hope this feature can be realize soon :)

Santa-LM avatar Oct 10 '23 03:10 Santa-LM