A bunch of stuff that I'm too lazy to list here.

This commit is contained in:
stainless
2001-11-07 02:31:11 +00:00
parent af22ab615a
commit f5d15a49fa
10 changed files with 467 additions and 52 deletions

View File

@@ -619,7 +619,7 @@ db 'VideoModeLin = %U',13,10
db '',13,10 db '',13,10
%endif %endif
%ifdef __MSDOS__ %ifdef __MSDOS__
db '; Video Mode, 0 - 16',13,10 db '; Video Mode, 0 - 18',13,10
db '; 0 = 256x224x8B (MODEQ) 1 = 256x240x8B (MODEQ)',13,10 db '; 0 = 256x224x8B (MODEQ) 1 = 256x240x8B (MODEQ)',13,10
db '; 2 = 256x256x8B (MODEQ) 3 = 320x224x8B (MODEX)',13,10 db '; 2 = 256x256x8B (MODEQ) 3 = 320x224x8B (MODEX)',13,10
db '; 4 = 320x240x8B (MODEX) 5 = 320x256x8B (MODEX)',13,10 db '; 4 = 320x240x8B (MODEX) 5 = 320x256x8B (MODEX)',13,10
@@ -628,7 +628,8 @@ db '; 8 = 320x240x16B (VESA2) 9 = 320x480x8B (VESA2)',13,10
db '; 10 = 320x480x16B (VESA2) 11 = 512x384x8B (VESA2)',13,10 db '; 10 = 320x480x16B (VESA2) 11 = 512x384x8B (VESA2)',13,10
db '; 12 = 512x384x16B (VESA2) 13 = 640x400x8B (VESA2)',13,10 db '; 12 = 512x384x16B (VESA2) 13 = 640x400x8B (VESA2)',13,10
db '; 14 = 640x400x16B (VESA2) 15 = 640x480x8B (VESA2)',13,10 db '; 14 = 640x400x16B (VESA2) 15 = 640x480x8B (VESA2)',13,10
db '; 16 = 640x480x16B (VESA2)',13,10 db '; 16 = 640x480x16B (VESA2) 17 = 800x600x8B (VESA2)',13,10
db '; 18 = 800x600x16B (VESA2)',13,10
db '',13,10 db '',13,10
db 'VideoModeDos = %U',13,10 db 'VideoModeDos = %U',13,10
db '',13,10 db '',13,10
@@ -638,9 +639,9 @@ db '',13,10
db 'Sound = %V',13,10 db 'Sound = %V',13,10
db '',13,10 db '',13,10
db '; Sound Sampling Rate',13,10 db '; Sound Sampling Rate',13,10
db '; 0 = 8000Hz, 1 = 11025Hz, 2 = 22050Hz, 3 = 44100Hz',13,10 db '; 0 = 8,000 Hz, 1 = 11,025 Hz, 2 = 22,050 Hz',13,10
db '; 4 = 16000Hz, 5 = 32000Hz',13,10 db '; 3 = 44,100 Hz, 4 = 16,000 Hz, 5 = 32,000 Hz',13,10
db '',13,10 db '',13,10
db 'SoundRate = %W',13,10 db 'SoundRate = %W',13,10
db '',13,10 db '',13,10
db '; Stereo (0 = off, 1 = on)',13,10 db '; Stereo (0 = off, 1 = on)',13,10

View File

