Skip to content

Repository files navigation

SWOTS — Switch While On The Subway

SWOTS is an experimental motion-cue overlay for Atmosphère and Tesla Menu. It draws animated edge dots from the Switch's handheld six-axis data.

Important

SWOTS is not a medical device and does not guarantee relief. Stop and rest if you feel unwell; seek medical advice for persistent or severe symptoms.

Requirements

Atmosphère, Tesla Menu, and nx-ovlloader. Building also requires devkitPro switch-dev.

Only handheld mode is supported. SWOTS deliberately ignores detached, wireless, and docked controller sources. Compatibility is still limited; see compatibility.

SWOTS starts on the console's built-in SevenSixAxisSensor and restores the original 640x360 render resolution with two RGBA4444 framebuffers. It passively probes the attached Handheld sensor, but switches only after the stream proves physical responsiveness and remains structurally valid for 600 ms; an advancing static placeholder cannot qualify. While Handheld is active, the same placeholder is checked continuously, so returning from a game to HOME falls back to Console after 800 ms. Console uses its fused orientation; Handheld retains the release-tested acceleration gravity estimate for translation and uses its fused direction matrix for horizon roll. A three-second anti-flapping cooldown applies, and sensor switches never change the 640x360 framebuffer. Console horizon compensation is 100%; the Handheld fused direction is hardware-tuned to 95%.

Install

  1. Verify the release ZIP with its published SHA-256.

  2. Extract it to the SD card root.

  3. Confirm these files exist:

    atmosphere/contents/4200000000007E09/exefs.nsp
    atmosphere/contents/4200000000007E09/toolbox.json
    switch/.overlays/SWOTS.ovl
    
  4. Restart the Switch.

  5. Open Tesla → SWOTS → Motion cuesOn.

The package must not contain boot2.flag; Tesla starts the renderer when needed.

Use

  • Configure opacity, dot radius, sensitivity, and smoothing in Tesla → SWOTS, then press A to save the complete configuration. Leaving the page any other way cancels the draft.
  • Press B on the SWOTS main screen to close the overlay and resume cues.
  • Select Stop and return to Tesla to stop cues and return to Tesla.
  • The Tesla shortcut also opens and closes the overlay.
  • Off removes the cues and stops the renderer.
  • Settings can be saved while cues are On; the new values take effect when Tesla closes.
  • Cues respond only to physical motion of the handheld Switch, not the in-game camera or a detached controller.
  • While the screen is upright enough to define a horizon, the dot rows remain level with the real world as the Switch is rolled like a steering wheel.

Settings and logs: /config/swots/settings.cfg, /config/swots/renderer.log, and /config/swots/sensor.log.

See troubleshooting for 0x0000FC01, 0x00010801, missing cues, sensor problems, or Tesla conflicts.

Build and test

source scripts/env.sh
make setup-libtesla
make verify -j2
./scripts/deploy.sh /path/to/SWITCH_SD

Host tests do not need devkitPro:

env -u DEVKITPRO make test

Build and verify the release:

make dist -j2
cd dist
sha256sum -c SWOTS-v0.1.0-alpha.5.zip.sha256

The renderer uses a bounded 3 MiB heap, and make verify checks its ELF code plus 0x30000 main-thread stack against the late-launch startup budget. NPDM compatibility depends on the tested ffff0400 capability bytes. Changes to the memory budget, toolchain, permissions, VI, HID, or PM require hardware testing. The development lifecycle must stop sys-ftpd before starting SWOTS; the two System processes are not budgeted to coexist. Title ID: 4200000000007E09.

Upgrade or uninstall

Turn cues Off before replacing files. The overlay and renderer must come from the same release. Restart after upgrading; settings remain in /config/swots/settings.cfg. If upgrading from an internal development build, delete the obsolete switch/.overlays/SWOTS-Lab.ovl.

To uninstall, turn cues Off, restart, then delete:

atmosphere/contents/4200000000007E09/
switch/.overlays/SWOTS.ovl
/config/swots/ (optional)

Project

SWOTS is alpha software with broad legacy-compatible NPDM permissions. Use trusted builds and verify release hashes. See contributing, security, and third-party notices.

SWOTS is independent and is not affiliated with KineStop or Nintendo.

Licensed under GPL-2.0-or-later.

About

Motion-cue overlay for Atmosphère and Tesla Menu

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages