ppsspp
ppsspp copied to clipboard
Metal Gear Acid 2 Special Card Videos Can Crash PPSSPP
I'm playing GIT v1.5.4-889-g26f5b5b93 on a Galaxy S9+. This problem appears in both Vulkan and OpenGL modes. The videos that play when special cards are used can crash PPSSPP.
If you use the Cyborg Ninja card (and let the video play), then use The Fury card, PPSSPP will crash when it tries to play the second video. You can do it in reverse order (use Fury then Ninja), and it will still crash on the second card video.
I think I've also seen this happen with the first play of a card video, but I can't 100% recall.
Here's the savestate where you can replicate this... MGA2 Card Videos Crash.zip
That change fixed a little issue where we could forget to set stencil state but use it anyway. I can imagine that it could cause crashes here, and loading the savestate it doesn't seem to happen for me anymore. Can you test on your S9?
Although.. that wouldn't explain the OpenGL crash.
invalid access, turn off fast memory will ignore error. Interpreter error, too.
40:32:566 Main E[G3D]: GPUCommon.cpp:651 sceGeListEnqueue: can't enqueue, stack address 08A8858C already used
40:32:567 Main W[MEMMAP]: MemmapFunctions.cpp:91 ReadFromHardware: Invalid address 00000008
40:32:567 Main W[MEMMAP]: MemmapFunctions.cpp:127 WriteToHardware: Invalid address 00000000
40:32:567 Main W[MEMMAP]: MemmapFunctions.cpp:127 WriteToHardware: Invalid address 00000008
40:32:567 Main W[MEMMAP]: MemmapFunctions.cpp:127 WriteToHardware: Invalid address 00000004
40:32:567 Main W[MEMMAP]: MemmapFunctions.cpp:127 WriteToHardware: Invalid address 00000008
Huh. If that kind of error happens, it feels like it's on the CPU side rather than the GPU side. Maybe another ARM64 JIT bug...
I just tested v1.5.4-893-gf4d8bfdf1 on my S9+ and turned off fast memory. Now it manages to play both videos but crashes PPSSPP after the second one. Vulkan and OpenGL both do it.
By the way, is the super brief graphical glitch before the videos load a known issue?
Weird. The error that's being logged should have nothing to do with the little vulkan problem I fixed so there may have been two different crashes here?
Dunno about the glitch.
Debugging crashes is super boring so I fixed the performance instead: https://github.com/hrydgard/ppsspp/pull/10911 It makes a pretty major change to the Vulkan stuff so not sure about merging before 1.6.
Oh wow, so does it no longer crash then? In OpenGL too?
No, I just said that I worked on perf instead :P haven't fixed any crash bugs
You guys should try the latest build now, let me know what performance you get on your devices :) The speedup is Vulkan-only for now.
Now, the crash.. I'll try to look into it later but it looks tricky :(
Oh ok, I haven't tried it yet, but I will later. However, I actually haven't had any slowdown except for needing to turn splines down to medium.
By the way, I appreciate you trying to fix my MGA2 issues. The crashes are annoying. Did you happen to see this issue too? https://github.com/hrydgard/ppsspp/issues/10814
I'm not used to devs being as on the ball as you all have been. I'll be donating soon!
If you got acceptable performance out of this game, you had "slow buffer effects" disabled, didn't you? No (or less) need for that now!
No, but I do tend to render and display at the original PSP res. Will I need splines at medium still?
Seriously? I got like 10 fps on S8 before my fixes. Do you have a US S9 (Adreno) or a international (Mali)?
My S8 now is full frame rate with hw splines.
A US S9+ from Verizon.
I found a weird graphics glitch almost immediately in v1.5.4-905-g21b2cbc81. it happens when I fire the AKM at the boss...
MGA2 Weird Graphics Glitch On Bullet Hit.zip
Note: I changed splines back to high.
EDIT: It only happens in Vulkan, not OpenGL.
OK, maybe the old method isn't as slow on Adreno as on Mali. Because it was barely playable.
Huh, that's a weird one...
Fixed it.
Yup, thanks! Crashes remain for now.
Just donated as promised!
Here's something that might help diagnose the crashing. I unlocked a card movie viewer and the crash still happens in that after two views... Card Movie Viewer.zip
I don't know if this is of any help (it probably isn't) but I had the same problem using the latest dev on macOS. After turning off "fast memory" (which I remembered helped dealing with crashes in MGA 1) PPSSPP doesn't seem to crash anymore, though now I sometimes have graphical glitches after using certain cards/videos, which stay on the screen as green lines, forcing me to quit (though the games seems to keep running, I hear the sound notifications of commands I choose etc., though I can't see what happens anymore).
@chiffon-rouge Thanks, CR, but at least on Android, the crashes still happen with fast memory disabled.
Still, it might be a clue for the devs?
To be more precise, whenever I use a special card that triggers a video sequence for a second time (it doesn't need to be the same card, it seems) I get the graphical glitches, with the screen turning into green lines, while the game continues to play. So for example this happens when I play the Cyborg Ninja card first and then the same card again or the Fury. Before switching off 'Fast Memory' PPSSPP, following the same scenario, would crash. A workaround would be disabling videos (which, as I believe, is an in game option) I guess, but I haven't tested this yet.
Just tested in v1.6.3-536-g7b34eaa1f, and this issue remains.
Having the same issue on 1.6.3 (whatever newest version on Play is), disabling Fast Memory fixes the crashes but usually after a character card video plays i get some sort of flickering screen, usually red/green glitched graphics or the loading screen. Game continues to run in background but nothing seems to revert the screen to normal.
What happens if you turn off fast memory but uncheck ignore invalid read/writes.
I can't seem to find the option for 'ignore invalid read/writes,' is it in the nightly version?
There's no UI for that outside desktop.
On Android, you can change the setting by editing the ini file and looking for "IgnoreBadMemAccess = True".
-[Unknown]
Thanks for the feedback and suggestions thus far guys. I tried changing IgnoreBadMemAccess to 'False', but the screen glitching problem persists. Here's some screens to show exactly what's happening:
After the card cinematic plays, which only has a very brief minor graphical glitch at the beginning, the screen begins flashing between screens 2 and 3 every half a second or so. This seems to occur roughly 50-80% of the time a character card cinematic is played. Game continues to run and be controllable but the screen never reverts to normal.