Qlaunch: Difference between revisions

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).