Commit Graph
100 Commits
Author SHA1 Message Date
Henrik Rydgård cab9a4fcd7 Remove obsolete code 2026-07-30 18:27:38 +02:00
Henrik Rydgård f94c094441 Fix problematic change in event processing ordering 2026-07-30 18:27:09 +02:00
Henrik Rydgård d6e0308c11 Merge pull request #21990 from Arkadyzja/savestate-compact-blockallocator
Savestate: compact BlockAllocator serialization (section v2)
2026-07-30 17:23:25 +02:00
Henrik Rydgård e3975c7aae Merge pull request #21988 from Arkadyzja/savestate-forget-stale-helper-threads
Savestate: don't let stale HLE helper threads mutate restored kernel state
2026-07-30 17:21:54 +02:00
Henrik Rydgård 820d420f47 Merge pull request #21989 from Arkadyzja/savestate-compact-audio-queues
Savestate: store only live audio queue data (AudioChannel section v3)
2026-07-30 17:20:30 +02:00
Henrik Rydgård 322fe59596 Merge pull request #21987 from Arkadyzja/savedialog-serialize-iothreadstatus
Savedata dialog: serialize ioThreadStatus (bump section to v3)
2026-07-30 17:02:51 +02:00
Henrik Rydgård 3a56d4d53e Merge pull request #22005 from hrydgard/low-precision-float-check
OpenGL: Check for support for high precision float in fragment shaders, and avoid the new workarounds if not supported
2026-07-30 11:08:45 +02:00
Henrik Rydgård 10a5d2f810 OpenGL: Improve checks for fragment shader float precision.
Fixes #22001 (although there may be other artifacts).
2026-07-30 10:03:15 +02:00
Henrik Rydgård 683704d61d Add new log category for config 2026-07-30 10:03:15 +02:00
Henrik Rydgård e69f727f9a Merge pull request #22002 from hrydgard/ai-autotest-workflow
AI pspautotests workflow description, and a few fixes that came out of it. Plus some manual sceReg implementation
2026-07-30 10:01:51 +02:00
Henrik Rydgård ebfd1d755f Bump the tests, fixing the tls test and also the timezone conversion 2026-07-30 01:34:46 +02:00
Henrik Rydgård c7653e6b7f Improve sceReg and its tests 2026-07-30 00:26:10 +02:00
Henrik Rydgård e9a0e54e92 sceRtc: Deepseek's implementation of parsing various date formats 2026-07-29 23:41:29 +02:00
Henrik Rydgård c8093171a5 Use the new AI workflow to have DeepSeek figure out an ancient problem with mailbox tests 2026-07-29 23:04:44 +02:00
Henrik Rydgård 4ecbb8b580 Teach the AI to use pspautotests to fix bugs in PPSSPP (it refined its own instructions) 2026-07-29 22:37:21 +02:00
Henrik Rydgård 5dceea4251 Merge pull request #22000 from hrydgard/debugger-improvements
Turn off "Ignore bad memory accesses" in headless
2026-07-29 22:11:12 +02:00
Henrik Rydgård 2b509e4b1e Minor cleanups, revert change in sceKernelMbx 2026-07-29 20:30:17 +02:00
Henrik Rydgård d6b33ba58d test.py comments 2026-07-29 19:49:17 +02:00
Henrik Rydgård e0ddfc7109 Add --print-equal-lines option to headless, good for context when looking at output 2026-07-29 18:55:00 +02:00
Henrik Rydgård c99a303646 Fix behavior so we can turn off "IgnoreBadMemAccess" in headless 2026-07-29 18:38:25 +02:00
Henrik Rydgård cc57945280 Made the threads/mbx/refer/refer test not crash 2026-07-29 16:27:51 +02:00
Henrik Rydgård 54618c67c6 Headless improvements 2026-07-29 16:27:33 +02:00
Henrik Rydgård 35355d90e2 Merge pull request #21999 from hrydgard/vr-shader-fix
VR fixes
2026-07-29 15:47:13 +02:00
Henrik Rydgård baf200acec OpenXR: Improve mouse emulation, fix scrolling 2026-07-29 15:20:11 +02:00
Henrik Rydgård b46566adc2 Logging improvements 2026-07-29 14:42:24 +02:00
Henrik Rydgård 6bdaf7caee Fix null pointer access in InfraredHelper.java 2026-07-29 14:40:53 +02:00
Henrik Rydgård f8ccc78e31 OpenGL on Android: Don't try to detect version too early 2026-07-29 14:40:01 +02:00
Henrik Rydgård 08589f48ef Merge pull request #21998 from hrydgard/retroachievements-crashfix
RetroAchievements: Avoid crashing when drawing achievements without images
2026-07-29 00:03:30 +02:00
Henrik Rydgård 62938ceef7 RetroAchievements: Avoid crashing when drawing achievements without images (may be in development) 2026-07-28 23:19:00 +02:00
Henrik Rydgård 7b380415e0 Merge pull request #21995 from hrydgard/more-misc-stuff
More misc debugging stuff, more sceReg functions, etc
2026-07-28 09:05:16 +02:00
Henrik Rydgård d3c7279e9f Fix unnecessary RAIntegration error message if you have the DLL but RA is disabled 2026-07-28 00:16:12 +02:00
Henrik Rydgård 39c8cbbde1 Use the new kernel module description thing to annotate GPRs in the register viewer 2026-07-28 00:15:41 +02:00
Henrik Rydgård c0826cbb5d Add another dummy function in sceReg, AGENTS.md update 2026-07-27 23:51:17 +02:00
Henrik RydgårdandClaude Opus 5 9b577b5f46 Show module.section+offset next to addresses in exception/stack-trace logs
Added KernelModuleAddressDescription() (Core/HLE/sceKernelModule.cpp),
which looks up which currently loaded module (and text/data/bss/segment
section within it) an address falls in, e.g. "EBOOT.BIN.text+1234".
Wired it into:

