NES 服务
辅助头文件:
#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