Commit Graph
15 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 81efd601f0 iOS: Merge the Metal view controller into the base one
With the GL view controller gone, PPSSPPViewControllerMetal was the only
subclass of PPSSPPBaseViewController. They're now one class,
PPSSPPViewController, in ios/ViewController.mm.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 16:13:29 +02:00
Henrik RydgårdandClaude Opus 5.5 5704b972e7 iOS: Remove OpenGL support from the app
The app now always uses the Metal view controller with Vulkan (MoltenVK),
for both the App Store and sideload builds. The GL view controller is gone,
and Common/GPU/OpenGL (except GLFeatures, used by the shader generators) and
GPU/GLES are no longer compiled for it. PPSSPP_API_ANY_GL is now off for
all of iOS except the libretro core, which still uses GLES.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 16:13:28 +02:00
Henrik Rydgård dcb1df6930 Merge pull request #22493 from hrydgard/ios-share-file
iOS: Add support for the internal "Share file" API just like Android
2026-10-10 19:55:48 +02:00
Henrik RydgårdandClaude Opus 5.5 d80c0b9472 iOS: Support System_ShareFile
Offers the file through the share sheet, which works out the type from
the extension. Also gives NativeInit a cache directory, Library/Caches,
which ShareFilesAsZip needs for its zips. That moves the SPIR-V and
download caches there from Documents/PSP/SYSTEM/CACHE, out of backups
and the Files app, which is where Apple wants caches anyway.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 18:57:18 +02:00
Henrik RydgårdandClaude Opus 5.5 9dacdf8297 iOS: Add microphone support
sceUsbMic input comes from the input side of the RemoteIO unit that
already does the output. The input callback only copies samples into a
lock-free ring buffer, sized so it never allocates, and the CPU thread
drains it into Microphone::addAudioData when sceUsbMic polls, the way
the SDL backend works. Reconfiguring the unit happens on the main thread.

Whether the game is recording is kept apart from whether the unit's
input is on, so recording resumes after an interruption or a trip to
the background, which shut the unit down. The unit also runs, silently,
when sound is off but the game is recording.

While recording, the session is PlayAndRecord, with Bluetooth through
A2DP so headphones keep full quality and the built-in mic is the input.
Permission is asked for on iOS 17+ through AVAudioApplication.

Also moves the microphone recorder homebrew used to test this from
Tools/psp-microphone to pspautotests, as demos/microphone, and updates
the submodule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 17:55:21 +02:00
Henrik RydgårdandClaude Opus 5.5 9e2cadb685 iOS: Remove leftovers
An unused IAPManager startObserving (which would have registered the
observer twice), the obsolete UILaunchImageFile, debug logging of the
SceneDelegate class loading, and a commented-out JIT version check.
Also bring the file overview at the top of main.mm up to date.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 16:28:27 +02:00
Henrik RydgårdandClaude Opus 5.5 a4ca6af0dc iOS: Pass restart arguments on, and restart into GL when Vulkan fails
RESTART_APP's arguments, like --start-screen=touchscreentest, were only
logged. Worse, the block that got them captured param1 by reference, and
ran after the request's string was gone. Copy them, and parse them along
with the startup path when relaunching.

When Vulkan failed to initialize, the config switched to OpenGL, but
the Metal view controller stayed, so nothing rendered until the user
restarted the app by hand. Restart it automatically, unless OpenGL is
disabled, where config loading would pick Vulkan again and loop.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 16:28:27 +02:00
Henrik Rydgård 717ffc9fae Buildfixes 2026-07-20 12:02:07 +02:00
Henrik Rydgård a59637975a Call the new command line parser from all backends 2026-07-20 12:02:07 +02:00
polyxneg 0f4671127f feat: Added library export functionaltiy via urlscheme 2026-07-05 10:13:42 +02:00
Henrik Rydgård b4698eabfe Support launching directly with the deep link, instead of just launching while already running. 2026-04-28 23:06:23 +02:00
Henrik Rydgård e0a5a3e2bf iOS: Add basic deep link support.
Fixes #21577
2026-04-28 22:17:24 +02:00
Henrik Rydgård 1c49ad7b29 Support screen rotation on iOS (unrestricted) 2025-10-22 15:13:21 +02:00
Henrik Rydgård 3cc57b7a2b iOS: Fix restarts after the scene change (for backend change etc) 2025-10-17 21:07:53 +02:00
Henrik Rydgård 2f06100b43 iOS: Initial attempt at switching to SceneDelegate (UIScene)
Fixes #20884
2025-10-17 15:58:23 +02:00