NES 服务

[English]

  • 辅助头文件: #include "brookesia/service_helper/emulation/nes.hpp"

  • 辅助类: esp_brookesia::service::helper::Nes

概述

brookesia_emulation_nes 为 NES 模拟器运行时暴露服务控制面。

核心职责

  • 控制 ROM 加载、启动、暂停、停止、存档和手柄状态。

  • 通过 Display 服务源输出画面,而不是通过远端传输通道传输原始帧。

  • 在服务组件内部维护 nofrendo 后端代码。

集成位置

该组件是 ESP-Brookesia 发布组件清单中的独立组件,可通过 ESP-IDF 组件依赖集成,并与同层框架组件按需组合。

服务接口

函数

Load

描述

Load a NES ROM. Example config: {"rom_path":"/sdcard/roms/demo.nes","save_path":"/sdcard/roms/demo_nes.save","display_output_name":"Output0","display_source_name":"NES","video_area":{"x":0,"y":0,"width":0,"height":0},"video_mode":"Fit","audio_mode":"Auto","auto_activate_display":false}

执行要求
  • 是否需要调度器: 需要

参数
  • Config

    • 类型: Object

    • 是否必填: 必填

    • 描述: NES runtime configuration. video_area uses the full output when width/height are 0.

Schema JSON
展开查看 JSON

{
  "name": "Load",
  "description": "Load a NES ROM. Example config: {\"rom_path\":\"/sdcard/roms/demo.nes\",\"save_path\":\"/sdcard/roms/demo_nes.save\",\"display_output_name\":\"Output0\",\"display_source_name\":\"NES\",\"video_area\":{\"x\":0,\"y\":0,\"width\":0,\"height\":0},\"video_mode\":\"Fit\",\"audio_mode\":\"Auto\",\"auto_activate_display\":false}",
  "require_scheduler": true,
  "default_timeout_ms": null,
  "parameters": [
    {
      "name": "Config",
      "description": "NES runtime configuration. video_area uses the full output when width/height are 0.",
      "type": "Object",
      "required": true,
      "default_value": null
    }
  ],
  "return_value": null
}
CLI 命令
svc_call NES Load {"Config":null}

Start

描述

Start or continue the loaded NES runtime.

执行要求
  • 是否需要调度器: 需要

参数
  • 无。

Schema JSON
展开查看 JSON

{
  "name": "Start",
  "description": "Start or continue the loaded NES runtime.",
  "require_scheduler": true,
  "default_timeout_ms": null,
  "parameters": [],
  "return_value": null
}
CLI 命令
svc_call NES Start

Pause

描述

Pause the NES runtime.

执行要求
  • 是否需要调度器: 需要

参数
  • 无。

Schema JSON
展开查看 JSON

{
  "name": "Pause",
  "description": "Pause the NES runtime.",
  "require_scheduler": true,
  "default_timeout_ms": null,
  "parameters": [],
  "return_value": null
}
CLI 命令
svc_call NES Pause

Resume

描述

Resume the NES runtime.

执行要求
  • 是否需要调度器: 需要

参数
  • 无。

Schema JSON
展开查看 JSON

{
  "name": "Resume",
  "description": "Resume the NES runtime.",
  "require_scheduler": true,
  "default_timeout_ms": null,
  "parameters": [],
  "return_value": null
}
CLI 命令
svc_call NES Resume

Stop

描述

Stop the NES runtime.

执行要求
  • 是否需要调度器: 需要

参数
  • 无。

Schema JSON
展开查看 JSON

{
  "name": "Stop",
  "description": "Stop the NES runtime.",
  "require_scheduler": true,
  "default_timeout_ms": null,
  "parameters": [],
  "return_value": null
}
CLI 命令
svc_call NES Stop

Reset

描述

Soft reset the loaded NES runtime.

执行要求
  • 是否需要调度器: 需要

参数
  • 无。

Schema JSON
展开查看 JSON

{
  "name": "Reset",
  "description": "Soft reset the loaded NES runtime.",
  "require_scheduler": true,
  "default_timeout_ms": null,
  "parameters": [],
  "return_value": null
}
CLI 命令
svc_call NES Reset

Save

描述

Save SRAM to the configured save path.

执行要求
  • 是否需要调度器: 需要

参数
  • 无。

Schema JSON
展开查看 JSON

{
  "name": "Save",
  "description": "Save SRAM to the configured save path.",
  "require_scheduler": true,
  "default_timeout_ms": null,
  "parameters": [],
  "return_value": null
}
CLI 命令
svc_call NES Save

SetGamepadState

描述

Set current NES gamepad state. Example: {"up":false,"down":false,"left":false,"right":false,"a":false,"b":false,"select":false,"start":false,"x":false}

执行要求
  • 是否需要调度器: 不需要

参数
  • State

    • 类型: Object

    • 是否必填: 必填

    • 描述: Gamepad state object.

Schema JSON
展开查看 JSON

{
  "name": "SetGamepadState",
  "description": "Set current NES gamepad state. Example: {\"up\":false,\"down\":false,\"left\":false,\"right\":false,\"a\":false,\"b\":false,\"select\":false,\"start\":false,\"x\":false}",
  "require_scheduler": false,
  "default_timeout_ms": null,
  "parameters": [
    {
      "name": "State",
      "description": "Gamepad state object.",
      "type": "Object",
      "required": true,
      "default_value": null
    }
  ],
  "return_value": null
}
CLI 命令
svc_call NES SetGamepadState {"State":null}

GetState

描述

Get NES runtime state.

执行要求
  • 是否需要调度器: 不需要

参数
  • 无。

返回值
  • 类型: String

  • 描述: Example: "Running"

Schema JSON
展开查看 JSON

{
  "name": "GetState",
  "description": "Get NES runtime state.",
  "require_scheduler": false,
  "default_timeout_ms": null,
  "parameters": [],
  "return_value": {
    "type": "String",
    "description": "Example: \"Running\""
  }
}
CLI 命令
svc_call NES GetState

事件

StateChanged

描述

NES runtime state changed.

执行要求
  • 是否需要调度器: 需要

参数
  • State

    • 类型: String

    • 描述: Runtime state.

Schema JSON
展开查看 JSON

{
  "name": "StateChanged",
  "description": "NES runtime state changed.",
  "require_scheduler": true,
  "items": [
    {
      "name": "State",
      "description": "Runtime state.",
      "type": "String"
    }
  ]
}
CLI 命令
svc_subscribe NES StateChanged

Error

描述

NES runtime error.

执行要求
  • 是否需要调度器: 需要

参数
  • Message

    • 类型: String

    • 描述: Error message.

Schema JSON
展开查看 JSON

{
  "name": "Error",
  "description": "NES runtime error.",
  "require_scheduler": true,
  "items": [
    {
      "name": "Message",
      "description": "Error message.",
      "type": "String"
    }
  ]
}
CLI 命令
svc_subscribe NES Error

SaveCompleted

描述

NES SRAM save completed.

执行要求
  • 是否需要调度器: 需要

参数
  • SavePath

    • 类型: String

    • 描述: Save path.

Schema JSON
展开查看 JSON

{
  "name": "SaveCompleted",
  "description": "NES SRAM save completed.",
  "require_scheduler": true,
  "items": [
    {
      "name": "SavePath",
      "description": "Save path.",
      "type": "String"
    }
  ]
}
CLI 命令
svc_subscribe NES SaveCompleted