GBATEK
Gameboy Advance / Nintendo DS - Technical Info - Extracted from no$gba version 2.6a

[ GBA | DS | CPU ]

 GBA Reference

Overview
GBA Technical Data
GBA Memory Map
GBA I/O Map

Hardware Programming
GBA LCD Video Controller
GBA Sound Controller
GBA Timers
GBA DMA Transfers
GBA Communication Ports
GBA Keypad Input
GBA Interrupt Control
GBA System Control

Other
GBA Cartridges
BIOS Functions
Unpredictable Things
External Connectors
 DS Reference

Overview
DS Technical Data
DS I/O Maps
DS Memory Maps

Hardware Programming
DS Memory Control
DS Video
DS 3D Video
DS Sound
DS System and Built-in Peripherals
DS Cartridges,Encryption,Firmware
DS Xboo
DS Wireless Communications

Other
DS GBA-Mode
BIOS Functions
CPU Reference
External Connectors
 CPU Reference

General Information
CPU Overview
CPU Register Set
CPU Flags
CPU Exceptions
CPU Memory Alignments

The Instruction Sets
THUMB Instruction Set
ARM Instruction Set
Pseudos & Directives

Further Information
ARM System Control CP15
CPU Clock Cycles
CPU Versions
CPU Data Sheet

About GBATEK
About this Document


 Changes since 2.5
- nds/help: added tech specs on div/sqrt (readonly results, start/stop timings)
- nds/help: added tech specs on ipcfifo (edge triggered, underrun, fifo-disable)
- nds/help: added user settings 076h (language mask) and header 01Dh (ique flag)
- nds/help: added info on chinese title in icon/title region (addr/version/crc)
- nds/help: added note on undoc nds7 port 4001080h (used by ds-lite firmware)
- nds/help: added optical mouse sensor (slider controller) (thanx daniel palmer)
- nds/help: added firmware wifi internet access point settings info (thanks cue)
- nds/help: added user settings 066h (year) and 075h (ext language) (thanks cue)
- nds/3d/help: added more technical notes on edge marking (depth and polygon_id)
- nds/3d/help: added double-blended-edge-glitch (edge-marking plus anti-alias)
- nds/3d/help: added translucent-edge-glitch (edge-marking plus anti-aliasing)
- nds/3d/help: added note on situations where lower/right edges are excluded
- nds/3d/help: anti-aliasing doesn't work with (opaque) lines and wire-frames
- nds/3d/help: anti-aliasing isn't used on edge-marked polys/lines/wire-frames
- nds/3d/help: swap_buffers parameters are applied on the FOLLOWING gxcommands
- nds/3d/help: swap_buffers does NOT copy re-ports (disp3dcnt/toon_table/etc)
- nds/3d/help: confirmed guessed texture slot locations for rear-plane bitmaps
- nds/3d/help: corrected polygon_attr.bit11 (affects pixels, not whole polygons)
- nds/3d/help: added description on clamped textures (clips to minmax 0,siz-1)
- nds/3d/help: added caution on pos_test (overwrites internal vtx coordinates)
- nds/key1/help: renamed crypt_up/down (actually encrypt/decrypt) (thanks simon)
- nds/wifi/help: added port 24Ch/24Eh/250h, 264h/270h, 2A4h/2C4h, 2C8h/2CCh info
- nds/wifi/help: added W_TX_HDR_CNT port 194h bit0,1,2 info (thanks Tim Seidel)
- nds/wifi/help: added 1D0h..1DFh info, added notes on body[2] instead txhdr[2]
- nds/wifi/help: confirmed 0B4h.Bit6, added 030h.Bit7, added info on 094h/098h
- nds/wifi/help: removed incorrect/unconfirmed rxbuf_begin/end-latching-info
- nds/wifi/help: added txhdr[2], port[0C0h], port[0C4h], renamed EXTRA to CMD
- nds/wifi/help: renamed W_RXUNITS to W_RXTX_ADDR and moved it to status chapter
- nds/wifi/help: added notes on registers affected by powerforce (and by irq13)
- nds/wifi/help: added RF2958 (aka RF9008) datasheet info (thanks Tim Seidel)

 About this Document

About
GBATEK written 2001-2007 by Martin Korth, programming specs for the GBA and NDS hardware, I've been trying to keep the specs both as short as possible, and as complete as possible. The document is part of the no$gba debuggers built-in help text.

Updates
The standalone docs in TXT and HTM format are updated when having added any major changes to the document. The no$gba built-in version will be updated more regularly, including for minor changes, along with all no$gba updates.

Homepage
http://nocash.emubase.de/gba.htm - no$gba emulator homepage (freeware)
http://nocash.emubase.de/gba-dev.htm - no$gba debugger homepage
http://nocash.emubase.de/gbapics.htm - no$gba debugger screenshots
http://nocash.emubase.de/gbatek.htm - gbatek html version
http://nocash.emubase.de/gbatek.txt - gbatek text version

Feedback
If you find any information in this document to be misleading, incomplete, or incorrect, please say something! My spam-shielded email address is found at:
http://nocash.emubase.de/email.htm - contact
Mail from programmers only, please. No gaming questions, thanks.

Credits
Thanks for GBATEK fixes, and for info about GBA and NDS hardware,
- Jasper Vijn
- Remi Veilleux (DS video details)
- Randy Linden
- Sebastian Rasmussen
- Stephen Stair (DS Wifi)
- Cue (DS Firmware bits and bytes)
- Tim Seidel (DS Wifi RF2958 datasheet)
- Damien Good (DS Bios Dumping, and lots of e-Reader info)
- Kenobi and Dualscreenman (lots of ARDS/CBDS cheat info)
- Flubba (GBA X/Y-Axis tilt sensor, and GBA Gameboy Player info)
- DarkFader (DS Key2)
- Dstek by neimod (DS Sound)
- Christian Auby
- Jeff Frohwein
- NDSTech Wiki, http://www.bottledlight.com/ds/ (lots of DS info)

Formatting
TXT is 80 columns, TXT is 80 columns, TXT is 80 columns.
Don't trust anything else. Never.