# MB_Init

## 構文

  `#include <nitro/mb.h>`
  `int MB_Init(void *work, const MBUserInfo *user, u32 ggid, u32 tgid, u32 dma);`

## 引数

work | MBの内部状態管理のために割り当てるメモリへのポインタ このサイズは MB_SYSTEM_BUF_SIZE バイト以上である必要があります。 割り当てたメモリは`MB_End()`を呼ぶまで内部で使用されます。 以降の呼び出しで`MB_StartParentFromIdle()`を使用することが保証されている場合に限り、 このサイズをWM_SYSTEM_BUF_SIZEバイトだけ小さく用意することが許されます。
user | ユーザデータが格納された構造体のポインタ このポインタが指す内容は`MB_Init()`の中でのみ参照されます。
ggid | ゲームグループIDを4バイトで指定します。
tgid | TGIDを指定する 0x0000 から 0xFFFF までの 16bit の値 この値に`MB_TGID_AUTO`を指定すると、内部で`WM_GetNextTgid()`を呼び出して TGID を自動取得します。 IPL では TGID、GGID、MACアドレスの全てが同じ場合には同じ親機とみなされて表示情報が更新されません。 一度親機をやめた後に、一度ユーザ名を更新して再度MB親機として起動した際に子機IPLで表示されるユーザ情報が更新されない可能性があります。 `MB_TGID_AUTO`を指定しない場合は`OS_GetVBlankCount()`やRTCを使用してなるべく起動毎に異なる値となるように設定してください。
dma | MBの内部処理のために割り当てるDMAチャンネル このDMAチャンネルは`MB_End()`を呼ぶまで内部で使用されます。

## 返り値

初期化が正しく完了すれば MB_SUCCESS を返します。

## 説明

MBライブラリを初期化します。
全てのMB関数の呼び出しの前に少なくとも１回呼び出す必要があります。
２回以上呼び出された場合は何も行いません。
この関数の呼び出しの後、`MB_StartParent()`が呼ばれるまでに、`MB_SetParentCommParam()`で最大接続子機サイズを指定してください。

## 参照

`MBUserInfo MB_StartParent MB_StartParentFromIdle
`

## 履歴

2005/04/11 引数 tgid の型を u32 に拡張、MB_TGID_AUTO の説明を追加
2004/11/24 `MB_StartParentEx()`を`MB_StartParentFromIdle()`に命名変更
2004/10/18 `MB_StartParentEx()`に関する記述を追加
2004/10/05 内部動作の説明の誤りを修正
2004/09/30 引数の追加
2004/08/09 初版