Skip to content

Releases: tomvita/SwitchU

1.2.0k

Choose a tag to compare

@tomvita tomvita released this 01 Oct 14:24

SwitchU fork 1.2.0k

Games started from sphaira, forwarders or Breeze now work the first time,
even if the SwitchU menu hasn't shown them yet.

Deploy the daemon and the menu together — atmosphere/contents/…/exefs.nsp
and switch/SwitchU/bin/menu/main are built as a pair. Only the daemon
changed in this release, so a 1.2.0b–1.2.0j menu also works with this daemon.

First launch from other programs

The daemon reads a game's startup settings from the cache the menu fills when
it lists the game. A game installed while the menu wasn't listing titles,
from DBI for example, had no entry yet. Started from sphaira, a forwarder or
Breeze, it then got no save data and no user, so it quit right after its
logo. Starting it once from the menu fixed it.

The daemon now reads a missing game's settings from the system directly, and
caches them for next time.

Atmosphere 1.12.0 libraries

The daemon is built against the Atmosphere 1.12.0 libraries (Horizon 23.0.0)
and the current libnx.

Who's playing and Recent like Ninteodo's

Choose a tag to compare

@tomvita tomvita released this 24 Sep 01:53

SwitchU fork 1.2.0j

Games started from other programs now ask who's playing, as on Nintendo's
HOME. The menu's Recent sort now puts newly installed games first, and it
counts games started from sphaira, forwarders or Breeze.

Deploy the daemon and the menu together — atmosphere/contents/…/exefs.nsp
and switch/SwitchU/bin/menu/main are built as a pair. Nothing the two share
changed in this release, so a 1.2.0b–1.2.0i menu also works with this daemon.
It keeps its old Recent order, though. A 1.2.0j menu with an older daemon
shows Recent in title-id order.

Who's playing

Since 1.2.0h, sphaira, hbmenu forwarders and Breeze can start games. Until now
the daemon picked the user silently: the last user chosen in the SwitchU menu,
otherwise the first one.

Now it decides the way the menu does before its own launches:

  • A game that doesn't use accounts starts with none.
  • A game where a user is optional starts as before.
  • A game that needs a user starts with the menu's default profile if you set
    one in the settings. It also starts straight away when only one user
    qualifies. Otherwise Nintendo's own user picker appears. The default
    profile is skipped for games that need a Nintendo Account.

Cancelling the picker returns to HOME without starting the game.

Recent

Nintendo's HOME orders games by the time the system last touched each one:
installing, updating and launching all move a game to the front. The daemon
now writes the game list in that order, and the menu's Recent sort follows
it.

  • A freshly installed game comes first, instead of landing somewhere in the
    middle of the grid.
  • A game started from sphaira, a forwarder or Breeze moves to the front, as
    one started from the menu does.
  • Resuming a suspended game no longer changes the order.

The order the menu used to keep for itself is no longer used, so the first
Recent view after updating reflects the console's own history. My order
and A-Z are unchanged.

Breeze first option

Choose a tag to compare

@tomvita tomvita released this 22 Sep 10:51

SwitchU fork 1.2.0i

Breeze can now be your HOME screen. With one flag file, the console boots into
Breeze instead of the SwitchU menu, and HOME from a game brings Breeze back.
The SwitchU menu stays one button away in Breeze. Without the flag, nothing
changes.

Deploy the daemon and the menu together — atmosphere/contents/…/exefs.nsp
and switch/SwitchU/bin/menu/main are built as a pair. Nothing the two share
changed in this release, so a 1.2.0b–1.2.0h menu also works with this daemon.

The Breeze interface level goes from 3 to 4, so a Breeze can tell that the
installed fork supports Breeze first. Breezes that don't know about it keep
working as before.

Breeze first

Create an empty file sdmc:/config/SwitchU/breeze_first and reboot. From then
on the daemon opens Breeze wherever it used to open the SwitchU menu:

  • at boot;
  • on HOME from a game, when Breeze isn't already open behind it;
  • when a game exits, and when a launch fails.

The Breeze Home toggle works as before: HOME switches between Breeze and the
game, in the mode you picked in Breeze. Games started from Breeze replace the
running one, as in 1.2.0h.

