Skip to content

Commit

Permalink
toolchains: Replace devkitARM by BlocksDS
Browse files Browse the repository at this point in the history
devkitARM seems to be migrating to calico and leaving libnds as a
backwardws-compatibility helper. BlocksDS still treats it as a first-class
library.
  • Loading branch information
AntonioND committed Nov 15, 2024
1 parent 4c4628e commit 79191ca
Showing 1 changed file with 25 additions and 38 deletions.
63 changes: 25 additions & 38 deletions manuscript/toolchains.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ the Nintendo DS, GBA, and GP32; all of which are run by the ARM processor.
However, we will be using something to make our job much easier in addition to
just devkitARM.

### All About BlocksDS

BlocksDS is an SDK created as a fork of most NDS devkitARM libraries as they
were at the beginning of 2023. It only consists of libraries used to build NDS
programs (libnds, DSWiFi, Maxmod, etc) and tools to convert graphics and audio
into formats understood by the NDS. The toolchain (compiler, C and C++ standard
libraries) are provided by Wonderful Toolchain: <https://wonderful.asie.pl/>

### The Wonderful World of libnds

libnds, the library for Nintendo DS, started out its life as NDSLIB. NDSLIB was
Expand All @@ -30,48 +38,27 @@ the DS. This is useful, as you can simply reference `BG_BMP_RAM` instead of
other useful constructs that help to simplify the programmers job and abstract
certain portions of the hardware from the programmer.

Today, libnds is an incredibly useful library that over 96% of the Nintendo DS
homebrew community uses.

### Installing devkitARM
Later, even more high level utilities were added to simplify the interaction
with the Nintendo DS hardware. For example, `bgInit()` can now be used to setup
backgrounds instead of accessing low level registers.

Installing devkitARM is quite simple. Directions are already documented on
their website. Visit <http://www.devkitpro.org/setup.shtml> for directions.
Although more geared towards Windows, the installation is fairly straight
forward. Automated installers are available for Windows, Macintosh, and Linux.

### Installing libnds from source
Today, libnds is an incredibly useful library that most of the Nintendo DS
homebrew community uses.

libnds's source install is less documented than devkitPro's source install, but
is also quite simple in comparison. libnds is automatically installed by the
automated installers of devkitARM. However, if you want to view the libnds
source code, you'll have to install it from source.
### Installing BlocksDS

#### Procedure 4.1. To install libnds from source
Installing BlocksDS is quite simple. Directions are already documented on
their website. Visit <https://blocksds.github.io/docs/setup/options/> for
directions. Although more geared towards Linux, the installation is fairly
straight forward. It's possible to install it natively on Windows and Linux, but
it can be run in other operating systems by using their Docker images.

1. Simply download the latest source from
[SourceForge.net](http://sourceforge.net/project/showfiles.php%3Fgroup_id%3D114505%26package_id%3D151608).
1. Extract it to `$DEVKITPRO/libnds`.
```sh
[email protected]:~$ mkdir $DEVKITPRO/libnds
[email protected]:~$ mv libnds-src-*.tar $DEVKITPRO/libnds/
[email protected]:~$ cd $DEVKITPRO/libnds
[email protected]:~$ tar -xvjf libnds-src-*.tar.bz2 $DEVKITPRO/libnds
```
1. Change your current directory to `$DEVKITPRO/libnds` and type `make`.
```sh
[email protected]:~$ cd $DEVKITPRO/libnds
[email protected]:~$ make
```
1. If devkitARM is installed properly, libnds will compile in a matter of
seconds and you'll be on your way to developing software for the Nintendo
DS.
It is also possible to find instructions on how to build and install the
libraries in the official setup instructions.

### The Next Step

Now that you have devkitARM and libnds installed on your computer, you have
everything you need to start coding, excepting perhaps a bit of knowledge on
how to code specifically for the unique hardware of the Nintendo DS. In the
next chapter, we'll cover the basics of displaying a bitmap on the screen.

![](./images/devkitlogo.png)
Now that you have installed this on your computer, you have everything you need
to start coding, excepting perhaps a bit of knowledge on how to code
specifically for the unique hardware of the Nintendo DS. In the next chapter,
we'll cover the basics of displaying a bitmap on the screen.

0 comments on commit 79191ca

Please sign in to comment.