Difference between revisions of "Setting up Development Environment"

From 3dbrew
Jump to navigation Jump to search
m
 
(70 intermediate revisions by 24 users not shown)
Line 1: Line 1:
== Setup ==
+
= Setup =
* Install [http://devkitpro.org/ devkitPro]. If it's already installed, give it an update, it can't hurt. On Windows there's a GUI installer. On Linux/Mac there's a perl-script.
+
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]..
* Install the [http://mtheall.com/~fincs/3dsdkA/ 3dsxtools] on top of devkitPro according to the website.
 
* On Linux/Mac cd into your devkitPro folder and execute:
 
git clone https://github.com/smealum/ctrulib
 
* If you're on Windows you can download ctrulib as a [https://github.com/smealum/ctrulib/archive/master.zip zip] and extract it into your devkitPro folder.
 
  
'''Note:''' devkitPro/ctrulib/libctru contains ctrulib itself, and devkitPro/ctrulib/examples contains a few 3DS homebrew examples.
+
==Windows==
 +
* If you already use msys2 then you can follow the instructions at https://github.com/devkitPro/pacman/releases/latest to add the devkitPro repositories.
  
== Adding some environment variables ==
+
Otherwise
* Under Windows: go to System properties, Advanced system settings, Environment variables.
 
** Add an environment variable named CTRULIB. Set it to the path to ctrulib.
 
*** '''Example:''' CTRULIB -> C:\devkitPro\ctrulib\'''libctru'''
 
** You also need to add devkitARM/bin to the PATH environment variable.
 
*** '''Example:''' PATH -> [previous value of PATH];C:\devkitPro\devkitARM\bin
 
  
* Under Linux/Mac:
+
* [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.
** Add the following to your ~/.bash_proflle or equivalent:
+
* An Internet connection is required.
export CTRULIB=''<path to ctrulib/libctru>''
+
* Ensure at least "3DS Development" is ticked - you can also leave the other options ticked if you wish.
 +
* Once the installer has finished, launch MSYS from:
 +
** Windows 7 and earlier: Start -> All Programs -> devkitPro -> MSYS
 +
** Windows 8 and 8.1: Right click on the Start screen and select 'All Apps'. You should find MSYS there.
 +
** Windows 10 (pre-Anniversary Update): Start -> All Apps -> devkitPro -> MSYS
 +
** Windows 10 (post-Anniversary Update): Start -> devkitPro -> MSYS
  
== Building ctrulib ==
+
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.  
In the form under which it's provided, ctrulib needs to be built before you can build homebrew.
 
  
Open a terminal (cmd window under Windows) and browse to ctrulibs directory (the one you entered in the CTRULIB variable of the previous step). Run the following commands:
+
==Unix-like platforms==
make clean
+
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.
make
 
  
If everything goes right, a lib folder should be created with a file named 'libctru.a' in it.
+
* 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 =
You can build from the examples provided with ctrulib.
+
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
  
* '''arm11u:''' simple homebrew example
+
These can be built from the command line.
* '''sdmc:''' demonstrates how to access files on the SD card
 
* '''mic:''' demonstrates how to read sound from the microphone
 
* '''gpu:''' demonstrates how to render 3D geometry with the GPU
 
  
== Building homebrew for distribution ==
+
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):
To build your homebrew, it works the same way as for building ctrulib. Open a terminal, browse to your homebrew's folder and run make.
+
cp -r $DEVKITPRO/examples/3ds/templates/application '''~/projects/my3dsproject'''
 +
cd '''~/projects/my3dsproject'''
  
* 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]].
+
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 build a Gateway-compatible .3ds file you need to strip the .elf file and use makerom on it (with the provided RSF file):
+
To compile it, type <code>make</code> in the project directory.
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]
+
==Running your code==
 +
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.)
 +
 
 +
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).
 +
 
 +
= Troubleshooting =
 +
'''I get the "Please set DEVKITARM in your environment." error.'''
 +
 
 +
Ensure you have the devkit-env package installed - (dkp-)pacman -Sl | grep devkit-env. Logout and login to get the enviroment settings.
 +
 
 +
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.

Latest revision as of 13:31, 20 July 2023

Setup[edit]

Install devkitARM. If it's already installed, update it using sudo (dkp-)pacman -Syu. On Windows, there's a graphical installer. On Unix-like platforms such as Linux/macOS, there's pacman..

Windows[edit]

Otherwise

  • download the latest version of the graphical installer from github and run it, following the instructions as you go.
  • An Internet connection is required.
  • Ensure at least "3DS Development" is ticked - you can also leave the other options ticked if you wish.
  • Once the installer has finished, launch MSYS from:
    • Windows 7 and earlier: Start -> All Programs -> devkitPro -> MSYS
    • Windows 8 and 8.1: Right click on the Start screen and select 'All Apps'. You should find MSYS there.
    • 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 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[edit]

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.

Building the examples[edit]

3DS examples are still being created; however, there are a growing number of examples available from the 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.

To start a new homebrew project from the bash shell, simply type the following (replacing ~/projects/my3dsproject with the place you would like your project to be stored, with ~ meaning your HOME directory):

cp -r $DEVKITPRO/examples/3ds/templates/application ~/projects/my3dsproject
cd ~/projects/my3dsproject

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 TARGET := $(notdir $(CURDIR)) line in the Makefile to explicitly name your project.

To compile it, type make in the project directory.

Running your code[edit]

To run it on your 3DS, start the Homebrew Launcher, press Y to open the network loader, then on your PC type: $DEVKITPRO/tools/bin/3dslink my3dsproject.3dsx, replacing my3dsproject with the name of the 3dsx file you want to run.)

If all goes well, you'll soon see your application running on your 3DS. If not, it could help to add -a ipaddress, replacing ipaddress with the ip address of the console (visible on homebrew launcher after pressing Y).

Troubleshooting[edit]

I get the "Please set DEVKITARM in your environment." error.

Ensure you have the devkit-env package installed - (dkp-)pacman -Sl | grep devkit-env. Logout and login to get the enviroment settings.

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.