You open a game with letterboxes. You want to resize proportionally to the maximum fill area (scale to fit, with the black letterbox content not counting as content).
Menu > Options > Display > Setup custom scaler.
The UI does not allow you to make scale source image larger than the viewport (aka overscan).
Doing this manually by "hacking" the config file manually, doesn't work either.
Scaler options in a game config file
285 made reading/editing a bit hard, but I managed.
With the OpenPandoras screen being 800x640 I tried the following:
g_scaler3 = 5 # Use custom scaler
g_scaler can be any of these 5 constants, as can be seen in menu.h
0 SCALE_1_1,
1 SCALE_2_2,
2 SCALE_4_3,
3 SCALE_4_3v2,
4 SCALE_FULLSCREEN,
5 SCALE_CUSTOM
When you use the custom scaler, you can define these 4 values:
g_layer_x , g_layer_y , g_layer_w , g_layer_h
To mimick the SCALE_4_3 values in a SCALE_CUSTOM setup, you'd use these:
g_layer_x = 50 # dec 80
g_layer_y = 0
g_layer_w = 280 # dec 640
g_layer_h = 1e0 # dec 480
Increase the source image height by twice the letterbox (on on top, on on bottom) of 40px, so by 80px (hex: 50):
g_layer_x = -28 # dec -40
g_layer_h = 230 # dec 560
→ Got totally ignored. It tries the closest maximum possible to your given values which is 4:3 display. One cannot scale above the viewport to cut off source image parts. Also not via cfg file hacking.
Proposal
In a first experimental minimal update pcsx allows overcan, if the user submits the metrics via .cfg file.
In its final update, the user can do this via menu > "Setup custom scaler".
This dialog has other usability issues too, which are fixed together, to make a useful new whole:
283
284
Other UX changes to do:
Indicate overscan / underscan
Green areas = Viewport estate left.
Red boundary line: Some content is outside the viewport, indicated by the red line + red text like "+40px" next to boundary center.
In my example from above the screen looks like this:
+40px on top and +40px bottom from my example given above.
The left and right boundary show neither green surface areas nor a red boundary, as the content boundary is exactly on the viewport boundary.
The control scheme gets improved
Dpad = Scale on respective axis
R + Dpad = Move on respective axis
L + Dpad = Scale on respective axis and the other axis proportionally
Snapping
When a content boundary hits any viewport boundary
the boundary line shortly flashes
the auto increase is paused for 1000-2000ms (experiment the ideal value), enough time to get off the Dpad when satisfied,
if the Dpad remains pressed after that treshhold the scaling/moving continues.
Environment
Reproduction
Scaler options in a game config file
285 made reading/editing a bit hard, but I managed.
When you use the custom scaler, you can define these 4 values:
Increase the source image height by twice the letterbox (on on top, on on bottom) of 40px, so by 80px (hex: 50):
→ Got totally ignored. It tries the closest maximum possible to your given values which is 4:3 display. One cannot scale above the viewport to cut off source image parts. Also not via cfg file hacking.
Proposal
283
284
Indicate overscan / underscan
The control scheme gets improved
Snapping