CookiePLMonster / SilentPatchME

SilentPatch for Mass Effect, fixing black blob artifacts on AMD CPUs
https://cookieplmonster.github.io/2020/07/19/silentpatch-mass-effect/
MIT License
127 stars 2 forks source link

Does not seem to work for me #3

Open vlad54rus opened 4 years ago

vlad54rus commented 4 years ago

Running Steam version of Mass Effect on FX-4170. Installed your dll and it seems to be loaded according to Process Explorer, but black blob glitch still occurs. Setting DisableD3DXPSGP or DisablePSGP in HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Direct3D\ also didn't help. Any thoughts?

CookiePLMonster commented 4 years ago

Can you provide a screenshot from the game?

vlad54rus commented 4 years ago

MassEffect_2020_07_28_19_27_35_641

mirh commented 4 years ago

Are you running 32-bit windows?

adolfintel commented 4 years ago

Where did you place the DLL? Make sure it's in the Binaries folder with MassEffect.exe and not where the launcher is.

vlad54rus commented 4 years ago

Im running 64-bit Windows 10. DLL file is in Binaries folder.

adolfintel commented 4 years ago

That is so strange. Can you send me your binaries folder so I can test it? I have ME1 installed, I can do it right away. Send it to info@fdossena.com if you don't want to post it publicly.

vlad54rus commented 4 years ago

Binaries.zip

adolfintel commented 4 years ago

What happens if you rename MassEffect.exe to ut3.exe? Some games won't load certain DLLs when they're run as administrator.

riverar commented 4 years ago

Hi @vlad54rus, it may seem redundant but we have to verify a few things before we can move forward.

  1. Can you provide a screenshot of your registry values in HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Direct3D?

  2. Can you provide a screenshot of Process Explorer showing Mass Effect loading d3dx9_31.dll from the application folder?

Thanks!

vlad54rus commented 4 years ago

@riverar Desktop_2020_07_29_15_04_28_486 Desktop_2020_07_29_15_11_45_954

CookiePLMonster commented 4 years ago

That's very concerning, because everything looks valid.

To clarify - when you tested DisableD3DXPSGP, did you test this with or without the fixed DLL installed? It should be tested without one.

Also, you seem to be using a BINK hook - can you list all the other mods you have?

vlad54rus commented 4 years ago

I tested both - same results. Other installed mods are ME1:Recalibrated and Russian Translation.

adolfintel commented 4 years ago

Just my 2 cents: can you try this on a clean install on ME1? ME1 recalibrated has caused several glitches for me even on intel. Not this one though

vlad54rus commented 4 years ago

Tried on clean install - issue still occurs.

mirh commented 4 years ago

If you have 64-bit windows.. What is trying to load 1252 National Language Support from system32?

Also, when ordering by name modded d3dx9_31.dll is above the system one, at least on my W7. ..Can you, I dunno, try this fix?

vlad54rus commented 4 years ago

C_1252.NLS? Many apps load it. I already have this fix installed because elevation pop-up annoys me. Although it doesn't matter if i run game as admin or not.

mirh commented 4 years ago

I see. I cannot think to anything less stupid, so.. Could you try the game in a VM (with english windows because whatever)?

adolfintel commented 4 years ago

I doubt ME1 will run in a VM

adolfintel commented 4 years ago

@vlad54rus can you try this DLL? d3dx9_31.zip

It's the original d3dx9_31.dll, except I modified a jump so that it will always think that DisableD3DXPSGP is set regardless of what's in the registry.

vlad54rus commented 4 years ago

@adolfintel Sadly, this also didn't work. I made sure it is loaded instead of system one, but glitch still occurs.

mirh commented 4 years ago

Why shouldn't it run in a VM? Everybody and their cousin can accelerate dx9 and anyway AMD supports IOMMU virtualization since ages.

adolfintel commented 4 years ago

Why shouldn't it run in a VM? Everybody and their cousin can accelerate dx9 and anyway AMD supports IOMMU virtualization since ages.

Because unless he's doing a proper GPU passthrough, the 3D acceleration inside virtualbox and vmware is pretty shitty and makes most modern-ish games crash.

mirh commented 4 years ago

Thankfully ME isn't a modern game. In fact, I seem to remember it was working for me inside workstation (for as much even more painfully slow than usual on my laptop).

adolfintel commented 4 years ago

Really? It never worked for me on virtualbox

