Commit Graph
17 Commits
Author SHA1 Message Date
Yunus Shaikh 163f88e7fa feat(libSceImeDialog): drive the dialog from the pad
sceImeDialogInit opens the pad keyboard beside the host-text sink and
registers the pad sink and the keyboard view; Finish, Term and
ForceClose release all three. Pad edits go through the same text,
caret and cap as host text: Done copies the text and its terminator
and ends Ok, Cancel ends UserCanceled with the buffer untouched, as
Enter and Escape do. Typed characters end a one-shot shift only when
they fit.

The options follow the dialog's parameters: the multiline option,
the supported languages' currency, the enter label, the extended
parameters' starting page and shift lock (SET_PRIORITY,
PRIORITY_SHIFT), and disable_device, whose controller bit keeps the
pad from editing.
2026-10-27 05:19:41 +01:00
Yunus Shaikh d1d104d67b feat(libSceImeDialog): add the pad keyboard model
A pure model of the controller keyboard: the Latin, Symbols and
Specials pages with their spanned keys, and a step function from pad
samples to edits. It follows shadPS4 30f4170896's on-screen keyboard
(ime_ui_shared.cpp:805-887, ime_dialog_ui.cpp and ime_kb_layout.cpp):

- Cross activates the selected key, armed once Cross is seen up, and
  repeats only the editing keys; the D-pad and left stick move on the
  grid and wrap, a held direction waits half a second at the edge.
- The shortcuts run only when the grid did nothing, in the source's
  order: L2+Triangle symbols, Triangle space (not while L2 is held),
  L3 specials, R2 done, L1+Square clear, Square backspace, L1 and R1
  caret, R3, L2 shift; Circle cancels and loses to Done.
- L2 cycles lower, one-shot upper and caps lock, re-armed once the
  trigger is back at 0.20.
- Repeats use ImGui's default delay and rate, 0.275 s and 0.05 s.

Every button and stick direction held in the first sample is ignored
until it is released, so nothing held when the dialog opens types,
deletes or repeats. The keyboard, menu and R3 mode keys of the source
are left empty, and the currency key and the Done label follow the
dialog's languages and enter label.
2026-10-27 05:19:40 +01:00
boykopovar f38d29fd08 refactor(sdk): add canonical headers for remaining libraries 2026-10-24 23:17:42 +03:00
Yossi Yadgar 2c0f778b93 feat(libSceImeDialog): refuse panel moves without a movable panel 2026-10-21 14:52:11 +03:00
Yossi Yadgar 77f439cf28 feat(libSceImeDialog): open the dialog through sceImeDialogInitInternal 2026-10-21 14:52:11 +03:00
Yossi Yadgar c46ff25ee7 feat(libSceImeDialog): report the star state of an open dialog 2026-10-21 14:52:11 +03:00
Dean 2ca8469e84 Merge pull request #8947 from xdCloudy/feat/ps5-imedialog-exports
feat(libSceImeDialog): declare PS5 pending exports
2026-10-21 22:20:44 +13:00
Dean ce9cf3feff Merge pull request #8305 from hypermoist/fix/utility-libs-console-results
fix(libs): return what the firmware returns from 24 utility calls it does not implement
2026-10-21 21:32:08 +13:00
xdCloudy 9781a70a19 feat(libSceImeDialog): declare pending PS5 exports 2026-10-21 08:01:06 +01:00
erickerxhalliandClaude Opus 5.5 bdebcbde96 feat(libSceImeDialog): close an open dialog in sceImeDialogForceClose
sceImeDialogForceClose threw. It now closes a running or finished
dialog the way sceImeDialogTerm does, without writing the typed text to
the title's buffer, and returns NOT_IN_USE (0x80bc0107) when no dialog
is open. The behaviour follows shadPS4 and the error code is the one
SharpProspero lists for PS5. The ImeDialog guest test covers each case.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Arbzg9c2DA4DEFKVSvRgYv
2026-10-20 13:39:58 +00:00
hypermistandClaude Opus 5.5 afbd9b882f fix(libs): return what the firmware returns from 24 utility calls it does not implement
ContentBinder, CompanionUtil, ErrorDialog OpenDetail/OpenWithReport,
ImeDialog ForTestFunction, HttpCache SystemTerm/SendStatistics,
MoveTracker GetVersion/RecordStop, BluetoothHid and SystemGesture debug
versions and Mbus Term/AcquireControlList are a single constant return
in the firmware modules; these exports now return the same value.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-20 22:36:53 +13:00
juanpimg 2f0ed638dc feat(prx): declare the missing PS5 3.20 system exports
AnyPS5 resolves a title's imports by NID, so a title that imports a system
function no library provides fails to load with an unresolved import. The
PS5 3.20 export inventory lists 193 such exports across 37 PS5 system
libraries AnyPS5 implements but does not provide.

