ppsspp_breakpoint_add
Set a persistent CPU breakpoint at a PSP memory address to halt emulation for reverse engineering or HLE intercepts.
Instructions
PURPOSE: Add a CPU execution breakpoint at the given PSP physical address. Emulation halts when PC reaches that address. USAGE: For RE work and HLE intercepts. Combine with ppsspp_resume + (later) ppsspp_get_registers to inspect state at the breakpoint. BEHAVIOR: Modifies PPSSPP's breakpoint table. The breakpoint persists until removed via ppsspp_breakpoint_remove or PPSSPP restarts. Returns an error if the address isn't executable memory. RETURNS: Single line 'Breakpoint added at ADDR_HEX'.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | PSP execution address. Usually in user RAM (0x08800000+) or kernel RAM. |
Implementation Reference
- src/tools.ts:349-366 (schema)Schema definition for ppsspp_breakpoint_add tool — defines name, description, inputSchema with required 'address' parameter (integer, minimum 0).
// ── Breakpoints ──────────────────────────────────────────────────────── { name: "ppsspp_breakpoint_add", description: "PURPOSE: Add a CPU execution breakpoint at the given PSP physical address. Emulation halts when PC reaches that address. " + "USAGE: For RE work and HLE intercepts. Combine with ppsspp_resume + (later) ppsspp_get_registers to inspect state at the breakpoint. " + "BEHAVIOR: Modifies PPSSPP's breakpoint table. The breakpoint persists until removed via ppsspp_breakpoint_remove or PPSSPP restarts. Returns an error if the address isn't executable memory. " + "RETURNS: Single line 'Breakpoint added at ADDR_HEX'.", inputSchema: { type: "object", required: ["address"], properties: { address: { type: "integer", minimum: 0, description: "PSP execution address. Usually in user RAM (0x08800000+) or kernel RAM." }, }, additionalProperties: false, }, }, - src/tools.ts:593-596 (handler)Handler for ppsspp_breakpoint_add — calls PPSSPP's 'cpu.breakpoint.add' RPC with the address, returns a success message.
case "ppsspp_breakpoint_add": { await pp.call("cpu.breakpoint.add", { address: a() }); return ok(`Breakpoint added at ${addrHex(a())}`); } - src/tools.ts:405-406 (registration)The tool is registered via the TOOLS array and the registerTools function sets up ListToolsRequestSchema and CallToolRequestSchema handlers.
export function registerTools(server: Server, pp: PpssppClient): void { server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));