# Yaze MCP Unification Plan **Status:** Draft **Goal:** Create a high-quality, unified toolset for AI-assisted debugging in Zelda3 ROM hacking. ## 1. Backend Consolidation (C++) ### A. Move `EmulatorServiceImpl` to `yaze_grpc_support` - Relocate `src/cli/service/agent/emulator_service_impl.{cc,h}` to `src/app/service/`. - Update `src/app/service/grpc_support.cmake` to include these files. - This allows the GUI application to link against the emulator control logic. ### B. Update `YazeGRPCServer` - Modify `YazeGRPCServer::Initialize` to accept a `yaze::emu::Emulator*`. - In `BuildServer()`, register the `EmulatorServiceImpl`. - Result: A single gRPC port (default 50052) handles ROM I/O, GUI automation, AND Emulator control. ## 2. MCP Server Enhancements (Python) ### A. Semantic Translation (Knowledge Graph) - Integrate `hafs` knowledge base. - Add a lookup layer: if a tool returns an address (e.g., `$028000`), the MCP server should look up the label in `symbols.json` and append it: `$02:8000 [Module07_Underworld]`. - Allow tools to accept labels directly: `read_memory("Link_X_Coord")` -> `read_memory("$7EF36D")`. ### B. Visualization Support - Implement `capture_screenshot` using the `CanvasAutomationService`. - Return high-resolution PNGs to the AI agent for visual debugging of sprite positions and menu states. ### C. Watchpoint History Analysis - Improve `get_watchpoint_history` to provide a summary of *why* memory changed (e.g., "Address $7EF36D changed from $00 to $01 during `Link_MoveX`"). ## 3. Sandboxed Test Suites ### A. Headless Validation - Use `z3ed` (the CLI) to run the unified gRPC server in a headless mode. - Create a suite of Python scripts that use the MCP tools to verify common scenarios: - Can I set a breakpoint and have it hit? - Can I read Link's health and modify it? - Can I step through a routine and verify the CPU flags change? ### B. Integration with ALTTP ROMs - Provide a set of "Golden State" snapshots for vanilla ALTTP. - Test routines against these snapshots to ensure the MCP tools provide consistent and accurate data across different game regions.