PCSX2 / pcsx2

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

Driver Parallel Lines GSdx DX11/OpenGL SW Cars randomly changing color - HW garbage textures #451

Closed joder666 closed 1 year ago

joder666 commented 9 years ago

I am using pcsx2-v1.3.1-8-gf88bea5-windows-x86 from orphis buildbot. Default settings (2-safe) except for: GSdx10 software +2 rendering threads SPU-X set to async mix and interpolation to cubic.

To reproduce just start a new game. While driving around you'll notice how your vehicle changes color randomly (red,white,black,blue) as well as other cars at sight, except for Taxis and Cops.

There are not known revisions of pcsx2 that previously worked OK with this game iirc. Last time i tested it was with svn r5559, unplayable using GSdx hardware mode due to graphics errors, while too slow with software mode.

BTW, i am using the igpu from processor HD Graphics 2000 with latest drivers installed 9.17.10.4101.

Log:

PCSX2 1.3.1-20150201194910 - compiled on Feb 1 2015 Savestate version: 0x9a0a0000

Host Machine Init: Operating System = Microsoft Windows 7 Enterprise Edition Service Pack 1 (build 7601), 64-bit Physical RAM = 7882 MB CPU name = Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz Vendor/Model = GenuineIntel (stepping 07) CPU speed = 3.299 ghz (4 logical threads) x86PType = Standard OEM x86Flags = bfebfbff 1fbae3ff x86EFlags = 28100000

x86 Features Detected: SSE2.. SSE3.. SSSE3.. SSE4.1.. SSE4.2.. AVX

Reserving memory for recompilers...

Loading plugins... Binding GS: D:\BC\Juegos\Emus\pcsx2-v1.3.1-8-gf88bea5-windows-x86\plugins\GSdx32- AVX.dll Windows 6.1.7601 (Service Pack 1 1.0) Binding PAD: D:\BC\Juegos\Emus\pcsx2-v1.3.1-8-gf88bea5-windows-x86\plugins \LilyPad.dll Binding SPU2: D:\BC\Juegos\Emus\pcsx2-v1.3.1-8-gf88bea5-windows-x86\plugins\SPU2- X.dll Binding CDVD: D:\BC\Juegos\Emus\pcsx2-v1.3.1-8-gf88bea5-windows-x86\plugins \cdvdGigaherz.dll Binding USB: D:\BC\Juegos\Emus\pcsx2-v1.3.1-8-gf88bea5-windows-x86\plugins \USBnull.dll Binding FW: D:\BC\Juegos\Emus\pcsx2-v1.3.1-8-gf88bea5-windows-x86\plugins \FWnull.dll Binding DEV9: D:\BC\Juegos\Emus\pcsx2-v1.3.1-8-gf88bea5-windows-x86\plugins \DEV9null.dll Plugins loaded successfully.

(GameDB) 9677 games on record (loaded in 161ms) HLE Notice: ELF does not have a path.

Initializing plugins... Init GS Windows 6.1.7601 (Service Pack 1 1.0) Init PAD Init SPU2 Init CDVD Init USB Init FW Init DEV9 Plugins initialized successfully.

Opening plugins... Opening GS Opening PAD Opening SPU2

joder666 commented 9 years ago

I bet this has something to do with this: https://github.com/PCSX2/pcsx2/issues/345

bositman commented 9 years ago

I can confirm the bug:

PCSX2 version: 1.3.1 GIT 976-ga4f8c6d

-PCSX2 options: Defaults

-Plugins used: GSdx, SPU2-X, Lilypad, Linuz ISO/Gigaherz CDVD,rest null plugins

-Plugin settings: Defaults, tested with native, scaling, opengl depth, all accurate options, accurate date, nothing affected the issue.

-Description: When using GSdx OpenGL or DX11 Hardware backends, the car and people textures are pretty much completely messed up. No option seemed to affect the issue.

When using GSdx OpenGL or DX11 Software backends the textures look fine, but your car and other cars keep changing color every so often ( i presume a lightning effect gone wrong)

-How to replicate: Enter ingame

Software renderer: pcsx2 2015-08-19 02-04-35-21 Hardware renderer: pcsx2 2015-08-19 02-04-37-47

-Last known version to work: -

-PC specifications: CPU: Intel Core i5 2500K @ 4.3Ghz GPU: Gigabyte Geforce GTX660 Windforce OC 2 GB OS: Windows 7 SP1

Had to make the GS dump large until a car changed color, so this is 962mb uncompressed, 150mb compressed: http://bositman.pcsx2.net/dumps/driver-parallel-lines-garbage-textures.rar

FlatOutPS2 commented 8 years ago

This game runs on the same engine as Driv3r, which also has these issues. The following Driv3r issue also applies to this game: #923

FlatOutPS2 commented 8 years ago

