3Input 3DS: Difference between revisions

From GameBrew
(Created page with "{{Infobox 3DS homebrew | title = 3Input | image = https://dlhb.gamebrew.org/3dshomebrew/3Input.jpg|250px | type = System Tools | version = v0.1 | licence = Mixed | author = Ph...")
 
m (Text replacement - "Category:Support the author" to "")
 
(29 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Infobox 3DS homebrew
{{Infobox 3DS Homebrews
| title = 3Input
|title=3Input
| image = https://dlhb.gamebrew.org/3dshomebrew/3Input.jpg|250px
|image=3input2.png
| type = System Tools
|description=A Custom System Module Input Monitor.
| version = v0.1
|author=PhlexPlexico
| licence = Mixed
|lastupdated=2020/09/10
| author = PhlexPlexico
|type=Utilities
| website = https://github.com/PhlexPlexico/3input/tree/master
|version=0.1
| download = https://dlhb.gamebrew.org/3dshomebrew/3Input.rar
|license=Mixed
| source = https://dlhb.gamebrew.org/3dshomebrew/3Input.rar
|download=https://dlhb.gamebrew.org/3dshomebrews/3input.7z
|website=https://github.com/PhlexPlexico/3input/tree/master
|source=https://github.com/PhlexPlexico/3input/tree/master
|donation=https://ko-fi.com/phlexplexico
}}
}}
<youtube>sq51MqBPESk&t=11s</youtube>
= 3Input - A System Module Input Monitor =
3Input is an input viewer that works behind the scenes on your 3DS. Much like [https://github.com/Bas25/HorizonMod HorizonMod], the goal is to run as a daemoized process/system module, which you can then use a client to connect to and read your inputs. This is essentially an inverse to InputRedirection in [https://github.com/LumaTeam/Luma3DS/wiki/Rosalina#inputredirection Luma/Rosalina].
3Input is an input viewer that works behind the scenes on your 3DS. Much like [https://github.com/Bas25/HorizonMod HorizonMod], the goal is to run as a daemoized process/system module, which you can then use a client to connect to and read your inputs. This is essentially an inverse to InputRedirection in [https://github.com/LumaTeam/Luma3DS/wiki/Rosalina#inputredirection Luma/Rosalina].


== Features ==
Currently, the only way to view inputs for the 3DS is either using a handcam, or via the use of NTR and [https://github.com/zed0/coNTRoller-overlay coNTRoller-overlay]. NTR can be rather buggy, and also uses a lot more resources than necessary to just show inputs. The aim is to replace it with something less buggy, and that can run on both new and old 3DS.


Launch the Launcher, write down the IP address and port that is presented to you, press A, and then connect to the 3DS IP with a client, such as the example [https://github.com/phlexplexico/3input/viewer/ viewer] (this viewer does not require the port, only the IP). The current implementation sends a JSON Object per defined frequency. The JSON object also contains escape sequences so an application can properly decode them. Here is an example as to what the JSON being sent looks like:
This homebrew is to be used with [[3SharpView_3DS|3SharpView]] which allows you to view the inputs on a PC, can be use helpful for any streamers/speedrunners who would like to show off their inputs while playing.  


<pre class="JSON">'{\n\t&quot;btn&quot;:268435456,\n\t&quot;cp_x&quot;:134,\n\t&quot;cp_y&quot;:-68,\n\t&quot;tp_x&quot;:0,\n\t&quot;tp_y&quot;:0,\n\t&quot;ir_btn&quot;:14,\n\t&quot;cpp_x&quot;:14,\n\t&quot;cpp_y&quot;:14\n}\n'</pre>
==Installation==
You can then use an application to parse it, to make it more readable like so:
Install both CIAs on your 3DS, make sure you're connected to a WiFi Access Point and launch the Launcher.


<pre class="JSON">{
Now connect with a client (such as [[3SharpView_3DS|3SharpView]]).
&quot;btn&quot;:268435456,
&quot;cp_x&quot;:134,
&quot;cp_y&quot;:-68,
&quot;tp_x&quot;:0,
&quot;tp_y&quot;:0,
&quot;ir_btn&quot;:14,
&quot;cpp_x&quot;:14,
&quot;cpp_y&quot;:14
}</pre>
== Why? ==


Currently, the only way to view inputs for the 3DS is either using a handcam, or via the use of NTR and [https://github.com/zed0/coNTRoller-overlay coNTRoller-overlay]. NTR can be rather buggy, and also uses a lot more resources than necessary to just show inputs. The aim is to replace it with something less buggy, and that can run on both new and old 3DS'.
==User guide==
Launch the Launcher, write down the IP address and port that is presented to you, press A, and then connect to the 3DS IP with a client.  


== Contributors/Credit ==
The current implementation sends a JSON Object per defined frequency. The JSON object also contains escape sequences so an application can properly decode them.


* [https://github.com/n3rdswithgame N3rds] for the entirety of the old codebase. Since then I've been going through and documenting as much as I can to get a further understanding of the codebase itself.
Here is an example as to what the JSON being sent looks like:
* [https://github.com/leoetlino leoetlino] for helping with allocation heap and helping with the sysmodule.
<pre>'{\n\t"btn":268435456,\n\t"cp_x":134,\n\t"cp_y":-68,\n\t"tp_x":0,\n\t"tp_y":0,\n\t"ir_btn":14,\n\t"cpp_x":14,\n\t"cpp_y":14\n}\n'</pre>
* [https://github.com/Bas25/HorizonMod MarcusD] for HorizonMod. Some code was graciously borrowed within the heap allocation, and a decent reference for running a system module.


== Building ==
You can then use an application to parse it, to make it more readable like so:
<pre>{
    "btn":268435456,
    "cp_x":134,
    "cp_y":-68,
    "tp_x":0,
    "tp_y":0,
    "ir_btn":14,
    "cpp_x":14,
    "cpp_y":14
}</pre>


* Install [http://devkitpro.org/ devkitPro] 3DS tools.
===Viewing the Output===
* <code>make</code>
In order to view the output, please use [[3SharpView 3DS|3SharpView]].
* [https://github.com/Steveice10/bannertool/releases <code>bannertool</code>] on your <code>PATH</code>.
* [https://github.com/3DSGuy/Project_CTR/releases <code>makerom</code>] on your <code>PATH</code>. Run <code>make</code> in both the <code>Launcher</code> directory, and the root directory. Install both <code>CIAs</code> on your 3DS, ''make sure you're connected to a Wifi Access Point'' and launch the Launcher! Now connect with a client (such as [https://github.com/PhlexPlexico/3SharpView 3SharpView] ). Alternatively, check the [https://github.com/PhlexPlexico/3input/releases Releases] tab for the files.
 
== Changing Sending Frequency ==


===Changing Sending Frequency===
The main thread of the module is also reading inputs. If you wish to exit, you can press <code>SEL+START</code> to close the application and destroy anything created by it. The following will change the send rate of the inputs:
The main thread of the module is also reading inputs. If you wish to exit, you can press <code>SEL+START</code> to close the application and destroy anything created by it. The following will change the send rate of the inputs:
* <code>SEL+X</code> - 140 per second.
* <code>SEL+X</code> - 140 per second.
* <code>SEL+Y</code> - 60 per second. (Default)
* <code>SEL+Y</code> - 60 per second (Default).
* <code>SEL+A</code> - 10 per second.
* <code>SEL+A</code> - 10 per second.
* <code>SEL+B</code> - 1 per second.
* <code>SEL+B</code> - 1 per second.


== Viewing the Output ==
==Media==
'''3Input and 3SharpView Example''' ([https://www.youtube.com/watch?v=UQJbOhglfF8 PhlexPlexico])<br>
<youtube>UQJbOhglfF8</youtube>


In order to view the output, please consider using a tool such as [https://github.com/PhlexPlexico/3SharpView 3SharpView] <s>In order to view this, there is currently a ''very'' rudimentary implementation within this repository. There will hopefully be another project in the near future here for client side to show the outputs on PC. To run this viewier, please make sure [https://www.python.org/ Python3] is installed. Once you launch 3Input from the Launcher, it will show your IP. Write this down and press A to start 3Input on your 3DS. Then, run the viewer by calling <code>python main.py &quot;127.0.0.1&quot;</code> where the IP address is your 3DS' IP. No port needed!</s>
==Known issues==
Please see https://github.com/PhlexPlexico/3input/issues.


== TODO ==
==Changelog==
'''v0.1 2020/09/10'''
* First release.


There's a few more things in the TODO pile, and these can be found mainly in the code, which will be ported over to the Issues/Project section in GitHub. Most of it is quality of life (i.e. WiFi issues), but there are a few things to improve reading from 3DS Inputs, like gryo and C stick without running into some issues.
==Credits==
 
* [https://github.com/n3rdswithgame N3rds] for the entirety of the old codebase.
== License ==
* [https://github.com/leoetlino leoetlino] for helping with allocation heap and helping with the sysmodule.
* [https://github.com/Bas25/HorizonMod MarcusD] for HorizonMod. Some code was graciously borrowed within the heap allocation, and a decent reference for running a system module.


This project is licensed under [https://www.gnu.org/licenses/gpl-3.0.en.html GNU GENERAL PUBLIC LICENSE V3]. Feel free to distribute, contribute, and make changes! Pull requests to improve functionality is always welcome!
==External links==
* Github - https://github.com/PhlexPlexico/3input
* GitHub - https://github.com/PhlexPlexico/3SharpView
* Reddit - https://www.reddit.com/r/speedrun/comments/ixs25h/3input_a_3ds_input_viewer

Latest revision as of 04:09, 17 May 2024

3Input
3input2.png
General
AuthorPhlexPlexico
TypeUtilities
Version0.1
LicenseMixed
Last Updated2020/09/10
Links
Download
Website
Source
Support Author

3Input is an input viewer that works behind the scenes on your 3DS. Much like HorizonMod, the goal is to run as a daemoized process/system module, which you can then use a client to connect to and read your inputs. This is essentially an inverse to InputRedirection in Luma/Rosalina.

Currently, the only way to view inputs for the 3DS is either using a handcam, or via the use of NTR and coNTRoller-overlay. NTR can be rather buggy, and also uses a lot more resources than necessary to just show inputs. The aim is to replace it with something less buggy, and that can run on both new and old 3DS.

This homebrew is to be used with 3SharpView which allows you to view the inputs on a PC, can be use helpful for any streamers/speedrunners who would like to show off their inputs while playing.

Installation

Install both CIAs on your 3DS, make sure you're connected to a WiFi Access Point and launch the Launcher.

Now connect with a client (such as 3SharpView).

User guide

Launch the Launcher, write down the IP address and port that is presented to you, press A, and then connect to the 3DS IP with a client.

The current implementation sends a JSON Object per defined frequency. The JSON object also contains escape sequences so an application can properly decode them.

Here is an example as to what the JSON being sent looks like:

'{\n\t"btn":268435456,\n\t"cp_x":134,\n\t"cp_y":-68,\n\t"tp_x":0,\n\t"tp_y":0,\n\t"ir_btn":14,\n\t"cpp_x":14,\n\t"cpp_y":14\n}\n'

You can then use an application to parse it, to make it more readable like so:

{
    "btn":268435456,
    "cp_x":134,
    "cp_y":-68,
    "tp_x":0,
    "tp_y":0,
    "ir_btn":14,
    "cpp_x":14,
    "cpp_y":14
 }

Viewing the Output

In order to view the output, please use 3SharpView.

Changing Sending Frequency

The main thread of the module is also reading inputs. If you wish to exit, you can press SEL+START to close the application and destroy anything created by it. The following will change the send rate of the inputs:

  • SEL+X - 140 per second.
  • SEL+Y - 60 per second (Default).
  • SEL+A - 10 per second.
  • SEL+B - 1 per second.

Media

3Input and 3SharpView Example (PhlexPlexico)

Known issues

Please see https://github.com/PhlexPlexico/3input/issues.

Changelog

v0.1 2020/09/10

  • First release.

Credits

  • N3rds for the entirety of the old codebase.
  • leoetlino for helping with allocation heap and helping with the sysmodule.
  • MarcusD for HorizonMod. Some code was graciously borrowed within the heap allocation, and a decent reference for running a system module.

External links

Advertising: