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 235sb_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] 253Lv_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 277Lblockloop8_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] 287LBPatch0: 288 mov bl,ds:byte ptr[13+esi] 289 mov al,ds:byte ptr[12345678h+ecx] 290LBPatch1: 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] 298LBPatch2: 299 mov bl,ds:byte ptr[11+esi] 300 mov al,ds:byte ptr[12345678h+ecx] 301LBPatch3: 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] 309LBPatch4: 310 mov bl,ds:byte ptr[9+esi] 311 mov al,ds:byte ptr[12345678h+ecx] 312LBPatch5: 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] 320LBPatch6: 321 mov bl,ds:byte ptr[7+esi] 322 mov al,ds:byte ptr[12345678h+ecx] 323LBPatch7: 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] 331LBPatch8: 332 mov bl,ds:byte ptr[5+esi] 333 mov al,ds:byte ptr[12345678h+ecx] 334LBPatch9: 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] 342LBPatch10: 343 mov bl,ds:byte ptr[3+esi] 344 mov al,ds:byte ptr[12345678h+ecx] 345LBPatch11: 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] 353LBPatch12: 354 mov bl,ds:byte ptr[1+esi] 355 mov al,ds:byte ptr[12345678h+ecx] 356LBPatch13: 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] 363LBPatch14: 364 mov edx,ds:dword ptr[_lightright] 365 mov al,ds:byte ptr[12345678h+ecx] 366LBPatch15: 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] 378LSkip_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] 399Lv_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 423Lblockloop8_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] 433LBPatch22: 434 mov bl,ds:byte ptr[5+esi] 435 mov al,ds:byte ptr[12345678h+ecx] 436LBPatch23: 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] 444LBPatch24: 445 mov bl,ds:byte ptr[3+esi] 446 mov al,ds:byte ptr[12345678h+ecx] 447LBPatch25: 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] 455LBPatch26: 456 mov bl,ds:byte ptr[1+esi] 457 mov al,ds:byte ptr[12345678h+ecx] 458LBPatch27: 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] 465LBPatch28: 466 mov edx,ds:dword ptr[_lightright] 467 mov al,ds:byte ptr[12345678h+ecx] 468LBPatch29: 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] 484LSkip_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] 505Lv_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 529Lblockloop8_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] 539LBPatch18: 540 mov bl,ds:byte ptr[1+esi] 541 mov al,ds:byte ptr[12345678h+ecx] 542LBPatch19: 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] 549LBPatch20: 550 mov edx,ds:dword ptr[_lightright] 551 mov al,ds:byte ptr[12345678h+ecx] 552LBPatch21: 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] 568LSkip_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] 589Lv_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] 620LBPatch16: 621 mov edx,ds:dword ptr[_lightright] 622 mov ds:byte ptr[1+edi],al 623 mov al,ds:byte ptr[12345678h+ecx] 624LBPatch17: 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] 642LBPatch30: 643 mov edx,ds:dword ptr[_sourcetstep] 644 mov ds:byte ptr[1+edi],al 645 mov al,ds:byte ptr[12345678h+ecx] 646LBPatch31: 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] 654LSkip_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 668LPatchTable8: 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 710LPatchLoop8: 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 720