It did some testing with Driv3r, and the change of color of the cars is not random. The car color changes if another car of the same type(but in a different color) shows up in the view(though it might be behind a building where you can't see it yet). As soon as that car is out of view, the color changes back to the normal color. If you turn the camera around to look at the direction of where the other car is again, your car changes back to that color again too.

gregory38 commented 8 years ago

How behave zerogs ?

FlatOutPS2 commented 8 years ago

It looks even worse than GSdx hardware renderers.

FlatOutPS2 commented 7 years ago

This issue has recently been solved for software mode thanks to https://github.com/PCSX2/pcsx2/commit/a123e6518521f3d59c628678c11031a4d2d8358c

Still garbage textures on the cars in HW modes though.

gregory38 commented 7 years ago

Based on previous comment. The game might need a CRC hack to trigger a clut read back (like Jak).

FlatOutPS2 commented 7 years ago

Based on previous comment, this game might need it too: https://github.com/PCSX2/pcsx2/issues/883

MrCK1 commented 6 years ago

@joder666 Has the status of this changed on latest git?

joder666 commented 6 years ago

I'll give it test along the week and report back.

joder666 commented 6 years ago

Same settings as before, using pcsx2-v1.5.0-dev-2330-g0e83b89db. Software render seems better now, no random color changes anymore, as far as i could noticed. I roamed around a bit to see if it triggers did not happen, still too slow though.

Software render d3d11 Software render d3d11 Hardware render d3d11, still many rendering errors. Hardware render d3d11

MrCK1 commented 6 years ago

Can you test OpenGL again. With Blending Accuracy and Mipmapping enabled?

joder666 commented 6 years ago

opengl hardware mipmapping full bleeding unit accuracy medium mipmapping full bleeding unit accuracy medium

mipmapping Full Bleeding unit accuracy high mipmapping full bleeding unit accuracy high-1 can trigger original bug

mipmapping full bleeding unit accuracy high-2 can trigger original bug

Setting bleeding unit accuracy to Full or Ultra makes no difference but make the game run slower (no surprises here). opengl software is the same as with d3d11 software, a tiny bit faster for me though.

tadanokojin commented 4 years ago

Issue needs to be updated. GS dump is a dead link.

bositman commented 4 years ago

I've uploaded a new dump on our dump repo as per lightning's request some days ago

lightningterror commented 4 years ago

Here's a gs dump: driver-parallel-lines.zip

tadanokojin commented 4 years ago

Link to dump site would have been fine but that works thanks.

Fireboyd78 commented 4 years ago

Hey guys, I would really like to help get this sorted out. There's an early demo version of this game that came with a symbols map, which allows you to see all the different function names as well as global variable names.

I have quite a bit of research done on their rendering engine, and would really like to get this all sorted out once and for all.

Here's a snippet of the different texture-related functions they have:

Texture::addPixmaps(DmaBuffer *, unsigned int, unsigned int, AddPixmapInfo *, DmaEntry *)
Texture::fillDecompressTexture32(DecompressTexture *, unsigned char *, unsigned int, Substance *, unsigned int, unsigned int)
Texture::fillDecompressTexture8(DecompressTexture *, unsigned char *, unsigned int, Substance *, unsigned int, unsigned int)
Texture::fillDecompressTexture4(DecompressTexture *, unsigned char *, unsigned int, Substance *, unsigned int, unsigned int)
Texture::fillDecompressHeader(DecompressHeader *, unsigned char, unsigned int)
Texture::add32Bit(DmaBuffer *, DmaEntry *, unsigned int, unsigned int, Substance *, unsigned int, unsigned int, unsigned int)
Texture::addPAL8(DmaBuffer *, DmaEntry *, unsigned int, unsigned int, Substance *, unsigned int, unsigned int, unsigned int)
Texture::addPAL4(DmaBuffer *, DmaEntry *, unsigned int, unsigned int, Substance *, unsigned int, unsigned int, unsigned int)
Texture::addVQ2(DmaBuffer *, DmaEntry *, unsigned int, unsigned int, Substance *, unsigned int, unsigned int, unsigned int)
Texture::addVQ4(DmaBuffer *, DmaEntry *, unsigned int, unsigned int, Substance *, unsigned int, unsigned int, unsigned int)
Texture::addHY2(DmaBuffer *, DmaEntry *, unsigned int, unsigned int, Substance *, unsigned int, unsigned int, unsigned int)
Texture::addVQ4f(DmaBuffer *, DmaEntry *, unsigned int, unsigned int, Substance *, unsigned int, unsigned int, unsigned int)
Texture::addNormalTexture(DmaBuffer *, DmaEntry *, unsigned int, unsigned int, Substance *)
Texture::addBlendedTextureClut(DmaBuffer *, unsigned int, unsigned int, unsigned int, DmaEntry *)

The cars use VQ4 and VQ4f, IIRC. They also install custom interrupts and patches to the GS. Plenty of information available in here, please let me know what I can do to help get things figured out.

Thanks!

Danondso commented 2 years ago

I know this has been quiet for a couple years, but has there been any under-the-radar progress on this? I'm a full stack dev and not much of a game dev but hot dang if I don't want to help contribute in some way to getting this sorted.