2260 Commits
Author SHA1 Message Date
Henrik Rydgård ca993465ce Small tweak to avoid annoying line on LBP loading screen 2026-11-12 16:29:40 +01:00
Henrik RydgårdandClaude Opus 5.5 4e8db90ece Translations: PSP system clock speed, its hint and boot warning
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 12:33:48 +01:00
Henrik Rydgård 2a36fcdea9 Merge pull request #23044 from hrydgard/report-game-crashes
Report game crashes to the report server
2026-11-11 21:09:41 +01:00
Henrik RydgårdandClaude Opus 5.5 ad48b5389b Translate the crash report strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:11:17 +01:00
Henrik RydgårdandClaude Opus 5.5 e433aba891 Translate the savedata Import string
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 14:22:33 +01:00
Henrik RydgårdandClaude Opus 5.5 78c7ce36b1 Translate "Share"
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 12:45:04 +01:00
Henrik RydgårdandClaude Opus 5.5 f2c049d178 Translate the savedata export strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 12:14:46 +01:00
Henrik RydgårdandClaude Opus 5.5 e361ba7ae1 Translate the custom Vulkan driver failure notice
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-10 15:09:16 +01:00
Henrik Rydgård 14eebd9b09 Add Gitaroo Man Lives! to compat.ini for CenterLines, fixing title screen bug 2026-11-10 14:18:48 +01:00
Henrik RydgårdandClaude Opus 5.5 daeb18ecc8 Settings: Move PSP firmware to the System tab, as "PSP firmware (XMB)"
Gives it an XMB icon, and points the PS1 firmware errors at its new place.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-10 13:29:38 +01:00
Henrik Rydgård 7cb6276a00 Log fix, add some more sprite sampling compat entries 2026-11-10 13:06:28 +01:00
Henrik RydgårdandClaude Opus 5.5 1f1915bc43 Translate the Low-latency CPU timing label and hint
Each hint quotes the old label as that language showed it. Khmer and Lao
get the English text for now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-10 12:19:56 +01:00
Henrik RydgårdandClaude Opus 5.5 8f6b43ce8e Fix the port offset hint: unmodified PSPs can't connect anyway
Offset 0 only helps with a real PSP running the old Pro Online plugin. Also
say that all players must use the same offset.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 18:56:58 +01:00
Henrik RydgårdandClaude Opus 5.5 d50bb4d0dd Translate the 30 fps limit setting
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 13:35:50 +01:00
Henrik RydgårdandClaude Opus 5.5 8fbc3adfed Add a "Limit framerate to 30 fps" setting, and a compat flag for it
Many games drop to 30fps when they miss a vblank, and on the PSP some of them
nearly always do. In PPSSPP the GE is fast enough that they spend much of their
time at 60 instead, and some things misbehave (Midnight Club).

With the limit on, the GE takes until just after the vblank two on from the one
the previous frame was done in, so the frame goes up every other vblank whether
the game flips as soon as it's done, waits for a vblank first, or latches the
flip. A new frame starts at the first list after a flip, or at a list that
starts after a vblank, for games that enqueue their lists from the vblank
interrupt and never flip (Midnight Club: LA Remix).

Auto applies it to games with the LimitFrameRateTo30 compat flag, the two
Midnight Club games for now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 13:25:30 +01:00
Narugakuruga 6987656f46 Update Chinese translations in zh_CN.ini
Trying to understand control/graphics setting and RA integration by checking the code, RA documents and MIMO v2.6 documents.
2026-11-09 12:43:18 +08:00
Henrik Rydgård c04b85d035 Merge pull request #22991 from hrydgard/rtl-text
Lay out right-to-left text consistently across text drawers, fix fa_IR/ar_AE strings
2026-11-08 14:33:53 +01:00
Henrik RydgårdandClaude Opus 5.5 061549ca12 Translations: Undo mistranslation fixes that were only rewordings
Many of the "mistranslation" fixes replaced a translator's looser but
sensible wording with a more literal one, like zh_CN "Unofficial"
(the heading over unpromoted achievements), which was "custom
achievements". In the files where human translations are the
majority, those go back. Fixes of real errors stay: opposite or wrong
meanings, a different setting or button named, typos, garbled text
and text in another language. So do the resets of gibberish to
English.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 14:20:15 +01:00
Henrik RydgårdandClaude Opus 5.5 f7e87351e2 Translations: Undo the terminology pass in mostly human translations
The "one word for each term" pass replaced translators' own wording
with a uniform term, which made the text less natural. In the files
where human translations outnumber AI ones, the values go back to what
they were, except where the old wording was actually wrong: mostly a
save state called a game save (most of them in zh_TW), plus a few that
named the wrong thing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 14:10:32 +01:00
Henrik RydgårdandClaude Opus 5.5 036c609c40 fa_IR, ar_AE: Store strings in logical order, without the LRM marks
Most values started with a left-to-right mark, which forced a left-to-
right layout, and many had their Latin words and punctuation moved by
hand to look right that way. Now that RTL text is laid out right to
left everywhere, those strings came out scrambled.

The hand-ordered ones are converted to logical order, checked to look
exactly as before. Lines that were already in logical order with a
stray mark in front just lose the mark, which also fixes how they
looked until now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 12:11:15 +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å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 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 08931322b4 Add string for previous commit 2026-11-06 23:20:37 +01:00
Henrik RydgårdandClaude Opus 5.5 a61893dcc1 Translations: Memory stick folder checks, move progress and failures
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 16:16:29 +01:00
Henrik RydgårdandClaude Opus 5.5 5a569135dd Lang files: Don't use translations as printf formats
Translated strings that were printf formats now use %1, %2, %3 and go
through ApplySafeSubstitutions, which fills them in without interpreting
anything else. Lang files can come from downloads, and a value like
"%s%s%s%n" would otherwise crash or write memory. The lang file keys and
values are converted to match, and "%0.2f Hz" is merged into "%1 Hz".

