| 1557 | } |
| 1558 | |
| 1559 | static void RefreshSprites(void) { |
| 1560 | int n; |
| 1561 | SPRB *spr; |
| 1562 | |
| 1563 | spork = 0; |
| 1564 | if (!numsprites) return; |
| 1565 | |
| 1566 | FCEU_dwmemset(sprlinebuf, 0x80808080, 256); |
| 1567 | numsprites--; |
| 1568 | spr = (SPRB*)SPRBUF + numsprites; |
| 1569 | |
| 1570 | for (n = numsprites; n >= 0; n--, spr--) { |
| 1571 | uint32 pixdata; |
| 1572 | uint8 J, atr; |
| 1573 | |
| 1574 | int x = spr->x; |
| 1575 | uint8 *C; |
| 1576 | int VB; |
| 1577 | |
| 1578 | pixdata = ppulut1[spr->ca[0]] | ppulut2[spr->ca[1]]; |
| 1579 | J = spr->ca[0] | spr->ca[1]; |
| 1580 | atr = spr->atr; |
| 1581 | |
| 1582 | if (J) { |
| 1583 | if (n == 0 && SpriteBlurp && !(PPU_status & 0x40)) { |
| 1584 | sphitx = x; |
| 1585 | sphitdata = J; |
| 1586 | if (atr & H_FLIP) |
| 1587 | sphitdata = ((J << 7) & 0x80) | |
| 1588 | ((J << 5) & 0x40) | |
| 1589 | ((J << 3) & 0x20) | |
| 1590 | ((J << 1) & 0x10) | |
| 1591 | ((J >> 1) & 0x08) | |
| 1592 | ((J >> 3) & 0x04) | |
| 1593 | ((J >> 5) & 0x02) | |
| 1594 | ((J >> 7) & 0x01); |
| 1595 | } |
| 1596 | |
| 1597 | C = sprlinebuf + x; |
| 1598 | VB = (0x10) + ((atr & 3) << 2); |
| 1599 | |
| 1600 | if (atr & SP_BACK) { |
| 1601 | if (atr & H_FLIP) { |
| 1602 | if (J & 0x80) C[7] = READPAL(VB | (pixdata & 3)) | 0x40; |
| 1603 | pixdata >>= 4; |
| 1604 | if (J & 0x40) C[6] = READPAL(VB | (pixdata & 3)) | 0x40; |
| 1605 | pixdata >>= 4; |
| 1606 | if (J & 0x20) C[5] = READPAL(VB | (pixdata & 3)) | 0x40; |
| 1607 | pixdata >>= 4; |
| 1608 | if (J & 0x10) C[4] = READPAL(VB | (pixdata & 3)) | 0x40; |
| 1609 | pixdata >>= 4; |
| 1610 | if (J & 0x08) C[3] = READPAL(VB | (pixdata & 3)) | 0x40; |
| 1611 | pixdata >>= 4; |
| 1612 | if (J & 0x04) C[2] = READPAL(VB | (pixdata & 3)) | 0x40; |
| 1613 | pixdata >>= 4; |
| 1614 | if (J & 0x02) C[1] = READPAL(VB | (pixdata & 3)) | 0x40; |
| 1615 | pixdata >>= 4; |
| 1616 | if (J & 0x01) C[0] = READPAL(VB | pixdata) | 0x40; |