|
|
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.