#include <nitro/mi.h>
void MI_VBlankDmaCopy32( u32 dmaNo, const void* src, void* dest, u32 size );
void MI_VBlankDmaCopy16( u32 dmaNo, const void* src, void* dest, u32 size );
void MI_VBlankDmaCopy32Async( u32 dmaNo, const void* src, void* dest, u32 size,
MIDmaCallback callback, void* arg );
void MI_VBlankDmaCopy16Async( u32 dmaNo, const void* src, void* dest, u32 size,
MIDmaCallback callback, void* arg );
dmaNo | DMA channel used. |
src | The transfer source address. |
dest | The transfer destination address. |
size | Transfer size. |
callback | Callback when DMA ends. |
arg | Callback argument when DMA ends. |
None.
This function uses DMA to perform a V-Blank copy. When a V-Blank starts, DMA starts.
MI_VBlankDmaCopy16()
and MI_VBlankDmaCopy16Async()
copy in units of 16 bits. Both the transfer source address and the transfer destination address must be 2-byte aligned. MI_VBlankDmaCopy32()
and MI_VBlankDmaCopy32Async()
copy in units of 32 bits. Both the transfer source address and the transfer destination address must be 4-byte aligned.
MI_VBlankDmaCopy16()
and MI_VBlankDmaCopy32()
start a DMA when a V-Blank is generated, and then wait for it to end. MI_VBlankDmaCopy16Async()
and MI_VBlankDmaCopy32Async()
start DMA when a V blank is generated and call a callback, callback
, when ending DMA. The callback, callback
, is a MIDmaCallback
type (a void
type function that takes one void*
argument). callback
is called from the system DMA interrupt handler and therefore is called while interrupts are prohibited.
It is necessary to understand how to use Async-type APIs in order to obtain maximum functionality.
See the section titled "DMA Controller Bugs" in the reference for the MI_DmaCopy
function.
Uses the following IO registers: DMAn source register (0x40000B0 + 12n), DMAn destination register (0x40000B4 + 12n), and DMAn control register (0x40000B8 + 12n). (n is the DMA channel used.))
2009/11/20 Added a description of the bugs for the DMA controller.
2005/03/08 Standardized the notation used for the Japanese term interrupt.
2004/12/22 Added a description of calling the callback.
2003/12/03 Initial version.
CONFIDENTIAL