Commit Graph
653 Commits
Author SHA1 Message Date
boykopovar d807f36b63 Merge pull request #104 from boykopovar/fix/ci-release-win-bash
Windows tests were run via Git Bash. Windows build, tests, and libs target now use cmd.
v0.1.0
2026-09-29 00:43:15 +03:00
boykopovar 141b7d7ff0 fix(ci): use git bash for windows release 2026-09-29 00:38:21 +03:00
boykopovar 64066b6e9a Merge pull request #103 from boykopovar/feat/provide-release
Feat/provide release
Added a release workflow for v* tags: build Windows and Linux, run tests, and publish only if both platforms are successful. The release contains PRX archives, relinker executables, and documentation from docs/user. The build cache is reused.

- `prx-windows-v0.1.0.zip`
- `prx-windows-v0.1.0.tar.gz`
- `prx-linux-v0.1.0.zip`
- `prx-linux-v0.1.0.tar.gz`
- `relinker-v0.1.0.exe`
- `relinker-v0.1.0`
- `COMPATIBILITY.md`
- `INPUT_MAPPING.md`
2026-09-29 00:25:39 +03:00
boykopovar 1bc7f01511 feat(ci): add version to release file names 2026-09-29 00:22:44 +03:00
boykopovar 1071c9e09c feat(ci): add release workflow + update readme 2026-09-29 00:15:21 +03:00
boykopovar 49a78191e6 Merge pull request #99 from boykopovar/fix/libcohtml-cmake-rule
fix(libcohtml): fix build libcohtml with target libs on linux
2026-09-28 23:25:45 +03:00
boykopovar 46382612cb fix(libcohtml): fix build libcohtml with target libs o linux 2026-09-28 23:15:22 +03:00
boykopovar 00261033fa refactor(docs): separated user and dev in docs + compatibility file 2026-09-28 22:58:17 +03:00
boykopovar dee7ecb3d8 Merge pull request #27 from QDarkRex/refactor/kernel-error-header
refactor(kernel): share SCE kernel error codes through KernelErrors.hpp
2026-09-28 22:07:32 +03:00
boykopovar 14a6d28cce Merge pull request #90 from adriadam10/ci-conflict-label
ci: label pull requests that conflict with main
2026-09-28 21:53:51 +03:00
boykopovar 4e418f1c98 Merge pull request #91 from adriadam10/ci-area-labels
ci: label pull requests by area
2026-09-28 21:53:10 +03:00
boykopovar fac193057c Merge pull request #41 from adriadam10/ci-build
ci: build and test on Linux and Windows
2026-09-28 21:50:51 +03:00
boykopovar 4c6a929657 Merge pull request #89 from adriadam10/pr-template
docs: add pull request template with the review checklist
2026-09-28 21:45:35 +03:00
boykopovar 8ccfbb9fe6 Merge pull request #95 from boykopovar/fix/tests-agc-main
Fix/tests agc main
For tests:
- `agc_driver`
- `agc_driver_flip`
- `agc_driver_pm4`

Fixed dispatch error propagation and updated checks for asynchronous suspend points and memory synchronization. All 54 tests pass with these changes, restoring a passing test suite on `main` after merge.
2026-09-28 19:39:59 +03:00
boykopovar 829e8c14ae fix(tests): align agc flip waits and memory synchronization checks 2026-09-28 19:32:43 +03:00
boykopovar 1f595d883a fix(agc): propagate dispatch worker failures to waiting threads 2026-09-28 19:29:49 +03:00
boykopovar 53bda68c2b Merge pull request #11 from adriadam10/main
feat(tools): progress map and pull request progress reports
2026-09-28 18:50:00 +03:00
boykopovar 5b4c9c6f73 Merge branch 'main' into main 2026-09-28 18:45:15 +03:00
boykopovar 87633fc4e8 chore(tools): move progress.py description from repo to pr 2026-09-28 18:42:44 +03:00
boykopovar 417b66323f chore(readme): remove dup progress map info from readme 2026-09-28 18:39:17 +03:00
boykopovar f105cb9bdf Merge pull request #94 from boykopovar/fix/black-frame-blick
fix(agc): preserve  inputs for deferred  buffer copies
Closing the display window now requests a normal exit instead of calling std::terminate(). Shutdown cancels queued work, wakes blocked waits, joins GPU workers and background helpers, and releases GPU resources before destroying the window on its owning thread. Shutdown cancellation is handled separately from runtime errors.
2026-09-28 18:35:41 +03:00
boykopovar 39fd90b050 fix(kernel): orderly shutdown when closing the display window 2026-09-28 18:30:34 +03:00
boykopovar 143aec54c2 fix(agc): preserve inputs for deferred buffer copies 2026-09-28 18:08:09 +03:00
Adrià Franch 682fb3d73c ci: time out hung tests 2026-09-28 16:40:34 +02:00
adriadam10andClaude Opus 5.5 5ad7c5793a ci: build and test on Linux and Windows
Builds with tests enabled and runs ctest on every push to main and every
pull request: GCC on Linux, and on Windows the MinGW-w64 winlibs GCC
15.2.0 toolchain required by the README. ccache and the toolchain are
cached, and only pushes to main save the ccache, so pull requests reuse
it without evicting it.

