Skip to content

Conversation

SergioMartin86
Copy link
Contributor

@SergioMartin86 SergioMartin86 commented Apr 6, 2025

dev build for branch | SergioMartin86:ppsspp

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)
    • This is most likely due to BizHawk not having support for larger mediums (DVD size).
  • gamedb
  • from Spike:
  • Font shenanigans
    • Font that's being called from PPSSPP isn't correct to how PPSSPP presents it, most notably the Trademark Symbol is absent.
    • Font replacement isn't being done in titles such as Crimson Room: Reverse and Ghost in the Shell so font displays as blank.
  • CSO and CHD support.
  • When an ISO and CSO are present in the same folder, Hawk will complain about the other file. This previously wasn't the case.
  • Certain titles are rendering for a split frame green and black vertical bars (Namco Museum Battle Collection demonstrates this quickly).
  • Certain titles are showcasing incorrect graphics, solve why this is happens. This appears in Ridge Racer.
  • Certain titles have broken models, solve why this is happens. This appears in Tekken: Dark Resurrection.
  • Find out why some games crash during gameplay Exit (fails to play mission) and Mercury Meltdown (fails to load first FMV).
  • Find out why certain movies desync when creating a TASProject (see Tekken 6).

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
@InfamousKnight
Copy link

Tried again with latest build and input still doesn't register on Linux. In the osd, inputs still show. And L and R show up as !. But they don't apply to the game. Tested star wars battlefront 2, the 3rd birthday, among others.

# music problem where every attempted fix has reduced compatibility with other games
# * Enable "unsafe" performance optimizations that some games can tolerate and
# others cannot. We do not currently have any of those.
# * This file is only for VR (virtual reality). For non-VR purposes, use compat.ini.
Copy link
Member

Choose a reason for hiding this comment

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

???

@InfamousKnight
Copy link

Updates over here: can confirm the input issue is Linux only. I used wine to test input and it works there. Despite L and R showing as !, it still registers.

Midnight club la remix has a black screen too and that game is less than 600 mb. So I don't think file size is the issue here.

Also, is there a way to map analog controls to keyboard inputs? Like 'I' key is analog up? And 'L' key is analog left and so forth? My gamepad controller doesn't work...

@Spikestuff
Copy link

Spikestuff commented Aug 16, 2025

Midnight club la remix has a black screen too and that game is less than 600 mb. So I don't think file size is the issue here.

It's more of the issue that you got a bad dump. L.A. Remix is 894MB.
image

@Spikestuff
Copy link

Spikestuff commented Aug 16, 2025

Just linking Part 2 & 3. Part 1 is essentially "done" it's just the larger filesize issue, which, whatever.

I'm making this as the unique post, as this doesn't make sense to things that we're aware of, because BizHawk freezes in this instance, and the only logical reasonings is the missing text, but as we established games still work... right?

Exit (USA/Europe) locks up failing to display the tutorial text, as what's below is what we should be getting.
Exit (USA/Europe)

Exit (Japan/Korea) locks up just before that... displaying the level text instead, again this is what we should be getting.
Exit (Japan/Korea)

But what I gathered from an RTA run from 5 years ago. Is that this shouldn't prevent the game from running.
Exit (USA/Europe)
Exit (Japan/Korea)
This is PPSSPP v1.8 (2019), which is able to deal with it-- with a different font, but it's able to deal with it.

Theoretically, Hawk shouldn't have this issue. But it unexpectedly locks up instead.
image


Next is Mercury Meltdown (USA/Europe).
This game refuses to boot, and the only thing that this can possibly be is Hawk failing to load the intro FMVs somehow.
image
This is well below the "large filesize" issue, so the only answer this points to is again, it failing to load the very first FMV.

should probably be fixed properly upstream

oh and someone else rebuild linux kthx
@dancrimpirate
Copy link

great ! now go for gamedb .
it's required for homebrew apps and especially pspkvm the j2me emulator

@InfamousKnight
Copy link

And sync test update on midnight club la remix, tested 10 minutes of footage and it syncs! Dumping avi video works too and doesnt desync.

If it shows a black screen, turn off rewind, advance to next screen, and you can turn it back on.

I was surprised how fast it was despite rewind and using some low spec hardware.

Although its unfinished, I'm still happy with this.

@SergioMartin86
Copy link
Contributor Author

CPP has resolved the game loading error (summary: it was bk's logic for loading discs that was incompatible with larger formats.)

Updated with upstream PPSSPP -- this core is up to date. Additionally, it has minimal changes so future reupstreaming should pretty straightforward

@SergioMartin86
Copy link
Contributor Author

reverting re-upstream as it breaks some games

@Spikestuff
Copy link

Spikestuff commented Sep 10, 2025

reverting re-upstream as it breaks some games

Just for context. It seems to be titles that are doing initial memory card checks and can't get past that.
Unless your name is Mercury Meltdown, that game is just broken, and still no idea why.

Just to showcase two titles that are outright explicitly saying it's that portion, where it previously worked (in Guilty Gear's case):

@githubc00l

This comment was marked as resolved.

@Spikestuff
Copy link

Spikestuff commented Sep 11, 2025

This was false. Unfortunately.
Even before latest build there were issues here and that shined bright with Tekken 6.

I will immediately clarify out of the gate that this TAS exists only due to the fact that I didn't clear Greenzone after spotting this issue very early.
Now originally back on 8957808 (unless it was earlier) we had a form of the consistency, in the inconsistency, to explain I will use the original text I was going to have here and then pivot into what it's devolved to.

