Annotation of quakeworld/client/surf8.asm, revision 1.1.1.1

1.1       root        1:  .386P
                      2:  .model FLAT
                      3:  externdef _d_zistepu:dword
                      4:  externdef _d_pzbuffer:dword
                      5:  externdef _d_zistepv:dword
                      6:  externdef _d_zrowbytes:dword
                      7:  externdef _d_ziorigin:dword
                      8:  externdef _r_turb_s:dword
                      9:  externdef _r_turb_t:dword
                     10:  externdef _r_turb_pdest:dword
                     11:  externdef _r_turb_spancount:dword
                     12:  externdef _r_turb_turb:dword
                     13:  externdef _r_turb_pbase:dword
                     14:  externdef _r_turb_sstep:dword
                     15:  externdef _r_turb_tstep:dword
                     16:  externdef _r_bmodelactive:dword
                     17:  externdef _d_sdivzstepu:dword
                     18:  externdef _d_tdivzstepu:dword
                     19:  externdef _d_sdivzstepv:dword
                     20:  externdef _d_tdivzstepv:dword
                     21:  externdef _d_sdivzorigin:dword
                     22:  externdef _d_tdivzorigin:dword
                     23:  externdef _sadjust:dword
                     24:  externdef _tadjust:dword
                     25:  externdef _bbextents:dword
                     26:  externdef _bbextentt:dword
                     27:  externdef _cacheblock:dword
                     28:  externdef _d_viewbuffer:dword
                     29:  externdef _cachewidth:dword
                     30:  externdef _d_pzbuffer:dword
                     31:  externdef _d_zrowbytes:dword
                     32:  externdef _d_zwidth:dword
                     33:  externdef _d_scantable:dword
                     34:  externdef _r_lightptr:dword
                     35:  externdef _r_numvblocks:dword
                     36:  externdef _prowdestbase:dword
                     37:  externdef _pbasesource:dword
                     38:  externdef _r_lightwidth:dword
                     39:  externdef _lightright:dword
                     40:  externdef _lightrightstep:dword
                     41:  externdef _lightdeltastep:dword
                     42:  externdef _lightdelta:dword
                     43:  externdef _lightright:dword
                     44:  externdef _lightdelta:dword
                     45:  externdef _sourcetstep:dword
                     46:  externdef _surfrowbytes:dword
                     47:  externdef _lightrightstep:dword
                     48:  externdef _lightdeltastep:dword
                     49:  externdef _r_sourcemax:dword
                     50:  externdef _r_stepback:dword
                     51:  externdef _colormap:dword
                     52:  externdef _blocksize:dword
                     53:  externdef _sourcesstep:dword
                     54:  externdef _lightleft:dword
                     55:  externdef _blockdivshift:dword
                     56:  externdef _blockdivmask:dword
                     57:  externdef _lightleftstep:dword
                     58:  externdef _r_origin:dword
                     59:  externdef _r_ppn:dword
                     60:  externdef _r_pup:dword
                     61:  externdef _r_pright:dword
                     62:  externdef _ycenter:dword
                     63:  externdef _xcenter:dword
                     64:  externdef _d_vrectbottom_particle:dword
                     65:  externdef _d_vrectright_particle:dword
                     66:  externdef _d_vrecty:dword
                     67:  externdef _d_vrectx:dword
                     68:  externdef _d_pix_shift:dword
                     69:  externdef _d_pix_min:dword
                     70:  externdef _d_pix_max:dword
                     71:  externdef _d_y_aspect_shift:dword
                     72:  externdef _screenwidth:dword
                     73:  externdef _vright:dword
                     74:  externdef _vup:dword
                     75:  externdef _vpn:dword
                     76:  externdef _BOPS_Error:dword
                     77:  externdef _snd_scaletable:dword
                     78:  externdef _paintbuffer:dword
                     79:  externdef _snd_linear_count:dword
                     80:  externdef _snd_p:dword
                     81:  externdef _snd_vol:dword
                     82:  externdef _snd_out:dword
                     83:  externdef _r_leftclipped:dword
                     84:  externdef _r_leftenter:dword
                     85:  externdef _r_rightclipped:dword
                     86:  externdef _r_rightenter:dword
                     87:  externdef _modelorg:dword
                     88:  externdef _xscale:dword
                     89:  externdef _r_refdef:dword
                     90:  externdef _yscale:dword
                     91:  externdef _r_leftexit:dword
                     92:  externdef _r_rightexit:dword
                     93:  externdef _r_lastvertvalid:dword
                     94:  externdef _cacheoffset:dword
                     95:  externdef _newedges:dword
                     96:  externdef _removeedges:dword
                     97:  externdef _r_pedge:dword
                     98:  externdef _r_framecount:dword
                     99:  externdef _r_u1:dword
                    100:  externdef _r_emitted:dword
                    101:  externdef _edge_p:dword
                    102:  externdef _surface_p:dword
                    103:  externdef _surfaces:dword
                    104:  externdef _r_lzi1:dword
                    105:  externdef _r_v1:dword
                    106:  externdef _r_ceilv1:dword
                    107:  externdef _r_nearzi:dword
                    108:  externdef _r_nearzionly:dword
                    109:  externdef _edge_aftertail:dword
                    110:  externdef _edge_tail:dword
                    111:  externdef _current_iv:dword
                    112:  externdef _edge_head_u_shift20:dword
                    113:  externdef _span_p:dword
                    114:  externdef _edge_head:dword
                    115:  externdef _fv:dword
                    116:  externdef _edge_tail_u_shift20:dword
                    117:  externdef _r_apverts:dword
                    118:  externdef _r_anumverts:dword
                    119:  externdef _aliastransform:dword
                    120:  externdef _r_avertexnormals:dword
                    121:  externdef _r_plightvec:dword
                    122:  externdef _r_ambientlight:dword
                    123:  externdef _r_shadelight:dword
                    124:  externdef _aliasxcenter:dword
                    125:  externdef _aliasycenter:dword
                    126:  externdef _a_sstepxfrac:dword
                    127:  externdef _r_affinetridesc:dword
                    128:  externdef _acolormap:dword
                    129:  externdef _d_pcolormap:dword
                    130:  externdef _r_affinetridesc:dword
                    131:  externdef _d_sfrac:dword
                    132:  externdef _d_ptex:dword
                    133:  externdef _d_pedgespanpackage:dword
                    134:  externdef _d_tfrac:dword
                    135:  externdef _d_light:dword
                    136:  externdef _d_zi:dword
                    137:  externdef _d_pdest:dword
                    138:  externdef _d_pz:dword
                    139:  externdef _d_aspancount:dword
                    140:  externdef _erroradjustup:dword
                    141:  externdef _errorterm:dword
                    142:  externdef _d_xdenom:dword
                    143:  externdef _r_p0:dword
                    144:  externdef _r_p1:dword
                    145:  externdef _r_p2:dword
                    146:  externdef _a_tstepxfrac:dword
                    147:  externdef _r_sstepx:dword
                    148:  externdef _r_tstepx:dword
                    149:  externdef _a_ststepxwhole:dword
                    150:  externdef _zspantable:dword
                    151:  externdef _skintable:dword
                    152:  externdef _r_zistepx:dword
                    153:  externdef _erroradjustdown:dword
                    154:  externdef _d_countextrastep:dword
                    155:  externdef _ubasestep:dword
                    156:  externdef _a_ststepxwhole:dword
                    157:  externdef _a_tstepxfrac:dword
                    158:  externdef _r_lstepx:dword
                    159:  externdef _a_spans:dword
                    160:  externdef _erroradjustdown:dword
                    161:  externdef _d_pdestextrastep:dword
                    162:  externdef _d_pzextrastep:dword
                    163:  externdef _d_sfracextrastep:dword
                    164:  externdef _d_ptexextrastep:dword
                    165:  externdef _d_countextrastep:dword
                    166:  externdef _d_tfracextrastep:dword
                    167:  externdef _d_lightextrastep:dword
                    168:  externdef _d_ziextrastep:dword
                    169:  externdef _d_pdestbasestep:dword
                    170:  externdef _d_pzbasestep:dword
                    171:  externdef _d_sfracbasestep:dword
                    172:  externdef _d_ptexbasestep:dword
                    173:  externdef _ubasestep:dword
                    174:  externdef _d_tfracbasestep:dword
                    175:  externdef _d_lightbasestep:dword
                    176:  externdef _d_zibasestep:dword
                    177:  externdef _zspantable:dword
                    178:  externdef _r_lstepy:dword
                    179:  externdef _r_sstepy:dword
                    180:  externdef _r_tstepy:dword
                    181:  externdef _r_zistepy:dword
                    182:  externdef _D_PolysetSetEdgeTable:dword
                    183:  externdef _D_RasterizeAliasPolySmooth:dword
                    184:  externdef float_point5:dword
                    185:  externdef Float2ToThe31nd:dword
                    186:  externdef izistep:dword
                    187:  externdef izi:dword
                    188:  externdef FloatMinus2ToThe31nd:dword
                    189:  externdef float_1:dword
                    190:  externdef float_particle_z_clip:dword
                    191:  externdef float_minus_1:dword
                    192:  externdef float_0:dword
                    193:  externdef fp_16:dword
                    194:  externdef fp_64k:dword
                    195:  externdef fp_1m:dword
                    196:  externdef fp_1m_minus_1:dword
                    197:  externdef fp_8:dword
                    198:  externdef entryvec_table:dword
                    199:  externdef advancetable:dword
                    200:  externdef sstep:dword
                    201:  externdef tstep:dword
                    202:  externdef pspantemp:dword
                    203:  externdef counttemp:dword
                    204:  externdef jumptemp:dword
                    205:  externdef reciprocal_table:dword
                    206:  externdef DP_Count:dword
                    207:  externdef DP_u:dword
                    208:  externdef DP_v:dword
                    209:  externdef DP_32768:dword
                    210:  externdef DP_Color:dword
                    211:  externdef DP_Pix:dword
                    212:  externdef DP_EntryTable:dword
                    213:  externdef pbase:dword
                    214:  externdef s:dword
                    215:  externdef t:dword
                    216:  externdef sfracf:dword
                    217:  externdef tfracf:dword
                    218:  externdef snext:dword
                    219:  externdef tnext:dword
                    220:  externdef spancountminus1:dword
                    221:  externdef zi16stepu:dword
                    222:  externdef sdivz16stepu:dword
                    223:  externdef tdivz16stepu:dword
                    224:  externdef zi8stepu:dword
                    225:  externdef sdivz8stepu:dword
                    226:  externdef tdivz8stepu:dword
                    227:  externdef reciprocal_table_16:dword
                    228:  externdef entryvec_table_16:dword
                    229:  externdef ceil_cw:dword
                    230:  externdef single_cw:dword
                    231:  externdef fp_64kx64k:dword
                    232:  externdef pz:dword
                    233:  externdef spr8entryvec_table:dword
                    234: _DATA SEGMENT
                    235: sb_v dd 0
                    236: _DATA ENDS
                    237: _TEXT SEGMENT
                    238:  align 4
                    239:  public _R_Surf8Start
                    240: _R_Surf8Start:
                    241:  align 4
                    242:  public _R_DrawSurfaceBlock8_mip0
                    243: _R_DrawSurfaceBlock8_mip0:
                    244:  push ebp
                    245:  push edi
                    246:  push esi
                    247:  push ebx
                    248:  mov ebx,ds:dword ptr[_r_lightptr]
                    249:  mov eax,ds:dword ptr[_r_numvblocks]
                    250:  mov ds:dword ptr[sb_v],eax
                    251:  mov edi,ds:dword ptr[_prowdestbase]
                    252:  mov esi,ds:dword ptr[_pbasesource]
                    253: Lv_loop_mip0:
                    254:  mov eax,ds:dword ptr[ebx]
                    255:  mov edx,ds:dword ptr[4+ebx]
                    256:  mov ebp,eax
                    257:  mov ecx,ds:dword ptr[_r_lightwidth]
                    258:  mov ds:dword ptr[_lightright],edx
                    259:  sub ebp,edx
                    260:  and ebp,0FFFFFh
                    261:  lea ebx,ds:dword ptr[ebx+ecx*4]
                    262:  mov ds:dword ptr[_r_lightptr],ebx
                    263:  mov ecx,ds:dword ptr[4+ebx]
                    264:  mov ebx,ds:dword ptr[ebx]
                    265:  sub ebx,eax
                    266:  sub ecx,edx
                    267:  sar ecx,4
                    268:  or ebp,0F0000000h
                    269:  sar ebx,4
                    270:  mov ds:dword ptr[_lightrightstep],ecx
                    271:  sub ebx,ecx
                    272:  and ebx,0FFFFFh
                    273:  or ebx,0F0000000h
                    274:  sub ecx,ecx
                    275:  mov ds:dword ptr[_lightdeltastep],ebx
                    276:  sub ebx,ebx
                    277: Lblockloop8_mip0:
                    278:  mov ds:dword ptr[_lightdelta],ebp
                    279:  mov cl,ds:byte ptr[14+esi]
                    280:  sar ebp,4
                    281:  mov bh,dh
                    282:  mov bl,ds:byte ptr[15+esi]
                    283:  add edx,ebp
                    284:  mov ch,dh
                    285:  add edx,ebp
                    286:  mov ah,ds:byte ptr[12345678h+ebx]
                    287: LBPatch0:
                    288:  mov bl,ds:byte ptr[13+esi]
                    289:  mov al,ds:byte ptr[12345678h+ecx]
                    290: LBPatch1:
                    291:  mov cl,ds:byte ptr[12+esi]
                    292:  mov bh,dh
                    293:  add edx,ebp
                    294:  ror eax,16
                    295:  mov ch,dh
                    296:  add edx,ebp
                    297:  mov ah,ds:byte ptr[12345678h+ebx]
                    298: LBPatch2:
                    299:  mov bl,ds:byte ptr[11+esi]
                    300:  mov al,ds:byte ptr[12345678h+ecx]
                    301: LBPatch3:
                    302:  mov cl,ds:byte ptr[10+esi]
                    303:  mov ds:dword ptr[12+edi],eax
                    304:  mov bh,dh
                    305:  add edx,ebp
                    306:  mov ch,dh
                    307:  add edx,ebp
                    308:  mov ah,ds:byte ptr[12345678h+ebx]
                    309: LBPatch4:
                    310:  mov bl,ds:byte ptr[9+esi]
                    311:  mov al,ds:byte ptr[12345678h+ecx]
                    312: LBPatch5:
                    313:  mov cl,ds:byte ptr[8+esi]
                    314:  mov bh,dh
                    315:  add edx,ebp
                    316:  ror eax,16
                    317:  mov ch,dh
                    318:  add edx,ebp
                    319:  mov ah,ds:byte ptr[12345678h+ebx]
                    320: LBPatch6:
                    321:  mov bl,ds:byte ptr[7+esi]
                    322:  mov al,ds:byte ptr[12345678h+ecx]
                    323: LBPatch7:
                    324:  mov cl,ds:byte ptr[6+esi]
                    325:  mov ds:dword ptr[8+edi],eax
                    326:  mov bh,dh
                    327:  add edx,ebp
                    328:  mov ch,dh
                    329:  add edx,ebp
                    330:  mov ah,ds:byte ptr[12345678h+ebx]
                    331: LBPatch8:
                    332:  mov bl,ds:byte ptr[5+esi]
                    333:  mov al,ds:byte ptr[12345678h+ecx]
                    334: LBPatch9:
                    335:  mov cl,ds:byte ptr[4+esi]
                    336:  mov bh,dh
                    337:  add edx,ebp
                    338:  ror eax,16
                    339:  mov ch,dh
                    340:  add edx,ebp
                    341:  mov ah,ds:byte ptr[12345678h+ebx]
                    342: LBPatch10:
                    343:  mov bl,ds:byte ptr[3+esi]
                    344:  mov al,ds:byte ptr[12345678h+ecx]
                    345: LBPatch11:
                    346:  mov cl,ds:byte ptr[2+esi]
                    347:  mov ds:dword ptr[4+edi],eax
                    348:  mov bh,dh
                    349:  add edx,ebp
                    350:  mov ch,dh
                    351:  add edx,ebp
                    352:  mov ah,ds:byte ptr[12345678h+ebx]
                    353: LBPatch12:
                    354:  mov bl,ds:byte ptr[1+esi]
                    355:  mov al,ds:byte ptr[12345678h+ecx]
                    356: LBPatch13:
                    357:  mov cl,ds:byte ptr[esi]
                    358:  mov bh,dh
                    359:  add edx,ebp
                    360:  ror eax,16
                    361:  mov ch,dh
                    362:  mov ah,ds:byte ptr[12345678h+ebx]
                    363: LBPatch14:
                    364:  mov edx,ds:dword ptr[_lightright]
                    365:  mov al,ds:byte ptr[12345678h+ecx]
                    366: LBPatch15:
                    367:  mov ebp,ds:dword ptr[_lightdelta]
                    368:  mov ds:dword ptr[edi],eax
                    369:  add esi,ds:dword ptr[_sourcetstep]
                    370:  add edi,ds:dword ptr[_surfrowbytes]
                    371:  add edx,ds:dword ptr[_lightrightstep]
                    372:  add ebp,ds:dword ptr[_lightdeltastep]
                    373:  mov ds:dword ptr[_lightright],edx
                    374:  jc Lblockloop8_mip0
                    375:  cmp esi,ds:dword ptr[_r_sourcemax]
                    376:  jb LSkip_mip0
                    377:  sub esi,ds:dword ptr[_r_stepback]
                    378: LSkip_mip0:
                    379:  mov ebx,ds:dword ptr[_r_lightptr]
                    380:  dec ds:dword ptr[sb_v]
                    381:  jnz Lv_loop_mip0
                    382:  pop ebx
                    383:  pop esi
                    384:  pop edi
                    385:  pop ebp
                    386:  ret
                    387:  align 4
                    388:  public _R_DrawSurfaceBlock8_mip1
                    389: _R_DrawSurfaceBlock8_mip1:
                    390:  push ebp
                    391:  push edi
                    392:  push esi
                    393:  push ebx
                    394:  mov ebx,ds:dword ptr[_r_lightptr]
                    395:  mov eax,ds:dword ptr[_r_numvblocks]
                    396:  mov ds:dword ptr[sb_v],eax
                    397:  mov edi,ds:dword ptr[_prowdestbase]
                    398:  mov esi,ds:dword ptr[_pbasesource]
                    399: Lv_loop_mip1:
                    400:  mov eax,ds:dword ptr[ebx]
                    401:  mov edx,ds:dword ptr[4+ebx]
                    402:  mov ebp,eax
                    403:  mov ecx,ds:dword ptr[_r_lightwidth]
                    404:  mov ds:dword ptr[_lightright],edx
                    405:  sub ebp,edx
                    406:  and ebp,0FFFFFh
                    407:  lea ebx,ds:dword ptr[ebx+ecx*4]
                    408:  mov ds:dword ptr[_r_lightptr],ebx
                    409:  mov ecx,ds:dword ptr[4+ebx]
                    410:  mov ebx,ds:dword ptr[ebx]
                    411:  sub ebx,eax
                    412:  sub ecx,edx
                    413:  sar ecx,3
                    414:  or ebp,070000000h
                    415:  sar ebx,3
                    416:  mov ds:dword ptr[_lightrightstep],ecx
                    417:  sub ebx,ecx
                    418:  and ebx,0FFFFFh
                    419:  or ebx,0F0000000h
                    420:  sub ecx,ecx
                    421:  mov ds:dword ptr[_lightdeltastep],ebx
                    422:  sub ebx,ebx
                    423: Lblockloop8_mip1:
                    424:  mov ds:dword ptr[_lightdelta],ebp
                    425:  mov cl,ds:byte ptr[6+esi]
                    426:  sar ebp,3
                    427:  mov bh,dh
                    428:  mov bl,ds:byte ptr[7+esi]
                    429:  add edx,ebp
                    430:  mov ch,dh
                    431:  add edx,ebp
                    432:  mov ah,ds:byte ptr[12345678h+ebx]
                    433: LBPatch22:
                    434:  mov bl,ds:byte ptr[5+esi]
                    435:  mov al,ds:byte ptr[12345678h+ecx]
                    436: LBPatch23:
                    437:  mov cl,ds:byte ptr[4+esi]
                    438:  mov bh,dh
                    439:  add edx,ebp
                    440:  ror eax,16
                    441:  mov ch,dh
                    442:  add edx,ebp
                    443:  mov ah,ds:byte ptr[12345678h+ebx]
                    444: LBPatch24:
                    445:  mov bl,ds:byte ptr[3+esi]
                    446:  mov al,ds:byte ptr[12345678h+ecx]
                    447: LBPatch25:
                    448:  mov cl,ds:byte ptr[2+esi]
                    449:  mov ds:dword ptr[4+edi],eax
                    450:  mov bh,dh
                    451:  add edx,ebp
                    452:  mov ch,dh
                    453:  add edx,ebp
                    454:  mov ah,ds:byte ptr[12345678h+ebx]
                    455: LBPatch26:
                    456:  mov bl,ds:byte ptr[1+esi]
                    457:  mov al,ds:byte ptr[12345678h+ecx]
                    458: LBPatch27:
                    459:  mov cl,ds:byte ptr[esi]
                    460:  mov bh,dh
                    461:  add edx,ebp
                    462:  ror eax,16
                    463:  mov ch,dh
                    464:  mov ah,ds:byte ptr[12345678h+ebx]
                    465: LBPatch28:
                    466:  mov edx,ds:dword ptr[_lightright]
                    467:  mov al,ds:byte ptr[12345678h+ecx]
                    468: LBPatch29:
                    469:  mov ebp,ds:dword ptr[_lightdelta]
                    470:  mov ds:dword ptr[edi],eax
                    471:  mov eax,ds:dword ptr[_sourcetstep]
                    472:  add esi,eax
                    473:  mov eax,ds:dword ptr[_surfrowbytes]
                    474:  add edi,eax
                    475:  mov eax,ds:dword ptr[_lightrightstep]
                    476:  add edx,eax
                    477:  mov eax,ds:dword ptr[_lightdeltastep]
                    478:  add ebp,eax
                    479:  mov ds:dword ptr[_lightright],edx
                    480:  jc Lblockloop8_mip1
                    481:  cmp esi,ds:dword ptr[_r_sourcemax]
                    482:  jb LSkip_mip1
                    483:  sub esi,ds:dword ptr[_r_stepback]
                    484: LSkip_mip1:
                    485:  mov ebx,ds:dword ptr[_r_lightptr]
                    486:  dec ds:dword ptr[sb_v]
                    487:  jnz Lv_loop_mip1
                    488:  pop ebx
                    489:  pop esi
                    490:  pop edi
                    491:  pop ebp
                    492:  ret
                    493:  align 4
                    494:  public _R_DrawSurfaceBlock8_mip2
                    495: _R_DrawSurfaceBlock8_mip2:
                    496:  push ebp
                    497:  push edi
                    498:  push esi
                    499:  push ebx
                    500:  mov ebx,ds:dword ptr[_r_lightptr]
                    501:  mov eax,ds:dword ptr[_r_numvblocks]
                    502:  mov ds:dword ptr[sb_v],eax
                    503:  mov edi,ds:dword ptr[_prowdestbase]
                    504:  mov esi,ds:dword ptr[_pbasesource]
                    505: Lv_loop_mip2:
                    506:  mov eax,ds:dword ptr[ebx]
                    507:  mov edx,ds:dword ptr[4+ebx]
                    508:  mov ebp,eax
                    509:  mov ecx,ds:dword ptr[_r_lightwidth]
                    510:  mov ds:dword ptr[_lightright],edx
                    511:  sub ebp,edx
                    512:  and ebp,0FFFFFh
                    513:  lea ebx,ds:dword ptr[ebx+ecx*4]
                    514:  mov ds:dword ptr[_r_lightptr],ebx
                    515:  mov ecx,ds:dword ptr[4+ebx]
                    516:  mov ebx,ds:dword ptr[ebx]
                    517:  sub ebx,eax
                    518:  sub ecx,edx
                    519:  sar ecx,2
                    520:  or ebp,030000000h
                    521:  sar ebx,2
                    522:  mov ds:dword ptr[_lightrightstep],ecx
                    523:  sub ebx,ecx
                    524:  and ebx,0FFFFFh
                    525:  or ebx,0F0000000h
                    526:  sub ecx,ecx
                    527:  mov ds:dword ptr[_lightdeltastep],ebx
                    528:  sub ebx,ebx
                    529: Lblockloop8_mip2:
                    530:  mov ds:dword ptr[_lightdelta],ebp
                    531:  mov cl,ds:byte ptr[2+esi]
                    532:  sar ebp,2
                    533:  mov bh,dh
                    534:  mov bl,ds:byte ptr[3+esi]
                    535:  add edx,ebp
                    536:  mov ch,dh
                    537:  add edx,ebp
                    538:  mov ah,ds:byte ptr[12345678h+ebx]
                    539: LBPatch18:
                    540:  mov bl,ds:byte ptr[1+esi]
                    541:  mov al,ds:byte ptr[12345678h+ecx]
                    542: LBPatch19:
                    543:  mov cl,ds:byte ptr[esi]
                    544:  mov bh,dh
                    545:  add edx,ebp
                    546:  ror eax,16
                    547:  mov ch,dh
                    548:  mov ah,ds:byte ptr[12345678h+ebx]
                    549: LBPatch20:
                    550:  mov edx,ds:dword ptr[_lightright]
                    551:  mov al,ds:byte ptr[12345678h+ecx]
                    552: LBPatch21:
                    553:  mov ebp,ds:dword ptr[_lightdelta]
                    554:  mov ds:dword ptr[edi],eax
                    555:  mov eax,ds:dword ptr[_sourcetstep]
                    556:  add esi,eax
                    557:  mov eax,ds:dword ptr[_surfrowbytes]
                    558:  add edi,eax
                    559:  mov eax,ds:dword ptr[_lightrightstep]
                    560:  add edx,eax
                    561:  mov eax,ds:dword ptr[_lightdeltastep]
                    562:  add ebp,eax
                    563:  mov ds:dword ptr[_lightright],edx
                    564:  jc Lblockloop8_mip2
                    565:  cmp esi,ds:dword ptr[_r_sourcemax]
                    566:  jb LSkip_mip2
                    567:  sub esi,ds:dword ptr[_r_stepback]
                    568: LSkip_mip2:
                    569:  mov ebx,ds:dword ptr[_r_lightptr]
                    570:  dec ds:dword ptr[sb_v]
                    571:  jnz Lv_loop_mip2
                    572:  pop ebx
                    573:  pop esi
                    574:  pop edi
                    575:  pop ebp
                    576:  ret
                    577:  align 4
                    578:  public _R_DrawSurfaceBlock8_mip3
                    579: _R_DrawSurfaceBlock8_mip3:
                    580:  push ebp
                    581:  push edi
                    582:  push esi
                    583:  push ebx
                    584:  mov ebx,ds:dword ptr[_r_lightptr]
                    585:  mov eax,ds:dword ptr[_r_numvblocks]
                    586:  mov ds:dword ptr[sb_v],eax
                    587:  mov edi,ds:dword ptr[_prowdestbase]
                    588:  mov esi,ds:dword ptr[_pbasesource]
                    589: Lv_loop_mip3:
                    590:  mov eax,ds:dword ptr[ebx]
                    591:  mov edx,ds:dword ptr[4+ebx]
                    592:  mov ebp,eax
                    593:  mov ecx,ds:dword ptr[_r_lightwidth]
                    594:  mov ds:dword ptr[_lightright],edx
                    595:  sub ebp,edx
                    596:  and ebp,0FFFFFh
                    597:  lea ebx,ds:dword ptr[ebx+ecx*4]
                    598:  mov ds:dword ptr[_lightdelta],ebp
                    599:  mov ds:dword ptr[_r_lightptr],ebx
                    600:  mov ecx,ds:dword ptr[4+ebx]
                    601:  mov ebx,ds:dword ptr[ebx]
                    602:  sub ebx,eax
                    603:  sub ecx,edx
                    604:  sar ecx,1
                    605:  sar ebx,1
                    606:  mov ds:dword ptr[_lightrightstep],ecx
                    607:  sub ebx,ecx
                    608:  and ebx,0FFFFFh
                    609:  sar ebp,1
                    610:  or ebx,0F0000000h
                    611:  mov ds:dword ptr[_lightdeltastep],ebx
                    612:  sub ebx,ebx
                    613:  mov bl,ds:byte ptr[1+esi]
                    614:  sub ecx,ecx
                    615:  mov bh,dh
                    616:  mov cl,ds:byte ptr[esi]
                    617:  add edx,ebp
                    618:  mov ch,dh
                    619:  mov al,ds:byte ptr[12345678h+ebx]
                    620: LBPatch16:
                    621:  mov edx,ds:dword ptr[_lightright]
                    622:  mov ds:byte ptr[1+edi],al
                    623:  mov al,ds:byte ptr[12345678h+ecx]
                    624: LBPatch17:
                    625:  mov ds:byte ptr[edi],al
                    626:  mov eax,ds:dword ptr[_sourcetstep]
                    627:  add esi,eax
                    628:  mov eax,ds:dword ptr[_surfrowbytes]
                    629:  add edi,eax
                    630:  mov eax,ds:dword ptr[_lightdeltastep]
                    631:  mov ebp,ds:dword ptr[_lightdelta]
                    632:  mov cl,ds:byte ptr[esi]
                    633:  add ebp,eax
                    634:  mov eax,ds:dword ptr[_lightrightstep]
                    635:  sar ebp,1
                    636:  add edx,eax
                    637:  mov bh,dh
                    638:  mov bl,ds:byte ptr[1+esi]
                    639:  add edx,ebp
                    640:  mov ch,dh
                    641:  mov al,ds:byte ptr[12345678h+ebx]
                    642: LBPatch30:
                    643:  mov edx,ds:dword ptr[_sourcetstep]
                    644:  mov ds:byte ptr[1+edi],al
                    645:  mov al,ds:byte ptr[12345678h+ecx]
                    646: LBPatch31:
                    647:  mov ds:byte ptr[edi],al
                    648:  mov ebp,ds:dword ptr[_surfrowbytes]
                    649:  add esi,edx
                    650:  add edi,ebp
                    651:  cmp esi,ds:dword ptr[_r_sourcemax]
                    652:  jb LSkip_mip3
                    653:  sub esi,ds:dword ptr[_r_stepback]
                    654: LSkip_mip3:
                    655:  mov ebx,ds:dword ptr[_r_lightptr]
                    656:  dec ds:dword ptr[sb_v]
                    657:  jnz Lv_loop_mip3
                    658:  pop ebx
                    659:  pop esi
                    660:  pop edi
                    661:  pop ebp
                    662:  ret
                    663:  public _R_Surf8End
                    664: _R_Surf8End:
                    665: _TEXT ENDS
                    666: _DATA SEGMENT
                    667:  align 4
                    668: LPatchTable8:
                    669:  dd LBPatch0-4
                    670:  dd LBPatch1-4
                    671:  dd LBPatch2-4
                    672:  dd LBPatch3-4
                    673:  dd LBPatch4-4
                    674:  dd LBPatch5-4
                    675:  dd LBPatch6-4
                    676:  dd LBPatch7-4
                    677:  dd LBPatch8-4
                    678:  dd LBPatch9-4
                    679:  dd LBPatch10-4
                    680:  dd LBPatch11-4
                    681:  dd LBPatch12-4
                    682:  dd LBPatch13-4
                    683:  dd LBPatch14-4
                    684:  dd LBPatch15-4
                    685:  dd LBPatch16-4
                    686:  dd LBPatch17-4
                    687:  dd LBPatch18-4
                    688:  dd LBPatch19-4
                    689:  dd LBPatch20-4
                    690:  dd LBPatch21-4
                    691:  dd LBPatch22-4
                    692:  dd LBPatch23-4
                    693:  dd LBPatch24-4
                    694:  dd LBPatch25-4
                    695:  dd LBPatch26-4
                    696:  dd LBPatch27-4
                    697:  dd LBPatch28-4
                    698:  dd LBPatch29-4
                    699:  dd LBPatch30-4
                    700:  dd LBPatch31-4
                    701: _DATA ENDS
                    702: _TEXT SEGMENT
                    703:  align 4
                    704:  public _R_Surf8Patch
                    705: _R_Surf8Patch:
                    706:  push ebx
                    707:  mov eax,ds:dword ptr[_colormap]
                    708:  mov ebx,offset LPatchTable8
                    709:  mov ecx,32
                    710: LPatchLoop8:
                    711:  mov edx,ds:dword ptr[ebx]
                    712:  add ebx,4
                    713:  mov ds:dword ptr[edx],eax
                    714:  dec ecx
                    715:  jnz LPatchLoop8
                    716:  pop ebx
                    717:  ret
                    718: _TEXT ENDS
                    719:  END

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.