105 Commits
Author SHA1 Message Date
Rix 60a0e97977 Merge upstream/main into the CD-ROM rewrite
nugget moves to redux-1129-pin: this branch's previous pin plus the
sr-write test main pins. nugget main also carries spu-offvoice and msan
tests that still need Redux fixes.
2026-10-06 21:44:10 -07:00
Rix b5a3ec5d80 tests: run nugget's sr-write test on both CPUs
Pins nugget on the previous base plus the new test, since nugget main also
brings spu-offvoice expectations Redux does not meet yet.
2026-10-06 11:29:07 -07:00
Rix 2e8060bd98 Merge remote-tracking branch 'upstream/main' into pr1129-lockstep
# Conflicts:
#	pcsx-redux.nix
#	src/mips
2026-10-05 17:18:43 -07:00
Rix 945f80f3ce Merge pull request #2172 from rixnobis/rumble-sdl
DualShock rumble through SDL
2026-10-05 16:01:17 -07:00
Rix 5f25a5cc43 Driving the DualShock rumble motors through SDL.
Command 4Dh now keeps the motor mapping it is handed and replies with the
previous one, as the hardware does, instead of always claiming the motors are
unmapped. The mapped bytes of the 42h read command drive SDL_RumbleGamepad,
with the old single-motor method still honoured until config commands are used.
Effects carry the same one second deadline as the controller watchdog, so the
motors stop on their own if the machine stops polling.

Also runs nugget's rumble test from pcsxrunner.
2026-10-05 14:42:13 -07:00
Rix 402c052464 cpu: BCzF and BCzT
On every coprocessor the condition input reads as false, so BCzF always
branches and BCzT never does, and rt bit 1 is ignored. With SR.CUz clear
they raise a coprocessor unusable exception, COP0 included. The interpreter
models both; the dynarecs only the branch, as they check CU nowhere.
BC2x used to run as whatever GTE op its offset encoded.

Bumps src/mips for the tests/cop-branch test.
2026-10-05 14:41:03 -07:00
Rix f37dad9749 Merge pull request #2201 from rixnobis/tui
Interactive terminal UI (-tui)
2026-10-04 07:12:11 -07:00
Rix a99a0493ca Merge grumpycoders/main into the CD-ROM rewrite
Keeps the rewrite's cdrom.cc and the XA path through the ATV matrix. The
save state Registers message keeps schedule_mask/schedule_targets and gains
main's muldiv_ready and gte_ready.
2026-10-02 23:29:24 -07:00
Rix c0300e4e43 Vendor FTXUI v7.0.3 for a terminal UI. 2026-10-01 13:34:53 -07:00
Rix a9e748273a eventbus: let a listener be destroyed during dispatch
A Lua event listener whose handle is collected while its own callback
runs (or that calls remove() from inside it) deleted the closure that
was executing and the list node signal() was iterating on. Defer the
free until the outermost signal() returns.
2026-10-01 01:40:27 -07:00
Rix 0d7bc3fb54 tests: record the OpenBIOS shell, replay the dump, compare VRAM. 2026-09-26 13:54:23 -07:00
Rix 721584a3c4 Merge remote-tracking branch 'upstream/main' into fuckit 2026-09-26 08:39:06 -07:00
Rix 5d0116ce33 Merge upstream/main into spu-accuracy. 2026-09-25 07:44:04 -07:00
Rix 5d1c329ed0 Replace the nanovg Visual Studio project with a thorvg one. 2026-09-23 21:14:24 -07:00
Nicolas 'Pixel' Noble 5e6981217c Merge remote-tracking branch 'origin/spu-accuracy' into fuckit
gte.cc took the deletion, since the GTE got rewritten and split upstream.
cdrom.cc took this branch's rewrite whole and had the two things main grew
since re-applied by hand: the magic_enum include path, and the CDRomLogger
data/seek hooks. There is no audio hook because CDDA playback isn't here yet.
2026-09-04 23:24:44 -07:00
Nicolas 'Pixel' Noble cf3c164773 Merge remote-tracking branch 'upstream/main' into spu-accuracy 2026-09-03 10:21:37 -07:00
Nicolas 'Pixel' Noble 81c1826e41 Merge remote-tracking branch 'upstream/main' into sdl3-refresh
# Conflicts:
#	.gitmodules
#	src/gui/gui.cc
#	third_party/zep
#	vsprojects/core/core.vcxproj
#	vsprojects/core/packages.config
#	vsprojects/pcsx-redux.sln
2026-08-04 08:20:17 -07:00
Nicolas Pixel Noble 56e0ffdf8a Fixing Windows build and adding ImPlot. 2026-08-03 11:11:19 -07:00
Nicolas "Pixel" Noble 40813fabc9 More xmake work. 2026-08-01 16:57:53 -07:00
Nicolas 'Pixel' Noble b96b0bfe29 ucl: measure the in-place decompression overlap instead of assuming 16 bytes
The in-place path placed the compressed payload a fixed 16 bytes past the end of the decompressed image. That gap is data-dependent, not a constant: the NRV2E decompressor's write head can race well ahead of its read head across a compressible region, and a payload whose worst-case match lands late enough overruns the gap and silently corrupts on decompression.

Compute the real number. inPlaceOverlapMargin walks the bitstream exactly as the unpacker does, writes nothing, and records the peak (olen - ilen); that maximum is the smallest offset at which an overlapping decode is safe, and the compressed load address is derived from it.

Includes a round-trip test, with a compressible-head payload that needs far more than 16 bytes and would have corrupted under the old constant.

