Diff for /xmil/vram/makechr.c between versions 1.1 and 1.6

version 1.1, 2004/08/07 07:19:56 version 1.6, 2005/02/04 06:42:12
Line 2 Line 2
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
 #include        "vram.h"  #include        "vram.h"
   #include        "makescrn.h"
 #include        "makesub.h"  #include        "makesub.h"
 #include        "font.h"  #include        "font.h"
   
   
 extern  BYTE    blinktest;  void makechr8(UINT8 *dst, UINT pos, UINT count, REG8 udtmp) {
   
   
 UINT32 makechr8(UINT8 *dst, UINT pos, UINT count, REG8 udtmp) {  
   
         REG8            atr;          REG8            atr;
         REG8            ank;          REG8            ank;
Line 17  UINT32 makechr8(UINT8 *dst, UINT pos, UI Line 15  UINT32 makechr8(UINT8 *dst, UINT pos, UI
 const UINT8             *pat;  const UINT8             *pat;
         MAKETXTFN       fn;          MAKETXTFN       fn;
   
         atr = tram[TRAM_ATR + pos];          atr = TRAM_ATR(pos);
         if (atr & blinktest) {          if (atr & makescrn.blinktest) {
                 atr ^= X1ATR_REVERSE;                  atr ^= TRAMATR_REVERSE;
         }          }
         if (udtmp & 0x10) {          if (udtmp & 0x10) {
                 pos = LOW11(pos - 1);                  pos = LOW11(pos - 1);
         }          }
         ank = tram[TRAM_ANK + pos];          ank = TRAM_ANK(pos);
         knj = tram[TRAM_KNJ + pos];          knj = TRAM_KNJ(pos);
         if (!(tram[TRAM_ATR + pos] & 0x20)) {           // CHR          if (!(TRAM_ATR(pos) & 0x20)) {                          // CHR
                 if (!(knj & 0x80)) {                                    // ASCII                  if (!(knj & 0x80)) {                                    // ASCII
                         pat = font_ank + (ank << 3);                          pat = font_ank + (ank << 3);
                         fn = maketxt8fn[udtmp & 15];                          fn = maketxt8fn[udtmp & 15];
Line 42  const UINT8  *pat; Line 40  const UINT8  *pat;
                 }                  }
                 (*fn)(dst, dst + count, pat);                  (*fn)(dst, dst + count, pat);
                 (*makeatr8[atr & 15])(dst, dst + count);                  (*makeatr8[atr & 15])(dst, dst + count);
                 return(0x40404040);  
         }          }
         else {                                                                          // PCG          else {                                                                          // PCG
                 if (!(knj & 0x90)) {                                    // PCGの出力                  if (!(knj & 0x90)) {                                    // PCGの出力
                         pat = pcg.d.b[ank];                          pat = pcg.d + (ank << 3);
                         fn = maketxt8fn[udtmp & 15];                          fn = maketxt8fn[udtmp & 15];
                 }                  }
                 else {                                                                  // 16ドットPCGの出力                  else {                                                                  // 16ドットPCGの出力
                         pat = pcg.d.b[ank & (~1)];                          pat = pcg.d + ((ank & (~1)) << 3);
                         fn = makeknj8fn[udtmp & 15];                          fn = makeknj8fn[udtmp & 15];
                 }                  }
                 makeatr_pcg8(dst, count, pat, atr, fn);                  makeatr_pcg8(dst, count, pat, atr, fn);
                 return(0x80808080);  
         }          }
 }  }
   
 UINT32 makechr16(UINT8 *dst, UINT pos, UINT count, REG8 udtmp) {  void makechr16(UINT8 *dst, UINT pos, UINT count, REG8 udtmp) {
   
         REG8            atr;          REG8            atr;
         REG8            ank;          REG8            ank;
Line 66  UINT32 makechr16(UINT8 *dst, UINT pos, U Line 62  UINT32 makechr16(UINT8 *dst, UINT pos, U
 const UINT8             *pat;  const UINT8             *pat;
         MAKETXTFN       fn;          MAKETXTFN       fn;
   
         atr = tram[TRAM_ATR + pos];          atr = TRAM_ATR(pos);
         if (atr & blinktest) {          if (atr & makescrn.blinktest) {
                 atr ^= X1ATR_REVERSE;                  atr ^= TRAMATR_REVERSE;
         }          }
         if (udtmp & 0x10) {          if (udtmp & 0x10) {
                 pos = LOW11(pos - 1);                  pos = LOW11(pos - 1);
         }          }
         ank = tram[TRAM_ANK + pos];          ank = TRAM_ANK(pos);
         knj = tram[TRAM_KNJ + pos];          knj = TRAM_KNJ(pos);
         if (!(tram[TRAM_ATR + pos] & 0x20)) {           // CHR          if (!(TRAM_ATR(pos) & 0x20)) {                          // CHR
                 if (!(knj & 0x80)) {                                    // ASCII                  if (!(knj & 0x80)) {                                    // ASCII
                         pat = font_txt;                          pat = font_txt;
                 }                  }
Line 91  const UINT8  *pat; Line 87  const UINT8  *pat;
                 (*makeatr8[atr & 15])(dst, dst + count);                  (*makeatr8[atr & 15])(dst, dst + count);
                 (*makeatr8[atr & 15])(dst + MAKETEXT_STEP,                  (*makeatr8[atr & 15])(dst + MAKETEXT_STEP,
                                                                 dst + MAKETEXT_STEP + count);                                                                  dst + MAKETEXT_STEP + count);
                 return(0x40404040);  
         }          }
         else {                                                                          // PCG          else {                                                                          // PCG
                 if (!(knj & 0x90)) {                                    // PCGの出力                  if (!(knj & 0x90)) {                                    // PCGの出力
                         pat = pcg.d.b[ank];                          pat = pcg.d + (ank << 3);
                         fn = makepcg16fn[udtmp & 15];                          fn = makepcg16fn[udtmp & 15];
                 }                  }
                 else {                                                                  // 16ドットPCGの出力                  else {                                                                  // 16ドットPCGの出力
                         pat = pcg.d.b[ank & (~1)];                          pat = pcg.d + ((ank & (~1)) << 3);
                         fn = maketxt16fn[udtmp & 15];                          fn = maketxt16fn[udtmp & 15];
                 }                  }
                 makeatr_pcg16(dst, count, pat, atr, fn);                  makeatr_pcg16(dst, count, pat, atr, fn);
                 return(0x80808080);  
         }          }
 }  }
   

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


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