Declare them as throwing stubs so those titles load and reach their next
blocker. Each declaration calls NotImplemented_nid_no_patch and returns 0;
none of them implements the function. Declarations with a credible
prototype use it and cite the source with a pinned commit, and the rest
are declared without parameters, which resolves the import without making
an ABI claim. The technical-debt files record the limitation per library.

libSceMbus and libSceSystemService are left out because pull request #7821
declares them. libSceAgc is left out because its exports are versioned, so
the 3.20 NID names a different symbol from the one AnyPS5 ships.
libSceAvPlayer.native is left out because it compiles libSceAvPlayer's
Export.cpp.

Names and NIDs come from the PS5 3.20 export inventory at
https://github.com/DNNDHH/PS5-3.20_Libs/tree/b2a77c09cd71c01f34c790cfbe98c751a13262ad
2026-10-19 23:16:55 +02:00
RickandClaude Opus 5.5 6c5686d7ea feat(libSceImeDialog): take the dialog's text from the host keyboard
sceImeDialogInit wrote "Slayer" into an empty text buffer and the
dialog finished on the second status poll, so a title never got text
from the user: ProsperoRadio's search typed "Slayer" by itself and
found no station.

The dialog now runs until the user answers on the host keyboard, the
way #4756 made sceImeOpen's panel-less IME take it. While no IME panel
is open, libSceIme hands the game window's text and editing keys to
a sink that the dialog registers. Typing edits the text up to
maxTextLength without splitting a surrogate pair, Enter writes it to
the title's buffer and finishes with end status 0, and Escape finishes
with 1. Abort still finishes with 2. A second Init reports busy, and a
null parameter or buffer or a maximum length outside 1 to 2048 is
refused, as in shadPS4.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-15 19:52:28 +02:00
devilismyfriendandClaude Fable 5.1 af3c2024ed feat(runtime): timed waits, sync primitive fixes, heap and RTC fixes, unattended-run switches
libkernel: a TimedWait service for condition variables, semaphores, event flags, rwlocks and
equeues with the scheduler tick; mutex/cond/sem corner cases the title hits; job worker
affinity is opt-in (APS5_JOB_AFFINITY). libc: calloc/realloc heap slot swap, a default
terminate handler with a backtrace, CPU topology helper. libSceRtc export fixes with tests.
libSceVideoOut: APS5_NO_PAD_INPUT ignores host input for unattended measurements,
APS5_FLIP_QUEUE_WAIT keeps a stalled process alive for a debugger. ApplicationHeap and
GuestRtc tests wired into the test build.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Claude-Session: https://claude.ai/code/session_0177gthrWEBBfBu5xJDXgBfo
2026-09-26 19:00:39 -07:00
boykopovar abc72da741 feat(libs): define vabi macros + add to declarations 2026-09-10 08:07:03 +03:00
boykopovar 6123893998 feat(libs): throw not impl ex in every stub 2026-09-06 15:05:04 +03:00
boykopovar 59bee8d187 feat(libs): add libs function signatures 2026-08-20 23:18:16 +03:00