When Breeze closes with no game running, it opens again. When it closes with a
game suspended, the game resumes. HOME inside Breeze with no game does nothing,
since Breeze is already HOME. If Breeze closes three times in a row within
seconds of opening, the SwitchU menu takes over until the next reboot, so a
broken Breeze can't leave the console unusable.

Breeze's SwitchU button still opens the SwitchU menu. From there you can
use the menu as usual. The next HOME from a game goes back to Breeze.

Delete the file and reboot to return to the SwitchU menu.

Where Breeze runs

If Breeze's profile shortcut is installed
(atmosphere/contents/0100000000001013/exefs.nsp), Breeze opens through the
User Page, as when you open your profile.

Without it, Breeze borrows the Album for as long as it is open, the same way
the SwitchU menu does. The loader for this ships with the fork in
atmosphere/contents/0100000000001000/breeze_loader/, next to the daemon.
Nothing on the SD card is swapped, and the Album is the normal Album (hbmenu)
whenever Breeze isn't using it.

Without the SwitchU menu

The daemon, its Breeze loader and Breeze are enough for a working console. If
switch/SwitchU/bin/menu is missing, Breeze is HOME even without the flag.

If neither the menu nor Breeze can start, the daemon opens the plain Album, so
hbmenu comes up instead of a black screen. HOME from a game opens it on the
first press, and HOME in it returns to the game.

Launching game from homebrew

Choose a tag to compare

@tomvita tomvita released this 22 Sep 07:23

SwitchU fork 1.2.0h

Homebrew can start games again. hbmenu and sphaira in the Album, Breeze, and
forwarders can all launch an installed title, and SwitchU switches to it the way
it does for a launch from its own menu.

Deploy the daemon and the menu together — atmosphere/contents/…/exefs.nsp
and switch/SwitchU/bin/menu/main are built as a pair. Nothing the two share
changed in this release, so a 1.2.0b–1.2.0g menu also works with this daemon.

The Breeze interface level stays at 3. Breeze needs nothing new: its game
launches simply work now.

1.2.0g

Choose a tag to compare

@tomvita tomvita released this 21 Sep 07:06

An interface release for Breeze's Break and Trace. The Breeze interface level
goes from 2 to 3: Breeze can now show itself over the running game on its own,
and the daemon tells it when it is about to be closed so a game stopped in the
debugger is never left stopped.

Nothing here changes what the menu does. Take it if you use Breeze's Break and
Trace; otherwise 1.2.0f behaves the same.

Deploy the daemon and the menu together — atmosphere/contents/…/exefs.nsp
and switch/SwitchU/bin/menu/main are built as a pair.

Mixed versions are fine in both directions. An older Breeze (beta121.01 and
before) works with this release exactly as it did with 1.2.0f, and a Breeze
built for this interface still works on an older fork — it simply waits for a
HOME press where it would otherwise come up by itself.

Breeze can show and hide itself over the game

Breeze's overlay used to appear and disappear only on a HOME press, which the
daemon handles. Break and Trace needs it the other way round: when the game
stops at a breakpoint, Breeze has to come up by itself, and when the game is
let go it has to step back behind it.

Breeze now reports that with a new StateChanged message, so the daemon's idea
of the overlay stays true. That matters beyond the picture on screen: the next
HOME press, the sleep path and the input restore when the applet closes all act
on that state, and a wrong one would leave the game without a controller or
take two HOME presses to get anywhere.

A held Breeze is told before it is closed

The daemon closes a held Breeze when the console goes to sleep and when the
game opens a library applet of its own. Until now it sent nothing unless Breeze
held the controller, in which case it asked it to hide.

With Break and Trace that is not enough: the game may be stopped at one of
Breeze's breakpoints, and once Breeze is gone nothing is left to let it run
again — the game would stay stopped through the sleep and after the wake. The
daemon now sends a Release message first, which gives Breeze the chance to
clear its breakpoints, let the game run, hand the controller back and drop its
display layer before it is closed.

breeze_running carries more than one capability

config/SwitchU/breeze_running told the daemon that Breeze understands the
overlay protocol. It now holds space-separated capabilities and the daemon
matches whole words, so a Breeze that understands the two messages above can
say so (overlay1 overlay2) without breaking anything that only looks for
overlay1 — which is exactly what an older daemon does, and why a new Breeze
still runs on 1.2.0f.

1.2.0f

Choose a tag to compare

@tomvita tomvita released this 19 Sep 08:57

