Cleaned up 320x480x8B VESA2 blitter in the DOS port.

This commit is contained in:
stainless
2001-10-09 01:42:46 +00:00
parent 6da94406bc
commit 38e5d91e11
2 changed files with 179 additions and 48 deletions

View File

@@ -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

View File

@@ -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
;******************************************************* ;*******************************************************