37,7 → 37,7 |
;esi= clip RECT ptr |
;edi= RECT ptr |
;return code: |
;CF= 0 - draw, 1 - don't draw |
;eax= 0 - draw, 1 - don't draw |
|
push ebx |
|
53,15 → 53,18 |
jl .fail |
|
cmp eax, ecx ;left >= clip.left |
jge @F |
jae @F |
|
mov [edi+RECT.left], ecx |
mov eax, ecx |
@@: |
mov [edi+RECT.left], eax |
|
cmp ebx, edx ;right <= clip.right |
jle @f |
mov ebx, edx |
@@: |
mov [edi+RECT.right], ebx |
|
mov [edi+RECT.right], edx |
@@: |
mov eax, [edi+RECT.top] |
mov ebx, [edi+RECT.bottom] |
mov ecx, [esi+RECT.top] ;clip.top |
74,21 → 77,23 |
jl .fail |
|
cmp eax, ecx ;top >= clip.top |
jge @F |
jae @F |
|
mov [edi+RECT.top], ecx |
mov eax, ecx |
@@: |
mov [edi+RECT.top], eax |
|
cmp ebx, edx ;bottom <= clip.bottom |
jle @f |
|
mov [edi+RECT.bottom], edx |
mov ebx, edx |
@@: |
mov [edi+RECT.bottom], ebx |
pop ebx |
clc |
xor eax, eax |
ret |
.fail: |
pop ebx |
stc |
mov eax, 1 |
ret |
|
|
95,9 → 100,6 |
align 4 |
blit_clip: |
|
;return code: |
;CF= 0 - draw, 1 - don't draw |
|
.sx0 equ 8 |
.sy0 equ 12 |
.sx1 equ 16 |
128,7 → 130,9 |
lea esi, [ebx+BLITTER.sc] |
|
call block_clip |
jc .done |
test eax, eax |
mov esi, 1 |
jnz .done |
|
mov edi, [esp+.sx0] |
mov edx, [ebx+BLITTER.dst_x] |
153,7 → 157,9 |
lea edi, [esp+.dx0] |
lea esi, [ebx+BLITTER.dc] |
call block_clip |
jc .done |
test eax, eax |
mov esi, 1 |
jnz .done |
|
mov edx, [esp+.dx0] |
mov eax, [esp+.dx1] |
176,8 → 182,9 |
mov [ebx+BLITTER.src_y], ecx |
mov [ebx+BLITTER.dst_x], edx |
mov [ebx+BLITTER.dst_y], eax |
clc |
xor esi, esi |
.done: |
mov eax, esi |
add esp, 40 |
pop ebx |
pop esi |
254,7 → 261,8 |
|
mov ecx, esp |
call blit_clip |
jc .L57 |
test eax, eax |
jne .L57 |
|
mov eax, [TASK_BASE] |
|