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 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 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 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 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 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 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 cfgvolume, MusicVol, DSPMem
EXTSYM NumInputDevices,GUIInputNames EXTSYM NumInputDevices,GUIInputNames
EXTSYM GUIVideoModeNames EXTSYM GUIVideoModeNames
EXTSYM GUISLVID,GUIINVID,GUIEAVID,GUIIEVID,GUIFSVID,GUIWSVID, EXTSYM GUISLVID,GUIINVID,GUIEAVID,GUIIEVID,GUIFSVID
EXTSYM GUISSVID,GUITBVID,GUIHSVID,GUI2xVID,GUII2VID,GUIM7VID EXTSYM GUISSVID,GUITBVID,GUIHSVID,GUI2xVID,GUII2VID,GUIM7VID
EXTSYM cfgsoundon,cfgSoundQuality,cfgStereoSound EXTSYM cfgsoundon,cfgSoundQuality,cfgStereoSound
EXTSYM convertnum,converthex EXTSYM convertnum,converthex

View File

@@ -1714,12 +1714,7 @@ DisplayGUIVideo:
xor eax,eax xor eax,eax
mov al,[cvidmode] mov al,[cvidmode]
cmp byte[GUIFSVID+eax],0 cmp byte[GUIFSVID+eax],0
je near .notext5 je .notext5
cmp byte[GUIWSVID+eax],0
je .fs
GUIOuttextwin2u 5,26,93,GUIVideoText5b,1
jmp .notext5
.fs
GUIOuttextwin2u 5,26,93,GUIVideoText5,1 GUIOuttextwin2u 5,26,93,GUIVideoText5,1
.notext5 .notext5
xor eax,eax xor eax,eax
@@ -1815,12 +1810,7 @@ DisplayGUIVideo:
xor eax,eax xor eax,eax
mov al,[cvidmode] mov al,[cvidmode]
cmp byte[GUIFSVID+eax],0 cmp byte[GUIFSVID+eax],0
je near .notext5b je .notext5b
cmp byte[GUIWSVID+eax],0
je .fs2
GUIOuttextwin2 5,25,92,GUIVideoText5b
jmp .notext5b
.fs2
GUIOuttextwin2 5,25,92,GUIVideoText5 GUIOuttextwin2 5,25,92,GUIVideoText5
.notext5b .notext5b
xor eax,eax xor eax,eax
@@ -2136,7 +2126,6 @@ GUIVideoTextbf db 'BILINEAR FILTER',0
GUIVideoText3 db 'INTERPOLATION',0 ; -y GUIVideoText3 db 'INTERPOLATION',0 ; -y
GUIVideoText4 db 'EAGLE ENGINE',0 ; -y GUIVideoText4 db 'EAGLE ENGINE',0 ; -y
GUIVideoText5 db 'FULL SCREEN',0 ; -c GUIVideoText5 db 'FULL SCREEN',0 ; -c
GUIVideoText5b db 'WIDE SCREEN',0 ; -c
GUIVideoText6 db 'SMALL SCREEN',0 ; -c GUIVideoText6 db 'SMALL SCREEN',0 ; -c
GUIVideoText7 db 'TRIPLE BUFFERING',0 ; -c GUIVideoText7 db 'TRIPLE BUFFERING',0 ; -c
GUIVideoText8b db 'HI-RESOLUTION MODE7',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 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 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 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 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 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 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
dec dl dec dl
cmp byte[ScreenScale],1 cmp byte[ScreenScale],1
je near .widescreen je near .fullscreen
cmp byte[scanlines],1 cmp byte[scanlines],1
je near .scanlines je near .scanlines
; cmp byte[CurrentGUIOn],1 ; cmp byte[CurrentGUIOn],1
@@ -1139,28 +1139,29 @@ NEWSYM copyvesa2320x480x8b
emms emms
jmp .done jmp .done
.widescreen .fullscreen
add edi,60*320 sub edi,32
sub edi,16 cmp byte[scanlines],1
.wsloopa je .fsloopa2
mov ecx,32 .fsloopa
call .wsloopb mov ecx,64
add esi,32 call .fsloopb
add edi,16*2
mov ecx,32
call .wsloopb
sub esi,256 sub esi,256
add edi,16*2 mov ecx,64
mov ecx,32 call .fsloopb
call .wsloopb
add esi,32 add esi,32
add edi,16*2
dec dl dec dl
dec dl jnz .fsloopa
jnz .wsloopa
jmp .done jmp .done
.wsloopb .fsloopa2
movsd mov ecx,64
call .fsloopb
add esi,32
add edi,320
dec dl
jnz .fsloopa2
jmp .done
.fsloopb
movsd movsd
dec esi dec esi
mov al,[esi] mov al,[esi]
@@ -1168,7 +1169,7 @@ NEWSYM copyvesa2320x480x8b
inc esi inc esi
inc edi inc edi
dec ecx dec ecx
jnz .wsloopb jnz .fsloopb
ret ret
.done .done
@@ -2565,86 +2566,75 @@ copyvesa2320x240x16bgui:
ret ret
NEWSYM copyvesa2320x240x16b NEWSYM copyvesa2320x240x16b
cmp byte[vesa2red10],1 ; cmp byte[vesa2red10],1
jne .notbr ; jne .notbr
call ConvertToAFormat ; call ConvertToAFormat
.notbr ;.notbr
; je near copyvesa2320x240x16br ; je near copyvesa2320x240x16br
cmp byte[curblank],40h cmp byte[curblank],40h
jne .startcopy jne .startcopy
ret ret
.startcopy .startcopy
cmp byte[ScreenScale],1
je near .scalescreen
push es push es
mov ax,[vesa2selec] mov ax,[vesa2selec]
mov es,ax mov es,ax
mov esi,[vidbuffer] mov esi,[vidbuffer]
mov ebp,[vidbufferm] mov edi,32*2
mov edi,32*2 ; Draw @ Y from 9 to 247
cmp word[resolutn],224 cmp word[resolutn],224
jne .res239 jne .res239
mov edi,8*320*2+32*2 mov edi,8*320*2+32*2
.res239 .res239
add edi,[VidStartDraw] add edi,[VidStartDraw]
add esi,16*2+256*2+32*2 add esi,16*2+256*2+32*2
add ebp,16*2+256*2+32*2
xor eax,eax xor eax,eax
mov dl,[resolutn] mov dl,[resolutn]
dec dl dec dl
dec dl dec dl
cmp byte[ScreenScale],1
je near .fullscreen
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je near .loopb je near .loopb
.loopa .loopa
mov ecx,128 mov ecx,64*2
rep movsd rep movsd
add esi,64 add esi,32*2
add edi,128 add edi,64*2
dec dl dec dl
jnz .loopa jnz .loopa
pop es jmp .done
ret
.loopb .loopb
mov ecx,32 mov ecx,32
MMXStuff MMXStuff
add esi,64 add esi,32*2
add edi,128 add edi,64*2
dec dl dec dl
jnz .loopb jnz .loopb
emms emms
pop es jmp .done
ret
.scalescreen .fullscreen
push es sub edi,32*2
mov ax,[vesa2selec] .fsloopa
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
mov ecx,64 mov ecx,64
.loopbb jmp .fsloopb
mov eax,[esi] .fsloopa2
mov [es:edi],ax add esi,32*2
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
dec dl 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 pop es
ret ret
@@ -2943,7 +2933,7 @@ NEWSYM copyvesa2320x480x16b
dec dl dec dl
dec dl dec dl
cmp byte[ScreenScale],1 cmp byte[ScreenScale],1
je near .widescreen je near .fullscreen
cmp byte[scanlines],1 cmp byte[scanlines],1
je near .scanlines je near .scanlines
cmp byte[scanlines],3 cmp byte[scanlines],3
@@ -3184,32 +3174,29 @@ NEWSYM copyvesa2320x480x16b
jnz .mmxr2h2 jnz .mmxr2h2
jmp .returnbh2 jmp .returnbh2
.widescreen .fullscreen
add edi,60*320*2 sub edi,32*2
sub edi,16*2 cmp byte[scanlines],1
cmp byte[MMXSupport],1 je .fsloopa2
je near .wsloopb .fsloopa
.wsloopa mov ecx,64
mov ecx,32 call .fsloopb
call .wsloopa2
add esi,32*2
add edi,16*2*2
mov ecx,32
call .wsloopa2
sub esi,256*2 sub esi,256*2
add edi,16*2*2 mov ecx,64
mov ecx,32 call .fsloopb
call .wsloopa2
add esi,32*2 add esi,32*2
add edi,16*2*2
dec dl dec dl
jnz .fsloopa
jmp .done
.fsloopa2
mov ecx,64
call .fsloopb
add esi,32*2
add edi,320*2
dec dl dec dl
jnz .wsloopa jnz .fsloopa2
pop es jmp .done
ret .fsloopb
.wsloopa2
movsd
movsd
movsd movsd
movsd movsd
sub esi,2 sub esi,2
@@ -3218,41 +3205,12 @@ NEWSYM copyvesa2320x480x16b
add esi,2 add esi,2
add edi,2 add edi,2
dec ecx dec ecx
jnz .wsloopa2 jnz .fsloopb
ret ret
.wsloopb
mov ecx,32 .done
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
pop es pop es
ret 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 ; 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 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 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 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 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 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 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