Files
Sprinter-SDCC/docs/mcp-capability-matrix.md
T
2026-09-17 22:57:27 +03:00

5.5 KiB
Raw Blame History

Покрытие raw MCP в общей C-сессии

Эталон списка — 30 инструментов MAME.HT/src/mame_mcp.py с -plugin mamebridge. Столбец «C-сессия» означает инструмент toolchain/sdbg_mcp.py, который обращается к единственному sdbg_server.py через sdbgbridge. Сходное имя само по себе не означает одинаковую адресацию.

Raw MCP C-сессия Состояние и отличие
read_registers read_registers Проверено при stop; C-ответ включает страницы банков и generation
read_memory read_program_memory Проверено при stop: 0x10000+PC совпал с logical Z80; raw 0..0x3ffff, до 4096 байт
read_logical_memory read_memory Проверено при stop; предел C — 256 байт, проверяется загруженный C-код
read_vram read_vram Проверено в живом MAME; 1..4096 байт, точный VRAM share
read_share read_share Проверено; C требует точный tag из list_shares, raw принимает подстроку
list_shares list_shares Проверено; структурированные tag/размер для shares и regions
write_memory Нужны lease, проверка адреса/банка и инвалидация C-карты
set_breakpoint set_line_breakpoint, set_function_breakpoint Только проверенные C-адреса; произвольный raw-адрес и условие ещё не покрыты
clear_breakpoint clear_breakpoint, clear_my_breakpoints Только логические ID текущего владельца, не MAME ID
list_breakpoints Нужен структурированный список с owner и bank guard
set_watchpoint Нужны owner, space/access, bank guard и проверка PC при попадании
clear_watchpoint Зависит от owner-модели watchpoint
step step_instruction Один машинный шаг проверен; счётчик count ещё не поддержан
step_over step_source(kind="over") Проверен C-шаг F10; raw машинный over count пока отличается
step_out step_source(kind="out") Проверен C-выход; raw выход из одного машинного frame отличается
resume continue_execution Проверено с control lease и DAP-событиями
pause pause_execution Проверено с control lease
status session_status, where Проверено; C-статус содержит session/build/generation
disassemble Нужен явный logical/raw адрес и банк; строковый debugger pass-through не используется
screenshot screenshot Проверено на выполняющемся hello; только каталог сессии, до 8 МиБ, при stop кадр помечается stale
read_screen_pixels read_screen_pixels Проверено; до 8192 pen16 пикселей, кадр/время/stale в ответе
list_ports list_ports Проверено; структурированные tag/маска/имя, предел 512 портов и 4096 полей
press_key press_key Проверено на hello через getchar(): один символ/enter/space/tab на 1..60 кадров, только при running CPU и с control lease; удержанные клавиши отпускаются при stop/ошибке. Имена прочих физических клавиш пока не поддержаны
type_string Нужна очередь ввода с release при stop/disconnect
type_text Нужна отдельная проверка natural keyboard и прямой физической клавиатуры
move_mouse Нужна owner-очередь относительных осей
click_mouse Нужна owner-очередь кнопок
press_input Нужен whitelist портов/масок и автоснятие удержания
set_input Нужен whitelist портов/масок и cleanup owner
debugger_command Произвольная команда обходит DAP; сначала только проверенные читающие команды

Живые доказательства для текущего покрытия: run_vscode_dap_probe.py с --mcp-python проверяет stdio C-MCP и DAP, включая program/logical memory, порты, shares/VRAM/PNG; с --waitkey --emulated-key --screen-mcp-python проверяет экран работающего hello во время getchar() и последующий ввод. Автономный run_managed_mcp_probe.py через официальный MCP-клиент проверяет press_key("x") и остановку на строке после getchar(). run_raw_mcp_hello_probe.py проверяет отдельный raw plugin на том же приложении. Несколько процессов MAME с MCP одновременно не проверялись.