Skip to content
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

Marvel Ultimate Alliance 2. Black screen in videos, sound ok #4324

Closed
onthebridge opened this issue Oct 26, 2013 · 26 comments
Closed

Marvel Ultimate Alliance 2. Black screen in videos, sound ok #4324

onthebridge opened this issue Oct 26, 2013 · 26 comments

Comments

@onthebridge
Copy link

Videos in this game show no image, only a black screen. Sound appear to be ok, though.
It happens in Windows and in Android.

Attached there is an image of what happens in the debug console when the first video is loaded.

mua2

@unknownbrackets
Copy link
Collaborator

Hmm, Popolocrois had this issue and #4321 helps it. Could help her, not sure if it will or not.

Has it ever shown the video in a past build?

-[Unknown]

@onthebridge
Copy link
Author

I haven't tried every build but none so far has worked

@unknownbrackets
Copy link
Collaborator

Okay. Can you try v0.9.1-2170-g1fa5718, and also just to be sure, try v0.9.1 (the official release)?

-[Unknown]

@onthebridge
Copy link
Author

I have tried a fresh install this time ...

v0.9.1-2170-g1fa5718: Same as before
v0.9.1: Usually the first video starts after you click "X" in the usual confirmation screen. This time instead of that confirmation screen, the emulator only displays a black screen. After that there is no response (neither in the game, nor in the debug console), no matter what button you press. I have attached an image of it.
mua2b

@unknownbrackets
Copy link
Collaborator

Has this improved at all? Valkyrie Profile had a similar issue.

-[Unknown]

@onthebridge
Copy link
Author

Still the same with ppsspp-v0.9.6-342-gcb28d33

@dbz400
Copy link
Contributor

dbz400 commented Jan 6, 2014

This is scePsmf*() log

54:33:870 user_main I[ME]: HLE\sceMpeg.cpp:370 sceMpegInit()
54:33:870 user_main I[ME]: HLE\scePsmf.cpp:496 scePsmfSetPsmf(0bffeee0, 0bffe6e0)
54:33:870 user_main I[ME]: HLE\scePsmf.cpp:226 PSMF MPEG data found: id=e0, privid=00, epmoff=000000a2, epmnum=00000008, width=480, height=272
54:33:870 user_main I[ME]: HLE\scePsmf.cpp:235 PSMF private audio found: id=bd, privid=00, channels=2, freq=2
54:33:870 user_main I[ME]: HLE\scePsmf.cpp:521 scePsmfGetNumberOfStreams(0bffeee0)
54:33:870 user_main I[ME]: HLE\scePsmf.cpp:577 scePsmfSpecifyStream(0bffeee0, 0)
54:33:870 user_main I[ME]: HLE\scePsmf.cpp:616 scePsmfGetCurrentStreamType(0bffeee0, 0bffef18, 0bffef1c)
54:33:870 user_main I[ME]: HLE\scePsmf.cpp:588 scePsmfGetVideoInfo(0bffeee0, 0bffef20)
54:33:870 user_main I[ME]: HLE\scePsmf.cpp:521 scePsmfGetNumberOfStreams(0bffeee0)
54:33:870 user_main I[ME]: HLE\scePsmf.cpp:577 scePsmfSpecifyStream(0bffeee0, 1)
54:33:870 user_main I[ME]: HLE\scePsmf.cpp:616 scePsmfGetCurrentStreamType(0bffeee0, 0bffef18, 0bffef1c)
54:33:870 user_main I[ME]: HLE\scePsmf.cpp:602 scePsmfGetAudioInfo(0bffeee0, 0bffef28)
54:33:870 user_main I[ME]: HLE\scePsmf.cpp:521 scePsmfGetNumberOfStreams(0bffeee0)
54:33:870 user_main I[ME]: HLE\sceMpeg.cpp:470 098adcc8=sceMpegCreate(098ad840, 098adc98, 65536, 098ad850, 512, 0, 0)
54:33:870 user_main I[ME]: HLE\sceMpeg.cpp:307 Stream offset: 2048, Stream size: 0x1FD800
54:33:870 user_main I[ME]: HLE\sceMpeg.cpp:308 First timestamp: 90000, Last timestamp: 1261170
54:33:870 user_main I[ME]: HLE\sceMpeg.cpp:307 Stream offset: 2048, Stream size: 0x1FD800
54:33:870 user_main I[ME]: HLE\sceMpeg.cpp:308 First timestamp: 90000, Last timestamp: 1261170
54:33:870 user_main I[ME]: HLE\sceMpeg.cpp:588 sceMpegRegistStream(098ad9d0, 0, 0)
54:33:871 user_main I[ME]: HLE\sceMpeg.cpp:588 sceMpegRegistStream(098ada38, 1, 0)

