pine_write16
Write a 16-bit little-endian value to a 2-byte aligned memory address in emulated RAM for PlayStation-family emulators.
Instructions
Write a 16-bit value (LE) to emulated RAM. Address must be 2-byte aligned.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Memory address (2-byte aligned) | |
| value | Yes |
Implementation Reference
- src/tools.ts:86-97 (schema)Tool definition (name + inputSchema) for pine_write16 — declares it writes a 16-bit LE value to a 2-byte aligned address, with value range 0-65535.
{ name: "pine_write16", description: "Write a 16-bit value (LE) to emulated RAM. Address must be 2-byte aligned.", inputSchema: { type: "object", required: ["address", "value"], properties: { address: { type: "integer", description: "Memory address (2-byte aligned)" }, value: { type: "integer", minimum: 0, maximum: 65535 }, }, }, }, - src/tools.ts:215-218 (handler)Handler for pine_write16 — calls pine.write16(addr, value) and returns a confirmation message.
case "pine_write16": { await pine.write16(addr(), p.value as number); return ok(`Wrote ${fmtHex(p.value as number)} → ${addrHex(addr())}`); } - src/pine.ts:242-247 (helper)Low-level PineClient.write16 — builds a 6-byte buffer (4-byte LE address + 2-byte LE value) and sends it via the PINE protocol with opcode Op.Write16 (0x05).
async write16(addr: number, val: number): Promise<void> { const args = Buffer.alloc(6); args.writeUInt32LE(addr, 0); args.writeUInt16LE(val, 4); await this.call(Op.Write16, args); } - src/tools.ts:171-172 (registration)Registration of all tools via ListToolsRequestSchema handler, which serves the TOOLS array (including pine_write16).
export function registerTools(server: Server, pine: PineClient): void { server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));