A bunch of stuff that I'm too lazy to list here.
This commit is contained in:
@@ -619,7 +619,7 @@ db 'VideoModeLin = %U',13,10
|
||||
db '',13,10
|
||||
%endif
|
||||
%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 '; 2 = 256x256x8B (MODEQ) 3 = 320x224x8B (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 '; 12 = 512x384x16B (VESA2) 13 = 640x400x8B (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 'VideoModeDos = %U',13,10
|
||||
db '',13,10
|
||||
@@ -638,9 +639,9 @@ db '',13,10
|
||||
db 'Sound = %V',13,10
|
||||
db '',13,10
|
||||
db '; Sound Sampling Rate',13,10
|
||||
db '; 0 = 8000Hz, 1 = 11025Hz, 2 = 22050Hz, 3 = 44100Hz',13,10
|
||||
db '; 4 = 16000Hz, 5 = 32000Hz',13,10
|
||||
db '',13,10
|
||||
db '; 0 = 8,000 Hz, 1 = 11,025 Hz, 2 = 22,050 Hz',13,10
|
||||
db '; 3 = 44,100 Hz, 4 = 16,000 Hz, 5 = 32,000 Hz',13,10
|
||||
db '',13,10
|
||||
db 'SoundRate = %W',13,10
|
||||
db '',13,10
|
||||
db '; Stereo (0 = off, 1 = on)',13,10
|
||||
|
||||
@@ -1014,7 +1014,7 @@ NEWSYM ClearScreen
|
||||
SECTION .data
|
||||
|
||||
; 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
|
||||
; and end with a NULL terminator
|
||||
@@ -1036,26 +1036,29 @@ db '640X400X8B VESA2',0 ; 13
|
||||
db '640X400X16B VESA2',0 ; 14
|
||||
db '640X480X8B VESA2',0 ; 15
|
||||
db '640X480X16B VESA2',0 ; 16
|
||||
db '800X600X8B VESA2',0 ; 17
|
||||
db '800X600X16B VESA2',0 ; 18
|
||||
db ' ',0
|
||||
|
||||
; Video Mode Feature Availability (1 = Available, 0 = Not Available)
|
||||
; 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 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 GUISLVID, db 0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,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 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,1,0,1,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,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 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 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 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 GUII2VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Super 2xSAI Engine
|
||||
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 GUIBIFIL, db 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 ; Triple Buffering (Win)
|
||||
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,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,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,0,0 ; Interpolation
|
||||
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,0,0 ; (Interp | Eagle)
|
||||
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 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 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 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 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 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 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 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 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 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
|
||||
|
||||
; ****************************
|
||||
|
||||
@@ -89,6 +89,10 @@ NEWSYM dosinitvideo
|
||||
je near .initvesa2640x480x8
|
||||
cmp byte[cvidmode],16
|
||||
je near .initvesa2640x480x16
|
||||
cmp byte[cvidmode],17
|
||||
je near .initvesa2800x600x8
|
||||
cmp byte[cvidmode],18
|
||||
je near .initvesa2800x600x16
|
||||
ret
|
||||
|
||||
%include "dos/vga.inc"
|
||||
@@ -299,6 +303,66 @@ NEWSYM dosinitvideo
|
||||
pop es
|
||||
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
|
||||
;*******************************************************
|
||||
|
||||
@@ -261,7 +261,9 @@ int pccmdline(void)
|
||||
}
|
||||
case 'n':
|
||||
{
|
||||
scanlines=1;
|
||||
if(!hasroom) return 4;
|
||||
scanlines=my_atoi(argv[p+1]);
|
||||
p++;
|
||||
break;
|
||||
}
|
||||
case 's':
|
||||
|
||||
@@ -135,7 +135,7 @@ EXTSYM NumVideoModes
|
||||
EXTSYM cfgvolume, MusicVol, DSPMem
|
||||
EXTSYM NumInputDevices,GUIInputNames
|
||||
EXTSYM GUIVideoModeNames
|
||||
EXTSYM GUISLVID,GUIINVID,GUIEAVID,GUIIEVID,GUIFSVID
|
||||
EXTSYM GUISLVID,GUIINVID,GUIEAVID,GUIIEVID,GUIFSVID,GUIWSVID
|
||||
EXTSYM GUISSVID,GUITBVID,GUIHSVID,GUI2xVID,GUII2VID,GUIM7VID
|
||||
EXTSYM cfgsoundon,cfgSoundQuality,cfgStereoSound
|
||||
EXTSYM convertnum,converthex
|
||||
|
||||
@@ -1714,7 +1714,12 @@ DisplayGUIVideo:
|
||||
xor eax,eax
|
||||
mov al,[cvidmode]
|
||||
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
|
||||
.notext5
|
||||
xor eax,eax
|
||||
@@ -1810,7 +1815,12 @@ DisplayGUIVideo:
|
||||
xor eax,eax
|
||||
mov al,[cvidmode]
|
||||
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
|
||||
.notext5b
|
||||
xor eax,eax
|
||||
@@ -2126,6 +2136,7 @@ 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
|
||||
|
||||
@@ -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 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
|
||||
|
||||
@@ -1429,35 +1429,35 @@ SECTION .data
|
||||
.noparams db 'Usage : ZSNES [-d,-f #, ... ] <filename.SMC>',13,10
|
||||
db ' Eg : ZSNES -s -r 2 game.smc',13,10,13,10
|
||||
%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 ' 0 = None 1 = Keyboard 2 = Joystick 3 = Gamepad',13,10
|
||||
db ' 4 = 4Button 5 = 6Button 6 = Sidewinder ',13,10
|
||||
db ' -7 Disable SPC700 speedhack',13,10
|
||||
db ' -8 Force 8-bit sound',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__
|
||||
db ' -cs Scale to fit screen (320x240 VESA2/640x480 VESA2)',13,10
|
||||
db ' -cs Enable full/wide screen (when available)',13,10
|
||||
%else
|
||||
db ' -c Scale to fit screen (320x240 VESA2/640x480 VESA2)',13,10
|
||||
db ' -c Enable full screen (when available)',13,10
|
||||
%endif
|
||||
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
|
||||
; because of bios interrupt code
|
||||
%ifndef __LINUX__
|
||||
db ' -d Start with debugger',13,10
|
||||
db ' -d Start with debugger enabled',13,10
|
||||
%endif
|
||||
db ' -dd Disable sound DSP emulation',13,10
|
||||
%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
|
||||
db ' -f # Turn on frame skip [0..9]',13,10
|
||||
db ' -g # Set Gamma Correction [0...15, 0 = 1.0, 15 = 2.0]',13,10
|
||||
db ' -f # Enable fixed frame rate [0...9]',13,10
|
||||
%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
|
||||
db ' -h Force HiROM',13,10
|
||||
db ' -i Uninterleave ROM Image',13,10
|
||||
@@ -1466,13 +1466,18 @@ SECTION .data
|
||||
db 'Press any key to continue.',0
|
||||
.noparms2 db 13,' -l Force LoROM ',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__
|
||||
db ' -of Enable FPU copy ',13,10
|
||||
%else
|
||||
; db ' -o Enable FPU copy ',13,10
|
||||
%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 ' -r # Set Sampling Sound Blaster Sampling Rate & Bit :',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 ' 12 = 512x384x16B (VESA2) 13 = 640x400x8B (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
|
||||
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
|
||||
.noparms3 db 13,' -y Enable EAGLE (640x480x8B only) or Interpolation (640x480x16B only)',13,10
|
||||
db ' -z Enable Stereo Sound',13,10
|
||||
%ifdef __MSDOS__
|
||||
db ' -3 Enable Triple Buffering (disables VSync)',13,10
|
||||
db ' -3 Enable triple buffering (disables vsync)',13,10
|
||||
%endif
|
||||
db ' -z Enable Stereo Sound',13,10
|
||||
db '',13,10
|
||||
db ' File Formats Supported by GUI : .SMC,.SFC,.SWC,.FIG,.058,.078,.1,.USA,.JAP',13,10
|
||||
%ifdef __MSDOS__
|
||||
|
||||
@@ -226,11 +226,11 @@ PreTripleBuffer:
|
||||
|
||||
SECTION .data
|
||||
; 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
|
||||
dd 512*384,512*384*2,640*400,640*400*2,640*480,640*480*2
|
||||
VidModeLine dd 0,0,0,0,0,0,0,240,240,480,480,384,384,400,400,480,480
|
||||
VidModeSize dd 0,0,0,0,0,0,0,320*240,320*240*2,320*480,320*480*2,512*384
|
||||
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,600,600
|
||||
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
|
||||
ApplyStart db 4
|
||||
|
||||
@@ -298,6 +298,10 @@ ScreenShow:
|
||||
je near copyvesa2640x480x8b
|
||||
cmp byte[cvidmode],16
|
||||
je near copyvesa2640x480x16b
|
||||
cmp byte[cvidmode],17
|
||||
je near copyvesa2800x600x8b
|
||||
cmp byte[cvidmode],18
|
||||
je near copyvesa2800x600x16b
|
||||
cmp byte[curblank],40h
|
||||
je .startcopy
|
||||
inc byte[curfps2]
|
||||
@@ -349,6 +353,10 @@ ScreenShowGUI:
|
||||
je near copyvesa2640x480x8bgui
|
||||
cmp byte[cvidmode],16
|
||||
je near copyvesa2640x480x16bgui
|
||||
cmp byte[cvidmode],17
|
||||
je near copyvesa2800x600x8b
|
||||
cmp byte[cvidmode],18
|
||||
je near copyvesa2800x600x16b
|
||||
jmp copymodeq256
|
||||
%endif
|
||||
|
||||
@@ -987,7 +995,7 @@ NEWSYM copyvesa2320x240x8b
|
||||
mov ax,[vesa2selec]
|
||||
mov es,ax
|
||||
mov esi,[vidbuffer]
|
||||
mov edi,32
|
||||
mov edi,320+32
|
||||
cmp word[resolutn],224
|
||||
jne .res239
|
||||
add edi,8*320
|
||||
@@ -1067,7 +1075,7 @@ NEWSYM copyvesa2320x480x8b
|
||||
mov ax,[vesa2selec]
|
||||
mov es,ax
|
||||
mov esi,[vidbuffer]
|
||||
mov edi,32
|
||||
mov edi,320*2+32
|
||||
cmp word[resolutn],224
|
||||
jne .res239
|
||||
add edi,8*320
|
||||
@@ -1270,6 +1278,290 @@ NEWSYM copyvesa2320x480x8b
|
||||
; 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
|
||||
;*******************************************************
|
||||
@@ -1284,7 +1576,7 @@ NEWSYM copyvesa2640x400x8b
|
||||
mov ax,[vesa2selec]
|
||||
mov es,ax
|
||||
mov esi,[vidbuffer]
|
||||
mov edi,20*640+64
|
||||
mov edi,640+20*640+64
|
||||
cmp word[resolutn],224
|
||||
jne .res239
|
||||
add edi,12*640
|
||||
@@ -1401,7 +1693,7 @@ NEWSYM copyvesa2640x400x16b
|
||||
mov ax,[vesa2selec]
|
||||
mov es,ax
|
||||
mov esi,[vidbuffer]
|
||||
mov edi,20*640*2+64*2
|
||||
mov edi,640*2+20*640*2+64*2
|
||||
cmp word[resolutn],224
|
||||
jne .res239
|
||||
add edi,12*640*2
|
||||
@@ -2662,7 +2954,7 @@ NEWSYM copyvesa2320x240x16b
|
||||
mov ax,[vesa2selec]
|
||||
mov es,ax
|
||||
mov esi,[vidbuffer]
|
||||
mov edi,32*2
|
||||
mov edi,320*2+32*2
|
||||
cmp word[resolutn],224
|
||||
jne .res239
|
||||
add edi,8*320*2
|
||||
@@ -3053,7 +3345,7 @@ NEWSYM copyvesa2320x480x16b
|
||||
mov ax,[vesa2selec]
|
||||
mov es,ax
|
||||
mov esi,[vidbuffer]
|
||||
mov edi,32*2
|
||||
mov edi,320*2*2+32*2
|
||||
cmp word[resolutn],224
|
||||
jne .res239
|
||||
add edi,8*320*2
|
||||
@@ -6355,6 +6647,10 @@ NEWSYM DOSClearScreen
|
||||
je near cscopyvesa2640x480x8b
|
||||
cmp byte[cvidmode],16
|
||||
je near cscopyvesa2640x480x16b
|
||||
cmp byte[cvidmode],17
|
||||
je near cscopyvesa2800x600x8b
|
||||
cmp byte[cvidmode],18
|
||||
je near cscopyvesa2800x600x16b
|
||||
%endif
|
||||
ret
|
||||
|
||||
@@ -6456,6 +6752,36 @@ NEWSYM cscopyvesa2640x480x16b
|
||||
pop es
|
||||
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
|
||||
push es
|
||||
mov ax,[vesa2selec]
|
||||
|
||||
@@ -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 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
|
||||
|
||||
Reference in New Issue
Block a user