Homebrew Homebrew Development

aliak11

Pokemon Master
OP
Member
Joined
Dec 5, 2010
Messages
195
Trophies
0
Age
27
Location
Florida
XP
1,021
Country
United States
The purpose of this thread it to help with homebrew development by centralizing all progress, and having a place to discuss development.

Getting started: http://wiki.gbatemp.net/wiki/3DS_Homebrew_Development

You can find a list of current released 3DS homebrew on Wikitemp.
If one is missing, feel free to add it to maintain a list of existing releases.
http://wiki.gbatemp.net/wiki/List_of_3DS_homebrew


Examples of released homebrew:


Rop Loaders

fierce waffle's ROP Loader

Alternate Rop Installer

Rop Multi-loader(use this one)


Development

fierce waffle's RAM dumper

Python Tools for 3DS

3DS_Homebrew_Stuff2

Modified build.py for GNU/Linux

ctrulib


Homebrew

BlargSnes

3DNES

Mandelbrot homebrew

nop90's 3DS_Homebrew

homebrew screen test

yeti3DS
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,420
Trophies
2
Age
43
Location
Engine room, learning
XP
14,517
Country
France
I think the python script is used to inject your homebrew into the launcher.dat (or create it from scratch).
the homebrew is coded in C/C++ or ASM, not in python.

Once you have a launcher.dat, you can boot it like usual, from the DS profile menu (after installing the ROPLoader exploit).

There's no homebrew "channel", because nobody created a homebrew lister/launcher yet.
"The Homebrew Channel" is the name of a file lister/launcher on wii, it doesn't mean that all homebrew launchers are/will be/should be called "Homebrew channel".

There's no SDK, libraries, functions ready to use, etc.
You have to code it all yourself based on hardware specification (like video buffer's addresses to write to the screen, etc.)


I'm happy to see developers releasing their own homebrew now :)
Mandelbrot is a classic one for new plateform ;)
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,420
Trophies
2
Age
43
Location
Engine room, learning
XP
14,517
Country
France
launcher.dat is only a name.
Wii used "boot.elf", 3DS use "Launcher.dat".
There's no "boom" in it if you don't add one.


I'm curious to try things myself too.
But I don't know how much I could produce, I'll have to read a lot before doing even a text output on screen.
 

Abcdfv

What comes around goes around.
Member
Joined
Dec 24, 2013
Messages
1,455
Trophies
0
XP
797
Country
United States
I dont get it, if homebrew is up and running, then why havent things been released yet, how come no hc or anything?

It's just a matter of time. Right now they're working with a blank canvas that has very specific rules of how paint can be applied, and no one quite knows exactly what those rules are yet.
 
  • Like
Reactions: SLiV3R and Huntereb

pistone

Well-Known Member
Member
Joined
Feb 18, 2010
Messages
503
Trophies
0
Age
33
Location
in your heart...coz secretly you love me !!!!
XP
212
Country
Albania
it would be nice if someone just post how to do a simple hello world on both screens and HOW TO SET UP THE ENVIRONMENT and building the necessary files :shy:
i know a little how to program (java oop) but i don't know well how to set up the environment (on linux maybe)
hope someone reads this a does a little tutorial :wub:

