Il dom 31 dic 2023, 17:27 BALATON Zoltan <bala...@eik.bme.hu> ha scritto:
> > palette = vga->last_palette; > > hpel = (hpel >> 1) & 3; > > + > > + /* For 256 color modes, we can adjust the source address and write > directly > > + * to the destination, even if horizontal pel panning is active. > However, > > + * the loop below assumes that the address does not wrap in the > middle of a > > + * plane. If that happens... > > + */ > > + if (addr + (width >> 3) * 4 < VGA_VRAM_SIZE) { > > + addr += hpel * 4; > > + hpel = 0; > > + } > > + > > + /* ... use the panning buffer as in planar modes. */ > > if (hpel) { > > width += 8; > > d = vga->panning_buf; > > Is it possible to do these checks once in vga.c and instead of changing > the return value of the draw functions pass panning_buf as d if needed? > Maybe that way the draw funcs could be left unchanged? > As of the previous patch it could, here however the logic for whether to use the panning_buf depends on the drawing function; 8d2 is special and different from the others. I can remove the optimization, it's not super Important; but it's kind of obvious to do it for the VGA 256-color modes, since they're the only ones with the same bit alignment for all pixels. Paolo > Regards, > BALATON Zoltan > >