# simon3sarkis/super-odyssey-pc-recomp architecture

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

- Interactive diagram: https://gitdiagram.com/simon3sarkis/super-odyssey-pc-recomp
- Repository: https://github.com/simon3sarkis/super-odyssey-pc-recomp

## Overview

Super Odyssey PC Recomp turns a user-supplied extracted game into a native PC game: installation copies game data, recompiles its ARM64 code, and prepares shaders; Play boots the translated game against host implementations of Switch services and graphics. The runtime also covers controls, audio, settings, RomFS mods, and updates. The README documents several capabilities whose wiring is not shown in sampled source, so those links are documented relationships; unsampled implementation details are not inferred.

Main entry points: [`runtime/ui/setup.h`](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/ui/setup.h) (Installer UI), [`runtime/main.c`](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/main.c) (Runtime entry), [`runtime/hle/bindings.c`](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/hle/bindings.c) (Host function bindings), [`runtime/settings.c`](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/settings.c) (Settings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_install["Setup and lifecycle"]
  node_installer["Installer UI<br/>[setup.h]"]
  node_gamefiles[("Game files<br/>[paths.c]")]
  node_romfs["RomFS preparation<br/>[romfs_build.c]"]
end

subgraph group_translation["Game translation"]
  node_gamebuild["Code recompilation<br/>[gamebuild.c]"]
  node_simdlift["ARM64 SIMD lowering<br/>[simd_c.py]"]
  node_loader["Module loader<br/>[loader.c]"]
  node_dispatch["Guest dispatch<br/>[dispatch.c]"]
end

subgraph group_runtime["Runtime services"]
  node_main["Runtime entry<br/>[main.c]"]
  node_kernel["Guest kernel<br/>[kernel.c]"]
  node_hle["Host function bindings<br/>[bindings.c]"]
  node_services["System services"]
  node_filesystem["Filesystem service<br/>[fs.c]"]
  node_platform["Host platform"]
end

subgraph group_graphics["Graphics and audio"]
  node_nvn["NVN emulation<br/>[objects.c]"]
  node_renderer["Vulkan renderer<br/>[exec.c]"]
  node_shaderprep["Shader preparation<br/>[shaders.c]"]
  node_audio["Audio service<br/>[audio.c]"]
end

subgraph group_player["Player features"]
  node_input["Input and bindings<br/>[input.c]"]
  node_settings["Settings<br/>[settings.c]"]
  node_menu["In-game menu<br/>[menu.h]"]
  node_mods["RomFS mods<br/>[mods.c]"]
  node_updater["Built-in updater<br/>[updater.c]"]
end

node_user(("Player"))
node_github{{"Update releases"}}

node_user -->|"provides game"| node_installer
node_installer -->|"installs data"| node_gamefiles
node_installer -->|"recompiles code"| node_gamebuild
node_installer -->|"prepares RomFS"| node_romfs
node_installer -->|"prepares shaders"| node_shaderprep
node_user -->|"starts game"| node_main
node_main -->|"initializes host"| node_platform
node_main -->|"boots runtime"| node_kernel
node_gamebuild -.->|"lowers SIMD"| node_simdlift
node_main -.->|"loads modules"| node_loader
node_loader -.->|"dispatches guest code"| node_dispatch
node_dispatch -.->|"uses host bindings"| node_hle
node_hle -.->|"implements services"| node_services
node_services -.->|"routes filesystem calls"| node_filesystem
node_filesystem -->|"supports mod files"| node_mods
node_user -->|"provides controls"| node_input
node_input -->|"uses bindings"| node_settings
node_user -->|"opens settings"| node_menu
node_menu -->|"edits options"| node_settings
node_main -->|"checks updates"| node_updater
node_updater -->|"checks releases"| node_github
node_nvn -.->|"executes commands"| node_renderer
node_renderer -.->|"uses prepared shaders"| node_shaderprep
node_hle -.->|"provides audio service"| node_audio
node_user -->|"configures graphics"| node_settings

click node_installer "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/ui/setup.h"
click node_gamefiles "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/paths.c"
click node_romfs "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/romfs_build.c"
click node_gamebuild "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/gamebuild.c"
click node_simdlift "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/tools/simd_c.py"
click node_loader "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/loader.c"
click node_dispatch "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/dispatch.c"
click node_main "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/main.c"
click node_kernel "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/kernel.c"
click node_hle "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/hle/bindings.c"
click node_services "https://github.com/simon3sarkis/super-odyssey-pc-recomp/tree/main/runtime/services"
click node_filesystem "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/services/fs.c"
click node_platform "https://github.com/simon3sarkis/super-odyssey-pc-recomp/tree/main/runtime/platform"
click node_input "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/hle/input.c"
click node_settings "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/settings.c"
click node_menu "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/ui/menu.h"
click node_mods "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/mods.c"
click node_updater "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/updater.c"
click node_nvn "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/nvn/objects.c"
click node_renderer "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/nvn/vulkan/exec.c"
click node_shaderprep "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/nvn/vulkan/shaders.c"
click node_audio "https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/services/audio.c"

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_installer,node_gamefiles,node_romfs toneBlue
class node_gamebuild,node_simdlift,node_loader,node_dispatch toneAmber
class node_main,node_kernel,node_hle,node_services,node_filesystem,node_platform toneMint
class node_nvn,node_renderer,node_shaderprep,node_audio toneRose
class node_input,node_settings,node_menu,node_mods,node_updater,node_user,node_github toneIndigo
```

## Components

### Setup and lifecycle

- [Installer UI](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/ui/setup.h): `runtime/ui/setup.h`
- [Game files](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/paths.c): `runtime/paths.c`
- [RomFS preparation](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/romfs_build.c): `runtime/romfs_build.c`

### Game translation

- [Code recompilation](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/gamebuild.c): `runtime/gamebuild.c`
- [ARM64 SIMD lowering](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/tools/simd_c.py): `tools/simd_c.py`
- [Module loader](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/loader.c): `runtime/loader.c`
- [Guest dispatch](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/dispatch.c): `runtime/dispatch.c`

### Runtime services

- [Runtime entry](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/main.c): `runtime/main.c`
- [Guest kernel](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/kernel.c): `runtime/kernel.c`
- [Host function bindings](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/hle/bindings.c): `runtime/hle/bindings.c`
- [System services](https://github.com/simon3sarkis/super-odyssey-pc-recomp/tree/main/runtime/services): `runtime/services`
- [Filesystem service](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/services/fs.c): `runtime/services/fs.c`
- [Host platform](https://github.com/simon3sarkis/super-odyssey-pc-recomp/tree/main/runtime/platform): `runtime/platform`

### Graphics and audio

- [NVN emulation](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/nvn/objects.c): `runtime/nvn/objects.c`
- [Vulkan renderer](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/nvn/vulkan/exec.c): `runtime/nvn/vulkan/exec.c`
- [Shader preparation](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/nvn/vulkan/shaders.c): `runtime/nvn/vulkan/shaders.c`
- [Audio service](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/services/audio.c): `runtime/services/audio.c`

### Player features

- [Input and bindings](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/hle/input.c): `runtime/hle/input.c`
- [Settings](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/settings.c): `runtime/settings.c`
- [In-game menu](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/ui/menu.h): `runtime/ui/menu.h`
- [RomFS mods](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/mods.c): `runtime/mods.c`
- [Built-in updater](https://github.com/simon3sarkis/super-odyssey-pc-recomp/blob/main/runtime/updater.c): `runtime/updater.c`

### Other components

- **Player**
- **Update releases**

## Connections

- Player → Installer UI: provides game (evidence: `README.md`)
- Installer UI → Game files: installs data (evidence: `README.md`)
- Installer UI → Code recompilation: recompiles code (evidence: `README.md`)
- Installer UI → RomFS preparation: prepares RomFS (evidence: `README.md`)
- Installer UI → Shader preparation: prepares shaders (evidence: `README.md`)
- Player → Runtime entry: starts game (evidence: `README.md`)
- Runtime entry → Host platform: initializes host (evidence: `runtime/main.c`)
- Runtime entry → Guest kernel: boots runtime (evidence: `runtime/main.c`)
- Code recompilation → ARM64 SIMD lowering: lowers SIMD
- Runtime entry → Module loader: loads modules
- Module loader → Guest dispatch: dispatches guest code
- Guest dispatch → Host function bindings: uses host bindings
- Host function bindings → System services: implements services
- System services → Filesystem service: routes filesystem calls
- Filesystem service → RomFS mods: supports mod files (evidence: `runtime/services/fs.c`)
- Player → Input and bindings: provides controls (evidence: `runtime/hle/input.c`)
- Input and bindings → Settings: uses bindings (evidence: `runtime/hle/input.c`)
- Player → In-game menu: opens settings (evidence: `README.md`)
- In-game menu → Settings: edits options (evidence: `README.md`)
- Runtime entry → Built-in updater: checks updates (evidence: `runtime/main.c`)
- Built-in updater → Update releases: checks releases (evidence: `README.md`)
- NVN emulation → Vulkan renderer: executes commands
- Vulkan renderer → Shader preparation: uses prepared shaders
- Host function bindings → Audio service: provides audio service
- Player → Settings: configures graphics (evidence: `README.md`)
