# MI_HBlankDmaCopy*

## 構文

  `#include <nitro/mi.h>`
  `void MI_HBlankDmaCopy32( u32 dmaNo, const void* src, void* dest, u32 size );`
  `void MI_HBlankDmaCopy16( u32 dmaNo, const void* src, void* dest, u32 size );`
  `void MI_HBlankDmaCopy32If( u32 dmaNo, const void* src, void* dest, u32 size );`
  `void MI_HBlankDmaCopy16If( u32 dmaNo, const void* src, void* dest, u32 size );`

## 引数

dmaNo | 使用DMAチャンネル
src | 転送元アドレス
dest | 転送先アドレス
size | 転送サイズ

## 返り値

なし。

## 説明

DMAを用いてHブランクコピーを行います。Hブランクが起動したときDMAが起動します。

このモードを使用している場合、メインメモリへのアクセス権を 「ARM9 優先」にしてください。そうでない場合は、 ARM7 側からのメインメモリへのアクセスによる DMA の起動の遅延により、画面が崩れる可能性があります。アクセス権の優先の指定は `MI_SetMainMemoryPriority()` で行ないます。

`MI_HBlankDmaCopy32If(),` `MI_HBlankDmaCopy16If() は、DMA終了時にDMA割り込みを発生します。`

###
DMAコントローラの不具合

`MI_DmaCopy()` のリファレンス中の「DMAコントローラの不具合」を参照してください。

## 内部動作

IOレジスタのDMAnソースレジスタ(0x40000B0 + 12n)、DMAnデスティネーションレジスタ(0x40000B4 + 12n)、DMAnコントロールレジスタ(0x40000B8 + 12n)を使用します。( n は 使用するDMAチャンネルです。)

## 参照

`MI_DmaCopy*,` `MI_SetMainMemoryPriority
`

## 履歴

2009/11/20 DMAコントローラの不具合について追記
2004/08/26 DMA 使用時にメインメモリへのアクセス権を「ARM9 優先」に設定することの記述追加
2003/12/01 初版