Added a new video mode to the DOS port.
This commit is contained in:
@@ -1013,43 +1013,44 @@ NEWSYM ClearScreen
|
||||
SECTION .data
|
||||
|
||||
; Total Number of Video Modes
|
||||
NEWSYM NumVideoModes, dd 12
|
||||
NEWSYM NumVideoModes, dd 13
|
||||
|
||||
; GUI Video Mode Names - Make sure that all names are of the same length
|
||||
; and end with a NULL terminator
|
||||
NEWSYM GUIVideoModeNames
|
||||
db '256X224X8B MODEQ',0 ; 0
|
||||
db '256X256X8B MODEQ',0 ; 1
|
||||
db '320X240X8B MODEX',0 ; 2
|
||||
db '640X480X16B VESA1',0 ; 3
|
||||
db '320X240X8B VESA2',0 ; 4
|
||||
db '320X240X16B VESA2',0 ; 5
|
||||
db '320X480X8B VESA2',0 ; 6
|
||||
db '320X480X16B VESA2',0 ; 7
|
||||
db '512X384X8B VESA2',0 ; 8
|
||||
db '512X384X16B VESA2',0 ; 9
|
||||
db '640X480X8B VESA2',0 ; 10
|
||||
db '640X480X16B VESA2',0 ; 11
|
||||
db '256X240X8B MODEQ',0 ; 1
|
||||
db '256X256X8B MODEQ',0 ; 2
|
||||
db '320X240X8B MODEX',0 ; 3
|
||||
db '640X480X16B VESA1',0 ; 4
|
||||
db '320X240X8B VESA2',0 ; 5
|
||||
db '320X240X16B VESA2',0 ; 6
|
||||
db '320X480X8B VESA2',0 ; 7
|
||||
db '320X480X16B VESA2',0 ; 8
|
||||
db '512X384X8B VESA2',0 ; 9
|
||||
db '512X384X16B VESA2',0 ; 10
|
||||
db '640X480X8B VESA2',0 ; 11
|
||||
db '640X480X16B VESA2',0 ; 12
|
||||
db ' ',0
|
||||
|
||||
; Video Mode Feature Availability (1 = Available, 0 = Not Available)
|
||||
; Left side starts with Video Mode 0
|
||||
NEWSYM GUI16VID, db 0,0,0,1,0,1,0,1,0,1,0,1,0 ; 16-bit mode
|
||||
NEWSYM GUINGVID, db 1,1,1,1,1,1,1,0,1,1,1,1,0 ; New Graphics Mode Available
|
||||
NEWSYM GUISLVID, db 0,0,0,1,0,0,1,1,0,0,1,1,0 ; Scanlines
|
||||
NEWSYM GUIINVID, db 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,1,0,0 ; Eagle
|
||||
NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,0,0,1,1,0 ; (Interp | Eagle)
|
||||
NEWSYM GUIFSVID, db 0,0,0,0,1,1,0,0,0,0,1,1,0 ; Full Screen
|
||||
NEWSYM GUISSVID, db 0,0,0,1,0,0,0,0,0,0,1,1,0 ; Small Screen
|
||||
NEWSYM GUITBVID, db 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,1,0,0,0,1,0 ; Half/Quarter Scanlines
|
||||
NEWSYM GUI2xVID, db 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 ; If Windows Full Screen
|
||||
NEWSYM GUII2VID, db 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,1,0 ; Interpolation
|
||||
NEWSYM GUIBIFIL, db 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 ; Triple Buffering (Win)
|
||||
NEWSYM GUI16VID, db 0,0,0,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,0,1,1,1,1,0 ; New Graphics Mode Available
|
||||
NEWSYM GUISLVID, db 0,0,0,0,1,0,0,1,1,0,0,1,1,0 ; Scanlines
|
||||
NEWSYM GUIINVID, db 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,1,0,0 ; Eagle
|
||||
NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,0,0,0,1,1,0 ; (Interp | Eagle)
|
||||
NEWSYM GUIFSVID, db 0,0,0,0,0,1,1,0,0,0,0,1,1,0 ; Full Screen
|
||||
NEWSYM GUISSVID, db 0,0,0,0,1,0,0,0,0,0,0,1,1,0 ; Small Screen
|
||||
NEWSYM GUITBVID, db 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,1,0,0,0,1,0 ; Half/Quarter Scanlines
|
||||
NEWSYM GUI2xVID, db 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 ; If Windows Full Screen
|
||||
NEWSYM GUII2VID, db 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,1,0 ; Interpolation
|
||||
NEWSYM GUIBIFIL, db 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 ; Triple Buffering (Win)
|
||||
SECTION .text
|
||||
|
||||
; ****************************
|
||||
|
||||
@@ -56,26 +56,28 @@ NEWSYM dosinitvideo
|
||||
cmp byte[cvidmode],0
|
||||
je near .initmodeq224
|
||||
cmp byte[cvidmode],1
|
||||
je near .initmodeq
|
||||
je near .initmodeq240
|
||||
cmp byte[cvidmode],2
|
||||
je near .initmodex
|
||||
je near .initmodeq
|
||||
cmp byte[cvidmode],3
|
||||
je near .initvesa12640x480x16
|
||||
je near .initmodex
|
||||
cmp byte[cvidmode],4
|
||||
je near .initvesa2320x240x8
|
||||
je near .initvesa12640x480x16
|
||||
cmp byte[cvidmode],5
|
||||
je near .initvesa2320x240x16
|
||||
je near .initvesa2320x240x8
|
||||
cmp byte[cvidmode],6
|
||||
je near .initvesa2320x480x8
|
||||
je near .initvesa2320x240x16
|
||||
cmp byte[cvidmode],7
|
||||
je near .initvesa2320x480x16
|
||||
je near .initvesa2320x480x8
|
||||
cmp byte[cvidmode],8
|
||||
je near .initvesa2512x384x8
|
||||
je near .initvesa2320x480x16
|
||||
cmp byte[cvidmode],9
|
||||
je near .initvesa2512x384x16
|
||||
je near .initvesa2512x384x8
|
||||
cmp byte[cvidmode],10
|
||||
je near .initvesa2640x480x8
|
||||
je near .initvesa2512x384x16
|
||||
cmp byte[cvidmode],11
|
||||
je near .initvesa2640x480x8
|
||||
cmp byte[cvidmode],12
|
||||
je near .initvesa2640x480x16
|
||||
ret
|
||||
|
||||
@@ -492,6 +494,135 @@ NEWSYM dosinitvideo
|
||||
|
||||
ret
|
||||
|
||||
;*******************************************************
|
||||
; InitModeQ240 Sets up 256x240 chained mode
|
||||
;*******************************************************
|
||||
|
||||
.initmodeq240
|
||||
mov byte[cbitmode],0
|
||||
|
||||
mov ax,0013h
|
||||
int 10h
|
||||
|
||||
; enable writes
|
||||
mov dx,03d4h
|
||||
mov ax,0011h
|
||||
out dx,ax
|
||||
inc dx
|
||||
in ax,dx
|
||||
and ax,007fh
|
||||
push ax
|
||||
mov dx,03d4h
|
||||
mov ax,0011h
|
||||
out dx,ax
|
||||
inc dx
|
||||
pop ax
|
||||
out dx,ax
|
||||
|
||||
; tweak regs
|
||||
mov dx,03c2h
|
||||
mov ax,00e3h
|
||||
out dx,ax
|
||||
|
||||
mov dx,03d4h
|
||||
mov ax,1
|
||||
out dx,ax
|
||||
inc dx
|
||||
mov ax,003fh
|
||||
out dx,ax
|
||||
|
||||
mov dx,03d4h
|
||||
mov ax,2
|
||||
out dx,ax
|
||||
inc dx
|
||||
mov ax,0040h
|
||||
out dx,ax
|
||||
|
||||
mov dx,03d4h
|
||||
mov ax,4
|
||||
out dx,ax
|
||||
inc dx
|
||||
mov ax,004ah
|
||||
out dx,ax
|
||||
|
||||
mov dx,03d4h
|
||||
mov ax,5
|
||||
out dx,ax
|
||||
inc dx
|
||||
mov ax,009ah
|
||||
out dx,ax
|
||||
|
||||
mov dx,03d4h
|
||||
mov ax,6
|
||||
out dx,ax
|
||||
inc dx
|
||||
mov ax,000dh
|
||||
out dx,ax
|
||||
|
||||
mov dx,03d4h
|
||||
mov ax,7
|
||||
out dx,ax
|
||||
inc dx
|
||||
mov ax,003eh
|
||||
out dx,ax
|
||||
|
||||
mov dx,03d4h
|
||||
mov ax,9
|
||||
out dx,ax
|
||||
inc dx
|
||||
mov ax,0041h
|
||||
out dx,ax
|
||||
|
||||
mov dx,03d4h
|
||||
mov ax,0010h
|
||||
out dx,ax
|
||||
inc dx
|
||||
mov ax,00eah
|
||||
out dx,ax
|
||||
|
||||
mov dx,03d4h
|
||||
mov ax,0011h
|
||||
out dx,ax
|
||||
inc dx
|
||||
mov ax,00ach
|
||||
out dx,ax
|
||||
|
||||
mov dx,03d4h
|
||||
mov ax,0012h
|
||||
out dx,ax
|
||||
inc dx
|
||||
mov ax,00dfh
|
||||
out dx,ax
|
||||
|
||||
mov dx,03d4h
|
||||
mov ax,0013h
|
||||
out dx,ax
|
||||
inc dx
|
||||
mov ax,0020h
|
||||
out dx,ax
|
||||
|
||||
mov dx,03d4h
|
||||
mov ax,0015h
|
||||
out dx,ax
|
||||
inc dx
|
||||
mov ax,00e7h
|
||||
out dx,ax
|
||||
|
||||
mov dx,03d4h
|
||||
mov ax,0016h
|
||||
out dx,ax
|
||||
inc dx
|
||||
mov ax,0006h
|
||||
out dx,ax
|
||||
|
||||
%ifdef __MSDOS__
|
||||
call cscopymodeq
|
||||
%endif
|
||||
|
||||
call makepal
|
||||
|
||||
ret
|
||||
|
||||
;*******************************************************
|
||||
; InitVESA2 320x240x8 Set up Linear 320x240x8b
|
||||
;*******************************************************
|
||||
|
||||
@@ -198,7 +198,7 @@ int pccmdline(void)
|
||||
{
|
||||
if(!hasroom) return 4;
|
||||
cvidmode=my_atoi(argv[p+1]);
|
||||
if(cvidmode > 11) return 13;
|
||||
if(cvidmode > 12) return 13;
|
||||
p++;
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user