36 const uint8_t &enable, &y_expansion;
40 uint8_t mc_base[SPRITES];
46 y_expansion(regs[0x17]) {}
53 memset(mc_base, 0,
sizeof(mc_base));
54 memset(mc, 0,
sizeof(mc));
64 for (
unsigned int i = 0; i < SPRITES; i++, mask <<= 1)
67 mc[i] = (mc[i] + 3) & 0x3f;
77 for (
unsigned int i = 0; i < SPRITES; i++, mask <<= 1)
82 if (mc_base[i] == 0x3f)
93 exp_flop ^= dma & y_expansion;
101 for (
unsigned int i = 0; i < SPRITES; i++)
110 void checkDma(
unsigned int rasterY, uint8_t regs[0x40])
112 const uint8_t y = rasterY & 0xff;
114 for (
unsigned int i = 0; i < SPRITES; i++, mask <<= 1)
116 if ((enable & mask) && (y == regs[(i << 1) + 1]) && !(dma & mask))
134 for (
unsigned int i = 0; i < SPRITES; i++, mask <<= 1)
136 if (!(data & mask) && !(exp_flop & mask))
141 const uint8_t mc_i = mc[i];
142 const uint8_t mcBase_i = mc_base[i];
144 mc[i] = (0x2a & (mcBase_i & mc_i)) | (0x15 & (mcBase_i | mc_i));
void checkDma(unsigned int rasterY, uint8_t regs[0x40])
Definition: sprites.h:110
bool isDma(unsigned int val) const
Definition: sprites.h:159
void checkDisplay()
Definition: sprites.h:99
void lineCrunch(uint8_t data, unsigned int lineCycle)
Definition: sprites.h:131
void checkExp()
Definition: sprites.h:91
void updateMc()
Definition: sprites.h:61
void updateMcBase()
Definition: sprites.h:74