BlocksDS - A New Homebrew SDK for the Nintendo DS -- Discussion Thread

NightScript

Well-Known Member
OP
Member
Joined
Feb 7, 2016
Messages
951
Trophies
1
Age
20
XP
2,243
Country
United States
As a clarification, I would like to first point out that this is meant to be a discussion thread regarding something I just think is cool. This is not a thread where a developer would show off what they made, because this is not my project. This is in the hands of AntonioND (with special help from asie).

With that out of the way, I now feel comfortable talking about it.


About a month ago now, a certain message was posted by them on our DS(i) Mode Hacking! Discord Server. It read something of the sort, with a bit of modification to remove outdated information:
Well, I'm tired of waiting, so it's time to make it official. This is BlocksDS v0.1, my SDK for NDS https://github.com/blocksds/sdk I've taken all of the libraries supported in devkitPro and integrated them as part of my SDK. I've removed a few things that weren't licensed under FOSS licenses (like NitroFS) and reimplemented them. The current licensing status of the SDK should be 100% clean (as far as I can tell!). There is still a lot to do, but I think it's stable enough now to announce it.

At this point, it is possible to build devkitPro projects relatively easy (there is a guide here! https://github.com/blocksds/sdk/blob/master/docs/porting-guide.rst). The main difference is that you need to replace the makefile.
The main idea behind this SDK is to have something that can be easily modified by the user. You have to build all the libs yourself, it only takes a few seconds! The only thing I don't make you build is the compiler. You don't like the makefiles? Create your own build system! The makefiles will help you know which command line arguments to use and such. :) Have you found a regression between SDK versions? Use git bisect to find the problem! All the components of the SDK are integrated as submodules, so you always know which version was used at all points of the SDK history.

Thanks to asie for all his advice! He has already made a couple of very early tests, and the final binaries are noticeably smaller than with devkitarm (mainly thanks to using picolibc instead of newlib)

That was v0.1, though. Since then, 4 different updates have been released, with key changes being:

- Intergrated DSi-Camera system
- EEPROM Dumping Fixes (ported from GodMode9i)
- Touch-Frame Delay removal
- Pressure Touch for Nintendo DSi
- Faster VRAM-friendly memcpy function (no more tonccpy)
- Filesize optimizations (.1KB touchscreen keyboard built in as opposed to the 8KB one)
- Rumble Pak detection improvements
- Multithreading

With all of that combined with smaller file sizes by default, this was a chance for the DS Scene to finally pick up some steam from a toolchain POV. Indeed, the DS-Homebrew team effectively already switched over, with myself, lifehackerhansol and Evie already using it.

I am very glad this scene was given a second chance, and I hope we can take better advantage of it.
 

AntonioND

Member
Newcomer
Joined
Feb 17, 2015
Messages
13
Trophies
0
XP
142
Country
It isn't useless. For starters, BlocksDS isn't a complete replacement of everything distributed by devkitPro for NDS development. Things like libfat and nitrofs aren't supported the same way as with devkitPro. There is a compatibility layer, which works for 99% of applications, but it's not perfect. For most homebrew applications, it will just work, but some of them will need to stick to devkitPro for the time being.

At the moment I'm focusing on documentation and code cleanup, and some people have been contributing some code and bugfixes that had been needed for a long time.
 

AntonioND

Member
Newcomer
Joined
Feb 17, 2015
Messages
13
Trophies
0
XP
142
Country
Well, I guess I'll also post this here: http://www.skylyrac.net/2023-08-18-blocksds-sdk.html

It's just an introductory article to BlocksDS, with the advantages and disadvantages over devkitARM along some explanations about the..

Some of the current advantages are:
  • Smaller binary size and smaller RAM usage.
  • The licences of all the code have been clarified and documented.
  • A lot of system code of libnds has been documented to help future work on it.
  • There is basic multithreading support.
  • The DSi camera is supported.
  • NDS ROMs can be generated with animated icons
The main disadvantages are:
  • BlocksDS is Linux-only. There are Docker images that you can use on other OSes, and you can install it in WSL if you're using Windows, but there is no native support, which may be a problem for some potential users.
  • The compatibility with devkitARM isn't perfect. You will need to heavily modify any project that uses features provided by the fork of newlib in devkitARM, like devoptab (but this is a very niche situation).
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    BigOnYa @ BigOnYa: You can listen to custom music in gtav on consoles also, just put mp3's on a USB thumb drive and... +1