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.39k stars 2.19k forks source link

Stuck issue with Mega Man Maverick Hunter X #3318

Closed hdd60311 closed 8 years ago

hdd60311 commented 11 years ago

Reported form http://forums.ppsspp.org/showthread.php?tid=384&pid=41935#pid41935 when run this game it freezes at ACCESS page, press start button can continue it.

1

hdd60311 commented 11 years ago

Could anyone take a look at this?

unknownbrackets commented 11 years ago

Don't have the game, a log at least might help.

-[Unknown]

hdd60311 commented 11 years ago

log : http://www.mediafire.com/?q4r60x1lo6pvk21

unknownbrackets commented 11 years ago

So just to clarify, the issue here is that it doesn't pass that screen without you pressing a key, right?

Did this work previously, and stopped working, or it never worked?

-[Unknown]

hdd60311 commented 11 years ago

Tested repeatedly and seems this issue is fixed in latest build.

hdd60311 commented 11 years ago

Alright this issue is still there in latest build. log : http://www.mediafire.com/download/w8bxbk9qto5nm7s/Mega_Man(2).log

unknownbrackets commented 11 years ago

If this worked at one point and was broken again, can you find which build it last worked in and the first build it stopped working in?

-[Unknown]

scraggles80 commented 11 years ago

the closest i could get is it worked in ppsspp-v0.8-91 and stopped in ppsspp-v0.8.1

unknownbrackets commented 10 years ago

Hmm, maybe it was video related (sorry forgot to post that) - could be fixed with recent video improvements. Any change here?

-[Unknown]

thedax commented 10 years ago

I picked up this game recently, and no, it's still "hanging" on accessing until the user presses start, when first booting the game.

59:22:046              I[ME]: HLE\sceMpeg.cpp:365 sceMpegInit()
59:22:046              I[ME]: HLE\sceMpeg.cpp:465 095200a0=sceMpegCreate(0bfbc960, 09520070, 65536, 0bfbc964, 512, 0, 0)
59:22:047              W[ME]: HLE\scePsmf.cpp:645 scePsmfQueryStreamOffset(09530090, 08a327d4)
59:22:047              I[ME]: HLE\sceMpeg.cpp:302 Stream offset: 2048, Stream size: 0xB7800
59:22:047              I[ME]: HLE\sceMpeg.cpp:303 First timestamp: 90000, Last timestamp: 540450
59:22:047              I[ME]: HLE\scePsmf.cpp:496 scePsmfSetPsmf(08a327a4, 09530090)
59:22:047              I[ME]: HLE\scePsmf.cpp:226 PSMF MPEG data found: id=e0, privid=00, epmoff=000000a2, epmnum=00000004, width=480, height=272
59:22:047              I[ME]: HLE\scePsmf.cpp:235 PSMF private audio found: id=bd, privid=00, channels=2, freq=2
59:22:047              I[ME]: HLE\scePsmf.cpp:563 scePsmfSpecifyStreamWithStreamTypeNumber(08a327a4, 00000000, 00000000)
59:22:047              I[ME]: HLE\sceMpeg.cpp:583 sceMpegRegistStream(0bfbc960, 0, 0)
59:22:047              I[ME]: HLE\sceMpeg.cpp:583 sceMpegRegistStream(0bfbc960, 1, 0)
59:22:065              I[KERNEL]: HLE\sceKernelThread.cpp:2129 316=sceKernelCreateThread(name=soundThread, entry=08912720, prio=3d, stacksize=2048)
59:22:065              I[KERNEL]: HLE\sceKernelThread.cpp:2180 sceKernelStartThread(thread=316, argSize=4, argPtr=08a3279c)
59:22:067              I[ME]: HLE\sceMpeg.cpp:302 Stream offset: 2048, Stream size: 0x10C800
59:22:067              I[ME]: HLE\sceMpeg.cpp:303 First timestamp: 90000, Last timestamp: 900810
59:22:082              I[ME]: HW\MediaEngine.cpp:84 FF: deprecated pixel format used, make sure you did set range correctly
59:22:082              I[ME]: HW\MediaEngine.cpp:84 FF: No accelerated colorspace conversion found from yuv420p to rgba.
unknownbrackets commented 10 years ago

