亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? r_edgea.asm

?? 著名游戲quake2原代碼最新版本(vc6.0可以編譯的)
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
 .386P
 .model FLAT
;
; r_edgea.s
; x86 assembly-language edge-processing code.
;

include qasm.inc

if	id386

_DATA SEGMENT	
Ltemp dd 0	
float_1_div_0100000h dd 035800000h	; 1.0/(float)0x100000
float_point_999 dd 0.999	
float_1_point_001 dd 1.001	

_DATA ENDS
_TEXT SEGMENT	

;--------------------------------------------------------------------

edgestoadd	equ		4+8		; note odd stack offsets because of interleaving
edgelist	equ		8+12	; with pushes

 public _R_EdgeCodeStart	
_R_EdgeCodeStart:	

 public _R_InsertNewEdges	
_R_InsertNewEdges:	
 push edi	
 push esi	; preserve register variables
 mov edx,ds:dword ptr[edgestoadd+esp]	
 push ebx	
 mov ecx,ds:dword ptr[edgelist+esp]	

LDoNextEdge:	
 mov eax,ds:dword ptr[et_u+edx]	
 mov edi,edx	

LContinueSearch:	
 mov ebx,ds:dword ptr[et_u+ecx]	
 mov esi,ds:dword ptr[et_next+ecx]	
 cmp eax,ebx	
 jle LAddedge	
 mov ebx,ds:dword ptr[et_u+esi]	
 mov ecx,ds:dword ptr[et_next+esi]	
 cmp eax,ebx	
 jle LAddedge2	
 mov ebx,ds:dword ptr[et_u+ecx]	
 mov esi,ds:dword ptr[et_next+ecx]	
 cmp eax,ebx	
 jle LAddedge	
 mov ebx,ds:dword ptr[et_u+esi]	
 mov ecx,ds:dword ptr[et_next+esi]	
 cmp eax,ebx	
 jg LContinueSearch	

LAddedge2:	
 mov edx,ds:dword ptr[et_next+edx]	
 mov ebx,ds:dword ptr[et_prev+esi]	
 mov ds:dword ptr[et_next+edi],esi	
 mov ds:dword ptr[et_prev+edi],ebx	
 mov ds:dword ptr[et_next+ebx],edi	
 mov ds:dword ptr[et_prev+esi],edi	
 mov ecx,esi	

 cmp edx,0	
 jnz LDoNextEdge	
 jmp LDone	

 align 4	
LAddedge:	
 mov edx,ds:dword ptr[et_next+edx]	
 mov ebx,ds:dword ptr[et_prev+ecx]	
 mov ds:dword ptr[et_next+edi],ecx	
 mov ds:dword ptr[et_prev+edi],ebx	
 mov ds:dword ptr[et_next+ebx],edi	
 mov ds:dword ptr[et_prev+ecx],edi	

 cmp edx,0	
 jnz LDoNextEdge	

LDone:	
 pop ebx	; restore register variables
 pop esi	
 pop edi	

 ret	

;--------------------------------------------------------------------

predge	equ		4+4

 public _R_RemoveEdges	
_R_RemoveEdges:	
 push ebx	
 mov eax,ds:dword ptr[predge+esp]	

Lre_loop:	
 mov ecx,ds:dword ptr[et_next+eax]	
 mov ebx,ds:dword ptr[et_nextremove+eax]	
 mov edx,ds:dword ptr[et_prev+eax]	
 test ebx,ebx	
 mov ds:dword ptr[et_prev+ecx],edx	
 jz Lre_done	
 mov ds:dword ptr[et_next+edx],ecx	

 mov ecx,ds:dword ptr[et_next+ebx]	
 mov edx,ds:dword ptr[et_prev+ebx]	
 mov eax,ds:dword ptr[et_nextremove+ebx]	
 mov ds:dword ptr[et_prev+ecx],edx	
 test eax,eax	
 mov ds:dword ptr[et_next+edx],ecx	
 jnz Lre_loop	

 pop ebx	
 ret	

