return;
}
addr &= 0xffff;
- gfxboard_bput_io_swap_pcem(addr, v);
+ if (size == 2) {
+ gfxboard_lput_io_swap_pcem(addr, v);
+ } else if (size == 1) {
+ gfxboard_wput_io_swap_pcem(addr, v);
+ } else {
+ gfxboard_bput_io_swap_pcem(addr, v);
+ }
} else if (boardnum == GFXBOARD_ID_RETINA_Z2) {
return v;
}
addr &= 0xffff;
- v = gfxboard_bget_io_swap_pcem(addr);
+ if (size == 2) {
+ v = gfxboard_lget_io_swap_pcem(addr);
+ } else if (size == 1) {
+ v = gfxboard_wget_io_swap_pcem(addr);
+ } else {
+ v = gfxboard_bget_io_swap_pcem(addr);
+ }
} else if (boardnum == GFXBOARD_ID_RETINA_Z2) {
svga->hwcursor_latch.addr += (svga->hwcursor.xsize / 8);
int xdbl = 1 << svga->hwcursor.h_acc;
+ if (svga->bpp == 16 && svga->hwcursor.h_acc > 0) {
+ xdbl = 1 << (svga->hwcursor.h_acc - 1);
+ }
for (x = 0; x < svga->hwcursor.xsize; x += 8)
{
svga->hwcursor_latch.addr--;
{
if (offset >= svga->hwcursor_latch.x)
{
- for (int i = 0; i <xdbl; i++) {
+ for (int i = 0; i < xdbl; i++) {
if (!(dat[0] & 0x80))
((uint32_t *)buffer32->line[displine])[offset * xdbl + i + 32] = c[(dat[1] & 0x80) ? 0 : 1];
else if (dat[1] & 0x80)
switch (addr)
{
+ case 0x3c6:
+ ncr->ramdacbpp = val;
+ break;
case 0x3c4:
svga->seqaddr = val & 0x3f;
break;
{
if (ncr->chip < NCR_TYPE_32BLT) {
svga->bpp = ncr->ramdacbpp;
+ } else {
+ if (ncr->ramdacbpp & 0x40) {
+ svga->bpp = (ncr->ramdacbpp & 0x20) ? 16 : 24;
+ }
}
}
switch (svga->bpp)