Notes about this document: I write numbers this way 1'234,567'9 ≈ 100k/81 and use units like 1k=1000 or 1ki=1024 because 1K=-272,15°C
The Nintendo DS is (or was) very popular and quite well documented, thus, I'll compare the main features and focus on oddities.
| Handheld | GBA | DS Phat&Lite | DSi&Grandpa DS | 3DS&Doorstop 2DS | New3DS&Budget 3DS |
|---|---|---|---|---|---|
| Sprite Count | 128 | 128 | 128 | ||
| Triangles/Frame | 0 | 2048 | 2048 | 1,71Mi | 1,71Mi |
| Colour Depth | 15-bit | 18-bit | 18-bit | 24-bit | 24-bit |
| Resolution | 240×160 | 256×192×2 | 256×192×2 | 400×240 + 320×240 | 400×240 + 320×240 |
| Frame rate | 59,728FPS | 59,826FPS | 59,826FPS | ~60FPS | ~60FPS |
| Audio DAC | 32kiHz 9-bit | 32kiHz 10-bit? | OK I give up | ||
| Camera | WormCam: 182×142
GB Camera: 2b×128×128 | FaceningScan | 640×480×2 | 640×480×3 | 640×480×3 |
| Main RAM | 256kiB | 4MiB | 16MiB | 96MiB | 192MiB |
| Flash | 0 | 256kiB | 256MiB | ||
| Cartridge | ROM: 4-64MiB; 1clk+2clk/tx typ. SRAM: 256-512kiB; 9clk/B typ. EEPROM: 512B-8kiB; 9clk/B typ. Flash: 64-128kiB 1+clk+3clk/B typ. Theory: 2clk+2clk/tx | ROM: 8-64MiB 5,99MiB/s PROM: 16-256MiB 1,52MiB/s EEPROM: 512B-64kiB 25kiB/s Flash: 256kiB-8MiB 10kiB/s FRAM: 8kiB-32kiB typ. NAND: "128MiB" typ. Timing is yolo! | ROM: 8-512MiB typ. Uncommon | ROM: 128MiB-4GiB typ. | ROM: 128MiB-4GiB typ. |
| CPU | ARM7TDMI @16MiHz Sharp SP83 @8MiHz | ARM946E-S @~64MiHz ARM7TDMI @~32MiHz |
ARM9 @~128MiHz ARM7 @~32MiHz XpertTeak @~128MiHz |
ARM11 2@~256MiHz ARM9 @~128MiHz | ARM11 4@~768MiHz ARM9 @~128MiHz |
| Wi-Fi | None | Wi-Fi 1 WEP | Wi-Fi 1&3 WEP&WPA2 | Wi-Fi 1&3 WEP&WPA2 | Wi-Fi 1&3 WEP&WPA2 |
It happens that the way the DS connects to Wi-Fi is so well done that it can connect to hidden networks as though it wasn't!
Some information are based off the incredible GBATEK manual!
Some stats for reference (probably contains numerous errors!!!)
| Wi-Fi | Since | IEEE | Rate/(Mb/s) | RF |
|---|---|---|---|---|
| Wi-Fi 0 | 1997 | 802.11 | 1-2 | 2,4GHz |
| Wi-Fi 1 | 1999 | 802.11b | 1-11 | 2,4GHz |
| Wi-Fi 2 | 1999 | 802.11a | 6-54 | 5GHz |
| Wi-Fi 3 | 2003 | 802.11g | 6-54 | 2,4GHz |
| Wi-Fi 4 | 2009 | 802.11n | 6,5-600 | 2,4GHz;5GHz |
| Wi-Fi 5 | 2013 | 802.11ac | 6,5-6933 | 5GHz |
| Wi-Fi 6 | 2021 | 802.11ax | 0,4-9608 | 2,4GHz;5GHz;6GHz |
| Wi-Fi 7 | 2024 | 802.11be | 0,4-23059 | 2,4GHz;5GHz;6GHz |
| Encryption | Since | Until | Typical Cypher | Data Integrity | Password handling |
|---|---|---|---|---|---|
| WEP | 1997 | 2001 | RC4 | CRC-32 | IV |
| WPA | 2003 | 2013 | TKIP-128 (RC4) | TKIP | PSK |
| WPA2 | 2004 | 2017 | AES-128 | TKIP | PSK |
| WPA3 | 2018 | 2019 | AES-256 | SHA-384 | SAE |
May contain errors.
Standards took some delay, unlike attacks. As always.
| Tool | Description | Some pros | Some cons |
|---|---|---|---|
| DIY-Fi | Restores fonctionnalities of WW-DIY | Connected to the DoujinSoft Store. Only DNS server IP required! | Only WW-DIY. |
| Kaeru WFC | Restores fonctionnalities of 500+ games | Connected to Wiimmfi Only DNS server IP required! | No Sudomemo nor eShop. |
| Wiimfi | Restores fonctionnalities of 500+ games | 500+ Games are supported | Needs to patch each game |
AFAIK, the DS has no hardware to decode video, it has to be rendered on the fly, or decoded by the CPUs.
| Codec (Software) | License | Max Recommended Pixel Rate | Bit Rate | Compression ratio | ClrSpace | Audio | DSi? |
|---|---|---|---|---|---|---|---|
| Raw | DIY | 5,881Mpx/s≈2×256×192px×59,826FPS | 101,0Mib/s | 1px/18b (≈57px/kib) | RGB18 | PCM Stereo 32kiHz 16-bit | Same perfs |
| FastVideoDS | None | 1,5Mpx/s≈256×192px×30FPS | RGB15? | ADPCM 4b → 16b | Frame Rate ×2 | ||
| Rocket Video Player | MIT | 1,2Mpx/s≈256×192px×23,930FPS | 17,95Mib/s? | 1px/16b? (=64px/kib) | RGB15 | PCM Mono 16kHz 16-bit | 60FPS&16MiB |
| MPEG-1 (Moonshell) | GPLv2 | 1,2Mpx/s≈256×192px×24FPS? | 256kib/s | 4,5px/b×24b/px=108 | YUV24? | MP2 32kHz 128kb/s | ? |
| MPEG-1 (DSVideo) | ? | 0,6Mpx/s≈256×192px?×12,5FPS | YUV? | MP2 32kHz 112kb/s | No | ||
| MPEG-4 (MPEG4Player) | Homebrew | 0,6Mpx/s≈176×144px×23,976FPS | 350kb/s | 1,7px/b | YCoCg BT709 | AAC Mono 22050Hz 64kb/s | Many things ×2 |
| XVid (Tuna-ViDS) | GPLv2 + RPSL | 0,6Mpx/s≈256×192px×12FPS | (192±64)kb/s | 3,1px/b | YUV | MP3 Stereo 32kHz 96kb/s | Byte Rate ×2 |
| COMET (METEO Avi2GBA) | ? | 0,9Mpx/s≈240×160px×24FPS | 50kb/s | 18,4px/b | 15-bit (Dithered) | No lol it's GBA | |
| MobiClip | Illegal © | 1,5Mpx/s≈256×192px×30FPS? | No | ||||
| Caimans Video Codec | Illegal © | 0-320kb/s | 24-bit (Dithered) | 16-bit | Probably No | ||
| Flipnote Studio | © | 1,470Mpx/s≈256×192px×29,913FPS | 2,80Mib/s | >1px/2b (Lossless) | 2b palette | PCM Stereo 32kiHz 16-bit | DSi Only! |
It should have a page on it's own but IDK how to name the file and the folder… So it'll be faster to write in this page.
| ClrModel | Notes |
|---|---|
| RGB | The simplest to understand. Just primaries. |
| YCoCg-R | Separate components in a way that helps compression, but still fast to convert losslessly with RGB. |
| YUV | The Y component aims to indicate perceived brightness but it's plagued with the old CIE 1931 color space error which understimated the role of blue. |
These are signals for CRTs...
| Signal | Audio | Luma | Chroma |
|---|---|---|---|
| RGB | Lossless | Lossless | Lossless |
| YPbPr | Lossless | Lossless | Lossless |
| Luma-Chroma | Lossless | Lossless | Lossy |
| Composite | Lossless | Lossy | Lossy |
| RF | Lossy | Lossy | Lossy |