Advertising (This ad goes away for registered users. You can Login or Register)

3DS Homebrew Dev Guide, CH 1: Where To Start

Underground 3DS Discussions
Forum rules
Forum rule Nº 15 is strictly enforced in this subforum.
Locked
josh_axey
Retired Mod
Posts: 266
Joined: Sun Oct 07, 2012 10:14 pm
Location: /dev/null
Contact:

3DS Homebrew Dev Guide, CH 1: Where To Start

Post by josh_axey »

Click here to return to the Chapter Index


Welcome to Chapter 1.

Let's get this clear and out of the way: This is a collection of information. None of this is by me, unless I explicitly state otherwise. I have noted credit where I have remembered. +karma to these guys.

Things Of Note:
This requires a vulnerable 3DS unit (firmware 4.1 through 4.5 currently, as at date 6th of May 2014).
This is all based around ARM9 development. For ARM11 see the guide #2: Here


Written Resources

3DBrew: A good place to start for reference material in general.
http://3dbrew.org/wiki/Main_Page


Development Environment Setup

Download and install the following:
https://launchpad.net/gcc-arm-embedded
http://www.python.org/
https://github.com/naehrwert/p3ds (credits to naehwert, obviously)

You can also use devkitARM if you prefer it over GCC ARM Embedded.

For Linux users, you will want this modified build.py as well: https://www.dropbox.com/s/jyzhkk9giy1saq0/build.py.zip (by Kane)
You will also want to add python to your $PATH if you are a linux user. Once you have done that, Build.bat will compile your code into the Launcher.dat file.

For Windows, you will need to edit your environment variables via Computer>Right Click>Properties>Advanced>Environment variables.
You will be presented with a list. Look for and select "Path". Click Edit/Modify.
Add:

Code: Select all

;<python>;<ggcarmbin>
to the end of the entry, where <python> is your Python install path (e.g. C:\Python) and <gccarmbin> is your arm toolchain bin folder (e.g. C:\Program Files\GNU Tools ARM Embedded\4.9-2014-q4-major\bin)
It becomes something like this:

Code: Select all

;C:\Python;C:\Program Files\GNU Tools ARM Embedded\4.9-2014-q4-major\bin
Now make a batch file in the build.py folder with the below entry:

Code: Select all

python build.py
pause>nul
(the >nul discards the "Press key to continue" outputs from pause)


3DS System Preparation

Launcher.dat goes on your 3DS SD Card once you have compiled your code / sample code / got a copy of someones homebrew.

You will then want the ROP loader to enable you to be able to launch your Launcher.dat file.
Get it here: https://www.dropbox.com/s/2m9xrpp2lrq27 ... taller.zip (this is the modified ROP loader by Drenn)
The ROP loader goes on your DS Mode flash cartridge and is run from there.
It will prompt you to press "A" to exit. I have better stability using the Home button and closing the game, personally. I would recommend you do that instead.

Once you have done this, go into your system settings, select "Other Settings", select "Profile", select "Nintendo DS Profile". This should now launch the homebrew (Launcher.dat).
It may also crash. This is a good sign still. It means that the ROP loader did work.


Code Samples
Mandlebrot by Aliakr18: https://github.com/Aliakr18/mandelbrot
Libraries and sample by nop90:https://github.com/nop90/3DS_Homebrew
CTR User Library by smealum: https://github.com/smealum/ctrulib
Yeti3DS by smealum: https://github.com/smealum/yeti3DS
Advertising
Last edited by josh_axey on Sat May 17, 2014 2:07 pm, edited 9 times in total.
Catch me: on Twitter | on GitHub | Rambling
【・ヘ・?】0b00000101
Acid_Snake
Retired Mod
Posts: 3100
Joined: Tue May 01, 2012 11:32 am
Location: Behind you!

Re: Homebrew: Where To Start

Post by Acid_Snake »

really nice thread man, I love it
Advertising
josh_axey
Retired Mod
Posts: 266
Joined: Sun Oct 07, 2012 10:14 pm
Location: /dev/null
Contact:

Re: Homebrew: Where To Start

Post by josh_axey »

Cheers :). Hopefully this will give the guys/girls a good starting point. I'll have to add some ARM11 stuff soon when I get a chance to do some tinkering.
Catch me: on Twitter | on GitHub | Rambling
【・ヘ・?】0b00000101
Locked

Return to “Programming and Security”