Commit Graph
35 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 b0382ed91a Game browser: Backspace goes up a directory, Windows raw input flags key repeats
With no type-to-search active, Backspace goes to the parent directory. Never
on a repeat, so holding it doesn't climb to the root. Not every platform
flags repeats, so the browser also tracks whether it's held.

Windows raw input now flags auto-repeated key downs as IS_REPEAT, like
Android and UWP, and forgets the held keys it releases on losing focus. The
UI drops OS repeats of a key it's already repeating itself, so held arrows
don't double up (they were dropped before too, a step later).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 11:36:30 +02:00
Henrik RydgårdandClaude Opus 5.5 193dd01c32 Game browser: Entering a directory focuses its first entry
A subdirectory or game rather than "..", which only gets the focus in an
empty directory.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 11:25:16 +02:00
Henrik RydgårdandClaude Opus 5.5 c61adac77f Game browser: Going up a directory focuses the one you came out of
Refresh already focused a game it was asked to. Now it does the same for
directories, and keeps the request until a listing that was still loading
has arrived. UI::ScrollFocusedViewIntoView scrolls the focused view into
sight once it's been laid out, since SetFocus alone doesn't scroll.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 11:22:44 +02:00
Henrik RydgårdandClaude Opus 5.5 83c3028ca1 Game browser: Alt+Up goes to the parent directory
On Windows, a key released while Alt is held comes as WM_SYSKEYUP, which
raw input dropped, so after Alt+Up the UI kept the arrow held and the focus
kept moving. Handle it like WM_KEYUP. Alt+arrows also no longer move the
focus, since they're shortcuts.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-18 12:40:25 +02:00
Henrik RydgårdandClaude Opus 5.5 672ff85efa GameBrowser: Only play ICON1 videos for keyboard/gamepad focus
With touch or the mouse, the video started as soon as you pressed a game,
so watching it without launching the game took a careful drag-and-release.
Touch and mouse users can still see the video from the info button or a
long press.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-18 11:49:09 +02:00
Henrik RydgårdandClaude Opus 5.5 57601a9d3b Game browser: Give Recent the toolbar, and the large list by default
Recent gets the view mode and grid settings buttons. It has no path,
nothing to navigate, and its list comes from memory, so the path,
navigation and refresh stay out. Its old grid setting is no longer
migrated, like Games and Homebrew.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 12:32:42 +02:00
Henrik RydgårdandClaude Opus 5.5 fd6e4dfccd Disable the upload button until a game folder is chosen
On a fresh install with scoped storage the Games tab has no folder, and the
upload server had nowhere to put files, so every request got a 404.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-16 20:44:05 +02:00
Henrik RydgårdandClaude Opus 5.5 ce8f48980a Game browser: Default to the large list for Games and Homebrew, bigger folders
The old GridView keys are now read as ints, so a missing key can be told
apart from false. Configs without them get the new defaults, while
existing ones still migrate their choice.

Folders get taller lines in the large list too, though not as tall as
the games.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 11:00:00 +02:00
Henrik RydgårdandClaude Opus 5.5 ef72f27fea Game browser: Keep the search and focus when returning from a game
FocusGame cleared the path to focus right after setting it, so since
the refresh became deferred nothing got refocused. The refresh also
showed every game again while the search bar still showed the filter.

Now an existing button is focused directly, without a refresh, and a
refresh reapplies an active search filter.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 11:00:00 +02:00
Henrik RydgårdandClaude Opus 5.5 43704b215c Game browser: Keyboard focus for the info button, more left padding
In the large list, right and left move between a game and its info
button, so up and down still step from game to game.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 10:45:12 +02:00
Henrik RydgårdandClaude Opus 5.5 7d273e178f Game browser: Info button in the large list, long press with buttons
Each line in the large list gets an info button, doing the same as a long
press or right click.

Holding the accept button now works as a long press in all view modes,
so it can be done from a gamepad.

Rename "Grid icon size" to "Icon size", since it now also applies to the
large list.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 10:33:04 +02:00
Henrik RydgårdandClaude Opus 5.5 0066599f9a Game browser: Add an XMB-style large list mode
- Fixes #22202

A third view mode next to grid and list: a list with full size icons,
scaled by the grid icon size setting. Like the XMB, the selected (or
hovered) game plays its ICON1.PMF in place of the icon.

The per-tab grid bools become GameBrowserView1-4 ints. The old GridView
keys are still read, to pick the default, but no longer saved.

