+ for(i=0; i<16; i++) {
+ REG_COLOR_PTR[i + 16] = sprpal[i];
+ }
+
+ sprdata[0] = spr0a;
+ sprdata[1] = spr0b;
+ sprdata[2] = spr1a;
+ sprdata[3] = spr1b;
+ sprdata[4] = spr2a;
+ sprdata[5] = spr2b;
+
+ for(i=0; i<8; i++) {
+ int reg = REGN_SPR0PTH + i * 4;
+ if(i < NUM_HWSPRITES) {
+ uint16_t sx, sy, vstop;
+ /* initialize active sprites, and set the sprite pointers */
+ uint32_t addr = (intptr_t)sprdata[i];
+ add_copper(COPPER_MOVE(reg, addr >> 16));
+ add_copper(COPPER_MOVE(reg + 2, addr));
+
+ sx = 0x80 + sprpos[0] + (i >> 1) * 16;
+ sy = 0x2c + sprpos[1];
+ vstop = sy + SPRITE_HEIGHT;
+
+ sprdata[i][0] = (sx >> 1) | (sy << 8);
+ sprdata[i][1] = (vstop << 8) | ((vstop >> 7) & 2) |
+ (sx & 1) | ((i & 1) ? 0x80 : 0);
+ } else {
+ /* point the sprite pointers to the null sprite for the rest */
+ add_copper(COPPER_MOVE(reg, nullspr_addr >> 16));
+ add_copper(COPPER_MOVE(reg + 2, nullspr_addr));
+ }
+ }
+
+ *copperlist_end = COPPER_END;
+