Qlaunch: Difference between revisions

From Nintendo Switch Brew
Jump to navigation Jump to search
No edit summary
m Forgot to close the parentheses :p
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
This is the title with process-name "qlaunch" launched by [[NS_services|ns]] with a [[NCM_services#ProgramId|ProgramId]] loaded from system-config.
This is the title with process name "qlaunch" (Quick Launch), launched by [[NS_services|NS services]], with its [[NCM_services#ProgramId|Program ID]] being loaded from system config.
 
This contains multiple "applets" under one title, which, at minimum, contains the following:


This contains multiple "applets" under one title, with at minimum the following:
* Home Menu
* Home Menu
* [[System Settings]]
* [[System Settings]]
Line 7: Line 8:


= Hidden Features =
= Hidden Features =
== Flog ==
== Flog ==
qlaunch periodically checks if the user is in "/RootScene/SceneResidentMenu", which represents the Home Menu (aka main-menu). If so, the following checks are then performed in order:
qlaunch periodically checks if the user is in "/RootScene/SceneResidentMenu", which represents the Home Menu (aka main-menu).  
 
 
 
If so, the following checks are then performed, in order:
 
* The Joy-Cons' state is read from [[HID_Shared_Memory|HID shared memory]] and both must be active and detached from the console.
* The Joy-Cons' state is read from [[HID_Shared_Memory|HID shared memory]] and both must be active and detached from the console.
* "StartSixAxisSensor" [[HID_services#hid|hid]] command is called for each Joy-Con so motion data can be captured.
** (The "StartSixAxisSensor" [[HID_services#hid|HID]] command is called for each Joy-Con so that motion data can be captured).
* After capturing the motion data, the same motion checks for both Joy-Cons must pass at the same time. This motion data is analyzed in a small state machine consisting of a total of 7 steps and the motion itself is a reference to [https://www.youtube.com/watch?v=BdQg43n2OaM&t=17s Iwata's Direct gesture]. Hold the Joy-Cons pointing forwards/downwards, then move Joy-Cons to a vertical position, and hold it there for a bit. The Joy-Con grip can be used for this.  
 
* The system's month and day must be July 11th, which is the date of Iwata's [https://en.wikipedia.org/wiki/Satoru_Iwata passing]. The loaded date originates from network-time-sync'd time, regardless of whether the user has it enabled or not. When the system was never connected to the Internet and is on [[1.0.0]] it comes from the user-specified date instead. For newer systems, trying to load the network time if it was never set will result in an error: they won't ever be able to launch flog without a time-sync with Nintendo servers. This is loaded from the [[PCV_services|time]] service-cmds, with the actual time-sync being handled by [[NIM_services|NIM]].
* After capturing the motion data, the same motion checks for both Joy-Cons must pass at the same time:
* A wrapper for "GetLanguageCode" [[Settings_services#set|set]] command is called and the returned code must be 0 (JPja), 1 (USen) or 2 (EUen). Other combinations of region and language may have it's code translated internally to a valid one (0, 1 or 2), which seems to be the case for 12 (CNzh), 13 (KRko) and 14 (TWzh).
** (This motion data is analyzed via a 7-step process; the motion itself is a reference to [https://www.youtube.com/watch?v=BdQg43n2OaM&t=17s Iwata's 'Nintendo Direct' gesture], and may take a few attempts to get right)
* Lastly, "IsSystemProgramInstalled" [[NS_Services#ns:am|ns:am]] command is called, which should return 1 if the [[Flog|flog]] title is installed.
*** 1) Hold the Joy-Cons in your hand as if you were gripping a steering wheel.
*** 2) Point the Joy-Cons away from you, and hold it there for a bit.
**** (It's recommended to, upon failure to activate the check, reset the Joy-Cons back to a neutral state by pointing them down towards the floor, then trying again from Step 1).
 
* After verifying that the correct inputs have been done, the system's month and day must be July 11th, which is the date of [https://en.wikipedia.org/wiki/Satoru_Iwata Iwata's passing]; the exact year and time doesn't have to be specific.
** The loaded date ALSO must originate from time-sync'd time, regardless of whether the user has it enabled or not, UNLESS certain conditions are met; the certain conditions are as follows:
*** If the system is on [[1.0.0]] and has never been connected to the internet, the user-specified date is used instead.
*** If the system is on a newer firmware, the system will still attempt to read the network time from Nintendo's servers even if the system has never been connected to the internet; if the system can't read the network time from Nintendo's servers, it will result in an error.
**** (The date-and-time itself is loaded from [[PCV_services|PCV]] commands, with the actual time-sync being handled by [[NIM_services|NIM]]).
***** Because of this, the only way to manually activate this feature without homebrew is via having a system that is still on 1.0.0, which has also never been connected to the internet; otherwise, the time must come from time-sync'd time, which requires an internet connection.
 
* After this, a wrapper for the "GetLanguageCode" [[Settings_services#set|SET]] command is called:
** The returned code must be 0 (JPja) (Japanese), 1 (US-en) (American English) or 2 (EUen) (European English).  
*** Other combinations of region and language may have its code converted to a valid one, which seems to be the case for 12 (CNzh) (Simplified Chinese), 13 (KRko) (Korean), and 14 (TWzh) (Traditional Chinese).
 
* Lastly, the "IsSystemProgramInstalled" [[NS_Services#ns:am|AM]] command is called:
** If the [[Flog|flog]] title is installed, this returns 1 and launches flog.
** If the [[Flog|flog]] title isn't installed, this returns 0 and will not proceed.
 
 
 
Once everything passes, it continues to the code which launches [[Flog|flog]], which does the following steps, in order:
 
* The Home Menu fades to black.
* A small audio clip lasting less than a second named "SeTestTone" is played.
** (The audio clip is sourced from [https://www.youtube.com/watch?v=NWbYvzjAst8&t=17s this], which comes from the Japanese Nintendo Direct Presentation from December 5th, 2012).
* [[Flog]] is launched, which is a built-in emulator of Golf for the NES.
 
 
 
A video of flog being activated (using the 1.0.0 firmware method) can be seen [https://www.youtube.com/watch?v=CGN6QXv7sfs&t=1m46s here].
 
As of [[4.0.0]], this feature has been removed from qlaunch, with flog itself being stubbed and no longer being able to be launched, even via homebrew.
 
== Save Data Repair ==
 
As of [[9.0.0]], qlaunch includes a hidden menu for sending and receiving [Savegames|save data] for manual repair.
This menu is likely to be used by Nintendo when a console is sent to them to be fixed, or when refurbishing a console sent to them by a customer.


Once everything passes it continues to the code which launches [[Flog|flog]]. When [[Flog|flog]] is launched a small audio clip named "SeTestTone" is played which matches [https://www.youtube.com/embed/SeVTJu_Yn2Y?start=17&end=18&autoplay=1 this].
To access the menu, the following conditions must be met:


As of [[4.0.0]] this feature has been removed from qlaunch.
* Open the "Settings" app from the Home Menu.
* Navigate to the "Data Management" section.
* Highlight "Quick Archive" with the cursor.
* Press and hold the Left Analog Trigger (L3) Button and the Plus (+) Button until the menu shows up.


== SaveData Repair ==
This will call various [[OLSC_services#olsc:s|OLSC services]], which in turn will issue requests to [[Network#storage|repair services]].  
As of [[9.0.0]], qlaunch includes a hidden menu for sending and receiving savedata for repairing. To access the menu the following sequence must be performed:
* Open the "Settings" menu.
* Navigate to "Data Management" and highlight "Quick Archive".
* Press and hold the Left Analog Trigger button (L3) and the Plus button.


This will call various [[OLSC_services#olsc:s|olsc:s]] which in turn will issue requests to the [[Network#storage|repair service]]. Without specific authorization from the server, this will always display a message like: "This feature is currently unavailable."
(Without specific authorization from the server, this will always display a message stating "This feature is currently unavailable", and the menu will not appear).

Latest revision as of 00:45, 11 May 2026

This is the title with process name "qlaunch" (Quick Launch), launched by NS services, with its Program ID being loaded from system config.

This contains multiple "applets" under one title, which, at minimum, contains the following:

Hidden Features

Flog

qlaunch periodically checks if the user is in "/RootScene/SceneResidentMenu", which represents the Home Menu (aka main-menu).


If so, the following checks are then performed, in order:

  • The Joy-Cons' state is read from HID shared memory and both must be active and detached from the console.
    • (The "StartSixAxisSensor" HID command is called for each Joy-Con so that motion data can be captured).
  • After capturing the motion data, the same motion checks for both Joy-Cons must pass at the same time:
    • (This motion data is analyzed via a 7-step process; the motion itself is a reference to Iwata's 'Nintendo Direct' gesture, and may take a few attempts to get right)
      • 1) Hold the Joy-Cons in your hand as if you were gripping a steering wheel.
      • 2) Point the Joy-Cons away from you, and hold it there for a bit.
        • (It's recommended to, upon failure to activate the check, reset the Joy-Cons back to a neutral state by pointing them down towards the floor, then trying again from Step 1).
  • After verifying that the correct inputs have been done, the system's month and day must be July 11th, which is the date of Iwata's passing; the exact year and time doesn't have to be specific.
    • The loaded date ALSO must originate from time-sync'd time, regardless of whether the user has it enabled or not, UNLESS certain conditions are met; the certain conditions are as follows:
      • If the system is on 1.0.0 and has never been connected to the internet, the user-specified date is used instead.
      • If the system is on a newer firmware, the system will still attempt to read the network time from Nintendo's servers even if the system has never been connected to the internet; if the system can't read the network time from Nintendo's servers, it will result in an error.
        • (The date-and-time itself is loaded from PCV commands, with the actual time-sync being handled by NIM).
          • Because of this, the only way to manually activate this feature without homebrew is via having a system that is still on 1.0.0, which has also never been connected to the internet; otherwise, the time must come from time-sync'd time, which requires an internet connection.
  • After this, a wrapper for the "GetLanguageCode" SET command is called:
    • The returned code must be 0 (JPja) (Japanese), 1 (US-en) (American English) or 2 (EUen) (European English).
      • Other combinations of region and language may have its code converted to a valid one, which seems to be the case for 12 (CNzh) (Simplified Chinese), 13 (KRko) (Korean), and 14 (TWzh) (Traditional Chinese).
  • Lastly, the "IsSystemProgramInstalled" AM command is called:
    • If the flog title is installed, this returns 1 and launches flog.
    • If the flog title isn't installed, this returns 0 and will not proceed.


Once everything passes, it continues to the code which launches flog, which does the following steps, in order:

  • The Home Menu fades to black.
  • A small audio clip lasting less than a second named "SeTestTone" is played.
    • (The audio clip is sourced from this, which comes from the Japanese Nintendo Direct Presentation from December 5th, 2012).
  • Flog is launched, which is a built-in emulator of Golf for the NES.


A video of flog being activated (using the 1.0.0 firmware method) can be seen here.

As of 4.0.0, this feature has been removed from qlaunch, with flog itself being stubbed and no longer being able to be launched, even via homebrew.

Save Data Repair

As of 9.0.0, qlaunch includes a hidden menu for sending and receiving [Savegames|save data] for manual repair. This menu is likely to be used by Nintendo when a console is sent to them to be fixed, or when refurbishing a console sent to them by a customer.

To access the menu, the following conditions must be met:

  • Open the "Settings" app from the Home Menu.
  • Navigate to the "Data Management" section.
  • Highlight "Quick Archive" with the cursor.
  • Press and hold the Left Analog Trigger (L3) Button and the Plus (+) Button until the menu shows up.

This will call various OLSC services, which in turn will issue requests to repair services.

(Without specific authorization from the server, this will always display a message stating "This feature is currently unavailable", and the menu will not appear).