Inspiration
The Nintendo DS is one of the most delightful handheld systems ever produced, and its development libraries are right there, so we wanted to take the opportunity to explore how writing software for such a unique platform worked.
What it does
Click and drag on the bottom screen to send vividly red squares careening across the top screen, seamlessly and realistically bouncing off of one another in the most exciting gameplay of the year. Scroll around the screen with the D-pad to explore the black void that is yours to shape in your image.
How we built it
- libnds C development libraries from devkitPro
- Custom Python toolchain for linking image files and palettes
- Physics API layered over devkitPro
Challenges we ran into
The DS doesn't natively support floating point arithmetic, and their fixed point arithmetic can be very unwieldy; in order to support a moving camera, we needed to translate between two coordinate systems, and the math involved required error-prone back-and-forth conversion. This is just one example of some bizarre hardware quirks the DS has that makes it both fascinating and frustrating to program.
We also had many issues with getting our physics engine working. It turns out physics is not super easy. Who knew?
Accomplishments that we're proud of
- We created a very robust build pipeline using Makefiles and custom Python pre-processing that let us set up an iterative development flow fairly early on.
- We came up with a custom binary format to represent images and color palettes that could be integrated into the libnds API very easily.
- We came up with a flexible and robust way to manage an environment juggling many different game structures.
- Frankly it's a miracle any of this compiled at all
What we learned
- Physics is, like, hard
- Working with low-level hardware takes a big shift in your mental model in order to design systems that work efficiently
What's next for Nintendo Dual Screen Physics Project Submission Post
- Keep fleshing out the physics engine to make it more realistic and capable of more complex dynamics
- Create more sophisticated ways to manipulate graphics to make it more visually appealing


Log in or sign up for Devpost to join the conversation.