Changes

m
no edit summary
Line 1: Line 1:  
= Setup =
 
= Setup =
* Install [http://devkitpro.org/ devkitARM]. If it's already installed, update it. On Windows there's a GUI installer. On Linux/Mac there's a perl-script. Make sure you also select libctru and the 3ds examples when installing.
+
Install [https://devkitpro.org/ devkitARM]. If it's already installed, update it using sudo (dkp-)pacman -Syu. On Windows, there's a [https://github.com/devkitPro/installer/releases/latest graphical installer]. On Unix-like platforms such as Linux/macOS, there's [https://github.com/devkitPro/pacman/releases/latest pacman]..
* Depending on the kind of homebrew you want to develop, you may be interested in installing and using additional libraries and tools which don't ship alongside devkitARM/libctru. A list of them can be found in [[Homebrew Libraries and Tools]].
     −
==Linux==
+
==Windows==
* First get the devkitARM updater Perl script for Linux.
+
* If you already use msys2 then you can follow the instructions at https://github.com/devkitPro/pacman/releases/latest to add the devkitPro repositories.
* Run it with superuser privileges if your /opt directory is not marked world read-writeable.
     −
<pre>sudo apt-get install git curl
+
Otherwise
curl -L http://sourceforge.net/projects/devkitpro/files/Automated%20Installer/devkitARMupdate.pl/download -o devkitARMupdate.pl
+
 
chmod +x ./devkitARMupdate.pl
+
* [https://github.com/devkitPro/installer/releases/latest download the latest version of the graphical installer] from github and run it, following the instructions as you go.
sudo ./devkitARMupdate.pl /opt/devkitpro
+
* An Internet connection is required.
echo "export DEVKITPRO=/opt/devkitpro" >> ~/.bashrc
+
* Ensure at least "3DS Development" is ticked - you can also leave the other options ticked if you wish.
echo "export DEVKITARM=$DEVKITPRO/devkitARM" >> ~/.bashrc
+
* Once the installer has finished, launch MSYS from:
echo "export PATH=$PATH:$DEVKITARM/bin" >> ~/.bashrc
+
** Windows 7 and earlier: Start -> All Programs -> devkitPro -> MSYS
source ~/.bashrc
+
** Windows 8 and 8.1: Right click on the Start screen and select 'All Apps'. You should find MSYS there.
</pre>
+
** Windows 10 (pre-Anniversary Update): Start -> All Apps -> devkitPro -> MSYS
 +
** Windows 10 (post-Anniversary Update): Start -> devkitPro -> MSYS
 +
 
 +
Alternatively starting with Windows 10 Anniversary Update (Version 1607), the [https://msdn.microsoft.com/en-us/commandline/wsl/install_guide Windows Subsystem for Linux (WSL)] may also be used to run the Linux version of devkitARM. Unless you have some particular need for WSL it's recommended that you stick to a more standard environment.  
 +
 
 +
==Unix-like platforms==
 +
Currently devkitPro provides precompiled versions of devkitARM for the following Unix-like platforms: Linux (x86_64), macOS (x86_64). Note that Linux x86_64 binaries are usable under WSL.
 +
 
 +
* Follow the instructions to install pacman found at https://github.com/devkitPro/pacman/releases/latest
 +
* run sudo (dkp-)pacman -S 3ds-dev to install the tools and libraries for 3ds development
 +
* logout and login again to get the environment settings needed.
    
= Building the examples =
 
= Building the examples =
3DS examples are still being created. Currently there are a few examples distributed by the devkitPro supplied updaters - these can be found in $DEVKITPRO/examples/3ds and the [https://github.com/devkitPro/3ds-examples 3ds examples repository]. There are now too many to list here in detail.
+
3DS examples are still being created; however, there are a growing number of examples available from the [https://github.com/devkitPro/3ds-examples devkitPro/3ds-examples GitHub repository]. These are downloaded by the installer and can be found in $DEVKITPRO/examples/3ds
 
  −
These can be built from the command line - on Windows devkitPro supply msys which can be started using the msys shortcut in the devkitPro Start Menu entry or by browsing to <installdir>\devkitPro\msys and double clicking the msys.bat file found there. This will launch a bash shell. On Linux/OSX you can just open your system supplied shell.
     −
To start a new homebrew project from here simply type
+
These can be built from the command line.
<pre>cp -r $DEVKITPRO/examples/3ds/templates/application ~/projects/my3dsproject
  −
cd ~/projects/my3dsproject
  −
make
  −
</pre> To run it on your 3DS start up The Homebrew Launcher, press the Y button to open the netloader then
  −
<pre>$DEVKITARM/bin/3dslink my3dsproject.3dsx</pre>
     −
Hopefully you'll see it boot on the 3DS.
+
To start a new homebrew project from the <code>bash</code> shell, simply type the following (replacing <code>'''~/projects/my3dsproject'''</code> with the place you would like your project to be stored, with <code>~</code> meaning your HOME directory):
 +
cp -r $DEVKITPRO/examples/3ds/templates/application '''~/projects/my3dsproject'''
 +
cd '''~/projects/my3dsproject'''
   −
Obviously you can add $DEVKITARM/bin to your PATH from the shell then simply run 3dslink as normal. You shouldn't add this permanently - it could potentially interfere with other tools.
+
The standard Makefile will use the folder as the name of the 3dsx that will be built. You can keep that behaviour or simply change the <code>TARGET := $(notdir $(CURDIR))</code> line in the Makefile to explicitly name your project.
    +
To compile it, type <code>make</code> in the project directory.
   −
==Building the examples on Linux with Netbeans==
+
==Running your code==
* Go to File->New Project...
+
To run it on your 3DS, start the Homebrew Launcher, press Y to open the network loader, then on your PC type: <code>$DEVKITPRO/tools/bin/3dslink  '''my3dsproject'''.3dsx</code>, replacing '''my3dsproject''' with the name of the 3dsx file you want to run.)
* Select C/C++ Project with existing code
  −
* Navigate to the examples directory and select the folder for the project you want to build; eg.    /home/vtsingaras/3ds/examples/app_launch
  −
* Leave Configuration Mode to 'Automatic' and click 'Finish'.
  −
* It will fail to build. Now edit Makefile and insert these two lines, adjusting for your devkitpro path, at the top:
  −
<pre>export DEVKITPRO=/opt/devkitpro
  −
export DEVKITARM=/opt/devkitpro/devkitARM</pre>
  −
* Right-click the project and go to Properties->Code Assistance and click C Compiler.
  −
* In include directories enter
  −
<pre>/opt/devkitpro/devkitARM/include;/opt/devkitpro/ctrulib/libctru/include</pre>
  −
adjusting again for your devkitPro path.
  −
* Do the same for 'C++ Compiler'.
  −
* Go to 'Run' and click 'Clean and Build Project'.
  −
* Now right-click on the project and select Code Assistance->Reparse Project.
     −
Now you can use Netbeans' code completion feature and build your project from the Run menu.
+
If all goes well, you'll soon see your application running on your 3DS. If not, it could help to add <code>-a '''ipaddress'''</code>, replacing '''ipaddress''' with the ip address of the console (visible on homebrew launcher after pressing Y).
   −
= Building homebrew for distribution =
+
= Troubleshooting =
To build your homebrew open a terminal, browse to your homebrew's folder and run make.
+
'''I get the "Please set DEVKITARM in your environment." error.'''
   −
* This will build a .elf file and a .3dsx file together with an icon. The icon and .3dsx file are the format required for the [[Homebrew Channel]].
+
Ensure you have the devkit-env package installed - (dkp-)pacman -Sl | grep devkit-env. Logout and login to get the enviroment settings.
   −
* To build a Gateway-compatible .3ds file you need to strip the .elf file and use makerom on it (with the provided RSF file):
+
For WSL users, you need to close the Bash shell, then reopen it for WSL to reload all of the variables from a clean state.
arm-none-eabi-strip [ELF file]
  −
makerom -f cci -o [.3ds file] -rsf [RSF file] -target d -exefslogo -elf [ELF file] -icon [icon file] -banner [banner file]
 
2

edits