prosper v0.1.0
What's Changed
- agc: break the graphics boot blocker — real sceAgcCreateShader + shader-derived pipeline state by @mattias800 in #1
- agc: first real command buffer executes — SubmitDcb → CommandProcessor by @mattias800 in #2
- diag: PROSPER_PEEK fault-time field dump + pin the next frontier by @mattias800 in #3
- test: lock in the AGC submit milestone (Dcb → SubmitDcb → GpuState) by @mattias800 in #4
- Fix AGC/SPIR-V review findings by @mattias800 in #5
- diag(RE): 0xba6e08 is a Unity pipeline object — resource-creation premise needs revisiting by @mattias800 in #6
- Improve MinGW Windows portability by @mattias800 in #7
- diag(RE): bounded trace answer — 0xba6e08 pipeline object is Unity-internal (no HLE hook) by @mattias800 in #8
- gpu: resolve_pipeline_state — RenderState (RDNA2) -> Vulkan-ready pipeline state by @mattias800 in #10
- fix: reject graphics cmpx without export predication by @mattias800 in #12
- Add Linux and Windows CI by @mattias800 in #9
- videoout: real 1080p60 display + swapchain scaffolding (+ hypothesis: not the [+0x140] gate) by @mattias800 in #11
- RE: [+0x140] companion writer chain → pipeline-reflection predicate (root cause narrowed) by @mattias800 in #13
- RE probe: shader semantics surfaced correctly — mis-relocation bet rejected (raw blob evidence) by @mattias800 in #14
- diag: trace shader user-data bindings by @mattias800 in #15
- diag: skip-null-companion probe — systemic (residency pass never ran), stop per-object writer hunt by @mattias800 in #16
- recompiler: reject unsafe forward scalar branches by @mattias800 in #17
- diag: null-chain probe — GfxDevice subsystem systematically dead (option b), not a narrow gap by @mattias800 in #18
- videoout: preserve submitted flip and buffer state by @mattias800 in #19
- diag: preserve companion watchpoint result by @mattias800 in #21
- videoout: flip→present path over the display-buffer registry (headless scanout) by @mattias800 in #22
- hle: reduce startup stubs — UserService getters + libkernel no-ops (audit) by @mattias800 in #23
- videoout: present receiving side — present_write_frame closes render→present→readback by @mattias800 in #24
- gpu: build_shader_resources — V# decode + constant-buffer table (resource-binding stage 1) by @mattias800 in #25
- gpu: build_shader_resources stage 2 — vertex buffers (DIRECT sgpr_base provenance) by @mattias800 in #26
- Audio support: headless sceAudioOut HLE + optional SDL3 frontend by @mattias800 in #28
- feat(pad): real game-controller input (libScePad) via Linux evdev by @mattias800 in #27
- feat(gpu): real game frames — The Messenger's title renders with the game's own shaders by @mattias800 in #33
- Unblock cutscene-scene loading: ParamGetString + %fs stack-smash fixes (+ map the remaining GC-race wall) by @mattias800 in #35
- fix(gpu): loading screen rendered upside down — honor the guest viewport (PA_CL_VPORT) by @mattias800 in #38
- fix(hle): full pread/read (asset-stream corruption) + deepened cutscene-wall findings by @mattias800 in #39
- Fix %fs stack-smash in fault_handler + pin the cutscene wall to incremental-GC live-object collection by @mattias800 in #36
- diag: cutscene blocker pinned to IL2CPP GC "Unexpected state" abort (findings + tooling) by @mattias800 in #37
- feat(gpu): multi-draw executor + backend (opt-in), on the per-draw snapshot foundation by @mattias800 in #34
- Fix the level1 (cutscene) load crash — GC allocation lock never locked by @mattias800 in #42
- diag: PROSPER_GUEST_ENV (guest GC env knobs) + GC-collection-is-not-the-sole-blocker finding by @mattias800 in #40
- diag(cutscene): pinned to a null System.Diagnostics.Stopwatch in Unity's async-load WorkerThread by @mattias800 in #43
- fix(gc-suspend): guest-%fs cancellation-point landmine + post-#43 cutscene findings by @mattias800 in #44
- docs(cutscene): tested-and-eliminated hypotheses for the WorkerThread.+0x40 Stopwatch crash by @mattias800 in #45
- diag(cutscene): crash → streams 80% of the cutscene; final blocker = block-966 deser deadlock by @mattias800 in #46
- feat(ue4): PPSA17942 boots deep into UE4 engine init — SELF variant, real direct-memory model, sceKernelBatchMap, boot API surface by @mattias800 in #47
- diag(cutscene): block-966 deadlock = type-tree-less il2cpp MonoBehaviour deser (InventoryItemDefinition) by @mattias800 in #48
- feat(ue4): allocator pool-view aliasing SOLVED + fault-handler raw-write fix + libSceAmpr trio — UE error handling now runs by @mattias800 in #49
- diag(cutscene): refine the block-966 wall to a deterministic 3-object deser loop by @mattias800 in #50
- diag(cutscene): map both remaining blockers — uncaptured color render-state + variable deser/threading by @mattias800 in #51
- fix(diag): bound PREADLOG/DEEPTRACE stack walk to the thread stack (was faulting worker threads) by @mattias800 in #52
- fix(gpu): render the color state — absent CB_TARGET_MASK defaults to write-all (fixes the blue screen) by @mattias800 in #53
- Load PSN.prx so the async worker pool runs — cutscene load/threading wall solved by @mattias800 in #54
- fix(gpu/recompiler): handle forward s_cbranch_scc0 early-out — unblocks in-game scene shaders by @mattias800 in #55
- feat(ue4): APR/IoStore read pipeline — engine reads and parses its asset TOC by @mattias800 in #57
- diag(cutscene): SCENE REACHED (level0-5 boot-through); final blocker = scene-content render-target by @mattias800 in #56
- fix(gpu/recompiler): recompile the in-game scene shaders (alpha-test discard PS + NGG vccnz VS + v_dot2c) by @mattias800 in #58
- fix(render): bound texture/buffer copies to committed backing — render no longer crashes reaching the scene by @mattias800 in #59
- fix(gpu/exec): render the mesh's real vertex count (draws were a degenerate sliver) by @mattias800 in #60
- Full-history bug hunt: 18 verified fixes from a 405-commit review by @mattias800 in #61
- docs(claude): GitHub-issues workflow — file found-but-unfixed bugs immediately by @mattias800 in #74
- docs: cutscene render frontier — status, traced root cause, next step by @mattias800 in #73
- fix(gpu): RELEASE_MEM stops guess-writing on unknown data_sel; WaitRegMem carries and verifies its real wait parameters by @mattias800 in #75
- fix(hle/apr): safe size-keyed APR reads — refuse ambiguous/chunk reads loudly by @mattias800 in #76
- fix(hle/kernel): purge __tls_get_addr DTV on thread exit (stale TLS on recycled ids + leak) by @mattias800 in #77
- fix(gpu): decode R_DRAW_INDEX so sceAgcDcbDrawIndex draws reach the draw list by @mattias800 in #80
- fix(hle/equeue): shared-ptr lifetime, real timeout semantics, kqueue coalescing, cancellable timers by @mattias800 in #81
- fix(hle/videoout): flip-status race, time-based vblank counter, loud GetOutputStatus gap by @mattias800 in #84
- feat(ue4): IoStore bring-up — pak containers mount, GEngineLoop.PreInit passes, engine reaches RHI init by @mattias800 in #78
- docs(claude): issue-claim protocol for concurrent agents; Kyty reference calibration by @mattias800 in #85
- fix(hle/kernel): scePthreadOnce serializes per control (global lock could cross-deadlock) by @mattias800 in #86
- fix(gpu): decode the T#'s real Gen5 IMG_FMT — texture format/size no longer hardcoded RGBA8 by @mattias800 in #87
- Real indexed draws in the executor; retire the quad-fan heuristic (Fixes #64) by @mattias800 in #90
- fix(gpu/exec): render The Messenger's title screen + intro cutscene (per-draw + viewport-scale) by @mattias800 in #93
- fix(gpu/recompiler): resolve SRSRC for untyped MUBUF ops — never silently binding 2 by @mattias800 in #94
- fix(hle/apr): APR rsp-capture must not be __thread — static-TLS growth crashed the minimal boot by @mattias800 in #95
- fix(hle/time): anchor all wall-clock sources to the host real-time clock by @mattias800 in #96
- docs(claude): area lanes so parallel workstreams don't collide by @mattias800 in #98
- fix(gpu/exec): scale the guest viewport to the render framebuffer (reduced-res showed only bottom-left crop) by @mattias800 in #103
- fix(hle/kernel): EventFlag/Sema delete no longer frees the object under blocked waiters (UAF) by @mattias800 in #105
- fix(hle/mem): sceKernelAvailableDirectMemorySize reports the real largest free block by @mattias800 in #100
- fix(ue4): SetBuffer no longer maps over live guest heap — boots through RHI/Engine startup (#88) by @mattias800 in #106
- diag(boot_trace): PROSPER_DUMP_RAWTILE dumps exact padded tiled bytes for offline de-swizzle RE by @mattias800 in #109
- fix(hle/mem): sceKernelAllocateDirectMemory honors searchStart/searchEnd by @mattias800 in #110
- diag(gpu/exec): PROSPER_RTLOG — render-target vs sampled-texture correlation by @mattias800 in #111
- fix(ue4): map-flavor SetBuffer mirror no longer clobbers live heap — boots into online init (#107) by @mattias800 in #114
- fix(self): va2foff resolves PT_LOAD before DYNAMIC — unblocks PPSA02664 boot (0→1015 imports) by @mattias800 in #116
- fix(agc): real sceAgcCbNop + sceAgcDcbDmaData appenders — fixes PPSA02664 CreateWorkload crash by @mattias800 in #120
- fix(hle/libc): printf-family are real variadic functions (%f/stack/%s-past-4th no longer garbage) by @mattias800 in #123
- fix(recompiler): handle VOP1 v_nop — unblocks PPSA02664 vertex shaders (draws no longer skipped) by @mattias800 in #124
- fix(loader): resolve mis-based PT_DYNAMIC via containing PT_LOAD — raw-ELF IL2CPP modules parse (PPSA01885 boots through IL2CPP) by @mattias800 in #125
- docs: prosper-app frontend design (SDL3 window/audio/controllers over the headless core) by @mattias800 in #127
- feat(gpu): BC1/BC2/BC3 texture decode -> RGBA8 on upload by @mattias800 in #165
- fix(ue4): deliver async APR read completions — reaches AGC RHI bring-up (#115) by @mattias800 in #166
- fix(hle): __ctype_get_mb_cur_max returns the MB_CUR_MAX value, not a pointer by @mattias800 in #168
- fix(recompiler): v_cvt_u32_f32 / v_cvt_i32_f32 saturate like the hardware by @mattias800 in #169
- fix(host): emulate AMD SSE4a insertq/extrq on Intel hosts — Zen2 guest code runs (PPSA01885 past CreateWorkload) by @mattias800 in #170
- fix(recompiler): image_sample uses explicit LOD 0 outside the fragment shell by @mattias800 in #171
- fix(gpu): s_bfe_u64 const-fold sign-extends negative inline constants by @mattias800 in #173
- feat(frontend): prosper-app — run a PS5 title in a window with audio + controllers (#164) by @mattias800 in #172
- fix(recompiler): verify a forward branch past s_endpgm is a real early-out before clamping by @mattias800 in #174
- fix(host): init-fault byte dump survives a wild/null rip and restores page protection by @mattias800 in #176
- fix(kernel): non-fixed ReserveVirtualRange must search, not echo the hint — fixes MB3 canary corruption (#161) by @mattias800 in #179
- fix(gpu): map the full CB color-format table in vk_color_format; log unmapped triples once by @mattias800 in #181
- fix(gpu): enable robustImageAccess at device creation (storage-image OOB contract) by @mattias800 in #182
- fix(recompiler): apply VOP2 SDWA output modifier (omod/clamp) — unblocks PPSA02664 pixel shaders by @mattias800 in #175
- fix(hle): honor guest mutex types — Sony/FreeBSD ERRORCHECK default, settype mapped, FreeBSD errnos by @mattias800 in #183
- fix(recompiler): special ALU operands — track VCC/ttmp scalar scratch, reject unrepresentable reads by @mattias800 in #184
- fix(hle): sceKernelDlsym honors its module handle via per-module export tables by @mattias800 in #185
- diag(hle/pad): log scePadOpen/Init for input-init observability by @mattias800 in #195
- diag(gpu): render-frontier tooling — VS SPIR-V dump, cbuf/pipeline logs, backend isolation switches by @mattias800 in #193
- fix(gpu): detile derives 4KB-tile geometry from the element size (8/16-bpp support) by @mattias800 in #194
- fix(hle): guest thread stacks are glibc-owned and reclaimed; attr stacksize honored; registry purged on exit by @mattias800 in #196
- fix(recompiler): size the LDS array from the shader's real allocation, not a hardcoded 16 KB by @mattias800 in #197
- feat(frontend): make prosper-app run the game — shared boot_program + live renderer + audio/controllers (#164) by @mattias800 in #192
- fix(hle): hinted map uses MAP_FIXED_NOREPLACE — stop silently clobbering live mappings by @mattias800 in #198
- fix(gpu): decode SMEM SOFFSET register + sign-extend the 21-bit immediate by @mattias800 in #199
- feat(hle/pad): PROSPER_PAD_SCRIPT — timed input for headless menu navigation by @mattias800 in #202
- diag(host): SSE4A rate probe + SA_ONSTACK fault catcher for mid-load crash triage by @mattias800 in #203
- fix(agc): EventWrite carries its address and honors the completion write by @mattias800 in #204
- fix(recompiler): MUBUF idxen+offen applies BOTH VADDR terms (index and byte offset) by @mattias800 in #200
- fix(recompiler): reject a packed vertex fetch whose element base isn't provably dword-aligned by @mattias800 in #201
- fix(gpu): GPU EOP timestamp shares the guest TSC clock (RELEASE_MEM data_sel=3) by @mattias800 in #205
- fix(hle): track the MsgDialog lifecycle — NONE before Open, not spurious FINISHED by @mattias800 in #207
- fix(recompiler): const-folded vertex fetch uses gl_VertexIndex*stride — real geometry renders (PPSA01885 first in-game frame) by @mattias800 in #206
- fix(hle): APR completions echo the guest-chosen tag (+ #183 mutex regression) — DOLL reaches first DCBs + flip (#208) by @mattias800 in #209
- fix(host): fault handler guest-%fs-safe — raw SYS_write + latched env flags (#159) by @mattias800 in #211
- fix(hle): AGCSHADER dump uses env path + s_endpgm-derived size (#160) by @mattias800 in #212
- fix(hle): APR id-0 pointer-tag completions are per-request/uncoalesced — DOLL frame loop runs (#210) by @mattias800 in #214
- fix(loader): DTPMOD64 resolves a cross-module TLS import to the defining module's id by @mattias800 in #215
- fix(host): guest static-TLS layout uses each module's real PT_TLS p_align by @mattias800 in #216
- fix(hle): sceKernelLoadStartModule returns ENOENT for a path not in the linked set by @mattias800 in #217
- diag(agc): surface an unconfirmed GetDataPacketPayloadAddress packet type loudly by @mattias800 in #218
- fix(recompiler): v_interp_mov reads a flat (provoking-vertex) attribute, not a smooth blend by @mattias800 in #219
- fix(gpu): keep textures off bindings 2/3 so a texture-first shader can't collide the hardwired cbufs by @mattias800 in #220
- fix(hle): libSceAudioOut2 null-device backend — stabilizes DOLL frame loop (refs #213, #222) by @mattias800 in #224
- fix(hle): Windows sceKernelWaitOnAddress honors the guest timeout (mirror the Linux path) by @mattias800 in #223
- fix(hle): sceKernelWaitOnAddress honors the guest timeout by default; drop the 5 s cap by @mattias800 in #221
- ci: build the Linux desktop app (prosper-app) with SDL3 + Vulkan by @mattias800 in #225
- fix(gpu): recompile mask=0xF draws — packed dyn-vfetch alignment + register-offset V# load by @mattias800 in #226
- fix(agc/hle): four post-load walls — DOLL runs deep, dispatches flow, no OOM (Fixes #222, refs #213/#82) by @mattias800 in #231
- feat(frontend): keyboard controls for prosper-app by @mattias800 in #230
- feat(render): render-to-texture via a color-target RGBA cache (opt-in) by @mattias800 in #233
- fix(hle): deliver every GPU EOP completion (coalesce=false) — unblocks The Messenger's scene activation by @mattias800 in #236
- fix(render): decode single-channel (R8) sampled textures instead of reading them as RGBA8 by @mattias800 in #237
- fix(gpu): lower alpha-test/clip() discard branches so cutout+text draws recompile by @mattias800 in #239
- docs: point agents at the PS5 3.20 firmware library NID↔name database by @mattias800 in #243
- tools(il2cpp): PS5 PRX->ELF flattener for IL2CPP symbolication by @mattias800 in #242
- fix(agc): implement w1KFAHVqpaU final-buffer submit variant + guest-thread-names (refs #232) by @mattias800 in #244
- test(snapshot): local golden-image rendering regression guard + AGENTS.md docs by @mattias800 in #227
- feat(hle/pad): implement the 4 remaining libScePad imports (full Messenger coverage) by @mattias800 in #245
- feat(tools): screenshot — capture a PNG every N rendered frames from a game run by @mattias800 in #246
- diag(gpu): PROSPER_DRAWDIAG + DUMP_ATLAS-by-address for the caption investigation by @mattias800 in #247
- tools(il2cpp): resolve.py address→C# symbolicator + complete the setup recipe by @mattias800 in #249
- diag(host): PROSPER_FAULT_SKIP — step past a specific crash for bring-up by @mattias800 in #250
- fix(gpu): correct GFX10 SW_4KB_S within-tile element order — kills the cross-game texture dither by @mattias800 in #251
- fix(host): preload PSNCore.prx/PSNCommon.prx so the Unity PSN plugin init resolves by @mattias800 in #252
- feat(tools): screenshot --seconds — capture on a wall-clock interval by @mattias800 in #253
- fix(hle/agc): DOLL async-loading stability — #241 free-list + EOP/APR completion ordering (Fixes #241, refs #232) by @mattias800 in #254
- fix(hle): sceUserServiceGetGamePresets must return success — restores ALL gamepad input (Fixes #234) by @mattias800 in #255
- fix(gpu): 8-bpp SW_4KB_S de-swizzle — R8 caption-font atlas was scrambled (refs #102) by @mattias800 in #256
- fix(hle): GetDisplaySafeAreaInfo fills ratio=1.0 + #232 reframe (GameThread ticks; PlayGo/SaveData is the gate) by @mattias800 in #258
- feat(hle): DOLL scePlayGo/sceSaveData/sceNpTrophy2/sceShare service layer — save flow completes (refs #232) by @mattias800 in #259
- fix(gpu): honor the game's S# sampler (filter + wrap) instead of a hardcoded LINEAR/clamp by @mattias800 in #260
- fix(gpu): vertex fetch spans the indexed range, not the per-glyph V# (refs #257) by @mattias800 in #265
- fix(gpu): implement the stencil test — masks now clip (title shimmer, UI) (Fixes #264) by @mattias800 in #266
- fix(gpu): decode + apply T# DST_SEL channel swizzle (Fixes #261) by @mattias800 in #268
- feat(render): PROSPER_RTT_PERTARGET — per-color-target render + RTT caching by @mattias800 in #269
- feat(render): PROSPER_DUMP_CONTENT — capture intermittent content frames by @mattias800 in #267
- fix(gpu): implement DOLL's Gen5 indexed-draw builders — first UE4 scene geometry renders (Fixes #232) by @mattias800 in #271
- fix(gpu): carry T# sRGB flag + document the gamma-space finding (refs #263) by @mattias800 in #272
- fix(gpu): decode remaining S# sampler fields; apply border color + LOD (Fixes #262) by @mattias800 in #274
- fix(gpu): resolve EUD-resident shader descriptors — The Messenger's text is now VISIBLE (Fixes #257) by @mattias800 in #276
- feat(gpu): recompile DOLL's failing shaders — 995→85 skipped draws (−91%) (refs #273) by @mattias800 in #277
- fix(hle): default system language to US English (configurable via PROSPER_SYS_LANG) by @mattias800 in #280
- fix(hle): serialize AGC submits — DOLL survives scene-begin (host GpuState race) (Fixes #278) by @mattias800 in #281
- diag: log SIGILL faulting bytes + guest canary on __stack_chk_fail (refs #283) by @mattias800 in #285
- fix(pad): ScePadControllerInformation is 28 bytes, not 32 — stops a guest stack overflow (Fixes #283) by @mattias800 in #287
- feat(gpu): GFX10 SW_64KB_S / SW_64KB_R_X texture de-swizzle (Fixes #288) by @mattias800 in #291
- fix(gpu): BC4/BC5/BC7 texture decode + real-bpt fp16 upload (Fixes #290) by @mattias800 in #293
- fix(gpu): map UE4 scene-color fmt 36 (R11G11B10F) + unify RTT gate + RT-sample write-back (refs #294) by @mattias800 in #295
- feat(gpu): flip-anchored present + RT persistence + UE4 SRT descriptor resolution + gather4_lz_o (refs #294) by @mattias800 in #296
- feat(gpu): DOLL recompiler frontier — CF structurizer (if/else, execz, waterfalls), DPP derivatives, VOP3P/f16, int attrs (refs #273) by @mattias800 in #297
- feat(input-replay): record/replay routes + deterministic checkpoints (#302, all 4 steps) by @mattias800 in #301
- fix(gpu): fold MUBUF SOFFSET/inst-offset into dynamic vertex-fetch V# bases — real Slate UI vertex attributes (refs #273) by @mattias800 in #303
- diag(ue4): DOLL loading-progression verdict (STALLED at front-end patch/entitlement gate) + reusable progress diagnostics (refs #306) by @mattias800 in #307
- test(tile): lock 16-byte-element SW_64KB_S detile (block-unaligned BC7) — DOLL banner tiling proven correct (refs #304) by @mattias800 in #308
- diag(render): black-scene probes (TEXCOMMIT/ALPHA1/CBLOG) — refs #300 by @mattias800 in #311
- fix(hle): honest offline signed-out console — DOLL advances past the loading screen to an interactive title/menu (Fixes #306) by @mattias800 in #313
- fix(gpu): use the game's real fast-clear colour, not hardcoded debug blue (#309) by @mattias800 in #314
- fix(gpu): auto-detect DOLL's unannounced 32-bit index buffers — real UMG/Slate quads (Fixes #304) by @mattias800 in #318
- fix(gpu): apply the S# anisotropy sampler field (#275) by @mattias800 in #317
- test(gpu): Messenger VS/PS recompile guard against silent re-blue (#228) by @mattias800 in #321
- perf(render): reuse one Vulkan device across render_draws_rgba calls by @mattias800 in #322
- fix(gpu): stencil REPLACE writes STENCILOPVAL, not STENCILTESTVAL by @mattias800 in #284
- fix(hle): implement libkernel/posix signal + time-conversion stubs (#190) by @mattias800 in #323
- feat(hle): implement libSceAvPlayer lifecycle (valid handle + IsActive done) by @mattias800 in #326
- feat(gpu): sceAgcDcbJump + SetPredication/SetPacketPredication — execute DOLL's predicated backbuffer-composite segments (refs #319) by @mattias800 in #327
- fix(hle): stop a no-op shadowing scePthreadGetprio/Getaffinity (#330) by @mattias800 in #331
- docs: tell agents to work in their own git worktree (shared main checkout) by @mattias800 in #332
- fix(hle): honest sceKernelAio* + pipe-drain completion-write model + #312 attribution tooling (refs #312) by @mattias800 in #328
- fix(gpu): recompile 2D_ARRAY image_sample instead of rejecting the shader (refs #325) by @mattias800 in #336
- docs: on a Windows host, run git through PowerShell (not WSL) by @mattias800 in #334
- test(hle): lock the fill-contract of the boot-critical service getters by @mattias800 in #335
- test(hle): guard against the register_fn double-registration shadow class (#330) by @mattias800 in #333
- fix(gpu): execute AGC DMA_DATA immediate fills — the #312 consumed-marker label-init protocol leg (refs #312) by @mattias800 in #337
- feat(hle): implement libSceImeDialog + libSceSaveData memory API (#191) by @mattias800 in #340
- fix(hle): memory HLE returns real SCE error codes, not raw errno 0x16 by @mattias800 in #341
- feat(gpu): divergent execz-exit loops, BC6H, cube sampling + per-pc descriptor provenance — all 4 title-composite PSes recompile (refs #273) by @mattias800 in #346
- feat(hle): implement libSceIme keyboard API (#186) by @mattias800 in #345
- feat(hle): implement libSceAjm decode lifecycle (headless) (#187) by @mattias800 in #348
- fix(hle): guard g_tls_mods/g_unwind_mods against realloc during runtime module load (Fixes #344) by @mattias800 in #350
- feat(hle): PlatformUi backend hook — frontend can service ImeDialog (#347) by @mattias800 in #349
- feat(hle): route MsgDialog + ErrorDialog through the PlatformUi hook (#347) by @mattias800 in #351
- feat(app): SDL3 PlatformUi — real message boxes for MsgDialog/ErrorDialog (#347) by @mattias800 in #353
- fix(hle): correct sceAvPlayerInitEx ABI (error-code + out-param handle) by @mattias800 in #355
- fix(hle): ImeDialog status uses its own enum (Finished=2), not common-dialog 3 by @mattias800 in #356
- feat(hle): Ime keyboard presence via the PlatformUi hook (#347) by @mattias800 in #359
- feat(app): ImeDialog text entry — real SDL text field via a main-thread pump (#347) by @mattias800 in #357
- diag(render): PROSPER_RENDER_LAST bounds the live-render window by @mattias800 in #360
- feat(gpu): WAIT_REG_MEM barrier model (per-address ordering + EOP visibility contract), opt-in — and the measured demolition of the #312 wait-ordering hypothesis (refs #312) by @mattias800 in #361
- fix(hle/mem): prot 0 maps to PROT_NONE, not a default RW (#342) by @mattias800 in #362
- diag(gpu): generalized per-draw kill-isolation harness (PROSPER_DRAW_ISO / PROSPER_ISO_AT) by @mattias800 in #363
- fix(loader): mask the SELF data-segment key to 12 bits (#339) by @mattias800 in #364
- fix(loader): make an unhandled TLS relocation loud, not silent (#338) by @mattias800 in #365
- fix(hle/pad): DeviceClassGetExtendedInformation writes 0x14, not 0x20 (stack overrun) by @mattias800 in #402
- fix(hle/service): sceSystemServiceReceiveEvent returns NO_EVENT, not garbage-success by @mattias800 in #403
- fix(gpu): live renderer uses the game's fast-clear colour, not debug blue (#367) by @mattias800 in #404
- fix(hle/libc): register missing conversion/sort/tokenize/scan thunks by @mattias800 in #405
- fix(hle/file): implement sceKernelFtruncate (was fake-success -> corrupt saves) by @mattias800 in #407
- fix(gpu): back-face stencil honours DB_DEPTH_CONTROL.BACKFACE_ENABLE (#377) by @mattias800 in #406
- fix(hle/np): register sceNpGetNpId / sceNpGetAccountId as signed-out (complete #306) by @mattias800 in #408
- fix(gpu): propagate decoded S# sampler + T# swizzle to live textures (#369) by @mattias800 in #409
- fix(hle/file): implement sceKernelRename (was fake-success -> lost atomic saves) by @mattias800 in #410
- fix(gpu): map RectList/QuadList topologies; log unmapped prim types (#384) by @mattias800 in #411
- fix(hle/time): sceKernelSleep returns seconds-remaining (0), not the input by @mattias800 in #412
- fix(hle/kernel): implement scePthreadMutexTimedlock / CondTimedwait (were faking success) by @mattias800 in #414
- fix(gpu): skip zero-vertex-count draws instead of fabricating geometry (#400) by @mattias800 in #413
- fix(hle/time): periodic AddTimerEvent + distinct HR-timer filter (-15) by @mattias800 in #415
- fix(hle/appcontent): add-content enumeration returns no-DLC truth, not garbage count by @mattias800 in #416
- fix(gpu): correct SW_4KB_S within-tile order for 2/8/16-byte elements (#379) by @mattias800 in #417
- fix(hle/mem): implement sceKernelAvailableFlexibleMemorySize (was uninitialized budget) by @mattias800 in #418
- fix(hle/file): loop sceKernelWrite/Pwrite to the full-write contract by @mattias800 in #419
- fix(hle/service): ParamGetInt ENTER_BUTTON_ASSIGN defaults to Cross, not Circle by @mattias800 in #421
- fix(gpu): sceAgcCbNop(dcb,1) must not underflow the PM4 length field (#401) by @mattias800 in #420
- fix(gpu): extract + resolve separate alpha blend (CB_BLEND0_CONTROL) (#381) by @mattias800 in #422
- fix(recompiler): s_max_i32/s_max_u32 SCC is >= (not >) on ties (#397) by @mattias800 in #423
- fix(gpu): clear depth to guest DB_DEPTH_CLEAR / compare-op default, not 0.5 (#371) by @mattias800 in #425
- fix(hle/mem): sceKernelMunmap rejects a zero-length unmap with EINVAL by @mattias800 in #424
- fix(hle/kernel): implement scePthreadMutexattrGettype (was uninitialized out) by @mattias800 in #426
- fix(hle/file): implement sceKernelTruncate (path-based sibling of ftruncate) by @mattias800 in #428
- fix(gpu): set-0 (vertex) textures need VERTEX stageFlags, not fragment-only (#376) by @mattias800 in #427
- fix(hle/time): register _nanosleep, Gettimezone, ClockGetres, clock_settime by @mattias800 in #429
- fix(gpu): bounds-check EUD descriptor reads in build_shader_resources (#375) by @mattias800 in #430
- fix(hle/savedata): persist SaveDataMemory slots to disk (survive restart) by @mattias800 in #432
- fix(hle/file): implement readv/writev/preadv/pwritev/getdirentries by @mattias800 in #434
- fix(gpu): guard the fold-time WAIT_REG_MEM label read (#380) by @mattias800 in #433
- fix(hle/libc): posix_memalign returns EINVAL for a bad alignment, not ENOMEM by @mattias800 in #435
- fix(gpu): const-fold must not fold an untracked SOFFSET to 0 (#398) by @mattias800 in #436
- fix(hle/kernel): scePthreadAttrSetdetachstate really sets it (was a no-op leak) by @mattias800 in #437
- fix(hle/pad): register scePadOpenExt and scePadIsValidHandle by @mattias800 in #438
- fix(hle/np): CheckNpAvailability/Reachability signed-out; register CommonDialogIsUsed by @mattias800 in #441
- feat(gpu): log a one-time diagnostic for unhandled GFX10 tile_modes (#383) by @mattias800 in #439
- docs(gpu): correct DecodedImageDescriptor.type SQ_RSRC_IMG enum comment (#378) by @mattias800 in #440
- refactor(gpu): remove dead/divergent R_* sub-op block from pm4_registers.hpp (#385) by @mattias800 in #443
- fix(gpu): expose rendered-frame dims so scaled-render screenshots aren't dropped (#399) by @mattias800 in #444
- fix(render): restore the RTT live renderer reverted by #360 (reconciled with #404/#409) + #300 pass-order + #319 root-cause by @mattias800 in #431
- fix(gpu): resolve EUD-resident textures in build_shader_resources (#382) by @mattias800 in #445
- fix(recompiler): image_sample_l on a 2D_ARRAY takes LOD from the 4th coord, not the slice (#373) by @mattias800 in #446
- fix(recompiler): buffer_load_format_* default-fills missing components (0,0,0,1) (#368) by @mattias800 in #447
- fix(gpu): guard the fold-time WAIT_REG_MEM 'not satisfied' diagnostic read (#448) by @mattias800 in #459
- fix(hle/kernel): 4-arg pthread_create must not read a4 as a thread name by @mattias800 in #463
- fix(hle/file): route the AIO write path through write_full (was raw pwrite) by @mattias800 in #467
- fix(gpu): resolve EUD-resident paired samplers in build_shader_resources (#451) by @mattias800 in #468
- fix(hle/savedata): sceSaveDataDirNameSearch enumerates real saves (#299) by @mattias800 in #470
- fix(gpu): widen vertex-texture upload barrier to the VERTEX stage (#454) by @mattias800 in #471
- fix(hle/libc): implement the Annex-K bounded functions (were fake-success no-ops) by @mattias800 in #472
- fix(hle/appcontent): sceAppContentAppParamGetInt reports SKU_FLAG = FULL, not 0 by @mattias800 in #473
- fix(gpu): cap the indexed-draw vertex range to prevent a multi-GB VB upload (#461) by @mattias800 in #474
- fix(hle/mem): non-named MapFlexibleMemory must not read a4 as a name (wild strncpy) by @mattias800 in #475
- fix(hle/service): four service getters stop returning garbage/wrong out-params by @mattias800 in #477
- fix(gpu): const-fold invalidates BOTH dwords of a 64-bit SOP1 dest (#460) by @mattias800 in #476
- fix(recompiler): s_mul_hi_i32 is gfx10 SOP2 opcode 0x36, not 0x37 (#462) by @mattias800 in #469
- fix(hle/file): implement lstat and fsync (were fake-success) by @mattias800 in #478
- fix(gpu): reject over-length PM4 packets in begin_packet + WriteData (#450) by @mattias800 in #479
- fix(recompiler): v_cmpx writes EXEC only, not VCC (#464) by @mattias800 in #480
- fix(recompiler): clamp bitfield-extract so Offset+Count <= 32 (avoid SPIR-V UB) (#455) by @mattias800 in #481
- fix(gpu): latch depth and stencil clear independently (#457) by @mattias800 in #482
- fix(gpu): guard the pend-queue completion write against an unmapped target (#449) by @mattias800 in #483
- docs: refresh READMEs to current state by @mattias800 in #484
- fix(hle/kernel): implement scePthreadRwlockTimedrd/wrlock (were faking success) by @mattias800 in #487
- fix(hle/libc): register rand/srand/rand_r (rand() was a constant 0) by @mattias800 in #488
- fix(gpu): honor guest cull/front-face/polygon mode (PA_SU_SC_MODE_CNTL) (#456) by @mattias800 in #486
- fix(hle/file): implement dup/dup2 (were fake-success returning fd 0 = stdin) by @mattias800 in #489
- fix(hle/libc): portable rand_r — unbreak the MinGW/Windows build by @mattias800 in #492
- fix(hle/kernel): implement the scePthreadSem* semaphore family (were faking success) by @mattias800 in #491
- fix(recompiler): v_cvt_pkrtz saturates f16 overflow instead of emitting Inf (#452) by @mattias800 in #490
- test(savedata): make test_savedata_ime hermetic across ctest runs by @mattias800 in #493
- fix(hle/kernel): implement the scePthreadBarrier* family (were faking success) by @mattias800 in #494
- fix(hle/time): timer event data is expirations-since-last-read, not a running total by @mattias800 in #496
- feat(tools): re/xref.py — cross-reference finder for unsymbolicated PS5 modules by @mattias800 in #495
- fix(hle/audio): sceAudioOutOutputs returns one grain, not the sum over ports by @mattias800 in #497
- fix(gpu): in-SGPR cbufs set only sgpr_base, not srt_offset (no by_srt_offset false-match) (#453) by @mattias800 in #498
- fix(hle/mem): implement sceKernelReleaseFlexibleMemory (was fake-success -> VA leak) by @mattias800 in #500
- docs(charter): document the RE toolbox + tell agents to build tools, not avoid them by @mattias800 in #499
- diag(hwbp): PROSPER_HWBP_ARGS prints SysV arg registers per hit by @mattias800 in #503
- fix(gpu): stencil ONES op writes 0xFF; pick the REPLACE reference per op (#466) by @mattias800 in #501
- fix(hle/mem): implement sceKernelMtypeprotect (was fake-success -> dropped protection) by @mattias800 in #502
- fix(gpu): map aliased CB packed formats COLOR_10_11_11(0x6)/COLOR_10_10_10_2(0x8) (#465) by @mattias800 in #504
- fix(gpu): #312 pend-queue drain serialization + suppress ReleaseMem freelist stomps (partial) by @mattias800 in #505
- diag(#312): POOLSHIFT tripwire exonerates the GPU write path for the 0x20015f00 byte-shift by @mattias800 in #506
- diag(#312): value-triggered pool-shift instruments + off-by-one-address localization by @mattias800 in #507
- feat(input): frame-anchored PROSPER_PAD_SCRIPT (f: = flip N) — deterministic state-reach (#302) by @mattias800 in #509
- diag+fix(#312): capture the MallocBinned3 corruptor — prosper's GPU value-1 fence write forges a freelist pointer (HOST) by @mattias800 in #510
- fix(gpu): don't latch depth clear from an ALWAYS-compare draw — Messenger menu no longer black (Fixes #508) by @mattias800 in #511
- diag(#312): label free-state WAF guard — strictly-correct, does not close; residual is GPU-side-undetectable by @mattias800 in #512
- docs: replace stale Messenger render frontier by @mattias800 in #517
- feat(gpu): add immutable realized-submit capture replay by @mattias800 in #519
- fix(gpu): retain color-disabled depth/stencil passes by @mattias800 in #521
- fix(gpu): restore Messenger grading LUT producer by @mattias800 in #528
- feat(gpu): validate SPIR-V descriptor contracts by @mattias800 in #529
- fix(gpu): persist guest depth-stencil surfaces by @mattias800 in #532
- fix(gpu): correct guest front-face mapping by @mattias800 in #534
- fix(hle/time): PROSPER_DET_CLOCK flip-paced clock — fixes the frozen title shimmer (Fixes #240) by @mattias800 in #513
- fix(tool): capture raw scanout before renderer frames by @mattias800 in #536
- fix(hle): honor Dead Cells memory initialization contracts by @mattias800 in #538
- fix(gpu): track depth-stencil aspect validity by @mattias800 in #541
- docs: update current project status by @mattias800 in #543
- fix(hle): initialize AGC resource name limit by @mattias800 in #544
- fix(tool): diagnose screenshot output failures by @mattias800 in #548
- fix(hle): return a valid guest process id by @mattias800 in #553
- feat(hle): add a silent NGS2 lifecycle by @mattias800 in #554
- docs: update the Dead Cells frontier by @mattias800 in #556
- feat(tool): add screenshot render warmup by @mattias800 in #557
- fix(tool): list content-metric snapshots by @mattias800 in #559
- test(snapshot): add Dead Cells splash guard by @mattias800 in #560
- feat(input): load reusable pad routes by @mattias800 in #561
- feat(input): record replayable pad routes by @mattias800 in #562
- feat(checkpoint): add Messenger story route by @mattias800 in #563
- fix(hle): complete Dead Cells service contracts by @mattias800 in #564
- feat(input): add Dead Cells gameplay route by @mattias800 in #567
- feat(gpu): capture temporal RTT replay seeds by @mattias800 in #570
- fix(agc): correct CbDispatch argument order by @mattias800 in #572
- fix(agc): confirm type-0 data packet payload by @mattias800 in #575
- fix(agc): bind Dead Cells compute programs by @mattias800 in #578
- docs: refresh current compatibility frontier by @mattias800 in #579
- fix(agc): derive compute groups from thread counts by @mattias800 in #581
- feat(gpu): execute buffer compute dispatches by @mattias800 in #582
- feat(gpu): trace guest writer provenance by @mattias800 in #585
- fix(gpu): preserve mixed submit order by @mattias800 in #587
- feat(gpu): trace live resource versions by @mattias800 in #589
- feat(gpu): compute-dispatch fail-trace for PROSPER_DYNTRACE_FAIL (#590) by @mattias800 in #591
- feat(screenshot): add capture manifests and assertions (#593) by @mattias800 in #597
- feat(gpu): record native submit and present timelines (#594) by @mattias800 in #598
- feat(gpu): materialize selected timeline submits by @mattias800 in #599
- feat(gpu): graph captured resource dependencies by @mattias800 in #600
- gpu: record prior producer identities in timelines by @mattias800 in #601
- gpu: replay an exact predecessor capsule by @mattias800 in #602
- gpu: capture deduplicated submit closure bundles by @mattias800 in #605
- gpu: trace full temporal target lifetimes by @mattias800 in #607
- gpu: scale exact temporal capture bundles by @mattias800 in #609
- feat(gpu): deterministic playable closure debugging by @mattias800 in #612
- fix(gpu): honor compute HTILE fast clears by @mattias800 in #616
- gpu: structure uniform VCC exit loops by @mattias800 in #619
- GPU capture: retain failed operation diagnostics by @mattias800 in #620
- tools: stabilize Dead Cells splash guard by @mattias800 in #621
- docs: cross-platform porting plan (Windows, macOS, Android) by @mattias800 in #610
- port: run prosper core on macOS (x86_64 under Rosetta 2), boot Blasphemous 2 into guest code by @mattias800 in #613
- ci: add macOS (x86_64 / Rosetta 2) build+test job by @mattias800 in #622
- tools: add stable gameplay timeline selectors by @mattias800 in #623
- feat(gpu): checkpoint persistent depth stencil state by @mattias800 in #625
- port(win): Windows guest-execution substrate foundation (compile+link, boot not yet verified) by @mattias800 in #624
- gpu: structure proven-uniform VCC control flow (loops + forward ifs) in the compute shell (#590) by @mattias800 in #627
- port(win): Windows guest boots multi-threaded into the frame loop (lazy-commit + worker-thread ABI/TLS) by @mattias800 in https://github.com/mattias800/ps5ys/pull/628
- gpu: fold const-fold descriptor uses into the compute resource table (#590) by @mattias800 in https://github.com/mattias800/ps5ys/pull/629
- fix(gpu/recompiler): Dead Cells gameplay composition — MRT0 color output + dropped compute dispatch (Fixes #566) by @mattias800 in https://github.com/mattias800/ps5ys/pull/626
- fix(win): commit one guest page on reserved first touch by @mattias800 in https://github.com/mattias800/ps5ys/pull/632
- docs: refresh Dead Cells status after composition fix by @mattias800 in https://github.com/mattias800/ps5ys/pull/637
- fix(loader): preload optional Unity FMOD plugins by @mattias800 in https://github.com/mattias800/ps5ys/pull/640
- fix(agc): emit DCB debug marker packets by @mattias800 in https://github.com/mattias800/ps5ys/pull/643
- fix(http): implement local URI parsing by @mattias800 in https://github.com/mattias800/ps5ys/pull/645
- fix(kernel): leave host FS active on thread return by @mattias800 in https://github.com/mattias800/ps5ys/pull/647
- fix(input): make slow-render routes observable by @mattias800 in https://github.com/mattias800/ps5ys/pull/649
- fix(gpu): complete Blasphemous 2 first gameplay by @mattias800 in https://github.com/mattias800/ps5ys/pull/650
- port(win): build + initialize the live Vulkan renderer on Windows by @mattias800 in https://github.com/mattias800/ps5ys/pull/655
- port(win): reserve-alignment + worker-stack registration + sync diagnostics (job-system stall pinpointed) by @mattias800 in https://github.com/mattias800/ps5ys/pull/658
- docs(porting): localize the Windows stall to the Unity GC-helper init handshake by @mattias800 in https://github.com/mattias800/ps5ys/pull/659
- gpu: execute compute dispatches with image bindings (#590) by @mattias800 in https://github.com/mattias800/ps5ys/pull/656
- fix(win): native Win32 futex for sceKernelWaitOnAddress (fixes lost-wakeup boot wedge) + sync diagnostics by @mattias800 in https://github.com/mattias800/ps5ys/pull/663
- fix(win): implement positioned/vectored file IO (pread/pwrite/*v) — unblocks Unity asset streaming by @mattias800 in https://github.com/mattias800/ps5ys/pull/665
- docs(porting): Windows guest streams assets + drives GPU PM4; next frontier = EOP-completion handshake by @mattias800 in https://github.com/mattias800/ps5ys/pull/666
- fix(win): wake GPU-label waiters via native WakeByAddress (GPU->CPU futex wake was a no-op) by @mattias800 in https://github.com/mattias800/ps5ys/pull/667
- Fix intermittent Dead Cells texture-memory crash by @mattias800 in https://github.com/mattias800/ps5ys/pull/668
- docs(win): HANDOFF — Windows core boots to the first GPU fence; stack-arg ABI is the next fix by @mattias800 in https://github.com/mattias800/ps5ys/pull/670
- Fix Windows VEH recovery entry ABI by @mattias800 in https://github.com/mattias800/ps5ys/pull/671
- Forward guest stack arguments through HLE import bridge by @mattias800 in https://github.com/mattias800/ps5ys/pull/674
- Improve guest binary reference tooling by @mattias800 in https://github.com/mattias800/ps5ys/pull/677
- fix(hle/pad): headless default presents one connected controller (Fixes #680) by @mattias800 in https://github.com/mattias800/ps5ys/pull/681
- Fix Windows binary file reads by @mattias800 in https://github.com/mattias800/ps5ys/pull/679
- Fix Windows GC exception delivery by @mattias800 in https://github.com/mattias800/ps5ys/pull/684
- test(ppsa02664): input route reaching the gameplay scene (repro for #320) by @mattias800 in https://github.com/mattias800/ps5ys/pull/687
- feat(win): validate native frontend through Messenger gameplay by @mattias800 in https://github.com/mattias800/ps5ys/pull/689
- feat(macos): realtime harness app (prosper-app) on macOS via SDL3 + MoltenVK by @mattias800 in https://github.com/mattias800/ps5ys/pull/685
- feat(macos): guest %fs TLS via trap-and-emulate — boots into Unity GPU init by @mattias800 in https://github.com/mattias800/ps5ys/pull/692
- docs(gpu): tag blend-factor decode (#320) by @mattias800 in https://github.com/mattias800/ps5ys/pull/696
- fix(win): preserve direct-memory physical aliases by @mattias800 in https://github.com/mattias800/ps5ys/pull/699
- feat(win): add one-command native frontend launcher by @mattias800 in https://github.com/mattias800/ps5ys/pull/700
- gpu(recompiler): materialize small u64 constants via OpUConvert (MoltenVK vertex-shader fix, #693) by @mattias800 in https://github.com/mattias800/ps5ys/pull/701
- macos: use LunarG SDK MoltenVK for rendering (resolves the #693 shader-compile blocker in practice) by @mattias800 in https://github.com/mattias800/ps5ys/pull/703
- diag(avplayer): log full sceAvPlayer call sequence via PROSPER_SVCLOG (#324) by @mattias800 in https://github.com/mattias800/ps5ys/pull/706
- feat(video): sceAvPlayer playback lifecycle + video-backend seam (#705) by @mattias800 in https://github.com/mattias800/ps5ys/pull/708
- perf(gpu): remove live renderer CPU bottlenecks by @mattias800 in https://github.com/mattias800/ps5ys/pull/704
- Add Prosper logo and compatibility guide by @mattias800 in https://github.com/mattias800/ps5ys/pull/709
- fix(loader): keep Linux guest-FS stubs within import slots by @mattias800 in https://github.com/mattias800/ps5ys/pull/698
- Adopt Pixel Portal as the Prosper logo by @mattias800 in https://github.com/mattias800/ps5ys/pull/711
- Fix PC-keyed scalar buffers in UE scene color by @mattias800 in https://github.com/mattias800/ps5ys/pull/682
- fix(capture): fault-safe stage-table build on unmapped user_data (#713) by @mattias800 in https://github.com/mattias800/ps5ys/pull/717
- Improve renderer throughput and publish the Windows app by @mattias800 in https://github.com/mattias800/ps5ys/pull/716
Full Changelog: https://github.com/mattias800/ps5ys/commits/v0.1.0