Diff for /xmil/vram/scrndraw.c between versions 1.7 and 1.9

version 1.7, 2004/08/17 12:30:41 version 1.9, 2004/08/17 16:52:46
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
 #include        "scrnmng.h"  #include        "scrnmng.h"
 #include        "sysmng.h"  #include        "sysmng.h"
   #include        "pccore.h"
   #include        "iocore.h"
 #include        "scrndraw.h"  #include        "scrndraw.h"
 #include        "sdraw.h"  #include        "sdraw.h"
 #include        "palettes.h"  #include        "palettes.h"
Line 58  void scrndraw_changepalette(void) { Line 60  void scrndraw_changepalette(void) {
         updateallline(0x01010101);                                      // fillrenewalline(0x03030303)          updateallline(0x01010101);                                      // fillrenewalline(0x03030303)
 }  }
   
   
   // ----
   
   #if defined(SUPPORT_PALEVENT)
   static REG8 rasterdraw(SDRAWFN sdrawfn, SDRAW sdraw, int maxy) {
   
           UINT8           rgbp[8];
           SINT32          rasterclock;
           SINT32          clock;
           PAL1EVENT       *event;
           PAL1EVENT       *eventterm;
           int                     nextupdate;
           int                     y;
   
           CopyMemory(rgbp, palevent.rgbp, 8);
           rasterclock = crtc.e.rasterclock8;
           if (crtc.s.SCRN_BITS & SCRN_24KHZ) {
                   rasterclock = rasterclock * 2;
           }
           clock = 0;
           event = palevent.event;
           eventterm = event + palevent.events;
           nextupdate = 0;
   
           for (y=2; y<maxy; y+=2) {
                   if (event >= eventterm) {
                           break;
                   }
                   clock += rasterclock;
                   // お弁当はあった?
                   if (clock > (event->clock << 8)) {
                           pal_update1(rgbp);
                           (*sdrawfn)(sdraw, y);
                           nextupdate = y;
                           // お弁当を食べる
                           while(clock > (event->clock << 8)) {
                                   ((UINT8 *)rgbp)[event->rgbp] = event->value;
                                   event++;
                                   if (event >= eventterm) {
                                           break;
                                   }
                           }
                   }
           }
           if (y < maxy) {
                   pal_update1(rgbp);
                   (*sdrawfn)(sdraw, maxy);
           }
           // 戻すすすす
           pal_update1(crtc.s.rgbp);
   
           if (nextupdate) {
                   for (y=0; y<nextupdate; y+=2) {
                           *(UINT16 *)(renewalline + y) |= 0x0101;
                   }
                   return(1);
           }
           else {
                   return(0);
           }
   }
   #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;
Line 70  const SDRAWFN *sdrawfn; Line 139  const SDRAWFN *sdrawfn;
                 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 110  const SDRAWFN *sdrawfn; Line 180  const SDRAWFN *sdrawfn;
         sdraw.y = 0;          sdraw.y = 0;
         sdraw.xalign = surf->xalign;          sdraw.xalign = surf->xalign;
         sdraw.yalign = surf->yalign;          sdraw.yalign = surf->yalign;
   #if !defined(SUPPORT_PALEVENT)
         (*fn)(&sdraw, 400);          (*fn)(&sdraw, 400);
   #else
           if (((crtc.e.dispmode & SCRN64_MASK) != SCRN64_INVALID) ||
                   (palevent.events >= SUPPORT_PALEVENT)) {
                   (*fn)(&sdraw, 400);
           }
           else {
                   ret = rasterdraw(*sdrawfn, &sdraw, 400);
           }
   #endif
   
 sddr_exit2:  sddr_exit2:
         scrnmng_surfunlock(surf);          scrnmng_surfunlock(surf);
   
 sddr_exit1:  sddr_exit1:
         return(0);          return(ret);
 }  }
   
 void scrndraw_redraw(void) {  void scrndraw_redraw(void) {

Removed from v.1.7  
changed lines
  Added in v.1.9


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