Fork of Coolsonickirby/imgui-smash (GPL-2.0) used by SSBU Online Deluxe: renderer correction and memory trims
  • C++ 50.9%
  • C 45.8%
  • CMake 1.7%
  • Rust 1.1%
  • PowerShell 0.2%
  • Other 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-24 21:00:59 -04:00
docs Refresh main-branch documentation for the 1.0.1 release 2026-10-24 21:00:59 -04:00
imgui-smash Shrink the per-slot command and control budgets to one 64 KiB page and 16 KiB 2026-10-14 08:12:19 -04:00
src Pin the archive 09b296a0 (13851844 bytes) with the smaller draw-slot budgets 2026-10-14 08:15:23 -04:00
.gitignore Ignore lib 2026-03-26 16:49:27 -04:00
.gitmodules Initial Commit 2026-03-26 16:49:04 -04:00
Build-Standalone.ps1 Standalone companion crate: drop imgui-api, pinned archive, prefixed hook 2026-10-13 22:37:03 -04:00
build.rs Pin the archive 09b296a0 (13851844 bytes) with the smaller draw-slot budgets 2026-10-14 08:15:23 -04:00
Cargo.lock Standalone companion crate: drop imgui-api, pinned archive, prefixed hook 2026-10-13 22:37:03 -04:00
Cargo.toml Standalone companion crate: drop imgui-api, pinned archive, prefixed hook 2026-10-13 22:37:03 -04:00
deterministic-archive.cmake Standalone companion crate: drop imgui-api, pinned archive, prefixed hook 2026-10-13 22:37:03 -04:00
generate_exports.py Initial Commit 2026-03-26 16:49:04 -04:00
README.md Refresh main-branch documentation for the 1.0.1 release 2026-10-24 21:00:59 -04:00
rust-toolchain.toml Standalone companion crate: drop imgui-api, pinned archive, prefixed hook 2026-10-13 22:37:03 -04:00

imgui-smash

Project note: This fork is AI-assisted, human-directed and reviewed. Upstream authors retain credit; validation and known limits describe what has actually been checked.

A Dear ImGui backend on NVN for Super Smash Bros. Ultimate, forked from Coolsonickirby/imgui-smash at bb47b205. It is the host plugin whose exported functions let other Skyline plugins draw their own ImGui windows, and it is the renderer that Online Deluxe links statically. The former deluxe branch is now included in main. Dear ImGui 1.92.7 WIP (19263) remains pinned.

Download v1.0.1 — standalone NRO, static archive and SHA-256 manifest.

For Smash Ultimate 13.0.5. Current runtime references, checked 2026-10-25: Switch firmware 23.0.1, Atmosphère 1.12.1, and Skyline beta 2eb226f. The renderer has recorded Eden validation; the operator also reports the Deluxe/FX stack working on an Erista Switch. Those reports are separate from testing this new release package. See the evidence.

What this fork changes

  • Renderer correction. Per-slot command and control storage with fence checks and a frame guard. Busy slots are skipped rather than overwritten; recorded Eden runs cover embedded and standalone hosts. This is not a claim to fix every intermittent visibility issue.
  • Smaller budgets. One 64 KiB command page and 16 KiB of control memory per draw slot; the unused default fonts, the demo window and the debug tools are compiled out.
  • Standalone companion crate. No imgui-api dependency; build.rs links only an archive whose size and SHA-256 match its pin, and the archive is built deterministically in a pinned devkitA64 image (deterministic-archive.cmake).
  • Two artifacts, one renderer. libimgui_smash.nro is the standalone host; libimgui_smash.a is the archive Deluxe links. The exact source and artifact identities are in the release manifest and validation record.

Installing the host (plugin user)

Only needed when another plugin draws its own windows (for example Elite Legal Stages). Deluxe alone does not need it: it carries the renderer inside its own NRO and reuses this host only when a compatible one is present.

  • Download libimgui_smash.nro from v1.0.1.
  • Place it in sd:/atmosphere/contents/01006A800016E000/romfs/skyline/plugins/.
  • Replace an existing copy rather than installing a second host; fully restart Smash.

The .a archive is for developers, not the SD card. With no plugin using the host, nothing visible happens in game; its demo window is intentionally disabled.

Plugging in (plugin developer)

  • Rows in Deluxe's menu: use its plugin API and Rust SDK.
  • Your own ImGui windows: use this host's callbacks with matching ImGui bindings.

See developer integration and build instructions for exports, context ownership, the pinned archive and checks.

Building

Requires Docker, Rust with cargo-skyline/its target standard library, and PowerShell 7. Initialize the pinned ImGui submodule before building:

git submodule update --init --recursive
pwsh -NoLogo -NoProfile -NonInteractive -File ./Build-Standalone.ps1 -Action archive
pwsh -NoLogo -NoProfile -NonInteractive -File ./Build-Standalone.ps1 -Action clippy
pwsh -NoLogo -NoProfile -NonInteractive -File ./Build-Standalone.ps1 -Action skyline

build.rs refuses an archive whose size or SHA-256 differs from its pin. The clippy action checks the host target; Skyline checks and the four C++ tests are listed in DEVELOPMENT.md. Diagnostic features frame-guard-stats and draw-stats are off in releases. The old Makefile/bind.sh flow was replaced by this pinned build.

Credits

Backend license: GPL v2. Upstream and vendored licenses remain in their source directories.