- Graphics
- Backdrop and forced blank
- Tile modes
- Scrolling
- Priorities
- Transparency color
- Tile flipping
- 32 and 256 color palettes
- Bitmap modes
- Page flipping
- Affine transformation (e.g. Advance Wars intro, Ecks vs. Sever)
- Priorities (e.g. Iridion II intro)
- Tiled and affine backgrounds
- Layer toggle delay
- Regular and affine sprites
- Tile indexes past 1023 wrap around to 0 allowing tile 0 to be placed at sprite origin (e.g. Advance Wars 2 versus rules screen)
- Tile indexes for 2D mapped tiles incremented past end of row wrap around to the same row
- Affine matrix of all zeros produces rectangle of uniform color using origin pixel (e.g. Kurukuru Kururin intro and pause menu)
- Transparent sprites can update sprite priorities (e.g. Golden Sun carpet)
- OAM update delay
- Graphic effects
- Blending
- Mosaic
- Windowing
- Basic windows
- Object window
- Bad values for window coordinates
- Shaders
- LCD color correction
- Sound
- Digital sound channels
- Programmable sound generators
- Square 1
- Square 2
- Wave
- Noise
- Resampling
- Sample rates less than 48,000 Hz
- Sample rates greater than 48,000 Hz (e.g. Golden Sun 2, Konami Krazy Racers)
- Mixing dissimilar sample rates (e.g. Medabots AX, Mobile Suit Gundam Seed)
- Interpolation
- Cosine interpolation
- Cubic interpolation
- Sinc interpolation
- Lanczos interpolation
- Sound bias register
- Timings
- Scheduler optimisation
- Memory region timings
- Wait count register
- Instruction timings
- Timers are updated during a DMA transfer
- Higher priority DMAs can be initiated during a DMA transfer
- DMAs delayed by 2 cycles
- IRQs delayed by 7 cycles (e.g. Hamtaro - Ham-Ham Heartbreak, Mega Man & Bass)
- Cartridge prefetch
- Memory
- BIOS read lockout
- I/O registers
- Mirroring
- Open bus
- ARM
- Thumb (e.g. The Legend of Zelda: The Minish Cap, Mario & Luigi: Superstar Saga)
- Work RAM 256K, Palette RAM, VRAM and GamePak ROM
- BIOS ROM and OAM
- Work RAM 32K
- I/O and GamePak SRAM
- DMA (e.g. Hello Kitty Collection, Sonic Pinball Party)
- Save memory
- SRAM, Flash and EEPROM support
- Persist save game to disk
- On exit or ROM load
- Automatically with mmap
- Save type detection via string search
- Save type overrides
- Hardcoded
- Loaded from text file
- Loaded from save type database
- Save states
- Timers
- DMA
- Key input
- Interrupt requests
- VBlank, VCount and HBlank
- Timers
- DMA transfers
- Key input
- CPU
- Instruction decode via lookup table
- ALU and shifter
- Pipeline
- Conditional execution
- Software and hardware interrupts
- ldrt/strt user bank registers
- ARM edge cases
- ldr/str aligns addresses and does rotated reads
- ldm/stm aligns addresses and does not rotate reads, updated base retains misalignment
- CPSR bit 4 (M[4]) always reads as 1 (e.g. Banjo-Kazooie: Grunty's Revenge)
- Invalid CPSR mode
- Reading SPSR in modes where SPSR does not exist results in CPSR
- Changing Thumb bit via msr
- ldm^/stm^ user bank registers with writeback loads base from non-user bank but stores updated base into user bank
- tstp/teqp/cmpp/cmnp (ARMv2 mode change) restores SPSR only, mode is unchanged
- ldm/stm with empty register list loads/stores PC and increments/decrements base Rn by 0x40
- ldm with base Rn in register list ignores writeback
- stm with base Rn first in register list stores unmodified base
- bx aligns ARM addresses to word, Thumb addresses to halfword
- Undefined instructions
- Thumb edge cases
- Using the second half of a bl instruction pair on its own (e.g. Golden Sun)
- add/cmp/mov high registers (with both registers low)
- blx (not on ARMv4T)
- bx (non-zero should be zero bits)
- add/sub sp (non-zero should be zero bits)
- push/pop (non-zero should be zero bits)
- GPIO peripherals
- Real time clock (e.g. Pokémon Emerald)
- Gyroscope (e.g. WarioWare: Twisted!)
- Accelerometer (e.g. Yoshi Topsy-Turvy)
- Solar sensor (e.g. Boktai)
- Rumble (e.g. Drill Dozer)
- e-Reader
- Communication
- Link cable
- Wireless adapter
- Debugging
- Registers
- Disassembly
- Scrollable window
- Stepping
- Reset
- Single step
- Step n cycles
- Step 1 frame
- Breakpoints
- Memory viewer
- Jump to region
- Palette viewer
- Background viewer
- Sprite viewer
- GDB remote debug protocol
- User interface
- Drag and drop ROM file
- Screen scale
- Remap controls
- Rotate screen 90° (e.g. Dr. Mario + Puzzle League)