This is a fix-only release over 1.2.0e. There are no Breeze interface-level changes, so this is an optional but recommended update, mainly for the two crash/freeze fixes below.

  • Menu startup crash: Fixed a race where a 1×1 white texture allocation could fail under low-memory conditions and crash dkImageInitialize. The allocation is now marked essential, and failures are reported instead of causing a crash.

  • HOME + Quick Settings freeze: Fixed a deadlock where opening Quick Settings and then pressing HOME could freeze all button input while touch input continued to work. A 4-second watchdog now detects and recovers from similar stalls.

  • New diagnostics: Sleep/wake events are now logged to power.log to help track down an unexplained hang after long sleep periods with Breeze in Overlay mode. The daemon also cleans up leftover display layers from terminated Breeze instances.

Deploy note: The daemon (exefs.nsp) and menu binary must be updated together as a matched pair.

Support overlay mode for Breeze

Choose a tag to compare

@tomvita tomvita released this 17 Sep 14:51

Support overlay mode for Breeze. There are no changes to the Switch-U menu other than the version bump.

See the Breeze release notes for instructions on how to use overlay mode:
https://github.com/tomvita/Breeze-Beta/releases/tag/beta121.00

1.2.0d

Choose a tag to compare

@tomvita tomvita released this 16 Sep 04:12

