hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
11.36k stars 2.18k forks source link

Replays fail to load correctly at the end #6710

Open RDF2050 opened 10 years ago

RDF2050 commented 10 years ago

Game: Dissidia Duodecim Final Fantasy Region: USA Emulator Platform: Windows 7 Tested with: i5 2500 @ 3.30Ghz + EVGA GTX 570 Issue: Replays do not load correctly or desync

Example: https://www.youtube.com/watch?v=wYgQhrZ2H_c#t=456

The issue here is that most of the replays saved in the PSP does not work correctly at the end. The emulator start doing random stuff that do not happen in the PSP. The above example show one of the many problems. It does not load correctly some of the game mechanics. Also, the above example should have end with something know as Ex Revenge, https://www.youtube.com/watch?v=wYgQhrZ2H_c#t=456 , and the emulator fail to load this part. The link below is a replay sample for those who want to see what's the issue:

http://puu.sh/aOK1l/f7601f4e16.rar http://puu.sh/aUAQD/ddb930a6b4.rar

If further information is needed, please contact me at the ppsspp IRC. I will try to reply as soon as possible.

Thank you.

thedax commented 10 years ago

Probably the same problem as https://github.com/hrydgard/ppsspp/issues/2990.

unknownbrackets commented 10 years ago

Do replays created in PPSSPP work correctly in PPSSPP? Do they work correctly on a real PSP?

Will be helpful to know if this is bidirectional.

-[Unknown]

RDF2050 commented 10 years ago

It seems that replays longer than 5 minutes show this kind of problem.

unknownbrackets commented 8 years ago

Just a note: this still happens even in the IR Interpreter. Was worth hoping we accidentally fixed or improved it.

-[Unknown]

hrydgard commented 8 years ago

We know that a bunch of high-order VFPU instructions are nowhere near bit-accurate, like vrot/sin/cos, asin etc. Also, dot products are done using align-and-add which we don't simulate correctly either. If results from these operations are used in simulation code, then it will drift off after a while and there's not much we can do about it.

Someday someone will have to try to figure out how to get these bit-accurate, but it will be very difficult...

unknownbrackets commented 8 years ago

Well, it's hard to tell, but, it doesn't seem so much like it drifts off as something goes wrong. I mean, it basically matches what happens on a PSP (I didn't watch SUPER closely) up to a point, then they start doing weird things. It falls off a cliff.

But maybe it's some floating point error that's eventually rounding the other way, or something...

-[Unknown]

hrydgard commented 8 years ago

If some minor accuracy causes some type of move to take one frame too long so that say a range-based action doesn't happen, then I can certainly imagine cases where it looks like it's pretty much perfectly synced until an attack doesn't happen which lets someone survive instead of die, for example, and then it's all mayhem from there :)