When ps3 version?
That's mostly because I'm busy trying to fix necessary bugs for the next release right now.
I've quickly implemented a PSL1GHT Makefile and made some source code changes to support the platform (in theory). Although I still need to verify if it can build it properly. I assume that PSL1GHT SDL/SDL2 can use file abstraction using RWOps?
It's currently still hardcoded for the PSL1GHT's documented paths (for the default Makefile it provides).
I also changed the root path of the application to /dev_hdd0/game/<APPID (in this case it's the same as the Vita app ID: SFHB00001)>/USRDIR/files
I still need to implement some other stuff, like proper PS3 directory creation and removal etc. Right now the calls are simply ignored.
Edit: Implemented basic directory/file creation and renaming/cleanup support.
Now I still need to implement directory listing and file I/O support for the basic system to theoretically being usable (since SDL 1.2/2 apparently has no rwops support).
Edit: Implemented directory listing and manual file I/O support for PS3. It doesn't use SDL/SDL2/SDL3 for this (as it's rwops seems to be a dummy only, at least for SDL 1.2 and SDL2).
Also added support for SDL_net and SDL2_net to the PS3 builds.
I think that's all the parts that needed adjustments, just still need to verify with an actual devkit. And since I don't own a PS3, I can probably only verify it on an emulator, if one exists for PC.
Compilation itself works the same as with the other project targets: "make ps3 build SDL2", adding SDL2_net for networking support.
The same should work when omitting SDL2 and optionally specifying SDL_net (to use SDL 1.2 with SDL_net). Although that might be strange, due to not having any scaling on SDL 1.2 (thus rendering a tiny 480x272 PSP-sized image on that SDL version, unless the display is set to a higher resolution in the UniPCemu settings (if it works like on the PC versions of SDL 1.2).
The MSYS2 devkit I can find only has SDL 1.2 though (there's no SDL2 supported by default).
Managed to get it past the first compilation stage, compiling all files into object files (although ). Now linking still needs to be fixed (it cannot find the reality and psl1ght libraries).
Managed to get it to compiled and fixed more code compilation issues that happened on the PS3 builds.
I added the compiled pkg to the below url for now to test:
https://www.dropbox.com/scl/fi/hkqfujw57x3l7we7adz3g/UniPCemu.pkg?rlkey=1pwp2y2s...
It's just a simple build using SDL and some preconfigured paths. In this case it's compiled using "make ps3 build" to compile with the toolchain's default SDL 1.2 library. Network support is disabled in this build.
Edit: And with SDL_net support:
https://www.dropbox.com/scl/fi/i6wm789rmvi6he59v7nbx/UniPCemu_net.pkg?rlkey=uyf9...
After some debugging in an PS3 emulator, found some more bugs.
Now it seems to be unable to start up once the UniPCemu base (it's startup is finished) is up-and-running. Somehow I think that the multithreading is running out of memory somehow? Terminating the app seems to work properly (I see it displaying the teardown of the app). So it's probably waiting on the BIOS thread to be able to start during first boot (but can't due to lack of free memory I think?).
But looking at the main thread reveals that it's running the main emulation somehow, although oddly enough the Settings menu (thread) it's supposed to run at the start never starts?
And because it never starts, the input mode is never changed to be properly functioning, as that's the task by the 'BIOS' initialization function (depending on the execution mode etc.). If it functions properly at all that is (the SDL 1.2 documentation of it says that it's unfinished?).
Since the main thread is running (responding to SDL events), emulator shutdown can properly occur though, so terminating the application works as intended.
And there's another weird issue: files can be createn, but not written for some weird reason? The file it created in my emulation testcase is an empty one (and locked while the emulation is still running for some weird reason?).
Just found out a big problem with porting UniPCemu to the PS3: it uses multiple threads at the same time.
UniPCemu uses threads for all kinds of things (timers (virtual keyboard mapping updates, framerate display, settings menu(mandatory), debugger). In this case it's probably trying to start the initialization handler (which is in the settings menu thread), but the PS3 only has one thread available. So it can't start the thread to initialize the emulator right now.
Edit: Hmmm... Fixing timers to be handled on the main thread still doesn't allow the settings menu thread to start properly somehow.
And once again looking at the PS3's resulting file I/O code, I figured out what was going wrong. It checked if the file open operation succeeds or not, then if if fails, aborts. But since it didn't fail, it started the same block of resulting 'failed to open' code meant for other platforms.
Now fixed it by merging the fail path with the other platforms correctly, causing the file I/O to work properly now.
The only issue I notice right now is that the multithreading still seems to fail somehow? It tries to start the first required thread (for handling the settings menu when the emulator starts), but instead of properly starting it it fails to launch the thread (at least within the emulator) and continues running the main emulation loop without any loading and setup required being done.
Terminating the emulator that's now running inside my RPCS3 development setup seems to properly terminate the application: i see it saving the settings and other data it has and terminating the application (just like it did before, but having full file I/O capability now).
Edit: With SDL_net support:
https://www.dropbox.com/scl/fi/i6wm789rmvi6he59v7nbx/UniPCemu_net.pkg?rlkey=uyf9...
And without SDL_net support:
https://www.dropbox.com/scl/fi/hkqfujw57x3l7we7adz3g/UniPCemu.pkg?rlkey=1pwp2y2s...