private void VerticalMask()
{
if (_sprWidth == 0)
return;
var startGridOfs = (int)((_sprY + _sprHeight - 1) * GridX + _sprX);
var startScreenPtr = (int)((_sprY + _sprHeight - 1) * GridH * GameScreenWidth + _sprX * GridW);
for (uint layerCnt = Logic.LAYER_1_ID; layerCnt <= Logic.LAYER_3_ID; layerCnt++)
{
var gridOfs = startGridOfs;
var screenPtr = startScreenPtr;
for (uint widCnt = 0; widCnt < _sprWidth; widCnt++)
{
// x_loop
var nLayerCnt = layerCnt;
while (Logic.ScriptVariables[(int) (nLayerCnt + 3)] != 0)
{
var scrGrid = new UShortAccess(SkyEngine.ItemList[Logic.ScriptVariables[(int) (layerCnt + 3)]], 0);
if (scrGrid[gridOfs] != 0)
{
VertMaskSub(scrGrid, gridOfs, screenPtr, layerCnt);
break;
}
nLayerCnt++;
}
// next_x:
screenPtr += GridW;
gridOfs++;
}
}
}