hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
11.01k stars 2.15k forks source link

V1.8.0 on iOS #11905

Closed thorieo closed 4 years ago

thorieo commented 5 years ago

I’d love to help out in porting 1.8 or a 1.9 build to iOS. I’m gonna be honest I have no experience building apps or emulators but I’m basically proficient in most areas of Xcode and Opendev so if anyone can point me along or who I can help out I’d love you forever

kpalczewski commented 5 years ago

hey, I have found a way to exit ppsspp without it hanging. works every time. I go to ppsspp menus and tap "buy ppssppgold" or "www.ppsspp.org" on main screen. This opens safari webbrowser. I am able to lauch ppsspp and it still works. no need to reboot.

ppsspp version that I have on device: last commit: 37a97e7 date build: 19.07.2019 Xcode version: 10.2.1 hardware: iphone 7 iOS: 12.3.1 without jailbreak

Maybe this will guide you to some great workaround to be able to quit ppsspp and still use jit.

mariolopjr commented 5 years ago

@Halo-Michael Having a separate builder and using Xcode to change the default version (and then change it back) is not necessary. All that needs to be done is the following:

  1. Follow PPSSPP cloning instructions
  2. Download Xcode 9.4.1 from https://developer.apple.com/download/more/, extract from .xip file, rename to Xcode-9.4.1, and copy to Applications
  3. Run the following command (instead of the one from the wiki): cmake -DCMAKE_TOOLCHAIN_FILE=./cmake/Toolchains/ios.cmake -DIOS_PLATFORM=OS -DCMAKE_IOS_SDK_ROOT=/Applications/Xcode-9.4.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.4.sdk -H. -Bbuild.ios -GXcode
  4. Navigate to build.ios, open PPSSPP.xcodeproj in Xcode-9.4.1, set the signing stuff, and then build the app
  5. Install the .app as necessary, or navigate to the built .app, create Payload folder and move .app into it, and create an ipa using the following command zip -r9 PPSSPP.ipa Payload/PPSSPP.app, and use Cydia Impactor to install.

You should have an updated PPSSPP version, built on iOS 11 SDK (that should help with crashes)!

PS: If this should belong in the wiki as an aside, I don't mind writing this up in a more helpful, friendly way for others to use. :)

EDIT: Tweaked some things, fixed some stuff, clarified items, etc. ;)

hrydgard commented 5 years ago

@mariolopjr Yeah, that should be in the wiki. I could just copy-paste what you wrote above, but if you want to rewrite it or something first, be my guest :)

mariolopjr commented 5 years ago

@hrydgard Yeah, let me get something that makes a little more sense. It's a bit involved in comparison to the default instructions. I can say tho, it works extremely well. I really appreciate the work you've done with PPSSPP, it's absolutely amazing (and brings me back to my middle school days!). It's a shame Apple doesn't allow emulators on the store, I am sure with your bank of $$$$, they can figure out how to allow arbitrary code execution with JIT in a sandboxed app.

Thanks again!

hrydgard commented 5 years ago

@mariolopjr I'm just gonna copy it to the wiki as-is - ping me if you write a better version :)

https://github.com/hrydgard/ppsspp/wiki/Build-instructions

mariolopjr commented 5 years ago

@hrydgard thanks that’s a good idea! I got a little busy and now dealing with the incoming hurricane haha. I will take a look and iterate on the instructions if they seem too difficult or if others have suggestions!

devinprater commented 4 years ago

With the release of Altstore, perhaps PPSSPP could have a more permanent, and updatable, home for iOS? The repo with created IPA's for PPSSPP is gone now though, and the IPA creator tool fails to run with Xcode 11, and MacOS Mojave:

DrConflict commented 4 years ago

With the release of Altstore, perhaps PPSSPP could have a more permanent, and updatable, home for iOS? The repo with created IPA's for PPSSPP is gone now though, and the IPA creator tool fails to run with Xcode 11, and MacOS Mojave:

I 100% agree.

DuIslingr commented 4 years ago

@devinprater what tool? I was able to build PPSSPP with XCode 11 with sdk 13 targeting iOS 13 on Catalina.

@unknownbrackets The hanging you described for closing ppsspp with task switch applies whether jit is used or not. I switched to the IR Interpreter and the issue is still present.

Tested on PPSSPP_0v1.9.2-23-g349e64fe3 iPad OS 13.1.2 Compiled with XCode 11 SDK 13 and deployed for iOS 13. Signed with Cydia Impactor and it runs. Jit works as well.

Heres a link to the build if anyone wants to try it. https://cdn.discordapp.com/attachments/210158337575223297/629532254170775552/PPSSPP_0v1.9.2-23-g349e64fe3.ipa

Make sure to close PPSSPP with the Exit button on the main menu instead of using task switcher otherwise PPSSPP will not work again until you reboot. I did target iOS 13 when building this so I am pretty sure it will only run on iOS 13.