Do note that the tasproj file referred to is lost, and is technically not required as things have gotten worse (which I'll get into).

Spikestuff - 17th August

Now here's an interesting one where I'm going to provide the tasproj to, and inform that converting this as a bk2, or playing it without the piano roll, will cause a desync.
So the game is Tekken 6 (USA), what was meant to happen is that Yoshimitsu is meant to take on Devil Jin first. Ok, we agree here right? Ok, we're all wrong.
When the Greenzone is cleared, the first fight is actually Kazuya... most of the time. You can still somehow generate a different character like Nina, or Armor King, or Bryan.

So what about the bk2 (or played without piano roll)? After all I did mention it will cause a desync.
bk2 doesn't even get into the character select screen. So there isn't a consistent way of knowing who you're facing first, and there kinda doesn't seem like there's logic to this.

As for creating from a bk2, at face value, there doesn't seem to be an issue here.

At least back then, we had a form of consistency where we were able to consistently get Kazuya as our first opponent to fight after clearing Greenzone, and doing everything that could be done. It was Kazuya no matter what. The bk2 failed, it will get to the main menu with the wrong character and get stuck there, whatever no big deal compared to what is going to be mentioned.

Since then I have a new tasproj file that I'm providing which is using the latest build at the time of writing. Like the previous one before it, it mentions within the Markers what steps are being done and the Greenzone has been removed.

However, compared to the previous one's Markers I am unable to tell you who the first fight is against, cause it's wildly inconsistent when Greenzone is cleared, the bright news is bk2 syncs with the exact same issue.

When Yoshimitsu is selected. I am getting every valid character in the Tekken roster as Yoshi's opponent.
What I originally wrote on the 17th of August is gone. This threw it all out the window. There is absolutely no logic.

It is now extremely inconsistent and you cannot make a TAS with this anymore from start to end with a cleared Greenzone tasproj file (cause remember as outlined in the original comment bk2 failed outright, comparatively to where it works to a point now).


Alright. Now that a major problem has been pointed out, let's switch to lighter news.

RIIIIIIIIIIIIIIIIDGE RACER has graphical glitches.
The level is Sunset Drive, and pay attention to the scenery here on BizHawk:
image

And here on PPSSPP:
image

And now the second one, we have model glitches, which reminds me of older PPSSPP which used to struggle with Tekken: Dark Resurrection.

To make it obvious and to the point I chose Jack-5 because damn he's big and it's so obvious on him.

Here's the error in BizHawk:
Tekken_-_Dark_Resurrection_USA_EnFrDeEsIt 2025-09-11_16 28 27

And here's PPSSPP being fine with it:
ULUS10139_00000
(Yes there's two Tekken games on PSP. This one doesn't seem to have the desync issues which makes it more interesting/annoying.)

@Spikestuff
Copy link

Spikestuff commented Sep 14, 2025

The only workaround I found is to create a save state in the main menu while recording the inputs.

How did you miss the part where I mentioned that it was previously somewhat consistent in the tasproj version compared to now?


Edit: And they deleted their comment... keeping up the section I quote them on cause creating a different takeaway is insane.

@InfamousKnight
Copy link

Tested latest build and input still doesn't register on linux... just sucks I have to use wine... it adds so much overhead..

Is anyone else having that issue with linux? I'm using linux mint zara cinnamon

@YoshiRulz
Copy link
Member

I can't even load the core. I think this is a different error than I got last time though:

System.InvalidOperationException: got null pointer from dlopen, error: /nix/store/xvzz97yk73hw03v5dhhz3j47ggwf1yq1-gcc-13.2.0-lib/lib/../lib64/libstdc++.so.6: version `CXXABI_1.3.15' not found (required by /home/yoshi/Documents/BizHawk/output/dll/libppsspp.so)
  at BizHawk.Common.OSTailoredCode+LinuxLLManager.LoadOrThrow (System.String dllToLoad) [0x00026] in <fda7fbf47001476aa396e40d89ba93b6>:0 
  at BizHawk.Common.DynamicLibraryImportResolver..ctor (System.String dllName, System.Boolean hasLimitedLifetime) [0x0000e] in <fda7fbf47001476aa396e40d89ba93b6>:0 
  at BizHawk.Emulation.Cores.Consoles.Sony.PSP.PPSSPP..ctor (BizHawk.Emulation.Cores.CoreLoadParameters`2[TSettings,TSyncS] lp) [0x001a5] in <d72ea0d4cec24692bf9bacdef04beadc>:0 

@InfamousKnight
Copy link

And the first desync I encountered: star wars battlefront 2. When I selected mos eisley assault mode, and then selected villains when the team select showed up, it didnt select villains on playback. I was going to do a jango fett run where he does all the kills and doesn't take damage and no missed shots. Would have been really cool to see.

I haven't tested thoroughly to see a good way to reproduce it.

@YoshiRulz YoshiRulz added Request: Feature/Enhancement For feature requests or possible improvements Core: Future core Core doesn't exist yet or is an early WIP labels Sep 26, 2025
@InfamousKnight
Copy link

And ratchet and clank size matters:

Good performance. I'm getting 25+ fps. Sometimes over 40 fps.

Sync stable: yes

But it does have some weird requirements. You can't have rewind turned on on booting the game up. After you close save game, you have to turn off rewind until you reach control of ratchet. Do not have rewind enabled during cutscenes. So a lot of switching around if you want to use rewind.

@InfamousKnight
Copy link

InfamousKnight commented Oct 1, 2025

[Edit] nevermind. Most of my performance issues stem from having to use wine. Im sure once the linux build is fixed, its gonna make a big difference

I dont think removing threads was necessary: hrydgard/ppsspp#19404

Bringing back the threads would improve performance and probably wouldn't affect sync stability.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Core: Future core Core doesn't exist yet or is an early WIP Request: Feature/Enhancement For feature requests or possible improvements
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Core Port Req.] PPSSPP - PlayStation Portable