Commit Graph
1604 Commits
Author SHA1 Message Date
Dean 9516f035e7 Merge pull request #775 from adriadam10/feat/agc-context-state-op-size
feat(agc): implement sceAgcDcbContextStateOpGetSize
2026-10-06 12:44:25 +13:00
Dean 8cac9bc7fe Merge pull request #774 from adriadam10/feat/agc-payload-range
feat(agc): implement sceAgcGetDataPacketPayloadRange
2026-10-06 12:43:43 +13:00
Dean 52ae2270fc Merge pull request #768 from adriadam10/feat/ajm-mp3-parse-ofl
feat(ajm): parse the original file length in sceAjmDecMp3ParseFrame
2026-10-06 12:41:38 +13:00
Dean 5124951b05 Merge pull request #740 from adriadam10/feat/audio3d-port
feat(audio3d): implement the port queue
2026-10-06 12:40:56 +13:00
Dean cc785ffa93 Merge pull request #739 from adriadam10/feat/systemservice-powertick
feat(systemservice): implement PowerTick and ReportAbnormalTermination
2026-10-06 12:40:14 +13:00
Dean 2410130475 Merge pull request #738 from adriadam10/feat/ime-keyboard-info-mode
feat(libSceIme): implement keyboard info and mode queries
2026-10-06 12:39:32 +13:00
Dean 2127e1c6d0 Merge pull request #737 from adriadam10/feat/share-capture-status
feat(libSceShare): capture, open menu and current status calls
2026-10-06 12:38:49 +13:00
Dean bf4b7e3f6d Merge pull request #714 from adriadam10/feat/contentexport-fromdata-name
fix(contentexport): name the AOWqIYsgVHs stub sceContentExportFromData
2026-10-06 12:37:25 +13:00
Adrià FranchandClaude 83442e1e40 feat(font): implement writing lines
Create, destroy, clear, write runs, step through them and read the
line metrics, following KytyPS5. Layouts from SharpProspero.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 01:30:16 +02:00
Dean c8c4621a17 Merge pull request #747 from CnRJay/feat/apr-gather-scatter
feat(libs): implement the APR gather and scatter reads
2026-10-06 12:25:06 +13:00
Dean ad881d539b Merge pull request #730 from alfalfa-star/feat/voiceqos-init
feat(voiceqos): implement sceVoiceQoSInit
2026-10-06 12:19:38 +13:00
Dean 90f20b393d Merge pull request #699 from merwie/feat/libs-ppsa12544-exports
feat(libs): add exports imported by PPSA12544
2026-10-06 12:18:11 +13:00
Adrià FranchandClaude 58fce8ab1c feat(libs): implement sceGameUpdateGetAddcontLatestVersion
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 01:17:29 +02:00
Adrià FranchandClaude cef269d129 feat(agc): implement sceAgcGetGsOversubscription
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 01:16:35 +02:00
Dean 398d03ed09 Merge pull request #705 from merwie/feat/userservice-age-level
feat(userservice): implement sceUserServiceGetAgeLevel
2026-10-06 12:16:25 +13:00
NumberGuan cda1d4b211 feat(http): implement URI percent decoding 2026-10-05 20:14:23 -03:00
Dean 7887d885b6 Merge pull request #742 from alfalfa-star/feat/agc-driver-predication
feat(agc-driver): execute boolean SET_PREDICATION
2026-10-06 12:14:16 +13:00
Dean 1438d99560 Merge pull request #752 from Celegans12/feat/agc-conservative-z-export
feat(agc): accept conservative Z export in DB_SHADER_CONTROL
2026-10-06 12:13:21 +13:00
Dean 82d1b129fa Merge pull request #648 from Celegans12/feat/videoout-dcc-presentation
feat(agc): present DCC display buffers whose keys are uncompressed or fast-cleared
2026-10-06 12:11:15 +13:00
Dean 11c3e3e9f0 Merge pull request #680 from NumberGuan/codex/implement-http-response-header
feat(http): implement response header parsing
2026-10-06 12:09:48 +13:00
Dean 2474eee54e Merge pull request #746 from CnRJay/feat/ampr-counter-04-00
feat(libs): implement the AMPR 04_00 counter commands and the construct helpers
2026-10-06 12:09:04 +13:00
Dean f5b548a876 Merge pull request #580 from CnRJay/feat/ampr-nop-04-writes
feat(libs): implement the AMPR nops and the 04_00 completion writes
2026-10-06 12:08:21 +13:00
raghav314andClaude Opus 5.5 ce6d94793c feat(libkernel): implement sceKernelSyncOnAddressWait8 and sceKernelSyncOnAddressWait16
Wait8 and Wait16 compare the 1- or 2-byte value at the address with the
comparand and share the waiter queue of the other sizes.
sceKernelSyncOnAddressWake accepts any non-null address: libc's
__std_atomic_notify_one/all pass the atomic's own address, which for 8- and
16-bit atomics need not be 4-byte aligned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 04:30:12 +05:30
Adrià FranchandClaude 8232a4c071 feat(agc): implement sceAgcDcbContextStateOpGetSize
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 00:58:50 +02:00
Adrià FranchandClaude 9322634817 feat(agc): implement sceAgcGetDataPacketPayloadRange
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 00:54:31 +02:00
Celegans12 4a67b140fc feat(agc): accept conservative Z export in DB_SHADER_CONTROL
DecodeState, the draw precheck and DecodePixelStageInfo rejected every
nonzero CONSERVATIVE_Z_EXPORT (DB_SHADER_CONTROL bits 13-14).
EXPORT_LESS_THAN_Z (1) and EXPORT_GREATER_THAN_Z (2) promise that the
exported Z stays on one side of the interpolated Z. The value now
reaches the recompiler as a pixel stage field, and a pixel shader that
writes FragDepth declares DepthLess or DepthGreater next to
DepthReplacing, the SPIR-V modes RADV maps to these values. Vulkan lets
those modes only add a depth test of the interpolated Z before shading,
so a shader that keeps the promise renders the same. The reserved value
3 still throws.

