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

Metal Gear Acid crashing in the beginning on iOS #18371

Open imsmelly opened 1 year ago

imsmelly commented 1 year ago

Game or games this happens in

Metal Gear Acid

What area of the game / PPSSPP

Intro works normally until a section in the beginning

IMG_7802 Camera is supposed to pan all the way to the right but it stops right before the camera switches and crashes. Doesn’t give me a blue screen or anything, just sends to home screen

What should happen

Cutscene should play normally

Logs

No response

Platform

iOS

Mobile phone model or graphics card

iPhone 14 Pro Max iOS 17

PPSSPP version affected

v1.16.6-235-g3611b4d94

Last working version

Not sure

Graphics backend (3D API)

Vulkan

Checklist

imsmelly commented 1 year ago

Changed 2 settings (turned off fast memory and ignore bad memory accessed) and instead of getting taken to home screen it gives me a blue screen IMG_7804

anr2me commented 1 year ago

Btw, did it also crashed without loading from save state? (ie. loading from in-game saves)

imsmelly commented 1 year ago

Btw, did it also crashed without loading from save state? (ie. loading from in-game saves)

Crashes without loading from state aswell

anr2me commented 1 year ago

You will probably need to test some old versions (ie. v1.15.4, 1.14.x, 1.13.x, so on) to find out whether this is something that happened recently or not.

sum2012 commented 1 year ago

I test windows 11 no problem with IR ,CRC not same. but let assume ios problem

2

imsmelly commented 1 year ago

Tried on 1.15 and the crashing wasn’t present. Must be a new issue

anr2me commented 1 year ago

Could you try a few more builds to shorten the gap, like v1.16.0, 1.16.1, so on?

Btw, does using the "Interpreter" instead of "IR Interpreter" (or you can also disable all JIT functionality) made any difference? in case it was IR issue.

archanox commented 1 year ago

Just tested this, and the issue is not there with "Interpreter" but is with "IR Interpreter".

anr2me commented 1 year ago

If it's IR issue, you can try disabling some JIT functionality to find out which one causing the crash (ie. the one being disabled will use Interpreter instead)

archanox commented 1 year ago

No JIT on iOS I'm afraid.

anr2me commented 1 year ago

I mean, even with "CPU Core" set to "IR Interpreter" you can disable some JIT functionality (which being used by IR too) from "JIT debug tools" (the menu right below the "CPU core"), and when disabled it will be the same as "Interpreter", so we can find out which functionality causing the issue.

foxsevent commented 5 months ago

Disabling all JIT functionality did not fix the issue.

Tried on 1.15 and the crashing wasn’t present. Must be a new issue

Dunno about that it does crash for me on 1.15. you may have forgotten to change to IR on lower version as the settings resets. image

Issue seems to be present in every version of PPSSPP that can even boot MGS ACID tested up to 1.14.1090

foxsevent commented 5 months ago

Sorry for double posting but I found something.

I mean, even with "CPU Core" set to "IR Interpreter" you can disable some JIT functionality (which being used by IR too) from "JIT debug tools" (the menu right below the "CPU core"), and when disabled it will be the same as "Interpreter", so we can find out which functionality causing the issue.

I tried doing the opposite select JIT using IR and disable all JIT functionality this caused the game to crash as always but enabling any of these functions fixes it. ALU ALU_BIT FPU FPU_COMP FPU_XFER VFPU_VEC VFPU_MTX_VTFM Hope this helps somehow.

anr2me commented 5 months ago

When the JIT functionality being checked = disabled, are you sure you enable (unchecked) those functions instead of disabling it?

If enabling those fixes it, it mean Interpreter is broken for those functions, which is strange as Interpreter should be the most accurate core compared to IR Interpreter or JIT. Unless you were mistaking enabled as disabled (since the wording can be confusing as it's the reverse of the checkbox state)

foxsevent commented 5 months ago

Well you may disregard my previous post for now as I did retest it and found the result to be inconsistent. But you maybe correct assuming the interpreter is broken and maybe a JIT function fixes it somehow as the game does crash with just the interpreter. image

anr2me commented 5 months ago

I tried the EU version (UES00008 v1.01) it crashed PPSSPP (v1.17.1-701 Windows x64 build) instead of showing blue screen with IR Interpreter, but running fine with Dynarec JIT, and also works fine with JIT using IR, and Interpreter.

So i guess this is IR Interpreter issue.

Edit: Disabling only the LSU functionality fixes the crash on IR Interpreter, at least on EU version, not sure about US one. Also tested on v1.17.1-730 with the same result.

foxsevent commented 5 months ago

To show the blue screen of death you have to disable ignore bad memory access in system settings otherwise PPSSPP just crashes.

We do seem to have conflicting results as the EU version does crash the same for me with Interpreter, maybe it's platform specific or device specific? Disabling LSU didn't fix the problem on either version on for me. image

foxsevent commented 5 months ago

Selecting JIT using IR and disabling FPU_XFER causes the game to crash, no solution for IR interpreter or regular interpreter. I'm starting to think were dealing here with multiple different issues as the game does crash on slightly different frame. https://youtu.be/3Y-FE37j4Vk

anr2me commented 5 months ago

Selecting JIT using IR and disabling FPU_XFER causes the game to crash, no solution for IR interpreter or regular interpreter. I'm starting to think were dealing here with multiple different issues as the game does crash on slightly different frame. https://youtu.be/3Y-FE37j4Vk

Hmm.. based on that video the crash i experiencing is only the one near the stairs before the door opened, similar to the one using Interpreter in that video. I didn't get any crashes after the door opened, may be because i didn't use fast forward but using save state to load before the rotating camera scene.

And you're right, if i disable "Ignore bad memory access" i did get the blue screen with Interpreter, but didn't get the blue screen with Dynarec, unless i disabled all JIT functionalities, which is strange for Interpreter to crashed. I guess disabling LSU only fixes it when Ignore bad memory access enabled.

With "Ignore bad memory access" Disabled, here are the result: Interpreter: Bad Dynarec: Good IR Interpreter: Bad (crashing PPSSPP with FastMem) JIT using IR: Good

With "Ignore bad memory access" Disabled & All JIT functionalities Disabled, here are the result: Interpreter: Bad (obviously the same) Dynarec: Bad IR Interpreter: Bad (FastMem didn't crashed the PPSSPP) JIT using IR: Good

Edit: With Dynarec, Disabling only the FPU functionality will cause a crash image

So there are 2 functions that have issue: Interpreter's FPU causing blue screen, and IR Interpreter's LSU crashing PPSSPP with FastMem. IR Interpreter's FPU might be causing blue screen too, but there is no way to tell since the one on Interpreter is also causing blue screen.

PS: i didn't have any issue with JIT using IR even with FPU_XFER disabled, at least on EU version. May be that crash only happened on US version? or may be it's the crash that occurred after the door opened? (which i never experienced)