• v0.1.1 e5c5a1a96a

    intpa released this 2026-10-19 23:27:48 -04:00 | 1 commits to main since this release

    Dispatcher idle backoff for Super Smash Bros. Ultimate 13.0.5: one inline hook at main+0x354ab48 that lets the main thread sleep a few microseconds instead of busy-polling six empty job queues while a dependency is still running. Largest effect: the character select with a two-image rendering profile. No job, counter, lock or ordering changes.

    Disclaimer: this project was developed with the assistance of AI (Claude, Codex and other coding agents) under the operator's direction and review. Every result below comes from the dated tests cited; nothing is claimed beyond those records.

    What changed since v0.1.0

    • sd:/ultimate/ssbu_dispatcher_backoff/install.log now begins with plugin=ssbu-dispatcher-backoff/0.1.1, so a log identifies the build that wrote it.
    • src/policy.rs no longer claims to be identical to Deluxe's copy. The decision logic is shared with ssbu-online-deluxe-rewrite; the config-file parser (parse, sanitized, preset=measured) exists only here, since Deluxe retired its dispatcher_backoff.ini on 2026-10-16.
    • README and docs/ANALYSIS.md carry the Switch record of the hook (below), the release flow on both forges, and the one behavioural difference from Deluxe's copy: Deluxe gates its sleeps behind its scene hooks and present wrapper; this plugin has no other hooks and sleeps on any eligible idle pass from the moment it installs.

    No hook, offset, fingerprint or decision change. The NRO is 524,288 bytes like v0.1.0, with the same page-rounded segments (text 393,216, ro 114,688, data 16,384, bss 4,096). ELF sections: .text 392,032, .rodata 84,968, .data 15,272, .bss 552, .rela.dyn 17,064.

    Tested

    The hook, on a Switch. The same hook has run on the operator's Switch since 2026-10-12 inside ssbu-online-deluxe-rewrite, which installs it at boot in every build from 0.3.0 to 0.6.2. The 0.3.0 hardware result, two-image LessLag profile, default policy: character select idle 58–60 fps, up from 48–50; a live match at 60. The character select still dropped to 46 fps while the cursor hand moved, with the default ramp and with preset=measured alike; Deluxe's later hardware captures put that in the two-image presentation path (a texture-ready wait after the acquire, with the game presenting a frame only after the next frame's CPU update), not in this hook, and Deluxe 0.4.0's present-at-flush took the hand sweep to 59.85 fps on the console. Records: Deluxe docs/VALIDATION.md (0.3.0, 0.3.1 and 0.4.0 entries) and docs/RENDERING.md; this repository's docs/ANALYSIS.md section 6b maps them onto the test plan.

    This NRO. Not booted on a Switch or in Eden. It is the v0.1.0 code plus the log line above, rebuilt on the pinned toolchain; the v0.1.0 binary was never booted either (its only recorded deployment is an emulator install on 2026-10-12 with no boot record). To test it on a console: copy the NRO to the plugin folder, boot, confirm install.log ends with result=installed and shows the five words a94e2708 eb09011f 54000d01 f94003e0 9411f072, then run the section 6 checks in docs/ANALYSIS.md. With Deluxe installed the plugin that loads first owns the site; put Deluxe's DISABLE_BACKOFF flag in its data directory to make sure this one does, and use max_ns=0 in config.ini for the A/B.

    Emulator. Eden A/B/A under a 175% CPU quota (2026-10-12, diagnostic and production forms of the hook): character select LessLag 52 → 59 fps and 55.6 → 60.0 fps with 18% less CPU per frame; Vanilla and LLDoubles at 60 with the same CPU saving; live match unchanged. Tables in the README and docs/ANALYSIS.md.

    Host gates on commit e5c5a1a96a8eef45581d6f440ac5fd45d7b33369: cargo fmt --check, cargo test (7 tests), cargo clippy --all-targets -- -D warnings, cargo skyline clippy -- -- -D warnings, cargo skyline build --release. cargo-skyline 3.5.0, skyline crate 0.6.0, host toolchain 1.98.1 per rust-toolchain.toml; the committed tree rebuilds to the released NRO.

    Install

    Requirements: Atmosphère (or Eden), Skyline, Smash 13.0.5. No game data is included or needed.

    Easiest: extract ssbu-dispatcher-backoff-v0.1.1-sd.zip to the root of your SD card. It contains only:

    atmosphere/contents/01006A800016E000/romfs/skyline/plugins/libssbu_dispatcher_backoff.nro
    SSBU-DISPATCHER-BACKOFF-README.txt
    

    Manual: copy libssbu_dispatcher_backoff.nro to sd:/atmosphere/contents/01006A800016E000/romfs/skyline/plugins/. In Eden, use the same path under Eden's sdmc folder.

    If ssbu-online-deluxe-rewrite 0.3.0 or later is installed, this plugin is redundant: Deluxe carries the same hook, on by default (dispatcher_backoff=false in its config.ini turns it off). Whichever plugin loads first owns the site and the other skips (skipped_site_owned_by_another_plugin in this plugin's log, External in Deluxe's Backoff row). Installing both is harmless but pointless.

    Optional tuning: sd:/ultimate/ssbu_dispatcher_backoff/config.ini, keys in the README. max_ns=0 keeps the hook installed but never sleeps.

    Assets

    • libssbu_dispatcher_backoff.nro: the plugin.
    • ssbu-dispatcher-backoff-v0.1.1-sd.zip: the plugin at its SD-card path plus a short README (no game data).
    • manifest.json: tag, commit, toolchain, NRO and ELF SHA-256, segment and section sizes, the test record.
    • SHA256SUMS.txt: SHA-256 of the NRO and the zip, plus every file inside the zip.
    69a6e9ef217f96d0dbd657b4ed98bee15911e4479f5c27d8ce9f21cb898d0168  libssbu_dispatcher_backoff.nro
    75f76b87f49a37a7a1245064e0bec23ac4187f6f2ddbf912a5f10422590f7d6d  ssbu-dispatcher-backoff-v0.1.1-sd.zip
    d920852a5bcb03de14e66455a47c10744c12d7c6e949c4c45309b2315a6bceb3  ssbu-dispatcher-backoff-v0.1.1-sd.zip:SSBU-DISPATCHER-BACKOFF-README.txt
    69a6e9ef217f96d0dbd657b4ed98bee15911e4479f5c27d8ce9f21cb898d0168  ssbu-dispatcher-backoff-v0.1.1-sd.zip:atmosphere/contents/01006A800016E000/romfs/skyline/plugins/libssbu_dispatcher_backoff.nro
    

    Released on Forgejo (https://git.syntaxbyexample.com/intpa/ssbu-dispatcher-backoff, the source of truth) and mirrored on GitHub (https://github.com/crashbandicode/ssbu-dispatcher-backoff) with the same tag, body and assets.

    Downloads