Diff for /xmil/vram/makescrn.c between versions 1.2 and 1.6

version 1.2, 2004/08/07 10:53:01 version 1.6, 2004/08/10 10:41:53
Line 12 Line 12
                 MAKESCRN        makescrn;                  MAKESCRN        makescrn;
   
                 BYTE    scrnallflash;                  BYTE    scrnallflash;
                 BYTE    blinktest = 0;  
   
 extern  BYTE    dispmode;  
   
 static  BYTE    lastdisp = 0;  static  BYTE    lastdisp = 0;
                 BYTE    dispflg;  
                 BYTE    *dispp = &GRP_RAM[GRAM_BANK0];  
                 BYTE    *dispp2 = &GRP_RAM[GRAM_BANK1];  
 static  BYTE    blinktime = 1;  static  BYTE    blinktime = 1;
   
                 DWORD   drawtime = 0;                  DWORD   drawtime = 0;
   
   
 void init_draw(void) {  
   
         makesub_initialize();  
         reflesh_palette();  
         lastdisp = 0;  
         dispflg = UPDATE_TRAM | UPDATE_VRAM0;  
         dispp = &GRP_RAM[GRAM_BANK0];  
 }  
   
 static void fillupdatetmp(void) {  static void fillupdatetmp(void) {
   
         UINT32  *p;          UINT32  *p;
Line 63  static void flashupdatetmp(void) { Line 46  static void flashupdatetmp(void) {
         y = crtc.s.TXT_YL;          y = crtc.s.TXT_YL;
         do {          do {
                 for (x=0; x<crtc.s.TXT_XL; x++) {                  for (x=0; x<crtc.s.TXT_XL; x++) {
                         if (!(tram[TRAM_ATR + LOW11(posl + x)] & X1ATR_Yx2)) {                          if (!(tram[TRAM_ATR + LOW11(posl + x)] & TRAMATR_Yx2)) {
                                 break;                                  break;
                         }                          }
                 }                  }
Line 75  static void flashupdatetmp(void) { Line 58  static void flashupdatetmp(void) {
                         atr = (tram[TRAM_ATR + posl] << 8) | tram[TRAM_ATR + posr];                          atr = (tram[TRAM_ATR + posl] << 8) | tram[TRAM_ATR + posr];
                         udt = udtbase;                          udt = udtbase;
                         if (!y2) {                          if (!y2) {
                                 if (atr & (X1ATR_Yx2 << 8)) {                                  if (atr & (TRAMATR_Yx2 << 8)) {
                                         udt |= (UPDATE_TRAM | 1) << 8;          // º¸ÄÙ¤ì½ÄÇÜ³Ñ                                          udt |= (UPDATE_TRAM | 1) << 8;          // º¸ÄÙ¤ì½ÄÇܳÑ
                                 }                                  }
                                 else {                                  else {
Line 83  static void flashupdatetmp(void) { Line 66  static void flashupdatetmp(void) {
                                 }                                  }
                         }                          }
                         if (!y2) {                          if (!y2) {
                                 if (atr & (X1ATR_Yx2 << 0)) {                                  if (atr & (TRAMATR_Yx2 << 0)) {
                                         udt |= (UPDATE_TRAM | 1) << 0;          // ±¦ÄÙ¤ì½ÄÇÜ³Ñ                                          udt |= (UPDATE_TRAM | 1) << 0;          // ±¦ÄÙ¤ì½ÄÇܳÑ
                                 }                                  }
                                 else {                                  else {
                                         y2 = TRUE;                                          y2 = TRUE;
                                 }                                  }
                         }                          }
                         if (atr & (X1ATR_Xx2 << 8)) {                           // º¸Â¦ÇܳÑ?                          if (atr & (TRAMATR_Xx2 << 8)) {                         // º¸Â¦ÇܳÑ?
                                 udt |= 0x0812;                                  udt |= 0x0812;
                         }                          }
                         if (atr & (X1ATR_Xx2 << 0)) {                           // ±¦Â¦ÇܳÑ?                          if (atr & (TRAMATR_Xx2 << 0)) {                         // ±¦Â¦ÇܳÑ?
                                 udt |= 0x0008;                                  udt |= 0x0008;
                         }                          }
                         if ((updatetmp[posl] ^ (udt >> 8)) & 0x1f) {                          if ((updatetmp[posl] ^ (udt >> 8)) & 0x1f) {
Line 223  static BRESULT updateblink(void) { Line 206  static BRESULT updateblink(void) {
         else {          else {
                 blinktime = 30 - 1;                  blinktime = 30 - 1;
                 pos = makescrn.vramtop;                  pos = makescrn.vramtop;
                 blinktest ^= 0x10;                  makescrn.blinktest ^= 0x10;
                 update = 0;                  update = 0;
                 r = makescrn.vramsize;                  r = makescrn.vramsize;
                 while(r) {                  while(r) {
Line 245  static BRESULT updateblink(void) { Line 228  static BRESULT updateblink(void) {
 }  }
   
   
 // ---------------------------------------------------------------------------  // ----
   
   static void changemodes(void) {
   
           lastdisp = crtc.e.dispmode;
           if (!(lastdisp & SCRN_BANK1)) {
                   makescrn.disp1 = GRP_RAM + GRAM_BANK0;
                   makescrn.disp2 = GRP_RAM + GRAM_BANK1;
                   makescrn.dispflag = UPDATE_TRAM | UPDATE_VRAM0;
           }
           else {
                   makescrn.disp1 = GRP_RAM + GRAM_BANK1;
                   makescrn.disp2 = GRP_RAM + GRAM_BANK0;
                   makescrn.dispflag = UPDATE_TRAM | UPDATE_VRAM1;
           }
           scrnallflash = 1;
           makescrn.palandply = 1;
   }
   
 static void x1vram_adjust(void) {  static void changecrtc(void) {
   
         REG8    widthmode;          REG8    widthmode;
         UINT    fontcy;          UINT    fontcy;
Line 259  static void x1vram_adjust(void) { Line 259  static void x1vram_adjust(void) {
         makescrn.vramtop = LOW11(crtc.s.TXT_TOP);          makescrn.vramtop = LOW11(crtc.s.TXT_TOP);
   
         if (crtc.s.TXT_XL <= 40) {          if (crtc.s.TXT_XL <= 40) {
                 if (dispmode & SCRN_DRAW4096) {                  if (lastdisp & SCRN_DRAW4096) {
                         widthmode = SCRNWIDTHMODE_4096;                          widthmode = SCRNWIDTHMODE_4096;
                 }                  }
                 else {                  else {
Line 307  static void x1vram_adjust(void) { Line 307  static void x1vram_adjust(void) {
         if (surfcy > crtc.s.TXT_YL) {          if (surfcy > crtc.s.TXT_YL) {
                 surfcy = crtc.s.TXT_YL;                  surfcy = crtc.s.TXT_YL;
         }          }
           surfcy = max(1, surfcy);
         makescrn.surfcy = surfcy;          makescrn.surfcy = surfcy;
         makescrn.surfstep = (SURFACE_WIDTH * charcy * 2) - (makescrn.surfcx * 8);          makescrn.surfstep = (SURFACE_WIDTH * charcy * 2) - (makescrn.surfcx * 8);
         makescrn.vramsize = min(0x800, surfcy * crtc.s.TXT_XL);          makescrn.vramsize = min(0x800, surfcy * crtc.s.TXT_XL);
Line 341  void scrnupdate(void) { Line 342  void scrnupdate(void) {
         corestat.drawframe = 0;          corestat.drawframe = 0;
   
         ddrawflash = FALSE;          ddrawflash = FALSE;
         if (lastdisp != dispmode) {          if (lastdisp != crtc.e.dispmode) {
                 lastdisp = dispmode;                  changemodes();
                 scrnallflash = 1;  
                 makescrn.palandply = 1;  
                 if (!(dispmode & SCRN_BANK1)) {  
                         dispp = GRP_RAM + GRAM_BANK0;  
                         dispp2 = GRP_RAM + GRAM_BANK1;  
                         dispflg = UPDATE_TRAM | UPDATE_VRAM0;  
                 }  
                 else {  
                         dispp = GRP_RAM + GRAM_BANK1;  
                         dispp2 = GRP_RAM + GRAM_BANK0;  
                         dispflg = UPDATE_TRAM | UPDATE_VRAM1;  
                 }  
         }          }
         if (scrnallflash) {          if (scrnallflash) {
                 scrnallflash = 0;                  scrnallflash = 0;
                 fillupdatetmp();                  fillupdatetmp();
                 x1vram_adjust();                  changecrtc();
                 makescrn.scrnflash = 1;                  makescrn.scrnflash = 1;
         }          }
         if (makescrn.remakeattr) {          if (makescrn.remakeattr) {
Line 368  void scrnupdate(void) { Line 357  void scrnupdate(void) {
         }          }
         if (makescrn.palandply) {          if (makescrn.palandply) {
                 makescrn.palandply = 0;                  makescrn.palandply = 0;
                 palettes();                  pal_update();
                 ddrawflash = 1;                  ddrawflash = 1;
         }          }
         if (makescrn.existblink) {          if (makescrn.existblink) {
Line 439  void scrnupdate(void) { Line 428  void scrnupdate(void) {
         }          }
 }  }
   
   
   void makescrn_initialize(void) {
   
           makesub_initialize();
   }
   
   void makescrn_reset(void) {
   
           fillupdatetmp();
           changemodes();
           changecrtc();
   }
   

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


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