unknownbrackets commented 4 years ago

I don't know anything about Altstore, it seems like it's not documented how to add apps to it yet. Seems like a good idea, although it won't be able to run jit.

The hack that makes it possible to use jit causes the hanging, whether or not you actually decide to use jit or not. It's not use of jit that causes the hanging.

-[Unknown]

DuIslingr commented 4 years ago

@unknownbrackets Actually I just tested the beta Altstore with my build of PPSSPP and Jit does indeed work. Altstore is basically like Cydia Impactor after all.

Halo-Michael commented 4 years ago

Whether the JIT itself works depends only on whether the system allows you to enable JIT, not how you compile (non-jailbreak mode). iOS11 and 13 seems allowed JIT work but 12 is not.

DuIslingr commented 4 years ago

The conversation earlier in this thread indicates the opposite and that SDK 12.1 at least injected code that prevented the use of Jit. Also remember that there is code in place to trick the device into thinking the app is being debugged which allows Jit to work at all on iOS. So the OS allowing it doesn't even make any sense.

devinprater commented 4 years ago

This tool is what I’m talking about: https://github.com/Halo-Michael/ppsspp-builder https://github.com/Halo-Michael/ppsspp-builder

I get these errors in the output file attached.

On Oct 6, 2019, at 1:12 AM, DuIslingr notifications@github.com wrote:

@devinprater https://github.com/devinprater what tool? I was able to build PPSSPP with XCode 11 with sdk 13 targeting iOS 13 on Catalina.

@unknownbrackets https://github.com/unknownbrackets The hanging you described for closing ppsspp with task switch applies whether jit is used or not. I switched to the IR Interpreter and the issue is still present.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/hrydgard/ppsspp/issues/11905?email_source=notifications&email_token=ADUMTTWLEFEAYG4C5QCO7ETQNF6V7A5CNFSM4G7BGTW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAOCLSA#issuecomment-538715592, or mute the thread https://github.com/notifications/unsubscribe-auth/ADUMTTSVPNHZ2UWFKN7VNU3QNF6V7ANCNFSM4G7BGTWQ.

Halo-Michael commented 4 years ago

This tool is what I’m talking about: https://github.com/Halo-Michael/ppsspp-builder https://github.com/Halo-Michael/ppsspp-builder I get these errors in the output file attached. On Oct 6, 2019, at 1:12 AM, DuIslingr @.***> wrote: @devinprater https://github.com/devinprater what tool? I was able to build PPSSPP with XCode 11 with sdk 13 targeting iOS 13 on Catalina. @unknownbrackets https://github.com/unknownbrackets The hanging you described for closing ppsspp with task switch applies whether jit is used or not. I switched to the IR Interpreter and the issue is still present. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#11905?email_source=notifications&email_token=ADUMTTWLEFEAYG4C5QCO7ETQNF6V7A5CNFSM4G7BGTW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAOCLSA#issuecomment-538715592>, or mute the thread https://github.com/notifications/unsubscribe-auth/ADUMTTSVPNHZ2UWFKN7VNU3QNF6V7ANCNFSM4G7BGTWQ.

I think it should work, and I can’t view your error.

devinprater commented 4 years ago

Sorry, I’ll paste it below:

sh quick-make-ipa.sh -- The C compiler identification is AppleClang 11.0.0.11000033 -- The CXX compiler identification is AppleClang 11.0.0.11000033 -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -- broken -- Configuring incomplete, errors occurred! See also "/Users/devinprater/ppsspp-builder/ppsspp/build-ios/CMakeFiles/CMakeOutput.log". See also "/Users/devinprater/ppsspp-builder/ppsspp/build-ios/CMakeFiles/CMakeError.log". Build settings from command line: CODE_SIGN_IDENTITY = CODE_SIGNING_REQUIRED = NO PRODUCT_BUNDLE_IDENTIFIER = org.ppsspp.ppsspp SDKROOT = iphoneos13.0

zip warning: name not matched: Payload/PPSSPP.app

zip error: Nothing to do! (try: zip -r9 ../../PPSSPP_0v1.9.2-17-g6a1676413.ipa . -i Payload/PPSSPP.app) Done, you should get the ipa now :)

Hope this helps.

On Oct 7, 2019, at 11:01 AM, Halo-Michael notifications@github.com wrote:

