RPCS3 / rpcs3

PlayStation 3 emulator and debugger
https://rpcs3.net/
GNU General Public License v2.0
15.33k stars 1.91k forks source link

[NPEB01321] Lightning Returns - Final Fantasy XIII : Access violation reading 0x0 #8241

Open BellezaEmporium opened 4 years ago

BellezaEmporium commented 4 years ago

Quick summary

Game can be launched, however, after the battle with Lumina, and opening the door that goes to the second stage, you cannot go further.

Details

EDIT : On second test :

E {SPU[0x1000100] Thread (UserSpursCellSpursKernel1) [0x0451c]} VM: Access violation reading location 0x80000050 (unmapped memory) E {SPU[0x2000100] Thread (UserSpursCellSpursKernel2) [0x0451c]} VM: Access violation reading location 0x80000050 (unmapped memory) F {SPU[0x3000100] Thread (UserSpursCellSpursKernel3) [0x3fb00]} SIG: Thread terminated due to fatal error: Unknown STOP code: 0x3fd0 (Out_MBox=empty)

Temporary workaround

As said by @GitArUs , Switch to PPU Decoder Interpreter (precise) for this cinematic, save the game and return to default options after this.

Asinin3 commented 3 years ago

Please retest, and if it's still an issue post a new log and savefile from before the area so we can reproduce this issue if needed. Can go to Manage > Save Data to find where the saves are located.

BellezaEmporium commented 3 years ago

Hello sir,

Thank you for your interest in this bug. I've just retested, as asked, with the latest RPCS3 version available. Bug reproduced again, this time with 4 UserSpursCellSpursKernel Access violations 0x0.

Attached is my save data (just after Lumina's first boss battle) and the linked log.

Final Fantasy - Lightning Returns (RPCS3).zip

GitArUs commented 3 years ago

Try to set "Accurate PPU 128 Reservations" on Debug tab to anything other than "Disabled" (can be "Always Enabled" for example).

BellezaEmporium commented 3 years ago

Try to set "Accurate PPU 128 Reservations" on Debug tab to anything other than "Disabled" (can be "Always Enabled" for example).

I've tried with option "Always Enabled", returns Access Violation when reading location 0x1f (unmapped memory) [type=u0]

Edit : With "Accurate SPU DMA and Cache Mine Stores" activated, and with ZCull Occlusions Queries disabled : Fatal error "Unknown STOP code : 0x3fd0 (op=0x5ffd0, Out_MBox=empty)" on Thread.cpp:4544[:22] in (function stop_and_signal)

Edit 2 : By fooling around with the game patches and applying the same patch as on Soul Calibur games : I had a different error... but this one seems familiar : E {SPU[0x3000100] Thread (UserSpursCellSpursKernel3) [0x00ee8]} VM: Access violation writing location 0xffdead00 (unmapped memory) [type=u32]

GitArUs commented 3 years ago

I should have test it myself first :/. It does not help here. So the only workaround for now is to switch PPU decoder to "Interpreter (precise)" and pass this scene then save and switch back to Recompiler.

BellezaEmporium commented 3 years ago

I should have test it myself first :/. It does not help here. So the only workaround for now is to switch PPU decoder to "Interpreter (precise)" and pass this scene then save and switch back to Recompiler.

This workaround does indeed work. Thank you !

Keeping this open if a fix comes up for recompilers.

FinishedFragment commented 3 years ago

Unfortunately I found two more sections (there can possibly be more though) where you have to use this workaround.

The cutscene in Yusnaan where you play the savior and topple the statue will hang. (log)

This one is skippable but if you skip this, the loading screen will hang instead (log). The cutscene had a very low framerate because of the workaround. Skipping it and watching it on youtube may be a better idea.

The other one I encountered was in Etro's temple, which happens right after you defeat Caius (log.gz, this one is considerably larger since I played for a while and I really do not want to beat Caius again right now just to get a cleaner log). Unfortunately this one is not reasonable to finish since Caius is considered to be one of the harder bosses and fighting him with a low framerate even on easy mode is tough.

FinishedFragment commented 3 years ago

I return with good news! It seems like Interpreter (fast) can also be used as a workaround.

Asinin3 commented 3 years ago

SPU interpreter? If that's the case, try SPU LLVM with Accurate Xfloat enabled. Should be a lot faster.

FinishedFragment commented 3 years ago

No, unfortunately not. This is the PPU decoder.

FinishedFragment commented 3 years ago

@Megamouse what information do you need? i may be able to get those for you, just tell me what i need to do

Asinin3 commented 3 years ago

He Removed the label, meaning the issue no longer needs more information >_>

FinishedFragment commented 3 years ago

Whoops. Derp. Sorry about that, I just saw the label and my brain autocompleted.

Anyways, i managed to finish the game but i encountered one last freeze, unfortunately right after the final boss which means a slideshow final battle since this requires the ppu interpreter (fast) and afaik there is no way to change this setting while the game is running.

ScottNash042 commented 1 year ago

update or close ??

GitArUs commented 1 year ago

A week or two ago was still crashing at the same moment.

Shoegzer commented 8 months ago

I encountered this too, after the first boss fight with Lumina/Zaltys when going through the door. With PPU Decoder Interpreter (fast) removed from RPCS3 this can no longer serve as a workaround, and (static) severely impacts performance. However, it can be resolved by setting Accurate PPU 128 Reservations to "Always Enabled" and Driver Wake-Up Delay set to a high value such as 600. @GitArUs I'm not sure why this didn't work for you?

Note that this workaround was also identified in #8860 and #8911 for the other titles in this series.

Build tested: 4746ef09cd28ce2a6fbc9e9b3cc4ea3a4b8c0b70

GitArUs commented 8 months ago

Workaround was not working before, now it works. All three FFXIII games with these two settings (ppu accurate reservations enabled and driver wake-up delay set to 320us) are stable and almost fully playable.

BellezaEmporium commented 8 months ago

To be honest since we're into a near-perfect state thanks to the latest changes, best would be to close the issue on behalf on the latest workaround.

kd-11 commented 8 months ago

High driver wakeup delay is a bug. Does atomic FIFO not work? PS3 actual delay is less than 10.

GitArUs commented 8 months ago

Atomic FIFO does not make difference, at least I don't see any difference. However, to be honest, I never tried low values of wake-up delay, because I don't understand what it really does and I was happy that games work with high values (still only microseconds...). I tried now with lowest possible values. With default 1us the crash happens always. With 2us the crash happens always, but sometimes a few seconds later. With 3us the crash still happens sometimes, but pretty rarely :). The cutscene must be watched to the end, because the game usually crashes when I try to skip it (but not always). Also - different error messages can be displayed after crash - one like in original report: "Access violation writing location 0x0 (unmapped memory)", or "Access violation reading location 0xfffffec0 (unmapped memory)" or "Unknown STOP code: 0x0 (op=0x0, Out_MBox=empty)".

(I doubt that this was very helpful :/).

Shoegzer commented 8 months ago

@kd-11 I just tested the title at the crash point with all settings at default except for RSX FIFO Accuracy set to "Atomic" and then "Ordered & Atomic". Unfortunately, crashing still occurs in both cases. I hope that helps, at least.

Update: Missed the note from @GitArUs above about Atomic FIFO but at least this confirms.

ItsLaguna commented 7 months ago

Same here, Atomic FIFO doesn't affect it at all and as @GitArUs said, you can get different errors. The mentioned workaround only worked once for me, later attempts would eventually crash somehow.

Here are some logs named after the settings used + a text file with all the red errors and fatal errors I've got so far (some aren't in the logs): Lightning Returns logs.zip