diff options
Diffstat (limited to 'results/scraper/fex/4556')
| -rw-r--r-- | results/scraper/fex/4556 | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/results/scraper/fex/4556 b/results/scraper/fex/4556 new file mode 100644 index 000000000..d7a74600d --- /dev/null +++ b/results/scraper/fex/4556 @@ -0,0 +1,54 @@ +God of War Ragnarök crashes due to newer Playstation PC SDK +This is a bit of a tricky one since it seems to be restricted to this single statically linked library inside the application. +"Something" changed with the PSPC_SDK with Ragnarök to obfuscate this component and introduce a nasty state machine that breaks FEX. + +Some things of note that I discovered while trying to figure out why it crashes. +- It needs full precision x87 + - It's abusing FP operations to ensure that the result is producing exactly the correct results + - Might be an anti-emulation feature + - If reduced precision is enabled then it generates a broken pointer that it tries to dereference inside of strlen +- Once reduced precision is disabled, it actually runs through the state machine a bit. + - Every entrypoint uses a self-intersecting jump to try and confuse disassemblers + - Binaryninja doesn't care about this and just shows correct enough code + - Probably an obfuscation step for IDA or Ghidra +- Each entrypoint uses a custom ABI to try and confuse static analysis tools + - Arguments seem to be on the stack +- Most entrypoints **pop** things off the stack, which is something like the caller knows the trampolines branch target and pushes it before calling or something? + +Seemingly the entrypoint to the state machine from GoWR. Showing off the self-intersecting branch. Internal trampolines will use conditional branches that are self interesting. If the condition flags are wrong then they'll execute code incorrectly. + + +**Hopefully** this is just an abuse of CPU flags and we're just messing one of them up somewhere, but due to the obfuscation and trampolines it is hard to see exactly wtf is going on. + +If x87 reduced precision is not enabled then the state machine exits at some point with an opaque error and the game exits. + + + +We should also test this game on Windows On ARM to see if their emulator is good enough to handle this game. + +### Additional games that need to be tested after this game's launch +My concern is that games released after GoWR will have the same problems, but I haven't tested Playstation published games in a few months. If this is going to be a continuous thing or just a one-off for Ragnarök is currently unknown. + +- [❌] [Until Dawn](https://steamdb.info/app/2172010/) + - Crashes with x87 reduced precision enabled, but continues once disabled. + - Same weirdo self-intersecting branches. + + + - Can't get further than the menus since my Playstation Account is bugged. +- [❌] [Horizon Zero Dawn Remastered](https://steamdb.info/app/2561580/) + - Doesn't quite behave like Until Dawn, if x87 reduced precision is enabled then it just hangs. + - Once disabled the game continues fine. +- [❌] [Lego Horizon Adventures](https://steamdb.info/app/2428810/) + - The thing ships EOS, which I'm not even going to mess with. +- [❌] [Marvel's Spider-Man 2](https://steamdb.info/app/2651280/) + - Matches behaviour of Until Dawn +- [❌] [Midnight Murder Club](https://steamdb.info/app/2698870/) + - Matches behaviour of Until Dawn + - Additional quirk that once on the title screen it just claims network error + - Might be because of its Wine/Proton deetection. +- [❌] [The Last of Us Part II Remastered](https://steamdb.info/app/2531310/) + - Behaviour matches Until Dawn +- [ ] [Stellar Blade](https://steamdb.info/app/3489700/) (Releases in June 2025) (Has Denuvo, needs arm64ec testing) +- [ ] [Lost Soul Aside](https://steamdb.info/app/3378960/) (Releases in August 2025) +- [✅] [Days Gone Broken Road DLC?](https://steamdb.info/app/3238470/) + - Game works fine with DLC enabled. \ No newline at end of file |