Commit Graph
50524 Commits
Author SHA1 Message Date
Henrik Rydgård fc11ace620 Merge pull request #22990 from hrydgard/translation-fixes
Translations: Fix mistakes and unify terminology across languages
2026-11-08 12:10:41 +01:00
Henrik Rydgård 601b545e37 Merge pull request #22989 from hrydgard/startmodule-no-entry-status
Modules: Write 0 to the status when starting a module with no entry
2026-11-08 12:07:56 +01:00
Henrik Rydgård 08af3d1351 Merge pull request #22987 from hrydgard/firmware-screen-and-remaster-fonts
Firmware screen fix, MH3rd HD remaster fonts, touch layout reset confirmation
2026-11-08 11:48:47 +01:00
Henrik RydgårdandClaude Opus 5.5 57b870cf43 Modules: Write 0 to the status when starting a module with no entry
sceKernelStartModule left the status word untouched for a module without
module_start, so the caller read whatever was on its stack. The PSP writes 0
there (modules/nostart).

R-Type Tactics loads the libfont.prx on its disc after its LoadExec and gives
up on its fonts when that status is negative (0xDEADBEEF from the stack fill),
then crashes writing through a pointer it never set. This only showed once
the disc's libfont became the default over our HLE sceFont.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 11:41:08 +01:00
Henrik RydgårdandClaude Opus 5.5 9dced61def Translations: Use one word for each term within a language
Recurring terms (save state, savedata, cheats, relay, rendering,
upscaling, Memory Stick, default, analog stick and so on) were
translated several ways within one file. Each file now uses the form it
already used most, or the standard term where a minority form was the
correct one. Save states and the game's own savedata are kept apart,
most visibly in zh_TW, which used one word for both. zh_TW also gets
Taiwan terms where it had mainland ones, and the same English string in
two sections now reads the same.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 10:45:30 +01:00
Henrik RydgårdandClaude Opus 5.5 659f84169f Translations: Put back resets that weren't clearly wrong
The previous two commits reset some values to English that were usable:
ku_SO's sensible Kurmanji strings (wrong dialect and script for the
file, but readable), Indonesian text in jv_ID, and values where only a
word or a stale suffix was off. Those are back, with the broken part
fixed where there was one. Values that were gibberish or said something
else stay in English.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 10:33:14 +01:00
Henrik RydgårdandClaude Opus 5.5 476707cd6d Translations: Fix mistranslations and typos
Values that said something other than the English: opposite meanings
(Move Up/Down swapped, Disabled as "Enable", a lossless codec as lossy,
"(slower)" as "low latency"), the wrong sense of a word ("Recent" as
current, backend as background, Resume as summarize, Cancel as Ignore),
messages naming the wrong setting or fallback backend, swapped and
duplicated strings, and text in the wrong language (Brazilian forms in
pt_PT, Latvian in lt-LT, Hungarian in hr_HR, Tajik in tg_PH). Also a
batch of spelling mistakes.

Gibberish values that couldn't be translated with confidence, most of
them in ku_SO, lo_LA, km_KH and jv_ID, are back to the English string.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 10:14:14 +01:00
Henrik RydgårdandClaude Opus 5.5 131521f79e Translations: Update strings whose English changed after translation
- InsufficientOpenGLDriver: now a Yes/No question about switching to
  DirectX, but many languages still had the old "update your drivers"
  text, which asks nothing.
- BufferedRenderingRequired still pointed at the removed rendering mode
  setting, and "Skip buffer effects" kept the old "(non-buffered,
  faster)" suffix.
- "Save frame dump" was still "Dump next frame to log", and Software
  rendering was still "(experimental)".
- "Completed %1" (softcore) had the same text as "Mastered %1"
  (hardcore) in many languages.
- The generic restart prompt named one particular setting in three
  languages.

