PCSX2 / pcsx2

PCSX2 - The Playstation 2 Emulator
https://pcsx2.net
GNU General Public License v3.0
11.57k stars 1.6k forks source link

[BUG]: Bonus Demo 8 (SCED-52932) Missing Images. #9151

Open StillPlay2 opened 1 year ago

StillPlay2 commented 1 year ago

Describe the Bug

On the "Accessories" tab there should be an image of the peripheral in question on the left side which you can move around with the right analog stick. This happens on all renderers including Software mode but in Software, it flashes the image for a second. While switching back & forth between Vulkan/Software, a grey box (as shown below) is shown instead. This also happens on all the tabs where an image is supposed to be shown.

GS Dump provided below:

Reproduction Steps

Start The Demo, Press Accessories.

Expected Behavior

Image of the peripheral clearly shown.

PCSX2 Revision

V1.7.4675

Operating System

Windows 10 (64bit)

If Linux - Specify Distro

No response

CPU

AMD Ryzen 7 3800x

GPU

AMD RX 6500XT

GS Settings

Native

Emulation Settings

Default settings

GS Window Screenshots

Bonus Demo 8_SCED-52932_20230703174619 Bonus Demo 8_SCED-52932_20230703174644 Bonus Demo 8_SCED-52932_20230703174653

Logs & Dumps

Bonus Demo 8_SCED-52932_20230703174619.zip

StillPlay2 commented 1 year ago

Bonus Demo 8_SCED-52932_20230703180223 Bonus Demo 8_SCED-52932_20230703180220

refractionpcsx2 commented 1 year ago

I can at least confirm this is a GS emulation issue, I ran my own dump on the console and got what you'd expect

Screenshot 2023-07-03 19-01-22

StillPlay2 commented 1 year ago

Interesting, that might also be why WRC4 on the demo just shows a black screen 🙃

Mrlinkwii commented 1 year ago

@StillPlay2 its not , normal WRC4 other demos needs patch to boot , so i assume its the same

prafullpcsx2 commented 1 year ago

Dobiestation seems to get it right.

refractionpcsx2 commented 1 year ago

So, this demo kinda sucks. it's using STQ to perspective correct the image, but the problem is, it uses denormals.

Now if you divide them it seems to be right, but somewhere along our chain (possibly in the GS vector stuff) it treats the denormals as zero, so it maps nothing, I suspect dobiestation just tanks it and does it as you'd expect.

Below I checked if both S and T were denormals, and if so, do the division first to make them normal float numbers, then set Q to 1.0. It kinda worked, but you can tell the top right perspective correction is a bit broken.

image