@@ -1014,7 +1014,7 @@ NEWSYM ClearScreen
SECTION .data SECTION .data
; Total Number of Video Modes ; Total Number of Video Modes
NEWSYM NumVideoModes, dd 17 NEWSYM NumVideoModes, dd 19
; GUI Video Mode Names - Make sure that all names are of the same length ; GUI Video Mode Names - Make sure that all names are of the same length
; and end with a NULL terminator ; and end with a NULL terminator
@@ -1036,26 +1036,29 @@ db '640X400X8B VESA2',0 ; 13
db '640X400X16B VESA2',0 ; 14 db '640X400X16B VESA2',0 ; 14
db '640X480X8B VESA2',0 ; 15 db '640X480X8B VESA2',0 ; 15
db '640X480X16B VESA2',0 ; 16 db '640X480X16B VESA2',0 ; 16
db '800X600X8B VESA2',0 ; 17
db '800X600X16B VESA2',0 ; 18
db ' ',0 db ' ',0
; Video Mode Feature Availability (1 = Available, 0 = Not Available) ; Video Mode Feature Availability (1 = Available, 0 = Not Available)
; Left side starts with Video Mode 0 ; Left side starts with Video Mode 0
NEWSYM GUI16VID, db 0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0 ; 16-bit mode NEWSYM GUI16VID, db 0,0,0,0,0,0,1,0,1,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,1,1,0,1,1,1,1,1,1,0 ; New Graphics Mode Available NEWSYM GUINGVID, db 1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0 ; New Graphics Mode Available
NEWSYM GUISLVID, db 0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,0 ; Scanlines NEWSYM GUISLVID, db 0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0 ; Scanlines
NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0 ; Interpolation NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,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,0,0 ; Eagle
NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0 ; (Interp | Eagle) NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,0,0 ; (Interp | Eagle)
NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0 ; Full Screen NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0 ; Full 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 GUIWSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0 ; (Full Scr. | Wide Scr.)
NEWSYM GUITBVID, db 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0 ; Triple Buffering NEWSYM GUISSVID, db 0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,0 ; Small Screen
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 GUITBVID, db 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0 ; Triple Buffering
NEWSYM GUI2xVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; 2xSaI/Super Eagle Engines NEWSYM GUIHSVID, db 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0 ; Half/Quarter Scanlines
NEWSYM GUIWFVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; If Windows Full Screen NEWSYM GUI2xVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 ; 2xSaI/Super Eagle Engines
NEWSYM GUII2VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Super 2xSAI Engine NEWSYM GUIWFVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; If Windows Full Screen
NEWSYM GUIM7VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; Hi-Resolution Mode 7 NEWSYM GUII2VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Super 2xSAI Engine
NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Bilinear Filtering NEWSYM GUIM7VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 ; Hi-Resolution Mode 7
NEWSYM GUITBWVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering (Win) NEWSYM GUIBIFIL, db 0,0,0,0,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,0,0,0,0 ; Triple Buffering (Win)
SECTION .text SECTION .text
; **************************** ; ****************************

View File

@@ -89,6 +89,10 @@ NEWSYM dosinitvideo
je near .initvesa2640x480x8 je near .initvesa2640x480x8
cmp byte[cvidmode],16 cmp byte[cvidmode],16
je near .initvesa2640x480x16 je near .initvesa2640x480x16
cmp byte[cvidmode],17
je near .initvesa2800x600x8
cmp byte[cvidmode],18
je near .initvesa2800x600x16
ret ret
%include "dos/vga.inc" %include "dos/vga.inc"
@@ -299,6 +303,66 @@ NEWSYM dosinitvideo
pop es pop es
ret ret
;*******************************************************
; InitVESA2 800x600x8 Set up Linear 800x600x8b
;*******************************************************
.initvesa2800x600x8
mov byte[res640],1
mov byte[res480],1
mov word[vesa2_x],800
mov word[vesa2_y],600
mov byte[vesa2_bits],8
call InitVesa2
cmp byte[videotroub],1
jne .notrouble11
ret
.notrouble11
call makepal
; clear screen (800*600 bytes)
push es
mov ax,[vesa2selec]
mov es,ax
mov edi,0
mov ecx,800*600
.looph2
mov byte[es:edi],0
inc edi
dec ecx
jnz .looph2
pop es
ret
;*******************************************************
; InitVESA2 800x600x16 Set up Linear 800x600x16b
;*******************************************************
.initvesa2800x600x16
mov byte[res640],1
mov byte[res480],1
mov byte[cbitmode],1
mov word[vesa2_x],800
mov word[vesa2_y],600
mov byte[vesa2_bits],16
call InitVesa2
cmp byte[videotroub],1
jne .notrouble12
ret
.notrouble12
; clear screen (800*600*2 bytes)
push es
mov ax,[vesa2selec]
mov es,ax
mov edi,0
mov ecx,800*600*2
.looph3
mov byte[es:edi],0
inc edi
dec ecx
jnz .looph3
pop es
ret
;******************************************************* ;*******************************************************
; InitVESA2 320x480x8 Set up Linear 320x480x8b ; InitVESA2 320x480x8 Set up Linear 320x480x8b
;******************************************************* ;*******************************************************

View File

