# GX_SetCapture

## C Specification

      #include <nitro/gx/gx_capture.h>

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

## Arguments

sz | Capture size
mode | Capture mode (select whether to capture A only, B only, or AB blended).
a | Capture data source A (select either screen after 3D/2D blending, or only 3D screen).
`b` | Capture source B (Select VRAM/Main Memory).
dest | Capture data write target (select combination of VRAM-A,B,C,D, and offset).
eva | Blending coefficient (0 – 16) for capture data source A.
evb | Blending coefficient (0 – 16) for capture data source B.

## Return Values

None.

## Description

This function sets to capture one screen of data from line 0 in the next frame. To capture each frame you must call this function in each frame.
Note 1: The target VRAM must already be mapped into LCDC memory. Note 2: When you set VRAM in b, the target VRAM will be the same as the one set in dest. Note 3: When you are in the VRAM display mode, even if you set VRAM that has an offset in b, the VRAM offset specification will not be enabled. If the offset exceeds 0x20000 when the memory is read, it will wrap to 0x00000. Note 4: When writing to dest if offset exceeds 0x20000, it will wrap to 0x00000 and write. Note 5: During RAM capture, one line is always loaded as a 256-dot image. Therefore, it is not possible to perform blending while capturing is in process with the 128x128 dot setting.

`GX_CAPTURE_SIZE_128x128` | 128x128 dot (0x08000 bytes)
`GX_CAPTURE_SIZE_256x64` | 256x64 dot (0x08000 bytes)
`GX_CAPTURE_SIZE_256x128` | 256x128 dot (0x10000 bytes)
`GX_CAPTURE_SIZE_256x192` | 256x192 dot (0x18000 bytes)

`GX_CAPTURE_MODE_A` | Captures capture source A data.
`GX_CAPTURE_MODE_B` | Captures capture source B data.
`GX_CAPTURE_MODE_AB` | Blends capture source A and B data, and captures.

`GX_CAPTURE_SRCA_2D3D` | Captures graphics display screen (after 3D/2D blending).
`GX_CAPTURE_SRCA_3D` | Captures 3D screen.

`GX_CAPTURE_SRCB_VRAM_0x00000` | Reads from VRAM offset 0x00000.
`GX_CAPTURE_SRCB_MRAM` | Captures display results from main memory display mode.
`GX_CAPTURE_SRCB_VRAM_0x08000` | Reads from VRAM offset 0x08000.
`GX_CAPTURE_SRCB_VRAM_0x10000` | Reads from VRAM offset 0x10000.
`GX_CAPTURE_SRCB_VRAM_0x18000` | Reads from VRAM offset 0x18000.

`GX_CAPTURE_DEST_VRAM_A_0x00000` | Writes from VRAM-A offset 0x00000.
`GX_CAPTURE_DEST_VRAM_B_0x00000` | Writes from VRAM-B offset 0x00000.
`GX_CAPTURE_DEST_VRAM_C_0x00000` | Writes from VRAM-C offset 0x00000.
`GX_CAPTURE_DEST_VRAM_D_0x00000` | Writes from VRAM-D offset 0x00000.
`GX_CAPTURE_DEST_VRAM_A_0x08000` | Writes from VRAM-A offset 0x08000.
`GX_CAPTURE_DEST_VRAM_B_0x08000` | Writes from VRAM-B offset 0x08000.
`GX_CAPTURE_DEST_VRAM_C_0x08000` | Writes from VRAM-C offset 0x08000.
`GX_CAPTURE_DEST_VRAM_D_0x08000` | Writes from VRAM-D offset 0x08000.
`GX_CAPTURE_DEST_VRAM_A_0x10000` | Writes from VRAM-A offset 0x10000.
`GX_CAPTURE_DEST_VRAM_B_0x10000` | Writes from VRAM-B offset 0x10000.
`GX_CAPTURE_DEST_VRAM_C_0x10000` | Writes from VRAM-C offset 0x10000.
`GX_CAPTURE_DEST_VRAM_D_0x10000` | Writes from VRAM-D offset 0x10000.
`GX_CAPTURE_DEST_VRAM_A_0x18000` | Writes from VRAM-A offset 0x18000.
`GX_CAPTURE_DEST_VRAM_B_0x18000` | Writes from VRAM-B offset 0x18000.
`GX_CAPTURE_DEST_VRAM_C_0x18000` | Writes from VRAM-C offset 0x18000.
`GX_CAPTURE_DEST_VRAM_D_0x18000` | Writes from VRAM-D offset 0x18000.

Below are the matrix format type definitions used in the argument.

    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_WRAM = 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;

## See Also

## Revision History

01/19/2004 Initial version

CONFIDENTIAL