Homebrew Anyone know how to make a basic .firm?

FenexFox

Well-Known Member
OP
Member
Joined
Jul 17, 2017
Messages
116
Trophies
0
Location
Scotland
XP
181
Country
United Kingdom
Hello, I basically just want to know how to make a basic .firm file that can print text
i never really made anything homebrew before.

Sorry if this sound stupid
i just need to make a .firm file that when booted/launched it displays text
 
Last edited by FenexFox,

FenexFox

Well-Known Member
OP
Member
Joined
Jul 17, 2017
Messages
116
Trophies
0
Location
Scotland
XP
181
Country
United Kingdom
I thought all it would be is sticking some C++ cout and saving as .firm but no it's not as simple as i thought and i realised this is prob a really stupid post
 
  • Like
Reactions: jamieyello

jamieyello

Professional Dumbass
Member
Joined
Mar 11, 2013
Messages
385
Trophies
0
XP
556
Country
United States
I thought all it would be is sticking some C++ cout and saving as .firm but no it's not as simple as i thought and i realised this is prob a really stupid post

C++ is compiled into machine code, raw binary quickly readable instructions. A PC uses x86, a 3DS uses ARM9/ARM11. By changing the extension, you would basically be handling the 3DS a text file.

Because Visual Studio (and Windows for that matter) doesn't know what a 3DS is, you have to use a custom compiler. Read this
http://wiki.gbatemp.net/wiki/3DS_Homebrew_Development

What are you trying to display text for?
 
Last edited by jamieyello,
Joined
Jan 1, 2018
Messages
7,292
Trophies
2
XP
5,947
Country
United States
I thought all it would be is sticking some C++ cout and saving as .firm but no it's not as simple as i thought and i realised this is prob a really stupid post

Your post is not stupid. It's just way more advance a typical 3DS user would know about. What are you trying to accomplishing making a .firm app?

How good is your programming skills?

Look for the (source code) archives:
GodMode9 - https://github.com/d0k3/GodMode9/releases
Luma3DS - https://github.com/AuroraWright/Luma3DS/releases
boot9strap - https://github.com/SciresM/boot9strap/releases

You're going to have to study and reverse engineering how the devs made their .firm programs.

Depending on your computer Operating System (Windows, Linux, or Mac iOS)
You'll need devkitPro (specifically devkitARM) for your environment
-and-
either Cygwin , minGW , and/or Window's Command Prompt (cmd) for compiling source with the "make" command. Linux and Mac have their own command shell.

Refer to 3ds examples folder to learn basic homebrew coding.
https://www.3dbrew.org/ has information for the ins and outs of the 3DS more technical aspects (ie, hardware and software).
 

FenexFox

Well-Known Member
OP
Member
Joined
Jul 17, 2017
Messages
116
Trophies
0
Location
Scotland
XP
181
Country
United Kingdom
Your post is not stupid. It's just way more advance a typical 3DS user would know about. What are you trying to accomplishing making a .firm app?

How good is your programming skills?

Look for the (source code) archives:
GodMode9 - https://github.com/d0k3/GodMode9/releases
Luma3DS - https://github.com/AuroraWright/Luma3DS/releases
boot9strap - https://github.com/SciresM/boot9strap/releases

You're going to have to study and reverse engineering how the devs made their .firm programs.

Depending on your computer Operating System (Windows, Linux, or Mac iOS)
You'll need devkitPro (specifically devkitARM) for your environment
-and-
either Cygwin , minGW , and/or Window's Command Prompt (cmd) for compiling source with the "make" command. Linux and Mac have their own command shell.

Refer to 3ds examples folder to learn basic homebrew coding.
https://www.3dbrew.org/ has information for the ins and outs of the 3DS more technical aspects (ie, hardware and software).
My skill are very novice but i can work my way around a few things i know parts of different languages but i am not good with a very specific one
i have most experience with C# but i know some things in C++(mainly basics)

i'm just trying to make a application that when booted will print a message then on input from the user will shutdown the console
 

zoogie

playing around in the end of life
Developer
Joined
Nov 30, 2014
Messages
8,560
Trophies
2
XP
15,000
Country
Micronesia, Federated States of
I thought all it would be is sticking some C++ cout and saving as .firm but no it's not as simple as i thought and i realised this is prob a really stupid post
This is all you need to get started
https://3dbrew.org/wiki/Setting_up_Development_Environment

https://github.com/devkitPro/3ds-examples/blob/master/templates/application/source/main.c
That is basically the text printout code you requested. Very simple.

Don't make .firm binaries yet, that's for advanced tools mainly, not typical homebrew.
 
Last edited by zoogie,
  • Like
Reactions: wicksand420

FenexFox

Well-Known Member
OP
Member
Joined
Jul 17, 2017
Messages
116
Trophies
0
Location
Scotland
XP
181
Country
United Kingdom
Fake brick?

...Or would that be a real brick? I am out of the loop.
i'm using fastboot witch you can choose the firmware to boot so i was wanting it to boot to this firm with a message saying something like "NOPE!!"
but then able to boot into the real firmware (Luma CFW) by doing a button combo

i know how to setup the boot order and stuff but i just don't have the firm to display the message
 
Last edited by FenexFox,

