- main library
- processor related
- operand: defines basic operand types used in instructions
- matcher and decoder: decodes binary instructions into opcodes and operands
- disassembler: translate binary instructions to (pseudo-)assembly.
- parser: translate (pseudo-)assembly to binary instructions
- interpreter: executes instructions
- register: defines all register states in the processor
- processor: wrapper of interpreter and register as a processor emulator
- test_generator: generates test cases information for the instruction set
- peripherals
- AHBM: interface for accessing external memory (DSi/3DS main memory)
- APBP: interface for communication with CPU (ARM in DSi/3DS)
- BTDMP: audio input/output ports
- DMA: engine for transferring large data between DSP memory and external memory
- ICU: interrupt controller unit
- timer
- MMIO: I/O ports for all peripherals
- shared_memory: the DSP working memory
- memory_interface: the memory space exposed to the processor and related control
- processor related
- Tools
- coff_reader: disassembles and parses symbols COFF files leaked by some DSi applications
- dsp1_reader: disassembles DSP1 files, DSP binary for 3DS applications
- makedsp1: assembles DSP1 files
- test_generator: generate random test cases for processor instructions.
- mod_test_generator & step2_test_generator: similar to test_generator, but dedicated for mod/step2 related instructions
- test_verifier: verify test cases on the interpreter against the result generated from 3DS