PCem

changeset 88:2c16e2e509d0

Fixed dirty screen updating in high resolution modes.
author TomW
date Sat Mar 22 19:10:00 2014 +0000
parents cf0361af6563
children 9c985b55cc4e
files src/vid_ati_mach64.c src/vid_cl5429.c src/vid_et4000w32.c src/vid_et4000w32i.c src/vid_s3.c src/vid_s3_virge.c src/vid_svga.c src/vid_svga_render.c src/vid_tgui9440.c
diffstat 9 files changed, 48 insertions(+), 48 deletions(-) [+]
line diff
     1.1 --- a/src/vid_ati_mach64.c	Sat Mar 22 17:04:25 2014 +0000
     1.2 +++ b/src/vid_ati_mach64.c	Sat Mar 22 19:10:00 2014 +0000
     1.3 @@ -633,17 +633,17 @@
     1.4  #define WRITE(addr, width)      if (width == 0)                                                         \
     1.5                                  {                                                                       \
     1.6                                          svga->vram[(addr) & 0x7fffff] = dest_dat;                             \
     1.7 -                                        svga->changedvram[((addr) & 0x7fffff) >> 10] = changeframecount;      \
     1.8 +                                        svga->changedvram[((addr) & 0x7fffff) >> 12] = changeframecount;      \
     1.9                                  }                                                                       \
    1.10                                  else if (width == 1)                                                    \
    1.11                                  {                                                                       \
    1.12                                          *(uint16_t *)&svga->vram[((addr) << 1) & 0x7fffff] = dest_dat;          \
    1.13 -                                        svga->changedvram[(((addr) << 1) & 0x7fffff) >> 10] = changeframecount; \
    1.14 +                                        svga->changedvram[(((addr) << 1) & 0x7fffff) >> 12] = changeframecount; \
    1.15                                  }                                                                       \
    1.16                                  else                                                                    \
    1.17                                  {                                                                       \
    1.18                                          *(uint32_t *)&svga->vram[((addr) << 2) & 0x7fffff] = dest_dat;          \
    1.19 -                                        svga->changedvram[(((addr) << 2) & 0x7fffff) >> 10] = changeframecount; \
    1.20 +                                        svga->changedvram[(((addr) << 2) & 0x7fffff) >> 12] = changeframecount; \
    1.21                                  }
    1.22  
    1.23  void mach64_blit(uint32_t cpu_dat, int count, mach64_t *mach64)
     2.1 --- a/src/vid_cl5429.c	Sat Mar 22 17:04:25 2014 +0000
     2.2 +++ b/src/vid_cl5429.c	Sat Mar 22 19:10:00 2014 +0000
     2.3 @@ -351,14 +351,14 @@
     2.4          if (addr >= svga->vram_limit)
     2.5                  return;
     2.6  //        if (svga_output) pclog("%08X\n", addr);
     2.7 -        svga->changedvram[addr >> 10] = changeframecount;
     2.8 +        svga->changedvram[addr >> 12] = changeframecount;
     2.9          
    2.10          switch (svga->writemode)
    2.11          {
    2.12                  case 4:
    2.13                  pclog("Writemode 4 : %X ", addr);
    2.14                  addr <<= 1;
    2.15 -                svga->changedvram[addr >> 10] = changeframecount;
    2.16 +                svga->changedvram[addr >> 12] = changeframecount;
    2.17                  pclog("%X %X\n", addr, val);
    2.18                  if (val & 0x80)
    2.19                          svga->vram[addr + 0] = svga->gdcreg[1];
    2.20 @@ -381,7 +381,7 @@
    2.21                  case 5:
    2.22                  pclog("Writemode 5 : %X ", addr);
    2.23                  addr <<= 1;
    2.24 -                svga->changedvram[addr >> 10] = changeframecount;
    2.25 +                svga->changedvram[addr >> 12] = changeframecount;
    2.26                  pclog("%X %X\n", addr, val);
    2.27                  svga->vram[addr + 0] = (val & 0x80) ? svga->gdcreg[1] : svga->gdcreg[0];
    2.28                  svga->vram[addr + 1] = (val & 0x40) ? svga->gdcreg[1] : svga->gdcreg[0];
    2.29 @@ -618,7 +618,7 @@
    2.30                          count--;                        
    2.31                  }
    2.32                  dst = svga->vram[gd5429->blt.dst_addr & svga->vrammask];
    2.33 -                svga->changedvram[(gd5429->blt.dst_addr & svga->vrammask) >> 10] = changeframecount;
    2.34 +                svga->changedvram[(gd5429->blt.dst_addr & svga->vrammask) >> 12] = changeframecount;
    2.35                 
    2.36                  pclog("Blit %i,%i %06X %06X  %06X %02X %02X  %02X %02X ", gd5429->blt.width, gd5429->blt.height_internal, gd5429->blt.src_addr, gd5429->blt.dst_addr, gd5429->blt.src_addr & svga->vrammask, svga->vram[gd5429->blt.src_addr & svga->vrammask], 0x80 >> (gd5429->blt.dst_addr & 7), src, dst);
    2.37                  switch (gd5429->blt.rop)
     3.1 --- a/src/vid_et4000w32.c	Sat Mar 22 17:04:25 2014 +0000
     3.2 +++ b/src/vid_et4000w32.c	Sat Mar 22 19:10:00 2014 +0000
     3.3 @@ -371,7 +371,7 @@
     3.4                  else
     3.5                  {
     3.6                          svga->vram[(addr & 0x1fff) + et4000->mmu.base[bank]] = val;
     3.7 -                        svga->changedvram[((addr & 0x1fff) + et4000->mmu.base[bank]) >> 10] = changeframecount;
     3.8 +                        svga->changedvram[((addr & 0x1fff) + et4000->mmu.base[bank]) >> 12] = changeframecount;
     3.9                  }
    3.10                  break;
    3.11                  case 0x6000:
    3.12 @@ -705,7 +705,7 @@
    3.13                          if (!(et4000->acl.internal.ctrl_routing & 0x40))
    3.14                          {
    3.15                                  svga->vram[et4000->acl.dest_addr & 0x1fffff] = out;
    3.16 -                                svga->changedvram[(et4000->acl.dest_addr & 0x1fffff) >> 10] = changeframecount;
    3.17 +                                svga->changedvram[(et4000->acl.dest_addr & 0x1fffff) >> 12] = changeframecount;
    3.18                          }
    3.19                          else
    3.20                          {
    3.21 @@ -826,7 +826,7 @@
    3.22                          if (!(et4000->acl.internal.ctrl_routing & 0x40))
    3.23                          {
    3.24                                  svga->vram[et4000->acl.dest_addr & 0x1fffff] = out;
    3.25 -                                svga->changedvram[(et4000->acl.dest_addr & 0x1fffff) >> 10] = changeframecount;
    3.26 +                                svga->changedvram[(et4000->acl.dest_addr & 0x1fffff) >> 12] = changeframecount;
    3.27                          }
    3.28                          else
    3.29                          {
     4.1 --- a/src/vid_et4000w32i.c	Sat Mar 22 17:04:25 2014 +0000
     4.2 +++ b/src/vid_et4000w32i.c	Sat Mar 22 19:10:00 2014 +0000
     4.3 @@ -98,7 +98,7 @@
     4.4                  else
     4.5                  {
     4.6                          vram[(addr&0x1FFF)+mmu.base[bank]]=val;
     4.7 -                        changedvram[((addr&0x1FFF)+mmu.base[bank])>>10]=changeframecount;
     4.8 +                        changedvram[((addr&0x1FFF)+mmu.base[bank])>>12]=changeframecount;
     4.9                  }
    4.10                  break;
    4.11                  case 0x6000:
    4.12 @@ -302,7 +302,7 @@
    4.13                  }
    4.14                  pclog("%06X = %02X\n",acl.dest_addr&0x1FFFFF,out);
    4.15                  vram[acl.dest_addr&0x1FFFFF]=out;
    4.16 -                changedvram[(acl.dest_addr&0x1FFFFF)>>10]=changeframecount;
    4.17 +                changedvram[(acl.dest_addr&0x1FFFFF)>>12]=changeframecount;
    4.18  
    4.19                  acl.pattern_x++;
    4.20                  acl.pattern_x&=et4000w32_wrap_x[acl.internal.pattern_wrap&7];
    4.21 @@ -378,7 +378,7 @@
    4.22                                  if (acl.internal.rop_bg&(1<<d)) out|=(1<<c);
    4.23                          }
    4.24                          vram[acl.dest_addr&0x1FFFFF]=out;
    4.25 -                        changedvram[(acl.dest_addr&0x1FFFFF)>>10]=changeframecount;
    4.26 +                        changedvram[(acl.dest_addr&0x1FFFFF)>>12]=changeframecount;
    4.27  
    4.28                          pattern_x++;
    4.29                          pattern_x&=et4000w32_wrap_x[acl.internal.pattern_wrap&7];
     5.1 --- a/src/vid_s3.c	Sat Mar 22 17:04:25 2014 +0000
     5.2 +++ b/src/vid_s3.c	Sat Mar 22 19:10:00 2014 +0000
     5.3 @@ -1048,17 +1048,17 @@
     5.4  #define WRITE(addr)     if (s3->bpp == 0)                                                                                \
     5.5                          {                                                                                               \
     5.6                                  svga->vram[(addr) & 0x3fffff] = dest_dat;                              \
     5.7 -                                svga->changedvram[((addr) & 0x3fffff) >> 10] = changeframecount;       \
     5.8 +                                svga->changedvram[((addr) & 0x3fffff) >> 12] = changeframecount;       \
     5.9                          }                                                                                               \
    5.10                          else if (s3->bpp == 1)                                                                           \
    5.11                          {                                                                                               \
    5.12                                  vram_w[(addr) & 0x1fffff] = dest_dat;                            \
    5.13 -                                svga->changedvram[((addr) & 0x1fffff) >> 9] = changeframecount;        \
    5.14 +                                svga->changedvram[((addr) & 0x1fffff) >> 11] = changeframecount;        \
    5.15                          }                                                                                               \
    5.16                          else                                                                                            \
    5.17                          {                                                                                               \
    5.18                                  vram_l[(addr) & 0xfffff] = dest_dat;                             \
    5.19 -                                svga->changedvram[((addr) & 0xfffff) >> 8] = changeframecount;         \
    5.20 +                                svga->changedvram[((addr) & 0xfffff) >> 10] = changeframecount;         \
    5.21                          }
    5.22  
    5.23  void s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, s3_t *s3)
     6.1 --- a/src/vid_s3_virge.c	Sat Mar 22 17:04:25 2014 +0000
     6.2 +++ b/src/vid_s3_virge.c	Sat Mar 22 19:10:00 2014 +0000
     6.3 @@ -989,16 +989,16 @@
     6.4                  {                                                                               \
     6.5                          case 0: /*8 bpp*/                                                       \
     6.6                          vram[addr & 0x3fffff] = val;                                            \
     6.7 -                        virge->svga.changedvram[(addr & 0x3fffff) >> 10] = changeframecount;    \
     6.8 +                        virge->svga.changedvram[(addr & 0x3fffff) >> 12] = changeframecount;    \
     6.9                          break;                                                                  \
    6.10                          case 1: /*16 bpp*/                                                      \
    6.11                          *(uint16_t *)&vram[addr & 0x3fffff] = val;                              \
    6.12 -                        virge->svga.changedvram[(addr & 0x3fffff) >> 10] = changeframecount;    \
    6.13 +                        virge->svga.changedvram[(addr & 0x3fffff) >> 12] = changeframecount;    \
    6.14                          break;                                                                  \
    6.15                          case 2: /*24 bpp*/                                                      \
    6.16                          *(uint32_t *)&vram[addr & 0x3fffff] = (val & 0xffffff) |                \
    6.17                                                                (vram[(addr + 3) & 0x3fffff] << 24);  \
    6.18 -                        virge->svga.changedvram[(addr & 0x3fffff) >> 10] = changeframecount;    \
    6.19 +                        virge->svga.changedvram[(addr & 0x3fffff) >> 12] = changeframecount;    \
    6.20                          break;                                                                  \
    6.21                  }                                                                               \
    6.22          } while (0)
     7.1 --- a/src/vid_svga.c	Sat Mar 22 17:04:25 2014 +0000
     7.2 +++ b/src/vid_svga.c	Sat Mar 22 19:10:00 2014 +0000
     7.3 @@ -415,7 +415,7 @@
     7.4                                  svga->firstline = svga->displine;
     7.5                          
     7.6                          if (svga->hwcursor_on) 
     7.7 -                                svga->changedvram[svga->ma >> 10] = svga->changedvram[(svga->ma >> 10) + 1] = 2;
     7.8 +                                svga->changedvram[svga->ma >> 12] = svga->changedvram[(svga->ma >> 12) + 1] = 2;
     7.9                          
    7.10                          svga->render(svga);
    7.11                          
    7.12 @@ -503,7 +503,7 @@
    7.13                                  svga->fullchange = 2;
    7.14                          svga->blink++;
    7.15  
    7.16 -                        for (x = 0; x < (svga->vram_limit >> 10); x++) 
    7.17 +                        for (x = 0; x < (svga->vram_limit >> 12); x++) 
    7.18                          {
    7.19                                  if (svga->changedvram[x]) 
    7.20                                          svga->changedvram[x]--;
    7.21 @@ -634,7 +634,7 @@
    7.22          svga->vram = malloc(memsize);
    7.23          svga->vram_limit = memsize;
    7.24          svga->vrammask = memsize - 1;
    7.25 -        svga->changedvram = malloc(/*(memsize >> 10) << 1*/0x800000 >> 10);
    7.26 +        svga->changedvram = malloc(/*(memsize >> 12) << 1*/0x800000 >> 12);
    7.27          svga->recalctimings_ex = recalctimings_ex;
    7.28          svga->video_in  = video_in;
    7.29          svga->video_out = video_out;
    7.30 @@ -687,7 +687,7 @@
    7.31                  return;
    7.32  
    7.33          if (svga_output) pclog("%08X (%i, %i) %02X %i %i %i %02X\n", addr, addr & 1023, addr >> 10, val, writemask2, svga->writemode, svga->chain4, svga->gdcreg[8]);
    7.34 -        svga->changedvram[addr >> 10] = changeframecount;
    7.35 +        svga->changedvram[addr >> 12] = changeframecount;
    7.36  
    7.37          switch (svga->writemode)
    7.38          {
    7.39 @@ -913,7 +913,7 @@
    7.40          if (addr >= svga->vram_limit)
    7.41                  return;
    7.42          if (svga_output) pclog("%08X\n", addr);
    7.43 -        svga->changedvram[addr>>10]=changeframecount;
    7.44 +        svga->changedvram[addr >> 12]=changeframecount;
    7.45          
    7.46          switch (svga->writemode)
    7.47          {
    7.48 @@ -1161,7 +1161,7 @@
    7.49          if (addr >= svga->vram_limit)
    7.50                  return;
    7.51          if (svga_output) pclog("%08X (%i, %i) %04X\n", addr, addr & 1023, addr >> 10, val);
    7.52 -        svga->changedvram[addr >> 10] = changeframecount;
    7.53 +        svga->changedvram[addr >> 12] = changeframecount;
    7.54          *(uint16_t *)&svga->vram[addr] = val;
    7.55  }
    7.56  
    7.57 @@ -1190,7 +1190,7 @@
    7.58                  return;
    7.59          if (svga_output) pclog("%08X (%i, %i) %08X\n", addr, addr & 1023, addr >> 10, val);
    7.60          
    7.61 -        svga->changedvram[addr >> 10] = changeframecount;
    7.62 +        svga->changedvram[addr >> 12] = changeframecount;
    7.63          *(uint32_t *)&svga->vram[addr] = val;
    7.64  }
    7.65  
    7.66 @@ -1256,7 +1256,7 @@
    7.67          addr &= 0x7FFFFF;
    7.68          if (addr >= svga->vram_limit)
    7.69                  return;
    7.70 -        svga->changedvram[addr >> 10] = changeframecount;
    7.71 +        svga->changedvram[addr >> 12] = changeframecount;
    7.72          *(uint16_t *)&svga->vram[addr] = val;
    7.73  }
    7.74  
    7.75 @@ -1282,7 +1282,7 @@
    7.76          addr &= 0x7fffff;
    7.77          if (addr >= svga->vram_limit)
    7.78                  return;
    7.79 -        svga->changedvram[addr >> 10] = changeframecount;
    7.80 +        svga->changedvram[addr >> 12] = changeframecount;
    7.81          *(uint32_t *)&svga->vram[addr] = val;
    7.82  }
    7.83  
     8.1 --- a/src/vid_svga_render.c	Sat Mar 22 17:04:25 2014 +0000
     8.2 +++ b/src/vid_svga_render.c	Sat Mar 22 19:10:00 2014 +0000
     8.3 @@ -163,9 +163,9 @@
     8.4          int changed_offset;
     8.5          
     8.6          if (svga->sc & 1 && !(svga->crtc[0x17] & 1))
     8.7 -                changed_offset = (svga->ma << 1) >> 10;
     8.8 +                changed_offset = (svga->ma << 1) >> 12;
     8.9          else
    8.10 -                changed_offset = ((svga->ma << 1) + 0x8000) >> 10;
    8.11 +                changed_offset = ((svga->ma << 1) + 0x8000) >> 12;
    8.12                  
    8.13          if (svga->changedvram[changed_offset] || svga->changedvram[changed_offset + 1] || svga->fullchange)
    8.14          {
    8.15 @@ -213,9 +213,9 @@
    8.16          int changed_offset;
    8.17          
    8.18          if (svga->sc & 1 && !(svga->crtc[0x17] & 1))
    8.19 -                changed_offset = ((svga->ma << 1) | 0x8000) >> 10;
    8.20 +                changed_offset = ((svga->ma << 1) | 0x8000) >> 12;
    8.21          else
    8.22 -                changed_offset = (svga->ma << 1) >> 10;
    8.23 +                changed_offset = (svga->ma << 1) >> 12;
    8.24                                  
    8.25          if (svga->changedvram[changed_offset] || svga->changedvram[changed_offset + 1] || svga->fullchange)
    8.26          {
    8.27 @@ -260,7 +260,7 @@
    8.28  
    8.29  void svga_render_4bpp_lowres(svga_t *svga)
    8.30  {
    8.31 -        if (svga->changedvram[svga->ma >> 10] || svga->changedvram[(svga->ma >> 10) + 1] || svga->changedvram[(svga->ma >> 10) + 2] || svga->fullchange)
    8.32 +        if (svga->changedvram[svga->ma >> 12] || svga->changedvram[(svga->ma >> 12) + 1] || svga->fullchange)
    8.33          {
    8.34                  int x;
    8.35                  int offset = ((8 - svga->scrollcache) << 1) + 16;
    8.36 @@ -302,11 +302,11 @@
    8.37          int changed_offset;
    8.38          
    8.39          if (svga->sc & 1 && !(svga->crtc[0x17] & 1))
    8.40 -                changed_offset = (svga->ma | 0x8000) >> 10;
    8.41 +                changed_offset = (svga->ma | 0x8000) >> 12;
    8.42          else
    8.43 -                changed_offset = svga->ma >> 10;
    8.44 +                changed_offset = svga->ma >> 12;
    8.45                  
    8.46 -        if (svga->changedvram[changed_offset] || svga->changedvram[changed_offset + 1] || svga->changedvram[changed_offset + 2] || svga->fullchange)
    8.47 +        if (svga->changedvram[changed_offset] || svga->changedvram[changed_offset + 1] || svga->fullchange)
    8.48          {
    8.49                  int x;
    8.50                  int offset = (8 - svga->scrollcache) + 24;
    8.51 @@ -348,7 +348,7 @@
    8.52  
    8.53  void svga_render_8bpp_lowres(svga_t *svga)
    8.54  {
    8.55 -        if (svga->changedvram[svga->ma >> 10] || svga->changedvram[(svga->ma >> 10) + 1] || svga->changedvram[(svga->ma >> 10) + 2] || svga->fullchange)
    8.56 +        if (svga->changedvram[svga->ma >> 12] || svga->changedvram[(svga->ma >> 12) + 1] || svga->fullchange)
    8.57          {
    8.58                  int x;
    8.59                  int offset = (8 - (svga->scrollcache & 6)) + 24;
    8.60 @@ -376,7 +376,7 @@
    8.61  
    8.62  void svga_render_8bpp_highres(svga_t *svga)
    8.63  {
    8.64 -        if (svga->changedvram[svga->ma >> 10] || svga->changedvram[(svga->ma >> 10) + 1] || svga->changedvram[(svga->ma >> 10) + 2] || svga->fullchange)
    8.65 +        if (svga->changedvram[svga->ma >> 12] || svga->changedvram[(svga->ma >> 12) + 1] || svga->fullchange)
    8.66          {
    8.67                  int x;
    8.68                  int offset = (8 - ((svga->scrollcache & 6) >> 1)) + 24;
    8.69 @@ -410,7 +410,7 @@
    8.70  
    8.71  void svga_render_15bpp_lowres(svga_t *svga)
    8.72  {
    8.73 -        if (svga->changedvram[svga->ma >> 10] || svga->changedvram[(svga->ma >> 10) + 1] || svga->changedvram[(svga->ma >> 10) + 2] || svga->fullchange)
    8.74 +        if (svga->changedvram[svga->ma >> 12] || svga->changedvram[(svga->ma >> 12) + 1] || svga->fullchange)
    8.75          {
    8.76                  int x;
    8.77                  int offset = (8 - (svga->scrollcache & 6)) + 24;
    8.78 @@ -439,7 +439,7 @@
    8.79  
    8.80  void svga_render_15bpp_highres(svga_t *svga)
    8.81  {
    8.82 -        if (svga->changedvram[svga->ma >> 10] || svga->changedvram[(svga->ma >> 10) + 1] || svga->changedvram[(svga->ma >> 10) + 2] || svga->fullchange)
    8.83 +        if (svga->changedvram[svga->ma >> 12] || svga->changedvram[(svga->ma >> 12) + 1] || svga->fullchange)
    8.84          {
    8.85                  int x;
    8.86                  int offset = (8 - ((svga->scrollcache & 6) >> 1)) + 24;
    8.87 @@ -474,7 +474,7 @@
    8.88  
    8.89  void svga_render_16bpp_lowres(svga_t *svga)
    8.90  {
    8.91 -        if (svga->changedvram[svga->ma >> 10] || svga->changedvram[(svga->ma >> 10) + 1] || svga->changedvram[(svga->ma >> 10) + 2] || svga->fullchange)
    8.92 +        if (svga->changedvram[svga->ma >> 12] || svga->changedvram[(svga->ma >> 12) + 1] || svga->fullchange)
    8.93          {
    8.94                  int x;
    8.95                  int offset = (8 - (svga->scrollcache & 6)) + 24;
    8.96 @@ -503,7 +503,7 @@
    8.97  
    8.98  void svga_render_16bpp_highres(svga_t *svga)
    8.99  {
   8.100 -        if (svga->changedvram[svga->ma >> 10] || svga->changedvram[(svga->ma >> 10) + 1] || svga->changedvram[(svga->ma >> 10) + 2] || svga->fullchange)
   8.101 +        if (svga->changedvram[svga->ma >> 12] || svga->changedvram[(svga->ma >> 12) + 1] || svga->fullchange)
   8.102          {
   8.103                  int x;
   8.104                  int offset = (8 - ((svga->scrollcache & 6) >> 1)) + 24;
   8.105 @@ -541,7 +541,7 @@
   8.106          int x, offset;
   8.107          uint32_t fg;
   8.108          
   8.109 -        if (svga->changedvram[svga->ma >> 10] || svga->changedvram[(svga->ma >> 10) + 1] || svga->changedvram[(svga->ma >> 10) + 2] || svga->fullchange)
   8.110 +        if (svga->changedvram[svga->ma >> 12] || svga->changedvram[(svga->ma >> 12) + 1] || svga->fullchange)
   8.111          {
   8.112                  if (svga->firstline_draw == 2000) 
   8.113                          svga->firstline_draw = svga->displine;
   8.114 @@ -561,7 +561,7 @@
   8.115  
   8.116  void svga_render_24bpp_highres(svga_t *svga)
   8.117  {
   8.118 -        if (svga->changedvram[svga->ma >> 10] || svga->changedvram[(svga->ma >> 10) + 1] || svga->changedvram[(svga->ma >> 10) + 2] || svga->fullchange)
   8.119 +        if (svga->changedvram[svga->ma >> 12] || svga->changedvram[(svga->ma >> 12) + 1] || svga->fullchange)
   8.120          {
   8.121                  int x;
   8.122                  int offset = (8 - ((svga->scrollcache & 6) >> 1)) + 24;
   8.123 @@ -596,7 +596,7 @@
   8.124          int x, offset;
   8.125          uint32_t fg;
   8.126          
   8.127 -        if (svga->changedvram[svga->ma >> 10] || svga->changedvram[(svga->ma >> 10) + 1] || svga->changedvram[(svga->ma >> 10) + 2] || svga->fullchange)
   8.128 +        if (svga->changedvram[svga->ma >> 12] || svga->changedvram[(svga->ma >> 12) + 1] || svga->fullchange)
   8.129          {
   8.130                  if (svga->firstline_draw == 2000) 
   8.131                          svga->firstline_draw = svga->displine;
   8.132 @@ -618,7 +618,7 @@
   8.133    91%*/
   8.134  void svga_render_32bpp_highres(svga_t *svga)
   8.135  {
   8.136 -        if (svga->changedvram[svga->ma >> 10] || svga->changedvram[(svga->ma >> 10) + 1] || svga->changedvram[(svga->ma >> 10) + 2] || svga->fullchange)
   8.137 +        if (svga->changedvram[svga->ma >> 12] ||  svga->changedvram[(svga->ma >> 12) + 1] || svga->changedvram[(svga->ma >> 12) + 2] || svga->fullchange)
   8.138          {
   8.139                  int x;
   8.140                  int offset = (8 - ((svga->scrollcache & 6) >> 1)) + 24;
     9.1 --- a/src/vid_tgui9440.c	Sat Mar 22 17:04:25 2014 +0000
     9.2 +++ b/src/vid_tgui9440.c	Sat Mar 22 19:10:00 2014 +0000
     9.3 @@ -552,12 +552,12 @@
     9.4  #define WRITE(addr, dat)        if (tgui->accel.bpp == 0)                                                \
     9.5                                  {                                                                       \
     9.6                                          svga->vram[addr & 0x1fffff] = dat;                                    \
     9.7 -                                        svga->changedvram[((addr) & 0x1fffff) >> 10] = changeframecount;      \
     9.8 +                                        svga->changedvram[((addr) & 0x1fffff) >> 12] = changeframecount;      \
     9.9                                  }                                                                       \
    9.10                                  else                                                                    \
    9.11                                  {                                                                       \
    9.12                                          vram_w[addr & 0xfffff] = dat;                                   \
    9.13 -                                        svga->changedvram[((addr) & 0xfffff) >> 9] = changeframecount;        \
    9.14 +                                        svga->changedvram[((addr) & 0xfffff) >> 11] = changeframecount;        \
    9.15                                  }
    9.16                                  
    9.17  void tgui_accel_write_fb_b(uint32_t addr, uint8_t val, void *priv);