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.08k stars 2.16k forks source link

Coded Arms Contagion music stops playing in few seconds #13773

Open Panderner opened 3 years ago

Panderner commented 3 years ago

There's a bug where Coded Arms contagion music stops playing immediately in few seconds:

Here's a Log:

FMOD Streame E[ME]: HLE/sceAtrac.cpp:571 avcodec_decode_audio4: Error decoding audio -1094995529 / bebbb1b7

After Stopped playing music. The music will start playing again.

Panderner commented 3 years ago

Here's a video: Screenrecorder-2020-12-16-14-14-47-421.mp4.zip

sum2012 commented 3 years ago

v1.10.3-1330-g73da378ef log: https://gist.github.com/sum2012/2261ff5a3b769a17d9864cd98d6bcff9 This kind of thing I only know hack,don't know correct fix

sum2012 commented 3 years ago

Real PSP log: https://gist.github.com/sum2012/c2d7bbc87594f88f00d8a13b39126ba4

PPSSPP log: 34:17:523 FMOD Streame D[ME]: hle\sceatrac.cpp:1318 00000000=sceAtracDecodeData(2, 08472b84, 09fafa18[00000400], 09fafa1c[00000000], 09fafa10[175]) 34:17:523 FMOD Streame D[ME]: hle\sceatrac.cpp:1587 0=sceAtracGetRemainFrame(2, 09fafa14[000000af]) 34:17:523 FMOD Streame D[ME]: hle\sceatrac.cpp:1664 0=sceAtracGetStreamDataInfo(2, 09fafa00[084863f0], 09fafa0c[00010770], 09fafa04[000317a0]) 34:17:523 FMOD Streame D[ME]: hle\sceatrac.cpp:1138 0=sceAtracAddStreamData(2, 00010770) 34:17:523 FMOD Streame I[ME]: hw\mediaengine.cpp:87 FF: Sound Unit id != 0x28. 34:17:523 FMOD Streame I[ME]: hw\mediaengine.cpp:87 FF: Frame decoding error! 34:17:523 FMOD Streame E[ME]: hle\sceatrac.cpp:571 avcodec_decode_audio4: Error decoding audio -1094995529 / bebbb1b7 34:17:523 FMOD Streame D[ME]: hle\sceatrac.cpp:1318 80630024=sceAtracDecodeData(2, 08496bb0, 09fafa18[00000000], 09fafa1c[00000001], 09fafa10[0])

Real PSP log: 00:44.414 FMOD Streamer thread - sceAtracGetRemainFrame 0x2, 0x09FAAE14(0xB0) = 0x0 00:44.432 FMOD Streamer thread - sceAtracDecodeData 0x2, 0x8472B84, 0x09FAAE18(0x400), 0x09FAAE1C(0x0), 0x09FAAE10(0xAF) = 0x0 00:44.451 FMOD Streamer thread - sceAtracGetRemainFrame 0x2, 0x09FAAE14(0xAF) = 0x0 00:44.467 FMOD Streamer thread - sceAtracGetStreamDataInfo 0x2, 0x09FAAE00(0x8475C50), 0x09FAAE0C(0x107A0), 0x09FAAE04(0x21000) = 0x0 00:44.488 FMOD Streamer thread - sceKernelCreateThread 0x08BF5D40('FMOD async FILE thread'), 0x8AD4108, 36, 0x1000, 0x0, 0x0 = 0x421C55D 00:44.506 FMOD Streamer thread - sceAtracAddStreamData 0x2, 0x107A0 = 0x0 00:44.528 FMOD Streamer thread - sceAtracDecodeData 0x2, 0x8496BB0, 0x09FAAE18(0x400), 0x09FAAE1C(0x0), 0x09FAAE10(0x15E) = 0x0 00:44.547 FMOD Streamer thread - sceAtracGetRemainFrame 0x2, 0x09FAAE14(0x15E) = 0x0 00:44.568 FMOD Streamer thread - sceAtracDecodeData 0x2, 0x8496BB0, 0x09FAAE18(0x400), 0x09FAAE1C(0x0), 0x09FAAE10(0x15D) = 0x0

sum2012 commented 3 years ago