@@ -261,7 +261,9 @@ int pccmdline(void)
} }
case 'n': case 'n':
{ {
scanlines=1; if(!hasroom) return 4;
scanlines=my_atoi(argv[p+1]);
p++;
break; break;
} }
case 's': case 's':

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 EXTSYM GUISLVID,GUIINVID,GUIEAVID,GUIIEVID,GUIFSVID,GUIWSVID
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,7 +1714,12 @@ DisplayGUIVideo:
xor eax,eax xor eax,eax
mov al,[cvidmode] mov al,[cvidmode]
cmp byte[GUIFSVID+eax],0 cmp byte[GUIFSVID+eax],0
je .notext5 je near .notext5
cmp byte[GUIWSVID+eax],0
je .notext4a
GUIOuttextwin2u 5,26,93,GUIVideoText5b,1
jmp .notext5
.notext4a
GUIOuttextwin2u 5,26,93,GUIVideoText5,1 GUIOuttextwin2u 5,26,93,GUIVideoText5,1
.notext5 .notext5
xor eax,eax xor eax,eax
@@ -1810,7 +1815,12 @@ DisplayGUIVideo:
xor eax,eax xor eax,eax
mov al,[cvidmode] mov al,[cvidmode]
cmp byte[GUIFSVID+eax],0 cmp byte[GUIFSVID+eax],0
je .notext5b je near .notext5b
cmp byte[GUIWSVID+eax],0
je .notext4ba
GUIOuttextwin2 5,25,92,GUIVideoText5b
jmp .notext5b
.notext4ba
GUIOuttextwin2 5,25,92,GUIVideoText5 GUIOuttextwin2 5,25,92,GUIVideoText5
.notext5b .notext5b
xor eax,eax xor eax,eax
@@ -2126,6 +2136,7 @@ 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,6 +947,7 @@ 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

