Difference for texmap/tmapppro.S from version 1.1 to 1.2


version 1.1 version 1.2
Line 1
 
Line 1
 /// tmap_scanline_per - Pentium-Pro-optimized assembly version  /// tmap_scanline_per - Pentium-Pro-optimized assembly version
 /// written by Brian Raiter, Mar 1998.  /// written by Brian Raiter, Mar 1998.
   /// lighting roundoff error fixed by Matt Mueller, July 1999
   
 /// The gist of the algorithm is as follows (note that this is  /// The gist of the algorithm is as follows (note that this is
 /// pseudocode, not actual C):  /// pseudocode, not actual C):
Line 266
 
Line 266
 // divided by 256 so that the byte needed for the fade table offset  // divided by 256 so that the byte needed for the fade table offset
 // will be aligned.  // will be aligned.
   
   //Dividing by 256 is bad.. rounding errors and crap.  We'll now do that
   //right before we need to access the table instead.  -MM
   
                 movl    (_fx_l), %edx                  movl    (_fx_l), %edx
  sarl $8, %edx  // sarl $8, %edx
  movl %edx, (l)   movl %edx, (l)
                 movl    (_fx_dl_dx), %edx                  movl    (_fx_dl_dx), %edx
  sarl $6, %edx  // sarl $6, %edx
    sall $2, %edx
  movl %edx, (dldx)   movl %edx, (dldx)
   
 // Store pixptr, the pointer to our 64x64 texture map, in %esi. Store  // Store pixptr, the pointer to our 64x64 texture map, in %esi. Store
Line 372
 
Line 376
  movl (dldx), %ecx   movl (dldx), %ecx
  addl %ebp, %ecx   addl %ebp, %ecx
  movl %ecx, (l)   movl %ecx, (l)
 //edited 05/14/99 Matt Mueller - original glitches in really dark places, so changed from 0xFF00 to 0x7F00 to eliminate invalid values   sarl $8, %ebp
  andl $0x7F00, %ebp   andl $0x7F00, %ebp
 //end edit -MM  
                 movb    fadetbl(%edx,%ebp), %dl         // 0 e                  movb    fadetbl(%edx,%ebp), %dl         // 0 e
   
  movl (vbyz4), %ebx   movl (vbyz4), %ebx
Line 472
 
Line 475
                 cmpb    $255, %dl                       // 0 e                  cmpb    $255, %dl                       // 0 e
                 sbbb    %ah, %ah                        // 0 f                  sbbb    %ah, %ah                        // 0 f
  movl %ecx, (l)   movl %ecx, (l)
 //edited 05/14/99 Matt Mueller - original glitches in really dark places, so changed from 0xFF00 to 0x7F00 to eliminate invalid values   sarl $8, %ebp
  andl $0x7F00, %ebp   andl $0x7F00, %ebp
 //end edit -MM  
                 movb    fadetbl(%edx,%ebp), %dl         // 0 g                  movb    fadetbl(%edx,%ebp), %dl         // 0 g
                 movb    (%edi), %al                     // 0 h                  movb    (%edi), %al                     // 0 h
                 xorb    %al, %dl                        // 0 i                  xorb    %al, %dl                        // 0 i
Line 560
 
Line 563
   
  DoFPCalcs   DoFPCalcs
  movl (l), %ebp   movl (l), %ebp
 //edited 05/14/99 Matt Mueller - original glitches in really dark places, so changed from 0xFF00 to 0x7F00 to eliminate invalid values   sarl $8, %ebp
  andl $0x7F00, %ebp   andl $0x7F00, %ebp
 //end edit -MM  
  movl (ubyz4), %eax   movl (ubyz4), %eax
  incl %eax   incl %eax
  andl $0x3FF0, %eax   andl $0x3FF0, %eax

Legend:
line(s) removed in v.1.1 
line(s) changed
 line(s) added in v.1.2