dolphin_set_wiimote_pointer
Sets the Wii Remote IR pointer position to normalized coordinates for menu navigation in Wii titles.
Instructions
PURPOSE: Set the Wii Remote's IR pointer position on the given port. USAGE: Use for menu navigation in Wii titles that aim via the Remote (Wii Sports, Smash Bros menus, House of the Dead, etc.). Coordinates are normalised floats; the exact useful range depends on the game's calibration but typically (-1.0, -1.0) is top-left and (1.0, 1.0) is bottom-right relative to the sensor bar zone. To hold a position across multiple frames call repeatedly — Felk's helper uses ClearOn::NextFrame semantics. BEHAVIOR: DESTRUCTIVE to pointer state for the addressed port. Sets the IR X+Y for the next render frame. Combine with dolphin_press_wiimote_buttons for click-and-aim sequences. RETURNS: 'Set Wii Remote port N pointer to (x, y)'.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Wii Remote port (0-3, default 0). | |
| x | Yes | IR pointer X. Float, typically -1.0..1.0 horizontal. | |
| y | Yes | IR pointer Y. Float, typically -1.0..1.0 vertical. |
Implementation Reference
- src/tools.ts:335-351 (schema)Tool definition (name + description + inputSchema) for dolphin_set_wiimote_pointer. Defines required float params x and y, optional port, and describes IR pointer semantics with -1..1 normalised coordinates.
{ name: "dolphin_set_wiimote_pointer", description: "PURPOSE: Set the Wii Remote's IR pointer position on the given port. " + "USAGE: Use for menu navigation in Wii titles that aim via the Remote (Wii Sports, Smash Bros menus, House of the Dead, etc.). Coordinates are normalised floats; the exact useful range depends on the game's calibration but typically `(-1.0, -1.0)` is top-left and `(1.0, 1.0)` is bottom-right relative to the sensor bar zone. To hold a position across multiple frames call repeatedly — Felk's helper uses ClearOn::NextFrame semantics. " + "BEHAVIOR: DESTRUCTIVE to pointer state for the addressed port. Sets the IR X+Y for the next render frame. Combine with dolphin_press_wiimote_buttons for click-and-aim sequences. " + "RETURNS: 'Set Wii Remote port N pointer to (x, y)'.", inputSchema: { type: "object", required: ["x", "y"], properties: { port: { type: "integer", minimum: 0, maximum: 3, description: "Wii Remote port (0-3, default 0)." }, x: { type: "number", description: "IR pointer X. Float, typically -1.0..1.0 horizontal." }, y: { type: "number", description: "IR pointer Y. Float, typically -1.0..1.0 vertical." }, }, additionalProperties: false, }, - src/tools.ts:562-567 (handler)Handler/case branch in the CallToolRequestSchema switch. Extracts port (default 0), x, y from arguments, calls dol.call('controller.set_wiimote_pointer', [port, x, y]) on the DolphinClient, and returns a success message.
case "dolphin_set_wiimote_pointer": { const port = (p.port as number | undefined) ?? 0; const x = p.x as number, y = p.y as number; await dol.call("controller.set_wiimote_pointer", [port, x, y]); return ok(`Set Wii Remote port ${port} pointer to (${x}, ${y})`); } - src/tools.ts:488-491 (registration)The registerTools function registers the entire TOOLS array (including dolphin_set_wiimote_pointer) via ListToolsRequestSchema, and the call handler via CallToolRequestSchema on the MCP server.
export function registerTools(server: Server, dol: DolphinClient): void { server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS })); server.setRequestHandler(CallToolRequestSchema, async (req) => { - bridge/mcp_bridge.py:112-113 (helper)Python bridge helper function _set_wiimote_pointer. Calls Felk's controller.set_wiimote_pointer(port, x, y) API, which uses ClearOn::NextFrame semantics (resets after one render frame).
def _get_wiimote_pointer(p): return controller.get_wiimote_pointer(p[0]) def _set_wiimote_pointer(p): controller.set_wiimote_pointer(p[0], p[1], p[2]); return None - bridge/mcp_bridge.py:154-155 (registration)Maps the RPC method string 'controller.set_wiimote_pointer' to the _set_wiimote_pointer function in the bridge's HANDLERS dispatch table.
"controller.get_wiimote_pointer": _get_wiimote_pointer, "controller.set_wiimote_pointer": _set_wiimote_pointer,