Also can you use a python ide for coding ?
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,420
Trophies
2
Age
43
Location
Engine room, learning
XP
14,517
Country
France
the environment is probably Devkitpro with latest devkitARM (seeing the mandelbrot sources, it's using arm-none-eabi).
then use naehrwert python script to create your launcher.dat

I'm just guessing here, Aliak could tell us what's required to compile his mandelbrot homebrew.
 

Abcdfv

What comes around goes around.
Member
Joined
Dec 24, 2013
Messages
1,455
Trophies
0
XP
797
Country
United States
it would be nice if someone just post how to do a simple hello world on both screens and HOW TO SET UP THE ENVIRONMENT and building the necessary files :shy:
i know a little how to program (java oop) but i don't know well how to set up the environment (on linux maybe)
hope someone reads this a does a little tutorial :wub:

Also can you use a python ide for coding ?

To set up the enviroment, install:

https://launchpad.net/gcc-arm-embedded
http://www.python.org/

Then add python to your $PATH. Build.bat will then compile whatever your C\ARM code is into the Launcher.dat.

As far as how to set up the makefile and all that, I can't help you, I don't know that much yet. But I was able to get other users code running and am studying what they did.


Now, to get the launcher.dat to actually do something once it's on your SDCard, get a copy of Fierce Waffle's ROPLoader.nds from the first post, put it on your DS-Mode flashcart, run it, press home instead "A" once it's verified, then go into DS Profile and it should launch (Or crash, but if it crashes then ROPLoader worked)
 

Abcdfv

What comes around goes around.
Member
Joined
Dec 24, 2013
Messages
1,455
Trophies
0
XP
797
Country
United States
i dint understand it quite well :wacko:
so you use the c/c++ to write the homebrew and then python to build it?

It's a very limited kind of C, as we don't have true 3DS headers but yes the Python script is just for compiling Launcher.DAT.

I recommend downloading some of the other homebrew and reading through their lib folders for an idea of what commands are available.
 
  • Like
Reactions: pistone

TheCruel

Developer
Banned
Joined
Dec 6, 2013
Messages
1,350
Trophies
0
XP
3,105
Country
United States
Nice, I'm a software developer and I will probably fill some of my free time learning more about the 3DS hardware. I'll probably make a simple tutorial for getting started with Hello World and all once I get in the groove of things. Unfortunately for some, I only use Linux.

I'm assuming the ROPLoader is what's used to prep the 3DS for the DS Profile exploit?
 

Abcdfv

What comes around goes around.
Member
Joined
Dec 24, 2013
Messages
1,455
Trophies
0
XP
797
Country
United States
Nice, I'm a software developer and I will probably fill some of my free time learning more about the 3DS hardware. I'll probably make a simple tutorial for getting started with Hello World and all once I get in the groove of things. Unfortunately for some, I only use Linux.

I'm assuming the ROPLoader is what's used to prep the 3DS for the DS Profile exploit?

Yes.
 

pistone

Well-Known Member
Member
Joined
Feb 18, 2010
Messages
503
Trophies
0
Age
33
Location
in your heart...coz secretly you love me !!!!
XP
212
Country
Albania
To set up the enviroment, install:

https://launchpad.net/gcc-arm-embedded
http://www.python.org/

Then add python to your $PATH. Build.bat will then compile whatever your C\ARM code is into the Launcher.dat.

As far as how to set up the makefile and all that, I can't help you, I don't know that much yet. But I was able to get other users code running and am studying what they did.


Now, to get the launcher.dat to actually do something once it's on your SDCard, get a copy of Fierce Waffle's ROPLoader.nds from the first post, put it on your DS-Mode flashcart, run it, press home instead "A" once it's verified, then go into DS Profile and it should launch (Or crash, but if it crashes then ROPLoader worked)


It's a very limited kind of C, as we don't have true 3DS headers but yes the Python script is just for compiling Launcher.DAT.

I recommend downloading some of the other homebrew and reading through their lib folders for an idea of what commands are available.
Thank you for the tips ill will try ti set it up on linux ( no windows access right now) also is time for me to buy a new 3ds just for the homebrews :D
 

pistone

Well-Known Member
Member
Joined
Feb 18, 2010
Messages
503
Trophies
0
Age
33
Location
in your heart...coz secretly you love me !!!!
XP
212
Country
Albania
Nice, I'm a software developer and I will probably fill some of my free time learning more about the 3DS hardware. I'll probably make a simple tutorial for getting started with Hello World and all once I get in the groove of things. Unfortunately for some, I only use Linux.

I'm assuming the ROPLoader is what's used to prep the 3DS for the DS Profile exploit?
That would be awesome :wub: , i also work only in linux ( just in my work office with windows :nayps3:)
Also i would like to know the developers are writing their libs ...........like blindly ? trying to find what "this/that" does ? :blink: (reverse engineering ?)
 

Abcdfv

What comes around goes around.
Member
Joined
Dec 24, 2013
Messages
1,455
Trophies
0
XP
797
Country
United States
That would be awesome :wub: , i also work only in linux ( just in my work office with windows :nayps3:)
Also i would like to know the developers are writing their libs ...........like blindly ? trying to find what "this/that" does ? :blink: (reverse engineering ?)

Yes, basically reverse engineering libs right now. No one has barely and knowledge of the ins and outs.
 

TheCruel

Developer
Banned
Joined
Dec 6, 2013
Messages
1,350
Trophies
0
XP
3,105
Country
United States
Also i would like to know the developers are writing their libs ...........like blindly ? trying to find what "this/that" does ? :blink: (reverse engineering ?)


From what I can tell, there are lot of hardware reverse engineering and people just documenting what registers/addresses control which features of the hardware.

But the most effective way to document information is to get your hands on the beautiful Development/Debug hardware. ;)
 
General chit-chat
Help Users
  • kenenthk @ kenenthk:
    I'm not really into huge library collecting so I always have space
    Gift
  • kenenthk @ kenenthk:
    Just having the extra feels better
    Gift
  • Xzi @ Xzi:
    yeah i try not to fill above 75-80%
    Gift
  • Xzi @ Xzi:
    just like a superstitious thing i guess lol
    Gift
  • kenenthk @ kenenthk:
    Just upgraded a 2tb in my ps4 that will probably get filled quick
    Gift
  • kenenthk @ kenenthk:
    And got 128gb in my vita and 3ds that will never get filled
    Gift
  • Xzi @ Xzi:
    got a 1TB external drive connected to my PS5 for PS4 games
    Gift
  • Xzi @ Xzi:
    about 120GB left on the internal SSD
    Gift
  • Xzi @ Xzi:
    and just installed a 512GB SSD with nothing on it yet
    Gift
  • kenenthk @ kenenthk:
    So in other words only 4 games got installed
    Gift
  • Xzi @ Xzi:
    lol
    Gift
  • Xzi @ Xzi:
    PS5 games are actually considerably smaller than PS4 games
    +1
    Gift
  • Xzi @ Xzi:
    better compression/optimization i guess
    Gift
  • kenenthk @ kenenthk:
    But it only has like 4 games :tpi:
    Gift
  • Julie_Pilgrim @ Julie_Pilgrim:
    what is something you can say about console homebrew but also in the bedroom
    Gift
  • kenenthk @ kenenthk:
    Time to transfer files
    Gift
  • Julie_Pilgrim @ Julie_Pilgrim:
    "it was so hard the first time"
    +1
    Gift
  • Julie_Pilgrim @ Julie_Pilgrim:
    "Time to transfer files" bro having sex with robots
    +1
    Gift
  • Julie_Pilgrim @ Julie_Pilgrim:
    honestly knowing ken that isn't that unbelievable
    +1
    Gift
  • Xzi @ Xzi:
    arent many ps5 exclusives it's true, but there are a whole lot of ps4 games that got ps5 upgrades
    Gift
  • Xzi @ Xzi:
    and those have to be stored on one of the SSDs
    Gift
  • Xzi @ Xzi:
    "time to smash the stack"
    Gift
  • kenenthk @ kenenthk:
    Uremum does like to call me dadbot
    Gift
  • El_Doot tempBOT: @ El_Doot
    julie should sleep
    Gift
  • El_Doot @ El_Doot:
    I agree tempbot
    Gift
    El_Doot @ El_Doot: I agree tempbot