Commit Graph
50503 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 cb0e01d647 Firmware screen: Always show the install-from-game-discs option
It came after the early return for an empty NAND, so it was hidden exactly
when it matters most, before any firmware is installed. It now sits under
the description, which is there in every state.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 16:21:02 +01:00
Henrik Rydgård 9f286ee4ca Merge pull request #22980 from hrydgard/ios-work
iOS: Metal only (drop MoltenVK), and full debug symbols in archives
2026-11-07 14:16:37 +01:00
Henrik RydgårdandClaude Opus 5.5 5cb78a99b7 iOS: Remove copysym.sh
The archive gets the dSYM by itself now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 13:56:09 +01:00
Henrik RydgårdandClaude Opus 5.5 488270d275 iOS: Don't strip the static libraries when archiving
Archiving stripped their debug info before the app linked them, so the
dSYM only covered the app target's own files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 13:43:21 +01:00
Henrik RydgårdandClaude Opus 5.5 5ad6770e30 iOS/tvOS: Remove Vulkan (MoltenVK), Metal only
The iOS and tvOS apps no longer link MoltenVK, and the ios/MoltenVK
submodule is gone. With that, the statically linked Vulkan path
(PPSSPP_VK_STATIC) has no users and is removed. VulkanMayBeAvailable()
returns false in the iOS app, so a config that says Vulkan falls back to
Metal, which is now the tvOS default too. macOS keeps Vulkan.

The graphics settings hide the backend selector when there's only one
backend to pick, using a new SettingItem::Visible() (hidden items are
also left out of search results).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 13:26:32 +01:00
Henrik RydgårdandClaude Opus 5.5 80adb8baf9 iOS: Archive Release with full debug info, and put its dSYM in the archive
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 13:20:12 +01:00
Henrik Rydgård 7799eab373 Merge pull request #22979 from hrydgard/motogp-small-memstick
Compat: Report a small memory stick to MotoGP
2026-11-07 12:56:33 +01:00
Henrik RydgårdandClaude Opus 5.5 53e3534bbd Compat: Report a small memory stick to MotoGP
At boot it checks for savedata space with SIZES and said there was none:
the default 16GB stick, with no save yet, comes to 2^34 bytes, which is
0 in 32 bits. Saving worked fine when told to go ahead anyway.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 12:34:06 +01:00
Henrik Rydgård 1a4de63184 Merge pull request #22978 from hrydgard/win-debugger-boot-race
Windows debugger: Fix crash in FillSymbolListBox when booting the XMB
2026-11-07 12:21:25 +01:00
Henrik Rydgård 286debc3ba Cap the number of thread again (at a very high count) 2026-11-07 12:05:12 +01:00
Henrik Rydgård af763fffdf Merge pull request #22977 from hrydgard/touch-scroll-click-fixes
UI: Touch scrolling click fixes, UMD switch screen in portrait
2026-11-07 11:40:47 +01:00
Henrik RydgårdandClaude Opus 5.5 c77523b81e Windows debugger: Don't read the symbol map while a game boots
The loader thread writes memory, kernel objects and the symbol map
without g_frameMutex, and fires SYMBOL_MAP_UPDATED for every module it
loads. Each one made the GUI thread refill the symbol lists while the
loader went on adding symbols, so booting the XMB (which loads a long
chain of modules there) with the disassembly window open crashed in
SymbolMap::FillSymbolListBox.

Readers holding g_frameMutex now also check the new PSP_IsBooting() and
skip while it's true. BOOT_DONE refills the lists once the boot is done.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 11:23:59 +01:00
Henrik RydgårdandClaude Opus 5.5 8ed244ee65 UI: Only list disc images on the UMD switch screen
Both its lists offered everything bootable, the XMB, homebrew and PS1
games included, though only what UmdMount takes can go in the drive.
The new UMDS_ONLY browse flag keeps PSP disc images and disc folders.
ISOs and CSOs are trusted by extension so big folders stay quick to
list; CHDs and PBPs are identified, since they can be PS1 games.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 11:03:43 +01:00
Henrik Rydgård 6fb7be4517 Move SWAENET up one step in the listing. 2026-11-07 11:03:43 +01:00
Henrik Rydgård b7d7cf43fe Update the SWAENET listing 2026-11-07 11:03:43 +01:00
Henrik Rydgård 990378df08 Tweak the slider popup dialogs. Update an URL. 2026-11-07 11:03:43 +01:00
Henrik RydgårdandClaude Opus 5.5 7a22fe43a5 UI: Base UmdReplaceScreen on the two-pane dialog screen
So it gets a usable portrait layout: a title bar with a back button, the
game list, and the Load button below it. Landscape keeps its old shape,
with Back replacing the Cancel button.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 11:03:43 +01:00
Henrik Rydgård a0fb1d53cf Remove "Settings" from UmdReplaceScreen. Fix some round corners in UI. 2026-11-07 11:03:43 +01:00
Henrik Rydgård f749782771 Fix struct alignment warning 2026-11-07 11:03:43 +01:00
Henrik RydgårdandClaude Opus 5.5 f3123564a2 UI: Stop scrolling gestures from turning into clicks
- A drag that only shows up in the UP event (a quick flick with few or no
  MOVE events in between) now cancels the press instead of clicking.
