NES Service
Helper header:
#include "brookesia/service_helper/emulation/nes.hpp"Helper class:
esp_brookesia::service::helper::Nes
Overview
brookesia_emulation_nes exposes a service control plane for the NES emulator runtime.
Core Responsibilities
Controls ROM loading, start, pause, stop, save, and gamepad state.
Uses Display service sources for frame output instead of streaming raw frames through a remote transport.
Keeps nofrendo backend code inside the service component.
Integration Position
This component is an independent ESP-Brookesia release component. It can be integrated through ESP-IDF component dependencies and combined with peer framework components as needed.
Standard Include / Helper Class
Standard include:
#include \"brookesia/service_helper/emulation/nes.hpp\"Helper class:
esp_brookesia::service::helper::Nes
Service Interfaces
Functions
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}
Execution
Requires scheduler: Required
Parameters
ConfigType:
ObjectRequired: required
Description: NES runtime configuration. video_area uses the full output when width/height are 0.
Schema JSON
Show raw 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 Command
svc_call NES Load {"Config":null}
Start
Description
Start or continue the loaded NES runtime.
Execution
Requires scheduler: Required
Parameters
No parameters.
Schema JSON
Show raw JSON
{
"name": "Start",
"description": "Start or continue the loaded NES runtime.",
"require_scheduler": true,
"default_timeout_ms": null,
"parameters": [],
"return_value": null
}
CLI Command
svc_call NES Start
Pause
Description
Pause the NES runtime.
Execution
Requires scheduler: Required
Parameters
No parameters.
Schema JSON
Show raw JSON
{
"name": "Pause",
"description": "Pause the NES runtime.",
"require_scheduler": true,
"default_timeout_ms": null,
"parameters": [],
"return_value": null
}
CLI Command
svc_call NES Pause
Resume
Description
Resume the NES runtime.
Execution
Requires scheduler: Required
Parameters
No parameters.
Schema JSON
Show raw JSON
{
"name": "Resume",
"description": "Resume the NES runtime.",
"require_scheduler": true,
"default_timeout_ms": null,
"parameters": [],
"return_value": null
}
CLI Command
svc_call NES Resume
Stop
Description
Stop the NES runtime.
Execution
Requires scheduler: Required
Parameters
No parameters.
Schema JSON
Show raw JSON
{
"name": "Stop",
"description": "Stop the NES runtime.",
"require_scheduler": true,
"default_timeout_ms": null,
"parameters": [],
"return_value": null
}
CLI Command
svc_call NES Stop
Reset
Description
Soft reset the loaded NES runtime.
Execution
Requires scheduler: Required
Parameters
No parameters.
Schema JSON
Show raw JSON
{
"name": "Reset",
"description": "Soft reset the loaded NES runtime.",
"require_scheduler": true,
"default_timeout_ms": null,
"parameters": [],
"return_value": null
}
CLI Command
svc_call NES Reset
Save
Description
Save SRAM to the configured save path.
Execution
Requires scheduler: Required
Parameters
No parameters.
Schema JSON
Show raw JSON
{
"name": "Save",
"description": "Save SRAM to the configured save path.",
"require_scheduler": true,
"default_timeout_ms": null,
"parameters": [],
"return_value": null
}
CLI Command
svc_call NES Save
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}
Execution
Requires scheduler: Not required
Parameters
StateType:
ObjectRequired: required
Description: Gamepad state object.
Schema JSON
Show raw 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 Command
svc_call NES SetGamepadState {"State":null}
GetState
Description
Get NES runtime state.
Execution
Requires scheduler: Not required
Parameters
No parameters.
Return Value
Type:
StringDescription: Example: "Running"
Schema JSON
Show raw JSON
{
"name": "GetState",
"description": "Get NES runtime state.",
"require_scheduler": false,
"default_timeout_ms": null,
"parameters": [],
"return_value": {
"type": "String",
"description": "Example: \"Running\""
}
}
CLI Command
svc_call NES GetState
Events
StateChanged
Description
NES runtime state changed.
Execution
Requires scheduler: Required
Items
StateType:
StringDescription: Runtime state.
Schema JSON
Show raw JSON
{
"name": "StateChanged",
"description": "NES runtime state changed.",
"require_scheduler": true,
"items": [
{
"name": "State",
"description": "Runtime state.",
"type": "String"
}
]
}
CLI Command
svc_subscribe NES StateChanged
Error
Description
NES runtime error.
Execution
Requires scheduler: Required
Items
MessageType:
StringDescription: Error message.
Schema JSON
Show raw JSON
{
"name": "Error",
"description": "NES runtime error.",
"require_scheduler": true,
"items": [
{
"name": "Message",
"description": "Error message.",
"type": "String"
}
]
}
CLI Command
svc_subscribe NES Error
SaveCompleted
Description
NES SRAM save completed.
Execution
Requires scheduler: Required
Items
SavePathType:
StringDescription: Save path.
Schema JSON
Show raw JSON
{
"name": "SaveCompleted",
"description": "NES SRAM save completed.",
"require_scheduler": true,
"items": [
{
"name": "SavePath",
"description": "Save path.",
"type": "String"
}
]
}
CLI Command
svc_subscribe NES SaveCompleted