void drawVLine(int argb, boolean tScreened, int x, int y, int z, int h) {
    // hover, labels only
    int width = g3d.width;
    int height = g3d.height;
    if (h < 0) {
      y += h;
      h = -h;
    }
    int[] pbuf = g3d.pbuf;
    int[] zbuf = g3d.zbuf;
    if (y < 0) {
      h += y;
      y = 0;
    }
    if (y + h >= height) {
      h = height - 1 - y;
    }
    int offset = x + width * y;
    if (!tScreened) {
      for (int i = 0; i <= h; i++) {
        if (z < zbuf[offset]) {
          zbuf[offset] = z;
          pbuf[offset] = argb;
        }
        offset += width;
      }
      return;
    }
    boolean flipflop = ((x ^ y) & 1) != 0;
    for (int i = 0; i <= h; i++) {
      if ((flipflop = !flipflop) && z < zbuf[offset]) {
        zbuf[offset] = z;
        pbuf[offset] = argb;
      }
      offset += width;
    }
  }