MCPcopy Create free account
hub / github.com/TASEmulators/fceux / RefreshSprites

Function RefreshSprites

src/ppu.cpp:1559–1673  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1557}
1558
1559static 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;

Callers 1

DoLineFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected