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.01k stars 2.15k forks source link

ULES00126 Virtua Tennis: World Tour - Start Menu not showing properly in some backends #11578

Open ppmeis opened 5 years ago

ppmeis commented 5 years ago

Platform: Windows 10 x64 October 2018 Update Hardware: i7 3770K/Nvidia GTX 1080 PPSSPP Build: Latest

Start a normal match, after game is loaded press start. No start menu in Vulkan and Direct3D11.

Tested with latest build. Lightning seems to be fine thanks to latest changes, but now start menu has disappeared in some backends:

Vulkan: image ULES00126_0001.zip

OpenGL seems to be fine: image

Direct3D9: image

Direct3D11: image ULES00126_0002.zip

Originally posted by @ppmeis in https://github.com/hrydgard/ppsspp/issues/4140#issuecomment-441137874

hrydgard commented 5 years ago

Is it really new that the pause menu disappears? If so, could you try to find the build where it happens?

ppmeis commented 5 years ago

Tested previous builds, this bug is present since v1.5.4:

hrydgard commented 5 years ago

It sounded like it was new when you said "but now start menu has disappeared in some backends:".

Very low-impact, pushing back to 1.9.

unknownbrackets commented 5 years ago

Copying this here from #4140:

Near texture 0x08973d00 + several draws to VAIDISOVA. I think that's a separate issue related to depth.

It draws verts with a crazy high Z, depth clamp, and standard minz/maxz. It uses src >= depth test. This passes and it draws the BG and clamped depth. Lighting is disabled. Alpha test and blend, but 8c alpha sent.

Not clear what should be keeping it from drawing... it doesn't draw on a PSP running the same dump...

The range implies allowing depth clamp was the cause, but I'm just not sure why it SHOULDN'T clamp in this case: https://github.com/hrydgard/ppsspp/compare/v1.5.4-189-gc1a23658d...v1.5.4-197-gea50561c8

-[Unknown]

ppmeis commented 5 years ago

Tested with latest build, same issues. Also I saw a new render error after a point:

It should show both players image ULES00126_0001.zip

meowthed commented 4 years ago

Issue still present as of 1.9.3 on Vulkan backend vtvulkan

ppmeis commented 4 years ago

Tested in latest Windows build. Same issues.

hrydgard commented 4 years ago

I think that dark overlay with a way-out-of-range depth value is a remnant from the Dreamcast version, and nobody simply noticed that it wasn't rendering on the PSP. The Dreamcast notoriously had full FP32 depth and depth sorting! (early PowerVR took the tricks you can do with tile-based rendering very far).

That said, why we are clamping and the PSP is not is unclear. This only "works" right now in D3D9 and GLES because we don't do depth clamping.

hrydgard commented 4 years ago

Anyway, this has such small impact that I'm postponing the investigation to after 1.10.

unknownbrackets commented 2 years ago

It should show both players

This is caused by draw 481. As far as I can tell, it's caused by some verts with depth very negative not being clamped, as per notes in #12058. It works in softgpu with those rules implemented.

v1.5.4-197-gea50561c8 fail

This is 621/639. In this case, it's definitely negative Z, the initial Z is positive, but the projection matrix reverses it (just to be reversed again by the viewport.) This draw should just be clipped. I wonder if they initially intended to gray the screen, but it didn't work and they just left it rather than debug since it looked fine not grayed.

Both seem like they'll be fixed by implementing the Z rules noted in #12058.

-[Unknown]