Commit Graph
49849 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 413a47f0d3 Lang: Fill in untranslated Indonesian strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:27:02 +01:00
Henrik RydgårdandClaude Opus 5.5 aa61d80746 Lang: Fill in untranslated French strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:27:01 +01:00
Henrik RydgårdandClaude Opus 5.5 fd180d5b97 Lang: Fill in untranslated Latin American Spanish strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:27:00 +01:00
Henrik RydgårdandClaude Opus 5.5 8ae00e7585 Lang: Fill in untranslated Hungarian strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:58 +01:00
Henrik RydgårdandClaude Opus 5.5 85f5c2f6e0 Lang: Fill in untranslated Arabic strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:57 +01:00
Henrik RydgårdandClaude Opus 5.5 46735bf2d5 Lang: Fill in untranslated Finnish strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:55 +01:00
Henrik RydgårdandClaude Opus 5.5 4292aa1c29 Lang: Fill in untranslated Tagalog strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:54 +01:00
Henrik RydgårdandClaude Opus 5.5 4e26e1e43b Lang: Fill in untranslated Greek strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:53 +01:00
Henrik RydgårdandClaude Opus 5.5 53c8dd733f Lang: Fill in untranslated Croatian strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:51 +01:00
Henrik RydgårdandClaude Opus 5.5 51b67659cb Lang: Fill in untranslated Persian strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:50 +01:00
Henrik RydgårdandClaude Opus 5.5 dedbf14ef1 Lang: Fill in untranslated Belarusian strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:49 +01:00
Henrik RydgårdandClaude Opus 5.5 afbb4469e9 Lang: Fill in untranslated Vietnamese strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:47 +01:00
Henrik RydgårdandClaude Opus 5.5 ed643e02db Lang: Fill in untranslated Dutch strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:46 +01:00
Henrik RydgårdandClaude Opus 5.5 303901f012 Lang: Fill in untranslated Bulgarian strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:44 +01:00
Henrik RydgårdandClaude Opus 5.5 9199c95d55 Lang: Fill in untranslated Catalan strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:43 +01:00
Henrik RydgårdandClaude Opus 5.5 9a388b7955 Lang: Fill in untranslated Czech strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:41 +01:00
Henrik RydgårdandClaude Opus 5.5 755237b223 Lang: Fill in untranslated Danish strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:40 +01:00
Henrik RydgårdandClaude Opus 5.5 b4f60e5ba5 Lang: Fill in untranslated Galician strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:38 +01:00
Henrik RydgårdandClaude Opus 5.5 ee4f09d22f Lang: Fill in untranslated Romanian strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:37 +01:00
Henrik RydgårdandClaude Opus 5.5 7d32791a0c Lang: Fill in untranslated Lithuanian strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:36 +01:00
Henrik RydgårdandClaude Opus 5.5 3f68aaaf78 Lang: Fill in untranslated Hebrew strings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:26:34 +01:00
Henrik RydgårdandClaude Opus 5.5 1a0b0862a6 langtool: Add import-language, to merge a file of translations into a language
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:11:10 +01:00
Henrik RydgårdandClaude Opus 5.5 793703b550 Lang: Add missing keys as English placeholders (copy-missing-lines)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:09:57 +01:00
Henrik Rydgård 43a69b1c84 Merge pull request #22802 from hrydgard/more-ui-work
More UI design work and tweaks
2026-10-26 23:49:09 +01:00
Henrik Rydgård 4d26021a9b More round stuff 2026-10-26 23:08:25 +01:00
Henrik Rydgård e93c71b337 More UI cleanup 2026-10-26 23:01:21 +01:00
Henrik RydgårdandClaude Opus 5.5 849c5c10e4 SystemInfoScreen: Use ChoiceGroups instead of collapsible sections
The name lists (extensions, flags) become InfoItems, which have the
background a ChoiceGroup needs.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 23:01:21 +01:00
Henrik Rydgård 5c2a17f120 Give InfoItem backgrounds 2026-10-26 23:01:21 +01:00
Henrik Rydgård acc9fe9283 Somewhat better organization of UI settings 2026-10-26 23:01:21 +01:00
Henrik Rydgård 734d56a1d3 Tweaks to RetroAchievements screen 2026-10-26 23:01:21 +01:00
Henrik Rydgård 7e2b68cc19 Minor code cleanups 2026-10-26 23:01:21 +01:00
Henrik Rydgård 9ac9b2c23d Add a left-pointing chevron, more ChoiceGroup 2026-10-26 23:01:21 +01:00
Henrik RydgårdandClaude Opus 5.5 49115bed93 Settings: Make the navigation bar fit square buttons, use chevrons between path parts
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 23:01:21 +01:00
Henrik RydgårdandClaude Opus 5.5 8e72082d3e Settings: Show a chevron on choices that open another screen
Links to other pages already had one. SettingItem::OpensScreen() gives the same to
choices (and custom items that are choices) that open a full screen, like control
mapping or the savedata manager. Ones that open popups don't get it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 23:01:21 +01:00
Henrik Rydgård 7b96bbfbc2 Merge pull request #22801 from hrydgard/fix-kernel-logic
Kernel: Fix savestate MipsCall actions, sysclib strchr, TLS leak, FPL counter, module id list
2026-10-26 22:31:36 +01:00
Henrik RydgårdandClaude Opus 5.5 e9fa393546 Kernel: Match GetModuleIdList and heap allocation to hardware
pspautotests modules/idlist shows that sceKernelGetModuleIdList still
writes a partial entry at the end of the buffer (a size of 6 gives two
entries), which the previous commit had stopped. A NULL buffer or a
negative size returns ILLEGAL_ADDR without writing the count.

