OXYGENHUB
# 346ca3ee83f4 retro-remote-debug-controller / CHANGELOG.md
2.3 KiB · Markdown · last changed 0.4.0: pointer injection (POST/GET /pointer) 3 months ago renderedsource blame history raw
4c0b050e Andy McCall ↶ 1
# Changelog
2
3
Contract versions of the Retro Remote Debug Controller (see [SPEC.md]SPEC.md).
4
Semantic versioning: MAJOR = breaking change to an existing endpoint, MINOR =
5
additive (new endpoint / optional field), PATCH = clarification. Every minor so
6
far has been purely additive — older clients keep working, and a server
7
advertises the highest level whose backend callbacks are all present via
8
`/status.contract`.
9
346ca3ee Andy McCall ↶ 10
## 0.4.0
11
- `POST /pointer?x=&y=[&buttons=]` (absolute) or `?dx=&dy=[&buttons=]` (relative)
12
  — inject a pointer move/click through the platform's native mouse path.
13
  `buttons` is a bitmask (bit0=primary, bit1=secondary); omit for a pure move.
14
  Backend callback: `set_pointer`.
15
- `GET /pointer` — read back the current pointer `{x, y, buttons}`, so a test can
16
  tell "input never arrived" from "wrong output drawn". Backend callback:
17
  `get_pointer`.
18
- First consumer: the Neo6502 fork (drives the firmware mouse), unblocking the
19
  pointer floor of the `rstar-api` RWM/RGM toolkit.
20
4c0b050e Andy McCall ↶ 21
## 0.3.0
22
- `POST /mem?addr=&bank=` — write (poke) memory; bytes in the request body,
23
  returns `{"written":n}`. Backend callback: `write_mem`.
24
- `GET /audio` — drain synthesised PCM since the last call as a self-describing
25
  WAV (the audio analogue of `/screenshot`); `X-Rrdc-Audio-Dropped` header on
26
  ring overflow. Backend callback: `capture_audio`.
27
- The NEC PC-FX (Mednafen) fork joins as the fourth conforming emulator, the
28
  second to vendor the C core as a git submodule.
29
30
## 0.2.0
31
- `POST /key?text=|code=[&down=]` — inject input (press / release / tap).
32
  Backend callback: `inject_key`.
33
- `POST /reset` — soft/cold reset. Backend callback: `reset`.
34
- Contract gating introduced: a NULL callback returns 501 for its endpoint and
35
  lowers the advertised contract, keeping partial backends honest.
36
37
## 0.1.0
38
- Initial contract: `GET /status`, `GET /screenshot` (PPM), `GET /mem`,
39
  `GET /regs`, `POST /step`, `POST /pause` / `POST /resume`.
40
- Shared C core (`core/retro_control.{c,h}`) — sockets, HTTP, PPM/JSON encoding,
41
  and cooperative pause/step, driven by three loop hooks. Backend callbacks:
42
  `read_mem`, `get_regs_json`, `get_framebuffer`, `get_frame_count`.
43
- Shared pytest client (`client/emu_control.py`) and the platform-agnostic
44
  conformance suite. Reference implementation: the Commander X16 fork.