Windows build steps run in cmd because Git Bash puts its own mingw64 DLLs
first in PATH, which breaks build tools such as nid_patcher that link
libstdc++ dynamically.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-09-28 16:40:34 +02:00
Adrià FranchandClaude d074f6e36f docs: link the pull request template to the contributing guide
Co-Authored-By: Claude <[email protected]>
2026-09-28 16:06:33 +02:00
Adrià FranchandClaude d8db8192b4 ci: label pull requests that conflict with main
Co-Authored-By: Claude <[email protected]>
2026-09-28 15:50:48 +02:00
Adrià FranchandClaude a8e48f48aa ci: label pull requests by area
Co-Authored-By: Claude <[email protected]>
2026-09-28 15:50:48 +02:00
Adrià FranchandClaude Opus 5.5 b4c1887752 docs: add pull request template with the review checklist
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-09-28 15:42:29 +02:00
boykopovar c6a3e25573 Merge pull request #88 from boykopovar/fix/static-link-nid-patcher
fix(nid): always static linking for nid patcher
Using static linking of the standard library for nid patcher.
2026-09-28 16:38:06 +03:00
boykopovar 8e78ea0c28 fix(nid): always static linking for nid patcher 2026-09-28 16:28:11 +03:00
boykopovar 7b81a4de3d Merge pull request #87 from boykopovar/fix/build-test-json2fiber
fix(build): link json and fiber tests with libc
Fix test linking by adding `libc` to the `guest_json_tests` and `fiber_tests` link dependencies, resolving the missing `__gxx_personality_v0` symbol.

Ran all 54 CTest tests in. The build was successful.
Currently **50 passed, 4 failed**.
`guest_json` and `fiber` passed.

The following tests failed with code `0xc0000139`:

- `agc_driver`
- `agc_shader_memory`
- `agc_driver_flip`
- `agc_driver_pm4`
2026-09-28 14:25:12 +03:00
boykopovar 64732a64b6 fix(build): link json and fiber tests with libc 2026-09-28 14:18:35 +03:00
boykopovar d65a8ee633 Merge pull request #74 from SamG-Coder/main
fix(shader): support byte permutation and fix compiler lifetime bugs
Adds `V_PERM_B32` byte selection and fixes two existing bugs exposed while testing it: IR equality could merge buffer reads with different metadata, and concurrent shader compilation could crash during Windows thread-local destruction.

- Include instruction flags when comparing IR values so selections between different buffer offsets survive constant folding.
- Decode RDNA2 opcode `0x344` and translate all byte selectors through existing integer IR and the SPIR-V backend, including sign replication, zero/ones fill, and overlapping destinations.
- Reuse the existing `HostThreadLocal` helper for six destructible compiler scratch objects. Add async worker/destructor checks to the existing lifetime test. Scratch storage remains reusable.
2026-09-28 13:51:18 +03:00
boykopovar 0fe554943a Merge pull request #73 from julienlgy/feat/lib-sce-mouse
feat(libSceMouse): implement stateful mouse API exports
Replace the libSceMouse stubs with an implementation that follows AnyPS5’s existing NID-based library integration. Mouse input comes from the host SDL event loop; this change does not add memory hooks or direct access to console HID devices.

Manage the mouse handle, button state, timestamps, and a thread-safe, 64-event history in src/mouse_impl.cpp. Reads are non-blocking.

Forward relative motion, supported buttons, vertical scrolling, and horizontal scrolling from libSceVideoOut’s SDL event loop.