- Core_MemoryException/Core_ExecException/Core_BreakException
  (Core/Core.cpp), appended next to every address/pc/ra shown in their
  log lines.
- FormatStackTrace (Core/MemFault.cpp), appended per-frame next to the
  existing symbol description.

This makes crash/exception logs actionable even when there's no symbol
at the faulting address - you at least get which module and section
it's in, useful for reverse engineering unfamiliar code.

Verified live via headless: injected a MIPS break instruction at the
current PC (through Tools/wsdbg) and confirmed the log line changed from
"break instruction hit at 088040ac" to "break instruction hit at 088040ac
[sceDisplayWaitVblank Test.text+ac]".

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XDNwPPuidmNxQGRJxBuRL6
2026-07-27 23:44:14 +02:00
Henrik Rydgård 878d2aeb0e Fix a bunch of possible crashes due to our VRAM check thinking that VRAM in kernel space is valid (but nothing is mapped there, unless you use masked memory) 2026-07-27 23:44:14 +02:00
Henrik Rydgård 02aedb598d Detect the main VSH module and log 2026-07-27 23:44:14 +02:00
Henrik Rydgård 606c233ee1 Claude's new sceReg functions 2026-07-27 23:44:06 +02:00
Henrik Rydgård 34454f9d03 Claude's crazy exception handler hack 2026-07-27 23:41:13 +02:00
Henrik Rydgård 16a38b090a Merge pull request #21991 from hrydgard/cmdline-parse-improvements
Command line parse improvements (some new arguments), RAIntegration fixes
2026-07-27 23:37:01 +02:00
Henrik Rydgård c14959b0b6 Buildfix/testfix 2026-07-27 21:33:14 +02:00
Henrik Rydgård f7c2eb7b4d Add Alpha adhoc server 2026-07-27 18:37:28 +02:00
Henrik Rydgård 9949c2bf49 RAIntegration / retroachievements: Improve memory range checks 2026-07-27 18:37:28 +02:00
Henrik Rydgård 456cfb0f5a RAIntegration crashfix 2026-07-27 18:37:28 +02:00
Henrik Rydgård e30b90e709 Quiet and improve some logs 2026-07-27 18:37:28 +02:00
Henrik Rydgård 5ef736f6a7 More command line improvements 2026-07-27 18:37:28 +02:00
Henrik Rydgård 3139d7ccfe Add command line parameters for controlling the behavior on memory/instruction exceptions 2026-07-27 18:37:26 +02:00
Henrik Rydgård 4bf36fc7f8 Add command line option --vsh to try to boot the VSH. Logspam reduction, improve printf logs. 2026-07-27 14:58:59 +02:00
Henrik Rydgård 5c1d113279 Warning fix in sceUsbCam 2026-07-27 14:58:59 +02:00
Henrik Rydgård d04c39db1d Bump pspautotests 2026-07-27 14:58:59 +02:00
Henrik Rydgård 28bbb7c5b0 Update the sceReg registry to include the CONFIG category 2026-07-27 14:58:39 +02:00
Henrik Rydgård 19be55253c Merge pull request #21986 from a-blondel/feature/fifa06-infra
Add FIFA06 to infra-dns.json
2026-07-27 12:19:43 +02:00
Henrik Rydgård 62ca15d5ea Merge pull request #21984 from hrydgard/websocket-cmdline
Document and improve the websocket debugger (AI code by Claude)
2026-07-27 11:15:45 +02:00
Henrik Rydgård 3eee14b02b Clean up the AI-generated documentation manually, AGENTS.md updates 2026-07-27 10:55:54 +02:00
Henrik RydgårdandClaude Opus 5 afe9b09278 Headless: make ApplyToConfig() the final authority over g_Config
Reordered main() to: g_Config.RestoreDefaults() -> headless's own hardcoded
overrides for deterministic test execution -> cmdLineOptions.ApplyToConfig()
-> CoreParameter setup -> launch. Previously ApplyToConfig() ran first and
got silently overwritten by both RestoreDefaults() and the hardcoded
overrides, so no command-line flag touching a g_Config setting actually took
effect for a real run (this is what required the "set iRemoteISOPort again"
workaround for --debugger=PORT, now removed).

