From 3f052df1564a5a7b50f54a743839663a86ae2367 Mon Sep 17 00:00:00 2001 From: stainless <> Date: Mon, 1 Oct 2001 23:18:15 +0000 Subject: [PATCH] Added scanlines to 320x256 Mode-X in DOS port. --- zsnes/src/dos/dosintrf.asm | 2 +- zsnes/src/dos/initvid.asm | 14 ++++++++++++++ zsnes/src/dos/vga.inc | 8 ++++++++ zsnes/src/gui/guikeys.inc | 31 ++++++++++++++++++------------- zsnes/src/gui/guimouse.inc | 7 ++++++- 5 files changed, 47 insertions(+), 15 deletions(-) diff --git a/zsnes/src/dos/dosintrf.asm b/zsnes/src/dos/dosintrf.asm index ed76d0c5..60eb19a2 100644 --- a/zsnes/src/dos/dosintrf.asm +++ b/zsnes/src/dos/dosintrf.asm @@ -1040,7 +1040,7 @@ db ' ',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 ; 16-bit mode NEWSYM GUINGVID, db 1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0 ; New Graphics Mode Available -NEWSYM GUISLVID, db 0,0,1,0,0,0,1,0,0,1,1,0,0,1,1,0 ; Scanlines +NEWSYM GUISLVID, db 0,0,1,0,0,1,1,0,0,1,1,0,0,1,1,0 ; Scanlines NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; Interpolation NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 ; Eagle NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0 ; (Interp | Eagle) diff --git a/zsnes/src/dos/initvid.asm b/zsnes/src/dos/initvid.asm index 9c3e80fb..608ea23a 100644 --- a/zsnes/src/dos/initvid.asm +++ b/zsnes/src/dos/initvid.asm @@ -39,7 +39,14 @@ NEWSYM res480, resb 1 SECTION .text NEWSYM dosinitvideo2 + cmp byte[cvidmode],2 + jne .nomodeq jmp dosinitvideo.initmodeq256 +.nomodeq + cmp byte[cvidmode],5 + jne .nomodex + jmp dosinitvideo.initmodex256 +.nomodex ;******************************************************* ; InitVideo @@ -157,7 +164,14 @@ NEWSYM dosinitvideo .initmodex256 %ifdef __MSDOS__ + cmp byte[scanlines],1 + je near .scanlines2 SetVGAMode .Mode320x256 + jmp .done2 +.scanlines2 + SetVGAMode .Mode320x256s + jmp .done2 +.done2 call cscopymodex %endif call makepal diff --git a/zsnes/src/dos/vga.inc b/zsnes/src/dos/vga.inc index 047b58f9..3eacfd70 100644 --- a/zsnes/src/dos/vga.inc +++ b/zsnes/src/dos/vga.inc @@ -123,6 +123,14 @@ SECTION .data dw 03c4h,00604h,03ceh,04005h,03ceh,00506h,03c0h,04110h,03c0h,00013h dd 0 +.Mode320x256s + dw 03c2h,0e300h,03d4h,05f00h,03d4h,04f01h,03d4h,05002h,03d4h,08203h + dw 03d4h,05404h,03d4h,08005h,03d4h,02306h,03d4h,01d07h,03d4h,00008h + dw 03d4h,06009h,03d4h,00a10h,03d4h,0ac11h,03d4h,0ff12h,03d4h,02813h + dw 03d4h,00014h,03d4h,00715h,03d4h,01a16h,03d4h,0e317h,03c4h,00101h + dw 03c4h,00604h,03ceh,04005h,03ceh,00506h,03c0h,04110h,03c0h,00013h + dd 0 + SECTION .text %endif diff --git a/zsnes/src/gui/guikeys.inc b/zsnes/src/gui/guikeys.inc index 7f1fcbec..24964cf8 100644 --- a/zsnes/src/gui/guikeys.inc +++ b/zsnes/src/gui/guikeys.inc @@ -1004,7 +1004,12 @@ GUIVideoKeys: GUIkeystoggleoptn byte[scanlines],1 %ifdef __MSDOS__ cmp byte[cvidmode],2 - jne .nofullscanlines + jne .nomodeq + jmp .refresh +.nomodeq + cmp byte[cvidmode],5 + jne .nofullscanlines +.refresh mov byte[cbitmode],1 call initvideo2 mov byte[cbitmode],0 @@ -1022,12 +1027,12 @@ GUIVideoKeys: call ClearScreen GUIkeystoggleoptn byte[scanlines],3 %ifdef __MSDOS__ - cmp byte[cvidmode],2 - jne .nohalfscanlines - mov byte[cbitmode],1 - call initvideo2 - mov byte[cbitmode],0 - call GUISetPal + ;cmp byte[cvidmode],2 + ;jne .nohalfscanlines + ;mov byte[cbitmode],1 + ;call initvideo2 + ;mov byte[cbitmode],0 + ;call GUISetPal %endif .nohalfscanlines cmp dh,'2' @@ -1037,12 +1042,12 @@ GUIVideoKeys: call ClearScreen GUIkeystoggleoptn byte[scanlines],2 %ifdef __MSDOS__ - cmp byte[cvidmode],2 - jne .noquarterscanlines - mov byte[cbitmode],1 - call initvideo2 - mov byte[cbitmode],0 - call GUISetPal + ;cmp byte[cvidmode],2 + ;jne .noquarterscanlines + ;mov byte[cbitmode],1 + ;call initvideo2 + ;mov byte[cbitmode],0 + ;call GUISetPal %endif .noquarterscanlines cmp dh,'X' diff --git a/zsnes/src/gui/guimouse.inc b/zsnes/src/gui/guimouse.inc index 9598708f..5cc9ee42 100644 --- a/zsnes/src/gui/guimouse.inc +++ b/zsnes/src/gui/guimouse.inc @@ -1237,12 +1237,17 @@ GUIWinClicked: %ifdef __MSDOS__ cmp byte[cvidmode],2 jne %%nomodeq + jmp %%refresh +%%nomodeq + cmp byte[cvidmode],5 + jne %%nomodex +%%refresh mov byte[cbitmode],1 call initvideo2 mov byte[cbitmode],0 call GUISetPal %endif -%%nomodeq +%%nomodex ret %%noclick %endmacro