Files
mazegame/engine/doc/html/files/vdp_inl-h.html
T

139 lines
36 KiB
HTML

<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>vdp_inl.h</title><link rel="stylesheet" type="text/css" href="../styles/main.css" /><script type="text/javascript" src="../styles/main.js"></script><script type="text/javascript">NDLoader.LoadJS("Content", "../styles/");</script></head>
<!-- Generated by Natural Docs, version 2.2 -->
<!-- saved from url=(0016)http://localhost -->
<body onload="NDLoader.OnLoad('Content');" class="NDPage NDContentPage">
<a name="Functions"></a><a name="Topic469"></a><div class="CTopic TGroup LC first">
<div class="CTitle">Functions</div>
</div>
<a name="VDP_CommandHMMC_Arg"></a><a name="Topic470"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandHMMC_Arg</div>
<div id="NDPrototype470" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandHMMC_Arg(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PModifierQualifier first"><span class="SHKeyword">const</span>&nbsp;</td><td class="PType">u8*&nbsp;</td><td class="PName last">addr,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">nx,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">ny,</td></tr><tr><td class="first"></td><td class="PType">u8&nbsp;</td><td class="PName last">arg</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>High speed move CPU to VRAM. [MSX2/2+/TR]</p></div>
</div>
<a name="VDP_CommandHMMC"></a><a name="Topic471"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandHMMC</div>
<div id="NDPrototype471" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandHMMC(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PModifierQualifier first"><span class="SHKeyword">const</span>&nbsp;</td><td class="PType">u8*&nbsp;</td><td class="PName last">addr,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">nx,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">ny</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>High speed move CPU to VRAM. [MSX2/2+/TR]</p><div class="CHeading">Parameters</div><table class="CDefinitionList"><tr><td class="CDLEntry">addr<div class="CDLParameterType"><span class="SHKeyword">const</span> u8*</div></td><td class="CDLDefinition"><p>Address of the source data</p></td></tr><tr><td class="CDLEntry">dx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the destination area (must be multiple of 2 in GM4 and GM6 mode, and multiple of 4 in GM5)</p></td></tr><tr><td class="CDLEntry">dy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">nx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Width of the destinatio area (same limitation as DX)</p></td></tr><tr><td class="CDLEntry">ny<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Height of the destination area</p></td></tr></table></div>
</div>
<a name="VDP_CommandYMMM"></a><a name="Topic472"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandYMMM</div>
<div id="NDPrototype472" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandYMMM(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PType first">u16&nbsp;</td><td class="PName last">sy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">ny,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">dir</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>High speed move VRAM to VRAM, Y coordinate only. [MSX2/2+/TR] This function copies data from the coordinates (dx, sy)-(255, sy+ny) to (dx, dy)-(255,dy+ny).</p><div class="CHeading">Parameters</div><table class="CDefinitionList"><tr><td class="CDLEntry">sy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the source area</p></td></tr><tr><td class="CDLEntry">dx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the destination area (must be multiple of 2 in GM4 and GM6 mode, and multiple of 4 in GM5)</p></td></tr><tr><td class="CDLEntry">dy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">ny<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Height of the area to move</p></td></tr><tr><td class="CDLEntry">dir<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Direction of the move from the destination: 0 when sy &lt; dy 1 when sy &gt; dy</p></td></tr></table></div>
</div>
<a name="VDP_CommandHMMM_Arg"></a><a name="Topic473"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandHMMM_Arg</div>
<div id="NDPrototype473" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandHMMM_Arg(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PType first">u16&nbsp;</td><td class="PName last">sx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">sy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">nx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">ny,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">arg</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>High speed move VRAM to VRAM. [MSX2/2+/TR]</p><p>This function copies rectangular sections from VRAM to VRAM.</p><p>By default, the copy is done from (sx,sy)-(sx+nx,sy+ny) to (dx,dy)-(dx+nx,dy+ny), that is, left to right and top to bottom. However, this order can be changed by specifying values in the argument register parameter (see below).&nbsp; Also, this function by default copies data from and to the standard MSX2/2+/TR VRAM addresses, that is, below 128kb. To deal with addresses above that (in the rare case of a MSX with 192kb VRAM), there is an argument register value for that too.</p><div class="CHeading">Parameters</div><table class="CDefinitionList"><tr><td class="CDLEntry">sx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the source area (must be multiple of 2 in GM4 and GM6 mode, and multiple of 4 in GM5)</p></td></tr><tr><td class="CDLEntry">sy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the source area</p></td></tr><tr><td class="CDLEntry">dx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the destination area (same limitation as SX)</p></td></tr><tr><td class="CDLEntry">dy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">nx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Width of the area (same limitation as SX)</p></td></tr><tr><td class="CDLEntry">ny<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Height of the area</p></td></tr><tr><td class="CDLEntry">arg<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Argument register: VDP_ARG_DIY_DOWN (0) copies from line sy to line sy + ny</p></td></tr><tr><td class="CDLEntry">VDP_ARG_DIY_UP (4) copies from line sy</td><td class="CDLDefinition"><p>ny to line sy VDP_ARG_DIX_RIGHT (0) copies from column sx to sx + nx</p></td></tr><tr><td class="CDLEntry">VDP_ARG_DIX_LEFT (8) copies from column sx</td><td class="CDLDefinition"><p>nx to sx 16&nbsp; copies from extended VRAM (between 128kb and 192kb) 32&nbsp; copies to extended VRAM (between 128kb and 192kb)</p></td></tr></table></div>
</div>
<a name="VDP_CommandHMMM"></a><a name="Topic474"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandHMMM</div>
<div id="NDPrototype474" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandHMMM(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PType first">u16&nbsp;</td><td class="PName last">sx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">sy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">nx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">ny</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>High speed move VRAM to VRAM. [MSX2/2+/TR]</p><p>This function copies data from the coordinates (sx, sy)-(sx+nx, sy+ny) to (dx, dy)-(dx+nx,dy+ny).</p><div class="CHeading">Parameters</div><table class="CDefinitionList"><tr><td class="CDLEntry">sx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the source area (must be multiple of 2 in GM4 and GM6 mode, and multiple of 4 in GM5)</p></td></tr><tr><td class="CDLEntry">sy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the source area</p></td></tr><tr><td class="CDLEntry">dx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the destination area (same limitation as SX)</p></td></tr><tr><td class="CDLEntry">dy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">nx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Width of the area (same limitation as SX)</p></td></tr><tr><td class="CDLEntry">ny<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Height of the area</p></td></tr></table></div>
</div>
<a name="VDP_CommandHMMV_Arg"></a><a name="Topic475"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandHMMV_Arg</div>
<div id="NDPrototype475" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandHMMV_Arg(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">nx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">ny,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">col,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">arg</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>High speed move VDP to VRAM. [MSX2/2+/TR]</p><p>This function fills a retangular area with the byte col (bear in mind the bit depth of the mode you're using).</p><p>By default, the filling is done from (sx,sy)-(sx+nx,sy+ny) to (dx,dy)-(dx+nx,dy+ny), that is, left to right and top to bottom. However, this order can be changed by specifying values in the argument register parameter (see below).&nbsp; Also, this function by default filling data inside standard MSX2/2+/TR VRAM addresses, that is, below 128kb. To deal with addresses above that (in the rare case of a MSX with 192kb VRAM), there is an argument register value for that too;</p><div class="CHeading">Parameters</div><table class="CDefinitionList"><tr><td class="CDLEntry">sx</td><td class="CDLDefinition"><p>X coordinate of the source area (must be multiple of 2 in GM4 and GM6 mode, and multiple of 4 in GM5)</p></td></tr><tr><td class="CDLEntry">sy</td><td class="CDLDefinition"><p>Y coordinate of the source area</p></td></tr><tr><td class="CDLEntry">dx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the destination area (same limitation as SX)</p></td></tr><tr><td class="CDLEntry">dy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">nx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Width of the area (same limitation as SX)</p></td></tr><tr><td class="CDLEntry">ny<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Height of the area</p></td></tr><tr><td class="CDLEntry">col<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Byte to fill the area</p></td></tr><tr><td class="CDLEntry">arg<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Argument register: VDP_ARG_DIY_DOWN (0) fills from line sy to line sy + ny</p></td></tr><tr><td class="CDLEntry">VDP_ARG_DIY_UP (4) fills from line sy</td><td class="CDLDefinition"><p>ny to line sy VDP_ARG_DIX_RIGHT (0) fills from column sx to sx + nx</p></td></tr><tr><td class="CDLEntry">VDP_ARG_DIX_LEFT (8) fills from column sx</td><td class="CDLDefinition"><p>nx to sx 16&nbsp; fills extended VRAM (between 128kb and 192kb)</p></td></tr></table></div>
</div>
<a name="VDP_CommandHMMV"></a><a name="Topic476"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandHMMV</div>
<div id="NDPrototype476" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandHMMV(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">nx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">ny,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">col</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>High speed move VDP to VRAM. [MSX2/2+/TR]</p><p>This function fills a retangular area (dx,dy)-(dx+nx,dy+ny) with the byte col (bear in mind the bit depth of the mode you're using), from left to right, top to bottom.</p><div class="CHeading">Parameters</div><table class="CDefinitionList"><tr><td class="CDLEntry">dx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the destination area (must be multiple of 2 in GM4 and GM6 mode, and multiple of 4 in GM5)</p></td></tr><tr><td class="CDLEntry">dy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">nx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Width of the area (same limitation as DX)</p></td></tr><tr><td class="CDLEntry">ny<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Height of the area</p></td></tr><tr><td class="CDLEntry">col<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Color data</p></td></tr></table></div>
</div>
<a name="VDP_CommandLMMC_Arg"></a><a name="Topic477"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandLMMC_Arg</div>
<div id="NDPrototype477" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandLMMC_Arg(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PModifierQualifier first"><span class="SHKeyword">const</span>&nbsp;</td><td class="PType">u8*&nbsp;</td><td class="PName last">addr,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">nx,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">ny,</td></tr><tr><td class="first"></td><td class="PType">u8&nbsp;</td><td class="PName last">op,</td></tr><tr><td class="first"></td><td class="PType">u8&nbsp;</td><td class="PName last">arg</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>Logical move CPU to VRAM. [MSX2/2+/TR]</p></div>
</div>
<a name="VDP_CommandLMMC"></a><a name="Topic478"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandLMMC</div>
<div id="NDPrototype478" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandLMMC(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PModifierQualifier first"><span class="SHKeyword">const</span>&nbsp;</td><td class="PType">u8*&nbsp;</td><td class="PName last">addr,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">nx,</td></tr><tr><td class="first"></td><td class="PType">u16&nbsp;</td><td class="PName last">ny,</td></tr><tr><td class="first"></td><td class="PType">u8&nbsp;</td><td class="PName last">op</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>Logical move CPU to VRAM. [MSX2/2+/TR]</p><div class="CHeading">Parameters</div><table class="CDefinitionList"><tr><td class="CDLEntry">addr<div class="CDLParameterType"><span class="SHKeyword">const</span> u8*</div></td><td class="CDLDefinition"><p>Address of the source data</p></td></tr><tr><td class="CDLEntry">dx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">dy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">nx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Width of the area</p></td></tr><tr><td class="CDLEntry">ny<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Height of the area</p></td></tr><tr><td class="CDLEntry">op<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Color blend operation</p></td></tr></table></div>
</div>
<a name="VDP_CommandLMCM"></a><a name="Topic479"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandLMCM</div>
<div id="NDPrototype479" class="NDPrototype"><div class="PSection PPlainSection"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandLMCM()</div></div>
<div class="CBody"><p>Logical move VRAM to CPU (not implemented). [MSX2/2+/TR]</p></div>
</div>
<a name="VDP_CommandLMMM_Arg"></a><a name="Topic480"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandLMMM_Arg</div>
<div id="NDPrototype480" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandLMMM_Arg(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PType first">u16&nbsp;</td><td class="PName last">sx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">sy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">nx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">ny,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">op,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">arg</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>Logical move VRAM to VRAM. [MSX2/2+/TR]</p></div>
</div>
<a name="VDP_CommandLMMM"></a><a name="Topic481"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandLMMM</div>
<div id="NDPrototype481" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandLMMM(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PType first">u16&nbsp;</td><td class="PName last">sx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">sy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">nx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">ny,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">op</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>Logical move VRAM to VRAM. [MSX2/2+/TR]</p><p>This function copies rectangular sections from VRAM to VRAM, applying a logical operator between the value on source and the value on destination.</p><p>Specifying AND operation means that the final pixel will be the source pixel AND the destination pixel.&nbsp; Same goes for OR and XOR.</p><p>NOT disregards the pixel at destination, and copies a negated pixel from the source.</p><p>All logic operators preceded by a &quot;T&quot; (TAND, TOR, TXOR, TNOT) behaves as the regular versions, but they keep the destination pixel untouched if the source pixel is transparent (usually 0)</p><table class="CDefinitionList"><tr><td class="CDLEntry">The TIMP operation copies data from source to value, except transparent ones</td><td class="CDLDefinition"><p>useful for</p></td></tr><tr><td class="CDLEntry">superimposing two images. IMP copies everything, including the transparent pixels</td><td class="CDLDefinition"><p>so consider using the faster command VDP_CommandHMMM instead)</p></td></tr></table><div class="CHeading">Parameters</div><table class="CDefinitionList"><tr><td class="CDLEntry">sx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the source area</p></td></tr><tr><td class="CDLEntry">sy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the source area</p></td></tr><tr><td class="CDLEntry">dx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">dy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">nx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Width of the area</p></td></tr><tr><td class="CDLEntry">ny<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Height of the area</p></td></tr><tr><td class="CDLEntry">op<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Color blend operation VDP_OP_IMP (0x00) copies everything (consider using the faster function HMMM) VDP_OP_AND (0x01) applies an AND operation between source and destination VDP_OP_OR (0x02) applies an OR operation between source and destination VDP_OP_XOR (0x03) applies a XOR operation between source and destination VDP_OP_NOT (0x04) applies a NOT operation in the source pixel VDP_OP_TIMP (0x08) copies only non-transparent pixels (superimpose) VDP_OP_TAND (0x09) same as AND, but dont change pixels transparent at the source VDP_OP_TOR (0x0A) same as OR, but dont change pixels transparent at the source VDP_OP_TXOR (0x0B) same as XOR, but dont change pixels transparent at the source VDP_OP_TNOT (0x0C) same as NOT, but dont change pixels transparent at the source</p></td></tr></table></div>
</div>
<a name="VDP_CommandLMMV_Arg"></a><a name="Topic482"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandLMMV_Arg</div>
<div id="NDPrototype482" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandLMMV_Arg(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">nx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">ny,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">col,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">op,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">arg</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>Logical move VDP to VRAM. [MSX2/2+/TR]</p></div>
</div>
<a name="VDP_CommandLMMV"></a><a name="Topic483"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandLMMV</div>
<div id="NDPrototype483" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandLMMV(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">nx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">ny,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">col,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">op</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>Logical move VDP to VRAM. [MSX2/2+/TR]</p><div class="CHeading">Parameters</div><table class="CDefinitionList"><tr><td class="CDLEntry">dx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">dy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">nx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Width of the area</p></td></tr><tr><td class="CDLEntry">ny<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Height of the area</p></td></tr><tr><td class="CDLEntry">col<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Color data</p></td></tr><tr><td class="CDLEntry">op<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Color blend operation</p></td></tr></table></div>
</div>
<a name="VDP_CommandLINE"></a><a name="Topic484"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandLINE</div>
<div id="NDPrototype484" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandLINE(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">nx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">ny,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">col,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">arg,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">op</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>Draw straight line in VRAM. [MSX2/2+/TR]</p><div class="CHeading">Parameters</div><table class="CDefinitionList"><tr><td class="CDLEntry">dx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">dy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">nx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Width of the area</p></td></tr><tr><td class="CDLEntry">ny<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Height of the area</p></td></tr><tr><td class="CDLEntry">col<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Color data</p></td></tr><tr><td class="CDLEntry">arg<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Command argument</p></td></tr><tr><td class="CDLEntry">op<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Color blend operation</p></td></tr></table></div>
</div>
<a name="VDP_CommandSRCH"></a><a name="Topic485"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandSRCH</div>
<div id="NDPrototype485" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandSRCH(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PType first">u16&nbsp;</td><td class="PName last">sx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">sy,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">col,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">arg</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>Search for the specific color in VRAM to the right or left of the starting point (not fonctional). [MSX2/2+/TR]</p><div class="CHeading">Parameters</div><table class="CDefinitionList"><tr><td class="CDLEntry">sx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the source area</p></td></tr><tr><td class="CDLEntry">sy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the source area</p></td></tr><tr><td class="CDLEntry">col<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Color data</p></td></tr><tr><td class="CDLEntry">arg<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Command argument</p></td></tr></table></div>
</div>
<a name="VDP_CommandPSET"></a><a name="Topic486"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandPSET</div>
<div id="NDPrototype486" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandPSET(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">dy,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">col,</td></tr><tr><td class="PType first">u8&nbsp;</td><td class="PName last">op</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>Draw a dot in VRAM. [MSX2/2+/TR]</p><div class="CHeading">Parameters</div><table class="CDefinitionList"><tr><td class="CDLEntry">dx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">dy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the destination area</p></td></tr><tr><td class="CDLEntry">col<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Color data</p></td></tr><tr><td class="CDLEntry">op<div class="CDLParameterType">u8</div></td><td class="CDLDefinition"><p>Color blend operation</p></td></tr></table></div>
</div>
<a name="VDP_CommandPOINT"></a><a name="Topic487"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandPOINT</div>
<div id="NDPrototype487" class="NDPrototype WideForm"><div class="PSection PParameterSection CStyle"><table><tr><td class="PBeforeParameters"><span class="SHKeyword">inline</span> u8 VDP_CommandPOINT(</td><td class="PParametersParentCell"><table class="PParameters"><tr><td class="PType first">u16&nbsp;</td><td class="PName last">sx,</td></tr><tr><td class="PType first">u16&nbsp;</td><td class="PName last">sy</td></tr></table></td><td class="PAfterParameters">)</td></tr></table></div></div>
<div class="CBody"><p>Read the color of the specified dot located in VRAM. [MSX2/2+/TR]</p><div class="CHeading">Parameters</div><table class="CDefinitionList"><tr><td class="CDLEntry">sx<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>X coordinate of the source area</p></td></tr><tr><td class="CDLEntry">sy<div class="CDLParameterType">u16</div></td><td class="CDLDefinition"><p>Y coordinate of the source area</p></td></tr></table></div>
</div>
<a name="VDP_CommandSTOP"></a><a name="Topic488"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandSTOP</div>
<div id="NDPrototype488" class="NDPrototype"><div class="PSection PPlainSection"><span class="SHKeyword">inline</span> <span class="SHKeyword">void</span> VDP_CommandSTOP()</div></div>
<div class="CBody"><p>Abort the current command. [MSX2/2+/TR]</p></div>
</div>
<a name="VDP_CommandCustomR32"></a><a name="Topic489"></a><div class="CTopic TFunction LC">
<div class="CTitle">VDP_CommandCustomR32</div>
<div class="CBody"><p>Set a command from a given buffer starting mapped from VDP register R32 (15 bytes buffer)</p></div>
</div>
<a name="VDP_CommandCustomR36"></a><a name="Topic490"></a><div class="CTopic TFunction LC last">
<div class="CTitle">VDP_CommandCustomR36</div>
<div class="CBody"><p>Set a command from a given buffer starting mapped from VDP register R36 (11 bytes buffer)</p></div>
</div>
</body></html>