# GX_SetCapture

## 構文

      #include <nitro/gx/gx_capture.h>

      void GX_SetCapture(
          GXCaptureSize sz,
          GXCaptureMode mode,
          GXCaptureSrcA a,
          GXCaptureSrcB b,
          GXCaptureDest dest,
          int eva,
          int evb
      );

## 引数

sz | キャプチャサイズ
mode | キャプチャモード(A単独/B単独/ABをブレンドしたものをキャプチャするか選択)
a | キャプチャデータ元A(3D/2Dブレンディング後の画面か3D面のみかを選択）
b | キャプチャデータ元B(VRAM/メインメモリを選択)
dest | キャプチャデータ書き込み先(VRAM-A,B,C,Dとオフセットの組み合わせを選択)
eva | キャプチャデータ元Aに対するブレンディング係数(0から16)
evb | キャプチャデータ元Bに対するブレンディング係数(0から16)

## 返り値

なし

## 説明

次フレームの0ライン目から1画面分のデータをキャプチャするよう設定します。毎フレームキャプチャする場合には、フレーム毎にこの関数を呼び出さなくてはいけません。
(注意1) キャプチャデータ書き込み先のVRAMはLCDCメモリにマップされている必要があります。
(注意2) bにVRAMを設定した場合、対象VRAMはGX_SetGraphicsModeで選択しているVRAM表示モードのVRAMになります。
(注意3) VRAM表示モード時にはbにオフセットありのVRAMを設定した場合でも、VRAMのオフセット指定は無効になります。又、読み込み中にオフセットが0x20000を超えた場合は、0x00000に回り込んで読み込まれます。
(注意4) destへの書き込み中にオフセットが0x20000を超えた場合には、0x00000に回り込んで書き込まれます。
(注意5) RAM側のキャプチャ時は常に１ラインが256ドットのイメージとして読み込まれるため、128×128ドットの設定ではブレンディングしてキャプチャすることはできません。

`GX_CAPTURE_SIZE_128x128` | 128x128ドット(0x08000バイト)
`GX_CAPTURE_SIZE_256x64` | 256x64ドット(0x08000バイト)
`GX_CAPTURE_SIZE_256x128` | 256x128ドット(0x10000バイト)
`GX_CAPTURE_SIZE_256x192` | 256x192ドット(0x18000バイト)

`GX_CAPTURE_MODE_A` | キャプチャ元Aのデータをキャプチャします。
`GX_CAPTURE_MODE_B` | キャプチャ元Bのデータをキャプチャします。
`GX_CAPTURE_MODE_AB` | キャプチャ元AとBのデータをブレンディングしてキャプチャします。

`GX_CAPTURE_SRCA_2D3D` | グラフィックス表示画面(3D/2Dブレンディング後)を取り込みます。
`GX_CAPTURE_SRCA_3D` | 3D面を取り込みます。

`GX_CAPTURE_SRCB_VRAM_0x00000` | VRAMのオフセット0x00000から読み込みます。
`GX_CAPTURE_SRCB_MRAM` | メインメモリ表示モードでの表示結果をキャプチャします。
`GX_CAPTURE_SRCB_VRAM_0x08000` | VRAMのオフセット0x08000から読み込みます。
`GX_CAPTURE_SRCB_VRAM_0x10000` | VRAMのオフセット0x10000から読み込みます。
`GX_CAPTURE_SRCB_VRAM_0x18000` | VRAMのオフセット0x18000から読み込みます。

`GX_CAPTURE_DEST_VRAM_A_0x00000` | VRAM-Aのオフセット0x00000から書き込みます。
`GX_CAPTURE_DEST_VRAM_B_0x00000` | VRAM-Bのオフセット0x00000から書き込みます。
`GX_CAPTURE_DEST_VRAM_C_0x00000` | VRAM-Cのオフセット0x00000から書き込みます。
`GX_CAPTURE_DEST_VRAM_D_0x00000` | VRAM-Dのオフセット0x00000から書き込みます。
`GX_CAPTURE_DEST_VRAM_A_0x08000` | VRAM-Aのオフセット0x08000から書き込みます。
`GX_CAPTURE_DEST_VRAM_B_0x08000` | VRAM-Bのオフセット0x08000から書き込みます。
`GX_CAPTURE_DEST_VRAM_C_0x08000` | VRAM-Cのオフセット0x08000から書き込みます。
`GX_CAPTURE_DEST_VRAM_D_0x08000` | VRAM-Dのオフセット0x08000から書き込みます。
`GX_CAPTURE_DEST_VRAM_A_0x10000` | VRAM-Aのオフセット0x10000から書き込みます。
`GX_CAPTURE_DEST_VRAM_B_0x10000` | VRAM-Bのオフセット0x10000から書き込みます。
`GX_CAPTURE_DEST_VRAM_C_0x10000` | VRAM-Cのオフセット0x10000から書き込みます。
`GX_CAPTURE_DEST_VRAM_D_0x10000` | VRAM-Dのオフセット0x10000から書き込みます。
`GX_CAPTURE_DEST_VRAM_A_0x18000` | VRAM-Aのオフセット0x18000から書き込みます。
`GX_CAPTURE_DEST_VRAM_B_0x18000` | VRAM-Bのオフセット0x18000から書き込みます。
`GX_CAPTURE_DEST_VRAM_C_0x18000` | VRAM-Cのオフセット0x18000から書き込みます。
`GX_CAPTURE_DEST_VRAM_D_0x18000` | VRAM-Dのオフセット0x18000から書き込みます。

以下に引数に使用される列挙型の型定義を示しておきます。

    typedef enum
    {
        GX_CAPTURE_SIZE_128x128 = 0,
        GX_CAPTURE_SIZE_256x64 = 1,
        GX_CAPTURE_SIZE_256x128 = 2,
        GX_CAPTURE_SIZE_256x192 = 3
    }
    GXCaptureSize;

    typedef enum
    {
        GX_CAPTURE_MODE_A = 0,
        GX_CAPTURE_MODE_B = 1,
        GX_CAPTURE_MODE_AB = 2
    }
    GXCaptureMode;

    typedef enum
    {
        GX_CAPTURE_SRCA_2D3D = 0,
        GX_CAPTURE_SRCA_3D = 1
    }
    GXCaptureSrcA;

    typedef enum
    {
        GX_CAPTURE_SRCB_VRAM_0x00000 = 0,
        GX_CAPTURE_SRCB_MRAM = 1,
        GX_CAPTURE_SRCB_VRAM_0x08000 = 2,
        GX_CAPTURE_SRCB_VRAM_0x10000 = 4,
        GX_CAPTURE_SRCB_VRAM_0x18000 = 6
    }
    GXCaptureSrcB;

    typedef enum
    {
        GX_CAPTURE_DEST_VRAM_A_0x00000 = 0,
        GX_CAPTURE_DEST_VRAM_B_0x00000 = 1,
        GX_CAPTURE_DEST_VRAM_C_0x00000 = 2,
        GX_CAPTURE_DEST_VRAM_D_0x00000 = 3,

        GX_CAPTURE_DEST_VRAM_A_0x08000 = 4,
        GX_CAPTURE_DEST_VRAM_B_0x08000 = 5,
        GX_CAPTURE_DEST_VRAM_C_0x08000 = 6,
        GX_CAPTURE_DEST_VRAM_D_0x08000 = 7,

        GX_CAPTURE_DEST_VRAM_A_0x10000 = 8,
        GX_CAPTURE_DEST_VRAM_B_0x10000 = 9,
        GX_CAPTURE_DEST_VRAM_C_0x10000 = 10,
        GX_CAPTURE_DEST_VRAM_D_0x10000 = 11,

        GX_CAPTURE_DEST_VRAM_A_0x18000 = 12,
        GX_CAPTURE_DEST_VRAM_B_0x18000 = 13,
        GX_CAPTURE_DEST_VRAM_C_0x18000 = 14,
        GX_CAPTURE_DEST_VRAM_D_0x18000 = 15
    }
    GXCaptureDest;

## 注意

LCD OFF の状態ではGX の一部の回路のクロックが停止しますので、この関数の設定は無視されます。

## 参照

## 履歴

2009/12/02 注意1, 2に記述されている対象VRAMの誤りを修正
2009/02/25 LCD OFF時に設定が無視される旨を追記
2004/01/19 初版