Does it play the video through and then stop, or does it never even play the video?

If you mark "sceMpeg.cpp" with the following after the includes:

#undef DEBUG_LOG
#define DEBUG_LOG NOTICE_LOG

And also scePsmf.cpp the same for good measure, is it continuing to call sceMpeg/scePsmf syscalls while hung, or has it stopped?

-[Unknown]

thedax commented 10 years ago

It's supposed to play a 2 or 3 second video and then show the Capcom logo, but it never displays. It hangs on Accessing, and then when the user hits start, it immediately skips to the Capcom logo as if it never happened.

While it's hanging, it doesn't continue to call other mpeg/psmf functions, it seems.

https://gist.github.com/thedax/4bfa95062d65ac16883c/raw/818c6764f599d2865567aef9af38d0719b12cc9c/gistfile1.txt

Here's a video that happens to depict the little video it's supposed to show, it's within the first 2-3 seconds: http://www.youtube.com/watch?v=Ld6L5feOZ_8

dbz400 commented 10 years ago

It is working now and video playback ok (You have to press SPACE bar then the Capcom logo will come out .It is funny)

screen00329 screen00330

screen00328 screen00331

dbz400 commented 10 years ago

Tested it on JPCSP as well .Also need to press SPACE then will show up CAPCOM logo and in-game .

thedax commented 10 years ago

Yeah, the other videos work fine, but the video with blue binary numbers before the Capcom logo doesn't play, so the issue isn't resolved.

dbz400 commented 10 years ago

I think it is this one "blue binary numbers"

untitled

thedax commented 10 years ago

Correct.

dbz400 commented 10 years ago

However i still wonder why we need to press SPACE in order to pass on .Not too sure how this do on real PSP ...

thedax commented 10 years ago

Because one of the MPEG functions always returns 1200 something packets remaining, so the game thinks the movie hasn't ended. On the real PSP, the video plays and then the Capcom logo displays. The video can be skipped with start, which is why the game even works on PPSSPP.

dbz400 commented 10 years ago

But i did try to press start button , it didn't work .Only keyboard SPACE button let it pass on .

thedax commented 10 years ago

..Space is the emulated PSP's start button by default.

dbz400 commented 10 years ago

Oops I see as I keep pressing start button on my xbox 360 device but didnt work

hrydgard commented 10 years ago

Hm, should work the same, check your control mappings.

dbz400 commented 10 years ago

I did try this start button on XBOX 360 device , it works okay for other games but not this one .Only SPACE works

hrydgard commented 10 years ago

Huh, that doesn't make much sense..

dbz400 commented 10 years ago

I think it is this own game specific issue probably.

psennermann commented 10 years ago

Yes, I confirm that only SPACE on the Keyboard works, the start button mapped on my X360 gamepad doesn't work...

Ixodid commented 10 years ago

Just tried this, pretty weird. When the video gets stuck any keyboard key bound to the start button works fine, as do the on-screen touch controls. Gamepad (XInput or otherwise) buttons will stop responding altogether until the video is skipped with the keyboard. If software rendering is turned on the video will still not play correctly but gamepad controls will keep working.

unknownbrackets commented 10 years ago

I think gamepad buttons don't work possibly because it's not flipping. Does it work correctly in the software renderer (it may be ridiculously slow)?

-[Unknown]

Ixodid commented 10 years ago

Yes, the gamepad buttons work in the software renderer, as my last comment said.

unknownbrackets commented 10 years ago

Oh, sorry, somehow lost that last sentence. So, yeah, that confirms it I think - it's not flipping I guess. I thought I added a cap of skipped frames...

-[Unknown]

unknownbrackets commented 10 years ago

