Skip to content

Adding PPSSPP as ported emulation core for Sony PSP #4284

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

Open
wants to merge 44 commits into
base: master
Choose a base branch
from

Conversation

SergioMartin86
Copy link
Contributor

@SergioMartin86 SergioMartin86 commented Apr 6, 2025

Adding https://github.com/TASEmulators/ppsspp/tree/ported as new ported core in Bizhawk

  • Core compiling and running on Bizhawk
  • Add proper cd callbacks
  • Correctly handle shutdown
  • Add save/load
  • Add inputs
  • Add memory domains
  • Load ini with compatibility flags
  • Print UI messages to CoreComm.Notify
  • Handle disc swap
  • Handle thread create on save
  • Preserve NVRAM
  • Load language ini file
  • Load atlas font file
  • Add sound
  • Find out why some games crash on load (whereas they don't for https://github.com/SergioMartin86/headlessPPSSPP)

Check if completed:

@inconsistent-dg

This comment was marked as resolved.

@YoshiRulz YoshiRulz linked an issue Apr 6, 2025 that may be closed by this pull request
@SergioMartin86
Copy link
Contributor Author

Second thing to note as above is related. Some titles can crash out in BizHawk. Example title being used is Jetpack Joyride (minis) where the game will be able to boot

This should be fixed now.

@SergioMartin86
Copy link
Contributor Author

The core is now mostly functional and I reduced the diff wrt upstream the most I could.

Still, there seems to be some games (Crash Tag Team Racing (US).iso) that fail to load. These games DO work on my headless playerhttps://github.com/SergioMartin86/headlessPPSSPP, so no idea why putting this into bizhawk could be a problem.

I haven't figured out how NVRAM is saved so that is still pending.

@SergioMartin86 SergioMartin86 marked this pull request as ready for review April 13, 2025 08:06
@@ -89,3 +89,12 @@
path = waterbox/dsda/core
url = https://github.com/TASEmulators/dsda-doom.git
branch = wbx
[submodule "waterbox/ppsspp/ppsspp"]
path = ppsspp/ppsspp
url = https://github.com/TASEmulators/ppsspp.git
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which branch?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

@vadosnaprimer vadosnaprimer Apr 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's better to always keep hawk specific changes rebased on top of upstream branch that we rely on. And each time we pull upstream and rebase anew we would increment our branch version like this: wbx-1, wbx-2, etc, so every rebase is a new branch, because it basically changes history, which we want to preserve it on every update. This is better than merging upsream changes because that makes our changes harder to find over time.

And yeah please explicitly put the branch into this file, that way it's clear where the code is coming from. Only pointing to commit can result in detached head and that commit can belong to different branches, making future maintenance more annoying.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can see the wbx branch in the repo now but not in .gitmodules...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Uh, this is strange. This core isn't wbxed; it's ported. This every must be a residual from when I tried to wbx it

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah LOL indeed. Then the usual name for it is bizhawk.

@YoshiRulz YoshiRulz self-requested a review April 13, 2025 11:10
@Spikestuff
Copy link

Spikestuff commented Apr 13, 2025

I truncated out the issues from my above post.
Just read the History for what's been fixed (good shit eien).

In terms of new issues (by the autobuilds here). Using f1a8d12.
The major one besies the wrong font is being called compared to PPSSPP for some reason.
Is that the "™" is missing from "Memory Stick™":
image

Compared to PPSSPP:
image

And according to KAGE-008 at the very least this font issue affects Ghost in the Shell, Assassin's Creed Bloodlines, Crimson Room: Reverse, Jeanne D'Arc and Dissidia.

I was able to validate this missing text issue with Crimson Room: Reverse.
image

Another title having issues beside Crash Tag Team Racing is Xyanide Resurrection according to KAGE-008 as well.
You're able to boot into the game, but you land into a loading loop before the gameplay starts.

And I just noticed that there's "Right Analog" controls.
PSP only had a single analog stick.

And you're currently unable to access PSP > Settings.

(At least all these are issues with autobuilds)

@YoshiRulz
Copy link
Member

Missing glyphs aside, could the difference in font metrics cause any problems? Would a scrollbar appear if the message was slightly longer?

@Spikestuff
Copy link

Spikestuff commented Apr 13, 2025

I don't believe it would be a situation where for example you're missing the Japanese Locale and the entire game would run differently.
But I also haven't run into a situation where it might have happened to me.

@SergioMartin86
Copy link
Contributor Author

Regarding unstability for some games. I suspect there is some memory corruption that causes issues on Bizhawk+Windows. When running the core on my own driver (https://github.com/SergioMartin86/headlessPPSSPP), it works perfectly for the games that crash

@InfamousKnight

This comment was marked as resolved.

@YoshiRulz

This comment was marked as resolved.

@InfamousKnight

This comment was marked as resolved.

@Spikestuff

This comment was marked as resolved.

@InfamousKnight

This comment was marked as off-topic.

@InfamousKnight
Copy link

I'm curios why this is not waterboxed. I know waterbox would affect performance, but I don't like tasing while worrying about desyncs.

@SergioMartin86
Copy link
Contributor Author

SergioMartin86 commented Apr 23, 2025

I'm curios why this is not waterboxed. I know waterbox would affect performance, but I don't like tasing while worrying about desyncs.

The interpreter crashes when waterboxed. We don't know exactly why, but for now a waterboxed implementation is out of the question. The core seems to have solid load/save state procedures so I'm confident it can still be used ported directly.

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

Successfully merging this pull request may close these issues.

[Core Port Req.] PPSSPP - PlayStation Portable
6 participants