Optimized 320x240x16B VESA2 interpolation in the DOS port.

This commit is contained in:
stainless
2001-11-05 05:48:48 +00:00
parent bbd4bf33b6
commit 992f777019

View File

@@ -1162,12 +1162,11 @@ NEWSYM copyvesa2320x480x8b
jnz .fsloopa2 jnz .fsloopa2
jmp .done jmp .done
.fsloopb .fsloopb
movsd mov eax,[esi]
dec esi
mov al,[esi]
mov [es:edi],al mov [es:edi],al
inc esi mov [es:edi+1],eax
inc edi add esi,byte 4
add edi,byte 5
dec ecx dec ecx
jnz .fsloopb jnz .fsloopb
ret ret
@@ -2631,51 +2630,51 @@ NEWSYM copyvesa2320x240x16b
jnz .fsloopa jnz .fsloopa
jmp .done jmp .done
.fsloopb .fsloopb
movsd mov eax,[esi]
movsd
sub esi,2
mov ax,[esi]
mov [es:edi],ax mov [es:edi],ax
add esi,2 mov [es:edi+2],eax
add edi,2 add esi,byte 4
add edi,byte 6
movsd
dec ecx dec ecx
jnz .fsloopb jnz .fsloopb
jmp .fsloopa2 jmp .fsloopa2
; by stainless & TRAC
.interpolate .interpolate
;cmp byte[ScreenScale],1 ;cmp byte[ScreenScale],1
;je .infsloopa ;je .infsloopa
.inloopa .inloopa
add edi,byte 2 mov bx,[esi]
mov ecx,254
mov ax,[esi+2]
add esi,byte 2 add esi,byte 2
mov ecx,255 mov [es:edi],bx
add edi,byte 2
.inloopb .inloopb
mov ax,[esi] push eax
mov bx,[esi-2] mov ebp,[esi+2]
cmp ax,bx
jne .inloopb2
mov [es:edi],ax
mov [es:edi-2],bx
add esi,byte 2
add edi,byte 2
dec ecx
jnz .inloopb
jmp .inloopa2
.inloopb2
shr eax,byte 1 shr eax,byte 1
shr ebx,byte 1 push ebp
shr ebx,byte 2
and eax,7befh and eax,7befh
and ebx,7befh shr ebp,byte 2
and ebx,39e7h
add eax,ebx add eax,ebx
and ebp,39e7h
add eax,ebp
mov [es:edi],ax mov [es:edi],ax
mov [es:edi-2],ax pop eax
pop ebx
.inloopb3 .inloopb3
add esi,byte 2 add esi,byte 2
add edi,byte 2 add edi,byte 2
dec ecx dec ecx
jnz .inloopb jnz .inloopb
.inloopa2 .inloopa2
mov ax,[esi]
add esi,byte 2
mov [es:edi],ax
add edi,byte 2
add esi,byte 32*2 add esi,byte 32*2
sub edi,byte -64*2 sub edi,byte -64*2
dec dl dec dl
@@ -3244,13 +3243,12 @@ NEWSYM copyvesa2320x480x16b
jnz .fsloopa2 jnz .fsloopa2
jmp .done jmp .done
.fsloopb .fsloopb
movsd mov eax,[esi]
movsd
sub esi,2
mov ax,[esi]
mov [es:edi],ax mov [es:edi],ax
add esi,2 mov [es:edi+2],eax
add edi,2 add esi,byte 4
add edi,byte 6
movsd
dec ecx dec ecx
jnz .fsloopb jnz .fsloopb
ret ret