@unknownbrackets
Copy link
Collaborator

Are the videos still not showing here? The GE debugger may help, while the video is playing:

https://github.com/hrydgard/ppsspp/wiki/How-to-find-a-graphic-issue-with-the-GE-debugger

It may not "catch" the video playing. That would be useful to know too.

-[Unknown]

@dbz400
Copy link
Contributor

dbz400 commented Mar 27, 2014

I just retested it again .It is still not showing (GLES) .However , in softgpu , it shows up okay .Possibily flipping issue again ?

ulus10421_00000
ulus10421_00001
ulus10421_00003
ulus10421_00002
ulus10421_00005
ulus10421_00004

@unknownbrackets
Copy link
Collaborator

And the GE debugger, in GLES, as I asked?

-[Unknown]

@dbz400
Copy link
Contributor

dbz400 commented Mar 27, 2014

Here it is

untitled

@unknownbrackets
Copy link
Collaborator

So, it only ever clears with the texture disabled? Then it's probably using a copy operation for the video itself.

-[Unknown]

@dbz400
Copy link
Contributor

dbz400 commented Mar 28, 2014

Anything can try there for that copy operations for the video in GLES?

@dbz400
Copy link
Contributor

dbz400 commented Apr 2, 2014

Accidentally i tried to switch windows size , i can see the movie is playing ....
ulus10421_00000

@GTTeancum
Copy link

I can't comment on all platforms, but this is still an issue on Android with v0.9.8-1144-g1ef3ac6

@unknownbrackets
Copy link
Collaborator

Even with "simulate block transfer" enabled and buffered rendering, right?

-[Unknown]

@GTTeancum
Copy link

Correct, with both enabled it's still audio only. I did make a mistake on the build number though, it was 0.9.8-1137. I can dump a log via Android, correct? I'd be happy to upload one if it helps at all.

@daniel229
Copy link
Collaborator

@unknownbrackets
Copy link
Collaborator

It's probably a memcpy() we don't recognize, or else a memcpy() over two buffers or misaligned somehow.

Setting a breakpoint at 0x04044100 for 0x100 bytes might catch it. Does it catch it in a func? If it catches a memcpy, how big is the copy (from the log)?

-[Unknown]

@daniel229
Copy link
Collaborator

Catch this,don't know whether it's a memcpy().
02

@unknownbrackets
Copy link
Collaborator

Definitely looks like a memcpy. A decent one that requires alignment of size and amount. If you name it and turn on that setting in ppsspp.ini to save func hashes, we can add it to the table. I recommend naming it "marvel_memcpy" just so you can easily see which one it is.

-[Unknown]

@daniel229
Copy link
Collaborator

ac84fa7571895c9a:68 = marvel_memcpy

@daniel229
Copy link
Collaborator

