hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
11.22k stars 2.17k forks source link

Feature Request : Downsample down to PSP's native resolution (480x272) #17736

Open HelelSingh opened 1 year ago

HelelSingh commented 1 year ago

What should happen

PPSSPP should have a way to downsample down to the PSP's native resolution of 480x272 at fullscreen, not just down to users display resolution (as it can already do that).

This will greatly help with using CRT or LCD shaders with PPSSPP with correct geometry. Examples -

CRT shader at Native Resolution (1x) -

PPSSPP 2023-07-17 06-48-20

At (4x) res (look at the map) -

PPSSPP 2023-07-17 06-50-30

Framedump for this specific scene - ULUS10391.zip

CRT shader used (ReShade) - https://github.com/HelelSingh/CRT-Guest-ReShade/blob/main/Shaders/CRT-Guest-NTSC.fx

Shader settings used -

[CRT-Guest-NTSC.fx] PreprocessorDefinitions=Resolution_X=960,Resolution_Y=816 addnoised=0.000000 AS=0.200000 bardir=0.000000 barintensity=0.000000 barspeed=50.000000 beam_max=1.000000 beam_min=1.300000 beam_size=0.600000 blendMode=1.000000 blm_1=0.050000 blm_2=0.000000 BLOOMCUT_X=0.000000 BLOOMCUT_Y=0.000000 bloom_dist=0.000000 BP=0.000000 brightboost1=1.400000 brightboost2=1.100000 bsize=0.100000 CCONTR=0.050000 CDETAILS=1.000000 contr=0.000000 CP=0.000000 CS=0.000000 CSHARPEN=0.000000 csize=0.000000 cust_artifacting=0.000000 cust_fringing=0.000000 c_shape=0.250000 dctypex=0.000000 dctypey=0.000000 deconbx=0.000000 deconby=0.000000 decongx=-0.500000 decongy=0.500000 deconrx=0.500000 deconry=-0.500000 decons=1.000000 double_slot=2.000000 downsample_levelx=2.000000 downsample_levely=0.000000 gamma_c=1.000000 gamma_i=2.400000 gamma_o=2.200000 glow=0.050000 gsl=-1.000000 halation=0.050000 HARNG=0.400000 HSHARP=1.200000 HSHARPNESS=1.500000 inter=400.000000 interm=1.000000 intres=3.000000 IOS=0.000000 iscan=0.200000 iscans=0.250000 lsmooth=0.700000 LUTBR=1.000000 LUTLOW=5.000000 maskboost=1.000000 masksize=1.000000 maskstr=0.300000 mask_bloom=0.050000 mask_drk=0.500000 mask_gamma=2.400000 mask_layout=0.000000 mask_lgt=1.500000 mask_zoom=0.000000 MAXS=0.150000 mclip=0.000000 mcut=1.100000 mshift=0.000000 m_glow=1.000000 m_glow_cutoff=0.120000 m_glow_dist=1.000000 m_glow_high=5.000000 m_glow_low=0.350000 m_glow_mask=1.000000 noiseresd=2.000000 noisetype=0.000000 no_scanlines=0.000000 ntsc_bright=1.000000 ntsc_cscale=1.000000 ntsc_fields=0.000000 ntsc_phase=1.000000 ntsc_ring=0.000000 ntsc_sat=1.000000 ntsc_scale=1.000000 ntsc_shpe=0.750000 ntsc_shrp=0.000000 OS=1.000000 overscanx=0.000000 overscany=0.000000 PB=0.320000 PG=0.320000 post_br=1.000000 PR=0.320000 pre_bb=1.000000 quality=0.000000 ResolutionX=960.000000 ResolutionY=816.000000 rolling_scan=0.000000 sat=0.500000 sborder=0.500000 scangamma=2.400000 scanline1=6.000000 scanline2=6.000000 scans=0.500000 scan_falloff=1.000000 sega_fix=0.000000 shadow_msk=0.000000 SIGMA_H=1.200000 SIGMA_HOR=0.900000 SIGMA_V=1.200000 SIGMA_X=0.750000 SIGMA_Y=0.600000 SIZEH=6.000000 SIZEV=6.000000 SIZEX=3.000000 SIZEY=3.000000 slotmask1=0.000000 slotmask2=0.000000 slotms=1.000000 slotwidth=0.000000 smask_mit=0.000000 smoothmask=0.000000 spike=1.000000 S_SHARPH=0.900000 TNTC=0.000000 vigdef=1.000000 vigstr=0.000000 warpx=0.000000 warpy=0.000000 WP=0.000000 wp_saturation=1.000000

Who would this benefit

Anyone who wants to use external CRT or LCD shaders (like ReShade) with PPSSPP.

Platform (if relevant)

None

Games this would be useful in

All games.

Other emulators or software with a similar feature

DuckStation - https://www.duckstation.org/

Dolphin - https://dolphin-emu.org/

Checklist

LunaMoo commented 1 year ago

If you ask about exclusive fullscreen, this was already requested and there's no reason to open duplicate issues about it.

If not, then I don't understand what you're requesting which isn't already possible to do. It seems more like a limitation of your external software than PPSSPP itself in which case you'd do better just using native post process support in PPSSPP.

HelelSingh commented 1 year ago

It seems more like a limitation of your external software than PPSSPP itself in which case you'd do better just using native post process support in PPSSPP.

I also use ReShade shaders with DuckStation (10x internal res downsampled down to native PS1 res) where it works perfectly.

Example - https://cdn.discordapp.com/attachments/480103153803460614/1130527431753748570/DuckStation_2023-07-17_21-21-07.png

LunaMoo commented 1 year ago

I'll just close it as a duplicate of:

12347 #9408

but again, you can do everything you want with PPSSPP native shader support, there's no reason to use external systems which lack control over basic stuff and can't ever have PSP specific features, not sure if that particular shader wasn't already converted to PPSSPP as I'm not really into adding ugly lines to everything.

hrydgard commented 1 year ago

I somewhat disagree, having a type of shader that can downsample to a specific resolution has some legitimacy and we don't have an option to do that right now. Although indeed, the main use case would probably be with external shader apps like ReShade, and having the CRT shader as a PPSSPP post-shader would be better.

I'm going to keep it open but not likely to prioritize soon. Long term I plan a complete redo of our post-shader stack, and then this might come into the picture.

LunaMoo commented 1 year ago

I have a feeling just using "screen scaling filter" to nearest would be enough here, just forgot we have that option since it was moved to display layout and effects screen.

HelelSingh commented 1 year ago

Screen scaling filter is already set to Nearest for both screenshots in my first post. Btw, I ported that shader to ReShade myself, I know what I'm doing.