sysmem/kernel/heap shows sceKernelAllocHeapMemory returning null for
sizes near 4GB, rather than wrapping. The WithOption variant already
checked this. The plain one now does too.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 22:05:55 +01:00
Henrik RydgårdandClaude Opus 5.5 22b6fcbf22 Kernel: Fix sysclib strchr/strrchr, TLS pool leak, FPL counter
- sysclib strchr/strrchr searched for the whole string, not the
  character, so they returned 0 for any nonzero c.
- A thread ending with blocks from more than one TLS pool leaked every
  other block, since the restarted loop's ++iter skipped an entry.
- FPL's nextBlock grew by up to numBlocks per allocation and eventually
  overflowed into a negative block index. Old states with a negative one
  now reset it rather than failing to load.
- sysclib strncpy bounded its copy by the source's valid size only, not
  the destination's.
- sceKernelAllocHeapMemory wrapped for sizes near 4GB, and
  sceKernelGetModuleIdList could write a partial entry past the buffer
  size and dereferenced a missing module.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 21:42:06 +01:00
Henrik RydgårdandClaude Opus 5.5 210be3b311 Savestate: Keep MipsCall actions of type 0
Action type IDs start at 0, and the first one registered is
ActionAfterMipsCall, but MipsCall::DoState used 0 to mean no action.
So every call made with __KernelCallAddress lost its action chain on
load: the thread's wait state was never restored when the call
returned, and chained actions never ran.

