From 0b6a01e20646e27805c348f1d11a1f29d9557726 Mon Sep 17 00:00:00 2001 From: jbo_85 <> Date: Wed, 15 Feb 2006 00:27:53 +0000 Subject: [PATCH] Removed some DOS only code from other ports. --- zsnes/src/Makefile.in | 9 +- zsnes/src/SConstruct | 4 - zsnes/src/cpu/execute.asm | 6 +- zsnes/src/dos/dosintrf.asm | 4 +- zsnes/src/dos/initvid.asm | 54 +- zsnes/src/dos/joy.asm | 28 +- zsnes/src/dos/vesa12.asm | 669 ++++++++++++------------ zsnes/src/dos/vesa2.asm | 969 +++++++++++++++++------------------ zsnes/src/dos/vga.inc | 3 - zsnes/src/gui/gui.asm | 17 +- zsnes/src/gui/guimisc.inc | 4 + zsnes/src/gui/guimouse.inc | 10 +- zsnes/src/gui/guitools.inc | 4 +- zsnes/src/linux/sdlintrf.asm | 3 - zsnes/src/makefile.ms | 6 +- zsnes/src/video/copyvid.inc | 4 + zsnes/src/video/procvid.asm | 2 +- 17 files changed, 882 insertions(+), 914 deletions(-) diff --git a/zsnes/src/Makefile.in b/zsnes/src/Makefile.in index 1b85555f..5ad5ed2b 100644 --- a/zsnes/src/Makefile.in +++ b/zsnes/src/Makefile.in @@ -74,8 +74,7 @@ VIDEOBJ=${VIDEODIR}/makev16b.o ${VIDEODIR}/makev16t.o ${VIDEODIR}/makevid.o\ WINOBJ=${WINDIR}/copyvwin.o ${WINDIR}/sdlintrf.o ${WINDIR}/sdllink.o @GL_DRAW@\ ${WINDIR}/sw_draw.o ${WINDIR}/zfilew.o -WINDOSOBJ=${DOSDIR}/debug.o ${DOSDIR}/joy.o ${DOSDIR}/vesa2.o\ - ${DOSDIR}/initvid.o ${DOSDIR}/sw.o ${DOSDIR}/gppro.o ${DOSDIR}/vesa12.o +WINDOSOBJ=${DOSDIR}/debug.o ${DOSDIR}/joy.o ${DOSDIR}/vesa2.o ZIPOBJ=${ZIPDIR}/unzip.o ${ZIPDIR}/zpng.o @@ -196,11 +195,7 @@ ${CPUDIR}/tablec.o: ${CPUDIR}/tablec.asm macros.mac ${CPUDIR}/65816dc.inc\ ${CPUDIR}/address.inc ${CPUDIR}/addrni.inc ${CPUDIR}/e65816c.inc ${DOSDIR}/debug.o: ${DOSDIR}/debug.asm macros.mac -${DOSDIR}/gppro.o: ${DOSDIR}/gppro.asm macros.mac -${DOSDIR}/initvid.o: ${DOSDIR}/initvid.asm macros.mac ${DOSDIR}/vga.inc ${DOSDIR}/joy.o: ${DOSDIR}/joy.asm macros.mac -${DOSDIR}/sw.o: ${DOSDIR}/sw.asm macros.mac -${DOSDIR}/vesa12.o: ${DOSDIR}/vesa12.asm macros.mac ${DOSDIR}/vesa2.o: ${DOSDIR}/vesa2.asm macros.mac ${EFFECTSDIR}/burn.o: ${EFFECTSDIR}/burn.c @@ -271,7 +266,7 @@ ${VIDEODIR}/sw_draw.o: ${VIDEODIR}/sw_draw.asm macros.mac ${WINDIR}/copyvwin.o: ${WINDIR}/copyvwin.asm macros.mac ${WINDIR}/gl_draw.o: ${WINDIR}/gl_draw.c gblhdr.h ${WINDIR}/sdlintrf.o: ${WINDIR}/sdlintrf.asm macros.mac -${WINDIR}/sdllink.o: ${WINDIR}/sdllink.c gblhdr.h ${WINDIR}/sw_draw.h\ +${WINDIR}/sdllink.o: ${WINDIR}/sdllink.c asm_call.h gblhdr.h ${WINDIR}/sw_draw.h\ ${WINDIR}/gl_draw.h ${WINDIR}/sw_draw.o: ${WINDIR}/sw_draw.c gblhdr.h ${WINDIR}/zfilew.o: ${WINDIR}/zfilew.c diff --git a/zsnes/src/SConstruct b/zsnes/src/SConstruct index ac80e23f..11230fac 100644 --- a/zsnes/src/SConstruct +++ b/zsnes/src/SConstruct @@ -75,10 +75,6 @@ dossrc = Split(''' dos/debug.asm dos/joy.asm dos/vesa2.asm - dos/initvid.asm - dos/sw.asm - dos/gppro.asm - dos/vesa12.asm ''') effectssrc = Split(''' effects/burn.c diff --git a/zsnes/src/cpu/execute.asm b/zsnes/src/cpu/execute.asm index 685e09f8..117553a5 100644 --- a/zsnes/src/cpu/execute.asm +++ b/zsnes/src/cpu/execute.asm @@ -35,7 +35,7 @@ EXTSYM tableadc,SA1UpdateDPage,Makemode7Table,nextmenupopup,MovieProcessing EXTSYM DosExit,InitDir,InitDrive,createnewcfg,sfxramdata,deinitvideo EXTSYM SFXEnable,wramdata,cycpbl,cycpblt,irqon,spcon EXTSYM multchange,romispal,scrndis,sprlefttot,sprleftpr,processsprites -EXTSYM cachesprites,NextLineStart,FlipWait,LastLineStart,opcjmptab,CheatOn +EXTSYM cachesprites,opcjmptab,CheatOn EXTSYM INTEnab,JoyCRead,NMIEnab,NumCheats,CurrentExecSA1,ReadInputDevice EXTSYM StartDrawNewGfx,VIRQLoc,cachevideo,cfield,cheatdata,curblank,curnmi EXTSYM curypos,cycpl,doirqnext,drawline,exechdma,hdmadelay,intrset,newengen @@ -58,7 +58,7 @@ EXTSYM ResetDuringMovie,EMUPauseKey,INCRFrameKey,MovieWaiting,NoInputRead EXTSYM AllocatedRewindStates,PauseFrameMode,RestorePauseFrame,BackupPauseFrame %ifdef __MSDOS__ -EXTSYM dssel,Game60hzcall +EXTSYM dssel,Game60hzcall,NextLineStart,FlipWait,LastLineStart %endif SECTION .data @@ -763,6 +763,7 @@ NEWSYM exitloop ALIGN16 %macro FlipCheck 0 +%ifdef __MSDOS__ cmp byte[FlipWait],0 je %%noflip push edx @@ -787,6 +788,7 @@ ALIGN16 pop eax pop edx %%noflip +%endif %endmacro NEWSYM execute diff --git a/zsnes/src/dos/dosintrf.asm b/zsnes/src/dos/dosintrf.asm index d13db03a..3c529aac 100644 --- a/zsnes/src/dos/dosintrf.asm +++ b/zsnes/src/dos/dosintrf.asm @@ -38,7 +38,7 @@ EXTSYM DSPDisable,SBInt,PICMaskP,SBIrq,SBHandler,InitSB,handler8h EXTSYM handler9h,init60hz,Interror,init18_2hz,DeInitSPC,GUIinit36_4hz EXTSYM GUIoldhand9s,GUIoldhand9o,GUIoldhand8s,GUIoldhand8o,GUIhandler9h EXTSYM GUIhandler8h,GUIinit18_2hz,dosmakepal,doschangepal,dosinitvideo -EXTSYM dosinitvideo2,DosDrawScreen,cvidmode,vidbuffer,GUICPC,DosDrawScreenB +EXTSYM DosDrawScreen,cvidmode,vidbuffer,GUICPC,DosDrawScreenB EXTSYM DOSClearScreen,DosUpdateDevices,DOSJoyRead,pl1contrl,pl2contrl,pl3contrl EXTSYM pl4contrl,pl5contrl EXTSYM GrayscaleMode @@ -871,8 +871,6 @@ NEWSYM saveselectpal ; ** init video mode functions ** NEWSYM initvideo ; Returns 1 in videotroub if trouble occurs jmp dosinitvideo -NEWSYM initvideo2 ; ModeQ scanline re-init (Keep blank on non-dos ports) - jmp dosinitvideo2 NEWSYM deinitvideo mov al,[previdmode] mov ah,0 diff --git a/zsnes/src/dos/initvid.asm b/zsnes/src/dos/initvid.asm index c278f3f9..274efb4d 100644 --- a/zsnes/src/dos/initvid.asm +++ b/zsnes/src/dos/initvid.asm @@ -22,23 +22,13 @@ %include "macros.mac" -EXTSYM InitVesa2,cbitmode,cvidmode,makepal,scanlines,selcA000,vesa2_bits -EXTSYM vesa2_x,vesa2_y,vesa2selec,InitVesa12,videotroub - -%ifdef __MSDOS__ -EXTSYM cscopymodeq,cscopymodex -%endif - -SECTION .bss - -NEWSYM clearfilter, resw 1 -NEWSYM res640, resb 1 -NEWSYM res480, resb 1 +EXTSYM InitVesa2,cbitmode,cvidmode,dosmakepal,scanlines,selcA000,vesa2_bits +EXTSYM vesa2_x,vesa2_y,vesa2selec,InitVesa12,videotroub,cscopymodeq,cscopymodex +EXTSYM res640,res480 SECTION .text - -NEWSYM dosinitvideo2 +NEWSYM initvideo2 cmp byte[cvidmode],2 jne .nomodeq jmp dosinitvideo.initmodeq256 @@ -103,11 +93,9 @@ NEWSYM dosinitvideo ;******************************************************* .initmodeq224 -%ifdef __MSDOS__ SetVGAMode .Mode256x224c call cscopymodeq -%endif - call makepal + call dosmakepal ret ;******************************************************* @@ -115,11 +103,9 @@ NEWSYM dosinitvideo ;******************************************************* .initmodeq240 -%ifdef __MSDOS__ SetVGAMode .Mode256x240c call cscopymodeq -%endif - call makepal + call dosmakepal ret ;******************************************************* @@ -127,7 +113,6 @@ NEWSYM dosinitvideo ;******************************************************* .initmodeq256 -%ifdef __MSDOS__ cmp byte[scanlines],1 je near .scanlines SetVGAMode .Mode256x256c @@ -137,8 +122,7 @@ NEWSYM dosinitvideo jmp .done .done call cscopymodeq -%endif - call makepal + call dosmakepal ret @@ -147,11 +131,9 @@ NEWSYM dosinitvideo ;******************************************************* .initmodex224 -%ifdef __MSDOS__ SetVGAMode .Mode320x224 call cscopymodex -%endif - call makepal + call dosmakepal ret ;******************************************************* @@ -159,11 +141,9 @@ NEWSYM dosinitvideo ;******************************************************* .initmodex240 -%ifdef __MSDOS__ SetVGAMode .Mode320x240 call cscopymodex -%endif - call makepal + call dosmakepal ret ;******************************************************* @@ -171,7 +151,6 @@ NEWSYM dosinitvideo ;******************************************************* .initmodex256 -%ifdef __MSDOS__ cmp byte[scanlines],1 je near .scanlines2 SetVGAMode .Mode320x256 @@ -181,8 +160,7 @@ NEWSYM dosinitvideo jmp .done2 .done2 call cscopymodex -%endif - call makepal + call dosmakepal ret @@ -200,7 +178,7 @@ NEWSYM dosinitvideo jne .notrouble ret .notrouble - call makepal + call dosmakepal ; clear screen (320*240 bytes) push es mov ax,[vesa2selec] @@ -258,7 +236,7 @@ NEWSYM dosinitvideo jne .notrouble3 ret .notrouble3 - call makepal + call dosmakepal ; clear screen (640*480 bytes) push es mov ax,[vesa2selec] @@ -318,7 +296,7 @@ NEWSYM dosinitvideo jne .notrouble11 ret .notrouble11 - call makepal + call dosmakepal ; clear screen (800*600 bytes) push es mov ax,[vesa2selec] @@ -377,7 +355,7 @@ NEWSYM dosinitvideo jne .notrouble5 ret .notrouble5 - call makepal + call dosmakepal ; clear screen (320*480 bytes) push es mov ax,[vesa2selec] @@ -436,7 +414,7 @@ NEWSYM dosinitvideo jne .notrouble7 ret .notrouble7 - call makepal + call dosmakepal ; clear screen (512*384 bytes) push es mov ax,[vesa2selec] @@ -494,7 +472,7 @@ NEWSYM dosinitvideo jne .notrouble9 ret .notrouble9 - call makepal + call dosmakepal ; clear screen (640*400 bytes) push es mov ax,[vesa2selec] diff --git a/zsnes/src/dos/joy.asm b/zsnes/src/dos/joy.asm index a29beefc..e8810924 100644 --- a/zsnes/src/dos/joy.asm +++ b/zsnes/src/dos/joy.asm @@ -22,11 +22,15 @@ %include "macros.mac" -EXTSYM WhichSW,_SW1,_SW2,_readSideWinder,_SWCount,_SW3,_SW4,delay,pl1contrl +EXTSYM WhichSW,delay,pl1contrl EXTSYM pl2contrl,pl1p209,pl2p209,pl3p209,pl4p209,pl3contrl,pl4contrl,pressed -EXTSYM read_gpp,pl5contrl,pl5p209,CalibXmin,CalibYmin,CalibXmax,CalibYmax +EXTSYM pl5contrl,pl5p209,CalibXmin,CalibYmin,CalibXmax,CalibYmax EXTSYM CalibXmin209,CalibYmin209,CalibXmax209,CalibYmax209 +%ifdef __MSDOS__ +EXTSYM read_gpp,_readSideWinder,_SW1,_SW2,_SW3,_SW4,_SWCount +%endif + SECTION .data NEWSYM JoyAltrn2, db 2 SECTION .bss @@ -188,6 +192,7 @@ NEWSYM GetCoords3 sti ret +%ifdef __MSDOS__ NEWSYM DosUpdateDevices mov byte[PPad],0 mov byte[JoyQuant],0 @@ -494,10 +499,6 @@ NEWSYM DosUpdateDevices .none2 ret -SECTION .data -NEWSYM JoyReadControl, db 0 -SECTION .text - JoyRead209: cmp byte[JoyAltrn],1 jne near .noanalog @@ -907,7 +908,7 @@ GamePadPro2: .error ret -NEWSYM SideWinder +SideWinder: mov al,[NumSWs] mov [_SWCount],al mov dx,201h @@ -1089,7 +1090,7 @@ GamePadPro2209: .error ret -NEWSYM SideWinder209 +SideWinder209: mov al,[NumSWs209] mov [_SWCount],al mov dx,209h @@ -1223,7 +1224,7 @@ NEWSYM SideWinder209 %%nobutton %endmacro -NEWSYM GetParallelPlayer1 +GetParallelPlayer1: mov dx, 0378h mov byte[pressed+180h],0 mov byte[pressed+181h],0 @@ -1251,7 +1252,7 @@ NEWSYM GetParallelPlayer1 PPortHelp 0F9h, 40h, 18Bh ret -NEWSYM GetParallelPlayer2 +GetParallelPlayer2: mov dx, 0378h mov byte[pressed+190h],0 mov byte[pressed+191h],0 @@ -1279,7 +1280,7 @@ NEWSYM GetParallelPlayer2 PPortHelp 0F9h, 20h, 19Bh ret -NEWSYM GetParallelPlayer3 +GetParallelPlayer3: mov dx, 0378h mov byte[pressed+1A0h],0 mov byte[pressed+1A1h],0 @@ -1307,7 +1308,7 @@ NEWSYM GetParallelPlayer3 PPortHelp 0F9h, 10h, 1ABh ret -NEWSYM GetParallelPlayer4 +GetParallelPlayer4: mov dx, 0378h mov byte[pressed+1B0h],0 mov byte[pressed+1B1h],0 @@ -1335,7 +1336,7 @@ NEWSYM GetParallelPlayer4 PPortHelp 0F9h, 08h, 1BBh ret -NEWSYM GetParallelPlayer5 +GetParallelPlayer5: mov dx, 0378h mov byte[pressed+1c0h],0 mov byte[pressed+1c1h],0 @@ -1674,3 +1675,4 @@ NEWSYM SetInputDevice209 .nopp5 .exit ret +%endif diff --git a/zsnes/src/dos/vesa12.asm b/zsnes/src/dos/vesa12.asm index e08d766d..3e792dfd 100644 --- a/zsnes/src/dos/vesa12.asm +++ b/zsnes/src/dos/vesa12.asm @@ -37,25 +37,25 @@ NEWSYM granadd, resd 1 SECTION .text NEWSYM VESA12EXITTODOS - mov ax,0003h - int 10h - push edx - mov edx,.exitfromvesa12 - mov ah,9 - int 21h - pop edx - mov ah,9 - int 21h - mov edx,.return - mov ah,9 - int 21h + mov ax,0003h + int 10h + push edx + mov edx,.exitfromvesa12 + mov ah,9 + int 21h + pop edx + mov ah,9 + int 21h + mov edx,.return + mov ah,9 + int 21h - mov dl,[InitDrive] - mov ebx,InitDir - call Change_Dir + mov dl,[InitDrive] + mov ebx,InitDir + call Change_Dir - mov byte[videotroub],1 - jmp DosExit + mov byte[videotroub],1 + jmp DosExit SECTION .data @@ -64,153 +64,152 @@ SECTION .data SECTION .text ;******************************************************* -; Set up Vesa 2 +; Set up Vesa 2 ;******************************************************* NEWSYM InitVesa12 ;-------------------------------------------------; ; First - allocate some bytes in DOS memory for ; -; communication with VBE ; +; communication with VBE ; ;-------------------------------------------------; - mov eax,0100h - mov ebx,512/16 ; 512 bytes - int 31h ; Function 31h,100h - Allocate DOS memory (512 bytes) - jnc .gotmem - mov edx,.nomemmessage - jmp VESA12EXITTODOS + mov eax,0100h + mov ebx,512/16 ; 512 bytes + int 31h ; Function 31h,100h - Allocate DOS memory (512 bytes) + jnc .gotmem + mov edx,.nomemmessage + jmp VESA12EXITTODOS .gotmem - mov fs,dx ; FS now points to the DOS buffer + mov fs,dx ; FS now points to the DOS buffer - ;--------------------------------------------------; - ; Now, get information about the video card into ; - ; a data structure ; - ;--------------------------------------------------; + ;--------------------------------------------------; + ; Now, get information about the video card into ; + ; a data structure ; + ;--------------------------------------------------; - mov edi,RMREGS - mov dword[fs:0],'VBE1' ; Request VBE 2.0 info - mov dword[RMREGS.eax],4f00h - mov word[RMREGS.es],ax ; Real mode segment of DOS - ; buffer - mov dword[RMREGS.edi],0 + mov edi,RMREGS + mov dword[fs:0],'VBE1' ; Request VBE 2.0 info + mov dword[RMREGS.eax],4f00h + mov [RMREGS.es],ax ; Real mode segment of DOS buffer + mov dword[RMREGS.edi],0 - push es - push ds - pop es - mov eax,300h - mov ebx,10h - xor ecx,ecx - int 31h ; Simulate real mode interrupt - pop es + push es + push ds + pop es + mov eax,300h + mov ebx,10h + xor ecx,ecx + int 31h ; Simulate real mode interrupt + pop es - jnc .int1ok - mov edx,.noint1message - jmp VESA12EXITTODOS + jnc .int1ok + mov edx,.noint1message + jmp VESA12EXITTODOS - .int1ok ; Real mode int successful!!! - mov eax,[RMREGS.eax] - cmp al,4fh ; Check vbe interrupt went OK - jz .vbedetected - mov edx,.novbemessage - jmp VESA12EXITTODOS +.int1ok ; Real mode int successful!!! + mov eax,[RMREGS.eax] + cmp al,4fh ; Check vbe interrupt went OK + jz .vbedetected + mov edx,.novbemessage + jmp VESA12EXITTODOS - .vbedetected - cmp dword[fs:0000],'VESA' - jz .vesadetected ; Check for presence of vesa - mov edx,.novesamessage - jmp VESA12EXITTODOS +.vbedetected + cmp dword[fs:0000],'VESA' + jz .vesadetected ; Check for presence of vesa + mov edx,.novesamessage + jmp VESA12EXITTODOS - .vesadetected - cmp word[fs:0004],102h - jae .vesa12detected ; Check we've got VESA 1.2 or greater - mov edx,.novesa2message - jmp VESA12EXITTODOS +.vesadetected + cmp word[fs:0004],102h + jae .vesa12detected ; Check we've got VESA 1.2 or greater + mov edx,.novesa2message + jmp VESA12EXITTODOS - ;-----------------------------------------------------; - ; OK - vesa 2.0 or greater has been detected. Copy ; - ; mode information into VESAmodelist ; - ;-----------------------------------------------------; + ;-----------------------------------------------------; + ; OK - vesa 2.0 or greater has been detected. Copy ; + ; mode information into VESAmodelist ; + ;-----------------------------------------------------; .vesa12detected - mov ax,[fs:12h] ; Get no. of 64k blocks - mov [noblocks],ax - mov ax, 2 - mov bx,[fs:10h] - int 31h + mov ax,[fs:12h] ; Get no. of 64k blocks + mov [noblocks],ax + mov ax, 2 + mov bx,[fs:10h] + int 31h - jnc .wegottheselector - mov edx, .oopsnoselector - jmp VESA12EXITTODOS + jnc .wegottheselector + mov edx, .oopsnoselector + jmp VESA12EXITTODOS - .wegottheselector +.wegottheselector - mov gs,ax - xor eax,eax - mov ebp,VESAmodelist - mov ecx,512 - mov ax,[fs:0eh] + mov gs,ax + xor eax,eax + mov ebp,VESAmodelist + mov ecx,512 + mov ax,[fs:0eh] - .loopcopymodes - mov bx,[gs:eax] - mov [ebp],bx - cmp bx,0ffffh - jz .copiedmodes - add ebp,2 - add eax,2 - dec ecx - jz .outofmodelistspace - jmp .loopcopymodes +.loopcopymodes + mov bx,[gs:eax] + mov [ebp],bx + cmp bx,0ffffh + jz .copiedmodes + add ebp,2 + add eax,2 + dec ecx + jz .outofmodelistspace + jmp .loopcopymodes - .outofmodelistspace - mov edx,.outofmodelistspacemessage - jmp VESA12EXITTODOS +.outofmodelistspace + mov edx,.outofmodelistspacemessage + jmp VESA12EXITTODOS - ;----------------------------------------------; - ; OK - Scan the mode list to find a matching ; - ; mode for vesa2_x, vesa2_y and vesa2_depth ; - ;----------------------------------------------; + ;----------------------------------------------; + ; OK - Scan the mode list to find a matching ; + ; mode for vesa2_x, vesa2_y and vesa2_depth ; + ;----------------------------------------------; .copiedmodes - mov ebp,VESAmodelist - xor ecx,ecx + mov ebp,VESAmodelist + xor ecx,ecx .loopcheckmodes - mov cx, [ebp] - cmp cx, 0ffffh - jnz .notendoflist + mov cx, [ebp] + cmp cx, 0ffffh + jnz .notendoflist - mov edx,.endoflist - jmp VESA12EXITTODOS + mov edx,.endoflist + jmp VESA12EXITTODOS .notendoflist - mov edi, RMREGS - mov dword[RMREGS.eax],4f01h - mov dword[RMREGS.ebx],0 - mov [RMREGS.ecx],ecx - mov dword[RMREGS.edi],0 + mov edi, RMREGS + mov dword[RMREGS.eax],4f01h + mov dword[RMREGS.ebx],0 + mov [RMREGS.ecx],ecx + mov dword[RMREGS.edi],0 - push es - push ds - pop es - mov eax,300h - mov ebx,10h - xor ecx,ecx - int 31h ; Simulate real mode interrupt - pop es - jnc .modecheckok - mov edx,.modecheckfail - jmp VESA12EXITTODOS + push es + push ds + pop es + mov eax,300h + mov ebx,10h + xor ecx,ecx + int 31h ; Simulate real mode interrupt + pop es + jnc .modecheckok + mov edx,.modecheckfail + jmp VESA12EXITTODOS - .modecheckok - add ebp,2 +.modecheckok + add ebp,2 - test word[fs:0000h],1b - jz near .loopcheckmodes ; If mode is not available + test word[fs:0000h],1b + jz near .loopcheckmodes ; If mode is not available ; ; xor eax,eax @@ -233,15 +232,15 @@ NEWSYM InitVesa12 ; mov dl,10 ; int 21h - mov eax,[vesa2_x] - cmp [fs:12h],ax ; Check that the height matches - jnz near .loopcheckmodes - mov eax,[vesa2_y] - cmp [fs:14h],ax ; Check that the width matches - jnz near .loopcheckmodes - mov al,[vesa2_bits] - cmp [fs:19h],al ; Check bits/pixel for match - jnz near .loopcheckmodes + mov eax,[vesa2_x] + cmp [fs:12h],ax ; Check that the height matches + jnz near .loopcheckmodes + mov eax,[vesa2_y] + cmp [fs:14h],ax ; Check that the width matches + jnz near .loopcheckmodes + mov al,[vesa2_bits] + cmp [fs:19h],al ; Check bits/pixel for match + jnz near .loopcheckmodes ; mov ah,07h ; int 21h @@ -257,23 +256,23 @@ NEWSYM InitVesa12 ; 1 = Window is writeable ; D3-D7 = Reserved - mov byte[.whichwin],0 - mov al,[fs:2] ; Get window A attributes - and al,0100b - cmp al,0100b - je .foundwin ; Mode supported - mov al,[fs:3] ; Get window B attributes - and al,0100b - cmp al,0100b - jne .foundwin ; Mode not supported - mov byte[.whichwin],1 + mov byte[.whichwin],0 + mov al,[fs:2] ; Get window A attributes + and al,0100b + cmp al,0100b + je .foundwin ; Mode supported + mov al,[fs:3] ; Get window B attributes + and al,0100b + cmp al,0100b + jne .foundwin ; Mode not supported + mov byte[.whichwin],1 .foundwin - ; Success - a match has been found!! + ; Success - a match has been found!! - sub ebp,2 - mov ax,[ebp] - mov [vesamode],ax ; Store vesa 1.2 mode number + sub ebp,2 + mov ax,[ebp] + mov [vesamode],ax ; Store vesa 1.2 mode number ; and eax,0FFFFh ; push eax ; mov ax,0003h @@ -282,229 +281,227 @@ NEWSYM InitVesa12 ; call printnum ; jmp DosExit - mov ax,[fs:10h] - mov byte[vesa2red10],0 - mov byte[vesa2_rposng],11 - mov byte[vesa2_gposng],6 - mov byte[vesa2_bposng],0 - mov dword[vesa2_clbitng],1111011111011110b - mov dword[vesa2_clbitng2],11110111110111101111011111011110b - mov dword[vesa2_clbitng2+4],11110111110111101111011111011110b - mov dword[vesa2_clbitng3],0111101111101111b - mov [bytesperscanline],ax ; Store bytes per scan line - cmp byte[fs:20h],10 - jne .nored10 - mov byte[fs:20h],11 - mov byte[vesa2red10],1 - mov byte[vesa2_rposng],10 - mov byte[vesa2_gposng],5 - mov dword[vesa2_clbitng],0111101111011110b - mov dword[vesa2_clbitng2],01111011110111100111101111011110b - mov dword[vesa2_clbitng2+4],01111011110111100111101111011110b - mov dword[vesa2_clbitng3],0011110111101111b + mov ax,[fs:10h] + mov byte[vesa2red10],0 + mov byte[vesa2_rposng],11 + mov byte[vesa2_gposng],6 + mov byte[vesa2_bposng],0 + mov dword[vesa2_clbitng],1111011111011110b + mov dword[vesa2_clbitng2],11110111110111101111011111011110b + mov dword[vesa2_clbitng2+4],11110111110111101111011111011110b + mov dword[vesa2_clbitng3],0111101111101111b + mov [bytesperscanline],ax ; Store bytes per scan line + cmp byte[fs:20h],10 + jne .nored10 + mov byte[fs:20h],11 + mov byte[vesa2red10],1 + mov byte[vesa2_rposng],10 + mov byte[vesa2_gposng],5 + mov dword[vesa2_clbitng],0111101111011110b + mov dword[vesa2_clbitng2],01111011110111100111101111011110b + mov dword[vesa2_clbitng2+4],01111011110111100111101111011110b + mov dword[vesa2_clbitng3],0011110111101111b .nored10 - ; fix up bit lengths - mov al,16 - sub al,[fs:20h] - mov ah,[fs:22h] - sub ah,[fs:20h] - mov bl,[fs:24h] - sub bl,[fs:20h] - mov bh,al - cmp bh,ah - jb .scheck1 - mov bh,ah + ; fix up bit lengths + mov al,16 + sub al,[fs:20h] + mov ah,[fs:22h] + sub ah,[fs:20h] + mov bl,[fs:24h] + sub bl,[fs:20h] + mov bh,al + cmp bh,ah + jb .scheck1 + mov bh,ah .scheck1 - cmp bh,bl - jb .scheck2 - mov bh,bl + cmp bh,bl + jb .scheck2 + mov bh,bl .scheck2 - mov byte[fs:19h],5 + mov byte[fs:19h],5 - mov al,16 - sub al,[fs:22h] - mov ah,[fs:20h] - sub ah,[fs:22h] - mov bl,[fs:24h] - sub bl,[fs:22h] - mov bh,al - cmp bh,ah - jb .scheck1b - mov bh,ah + mov al,16 + sub al,[fs:22h] + mov ah,[fs:20h] + sub ah,[fs:22h] + mov bl,[fs:24h] + sub bl,[fs:22h] + mov bh,al + cmp bh,ah + jb .scheck1b + mov bh,ah .scheck1b - cmp bh,bl - jb .scheck2b - mov bh,bl + cmp bh,bl + jb .scheck2b + mov bh,bl .scheck2b - mov [fs:21h],bh + mov [fs:21h],bh - mov al,16 - sub al,[fs:24h] - mov ah,[fs:20h] - sub ah,[fs:24h] - mov bl,[fs:22h] - sub bl,[fs:24h] - mov bh,al - cmp bh,ah - jb .scheck1c - mov bh,ah + mov al,16 + sub al,[fs:24h] + mov ah,[fs:20h] + sub ah,[fs:24h] + mov bl,[fs:22h] + sub bl,[fs:24h] + mov bh,al + cmp bh,ah + jb .scheck1c + mov bh,ah .scheck1c - cmp bh,bl - jb .scheck2c - mov bh,bl + cmp bh,bl + jb .scheck2c + mov bh,bl .scheck2c - mov [fs:23h],bh + mov [fs:23h],bh - mov word[vesa2_clbit],0 + mov word[vesa2_clbit],0 - cmp byte[fs:20h],10 - jne .nottopbit - mov word[vesa2_usbit],8000h + cmp byte[fs:20h],10 + jne .nottopbit + mov word[vesa2_usbit],8000h .nottopbit - ; Process Red Stuff - mov al,[fs:20h] ; bit sizes = [fs:19h,21h,23h] - mov cl,al - mov bx,1 - shl bx,cl - cmp byte[fs:19h],6 - jne .no6bit - mov [vesa2_usbit],bx - inc al + ; Process Red Stuff + mov al,[fs:20h] ; bit sizes = [fs:19h,21h,23h] + mov cl,al + mov bx,1 + shl bx,cl + cmp byte[fs:19h],6 + jne .no6bit + mov [vesa2_usbit],bx + inc al .no6bit - or [vesa2_clbit],bx - mov [vesa2_rpos],al - dec al - mov cl,al - mov bx,001Fh - cmp cl,0FFh - je .shrr - shl bx,cl - jmp .shlr + or [vesa2_clbit],bx + mov [vesa2_rpos],al + dec al + mov cl,al + mov bx,001Fh + cmp cl,0FFh + je .shrr + shl bx,cl + jmp .shlr .shrr - shr bx,1 + shr bx,1 .shlr - mov [vesa2_rfull],bx - add al,5 - mov bx,1 - mov cl,al - shl bx,cl - mov [vesa2_rtrcl],bx - xor bx,0FFFFh - mov [vesa2_rtrcla],bx + mov [vesa2_rfull],bx + add al,5 + mov bx,1 + mov cl,al + shl bx,cl + mov [vesa2_rtrcl],bx + xor bx,0FFFFh + mov [vesa2_rtrcla],bx - ; Process Green Stuff - mov al,[fs:22h] - mov cl,al - mov bx,1 - shl bx,cl - cmp byte[fs:21h],6 - jne .no6bitb - mov [vesa2_usbit],bx - inc al + ; Process Green Stuff + mov al,[fs:22h] + mov cl,al + mov bx,1 + shl bx,cl + cmp byte[fs:21h],6 + jne .no6bitb + mov [vesa2_usbit],bx + inc al .no6bitb - or [vesa2_clbit],bx - mov [vesa2_gpos],al - dec al - mov cl,al - mov bx,001Fh - cmp cl,0FFh - je .shrg - shl bx,cl - jmp .shlg + or [vesa2_clbit],bx + mov [vesa2_gpos],al + dec al + mov cl,al + mov bx,001Fh + cmp cl,0FFh + je .shrg + shl bx,cl + jmp .shlg .shrg - shr bx,1 + shr bx,1 .shlg - mov [vesa2_gfull],bx - add al,5 - mov bx,1 - mov cl,al - shl bx,cl - mov [vesa2_gtrcl],bx - xor bx,0FFFFh - mov [vesa2_gtrcla],bx + mov [vesa2_gfull],bx + add al,5 + mov bx,1 + mov cl,al + shl bx,cl + mov [vesa2_gtrcl],bx + xor bx,0FFFFh + mov [vesa2_gtrcla],bx - ; Process Blue Stuff - mov al,[fs:24h] - mov cl,al - mov bx,1 - shl bx,cl - cmp byte[fs:23h],6 - jne .no6bitc - mov [vesa2_usbit],bx - inc al + ; Process Blue Stuff + mov al,[fs:24h] + mov cl,al + mov bx,1 + shl bx,cl + cmp byte[fs:23h],6 + jne .no6bitc + mov [vesa2_usbit],bx + inc al .no6bitc - or [vesa2_clbit],bx - mov [vesa2_bpos],al - dec al - mov cl,al - mov bx,001Fh - cmp cl,0FFh - je .shrb - shl bx,cl - jmp .shlb + or [vesa2_clbit],bx + mov [vesa2_bpos],al + dec al + mov cl,al + mov bx,001Fh + cmp cl,0FFh + je .shrb + shl bx,cl + jmp .shlb .shrb - shr bx,1 + shr bx,1 .shlb - mov [vesa2_bfull],bx - add al,5 - mov bx,1 - mov cl,al - shl bx,cl - mov [vesa2_btrcl],bx - xor bx,0FFFFh - mov [vesa2_btrcla],bx + mov [vesa2_bfull],bx + add al,5 + mov bx,1 + mov cl,al + shl bx,cl + mov [vesa2_btrcl],bx + xor bx,0FFFFh + mov [vesa2_btrcla],bx - xor word[vesa2_clbit],0FFFFh + xor word[vesa2_clbit],0FFFFh - mov ax,[fs:4] - mov [granularity],ax - xor edx,edx - mov ax,64 - mov bx,[granularity] - div bx - mov [granadd],ax + mov ax,[fs:4] + mov [granularity],ax + xor edx,edx + mov ax,64 + mov bx,[granularity] + div bx + mov [granadd],ax - call genfulladdtab + call genfulladdtab - xor eax,eax - xor ebx,ebx - xor ecx,ecx - xor edx,edx - mov ax,4f02h - mov bx,[vesamode] - int 10h ; Set the vesa mode - cmp ax,004fh - jz .modesetok - mov edx,.unableset - jmp VESA12EXITTODOS ; Failure!!! + xor eax,eax + xor ebx,ebx + xor ecx,ecx + xor edx,edx + mov ax,4f02h + mov bx,[vesamode] + int 10h ; Set the vesa mode + cmp ax,004fh + jz .modesetok + mov edx,.unableset + jmp VESA12EXITTODOS ; Failure!!! - .modesetok +.modesetok ;******************************* EXTRA BIT **************************** - ret + ret - ; Check logical scanline length - mov eax,4f06h - mov ebx,1 - int 10h - cmp cx,[vesa2_x] - je .correctwidth + ; Check logical scanline length + mov eax,4f06h + mov ebx,1 + int 10h + cmp cx,[vesa2_x] + je .correctwidth - mov eax,4f06h ; VBE Set/Get logical scan line - ; length - mov ebx,0 ; Set scan line length in - ; pixels - mov ecx, [vesa2_x] ; Desired screen width - int 10h - cmp ax,04fh - jz .correctwidth - mov edx, .unablescan - jmp VESA12EXITTODOS ; Failure!!! + mov eax,4f06h ; VBE Set/Get logical scan line length + mov ebx,0 ; Set scan line length in pixels + mov ecx, [vesa2_x] ; Desired screen width + int 10h + cmp ax,04fh + jz .correctwidth + mov edx, .unablescan + jmp VESA12EXITTODOS ; Failure!!! - .correctwidth +.correctwidth - ret + ret SECTION .data .nomemmessage db ': Unable to locate DOS memory.$' diff --git a/zsnes/src/dos/vesa2.asm b/zsnes/src/dos/vesa2.asm index ec308c77..49d0f262 100644 --- a/zsnes/src/dos/vesa2.asm +++ b/zsnes/src/dos/vesa2.asm @@ -77,84 +77,85 @@ NEWSYM dcolortab, times 256 resd 1 SECTION .text NEWSYM genfulladdtab - ; Write to buffer - cmp byte[newengen],1 - jne .notneweng - cmp byte[vesa2red10],0 - jne near genfulladdtabred + ; Write to buffer + cmp byte[newengen],1 + jne .notneweng + cmp byte[vesa2red10],0 + jne near genfulladdtabred .notneweng - xor ecx,ecx + xor ecx,ecx .loopers - mov ax,cx - test [vesa2_rtrcl],cx - jz .nor - and ax,[vesa2_rtrcla] - or ax,[vesa2_rfull] + mov ax,cx + test [vesa2_rtrcl],cx + jz .nor + and ax,[vesa2_rtrcla] + or ax,[vesa2_rfull] .nor - test [vesa2_gtrcl],cx - jz .nog - and ax,[vesa2_gtrcla] - or ax,[vesa2_gfull] + test [vesa2_gtrcl],cx + jz .nog + and ax,[vesa2_gtrcla] + or ax,[vesa2_gfull] .nog - test [vesa2_btrcl],cx - jz .nob - and ax,[vesa2_btrcla] - or ax,[vesa2_bfull] + test [vesa2_btrcl],cx + jz .nob + and ax,[vesa2_btrcla] + or ax,[vesa2_bfull] .nob - shl ax,1 - mov [fulladdtab+ecx*2],ax - dec cx - jnz .loopers - ret + shl ax,1 + mov [fulladdtab+ecx*2],ax + dec cx + jnz .loopers + ret NEWSYM genfulladdtabred NEWSYM genfulladdtabng - ; Write to buffer - xor ecx,ecx + ; Write to buffer + xor ecx,ecx .loopers - mov ax,cx - test cx,0100000000000000b - jz .nor - and ax,1011111111111111b - or ax, 0011110000000000b + mov ax,cx + test cx,0100000000000000b + jz .nor + and ax,1011111111111111b + or ax, 0011110000000000b .nor - test cx,0000001000000000b - jz .nog - and ax,1111110111111111b - or ax, 0000000111100000b + test cx,0000001000000000b + jz .nog + and ax,1111110111111111b + or ax, 0000000111100000b .nog - test cx,0000000000010000b - jz .nob - and ax,1111111111101111b - or ax, 0000000000001111b + test cx,0000000000010000b + jz .nob + and ax,1111111111101111b + or ax, 0000000000001111b .nob - shl ax,1 - mov [fulladdtab+ecx*2],ax - dec cx - jnz .loopers - ret + shl ax,1 + mov [fulladdtab+ecx*2],ax + dec cx + jnz .loopers + ret +%ifdef __MSDOS__ NEWSYM VESA2EXITTODOS - mov byte[videotroub],1 - cmp byte[ExitFromGUI],0 - je .nogui - mov [ErrorPointer],edx - ret + mov byte[videotroub],1 + cmp byte[ExitFromGUI],0 + je .nogui + mov [ErrorPointer],edx + ret .nogui - mov ax,0003h - int 10h - push edx - mov edx,.exitfromvesa2 - call PrintStr - pop edx - call PrintStr - mov edx,.return - call PrintStr + mov ax,0003h + int 10h + push edx + mov edx,.exitfromvesa2 + call PrintStr + pop edx + call PrintStr + mov edx,.return + call PrintStr - mov dl,[InitDrive] - mov ebx,InitDir - call Change_Dir - jmp DosExit + mov dl,[InitDrive] + mov ebx,InitDir + call Change_Dir + jmp DosExit SECTION .data .exitfromvesa2 db 'Unable to Initialize VESA2 : ',0 @@ -162,177 +163,174 @@ SECTION .data SECTION .text ;******************************************************* -; Set up Vesa 2 +; Set up Vesa 2 ;******************************************************* NEWSYM InitVesa2 - ;-------------------------------------------------; - ; First - allocate some bytes in DOS memory for ; - ; communication with VBE ; - ;-------------------------------------------------; + ;-------------------------------------------------; + ; First - allocate some bytes in DOS memory for ; + ; communication with VBE ; + ;-------------------------------------------------; - mov eax,0100h - mov ebx,512/16 ; 512 bytes - int 31h ; Function 31h,100h - Allocate - ; DOS memory (512 bytes) - jnc .gotmem - mov edx,.nomemmessage - jmp VESA2EXITTODOS + mov eax,0100h + mov ebx,512/16 ; 512 bytes + int 31h ; Function 31h,100h - Allocate + ; DOS memory (512 bytes) + jnc .gotmem + mov edx,.nomemmessage + jmp VESA2EXITTODOS - .gotmem - mov fs,dx ; FS now points to the DOS - ; buffer +.gotmem + mov fs,dx ; FS now points to the DOS buffer + + ;--------------------------------------------------; + ; Now, get information about the video card into ; + ; a data structure ; + ;--------------------------------------------------; + + mov edi,RMREGS + mov dword[fs:0],'VBE2' ; Request VBE 2.0 info + mov dword[RMREGS.eax],4f00h + mov [RMREGS.es],ax ; Real mode segment of DOS buffer + mov dword[RMREGS.edi],0 + + push es + push ds + pop es + mov eax,300h + mov ebx,10h + xor ecx,ecx + int 31h ; Simulate real mode interrupt + pop es + + jnc .int1ok + mov edx,.noint1message + jmp VESA2EXITTODOS - ;--------------------------------------------------; - ; Now, get information about the video card into ; - ; a data structure ; - ;--------------------------------------------------; +.int1ok ; Real mode int successful!!! + mov eax,[RMREGS.eax] + cmp al,4fh ; Check vbe interrupt went OK + jz .vbedetected + mov edx,.novbemessage + jmp VESA2EXITTODOS - mov edi,RMREGS - mov dword[fs:0],'VBE2' ; Request VBE 2.0 info - mov dword[RMREGS.eax],4f00h - mov word[RMREGS.es],ax ; Real mode segment of DOS - ; buffer - mov dword[RMREGS.edi],0 - - push es - push ds - pop es - mov eax,300h - mov ebx,10h - xor ecx,ecx - int 31h ; Simulate real mode interrupt - pop es - - jnc .int1ok - mov edx,.noint1message - jmp VESA2EXITTODOS +.vbedetected + cmp dword[fs:0000],'VESA' + jz .vesadetected ; Check for presence of vesa + mov edx,.novesamessage + jmp VESA2EXITTODOS - .int1ok ; Real mode int successful!!! - mov eax,[RMREGS.eax] - cmp al,4fh ; Check vbe interrupt went OK - jz .vbedetected - mov edx,.novbemessage - jmp VESA2EXITTODOS - - .vbedetected - cmp dword[fs:0000],'VESA' - jz .vesadetected ; Check for presence of vesa - mov edx,.novesamessage - jmp VESA2EXITTODOS +.vesadetected + cmp word[fs:0004],200h + jae .vesa2detected ; Check we've got VESA 2.0 or greater + mov edx,.novesa2message + jmp VESA2EXITTODOS - .vesadetected - cmp word[fs:0004],200h - jae .vesa2detected ; Check we've got VESA 2.0 or greater - mov edx,.novesa2message - jmp VESA2EXITTODOS + ;-----------------------------------------------------; + ; OK - vesa 2.0 or greater has been detected. Copy ; + ; mode information into VESAmodelist ; + ;-----------------------------------------------------; - - ;-----------------------------------------------------; - ; OK - vesa 2.0 or greater has been detected. Copy ; - ; mode information into VESAmodelist ; - ;-----------------------------------------------------; - - .vesa2detected - mov dword[vesa3en],0 - cmp word[fs:004],300h - jb .notvbe3 - mov dword[vesa3en],1 +.vesa2detected + mov dword[vesa3en],0 + cmp word[fs:004],300h + jb .notvbe3 + mov dword[vesa3en],1 .notvbe3 - mov ax,[fs:12h] ; Get no. of 64k blocks - mov [noblocks],ax - mov ax, 2 - mov bx,[fs:10h] - int 31h + mov ax,[fs:12h] ; Get no. of 64k blocks + mov [noblocks],ax + mov ax, 2 + mov bx,[fs:10h] + int 31h - jnc .wegottheselector - mov edx, .oopsnoselector - jmp VESA2EXITTODOS + jnc .wegottheselector + mov edx, .oopsnoselector + jmp VESA2EXITTODOS - .wegottheselector +.wegottheselector - mov gs,ax - xor eax,eax - mov ebp,VESAmodelist - mov ecx,512 - mov ax,[fs:0eh] + mov gs,ax + xor eax,eax + mov ebp,VESAmodelist + mov ecx,512 + mov ax,[fs:0eh] - .loopcopymodes - mov bx,[gs:eax] - mov [ebp],bx - cmp bx,0ffffh - jz .copiedmodes - add ebp,2 - add eax,2 - dec ecx - jz .outofmodelistspace - jmp .loopcopymodes +.loopcopymodes + mov bx,[gs:eax] + mov [ebp],bx + cmp bx,0ffffh + jz .copiedmodes + add ebp,2 + add eax,2 + dec ecx + jz .outofmodelistspace + jmp .loopcopymodes - .outofmodelistspace - mov edx,.outofmodelistspacemessage - jmp VESA2EXITTODOS +.outofmodelistspace + mov edx,.outofmodelistspacemessage + jmp VESA2EXITTODOS - ;----------------------------------------------; - ; OK - Scan the mode list to find a matching ; - ; mode for vesa2_x, vesa2_y and vesa2_depth ; - ;----------------------------------------------; + ;----------------------------------------------; + ; OK - Scan the mode list to find a matching ; + ; mode for vesa2_x, vesa2_y and vesa2_depth ; + ;----------------------------------------------; .copiedmodes - mov ebp,VESAmodelist - xor ecx,ecx + mov ebp,VESAmodelist + xor ecx,ecx .loopcheckmodes - mov cx, [ebp] - cmp cx, 0ffffh - jnz .notendoflist + mov cx, [ebp] + cmp cx, 0ffffh + jnz .notendoflist - mov edx,.endoflist - jmp VESA2EXITTODOS + mov edx,.endoflist + jmp VESA2EXITTODOS .notendoflist - mov edi, RMREGS - mov dword[RMREGS.eax],4f01h - mov dword[RMREGS.ebx],0 - mov [RMREGS.ecx],ecx - mov dword[RMREGS.edi],0 + mov edi, RMREGS + mov dword[RMREGS.eax],4f01h + mov dword[RMREGS.ebx],0 + mov [RMREGS.ecx],ecx + mov dword[RMREGS.edi],0 - push es - push ds - pop es - mov eax,300h - mov ebx,10h - xor ecx,ecx - int 31h ; Simulate real mode interrupt - pop es - jnc .modecheckok - mov edx,.modecheckfail - jmp VESA2EXITTODOS + push es + push ds + pop es + mov eax,300h + mov ebx,10h + xor ecx,ecx + int 31h ; Simulate real mode interrupt + pop es + jnc .modecheckok + mov edx,.modecheckfail + jmp VESA2EXITTODOS - .modecheckok - add ebp,2 +.modecheckok + add ebp,2 - test word[fs:0000h],1b - jz near .loopcheckmodes ; If mode is not available + test word[fs:0000h],1b + jz near .loopcheckmodes ; If mode is not available - mov eax,[vesa2_x] - cmp [fs:12h],ax ; Check that the height matches - jnz near .loopcheckmodes - mov eax,[vesa2_y] - cmp [fs:14h],ax ; Check that the width matches - jnz near .loopcheckmodes - mov al,[vesa2_bits] - cmp [fs:19h],al ; Check bits/pixel for match - jnz near .loopcheckmodes + mov eax,[vesa2_x] + cmp [fs:12h],ax ; Check that the height matches + jnz near .loopcheckmodes + mov eax,[vesa2_y] + cmp [fs:14h],ax ; Check that the width matches + jnz near .loopcheckmodes + mov al,[vesa2_bits] + cmp [fs:19h],al ; Check bits/pixel for match + jnz near .loopcheckmodes - mov byte[TripBufAvail],1 - test word[fs:0000h],400h - jz .notbuf - mov byte[TripBufAvail],1 + mov byte[TripBufAvail],1 + test word[fs:0000h],400h + jz .notbuf + mov byte[TripBufAvail],1 .notbuf .notvesa3 @@ -347,148 +345,148 @@ NEWSYM InitVesa2 ; 1 = Window is writeable ; D3-D7 = Reserved - mov byte[.whichwin],0 - mov al,[fs:2] ; Get window A attributes - and al,0100b - cmp al,0100b - je .foundwin ; Mode supported - mov al,[fs:3] ; Get window B attributes - and al,0100b - cmp al,0100b - jne .foundwin ; Mode not supported - mov byte[.whichwin],1 + mov byte[.whichwin],0 + mov al,[fs:2] ; Get window A attributes + and al,0100b + cmp al,0100b + je .foundwin ; Mode supported + mov al,[fs:3] ; Get window B attributes + and al,0100b + cmp al,0100b + jne .foundwin ; Mode not supported + mov byte[.whichwin],1 .foundwin - ; Success - a match has been found!! + ; Success - a match has been found!! - sub ebp,2 - mov ax,[ebp] - mov [vesamode],ax ; Store vesa 2 mode number + sub ebp,2 + mov ax,[ebp] + mov [vesamode],ax ; Store vesa 2 mode number - mov ax,[fs:10h] - mov byte[vesa2red10],0 - mov byte[vesa2_rposng],11 - mov byte[vesa2_gposng],6 - mov byte[vesa2_bposng],0 - mov dword[vesa2_clbitng],1111011111011110b - mov dword[vesa2_clbitng2],11110111110111101111011111011110b - mov dword[vesa2_clbitng2+4],11110111110111101111011111011110b - mov dword[vesa2_clbitng3],0111101111101111b - mov [bytesperscanline],ax ; Store bytes per scan line - cmp byte[fs:20h],10 - jne near .nored10 - mov byte[fs:20h],11 - mov byte[vesa2red10],1 - mov byte[vesa2_rposng],10 - mov byte[vesa2_gposng],5 - mov dword[vesa2_clbitng],0111101111011110b - mov dword[vesa2_clbitng2],01111011110111100111101111011110b - mov dword[vesa2_clbitng2+4],01111011110111100111101111011110b - mov dword[vesa2_clbitng3],0011110111101111b - mov dword[UnusedBit], 10000000000000001000000000000000b - mov dword[HalfTrans], 01111011110111100111101111011110b - mov dword[UnusedBitXor], 01111111111111110111111111111111b - mov dword[UnusedBit+4], 10000000000000001000000000000000b - mov dword[HalfTrans+4], 01111011110111100111101111011110b - mov dword[UnusedBitXor+4],01111111111111110111111111111111b - mov dword[HalfTransB], 00000100001000010000010000100001b - mov dword[HalfTransB+4], 00000100001000010000010000100001b - mov dword[HalfTransC], 01111011110111100111101111011110b - mov dword[HalfTransC+4], 01111011110111100111101111011110b - mov dword[ngrposng],10 - mov dword[nggposng],5 - mov dword[ngbposng],0 + mov ax,[fs:10h] + mov byte[vesa2red10],0 + mov byte[vesa2_rposng],11 + mov byte[vesa2_gposng],6 + mov byte[vesa2_bposng],0 + mov dword[vesa2_clbitng],1111011111011110b + mov dword[vesa2_clbitng2],11110111110111101111011111011110b + mov dword[vesa2_clbitng2+4],11110111110111101111011111011110b + mov dword[vesa2_clbitng3],0111101111101111b + mov [bytesperscanline],ax ; Store bytes per scan line + cmp byte[fs:20h],10 + jne near .nored10 + mov byte[fs:20h],11 + mov byte[vesa2red10],1 + mov byte[vesa2_rposng],10 + mov byte[vesa2_gposng],5 + mov dword[vesa2_clbitng],0111101111011110b + mov dword[vesa2_clbitng2],01111011110111100111101111011110b + mov dword[vesa2_clbitng2+4],01111011110111100111101111011110b + mov dword[vesa2_clbitng3],0011110111101111b + mov dword[UnusedBit], 10000000000000001000000000000000b + mov dword[HalfTrans], 01111011110111100111101111011110b + mov dword[UnusedBitXor], 01111111111111110111111111111111b + mov dword[UnusedBit+4], 10000000000000001000000000000000b + mov dword[HalfTrans+4], 01111011110111100111101111011110b + mov dword[UnusedBitXor+4],01111111111111110111111111111111b + mov dword[HalfTransB], 00000100001000010000010000100001b + mov dword[HalfTransB+4], 00000100001000010000010000100001b + mov dword[HalfTransC], 01111011110111100111101111011110b + mov dword[HalfTransC+4], 01111011110111100111101111011110b + mov dword[ngrposng],10 + mov dword[nggposng],5 + mov dword[ngbposng],0 .nored10 - ; fix up bit lengths - mov al,16 - sub al,[fs:20h] - mov ah,[fs:22h] - sub ah,[fs:20h] - mov bl,[fs:24h] - sub bl,[fs:20h] - mov bh,al - cmp bh,ah - jb .scheck1 - mov bh,ah + ; fix up bit lengths + mov al,16 + sub al,[fs:20h] + mov ah,[fs:22h] + sub ah,[fs:20h] + mov bl,[fs:24h] + sub bl,[fs:20h] + mov bh,al + cmp bh,ah + jb .scheck1 + mov bh,ah .scheck1 - cmp bh,bl - jb .scheck2 - mov bh,bl + cmp bh,bl + jb .scheck2 + mov bh,bl .scheck2 - mov byte[fs:19h],5 + mov byte[fs:19h],5 - mov al,16 - sub al,[fs:22h] - mov ah,[fs:20h] - sub ah,[fs:22h] - mov bl,[fs:24h] - sub bl,[fs:22h] - mov bh,al - cmp bh,ah - jb .scheck1b - mov bh,ah + mov al,16 + sub al,[fs:22h] + mov ah,[fs:20h] + sub ah,[fs:22h] + mov bl,[fs:24h] + sub bl,[fs:22h] + mov bh,al + cmp bh,ah + jb .scheck1b + mov bh,ah .scheck1b - cmp bh,bl - jb .scheck2b - mov bh,bl + cmp bh,bl + jb .scheck2b + mov bh,bl .scheck2b - mov [fs:21h],bh + mov [fs:21h],bh - mov al,16 - sub al,[fs:24h] - mov ah,[fs:20h] - sub ah,[fs:24h] - mov bl,[fs:22h] - sub bl,[fs:24h] - mov bh,al - cmp bh,ah - jb .scheck1c - mov bh,ah + mov al,16 + sub al,[fs:24h] + mov ah,[fs:20h] + sub ah,[fs:24h] + mov bl,[fs:22h] + sub bl,[fs:24h] + mov bh,al + cmp bh,ah + jb .scheck1c + mov bh,ah .scheck1c - cmp bh,bl - jb .scheck2c - mov bh,bl + cmp bh,bl + jb .scheck2c + mov bh,bl .scheck2c - mov [fs:23h],bh + mov [fs:23h],bh - mov word[vesa2_clbit],0 + mov word[vesa2_clbit],0 - cmp byte[fs:20h],10 - jne .nottopbit - mov word[vesa2_usbit],8000h + cmp byte[fs:20h],10 + jne .nottopbit + mov word[vesa2_usbit],8000h .nottopbit - ; Process Red Stuff - mov al,[fs:20h] ; bit sizes = [fs:19h,21h,23h] - mov cl,al - mov bx,1 - shl bx,cl - cmp byte[fs:19h],6 - jne .no6bit - mov [vesa2_usbit],bx - inc al + ; Process Red Stuff + mov al,[fs:20h] ; bit sizes = [fs:19h,21h,23h] + mov cl,al + mov bx,1 + shl bx,cl + cmp byte[fs:19h],6 + jne .no6bit + mov [vesa2_usbit],bx + inc al .no6bit - or [vesa2_clbit],bx - mov [vesa2_rpos],al - dec al - mov cl,al - mov bx,001Fh - cmp cl,0FFh - je .shrr - shl bx,cl - jmp .shlr + or [vesa2_clbit],bx + mov [vesa2_rpos],al + dec al + mov cl,al + mov bx,001Fh + cmp cl,0FFh + je .shrr + shl bx,cl + jmp .shlr .shrr - shr bx,1 + shr bx,1 .shlr - mov [vesa2_rfull],bx - add al,5 - mov bx,1 - mov cl,al - shl bx,cl - mov [vesa2_rtrcl],bx - xor bx,0FFFFh - mov [vesa2_rtrcla],bx + mov [vesa2_rfull],bx + add al,5 + mov bx,1 + mov cl,al + shl bx,cl + mov [vesa2_rtrcl],bx + xor bx,0FFFFh + mov [vesa2_rtrcla],bx ; mov ax,03h ; int 10h @@ -496,120 +494,118 @@ NEWSYM InitVesa2 ; call printhex ; jmp DosExit - ; Process Green Stuff - mov al,[fs:22h] - mov cl,al - mov bx,1 - shl bx,cl - cmp byte[fs:21h],6 - jne .no6bitb - mov [vesa2_usbit],bx - inc al + ; Process Green Stuff + mov al,[fs:22h] + mov cl,al + mov bx,1 + shl bx,cl + cmp byte[fs:21h],6 + jne .no6bitb + mov [vesa2_usbit],bx + inc al .no6bitb - or [vesa2_clbit],bx - mov [vesa2_gpos],al - dec al - mov cl,al - mov bx,001Fh - cmp cl,0FFh - je .shrg - shl bx,cl - jmp .shlg + or [vesa2_clbit],bx + mov [vesa2_gpos],al + dec al + mov cl,al + mov bx,001Fh + cmp cl,0FFh + je .shrg + shl bx,cl + jmp .shlg .shrg - shr bx,1 + shr bx,1 .shlg - mov [vesa2_gfull],bx - add al,5 - mov bx,1 - mov cl,al - shl bx,cl - mov [vesa2_gtrcl],bx - xor bx,0FFFFh - mov [vesa2_gtrcla],bx + mov [vesa2_gfull],bx + add al,5 + mov bx,1 + mov cl,al + shl bx,cl + mov [vesa2_gtrcl],bx + xor bx,0FFFFh + mov [vesa2_gtrcla],bx - ; Process Blue Stuff - mov al,[fs:24h] - mov cl,al - mov bx,1 - shl bx,cl - cmp byte[fs:23h],6 - jne .no6bitc - mov [vesa2_usbit],bx - inc al + ; Process Blue Stuff + mov al,[fs:24h] + mov cl,al + mov bx,1 + shl bx,cl + cmp byte[fs:23h],6 + jne .no6bitc + mov [vesa2_usbit],bx + inc al .no6bitc - or [vesa2_clbit],bx - mov [vesa2_bpos],al - dec al - mov cl,al - mov bx,001Fh - cmp cl,0FFh - je .shrb - shl bx,cl - jmp .shlb + or [vesa2_clbit],bx + mov [vesa2_bpos],al + dec al + mov cl,al + mov bx,001Fh + cmp cl,0FFh + je .shrb + shl bx,cl + jmp .shlb .shrb - shr bx,1 + shr bx,1 .shlb - mov [vesa2_bfull],bx - add al,5 - mov bx,1 - mov cl,al - shl bx,cl - mov [vesa2_btrcl],bx - xor bx,0FFFFh - mov [vesa2_btrcla],bx + mov [vesa2_bfull],bx + add al,5 + mov bx,1 + mov cl,al + shl bx,cl + mov [vesa2_btrcl],bx + xor bx,0FFFFh + mov [vesa2_btrcla],bx - xor word[vesa2_clbit],0FFFFh + xor word[vesa2_clbit],0FFFFh - call genfulladdtab + call genfulladdtab - test word[fs:0h],10000000b ; Check if linear available - jnz .linearavailable - mov edx,.nolframebuffer - jmp VESA2EXITTODOS ; None available + test word[fs:0h],10000000b ; Check if linear available + jnz .linearavailable + mov edx,.nolframebuffer + jmp VESA2EXITTODOS ; None available - ;---------------------------------------------; - ; OK - now set the vesa 2 mode based on the ; - ; information gleaned... ; - ;---------------------------------------------; + ;---------------------------------------------; + ; OK - now set the vesa 2 mode based on the ; + ; information gleaned... ; + ;---------------------------------------------; - .linearavailable - or word[vesamode],4000h ; Convert mode to its LFB - ; equivalent - mov ebx,[fs:28h] ; Read in physical base ptr + .linearavailable + or word[vesamode],4000h ; Convert mode to its LFB equivalent + mov ebx,[fs:28h] ; Read in physical base ptr - mov cx,bx - shr ebx,16 - mov si,[noblocks] - xor edi,edi ; Since noblocks = number of - ; 64k blocks, these lines leave - ; si:di holding byte size - mov eax,800h - int 31h - jnc .mappedphysicalarea - mov edx,.unablemap - jmp VESA2EXITTODOS ; Failure!!! + mov cx,bx + shr ebx,16 + mov si,[noblocks] + xor edi,edi ; Since noblocks = number of 64k blocks, + ; these lines leave si:di holding byte size + mov eax,800h + int 31h + jnc .mappedphysicalarea + mov edx,.unablemap + jmp VESA2EXITTODOS ; Failure!!! - .mappedphysicalarea - shl ebx,16 - mov bx,cx - mov [LFBpointer],ebx - mov eax,ebx - sub eax,[ZSNESBase] - mov [VESAAddr],eax +.mappedphysicalarea + shl ebx,16 + mov bx,cx + mov [LFBpointer],ebx + mov eax,ebx + sub eax,[ZSNESBase] + mov [VESAAddr],eax - xor eax,eax - xor ebx,ebx - xor ecx,ecx - xor edx,edx - mov ax,4f02h - mov bx,[vesamode] - int 10h ; Set the vesa mode - cmp ax,004fh - jz .modesetok - mov edx,.unableset - jmp VESA2EXITTODOS ; Failure!!! + xor eax,eax + xor ebx,ebx + xor ecx,ecx + xor edx,edx + mov ax,4f02h + mov bx,[vesamode] + int 10h ; Set the vesa mode + cmp ax,004fh + jz .modesetok + mov edx,.unableset + jmp VESA2EXITTODOS ; Failure!!! - .modesetok +.modesetok ;******************************* EXTRA BIT **************************** ; cmp byte[.whichwin],1 ; Check if Write is at Window B @@ -622,84 +618,82 @@ NEWSYM InitVesa2 ; ;.nowinB - ; Check logical scanline length - mov eax,4f06h - mov ebx,1 - int 10h - cmp cx,[vesa2_x] - je .correctwidth + ; Check logical scanline length + mov eax,4f06h + mov ebx,1 + int 10h + cmp cx,[vesa2_x] + je .correctwidth - mov eax,4f06h ; VBE Set/Get logical scan line - ; length - mov ebx,0 ; Set scan line length in - ; pixels - mov ecx, [vesa2_x] ; Desired screen width - int 10h - cmp ax,04fh - jz .correctwidth - mov edx, .unablescan - jmp VESA2EXITTODOS ; Failure!!! + mov eax,4f06h ; VBE Set/Get logical scan line length + mov ebx,0 ; Set scan line length in pixels + mov ecx, [vesa2_x] ; Desired screen width + int 10h + cmp ax,04fh + jz .correctwidth + mov edx, .unablescan + jmp VESA2EXITTODOS ; Failure!!! - .correctwidth +.correctwidth ;*************************** END OF EXTRA BIT ************************* - xor eax,eax - mov ecx,1 - int 31h ; Allocate a descriptor + xor eax,eax + mov ecx,1 + int 31h ; Allocate a descriptor - mov bx,ax ; Move our selector into bx + mov bx,ax ; Move our selector into bx - mov ecx,[LFBpointer] - mov dx,cx - shr ecx,16 - mov eax,7 - int 31h ; Set our selector to LFB - jnc .selectornowset - mov edx,.unablelfb - jmp VESA2EXITTODOS ; Failure!!! + mov ecx,[LFBpointer] + mov dx,cx + shr ecx,16 + mov eax,7 + int 31h ; Set our selector to LFB + jnc .selectornowset + mov edx,.unablelfb + jmp VESA2EXITTODOS ; Failure!!! - .selectornowset +.selectornowset - xor ecx,ecx - mov cx,[noblocks] - shl ecx,6 ; Multiply by 64 - shl ecx,10 ; And again by 1024 - sub ecx,1 ; Necessary!!! - mov dx,cx - shr ecx,16 ; CX:DX size of screen - mov eax,8 - int 31h ; Set size of selector - jnc .ok - mov edx,.unablesets - jmp VESA2EXITTODOS ; Failure!!! + xor ecx,ecx + mov cx,[noblocks] + shl ecx,6 ; Multiply by 64 + shl ecx,10 ; And again by 1024 + sub ecx,1 ; Necessary!!! + mov dx,cx + shr ecx,16 ; CX:DX size of screen + mov eax,8 + int 31h ; Set size of selector + jnc .ok + mov edx,.unablesets + jmp VESA2EXITTODOS ; Failure!!! - .ok - lar ecx,ebx - shr ecx,8 - and cl,60h - or cl,93h - and ch,0c0h ; Keep granularity bit - mov ax,9 - int 31h ; Set selector access rights - jnc .accessrightsset - mov edx,.unablesetar - jmp VESA2EXITTODOS +.ok + lar ecx,ebx + shr ecx,8 + and cl,60h + or cl,93h + and ch,0c0h ; Keep granularity bit + mov ax,9 + int 31h ; Set selector access rights + jnc .accessrightsset + mov edx,.unablesetar + jmp VESA2EXITTODOS - .accessrightsset - mov [vesa2selec],bx +.accessrightsset + mov [vesa2selec],bx - cmp byte[vesa2red10],1 - je .red10 - mov eax,565 - jmp .red11 + cmp byte[vesa2red10],1 + je .red10 + mov eax,565 + jmp .red11 .red10 - mov eax,555 + mov eax,555 .red11 - push eax - call Init_2xSaIMMX - pop eax - ret + push eax + call Init_2xSaIMMX + pop eax + ret SECTION .data @@ -722,13 +716,13 @@ SECTION .data .unablesetar db 'Unable to set selector access rights.',0 NEWSYM LFBpointer - dd 0 + dd 0 NEWSYM noblocks - dw 0 + dw 0 NEWSYM bytesperscanline - dw 0 + dw 0 NEWSYM vesamode - dw 0 + dw 0 ;---------------------------------------------------------------------- ;NEWSYM VESAmodelist ; times 512 dw 0 @@ -759,5 +753,4 @@ NEWSYM RMREGS .ss resw 1 .spare times 20 resd 1 ;---------------------------------------------------------------------- - - +%endif diff --git a/zsnes/src/dos/vga.inc b/zsnes/src/dos/vga.inc index ff201d8e..63c0c613 100644 --- a/zsnes/src/dos/vga.inc +++ b/zsnes/src/dos/vga.inc @@ -20,7 +20,6 @@ ; by kode54, stainless -%ifdef __MSDOS__ %macro SetVGAMode 1 mov byte[cbitmode],0 @@ -152,5 +151,3 @@ SECTION .data SECTION .text -%endif - diff --git a/zsnes/src/gui/gui.asm b/zsnes/src/gui/gui.asm index 575a1de8..81470569 100644 --- a/zsnes/src/gui/gui.asm +++ b/zsnes/src/gui/gui.asm @@ -79,9 +79,9 @@ EXTSYM statesaver,loadstate2,vidbuffer,ASCII2Font,hirestiledat,showallext EXTSYM scanlines,statefileloc,pl1selk,pl2selk,fnamest,sprlefttot,spritetablea EXTSYM fnames,CHIPBATT,sfxramdata,setaramdata,SETAEnable,cgram,srama,tempco0 EXTSYM prevbright,maxbr,prevpal,coladdr,coladdg,coladdb,scaddtype,ScreenScale -EXTSYM initvideo2,initvideo,pressed,UpdateDevices,memtabler8 +EXTSYM initvideo,pressed,UpdateDevices,memtabler8 EXTSYM memtablew8,writeon,pl1contrl,pl2contrl,JoyRead,SetInputDevice,delay -EXTSYM SetInputDevice209,FPSOn,RevStereo,WDSPReg0C,WDSPReg1C,pl12s34,resolutn +EXTSYM FPSOn,RevStereo,WDSPReg0C,WDSPReg1C,pl12s34,resolutn EXTSYM InitDrive,InitDir,createnewcfg,Makemode7Table,vidbufferofsb,ZipSupport EXTSYM wramdata,bgfixer,cfgnewgfx,videotroub,Open_File,Read_File EXTSYM Close_File,Write_File,Create_File,File_Seek,File_Seek_End,Get_Date @@ -149,7 +149,7 @@ EXTSYM numlockptr %elifdef __WIN32__ EXTSYM initDirectDraw,reInitSound %elifdef __MSDOS__ -EXTSYM dssel +EXTSYM dssel,SetInputDevice209,initvideo2 %endif %include "gui/guitools.inc" @@ -477,16 +477,18 @@ GUIQuickLoadUpdate: .off mov dword[GUIPrevMenuData.onoff+15],'OFF ' .on - mov esi,prevloadfnamel %ifdef __MSDOS__ mov esi,prevloadnames +%else + mov esi,prevloadfnamel %endif mov edi,GUIPrevMenuData+3 mov edx,10 .mainloop - mov ecx,25 %ifdef __MSDOS__ mov ecx,16 +%else + mov ecx,25 %endif push edi push esi @@ -525,9 +527,10 @@ GUIQuickLoadUpdate: .fin pop esi pop edi - add esi,512 ;16 %ifdef __MSDOS__ - sub esi,512-16 + add esi,16 +%else + add esi,512 ;16 %endif add edi,32 dec edx diff --git a/zsnes/src/gui/guimisc.inc b/zsnes/src/gui/guimisc.inc index 8c62b3ed..68446581 100644 --- a/zsnes/src/gui/guimisc.inc +++ b/zsnes/src/gui/guimisc.inc @@ -238,6 +238,7 @@ CalibrateDev1: mov [JoyMaxY],eax mov [CalibYmax],eax ret +%ifdef __MSDOS__ .port209 cmp bl,1 jbe .nojoy209 @@ -305,6 +306,7 @@ CalibrateDev1: mov [JoyMaxY209],eax mov [CalibYmax209],eax ret +%endif SECTION .bss .joyblx resd 1 .joybly resd 1 @@ -333,6 +335,7 @@ SetDevice: call SetInputDevice call UpdateDevices jmp .procmtap +%ifdef __MSDOS__ .port209 mov dword[CalibXmin209],0 mov ecx,[DevicePtr+eax*4] @@ -344,6 +347,7 @@ SetDevice: mov bh,[cplayernum] call SetInputDevice209 call UpdateDevices +%endif .procmtap mov byte[MultiTap],1 cmp byte[SFXEnable],1 diff --git a/zsnes/src/gui/guimouse.inc b/zsnes/src/gui/guimouse.inc index 58ee6193..a6978332 100644 --- a/zsnes/src/gui/guimouse.inc +++ b/zsnes/src/gui/guimouse.inc @@ -813,8 +813,8 @@ ProcessMouseButtons: GUIProcVideo: - mov al,[GUIcurrentvideocursloc] %ifdef __MSDOS__ + mov al,[GUIcurrentvideocursloc] cmp al,3 je .yes16b cmp al,5 @@ -825,8 +825,8 @@ GUIProcVideo: je .yes16b cmp al,8 jne .no16b -%endif .yes16b +%endif ; mov byte[newengen],0 ; mov byte[cfgnewgfx],0 ; jmp .skipno16b @@ -1300,8 +1300,8 @@ GUIWinClicked: %%done mov al,%3 mov %4,al - call ClearScreen %ifdef __MSDOS__ + call ClearScreen cmp byte[En2xSaI],0 jne %%nomodeq cmp byte[cvidmode],2 @@ -1315,8 +1315,8 @@ GUIWinClicked: call initvideo2 mov byte[cbitmode],0 call GUISetPal -%endif %%nomodex +%endif ret %%noclick %endmacro @@ -2062,8 +2062,8 @@ DisplayGUIChoseSaveClick: mov ebx,[keycontrolval] mov byte[ebx],1 pop ebx -%endif %%notwin32 +%endif ret %%cancelkey xor ebx,ebx diff --git a/zsnes/src/gui/guitools.inc b/zsnes/src/gui/guitools.inc index 6484e32c..1d9eb260 100644 --- a/zsnes/src/gui/guitools.inc +++ b/zsnes/src/gui/guitools.inc @@ -433,8 +433,8 @@ GUIOutputStringwinl: cmp al,'%' jne .noperc call ConvertPercValue -%endif .noperc +%endif or al,al jz .nomore mov al,[ASCII2Font+eax] @@ -459,6 +459,7 @@ GUIOutputStringwinl: .nomore ret +%ifndef __MSDOS__ ConvertPercValue: mov al,[edi+2] cmp al,'a' @@ -511,6 +512,7 @@ ConvertPercValue: xor eax,eax mov al,[edi] ret +%endif OutputUnder: cmp edx,-8 diff --git a/zsnes/src/linux/sdlintrf.asm b/zsnes/src/linux/sdlintrf.asm index d58e29b4..0b0dc3c8 100644 --- a/zsnes/src/linux/sdlintrf.asm +++ b/zsnes/src/linux/sdlintrf.asm @@ -698,9 +698,6 @@ NEWSYM initvideo ; Returns 1 in videotroub if trouble occurs ret -NEWSYM initvideo2 ; ModeQ scanline re-init (Keep blank on non-dos ports) - ret - NEWSYM deinitvideo ret diff --git a/zsnes/src/makefile.ms b/zsnes/src/makefile.ms index 7b6d2008..e73ba5a6 100644 --- a/zsnes/src/makefile.ms +++ b/zsnes/src/makefile.ms @@ -161,8 +161,7 @@ CPUOBJ=${CPUDIR}/dma${OE} ${CPUDIR}/dsp${OE} ${CPUDIR}/dspproc${OE}\ ${CPUDIR}/stable${OE} ${CPUDIR}/table${OE} ${CPUDIR}/tableb${OE}\ ${CPUDIR}/tablec${OE} -DOSOBJORIG=${DOSDIR}/debug${OE} ${DOSDIR}/joy${OE} ${DOSDIR}/vesa2${OE}\ - ${DOSDIR}/initvid${OE} ${DOSDIR}/sw${OE} ${DOSDIR}/gppro${OE} ${DOSDIR}/vesa12${OE} +DOSOBJORIG=${DOSDIR}/debug${OE} ${DOSDIR}/joy${OE} ${DOSDIR}/vesa2${OE} EFFECTSOBJ=${EFFECTSDIR}/burn${OE} ${EFFECTSDIR}/water${OE} ${EFFECTSDIR}/smoke${OE} @@ -199,7 +198,8 @@ ZIPOBJ=${ZIPDIR}/unzip${OE} ${ZIPDIR}/zpng${OE} OBJSORIG=${CHIPSOBJ} ${CPUOBJ} ${GUIOBJ} ${VIDEOBJ} ${MAINOBJ} ${ZIPOBJ} ${EFFECTSOBJ} ${JMAOBJ} ifeq (${OS},__MSDOS__) -DOSOBJ=${DOSOBJORIG} ${DOSDIR}/dosintrf${OE} ${DOSDIR}/sound${OE} ${DOSDIR}/zfile${OE} +DOSOBJ=${DOSOBJORIG} ${DOSDIR}/dosintrf${OE} ${DOSDIR}/gppro${OE} ${DOSDIR}/initvid${OE}\ + ${DOSDIR}/sound${OE} ${DOSDIR}/sw${OE} ${DOSDIR}/vesa12${OE} ${DOSDIR}/zfile${OE} OBJS=${OBJSORIG} ${DOSOBJ} DELETEOBJS=${OBJSORIG} ${DOSOBJ} endif diff --git a/zsnes/src/video/copyvid.inc b/zsnes/src/video/copyvid.inc index 55c58d30..49d8a377 100644 --- a/zsnes/src/video/copyvid.inc +++ b/zsnes/src/video/copyvid.inc @@ -1542,6 +1542,10 @@ NEWSYM copyvesa2640x400x16b ;******************************************************* %endif +SECTION .bss +NEWSYM res640, resb 1 +NEWSYM res480, resb 1 + SECTION .data NEWSYM EagleHold, dd 0 diff --git a/zsnes/src/video/procvid.asm b/zsnes/src/video/procvid.asm index 26e3291d..a3c6117c 100644 --- a/zsnes/src/video/procvid.asm +++ b/zsnes/src/video/procvid.asm @@ -25,7 +25,7 @@ EXTSYM BGMA,V8Mode,antienab,cacheud,cbitmode,ccud,cfield,cgram,coladdb,coladdg EXTSYM coladdr,curblank,curfps,cvidmode,delay,extlatch,fnamest,En2xSaI EXTSYM gammalevel,hirestiledat,ignor512,latchx,latchy,maxbr,ForceNewGfxOff -EXTSYM newengen,nextframe,objptr,pressed,prevpal,res512switch,res640,resolutn +EXTSYM newengen,nextframe,objptr,pressed,prevpal,res512switch,resolutn EXTSYM romispal,scaddtype,scanlines,selcA000,snesmouse,t1cc,vcache4b,vesa2_bpos EXTSYM spritetablea,vesa2_clbit,vesa2_gpos,vesa2_rpos,vesa2red10,vesa2selec EXTSYM vidbuffer,vram,KeyStateSelct,soundon,Open_File,Read_File