forked from KolibriOS/kolibrios
update functions 'buf2d_img_hdiv2', 'buf2d_img_wdiv2' and 'buf2d_bit_blt_transp'
git-svn-id: svn://kolibrios.org@2927 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -1747,24 +1747,70 @@ align 4
|
|||||||
proc buf_img_wdiv2, buf_struc:dword
|
proc buf_img_wdiv2, buf_struc:dword
|
||||||
pushad
|
pushad
|
||||||
mov edi,dword[buf_struc]
|
mov edi,dword[buf_struc]
|
||||||
|
cmp buf2d_bits,8
|
||||||
|
jne @f
|
||||||
|
mov eax,buf2d_w
|
||||||
|
mov ecx,buf2d_h
|
||||||
|
imul ecx,eax
|
||||||
|
stdcall img_8b_wdiv2, buf2d_data,ecx
|
||||||
|
@@:
|
||||||
cmp buf2d_bits,24
|
cmp buf2d_bits,24
|
||||||
jne .end_draw_24
|
jne @f
|
||||||
mov eax,buf2d_w
|
mov eax,buf2d_w
|
||||||
mov ecx,buf2d_h
|
mov ecx,buf2d_h
|
||||||
imul ecx,eax
|
imul ecx,eax
|
||||||
stdcall img_rgb24_wdiv2, buf2d_data,ecx
|
stdcall img_rgb24_wdiv2, buf2d_data,ecx
|
||||||
.end_draw_24:
|
@@:
|
||||||
cmp buf2d_bits,32
|
cmp buf2d_bits,32
|
||||||
jne .end_draw_32
|
jne @f
|
||||||
mov eax,buf2d_w
|
mov eax,buf2d_w
|
||||||
mov ecx,buf2d_h
|
mov ecx,buf2d_h
|
||||||
imul ecx,eax
|
imul ecx,eax
|
||||||
stdcall img_rgb32_wdiv2, buf2d_data,ecx
|
stdcall img_rgba32_wdiv2, buf2d_data,ecx
|
||||||
.end_draw_32:
|
@@:
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
;input:
|
||||||
|
;data_8b - pointer to rgb data
|
||||||
|
;size - count img pixels (size img data / 3(rgb) )
|
||||||
|
align 4
|
||||||
|
proc img_8b_wdiv2 data_8b:dword, size:dword
|
||||||
|
mov eax,dword[data_8b]
|
||||||
|
mov ecx,dword[size] ;ecx = size
|
||||||
|
cld
|
||||||
|
@@: ;<3B><>⥬<EFBFBD><E2A5AC><EFBFBD><EFBFBD><EFBFBD> 梥<><E6A2A5> <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB>
|
||||||
|
shr byte[eax],1
|
||||||
|
inc eax
|
||||||
|
loop @b
|
||||||
|
|
||||||
|
mov eax,dword[data_8b]
|
||||||
|
mov ecx,dword[size] ;ecx = size
|
||||||
|
shr ecx,1
|
||||||
|
@@: ;<><E1ABAE><EFBFBD><EFBFBD><EFBFBD> 梥⮢ <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB>
|
||||||
|
mov bl,byte[eax+1] ;<3B><><EFBFBD><EFBFBD><EFBFBD>㥬 梥<> <20><>ᥤ<EFBFBD><E1A5A4><EFBFBD><EFBFBD> <20><><EFBFBD>ᥫ<EFBFBD>
|
||||||
|
add byte[eax],bl
|
||||||
|
add eax,2
|
||||||
|
loop @b
|
||||||
|
|
||||||
|
mov eax,dword[data_8b]
|
||||||
|
inc eax
|
||||||
|
mov ebx,eax
|
||||||
|
inc ebx
|
||||||
|
mov ecx,dword[size] ;ecx = size
|
||||||
|
shr ecx,1
|
||||||
|
dec ecx ;<3B><>譨<EFBFBD> <20><><EFBFBD>ᥫ<EFBFBD>
|
||||||
|
@@: ;<3B><><EFBFBD><EFBFBD><EFBFBD>⨥ <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB>
|
||||||
|
mov dl,byte[ebx]
|
||||||
|
mov byte[eax],dl
|
||||||
|
|
||||||
|
inc eax
|
||||||
|
add ebx,2
|
||||||
|
loop @b
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
;input:
|
;input:
|
||||||
;data_rgb - pointer to rgb data
|
;data_rgb - pointer to rgb data
|
||||||
;size - count img pixels (size img data / 3(rgb) )
|
;size - count img pixels (size img data / 3(rgb) )
|
||||||
@@ -1810,13 +1856,13 @@ proc img_rgb24_wdiv2 data_rgb:dword, size:dword
|
|||||||
endp
|
endp
|
||||||
|
|
||||||
;input:
|
;input:
|
||||||
;data_rgb - pointer to rgb data
|
;data_rgba - pointer to rgba data
|
||||||
;size - count img pixels (size img data / 3(rgb) )
|
;size - count img pixels (size img data / 4(rgba) )
|
||||||
align 4
|
align 4
|
||||||
proc img_rgb32_wdiv2 data_rgb:dword, size:dword
|
proc img_rgba32_wdiv2 data_rgba:dword, size:dword
|
||||||
mov eax,dword[data_rgb]
|
mov eax,dword[data_rgba]
|
||||||
|
|
||||||
mov eax,dword[data_rgb]
|
mov eax,dword[data_rgba]
|
||||||
mov ebx,eax
|
mov ebx,eax
|
||||||
add ebx,4
|
add ebx,4
|
||||||
mov ecx,dword[size] ;ecx = size
|
mov ecx,dword[size] ;ecx = size
|
||||||
@@ -1828,7 +1874,7 @@ proc img_rgb32_wdiv2 data_rgb:dword, size:dword
|
|||||||
add ebx,8
|
add ebx,8
|
||||||
loop @b
|
loop @b
|
||||||
|
|
||||||
mov eax,dword[data_rgb]
|
mov eax,dword[data_rgba]
|
||||||
add eax,4
|
add eax,4
|
||||||
mov ebx,eax
|
mov ebx,eax
|
||||||
add ebx,4
|
add ebx,4
|
||||||
@@ -1849,25 +1895,95 @@ align 4
|
|||||||
proc buf_img_hdiv2, buf_struc:dword
|
proc buf_img_hdiv2, buf_struc:dword
|
||||||
pushad
|
pushad
|
||||||
mov edi,dword[buf_struc]
|
mov edi,dword[buf_struc]
|
||||||
|
cmp buf2d_bits,8
|
||||||
|
jne @f
|
||||||
|
mov eax,buf2d_w
|
||||||
|
mov ecx,buf2d_h
|
||||||
|
imul ecx,eax
|
||||||
|
stdcall img_8b_hdiv2, buf2d_data,ecx,eax
|
||||||
|
@@:
|
||||||
cmp buf2d_bits,24
|
cmp buf2d_bits,24
|
||||||
jne .end_draw_24
|
jne @f
|
||||||
mov eax,buf2d_w
|
mov eax,buf2d_w
|
||||||
mov ecx,buf2d_h
|
mov ecx,buf2d_h
|
||||||
imul ecx,eax
|
imul ecx,eax
|
||||||
stdcall img_rgb24_hdiv2, buf2d_data,ecx,eax
|
stdcall img_rgb24_hdiv2, buf2d_data,ecx,eax
|
||||||
.end_draw_24:
|
@@:
|
||||||
cmp buf2d_bits,32
|
cmp buf2d_bits,32
|
||||||
jne .end_draw_32
|
jne @f
|
||||||
mov eax,buf2d_w
|
mov eax,buf2d_w
|
||||||
mov ecx,buf2d_h
|
mov ecx,buf2d_h
|
||||||
imul ecx,eax
|
imul ecx,eax
|
||||||
shl eax,2
|
shl eax,2
|
||||||
stdcall img_rgb32_hdiv2, buf2d_data,ecx,eax
|
stdcall img_rgba32_hdiv2, buf2d_data,ecx,eax
|
||||||
.end_draw_32:
|
@@:
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
;input:
|
||||||
|
;data_8b - pointer to 8 bit data
|
||||||
|
;size - count img pixels (size img data)
|
||||||
|
;size_w - width img in pixels
|
||||||
|
align 4
|
||||||
|
proc img_8b_hdiv2, data_8b:dword, size:dword, size_w:dword
|
||||||
|
|
||||||
|
mov eax,dword[data_8b] ;eax =
|
||||||
|
mov ecx,dword[size]
|
||||||
|
cld
|
||||||
|
@@: ;<3B><>⥬<EFBFBD><E2A5AC><EFBFBD><EFBFBD><EFBFBD> 梥<><E6A2A5> <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB>
|
||||||
|
shr byte[eax],1
|
||||||
|
inc eax
|
||||||
|
loop @b
|
||||||
|
|
||||||
|
mov eax,dword[data_8b] ;eax =
|
||||||
|
mov esi,dword[size_w]
|
||||||
|
mov ebx,esi
|
||||||
|
add ebx,eax
|
||||||
|
mov ecx,dword[size] ;ecx = size
|
||||||
|
shr ecx,1
|
||||||
|
xor edi,edi
|
||||||
|
@@: ;<><E1ABAE><EFBFBD><EFBFBD><EFBFBD> 梥⮢ <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB>
|
||||||
|
mov dl,byte[ebx] ;<3B><><EFBFBD><EFBFBD><EFBFBD>㥬 梥<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ᥫ<EFBFBD>
|
||||||
|
add byte[eax],dl
|
||||||
|
|
||||||
|
inc eax
|
||||||
|
inc ebx
|
||||||
|
inc edi
|
||||||
|
cmp edi,dword[size_w]
|
||||||
|
jl .old_line
|
||||||
|
add eax,esi
|
||||||
|
add ebx,esi
|
||||||
|
xor edi,edi
|
||||||
|
.old_line:
|
||||||
|
loop @b
|
||||||
|
|
||||||
|
|
||||||
|
mov eax,dword[data_8b] ;eax =
|
||||||
|
add eax,esi ;esi = width*3(rgb)
|
||||||
|
mov ebx,eax
|
||||||
|
add ebx,esi
|
||||||
|
mov ecx,dword[size] ;ecx = size
|
||||||
|
shr ecx,1
|
||||||
|
sub ecx,dword[size_w] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD> <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB>
|
||||||
|
xor edi,edi
|
||||||
|
@@: ;<3B><><EFBFBD><EFBFBD><EFBFBD>⨥ <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB>
|
||||||
|
mov dl,byte[ebx] ;<3B><><EFBFBD><EFBFBD><EFBFBD>㥬 梥<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ᥫ<EFBFBD>
|
||||||
|
mov byte[eax],dl
|
||||||
|
|
||||||
|
inc eax
|
||||||
|
inc ebx
|
||||||
|
inc edi
|
||||||
|
cmp edi,dword[size_w]
|
||||||
|
jl .old_line_2
|
||||||
|
add ebx,esi
|
||||||
|
xor edi,edi
|
||||||
|
.old_line_2:
|
||||||
|
loop @b
|
||||||
|
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
;input:
|
;input:
|
||||||
;data_rgb - pointer to rgb data
|
;data_rgb - pointer to rgb data
|
||||||
;size - count img pixels (size img data / 3(rgb) )
|
;size - count img pixels (size img data / 3(rgb) )
|
||||||
@@ -1938,13 +2054,13 @@ proc img_rgb24_hdiv2, data_rgb:dword, size:dword, size_w:dword
|
|||||||
endp
|
endp
|
||||||
|
|
||||||
;input:
|
;input:
|
||||||
;data_rgb - pointer to rgb data
|
;data_rgba - pointer to rgba data
|
||||||
;size - count img pixels (size img data / 3(rgb) )
|
;size - count img pixels (size img data / 4(rgba) )
|
||||||
;size_w_b - width img in bytes
|
;size_w_b - width img in bytes
|
||||||
align 4
|
align 4
|
||||||
proc img_rgb32_hdiv2, data_rgb:dword, size:dword, size_w_b:dword
|
proc img_rgba32_hdiv2, data_rgba:dword, size:dword, size_w_b:dword
|
||||||
|
|
||||||
mov eax,dword[data_rgb] ;eax =
|
mov eax,dword[data_rgba] ;eax =
|
||||||
mov ebx,dword[size_w_b]
|
mov ebx,dword[size_w_b]
|
||||||
add ebx,eax
|
add ebx,eax
|
||||||
mov ecx,dword[size] ;ecx = size
|
mov ecx,dword[size] ;ecx = size
|
||||||
@@ -1966,7 +2082,7 @@ proc img_rgb32_hdiv2, data_rgb:dword, size:dword, size_w_b:dword
|
|||||||
loop @b
|
loop @b
|
||||||
|
|
||||||
|
|
||||||
mov eax,dword[data_rgb] ;eax =
|
mov eax,dword[data_rgba] ;eax =
|
||||||
mov ebx,dword[size_w_b]
|
mov ebx,dword[size_w_b]
|
||||||
add eax,ebx
|
add eax,ebx
|
||||||
add ebx,eax
|
add ebx,eax
|
||||||
@@ -2012,6 +2128,8 @@ endl
|
|||||||
movzx esi,byte[ebx+3]
|
movzx esi,byte[ebx+3]
|
||||||
cmp esi,255
|
cmp esi,255
|
||||||
je .c1z
|
je .c1z
|
||||||
|
cmp edi,esi
|
||||||
|
je .c0_c1
|
||||||
|
|
||||||
;<3B><>ॢ<EFBFBD><E0A5A2><EFBFBD>稢<EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD> <20><EFBFBD><E0AEA7>筮<EFBFBD>⥩
|
;<3B><>ॢ<EFBFBD><E0A5A2><EFBFBD>稢<EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD> <20><EFBFBD><E0AEA7>筮<EFBFBD>⥩
|
||||||
neg edi
|
neg edi
|
||||||
@@ -2072,6 +2190,17 @@ push eax ebx
|
|||||||
pop ebx eax
|
pop ebx eax
|
||||||
|
|
||||||
jmp .end_f
|
jmp .end_f
|
||||||
|
.c0_c1: ;<3B> <20><EFBFBD><E0AEA7>筮<EFBFBD><E7ADAE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 梥⮢ ᮢ<><E1AEA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
mov edx,dword[eax]
|
||||||
|
shr edx,1
|
||||||
|
and edx,011111110111111101111111b
|
||||||
|
mov esi,dword[ebx]
|
||||||
|
shr esi,1
|
||||||
|
and esi,011111110111111101111111b
|
||||||
|
add edx,esi
|
||||||
|
ror edi,8 ;<3B><>६<EFBFBD>頥<EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD> <20><EFBFBD><E0AEA7>筮<EFBFBD><E7ADAE><EFBFBD> <20> <20><><EFBFBD><EFBFBD>訩 <20><><EFBFBD><EFBFBD> edi
|
||||||
|
or edx,edi
|
||||||
|
jmp .end_f
|
||||||
.c0z: ;<3B> 梥<> <20> eax <20><EFBFBD><E0AEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
.c0z: ;<3B> 梥<> <20> eax <20><EFBFBD><E0AEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
mov edx,dword[ebx]
|
mov edx,dword[ebx]
|
||||||
movzx edi,byte[ebx+3]
|
movzx edi,byte[ebx+3]
|
||||||
@@ -2423,7 +2552,7 @@ combine_colors_0:
|
|||||||
align 4
|
align 4
|
||||||
proc buf_bit_blt_transp, buf_destination:dword, coord_x:dword, coord_y:dword, buf_source:dword
|
proc buf_bit_blt_transp, buf_destination:dword, coord_x:dword, coord_y:dword, buf_source:dword
|
||||||
locals
|
locals
|
||||||
right_bytes dd ?
|
lost_bytes dd ?
|
||||||
endl
|
endl
|
||||||
pushad
|
pushad
|
||||||
|
|
||||||
@@ -2476,21 +2605,48 @@ proc buf_bit_blt_transp, buf_destination:dword, coord_x:dword, coord_y:dword, bu
|
|||||||
sub ebx,eax
|
sub ebx,eax
|
||||||
mov edi,ecx ;edi 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>㤠 <20>㤥<EFBFBD> <20>ந<EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD>
|
mov edi,ecx ;edi 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>㤠 <20>㤥<EFBFBD> <20>ந<EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
mov [right_bytes],0
|
mov dword[lost_bytes],0
|
||||||
mov ecx,[coord_x]
|
mov ecx,[coord_x]
|
||||||
|
cmp ecx,0
|
||||||
|
jge @f
|
||||||
|
neg ecx
|
||||||
|
;inc ecx
|
||||||
|
cmp eax,ecx ;eax - <20><>ਭ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><><EFBFBD>⨭<EFBFBD><E2A8AD>
|
||||||
|
jle .copy_end ;<3B> <20><><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20><>室<EFBFBD><E5AEA4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20>࠭<EFBFBD>楩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (coord_x<0 <20> |coord_x|>buf_source.w)
|
||||||
|
shl ecx,2
|
||||||
|
mov [lost_bytes],ecx
|
||||||
|
add esi,ecx
|
||||||
|
shr ecx,2
|
||||||
|
sub eax,ecx ;㪮<><E3AAAE>稢<EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><>ப<EFBFBD>
|
||||||
|
add ebx,ecx ;㤫<><E3A4AB><EFBFBD>塞 <20><>ப<EFBFBD> <20><><EFBFBD> ᤢ<><E1A4A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⨭<EFBFBD><E2A8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
lea ecx,[ecx+ecx*2]
|
||||||
|
add edi,ecx ;edi 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>㤠 <20>㤥<EFBFBD> <20>ந<EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD>
|
||||||
|
xor ecx,ecx
|
||||||
|
@@:
|
||||||
cmp ecx,ebx
|
cmp ecx,ebx
|
||||||
jl @f
|
jle @f
|
||||||
sub ecx,ebx
|
sub ecx,ebx
|
||||||
sub eax,ecx ;㪮<><E3AAAE>稢<EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><>ப<EFBFBD>
|
sub eax,ecx ;㪮<><E3AAAE>稢<EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><>ப<EFBFBD>
|
||||||
add ebx,ecx ;㤫<><E3A4AB><EFBFBD>塞 <20><>ப<EFBFBD> <20><><EFBFBD> ᤢ<><E1A4A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⨭<EFBFBD><E2A8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
add ebx,ecx ;㤫<><E3A4AB><EFBFBD>塞 <20><>ப<EFBFBD> <20><><EFBFBD> ᤢ<><E1A4A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⨭<EFBFBD><E2A8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
shl ecx,2 ;ecx - <20><> <20><><EFBFBD><EFBFBD> <20> 1-<2D> <20><>ப<EFBFBD> <20><><EFBFBD>⨭<EFBFBD><E2A8AD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>뫠<EFBFBD><EBABA0><EFBFBD> <20><> <20>ࠢ<EFBFBD><E0A0A2> <20><><EFBFBD><EFBFBD>
|
shl ecx,2 ;ecx - <20><> <20><><EFBFBD>ᥫ<EFBFBD><EFBFBD> <20> 1-<2D> <20><>ப<EFBFBD> <20><><EFBFBD>⨭<EFBFBD><E2A8AD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>뫠<EFBFBD><EBABA0><EFBFBD> <20><> <20>ࠢ<EFBFBD><E0A0A2> <20><><EFBFBD><EFBFBD>
|
||||||
mov [right_bytes],ecx
|
add [lost_bytes],ecx
|
||||||
@@:
|
@@:
|
||||||
|
|
||||||
|
; mov [right_bytes],0
|
||||||
|
; mov ecx,[coord_x]
|
||||||
|
; cmp ecx,ebx
|
||||||
|
; jl @f
|
||||||
|
; sub ecx,ebx
|
||||||
|
; sub eax,ecx ;㪮<><E3AAAE>稢<EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><>ப<EFBFBD>
|
||||||
|
; add ebx,ecx ;㤫<><E3A4AB><EFBFBD>塞 <20><>ப<EFBFBD> <20><><EFBFBD> ᤢ<><E1A4A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⨭<EFBFBD><E2A8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
; shl ecx,2 ;ecx - <20><> <20><><EFBFBD><EFBFBD> <20> 1-<2D> <20><>ப<EFBFBD> <20><><EFBFBD>⨭<EFBFBD><E2A8AD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>뫠<EFBFBD><EBABA0><EFBFBD> <20><> <20>ࠢ<EFBFBD><E0A0A2> <20><><EFBFBD><EFBFBD>
|
||||||
|
; mov [right_bytes],ecx
|
||||||
|
; @@:
|
||||||
|
|
||||||
lea ebx,[ebx+ebx*2] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <20><><EFBFBD><EFBFBD> <20> 1-<2D> <20><>ப<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20> 1-<2D> <20><>ப<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><><EFBFBD>⨭<EFBFBD><E2A8AD>
|
lea ebx,[ebx+ebx*2] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <20><><EFBFBD><EFBFBD> <20> 1-<2D> <20><>ப<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20> 1-<2D> <20><>ப<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><><EFBFBD>⨭<EFBFBD><E2A8AD>
|
||||||
|
|
||||||
cld
|
cld
|
||||||
cmp [right_bytes],0
|
cmp [lost_bytes],0
|
||||||
jg .copy_1
|
jg .copy_1
|
||||||
.copy_0: ;<3B><><EFBFBD><EFBFBD>⮥ <20><><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD>
|
.copy_0: ;<3B><><EFBFBD><EFBFBD>⮥ <20><><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD>
|
||||||
mov ecx,eax
|
mov ecx,eax
|
||||||
@@ -2512,7 +2668,7 @@ proc buf_bit_blt_transp, buf_destination:dword, coord_x:dword, coord_y:dword, bu
|
|||||||
add esi,4
|
add esi,4
|
||||||
loop @b
|
loop @b
|
||||||
add edi,ebx
|
add edi,ebx
|
||||||
add esi,[right_bytes] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塞 <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>뫠<EFBFBD><EBABA0><EFBFBD> <20><> <20>ࠢ<EFBFBD><E0A0A2> <20>࠭<EFBFBD><E0A0AD><EFBFBD>
|
add esi,[lost_bytes] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塞 <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>뫠<EFBFBD><EBABA0><EFBFBD> <20><> <20>ࠢ<EFBFBD><E0A0A2> <20>࠭<EFBFBD><E0A0AD><EFBFBD>
|
||||||
dec edx
|
dec edx
|
||||||
cmp edx,0
|
cmp edx,0
|
||||||
jg .copy_1
|
jg .copy_1
|
||||||
@@ -2632,7 +2788,7 @@ proc buf_bit_blt_alpha, buf_destination:dword, coord_x:dword, coord_y:dword, buf
|
|||||||
;inc ecx
|
;inc ecx
|
||||||
cmp eax,ecx ;eax - <20><>ਭ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><><EFBFBD>⨭<EFBFBD><E2A8AD>
|
cmp eax,ecx ;eax - <20><>ਭ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><><EFBFBD>⨭<EFBFBD><E2A8AD>
|
||||||
jle .copy_end ;<3B> <20><><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20><>室<EFBFBD><E5AEA4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20>࠭<EFBFBD>楩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (coord_x<0 <20> |coord_x|>buf_source.w)
|
jle .copy_end ;<3B> <20><><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20><>室<EFBFBD><E5AEA4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20>࠭<EFBFBD>楩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (coord_x<0 <20> |coord_x|>buf_source.w)
|
||||||
add [lost_bytes],ecx
|
mov [lost_bytes],ecx
|
||||||
sub eax,ecx ;㪮<><E3AAAE>稢<EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><>ப<EFBFBD>
|
sub eax,ecx ;㪮<><E3AAAE>稢<EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><>ப<EFBFBD>
|
||||||
add ebx,ecx ;㤫<><E3A4AB><EFBFBD>塞 <20><>ப<EFBFBD> <20><><EFBFBD> ᤢ<><E1A4A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⨭<EFBFBD><E2A8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
add ebx,ecx ;㤫<><E3A4AB><EFBFBD>塞 <20><>ப<EFBFBD> <20><><EFBFBD> ᤢ<><E1A4A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⨭<EFBFBD><E2A8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
add esi,ecx
|
add esi,ecx
|
||||||
|
Reference in New Issue
Block a user