Esempio n. 1
0
__regargs CopInsT *CopWaitSafe(CopListT *list, UWORD vp, UWORD hp) {
  if (!(list->flags & CLF_VPOVF) && (vp >= 256)) {
    /* Wait for last waitable position to control when overflow occurs. */
    CopWaitEOL(list, 255);
    list->flags |= CLF_VPOVF;
  }

  return CopWait(list, vp, hp);
}
Esempio n. 2
0
static CopListT *MakeCopperList(WORD n) {
  CopListT *cp = NewCopList(100 + 3 * HEIGHT);
  CopInit(cp);
  CopSetupGfxSimple(cp, MODE_HIRES, DEPTH, X(0), Y(0), WIDTH, HEIGHT);
  CopSetupBitplanes(cp, NULL, scroll, DEPTH);

  CopLoadPal(cp, font->palette, 0);
  {
    UWORD i;
    APTR ptr = scroll->planes[0];

    for (i = 0; i < HEIGHT; i++, ptr += scroll->bytesPerRow) {
      CopWait(cp, Y(i), 0);
      linebpl[n][i] = CopMove32(cp, bplpt[0], ptr);
    }
  }
  CopEnd(cp);
  return cp;
}
Esempio n. 3
0
static void MakeCopperList(CopListT **ptr, WORD n) {
  CopListT *cp = NewCopList(100 + HEIGHT * 5 + (31 * HEIGHT / 3));
  WORD *pixels = texture->pixels;
  WORD i, j, k;

  CopInit(cp);
  CopSetupGfxSimple(cp, MODE_LORES, DEPTH, X(STARTX), Y(0), WIDTH, HEIGHT);
  CopSetupBitplanes(cp, bplptr[n], twister, DEPTH);
  CopSetupSprites(cp, sprptr[n]);
  CopMove16(cp, dmacon, DMAF_SETCLR|DMAF_RASTER);
  CopMove16(cp, diwstrt, 0x2c81);
  CopMove16(cp, diwstop, 0x2bc1);
  CopSetColor(cp, 0, &gradient->colors[0]);

  for (i = 0, k = 0; i < HEIGHT; i++) {
    CopWait(cp, Y(i), 0);
    bplmod[n][i] = CopMove16(cp, bpl1mod, -32);
    CopMove16(cp, bpl2mod, -32);
    CopMove16(cp, bpldat[0], 0);

    CopSetColor(cp, 0, &gradient->colors[i]);

    if ((i % 3) == 0) {
      colors[n][k++] = CopSetRGB(cp, 1, *pixels++);
      for (j = 2; j < 32; j++)
        CopSetRGB(cp, j, *pixels++);
    }
  }

  CopEnd(cp);

  CopInsSet32(sprptr[n][4], left[0]->data);
  CopInsSet32(sprptr[n][5], left[1]->data);
  CopInsSet32(sprptr[n][6], right[0]->data);
  CopInsSet32(sprptr[n][7], right[1]->data);

  *ptr = cp;
}