-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Attempt to revert #5044 and maintain fix to Killzone Liberation #5179
Conversation
// The avcau struct may have been modified by mediaengine, write it back. | ||
sceAu.write(auAddr); | ||
|
||
// Jeanne d'Arc return 00000000 as attrAddr here and cause WriteToHardware error | ||
if (Memory::IsValidAddress(attrAddr)) { | ||
Memory::Write_U32(1, attrAddr); | ||
ctx->avc.avcDecodeResult = MPEG_AVC_DECODE_SUCCESS; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The commit isn't very well named ("Revert #5044") as it makes this additional change, too. I hope this additional change (that you say fixes Killzone) is well tested.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rename to better title for this commit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe Make Revert and this additional change as a Separate commit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
By the way, I find this logic pretty strange. attrAddr is the pointer to some optional extra parameter. So, if this is correct, we're supposed to set the result to SUCCESS only if the game supplies an attrAddr? And not, if the game doesn't? That's pretty odd.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
or the attrAddr write 0 or 1 depends on ctx->avc.avcDecodeResult ?
Memory::Write_U32(ctx->avc.avcDecodeResult ? 1 : 0, attrAddr);
I also tested Killzone Liberation on JPCSP , it stucks at that video as well .
Wait 5 more minute,I am compiling to test NFS Carbon and UEFA Euro 2008 |
Fixed NFS Carbon and UEFA Euro 2008 crash |
@raven02 Just a note. |
@sum2012 I think you forget to change to PSP-1000 mode. |
@daniel229 Thanks.It is the first game need change the mode. |
@sum2012 , do you mind helping JPCSPtrace sceMpegGetAvcAu here ? so we can know if it indeed return MPEG_AVC_DECODE_SUCCESS somehow. |
@raven02 Which game(s) do you want me test ? |
Killzone Liberation here .Thanks |
@raven02 let me do the log before sleep |
@raven02 Here is Killzone Liberation JPCSP trace log: |
Thanks let me check it out . |
Should be correct .This is the log generated from PPSSPP 29:13:022 user_main I[ME]: HLE\sceMpeg.cpp:1110 0=sceMpegGetAvcAu(08e4a308, 00000001, 08e4a390, 08e81550) |
This break fixes FIFA 2013/2014 #5168 or may be others .
Killzone Liberation still be good with this commit as it expects
ctx->avc.avcDecodeResult = MPEG_AVC_DECODE_SUCCESS