FenexFox

Well-Known Member
OP
Member
Joined
Jul 17, 2017
Messages
116
Trophies
0
Location
Scotland
XP
181
Country
United Kingdom
yea i can do the code but i don't know how to compile it so its compatible as a .firm file
like i think i needa makefile or something
 
Joined
Jan 1, 2018
Messages
7,292
Trophies
2
XP
5,947
Country
United States
yea i can do the code but i don't know how to compile it so its compatible as a .firm file
like i think i needa makefile or something

Every homebrew app whether it is .elf -> .cia, .3dsx & .sdmh, or .firm has a Makefile tailored coded specifically to how devkitPro is supposed to compile that source code into its end user form.

You can't drag and drop any Makefile from another program into yours like how you wouldn't graft a random person's liver into an alcoholic patient needing a new liver transplant due to cirrhosis. (I mean you could but that patient will quickly die from organ rejection without serious immuno-suppressant drugs).

Your Makefile has to be coded to tell devkitPro how to build and compile your source code:
  • Which directories its supposed to look in
  • What files it should look for
  • What dependencies does those files require to build it
  • How it is suppose to package all those files into .elf, .cia , .3dsx + .sdmh, etc.
 

FenexFox

Well-Known Member
OP
Member
Joined
Jul 17, 2017
Messages
116
Trophies
0
Location
Scotland
XP
181
Country
United Kingdom
Every homebrew app whether it is .elf -> .cia, .3dsx & .sdmh, or .firm has a Makefile tailored coded specifically to how devkitPro is supposed to compile that source code into its end user form.

You can't drag and drop any Makefile from another program into yours like how you wouldn't graft a random person's liver into an alcoholic patient needing a new liver transplant due to cirrhosis. (I mean you could but that patient will quickly die from organ rejection without serious immuno-suppressant drugs).

Your Makefile has to be coded to tell devkitPro how to build and compile your source code:
  • Which directories its supposed to look in
  • What files it should look for
  • What dependencies does those files require to build it
  • How it is suppose to package all those files into .elf, .cia , .3dsx + .sdmh, etc.
Okay,
there is clearly stuff i don't know and gonna take me a while to understand so i think im just gonna scrap the idea i had planned cause its just not working
 
Joined
Jan 1, 2018
Messages
7,292
Trophies
2
XP
5,947
Country
United States
Okay,
there is clearly stuff i don't know and gonna take me a while to understand so i think im just gonna scrap the idea i had planned cause its just not working
It's okay if you don't get it the first time. Every programmer who has ever done high level coding will run into a stumbling block and feel stupid about how any of this works, especially when you look at someone else's code and you're not familiar at first with how to program for the 3DS or any system. This doesn't make you a amateur or derpy coder who doesn't know that 1+1 = 2, A does not equal B, and what do for cases where if/else/switch/strut are required.

Take a break. Retreat and don't think about it too much. When you're feeling inquisitive and ready again, take a look at the main.c file which almost every program centralizes calling for all the other .c .h .cpp , etc. files. Study what those #include <...> point to and what those #include <...> lead to other #include <...>.

Every file is connected to one another like a tree having nodes with roots spreading out in all directions.

Never get caught up looking at every file all at once. Always look for the most basic building block, kinda like examining how one LEGO brick attaches to another. Piece-by-piece analyses and NOT the entire assembly. Start with what you know and understand. Hit a textbook to refer to how a specific syntax is typically utilized. Don't get too caught up with how the programmers named their variables with their big, fancy-smancy jargons.

Always remember that you're programmer because at heart, you're a masochist with a love-hate relationship with computers and 3DS bending them to do what you want to your will.
 

FenexFox

Well-Known Member
OP
Member
Joined
Jul 17, 2017
Messages
116
Trophies
0
Location
Scotland
XP
181
Country
United Kingdom
It's okay if you don't get it the first time. Every programmer who has ever done high level coding will run into a stumbling block and feel stupid about how any of this works, especially when you look at someone else's code and you're not familiar at first with how to program for the 3DS or any system. This doesn't make you a amateur or derpy coder who doesn't know that 1+1 = 2, A does not equal B, and what do for cases where if/else/switch/strut are required.

Take a break. Retreat and don't think about it too much. When you're feeling inquisitive and ready again, take a look at the main.c file which almost every program centralizes calling for all the other .c .h .cpp , etc. files. Study what those #include <...> point to and what those #include <...> lead to other #include <...>.

Every file is connected to one another like a tree having nodes with roots spreading out in all directions.

Never get caught up looking at every file all at once. Always look for the most basic building block, kinda like examining how one LEGO brick attaches to another. Piece-by-piece analyses and NOT the entire assembly. Start with what you know and understand. Hit a textbook to refer to how a specific syntax is typically utilized. Don't get too caught up with how the programmers named their variables with their big, fancy-smancy jargons.

Always remember that you're programmer because at heart, you're a masochist with a love-hate relationship with computers and 3DS bending them to do what you want to your will.
I think ill just tinker around in the homebrew launcher and try learn my way up from the basic since homebrew apps have alot more support for them rather than just jumping into something like firm
 
  • Like
Reactions: TurdPooCharger

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    NinStar @ NinStar: we are fucked