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
  • Config

    • Type: Object

    • Required: 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
  • State

    • Type: Object

    • Required: 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: String

  • Description: 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
  • State

    • Type: String

    • Description: 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
  • Message

    • Type: String

    • Description: 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
  • SavePath

    • Type: String

    • Description: 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