Not a programmer, want to contribute to the community anyway

Discussion in '3DS - Homebrew Development and Emulators' started by Kapikyo, Apr 13, 2016.

  1. Kapikyo
    OP

    Kapikyo Newbie

    Newcomer
    6
    1
    Apr 8, 2016
    United States
    I'm not a programmer, but I'm always up for a challenging art form. Explain like I'm five how homebrew works so I can understand a lick of what you guys are saying. Once I'm caught up I think I could help improve this community. Homebrew is fascinating to me and I think it's a great way for people to independently train for game development. Fan communities like this are always so close-knit and I want to be a part of that.

    tl;dr tired of being the ideas guy, you guys are cool, help me join in on your shtick
     
    qi_synergist likes this.
  2. Justinde75

    Justinde75 VGM Addict

    Member
    1,678
    2,104
    Feb 14, 2016
    Germany
    Iwatodai Dorm
    So you basicly want to know what certain things mean and how some things work right?
     
  3. TuxSH

    TuxSH GBAtemp Advanced Fan

    Member
    612
    994
    Oct 19, 2015
    France
    astronautlevel likes this.
  4. chaosrunner

    chaosrunner Substitute Soul Reaper

    Banned
    711
    267
    Sep 27, 2015
    Canada
    Hueco Mundo
    um dont be a troll thats a huge help
     
    dronesplitter likes this.
  5. AnalogMan

    AnalogMan ultraSuMoFramework Dev

    Member
    1,543
    1,047
    Apr 20, 2007
    United States
    I may want to take a stab at this. Warning, please wait for verification or corrections before implementing anything I'm about to post. I feel I can learn from this as well.

    3DS Homebrew: Developed using the devkitARM toolkit, is software that is not officially signed with a Nintendo signature and can run on a 3DS via exploits that can load either the Homebrew Launcher (developed by smealum) or run via the Home Menu on custom firmware enabled 3DS's with disabled signature checking. Some homebrew requires additional libraries beyond devkitARM such as libctru. Homebrew is compiled as an ELF file and additionally can also be further converted to either a 3DSX (run from Homebrew Launcher) or CIA (installed and run from Home Menu) file.

    Exploits: The common ones are used to load a BOOT.3DSX from your memory card which either loads the Homebrew Launcher for selecting further 3DSX homebrew or can also lead to the launching of a custom firmware which disabled signature checks so that homebrew can be launched straight from the Home Menu. These exploits include MenuHax (the exploiting of 3DS themes), BrowserHax (exploiting web browser via specially crafted websites), and cartridge based hacks involving modified saves or loading manipulated data (NinjHax, oot3Dhax, SmashBrosHax).

    Custom Firmware: These are specially crafted pieces of homebrew that load patched firmware files into memory allowing for extra features or disabling of security features, allowing us to install our own digital content straight to the Home Menu like legitimate eShop titles so that we have convenient access and elevated permissions beyond what 3DSX homebrew may have.

    3DS Homebrew extended: Most 3DS homebrew runs on the ARM11 processor in the 3DS, meaning most homebrew can be run right from the latest firmware (10.7 at the time of this post) as it only has access to ARM11. Some hombrew needs access to ARM9, the other processor in the 3DS in order to access some more basic and low level functions. These homebrews are either loaded via an earlier firmware (9.2) or from a custom firmware which has the 9.x firmware loaded into memory. Examples of such homebrew would be emuNAND9 (the tool that creates emuNANDs for use with Custom Firmware) and Decrypt9 (tool that can extract XORpads for decrypting and encrypting data from the 3DS as well as dump and restore backups of your NAND).

    Exploits extended: One of the most recent exploits to be discovered is svchax which allows downgrading of all firmware versions so that all consoles are now currently able to run Homebrew or downgrade for CFW support. Finally, we also have ARM9LoaderHax. This is the most versatile hack developed, allowing us to hijack the ARM9 boot process and redirect it to a payload we have on the SD card. This allows for immediate patching giving us CFW for system NAND without needing emuNAND anymore as well as being able to launch the ARM9-only homebrew straight at boot without a need for 9.x firmware.

    If you would like to start on learning Homebrew for 3DS, try following the setup guide for your OS here: https://www.3dbrew.org/wiki/Setting_up_Development_Environment

    It's important to then update everything as most is not updated on a fresh install. This includes some 3DS samples or you can test your setup by picking a popular homebrew and downloading the source code from the GitHub page and trying to compile it without any errors.
     
    Last edited by AnalogMan, Apr 14, 2016
    Blundermann likes this.
  6. duffmmann

    duffmmann GBAtemp Psycho!

    Member
    3,882
    1,617
    Mar 11, 2009
    United States
    You should look into making custom themes and badges, its easy, fun, and you'd be contributing to the scene. Or, perhaps look into making A9LH animated boot screens, this seems a little more complex, but they really make our hacked out 3DS' look all the more awesome.
     
    androgynus likes this.
  7. androgynus

    androgynus Advanced Member

    Newcomer
    86
    6
    Sep 13, 2014
    Canada
    If you want an idea of what you can do with Custom theme, there is 3dsthem.es which is really great. You can search for A.G.Genius to see what i did. Thats my contribution to the scene.
     
  8. Kapikyo
    OP

    Kapikyo Newbie

    Newcomer
    6
    1
    Apr 8, 2016
    United States
    Yeah, I have an account there under the same name as my account here. I have three themes and a single group of badges uploaded so far.
    > KAPIKYO
    I wanna contribute mainly to the game development scene, though. I wanna bring games to the 3DS that aren't there yet.

    I remember reading up on DS Lite processors, Arm(x) and Arm(y) controlled different screens, right? Is that the case here as well? If so, what if downgrading for Arm9 support isn't an option? Am I boned or what?
    Also, what language should I start brushing up on if I want to develope for the 3DS? Or is there some sort of GameMaker drag-and-drop program available. I'm assuming Unity doesn't work with 3DS Homebrew, and that its only good for making licensed games.

    And I apologize if at any point i sound daft, the way I learn is basically just asking questions and confirming or deny assumptions until I understand what I'm looking at well enough to add onto it through reading (or something).
     
  9. MichiS97

    MichiS97 "Leftist snowflake milennial"

    Member
    GBAtemp Patron
    MichiS97 is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    1,378
    778
    Jun 14, 2011
    Germany
    Munich
    You should teach yourself C or C++ if you want to code games for the 3DS ;)
     
  10. AnalogMan

    AnalogMan ultraSuMoFramework Dev

    Member
    1,543
    1,047
    Apr 20, 2007
    United States
    On the DS Lite, ARM9 was the main processor for all the DS stuff, while the ARM7 was used for sound and GBA compatibility.

    On the 3DS, ARM11 is for User level services and ARM9 is for Kernel level services. Homebrew made for ARM11 is more common unless you wish to modify system files or how they are loaded.

    Most homebrew is made in C but there's a few interpreters that allow RPGmaker like game design. You would be correct about Unity.
     
  11. Kapikyo
    OP

    Kapikyo Newbie

    Newcomer
    6
    1
    Apr 8, 2016
    United States
    Could you tell me more about the interpreters or point me in a direction to learn more about them? Seems like a good way to ease into programming.
    Also I tried googling C programming for 3DS, I'm not sure how C works to begin with let alone how one would use it for 3DS homebrew, got any tips for that as well?
     
  12. AnalogMan

    AnalogMan ultraSuMoFramework Dev

    Member
    1,543
    1,047
    Apr 20, 2007
    United States
    There this which is literally an RPGMaker player, you make the game on PC and can then run it on 3DS. RPGMaker uses Ruby as it's coding language although you never need to touch any of the Ruby parts if you don't want to.

    Coding can also be done on a 3DS emulator to an extent. As for the actual coding with C, I do not know how to code in C, but if you setup the development environment, there's a few sample projects you can look at, edit, compile and run to see how things work. I know using Citrus allows you to code in C++