ppsspp_step
Control PPSSPP CPU run state for debugging: pause, resume, reset, run until address, step to next HLE.
Instructions
PURPOSE: Aggregate CPU run-state control (pause / resume / reset / run_until / next_hle).
USAGE: action='pause' / 'resume' / 'reset' / 'next_hle' take only session_id (optional when exactly one session is active); 'run_until' requires address.
NOTE (v0.1.6): single-stepping (into/over/out) moved to ppsspp_batch_step's cpu_step step type — this tool no longer accepts those actions.
ROUTING: single run-state operations -> here (run_until for run-to-address); multi-step press/wait/probe sequences and cpu_step -> ppsspp_batch_step. BEHAVIOR: STATE-CHANGE. Advances or changes CPU run state. 'reset' reboots the game (lost in-memory state). 'run_until' sets a temp breakpoint and resumes.
RETURNS: {action, address, pc, ticks, reason, related_address}. pc is stepping-verified (HIGH trust) for 'pause'; for 'resume' pc/ticks are a best-effort LOW-trust cpu.status snapshot of the running CPU (0/0.0 if that read failed); 'reset' reports 0.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | CPU step / run-state operation. Valid values: - 'pause': pause CPU (enter stepping mode). - 'resume': resume CPU (exit stepping mode); the response pc/ticks are a LOW-trust snapshot of the running CPU (inaccurate unless stepping), not a precise resume location. - 'reset': reset the game (reboot). - 'run_until': run until the specified address is reached (requires address). - 'next_hle': step to next HLE callback. NOTE: single-stepping (into/over/out) lives in ppsspp_batch_step as the 'cpu_step' step type (mode='into'|'over'|'out', count 1..1000) — it requires the CPU to enter stepping mode, which the executor handles automatically. | |
| address | No | Required for action='run_until'. Target address, as a hex string (e.g. '0x08804000'). Not used by the other actions. The schema default of '0x0' exists for legacy callers -- do NOT rely on it when the action is 'run_until'. run_until is fire-and-forget: it returns immediately with no hit confirmation — poll PC or set a breakpoint to observe arrival. | 0x0 |
| session_id | No | Active session ID; omit to auto-resolve when exactly one session is active. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pc | Yes | Program counter after step, hex string. For into/over/out/run_until/next_hle this comes from the cpu.stepping broadcast. For pause, extracted via safe_get_pc after CPU enters stepping. For resume, a best-effort LOW-trust cpu.status snapshot of the running CPU (inaccurate unless stepping — CPUCoreSubscriber.cpp:105). '0x00000000' for reset. | |
| ticks | Yes | CPU ticks at step completion (from cpu.stepping broadcast). For resume, a best-effort LOW-trust cpu.status snapshot. 0.0 for pause/reset. | |
| action | Yes | 'into' / 'over' / 'out' / 'pause' / 'resume' / 'reset' / 'run_until' / 'next_hle'. | |
| reason | Yes | Step reason from cpu.stepping broadcast (e.g. 'cpu.stepInto'). Empty for pause/resume/reset. | |
| address | Yes | Target address for run_until, hex string (e.g. '0x08804000'); '0x00000000' for other actions. | |
| related_address | Yes | Related address for temporary breakpoints, hex string. '0x00000000' when absent. |