home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #6 / amigaacscoverdisc1998-061998.iso / games / descent / source / main / netmisc.c < prev    next >
C/C++ Source or Header  |  1998-06-08  |  6KB  |  181 lines

  1. /*
  2. THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
  3. SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
  4. END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
  5. ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
  6. IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
  7. SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
  8. FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
  9. CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
  10. AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
  11. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
  12. */
  13. /*
  14.  * $Source: f:/miner/source/main/rcs/netmisc.c $
  15.  * $Revision: 2.0 $
  16.  * $Author: john $
  17.  * $Date: 1995/02/27 11:27:24 $
  18.  * 
  19.  * Misc routines for network.
  20.  * 
  21.  * $Log: netmisc.c $
  22.  * Revision 2.0  1995/02/27  11:27:24  john
  23.  * New version 2.0, which has no anonymous unions, builds with
  24.  * Watcom 10.0, and doesn't require parsing BITMAPS.TBL.
  25.  * 
  26.  * Revision 1.3  1994/11/19  15:19:34  mike
  27.  * rip out unused code and data.
  28.  * 
  29.  * Revision 1.2  1994/08/09  19:31:53  john
  30.  * Networking changes.
  31.  * 
  32.  * Revision 1.1  1994/08/08  11:06:07  john
  33.  * Initial revision
  34.  * 
  35.  * 
  36.  */
  37.  
  38.  
  39. #pragma off (unreferenced)
  40. static char rcsid[] = "$Id: netmisc.c 2.0 1995/02/27 11:27:24 john Exp $";
  41. #pragma on (unreferenced)
  42.  
  43. #include <string.h>
  44.  
  45. #include "types.h"
  46. #include "mono.h"
  47.  
  48. // Calculates the checksum of a block of memory.
  49. ushort netmisc_calc_checksum( void * vptr, int len )
  50. {
  51.     ubyte * ptr = (ubyte *)vptr;
  52.     unsigned int sum1,sum2;
  53.  
  54.     sum1 = sum2 = 0;
  55.  
  56.     while(len--)    {
  57.         sum1 += *ptr++;
  58.         if (sum1 >= 255 ) sum1 -= 255;
  59.         sum2 += sum1;
  60.     }
  61.     sum2 %= 255;
  62.     
  63.     return ((sum1<<8)+ sum2);
  64. }
  65.  
  66. //--unused-- //Finds the difference between block1 and block2.  Fills in diff_buffer and 
  67. //--unused-- //returns the size of diff_buffer.
  68. //--unused-- int netmisc_find_diff( void *block1, void *block2, int block_size, void *diff_buffer )
  69. //--unused-- {
  70. //--unused--     int mode;
  71. //--unused--     ushort *c1, *c2, *diff_start, *c3;
  72. //--unused--     int i, j, size, diff, n , same;
  73. //--unused-- 
  74. //--unused--     size=(block_size+1)/sizeof(ushort);
  75. //--unused--     c1 = (ushort *)block1;
  76. //--unused--     c2 = (ushort *)block2;
  77. //--unused--     c3 = (ushort *)diff_buffer;
  78. //--unused-- 
  79. //--unused--     mode = same = diff = n = 0;
  80. //--unused-- 
  81. //--unused--     //mprintf( 0, "=================================\n" );
  82. //--unused-- 
  83. //--unused--     for (i=0; i<size; i++, c1++, c2++ )    {
  84. //--unused--         if (*c1 != *c2 ) {
  85. //--unused--             if (mode==0)    {
  86. //--unused--                 mode = 1;
  87. //--unused--                 //mprintf( 0, "%ds ", same );
  88. //--unused--                 c3[n++] = same;
  89. //--unused--                 same=0; diff=0;
  90. //--unused--                 diff_start = c2;
  91. //--unused--             }
  92. //--unused--             *c1 = *c2;
  93. //--unused--             diff++;
  94. //--unused--             if (diff==65535) {
  95. //--unused--                 mode = 0;
  96. //--unused--                 // send how many diff ones.
  97. //--unused--                 //mprintf( 0, "%dd ", diff );
  98. //--unused--                 c3[n++]=diff;
  99. //--unused--                 // send all the diff ones.
  100. //--unused--                 for (j=0; j<diff; j++ )
  101. //--unused--                     c3[n++] = diff_start[j];
  102. //--unused--                 same=0; diff=0;
  103. //--unused--                 diff_start = c2;
  104. //--unused--             }
  105. //--unused--         } else {
  106. //--unused--             if (mode==1)    {
  107. //--unused--                 mode=0;
  108. //--unused--                 // send how many diff ones.
  109. //--unused--                 //mprintf( 0, "%dd ", diff );
  110. //--unused--                 c3[n++]=diff;
  111. //--unused--                 // send all the diff ones.
  112. //--unused--                 for (j=0; j<diff; j++ )
  113. //--unused--                     c3[n++] = diff_start[j];
  114. //--unused--                 same=0; diff=0;
  115. //--unused--                 diff_start = c2;
  116. //--unused--             }
  117. //--unused--             same++;
  118. //--unused--             if (same==65535)    {
  119. //--unused--                 mode=1;
  120. //--unused--                 // send how many the same
  121. //--unused--                 //mprintf( 0, "%ds ", same );
  122. //--unused--                 c3[n++] = same;
  123. //--unused--                 same=0; diff=0;
  124. //--unused--                 diff_start = c2;
  125. //--unused--             }
  126. //--unused--         }
  127. //--unused--     
  128. //--unused--     }
  129. //--unused--     if (mode==0)    {
  130. //--unused--         // send how many the same
  131. //--unused--         //mprintf( 0, "%ds ", same );
  132. //--unused--         c3[n++] = same;
  133. //--unused--     } else {
  134. //--unused--         // send how many diff ones.
  135. //--unused--         //mprintf( 0, "%dd ", diff );
  136. //--unused--         c3[n++]=diff;
  137. //--unused--         // send all the diff ones.
  138. //--unused--         for (j=0; j<diff; j++ )
  139. //--unused--             c3[n++] = diff_start[j];
  140. //--unused--     }
  141. //--unused-- 
  142. //--unused--     //mprintf( 0, "=================================\n" );
  143. //--unused--     
  144. //--unused--     return n*2;
  145. //--unused-- }
  146.  
  147. //--unused-- //Applies diff_buffer to block1 to create a new block1.  Returns the final
  148. //--unused-- //size of block1.
  149. //--unused-- int netmisc_apply_diff(void *block1, void *diff_buffer, int diff_size )    
  150. //--unused-- {
  151. //--unused--     unsigned int i, j, n, size;
  152. //--unused--     ushort *c1, *c2;
  153. //--unused-- 
  154. //--unused--     //mprintf( 0, "=================================\n" );
  155. //--unused--     c1 = (ushort *)diff_buffer;
  156. //--unused--     c2 = (ushort *)block1;
  157. //--unused-- 
  158. //--unused--     size = diff_size/2;
  159. //--unused-- 
  160. //--unused--     i=j=0;
  161. //--unused--     while (1)    {
  162. //--unused--         j += c1[i];            // Same
  163. //--unused--         //mprintf( 0, "%ds ", c1[i] );
  164. //--unused--         i++;
  165. //--unused--         if ( i>=size) break;
  166. //--unused--         n = c1[i];            // ndiff
  167. //--unused--         //mprintf( 0, "%dd ", c1[i] );
  168. //--unused--         i++;
  169. //--unused--         if (n>0)    {
  170. //--unused--             //Assert( n* < 256 );
  171. //--unused--             memcpy( &c2[j], &c1[i], n*2 );
  172. //--unused--             i += n;
  173. //--unused--             j += n;
  174. //--unused--         }
  175. //--unused--         if ( i>=size) break;
  176. //--unused--     }
  177. //--unused--     //mprintf( 0, "=================================\n" );
  178. //--unused-- 
  179. //--unused--     return j*2;
  180. //--unused-- }
  181.