The field is part of the recompile cache key, the draw key and the
serialized request (version 7), and ValidateShaders accepts both modes.
2026-10-06 00:35:43 +02:00
Adrià FranchandClaude 58263b5075 feat(libSceIme): implement keyboard info and mode queries
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 00:30:16 +02:00
Adrià FranchandClaude 23c8558c70 fix(contentexport): name the AOWqIYsgVHs stub sceContentExportFromData
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 00:30:00 +02:00
Adrià FranchandClaude aed4f3a25c feat(systemservice): implement PowerTick and ReportAbnormalTermination
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 00:29:42 +02:00
Adrià FranchandClaude f4b5b1ba50 feat(libSceShare): capture, open menu and current status calls
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 00:29:19 +02:00
Adrià FranchandClaude 06d2ae5f05 feat(audio3d): implement the port queue
Initialize, PortOpen/Close, PortSetAttribute, PortGetQueueLevel,
PortAdvance and PortPush. One port, validation order and error codes from
the PS5 module as read by prosper; blocking push paced at granularity
samples per frame at 48 kHz like KytyPS5.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 00:28:19 +02:00
Adrià FranchandClaude fc96f96ac5 feat(ajm): parse the original file length in sceAjmDecMp3ParseFrame
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 00:26:19 +02:00
Celegans12 241faf881e feat(agc): present DCC display buffers whose keys are uncompressed or fast-cleared
sceVideoOutRegisterBuffers2 threw "DCC presentation is not implemented"
for category 1 (DCC-compressed) buffers, which PPSA26344 registers. Such
a buffer now needs DCC metadata and the tiled layout, and dcc_control may
only use the CB_DCC_CONTROL block layout bits 0x10026c.