The two hardcoded lines that used to read coreParameter.renderScaleFactor/
gpuCore now compute the same values directly from cmdLineOptions/glWorking/
gpuCore instead, since CoreParameter is no longer built yet at that point -
it's now constructed after ApplyToConfig(), which is what let those two
comments' "above"/"below" wording get corrected too.

Verified: --debugger=PORT still binds the exact requested port and pauses
the CPU, and a normal --compare test run (cpu_alu) still passes.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XDNwPPuidmNxQGRJxBuRL6
2026-07-27 10:44:36 +02:00
Henrik Rydgård cf5b86082b Merge pull request #21985 from kreinholz/master
Fix build when USE_SYSTEM_MINIUPNPC cmake option is enabled.
2026-07-26 23:07:38 +02:00
Henrik RydgårdandClaude Opus 5 333ae20092 Update docs for the unified --debugger=PORT flag
Reflect the CmdLine.cpp unification and the headless net::Init() fix in
docs/WebSocketDebugger.md and AGENTS.md - previously these described the
app-only boolean --debugger flag and flagged headless as unreliable.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XDNwPPuidmNxQGRJxBuRL6
2026-07-26 21:52:48 +02:00
Henrik RydgårdandClaude Opus 5 7e5dca0309 Unify --debugger=PORT for both the app and headless builds
The headless build's own --debugger=PORT never actually worked on
Windows: headless/Headless.cpp never called net::Init() (WSAStartup),
so socket binding silently failed ("Unable to listen on any port
(debugger - webserver)"). Fixed by calling net::Init()/net::Shutdown()
there, gated on --debugger being passed since headless has no other use
for networking.

With that confirmed working, move parsing into the shared
Core/CmdLine.cpp auto-param table as a single --debugger=PORT option
(0 = pick automatically) available on both CmdLineMode::Application and
CmdLineMode::Headless, replacing the previous app-only boolean
--debugger flag and headless's separate ad hoc argv scan for it.

Behavior differs deliberately by build, same as before:
- App: just starts the debugger, game boots and runs normally.
- Headless: also forces coreParameter.startBreak = true (break before
  anything runs), as it always has. Headless re-applies iRemoteISOPort
  after its own g_Config.RestoreDefaults() call, which runs after
  ApplyToConfig() and would otherwise wipe the requested port.

Verified live: headless now binds the requested port and responds to
cpu.status/game.status; the app build binds the requested port and
runs the game normally (not paused).

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XDNwPPuidmNxQGRJxBuRL6
2026-07-26 21:49:37 +02:00
Henrik Rydgård 76f4d30aef Merge pull request #21983 from hrydgard/merge-gl-contexts
Merge GL contexts
2026-07-26 21:22:56 +02:00
Henrik RydgårdandClaude Opus 5 cf873b8c6b AGENTS.md: point future sessions at the WebSocket debugger workflow
Expand the WebSocket debugger section with pointers so an agent can get
back into this work without re-deriving it: read docs/WebSocketDebugger.md
before touching the interface (it's the source of truth, not memory), and
a recipe for spinning up a live PPSSPP + Tools/wsdbg session for manual
testing. PSP homebrew isn't checked into this repo, so this asks the user
for one (or to install one via the Homebrew Store) rather than assuming a
specific local file exists.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XDNwPPuidmNxQGRJxBuRL6
2026-07-26 21:17:28 +02:00
Henrik RydgårdandClaude Opus 5 074c8ac523 Add memory.search and hle.data.* to the WebSocket debugger
Reverse-engineering workflows need to (1) find where an unknown value lives
in memory and (2) label what's found, neither of which the debugger API
could do before:

- memory.search (MemorySubscriber.cpp): Cheat-Engine-style scan of a memory
  range for a u8/u16/u32/float value, or a byte pattern with an optional
  wildcard mask.
- hle.data.list/add/remove/rename (HLESubscriber.cpp): manage ST_DATA
  symbols (structs, tables, buffers), mirroring the existing hle.func.*
  commands for functions. Needed a new SymbolMap::RemoveData, since only
  RemoveFunction existed - added following the same pattern.

Verified live against a running PPSSPP instance (game.status, cpu.stepping,
memory.search in u32/bytes/masked-bytes modes, and the full
add/list/rename/remove data-symbol lifecycle) via Tools/wsdbg.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XDNwPPuidmNxQGRJxBuRL6
2026-07-26 21:17:09 +02:00
Henrik RydgårdandClaude Opus 5 3ebc9872a5 Add --debugger command line flag to enable the WebSocket debugger
Application-mode only (CmdLineMode::Application) - the headless build has
its own separate --debugger=PORT mechanism in headless/Headless.cpp, which
doesn't currently work reliably, so this new flag intentionally does not
apply there. Sets bRemoteDebuggerOnStartup for the session without
persisting it to the config file.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XDNwPPuidmNxQGRJxBuRL6
2026-07-26 21:02:00 +02:00
Henrik RydgårdandClaude Opus 5 2fa8efad2b Document the WebSocket debugger interface
Add docs/WebSocketDebugger.md covering the transport, message protocol,
broadcast/request event catalog, how to enable it, LAN discovery, and how
the bundled JS web debugger (assets/debugger submodule) connects to it.
Point AGENTS.md at it so future sessions know it exists.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XDNwPPuidmNxQGRJxBuRL6
2026-07-26 21:01:28 +02:00
Henrik RydgårdandClaude Opus 5 34b23b611e Add wsdbg, a small CLI client for the WebSocket debugger
A Rust REPL/one-shot tool for talking directly to PPSSPP's WebSocket
debugger interface (Tools/wsdbg), for scripting and manual poking during
debugging/reverse-engineering sessions.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XDNwPPuidmNxQGRJxBuRL6
2026-07-26 21:01:04 +02:00
Henrik Rydgård 1649d2fcae Also merge away the iOS GL graphics context 2026-07-26 20:16:24 +02:00
Henrik Rydgård ccff34b431 Reuse the AndroidJavaGLContext as the new generic OpenGLGraphicsContext 2026-07-26 20:07:14 +02:00
Henrik Rydgård 23c3798253 Merge pull request #21982 from hrydgard/merge-vulkan-contexts
Merge Vulkan graphics contexts
2026-07-26 20:07:07 +02:00
Henrik Rydgård cb623f725c Get rid of the SDL-specific Vulkan graphics context 2026-07-26 19:10:46 +02:00
Henrik Rydgård 4b869a025e Move SDL stuff out of SDLVulkanGraphicsContext 2026-07-26 19:10:46 +02:00
Henrik Rydgård 1c40facc4c Vulkan SDL: Remove an old workaround 2026-07-26 19:10:46 +02:00
Henrik Rydgård 0f76b6977f Replace the iOS Vulkan graphics context with the new generic one 2026-07-26 19:10:46 +02:00
Henrik Rydgård 3784bbe0e6 Delete the AndroidVulkanContext, replace with the generic VulkanGraphicsContext 2026-07-26 19:10:46 +02:00
Henrik Rydgård 2961495e98 Merge pull request #21981 from Kethen/aemu_compile_cleanup
bump aemu_postoffice
2026-07-26 15:56:02 +02:00
Henrik Rydgård 0b4f96f2f0 Merge pull request #21979 from hrydgard/even-more-emuthread
Even more init cleanup work
2026-07-26 14:42:58 +02:00
Henrik Rydgård e3d36e2741 Move the VulkanGraphicsContext to its correct location in Common/GPU/Vulkan 2026-07-26 14:15:15 +02:00
Henrik Rydgård 12cbe2143a Rename WindowsVulkanContext to VulkanGraphicsContext, preparing for moving it 2026-07-26 14:01:05 +02:00
Henrik Rydgård 3eb056ad86 Move Common/GraphicsContext.h to Common/GPU/GraphicsContext.h 2026-07-26 13:58:17 +02:00
Henrik Rydgård 6020fbcf0e Remove bad calls to ThreadStart/ThreadEnd from SDLMain.cpp 2026-07-26 13:44:53 +02:00
Henrik Rydgård 8020b60dda Use the new common RunMainLoop on Android 2026-07-26 13:42:16 +02:00
Henrik Rydgård 4a95d8eeaa Fix exit crash on Windows, oops 2026-07-26 13:37:33 +02:00
Henrik Rydgård 05e759952c Merge pull request #21978 from hrydgard/more-emuthread
Use the common EmuThread implementation in multiple backends
2026-07-26 13:13:19 +02:00
Henrik Rydgård 63f9d08de7 Buildfix 2026-07-26 12:14:34 +02:00
Henrik Rydgård 568ffe5a05 Use the common EmuThread implementation on iOS as well 2026-07-26 12:04:51 +02:00
Henrik Rydgård d0c6362a21 Use the common EmuThread implementation in the deprecated Qt backend 2026-07-26 11:54:55 +02:00
Henrik Rydgård 29edec7684 Move calling ThreadStart and ThreadEnd into the EmuThread wrapper 2026-07-26 11:54:50 +02:00
Henrik Rydgård ea3a2a2e84 Use the common EmuThread in the Android backend 2026-07-26 11:54:50 +02:00
Henrik Rydgård 2e837e88b4 Small simplification 2026-07-26 11:54:50 +02:00
Henrik Rydgård 99ca8b83d3 Merge pull request #21977 from hrydgard/more-emuthread-work
Some steps towards unifying the GraphicsContext interface
2026-07-26 10:22:45 +02:00
Henrik Rydgård 7f218acc53 Change the GraphicsContext interface to be more consistent 2026-07-26 10:22:00 +02:00
Henrik Rydgård 28a2c7bca6 Upgrade gradlew 2026-07-26 10:21:59 +02:00
Henrik Rydgård c2c0fa3634 Remove the AndroidGraphicsContext middle-level class 2026-07-26 10:21:59 +02:00
Henrik Rydgård c42e41c034 Merge pull request #21976 from hrydgard/misc-changes
Better error messages for unresolved syscalls, etc.
2026-07-25 15:14:25 +02:00
Henrik Rydgård a7ee0a7280 Include the code location in "ignored" bad memory access log lines 2026-07-25 14:53:52 +02:00
Henrik Rydgård 26ff5fdb00 Robustness fix 2026-07-25 14:53:40 +02:00
Henrik Rydgård 7464269c0b Updated AGENTS.md 2026-07-25 14:53:19 +02:00
Henrik Rydgård 8cb1732564 Clean up the memory partition ID enum 2026-07-25 14:53:02 +02:00
Henrik RydgårdandClaude Sonnet 5 ca34a14fd8 Resolve unresolved-import calls to a module/NID in the "Unknown syscall" log
A call through a still-pending import gets written as a generic "invalid
syscall" opcode (WriteFuncMissingStub) that no longer carries the
original module name or NID by the time it's actually invoked - but the
address of the syscall instruction itself is exactly the stubAddr every
pending FuncSymbolImport already records. Added
KernelFindImportByStubAddr() to search loaded modules' importedFuncs for
a match, and use it in GetSyscallFuncPointer's unknown-syscall path.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-07-25 14:52:19 +02:00
Henrik Rydgård a6e4d691ef Merge pull request #21973 from hrydgard/more-cmake-cleanup
Clean up the CMake files, matching the project structure of the MSVC build
2026-07-24 23:55:27 +02:00
Henrik Rydgård 8cfd63b86d Apple buildfix 2026-07-24 22:47:29 +02:00
Henrik Rydgård 2a79257551 Merge pull request #21667 from dsprogrammingprojects/Texture-Replacement-Double-Wildcard
Texture replacement addition for Address Only case
2026-07-24 21:40:02 +02:00
Henrik Rydgård c8c20985a9 Bump FFMPEG to fix x86-64 2026-07-24 21:15:45 +02:00