The PMF decoding moved out of GameScreen's PMFView into a shared
PMFVideoTexture.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 10:24:32 +02:00
Henrik RydgårdandClaude Opus 5.5 7315c0392c Games tab: Hide the browse button where there's no folder browser (tvOS)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 02:03:37 +02:00
Henrik RydgårdandClaude Opus 5.5 3aaea4c0f9 GameInfoCache: Prioritize loads, so launching doesn't wait behind search
Type-to-search asks for the title of every game in the list, queueing a
load for each, and launching a game whose info wasn't loaded yet then
blocked until the whole queue had drained. Search's loads are now LOW,
and launching asks at HIGH, which queues its own load rather than wait
for a pending one.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 16:34:38 -06:00
Henrik RydgårdandClaude Opus 5.5 ce3d8d37c5 Game browser search: also match the filename, minus extension
Works before the game's metadata has loaded.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 11:50:28 -06:00
Henrik RydgårdandClaude Opus 5 3a70c6b149 Install PKG game updates, and boot them
Opening a .pkg now offers to install it, the way a .zip does - see the new
InstallPkgScreen, which shows what the update patches, what it'll take up
on disk (exact, since package contents aren't compressed) and where it's
going. The package's PS3-style USRDIR/CONTENT wrapping is stripped so the
files land where the PSP expects them, in PSP/GAME/<DISC_ID>.

Booting a disc then looks for PSP/GAME/<DISC_ID>/PBOOT.PBP and boots that
instead of the disc's own EBOOT, leaving the disc mounted - so the update
overrides the files it ships and the disc supplies the rest. The update's
DISC_ID has to match; a DISC_VERSION mismatch only warns, since updates do
get used with slightly different dumps in practice.

Verified against the whole corpus: every one installs, and the
digital NP* update/base-image pairs that could be assembled all boot the
patch rather than the disc's executable. That includes Super Robot Taisen
Operation Extend from a real NPUMDIMG EBOOT.PBP, which settles that
ISO.BIN.EDAT does not re-key the PBOOT - a digital title's patched EBOOT is
encrypted exactly like a UMD one. On the UMD side, the patched
LittleBigPlanet reads PATCH.ARC out of the install alongside the disc's own
archive.

The DISC_VERSION warning turns out to be load-bearing: many of the pairs
mismatch, because the dumps in circulation are later disc revisions than the
updates were built against. docs/pkg_notes.md has the numbers, and the one
thing that doesn't work - PGD-wrapped .sprx modules, which
sceKernelLoadModuleNpDrm can't load.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 11:15:15 -06:00
Henrik Rydgård 5cffcd34ad Get rid of the confusing old USING_WIN_UI define. Make a more clear system property for headless. 2026-08-16 12:19:41 +02:00
Henrik Rydgård 7219cd2f5a Split off ScreenManager from Screen.cpp 2026-08-07 14:30:36 +02:00
Henrik Rydgård cc0ece038c Clean up the string type in RequestCallback - somehow was both char* and std::string????
Might be related to #21695
2026-05-18 14:16:34 +02:00
Henrik Rydgård a38c3ce09f GameBrowser: Safer way to do refresh. 2026-05-13 11:14:47 +02:00
Henrik Rydgård ed15ff7f8e Fix GPUDriverTestScreen 2026-05-10 23:41:39 +02:00
Henrik Rydgård 3a599c4714 Fix audio focus issue by tracking the cause of lost focus.
Fixes #21643
2026-05-06 00:06:32 +02:00
Henrik Rydgård 71d04bfcae Implement cheat search on mobile 2026-05-04 00:36:16 +02:00
Henrik Rydgård 3325cbe6b2 Remove the legacy icon images for zip/rar/7z. Include this in the regular gamelist so search works for them. 2026-05-03 18:43:48 +02:00
Henrik Rydgård 2d90058421 Move more of the search code out of GameBrowser 2026-05-03 17:44:01 +02:00
Henrik Rydgård e354d0dfdd Break out SearchEngine and SearchBar 2026-05-03 17:41:18 +02:00
Henrik Rydgård b2d0b8e3cc Improve display of http links in recents list 2026-04-23 16:55:29 +02:00
Henrik Rydgård 786b835ba1 Smoother directory navigation using search. Normalize away full-width chars for search. 2026-04-16 12:46:34 -06:00
Henrik Rydgård 3c6782a38f Improve the look of the search field (better margins etc) 2026-04-15 09:47:35 -06:00
Henrik Rydgård b5bc36a37f Filter out problematic shortcut keys 2026-04-14 19:44:20 -06:00
Henrik Rydgård 07df47de07 More polish of the search experience 2026-04-14 18:30:57 -06:00
Henrik Rydgård 5f7835cdfb Add the search bar to all main screen tabs 2026-04-14 18:17:54 -06:00
Henrik Rydgård b207beb882 Add touch-to-cancel for search bar. Add magnifying glass symbol. 2026-04-14 18:17:54 -06:00
Henrik Rydgård 6c2c4606dc Initial work on instant type-to-search. 2026-04-14 18:17:54 -06:00
Henrik Rydgård 3663d46a5b Split out the GameBrowser from MainScreen 2026-04-13 13:20:19 -06:00