Lre_done:	
 mov ds:dword ptr[et_next+edx],ecx	
 pop ebx	

 ret	

;--------------------------------------------------------------------

pedgelist	equ		4+4		; note odd stack offset because of interleaving
							; with pushes

 public _R_StepActiveU	
_R_StepActiveU:	
 push edi	
 mov edx,ds:dword ptr[pedgelist+esp]	
 push esi	; preserve register variables
 push ebx	

 mov esi,ds:dword ptr[et_prev+edx]	

LNewEdge:	
 mov edi,ds:dword ptr[et_u+esi]	

LNextEdge:	
 mov eax,ds:dword ptr[et_u+edx]	
 mov ebx,ds:dword ptr[et_u_step+edx]	
 add eax,ebx	
 mov esi,ds:dword ptr[et_next+edx]	
 mov ds:dword ptr[et_u+edx],eax	
 cmp eax,edi	
 jl LPushBack	

 mov edi,ds:dword ptr[et_u+esi]	
 mov ebx,ds:dword ptr[et_u_step+esi]	
 add edi,ebx	
 mov edx,ds:dword ptr[et_next+esi]	
 mov ds:dword ptr[et_u+esi],edi	
 cmp edi,eax	
 jl LPushBack2	

 mov eax,ds:dword ptr[et_u+edx]	
 mov ebx,ds:dword ptr[et_u_step+edx]	
 add eax,ebx	
 mov esi,ds:dword ptr[et_next+edx]	
 mov ds:dword ptr[et_u+edx],eax	
 cmp eax,edi	
 jl LPushBack	

 mov edi,ds:dword ptr[et_u+esi]	
 mov ebx,ds:dword ptr[et_u_step+esi]	
 add edi,ebx	
 mov edx,ds:dword ptr[et_next+esi]	
 mov ds:dword ptr[et_u+esi],edi	
 cmp edi,eax	
 jnl LNextEdge	

LPushBack2:	
 mov ebx,edx	
 mov eax,edi	
 mov edx,esi	
 mov esi,ebx	

LPushBack:	
; push it back to keep it sorted
 mov ecx,ds:dword ptr[et_prev+edx]	
 mov ebx,ds:dword ptr[et_next+edx]	

; done if the -1 in edge_aftertail triggered this
 cmp edx,offset _edge_aftertail
 jz LUDone	

; pull the edge out of the edge list
 mov edi,ds:dword ptr[et_prev+ecx]	
 mov ds:dword ptr[et_prev+esi],ecx	
 mov ds:dword ptr[et_next+ecx],ebx	

; find out where the edge goes in the edge list
LPushBackLoop:	
 mov ecx,ds:dword ptr[et_prev+edi]	
 mov ebx,ds:dword ptr[et_u+edi]	
 cmp eax,ebx	
 jnl LPushBackFound	

 mov edi,ds:dword ptr[et_prev+ecx]	
 mov ebx,ds:dword ptr[et_u+ecx]	
 cmp eax,ebx	
 jl LPushBackLoop	

 mov edi,ecx	

; put the edge back into the edge list
LPushBackFound:	
 mov ebx,ds:dword ptr[et_next+edi]	
 mov ds:dword ptr[et_prev+edx],edi	
 mov ds:dword ptr[et_next+edx],ebx	
 mov ds:dword ptr[et_next+edi],edx	
 mov ds:dword ptr[et_prev+ebx],edx	

 mov edx,esi	
 mov esi,ds:dword ptr[et_prev+esi]	

 cmp edx,offset _edge_tail
 jnz LNewEdge	

LUDone:	
 pop ebx	; restore register variables
 pop esi	
 pop edi	

 ret	

;--------------------------------------------------------------------

surf	equ		4		; note this is loaded before any pushes

 align 4	
