33 namespace libsidplayfp
42 const uint8_t &enable, &y_expansion;
46 uint8_t mc_base[SPRITES];
52 y_expansion(regs[0x17]) {}
59 memset(mc_base, 0,
sizeof(mc_base));
60 memset(mc, 0,
sizeof(mc));
70 for (
unsigned int i = 0; i < SPRITES; i++, mask <<= 1)
73 mc[i] = (mc[i] + 3) & 0x3f;
83 for (
unsigned int i = 0; i < SPRITES; i++, mask <<= 1)
88 if (mc_base[i] == 0x3f)
99 exp_flop ^= dma & y_expansion;
107 for (
unsigned int i = 0; i < SPRITES; i++)
119 void checkDma(
unsigned int rasterY, uint8_t regs[0x40])
121 const uint8_t y = rasterY & 0xff;
123 for (
unsigned int i = 0; i < SPRITES; i++, mask <<= 1)
125 if ((enable & mask) && (y == regs[(i << 1) + 1]) && !(dma & mask))
143 for (
unsigned int i = 0; i < SPRITES; i++, mask <<= 1)
145 if (!(data & mask) && !(exp_flop & mask))
150 const uint8_t mc_i = mc[i];
151 const uint8_t mcBase_i = mc_base[i];
153 mc[i] = (0x2a & (mcBase_i & mc_i)) | (0x15 & (mcBase_i | mc_i));
168 inline bool isDma(
unsigned int val)
const