Homebrew Development

Discussion in '3DS - Homebrew Development and Emulators' started by aliak11, Jan 16, 2014.

  1. aliak11
    OP

    aliak11 Pokemon Master

    Member
    195
    309
    Dec 5, 2010
    United States
    Florida
    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
     
  2. krzz
    This message by krzz has been removed from public view by ProtoKun7, Jan 16, 2014, Reason: Cool story bro.
    Jan 16, 2014


  3. tomiga

    tomiga GBAtemp Regular

    Member
    125
    76
    Dec 4, 2013
    United States
    Thanks for making a proper homebrew thread and including my build.py!
     
  4. gamefan5

    gamefan5 Kid Icarus Uprising connoiseur

    Member
    4,946
    2,067
    Aug 29, 2010
    Canada
    Somewhere in this Earth
    I don't want to be the noob, but... one question comes to mind.
    Would it be possible to create a CFW using python for 4.5, or is it too limited?
     
  5. placebooooo

    placebooooo GBAtemp Advanced Fan

    Member
    716
    96
    Aug 9, 2013
    United States
    Philadelphia
    I dont get it, if homebrew is up and running, then why havent things been released yet, how come no hc or anything?
     
  6. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    18,076
    8,581
    Oct 27, 2002
    France
    Engine room, learning
    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 ;)
     
  7. RowanDDR

    RowanDDR SNES Lover

    Member
    217
    80
    Apr 13, 2006
    London
    Messing with launcher.dat ... hehe. Boom! Goodnight everybody.
     
  8. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    18,076
    8,581
    Oct 27, 2002
    France
    Engine room, learning
    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.
     
    Eye-Ree likes this.
  9. Abcdfv

    Abcdfv What comes around goes around.

    Member
    1,444
    588
    Dec 24, 2013
    United States
    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.
     
    SLiV3R and Huntereb like this.
  10. pistone

    pistone GBAtemp Advanced Fan

    Member
    506
    56
    Feb 18, 2010
    Albania
    in your heart...coz secretly you love me !!!!
    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 ?
     
  11. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    18,076
    8,581
    Oct 27, 2002
    France
    Engine room, learning
    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.
     
  12. Abcdfv

    Abcdfv What comes around goes around.

    Member
    1,444
    588
    Dec 24, 2013
    United States
    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)
     
    Margen67, 2Hack, frown and 3 others like this.
  13. pistone

    pistone GBAtemp Advanced Fan

    Member
    506
    56
    Feb 18, 2010
    Albania
    in your heart...coz secretly you love me !!!!
    i dint understand it quite well :wacko:
    so you use the c/c++ to write the homebrew and then python to build it?
     
  14. Abcdfv

    Abcdfv What comes around goes around.

    Member
    1,444
    588
    Dec 24, 2013
    United States
    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.
     
    pistone likes this.
  15. TheCruel

    TheCruel Developer

    Banned
    1,351
    2,883
    Dec 6, 2013
    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?
     
    SLiV3R, mr. fancypants and pistone like this.
  16. Abcdfv

    Abcdfv What comes around goes around.

    Member
    1,444
    588
    Dec 24, 2013
    United States
    Yes.
     
  17. pistone

    pistone GBAtemp Advanced Fan

    Member
    506
    56
    Feb 18, 2010
    Albania
    in your heart...coz secretly you love me !!!!

    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
     
  18. windwakr

    windwakr GBAtemp Fan

    Member
    483
    112
    Sep 13, 2009
    United States
  19. pistone

    pistone GBAtemp Advanced Fan

    Member
    506
    56
    Feb 18, 2010
    Albania
    in your heart...coz secretly you love me !!!!
    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 ?)
     
  20. Abcdfv

    Abcdfv What comes around goes around.

    Member
    1,444
    588
    Dec 24, 2013
    United States
    Yes, basically reverse engineering libs right now. No one has barely and knowledge of the ins and outs.
     
  21. TheCruel

    TheCruel Developer

    Banned
    1,351
    2,883
    Dec 6, 2013
    United States

    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. ;)