Languages I can't translate confidently go back to the English string.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 10:03:33 +01:00
Henrik RydgårdandClaude Opus 5.5 b981160b50 he_IL: Store the last reversed strings in logical order
The PSP dialog buttons and messages, the credits and the confirm button
setting were still stored reversed, or with their words reordered, for
text drawing without bidi support. All text drawers handle bidi now, so
they showed backwards. The two-line "Please wait" messages also get back
their line break.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 09:59:33 +01:00
Henrik RydgårdandClaude Opus 5.5 192454a979 Translations: Fix broken lines, escapes and stray accelerators
Outside [DesktopUI] an & is shown as is, so accelerators copied into
labels like "Pause when not focused" appeared on screen. Also fixes
mangled \n escapes, menu accelerators placed on a space or doubled,
lines without an = (never loaded) and a doubled "Warning:" prefix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 09:57:36 +01:00
Henrik RydgårdandClaude Opus 5.5 0c48c35e5b Translate the touch control layout reset confirmation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 09:54:58 +01:00
Henrik Rydgård 8664e74bdb Merge pull request #22984 from hrydgard/replacement-cleanup
Replacement cleanup
2026-11-08 09:45:18 +01:00
Henrik Rydgård bfd58279e2 Merge pull request #22983 from hrydgard/umd-swap-and-audio-stream
UMD swap: Own the loader ResolveFileLoaderTarget returns
2026-11-08 09:16:29 +01:00
Henrik RydgårdandClaude Opus 5.5 c3db109525 Touch control layout: Confirm before resetting
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 09:08:48 +01:00
Nemoumbra a87904a842 Rename one more location 2026-11-07 19:29:17 +03:00
Nemoumbra ba4c9ada3d Better func replacement comments 2026-11-07 18:59:54 +03:00
Nemoumbra e63d608cb0 More replacement-related renames 2026-11-07 18:37:03 +03:00
Henrik RydgårdandClaude Opus 5.5 c7c5fc0ac6 sceFont: Use the HLE and our own fonts for the Monster Hunter 3rd HD remaster
- Fixes #22982

This remaster only ever ran in the PS3's emulator, and its unofficial
Simplified Chinese translation renders no Chinese text with the
firmware's sceFont and fonts, which we now use whenever a firmware is
installed. Its entry in the HD remaster table now says so: sceFont stays
HLE'd whatever the settings and compat flags say, and the HLE sceFont
loads our fonts rather than the NAND's (and doesn't install any from the
disc's updater).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 16:21:04 +01:00
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
Nemoumbra 7ab6f32052 Rename REPFLAG_HOOKENTER to REPFLAG_HOOK 2026-11-07 18:01:45 +03:00
Henrik RydgårdandClaude Opus 5.5 6cee44702e UMD swap: Delete the old disc's loader only once the new one is mounted
UmdMount deleted the old loader as soon as the new file was resolved, but
the old disc's file systems stayed mounted until MountGameISO replaced
them. A swap that then failed (an unsupported file, or an ISO
ConstructBlockDevice rejects) left the game reading its old disc through
a deleted loader, and even a successful swap could free it under a read
still going on the IO thread. Now the new disc is mounted first, which
takes pspFileSystem's lock that reads hold, and a failed swap deletes the
new loader and leaves the old disc alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 15:59:42 +01:00
Henrik RydgårdandClaude Opus 5.5 17659b03c2 UMD swap: Own the loader ResolveFileLoaderTarget returns
UmdMount gave g_loadedFile the new loader before ResolveFileLoaderTarget,
which deletes it and returns another for a PBP directory or a PS1 disc
image, and wraps it in a ZipFileLoader that owns it for a zip. After that,
the next swap deleted the dangling loader again (a Play crash report shows
it in UpdateLoadedFile), and for a zip the wrapper that was mounted had no
owner. Reproduced in headless with game.umd.insert: inserting a directory
with an EBOOT.PBP, then a disc image.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 15:33:42 +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