At a flip the keys are read behind their recorded writers, one byte per
256 bytes as in the driver's DCC model. Uncompressed keys present the
stored texels as before; a uniform clear code presents its color with a
GPU clear of the scaler's source image; a pending storage image is used
when it serves the keys. Mixed or unreadable keys, clear codes the
display format has no DCC encoding for, register-clear keys over a
pending image and a clear color wider than 32 bits throw. Buffers
without DCC take the old path.
2026-10-05 23:45:15 +02:00
Tomás Ortellado 669c7a40fa feat(http): implement response header parsing 2026-10-05 18:32:47 -03:00
Dean Galvin 9d4e6d2f28 feat(font): open system font sets from a font directory
sceFontOpenFontSet failed for every set type, so PPSA21564 drew no text
in system fonts (the title screen copyright line, credits, button
guides). It now loads the set's primary font file from
ANYPS5_SYSTEM_FONTS, or anyps5-fonts beside the executable: console
files under their own names first, then openly licensed substitutes
(Noto Sans, Noto Sans Mono, Noto Sans Thai, Noto Sans CJK). The
PS5-only JG2 set types are accepted.

System font handles use the system font context. Their faces are
loaded by FreeType in host memory: about 1 MiB per CJK face does not
fit the font memory the title sizes for the console's fonts, and
sceFontCreateRenderer then failed with ALLOCATION_FAILED. Handles of
the same font file share one copy of its bytes.
2026-10-06 10:27:09 +13:00
Merijn aaefea9626 Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into feat/userservice-age-level
# Conflicts:
#	docs/dev/TechnicalDebt.md
2026-10-05 23:24:52 +02:00
MerijnandClaude Opus 5.5 d82bae0934 feat(libs): add exports imported by PPSA12544's Unity plugins
PPSA12544's Media/Plugins modules (CommonDialog, PSN, Share) import
libSceVrSetupDialog, which no library provided, and Share, NpTrophy2,
WebBrowserDialog and NpEntitlementAccess functions that were not
exported. Add libSceVrSetupDialog and the missing functions as
unimplemented exports, except
sceNpEntitlementAccessRequestConsumeServiceEntitlement, which reports
SCE_NP_ERROR_SIGNED_OUT like
sceNpEntitlementAccessRequestConsumeUnifiedEntitlement. Their other
imports are covered by #734 and #369, and two by #407.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:18:46 +02:00
ChadandClaude Opus 5.5 cf3d0f6fc7 feat(libs): implement the AMM PRT commands
sceAmprAmmCommandBufferMapAsPrt, AllocatePaForPrt, RemapIntoPrt and
UnmapToPrt, with the MapAsPrt and AllocatePaForPrt measures. Signatures,
checks and their order follow ampr_emu.

The executor keeps the PRT pages of the AMM ranges. Unbacked PRT pages
are zero-filled with GPU read access; AllocatePaForPrt backs each
unbacked page with a pool page and changes the type and protection of
backed ones; RemapIntoPrt moves a mapped range into a PRT range; and
UnmapToPrt returns the pages to the pool and zero-fills them again. A
plain map, unmap or remap over a PRT range ends it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 15:45:28 -05:00
MerijnandClaude Opus 5.5 d4eed90b54 fix(videoout): report unavailable output modes instead of throwing
sceVideoOutIsOutputSupported threw VIDEO_OUT_ERROR_UNSUPPORTED_OUTPUT_MODE
for every mode other than the default and 119.88 Hz, and
sceVideoOutConfigureOutput threw for an unavailable 119.88 Hz mode. Titles
probe and request modes the display may lack and handle the result:
PPSA12544 asks for 0xd000000a and falls back to 3840 pixels when it is not
supported, and its sceVideoOutConfigureOutput caller switches on the
returned error codes, including VIDEO_OUT_ERROR_UNAVAILABLE_OUTPUT_MODE.
Every mode except the default now reports 0, and configuring one returns
VIDEO_OUT_ERROR_UNAVAILABLE_OUTPUT_MODE.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 22:45:12 +02:00
ChadandClaude Opus 5.5 166ea44993 feat(libs): implement the AMM remap, multimap and protection changes
libSceAmpr gains sceAmprAmmCommandBufferRemap, MultiMap, ModifyProtect
and ModifyMtypeProtect with their GPU mask forms and the eight measure
functions. Signatures and the protection and mask checks follow ampr_emu.

