Diff for /xmil/vram/scrndraw.c between versions 1.8 and 1.11

version 1.8, 2004/08/17 14:46:37 version 1.11, 2004/08/20 08:41:41
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
 #include        "scrnmng.h"  #include        "scrnmng.h"
 #include        "sysmng.h"  
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
 #include        "scrndraw.h"  #include        "scrndraw.h"
Line 9 Line 8
 #include        "makescrn.h"  #include        "makescrn.h"
   
   
         SCRN    scrn;  
         UINT8   renewalline[SURFACE_HEIGHT+4];          UINT8   renewalline[SURFACE_HEIGHT+4];
         UINT8   screenmap[SURFACE_SIZE];          UINT8   screenmap[SURFACE_SIZE];
   
Line 32  void scrndraw_initialize(void) {     //  Line 30  void scrndraw_initialize(void) {     // 
         ZeroMemory(xmil_pal32, sizeof(xmil_pal32));          ZeroMemory(xmil_pal32, sizeof(xmil_pal32));
         xmil_palettes = 0;          xmil_palettes = 0;
   
         scrn.widthmode = SCRNWIDTHMODE_WIDTH40;  
   
         updateallline(0x03030303);                      // updateallline(0x01010101);          updateallline(0x03030303);                      // updateallline(0x01010101);
         scrnmng_allflash();          scrnmng_allflash();
         sysmng_scrnwidth(scrn.widthmode);  
 }  
   
 void scrndraw_changewidth(REG8 widthmode) {  
   
         if (scrn.widthmode != widthmode) {  
                 scrn.widthmode = widthmode;  
                 sysmng_scrnwidth(widthmode);  
                 updateallline(0x01010101);                              // fillrenewalline(0x03030303)  
         }  
 }  }
   
 void scrndraw_changepalette(void) {  void scrndraw_changepalette(void) {
Line 63  void scrndraw_changepalette(void) { Line 49  void scrndraw_changepalette(void) {
   
 // ----  // ----
   
 #if 0  #if defined(SUPPORT_PALEVENT)
 #if defined(SUPPORT_RASTER)  
 static REG8 rasterdraw(SDRAWFN sdrawfn, SDRAW sdraw, int maxy) {  static REG8 rasterdraw(SDRAWFN sdrawfn, SDRAW sdraw, int maxy) {
   
           UINT8           rgbp[8];
         SINT32          rasterclock;          SINT32          rasterclock;
         SINT32          clock;          SINT32          clock;
         PAL1EVENT       *event;          PAL1EVENT       *event;
Line 74  static REG8 rasterdraw(SDRAWFN sdrawfn,  Line 60  static REG8 rasterdraw(SDRAWFN sdrawfn, 
         int                     nextupdate;          int                     nextupdate;
         int                     y;          int                     y;
   
           CopyMemory(rgbp, palevent.rgbp, 8);
         rasterclock = crtc.e.rasterclock8;          rasterclock = crtc.e.rasterclock8;
         if (crtc.s.SCRN_BITS & SCRN_24KHZ) {          if (crtc.s.SCRN_BITS & SCRN_24KHZ) {
                 rasterclock = rasterclock * 2;                  rasterclock = rasterclock * 2;
Line 90  static REG8 rasterdraw(SDRAWFN sdrawfn,  Line 77  static REG8 rasterdraw(SDRAWFN sdrawfn, 
                 clock += rasterclock;                  clock += rasterclock;
                 // お弁当はあった?                  // お弁当はあった?
                 if (clock > (event->clock << 8)) {                  if (clock > (event->clock << 8)) {
                           pal_update1(rgbp);
                         (*sdrawfn)(sdraw, y);                          (*sdrawfn)(sdraw, y);
                         nextupdate = y;                          nextupdate = y;
                         // お弁当を食べる                          // お弁当を食べる
                         while(clock > (event->clock << 8)) {                          while(clock > (event->clock << 8)) {
 //                              ((BYTE *)pal)[event->color] = event->value;                                  ((UINT8 *)rgbp)[event->rgbp] = event->value;
                                 event++;                                  event++;
                                 if (event >= eventterm) {                                  if (event >= eventterm) {
                                         break;                                          break;
Line 103  static REG8 rasterdraw(SDRAWFN sdrawfn,  Line 91  static REG8 rasterdraw(SDRAWFN sdrawfn, 
                 }                  }
         }          }
         if (y < maxy) {          if (y < maxy) {
                 if (!(np2cfg.LCD_MODE & 1)) {                  pal_update1(rgbp);
                         pal_makeanalog(pal, 0xffff);  
                 }  
                 else {  
                         pal_makeanalog_lcd(pal, 0xffff);  
                 }  
                 if (np2cfg.skipline) {  
                         np2_pal32[0].d = np2_pal32[NP2PAL_SKIP].d;  
 #if defined(SUPPORT_16BPP)  
                         np2_pal16[0] = np2_pal16[NP2PAL_SKIP];  
 #endif  
                 }  
                 (*sdrawfn)(sdraw, maxy);                  (*sdrawfn)(sdraw, maxy);
         }          }
         if (palevent.vsyncpal) {          // 戻すすすす
                 return(2);          pal_update1(crtc.s.rgbp);
         }  
         else if (nextupdate) {          if (nextupdate) {
                 for (y=0; y<nextupdate; y+=2) {                  for (y=0; y<nextupdate; y+=2) {
                         *(UINT16 *)(renewal_line + y) |= 0x8080;                          *(UINT16 *)(renewalline + y) |= 0x0101;
                 }                  }
                 return(1);                  return(1);
         }          }
Line 131  static REG8 rasterdraw(SDRAWFN sdrawfn,  Line 108  static REG8 rasterdraw(SDRAWFN sdrawfn, 
         }          }
 }  }
 #endif  #endif
 #endif  
   
   
 // ----  // ----
   
 REG8 scrndraw_draw(REG8 redraw) {  REG8 scrndraw_draw(REG8 redraw) {
   
           REG8            ret;
 const SCRNSURF  *surf;  const SCRNSURF  *surf;
 const SDRAWFN   *sdrawfn;  const SDRAWFN   *sdrawfn;
         SDRAWFN         fn;          SDRAWFN         fn;
         _SDRAW          sdraw;          _SDRAW          sdraw;
         UINT            i;          UINT            i;
         REG8            ret;  
   
         if (redraw) {          if (redraw) {
                 updateallline(0x01010101);                  updateallline(0x01010101);
         }          }
   
           ret = 0;
         surf = scrnmng_surflock();          surf = scrnmng_surflock();
         if (surf == NULL) {          if (surf == NULL) {
                 goto sddr_exit1;                  goto sddr_exit1;
Line 157  const SDRAWFN *sdrawfn; Line 134  const SDRAWFN *sdrawfn;
         if (sdrawfn == NULL) {          if (sdrawfn == NULL) {
                 goto sddr_exit2;                  goto sddr_exit2;
         }          }
         switch(scrn.widthmode) {          sdrawfn += makescrn.drawmode;
                 case SCRNWIDTHMODE_WIDTH80:  
                 default:  
                         break;  
   
                 case SCRNWIDTHMODE_WIDTH40:  
                         sdrawfn += 1;  
                         break;  
   
                 case SCRNWIDTHMODE_4096:  
                         sdrawfn += 2;  
                         break;  
         }  
         fn = *sdrawfn;          fn = *sdrawfn;
         if (fn == NULL) {          if (fn == NULL) {
                 goto sddr_exit2;                  goto sddr_exit2;
Line 184  const SDRAWFN *sdrawfn; Line 149  const SDRAWFN *sdrawfn;
   
         sdraw.src = screenmap;          sdraw.src = screenmap;
         sdraw.dst = surf->ptr;          sdraw.dst = surf->ptr;
   #if defined(SIZE_QVGA)
           sdraw.width = surf->width >> 1;
   #else
         sdraw.width = surf->width;          sdraw.width = surf->width;
         sdraw.xbytes = surf->xalign * surf->width;  #endif
           sdraw.xbytes = surf->xalign * sdraw.width;
         sdraw.y = 0;          sdraw.y = 0;
         sdraw.xalign = surf->xalign;          sdraw.xalign = surf->xalign;
         sdraw.yalign = surf->yalign;          sdraw.yalign = surf->yalign;
         ret = 0;  
 #if 1  
         (*fn)(&sdraw, 400);  
 #else  
 #if !defined(SUPPORT_PALEVENT)  #if !defined(SUPPORT_PALEVENT)
         (*fn)(&sdraw, 400);          (*fn)(&sdraw, 400);
 #else  #else
         if (((dispmode & SCRN64_MASK) != SCRN64_INVALID) ||          if ((crtc.e.dispmode & SCRN64_ENABLE) ||
                 (palevent.events >= PALEVENTMAX)) {                  (palevent.events >= SUPPORT_PALEVENT)) {
                 (*fn)(&sdraw, 400);                  (*fn)(&sdraw, 400);
         }          }
         else {          else {
                 ret = rasterdraw(*sdrawfn, &sdraw, 400);                  ret = rasterdraw(*sdrawfn, &sdraw, 400);
         }          }
 #endif  #endif
 #endif  
   
 sddr_exit2:  sddr_exit2:
         scrnmng_surfunlock(surf);          scrnmng_surfunlock(surf);

Removed from v.1.8  
changed lines
  Added in v.1.11


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