@@ -1429,35 +1429,35 @@ SECTION .data
.noparams db 'Usage : ZSNES [-d,-f #, ... ] <filename.SMC>',13,10 .noparams db 'Usage : ZSNES [-d,-f #, ... ] <filename.SMC>',13,10
db ' Eg : ZSNES -s -r 2 game.smc',13,10,13,10 db ' Eg : ZSNES -s -r 2 game.smc',13,10,13,10
%endif %endif
db ' -0 Disable Color 0 modification in 256 color modes',13,10 db ' -0 Disable Color 0 modification in 8-bit modes',13,10
db ' -1 #/-2 # Select Player 1/2 Input :',13,10 db ' -1 #/-2 # Select Player 1/2 Input :',13,10
db ' 0 = None 1 = Keyboard 2 = Joystick 3 = Gamepad',13,10 db ' 0 = None 1 = Keyboard 2 = Joystick 3 = Gamepad',13,10
db ' 4 = 4Button 5 = 6Button 6 = Sidewinder ',13,10 db ' 4 = 4Button 5 = 6Button 6 = Sidewinder ',13,10
db ' -7 Disable SPC700 speedhack',13,10 db ' -7 Disable SPC700 speedhack',13,10
db ' -8 Force 8-bit sound',13,10 db ' -8 Force 8-bit sound',13,10
db ' -9 Off by 1 line fix',13,10 db ' -9 Off by 1 line fix',13,10
db ' -a Turn on auto frame skip',13,10 db ' -a Enable automatic frame rate',13,10
%ifdef __LINUX__ %ifdef __LINUX__
db ' -cs Scale to fit screen (320x240 VESA2/640x480 VESA2)',13,10 db ' -cs Enable full/wide screen (when available)',13,10
%else %else
db ' -c Scale to fit screen (320x240 VESA2/640x480 VESA2)',13,10 db ' -c Enable full screen (when available)',13,10
%endif %endif
db ' -cb Remove Background Color in 256 color video modes',13,10 db ' -cb Remove Background Color in 256 color video modes',13,10
db ' -cc No image scale and center image in screen (640x480 only)',13,10 db ' -cc Enable small screen (when available)',13,10
; debugger not available in linux version ; debugger not available in linux version
; because of bios interrupt code ; because of bios interrupt code
%ifndef __LINUX__ %ifndef __LINUX__
db ' -d Start with debugger',13,10 db ' -d Start with debugger enabled',13,10
%endif %endif
db ' -dd Disable sound DSP emulation',13,10 db ' -dd Disable sound DSP emulation',13,10
%ifndef __LINUX__ %ifndef __LINUX__
db ' -e Skip enter key press at the beginning',13,10 ;db ' -e Skip enter key press at the beginning',13,10
%endif %endif
db ' -f # Turn on frame skip [0..9]',13,10 db ' -f # Enable fixed frame rate [0...9]',13,10
db ' -g # Set Gamma Correction [0...15, 0 = 1.0, 15 = 2.0]',13,10
%ifndef __LINUX__ %ifndef __LINUX__
db ' - Only works properly in 256 color video modes',13,10 db ' -g # Specify gamma correction value [0...15]',13,10
db ' (Only works properly in 8-bit modes)',13,10
%endif %endif
db ' -h Force HiROM',13,10 db ' -h Force HiROM',13,10
db ' -i Uninterleave ROM Image',13,10 db ' -i Uninterleave ROM Image',13,10
@@ -1466,13 +1466,18 @@ SECTION .data
db 'Press any key to continue.',0 db 'Press any key to continue.',0
.noparms2 db 13,' -l Force LoROM ',13,10 .noparms2 db 13,' -l Force LoROM ',13,10
db ' -m Disable GUI',13,10 db ' -m Disable GUI',13,10
db ' -n Turn scanlines on (640x480 only)',13,10 %ifdef __LINUX__
db ' -n Enable full scanlines (when available)',13,10
%else
db ' -n # Enable scanlines (when available)',13,10
db ' Where # is: 1 = full, 2 = 25%, 3 = 50%',13,10
%endif
%ifdef __LINUX__ %ifdef __LINUX__
db ' -of Enable FPU copy ',13,10 db ' -of Enable FPU copy ',13,10
%else %else
; db ' -o Enable FPU copy ',13,10 ; db ' -o Enable FPU copy ',13,10
%endif %endif
db ' -om Enable MMX copy',13,10 db ' -om Enable MMX support (when available)',13,10
db ' -p # Percentage of instructions to execute [50..120]',13,10 db ' -p # Percentage of instructions to execute [50..120]',13,10
db ' -r # Set Sampling Sound Blaster Sampling Rate & Bit :',13,10 db ' -r # Set Sampling Sound Blaster Sampling Rate & Bit :',13,10
db ' 0 = 8000Hz 1 = 11025Hz 2 = 22050Hz 3 = 44100Hz',13,10 db ' 0 = 8000Hz 1 = 11025Hz 2 = 22050Hz 3 = 44100Hz',13,10
@@ -1496,15 +1501,16 @@ SECTION .data
db ' 10 = 320x480x16B (VESA2) 11 = 512x384x8B (VESA2)',13,10 db ' 10 = 320x480x16B (VESA2) 11 = 512x384x8B (VESA2)',13,10
db ' 12 = 512x384x16B (VESA2) 13 = 640x400x8B (VESA2)',13,10 db ' 12 = 512x384x16B (VESA2) 13 = 640x400x8B (VESA2)',13,10
db ' 14 = 640x400x16B (VESA2) 15 = 640x480x8B (VESA2)',13,10 db ' 14 = 640x400x16B (VESA2) 15 = 640x480x8B (VESA2)',13,10
db ' 16 = 640x480x16B (VESA2)',13,10 db ' 16 = 640x480x16B (VESA2) 17 = 800x600x8B (VESA2)',13,10
db ' 18 = 800x600x16B (VESA2)',13,10
%endif %endif
db ' -w Enable VSync (disables Triple Buffering)',13,10 db ' -w Enable vsync (disables triple buffering)',13,10
db 'Press any key to continue.',0 db 'Press any key to continue.',0
.noparms3 db 13,' -y Enable EAGLE (640x480x8B only) or Interpolation (640x480x16B only)',13,10 .noparms3 db 13,' -y Enable EAGLE (640x480x8B only) or Interpolation (640x480x16B only)',13,10
db ' -z Enable Stereo Sound',13,10
%ifdef __MSDOS__ %ifdef __MSDOS__
db ' -3 Enable Triple Buffering (disables VSync)',13,10 db ' -3 Enable triple buffering (disables vsync)',13,10
%endif %endif
db ' -z Enable Stereo Sound',13,10
db '',13,10 db '',13,10
db ' File Formats Supported by GUI : .SMC,.SFC,.SWC,.FIG,.058,.078,.1,.USA,.JAP',13,10 db ' File Formats Supported by GUI : .SMC,.SFC,.SWC,.FIG,.058,.078,.1,.USA,.JAP',13,10
%ifdef __MSDOS__ %ifdef __MSDOS__

