##### Shinobi Library - コールバック関数

# syCallbackAddHandler

コールバック関数の登録

### 書式

> `SYCALLBACK syCallbackAddHandler( event, usrCallbackFunc, priority, arg )
> SY_CALLBACK_EVENT event
> Void (*usrCallbackFunc)(Void *)
> Uint8 priority
> Void *arg
> `

### 引数

> event | コールバックを登録するイベント
> usrCallbackFunc | 登録する関数
> priority | イベント発生時に呼び出す優先順位
> arg | 関数をコールバックするときに引数として渡す値

### 戻り値

> コールバックハンドル

### 解説

> 引数 event で指定される割込みが発生したときに、呼び出されるユーザのコールバック関数 usrCallbackFunc を登録します。

> 引数 event は次の指定が可能です。

> 定義 | 値 | 意味
> SYD_CALLBACK_EVENT_VBLANKIN | 0x0900 | VBLANK-IN
> SYD_CALLBACK_EVENT_HBLANK | 0x0920 | HBLANK
> SYD_CALLBACK_EVENT_EOR | 0x0950 | End Of Render
> SYD_CALLBACK_EVENT_EOYUV | 0x0960 | End Of YUV
> SYD_CALLBACK_EVENT_PDPORT | 0x0A00 | Maple ポート割込み
> SYD_CALLBACK_EVENT_GDEND | 0x0A40 | GD 読み込み終了
> SYD_CALLBACK_EVENT_AICADM | 0x0A60 | AICA DMA 終了

> ここで、HBLANKにはグラフィックライブラリ関数を使用して、事前にHライン割込みの発生位置の設定が必要です。

> １つのイベントに対して複数のコールバック関数を引数 priority で指定される順番で呼び出します。

> 引数priority に指定する値の範囲は、0x00 〜 0x10 までです。 この値が小さいほど割込み発生時に先に呼び出されますが、同じ値を指定した場合には後から登録された関数が先に実行されます。

### 備考

> 戻り値となるコールバックハンドルは、 登録したコールバック関数を削除するときに用います。 コールバック関数の登録を削除するには、syCallbackDeleteHandler()関数を用います。

> 同じイベント番号を指定しても上書きはされません。

> 登録したコールバック関数は、割込み状態で実行されるため、処理内で割込みを必要とする処理を行わないでください。

### 参照

> syCallbackInit() | コールバックライブラリの初期化
> syCallbackFinish() | コールバックライブラリの終了
> syCallbackDeleteHandler() | 登録したコールバック関数の削除
> syCallbackGetNestCount() | 割込みのネスト回数の取得

syCallbackAddHandler

COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000