# nesbox/emulator architecture

> Architecture diagram of the GitHub repository nesbox/emulator, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nesbox/emulator
- Repository: https://github.com/nesbox/emulator

## Overview

NESbox is a browser-embedded Flash emulator for NES, SNES, Sega Mega Drive, Game Boy, and Game Boy Advance. The documented workflow is to embed the SWF, supply a system and game URL, and run the selected game in the browser. The source tree also names single-player, network, contest, walk-through, and own-server modes, plus setup and session components; without source excerpts, their internal wiring cannot be confirmed.

Main entry points: [`bin/Nesbox.swf`](https://github.com/nesbox/emulator/blob/master/bin/Nesbox.swf) (NESbox SWF)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Emulator runtime"]
  node_swf["NESbox SWF<br/>[Nesbox.swf]"]
  node_entry["Application entry<br/>[Nesbox.as]"]
  node_game_data["Game data<br/>[GameData.as]"]
  node_variables["Launch variables<br/>[Variables.as]"]
  node_core_base["Core player base<br/>[CorePlayerBase.as]"]
end

subgraph group_playback["Playback modes"]
  node_single["Single-player mode<br/>[Single.as]"]
  node_network_mode["Network mode<br/>[Network.as]"]
  node_contest["Contest mode<br/>[Contest.as]"]
  node_walk["Walk-through mode<br/>[Walk.as]"]
  node_own_mode["Own-server mode<br/>[OwnServer.as]"]
end

subgraph group_sessions["Network sessions"]
  node_network_session["Network session<br/>[NetworkSession.as]"]
  node_own_session["Own-server session"]
  node_api["Server API<br/>[Api.as]"]
end

subgraph group_interface["Setup and interface"]
  node_setup["Game setup<br/>[Setup.as]"]
  node_own_setup["Own-server setup<br/>[OwnServerSetup.as]"]
  node_actions["Gameplay actions<br/>[Actions.as]"]
end

node_player(("Browser user"))
node_game_url["Game resource URL"]

node_player -->|"embeds"| node_swf
node_swf -->|"loads game"| node_game_url

click node_swf "https://github.com/nesbox/emulator/blob/master/bin/Nesbox.swf"
click node_entry "https://github.com/nesbox/emulator/blob/master/src/Nesbox.as"
click node_game_data "https://github.com/nesbox/emulator/blob/master/src/GameData.as"
click node_variables "https://github.com/nesbox/emulator/blob/master/src/Variables.as"
click node_core_base "https://github.com/nesbox/emulator/blob/master/src/core/CorePlayerBase.as"
click node_single "https://github.com/nesbox/emulator/blob/master/src/mode/Single.as"
click node_network_mode "https://github.com/nesbox/emulator/blob/master/src/mode/Network.as"
click node_contest "https://github.com/nesbox/emulator/blob/master/src/mode/Contest.as"
click node_walk "https://github.com/nesbox/emulator/blob/master/src/mode/Walk.as"
click node_own_mode "https://github.com/nesbox/emulator/blob/master/src/mode/OwnServer.as"
click node_network_session "https://github.com/nesbox/emulator/blob/master/src/network/NetworkSession.as"
click node_own_session "https://github.com/nesbox/emulator/blob/master/src/network/OwnServerSession.as"
click node_api "https://github.com/nesbox/emulator/blob/master/src/server/Api.as"
click node_setup "https://github.com/nesbox/emulator/blob/master/src/ui/Setup.as"
click node_own_setup "https://github.com/nesbox/emulator/blob/master/src/ui/OwnServerSetup.as"
click node_actions "https://github.com/nesbox/emulator/blob/master/src/ui/Actions.as"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_swf,node_entry,node_game_data,node_variables,node_core_base,node_player toneBlue
class node_single,node_network_mode,node_contest,node_walk,node_own_mode toneAmber
class node_network_session,node_own_session,node_api toneMint
class node_setup,node_own_setup,node_actions toneRose
class node_game_url toneIndigo
```

## Components

### Emulator runtime

- [NESbox SWF](https://github.com/nesbox/emulator/blob/master/bin/Nesbox.swf): `bin/Nesbox.swf`
- [Application entry](https://github.com/nesbox/emulator/blob/master/src/Nesbox.as): `src/Nesbox.as`
- [Game data](https://github.com/nesbox/emulator/blob/master/src/GameData.as): `src/GameData.as`
- [Launch variables](https://github.com/nesbox/emulator/blob/master/src/Variables.as): `src/Variables.as`
- [Core player base](https://github.com/nesbox/emulator/blob/master/src/core/CorePlayerBase.as): `src/core/CorePlayerBase.as`

### Playback modes

- [Single-player mode](https://github.com/nesbox/emulator/blob/master/src/mode/Single.as): `src/mode/Single.as`
- [Network mode](https://github.com/nesbox/emulator/blob/master/src/mode/Network.as): `src/mode/Network.as`
- [Contest mode](https://github.com/nesbox/emulator/blob/master/src/mode/Contest.as): `src/mode/Contest.as`
- [Walk-through mode](https://github.com/nesbox/emulator/blob/master/src/mode/Walk.as): `src/mode/Walk.as`
- [Own-server mode](https://github.com/nesbox/emulator/blob/master/src/mode/OwnServer.as): `src/mode/OwnServer.as`

### Network sessions

- [Network session](https://github.com/nesbox/emulator/blob/master/src/network/NetworkSession.as): `src/network/NetworkSession.as`
- [Own-server session](https://github.com/nesbox/emulator/blob/master/src/network/OwnServerSession.as): `src/network/OwnServerSession.as`
- [Server API](https://github.com/nesbox/emulator/blob/master/src/server/Api.as): `src/server/Api.as`

### Setup and interface

- [Game setup](https://github.com/nesbox/emulator/blob/master/src/ui/Setup.as): `src/ui/Setup.as`
- [Own-server setup](https://github.com/nesbox/emulator/blob/master/src/ui/OwnServerSetup.as): `src/ui/OwnServerSetup.as`
- [Gameplay actions](https://github.com/nesbox/emulator/blob/master/src/ui/Actions.as): `src/ui/Actions.as`

### Other components

- **Browser user**
- **Game resource URL**

## Connections

- Browser user → NESbox SWF: embeds
- NESbox SWF → Game resource URL: loads game
