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

version 1.2, 2004/08/04 15:18:26 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        "draw.h"  
 #include        "palettes.h"  #include        "palettes.h"
   #include        "makescrn.h"
   
   
         SCRN    scrn;          SCRN    scrn;
Line 27  static void updateallline(UINT32 update) Line 29  static void updateallline(UINT32 update)
 void scrndraw_initialize(void) {                                        // ddraws_init  void scrndraw_initialize(void) {                                        // ddraws_init
   
         ZeroMemory(screenmap, sizeof(screenmap));          ZeroMemory(screenmap, sizeof(screenmap));
         ZeroMemory(x1n_pal32, sizeof(x1n_pal32));          ZeroMemory(xmil_pal32, sizeof(xmil_pal32));
           xmil_palettes = 0;
   
         scrn.widthmode = SCRNWIDTHMODE_WIDTH40;          scrn.widthmode = SCRNWIDTHMODE_WIDTH40;
   
         xm_palettes = 0;  
         updateallline(0x03030303);                      // updateallline(0x01010101);          updateallline(0x03030303);                      // updateallline(0x01010101);
         scrnmng_allflash();          scrnmng_allflash();
         sysmng_scrnwidth(scrn.widthmode);          sysmng_scrnwidth(scrn.widthmode);
Line 55  void scrndraw_changepalette(void) { Line 57  void scrndraw_changepalette(void) {
                 return;                  return;
         }          }
 #endif  #endif
 #if defined(SUPPORT_16BPP)  
         if (scrnmng_getbpp() == 16) {  
                 pals_cnv16pal(x1n_pal16, x1n_pal32, xm_palettes);  
         }  
 #endif  
         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;
         _SDRAW          sdraw;          _SDRAW          sdraw;
         UINT            i;          UINT            i;
   
           if (redraw) {
                   updateallline(0x01010101);
           }
   
           ret = 0;
         surf = scrnmng_surflock();          surf = scrnmng_surflock();
         if (surf == NULL) {          if (surf == NULL) {
                 goto sddr_exit1;                  goto sddr_exit1;
Line 111  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) {
   
         scrnmng_allflash();          scrnmng_allflash();
         scrnmng_palchanged();                                           // ?          pal_update();
         updateallline(0x01010101);                                      // fillrenewalline(0x03030303)          scrndraw_draw(TRUE);
         palettes();  
         scrndraw_draw(FALSE);  
 }  }
   

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


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