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

libretro: Crash on loading Dissidia 012 as a CSO #14272

Closed
IngwiePhoenix opened this issue Mar 8, 2021 · 5 comments
Closed

libretro: Crash on loading Dissidia 012 as a CSO #14272

IngwiePhoenix opened this issue Mar 8, 2021 · 5 comments
Labels
Libretro Issue on Libretro but not all ports.

Comments

@IngwiePhoenix
Copy link

What happens?

I recently compressed all my ISO images to CSO to save a bit of space on my HDD and reduce subsequent reads - with a little of dfragmentation, I am getting quite decemt performance out of this 10 year old HDD now ^^

However, this introduced a whole new problem... Now, I can not launch my games anymore! When doing so, Retroarch crashes. So, I used retroarch_debug.exe and made myself a crashdump.

What should happen?

The game should launch.

What hardware, operating system, and PPSSPP version? On desktop and mobile phone, GPU matters for graphical issues.

OS: Windows 10
RetroArch: 1.9.0 (64bit)
PPSSPP core: v1.11.1-667-g409a2b5
GPU: NVIDIA 2080 TI FE
CPU: AMD R9 3900X
RAM: 4x8GB@3200MHz

What I think...

Considering none of my CSOs is launching, my first thought would be that maybe CSO support is simply broken in the libretro core right now?

Here is the crashdump:
crash-210308-171646.log

@LunaMoo LunaMoo added the Libretro Issue on Libretro but not all ports. label Mar 8, 2021
@unknownbrackets
Copy link
Collaborator

I assume PPSSPP proper runs fine with the same files, right?

Is this #12841? Otherwise it may be #12338. The stack trace shows it's while doing something related to save states - it's probably not directly related to CSO or not.

Libretro/Retroarch was designed with emulation for older systems in mind. Although the PSP is from 2004, it has a lot more RAM and threading capabilities than the NES. Libretro doesn't really support multithreaded emulators and tries to force PPSSPP to handle save states at random times which might cause crashes or bugs.

In general, PPSSPP in libretro seems to be a largely unstable experience for reasons like that. I'll note that some of the features (like run-ahead or rewind) weren't really designed thinking through systems that have 32+ MB of RAM (the PS1 only had 3MB), so they run poorly as well.

-[Unknown]

@IngwiePhoenix
Copy link
Author

IngwiePhoenix commented Mar 9, 2021

I assume PPSSPP proper runs fine with the same files, right?

Correct. Loading via PPSSPP (configured to point at the very same directories for memstick and games), the CSOs boot just fine.

Is this #12841?

crash-210309-132016.log
Disabling audio synchronization did cause RetroArch to hang - and when tabbing out and back in, it eventually crashed, producing this log.

Otherwise it may be #12338.

$RA_DIR/saves/PSP/PPSSPP_STATE is empty, and there are no related savestates in $RA_DIR/state.

like run-ahead or rewind

That gives me an idea. I'll see to turn off some of those features post-loading the PPSSPP core and see what happens.

...and wouldn't you know, it works. A core-specific settings file should do. In fact, all that I needed to run it, was:

$RA_DIR/config/PPSSPP/PPSSPP.cfg:

audio_sync = "false"
rewind_enable = "false"

But now, the game runs at some 700 FPS O.o... It feels as if it's completely uncapped somewhere, somewhat. Like, Fast-Forward is consistently on (which it really should not be).

Got any other ideas?

@IngwiePhoenix
Copy link
Author

Additionally:

> type .\retroarch-core-options.cfg | grep ppsspp
ppsspp_audio_latency = "low"
ppsspp_auto_frameskip = "disabled"
ppsspp_block_transfer_gpu = "enabled"
ppsspp_button_preference = "cross"
ppsspp_cheats = "enabled"
ppsspp_cpu_core = "jit"
ppsspp_fast_memory = "disabled"
ppsspp_frame_duplication = "disabled"
ppsspp_frameskip = "0"
ppsspp_frameskiptype = "0"
ppsspp_gpu_hardware_transform = "enabled"
ppsspp_internal_resolution = "1920x1088"
ppsspp_io_timing_method = "Fast"
ppsspp_language = "automatic"
ppsspp_locked_cpu_speed = "222MHz"
ppsspp_lower_resolution_for_effects = "off"
ppsspp_rendering_mode = "buffered"
ppsspp_separate_io_thread = "disabled"
ppsspp_texture_anisotropic_filtering = "16x"
ppsspp_texture_deposterize = "disabled"
ppsspp_texture_filtering = "auto"
ppsspp_texture_replacement = "disabled"
ppsspp_texture_scaling_level = "4"
ppsspp_texture_scaling_type = "xbrz"
ppsspp_unsafe_func_replacements = "enabled"
ppsspp_vertex_cache = "enabled"

@IngwiePhoenix
Copy link
Author

After even more trying-around, I finally got it working. It still feels like there is a little bit of choppyness left (Tested with CC:FFVII and Dissidia 012) and the framerate was going all the way between 28 - 32 in Crisis Core. But, at least it does work at all.

So I ended up doing this:

PS E:\Games\RetroArch> type retroarch-core-options.cfg | grep -i ppsspp
ppsspp_auto_frameskip = "disabled"
ppsspp_block_transfer_gpu = "enabled"
ppsspp_button_preference = "cross"
ppsspp_cheats = "disabled"
ppsspp_cpu_core = "jit"
ppsspp_fast_memory = "enabled"
ppsspp_frame_duplication = "enabled"
ppsspp_frameskip = "0"
ppsspp_frameskiptype = "0"
ppsspp_gpu_hardware_transform = "disabled"
ppsspp_internal_resolution = "1920x1088"
ppsspp_io_timing_method = "Simulate UMD delays"
ppsspp_language = "automatic"
ppsspp_locked_cpu_speed = "off"
ppsspp_lower_resolution_for_effects = "off"
ppsspp_rendering_mode = "buffered"
ppsspp_texture_anisotropic_filtering = "8x"
ppsspp_texture_deposterize = "disabled"
ppsspp_texture_filtering = "auto"
ppsspp_texture_replacement = "disabled"
ppsspp_texture_scaling_level = "4"
ppsspp_texture_scaling_type = "xbrz"
ppsspp_vertex_cache = "enabled"
PS E:\Games\RetroArch> type .\config\PPSSPP\PPSSPP.cfg
fps_show = "true"
video_shader_enable = "false"

I tested against a regular PPSSPP install, which continiously reported 30fps in the intro, where the RA core was already bouncing around.

Something not immediately visible: Rewind is OFF, Audio sync is ON. DSound and Vulkan are used for audio and video respectively.

@unknownbrackets
Copy link
Collaborator

If you're not having performance issues, I suggest turning the vertex cache off.

Sounds like this is just related to the existing save state issues with how libretro works. I'm going to close it as a duplicate then.

-[Unknown]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Libretro Issue on Libretro but not all ports.
Projects
None yet
Development

No branches or pull requests

3 participants