Skip to content

Demos

Download the Linux emulator, compiler SDK, and every demo NRO.

To make your own, see Build a program.

This page shows Kokoromi's graphics and sound demos. Every clip is captured from the emulator.

What this does and does not show

Kokoromi emulates the hardware: an AArch64 CPU, an Ampere GPU, display and an audio DSP path. The GPU translator is validated against desktop sm_86 NVIDIA silicon. Command and shader-header layouts come from NVIDIA's published headers via Mesa.

Nintendo supplies the OS; Kokoromi does not emulate it. The small service layer in this repository is a stand-in that lets our own test programs drive the emulated GPU, display and audio. It follows Switch 1 interfaces because those are known.

Every demo is our own program built with our SDK. No Switch 2 binary, shader, firmware or exploit was used, and no retail or third-party binary has run. The demos show the hardware emulation running end to end with code written for it, not Switch 2 software compatibility.

Running on the emulator

Each Nintendo Relocatable Object (NRO) is loaded by the emulated CPU, uses Ampere machine code through the GPU driver path, and sends sound through the audio renderer.

Triangle

A single triangle is drawn from a compact command list and presented to the display.

Sprites

The stick moves the layers through the hid service. Halfway through, a button press flashes the scene.

Bounce

Particles bounce under a simple physics simulation. Each collision makes a sound.

BoomBox

The ray-traced scene turns the BoomBox and moving lamp inside the 3.0 × 3.9 × 4.8 metre room, with soft shadows, reflections and colour bounce. The CC0 track “Lofi Hip Hop Loop” by omfgdude demonstrates Doppler, cardioid directivity, panning, grille filtering, reflections and reverb.

Ray-traced scene with the old and new lighting

The top row is v4 and the bottom row is v5. Look at the lamp's pool, the moving shadows and the wall colour on the BoomBox.

FlightHelmet

The helmet is rendered with six materials, one draw for each material.

Post

The pinwheel is drawn into one image, then sampled in a second pass for the screen effects.

Particles

A compute update moves the particles before one instanced draw.

Solar system birth

The simulation starts 2,048 bodies in a young disk; Kepler drift and mutual kicks move them around the star while overlapping bodies accrete.

Julia

A small block of shader input data changes the Julia set over time.

Mandelbrot CUDA

A double-precision dive into the seahorse valley, rendered with NVIDIA's CUDA sample kernel.

Tensor upscale

Default
Exact

This upscales a half-resolution frame with tensor-core matrix instructions. The default path takes 78.1 ms and exact takes 155.9 ms on an A40; the clips are visually identical, with only the default path's rounding changing their digests.

Ray-traced scene

Ray-traced scene with the old and new lighting

The top row is v4 and the bottom row is v5. Look at the lamp's pool, the moving shadows and the wall colour on the BoomBox.

Music

Synthesized instruments build the mix heard in the clip.

Dungeon

Raster

Ray traced

The raster tour moves from the torch-lit hallway into the limestone cave, then follows the river past the fire. The ray-traced clip is the first 20 seconds of the tour at the full ray budget.

Measured

Median frame times for demos with published measurements:

Demo Variant Time
Test frame, 1080p exact 4.2 ms
Julia set exact 4.7 ms
Triangle, 1080p exact 6.6 ms
CUDA Mandelbrot, 800x600 exact 10.2 ms
Tensor upscale default, A40 78.1 ms
Tensor upscale exact, A40 155.9 ms
Dungeon raster default, A40 647 ms uncontended

These are emulator measurements, not native Switch 2 measurements.

Share

Paste the dungeon clip, poster, or GIF teaser straight into Discord. The BoomBox clip and the sprites clip and GIF teaser work there too.