Release pressed buttons when the window loses focus without reporting a hardware disconnection.
2026-09-28 13:45:13 +03:00
boykopovar 0bbc29ee14 Merge pull request #76 from boykopovar/fix/frame-flicking
Fix/frame flicking
## Summary

Fixed corrupted frames caused by guest input buffers being overwritten before GPU execution.

## Cause

Draws referenced mutable guest memory. The CPU could overwrite an input buffer after the draw was recorded but before the GPU consumed it.

## Detection

Instrumentation compared input-buffer contents at draw recording and GPU execution. Corrupted frames contained mismatches in buffers used by affected draws; adjacent correct frames did not.

## Changes

The recorder now creates per-draw copies of read-only CPU input buffers and keeps them alive until GPU completion. Each draw uses descriptors referencing its preserved data.

Buffers with pending GPU writes remain on the existing path and are not copied from CPU memory.
2026-09-28 13:41:13 +03:00
boykopovar 9f1c680b38 fix(agc): preserve per-draw input buffer contents until gpu completion 2026-09-28 13:35:53 +03:00
boykopovar 76f1d48e60 debug(agc): detect gpu input buffer changes between recording and execution 2026-09-28 13:27:14 +03:00
boykopovar 73e031a4dd perf(agc): downsample frame captures on GPU and queue disk writes 2026-09-28 13:06:15 +03:00
SamG-Coder 8cef034172 fix(shader): safely destroy compiler thread-local storage on Windows 2026-09-28 19:54:01 +10:00
Julien LegayandCopilot ddb8add753 feat(libSceVideoOut): route SDL mouse events to libSceMouse
Forward relative motion, supported button transitions, and horizontal and vertical scrolling from the existing SDL event loop. Reset pressed buttons on focus loss without reporting a device disconnect, and track window close and refocus transitions.

Link libSceVideoOut to the mouse library using the existing Pad integration pattern. Add targeted coverage for API errors, event mapping, focus changes, history overflow, and reopening.

Co-authored-by: Copilot <[email protected]>
2026-09-28 11:45:31 +02:00
Julien LegayandCopilot 8fac768b9c feat(libSceMouse): implement stateful mouse API exports
Keep the existing Export.cpp entry point and System V ABI while moving mouse state into the library implementation.`n`nTrack initialization, a single handle, button state, timestamps, and a bounded non-blocking event queue. Define and assert the guest MouseData layout and expose an input publisher for the host backend.

Co-authored-by: Copilot <[email protected]>
2026-09-28 11:45:04 +02:00
SamG-Coder 730de17774 fix(shader): support V_PERM_B32 byte selection 2026-09-28 19:35:18 +10:00
SamG-Coder 80a64ccd6b fix(shader): distinguish IR values with different instruction flags 2026-09-28 19:35:18 +10:00
boykopovar cdc95d9a70 Merge pull request #70 from SamG-Coder/main
fix(shader): support scalar bit operations and 64-bit SAVEEXEC
2026-09-28 11:57:56 +03:00
boykopovar 45817c1b4c Merge pull request #72 from boykopovar/fix/stop-if-window-closed
fix(video): terminate process on gpu and presentation thread failures
Now, any expression that reaches the handlers of a GPU worker, presentation thread, or vblank calls std::terminate() and terminates the entire process.

A closed window is just one of these cases. Previously, the handlers stored and propagated the error, which allowed the process to continue.

The normal shutdown with stopping all guest threads is not implemented.
2026-09-28 11:53:43 +03:00
boykopovar 0d29a0a316 fix(video): terminate process on gpu and presentation thread failures 2026-09-28 11:46:18 +03:00
SamG-Coder 198b43c985 fix(shader): support additional 64-bit saveexec operations 2026-09-28 18:37:51 +10:00
Claude 89ba1019e6 Merge upstream main into refactor/kernel-error-header
Upstream merged #25 and #26. Resolve DirectMemory.hpp and Equeue.hpp
by keeping this branch's side: the local error constants #26 fixed are
replaced by KernelErrors.hpp here.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_018emyZ4Rk8yoSJvxTFBe4DL
2026-09-28 08:34:25 +00:00
SamG-Coder 2e398be5a0 fix(shader): support scalar conditional move and zero-bit operations 2026-09-28 18:21:34 +10:00