Diff for /xmil/vram/makemix.c between versions 1.1 and 1.5

version 1.1, 2004/08/07 07:19:56 version 1.5, 2005/02/04 06:42:12
Line 5 Line 5
   
   
 // 遅いのが嫌なら後でインラインにすればいい  // 遅いのが嫌なら後でインラインにすればいい
 void makemix_txt(UINT8 *dst, UINT align, const UINT8 *txt, UINT count) {  void makemix_mixtext(UINT8 *dst, UINT align, const UINT8 *txt, UINT count) {
   
         REG8    dat;  
         UINT32  datl;          UINT32  datl;
         UINT32  datr;          UINT32  datr;
           REG8    dat;
   
         do {          do {
                   datl = (*(UINT32 *)(dst + 0)) & 0x07070707;
                   datr = (*(UINT32 *)(dst + 4)) & 0x07070707;
                 dat = txt[MAKETEXT_ROW * 0];                  dat = txt[MAKETEXT_ROW * 0];
                 datl = TO256COLL(dat, 3);                  datl |= TO256COLL(dat, 3);
                 datr = TO256COLR(dat, 3);                  datr |= TO256COLR(dat, 3);
                 dat = txt[MAKETEXT_ROW * 1];                  dat = txt[MAKETEXT_ROW * 1];
                 datl |= TO256COLL(dat, 4);                  datl |= TO256COLL(dat, 4);
                 datr |= TO256COLR(dat, 4);                  datr |= TO256COLR(dat, 4);
Line 28  void makemix_txt(UINT8 *dst, UINT align, Line 30  void makemix_txt(UINT8 *dst, UINT align,
         } while(--count);          } while(--count);
 }  }
   
 void makemix_mix(UINT8 *dst, UINT align,  void makemix_mixgrph(UINT8 *dst, UINT align, const UINT8 *grp, UINT count) {
                                                         const UINT8 *txt, const UINT8 *grp, UINT count) {  
   
         REG8    dat;          UINT    pos;
         UINT32  datl;          UINT32  datl;
         UINT32  datr;          UINT32  datr;
           REG8    dat;
   
           pos = 0;
         do {          do {
                 dat = txt[MAKETEXT_ROW * 0];                  datl = (*(UINT32 *)(dst + 0)) & 0x38383838;
                 datl = TO256COLL(dat, 3);                  datr = (*(UINT32 *)(dst + 4)) & 0x38383838;
                 datr = TO256COLR(dat, 3);                  dat = grp[pos + GRAM_B];
                 dat = txt[MAKETEXT_ROW * 1];  
                 datl |= TO256COLL(dat, 4);  
                 datr |= TO256COLR(dat, 4);  
                 dat = txt[MAKETEXT_ROW * 2];  
                 datl |= TO256COLL(dat, 5);  
                 datr |= TO256COLR(dat, 5);  
                 dat = grp[PLANE_B];  
                 datl |= TO256COLL(dat, 0);                  datl |= TO256COLL(dat, 0);
                 datr |= TO256COLR(dat, 0);                  datr |= TO256COLR(dat, 0);
                 dat = grp[PLANE_R];                  dat = grp[pos + GRAM_R];
                 datl |= TO256COLL(dat, 1);                  datl |= TO256COLL(dat, 1);
                 datr |= TO256COLR(dat, 1);                  datr |= TO256COLR(dat, 1);
                 dat = grp[PLANE_G];                  dat = grp[pos + GRAM_G];
                 datl |= TO256COLL(dat, 2);                  datl |= TO256COLL(dat, 2);
                 datr |= TO256COLR(dat, 2);                  datr |= TO256COLR(dat, 2);
                 *(UINT32 *)(dst + 0) = datl;                  *(UINT32 *)(dst + 0) = datl;
                 *(UINT32 *)(dst + 4) = datr;                  *(UINT32 *)(dst + 4) = datr;
                 txt++;                  pos = (pos + GRAM_LINESTEP) & (GRAM_LINESTEP * 7);
                 grp++;  
                 dst += align;                  dst += align;
         } while(--count);          } while(--count);
 }  }
   
 void makemix_doubler(UINT8 *dst, UINT count, UINT32 skipline) {  
   
         do {  void makemix_settext(UINT8 *dst, UINT align, const UINT8 *txt, UINT count) {
                 *(UINT32 *)(dst + SURFACE_WIDTH + 0)  
                                                                                 = (*(UINT32 *)(dst + 0)) + skipline;  
                 *(UINT32 *)(dst + SURFACE_WIDTH + 4)  
                                                                                 = (*(UINT32 *)(dst + 4)) + skipline;  
                 dst += SURFACE_WIDTH * 2;  
         } while(--count);  
 }  
   
 void makemix_remcpy(UINT8 *dst, UINT pos, UINT count) {          REG8    dat;
           UINT32  datl;
           UINT32  datr;
   
         count -= pos;  
         pos = pos * SURFACE_WIDTH;  
         do {          do {
                 *(UINT32 *)(dst + pos + 0) = *(UINT32 *)(dst + 0);                  dat = txt[MAKETEXT_ROW * 0];
                 *(UINT32 *)(dst + pos + 4) = *(UINT32 *)(dst + 4);                  datl = TO256COLL(dat, 3);
                 dst += SURFACE_WIDTH;                  datr = TO256COLR(dat, 3);
                   dat = txt[MAKETEXT_ROW * 1];
                   datl |= TO256COLL(dat, 4);
                   datr |= TO256COLR(dat, 4);
                   dat = txt[MAKETEXT_ROW * 2];
                   datl |= TO256COLL(dat, 5);
                   datr |= TO256COLR(dat, 5);
                   *(UINT32 *)(dst + 0) = datl;
                   *(UINT32 *)(dst + 4) = datr;
                   txt++;
                   dst += align;
         } while(--count);          } while(--count);
 }  }
   
 void makemix_ul20(UINT8 *dst, UINT pos, UINT32 skipline) {  void makemix_ul20(UINT8 *dst, UINT pos) {
   
         UINT32  dat;          UINT32  dat;
   
         dat = (tram[TRAM_KNJ + pos] & X1KNJ_ULINE)?0x010101010:0x00000000;          dat = (TRAM_KNJ(pos) & TRAMKNJ_ULINE)?0x01010101:0x00000000;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 0) + 0) = dat;          *(UINT32 *)(dst + (SURFACE_WIDTH * 0) + 0) = dat;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 0) + 4) = dat;          *(UINT32 *)(dst + (SURFACE_WIDTH * 0) + 4) = dat;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 1) + 0) = dat + skipline;          *(UINT32 *)(dst + (SURFACE_WIDTH * 1) + 0) = dat;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 1) + 4) = dat + skipline;          *(UINT32 *)(dst + (SURFACE_WIDTH * 1) + 4) = dat;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 2) + 0) = 0x00000000;          *(UINT32 *)(dst + (SURFACE_WIDTH * 2) + 0) = 0;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 2) + 4) = 0x00000000;          *(UINT32 *)(dst + (SURFACE_WIDTH * 2) + 4) = 0;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 3) + 0) = skipline;          *(UINT32 *)(dst + (SURFACE_WIDTH * 3) + 0) = 0;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 3) + 4) = skipline;          *(UINT32 *)(dst + (SURFACE_WIDTH * 3) + 4) = 0;
 }  }
   
 void makemix_ul10(UINT8 *dst, UINT pos, UINT32 skipline) {  void makemix_ul10(UINT8 *dst, UINT pos) {
   
         UINT32  dat;          UINT32  dat;
   
         dat = (tram[TRAM_KNJ + pos] & X1KNJ_ULINE)?0x010101010:0x00000000;          dat = (TRAM_KNJ(pos) & TRAMKNJ_ULINE)?0x01010101:0x00000000;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 0) + 0) = dat;          *(UINT32 *)(dst + (SURFACE_WIDTH * 0) + 0) = dat;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 0) + 4) = dat;          *(UINT32 *)(dst + (SURFACE_WIDTH * 0) + 4) = dat;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 1) + 0) = dat + skipline;  //      *(UINT32 *)(dst + (SURFACE_WIDTH * 1) + 0) = dat;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 1) + 4) = dat + skipline;  //      *(UINT32 *)(dst + (SURFACE_WIDTH * 1) + 4) = dat;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 2) + 0) = dat;          *(UINT32 *)(dst + (SURFACE_WIDTH * 2) + 0) = dat;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 2) + 4) = dat;          *(UINT32 *)(dst + (SURFACE_WIDTH * 2) + 4) = dat;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 3) + 0) = dat + skipline;  //      *(UINT32 *)(dst + (SURFACE_WIDTH * 3) + 0) = dat;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 3) + 4) = dat + skipline;  //      *(UINT32 *)(dst + (SURFACE_WIDTH * 3) + 4) = dat;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 4) + 0) = 0;          *(UINT32 *)(dst + (SURFACE_WIDTH * 4) + 0) = 0;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 4) + 4) = 0;          *(UINT32 *)(dst + (SURFACE_WIDTH * 4) + 4) = 0;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 5) + 0) = skipline;  //      *(UINT32 *)(dst + (SURFACE_WIDTH * 5) + 0) = 0;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 5) + 4) = skipline;  //      *(UINT32 *)(dst + (SURFACE_WIDTH * 5) + 4) = 0;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 6) + 0) = 0;          *(UINT32 *)(dst + (SURFACE_WIDTH * 6) + 0) = 0;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 6) + 4) = 0;          *(UINT32 *)(dst + (SURFACE_WIDTH * 6) + 4) = 0;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 7) + 0) = skipline;  //      *(UINT32 *)(dst + (SURFACE_WIDTH * 7) + 0) = 0;
         *(UINT32 *)(dst + (SURFACE_WIDTH * 7) + 4) = skipline;  //      *(UINT32 *)(dst + (SURFACE_WIDTH * 7) + 4) = 0;
 }  }
   
   
   void makemix_cpy200(UINT8 *dst, UINT pos, UINT count) {
   
           count -= pos;
           pos = pos * SURFACE_WIDTH * 2;
           do {
                   *(UINT32 *)(dst + pos + 0) = *(UINT32 *)(dst + 0);
                   *(UINT32 *)(dst + pos + 4) = *(UINT32 *)(dst + 4);
                   dst += SURFACE_WIDTH * 2;
           } while(--count);
   }
   
   void makemix_cpy400(UINT8 *dst, UINT pos, UINT count) {
   
           count -= pos;
           pos = pos * SURFACE_WIDTH;
           do {
                   *(UINT32 *)(dst + pos + 0) = *(UINT32 *)(dst + 0);
                   *(UINT32 *)(dst + pos + 4) = *(UINT32 *)(dst + 4);
                   dst += SURFACE_WIDTH;
           } while(--count);
   }
   

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


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