I try to seek data when AddStreamData sum2012@061a598 Fix this but break Code Lyoko Quest for Infinity USA 13:00:089 ATRAC3 play D[ME]: HLE\sceAtrac.cpp:1318 00000000=sceAtracDecodeData(0, 08a7dc4c, 09fb7aa8[00000363], 09fb7aac[00000000], 09fb7abc[0]) 13:00:120 ATRAC3 play D[ME]: HLE\sceAtrac.cpp:1664 0=sceAtracGetStreamDataInfo(0, 09fb7ab8[08a5c8a0], 09fb7ab4[00000230], 09fb7ab0[0000dd94]) 13:00:156 ATRAC3 play N[ME]: HLE\sceAtrac.cpp:1103 bufferState 5 13:00:156 ATRAC3 play D[ME]: HLE\sceAtrac.cpp:1138 0=sceAtracAddStreamData(0, 00000230) 13:00:156 ATRAC3 play D[ME]: HLE\sceAtrac.cpp:1587 0=sceAtracGetRemainFrame(0, 09fb7abc[00000001]) 13:00:156 ATRAC3 play D[ME]: HLE\sceAtrac.cpp:1664 0=sceAtracGetStreamDataInfo(0, 09fb7ab8[08a5c440], 09fb7ab4[00000460], 09fb7ab0[0000dfc4]) 13:00:156 ATRAC3 play D[ME]: HLE\sceAtrac.cpp:1318 00000000=sceAtracDecodeData(0, 08a809d8, 09fb7aa8[00000363], 09fb7aac[00000000], 09fb7abc[0]) 13:00:188 ATRAC3 play N[ME]: HLE\sceAtrac.cpp:1103 bufferState 5 13:00:189 ATRAC3 play D[ME]: HLE\sceAtrac.cpp:1138 0=sceAtracAddStreamData(0, 00000460) 13:00:189 ATRAC3 play D[ME]: HLE\sceAtrac.cpp:1587 0=sceAtracGetRemainFrame(0, 09fb7abc[00000002]) 13:00:189 ATRAC3 play D[ME]: HLE\sceAtrac.cpp:1318 00000000=sceAtracDecodeData(0, 08a81764, 09fb7aa8[00000363], 09fb7aac[00000000], 09fb7abc[0]) 13:00:206 ATRAC3 play D[ME]: HLE\sceAtrac.cpp:1664 0=sceAtracGetStreamDataInfo(0, 09fb7ab8[08a5c440], 09fb7ab4[00000690], 09fb7ab0[0000e424]) 13:00:256 ATRAC3 play N[ME]: HLE\sceAtrac.cpp:1103 bufferState_ 5 13:00:256 ATRAC3 play D[ME]: HLE\sceAtrac.cpp:1138 0=sceAtracAddStreamData(0, 00000690) 13:00:256 ATRAC3 play D[ME]: HLE\sceAtrac.cpp:1587 0=sceAtracGetRemainFrame(0, 09fb7abc[00000003]) 13:00:256 ATRAC3 play D[ME]: HLE\sceAtrac.cpp:1318 00000000=sceAtracDecodeData(0, 08a7e4f0, 09fb7aa8[00000363], 09fb7aac[00000000], 09fb7abc[1])

Both games atrac->bufferState are same ATRAC_STATUS_STREAMED_LOOP_FROM_END

This game 's modify log: https://gist.github.com/sum2012/2aad7ad43751cb6f4314416506578e56 Need @unknownbrackets correct fix

sum2012 commented 3 years ago

I find a better way,but I need more people test

sum2012 commented 3 years ago

I find another bug from real psp log........

01:09.063 FMOD Streamer thread - sceAtracDecodeData 0x2, 0x8496BB0, 0x09FAAF18(0x400), 0x09FAAF1C(0x0), 0x09FAAF10(0xFFFFFFFD) = 0x0 01:11.115 FMOD FSOUND_NONBLOCKING thread - sceAtracSetLoopNum 0x2, 0x0 = 0x0 01:11.137 FMOD FSOUND_NONBLOCKING thread - sceAtracDecodeData 0x2, 0x846D980, 0x09FA8328(0x81), 0x09FA832C(0x0), 0x09FA8320(0x15D) = 0x0

full log: https://gist.github.com/sum2012/e1447637c2ca7780b3c7423082256195

sum2012 commented 3 years ago

@Panderner test build 1 https://drive.google.com/file/d/1lnQJLZxc2t6CbsPInsNqDYzzvNFLCMi9/view?usp=sharing

Can you test whether any game regression of music ? Thanks

Panderner commented 3 years ago

@Panderner test build 1 https://drive.google.com/file/d/1lnQJLZxc2t6CbsPInsNqDYzzvNFLCMi9/view?usp=sharing

Can you test whether any game regression of music ? Thanks

Sorry @sum2012 that build is only for 64-bit version of windows, I don't have a PC.

sum2012 commented 3 years ago

In my modify version, In the third round ,the remain frame of sound is few than real psp 1, that mean I cannot directly "atrac->loopStartSample - atrac->FirstOffsetExtra() - atrac->firstSampleOffset"

sum2012 commented 3 years ago

My build test regression of Castlevania X Chronicles [ULUS10277] edit add:Brothers Conflict Passion Pink ULJM06066 EDIT2 add: Saru Getchu PipoSaruRacer ( UCJS10032) Original looping is okay. I seem to need hardest change

Panderner commented 3 years ago

I tried #13793 test build for my pc here's a mp3 recorded at the title screen: recording.zip but we need real hardware testing.

Panderner commented 2 years ago

Here how it sounds like recorded on Jpcsp: Jpcsp Audio.zip

NirYeF commented 1 year ago

This game also runs too fast when you compare it to actual hardware (vita or psp). It's supposed to be a 20-30 FPS game but you get 60 FPS on PPSSPP with default clocks.