Slider format strings still go through snprintf, so their check now
requires exactly one conversion of the expected type, which keeps out
%n and friends.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 21:12:21 +01:00
Henrik Rydgård f2b7732780 Another hint, misc 2026-11-05 13:55:18 +01:00
Henrik Rydgård 307e43b8de Firmware and savedata screen tweaks 2026-11-05 13:34:48 +01:00
Henrik RydgårdandClaude Opus 5.5 d5bded2dbd Translations: Add the why-disabled setting messages
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 12:25:02 +01:00
Henrik RydgårdandClaude Opus 5.5 48aa69c748 Compat: Clip and cull DBZ Tenkaichi Tag Team after clipping
With clip and cull distances, the GPU drops ground textures on modded maps (#18561): 25551 pixels off the PSP
render on a Pixel 3a, against 1987 with the flag.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 23:06:22 +01:00
Henrik Rydgård 9366aa7dc2 Merge pull request #22933 from hrydgard/more-ui-work
Fix a bunch of UI bugs
2026-11-04 19:12:03 +01:00
Henrik Rydgård 7b2860ec42 Add icon for VR settings 2026-11-04 11:41:53 +01:00
Henrik Rydgård 4ea2f6506f Merge pull request #22916 from hrydgard/depth-raster-skip-list-end-wait
Depth raster: Wait for it before GE callbacks instead of at every list end
2026-11-04 00:07:02 +01:00
Henrik RydgårdandClaude Opus 5.5 e1deb5665c Depth raster: Wait for it before GE callbacks instead of at every list end
Since a37e1f3660, the CPU waits for the depth rasterizer every time a display list ends, because Syphon
Filter reads its depth buffer for the light flares right after. It reads it in the list's GE interrupt
callback though, and so do Wipeout Pure and Resistance: Retribution. On hardware the drawing is done
when that runs, so that's where to wait now, letting the worker overlap with the CPU until then.
sceGeDrawSync and sceGeListSync wait as before.

With interpreter loads from the depth buffer counted and the worker slowed down by 10-50 ms a batch,
no read in Syphon Filter: Logan's Shadow, Wipeout, Resistance or Midnight Club: L.A. Remix landed while
it was busy. Without any wait, nearly all of Syphon Filter's, Wipeout's and Resistance's did.

L.A. Rush reads its depth buffer only after sceGeDrawSync, and the new compat flag
DepthRasterNoCallbackWait skips the callback wait for it.

10 emulated seconds on a Moto G54 (two Cortex-A78, six A55):

  Wipeout Pure     7.24 s -> 6.50 s
  Resistance      17.98 s -> 13.26 s
  Midnight Club    8.75 s -> 8.01 s
  L.A. Rush        5.95 s -> 4.76 s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 23:32:11 +01:00
Henrik RydgårdandClaude Opus 5.5 6e292608d4 Translate the firmware model warning
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 19:50:30 +01:00
Henrik RydgårdandClaude Opus 5.5 509d9a9f87 Use one string for both firmware model warnings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:42:35 +01:00
Henrik RydgårdandClaude Opus 5.5 3a9ecbd04b Warn when the installed firmware is for a different PSP model
A firmware only has the files of the model it was installed for, and its XMB looks for the files of
the model we report, so a mismatch brings back #22909's blank theme colors and 6.61's red error
screen. Which models an install is for shows in the names of its ipl/ files (nandipl_01g.bin,
nandipl_psp2000.ipl); an install for every model has all of them, and firmwares older than the
PSP-2000 have one ipl for every model.

Changing the PSP model to one the installed firmware doesn't fit now asks first, with a way to
cancel, and booting the XMB with a mismatch shows a warning.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:37:26 +01:00
Henrik RydgårdandClaude Opus 5.5 ff1a7840a3 Translations: DowngradeFirmware and UpgradeFirmware
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 16:10:10 +01:00
Henrik RydgårdandClaude Opus 5.5 928100c370 Firmware install: Say that an upgrade keeps the XMB's settings
An upgrade gets its own notice, informational rather than a warning, since the new shell migrates
the registry and nothing is lost. ReplaceFirmware stays for when a version can't be told.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 16:07:39 +01:00
Henrik RydgårdandClaude Opus 5.5 0f08ad103c Firmware install: Let the new shell upgrade the registry, reset it on a downgrade
Installing a firmware set category_version to the new firmware's schema, so no shell ever migrated
the settings PPSSPP keeps in its config. A shell upgrades the registry itself at its first boot: it
writes the default of every key added since the stored version and stores its own (seen booting
2.82, 3.71, 4.05, 5.50 and 6.61 from 1, and 3.71 and 6.61 from the previous firmware's version).
So an upgrade now leaves the version alone. A PSP can't be downgraded, and an older shell takes a
newer version for a corrupt registry, so a downgrade sets it back to 1; that shell's first boot then
rewrites everything added since 1.50, the theme, colour and wallpaper settings among them. Values a
newer shell left there across a downgrade and back broke the theme settings and then 6.61's boot.

The install screen says a downgrade resets the XMB's settings. Headless no longer sets the version
per boot either, so each boot migrates like a fresh config does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 15:58:29 +01:00
Henrik Rydgård 56fc0afb88 Add font: Roboto SemiCondensed. Not using it yet, though. 2026-11-03 12:56:00 +01:00
Rularia cc99fb01a1 Koori: rsingle source-buffer readback 2026-11-02 00:14:34 +08:00
Henrik RydgårdandClaude Opus 5.5 1ec41f052f Translate the custom driver manager strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 16:50:28 +01:00