Added full screen to 320x480 video modes in the DOS port.

This commit is contained in:
stainless
2001-11-04 05:27:31 +00:00
parent b55acfcc5f
commit d2b6c737e1
6 changed files with 83 additions and 139 deletions

View File

@@ -1047,7 +1047,6 @@ NEWSYM GUIINVID, db 0,0,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,0,0,1,0,0 ; Eagle
NEWSYM GUIIEVID, db 0,0,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,1,1,0,0,0,0,1,1,0 ; Full Screen
NEWSYM GUIWSVID, db 0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,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,0 ; Small Screen
NEWSYM GUITBVID, db 0,0,0,0,0,0,0,1,1,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,0,0,1,0 ; Half/Quarter Scanlines

View File

@@ -135,7 +135,7 @@ EXTSYM NumVideoModes
EXTSYM cfgvolume, MusicVol, DSPMem
EXTSYM NumInputDevices,GUIInputNames
EXTSYM GUIVideoModeNames
EXTSYM GUISLVID,GUIINVID,GUIEAVID,GUIIEVID,GUIFSVID,GUIWSVID,
EXTSYM GUISLVID,GUIINVID,GUIEAVID,GUIIEVID,GUIFSVID
EXTSYM GUISSVID,GUITBVID,GUIHSVID,GUI2xVID,GUII2VID,GUIM7VID
EXTSYM cfgsoundon,cfgSoundQuality,cfgStereoSound
EXTSYM convertnum,converthex

View File

@@ -1714,12 +1714,7 @@ DisplayGUIVideo:
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIFSVID+eax],0
je near .notext5
cmp byte[GUIWSVID+eax],0
je .fs
GUIOuttextwin2u 5,26,93,GUIVideoText5b,1
jmp .notext5
.fs
je .notext5
GUIOuttextwin2u 5,26,93,GUIVideoText5,1
.notext5
xor eax,eax
@@ -1815,12 +1810,7 @@ DisplayGUIVideo:
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIFSVID+eax],0
je near .notext5b
cmp byte[GUIWSVID+eax],0
je .fs2
GUIOuttextwin2 5,25,92,GUIVideoText5b
jmp .notext5b
.fs2
je .notext5b
GUIOuttextwin2 5,25,92,GUIVideoText5
.notext5b
xor eax,eax
@@ -2136,7 +2126,6 @@ GUIVideoTextbf db 'BILINEAR FILTER',0
GUIVideoText3 db 'INTERPOLATION',0 ; -y
GUIVideoText4 db 'EAGLE ENGINE',0 ; -y
GUIVideoText5 db 'FULL SCREEN',0 ; -c
GUIVideoText5b db 'WIDE SCREEN',0 ; -c
GUIVideoText6 db 'SMALL SCREEN',0 ; -c
GUIVideoText7 db 'TRIPLE BUFFERING',0 ; -c
GUIVideoText8b db 'HI-RESOLUTION MODE7',0 ; -c

View File

@@ -947,7 +947,6 @@ NEWSYM GUII2VID, db 0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Interpolation(w)
NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Eagle
NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (Interp | Eagle)
NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Full Screen
NEWSYM GUIWSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (Full Scr. | Wide Scr.)
NEWSYM GUISSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Small Screen
NEWSYM GUITBVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering
NEWSYM GUIHSVID, db 0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1 ; Half/Quarter Scanlines

View File

