3DS:Rehid: Difference between revisions

From Hacks Guide Wiki
(even more manual documentation)
m (ItsCrocoSwine moved page User:ItsCrocoSwine/projects/3DS rehid to 3DS:Rehid: Publish)
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Infobox homebrew
{{Infobox homebrew
| title = rehid
| title = Rehid
| image = rehid-Helper-banner.png
| image = rehid-Helper-banner.png
| imagealt = rehidHelper banner as used on the HOME Menu
| imagealt = RehidHelper banner as used on the HOME Menu
| for3ds = 1
| for3ds = 1
| developers = hax0kartik
| developers = hax0kartik
Line 11: Line 11:
| universaldb = 3ds/rehid
| universaldb = 3ds/rehid
}}
}}
'''rehid''' is a rewrite of the 3DS' hid module, to allow for the remapping of buttons or the touch screen.  
'''Rehid''' is a rewrite of the 3DS' hid module, that allow for the remapping of buttons or the touch screen in 3DS titles.  


=Installation=
=Installation=
Line 31: Line 31:
# Wait until the app installs
# Wait until the app installs
# Close '''Universal-Updater'''
# Close '''Universal-Updater'''
# Launch '''rehidHelper''' and select <code>Download Rehid</code>
# Launch '''RehidHelper''' and select <code>Download Rehid</code>
# Wait for it to download and reboot, then press {{B|B}} to exit the app
# Wait for it to download and reboot, then press {{B|B}} to exit the app
# Power off your Console
# Power off your Console
Line 42: Line 42:
<span>
<span>
===what you need===
===what you need===
* the latest release of [https://github.com/hax0kartik/rehid/releases/latest rehid] (the <code>0004013000001D02.cxi</code> and <code>rehidhelper.cia</code> files)
* the latest release of [https://github.com/hax0kartik/rehid/releases/latest Rehid] (the <code>0004013000001D02.cxi</code> and <code>rehidhelper.cia</code> files)
* [[3DS:FBI|FBI]] installed on your console
* [[3DS:FBI|FBI]] installed on your console
* [[3DS:luma3DS|Luma3DS]] updated to 13.0+
* [[3DS:luma3DS|Luma3DS]] updated to 13.0+
Line 65: Line 65:
|-|Generated=
|-|Generated=
<span>
<span>
# Go to [https://mikahjc.github.io/3dsRemapBuilder/config 3DS Remap Builder] to generate your remappings
# Go to [https://mikahjc.github.io/3dsRemapBuilder/config 3DS Remap Builder] to configure your key mappings
# When finished click on '''Show as QR code'''
# When finished click on '''Show as QR code'''
#* If you are unable to scan QR codes on your console, instead click '''Build this remap''' and place the downloaded <code>rehid.json</code> into a <code>rehid</code> folder on the root of your SD card, or <code>rehid/(title ID)/</code> to remap a specific game. You can find the title ID of your game using [https://3dsdb.com/ 3dsdb]
# Power on your console and launch RehidHelper
# Power on your console and launch rehidHelper
# Select Scan QR Code and scan the generated QR code from the website
# Select Scan QR Code and scan the generated QR code from the website
# Press {{B|A}} to proceed
# Press {{B|A}} to proceed
# Select a title from the list for the remap to be applied to, or select global for all titles
# Select a title from the list for the remap to be applied to, or select global for all titles
# Press {{B|start}} to exit
# Press {{B|start}} to exit
</span>
|-|Generated(broken camera)=
<span>
<ol>
<li>Go to [https://mikahjc.github.io/3dsRemapBuilder/config 3DS Remap Builder] to configure your key mappings</li>
<li>When finished click on '''Build this remap''' and download <code>rehid.json</code></li>
<li>Copy <code>rehid.json</code> to a <code>rehid</code> folder on the root of your SD card
<ul>
<li>If you want the remap to be used for a specific title, copy <code>rehid.json</code> to <code>rihid/(title ID)/</code> instead. You can find the title ID of your game using [https://3dsdb.com/ 3dsdb]</li></ul>
</li>
</ol>
</span>
</span>


Line 78: Line 89:
<span>
<span>
<ol>
<ol>
<li><p>Create a <code>rehid.json</code> file with the remappings you want. possible options include:</p>
<li><p>Create a <code>rehid.json</code> file with the key mappings you want. possible options include:</p>
<p><code>"keys":</code> which maps a key press to another key press.<br>Possible Keys are: <code>A</code>, <code>B</code>, <code>X</code>, <code>Y</code>, <code>SELECT</code>, <code>START</code>, <code>ZL</code>, <code>ZR</code>, <code>L</code>, <code>R</code>, <code>LEFT</code>, <code>RIGHT</code>, <code>UP</code>, <code>DOWN</code>, <code>CLEFT</code>(CPAD), <code>CRIGHT</code>(CPAD), <code>CUP</code>(CPAD), <code>CDOWN</code>(C-PAD), <code>CSLEFT</code>(C-STICK), <code>CSRIGHT</code>(C-STICK), <code>CSUP</code>(C-STICK), <code>CSDOWN</code>(C-STICK)</p>
<p><code>"keys":</code> which maps a key press to another key press.<br>Possible Keys are: <code>A</code>, <code>B</code>, <code>X</code>, <code>Y</code>, <code>SELECT</code>, <code>START</code>, <code>ZL</code>, <code>ZR</code>, <code>L</code>, <code>R</code>, <code>LEFT</code>, <code>RIGHT</code>, <code>UP</code>, <code>DOWN</code>, <code>CLEFT</code>(CPAD), <code>CRIGHT</code>(CPAD), <code>CUP</code>(CPAD), <code>CDOWN</code>(C-PAD), <code>CSLEFT</code>(C-STICK), <code>CSRIGHT</code>(C-STICK), <code>CSUP</code>(C-STICK), <code>CSDOWN</code>(C-STICK)</p>
<syntaxhighlight lang="json">{"keys":[{"press":"ZR","get":"R"},{"press":"ZL","get":"L"}]}</syntaxhighlight>
<syntaxhighlight lang="json">{"keys":[{"press":"ZR","get":"R"},{"press":"ZL","get":"L"}]}</syntaxhighlight>
Line 87: Line 98:
<p><code>"cpad":</code>, which maps a key press to a circle pad x and y coordinate from -190 to 190;</p>
<p><code>"cpad":</code>, which maps a key press to a circle pad x and y coordinate from -190 to 190;</p>
<syntaxhighlight lang="json">{"cpad":[{"press":"CUP","get":[0,190]},{"press":"CDOWN","get":[0,-190]},{"press":"CLEFT","get":[-190,0]},{"press":"CRIGHT","get":[190,0]}]}</syntaxhighlight>
<syntaxhighlight lang="json">{"cpad":[{"press":"CUP","get":[0,190]},{"press":"CDOWN","get":[0,-190]},{"press":"CLEFT","get":[-190,0]},{"press":"CRIGHT","get":[190,0]}]}</syntaxhighlight>
<p><code>"touch":</code>, which maps a key press to a touchscreen x and y coordinate from 0,0 top left to 320,240 bottom right;</p>
<p><code>"touch":</code>, which maps a key press to a given x,y coordinate on the touchscreen from 0,0 top left to 320,240 bottom right;</p>
<syntaxhighlight lang="json">{"touch":[{"press":"LEFT+UP","get":[0,0]},{"press":"RIGHT+DOWN","get":[320,240]}]}</syntaxhighlight>
<syntaxhighlight lang="json">{"touch":[{"press":"LEFT+UP","get":[0,0]},{"press":"RIGHT+DOWN","get":[320,240]}]}</syntaxhighlight>
<p><code>"touchtokeys":</code> which maps two coordinate pairs to make a box on the touch screen that when tapped will output a key press;</p>
<p><code>"touchtokeys":</code> which maps a box starting at a given x,y coordinate, with a given height and width, that when tapped will output a key press;</p>
<syntaxhighlight lang="json">{"touchtokeys":[{"press":[0,0,50,50],"get":"A"}]}</syntaxhighlight>
<syntaxhighlight lang="json">{"touchtokeys":[{"press":[10,20,50,100],"get":"A"}]}</syntaxhighlight>
<p>For this example, tapping anywhere in a 50x50 pixel box in the top left will press A.</p>
<p>For this example, it creates a box starting at x=10 y=20, with a height of 50 and a width of 100.</p>
<p>Other options include:<br>
<p>Other options include:<br>
<code>"cpadtodpad":true</code> maps the C-pad to the D-pad<br>
<code>"cpadtodpad":true</code> maps the C-pad with D-pad key presses<br>
<code>"dpadtocpad":true</code> maps the D-pad to the C-pad<br>
<code>"dpadtocpad":true</code> maps the D-pad with C-pad key presses<br>
<code>"overidecpadpro":true</code> makes it so games don't recognize the circle pad pro<br>
<code>"overidecpadpro":true</code> makes it so games don't recognize the circle pad pro<br>
<code>"homebutton":</code> maps the HOME button to a key press</p>
<code>"homebutton":</code> maps the HOME button to a key press</p>
<p>These Options can be strung together into a single line, for example:</p>
<p>These Options can be strung together into a single line, for example:</p>
<syntaxhighlight lang="json">{"keys":[{"press":"ZR","get":"R"},{"press":"ZL","get":"L"}],"cpad":[{"press":"CUP","get":[0,190]},{"press":"CDOWN","get":[0,-190]}],"touch":[{"press":"LEFT+UP","get":[0,0]},{"press":"RIGHT+DOWN","get":[320,240]}],"touchtokeys":[{"press":[0,0,50,50],"get":"A"}],"cpadtodpad":true,"dpadtocpad":true,"overridecpadpro":true,"homebutton":"ZR+ZL"}</syntaxhighlight>
<syntaxhighlight lang="json">{"keys":[{"press":"ZR","get":"R"},{"press":"ZL","get":"L"}],"cpad":[{"press":"CUP","get":[0,190]},{"press":"CDOWN","get":[0,-190]}],"touch":[{"press":"LEFT+UP","get":[0,0]},{"press":"RIGHT+DOWN","get":[320,240]}],"touchtokeys":[{"press":[10,20,50,100],"get":"A"}],"cpadtodpad":true,"dpadtocpad":true,"overridecpadpro":true,"homebutton":"ZR+ZL"}</syntaxhighlight>
</li>
</li>
<li>Copy <code>rehid.json</code> to a <code>rehid</code> folder on the root of your SD card
<li>Copy <code>rehid.json</code> to a <code>rehid</code> folder on the root of your SD card
<ul>
<ul>
<li>If you want to the remapping to be used for a specific title, copy <code>rehid.json</code> to <code>rihid/(title ID)/</code> instead. You can find the title ID of your game using [https://3dsdb.com/ 3dsdb]</li></ul>
<li>If you want the remap to be used for a specific title, copy <code>rehid.json</code> to <code>rihid/(title ID)/</code> instead. You can find the title ID of your game using [https://3dsdb.com/ 3dsdb]</li></ul>
</li>
</li>
</ol>
</ol>
Line 111: Line 122:


===An exception occurred===
===An exception occurred===
If your console crashes while booting with "an exception occurred" and the "current proccess:" is hid, you may have an old version of rehid thats causing issues. Look for and delete <code>/luma/titles/0004013000001D02</code> and <code>/luma/titles/0004013000003302</code>. If these don't exist, you may have a more serious hardware issue, join the [https://discord.gg/C29hYvh Nintendo Homebrew Discord] and ask, in English, for help.
If your console crashes while booting with "an exception occurred" and the "current proccess:" is hid, you may have an old version of Rehid thats causing issues. Look for and delete <code>/luma/titles/0004013000001D02</code> and <code>/luma/titles/0004013000003302</code>. If these don't exist, you may have a more serious hardware issue, join the [https://discord.gg/C29hYvh Nintendo Homebrew Discord] and ask, in English, for help.




[[Category:Nintendo 3DS guides]]
[[Category:Nintendo 3DS guides]]
[[Category:Nintendo 3DS homebrew]]
[[Category:Nintendo 3DS homebrew]]

Revision as of 22:03, 27 March 2024

Rehid is a rewrite of the 3DS' hid module, that allow for the remapping of buttons or the touch screen in 3DS titles.

Installation

what you need

instructions

  1. Power on the console
  2. Launch Universal-Updater
  3. Tap the magnifying glass on the bottom screen, then search for rehid
  4. Press A while hovering over rehid from the list of homebrew
  5. Choose rehidhelper.cia
  6. Wait until the app installs
  7. Close Universal-Updater
  8. Launch RehidHelper and select Download Rehid
  9. Wait for it to download and reboot, then press B to exit the app
  10. Power off your Console
  11. While holding SELECT, power on your console to enter Luma3DS configuration
  12. Ensure that "Enable loading external FIRMs and modules" is selected
  13. Press START to save and exit

what you need

  • the latest release of Rehid (the 0004013000001D02.cxi and rehidhelper.cia files)
  • FBI installed on your console
  • Luma3DS updated to 13.0+

Instructions

  1. Copy 0004013000001D02.cxi to sd:/luma/sysmodules/
    • Create the folder sysmodules if it doesn't exist
  2. Copy rehidhelper.cia to the root of your SD card
  3. Reinsert your SD card into your console
  4. Launch FBI and select SD -> rehidhelper.cia -> Install and delete CIA
  5. Press A and wait for the CIA to install, then exit FBI
  6. Power off your Console
  7. While holding SELECT, power on your console to enter Luma3DS configuration
  8. Ensure that "Enable loading external FIRMs and modules" is selected
  9. Press START to save and exit

Remapping buttons

  1. Go to 3DS Remap Builder to configure your key mappings
  2. When finished click on Show as QR code
  3. Power on your console and launch RehidHelper
  4. Select Scan QR Code and scan the generated QR code from the website
  5. Press A to proceed
  6. Select a title from the list for the remap to be applied to, or select global for all titles
  7. Press start to exit

  1. Go to 3DS Remap Builder to configure your key mappings
  2. When finished click on Build this remap and download rehid.json
  3. Copy rehid.json to a rehid folder on the root of your SD card
    • If you want the remap to be used for a specific title, copy rehid.json to rihid/(title ID)/ instead. You can find the title ID of your game using 3dsdb

  1. Create a rehid.json file with the key mappings you want. possible options include:

    "keys": which maps a key press to another key press.
    Possible Keys are: A, B, X, Y, SELECT, START, ZL, ZR, L, R, LEFT, RIGHT, UP, DOWN, CLEFT(CPAD), CRIGHT(CPAD), CUP(CPAD), CDOWN(C-PAD), CSLEFT(C-STICK), CSRIGHT(C-STICK), CSUP(C-STICK), CSDOWN(C-STICK)

    {"keys":[{"press":"ZR","get":"R"},{"press":"ZL","get":"L"}]}
    

    With the above, any time you press the ZR key, R key would be triggered, and any time you press the ZL key, L key would be triggered.

    You can also do custom key combos;

    {"keys":[{"press":"X+Y","get":"R"},{"press":"SELECT","get":"L+R"}]}
    

    With this any time you press X+Y, R key would be triggered, and any time you press the SELECT button, both L and R would be triggered.

    "cpad":, which maps a key press to a circle pad x and y coordinate from -190 to 190;

    {"cpad":[{"press":"CUP","get":[0,190]},{"press":"CDOWN","get":[0,-190]},{"press":"CLEFT","get":[-190,0]},{"press":"CRIGHT","get":[190,0]}]}
    

    "touch":, which maps a key press to a given x,y coordinate on the touchscreen from 0,0 top left to 320,240 bottom right;

    {"touch":[{"press":"LEFT+UP","get":[0,0]},{"press":"RIGHT+DOWN","get":[320,240]}]}
    

    "touchtokeys": which maps a box starting at a given x,y coordinate, with a given height and width, that when tapped will output a key press;

    {"touchtokeys":[{"press":[10,20,50,100],"get":"A"}]}
    

    For this example, it creates a box starting at x=10 y=20, with a height of 50 and a width of 100.

    Other options include:
    "cpadtodpad":true maps the C-pad with D-pad key presses
    "dpadtocpad":true maps the D-pad with C-pad key presses
    "overidecpadpro":true makes it so games don't recognize the circle pad pro
    "homebutton": maps the HOME button to a key press

    These Options can be strung together into a single line, for example:

    {"keys":[{"press":"ZR","get":"R"},{"press":"ZL","get":"L"}],"cpad":[{"press":"CUP","get":[0,190]},{"press":"CDOWN","get":[0,-190]}],"touch":[{"press":"LEFT+UP","get":[0,0]},{"press":"RIGHT+DOWN","get":[320,240]}],"touchtokeys":[{"press":[10,20,50,100],"get":"A"}],"cpadtodpad":true,"dpadtocpad":true,"overridecpadpro":true,"homebutton":"ZR+ZL"}
    
  2. Copy rehid.json to a rehid folder on the root of your SD card
    • If you want the remap to be used for a specific title, copy rehid.json to rihid/(title ID)/ instead. You can find the title ID of your game using 3dsdb

Troubleshooting

An exception occurred

If your console crashes while booting with "an exception occurred" and the "current proccess:" is hid, you may have an old version of Rehid thats causing issues. Look for and delete /luma/titles/0004013000001D02 and /luma/titles/0004013000003302. If these don't exist, you may have a more serious hardware issue, join the Nintendo Homebrew Discord and ask, in English, for help.