__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); }
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; }
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; }