- A press that stops a moving list only stops it, as in Android's lists.
- Android's ACTION_CANCEL is passed on as UP | CANCEL rather than a plain UP,
  so a gesture the system takes over doesn't click wherever the finger was.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 11:03:43 +01:00
Henrik Rydgård bc599a1fe2 Merge pull request #22975 from Samueru-sama/master
bundle `PPSSPPHeadless` in the existing appimage
2026-11-07 10:22:28 +01:00
Henrik Rydgård d589620aa5 Merge pull request #22974 from hrydgard/kirk-ecc-speed
KIRK: Make the ECDSA math about 700 times faster
2026-11-07 10:21:01 +01:00
Samuel 6dc76c08fb move vars to the top of script 2026-11-07 04:39:29 -04:00
Henrik RydgårdandClaude Opus 5.5 6302178726 KIRK: Comment on command 0xC's private key
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 09:04:37 +01:00
Samueru-sama e1fb872122 bundle PPSSPPHeadless in the existing appimage 2026-11-07 04:04:16 -04:00
Henrik RydgårdandClaude Opus 5.5 1a0cc62aa8 KIRK: Make the ECDSA math about 700 times faster
Booting the XMB from a 6.60 firmware checks 40 command 1 signatures, at
55ms each in a Release build, since the bignum code worked a byte at a time
and did a full modular inversion for every point addition and doubling.

Now it works on 32-bit words (plain C, so the same on ARM), keeps points in
Jacobian coordinates with one inversion at the end, and computes u1*G + u2*Q
for verification in one pass. A verify takes 79us, and a 30 second XMB boot
in headless went from 2.96s to 0.79s.

Results are unchanged, including command 0xC's private key coming out
multiplied by 2^168 mod N, which the old Montgomery form did.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 09:03:08 +01:00
Henrik RydgårdandClaude Opus 5.5 413bb4da97 KIRK: Add ECDSA tests and a benchmark
Command 1's ECDSA check, behind every ECDSA-signed (type 6) module, takes
55ms in a Release build, and booting the XMB from a 6.60 firmware does it
40 times. The vectors are signatures from those modules.

kirk1_ecdsa_verify() factors the check out of kirk_CMD1 so the test can
call it without building a whole command 1 block.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 08:50:04 +01:00
Henrik Rydgård d4e3c7eb2b Merge pull request #22972 from Samueru-sama/patch-3
remove `llvm-libs-nano`
2026-11-07 07:18:49 +01:00
Samuel fa2f2eed50 remove llvm-libs-nano
not needed for a long time
2026-11-07 00:31:14 -04:00
Henrik Rydgård 0acbc18824 Merge pull request #22970 from hrydgard/missing-assets
Add missing fonts to CMakeLists.txt
2026-11-07 00:59:04 +01:00
Nemoumbra 1805e93d11 Add missing fonts to CMakeLists.txt 2026-11-07 02:25:35 +03:00
Henrik Rydgård c5563eda30 Merge pull request #22969 from hrydgard/more-ui-work
Confirm clearing the Recent list, settings prompts as popups
2026-11-07 00:03:17 +01:00
Henrik Rydgård 1b3ab1619f More spacing issues 2026-11-06 23:25:17 +01:00
Henrik Rydgård 08931322b4 Add string for previous commit 2026-11-06 23:20:37 +01:00
Henrik RydgårdandClaude Opus 5.5 a0007d19e9 Settings: Ask about restoring a page's defaults in a popup, not a full screen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 23:07:48 +01:00
Henrik RydgårdandClaude Opus 5.5 361ea4c824 Games list settings: Ask before clearing the Recent list
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 23:07:13 +01:00
Henrik Rydgård b83d2ffe8f Fix spacing issues 2026-11-06 22:58:31 +01:00
Henrik Rydgård 7c3807b425 Merge pull request #22966 from hrydgard/vsh-host-battery
scePower: Report the host's battery level to the XMB
2026-11-06 22:47:08 +01:00
Henrik Rydgård 2dffa9efc2 Merge pull request #22968 from hrydgard/more-ui-work
Game browser: Just grid and list, with an icon size each
2026-11-06 22:44:04 +01:00
Henrik Rydgård cbaec7fac2 Merge pull request #22967 from hrydgard/android-java-review
Android: Java review fixes, dependency updates, leak instrumentation
2026-11-06 22:43:43 +01:00
Henrik RydgårdandClaude Opus 5.5 b35bfcc869 Android: Only count a "name (N)" result as a name conflict
The provider answers a taken name with a renamed copy, "name (1)" or
"name (1).ext", but it also replaces characters FAT doesn't allow with '_',
which isn't a conflict. Create, copy and rename now only report
ALREADY_EXISTS (and undo) for the numbered form of the sanitised name.