View File

@@ -226,11 +226,11 @@ PreTripleBuffer:
SECTION .data SECTION .data
; Please don't break this again. :) ; Please don't break this again. :)
VidModeSize dd 0,0,0,0,0,0,0,320*240,320*240*2,320*480,320*480*2 VidModeSize dd 0,0,0,0,0,0,0,320*240,320*240*2,320*480,320*480*2,512*384
dd 512*384,512*384*2,640*400,640*400*2,640*480,640*480*2 dd 512*384*2,640*400,640*400*2,640*480,640*480*2,800*600,800*600*2
VidModeLine dd 0,0,0,0,0,0,0,240,240,480,480,384,384,400,400,480,480 VidModeLine dd 0,0,0,0,0,0,0,240,240,480,480,384,384,400,400,480,480,600,600
NEWSYM VidStartDraw, dd 0 NEWSYM VidStartDraw, dd 0
VidModeComp db 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1 VidModeComp db 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1
CVidStartAd db 0 CVidStartAd db 0
ApplyStart db 4 ApplyStart db 4
@@ -298,6 +298,10 @@ ScreenShow:
je near copyvesa2640x480x8b je near copyvesa2640x480x8b
cmp byte[cvidmode],16 cmp byte[cvidmode],16
je near copyvesa2640x480x16b je near copyvesa2640x480x16b
cmp byte[cvidmode],17
je near copyvesa2800x600x8b
cmp byte[cvidmode],18
je near copyvesa2800x600x16b
cmp byte[curblank],40h cmp byte[curblank],40h
je .startcopy je .startcopy
inc byte[curfps2] inc byte[curfps2]
@@ -349,6 +353,10 @@ ScreenShowGUI:
je near copyvesa2640x480x8bgui je near copyvesa2640x480x8bgui
cmp byte[cvidmode],16 cmp byte[cvidmode],16
je near copyvesa2640x480x16bgui je near copyvesa2640x480x16bgui
cmp byte[cvidmode],17
je near copyvesa2800x600x8b
cmp byte[cvidmode],18
je near copyvesa2800x600x16b
jmp copymodeq256 jmp copymodeq256
%endif %endif
@@ -987,7 +995,7 @@ NEWSYM copyvesa2320x240x8b
mov ax,[vesa2selec] mov ax,[vesa2selec]
mov es,ax mov es,ax
mov esi,[vidbuffer] mov esi,[vidbuffer]
mov edi,32 mov edi,320+32
cmp word[resolutn],224 cmp word[resolutn],224
jne .res239 jne .res239
add edi,8*320 add edi,8*320
@@ -1067,7 +1075,7 @@ NEWSYM copyvesa2320x480x8b
mov ax,[vesa2selec] mov ax,[vesa2selec]
mov es,ax mov es,ax
mov esi,[vidbuffer] mov esi,[vidbuffer]
mov edi,32 mov edi,320*2+32
cmp word[resolutn],224 cmp word[resolutn],224
jne .res239 jne .res239
add edi,8*320 add edi,8*320
@@ -1270,6 +1278,290 @@ NEWSYM copyvesa2320x480x8b
; jmp .returnloop ; jmp .returnloop
;*******************************************************
; Copy VESA2 800x600x8b Copies buffer to 800x600x8bVBE2
;*******************************************************
NEWSYM copyvesa2800x600x8b
cmp byte[curblank],40h
jne .startcopy
ret
.startcopy
push es
mov ax,[vesa2selec]
mov es,ax
mov esi,[vidbuffer]
mov edi,60*800+144
cmp word[resolutn],224
jne .res239
add edi,8*800
.res239
add edi,[VidStartDraw]
add esi,16+256+16+16
xor eax,eax
mov dl,[resolutn]
dec dl
dec dl
cmp byte[ScreenScale],1
je near .fullscreen
cmp byte[smallscreenon],1
je near .smallscreen
cmp byte[scanlines],1
je .loopa2
.loopa
mov ecx,256/2
call .loopa3
sub esi,256
add edi,144+144
mov ecx,256/2
call .loopa3
add esi,16+16
add edi,144+144
dec dl
jnz .loopa
jmp .done
.loopa2
mov ecx,256/2
call .loopa3
add esi,16+16
add edi,144+800+144
dec dl
jnz .loopa2
jmp .done
.loopa3
mov al,[esi]
mov bl,[esi+1]
mov ah,al
mov bh,bl
mov [es:edi],ax
mov [es:edi+2],bx
add esi,byte 2
add edi,byte 4
dec ecx
jnz .loopa3
ret
.smallscreen
add edi,120*800+128
cmp byte[MMXSupport],1
je .ssloopb
.ssloopa
mov ecx,256/4
rep movsd
add esi,16+16
add edi,272+272
dec dl
jnz .ssloopa
jmp .done
.ssloopb
mov ecx,256/16
MMXStuff
add esi,16+16
add edi,272+272
dec dl
jnz .ssloopb
jmp .done
.fullscreen
sub edi,128
cmp byte[scanlines],1
je .fsloopa2
.fsloopa
mov ecx,256/4
call .fsloopb
sub esi,256
add edi,16+16
mov ecx,256/4
call .fsloopb
add esi,16+16
add edi,16+16
dec dl
jnz .fsloopa
jmp .done
.fsloopa2
mov ecx,256/4
call .fsloopb
add esi,16+16
add edi,16+800+16
dec dl
jnz .fsloopa2
jmp .done
.fsloopb
push ecx
push edx
mov al,[esi]
mov bl,[esi+1]
mov cl,[esi+2]
mov dl,[esi+3]
mov ah,al
mov bh,bl
mov ch,cl
mov dh,dl
mov [es:edi],ax
mov [es:edi+2],ax
mov [es:edi+4],bx
mov [es:edi+6],cx
mov [es:edi+8],cx
mov [es:edi+10],dx
pop edx
pop ecx
add esi,byte 4
add edi,byte 8+4
dec ecx
jnz .fsloopb
ret
.done
pop es
ret
;*********************************************************
; Copy VESA2 800x600x16b Copies buffer to 800x600x16bVBE2
;*********************************************************
NEWSYM copyvesa2800x600x16b
cmp byte[curblank],40h
jne .startcopy
ret
.startcopy
push es
mov ax,[vesa2selec]
mov es,ax
mov esi,[vidbuffer]
mov edi,60*800*2+144*2
cmp word[resolutn],224
jne .res239
add edi,8*800*2
.res239
add edi,[VidStartDraw]
add esi,16*2+256*2+16*2+16*2
xor eax,eax
mov dl,[resolutn]
dec dl
dec dl
cmp byte[ScreenScale],1
je near .fullscreen
cmp byte[smallscreenon],1
je near .smallscreen
cmp byte[scanlines],1
je .loopa2
.loopa
mov ecx,256/2
call .loopa3
sub esi,256*2
add edi,144*2+144*2
mov ecx,256/2
call .loopa3
add esi,16*2+16*2
add edi,144*2+144*2
dec dl
jnz .loopa
jmp .done
.loopa2
mov ecx,256/2
call .loopa3
add esi,16*2+16*2
add edi,144*2+800*2+144*2
dec dl
jnz .loopa2
jmp .done
.loopa3
mov ax,[esi]
mov bx,[esi+2]
mov [es:edi],ax
mov [es:edi+2],ax
mov [es:edi+4],bx
mov [es:edi+6],bx
add esi,byte 4
add edi,byte 8
dec ecx
jnz .loopa3
ret
.smallscreen
add edi,120*800*2+128*2
cmp byte[MMXSupport],1
je .ssloopb
.ssloopa
mov ecx,256/4*2
rep movsd
add esi,16*2+16*2
add edi,272*2+272*2
dec dl
jnz .ssloopa
jmp .done
.ssloopb
mov ecx,256/16*2
MMXStuff
add esi,16*2+16*2
add edi,272*2+272*2
dec dl
jnz .ssloopb
jmp .done
.fullscreen
sub edi,128*2
cmp byte[scanlines],1
je .fsloopa2
.fsloopa
mov ecx,256/4
call .fsloopb
sub esi,256*2
add edi,16*2+16*2
mov ecx,256/4
call .fsloopb
add esi,16*2+16*2
add edi,16*2+16*2
dec dl
jnz .fsloopa
jmp .done
.fsloopa2
mov ecx,256/4
call .fsloopb
add esi,16*2+16*2
add edi,16*2+800*2+16*2
dec dl
jnz .fsloopa2
jmp .done
.fsloopb
push ecx
push edx
mov ax,[esi]
mov bx,[esi+2]
mov cx,[esi+4]
mov dx,[esi+6]
shr eax,8
shr ebx,8
shr ecx,8
shr edx,8
mov ax,[esi]
mov bx,[esi+2]
mov cx,[esi+4]
mov dx,[esi+6]
mov [es:edi],eax
mov [es:edi+4],eax
mov [es:edi+8],ebx
mov [es:edi+12],ecx
mov [es:edi+16],ecx
mov [es:edi+20],edx
pop edx
pop ecx
add esi,byte 8
add edi,byte 16+8
dec ecx
jnz .fsloopb
ret
.done
pop es
ret
;******************************************************* ;*******************************************************
; Copy VESA2 640x400x8b Copies buffer to 640x400x8bVBE2 ; Copy VESA2 640x400x8b Copies buffer to 640x400x8bVBE2
;******************************************************* ;*******************************************************
@@ -1284,7 +1576,7 @@ NEWSYM copyvesa2640x400x8b
mov ax,[vesa2selec] mov ax,[vesa2selec]
mov es,ax mov es,ax
mov esi,[vidbuffer] mov esi,[vidbuffer]
mov edi,20*640+64 mov edi,640+20*640+64
cmp word[resolutn],224 cmp word[resolutn],224
jne .res239 jne .res239
add edi,12*640 add edi,12*640
@@ -1401,7 +1693,7 @@ NEWSYM copyvesa2640x400x16b
mov ax,[vesa2selec] mov ax,[vesa2selec]
mov es,ax mov es,ax
mov esi,[vidbuffer] mov esi,[vidbuffer]
mov edi,20*640*2+64*2 mov edi,640*2+20*640*2+64*2
cmp word[resolutn],224 cmp word[resolutn],224
jne .res239 jne .res239
add edi,12*640*2 add edi,12*640*2
@@ -2662,7 +2954,7 @@ NEWSYM copyvesa2320x240x16b
mov ax,[vesa2selec] mov ax,[vesa2selec]
mov es,ax mov es,ax
mov esi,[vidbuffer] mov esi,[vidbuffer]
mov edi,32*2 mov edi,320*2+32*2
cmp word[resolutn],224 cmp word[resolutn],224
jne .res239 jne .res239
add edi,8*320*2 add edi,8*320*2
@@ -3053,7 +3345,7 @@ NEWSYM copyvesa2320x480x16b
mov ax,[vesa2selec] mov ax,[vesa2selec]
mov es,ax mov es,ax
mov esi,[vidbuffer] mov esi,[vidbuffer]
mov edi,32*2 mov edi,320*2*2+32*2
cmp word[resolutn],224 cmp word[resolutn],224
jne .res239 jne .res239
add edi,8*320*2 add edi,8*320*2
@@ -6355,6 +6647,10 @@ NEWSYM DOSClearScreen
je near cscopyvesa2640x480x8b je near cscopyvesa2640x480x8b
cmp byte[cvidmode],16 cmp byte[cvidmode],16
je near cscopyvesa2640x480x16b je near cscopyvesa2640x480x16b
cmp byte[cvidmode],17
je near cscopyvesa2800x600x8b
cmp byte[cvidmode],18
je near cscopyvesa2800x600x16b
%endif %endif
ret ret
@@ -6456,6 +6752,36 @@ NEWSYM cscopyvesa2640x480x16b
pop es pop es
ret ret
NEWSYM cscopyvesa2800x600x8b
push es
mov ax,[vesa2selec]
mov es,ax
mov edi,[VidStartDraw]
mov ecx,800*600
TripleBufferClear
.loopb
mov byte[es:edi],0
inc edi
dec ecx
jnz .loopb
pop es
ret
NEWSYM cscopyvesa2800x600x16b
push es
mov ax,[vesa2selec]
mov es,ax
mov edi,[VidStartDraw]
mov ecx,800*600*2
TripleBufferClear
.loopb
mov byte[es:edi],0
inc edi
dec ecx
jnz .loopb
pop es
ret
NEWSYM cscopyvesa2640x400x8b NEWSYM cscopyvesa2640x400x8b
push es push es
mov ax,[vesa2selec] mov ax,[vesa2selec]

View File

@@ -1246,6 +1246,7 @@ 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