NNS_G2dBGSetupEx

# NNS_G2dBGSetup*

## 構文

      #include <nnsys/g2d/g2d_Screen.h>

      void NNS_G2dBGSetup(
          NNSG2dBGSelect bg,
          const NNSG2dScreenData* pScnData,
          const NNSG2dCharacterData* pChrData,
          const NNSG2dPaletteData* pPltData,
          GXBGScrBase scnBase,
          GXBGCharBase chrBase
      );

      void NNS_G2dBGSetupEx(
          NNSG2dBGSelect bg,
          const NNSG2dScreenData* pScnData,
          const NNSG2dCharacterData* pChrData,
          const NNSG2dPaletteData* pPltData,
          const NNSG2dCharacterPosInfo* pPosInfo,
          const NNSG2dPaletteCompressInfo* pCmpInfo,
          GXBGScrBase scnBase,
          GXBGCharBase chrBase
      );

## 引数

bg | [IN] 対象の BG 面
pScnData | [IN] BG で使用するスクリーンデータへのポインタ、NULL 指定は不可です
pChrData | [IN] BG で使用するキャラクタデータへのポインタ、NULL 指定も可能です
pPltData | [IN] BG で使用するパレットデータへのポインタ、NULL 指定も可能です
pPosInfo | [IN] pChrData のキャラクタ抽出領域情報。pChrData が部分キャラクタでない場合は NULL を指定します。
pCmpInfo | [IN] pPltData のパレット圧縮情報。 pPltData が圧縮パレットでない場合は NULL を指定します。
scnBase | [IN] BG のスクリーンベース
chrBase | [IN] BG のキャラクタベース。

## 返り値

なし。

## 説明

キャラクタ BG の設定を行うと共に、BG で用いるグラフィックスデータをVRAMに読み込みます。

bg には以下のいずれかを指定します。

`NNS_G2D_BGSELECT_MAIN0` | メイン画面の BG 0 を指定します。
`NNS_G2D_BGSELECT_MAIN1` | メイン画面の BG 1 を指定します。
`NNS_G2D_BGSELECT_MAIN2` | メイン画面の BG 2 を指定します。
`NNS_G2D_BGSELECT_MAIN3` | メイン画面の BG 3 を指定します。
`NNS_G2D_BGSELECT_SUB0` | サブ画面の BG 0 を指定します。
`NNS_G2D_BGSELECT_SUB1` | サブ画面の BG 1 を指定します。
`NNS_G2D_BGSELECT_SUB2` | サブ画面の BG 2 を指定します。
`NNS_G2D_BGSELECT_SUB3` | サブ画面の BG 3 を指定します。

pScnData が持つスクリーン情報に従って BGControl を行い、 その上で各グラフィックスデータを適切な VRAM にロードします。 BGControl では pScnData 全体を表示できる 最小のサイズにBGを設定します。 pScnData がBGの最大サイズより大きい場合は最大サイズに設定します。 必要に応じて 表示モード、BGモード、メイン BG0 の 3D 割り当ての変更を行います。 このBGモードの変更によって bg 以外の BG 面の BGタイプが変わってしまう場合は Warning を出力します。

アフィン BG およびアフィン拡張 BG のエリアオーバー処理指定には `NNS_G2dSetBGAreaOver()` で 設定された値を用います。エリアオーバー処理が未設定の場合は `GX_BG_AREAOVER_XLU` を用います。

pPltData や pChrData に `NULL`が指定された場合は、それぞれのグラフィックスデータの読み込みが行われません。 これは、パレットやキャラクタを複数のBGで共有する場合の利用を想定しています。

内部で `NNS_G2dBGLoadElements()` を呼び出しています。

この関数は以下の設定を変更します。

- BG Control
- 表示モード
- BG モード
- メイン画面 BG0 の 2D 割り当て

一方、以下の設定は変更しませんので必要に応じて設定を行ってください。 特に VRAM割り当て と ベースオフセット は、この関数を呼び出す前に設定しておく必要があります。 なお、BG はデフォルトでは不可視となっていますので BG を表示するためには任意のタイミングで BG を可視にする必要があります。

- VRAM 割り当て (拡張パレットロードのための LCDC 割り当てを除く)
- ベースオフセット
- BG 可視状態
- BG 優先度
- BG モザイク
- BG スクロール
- BG アフィン
- カラー特殊効果

## 参照

`NNS_G2dBGLoadElements, NNS_G2dSetBGAreaOver, NNS_G2dGetBGAreaOver`

## 履歴

2005/06/27 フリーサイズスクリーンに対応
2005/06/06 フリーサイズスクリーンに対応していない旨を明記
2004/09/02 初版