TrailingEdge:	
 mov eax,ds:dword ptr[st_spanstate+esi]	; check for edge inversion
 dec eax	
 jnz LInverted	

 mov ds:dword ptr[st_spanstate+esi],eax	
 mov ecx,ds:dword ptr[st_insubmodel+esi]	
 mov edx,ds:dword ptr[12345678h]	; surfaces[1].st_next
LPatch0:	
 mov eax,ds:dword ptr[_r_bmodelactive]	
 sub eax,ecx	
 cmp edx,esi	
 mov ds:dword ptr[_r_bmodelactive],eax	
 jnz LNoEmit	; surface isn't on top, just remove

; emit a span (current top going away)
 mov eax,ds:dword ptr[et_u+ebx]	
 shr eax,20	; iu = integral pixel u
 mov edx,ds:dword ptr[st_last_u+esi]	
 mov ecx,ds:dword ptr[st_next+esi]	
 cmp eax,edx	
 jle LNoEmit2	; iu <= surf->last_u, so nothing to emit

 mov ds:dword ptr[st_last_u+ecx],eax	; surf->next->last_u = iu;
 sub eax,edx	
 mov ds:dword ptr[espan_t_u+ebp],edx	; span->u = surf->last_u;

 mov ds:dword ptr[espan_t_count+ebp],eax	; span->count = iu - span->u;
 mov eax,ds:dword ptr[_current_iv]	
 mov ds:dword ptr[espan_t_v+ebp],eax	; span->v = current_iv;
 mov eax,ds:dword ptr[st_spans+esi]	
 mov ds:dword ptr[espan_t_pnext+ebp],eax	; span->pnext = surf->spans;
 mov ds:dword ptr[st_spans+esi],ebp	; surf->spans = span;
 add ebp,offset espan_t_size	

 mov edx,ds:dword ptr[st_next+esi]	; remove the surface from the surface
 mov esi,ds:dword ptr[st_prev+esi]	; stack

 mov ds:dword ptr[st_next+esi],edx	
 mov ds:dword ptr[st_prev+edx],esi	
 ret	

LNoEmit2:	
 mov ds:dword ptr[st_last_u+ecx],eax	; surf->next->last_u = iu;
 mov edx,ds:dword ptr[st_next+esi]	; remove the surface from the surface
 mov esi,ds:dword ptr[st_prev+esi]	; stack

 mov ds:dword ptr[st_next+esi],edx	
 mov ds:dword ptr[st_prev+edx],esi	
 ret	

LNoEmit:	
 mov edx,ds:dword ptr[st_next+esi]	; remove the surface from the surface
 mov esi,ds:dword ptr[st_prev+esi]	; stack

 mov ds:dword ptr[st_next+esi],edx	
 mov ds:dword ptr[st_prev+edx],esi	
 ret	

LInverted:	
 mov ds:dword ptr[st_spanstate+esi],eax	
 ret	

;--------------------------------------------------------------------

; trailing edge only
Lgs_trailing:	
 push offset Lgs_nextedge	
 jmp TrailingEdge	


 public _R_GenerateSpans	
_R_GenerateSpans:	
 push ebp	; preserve caller's stack frame
 push edi	
 push esi	; preserve register variables
 push ebx	

; clear active surfaces to just the background surface
 mov eax,ds:dword ptr[_surfaces]	
 mov edx,ds:dword ptr[_edge_head_u_shift20]	
 add eax,offset st_size	
; %ebp = span_p throughout
 mov ebp,ds:dword ptr[_span_p]	

 mov ds:dword ptr[_r_bmodelactive],0	

 mov ds:dword ptr[st_next+eax],eax	
 mov ds:dword ptr[st_prev+eax],eax	
 mov ds:dword ptr[st_last_u+eax],edx	
 mov ebx,ds:dword ptr[_edge_head+et_next]	; edge=edge_head.next

; generate spans
 cmp ebx,offset _edge_tail	; done if empty list
 jz Lgs_lastspan	