Can someone with this game and a compiler try changing Core/HLE/sceDisplay.cpp:

        // Setting CORE_NEXTFRAME causes a swap.
        // Check first though, might've just quit / been paused.
        if (gpu->FramebufferReallyDirty()) {
            if (coreState == CORE_RUNNING) {
                coreState = CORE_NEXTFRAME;
                gpu->CopyDisplayToOutput();
                actualFlips++;
            }
        }

To:

        // Setting CORE_NEXTFRAME causes a swap.
        // Check first though, might've just quit / been paused.
        if (coreState == CORE_RUNNING) {
            coreState = CORE_NEXTFRAME;
            gpu->CopyDisplayToOutput();
            actualFlips++;
        }

This isn't a good change, I just want to know if that makes it more responsive.

-[Unknown]

daniel229 commented 10 years ago

I tried that change,the FPS is counting and abnormal number 54/6(888.4%)~54/6(889.5%) 01

unknownbrackets commented 10 years ago

What happens on Android here? Does it accept button presses from controllers there? (without any changes.)

-[Unknown]

Ixodid commented 10 years ago

Without the changes posted above everything works fine on android. You can use either a gamepad or on-screen controls to skip the video.

unknownbrackets commented 10 years ago

5706 should at least make controllers work the same as keyboards.

-[Unknown]

dbz400 commented 10 years ago

The start button on xbox360 should be working okay now in latest build

unknownbrackets commented 10 years ago

That does not make this issue fixed, for the record, but at least it's more playable now with a controller.

-[Unknown]

daniel229 commented 10 years ago

IO-minor2 branch makes it hangs later a few frames.But the way,that video sometime does not hang,I see it once while I was testing.

master build 01

IO-minor2 branch 02

daniel229 commented 10 years ago

0.9.6-576-g7f99564 does not hang,but all videoes are skipped.0.9.6-592-gd4feb77 hangs,but videoes are playback.

sergiobenrocha2 commented 9 years ago

It still stucks and becomes unresponsive in git version, ubuntu 14.04 64-bits. The start button tip does not work, and you have to kill ppsspp in system monitor.

sum2012 commented 9 years ago

I test no problem v0.9.9.1-1614-g2b0b1a5-windows-amd64 Log: https://gist.github.com/sum2012/fd6503d6a9a2711825c9

thedax commented 9 years ago

With default settings it still hangs on the Accessing screen for me until I press start. What settings are you using?

sum2012 commented 9 years ago

I mean that " start button tip does not work," work to me

sergiobenrocha2 commented 9 years ago

Default settings (removed ~/.config/ppsspp/), with these cards (with and without using bumblebee):

VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
3D controller: NVIDIA Corporation GK208M [GeForce GT 740M] (rev ff)

And it hans on the accessing screen. How press start work for you guys?

Intel(R) Core(TM) i7-4700HQ CPU @ 2.40GHz
Linux 3.14.30-031430-generic #201501271200 SMP Tue Jan 27 17:02:18 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
sergiobenrocha2 commented 9 years ago

It's working now in 1.0.1.

daniel229 commented 9 years ago

But,still have to press START button to skip that hanging video.

sum2012 commented 9 years ago

v0.8-32-gf1659a2 no problem log:https://gist.github.com/sum2012/1d01b084488ee8ff9cd8 Have this log after "access" screen sceMpegRingbufferPut(): unable to enqueue all added packets, going to overwrite some frames.

sum2012 commented 9 years ago

v1.0.1-233-g13c08ab log: https://gist.github.com/sum2012/2765eb5e33ab2d94b112

good v0.8.1 bad v0.8.1-37-ged47eac compare: https://github.com/hrydgard/ppsspp/compare/v0.8.1...v0.8.1-37-ged47eac

I might need to reinstall VS2010 to more bisect

sum2012 commented 9 years ago

JPCSPTrace log: https://gist.github.com/sum2012/e5f332933cf121d2f4af/raw/gistfile1.txt

@unknownbrackets Real psp return sceMpegRingbufferAvailableSize to 0 in some case !!