-
Notifications
You must be signed in to change notification settings - Fork 411
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
base: master
Are you sure you want to change the base?
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
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. |
@@ -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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Which branch?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
added
There was a problem hiding this comment.
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
...
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
.
I truncated out the issues from my above post. In terms of new issues (by the autobuilds here). Using f1a8d12. 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. Another title having issues beside Crash Tag Team Racing is Xyanide Resurrection according to KAGE-008 as well. And I just noticed that there's "Right Analog" controls. And you're currently unable to access PSP > Settings. (At least all these are issues with autobuilds) |
Missing glyphs aside, could the difference in font metrics cause any problems? Would a scrollbar appear if the message was slightly longer? |
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. |
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 |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as off-topic.
This comment was marked as off-topic.
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. |
|
||
namespace BizHawk.Emulation.Cores.Consoles.Sony.PSP | ||
{ | ||
public partial class PPSSPP : ISettable<PPSSPP.Settings, PPSSPP.SyncSettings> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If there are no settings, use ISettable<object, ...>
, and likewise for sync settings, and if there are neither then I think you can just omit the interface.
|
||
var stateLen = reader.ReadInt32(); | ||
|
||
if (stateLen > _stateBuf.Length) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ditto
var stateLen = _libPPSSPP.GetStateSize(); | ||
writer.Write(stateLen); | ||
|
||
if (stateLen > _stateBuf.Length) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be !=
? Under what circumstances could this happen?
|
||
protected readonly IntPtr _context; | ||
|
||
public PPSSPP(LibPPSSPP core, IntPtr context) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
core
argument is ignored? This constructor doesn't seem to be used anyway.
string resourceName = ""; | ||
|
||
resourceName = "compat.ini"; | ||
var compatIniData = new MemoryStream(Resources.PPSSPP_COMPAT_INI.Value).ToArray(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would this work for these?
var compatIniData = new MemoryStream(Resources.PPSSPP_COMPAT_INI.Value).ToArray(); | |
var compatIniData = Resources.PPSSPP_COMPAT_INI.Value.ReadAllBytes(); |
_serviceProvider.Register<ISoundProvider>(this); | ||
|
||
// Loading LibPPSSPP | ||
_resolver?.Dispose(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the constructor—this field is definitely null
here.
Adding https://github.com/TASEmulators/ppsspp/tree/ported as new ported core in Bizhawk
CoreComm.Notify
Check if completed: