Annotation of quakeworld/client/surf16.asm, revision 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: k dd 0
        !           236: loopentry dd 0
        !           237:  align 4
        !           238: blockjumptable16:
        !           239:  dd LEnter2_16
        !           240:  dd LEnter4_16
        !           241:  dd 0, LEnter8_16
        !           242:  dd 0, 0, 0, LEnter16_16
        !           243: _DATA ENDS
        !           244: _TEXT SEGMENT
        !           245:  align 4
        !           246:  public _R_Surf16Start
        !           247: _R_Surf16Start:
        !           248:  align 4
        !           249:  public _R_DrawSurfaceBlock16
        !           250: _R_DrawSurfaceBlock16:
        !           251:  push ebp
        !           252:  push edi
        !           253:  push esi
        !           254:  push ebx
        !           255:  mov eax,ds:dword ptr[_blocksize]
        !           256:  mov edi,ds:dword ptr[_prowdestbase]
        !           257:  mov esi,ds:dword ptr[_pbasesource]
        !           258:  mov ebx,ds:dword ptr[_sourcesstep]
        !           259:  mov ecx,ds:dword ptr[blockjumptable16-4+eax*2]
        !           260:  mov ds:dword ptr[k],eax
        !           261:  mov ds:dword ptr[loopentry],ecx
        !           262:  mov edx,ds:dword ptr[_lightleft]
        !           263:  mov ebp,ds:dword ptr[_lightright]
        !           264: Lblockloop16:
        !           265:  sub ebp,edx
        !           266:  mov cl,ds:byte ptr[_blockdivshift]
        !           267:  sar ebp,cl
        !           268:  jns Lp1_16
        !           269:  test ebp,ds:dword ptr[_blockdivmask]
        !           270:  jz Lp1_16
        !           271:  inc ebp
        !           272: Lp1_16:
        !           273:  sub eax,eax
        !           274:  sub ecx,ecx
        !           275:  jmp dword ptr[loopentry]
        !           276:  align 4
        !           277: LEnter16_16:
        !           278:  mov al,ds:byte ptr[esi]
        !           279:  mov cl,ds:byte ptr[esi+ebx]
        !           280:  mov ah,dh
        !           281:  add edx,ebp
        !           282:  mov ch,dh
        !           283:  lea esi,ds:dword ptr[esi+ebx*2]
        !           284:  mov ax,ds:word ptr[12345678h+eax*2]
        !           285: LBPatch0:
        !           286:  add edx,ebp
        !           287:  mov ds:word ptr[edi],ax
        !           288:  mov cx,ds:word ptr[12345678h+ecx*2]
        !           289: LBPatch1:
        !           290:  mov ds:word ptr[2+edi],cx
        !           291:  add edi,04h
        !           292:  mov al,ds:byte ptr[esi]
        !           293:  mov cl,ds:byte ptr[esi+ebx]
        !           294:  mov ah,dh
        !           295:  add edx,ebp
        !           296:  mov ch,dh
        !           297:  lea esi,ds:dword ptr[esi+ebx*2]
        !           298:  mov ax,ds:word ptr[12345678h+eax*2]
        !           299: LBPatch2:
        !           300:  add edx,ebp
        !           301:  mov ds:word ptr[edi],ax
        !           302:  mov cx,ds:word ptr[12345678h+ecx*2]
        !           303: LBPatch3:
        !           304:  mov ds:word ptr[2+edi],cx
        !           305:  add edi,04h
        !           306:  mov al,ds:byte ptr[esi]
        !           307:  mov cl,ds:byte ptr[esi+ebx]
        !           308:  mov ah,dh
        !           309:  add edx,ebp
        !           310:  mov ch,dh
        !           311:  lea esi,ds:dword ptr[esi+ebx*2]
        !           312:  mov ax,ds:word ptr[12345678h+eax*2]
        !           313: LBPatch4:
        !           314:  add edx,ebp
        !           315:  mov ds:word ptr[edi],ax
        !           316:  mov cx,ds:word ptr[12345678h+ecx*2]
        !           317: LBPatch5:
        !           318:  mov ds:word ptr[2+edi],cx
        !           319:  add edi,04h
        !           320:  mov al,ds:byte ptr[esi]
        !           321:  mov cl,ds:byte ptr[esi+ebx]
        !           322:  mov ah,dh
        !           323:  add edx,ebp
        !           324:  mov ch,dh
        !           325:  lea esi,ds:dword ptr[esi+ebx*2]
        !           326:  mov ax,ds:word ptr[12345678h+eax*2]
        !           327: LBPatch6:
        !           328:  add edx,ebp
        !           329:  mov ds:word ptr[edi],ax
        !           330:  mov cx,ds:word ptr[12345678h+ecx*2]
        !           331: LBPatch7:
        !           332:  mov ds:word ptr[2+edi],cx
        !           333:  add edi,04h
        !           334: LEnter8_16:
        !           335:  mov al,ds:byte ptr[esi]
        !           336:  mov cl,ds:byte ptr[esi+ebx]
        !           337:  mov ah,dh
        !           338:  add edx,ebp
        !           339:  mov ch,dh
        !           340:  lea esi,ds:dword ptr[esi+ebx*2]
        !           341:  mov ax,ds:word ptr[12345678h+eax*2]
        !           342: LBPatch8:
        !           343:  add edx,ebp
        !           344:  mov ds:word ptr[edi],ax
        !           345:  mov cx,ds:word ptr[12345678h+ecx*2]
        !           346: LBPatch9:
        !           347:  mov ds:word ptr[2+edi],cx
        !           348:  add edi,04h
        !           349:  mov al,ds:byte ptr[esi]
        !           350:  mov cl,ds:byte ptr[esi+ebx]
        !           351:  mov ah,dh
        !           352:  add edx,ebp
        !           353:  mov ch,dh
        !           354:  lea esi,ds:dword ptr[esi+ebx*2]
        !           355:  mov ax,ds:word ptr[12345678h+eax*2]
        !           356: LBPatch10:
        !           357:  add edx,ebp
        !           358:  mov ds:word ptr[edi],ax
        !           359:  mov cx,ds:word ptr[12345678h+ecx*2]
        !           360: LBPatch11:
        !           361:  mov ds:word ptr[2+edi],cx
        !           362:  add edi,04h
        !           363: LEnter4_16:
        !           364:  mov al,ds:byte ptr[esi]
        !           365:  mov cl,ds:byte ptr[esi+ebx]
        !           366:  mov ah,dh
        !           367:  add edx,ebp
        !           368:  mov ch,dh
        !           369:  lea esi,ds:dword ptr[esi+ebx*2]
        !           370:  mov ax,ds:word ptr[12345678h+eax*2]
        !           371: LBPatch12:
        !           372:  add edx,ebp
        !           373:  mov ds:word ptr[edi],ax
        !           374:  mov cx,ds:word ptr[12345678h+ecx*2]
        !           375: LBPatch13:
        !           376:  mov ds:word ptr[2+edi],cx
        !           377:  add edi,04h
        !           378: LEnter2_16:
        !           379:  mov al,ds:byte ptr[esi]
        !           380:  mov cl,ds:byte ptr[esi+ebx]
        !           381:  mov ah,dh
        !           382:  add edx,ebp
        !           383:  mov ch,dh
        !           384:  lea esi,ds:dword ptr[esi+ebx*2]
        !           385:  mov ax,ds:word ptr[12345678h+eax*2]
        !           386: LBPatch14:
        !           387:  add edx,ebp
        !           388:  mov ds:word ptr[edi],ax
        !           389:  mov cx,ds:word ptr[12345678h+ecx*2]
        !           390: LBPatch15:
        !           391:  mov ds:word ptr[2+edi],cx
        !           392:  add edi,04h
        !           393:  mov esi,ds:dword ptr[_pbasesource]
        !           394:  mov edx,ds:dword ptr[_lightleft]
        !           395:  mov ebp,ds:dword ptr[_lightright]
        !           396:  mov eax,ds:dword ptr[_sourcetstep]
        !           397:  mov ecx,ds:dword ptr[_lightrightstep]
        !           398:  mov edi,ds:dword ptr[_prowdestbase]
        !           399:  add esi,eax
        !           400:  add ebp,ecx
        !           401:  mov eax,ds:dword ptr[_lightleftstep]
        !           402:  mov ecx,ds:dword ptr[_surfrowbytes]
        !           403:  add edx,eax
        !           404:  add edi,ecx
        !           405:  mov ds:dword ptr[_pbasesource],esi
        !           406:  mov ds:dword ptr[_lightright],ebp
        !           407:  mov eax,ds:dword ptr[k]
        !           408:  mov ds:dword ptr[_lightleft],edx
        !           409:  dec eax
        !           410:  mov ds:dword ptr[_prowdestbase],edi
        !           411:  mov ds:dword ptr[k],eax
        !           412:  jnz Lblockloop16
        !           413:  pop ebx
        !           414:  pop esi
        !           415:  pop edi
        !           416:  pop ebp
        !           417:  ret
        !           418:  public _R_Surf16End
        !           419: _R_Surf16End:
        !           420: _TEXT ENDS
        !           421: _DATA SEGMENT
        !           422:  align 4
        !           423: LPatchTable16:
        !           424:  dd LBPatch0-4
        !           425:  dd LBPatch1-4
        !           426:  dd LBPatch2-4
        !           427:  dd LBPatch3-4
        !           428:  dd LBPatch4-4
        !           429:  dd LBPatch5-4
        !           430:  dd LBPatch6-4
        !           431:  dd LBPatch7-4
        !           432:  dd LBPatch8-4
        !           433:  dd LBPatch9-4
        !           434:  dd LBPatch10-4
        !           435:  dd LBPatch11-4
        !           436:  dd LBPatch12-4
        !           437:  dd LBPatch13-4
        !           438:  dd LBPatch14-4
        !           439:  dd LBPatch15-4
        !           440: _DATA ENDS
        !           441: _TEXT SEGMENT
        !           442:  align 4
        !           443:  public _R_Surf16Patch
        !           444: _R_Surf16Patch:
        !           445:  push ebx
        !           446:  mov eax,ds:dword ptr[_colormap]
        !           447:  mov ebx,offset LPatchTable16
        !           448:  mov ecx,16
        !           449: LPatchLoop16:
        !           450:  mov edx,ds:dword ptr[ebx]
        !           451:  add ebx,4
        !           452:  mov ds:dword ptr[edx],eax
        !           453:  dec ecx
        !           454:  jnz LPatchLoop16
        !           455:  pop ebx
        !           456:  ret
        !           457: _TEXT ENDS
        !           458:  END

unix.superglobalmegacorp.com

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