SwitchU 1.2.0d (tomvita's fork)

This one is about the background scan staying out of your way. SwitchU caches each game's name, version and icon the first time it sees it, and rebuilding that cache — after an install, or on a first boot — used to take the home screen over: the cursor jumped, a game refused to start, and an icon that failed to save stayed a grey box forever. The version shown for a game is also read from the game itself now, so an update can no longer leave an old number behind.

Everything from 1.2.0c is included: the sort order surviving a reboot, the hbmenu and user-page shortcuts in quick settings, the name filter, USB keyboard typing, the Breeze Home toggle, and game titles in Japanese, Chinese and Korean.

The cursor stays where you put it

While the icon scan ran, every title it finished pushed a refresh, and each refresh moved the selection back to the first icon and played the navigation sound with it. Parked on the sidebar or a profile, the cursor was dragged onto a game as well — you could pick a game, but nothing else.

A refresh replaces the grid icons and nothing else, so now the cursor only moves when it has to: on a game, it comes back to the same game; on the sidebar or a profile, it does not move at all. The restore is silent, so the only navigation sound you hear is your own.

A game starts while icons are still scanning

Pressing A during a scan did nothing. A launch is committed when the zoom animation finishes, and a refresh cancelled that animation — during a rebuild refreshes arrive every few hundred milliseconds, which is shorter than the animation, so every attempt was cut off before it completed. Choosing an account was cancelled the same way.

The refresh now waits for the launch instead of cancelling it, and runs the moment the game is on its way.

The version comes from the game, not the cache

+ on a game showed the version recorded when SwitchU first saw that title. After the game updated, the old number stayed: the cache was written once and never revisited.

The version on that screen is now read from the content that is installed at that moment, for the one game you opened. An updated game shows its new version immediately, with no rescan of anything else. If the read fails the cached value is still shown, as before.

Icons that fail to save are retried

An icon write that failed — SD contention during a large rebuild is enough — left a 0-byte file behind, and because the title counted as cached from then on, nothing ever tried again. The game kept a grey placeholder until its cache files were deleted by hand.

Three things changed:

  • The icon is written before the entry is marked cached, so a failure no longer strands the title, and a half-written file is removed rather than left empty.
  • A title that fails goes back in the queue and is retried, up to three attempts, so a transient failure is corrected within the same scan instead of at the next boot.
  • An entry that already has an empty icon is spotted and re-fetched. Anything left stranded by an earlier version repairs itself on first boot.

Changes

  • Settings > About shows SwitchU 1.2.0d tomvita's fork, and SwitchU-Manager's subtitle shows v1.2.0d.

Upgrade notes

  • Copy both folders together. Copy atmosphere and switch to the root of your SD card, overwriting existing files, then reboot. The daemon and the menu must come from the same release.
  • Nothing in the cache format changed, so your existing icons and names are kept. There is no rescan on update.
  • Breeze: the Home toggle and the SwitchU install button need Breeze beta119.00 or later.
  • Your profile takeover (atmosphere/contents/0100000000001013) stays as it is.

Known limitations

  • The name and publisher on the + screen still come from the cache; only the version is read live. A renamed title keeps its old name until its cache entry is rebuilt.
  • A title whose content cannot be read at all is retried three times and then left until the next boot or until its records change.
  • Icons still fill in progressively during a first scan; only the interruptions are gone, not the wait.

Package

SwitchU.zip — 47,593,228 bytes, SHA-256 CDD090059ACBC0E1B7107F87A26A47BC2570ABCCB9C1A429F79A628B637CAD36

Changed since 1.2.0c:

atmosphere/contents/0100000000001000/exefs.nsp   daemon (icon write order, retry, cache check)
switch/SwitchU/bin/menu/main                     SwitchU menu (cursor, launch, live version)
switch/SwitchU-Manager/SwitchU-Manager.nro       SwitchU-Manager (reports v1.2.0d)

Both folders changed this time, so copy atmosphere and switch together.

1.2.0.c

Choose a tag to compare

@tomvita tomvita released this 16 Sep 00:16

SwitchU 1.2.0c (tomvita's fork)

The home screen now comes up in the sort order you left it in, the quick settings drawer opens hbmenu or your user page with one more button press, and moving games is held back to My order so an automatic sort can no longer scramble your layout.

Everything from 1.2.0b is included: the name filter, the confirmation before a new game closes a running one, USB keyboard typing, the Breeze Home toggle, and game titles in Japanese, Chinese and Korean.

Fix: the home screen ignored your sort order at startup

Press R to sort by A-Z or Recent, reboot, and the hint bar remembered the setting while the icons came back in My order. The order only took hold later, the first time something rebuilt the grid.

The sort is a projection over your personal layout, and it lived only in the rebuild path — the grid the console actually boots into is composed somewhere else, and that path never looked at the setting. Both now go through the same projection, so the order you left is the order you come back to, on the first frame.

Your own arrangement is untouched, as before: A-Z and Recent only change what you see, and My order brings your layout back exactly as you built it.

hbmenu and your user page from the quick settings drawer

L opens quick settings, and two buttons in it are now shortcuts — so from the home screen they read as L+Y and L+X:

Press Opens
L then Y hbmenu (the Album applet slot, the same thing the sidebar's Album button opens)
L then X your user page

Holding L and tapping the second button works, and so does pressing it once the drawer is already open. The drawer's hint bar shows both.

The close hint no longer reads as a combo

Quick settings showed B+L Close, which looked like a two-button combo. It now shows B Close. L still closes the drawer — it is the button that opened it, and it stays a toggle.

Moving games waits for My order

While A-Z or Recent is active, games, folders and widgets can't be rearranged: Y, the touch-drag and Move software in the options menu are unavailable, and the Y Move hint is not offered. A slot in an automatic view is a cell of the sorted picture, not the slot your layout would be written back to, so a move made there landed somewhere else and scrambled My order.

Press R back to My order to rearrange. This matches how a filtered screen already behaves.

Inside a folder nothing changes — folder contents are always in folder order, so moving works there whatever the home screen is sorted by.

Changes

  • Settings > About shows SwitchU 1.2.0c tomvita's fork, and SwitchU-Manager's subtitle shows v1.2.0c.

Upgrade notes

  • Copy both folders together. Copy atmosphere and switch to the root of your SD card, overwriting existing files, then reboot. The daemon and the menu must come from the same release.
  • Breeze: the Home toggle and the SwitchU install button need Breeze beta119.00 or later.
  • Your profile takeover (atmosphere/contents/0100000000001013) stays as it is.

Known limitations

  • L+X opens the first profile on the avatar bar. With several accounts on the console, the avatar bar is still how a different one is picked.
  • L+Y opens whatever lives in the Album applet slot. With the homebrew loader installed that is hbmenu; without it, the Album.
  • The sort order is remembered per console, not per profile.

Package

SwitchU.zip — 47,590,755 bytes, SHA-256 5996078B1E6B47B60DA923C0B6DAD1B6D148BB2CBD816F875938F80B191EE255

Changed since 1.2.0b:

switch/SwitchU/bin/menu/main                     SwitchU menu (sort order at startup, quick settings shortcuts)
switch/SwitchU-Manager/SwitchU-Manager.nro       SwitchU-Manager (reports v1.2.0c)

The daemon (atmosphere/contents/0100000000001000/exefs.nsp) is byte-identical to 1.2.0b — copy both folders anyway, so the two always come from the same release.

1.2.0b

Choose a tag to compare

@tomvita tomvita released this 15 Sep 09:23

SwitchU 1.2.0b (tomvita's fork)

Find a game by typing part of its name, get asked before a new game closes the one you were playing, and type into any text box with a USB keyboard. This release also fixes a freeze after sleep when Breeze was held behind a game.

Everything from 1.2.0a is included: the Breeze Home toggle, game titles in Japanese, Chinese and Korean, and the title-name fixes.

Filter games by name

Press X on the home screen and type part of a game's name. The home screen then shows only the games whose name contains that text.

  • Case doesn't matter: zel finds The Legend of Zelda.
  • Games inside folders are included. Folders and widgets are hidden while a filter is on.
  • The results follow your sort. Press R to switch between My order, A-Z and Recent.
  • Clear the filter with B, or by confirming an empty filter.
  • The hint bar shows X Filter: and B Clear filter while a filter is on.

While a filter is on, games can't be moved (Y, touch-drag, Move in the options menu) and Add is unavailable, because the filtered screen isn't your real layout. Your arrangement is never changed. The filter lasts until you clear it or the menu restarts.

With a suspended game selected, X still closes that game, as before.

Confirm before closing a running game

Starting a different game while one is suspended now asks first: Close game? — Close and start ? Unsaved progress will be lost. Cancel is selected, so an accidental press keeps your game. Close and start closes the running game and launches the new one.

This applies to the home grid and the Recently played widget. Pressing A on the suspended game itself still resumes it straight away.

Type with a USB keyboard

Every text box in the SwitchU menu now accepts a USB keyboard: the name filter, folder names, theme-shop search and the SteamGridDB key.

Key Does
Letters, digits, punctuation, space Type, following Shift and Caps Lock
Backspace Erases; hold it to erase quickly
Enter Confirms, like +
Esc Cancels, like B

Holding a character or Backspace repeats it. The controller and touch keyboard keep working alongside.

Fix: freeze after sleep with Breeze held

With Home toggle set to No restart and Breeze held behind a game, the console could go to sleep with Breeze still open. After waking, the game could stop responding, and HOME and the power menu's Restart and Power off stopped working until the power button was held.

Now, when the console goes to sleep with Breeze held behind the game, SwitchU closes Breeze first and sleep starts at once. After waking, the game carries on normally. The next HOME opens Breeze fresh through the profile takeover; if Breeze came from hbmenu, HOME opens the SwitchU menu instead. The same immediate close happens when the game opens its keyboard or an error dialog.

Changes

  • Settings > About shows SwitchU 1.2.0b tomvita's fork.
  • SwitchU-Manager updates from this fork. Check for updates now looks at tomvita/SwitchU releases, so it can no longer replace the fork with a newer upstream SwitchU. It also knows 1.2.0b is newer than 1.2.0a. Manager's subtitle shows v1.2.0b.

Upgrade notes

  • Copy both folders together. Copy atmosphere and switch to the root of your SD card, overwriting existing files, then reboot. The daemon and the menu must come from the same release.
  • Breeze: the Home toggle and the SwitchU install button need Breeze beta119.00 or later.
  • Your profile takeover (atmosphere/contents/0100000000001013) stays as it is.

Known limitations

  • The filter ignores case only for English letters. Japanese, Chinese and Korean text matches exactly.
  • The USB keyboard types the US layout, whatever keyboard is connected. There's no Japanese, Chinese or Korean typing from it; accented letters come from the on-screen keyboard's symbols page.
  • Breeze held behind a game (No restart) is closed by sleep, or by the game opening its keyboard or an error dialog. The next HOME opens it fresh.
  • While Breeze is held behind a game, SwitchU pauses its background app-list and title-name refreshes; they catch up when Breeze closes.

Package

SwitchU.zip — 47,588,322 bytes, SHA-256 F5778F01296D2F80EB86A81031DBC870757E68CEBD01DB24BAFB77BA3EB2260F

Changed since 1.2.0a:

switch/SwitchU/bin/menu/main                     SwitchU menu (filter, confirmation, USB keyboard)
switch/SwitchU/i18n/en-US.json                   new English text
switch/SwitchU-Manager/SwitchU-Manager.nro       SwitchU-Manager (updates from this fork)