# hailtododongo/pyrite64 architecture

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

- Interactive diagram: https://gitdiagram.com/hailtododongo/pyrite64
- Repository: https://github.com/hailtododongo/pyrite64

## Overview

Pyrite64 combines a visual game editor with an N64 runtime. The main workflow is authoring a project’s assets, scenes, objects, and node graphs in the editor, then running the resulting game through the N64 engine. The graph also shows documented import, rendering, collision, audio, and toolchain capabilities. Source evidence is sampled and incomplete, so some documented subsystem links use the README; unsampled implementation details are not inferred.

Main entry points: [`src/main.cpp`](https://github.com/hailtododongo/pyrite64/blob/main/src/main.cpp) (Editor application), [`src/project/assetManager.cpp`](https://github.com/hailtododongo/pyrite64/blob/main/src/project/assetManager.cpp) (Asset manager), [`n64/engine/src/scene/sceneManager.cpp`](https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/src/scene/sceneManager.cpp) (Runtime scene management), [`n64/engine/include/renderer/drawLayer.h`](https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/include/renderer/drawLayer.h) (Runtime renderer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_editor["Editor"]
  node_app["Editor application<br/>[main.cpp]"]
  node_launcher["Project launcher<br/>[launcher.cpp]"]
  node_scene_editor["Scene editor<br/>[editorScene.cpp]"]
  node_viewport["3D viewport<br/>[viewport3D.cpp]"]
end

subgraph group_authoring["Project authoring"]
  node_project["Project state<br/>[project.h]"]
  node_assets["Asset manager<br/>[assetManager.cpp]"]
  node_scenes["Scene manager<br/>[sceneManager.cpp]"]
  node_scene_data["Scene and objects<br/>[scene.cpp]"]
  node_components["Scene components<br/>[compNodeGraph.cpp]"]
  node_node_graph["Node graphs<br/>[graph.cpp]"]
  node_asset_import["Model import<br/>[assetManager.cpp]"]
end

subgraph group_editor_runtime["Editor services"]
  node_thumbnail["Thumbnail cache<br/>[thumbnailCache.h]"]
  node_undo["Undo history<br/>[undoRedo.h]"]
  node_editor_render["Editor renderer<br/>[pipeline.cpp]"]
  node_framebuffer["Framebuffers<br/>[framebuffer.h]"]
  node_toolchain["Toolchain setup<br/>[toolchain.h]"]
end

subgraph group_n64_runtime["N64 runtime"]
  node_runtime_scene["Runtime scene management<br/>[sceneManager.cpp]"]
  node_runtime_render["Runtime renderer<br/>[drawLayer.h]"]
  node_default_pipeline["Default pipeline"]
  node_hdr_pipeline["HDR and bloom"]
  node_bigtex_pipeline["Big-texture pipeline<br/>[pipelineBigTex.cpp]"]
  node_collision["Collision engine<br/>[collisionScene.cpp]"]
  node_audio["Audio engine<br/>[audioManager.cpp]"]
  node_swapchain["Video swap chain<br/>[swapChain.h]"]
end

subgraph group_shared["Shared utilities"]
  node_fs["Filesystem utilities<br/>[fs.h]"]
  node_json["JSON utilities<br/>[json.h]"]
  node_code_parser["Code parser<br/>[codeParser.cpp]"]
  node_logger["Logging<br/>[logger.h]"]
  node_runtime_logger["Runtime logging<br/>[logger.h]"]
  node_build_process["Process utilities<br/>[proc.h]"]
  node_json_builder["JSON builder<br/>[jsonBuilder.h]"]
end

node_user(("Game creator"))

node_user -->|"uses"| node_app
node_app -->|"starts"| node_launcher
node_app -->|"opens"| node_scene_editor
node_app -->|"creates"| node_thumbnail
node_user -->|"authors"| node_scene_editor
node_scene_editor -.->|"presents"| node_viewport
node_scene_editor -.->|"edits"| node_scenes
node_project -.->|"manages"| node_assets
node_project -.->|"manages"| node_scenes
node_scenes -->|"loads"| node_scene_data
node_scene_data -.->|"uses"| node_components
node_user -->|"scripts"| node_node_graph
node_assets -->|"imports"| node_asset_import
node_assets -->|"parses scripts"| node_code_parser
node_assets -->|"invalidates"| node_thumbnail
node_scenes -->|"clears history"| node_undo
node_thumbnail -->|"renders previews"| node_framebuffer
node_editor_render -->|"uses"| node_framebuffer
node_app -->|"scans"| node_toolchain
node_app -.->|"hosts"| node_project
node_user -->|"runs game"| node_runtime_scene
node_runtime_scene -.->|"renders scene"| node_runtime_render
node_runtime_scene -->|"handles collision"| node_collision
node_runtime_scene -->|"handles audio"| node_audio
node_runtime_render -.->|"draws frames"| node_default_pipeline
node_runtime_render -->|"supports HDR"| node_hdr_pipeline
node_runtime_render -->|"supports big textures"| node_bigtex_pipeline
node_hdr_pipeline -->|"sets buffers"| node_swapchain
node_bigtex_pipeline -->|"uses buffers"| node_swapchain
node_json -->|"reads files"| node_fs
node_code_parser -->|"uses"| node_fs

click node_app "https://github.com/hailtododongo/pyrite64/blob/main/src/main.cpp"
click node_launcher "https://github.com/hailtododongo/pyrite64/blob/main/src/editor/pages/launcher.cpp"
click node_scene_editor "https://github.com/hailtododongo/pyrite64/blob/main/src/editor/pages/editorScene.cpp"
click node_viewport "https://github.com/hailtododongo/pyrite64/blob/main/src/editor/pages/parts/viewport3D.cpp"
click node_project "https://github.com/hailtododongo/pyrite64/blob/main/src/project/project.h"
click node_assets "https://github.com/hailtododongo/pyrite64/blob/main/src/project/assetManager.cpp"
click node_scenes "https://github.com/hailtododongo/pyrite64/blob/main/src/project/scene/sceneManager.cpp"
click node_scene_data "https://github.com/hailtododongo/pyrite64/blob/main/src/project/scene/scene.cpp"
click node_components "https://github.com/hailtododongo/pyrite64/blob/main/src/project/component/types/compNodeGraph.cpp"
click node_node_graph "https://github.com/hailtododongo/pyrite64/blob/main/src/project/graph/graph.cpp"
click node_asset_import "https://github.com/hailtododongo/pyrite64/blob/main/src/project/assetManager.cpp"
click node_thumbnail "https://github.com/hailtododongo/pyrite64/blob/main/src/editor/thumbnailCache.h"
click node_undo "https://github.com/hailtododongo/pyrite64/blob/main/src/editor/undoRedo.h"
click node_editor_render "https://github.com/hailtododongo/pyrite64/blob/main/src/renderer/pipeline.cpp"
click node_framebuffer "https://github.com/hailtododongo/pyrite64/blob/main/src/renderer/framebuffer.h"
click node_toolchain "https://github.com/hailtododongo/pyrite64/blob/main/src/utils/toolchain.h"
click node_runtime_scene "https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/src/scene/sceneManager.cpp"
click node_runtime_render "https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/include/renderer/drawLayer.h"
click node_default_pipeline "https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/src/renderer/pipelineDefault.cpp"
click node_hdr_pipeline "https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/src/renderer/pipelineHDRBloom.cpp"
click node_bigtex_pipeline "https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/src/renderer/pipelineBigTex.cpp"
click node_collision "https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/src/collision/collisionScene.cpp"
click node_audio "https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/src/audio/audioManager.cpp"
click node_swapchain "https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/include/vi/swapChain.h"
click node_fs "https://github.com/hailtododongo/pyrite64/blob/main/src/utils/fs.h"
click node_json "https://github.com/hailtododongo/pyrite64/blob/main/src/utils/json.h"
click node_code_parser "https://github.com/hailtododongo/pyrite64/blob/main/src/utils/codeParser.cpp"
click node_logger "https://github.com/hailtododongo/pyrite64/blob/main/src/utils/logger.h"
click node_runtime_logger "https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/include/lib/logger.h"
click node_build_process "https://github.com/hailtododongo/pyrite64/blob/main/src/utils/proc.h"
click node_json_builder "https://github.com/hailtododongo/pyrite64/blob/main/src/utils/jsonBuilder.h"

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_app,node_launcher,node_scene_editor,node_viewport toneBlue
class node_project,node_assets,node_scenes,node_scene_data,node_components,node_node_graph,node_asset_import toneAmber
class node_thumbnail,node_undo,node_editor_render,node_framebuffer,node_toolchain toneMint
class node_runtime_scene,node_runtime_render,node_default_pipeline,node_hdr_pipeline,node_bigtex_pipeline,node_collision,node_audio,node_swapchain toneRose
class node_fs,node_json,node_code_parser,node_logger,node_runtime_logger,node_build_process,node_json_builder,node_user toneIndigo
```

## Components

### Editor

- [Editor application](https://github.com/hailtododongo/pyrite64/blob/main/src/main.cpp): `src/main.cpp`
- [Project launcher](https://github.com/hailtododongo/pyrite64/blob/main/src/editor/pages/launcher.cpp): `src/editor/pages/launcher.cpp`
- [Scene editor](https://github.com/hailtododongo/pyrite64/blob/main/src/editor/pages/editorScene.cpp): `src/editor/pages/editorScene.cpp`
- [3D viewport](https://github.com/hailtododongo/pyrite64/blob/main/src/editor/pages/parts/viewport3D.cpp): `src/editor/pages/parts/viewport3D.cpp`

### Project authoring

- [Project state](https://github.com/hailtododongo/pyrite64/blob/main/src/project/project.h): `src/project/project.h`
- [Asset manager](https://github.com/hailtododongo/pyrite64/blob/main/src/project/assetManager.cpp): `src/project/assetManager.cpp`
- [Scene manager](https://github.com/hailtododongo/pyrite64/blob/main/src/project/scene/sceneManager.cpp): `src/project/scene/sceneManager.cpp`
- [Scene and objects](https://github.com/hailtododongo/pyrite64/blob/main/src/project/scene/scene.cpp): `src/project/scene/scene.cpp`
- [Scene components](https://github.com/hailtododongo/pyrite64/blob/main/src/project/component/types/compNodeGraph.cpp): `src/project/component/types/compNodeGraph.cpp`
- [Node graphs](https://github.com/hailtododongo/pyrite64/blob/main/src/project/graph/graph.cpp): `src/project/graph/graph.cpp`
- [Model import](https://github.com/hailtododongo/pyrite64/blob/main/src/project/assetManager.cpp): `src/project/assetManager.cpp`

### Editor services

- [Thumbnail cache](https://github.com/hailtododongo/pyrite64/blob/main/src/editor/thumbnailCache.h): `src/editor/thumbnailCache.h`
- [Undo history](https://github.com/hailtododongo/pyrite64/blob/main/src/editor/undoRedo.h): `src/editor/undoRedo.h`
- [Editor renderer](https://github.com/hailtododongo/pyrite64/blob/main/src/renderer/pipeline.cpp): `src/renderer/pipeline.cpp`
- [Framebuffers](https://github.com/hailtododongo/pyrite64/blob/main/src/renderer/framebuffer.h): `src/renderer/framebuffer.h`
- [Toolchain setup](https://github.com/hailtododongo/pyrite64/blob/main/src/utils/toolchain.h): `src/utils/toolchain.h`

### N64 runtime

- [Runtime scene management](https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/src/scene/sceneManager.cpp): `n64/engine/src/scene/sceneManager.cpp`
- [Runtime renderer](https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/include/renderer/drawLayer.h): `n64/engine/include/renderer/drawLayer.h`
- [Default pipeline](https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/src/renderer/pipelineDefault.cpp): `n64/engine/src/renderer/pipelineDefault.cpp`
- [HDR and bloom](https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/src/renderer/pipelineHDRBloom.cpp): `n64/engine/src/renderer/pipelineHDRBloom.cpp`
- [Big-texture pipeline](https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/src/renderer/pipelineBigTex.cpp): `n64/engine/src/renderer/pipelineBigTex.cpp`
- [Collision engine](https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/src/collision/collisionScene.cpp): `n64/engine/src/collision/collisionScene.cpp`
- [Audio engine](https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/src/audio/audioManager.cpp): `n64/engine/src/audio/audioManager.cpp`
- [Video swap chain](https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/include/vi/swapChain.h): `n64/engine/include/vi/swapChain.h`

### Shared utilities

- [Filesystem utilities](https://github.com/hailtododongo/pyrite64/blob/main/src/utils/fs.h): `src/utils/fs.h`
- [JSON utilities](https://github.com/hailtododongo/pyrite64/blob/main/src/utils/json.h): `src/utils/json.h`
- [Code parser](https://github.com/hailtododongo/pyrite64/blob/main/src/utils/codeParser.cpp): `src/utils/codeParser.cpp`
- [Logging](https://github.com/hailtododongo/pyrite64/blob/main/src/utils/logger.h): `src/utils/logger.h`
- [Runtime logging](https://github.com/hailtododongo/pyrite64/blob/main/n64/engine/include/lib/logger.h): `n64/engine/include/lib/logger.h`
- [Process utilities](https://github.com/hailtododongo/pyrite64/blob/main/src/utils/proc.h): `src/utils/proc.h`
- [JSON builder](https://github.com/hailtododongo/pyrite64/blob/main/src/utils/jsonBuilder.h): `src/utils/jsonBuilder.h`

### Other components

- **Game creator**

## Connections

- Game creator → Editor application: uses
- Editor application → Project launcher: starts (evidence: `src/main.cpp`)
- Editor application → Scene editor: opens (evidence: `src/main.cpp`)
- Editor application → Thumbnail cache: creates (evidence: `src/main.cpp`)
- Game creator → Scene editor: authors
- Scene editor → 3D viewport: presents
- Scene editor → Scene manager: edits
- Project state → Asset manager: manages
- Project state → Scene manager: manages (evidence: `src/project/scene/sceneManager.cpp`)
- Scene manager → Scene and objects: loads (evidence: `src/project/scene/sceneManager.cpp`)
- Scene and objects → Scene components: uses
- Game creator → Node graphs: scripts
- Asset manager → Model import: imports (evidence: `src/project/assetManager.cpp`)
- Asset manager → Code parser: parses scripts (evidence: `src/project/assetManager.cpp`)
- Asset manager → Thumbnail cache: invalidates (evidence: `src/project/assetManager.cpp`)
- Scene manager → Undo history: clears history (evidence: `src/project/scene/sceneManager.cpp`)
- Thumbnail cache → Framebuffers: renders previews (evidence: `src/editor/thumbnailCache.h`)
- Editor renderer → Framebuffers: uses (evidence: `src/renderer/pipeline.cpp`)
- Editor application → Toolchain setup: scans (evidence: `src/main.cpp`)
- Editor application → Project state: hosts
- Game creator → Runtime scene management: runs game
- Runtime scene management → Runtime renderer: renders scene
- Runtime scene management → Collision engine: handles collision
- Runtime scene management → Audio engine: handles audio
- Runtime renderer → Default pipeline: draws frames
- Runtime renderer → HDR and bloom: supports HDR (evidence: `n64/engine/src/renderer/pipelineHDRBloom.cpp`)
- Runtime renderer → Big-texture pipeline: supports big textures (evidence: `n64/engine/src/renderer/pipelineBigTex.cpp`)
- HDR and bloom → Video swap chain: sets buffers (evidence: `n64/engine/src/renderer/pipelineHDRBloom.cpp`)
- Big-texture pipeline → Video swap chain: uses buffers (evidence: `n64/engine/src/renderer/pipelineBigTex.cpp`)
- JSON utilities → Filesystem utilities: reads files (evidence: `src/utils/json.h`)
- Code parser → Filesystem utilities: uses (evidence: `src/utils/codeParser.cpp`)
