Various fixes and clean-up before upcoming release.
This commit is contained in:
@@ -1045,9 +1045,9 @@ db ' ',0
|
|||||||
NEWSYM GUI16VID, db 0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0 ; 16-bit mode
|
NEWSYM GUI16VID, db 0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0 ; 16-bit mode
|
||||||
NEWSYM GUINGVID, db 1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0 ; New Graphics Mode Available
|
NEWSYM GUINGVID, db 1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0 ; New Graphics Mode Available
|
||||||
NEWSYM GUISLVID, db 0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0 ; Scanlines
|
NEWSYM GUISLVID, db 0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0 ; Scanlines
|
||||||
NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0 ; Interpolation
|
NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0 ; Interpolation
|
||||||
NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 ; Eagle
|
NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 ; Eagle
|
||||||
NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,0,0 ; (Interp | Eagle)
|
NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,1,0 ; (Interp | Eagle)
|
||||||
NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0 ; Full Screen
|
NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0 ; Full Screen
|
||||||
NEWSYM GUIWSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0 ; (Full Scr. | Wide Scr.)
|
NEWSYM GUIWSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0 ; (Full Scr. | Wide Scr.)
|
||||||
NEWSYM GUISSVID, db 0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,0 ; Small Screen
|
NEWSYM GUISSVID, db 0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,0 ; Small Screen
|
||||||
|
|||||||
@@ -16,9 +16,6 @@
|
|||||||
;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SECTION .text
|
|
||||||
|
|
||||||
%macro FilterTest 1
|
%macro FilterTest 1
|
||||||
cmp byte[GUIOn],1
|
cmp byte[GUIOn],1
|
||||||
jne %%nogui
|
jne %%nogui
|
||||||
@@ -30,21 +27,28 @@ SECTION .text
|
|||||||
%%nofilter
|
%%nofilter
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro SSInterpLine 0
|
|
||||||
|
; Horizontal recursive anti-aliasing,
|
||||||
|
; blurs edges without increasing size.
|
||||||
|
|
||||||
|
; ax = current pixel, bx = working pixel
|
||||||
|
; ecx = number of pixels (passed)
|
||||||
|
|
||||||
|
%macro SSInterpLineH 0
|
||||||
mov ax,[esi]
|
mov ax,[esi]
|
||||||
mov [es:edi],ax
|
mov [es:edi],ax
|
||||||
add esi,byte 2
|
add esi,byte 2
|
||||||
add edi,byte 2
|
add edi,byte 2
|
||||||
mov ecx,254
|
mov ecx,254
|
||||||
%%loopb
|
%%loop
|
||||||
mov ax,[esi]
|
mov ax,[esi]
|
||||||
mov bx,[esi-2]
|
mov bx,[esi-2]
|
||||||
cmp ax,bx
|
cmp ax,bx
|
||||||
jne %%loopb2
|
jne %%loop2
|
||||||
mov [es:edi],ax
|
mov [es:edi],ax
|
||||||
mov [es:edi-2],bx
|
mov [es:edi-2],bx
|
||||||
jmp %%loopb3
|
jmp %%loop3
|
||||||
%%loopb2
|
%%loop2
|
||||||
shr ax,byte 1
|
shr ax,byte 1
|
||||||
shr bx,byte 1
|
shr bx,byte 1
|
||||||
and ax,7befh
|
and ax,7befh
|
||||||
@@ -52,17 +56,85 @@ SECTION .text
|
|||||||
add ax,bx
|
add ax,bx
|
||||||
mov [es:edi],ax
|
mov [es:edi],ax
|
||||||
mov [es:edi-2],ax
|
mov [es:edi-2],ax
|
||||||
%%loopb3
|
%%loop3
|
||||||
add esi,byte 2
|
add esi,byte 2
|
||||||
add edi,byte 2
|
add edi,byte 2
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz %%loopb
|
jnz %%loop
|
||||||
mov ax,[esi]
|
mov ax,[esi]
|
||||||
mov [es:edi],ax
|
mov [es:edi],ax
|
||||||
add esi,byte 2
|
add esi,byte 2
|
||||||
add edi,byte 2
|
add edi,byte 2
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
|
|
||||||
|
; Used for 640x400 16bit...
|
||||||
|
|
||||||
|
; Reduces the vertical stretch effect.
|
||||||
|
|
||||||
|
; ax = current pixel, bx = working pixel
|
||||||
|
; ecx = number of pixels (passed)
|
||||||
|
|
||||||
|
%macro SSInterpLineV 0
|
||||||
|
%%loop
|
||||||
|
mov ax,[esi]
|
||||||
|
mov bx,[esi-(288*2)]
|
||||||
|
cmp ax,bx
|
||||||
|
je %%loop2
|
||||||
|
shr ax,byte 1
|
||||||
|
shr bx,byte 1
|
||||||
|
and ax,7befh
|
||||||
|
and bx,7befh
|
||||||
|
add ax,bx
|
||||||
|
%%loop2
|
||||||
|
mov [es:edi],ax
|
||||||
|
mov [es:edi+2],ax
|
||||||
|
add esi,byte 2
|
||||||
|
add edi,byte 4
|
||||||
|
dec ecx
|
||||||
|
jnz %%loop
|
||||||
|
%endmacro
|
||||||
|
|
||||||
|
|
||||||
|
; True high-resolution interpolation.
|
||||||
|
|
||||||
|
; Don't forget to skip every other line
|
||||||
|
; (on the screen, not in vidbuffer).
|
||||||
|
|
||||||
|
; ax = current pixel, bx = working pixel
|
||||||
|
; ecx = number of pixels (passed)
|
||||||
|
|
||||||
|
%macro SSInterpFull 1
|
||||||
|
%%loop
|
||||||
|
mov ax,[esi]
|
||||||
|
mov [es:edi],ax
|
||||||
|
mov bx,[esi+2]
|
||||||
|
call %%loop2
|
||||||
|
mov [es:edi+2],ax
|
||||||
|
mov ax,[esi]
|
||||||
|
mov bx,[esi+(288*2)]
|
||||||
|
call %%loop2
|
||||||
|
mov [es:edi+(%1*2)],ax
|
||||||
|
mov ax,[esi]
|
||||||
|
mov bx,[esi+(288*2)+2]
|
||||||
|
call %%loop2
|
||||||
|
mov [es:edi+(%1*2)+2],ax
|
||||||
|
add esi,byte 2
|
||||||
|
add edi,byte 4
|
||||||
|
dec ecx
|
||||||
|
jnz %%loop
|
||||||
|
jmp %%done
|
||||||
|
%%loop2
|
||||||
|
shr ax,byte 1
|
||||||
|
shr bx,byte 1
|
||||||
|
and ax,7befh
|
||||||
|
and bx,7befh
|
||||||
|
add ax,bx
|
||||||
|
ret
|
||||||
|
%%done
|
||||||
|
%endmacro
|
||||||
|
|
||||||
|
|
||||||
%macro FlipCheck 0
|
%macro FlipCheck 0
|
||||||
cmp byte[FlipWait],0
|
cmp byte[FlipWait],0
|
||||||
je %%noflip
|
je %%noflip
|
||||||
@@ -81,6 +153,9 @@ SECTION .text
|
|||||||
%%noflip
|
%%noflip
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
|
|
||||||
|
SECTION .text
|
||||||
|
|
||||||
NEWSYM ResetTripleBuf
|
NEWSYM ResetTripleBuf
|
||||||
mov byte[FlipWait],0
|
mov byte[FlipWait],0
|
||||||
mov dword[VidStartDraw],0
|
mov dword[VidStartDraw],0
|
||||||
@@ -1123,11 +1198,11 @@ NEWSYM copyvesa2800x600x8b
|
|||||||
cmp byte[scanlines],1
|
cmp byte[scanlines],1
|
||||||
je .fsloopa2
|
je .fsloopa2
|
||||||
.fsloopa
|
.fsloopa
|
||||||
mov ecx,256/4
|
mov ecx,256/2
|
||||||
call .fsloopb
|
call .fsloopb
|
||||||
sub esi,256
|
sub esi,256
|
||||||
add edi,16+16
|
add edi,16+16
|
||||||
mov ecx,256/4
|
mov ecx,256/2
|
||||||
call .fsloopb
|
call .fsloopb
|
||||||
add esi,16+16
|
add esi,16+16
|
||||||
add edi,16+16
|
add edi,16+16
|
||||||
@@ -1135,7 +1210,7 @@ NEWSYM copyvesa2800x600x8b
|
|||||||
jnz .fsloopa
|
jnz .fsloopa
|
||||||
jmp .done
|
jmp .done
|
||||||
.fsloopa2
|
.fsloopa2
|
||||||
mov ecx,256/4
|
mov ecx,256/2
|
||||||
call .fsloopb
|
call .fsloopb
|
||||||
add esi,16+16
|
add esi,16+16
|
||||||
add edi,16+800+16
|
add edi,16+800+16
|
||||||
@@ -1143,26 +1218,15 @@ NEWSYM copyvesa2800x600x8b
|
|||||||
jnz .fsloopa2
|
jnz .fsloopa2
|
||||||
jmp .done
|
jmp .done
|
||||||
.fsloopb
|
.fsloopb
|
||||||
push ecx
|
|
||||||
push edx
|
|
||||||
mov al,[esi]
|
mov al,[esi]
|
||||||
mov bl,[esi+1]
|
mov bl,[esi+1]
|
||||||
mov cl,[esi+2]
|
|
||||||
mov dl,[esi+3]
|
|
||||||
mov ah,al
|
mov ah,al
|
||||||
mov bh,bl
|
mov bh,bl
|
||||||
mov ch,cl
|
|
||||||
mov dh,dl
|
|
||||||
mov [es:edi],ax
|
mov [es:edi],ax
|
||||||
mov [es:edi+2],ax
|
mov [es:edi+2],ax
|
||||||
mov [es:edi+4],bx
|
mov [es:edi+4],bx
|
||||||
mov [es:edi+6],cx
|
add esi,byte 2
|
||||||
mov [es:edi+8],cx
|
add edi,byte 6
|
||||||
mov [es:edi+10],dx
|
|
||||||
pop edx
|
|
||||||
pop ecx
|
|
||||||
add esi,byte 4
|
|
||||||
add edi,byte 8+4
|
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .fsloopb
|
jnz .fsloopb
|
||||||
ret
|
ret
|
||||||
@@ -1202,6 +1266,8 @@ NEWSYM copyvesa2800x600x16b
|
|||||||
cmp byte[smallscreenon],1
|
cmp byte[smallscreenon],1
|
||||||
je near .smallscreen
|
je near .smallscreen
|
||||||
|
|
||||||
|
FilterTest .interpolate
|
||||||
|
|
||||||
cmp byte[scanlines],1
|
cmp byte[scanlines],1
|
||||||
je .loopa2
|
je .loopa2
|
||||||
.loopa
|
.loopa
|
||||||
@@ -1263,11 +1329,11 @@ NEWSYM copyvesa2800x600x16b
|
|||||||
cmp byte[scanlines],1
|
cmp byte[scanlines],1
|
||||||
je .fsloopa2
|
je .fsloopa2
|
||||||
.fsloopa
|
.fsloopa
|
||||||
mov ecx,256/4
|
mov ecx,256/2
|
||||||
call .fsloopb
|
call .fsloopb
|
||||||
sub esi,256*2
|
sub esi,256*2
|
||||||
add edi,16*2+16*2
|
add edi,16*2+16*2
|
||||||
mov ecx,256/4
|
mov ecx,256/2
|
||||||
call .fsloopb
|
call .fsloopb
|
||||||
add esi,16*2+16*2
|
add esi,16*2+16*2
|
||||||
add edi,16*2+16*2
|
add edi,16*2+16*2
|
||||||
@@ -1275,7 +1341,7 @@ NEWSYM copyvesa2800x600x16b
|
|||||||
jnz .fsloopa
|
jnz .fsloopa
|
||||||
jmp .done
|
jmp .done
|
||||||
.fsloopa2
|
.fsloopa2
|
||||||
mov ecx,256/4
|
mov ecx,256/2
|
||||||
call .fsloopb
|
call .fsloopb
|
||||||
add esi,16*2+16*2
|
add esi,16*2+16*2
|
||||||
add edi,16*2+800*2+16*2
|
add edi,16*2+800*2+16*2
|
||||||
@@ -1283,34 +1349,29 @@ NEWSYM copyvesa2800x600x16b
|
|||||||
jnz .fsloopa2
|
jnz .fsloopa2
|
||||||
jmp .done
|
jmp .done
|
||||||
.fsloopb
|
.fsloopb
|
||||||
push ecx
|
|
||||||
push edx
|
|
||||||
mov ax,[esi]
|
mov ax,[esi]
|
||||||
mov bx,[esi+2]
|
mov bx,[esi+2]
|
||||||
mov cx,[esi+4]
|
shl ax,8
|
||||||
mov dx,[esi+6]
|
shl bx,8
|
||||||
shr eax,8
|
|
||||||
shr ebx,8
|
|
||||||
shr ecx,8
|
|
||||||
shr edx,8
|
|
||||||
mov ax,[esi]
|
mov ax,[esi]
|
||||||
mov bx,[esi+2]
|
mov bx,[esi+2]
|
||||||
mov cx,[esi+4]
|
|
||||||
mov dx,[esi+6]
|
|
||||||
mov [es:edi],eax
|
mov [es:edi],eax
|
||||||
mov [es:edi+4],eax
|
mov [es:edi+4],eax
|
||||||
mov [es:edi+8],ebx
|
mov [es:edi+8],ebx
|
||||||
mov [es:edi+12],ecx
|
add esi,byte 4
|
||||||
mov [es:edi+16],ecx
|
add edi,byte 12
|
||||||
mov [es:edi+20],edx
|
|
||||||
pop edx
|
|
||||||
pop ecx
|
|
||||||
add esi,byte 8
|
|
||||||
add edi,byte 16+8
|
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .fsloopb
|
jnz .fsloopb
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
.interpolate
|
||||||
|
mov ecx,256
|
||||||
|
SSInterpFull 800
|
||||||
|
add esi,16*2+16*2
|
||||||
|
add edi,144*2+800*2+144*2
|
||||||
|
dec dl
|
||||||
|
jnz .interpolate
|
||||||
|
|
||||||
.done
|
.done
|
||||||
pop es
|
pop es
|
||||||
ret
|
ret
|
||||||
@@ -1347,10 +1408,6 @@ NEWSYM copyvesa2640x400x8b
|
|||||||
je near .smallscreen
|
je near .smallscreen
|
||||||
|
|
||||||
.loopa
|
.loopa
|
||||||
mov ecx,256
|
|
||||||
call .loopa2
|
|
||||||
add esi,16+16
|
|
||||||
add edi,64+64
|
|
||||||
mov ecx,256
|
mov ecx,256
|
||||||
call .loopa2
|
call .loopa2
|
||||||
sub esi,256
|
sub esi,256
|
||||||
@@ -1360,16 +1417,26 @@ NEWSYM copyvesa2640x400x8b
|
|||||||
add esi,16+16
|
add esi,16+16
|
||||||
add edi,64+64
|
add edi,64+64
|
||||||
dec dl
|
dec dl
|
||||||
|
jz near .done
|
||||||
|
mov ecx,256
|
||||||
|
call .loopa2
|
||||||
|
add esi,16+16
|
||||||
|
add edi,64+64
|
||||||
dec dl
|
dec dl
|
||||||
jnz .loopa
|
jnz .loopa
|
||||||
jmp .done
|
jmp .done
|
||||||
.loopa2
|
.loopa2
|
||||||
mov al,[esi]
|
mov al,[esi+1]
|
||||||
mov [es:edi],al
|
xor ebx,ebx
|
||||||
mov [es:edi+1],al
|
mov ah,al
|
||||||
inc esi
|
mov bl,[esi]
|
||||||
add edi,byte 2
|
shl eax,16
|
||||||
dec ecx
|
mov bh,bl
|
||||||
|
add esi,byte 2
|
||||||
|
add eax,ebx
|
||||||
|
mov [es:edi],eax
|
||||||
|
sub ecx,byte 2
|
||||||
|
lea edi,[edi+4]
|
||||||
jnz .loopa2
|
jnz .loopa2
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@@ -1405,10 +1472,11 @@ NEWSYM copyvesa2640x400x8b
|
|||||||
call .fsloopb
|
call .fsloopb
|
||||||
sub esi,256
|
sub esi,256
|
||||||
mov ecx,256/4
|
mov ecx,256/4
|
||||||
|
dec dl
|
||||||
|
jz near .done
|
||||||
call .fsloopb
|
call .fsloopb
|
||||||
add esi,16+16
|
add esi,16+16
|
||||||
dec dl
|
dec dl
|
||||||
dec dl
|
|
||||||
jnz .fsloopa
|
jnz .fsloopa
|
||||||
jmp .done
|
jmp .done
|
||||||
.fsloopb
|
.fsloopb
|
||||||
@@ -1459,7 +1527,7 @@ NEWSYM copyvesa2640x400x16b
|
|||||||
cmp byte[ScreenScale],1
|
cmp byte[ScreenScale],1
|
||||||
je near .fullscreen
|
je near .fullscreen
|
||||||
cmp byte[smallscreenon],1
|
cmp byte[smallscreenon],1
|
||||||
je .smallscreen
|
je near .smallscreen
|
||||||
|
|
||||||
.loopa
|
.loopa
|
||||||
mov ecx,256
|
mov ecx,256
|
||||||
@@ -1467,16 +1535,17 @@ NEWSYM copyvesa2640x400x16b
|
|||||||
add esi,16*2+16*2
|
add esi,16*2+16*2
|
||||||
add edi,64*2+64*2
|
add edi,64*2+64*2
|
||||||
mov ecx,256
|
mov ecx,256
|
||||||
call .loopa2
|
SSInterpLineV
|
||||||
sub esi,256*2
|
sub esi,256*2
|
||||||
add edi,64*2+64*2
|
add edi,64*2+64*2
|
||||||
|
dec dl
|
||||||
|
jz near .done
|
||||||
mov ecx,256
|
mov ecx,256
|
||||||
call .loopa2
|
call .loopa2
|
||||||
add esi,16*2+16*2
|
add esi,16*2+16*2
|
||||||
add edi,64*2+64*2
|
add edi,64*2+64*2
|
||||||
dec dl
|
dec dl
|
||||||
dec dl
|
jnz near .loopa
|
||||||
jnz .loopa
|
|
||||||
jmp .done
|
jmp .done
|
||||||
.loopa2
|
.loopa2
|
||||||
mov ax,[esi]
|
mov ax,[esi]
|
||||||
@@ -1513,9 +1582,6 @@ NEWSYM copyvesa2640x400x16b
|
|||||||
.fullscreen
|
.fullscreen
|
||||||
sub edi,64*2
|
sub edi,64*2
|
||||||
.fsloopa
|
.fsloopa
|
||||||
mov ecx,256/4
|
|
||||||
call .fsloopb
|
|
||||||
add esi,16*2+16*2
|
|
||||||
mov ecx,256/4
|
mov ecx,256/4
|
||||||
call .fsloopb
|
call .fsloopb
|
||||||
sub esi,256*2
|
sub esi,256*2
|
||||||
@@ -1523,6 +1589,10 @@ NEWSYM copyvesa2640x400x16b
|
|||||||
call .fsloopb
|
call .fsloopb
|
||||||
add esi,16*2+16*2
|
add esi,16*2+16*2
|
||||||
dec dl
|
dec dl
|
||||||
|
jz near .done
|
||||||
|
mov ecx,256/4
|
||||||
|
call .fsloopb
|
||||||
|
add esi,16*2+16*2
|
||||||
dec dl
|
dec dl
|
||||||
jnz .fsloopa
|
jnz .fsloopa
|
||||||
jmp .done
|
jmp .done
|
||||||
@@ -2753,7 +2823,7 @@ NEWSYM copyvesa2320x240x16b
|
|||||||
jmp .done
|
jmp .done
|
||||||
|
|
||||||
.interpolate
|
.interpolate
|
||||||
SSInterpLine
|
SSInterpLineH
|
||||||
add esi,16*2+16*2
|
add esi,16*2+16*2
|
||||||
add edi,32*2+32*2
|
add edi,32*2+32*2
|
||||||
dec dl
|
dec dl
|
||||||
@@ -3305,17 +3375,17 @@ NEWSYM copyvesa2320x480x16b
|
|||||||
cmp byte[scanlines],1
|
cmp byte[scanlines],1
|
||||||
je near .inloopa2
|
je near .inloopa2
|
||||||
.inloopa
|
.inloopa
|
||||||
SSInterpLine
|
SSInterpLineH
|
||||||
sub esi,256*2
|
sub esi,256*2
|
||||||
add edi,32*2+32*2
|
add edi,32*2+32*2
|
||||||
SSInterpLine
|
SSInterpLineH
|
||||||
add esi,16*2+16*2
|
add esi,16*2+16*2
|
||||||
add edi,32*2+32*2
|
add edi,32*2+32*2
|
||||||
dec dl
|
dec dl
|
||||||
jnz near .inloopa
|
jnz near .inloopa
|
||||||
jmp .done
|
jmp .done
|
||||||
.inloopa2
|
.inloopa2
|
||||||
SSInterpLine
|
SSInterpLineH
|
||||||
add esi,16*2+16*2
|
add esi,16*2+16*2
|
||||||
add edi,32*2+320*2+32*2
|
add edi,32*2+320*2+32*2
|
||||||
dec dl
|
dec dl
|
||||||
|
|||||||
Reference in New Issue
Block a user