|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.