Diff for /np2/io/serial.c between versions 1.3 and 1.4

version 1.3, 2003/10/23 06:26:16 version 1.4, 2003/10/23 18:33:13
Line 188  void keystat_resetjoykey(void) { Line 188  void keystat_resetjoykey(void) {
         }          }
 }  }
   
 BYTE keystat_getjoy(void) {  
   
         BYTE    ret = 0xff;  // ----
         BYTE    *p = (BYTE *)joykeytable;  
   typedef struct {
           BYTE    joysync;
           BYTE    joylast;
           BYTE    mouselast;
           BYTE    padding;
           BYTE    d_up;
           BYTE    d_dn;
           BYTE    d_lt;
           BYTE    d_rt;
   } KEYEXT;
   
   static  KEYEXT  keyext;
   static const BYTE mousedelta[] = {1, 1, 1, 1,
                                                                           2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 4};
   #define MOUSESTEPMAX ((sizeof(mousedelta) / sizeof(BYTE)) - 1)
   
   void keyext_flash(void) {
   
           keyext.joysync = 0;
   }
   
   BYTE keyext_getjoy(void) {
   
           BYTE    flg;
   const BYTE      *p;
         BYTE    bit;          BYTE    bit;
   
         for (bit=0x20; bit; bit>>=1, p+=2) {          if (!keyext.joysync) {
                 if ((keystat[*p] & 0x80) || (keystat[*(p+1)] & 0x80)) {                  keyext.joysync = 1;
                         ret &= ~bit;                  flg = 0xff;
                   p = joykeytable;
                   for (bit=0x20; bit; bit>>=1) {
                           if ((keystat[p[0]] & 0x80) || (keystat[p[1]] & 0x80)) {
                                   flg ^= bit;
                           }
                           p += 2;
                 }                  }
                   keyext.joylast = flg;
           }
           return(keyext.joylast);
   }
   
   BYTE keyext_getmouse(SINT16 *x, SINT16 *y) {
   
           BYTE    btn;
           BYTE    acc;
           SINT16  tmp;
           BYTE    ret;
   
           btn = keyext_getjoy();
           acc = btn | keyext.mouselast;
           keyext.mouselast = btn;
           tmp = 0;
           if (!(btn & 1)) {
                   tmp -= mousedelta[keyext.d_up];
           }
           if (!(acc & 1)) {
                   if (keyext.d_up < MOUSESTEPMAX) {
                           keyext.d_up++;
                   }
           }
           else {
                   keyext.d_up = 0;
           }
           if (!(btn & 2)) {
                   tmp += mousedelta[keyext.d_dn];
         }          }
           if (!(acc & 2)) {
                   if (keyext.d_dn < MOUSESTEPMAX) {
                           keyext.d_dn++;
                   }
           }
           else {
                   keyext.d_dn = 0;
           }
           *y += tmp;
   
           tmp = 0;
           if (!(btn & 4)) {
                   tmp -= mousedelta[keyext.d_lt];
           }
           if (!(acc & 4)) {
                   if (keyext.d_lt < MOUSESTEPMAX) {
                           keyext.d_lt++;
                   }
           }
           else {
                   keyext.d_lt = 0;
           }
           if (!(btn & 8)) {
                   tmp += mousedelta[keyext.d_rt];
           }
           if (!(acc & 8)) {
                   if (keyext.d_rt < MOUSESTEPMAX) {
                           keyext.d_rt++;
                   }
           }
           else {
                   keyext.d_rt = 0;
           }
           *x += tmp;
   
           ret = 0x5f;
           ret += (btn & 0x10) << 3;
           ret += (btn & 0x20);
         return(ret);          return(ret);
 }  }
   

Removed from v.1.3  
changed lines
  Added in v.1.4


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