Diff for /xmil/io/crtc.c between versions 1.18 and 1.19

version 1.18, 2004/08/18 08:08:13 version 1.19, 2005/02/04 06:42:11
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
 #include        "scrnmng.h"  
 #include        "z80core.h"  #include        "z80core.h"
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
Line 49  static const GDCCLK gdcclk[] = { Line 48  static const GDCCLK gdcclk[] = {
 static void crtc_bankupdate(void) {  static void crtc_bankupdate(void) {
   
         if (!(crtc.s.SCRN_BITS & SCRN_ACCESSVRAM)) {          if (!(crtc.s.SCRN_BITS & SCRN_ACCESSVRAM)) {
                 crtc.e.gram = gram + GRAM_BANK0;                  crtc.e.gramacc = gram + GRAM_BANK0;
                 crtc.e.updatebit = UPDATE_VRAM0;                  crtc.e.updatebit = UPDATE_VRAM0;
         }          }
         else {          else {
                 crtc.e.gram = gram + GRAM_BANK1;                  crtc.e.gramacc = gram + GRAM_BANK1;
                 crtc.e.updatebit = UPDATE_VRAM1;                  crtc.e.updatebit = UPDATE_VRAM1;
         }          }
 }  }
Line 237  static void crtc_timingupdate(void) { Line 236  static void crtc_timingupdate(void) {
   
         UINT32  fontclock;          UINT32  fontclock;
         UINT    yl;          UINT    yl;
           SINT32  vsyncstart;
   
         // とりあえず…ね          // とりあえず…ね
           crtc.e.pos = crtc.s.reg[CRTCREG_POSL]
                                                                           + ((crtc.s.reg[CRTCREG_POSH] & 7) << 8);
   
         crtc.e.rasterdisp8 = (crtc.e.rasterclock8 * 40) / 56;          crtc.e.rasterdisp8 = (crtc.e.rasterclock8 * 40) / 56;
   
         fontclock = (crtc.s.reg[CRTCREG_CHRCY] & 0x1f) + 1;          fontclock = (crtc.s.reg[CRTCREG_CHRCY] & 0x1f) + 1;
Line 247  static void crtc_timingupdate(void) { Line 250  static void crtc_timingupdate(void) {
         // YsIIIが yl==0で disp信号見る…なんで?          // YsIIIが yl==0で disp信号見る…なんで?
         yl = (crtc.s.reg[CRTCREG_VDISP] & 0x7f);          yl = (crtc.s.reg[CRTCREG_VDISP] & 0x7f);
         crtc.e.yl = yl;          crtc.e.yl = yl;
         crtc.e.dispclock = fontclock * max(yl, 1);          iocore.e.dispclock = fontclock * max(yl, 1);
         crtc.e.vsyncstart = fontclock * ((crtc.s.reg[CRTCREG_VSYNC] & 0x7f) + 1);          vsyncstart = fontclock * ((crtc.s.reg[CRTCREG_VSYNC] & 0x7f) + 1);
         crtc.e.vpulseclock = ((crtc.s.reg[CRTCREG_PULSE] >> 4)          iocore.e.vsyncstart = vsyncstart;
   #if !defined(MAINFRAMES_OLD)
           iocore.e.vsyncend = vsyncstart + (((crtc.s.reg[CRTCREG_PULSE] >> 4)
                                                                                                   * crtc.e.rasterclock8) >> 8);
           neitem_mainframes(NEVENT_FRAMES);
   #else
           iocore.e.vpulseclock = ((crtc.s.reg[CRTCREG_PULSE] >> 4)
                                                                                                 * crtc.e.rasterclock8) >> 8;                                                                                                  * crtc.e.rasterclock8) >> 8;
   #endif
         crtc.e.pos = crtc.s.reg[CRTCREG_POSL]  
                                                                         + ((crtc.s.reg[CRTCREG_POSH] & 7) << 8);  
 }  }
   
   
Line 271  void IOOUTCALL crtc_o(UINT port, REG8 va Line 278  void IOOUTCALL crtc_o(UINT port, REG8 va
                                 crtc.s.reg[crtc.s.regnum] = value;                                  crtc.s.reg[crtc.s.regnum] = value;
                                 crtc_clkupdate();                                  crtc_clkupdate();
                                 crtc_timingupdate();                                  crtc_timingupdate();
                                 makescrn.remakeattr = 1;                                  crtc.e.remakeattr = 1;
                                 scrnallflash = 1;                                  crtc.e.scrnallflash = 1;
                         }                          }
                 }                  }
         }          }
