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側のキャプチャ時は常に1ラインが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 初版