riverar commented 4 years ago

@vlad54rus What GPU are you using? Looks NVIDIA based.

riverar commented 4 years ago

If everyone could reach out to their AMD FX-series friends and see if they can reproduce the issue, that would be greatly appreciated. That'll drive whether or not I purchase some hardware to assist with debugging efforts.

vlad54rus commented 4 years ago

@riverar NVIDIA GTX 660, driver 391.35.

adolfintel commented 4 years ago

I only have a ryzen and an i7 unfortunately, no old bulldozers :( You should update that driver though.

mirh commented 4 years ago

Bobcat is even older and works just fine with the fix (though that has probably way different potato registers). Try a clean VM anyway please.. I scavenged the net but it was already hard enough to find two people with ryzen commenting their experience.

p.s. people criticized the fix here

riverar commented 4 years ago

@vlad54rus I'm going to buy some parts to test this. Can you provide a CPUZ screenshot/dump of your processor so I can be extra sure I'm getting the right parts? Thanks!

zTorden commented 4 years ago

the same problem remains on my FX-6300 (Win7x64, GTX 1050Ti, driver: 445.87) изображение

mirh commented 4 years ago

And DisablePSGP in the registry doesn't do anything?

riverar commented 4 years ago

@zTorden Thanks very much for reaching out. Can you try @adolfintel's DLL above? https://github.com/CookiePLMonster/SilentPatchME/issues/3#issuecomment-666311932 That'll verify it's broken.

zTorden commented 4 years ago

neither DisablePSGP nor DLL from comment 3 made any difference

riverar commented 4 years ago

OK, thanks. Purchased hardware to reproduce this. Will need about a week of patience from everyone to get the machine. 😅

vlad54rus commented 4 years ago

@riverar CPUZ At least i am not only one with this problem, hope you can fix it.

adolfintel commented 4 years ago

So this only happens on FX chips, not Ryzen? A capture with Pix could help @CookiePLMonster figure out what's broken this time.

CookiePLMonster commented 4 years ago

It would only help figuring out if it's again the same data being broken - with the bug we've fixed it "persisted" on captures, but even if the same inputs are still broken then we'd need to restart the investigation anyway.

adolfintel commented 4 years ago

@CookiePLMonster Just for curiosity, have you tried reverse engineering FPS counter? How did it fix ME1?

CookiePLMonster commented 4 years ago

I haven't because the FPS Counter author showed up out of nowhere under my blog post and explained the way he fixed the bug - and by the sounds of it, his approach was a workaround similar to our early attempts with "replacing broken data with correct data", which resulted in not broken yet too dark visuals.

adolfintel commented 4 years ago

This sucks, I hope you can figure out what's wrong with it this time

CookiePLMonster commented 4 years ago

For reference, that's where FPS Counter author described his approach: https://cookieplmonster.github.io/2020/07/19/silentpatch-mass-effect/#comment-4999297511

adolfintel commented 4 years ago

I agree with your replies, it doesn't look the same as it does on Intel. Better than nothing I guess

riverar commented 4 years ago

I can reproduce this issue with an AMD FX chip. Investigating.

Screenshot 2020-08-11 171946

mirh commented 4 years ago

Any progress?

riverar commented 4 years ago

@mirh Nothing yet, sadly.

mirh commented 4 years ago

Maybe bulldozer has an actually non-compliant FPU? A guy on HN made a tool to check.

Or perhaps slashed instructions are what "saved" Zen.

GHaass commented 4 years ago

Does not work for me either. I'm running it on AMD FX-8320 and Geforce GTX 970 on 64-bit WIndows 7. I used the binary DLL and then built it from source messing around with the code to make sure it was running. I also used the glm library to invert the matrix with both single and double precision, same result. Even running on Linux using WINE the bug happens identically.

zTorden commented 3 years ago

any luck so far?

Tucker1011 commented 3 years ago

Confirmed reproduced on Bulldozer/Piledriver (FX6300 "Vishera", same as pictured above). I reached out to Silent on Twitter, but this is probably a more productive place to try and chip in. I followed the advice around it executing as admin and stuff with no success, so I'm guessing we're all in the same crummy-CPU boat on this one.

I'll try to check up on this thread and am more than happy to provide a second (or third or w/e) test-point for any successful leads found during this follow-up investigation. I may not be a software engineer, but I'm very good at flipping switches inside Windows =D