Also take the image picker's result from ClipData when there's no data URI,
like the document picker does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 21:37:24 +01:00
Henrik Rydgård 52c6a8237c Separate "Move data" from OK on MemStickScreen 2026-11-06 21:30:54 +01:00
Henrik RydgårdandClaude Opus 5.5 4abd722b54 Android: Cache one provider client per authority, add an Android todo doc
A query on a second authority closed the cached client while another
thread could still be using it. Now each authority keeps its own client,
dropped only when its provider dies.

docs/android-todo.md lists the review findings left for later (image picker
decoding on the main thread, the VR exit in onDestroy, the achievements
host override receiver), and android-device-testing.md describes the
LeakCanary/StrictMode setup.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 21:29:40 +01:00
Henrik RydgårdandClaude Opus 5.5 334115da49 GameBrowser: Resize the grid cells when the icon size changes under the popup
The screen under a popup is only laid out, not recreated, so the grid kept the
cell size it was created with.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 21:23:18 +01:00
Henrik RydgårdandClaude Opus 5.5 9c7125b55c FirmwareScreen: Show the description while loading
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 21:17:38 +01:00
Henrik RydgårdandClaude Opus 5.5 63ff8c8382 GameBrowser: Drop the small list, the large list is now just the list
The grid and the list each get their own icon size (GameGridScale and the new
GameListScale), changed by the zoom shortcuts and the settings popup for the
view mode of the browser it's opened from. A saved view of 2 (the old large
list) reads as the list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 21:17:38 +01:00
Henrik RydgårdandClaude Opus 5.5 156b9b3ee6 Android: Fixes from a review of the Java code, debug leak instrumentation
- A recreate (font scale, resolution change) re-sent the launch intent's
  game to native, which booted it over whatever was running.
- Exceptions in posted commands (bad parameters, setPrimaryClip) no longer
  crash the app; the request is answered as failed.
- Close tombstone streams and the free-space fd on error paths.
- Keep the CameraHelper across graphics restarts (it leaked a SurfaceTexture).
- Don't treat an unreadable document name as a name conflict, which deleted
  the file just created.
- Tree picker: convert to a document URI even if the persistable grant fails.
- ShortcutActivity: don't open a second picker on recreate, and finish when
  the old file chooser is backed out of.
- Skip null names/MIME types in listings, null device in the Joy-Con check.

Debug builds now set a StrictMode VM policy (leaked closables, registrations,
activities), and -PleakCanary adds LeakCanary to debug builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 21:13:52 +01:00
Henrik RydgårdandClaude Opus 5.5 98c127bbb3 Android: Update Gradle to 9.9.0, AGP to 9.5.1, protobuf to 4.36.2
protoc was still on 3.25.3 while the runtime was on 4.x; both are now 4.36.2.
appcompat stays at 1.7.1, since 1.8.0 needs minSdk 23.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 20:57:56 +01:00
Henrik RydgårdandClaude Opus 5.5 8a78c7ba96 scePower: Report the host's battery level to the XMB
The XMB polls scePowerGetBatteryLifePercent about once a second and draws
it in its status bar. When running the VSH, return the host's battery
level there and in the power callback's percentage bits. Games still see
a full battery, so a run doesn't depend on the host's charge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 19:49:51 +01:00
Henrik Rydgård 3809223111 Merge pull request #22965 from hrydgard/more-ui-tweaks
More UI tweaks: Two-pane memory stick move screen, PPGe font
2026-11-06 19:13:38 +01:00