The log
04:12:238 user_main I[ME]: HLE\sceMpeg.cpp:412 sceMpegInit()
04:12:241 user_main I[ME]: HLE\scePsmf.cpp:640 scePsmfSetPsmf(09ffeee0, 09ffe6e0)
04:12:241 user_main I[ME]: HLE\scePsmf.cpp:307 PSMF MPEG data found: id=e0, privid=00, epmoff=000000a2, epmnum=00000008, width=480, height=272
04:12:241 user_main I[ME]: HLE\scePsmf.cpp:316 PSMF private audio found: id=bd, privid=00, channels=2, freq=2
04:12:242 user_main I[ME]: HLE\scePsmf.cpp:721 scePsmfSpecifyStream(09ffeee0, 0)
04:12:242 user_main I[ME]: HLE\scePsmf.cpp:760 scePsmfGetCurrentStreamType(09ffeee0, 09ffef18, 09ffef1c)
04:12:242 user_main I[ME]: HLE\scePsmf.cpp:732 scePsmfGetVideoInfo(09ffeee0, 09ffef20)
04:12:242 user_main I[ME]: HLE\scePsmf.cpp:721 scePsmfSpecifyStream(09ffeee0, 1)
04:12:242 user_main I[ME]: HLE\scePsmf.cpp:760 scePsmfGetCurrentStreamType(09ffeee0, 09ffef18, 09ffef1c)
04:12:242 user_main I[ME]: HLE\scePsmf.cpp:746 scePsmfGetAudioInfo(09ffeee0, 09ffef28)
04:12:242 user_main I[ME]: HLE\sceMpeg.cpp:519 098adcc8=sceMpegCreate(098ad840, 098adc98, 65536, 098ad850, 512, 0, 0)
04:12:242 user_main I[ME]: HLE\sceMpeg.cpp:337 Stream offset: 2048, Stream size: 0x1FD800
04:12:242 user_main I[ME]: HLE\sceMpeg.cpp:338 First timestamp: 90000, Last timestamp: 1261170
04:12:242 user_main I[ME]: HLE\sceMpeg.cpp:337 Stream offset: 2048, Stream size: 0x1FD800
04:12:242 user_main I[ME]: HLE\sceMpeg.cpp:338 First timestamp: 90000, Last timestamp: 1261170
04:12:242 user_main I[ME]: HLE\sceMpeg.cpp:637 sceMpegRegistStream(098ad9d0, 0, 0)
04:12:242 user_main I[ME]: HLE\sceMpeg.cpp:637 sceMpegRegistStream(098ada38, 1, 0)
04:12:243 user_main I[KERNEL]: HLE\sceKernelThread.cpp:2177 458=sceKernelCreateThread(name=igPmfAudioTrack, entry=08b491c8, prio=26, stacksize=4096
)
04:12:243 user_main I[KERNEL]: HLE\sceKernelThread.cpp:2276 sceKernelStartThread(thread=458, argSize=4, argPtr=098adb1c)
04:12:243 user_main I[KERNEL]: HLE\sceKernelThread.cpp:2177 459=sceKernelCreateThread(name=igPmfFileStreamer, entry=08b491c8, prio=2a, stacksize=40
96)
04:12:243 user_main I[KERNEL]: HLE\sceKernelThread.cpp:2276 sceKernelStartThread(thread=459, argSize=4, argPtr=098ad95c)
04:12:243 user_main I[KERNEL]: HLE\sceKernelThread.cpp:2177 464=sceKernelCreateThread(name=igPmfMovieCodec, entry=08b491c8, prio=29, stacksize=4096
)
04:12:243 user_main I[KERNEL]: HLE\sceKernelThread.cpp:2276 sceKernelStartThread(thread=464, argSize=4, argPtr=098adba4)
04:12:278 igPmfFileStr I[ME]: HLE\sceMpeg.cpp:337 Stream offset: 2048, Stream size: 0x1FD800
04:12:278 igPmfFileStr I[ME]: HLE\sceMpeg.cpp:338 First timestamp: 90000, Last timestamp: 1261170
04:12:282 igPmfFileStr I[ME]: HW\MediaEngine.cpp:85 FF: No accelerated colorspace conversion found from yuv420p to rgba.
04:12:288 igPmfMovieCo I[ME]: HW\MediaEngine.cpp:85 FF: No accelerated colorspace conversion found from yuv420p to bgr565le.
04:12:292 user_main N[MM]: Debugger\Breakpoints.cpp:41 CHK Write128 at 44044100 ((44044100)), PC=08be4174 (z_un_08be4150)

@daniel229
Copy link
Collaborator

The full log,seem 44044100 to 440441f0
https://gist.github.com/daniel229/fbdc4be11a74a99fc981

@unknownbrackets
Copy link
Collaborator

Okay, in Core/MIPS/MIPSAnalyst.cpp, find:

{ 0xab97ec58c58a7c75, 52, "vector_divide_t", },

And add after:

{ 0xac84fa7571895c9a, 68, "memcpy", }, // Marvel Ultimate Alliance 2

Does that make it work?

-[Unknown]

@daniel229
Copy link
Collaborator

Yes,it works

xsacha pushed a commit to xsacha/ppsspp that referenced this issue Aug 24, 2014
Fixes hrydgard#4324 (Marvel Ultimate Alliance 2 videos), thanks daniel229.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants