Probably the most interesting feature of this project was how it handled memory. The DS only has 4mb of ram. And there is no MMU, so swap isn't an option. But the gameboy cartridge port has 32mb of address space mapped to the bus. And there are homebrew/piracy cartridges that fill that space with 32mb of ram. Which is great, except that the DS can only write to the cartridge port on 16-bit aligned addresses. And almost all software will assume that 8-bit aligned writes will work. To make use of the expansion memory the developers ended up creating a patched GCC that would convert any writes to unaligned locations to an appropriate read, 16-bit write, and set of shift operations.
There's even an official one, the Opera Web Browser came with a second cartridge for the "GBA" slot to add 8 MB of RAM and a MMU: https://en.wikipedia.org/wiki/Nintendo_DS_Browser#Memory_Exp...
(I've long lost the Opera DS cartridge, but the memory expansion is still in my DS Lite as a slot cover)
But perhaps my memory is going bad and my Google Fu is worse.
Edit: gbatek doesn't document an MMU in those cards either. https://problemkaputt.de/gbatek.htm#dscartexpansionram
When trying to port some industrial control software to DSLinux, I ran into some bugs around how the SLOB allocator behaved under memory pressure. One of my patches landed upstream, even though SLOB is deprecated now. Still, as a kid starting out in the embedded space, it opened my eyes to the joys of hacking around with homebrew.
Fun fact: a modded DS still powers a large part of my local observatory's equipment.
I'm interested! I'd like to read more about that.
DS is very underrated - so many great games, and it’s an emulation dream. All without being too powerful, and having ‘realistic’ graphics that just drain battery life.
Was a lot of fun though. It's super cool how easy it is to just download libnds, compile the demos and get them running with a $9 flash cart.
Also if you have a 3DS, check out the TwilightMenu project. It's a DSiMenu clone that can load homebrew titles and the like from the SD card (as well as flashcards).
Which is the equivalent project (also on μCLinux) on an iPod.
https://en.wikipedia.org/wiki/Jill_Lepore
are considered notable enough to have Wikipedia pages (and notably not the excellent https://www.amazon.com/If-Then-Simulmatics-Corporation-Inven... but maybe that is just my opinion as a computer nerd who works in the public opinion field... If you notice I try not to say things like "most people think that" because I don't want to be caught with my facts wrong.) but truly obscure games like
https://en.wikipedia.org/wiki/Code_of_Princess
seem to not have to fight for notability at all. (Personally I kinda like that one, but I'm a serious weeb and even I'll admit that it is terribly balanced and too grindy)
I sold my Nintendo DS since then, but I still have somewhere the Supercard that I would use to store and boot Linux, which looks like this: https://wiki.gbatemp.net/wiki/File:SuperCard_CF_V2.jpg
Most of credit for the amazing work that made this possible goes to a few individuals, in particular Malcolm Parsons (pepsiman), Stefan Sperling (who later became an OpenBSD developer), and Amadeus: http://dslinux.org/wiki/ContactingDevelopers.html
Since it's based on the official (albeit outdated) Tegra drivers, you can run a surprising amount of stuff on it. I got SkiFree working in Box86 and called it a day.
It's as close to an officially supported Linux distro for Nintendo hardware as we've ever gotten.
To be fair, Linux on the Wii was also quite good: I remember running Debian 5 Lenny on my Wii many years ago, and it seemed to be "just" a different kernel with drivers for the Wii hardware but with the normal userspace / repos. With an USB mouse and keyboard this was even somewhat usable, even with X11 and some lightweight window manager. Of course RAM was quite limited with only 80MB in total, but still. It definitely wasn't as hacky or limited as DSLinux.
789 KB Linux Without MMU on RISC-V
I had NO IDEA what Linux was at the time, but DSLinux helped me deepen my interest in computer science.
So, thanks to the creators, and everyone who contributed code.
[0] https://wiki.linuxquestions.org/wiki/BSD_games
I wasn't too invested in it, so when the wifi didn't "just work" I gave up, but I'd still love to get SSH working on that some day.
Did DSLinux team ever manage to get it to work on the DSi?
I still have my DSi and it still works, but I remember DSLinux didn't work with it.
Following that, the Old 3DS had 128MB and New 3DS had 256MB of RAM.
The first one being that the SoC configuration runs in DS-compatibility mode which does not expose all of the available RAM in the DSi, and nds-bootstrap won't properly redirect I/O requests to the external SD card, which means you either need to embed the rootfs in the NDS ROM which won't persist changes, or use a flash cart and run the DLDI build instead.
Basically, it boils down to anything you can do on the command line within the resource constraints of the DS.
Would love to hear any DSLinux users who would be willing to share stories about cool functionality they were able to achieve.
I can't remember if this was before or after I managed to inadvertently install (!?) Knoppix on my sister's school laptop, but my passion for Linux was there well before I had the means to run it myself.
The problem is the touch keyboard is unusuable. Most likely because of the NDS v 3DS screen resolution difference, it's impossible to type on it. Took me a couple of minutes to type "root" but never managed to hit Enter :D