This tool is what I’m talking about: https://github.com/Halo-Michael/ppsspp-builder https://github.com/Halo-Michael/ppsspp-builder https://github.com/Halo-Michael/ppsspp-builder https://github.com/Halo-Michael/ppsspp-builder I get these errors in the output file attached. … <x-msg://18/#> On Oct 6, 2019, at 1:12 AM, DuIslingr @.***> wrote: @devinprater https://github.com/devinprater https://github.com/devinprater https://github.com/devinprater what tool? I was able to build PPSSPP with XCode 11 with sdk 13 targeting iOS 13 on Catalina. @unknownbrackets https://github.com/unknownbrackets https://github.com/unknownbrackets https://github.com/unknownbrackets The hanging you described for closing ppsspp with task switch applies whether jit is used or not. I switched to the IR Interpreter and the issue is still present. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#11905 https://github.com/hrydgard/ppsspp/issues/11905?email_source=notifications&email_token=ADUMTTWLEFEAYG4C5QCO7ETQNF6V7A5CNFSM4G7BGTW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAOCLSA#issuecomment-538715592>, or mute the thread https://github.com/notifications/unsubscribe-auth/ADUMTTSVPNHZ2UWFKN7VNU3QNF6V7ANCNFSM4G7BGTWQ https://github.com/notifications/unsubscribe-auth/ADUMTTSVPNHZ2UWFKN7VNU3QNF6V7ANCNFSM4G7BGTWQ.

I think it should work, and I can’t view your error.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/hrydgard/ppsspp/issues/11905?email_source=notifications&email_token=ADUMTTR7HSYGMZNTKQWIFALQNNMO5A5CNFSM4G7BGTW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAQ4NFA#issuecomment-539084436, or mute the thread https://github.com/notifications/unsubscribe-auth/ADUMTTVKXZNJHF7N3OJX3ODQNNMO5ANCNFSM4G7BGTWQ.

DuIslingr commented 4 years ago

@hrydgard @unknownbrackets @mariolopjr With my pull request (#12398 ) edit I am able to generate the project just fine with XCode 11 and SDK 13.1 and it builds fine. So the whole thing about having to download XCode 9.4.1 is unnecessary with this release. I modified the provided command to point to xcode 11.1 and sdk 13.1 and it generates without issue.

Images ![Generation](https://user-images.githubusercontent.com/19367043/66365147-0020f880-e95a-11e9-84cb-f203c52a3408.png) ![449A83A6-9B82-4B63-9596-9DEBDDA99E8E_1_105_c](https://user-images.githubusercontent.com/19367043/66364318-40cb4280-e957-11e9-8901-c06ecfe7236c.jpeg) ![6C8638DA-25C7-49EA-80AE-8980017B0185_1_105_c](https://user-images.githubusercontent.com/19367043/66364230-fc3fa700-e956-11e9-9f13-67b465b4d583.jpeg) ![9D646776-69D1-41E0-A29D-39AE427A1E3D_1_105_c](https://user-images.githubusercontent.com/19367043/66364233-fc3fa700-e956-11e9-9b79-f2dba64856d5.jpeg) ![85D754F9-13C3-493F-AD32-4E026DF2E402_1_105_c](https://user-images.githubusercontent.com/19367043/66364232-fc3fa700-e956-11e9-91ca-40f47880e062.jpeg)
Halo-Michael commented 4 years ago

After merge the pull request #12421 from sbingner, issue #12140 (https://github.com/hrydgard/ppsspp/issues/12140) can basically be confirmed as a complete fix. Even if you run PPSSPP on non jailbroken device, or if CS_DEBUGGED is not turned on, it will no longer freeze on exit. I have compiled ipa and deb for it and can use them for testing. https://github.com/Halo-Michael/halo-michael.github.io/raw/master/ipas/PPSSPP_0v1.9.3-80-g73bf6098e.ipa https://github.com/Halo-Michael/halo-michael.github.io/raw/master/repo/debs/org.ppsspp.ppsspp-dev-latest_0v1.9.3-80-g73bf6098e_iphoneos-arm.deb

Yahfz commented 4 years ago

@Halo-Michael hey, is there any way you can re-upload the .ipa file again? Those links are expired/broken. Thanks

Saramagrean commented 4 years ago

See download ipas. :) https://halo-michael.github.io/en_US/

devinprater commented 4 years ago

Thanks, are these the ones that still exit at start of game when signed through Altstore?

On Nov 17, 2019, at 8:55 AM, Benjamin Benda Gates notifications@github.com wrote:

See download ipas. :) https://halo-michael.github.io/en_US/ https://halo-michael.github.io/en_US/ — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/hrydgard/ppsspp/issues/11905?email_source=notifications&email_token=ADUMTTXLPCM57YOZVNY3443QUFLOPA5CNFSM4G7BGTW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEINZKI#issuecomment-554753193, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADUMTTQWXNZHTQCC3GYDZZLQUFLOPANCNFSM4G7BGTWQ.

unknownbrackets commented 4 years ago

Sounds like compiling is working, and we have #12575 for the Altstore path, which seems like the right way forward.

We still need a hero to take over maintaining the iOS port of PPSSPP and making sure Altstore is updated, etc. If anyone wants to volunteer, you're sure to make people happy.

I'm going to close this though as the original issue is resolved and builds are working - I know Cydia isn't being updated, but I think #12575 is the right issue for that.

-[Unknown]