The executor keeps a page table of the AMM ranges: each page's physical
offset, protection, memory type and whether it came from the pool. A
remap moves the pages of a fully mapped range and leaves the old range
reserved; a multimap maps the same pages again; a pool page returns to
the pool only when its last mapping goes. A protection change applies
the masked bits page by page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 15:36:24 -05:00
Dean 2707b3a3c8 Merge pull request #736 from adriadam10/feat/libc-wcsrtombs-s
feat(libc): implement wcsrtombs_s
2026-10-06 09:31:24 +13:00
ChadandClaude Opus 5.5 c16e59bfd5 feat(libs): implement the AMM map, map direct and unmap commands and the APR map region
libSceAmpr gains the AMM command buffer (constructor, destructor, map,
map direct and unmap, with their GPU mask forms and measures),
sceAmprAmmGiveDirectMemory, sceAmprAmmGetVirtualAddressRanges, the three
submit forms and sceAmprAmmWaitCommandBufferCompletion. The APR
MapBegin, MapDirectBegin and MapEnd commands and their measures record
the same map commands.

The libkernel executor now maps: a plain map takes pages from the direct
memory given to the mapper with usage 1, a direct map uses the given
offset, and an unmap returns the pages to that pool and leaves the range
reserved. The AMM ranges are reserved in the guest arena on first use.
Commands are walked by the buffer's byte offset so an AMM submission can
run raw command memory.

Signatures, the protection mask and the APR map rules follow ampr_emu;
the mapper model follows PS5PCEM. While an APR map region is open, a
second begin and every completion write return EPERM.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 15:29:33 -05:00
ChadandClaude Opus 5.5 4b336335a8 feat(libs): implement the APR gather and scatter reads
sceAmprAprCommandBufferReadFileGather, ReadFileScatter,
ReadFileGatherScatter and ResetGatherScatterState, with their measure
functions. Signatures, argument checks and the read cursor follow
ampr_emu: each read leaves the file, the next offset and the next
destination; a gather reads at a new offset into the next destination, a
scatter continues in the file into a new destination, and a
gather-scatter takes both. Recording one needs a file read since the last
reset, tracked in the command buffer object next to its type.

sceAmprAprCommandBufferReadFile now applies the same length, offset and
destination checks and rejects a null command buffer instead of
dereferencing it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 15:12:34 -05:00
ChadandClaude Opus 5.5 636fb5edae feat(libs): implement the AMPR 04_00 counter commands and the construct helpers
sceAmprCommandBufferWaitOnCounter_04_00 and WriteCounter_04_00 take the
counter access size and offset, the wait mask and the write operation,
with their measure functions; ConstructNop records a nop with an optional
leading word and a payload of up to 60 bytes, and ConstructMarker records
the set, push and pop markers by type. Signatures and checks follow
ampr_emu.

The executor now reads and writes counters by access: the 8-byte access
of counter n spans n and n + 1, the 2- and 1-byte accesses a half or a
byte of the counter. Waits compare at the access width, so the signed and
wrapped compares see the field's own sign bit, and the atomic writes wrap
within the field. The legacy counter commands record a 4-byte access.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 15:02:30 -05:00
RomainROCH 12c229d19a fix(jpegenc): honor chroma sampling and encode true grayscale JPEGs 2026-10-05 21:49:36 +02:00
Chad 4882413217 Merge remote-tracking branch 'upstream/main' into feat/agc-predication
# Conflicts:
#	docs/dev/TechnicalDebt.md
2026-10-05 14:48:11 -05:00
Chad c3ab220e45 Merge remote-tracking branch 'upstream/main' into feat/ampr-nop-04-writes
# Conflicts:
#	docs/dev/TechnicalDebt.md
2026-10-05 14:46:31 -05:00
Dean 681f83e51e Merge pull request #713 from adriadam10/feat/savedata-ps4-transfer
feat(savedata): implement the PS4 transfer mount and directory search
2026-10-06 08:14:26 +13:00
Dean a2da600645 Merge pull request #712 from adriadam10/feat/share-capture-screenshot-extended
feat(libSceShare): sceShareCaptureScreenshotExtended
2026-10-06 08:13:44 +13:00
Dean d66925cd5f Merge pull request #708 from adriadam10/feat/http-inflate-gzip
feat(http): name sceHttpSetInflateGZIPEnabled and sceHttpSetRequestStatusCallback
2026-10-06 08:12:50 +13:00