Diff for /np2/common/bmpdata.c between versions 1.1.1.1 and 1.4

version 1.1.1.1, 2003/10/16 17:57:11 version 1.4, 2005/02/07 14:46:08
Line 85  bdsi_exit: Line 85  bdsi_exit:
         return(ret);          return(ret);
 }  }
   
 BOOL bmpdata_getinfo(const BMPINFO *bi, BMPDATA *inf) {  BRESULT bmpdata_getinfo(const BMPINFO *bi, BMPDATA *inf) {
   
         UINT    tmp;          UINT    tmp;
         int             width;          int             width;
Line 107  BOOL bmpdata_getinfo(const BMPINFO *bi,  Line 107  BOOL bmpdata_getinfo(const BMPINFO *bi, 
         if (tmp != 0) {          if (tmp != 0) {
                 goto bdgi_err;                  goto bdgi_err;
         }          }
         width = LOADINTELDWORD(bi->biWidth);          width = (SINT32)LOADINTELDWORD(bi->biWidth);
         height = LOADINTELDWORD(bi->biHeight);          height = (SINT32)LOADINTELDWORD(bi->biHeight);
         if ((width <= 0) || (height == 0)) {          if ((width <= 0) || (height == 0)) {
                 goto bdgi_err;                  goto bdgi_err;
         }          }
Line 121  bdgi_err: Line 121  bdgi_err:
         return(FAILURE);          return(FAILURE);
 }  }
   
   UINT8 *bmpdata_lzx(int level, int dstsize, const UINT8 *dat) {
   
           UINT8   *ret;
           UINT8   *ptr;
           UINT8   ctrl;
           UINT8   bit;
           UINT    mask;
           UINT    tmp;
           int             pos;
           int             leng;
   
           ret = NULL;
           if (dat == NULL) {
                   return(NULL);
           }
           ret = (UINT8 *)_MALLOC(dstsize, "res");
           if (ret == NULL) {
                   goto lxz_err;
           }
           ptr = ret;
   
           ctrl = 0;
           bit = 0;
           mask = (1 << level) - 1;
           while(dstsize > 0) {
                   if (!bit) {
                           ctrl = *dat++;
                           bit = 0x80;
                   }
                   if (ctrl & bit) {
                           tmp = *dat++;
                           tmp <<= 8;
                           tmp |= *dat++;
                           pos = -1 - (tmp >> level);
                           leng = (tmp & mask) + 1;
                           leng = min(leng, dstsize);
                           dstsize -= leng;
                           while(leng--) {
                                   *ptr = *(ptr + pos);
                                   ptr++;
                           }
                   }
                   else {
                           *ptr++ = *dat++;
                           dstsize--;
                   }
                   bit >>= 1;
           }
   
   lxz_err:
           return(ret);
   }
   
   UINT8 *bmpdata_solvedata(const UINT8 *dat) {
   
           int             dstsize;
   
           if (dat == NULL) {
                   return(NULL);
           }
           dstsize = dat[0] + (dat[1] << 8) + (dat[2] << 16);
           return(bmpdata_lzx(dat[3], dstsize, dat + 4));
   }
   

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


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