More actions
(Created page with "{{Infobox DS Homebrews |title=BlocksDS |image=Ndspc2.png |description=Main BlocksDS SDK repository. |author=AntonioND |lastupdated=2023/08/01 |type=Development Tools |version=0.8.1 |license=Mixed |download=https://dlhb.gamebrew.org/dshomebrew/blocksds.7z |website=https://github.com/blocksds/sdk |source=https://github.com/blocksds/sdk |donation= }} {{#seo: |title= (Development Tools) - GameBrew |title_mode=append |image=Ndspc2.png |image_alt=BlocksDS }} BlocksDS SDK is an...") |
No edit summary |
||
Line 25: | Line 25: | ||
# Strive to maintain compatibility with existing C projects. Ideally, replacing the makefile with one from BlocksDS should be sufficient to build any project that utilizes libnds. | # Strive to maintain compatibility with existing C projects. Ideally, replacing the makefile with one from BlocksDS should be sufficient to build any project that utilizes libnds. | ||
This project is currently in beta stage, and most features are working. Please, check the [https://github.com/blocksds/sdk/blob/master/docs/libc.rst libc port documentation] for more information about the supported libc functions. | |||
If you want to port a project built with devkitPro, follow [https://github.com/blocksds/sdk/blob/master/docs/porting-guide.rst this guide] for instructions. | |||
For detailed information about the design of BlocksDS, check [https://github.com/blocksds/sdk/blob/master/docs/design-guide.rst this other document]. | |||
For licensing information, check [https://github.com/blocksds/sdk/blob/master/docs/licenses.rst this]. | |||
==Setup== | |||
=== Setup on Windows === | |||
'''Important note''': Native Windows support is experimental. | |||
The following instructions describe how to install BlocksDS on Windows natively. If you want to use it in WSL, follow the instructions for Linux instead. | |||
<ol> | |||
<li><p>You will need to install the ARM toolchain of Wonderful Toolchains. Follow the instructions in this link: https://wonderful.asie.pl/docs/getting-started/#windows-via-msys2</p></li> | |||
<li><p>Now, install the ARM toolchain of Wonderful Toolchains, as well as the BlocksDS packages.</p> | |||
<pre>wf-pacman -Syu | |||
wf-pacman -S toolchain-gcc-arm-none-eabi</pre> | |||
<p>For the latest stable version of BlocksDS, run:</p> | |||
<pre>wf-pacman -S thirdparty-blocksds-toolchain</pre> | |||
<p>For the latest unstable version, run:</p> | |||
<pre>wf-pacman -S thirdparty-blocksds-git-toolchain</pre> | |||
</li> | |||
<li><p>(Optional step) You can also install some third party libraries like [https://github.com/knightfox75/nds_nflib NightFox’s Lib] and [https://github.com/AntonioND/nitro-engine Nitro Engine] using <code>wf-pacman</code>:</p> | |||
<pre>wf-pacman -S thirdparty-blocksds-nflib \ | |||
thirdparty-blocksds-nitroengine</pre> | |||
</li> | |||
<li><p>Whenever you need to update the SDK, run:</p> | |||
<pre>wf-pacman -Syu</pre> | |||
=== Setup on Linux === | |||
If you are using Linux, MinGW, WSL, or any similar environment, you can install the SDK using <code>wf-pacman</code>, Docker, or the native installation instructions. | |||
If you are on Windows, you need to install WSL and follow the Linux instructions, or to use the Docker instructions. | |||
The Docker images of BlocksDS can be used in any OS. They require more disk space than the native installation, but they may be needed if a native installation isn't possible. | |||
=== Option 1: <code>wf-pacman</code> === | |||
This is the easiest option, but you may not get the latest version of the SDK right away. | |||
<ol> | |||
<li><p>You will also need to install the ARM toolchain of Wonderful Toolchains. Follow the instructions in this link: https://wonderful.asie.pl/docs/getting-started/#linux</p></li> | |||
<li><p>Now, install the ARM toolchain of Wonderful Toolchains, as well as the BlocksDS packages.</p> | |||
<pre>export PATH=/opt/wonderful/bin:$PATH | |||
wf-pacman -Syu | |||
wf-pacman -S toolchain-gcc-arm-none-eabi</pre> | |||
<p>For the latest stable version of BlocksDS, run:</p> | |||
<pre>wf-pacman -S thirdparty-blocksds-toolchain</pre> | |||
<p>For the latest unstable version, run:</p> | |||
<pre>wf-pacman -S thirdparty-blocksds-git-toolchain</pre> | |||
</li> | |||
<li><p>(Optional step) You can also install some third party libraries like [https://github.com/knightfox75/nds_nflib NightFox’s Lib] and [https://github.com/AntonioND/nitro-engine Nitro Engine] using <code>wf-pacman</code>:</p> | |||
<pre>wf-pacman -S thirdparty-blocksds-nflib \ | |||
thirdparty-blocksds-nitroengine</pre> | |||
<li><p>Add the cross compiler to your <code>PATH</code>:</p> | |||
<pre>export PATH=/opt/wonderful/toolchain/gcc-arm-none-eabi/bin/:$PATH</pre> | |||
<p>You can avoid exporting <code>PATH</code> every time by adding it to your <code>.bashrc</code>, <code>.zshenv</code> or similar.</p></li> | |||
<li><p><code>wf-pacman</code> installs BlocksDS in <code>/opt/wonderful/thirdparty/blocksds/</code>. This isn't the standard location (<code>wf-pacman</code> can only write files to <code>/opt/wonderful/</code>) so you need to do one of the two following options:</p> | |||
<p>5.1 Create a symlink:</p> | |||
<pre>ln -s /opt/wonderful/thirdparty/blocksds /opt/blocksds</pre> | |||
<p>5.2 Set your environment variables correctly:</p> | |||
<pre>export BLOCKSDS=/opt/wonderful/thirdparty/blocksds/core | |||
export BLOCKSDSEXT=/opt/wonderful/thirdparty/blocksds/external</pre> | |||
</li> | |||
<li><p>Whenever you need to update the SDK, run:</p> | |||
<pre>wf-pacman -Syu</pre> | |||
=== Option 2: Docker === | |||
Follow the instructions in [https://github.com/blocksds/sdk/blob/master/docker/readme.rst this file] to use the Docker images. | Follow the instructions in [https://github.com/blocksds/sdk/blob/master/docker/readme.rst this file] to use the Docker images. | ||
Line 54: | Line 147: | ||
<ul> | <ul> | ||
<li><p>[ | <li><p>[[NFlib|NightFox’s Lib]]</p> | ||
<p>Library designed to make development of 2D games easy, with support for sprites, backgrounds (even "infinite" maps), and it also has limited 2D graphics support using the 3D engine.</p></li> | <p>Library designed to make development of 2D games easy, with support for sprites, backgrounds (even "infinite" maps), and it also has limited 2D graphics support using the 3D engine.</p></li> | ||
<li><p>[[Nitro Engine]]</p> | <li><p>[[Nitro Engine]]</p> | ||
Line 65: | Line 158: | ||
By default, the paths are assumed to be <code>/opt/blocksds/core/</code> and <code>/opt/blocksds/external/</code>. The first one is used for core BlocksDS libraries and tools, and it is managed by BlocksDS. The second one is left for users to freely install third party libraries and tools. | By default, the paths are assumed to be <code>/opt/blocksds/core/</code> and <code>/opt/blocksds/external/</code>. The first one is used for core BlocksDS libraries and tools, and it is managed by BlocksDS. The second one is left for users to freely install third party libraries and tools. | ||
== Credits == | == Credits == |
Revision as of 03:14, 8 October 2023
BlocksDS | |
---|---|
General | |
Author | AntonioND |
Type | Development Tools |
Version | 0.8.1 |
License | Mixed |
Last Updated | 2023/08/01 |
Links | |
Download | |
Website | |
Source | |
BlocksDS SDK is an SDK for Nintendo DS! It's built on the hard work of many talented individuals. Here are its goals:
- Create a user-friendly NDS software development kit based on GCC, with minimal dependencies.
- Encourage developers to tinker and enhance the SDK by providing them with its complete source code. It also demonstrates how straightforward it is to build the entire codebase. The only exception is the tolchain, which can be tricky to build. To simplify things, we use Wonderful Toolchains instead of asking users to build it themselves.
- Strive to maintain compatibility with existing C projects. Ideally, replacing the makefile with one from BlocksDS should be sufficient to build any project that utilizes libnds.
This project is currently in beta stage, and most features are working. Please, check the libc port documentation for more information about the supported libc functions.
If you want to port a project built with devkitPro, follow this guide for instructions.
For detailed information about the design of BlocksDS, check this other document.
For licensing information, check this.
Setup
Setup on Windows
Important note: Native Windows support is experimental.
The following instructions describe how to install BlocksDS on Windows natively. If you want to use it in WSL, follow the instructions for Linux instead.
You will need to install the ARM toolchain of Wonderful Toolchains. Follow the instructions in this link: https://wonderful.asie.pl/docs/getting-started/#windows-via-msys2
Now, install the ARM toolchain of Wonderful Toolchains, as well as the BlocksDS packages.
wf-pacman -Syu wf-pacman -S toolchain-gcc-arm-none-eabi
For the latest stable version of BlocksDS, run:
wf-pacman -S thirdparty-blocksds-toolchain
For the latest unstable version, run:
wf-pacman -S thirdparty-blocksds-git-toolchain
(Optional step) You can also install some third party libraries like NightFox’s Lib and Nitro Engine using
wf-pacman
:wf-pacman -S thirdparty-blocksds-nflib \ thirdparty-blocksds-nitroengine
Whenever you need to update the SDK, run:
wf-pacman -Syu
Setup on Linux
If you are using Linux, MinGW, WSL, or any similar environment, you can install the SDK using
wf-pacman
, Docker, or the native installation instructions.If you are on Windows, you need to install WSL and follow the Linux instructions, or to use the Docker instructions.
The Docker images of BlocksDS can be used in any OS. They require more disk space than the native installation, but they may be needed if a native installation isn't possible.
Option 1:
wf-pacman
This is the easiest option, but you may not get the latest version of the SDK right away.
You will also need to install the ARM toolchain of Wonderful Toolchains. Follow the instructions in this link: https://wonderful.asie.pl/docs/getting-started/#linux
Now, install the ARM toolchain of Wonderful Toolchains, as well as the BlocksDS packages.
export PATH=/opt/wonderful/bin:$PATH wf-pacman -Syu wf-pacman -S toolchain-gcc-arm-none-eabi
For the latest stable version of BlocksDS, run:
wf-pacman -S thirdparty-blocksds-toolchain
For the latest unstable version, run:
wf-pacman -S thirdparty-blocksds-git-toolchain
(Optional step) You can also install some third party libraries like NightFox’s Lib and Nitro Engine using
wf-pacman
:wf-pacman -S thirdparty-blocksds-nflib \ thirdparty-blocksds-nitroengine
Add the cross compiler to your
PATH
:export PATH=/opt/wonderful/toolchain/gcc-arm-none-eabi/bin/:$PATH
You can avoid exporting
PATH
every time by adding it to your.bashrc
,.zshenv
or similar.wf-pacman
installs BlocksDS in/opt/wonderful/thirdparty/blocksds/
. This isn't the standard location (wf-pacman
can only write files to/opt/wonderful/
) so you need to do one of the two following options:5.1 Create a symlink:
ln -s /opt/wonderful/thirdparty/blocksds /opt/blocksds
5.2 Set your environment variables correctly:
export BLOCKSDS=/opt/wonderful/thirdparty/blocksds/core export BLOCKSDSEXT=/opt/wonderful/thirdparty/blocksds/external
Whenever you need to update the SDK, run:
wf-pacman -Syu
Option 2: Docker
Follow the instructions in this file to use the Docker images.
Option 3: Build the SDK yourself
This is the option you should use if you want to help develop BlocksDS, or if you want to always use the cutting edge version of BlocksDS.
Follow the instructions in this file to use the Docker images.
Test
To test that everything is working, you can try building one of the templates.
There is a template that lets the programmer write the code for both CPUs of the NDS (
templates/rom_combined
) and a template that uses the default ARM7 core that comes with Blocks DS and lets the programmer focus on the ARM9 core. There are also two templates to create static libraries.For example, go to the combined template folder and run:
cd templates/rom_combined make
This should have generated a NDS ROM that you can run on any emulator or flashcart.
To do a verbose build, run
make
like this (this also works for the Makefile of the SDK):VERBOSE=1 make
NOTE: The paths in the Makefile that refer to source code, includes, graphics, data, etc, must be inside the folder of the project. That means you can't use
..
in a path to go one level up from the Makefile. If you really need to use folders outside of the folder of the project, create a symlink to the destination, or build the other code as a static library and link it with the project.Additional libraries
This is a list of libraries that support BlocksDS and can be installed in
/opt/blocksds/external
:-
Library designed to make development of 2D games easy, with support for sprites, backgrounds (even "infinite" maps), and it also has limited 2D graphics support using the 3D engine.
-
Library to create 3D applications. It supports dual screen 3D, static and animated models, supports all texture types, and has basic 2D support using the 3D hardware. It's compatible with NightFox's Lib.
Keeping multiple versions of BlocksDS
You may keep multiple versions of this SDK in your PC. The location of the active SDK is stored in the environment variables
BLOCKSDS
andBLOCKSDSEXT
, so all you need to do is to change their values and point to the version of the SDK you want to use.By default, the paths are assumed to be
/opt/blocksds/core/
and/opt/blocksds/external/
. The first one is used for core BlocksDS libraries and tools, and it is managed by BlocksDS. The second one is left for users to freely install third party libraries and tools.Credits
This project wouldn't have been possible without:
- Many thanks to asie for his help and advice, and for Wonderful Toolchains
- devkitPro
- picolibc
- libnds
- dswifi
- maxmod (and mmutil)
- grit
- GCC
- make
- And many others!
External links
- Github - https://github.com/blocksds/sdk
-