Signed-off-by: Nicolas 'Pixel' Noble <[email protected]>
2026-07-04 22:38:32 -07:00
Nicolas "Pixel" Noble 7aeee116b9 Merge branch 'main' into sdl3 2026-05-22 21:29:20 -07:00
Nicolas Pixel Noble 932308b793 Some reformatting + Windows build. 2026-05-16 16:49:10 -07:00
Nicolas "Pixel" Noble 32f03a8ea8 MSVC cleanup. 2026-05-08 21:37:09 -07:00
Nicolas Pixel Noble 9fc2bdbd73 Windows build. 2026-05-07 08:11:13 -07:00
Nicolas "Pixel" Noble b5b7b17eeb Rigging psyqo-tests in vstudio + minor tweaks. 2026-04-16 20:05:48 -07:00
Nicolas Noble ae272bdda0 Merge pull request #2007 from nicolasnoble/gte-rewrite
Gte rewrite
2026-04-16 18:06:14 -07:00
Nicolas "Pixel" Noble 57dad29daf Merge remote-tracking branch 'upstream/main' into gte-rewrite 2026-04-14 21:26:28 -07:00
Nicolas 'Pixel' Noble 8ab8150cbf Add GTE hardware validation test suite
46 tests covering register I/O, instruction correctness, and
documented discrepancies between Sony's SDK reference and psx-spx.
All tests verified against SCPH-5501 silicon.

Key hardware findings:
- ORGB saturates (not truncates) negative/large IR values
- AVSZ3 uses SZ1+SZ2+SZ3 (not SZ0+SZ1+SZ2)
- H register sign-extends on CFC2 read despite being unsigned
- MVMVA cv=2 (FC) and mx=3 (garbage) produce deterministic results
- RES1 (data reg 23) is fully read/write despite SDK saying prohibited
- All single-16bit control registers sign-extend on CTC2 write
- lm flag toggles IR clamp between [-0x8000,0x7fff] and [0,0x7fff]
- GTE requires COP2 enable (CU2 bit in CP0 SR) and has no interlock

Signed-off-by: Nicolas 'Pixel' Noble <[email protected]>
2026-04-14 21:23:21 -07:00
Nicolas "Pixel" Noble b9bc6ffcfe Retargetting project for vs2026. 2026-04-14 21:03:35 -07:00
Nicolas Noble 68e9cc05e8 Merge branch 'main' into fix-timer-accuracy 2026-04-13 23:44:35 -07:00
Nicolas "Pixel" Noble 4c860ebf21 Adding test. 2026-04-12 23:24:13 -07:00
Nicolas "Pixel" Noble e3c4f2a279 Starting to add some tests. 2026-04-06 21:41:38 -07:00
Nicolas "Pixel" Noble 9044305dfd Merge remote-tracking branch 'upstream/main' into fuckit
# Conflicts:
#	src/core/cdrom.cc
#	src/core/luaiso.cc
#	src/core/psxinterpreter.cc
#	src/core/r3000a.h
2025-03-21 23:15:00 -07:00
Nicolas Pixel Noble e2096cd388 Fixing the last few details. 2025-03-03 20:32:04 -08:00
Nicolas "Pixel" Noble 3996f8e7a2 Bumping LuaJIT to current latest.
- Also adding bit.extract
- Also adding ImGui's natvis files.
2025-02-10 19:11:20 -08:00
Nicolas "Pixel" Noble 2b6944a660 Upgrading dependency from http-parser to llhttp. 2024-12-23 06:48:23 -08:00
Nicolas Pixel Noble 32e74e5b97 Merge remote-tracking branch 'upstream/main' into fuckit 2024-03-10 19:51:39 -07:00
Nicolas Pixel Noble 1df0bd3aa3 Update ffmpeg & glfw nuget packages. 2024-03-09 19:51:11 -08:00
Nicolas Pixel Noble c9bfa68713 Merge remote-tracking branch 'upstream/main' into fuckit 2024-03-02 21:49:51 -08:00
Nicolas Pixel Noble 54deb9ccad Cleaning up vcxproj files. 2024-03-02 12:41:55 -08:00
Nicolas Pixel Noble 901300a1d6 Merge remote-tracking branch 'upstream/main' into fuckit
# Conflicts:
#	src/mips/tests/Makefile
2024-02-06 21:08:43 -08:00
Nicolas Pixel Noble b30d786f5e Also adding __wrap_memset. 2024-02-04 13:14:46 -08:00
Nicolas Pixel Noble fbf09fc074 Adding a faster, optional memcpy implementation. 2024-02-04 11:18:23 -08:00
Nicolas Pixel Noble e2f4eb6da7 Merge remote-tracking branch 'upstream/main' into fuckit
# Conflicts:
#	.gitignore
#	src/mips/tests/Makefile
#	vsprojects/tests/pcsxrunner/pcsxrunner.vcxproj.filters
2024-01-27 17:47:01 -08:00
Nicolas Pixel Noble 255c5f7bfc Adding Lua unit testing. 2024-01-21 23:08:16 -08:00
Nicolas Pixel Noble 5debdc77af Adding DMA test to Redux. 2024-01-08 21:17:55 -08:00
Nicolas Pixel Noble dad7cd942d Merge remote-tracking branch 'upstream/main' into fuckit
# Conflicts:
#	.gitignore
#	src/core/cdrom.h
#	src/core/luaiso.cc
#	src/gui/gui.cc
#	src/gui/widgets/isobrowser.cc
2023-10-07 21:58:01 -07:00
Nicolas Pixel Noble b35f15e4dc Adding lpeg dependency. 2023-08-04 22:51:34 -07:00
Nicolas Pixel Noble 11e03bf7b4 Merge remote-tracking branch 'origin/main' into fuckit
# Conflicts:
#	src/core/r3000a.cc
2023-06-06 21:09:38 -07:00
Nicolas Pixel Noble 49acad1e8b Update LuaJIT
Hopefully should fix crashes in the JIT.
2023-06-05 21:27:17 -07:00