Line 292  void IOOUTCALL scrn_o(UINT port, REG8 va Line 299  void IOOUTCALL scrn_o(UINT port, REG8 va
         }          }
         if (modify & SCRN_DISPCHANGE) {          if (modify & SCRN_DISPCHANGE) {
 //              pal_reset();                                    // なんで?  //              pal_reset();                                    // なんで?
                 scrnallflash = 1;                  crtc.e.scrnallflash = 1;
                 crtc_dispupdate();                  crtc_dispupdate();
                 crtc_clkupdate();                  crtc_clkupdate();
                 crtc_timingupdate();                  crtc_timingupdate();
                 makescrn.palandply = 1;                  crtc.e.palandply = 1;
         }          }
         (void)port;          (void)port;
 }  }
Line 314  void IOOUTCALL ply_o(UINT port, REG8 val Line 321  void IOOUTCALL ply_o(UINT port, REG8 val
   
         if (crtc.s.rgbp[CRTC_PLY] != value) {          if (crtc.s.rgbp[CRTC_PLY] != value) {
                 crtc.s.rgbp[CRTC_PLY] = value;                  crtc.s.rgbp[CRTC_PLY] = value;
                 makescrn.palandply = 1;                  crtc.e.palandply = 1;
 #if defined(SUPPORT_PALEVENT)  #if defined(SUPPORT_PALEVENT)
                 if ((!corestat.vsync) && (palevent.events < SUPPORT_PALEVENT)) {                  if ((!corestat.vsync) && (palevent.events < SUPPORT_PALEVENT)) {
                         PAL1EVENT *e = palevent.event + palevent.events;                          PAL1EVENT *e = palevent.event + palevent.events;
Line 346  void IOOUTCALL palette_o(UINT port, REG8 Line 353  void IOOUTCALL palette_o(UINT port, REG8
                 num = (port >> 8) & 3;                  num = (port >> 8) & 3;
                 if (crtc.s.rgbp[num] != value) {                  if (crtc.s.rgbp[num] != value) {
                         crtc.s.rgbp[num] = value;                          crtc.s.rgbp[num] = value;
                         makescrn.palandply = 1;                          crtc.e.palandply = 1;
 #if defined(SUPPORT_PALEVENT)  #if defined(SUPPORT_PALEVENT)
                         if ((!corestat.vsync) && (palevent.events < SUPPORT_PALEVENT)) {                          if ((!corestat.vsync) && (palevent.events < SUPPORT_PALEVENT)) {
                                 PAL1EVENT *e = palevent.event + palevent.events;                                  PAL1EVENT *e = palevent.event + palevent.events;
Line 402  void IOOUTCALL blackctrl_o(UINT port, RE Line 409  void IOOUTCALL blackctrl_o(UINT port, RE
   
         if (crtc.s.rgbp[CRTC_BLACK] != value) {          if (crtc.s.rgbp[CRTC_BLACK] != value) {
                 crtc.s.rgbp[CRTC_BLACK] = value;                  crtc.s.rgbp[CRTC_BLACK] = value;
                 makescrn.palandply = 1;                  crtc.e.palandply = 1;
 #if defined(SUPPORT_PALEVENT)  #if defined(SUPPORT_PALEVENT)
                 if ((!corestat.vsync) && (palevent.events < SUPPORT_PALEVENT)) {                  if ((!corestat.vsync) && (palevent.events < SUPPORT_PALEVENT)) {
                         PAL1EVENT *e = palevent.event + palevent.events;                          PAL1EVENT *e = palevent.event + palevent.events;
Line 542  void crtc_update(void) { Line 549  void crtc_update(void) {
         crtc_dispupdate();          crtc_dispupdate();
         crtc_clkupdate();          crtc_clkupdate();
         crtc_timingupdate();          crtc_timingupdate();
         makescrn.palandply = 1;          crtc.e.palandply = 1;
         scrnallflash = 1;          crtc.e.scrnallflash = 1;
 }  }
   
 void crtc_setwidth(REG8 width40) {  void crtc_setwidth(REG8 width40) {
Line 594  void crtc_reset(void) { Line 601  void crtc_reset(void) {
 //      }  //      }
   
         pal_reset();          pal_reset();
         makescrn.palandply = 1;          crtc.e.palandply = 1;
         crtc_update();          crtc_update();
 }  }
   
Line 602  void crtc_forcesetwidth(REG8 width) { Line 609  void crtc_forcesetwidth(REG8 width) {
   
         crtc.s.reg[CRTCREG_HDISP] = (UINT8)width;          crtc.s.reg[CRTCREG_HDISP] = (UINT8)width;
         crtc_dispupdate();          crtc_dispupdate();
         scrnallflash = 1;          crtc.e.scrnallflash = 1;
 }  }
   

Removed from v.1.18  
changed lines
  Added in v.1.19


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