the nintendo ds - computer
TRANSCRIPT
The Nintendo DS
More than just fun and games.
The Nintendo DS
Programming and controlling adedicated-purpose computer system.
Why Should I Care?
65 million units65 million units
$8.5 billion sales$8.5 billion sales
Why Should I Care?
Why Should I Care?
"Homebrew" ComputingThe Importance of Fiddling with Things
Spacewar (1962)
Pong (1966/1972)
Space Travel game (1969)
Apple I (1976)
Who is Into Homebrew Computing?
EngineersComputer
Enthusiasts
Tinkerers
Geeks
Innovators!
Inside the Nintendo DS:
Hardware
Two TFT back-lighted screens
Including a resistive touchpad integrated in the bottom screen
Integrated wireless networking via Wi-Fi
12 buttons for game-play inputs
16-channel sound output
Integrated microphone with limited speech recognition
Inside the Nintendo DS:
System Architecture and Design
First CPU:
ARM9 67 MHz, 200-300 MIPS, 16/32 bit
Second CPU:
ARM7 33 MHz, 20 MIPS, 16/32 bit
Main memory:
4MB of built-in RAM
Dedicated video RAM
656 KB in 9 memory banks
Other memory banks:
ARM9 caches, ARM7 Fast RAM, shared Fast RAM, DTCM and ITCM
Two slots for external Flash memory:
DS software port and legacy GBA software port
Developing for the DSDeveloping for the DSThe Nintendo DS Software The Nintendo DS Software Development EnvironmentDevelopment Environment
“It is a shame that homebrew development can't be officially sanctioned and supported, because it would be a wonderful platform for a modern generation of programmers to be able to get a real feel for low level design work, to be contrasted with the high level web and application work that so many entry level people start with.”
John Carmack
Today's Homebrew Devices
Open SDK
$399 - $499 (New)
$500 - $800 (Used/Unlocked)
No Homebrew Support
$115 - $130 (New)
$40 - $75 (Used)
Nintendo DS Apple iPhone
The DS is not meant to be a homebrew device…
because Nintendo is concerned thatpeople will use homebrew innovations to access
and play pirated games.
No floating point unit
Encryption
Dynamic libraries NOT supported
Need to synchronize two CPUs
DS Homebrew Challenges
Libraries are available for Homebrew coding
devkitARM: ARM preprocessor, compiler & linker
libnds: a low-level NDS library
palib: an optional higher level library
dswifi: an add-on to libnds for wi-fi support
libfat: filesystem manager for r/w to media
DeSmuME and NO$GBA: emulators for testing
Just You and the Bits & Chips
Even with the available libraries, you must understand what is happening at a very low level, in order to write code that will work.
Programming Options:• ARM assembly• C/C++
DS TV tuner
Two CPUs = Two (main) functions
ARM7
ARM9
Check out what you
can program on a
Nintendo DS!
GPS on the DS (using Google Maps)
Any questions?