Cleaned up 320x480x8B VESA2 blitter in the DOS port.
This commit is contained in:
@@ -1045,13 +1045,13 @@ NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; Interpolation
|
|||||||
NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 ; Eagle
|
NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 ; Eagle
|
||||||
NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0 ; (Interp | Eagle)
|
NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0 ; (Interp | Eagle)
|
||||||
NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0 ; Full Screen
|
NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0 ; Full Screen
|
||||||
NEWSYM GUISSVID, db 0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0 ; Small Screen
|
NEWSYM GUISSVID, db 0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0 ; Small Screen
|
||||||
NEWSYM GUITBVID, db 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0 ; Triple Buffering
|
NEWSYM GUITBVID, db 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0 ; Triple Buffering
|
||||||
NEWSYM GUIHSVID, db 0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0 ; Half/Quarter Scanlines
|
NEWSYM GUIHSVID, db 0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0 ; Half/Quarter Scanlines
|
||||||
NEWSYM GUI2xVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; 2xSaI/Super Eagle Engines
|
NEWSYM GUI2xVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; 2xSaI/Super Eagle Engines
|
||||||
NEWSYM GUIWFVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; If Windows Full Screen
|
NEWSYM GUIWFVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; If Windows Full Screen
|
||||||
NEWSYM GUII2VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Interpolation
|
NEWSYM GUII2VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Interpolation
|
||||||
NEWSYM GUIM7VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; Interpolation
|
NEWSYM GUIM7VID, db 0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0 ; Interpolation
|
||||||
NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Bilinear Filtering
|
NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Bilinear Filtering
|
||||||
NEWSYM GUITBWVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering (Win)
|
NEWSYM GUITBWVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering (Win)
|
||||||
SECTION .text
|
SECTION .text
|
||||||
|
|||||||
@@ -1044,6 +1044,7 @@ NEWSYM copyvesa2320x240x8b
|
|||||||
NEWSYM copyvesa2320x480x8bgui
|
NEWSYM copyvesa2320x480x8bgui
|
||||||
mov byte[CurrentGUIOn],1
|
mov byte[CurrentGUIOn],1
|
||||||
jmp copyvesa2320x480x8b.nogui
|
jmp copyvesa2320x480x8b.nogui
|
||||||
|
|
||||||
NEWSYM copyvesa2320x480x8b
|
NEWSYM copyvesa2320x480x8b
|
||||||
mov byte[CurrentGUIOn],0
|
mov byte[CurrentGUIOn],0
|
||||||
.nogui
|
.nogui
|
||||||
@@ -1066,62 +1067,115 @@ NEWSYM copyvesa2320x480x8b
|
|||||||
mov dl,[resolutn]
|
mov dl,[resolutn]
|
||||||
dec dl
|
dec dl
|
||||||
dec dl
|
dec dl
|
||||||
|
cmp byte[smallscreenon],1
|
||||||
|
je near .smallscreen
|
||||||
cmp byte[scanlines],1
|
cmp byte[scanlines],1
|
||||||
je near copyvesa2320x480x8bs
|
je near .scanlines
|
||||||
cmp byte[CurrentGUIOn],1
|
;cmp byte[CurrentGUIOn],1
|
||||||
je .loopa
|
cmp byte[GUIOn],1
|
||||||
|
je .loopa1
|
||||||
cmp byte[f3menuen],1
|
cmp byte[f3menuen],1
|
||||||
je .loopa
|
je .loopa1
|
||||||
cmp byte[ForceNewGfxOff],0
|
cmp byte[ForceNewGfxOff],1
|
||||||
jne .loopa
|
je .loopa1
|
||||||
cmp byte[newengen],0
|
cmp byte[newengen],1
|
||||||
jne near copyvesa2320x480x8ng
|
je near copyvesa2320x480x8ng
|
||||||
.loopa
|
|
||||||
|
.loopa1
|
||||||
|
cmp byte[MMXSupport],1
|
||||||
|
je .loopb
|
||||||
|
.loopa2
|
||||||
mov ecx,64
|
mov ecx,64
|
||||||
.a
|
rep movsd
|
||||||
mov eax,[esi]
|
|
||||||
mov [es:edi],eax
|
|
||||||
add esi,4
|
|
||||||
add edi,4
|
|
||||||
dec ecx
|
|
||||||
jnz .a
|
|
||||||
mov ecx,64
|
|
||||||
add edi,64
|
|
||||||
sub esi,256
|
sub esi,256
|
||||||
.a2r
|
add edi,32*2
|
||||||
mov eax,[esi]
|
|
||||||
mov [es:edi],eax
|
|
||||||
add esi,4
|
|
||||||
add edi,4
|
|
||||||
dec ecx
|
|
||||||
jnz .a2r
|
|
||||||
.returnloop
|
|
||||||
add esi,32
|
|
||||||
add edi,64
|
|
||||||
dec dl
|
|
||||||
jnz .loopa
|
|
||||||
pop es
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
copyvesa2320x480x8bs
|
|
||||||
.loopa
|
|
||||||
mov ecx,64
|
mov ecx,64
|
||||||
.a
|
rep movsd
|
||||||
mov eax,[esi]
|
|
||||||
mov [es:edi],eax
|
|
||||||
add esi,4
|
|
||||||
add edi,4
|
|
||||||
dec ecx
|
|
||||||
jnz .a
|
|
||||||
.returnloop
|
|
||||||
add esi,32
|
add esi,32
|
||||||
add edi,64+320
|
add edi,32*2
|
||||||
dec dl
|
dec dl
|
||||||
jnz .loopa
|
jnz .loopa2
|
||||||
|
jmp .done
|
||||||
|
.loopb
|
||||||
|
mov ecx,16
|
||||||
|
MMXStuff
|
||||||
|
sub esi,256
|
||||||
|
add edi,32*2
|
||||||
|
mov ecx,16
|
||||||
|
MMXStuff
|
||||||
|
add esi,32
|
||||||
|
add edi,32*2
|
||||||
|
dec dl
|
||||||
|
jnz .loopb
|
||||||
|
emms
|
||||||
|
jmp .done
|
||||||
|
|
||||||
|
.scanlines
|
||||||
|
cmp byte[MMXSupport],1
|
||||||
|
je .sloopb
|
||||||
|
.sloopa
|
||||||
|
mov ecx,64
|
||||||
|
rep movsd
|
||||||
|
add esi,32
|
||||||
|
add edi,32+320+32
|
||||||
|
dec dl
|
||||||
|
jnz .sloopa
|
||||||
|
jmp .done
|
||||||
|
.sloopb
|
||||||
|
mov ecx,16
|
||||||
|
MMXStuff
|
||||||
|
add esi,32
|
||||||
|
add edi,32+320+32
|
||||||
|
dec dl
|
||||||
|
jnz .sloopb
|
||||||
|
emms
|
||||||
|
jmp .done
|
||||||
|
|
||||||
|
.smallscreen
|
||||||
|
add edi,60*320
|
||||||
|
cmp byte[MMXSupport],1
|
||||||
|
je near .ssloopb
|
||||||
|
.ssloopa
|
||||||
|
mov ecx,64
|
||||||
|
rep movsd
|
||||||
|
add esi,32
|
||||||
|
add edi,32*2
|
||||||
|
mov ecx,64
|
||||||
|
rep movsd
|
||||||
|
sub esi,256
|
||||||
|
add edi,32*2
|
||||||
|
mov ecx,64
|
||||||
|
rep movsd
|
||||||
|
add esi,32
|
||||||
|
add edi,32*2
|
||||||
|
dec dl
|
||||||
|
dec dl
|
||||||
|
jnz .ssloopa
|
||||||
|
jmp .done
|
||||||
|
.ssloopb
|
||||||
|
mov ecx,16
|
||||||
|
MMXStuff
|
||||||
|
add esi,32
|
||||||
|
add edi,32*2
|
||||||
|
mov ecx,16
|
||||||
|
MMXStuff
|
||||||
|
sub esi,256
|
||||||
|
add edi,32*2
|
||||||
|
mov ecx,16
|
||||||
|
MMXStuff
|
||||||
|
add esi,32
|
||||||
|
add edi,32*2
|
||||||
|
dec dl
|
||||||
|
dec dl
|
||||||
|
jnz near .ssloopb
|
||||||
|
emms
|
||||||
|
jmp .done
|
||||||
|
|
||||||
|
.done
|
||||||
pop es
|
pop es
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
copyvesa2320x480x8ng:
|
copyvesa2320x480x8ng:
|
||||||
mov ebx,1
|
mov ebx,1
|
||||||
.loopa
|
.loopa
|
||||||
@@ -2447,6 +2501,8 @@ NEWSYM copyvesa2320x480x16bgui
|
|||||||
mov dl,[resolutn]
|
mov dl,[resolutn]
|
||||||
dec dl
|
dec dl
|
||||||
dec dl
|
dec dl
|
||||||
|
cmp byte[smallscreenon],1
|
||||||
|
je near .smallscreen
|
||||||
cmp byte[scanlines],3
|
cmp byte[scanlines],3
|
||||||
je near .halfscanlines
|
je near .halfscanlines
|
||||||
cmp byte[scanlines],2
|
cmp byte[scanlines],2
|
||||||
@@ -2577,6 +2633,36 @@ NEWSYM copyvesa2320x480x16bgui
|
|||||||
jnz .loopabhq
|
jnz .loopabhq
|
||||||
pop es
|
pop es
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
.smallscreen
|
||||||
|
add edi,60*320*2
|
||||||
|
.ssloopa
|
||||||
|
mov ecx,256
|
||||||
|
call .ssloopa2
|
||||||
|
add esi,32
|
||||||
|
add edi,64*2*2
|
||||||
|
mov ecx,256
|
||||||
|
call .ssloopa2
|
||||||
|
sub esi,256
|
||||||
|
add edi,64*2*2
|
||||||
|
mov ecx,256
|
||||||
|
call .ssloopa2
|
||||||
|
add esi,32
|
||||||
|
add edi,64*2*2
|
||||||
|
dec dl
|
||||||
|
dec dl
|
||||||
|
jnz .ssloopa
|
||||||
|
pop es
|
||||||
|
ret
|
||||||
|
.ssloopa2
|
||||||
|
mov al,[esi]
|
||||||
|
inc esi
|
||||||
|
mov bx,[GUICPC+eax*2]
|
||||||
|
mov [es:edi],bx
|
||||||
|
add edi,2
|
||||||
|
dec ecx
|
||||||
|
jnz .ssloopa2
|
||||||
|
ret
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
NEWSYM ConvertToAFormat
|
NEWSYM ConvertToAFormat
|
||||||
@@ -2692,6 +2778,8 @@ NEWSYM copyvesa2320x480x16b
|
|||||||
mov dl,[resolutn]
|
mov dl,[resolutn]
|
||||||
dec dl
|
dec dl
|
||||||
dec dl
|
dec dl
|
||||||
|
cmp byte[smallscreenon],1
|
||||||
|
je near .smallscreen
|
||||||
cmp byte[scanlines],1
|
cmp byte[scanlines],1
|
||||||
je near .scanlines
|
je near .scanlines
|
||||||
cmp byte[scanlines],3
|
cmp byte[scanlines],3
|
||||||
@@ -2932,6 +3020,49 @@ NEWSYM copyvesa2320x480x16b
|
|||||||
jnz .mmxr2h2
|
jnz .mmxr2h2
|
||||||
jmp .returnbh2
|
jmp .returnbh2
|
||||||
|
|
||||||
|
.smallscreen
|
||||||
|
add edi,60*320*2
|
||||||
|
cmp byte[MMXSupport],1
|
||||||
|
je near .ssloopb
|
||||||
|
.ssloopa
|
||||||
|
mov ecx,64*2
|
||||||
|
rep movsd
|
||||||
|
add esi,32*2
|
||||||
|
add edi,32*2*2
|
||||||
|
mov ecx,64*2
|
||||||
|
rep movsd
|
||||||
|
sub esi,256*2
|
||||||
|
add edi,32*2*2
|
||||||
|
mov ecx,64*2
|
||||||
|
rep movsd
|
||||||
|
add esi,32*2
|
||||||
|
add edi,32*2*2
|
||||||
|
dec dl
|
||||||
|
dec dl
|
||||||
|
jnz .ssloopa
|
||||||
|
jmp .done
|
||||||
|
.ssloopb
|
||||||
|
mov ecx,16*2
|
||||||
|
MMXStuff
|
||||||
|
add esi,32*2
|
||||||
|
add edi,32*2*2
|
||||||
|
mov ecx,16*2
|
||||||
|
MMXStuff
|
||||||
|
sub esi,256*2
|
||||||
|
add edi,32*2*2
|
||||||
|
mov ecx,16*2
|
||||||
|
MMXStuff
|
||||||
|
add esi,32*2
|
||||||
|
add edi,32*2*2
|
||||||
|
dec dl
|
||||||
|
dec dl
|
||||||
|
jnz near .ssloopb
|
||||||
|
emms
|
||||||
|
jmp .done
|
||||||
|
.done
|
||||||
|
pop es
|
||||||
|
ret
|
||||||
|
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
; Copy VESA2 640x480x16b Copies buffer to 640x480x16bVB2
|
; Copy VESA2 640x480x16b Copies buffer to 640x480x16bVB2
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
|
|||||||
Reference in New Issue
Block a user