1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
segment .text
%include "a_triblt.inc"
global _vdasm_triblt_span_point
_vdasm_triblt_span_point:
push ebp
push edi
push esi
push ebx
mov eax,[esp+4+16]
mov ebp,[eax+texinfo.w]
mov ebx,[eax+texinfo.mips+mipmap.pitch]
shl ebp,2
mov edi,[eax+texinfo.src]
mov edx,[eax+texinfo.dst]
mov ecx,[eax+texinfo.mips+mipmap.bits]
sar ebx,2
add edx,ebp
neg ebp
.xloop:
mov eax,[edi+span.v]
imul eax,ebx
add eax,[edi+span.u]
add edi,8
mov eax,[ecx+eax*4]
mov [edx+ebp],eax
add ebp,4
jnc .xloop
pop ebx
pop esi
pop edi
pop ebp
ret
end
|