sint8_t peripheral_id; // @0 If not *_IS_RAM set, this must be < 0x1E.
uint8_t allowed_burst_sizes; // @1 Accepted values: 4, 8, 4|8 = 12, 1|2|4|8 = 15
sint16_t max_burst_totalgather_granule_size; // @2 Burst length * burst size sint16_t transfer_size?gather_stride; // @4 Must Has to be >= 0, must not be 0 if peripheral_id == 0xFF. sint16_t unk4scatter_granule_size; // @6 sint16_t transfer_stride?scatter_stride; // @8Can be negative.
}
.peripheral_id = 0xFF,
.allowed_burst_sizes = 1 | 2 | 4 | 8,
.max_burst_total gather_granule_size = 0x80, .transfer_size? gather_stride = 0, .unk4 scatter_granule_size = 0x80, .transfer_stride? scatter_stride = 0,
If SHALL_BLOCK is set, the thread will sleep until the DMA engine is ready. If not set, the SVC will return 0xD04007F0 if the DMA channel is busy.