This reference records the evidence behind the development guides. Primary project repositories, their implementation files and their release metadata are the technical authorities used here. Community posts were used for discovery, not as proof of API behavior or application compatibility.
Reading the evidence#
Documented means an upstream guide or public declaration states the behavior. Source-inspected means the relevant implementation or build recipe was checked. Locally checked means an explicit operation during this research produced a recorded result. Recommended describes an engineering choice proposed in the guides. These categories are not interchangeable.
The technical sources were collected on November 13, 2026 in America/New_York. Some project timestamps use another timezone and release identifiers contain 20261114. The release API records runtime publication at 23:58:11 UTC and devkit publication at 23:15:00 UTC on November 13. These correspond to November 13 in New York as well.
Repository snapshots#
| Repository | Inspected source commit | Role |
|---|---|---|
| hblist | afb72130793e7e496ee7c021d129594efd0230b3 | Project discovery directory |
| kaihen | e897f991524590833b82fbe8d63a3c6775fb8101 | Runtime, protocol, JIT and plugins |
| libounce | 9382b1ec48ac5dabdaf52f1f99e0c0aacd02cd2f | Native application runtime |
| ounce-devkit | f3478152dc553a104dd991efca4bde0c6e7cfe3e | Build overlay and examples |
| ounce-hbloader | 95f0e5dfbbcd28d678d30c99eeb5344feb0f6e71 | NRO loader |
| ounce-hbmenu | d7e10c028b53da17867615ee0a3c453b9cf9464a | Application menu |
| ounceshell | cb4c4ada491b4e0eb17f4d0419661095f96844e6 | Full application port example |
| ouncevk | f5afcd27a98d47a35b7091b097ffd7f46b0be3e4 | Graphics driver |
The inspected runtime repository HEAD differs from the public release tag, and the devkit pins its own libkaihen source revision. Those identities are recorded separately in source-manifest.json; they should not be collapsed into one “latest” revision. A scoped comparison of the inspected kaiHEN libkaihen, bootstrap and hen directories against the devkit's pinned kaiHEN commit showed no differences during this research.
Release artifact checks#
Both public archives were downloaded and hashed without installation or execution. The calculated digests matched their published values.
| Artifact | Size in bytes | SHA-256 |
|---|---|---|
kaiHEN-20261114c.zip | 12325073 | 63b91e5e7c6f411aad758758e5a1a3cbe1f855b4304d87916afe5319b9dfd967 |
ounce-devkit-20261114.tar.xz | 27312228 | f24d5773b1ee1c2b19317f57e8ae54a60fcdcefe493a0e495297c241c4912f59 |
The runtime archive contains 59 entries and the development-kit archive 362 entries. The complete listings and metadata are in release-verification.json. Hash equality verifies the downloaded bytes against the published digest; it does not validate the safety or correctness of those binaries. kaiHEN 20261114c release ounce-devkit 20261114 release
Download the verification record for archive digests and the local host-test outcomes. The documentation archive includes blank build and hardware-test templates.
Local validation outcome#
The HEN and RO host suites were attempted using the inspected libounce headers. The default Apple Clang invocation failed on HIPC constexpr diagnostics. A second invocation suppressing that diagnostic compiled the first fixture in each suite, but execution stopped with Trace/BPT trap and exit code 133. The cause remains unresolved. The suites did not pass on this host. Exact compiler identity, commands and captured output are retained under validation/.
No devkit was installed, no native application was cross-compiled, and no console operation, firmware change, save modification or hardware test was performed. The illustrative application is source material for a future build, not a tested release. This publication preserves the original research scope; site behavior is verified separately from console behavior.
Material source inconsistencies#
- The Civilization VII launcher README refers to private kaiHEN 0.0.4 and a testship layout. The public runtime uses a release archive with a documented layout. Compatibility between that launcher's current assumptions and this public package needs a concrete test. Civilization VII acquisition requirements
- The plugin public-header commentary describes an older startup order and failure behavior. The inspected bootstrap starts HEN first and lets it remain running when later plugin startup stops. The guides follow the implementation and current plugin guide. Bootstrap launch and plugin readiness Native plugin development guide
- OunceShell's README points to
switch2/PORT.md, but that file is absent in the inspected checkout. Its build and platform sources were used for the porting case study. OunceShell platform source and dependency build - OunceVK's summary describes public library names at a high level. Its packaging script gives the more exact archive/linker-script arrangement used by the toolchain guide. Static graphics driver packaging
- The official devkitPro pacman page returned HTTP 403 to the research fetcher. The guide links the project's installer workflow without inventing host-specific package installation steps.
Open questions and useful next experiments#
| Question | Current evidence | Experiment that would settle it |
|---|---|---|
| Which firmware and game revisions work? | Limited upstream baselines | Record successful acquisition and native NRO launch per exact combination |
| Does the public package work through the inspected Civ launcher? | Stale launcher documentation | Validate the release layout and run one recorded supported-device attempt |
| Which graphics features are reliable? | Source and upstream API claims | Device capability dump and small feature tests on hardware |
| What application memory is available? | Loader and allocator implementations | Measure allocation and resource budgets under a recorded host title |
| Why do local host fixtures trap? | Apple Clang compilation plus exit 133 | Reproduce with debugger and compare a supported Linux/GNU environment |
| Which app ports work with this devkit? | Project directory and source examples | Hash-identified builds with repeatable scenario tests |
| How stable are plugins and JIT under stress? | Public implementation and test fixtures | Concurrency, exhaustion and repeated lifecycle tests on hardware |
| Are turnkey engine exports available? | No validated export in this pack | Minimal engine build with a complete native runtime test |
Primary source catalog#
The links below point to exact inspected commits where available. source-register.json adds file SHA-256 hashes for local verification. The catalog includes different API sections in the same source file where useful; those are one underlying source, not independent corroboration.
hblist#
- Community application and plugin directory —
docs/index.md
kaihen#
- kaiHEN project overview —
README.md - HEN runtime and launch policy —
hen/README.md - RO implementation and test scope —
ro/README.md - kaiHEN client API and handle ownership —
libkaihen/include/kaihen.h - HEN protocol constants and layouts —
libkaihen/include/kaihen/protocol.h - Native plugin public interface —
libkaihen/include/kaihen/plugin.h - Native plugin development guide —
libkaihen/PLUGINS.md - Plugin runtime handoff and teardown —
libkaihen/source/plugin_runtime.cpp - Scalar plugin service implementation —
libkaihen/source/plugin_server.cpp - Server-side CMIF helpers —
libkaihen/source/cmif_server.hpp - JIT backend development guide —
libkaihen/JIT.md - JIT provider and sparse publication —
libkaihen/source/jit.c - JIT provider and plugin library build —
libkaihen/Makefile - Bootstrap launch and plugin readiness —
bootstrap/source/main.cpp - Per-client service-manager proxy —
hen/source/sm_proxy.cpp - HEN command and plugin discovery server —
hen/source/server.cpp - RO client and JIT bookkeeping limits —
ro/source/session.h - RO command validation and JIT publication —
ro/source/session.cpp - RO mapping and cleanup implementation —
ro/source/mapping.cpp - HEN host test commands —
hen/test.sh - RO host test commands —
ro/test.sh - kaiHEN core license —
LICENSE - libkaihen license —
libkaihen/LICENSE
libounce#
- libounce build and library variants —
README.md - Switch 2 Make rules and library overlay —
nx/switch2_rules - Shared Switch 2 CPU flags —
nx/switch2_cpu.mk - Runtime and allocator packaging —
nx/Makefile - NRO platform identity record —
nx/include/switch/nro.h - FS initialization and proxy identity —
nx/source/services/fs.c - Standard filesystem device adapter —
nx/source/runtime/devices/fs_dev.c - Service overrides and borrowed SM session —
nx/source/services/sm.c - Application initialization and exit hooks —
nx/source/runtime/init.c - Pad state and controller helpers —
nx/include/switch/runtime/pad.h - Joy-Con pointer aggregation implementation —
nx/source/runtime/pad_pointer.c - HID touch and conventional input API —
nx/include/switch/services/hid.h - Native Nmouse devices and sample memory —
nx/include/switch2/services/nmouse.h - Switch 2 CPU framebuffer adaptation —
nx/source/display/framebuffer.c - Window size and frame-rate policies —
nx/include/switch/display/native_window.h - VI2 presentation and display capabilities —
nx/include/switch2/services/vi2.h - RomFS mount API —
nx/include/switch/runtime/devices/romfs_dev.h - Socket runtime initialization —
nx/include/switch/runtime/devices/socket.h - Network interface service API —
nx/include/switch/services/nifm.h - Native audio manager root —
nx/include/switch2/services/audu.h - AudioOut native service selection —
nx/source/services/audout.c - AudioRenderer native service selection —
nx/source/services/audren.c - High-level hardware video decoder API —
nx/include/switch2/video/decoder.h - Decoder codecs and low-level image API —
nx/include/switch2/services/viddec.h - Decoder synchronization and lifetime implementation —
nx/source/switch2/video/decoder.c - Graphics image and synchronization API —
nx/include/switch2/services/gsv.h - JIT allocation and transition implementation —
nx/source/kernel/jit.c - Allocator-aware heap measurements —
nx/include/switch2/memory/heap.h - Firmware compatibility markers and defaults —
nx/source/runtime/hosversion.c - Tick frequency and time conversion —
nx/include/switch/arm/counter.h - libounce inherited runtime license —
LICENSE.md
ounce-devkit#
- Development kit installation and usage —
README.md - Devkit installer and checksum selection —
install.sh - Pinned devkit source revisions —
build/sources - Development container baseline —
Dockerfile - Switch 2 CMake toolchain —
toolchain/cmake/Switch2.cmake - CMake platform flags and overlay —
toolchain/cmake/Platform/NintendoSwitch.cmake - Cross-build environment variables —
toolchain/switch2vars.sh - Vulkan clear reference application —
examples/vulkan-clear/source/main.c - Vulkan example build and metadata —
examples/vulkan-clear/Makefile - GLES triangle reference application —
examples/gles-triangle/source/main.c - GLES example NRO build pipeline —
examples/gles-triangle/Makefile - Resident echo plugin example —
examples/plugin-echo/source/main.c - Native plugin ELF and NSO build —
examples/plugin-echo/Makefile - Plugin discovery and scalar client example —
examples/plugin-echo-client/source/main.c - Devkit packaging license —
LICENSE
ounce-hbloader#
- Native NRO loader usage —
README.md - NRO launch cycle and cleanup —
switch2/clean_main.cpp - Loader resource snapshots —
switch2/leak_check.c - Loader license —
LICENSE.md
ounce-hbmenu#
- Switch 2 menu usage and rendering —
switch2/README.md - Menu render adapter —
switch2/render.c - Menu Vulkan renderer —
switch2/graphics_vulkan.c - Menu performance instrumentation —
switch2/perf.c - Menu launch and platform identification —
nx_main/nx_launch.c - Menu license —
LICENSE.md
ounceshell#
- OunceShell project and upstream context —
README.md - OunceShell platform source and dependency build —
switch2/Makefile - OunceShell native initialization —
switch2/src/init.c - SDL rendering compatibility layer —
switch2/src/vita2d_sdl.c - SDL audio compatibility layer —
switch2/src/vita_audio_sdl.c - Network compatibility layer —
switch2/src/psp2_net.c - Deliberately unsupported inherited functions —
switch2/src/dropped_features.c - OunceShell and VitaShell license —
LICENSE
ouncevk#
- OunceVK and Mesa overview —
README.rst - Native graphics interfaces and build guide —
switch2/README.md - Static graphics driver packaging —
switch2/build/package-portlib.sh - Driver Rust target definition —
switch2/toolchain/rust/aarch64-switch-horizon.json - Native GPU completion waits —
src/nouveau/vulkan/nvkmd/nvgpu/nvkmd_nvgpu_native_completion.c - Native GPU progress ownership —
src/nouveau/vulkan/nvkmd/nvgpu/nvkmd_nvgpu_native_progress.c - Mesa licensing reference —
docs/license.rst
Release and external references#
- kaiHEN 20261114c release
- ounce-devkit 20261114 release
- ns2jb SmileBASIC acquisition requirements
- Civilization VII acquisition requirements
- Mesa Zink capabilities documentation
Refreshing this research#
Preserve this snapshot, collect new commit and release identities, compare changed interfaces, and update only claims affected by the changes. Repeat artifact hashes and relevant build or hardware tests before expanding compatibility claims. A new source date does not make an old hardware observation current.