@@ -1076,7 +1076,7 @@ NEWSYM copyvesa2320x480x8b
dec dl
dec dl
cmp byte[ScreenScale],1
je near .widescreen
je near .fullscreen
cmp byte[scanlines],1
je near .scanlines
; cmp byte[CurrentGUIOn],1
@@ -1139,28 +1139,29 @@ NEWSYM copyvesa2320x480x8b
emms
jmp .done
.widescreen
add edi,60*320
sub edi,16
.wsloopa
mov ecx,32
call .wsloopb
add esi,32
add edi,16*2
mov ecx,32
call .wsloopb
.fullscreen
sub edi,32
cmp byte[scanlines],1
je .fsloopa2
.fsloopa
mov ecx,64
call .fsloopb
sub esi,256
add edi,16*2
mov ecx,32
call .wsloopb
mov ecx,64
call .fsloopb
add esi,32
add edi,16*2
dec dl
dec dl
jnz .wsloopa
jnz .fsloopa
jmp .done
.wsloopb
movsd
.fsloopa2
mov ecx,64
call .fsloopb
add esi,32
add edi,320
dec dl
jnz .fsloopa2
jmp .done
.fsloopb
movsd
dec esi
mov al,[esi]
@@ -1168,7 +1169,7 @@ NEWSYM copyvesa2320x480x8b
inc esi
inc edi
dec ecx
jnz .wsloopb
jnz .fsloopb
ret
.done
@@ -2565,86 +2566,75 @@ copyvesa2320x240x16bgui:
ret
NEWSYM copyvesa2320x240x16b
cmp byte[vesa2red10],1
jne .notbr
call ConvertToAFormat
.notbr
; cmp byte[vesa2red10],1
; jne .notbr
; call ConvertToAFormat
;.notbr
; je near copyvesa2320x240x16br
cmp byte[curblank],40h
jne .startcopy
ret
.startcopy
cmp byte[ScreenScale],1
je near .scalescreen
push es
mov ax,[vesa2selec]
mov es,ax
mov esi,[vidbuffer]
mov ebp,[vidbufferm]
mov edi,32*2 ; Draw @ Y from 9 to 247
mov edi,32*2
cmp word[resolutn],224
jne .res239
mov edi,8*320*2+32*2
.res239
add edi,[VidStartDraw]
add esi,16*2+256*2+32*2
add ebp,16*2+256*2+32*2
xor eax,eax
mov dl,[resolutn]
dec dl
dec dl
cmp byte[ScreenScale],1
je near .fullscreen
cmp byte[MMXSupport],1
je near .loopb
.loopa
mov ecx,128
mov ecx,64*2
rep movsd
add esi,64
add edi,128
add esi,32*2
add edi,64*2
dec dl
jnz .loopa
pop es
ret
jmp .done
.loopb
mov ecx,32
MMXStuff
add esi,64
add edi,128
add esi,32*2
add edi,64*2
dec dl
jnz .loopb
emms
pop es
ret
.scalescreen
push es
mov ax,[vesa2selec]
mov es,ax
mov esi,[vidbuffer]
xor edi,edi
cmp word[resolutn],224
jne .res239b
mov edi,8*320*2
.res239b
add edi,[VidStartDraw]
add esi,16*2+256*2+32*2
xor eax,eax
mov dl,[resolutn]
dec dl
dec dl
.loopab
jmp .done
.fullscreen
sub edi,32*2
.fsloopa
mov ecx,64
.loopbb
mov eax,[esi]
mov [es:edi],ax
mov [es:edi+2],eax
mov eax,[esi+4]
mov [es:edi+6],eax
add esi,8
add edi,10
dec ecx
jnz .loopbb
add esi,64
jmp .fsloopb
.fsloopa2
add esi,32*2
dec dl
jnz .loopab
jnz .fsloopa
jmp .done
.fsloopb
movsd
movsd
sub esi,2
mov ax,[esi]
mov [es:edi],ax
add esi,2
add edi,2
dec ecx
jnz .fsloopb
jmp .fsloopa2
.done
pop es
ret
@@ -2943,7 +2933,7 @@ NEWSYM copyvesa2320x480x16b
dec dl
dec dl
cmp byte[ScreenScale],1
je near .widescreen
je near .fullscreen
cmp byte[scanlines],1
je near .scanlines
cmp byte[scanlines],3
@@ -3184,32 +3174,29 @@ NEWSYM copyvesa2320x480x16b
jnz .mmxr2h2
jmp .returnbh2
.widescreen
add edi,60*320*2
sub edi,16*2
cmp byte[MMXSupport],1
je near .wsloopb
.wsloopa
mov ecx,32
call .wsloopa2
add esi,32*2
add edi,16*2*2
mov ecx,32
call .wsloopa2
.fullscreen
sub edi,32*2
cmp byte[scanlines],1
je .fsloopa2
.fsloopa
mov ecx,64
call .fsloopb
sub esi,256*2
add edi,16*2*2
mov ecx,32
call .wsloopa2
mov ecx,64
call .fsloopb
add esi,32*2
add edi,16*2*2
dec dl
jnz .fsloopa
jmp .done
.fsloopa2
mov ecx,64
call .fsloopb
add esi,32*2
add edi,320*2
dec dl
jnz .wsloopa
pop es
ret
.wsloopa2
movsd
movsd
jnz .fsloopa2
jmp .done
.fsloopb
movsd
movsd
sub esi,2
@@ -3218,41 +3205,12 @@ NEWSYM copyvesa2320x480x16b
add esi,2
add edi,2
dec ecx
jnz .wsloopa2
jnz .fsloopb
ret
.wsloopb
mov ecx,32
call .wsloopb2
add esi,32*2
add edi,16*2*2
mov ecx,32
call .wsloopb2
sub esi,256*2
add edi,16*2*2
mov ecx,32
call .wsloopb2
add esi,32*2
add edi,16*2*2
dec dl
dec dl
jnz .wsloopb
.done
pop es
ret
.wsloopb2
movq mm0,[esi]
movq [es:edi],mm0
movq mm1,[esi+8]
movq [es:edi+8],mm1
add esi,14
add edi,16
mov ax,[esi]
mov [es:edi],ax
add esi,2
add edi,2
dec ecx
jnz .wsloopb2
emms
ret
;*******************************************************
; Copy VESA2 640x480x16b Copies buffer to 640x480x16bVB2

View File

@@ -1246,7 +1246,6 @@ NEWSYM GUII2VID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,
NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Eagle
NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (Interp | Eagle)
NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Full Screen
NEWSYM GUIWSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (Full Scr. | Wide Scr.)
NEWSYM GUISSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Small Screen
NEWSYM GUITBVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering
NEWSYM GUIHSVID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1 ; Half/Quarter Scanlines