1646,11 → 1646,9 |
|
;¯¥à¥¢®à 稢 ¥¬ § ç¥¨ï ¯à®§à ç®á⥩ |
neg edi |
inc edi |
add edi,255 |
add edi,256 |
neg esi |
inc esi |
add esi,255 |
add esi,256 |
|
movzx ecx,byte[eax] |
imul ecx,edi |
1694,8 → 1692,7 |
shr ecx,1 |
;¯¥à¥¢®à 稢 ¥¬ § ç¥¨ï ¯à®§à ç®á⨠|
neg ecx |
inc ecx |
add ecx,255 |
add ecx,256 |
|
shl ecx,24 |
add ebx,ecx |
1704,10 → 1701,10 |
|
jmp .end_f |
.c0_c1: ;¥á«¨ ¯à®§à ç®á⨠®¡®¨å 梥⮢ ᮢ¯ ¤ îâ |
mov edx,dword[eax] |
mov edx,[eax] |
shr edx,1 |
and edx,011111110111111101111111b |
mov esi,dword[ebx] |
mov esi,[ebx] |
shr esi,1 |
and esi,011111110111111101111111b |
add edx,esi |
1715,16 → 1712,16 |
or edx,edi |
jmp .end_f |
.c0z: ;¥á«¨ 梥⠢ eax ¯à®§à çë© |
mov edx,dword[ebx] |
mov edx,[ebx] |
movzx edi,byte[ebx+3] |
jmp @f |
.c1z: ;¥á«¨ 梥⠢ ebx ¯à®§à çë© |
mov edx,dword[eax] |
mov edx,[eax] |
@@: |
add edi,255 ;¤¥« ¥¬ 梥⠯®«®¢¨ã ¯à®§à çë¬ |
shr edi,1 |
cmp edi,255 |
jl @f |
jle @f |
mov edi,255 ;¬ ªá¨¬ «ì ï ¯à®§à ç®áâì ¥ ¡®«¥¥ 255 |
@@: |
shl edi,24 |
2271,15 → 2268,28 |
endp |
|
;input: |
; esi = pointer to color1 + transparent |
; edi = pointer to background color2 |
; esi = pointer to color1 + transparent (32b) |
; edi = pointer to background color2 (24b) |
;output: |
; [edi] = combine color |
; [edi] = combine color (24b) |
align 4 |
combine_colors_0: |
push ax bx cx dx |
mov bx,0x00ff ;---get transparent--- |
push ax cx |
movzx cx,byte[esi+3] ;pro |
cmp cx,255 |
je .end_f |
or cx,cx |
jnz @f |
mov ax,[esi] |
mov [edi],ax |
mov al,[esi+2] |
mov [edi+2],al |
jmp .end_f |
align 4 |
@@: |
inc cx |
push bx dx |
mov bx,0x0100 ;---get transparent--- |
sub bx,cx ;256-pro |
;---blye--- |
movzx ax,byte[esi] |
2302,8 → 2312,9 |
imul dx,cx |
add ax,dx |
mov byte[edi+2],ah |
|
pop dx cx bx ax |
pop dx bx |
.end_f: |
pop cx ax |
ret |
|
;äãªæ¨ï ª®¯¨àã¥â ¨§®¡à ¦¥¨¥ ¨§ ¡ãä¥à buf_source (32b) ¢ buf_destination (24b) |
2426,17 → 2437,28 |
endp |
|
;input: |
; ebx - color1 |
; esi = pointer to transparent |
; edi = pointer to background color2 |
; ebx - color1 (24b) |
; esi = pointer to transparent (8b) |
; edi = pointer to background color2 (24b) |
;output: |
; [edi] = combine color |
; [edi] = combine color (24b) |
align 4 |
combine_colors_2: |
push ax ebx cx dx si |
mov cl,byte[esi] ;pro |
xor ch,ch |
mov si,0x00ff ;---get transparent--- |
push ebx cx |
movzx cx,byte[esi] ;pro |
cmp cx,255 |
je .end_f |
or cx,cx |
jnz @f |
mov [edi],bx |
shr ebx,16 |
mov [edi+2],bl |
jmp .end_f |
align 4 |
@@: |
inc cx |
push ax dx si |
mov si,0x0100 ;---get transparent--- |
sub si,cx ;256-pro |
|
;---blye--- |
2462,8 → 2484,9 |
imul dx,cx |
add ax,dx |
mov byte[edi+2],ah |
|
pop si dx cx ebx ax |
pop si dx ax |
.end_f: |
pop cx ebx |
ret |
|
;äãªæ¨ï ª®¯¨àã¥â ¨§®¡à ¦¥¨¥ ¨§ ¡ãä¥à buf_source (8b) ¢ buf_destination (24b) |