bo3b / 3Dmigoto

Chiri's DX11 wrapper to enable fixing broken stereoscopic effects.
Other
688 stars 109 forks source link

3DMigoto Crashes Granblue Fantasy Relink #341

Open BrianCv3 opened 4 months ago

BrianCv3 commented 4 months ago

I'm unsure if the game has an anti-cheat that purposely blocks 3DMigoto from working for some reason (despite the fact people are making straight up cheats for the game). But I figured I might as well mention that 3DMigoto doesn't work in this game, and immediately crashes it. I've tried delaying the activation of 3DMigoto, and changing the DLL name, but the game will always crash as soon as the title screen boots up.

It's a DX11 game, but I don't know if it has an anti cheat embedded into the code that for some reason only crashes with 3DMigoto, but SpecialK and Reshade are able to work with the game.

elbadcode commented 3 months ago

just checking but have you tested 3dmigoto on its own or are you always injecting all 3

DarkStarSword commented 3 months ago

I wouldn't presume to blame anti cheat without evidence (unless it uses EAC which we already know blocks 3DMigoto). As usual, we need a debug log to help understand what happened during init and what might have gone wrong - in the d3dx.ini enable calls=1, debug=1 and unbuffered=1, then run the game and attach the resulting d3d11_log.txt here

elbadcode commented 2 months ago

don't even think this game has an anticheat or any drm

as you noted in another issue recently specialk and 3dmigoto can be problematic together even with the work you've put in. same goes for reshade and 3dmigoto. In my experience modding genshin 3dmigoto and reshade together is totally doable and easy even without chain loading through d3dx.ini, 3dmigoto and specialk is unstable but can work, but all 3 is just not possible without constant crashes. I mean it makes sense since they're all trying to do almost the same thing. I know reshade can work as a specialk plugin, if 3dmigoto could also work as one that's probably the solution.

BrianCv3 commented 2 months ago

No of course I did not use all 3 at the same time. I was just saying that all 3 are dx11 injectors but of the 3 Special K and Reshade cause no issues, but using 3DMigoto on it's own it crashes immediately.

StarBobis commented 2 months ago

d3d11_log.txt I do some test but didn't solve the problem, here is a more detailed log file when using 3dmigoto to open GBFR, neithor wrapper or hook way work in this game ,the log shows the hook way,but wrapper way is nearly the same log.

This game seems has a special check method dedicated for d3d11.dll method hook or it may be a kinds of different order of d3d11 load way which can bypass our hook way, When I use Injector "3Dmigoto Loader.exe" to inject d3d11.dll, 3dmigoto can't even generate log file,and game opened and closed in 1 second, When I try to use dll proxy way : put d3d11.dll and d3dx.ini under where granblue_fantasy_relink.exe located, then it generated this log and game crushed after nearly 1 second.

here is some strange behaviour: Trying to load original_d3d11.dll Hooked_LoadLibraryExW load: original_d3d11.dll. *** LoadLibrary on original_d3d11.dll failed. Hooked_LoadLibraryExW load: SUPPRESS_3DMIGOTO_REDIRECT. Trying to load C:\WINDOWS\system32\d3d11.dll

and it's loading sequence is not like other games:

*** D3D11CreateDevice called with pAdapter = 00000180D8A1E560 Flags = 0 pFeatureLevels = 0xb100 FeatureLevels = 2 ppDevice = 00000047DEBDF620 pFeatureLevel = 0 ppImmediateContext = 0000000000000000

here we get a empty ppImmediateContext. and we get D3D11CreateDevice returned device handle = 00000180D89FB940, context handle = 0000000000000000 this means context handle is failed to get by 3dmigoto.

and this lead to most of the 3dmigoto feature can't work,but game use our 3dmigoto hooked method and then game will crush with game's further initalize process.

elbadcode commented 2 months ago

If you can inject specialk just use that to chain load 3dmigoto. You can also try using the old dxgi loader in releases

BrianCv3 commented 2 months ago

Yeah I probably should have mentioned that I tried looking at the logs and they were pretty barren. But I didn't know what I was looking at to be sure. I probably should have provided the log file then. But ah well someone has provided it now.