Version 2 of the section marks a missing action with -1.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 20:13:59 +01:00
Henrik Rydgård e77f0e46b8 Merge pull request #22799 from hrydgard/gamepacker-jni-attach
GamePacker: Attach the worker thread to JNI
2026-10-26 18:11:53 +01:00
Henrik RydgårdandClaude Opus 5.5 ec6c21a300 GamePacker: Attach the worker thread to JNI
Games in Android's scoped storage are opened through JNI, and getEnv()
asserts on a thread that isn't attached, so compression crashed on its
first file access.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 18:09:42 +01:00
Henrik Rydgård 9f9f0ac104 Merge pull request #22798 from hrydgard/docker-drop-ffmpeg-step
Docker: Drop the ffmpeg build step
2026-10-26 18:02:51 +01:00
Henrik RydgårdandClaude Opus 5.5 687ca704e0 Docker: Drop the ffmpeg build step
FFmpeg is now built from ext/ffmpeg as part of the CMake build, so the
submodule's build script the Dockerfile ran no longer exists.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 17:59:12 +01:00
Henrik Rydgård 85f9d8985b Merge pull request #22797 from hrydgard/ui-naming-translations
Translation sweep: missing strings, wrong categories, and a langtool scanner
2026-10-26 17:54:26 +01:00
Henrik Rydgård d5fc6ad334 Merge pull request #22796 from hrydgard/debugger-kb
ImDebugger: Touch helpers (compact menu, quick scroll, soft keyboard)
2026-10-26 17:05:14 +01:00
Henrik RydgårdandClaude Opus 5.5 1b60f76e58 Translate error messages once, from keys the source names
GameManager translated install errors when storing them, and the install
screens then looked the translated text up again as a key. It now stores the
category and key, and translates when asked. The raw ISO install error gets
the existing "Installation failed" string.

Some other errors went around as strings that were then used as keys:
- A missing savestate file now has its own error code, ERROR_FILE_MISSING,
  instead of a key in the failure reason.
- The PKG reader's reasons are technical English, so they're now shown
  untranslated under the translated "This PKG file isn't a PSP game update".
- The netconf dialog looked up the channel number. Only "Auto" is translated
  now, using the WLAN Channel setting's string.
- Adds the missing "Failed to read old directory" for memstick moves.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 17:04:20 +01:00
Henrik RydgårdandClaude Opus 5.5 da411d5837 langtool: Add find-missing-keys, which scans the source for untranslated lookups
Lists the T() calls, settings page texts, config labels and choice lists whose
key isn't in en_US.ini. With --dynamic, it lists the lookups whose key is only
known at runtime instead, which it can't check.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 16:44:38 +01:00
Henrik RydgårdandClaude Opus 5.5 097f5e7023 Lang: Fix the wording of some UI strings
The MIPSTracer page's "log file" is the trace file, and some strings had odd
spacing, grammar or capitalization. The auto load savestate toast now uses the
setting's key instead of a duplicate one, and the English fallbacks in code
match en_US.ini.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 16:41:12 +01:00
Henrik RydgårdandClaude Opus 5.5 b3717e800e ImDebugger: Make the menu bar taller on phones
A "Bar height" setting in the Misc menu, 166% by default on phones.
The item spacing in the bar grows along with it, so the menu titles can
be hit anywhere in the bar's height. The menus themselves keep the
normal style.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 16:36:49 +01:00
Henrik RydgårdandClaude Opus 5.5 3c398657df ImDebugger: Route the soft keyboard through the System request layer
Instead of a hook and four Android_* functions declared in
ImDebugger.cpp, the debugger calls System_SetSoftKeyboardForced(), and
the platform reports a closed keyboard with
UIMessage::SOFT_KEYBOARD_HIDDEN.

"Keep keyboard after switching apps" is passed along with the request,
and the activity's onStop ends a keyboard that shouldn't persist, so the
native side no longer tracks app pauses.

The debugger is now also told when it's hidden. Frame() isn't called
then, so hiding it with the hotkey used to leave the keyboard up.

The keyboard button and its Misc menu options are only shown when
SYSPROP_KEYBOARD_IS_SOFT is set, which Android now reports too. iOS and
UWP on Xbox report it as well, but don't implement the request yet.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 16:36:49 +01:00
KiwiYuandClaude Opus 5.5 1c1b7c9f50 ImDebugger: Add a soft keyboard toggle, implemented on Android
A "Show Keyboard" button in the menu bar brings up the soft keyboard and
keeps it up, typing into the debugger. On Android, NativeSurfaceView
acts as a text editor while it's forced, so showSoftInput actually works
for it, and passes typed text and key presses on to the native side.
Closing the keyboard with Back unticks the toggle.

The Misc menu can hide the button (which also turns the keyboard off)
and choose whether the keyboard comes back after switching apps.
Other platforms can provide an implementation through
ImDebugger_SetSoftKeyboardHook.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 16:36:49 +01:00