Tutorial  Updated

Useful resources to help you out with starting to make NDS homebrew

Hi,
a lot of people have asked themselves, how to get started with NDS homebrew development, so I compiled a list of a few links I consider quite important to look into.
First, of course you have to know either C/C++, as they're the only languages you can currently write NDS Homebrew in (appart from Assembly, but that's really hard).
For starters, you should watch this video by PolyMars:

I recommend watching it, to get a good overview, over what it's like to make NDS homebrew. Also, please note that you can draw sprites with libGL2D as well now, as devKitPro got an update since then that fixed it. Since the fix, libGL2D now also comes with libnds, so you're technically already good to go if you want to use it.
Now onto the other links:

Here's a post explaing the basics of NDS hb development, including NFlib (the graphics library he uses for sprites): https://gbatemp.net/threads/ds-programming-for-newbies.322106/

NFlib, the library PolyMars used to make the final version with sprites can be found here: https://github.com/knightfox75/nds_nflib

SimpleNFL is a way to simplify the use of NFlib even more, and only requires a single header file. It's completely optional of course, and to be honest, NFlib is quite easy to use already, but it makes things such as checking if two rectangles overlap a bit easier. It can be found here: https://github.com/PipeWarp/SimpleNFL

If you want, you can also take a look at libGL2D, the lib PolyMars used for the primitive prototype. It's a bit more difficult to use and has some disadvantages, but it also has a lot of advantages that might end up making it worth it. Link is: http://rel.phatcode.net/junk.php?id=117
Btw, if you're wondering why I included the link even though it already comes with libnds, the download includes a user guide, which the libnds version doesn't have

Here's a guide I wrote on converting sprites using grit: https://gbatemp.net/threads/preparing-images-for-grit.567187/

Also, if you want to dig into how the DS works, and maybe even use pure libnds without libGL2D/NFlib, you may want to take a look at this: https://problemkaputt.de/gbatek.htm.
It explains every single bit in detail. It's pretty difficult though, if you haven't got any experience with such low level stuff and if you don't know the basics of how the NDS works already.

If you want to do stuff using pure libnds, and you want to have an easier time managing the VRAM, I can really recommend these tools: https://mtheall.com/banks.html and https://mtheall.com/vram.html.

Last but not least, here's the libnds documentation. It also includes libGL2D: https://libnds.devkitpro.org/

That should cover everything you need for now. If you have anything to add, please tell me.
 
Last edited by KonPet,

KimKong

Game Developer / Graphic Artist / Musician
Member
Joined
Nov 2, 2008
Messages
296
Trophies
1
Website
skrap-klan.itch.io
XP
1,131
Country
Norway
Thanks for keeping DS Homebrew alive!
I't been a while since I seen any new stuff.. Maybe somebody will make something cool with these tools? I would love to get into it myself.. But a bit busy with GameBoy Homebrew these days..!
 

ZippyCat

Member
Newcomer
Joined
Mar 15, 2022
Messages
7
Trophies
0
Location
Kramatorsk
XP
50
Country
Ukraine
thats some real nice starter guide! currently learning how to do games for nintendo ds.
main reason why i want to do nds homebrew is cause im still interested up to today in dual screen concept and its the only console i have.
either way thats a very nice guide. followed it and already made my first simple game using libnds and nflib.
 
  • Like
Reactions: Coto and KonPet

Coto

-
Member
Joined
Jun 4, 2010
Messages
2,979
Trophies
2
XP
2,565
Country
Chile
thats some real nice starter guide! currently learning how to do games for nintendo ds.
main reason why i want to do nds homebrew is cause im still interested up to today in dual screen concept and its the only console i have.
either way thats a very nice guide. followed it and already made my first simple game using libnds and nflib.
ATM you may want to start with 2D stuff since it's pretty common in NDS homebrew.

When you get more experience (port at least 1 2D game), you may want to delve into 3D.

DS 3D hardware resembles the older architecture where the 2D and the 3D processors were separated, where you'd deal with specific software side 3D calls to get the final 3D result (3D accelerator), as opposed to today's standard triangle-oriented, all in-one 2D+3D graphics processor pipeline (3DS onwards).
 

ZippyCat

Member
Newcomer
Joined
Mar 15, 2022
Messages
7
Trophies
0
Location
Kramatorsk
XP
50
Country
Ukraine
ATM you may want to start with 2D stuff since it's pretty common in NDS homebrew.

When you get more experience (port at least 1 2D game), you may want to delve into 3D.

DS 3D hardware resembles the older architecture where the 2D and the 3D processors were separated, where you'd deal with specific software side 3D calls to get the final 3D result (3D accelerator), as opposed to today's standard triangle-oriented, all in-one 2D+3D graphics processor pipeline (3DS onwards).
yeah i do know its better to start out with 2d stuff, which im doing already. but about seperated processors... i didnt know about it, thanks!
and talking about porting, im trying to port a game already on the nintendo ds!
 

Coto

-
Member
Joined
Jun 4, 2010
Messages
2,979
Trophies
2
XP
2,565
Country
Chile
yeah i do know its better to start out with 2d stuff, which im doing already. but about seperated processors... i didnt know about it, thanks!
and talking about porting, im trying to port a game already on the nintendo ds!
I've got code using 2D in this repo of mine, and 3D as well. So I hope you can achieve what you want.
 
  • Like
Reactions: ZippyCat

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    Psionic Roshambo @ Psionic Roshambo: I did use a bot for Diablo III though but no ban there lol