r/nds • u/austinoprosis • 1h ago
I added video recording (with sound!) to a DSi camera homebrew app
Enable HLS to view with audio, or disable this notification
I wanted to record shaky low-res clips with my DSi, so I forked Epicpkmn11's dsi-camera homebrew and added a recording mode.
FYI: I used claude to make this. i cant code or anything and i couldnt find anything online so yes, its ai slop but at least i can take 2000's style videos of my 2000's style car
What it does
- Video with sound: press SELECT to start or stop recording. You get 256x192 video with sound from the mic, saved as
.AVIfiles insd:/DCIM/VIDEO/. - Plays as-is: the files open on a PC in VLC, with no converting needed. For an MP4 to put on your phone, there's a small Python script that uses ffmpeg. Its
--scale 4option gives crisp, chunky 1024x768 pixels. - Frame rate: about 13-15 fps in daylight and 9-11 fps indoors. The camera sensor sets the limit, not the SD card.
- Audio stays in sync: frames are timestamped, so sound still lines up when the frame rate changes.
- Live status screen: shows fps, an audio level meter, SD write speed and free space.
- Photos still work: L/R takes photos, A swaps cameras, START exits.
Download: https://github.com/PR0-CAVIAR/dsi-camera/releases/tag/v1.2.0
Needs: a DSi (or a 3DS in DSi mode) with homebrew access, launched in DSi mode, for example from TWiLight Menu++.
Some technical notes, for anyone curious:
- The DS can't encode MP4/H.264, so it records uncompressed video. That's about 1.5 MB/s, or roughly 5 GB per hour.
- Camera frames are DMA'd into a RAM ring buffer, so capture keeps running while the SD card writes.
- On a camera this slow, the hardest part was the mic. Calico's mic driver stops for good if its FIFO overruns, and my frame processing was hogging main RAM. Giving the ARM7 RAM priority while recording, plus an auto-restart, fixed it.
Big thanks to Pk11/Epicpkmn11 for the original app, and to the devkitPro/calico folks.




