Difference between revisions of "Video DMA Block"
Line 74: | Line 74: | ||
|- | |- | ||
| $AF:040F || $AF:040F || VDMA_DST_STRIDE_H | | $AF:040F || $AF:040F || VDMA_DST_STRIDE_H | ||
+ | |||
+ | == VDMA_SRC_ADDY == | ||
+ | |||
+ | This 3-byte register is set to the 24-bit address of the first byte of the source block to transfer. | ||
+ | It must be an address within video RAM and the address is relative to the start of video RAM ($00:0000 - $3F:FFFF). | ||
+ | This address is only used if video RAM is the source of the block. If the VDMA is a fill operation, or the source of the | ||
+ | block is in system RAM, this register are not used. | ||
+ | |||
+ | == VDMA_DST_ADDY == | ||
+ | |||
+ | This 3-byte register is set to the 24-bit address of the first byte destination block. | ||
+ | It must be an address within video RAM and the address is relative to the start of video RAM ($00:0000 - $3F:FFFF). | ||
+ | This address is only used if video RAM is the destination of the VDMA. | ||
+ | If the destination of the transfer is system RAM, this register is not used. | ||
+ | |||
+ | == VDMA Size == | ||
+ | |||
+ | The size of the block to transfer is specified in one of two ways. For a 1-D or linear transfer (bit VDMA_CTRL_1D_2D in the control register is clear), the size is specified as a 24-bit integer using VDMA_SIZE_L, VDMA_SIZE_M, and VDMA_SIZE_H. | ||
+ | If the transfer is a 2-D or block transfer (bit VDMA_CTRL_1D_2D in the control register is set), the size is specified as a 16-bit width stored | ||
+ | in VDMA_X_SIZE_L and VDMA_X_SIZE_H, and a 16-bit height stored in VDMA_Y_SIZE_L and VDMA_Y_SIZE_L. |
Revision as of 11:53, 18 January 2021
Start Address | Stop Address | Register Description | Additional Info | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$AF:0400 | $AF:0400 | VDMA_CONTROL_REG | VDMA control register
| ||||||||||||||||||||||||
$AF:0401 | $AF:0401 | VDMA_STATUS_REG / VDMA_BYTE_2_WRITE | On write, accepts the byte to use in the fill function.
On read, this register shows the status of the VDMA:
| ||||||||||||||||||||||||
$AF:0402 | $AF:0402 | VDMA_SRC_ADDY_L | 24-bit address of the source block (relative to start of video RAM) | ||||||||||||||||||||||||
$AF:0403 | $AF:0403 | VDMA_SRC_ADDY_M | |||||||||||||||||||||||||
$AF:0404 | $AF:0404 | VDMA_SRC_ADDY_H | |||||||||||||||||||||||||
$AF:0405 | $AF:0405 | VDMA_DST_ADDY_L | 24-bit address of the source block (relative to start of video RAM) | ||||||||||||||||||||||||
$AF:0406 | $AF:0406 | VDMA_DST_ADDY_M | |||||||||||||||||||||||||
$AF:0407 | $AF:0407 | VDMA_DST_ADDY_H | |||||||||||||||||||||||||
$AF:0408 | $AF:0408 | VDMA_SIZE_L / VDMA_X_SIZE_L | For 1-D DMA, 24-bit size of transfer in bytes. For 2-D, 16-bit width of block | ||||||||||||||||||||||||
$AF:0409 | $AF:0409 | VDMA_SIZE_M / VDMA_X_SIZE_H | |||||||||||||||||||||||||
$AF:040A | $AF:040A | VDMA_SIZE_H / VDMA_Y_SIZE_L | For 2-D transfer, 16-bit height of block | ||||||||||||||||||||||||
$AF:040B | $AF:040B | VDMA_RESERVED_0 / VDMA_Y_SIZE_H | |||||||||||||||||||||||||
$AF:040C | $AF:040C | VDMA_SRC_STRIDE_L | Number of bytes per row in a 2-D source block | ||||||||||||||||||||||||
$AF:040D | $AF:040D | VDMA_SRC_STRIDE_H | |||||||||||||||||||||||||
$AF:040E | $AF:040E | VDMA_DST_STRIDE_L | Number of bytes per row in a 2-D destination block | ||||||||||||||||||||||||
$AF:040F | $AF:040F | VDMA_DST_STRIDE_H
VDMA_SRC_ADDYThis 3-byte register is set to the 24-bit address of the first byte of the source block to transfer. It must be an address within video RAM and the address is relative to the start of video RAM ($00:0000 - $3F:FFFF). This address is only used if video RAM is the source of the block. If the VDMA is a fill operation, or the source of the block is in system RAM, this register are not used. VDMA_DST_ADDYThis 3-byte register is set to the 24-bit address of the first byte destination block. It must be an address within video RAM and the address is relative to the start of video RAM ($00:0000 - $3F:FFFF). This address is only used if video RAM is the destination of the VDMA. If the destination of the transfer is system RAM, this register is not used. VDMA SizeThe size of the block to transfer is specified in one of two ways. For a 1-D or linear transfer (bit VDMA_CTRL_1D_2D in the control register is clear), the size is specified as a 24-bit integer using VDMA_SIZE_L, VDMA_SIZE_M, and VDMA_SIZE_H. If the transfer is a 2-D or block transfer (bit VDMA_CTRL_1D_2D in the control register is set), the size is specified as a 16-bit width stored in VDMA_X_SIZE_L and VDMA_X_SIZE_H, and a 16-bit height stored in VDMA_Y_SIZE_L and VDMA_Y_SIZE_L. |