Lgs_edgeloop:	

 mov edi,ds:dword ptr[et_surfs+ebx]	
 mov eax,ds:dword ptr[_surfaces]	
 mov esi,edi	
 and edi,0FFFF0000h	
 and esi,0FFFFh	
 jz Lgs_leading	; not a trailing edge

; it has a left surface, so a surface is going away for this span
 shl esi,offset SURF_T_SHIFT	
 add esi,eax	
 test edi,edi	
 jz Lgs_trailing	

; both leading and trailing
 call near ptr TrailingEdge	
 mov eax,ds:dword ptr[_surfaces]	

; ---------------------------------------------------------------
; handle a leading edge
; ---------------------------------------------------------------

Lgs_leading:	
 shr edi,16-SURF_T_SHIFT	
 mov eax,ds:dword ptr[_surfaces]	
 add edi,eax	
 mov esi,ds:dword ptr[12345678h]	; surf2 = surfaces[1].next;
LPatch2:	
 mov edx,ds:dword ptr[st_spanstate+edi]	
 mov eax,ds:dword ptr[st_insubmodel+edi]	
 test eax,eax	
 jnz Lbmodel_leading	

; handle a leading non-bmodel edge

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美老年两性高潮| 国产九九视频一区二区三区| 国产精品美女一区二区三区| 国产亚洲一二三区| 日韩欧美一级二级三级| 日韩欧美国产一区在线观看| 日韩欧美一二三区| 欧美精品一区二区蜜臀亚洲| 日韩女同互慰一区二区| 久久精品水蜜桃av综合天堂| 精品奇米国产一区二区三区| 欧美videofree性高清杂交| 精品国产青草久久久久福利| 精品国产精品网麻豆系列| 久久久久成人黄色影片| 国产精品电影一区二区三区| 亚洲色图视频网站| 视频一区二区三区在线| 麻豆91精品视频| 国产成人午夜精品5599| 91丝袜美腿高跟国产极品老师 | 色系网站成人免费| 欧洲激情一区二区| 欧美不卡一区二区三区四区| 国产网红主播福利一区二区| 亚洲精品综合在线| 免播放器亚洲一区| 一本大道av伊人久久综合| 制服丝袜日韩国产| 欧美国产精品专区| 日韩精品久久久久久| 国产盗摄女厕一区二区三区| 欧美系列一区二区| 国产欧美日韩久久| 亚洲国产wwwccc36天堂| 国产精品18久久久久久久久久久久 | 欧美一级黄色录像| 亚洲国产精品v| 日韩av中文在线观看| 成人性生交大片免费| 5858s免费视频成人| 国产精品国产三级国产有无不卡| 天天综合日日夜夜精品| 成人精品gif动图一区| 91麻豆精品久久久久蜜臀 | 欧美综合在线视频| xfplay精品久久| 亚洲成人免费看| 99精品视频一区| 久久久国产精品不卡| 日本亚洲免费观看| 欧美在线免费观看视频| 国产精品区一区二区三| 久久aⅴ国产欧美74aaa| 欧美精品色综合| 国产精品国产a级| 国产一区二区在线看| 欧美一区三区四区| 亚洲第一会所有码转帖| 日本精品一区二区三区高清| 国产精品视频一二| 国产精品1024| 国产欧美视频在线观看| 精品一区二区久久久| 日韩一区二区视频| 免费成人你懂的| 欧美一级专区免费大片| 日韩影院精彩在线| 欧美一区二区三区视频在线 | 久久先锋资源网| 免费的国产精品| 69堂亚洲精品首页| 免费在线观看视频一区| 日韩美女在线视频| 麻豆成人免费电影| 久久毛片高清国产| 国产成人免费xxxxxxxx| 国产亚洲一区二区三区在线观看| 久国产精品韩国三级视频| 欧美va日韩va| 国产福利91精品一区| 国产精品天干天干在观线 | 国产精品污网站| 国产69精品一区二区亚洲孕妇| 久久综合给合久久狠狠狠97色69| 精品一区二区三区视频在线观看| 精品久久久久久久久久久久久久久久久 | 欧美老女人第四色| 久久免费视频色| 夫妻av一区二区| 亚洲视频中文字幕| 欧美在线观看你懂的| 午夜天堂影视香蕉久久| 欧美大片顶级少妇| 国产成人一区在线| 亚洲免费资源在线播放| 欧美日韩一区二区三区四区| 日本在线不卡视频| 久久久亚洲国产美女国产盗摄| 风流少妇一区二区| 亚洲va在线va天堂| 久久中文字幕电影| 91论坛在线播放| 日韩电影一区二区三区四区| 26uuu精品一区二区在线观看| 成人h版在线观看| 午夜精品一区二区三区免费视频| 欧美一区二区视频在线观看2020 | 蜜臀av国产精品久久久久 | 91免费看视频| 婷婷综合久久一区二区三区| 欧美成人video| 色网综合在线观看| 精彩视频一区二区| 亚洲第一成人在线| 国产精品久久久久一区| 这里只有精品免费| 在线观看不卡视频| 成人免费视频app| 久久精品久久综合| 亚洲最快最全在线视频| 国产欧美一区二区精品性色超碰| 欧美性猛交xxxx黑人交| 成人性生交大片免费看中文| 中文字幕在线一区| 欧美一区二区在线看| 中文字幕一区视频| 亚洲不卡av一区二区三区| 92国产精品观看| 免费成人在线影院| 亚洲一区二区欧美日韩 | 亚洲成人一区二区| 国产精品人人做人人爽人人添| 日韩一区二区三区视频在线观看| 99re这里都是精品| 国产精品系列在线观看| 国内外精品视频| 蜜乳av一区二区三区| 一区二区不卡在线播放| 欧美国产欧美综合| 国产欧美日产一区| 久久久久久9999| 精品国免费一区二区三区| 7777精品伊人久久久大香线蕉完整版 | 国精品**一区二区三区在线蜜桃| 亚洲乱码中文字幕| 综合欧美亚洲日本| 亚洲男人天堂av网| 一区二区三区四区蜜桃| 亚洲品质自拍视频网站| 欧美激情综合网| 国产欧美日韩麻豆91| 国产日韩精品久久久| 久久久精品蜜桃| 国产三级精品视频| 国产精品天干天干在线综合| 亚洲国产精品激情在线观看| 国产精品白丝在线| 亚洲黄色性网站| 日韩中文字幕1| 久久精品国产久精国产爱| 国产美女娇喘av呻吟久久| 国产美女视频一区| 91视视频在线直接观看在线看网页在线看 | 丁香桃色午夜亚洲一区二区三区| 国产一区二区三区av电影| 国产91精品在线观看| 91日韩在线专区| 欧美性生活一区| 精品久久久久久久久久久院品网| 久久精品亚洲精品国产欧美 | 国产精品青草综合久久久久99| 国产精品伦一区| 一区二区三区欧美亚洲| 日日骚欧美日韩| 国产成都精品91一区二区三| 91久久精品午夜一区二区| 欧美一区二区网站| 国产精品欧美精品| 亚洲国产毛片aaaaa无费看 | 午夜精品123| 国产一区二区在线看| 色综合久久中文字幕| 欧美一区三区二区| 中文字幕综合网| 美洲天堂一区二卡三卡四卡视频 | 欧美一级高清片在线观看| 国产欧美一区视频| 午夜成人免费视频| 国产传媒一区在线| 91麻豆精品国产| 亚洲免费伊人电影| 精品一区二区在线播放| 一本久久a久久精品亚洲| 日韩女优电影在线观看| 亚洲一区国产视频| 懂色av中文一区二区三区| 欧美一区二区日韩一区二区| 国产精品不卡在线| 国产精品99久|