Naruto 3: Probably a better fix for the video hang issue.

Fixes #9591, replaces #11772
This commit is contained in:
Henrik Rydgård 2019-02-09 09:56:59 +01:00
parent bff58d0921
commit ecf62a03ad
3 changed files with 3 additions and 3 deletions

2
.gitignore vendored
View file

@ -65,7 +65,7 @@ desc.txt
Logs Logs
Memstick Memstick
memstick memstick*
Cheats Cheats
/git-version.cpp /git-version.cpp

View file

@ -1599,7 +1599,6 @@ static int sceMpegGetAvcAu(u32 mpeg, u32 streamId, u32 auAddr, u32 attrAddr)
Memory::Write_U32(1, attrAddr); Memory::Write_U32(1, attrAddr);
} }
DEBUG_LOG(ME, "%x=sceMpegGetAvcAu(%08x, %08x, %08x, %08x)", result, mpeg, streamId, auAddr, attrAddr); DEBUG_LOG(ME, "%x=sceMpegGetAvcAu(%08x, %08x, %08x, %08x)", result, mpeg, streamId, auAddr, attrAddr);
// TODO: sceMpegGetAvcAu seems to modify esSize, and delay when it's > 1000 or something. // TODO: sceMpegGetAvcAu seems to modify esSize, and delay when it's > 1000 or something.
// There's definitely more to it, but ultimately it seems games should expect it to delay randomly. // There's definitely more to it, but ultimately it seems games should expect it to delay randomly.
@ -1664,6 +1663,7 @@ static int sceMpegGetAtracAu(u32 mpeg, u32 streamId, u32 auAddr, u32 attrAddr)
// Instead, let's abuse it to keep track of the stream number. // Instead, let's abuse it to keep track of the stream number.
if (streamInfo != ctx->streamMap.end()) { if (streamInfo != ctx->streamMap.end()) {
atracAu.esBuffer = streamInfo->second.num; atracAu.esBuffer = streamInfo->second.num;
ctx->mediaengine->setAudioStream(streamInfo->second.num);
} }
int result = 0; int result = 0;

View file

@ -49,7 +49,7 @@ static const int PSMF_AUDIO_STREAM_ID = 0xBD;
struct SceMpegAu { struct SceMpegAu {
s64_le pts; // presentation time stamp s64_le pts; // presentation time stamp
s64_le dts; // decode time stamp s64_le dts; // decode time stamp
u32_le esBuffer; u32_le esBuffer; // WARNING: We abuse this to keep track of the stream number!
u32_le esSize; u32_le esSize;
void read(u32 addr); void read(u32 addr);