Diff for /np2/vram/maketext.c between versions 1.1 and 1.6

version 1.1, 2003/10/16 17:58:17 version 1.6, 2004/02/07 21:23:22
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
 #include        "memory.h"  #include        "cpucore.h"
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
 #include        "scrndraw.h"  
 #include        "vram.h"  #include        "vram.h"
   #include        "scrndraw.h"
   #include        "dispsync.h"
 #include        "maketext.h"  #include        "maketext.h"
 #include        "font.h"  #include        "font.h"
 #include        "dispsync.h"  
   
   
                 TRAM_T  tramflag;                  TRAM_T  tramflag;
Line 125  BYTE maketext_curblink(void) { Line 125  BYTE maketext_curblink(void) {
   
 void maketext(int text_renewal) {  void maketext(int text_renewal) {
   
           UINT8   multiple;
         BYTE    TEXT_LR;          BYTE    TEXT_LR;
         int             TEXT_PL;          int             TEXT_PL;
         int             TEXT_BL;          int             TEXT_BL;
Line 148  void maketext(int text_renewal) { Line 149  void maketext(int text_renewal) {
         int             linecnt;          int             linecnt;
         BYTE    *q;          BYTE    *q;
         UINT    y;          UINT    y;
         BYTE    line_effect;          BYTE    line_effect = 0;                // for gcc
         int             x;          int             x;
         UINT32  bitmap[TEXTXMAX];          UINT32  bitmap[TEXTXMAX];
         BYTE    curx[TEXTXMAX+1];          BYTE    curx[TEXTXMAX+1];
Line 158  void maketext(int text_renewal) { Line 159  void maketext(int text_renewal) {
                 tramflag.gaiji = 0;                  tramflag.gaiji = 0;
         }          }
   
           multiple = ((!(gdc.mode1 & 8)) && (!gdc.crt15khz))?0x20:0x00;
         TEXT_LR = gdc.m.para[GDC_CSRFORM] & 0x1f;          TEXT_LR = gdc.m.para[GDC_CSRFORM] & 0x1f;
         TEXT_PL = crtc.reg.pl;          TEXT_PL = crtc.reg.pl;
         TEXT_BL = crtc.reg.bl + 1;          TEXT_BL = crtc.reg.bl + 1;
Line 191  void maketext(int text_renewal) { Line 193  void maketext(int text_renewal) {
   
         pitch = gdc.m.para[GDC_PITCH] & 0xfe;          pitch = gdc.m.para[GDC_PITCH] & 0xfe;
         csrw = LOADINTELWORD(gdc.m.para + GDC_CSRW);          csrw = LOADINTELWORD(gdc.m.para + GDC_CSRW);
         esi = LOADINTELWORD(gdc.m.para + GDC_SCROLL);          esi = LOW12(LOADINTELWORD(gdc.m.para + GDC_SCROLL));
         esi &= 0xfff;  
         scroll = LOADINTELWORD(gdc.m.para + GDC_SCROLL + 2);          scroll = LOADINTELWORD(gdc.m.para + GDC_SCROLL + 2);
         scroll = (scroll >> 4) & 0x3ff;          scroll = LOW14(scroll) >> 4;
         scrp = 0;          scrp = 0;
   
         wait1 = 0;          wait1 = 0;
Line 227  void maketext(int text_renewal) { Line 228  void maketext(int text_renewal) {
                                                 new_flag = 1;                                                  new_flag = 1;
                                                 break;                                                  break;
                                         }                                          }
                                         edi = (edi + 1) & 0xfff;                                          edi = LOW12(edi + 1);
                                 }                                  }
                         }                          }
                         if (new_flag) {                          if (new_flag) {
Line 266  void maketext(int text_renewal) { Line 267  void maketext(int text_renewal) {
                                                 }                                                  }
                                                 else {                                                  else {
                                                         bitmap[x] = 0x82000 +                                                           bitmap[x] = 0x82000 + 
                                                                                 (mem[0xa0000 + edi*2] << 3);                                                                                  (mem[0xa0000 + edi*2] << 4);
                                                         curx[x] |= 0x20;                                                // ver0.28                                                          curx[x] |= multiple;                                    // ver0.74
                                                         if ((curx[x] & TXTATR_BG) && (gdc.mode1 & 1)) {                                                          if ((curx[x] & TXTATR_BG) && (gdc.mode1 & 1)) {
                                                                 bitmap[x] += 0x800;                                                                  bitmap[x] += 8;
                                                         }                                                          }
                                                 }                                                  }
                                         }                                          }
Line 299  void maketext(int text_renewal) { Line 300  void maketext(int text_renewal) {
                                                         bitmap[x] += 8;                                                          bitmap[x] += 8;
                                                 }                                                  }
                                                 else if (!(gdc.mode1 & 8)) {                                                  else if (!(gdc.mode1 & 8)) {
                                                         curx[x] |= 0x20;                                                          curx[x] |= multiple;
                                                 }                                                  }
                                         }                                          }
                                         lastbitp = bitmap[x];                                          lastbitp = bitmap[x];
Line 312  void maketext(int text_renewal) { Line 313  void maketext(int text_renewal) {
                                                         bitmap[x] = 0;                                                          bitmap[x] = 0;
                                                 }                                                  }
                                         }                                          }
                                         edi = (edi+1) & 0x0fff;                                                 // width80                                          edi = LOW12(edi + 1);
                                 }                                  }
                                 if (!tramflag.curdisp) {                                  if (!tramflag.curdisp) {
                                         cur_line = -1;                                          cur_line = -1;
                                 }                                  }
                         }                          }
                         esi = (esi + pitch) & 0x0fff;                                                   // ver0.26                          esi = LOW12(esi + pitch);
                 }                  }
   
                 if ((!TEXT_SDR) && (nowline >= topline + crtc.reg.ssl)) {                  if ((!TEXT_SDR) && (nowline >= topline + crtc.reg.ssl)) {
Line 349  void maketext(int text_renewal) { Line 350  void maketext(int text_renewal) {
                                         // width80                                          // width80
                                         for (x=0; x<TEXTXMAX; x++) {                                          for (x=0; x<TEXTXMAX; x++) {
                                                 int fntline;                                                  int fntline;
                                                 BYTE data;                                                  UINT8 data;
                                                 fntline = nowline & 0x0f;                                                  fntline = nowline;
                                                 if (curx[x] & 0x20) {                                                  if (curx[x] & 0x20) {
                                                         fntline >>= 1;                                                          fntline >>= 1;
                                                 }                                                  }
                                                 data = font[bitmap[x] + fntline];                                                  data = fontrom[bitmap[x] + (fntline & 0x0f)];
                                                 *(UINT32 *)(q+0) = text_table[color[x] + (data >> 4)];                                                  *(UINT32 *)(q+0) = text_table[color[x] + (data >> 4)];
                                                 *(UINT32 *)(q+4) = text_table[color[x] + (data & 15)];                                                  *(UINT32 *)(q+4) = text_table[color[x] + (data & 15)];
                                                 q += 8;                                                  q += 8;
Line 410  void maketext(int text_renewal) { Line 411  void maketext(int text_renewal) {
                         y++;                          y++;
                         if (!(--scroll)) {                          if (!(--scroll)) {
                                 scrp = (scrp + 4) & 0x0c;                                  scrp = (scrp + 4) & 0x0c;
                                 esi = LOADINTELWORD(gdc.m.para + GDC_SCROLL + scrp);                                  esi = LOW12(LOADINTELWORD(gdc.m.para + GDC_SCROLL + scrp));
                                 esi &= 0xfff;  
                                 scroll = LOADINTELWORD(gdc.m.para + GDC_SCROLL + scrp + 2);                                  scroll = LOADINTELWORD(gdc.m.para + GDC_SCROLL + scrp + 2);
                                 scroll = (scroll >> 4) & 0x3ff;                                  scroll = LOW14(scroll) >> 4;
                                 reloadline = TRUE;                                  reloadline = TRUE;
                         }                          }
                 }                  }
Line 436  void maketext(int text_renewal) { Line 436  void maketext(int text_renewal) {
   
 void maketext40(int text_renewal) {  void maketext40(int text_renewal) {
   
           UINT8   multiple;
         BYTE    TEXT_LR;          BYTE    TEXT_LR;
         int             TEXT_PL;          int             TEXT_PL;
         int             TEXT_BL;          int             TEXT_BL;
Line 459  void maketext40(int text_renewal) { Line 460  void maketext40(int text_renewal) {
         int             linecnt;          int             linecnt;
         BYTE    *q;          BYTE    *q;
         UINT    y;          UINT    y;
         BYTE    line_effect;          BYTE    line_effect = 0;                // for gcc
         int             x;          int             x;
         UINT32  bitmap[TEXTXMAX];          UINT32  bitmap[TEXTXMAX];
         BYTE    curx[TEXTXMAX+1];          BYTE    curx[TEXTXMAX+1];
Line 469  void maketext40(int text_renewal) { Line 470  void maketext40(int text_renewal) {
                 tramflag.gaiji = 0;                  tramflag.gaiji = 0;
         }          }
   
           multiple = ((!(gdc.mode1 & 8)) && (!gdc.crt15khz))?0x20:0x00;
         TEXT_LR = gdc.m.para[GDC_CSRFORM] & 0x1f;          TEXT_LR = gdc.m.para[GDC_CSRFORM] & 0x1f;
         TEXT_PL = crtc.reg.pl;          TEXT_PL = crtc.reg.pl;
         TEXT_BL = crtc.reg.bl + 1;          TEXT_BL = crtc.reg.bl + 1;
Line 502  void maketext40(int text_renewal) { Line 504  void maketext40(int text_renewal) {
   
         pitch = gdc.m.para[GDC_PITCH] & 0xfe;          pitch = gdc.m.para[GDC_PITCH] & 0xfe;
         csrw = LOADINTELWORD(gdc.m.para + GDC_CSRW);          csrw = LOADINTELWORD(gdc.m.para + GDC_CSRW);
         esi = LOADINTELWORD(gdc.m.para + GDC_SCROLL);          esi = LOW12(LOADINTELWORD(gdc.m.para + GDC_SCROLL));
         esi &= 0xfff;  
         scroll = LOADINTELWORD(gdc.m.para + GDC_SCROLL + 2);          scroll = LOADINTELWORD(gdc.m.para + GDC_SCROLL + 2);
         scroll = (scroll >> 4) & 0x3ff;          scroll = LOW14(scroll) >> 4;
         scrp = 0;          scrp = 0;
   
         wait1 = 0;          wait1 = 0;
Line 538  void maketext40(int text_renewal) { Line 539  void maketext40(int text_renewal) {
                                                 new_flag = 1;                                                  new_flag = 1;
                                                 break;                                                  break;
                                         }                                          }
                                         edi = (edi + 1) & 0xfff;                                          edi = LOW12(edi + 1);
                                 }                                  }
                         }                          }
                         if (new_flag) {                          if (new_flag) {
Line 577  void maketext40(int text_renewal) { Line 578  void maketext40(int text_renewal) {
                                                 }                                                  }
                                                 else {                                                  else {
                                                         bitmap[x] = 0x82000 +                                                           bitmap[x] = 0x82000 + 
                                                                                 (mem[0xa0000 + edi*2] << 3);                                                                                  (mem[0xa0000 + edi*2] << 4);
                                                         curx[x] |= 0x20;                                                // ver0.28                                                          curx[x] |= multiple;                                    // ver0.74
                                                         if ((curx[x] & TXTATR_BG) && (gdc.mode1 & 1)) {                                                          if ((curx[x] & TXTATR_BG) && (gdc.mode1 & 1)) {
                                                                 bitmap[x] += 0x800;                                                                  bitmap[x] += 8;
                                                         }                                                          }
                                                 }                                                  }
                                         }                                          }
Line 610  void maketext40(int text_renewal) { Line 611  void maketext40(int text_renewal) {
                                                         bitmap[x] += 8;                                                          bitmap[x] += 8;
                                                 }                                                  }
                                                 else if (!(gdc.mode1 & 8)) {                                                  else if (!(gdc.mode1 & 8)) {
                                                         curx[x] |= 0x20;                                                          curx[x] |= multiple;
                                                 }                                                  }
                                         }                                          }
                                         lastbitp = bitmap[x];                                          lastbitp = bitmap[x];
Line 623  void maketext40(int text_renewal) { Line 624  void maketext40(int text_renewal) {
                                                         bitmap[x] = 0;                                                          bitmap[x] = 0;
                                                 }                                                  }
                                         }                                          }
                                         edi = (edi+2) & 0x0fff;                                                 // width40                                          edi = LOW12(edi + 2);                                                   // width40
                                 }                                  }
                                 if (!tramflag.curdisp) {                                  if (!tramflag.curdisp) {
                                         cur_line = -1;                                          cur_line = -1;
                                 }                                  }
                         }                          }
                         esi = (esi + pitch) & 0x0fff;                                                   // ver0.26                          esi = LOW12(esi + pitch);
                 }                  }
   
                 if ((!TEXT_SDR) && (nowline >= topline + crtc.reg.ssl)) {                  if ((!TEXT_SDR) && (nowline >= topline + crtc.reg.ssl)) {
Line 661  void maketext40(int text_renewal) { Line 662  void maketext40(int text_renewal) {
                                         for (x=0; x<(TEXTXMAX/2); x++) {                                          for (x=0; x<(TEXTXMAX/2); x++) {
                                                 int fntline;                                                  int fntline;
                                                 BYTE data;                                                  BYTE data;
                                                 fntline = nowline & 0x0f;                                                  fntline = nowline;
                                                 if (curx[x] & 0x20) {                                                  if (curx[x] & 0x20) {
                                                         fntline >>= 1;                                                          fntline >>= 1;
                                                 }                                                  }
                                                 data = font[bitmap[x] + fntline];                                                  data = fontrom[bitmap[x] + (fntline & 0x0f)];
                                                 *(UINT32 *)(q+ 0) = text_tblx2[color[x] +                                                  *(UINT32 *)(q+ 0) = text_tblx2[color[x] +
                                                                                                                         (data>>4)][0];                                                                                                                          (data>>4)][0];
                                                 *(UINT32 *)(q+ 4) = text_tblx2[color[x] +                                                  *(UINT32 *)(q+ 4) = text_tblx2[color[x] +
Line 735  void maketext40(int text_renewal) { Line 736  void maketext40(int text_renewal) {
                         y++;                          y++;
                         if (!(--scroll)) {                          if (!(--scroll)) {
                                 scrp = (scrp + 4) & 0x0c;                                  scrp = (scrp + 4) & 0x0c;
                                 esi = LOADINTELWORD(gdc.m.para + GDC_SCROLL + scrp);                                  esi = LOW12(LOADINTELWORD(gdc.m.para + GDC_SCROLL + scrp));
                                 esi &= 0xfff;  
                                 scroll = LOADINTELWORD(gdc.m.para + GDC_SCROLL + scrp + 2);                                  scroll = LOADINTELWORD(gdc.m.para + GDC_SCROLL + scrp + 2);
                                 scroll = (scroll >> 4) & 0x3ff;                                  scroll = LOW14(scroll) >> 4;
                                 reloadline = TRUE;                                  reloadline = TRUE;
                         }                          }
                 }                  }

Removed from v.1.1  
changed lines
  Added in v.1.6


RetroPC.NET-CVS <cvs@retropc.net>