From 8af1ea706761cde518b1d955b28ba58d02bcd94f Mon Sep 17 00:00:00 2001 From: grinvader <> Date: Tue, 28 Mar 2006 16:39:42 +0000 Subject: [PATCH] NTSC filter option tab filled, made tab feature more flexible, fixed FPS display for values >99 and made it aware of slowmo. Some cleanup. --- zsnes/src/cfg.psr | 9 +- zsnes/src/gui/gui.asm | 868 ++++++------------------------------ zsnes/src/gui/guikeys.inc | 52 ++- zsnes/src/gui/guimouse.inc | 166 +++++-- zsnes/src/gui/guiwindp.inc | 262 ++++++----- zsnes/src/video/procvid.asm | 314 ++++++------- 6 files changed, 596 insertions(+), 1075 deletions(-) diff --git a/zsnes/src/cfg.psr b/zsnes/src/cfg.psr index 0fda1667..023afc1d 100644 --- a/zsnes/src/cfg.psr +++ b/zsnes/src/cfg.psr @@ -352,4 +352,11 @@ NEWSYM MovieVideoMode, db 4 NEWSYM MovieAudio, db 1 NEWSYM MovieVideoAudio, db 0 NEWSYM MovieAudioCompress, db 0 -NEWSYM NTSCFilter, db 0 \ No newline at end of file +NEWSYM NTSCFilter, db 0 +NEWSYM NTSCBlend, db 0 +NEWSYM NTSCHue, db 0 +NEWSYM NTSCSat, db 0 +NEWSYM NTSCCont, db 0 +NEWSYM NTSCBright, db 0 +NEWSYM NTSCSharp, db 0 +NEWSYM NTSCWarp, db 0 diff --git a/zsnes/src/gui/gui.asm b/zsnes/src/gui/gui.asm index 660684b9..1386c11a 100644 --- a/zsnes/src/gui/gui.asm +++ b/zsnes/src/gui/gui.asm @@ -105,6 +105,7 @@ EXTSYM MovieRecord,MovieInsertChapter,MovieSeekAhead,MovieSeekBehind EXTSYM ResetDuringMovie,MovieDumpRaw,AutoLoadCht EXTSYM GUIwinposx,GUIwinposy,maxskip,GUIEffect,hqFilter,En2xSaI,NTSCFilter +EXTSYM NTSCBlend,NTSCHue,NTSCSat,NTSCCont,NTSCBright,NTSCSharp,NTSCWarp EXTSYM LowPassFilterType,MovieStartMethod,MovieDisplayFrame,resetposn EXTSYM SnapPath,SPCPath,BSXPath,SGPath,STPath,GNextPath,FEOEZPath,SJNSPath EXTSYM MDHPath,SPL4Path,CheatSrcByteSize,prevloadfnamel @@ -2910,7 +2911,7 @@ GUISetPal: inc dx .loopf add bh,2 - add ah,1 + inc ah mov al,63 out dx,al mov al,bh @@ -3324,7 +3325,7 @@ GUISetPal16: mov esi,128 .loopf add bh,2 - add ah,1 + inc ah mov edx,1Fh << 6 or dl,bh shl edx,5 @@ -3742,14 +3743,6 @@ GUIconvpal: SECTION .data GUIMousePtr: - db 50+88,47+88,45+88,43+88,40+88,0 ,0 ,0 - db 53+88,52+88,46+88,42+88,0 ,0 ,0 ,0 - db 55+88,54+88,54+88,44+88,0 ,0 ,0 ,0 - db 57+88,57+88,56+88,52+88,45+88,0 ,0 ,0 - db 59+88,0 ,0 ,55+88,50+88,45+88,0 ,0 - db 0 ,0 ,0 ,0 ,55+88,50+88,45+88,0 - db 0 ,0 ,0 ,0 ,0 ,55+88,50+88,47+88 - db 0 ,0 ,0 ,0 ,0 ,0 ,52+88,0 db 50,47,45,43,40,0 ,0 ,0 db 53,52,46,42,0 ,0 ,0 ,0 db 55,54,54,44,0 ,0 ,0 ,0 @@ -3760,707 +3753,148 @@ GUIMousePtr: db 0 ,0 ,0 ,0 ,0 ,0 ,52,0 NEWSYM GUIFontData - db 0,0,0,0,0; empty space - db 01110000b - db 10011000b - db 10101000b - db 11001000b - db 01110000b; 0 - db 00100000b - db 01100000b - db 00100000b - db 00100000b - db 01110000b; 1 - db 01110000b - db 10001000b - db 00110000b - db 01000000b - db 11111000b; 2 - db 01110000b - db 10001000b - db 00110000b - db 10001000b - db 01110000b; 3 - db 01010000b - db 10010000b - db 11111000b - db 00010000b - db 00010000b; 4 - db 11111000b - db 10000000b - db 11110000b - db 00001000b - db 11110000b; 5 - db 01110000b - db 10000000b - db 11110000b - db 10001000b - db 01110000b; 6 - db 11111000b - db 00001000b - db 00010000b - db 00010000b - db 00010000b; 7 - db 01110000b - db 10001000b - db 01110000b - db 10001000b - db 01110000b; 8 - db 01110000b - db 10001000b - db 01111000b - db 00001000b - db 01110000b; 9 - db 01110000b - db 10001000b - db 11111000b - db 10001000b - db 10001000b; A - db 11110000b - db 10001000b - db 11110000b - db 10001000b - db 11110000b; B - db 01110000b - db 10001000b - db 10000000b - db 10001000b - db 01110000b; C - db 11110000b - db 10001000b - db 10001000b - db 10001000b - db 11110000b; D - db 11111000b - db 10000000b - db 11110000b - db 10000000b - db 11111000b; E - db 11111000b - db 10000000b - db 11110000b - db 10000000b - db 10000000b; F - db 01111000b - db 10000000b - db 10011000b - db 10001000b - db 01110000b; G - db 10001000b - db 10001000b - db 11111000b - db 10001000b - db 10001000b; H - db 11111000b - db 00100000b - db 00100000b - db 00100000b - db 11111000b; I - db 01111000b - db 00010000b - db 00010000b - db 10010000b - db 01100000b; J - db 10010000b - db 10100000b - db 11100000b - db 10010000b - db 10001000b; K - db 10000000b - db 10000000b - db 10000000b - db 10000000b - db 11111000b; L - db 11011000b - db 10101000b - db 10101000b - db 10101000b - db 10001000b; M - db 11001000b - db 10101000b - db 10101000b - db 10101000b - db 10011000b; N - db 01110000b - db 10001000b - db 10001000b - db 10001000b - db 01110000b; O - db 11110000b - db 10001000b - db 11110000b - db 10000000b - db 10000000b; P - db 01110000b - db 10001000b - db 10101000b - db 10010000b - db 01101000b; Q - db 11110000b - db 10001000b - db 11110000b - db 10010000b - db 10001000b; R - db 01111000b - db 10000000b - db 01110000b - db 00001000b - db 11110000b; S - db 11111000b - db 00100000b - db 00100000b - db 00100000b - db 00100000b; T - db 10001000b - db 10001000b - db 10001000b - db 10001000b - db 01110000b; U - db 10001000b - db 10001000b - db 01010000b - db 01010000b - db 00100000b; V - db 10001000b - db 10101000b - db 10101000b - db 10101000b - db 01010000b; W - db 10001000b - db 01010000b - db 00100000b - db 01010000b - db 10001000b; X - db 10001000b - db 01010000b - db 00100000b - db 00100000b - db 00100000b; Y - db 11111000b - db 00010000b - db 00100000b - db 01000000b - db 11111000b; Z - db 00000000b - db 00000000b - db 11111000b - db 00000000b - db 00000000b; - - db 00000000b - db 00000000b - db 00000000b - db 00000000b - db 11111000b; _ - db 01101000b - db 10010000b - db 00000000b - db 00000000b - db 00000000b; ~ - db 00000000b - db 00000000b - db 00000000b - db 00000000b - db 00100000b; . - db 00001000b - db 00010000b - db 00100000b - db 01000000b - db 10000000b; / - db 00010000b - db 00100000b - db 01000000b - db 00100000b - db 00010000b; < - db 01000000b - db 00100000b - db 00010000b - db 00100000b - db 01000000b; > - db 01110000b - db 01000000b - db 01000000b - db 01000000b - db 01110000b; [ - db 01110000b - db 00010000b - db 00010000b - db 00010000b - db 01110000b; ] - db 00000000b - db 00100000b - db 00000000b - db 00100000b - db 00000000b; : - db 01100000b - db 10011000b - db 01110000b - db 10011000b - db 01101000b; & - db 00100000b - db 00100000b - db 10101000b - db 01110000b - db 00100000b; arrow - db 01010000b - db 11111000b - db 01010000b - db 11111000b - db 01010000b; # - db 00000000b - db 11111000b - db 00000000b - db 11111000b - db 00000000b; = - db 01001000b - db 10010000b - db 00000000b - db 00000000b - db 00000000b; " - db 10000000b - db 01000000b - db 00100000b - db 00010000b - db 00001000b; \ (Screw you nassm) - db 10101000b - db 01110000b - db 11111000b - db 01110000b - db 10101000b; * - db 01110000b - db 10001000b - db 00110000b - db 00000000b - db 00100000b; ? - db 10001000b - db 00010000b - db 00100000b - db 01000000b - db 10001000b; % - db 00100000b - db 00100000b - db 11111000b - db 00100000b - db 00100000b; + - db 00000000b - db 00000000b - db 00000000b - db 00100000b - db 01000000b; , - db 00110000b - db 01000000b - db 01000000b - db 01000000b - db 00110000b; ( - db 01100000b - db 00010000b - db 00010000b - db 00010000b - db 01100000b; ) - db 01110000b - db 10011000b - db 10111000b - db 10000000b - db 01110000b; @ - db 00100000b - db 01000000b - db 00000000b - db 00000000b - db 00000000b; ' - db 00100000b - db 00100000b - db 00100000b - db 00000000b - db 00100000b; ! - db 01111000b - db 10100000b - db 01110000b - db 00101000b - db 11110000b; $ - db 00000000b - db 00100000b - db 00000000b - db 00100000b - db 01000000b; ; - db 01000000b - db 00100000b - db 00000000b - db 00000000b - db 00000000b; ` - db 00100000b - db 01010000b - db 00000000b - db 00000000b - db 00000000b; ^ - db 00110000b - db 01000000b - db 11000000b - db 01000000b - db 00110000b; { - db 01100000b - db 00010000b - db 00011000b - db 00010000b - db 01100000b; } - db 00100000b - db 00100000b - db 01110000b - db 01110000b - db 11111000b; Up - db 11111000b - db 01110000b - db 01110000b - db 00100000b - db 00100000b; Down - db 00001000b - db 00111000b - db 11111000b - db 00111000b - db 00001000b; Left - db 10000000b - db 11100000b - db 11111000b - db 11100000b - db 10000000b; Right - db 00100000b - db 01100000b - db 11111000b - db 01100000b - db 00100000b; Arrow Left - db 00111000b - db 00100000b - db 00110000b - db 00001000b - db 10110000b; .5 - db 11111100b - db 10000100b - db 11111100b - db 00000000b - db 00000000b; Maximize - db 00000000b - db 11111100b - db 00000000b - db 00000000b - db 00000000b; Minimize - db 11111000b - db 10001000b - db 10001000b - db 10001000b - db 11111000b; Maximize (Linux) - db 00000000b - db 00000000b - db 00100000b - db 01010000b - db 00100000b; sjis halfwidth (shw) fullstop 0x4E - db 01110000b - db 01000000b - db 01000000b - db 01000000b - db 00000000b; shw left bracket 0x4F - db 00000000b - db 00010000b - db 00010000b - db 00010000b - db 01110000b; shw right bracket 0x50 - db 00000000b - db 00000000b - db 00000000b - db 01000000b - db 00100000b; shw comma 0x51 - db 00000000b - db 00100000b - db 01110000b - db 00100000b - db 00000000b; shw mid-dot 0x52 - db 11111000b - db 00001000b - db 11110000b - db 00100000b - db 11000000b; shw wo 0x53 - db 00000000b - db 11111000b - db 01010000b - db 01100000b - db 01000000b; shw mini a 0x54 - db 00000000b - db 00010000b - db 00100000b - db 11100000b - db 00100000b; shw mini i 0x55 - db 00000000b - db 00100000b - db 11111000b - db 10001000b - db 00110000b; shw mini u 0x56 - db 00000000b - db 00000000b - db 11111000b - db 00100000b - db 11111000b; shw mini e 0x57 - db 00000000b - db 00010000b - db 11111000b - db 00110000b - db 11010000b; shw mini o 0x58 - db 00000000b - db 01000000b - db 11111000b - db 01010000b - db 01000000b; shw mini ya 0x59 - db 00000000b - db 00000000b - db 11110000b - db 00010000b - db 11111000b; shw mini yu 0x5A - db 00000000b - db 11111000b - db 00001000b - db 01111000b - db 11111000b; shw mini yo 0x5B - db 00000000b - db 10101000b - db 10101000b - db 00010000b - db 01100000b; shw mini tsu 0x5C - db 00000000b - db 10000000b - db 01111000b - db 00000000b - db 00000000b; shw prolong 0x5D - db 11111000b - db 00101000b - db 00110000b - db 00100000b - db 11000000b; shw a 0x5E - db 00001000b - db 00110000b - db 11100000b - db 00100000b - db 00100000b; shw i 0x5F - db 00100000b - db 11111000b - db 10001000b - db 00010000b - db 01100000b; shw u 0x60 - db 11111000b - db 00100000b - db 00100000b - db 00100000b - db 11111000b; shw e 0x61 - db 00010000b - db 11111000b - db 00110000b - db 01010000b - db 10010000b; shw o 0x62 - db 01000000b - db 11111000b - db 01001000b - db 01001000b - db 10011000b; shw ka 0x63 - db 00100000b - db 11111000b - db 00100000b - db 11111000b - db 00100000b; shw ki 0x64 - db 01000000b - db 01111000b - db 10001000b - db 00010000b - db 01100000b; shw ku 0x65 - db 01000000b - db 01111000b - db 10010000b - db 00010000b - db 01100000b; shw ke 0x66 ^^ - db 11111000b - db 00001000b - db 00001000b - db 00001000b - db 11111000b; shw ko 0x67 - db 01010000b - db 11111000b - db 01010000b - db 00010000b - db 01100000b; shw sa 0x68 - db 01000000b - db 10101000b - db 01001000b - db 00010000b - db 11100000b; shw shi 0x69 - db 11111000b - db 00001000b - db 00010000b - db 00110000b - db 11001000b; shw su 0x6A - db 01000000b - db 11111000b - db 01010000b - db 01000000b - db 00111000b; shw se 0x6B - db 10001000b - db 01001000b - db 00001000b - db 00010000b - db 01100000b; shw so 0x6C - db 01000000b - db 01111000b - db 11001000b - db 00110000b - db 01100000b; shw ta 0x6D - db 11111000b - db 00100000b - db 11111000b - db 00100000b - db 01000000b; shw chi 0x6E - db 10101000b - db 10101000b - db 00001000b - db 00010000b - db 01100000b; shw tsu 0x6F - db 11111000b - db 00000000b - db 11111000b - db 00100000b - db 11000000b; shw te 0x70 - db 01000000b - db 01000000b - db 01100000b - db 01010000b - db 01000000b; shw to 0x71 - db 00100000b - db 11111000b - db 00100000b - db 00100000b - db 01000000b; shw na 0x72 - db 11110000b - db 00000000b - db 00000000b - db 00000000b - db 11111000b; shw ni 0x73 - db 11111000b - db 00001000b - db 00101000b - db 00010000b - db 011010000b; shw nu 0x74 - db 00100000b - db 11111000b - db 00001000b - db 01110000b - db 10101000b; shw ne 0x75 - db 00001000b - db 00001000b - db 00001000b - db 00010000b - db 01100000b; shw no 0x76 - db 01010000b - db 01010000b - db 01010000b - db 10001000b - db 10001000b; shw ha 0x77 - db 10000000b - db 10011000b - db 11100000b - db 10000000b - db 01111000b; shw hi 0x78 - db 11111000b - db 00001000b - db 00001000b - db 00010000b - db 01100000b; shw hu 0x79 - db 01000000b - db 10100000b - db 10010000b - db 00001000b - db 00000000b; shw he 0x7A - db 00100000b - db 11111000b - db 01110000b - db 10101000b - db 00100000b; shw ho 0x7B - db 11111000b - db 00001000b - db 10010000b - db 01100000b - db 00100000b; shw ma 0x7C - db 11111000b - db 00000000b - db 11111000b - db 00000000b - db 11111000b; shw mi 0x7D - db 00100000b - db 01000000b - db 01000000b - db 10010000b - db 11111000b; shw mu 0x7E - db 00001000b - db 01001000b - db 00110000b - db 00110000b - db 11001000b; shw me 0x7F - db 11111000b - db 00100000b - db 11111000b - db 00100000b - db 00111000b; shw mo 0x80 - db 01000000b - db 11111100b - db 01001000b - db 00100000b - db 0010000b; shw ya 0x81 - db 11110000b - db 00010000b - db 00010000b - db 00010000b - db 11111000b; shw yu 0x82 - db 11111000b - db 00001000b - db 11111000b - db 00001000b - db 11111000b; shw yo 0x83 - db 11111000b - db 00000000b - db 11111000b - db 00010000b - db 01100000b; shw ra 0x84 - db 10001000b - db 10001000b - db 10001000b - db 00010000b - db 01100000b; shw ri 0x85 - db 01100000b - db 01100000b - db 01101000b - db 01101000b - db 10110000b; shw ru 0x86 - db 10000000b - db 10000000b - db 10001000b - db 10001000b - db 11110000b; shw re 0x87 - db 11111000b - db 10001000b - db 10001000b - db 10001000b - db 11111000b; shw ro 0x88 - db 11111000b - db 10001000b - db 00001000b - db 00010000b - db 01100000b; shw wa 0x89 - db 10000000b - db 01001000b - db 00001000b - db 00010000b - db 11100000b; shw n 0x8A - db 10100000b - db 10100000b - db 00000000b - db 00000000b - db 00000000b; shw voiced 0x8B - db 01000000b - db 10100000b - db 01000000b - db 00000000b - db 00000000b; shw halfvoiced 0x8C +; bitmap 5x5 font; char - offset for ASCII2Font + db 0,0,0,0,0; empty space 0x0 + db 01110000b,10011000b,10101000b,11001000b,01110000b; 0 0x01 + db 00100000b,01100000b,00100000b,00100000b,01110000b; 1 0x02 + db 01110000b,10001000b,00110000b,01000000b,11111000b; 2 0x03 + db 01110000b,10001000b,00110000b,10001000b,01110000b; 3 0x04 + db 01010000b,10010000b,11111000b,00010000b,00010000b; 4 0x05 + db 11111000b,10000000b,11110000b,00001000b,11110000b; 5 0x06 + db 01110000b,10000000b,11110000b,10001000b,01110000b; 6 0x07 + db 11111000b,00001000b,00010000b,00010000b,00010000b; 7 0x08 + db 01110000b,10001000b,01110000b,10001000b,01110000b; 8 0x09 + db 01110000b,10001000b,01111000b,00001000b,01110000b; 9 0x0A + db 01110000b,10001000b,11111000b,10001000b,10001000b; A 0x0B + db 11110000b,10001000b,11110000b,10001000b,11110000b; B 0x0C + db 01110000b,10001000b,10000000b,10001000b,01110000b; C 0x0D + db 11110000b,10001000b,10001000b,10001000b,11110000b; D 0x0E + db 11111000b,10000000b,11110000b,10000000b,11111000b; E 0x0F + db 11111000b,10000000b,11110000b,10000000b,10000000b; F 0x10 + db 01111000b,10000000b,10011000b,10001000b,01110000b; G 0x11 + db 10001000b,10001000b,11111000b,10001000b,10001000b; H 0x12 + db 11111000b,00100000b,00100000b,00100000b,11111000b; I 0x13 + db 01111000b,00010000b,00010000b,10010000b,01100000b; J 0x14 + db 10010000b,10100000b,11100000b,10010000b,10001000b; K 0x15 + db 10000000b,10000000b,10000000b,10000000b,11111000b; L 0x16 + db 11011000b,10101000b,10101000b,10101000b,10001000b; M 0x17 + db 11001000b,10101000b,10101000b,10101000b,10011000b; N 0x18 + db 01110000b,10001000b,10001000b,10001000b,01110000b; O 0x19 + db 11110000b,10001000b,11110000b,10000000b,10000000b; P 0x1A + db 01110000b,10001000b,10101000b,10010000b,01101000b; Q 0x1B + db 11110000b,10001000b,11110000b,10010000b,10001000b; R 0x1C + db 01111000b,10000000b,01110000b,00001000b,11110000b; S 0x1D + db 11111000b,00100000b,00100000b,00100000b,00100000b; T 0x1E + db 10001000b,10001000b,10001000b,10001000b,01110000b; U 0x1F + db 10001000b,10001000b,01010000b,01010000b,00100000b; V 0x20 + db 10001000b,10101000b,10101000b,10101000b,01010000b; W 0x21 + db 10001000b,01010000b,00100000b,01010000b,10001000b; X 0x22 + db 10001000b,01010000b,00100000b,00100000b,00100000b; Y 0x23 + db 11111000b,00010000b,00100000b,01000000b,11111000b; Z 0x24 + db 00000000b,00000000b,11111000b,00000000b,00000000b; - 0x25 + db 00000000b,00000000b,00000000b,00000000b,11111000b; _ 0x26 + db 01101000b,10010000b,00000000b,00000000b,00000000b; ~ 0x27 + db 00000000b,00000000b,00000000b,00000000b,00100000b; . 0x28 + db 00001000b,00010000b,00100000b,01000000b,10000000b; / 0x29 + db 00010000b,00100000b,01000000b,00100000b,00010000b; < 0x2A + db 01000000b,00100000b,00010000b,00100000b,01000000b; > 0x2B + db 01110000b,01000000b,01000000b,01000000b,01110000b; [ 0x2C + db 01110000b,00010000b,00010000b,00010000b,01110000b; ] 0x2D + db 00000000b,00100000b,00000000b,00100000b,00000000b; : 0x2E + db 01100000b,10011000b,01110000b,10011000b,01101000b; & 0x2F + db 00100000b,00100000b,10101000b,01110000b,00100000b; arrow down 0x30 + db 01010000b,11111000b,01010000b,11111000b,01010000b; # 0x31 + db 00000000b,11111000b,00000000b,11111000b,00000000b; = 0x32 + db 01001000b,10010000b,00000000b,00000000b,00000000b; " 0x33 + db 10000000b,01000000b,00100000b,00010000b,00001000b; \ 0x34 + db 10101000b,01110000b,11111000b,01110000b,10101000b; * 0x35 + db 01110000b,10001000b,00110000b,00000000b,00100000b; ? 0x36 + db 10001000b,00010000b,00100000b,01000000b,10001000b; % 0x37 + db 00100000b,00100000b,11111000b,00100000b,00100000b; + 0x38 + db 00000000b,00000000b,00000000b,00100000b,01000000b; , 0x39 + db 00110000b,01000000b,01000000b,01000000b,00110000b; ( 0x3A + db 01100000b,00010000b,00010000b,00010000b,01100000b; ) 0x3B + db 01110000b,10011000b,10111000b,10000000b,01110000b; @ 0x3C + db 00100000b,01000000b,00000000b,00000000b,00000000b; ' 0x3D + db 00100000b,00100000b,00100000b,00000000b,00100000b; ! 0x3E + db 01111000b,10100000b,01110000b,00101000b,11110000b; $ 0x3F + db 00000000b,00100000b,00000000b,00100000b,01000000b; ; 0x40 + db 01000000b,00100000b,00000000b,00000000b,00000000b; ` 0x41 + db 00100000b,01010000b,00000000b,00000000b,00000000b; ^ 0x42 + db 00110000b,01000000b,11000000b,01000000b,00110000b; { 0x43 + db 01100000b,00010000b,00011000b,00010000b,01100000b; } 0x44 + db 00100000b,00100000b,01110000b,01110000b,11111000b; up 0x45 + db 11111000b,01110000b,01110000b,00100000b,00100000b; down 0x46 + db 00001000b,00111000b,11111000b,00111000b,00001000b; left 0x47 + db 10000000b,11100000b,11111000b,11100000b,10000000b; right 0x48 + db 00100000b,01100000b,11111000b,01100000b,00100000b; arrow left 0x49 + db 00111000b,00100000b,00110000b,00001000b,10110000b; .5 0x4A + db 11111100b,10000100b,11111100b,00000000b,00000000b; maximize (Win) 0x4B + db 00000000b,11111100b,00000000b,00000000b,00000000b; minimize (Win) 0x4C + db 11111000b,10001000b,10001000b,10001000b,11111000b; maximize (SDL) 0x4D + db 00000000b,00000000b,00100000b,01010000b,00100000b; shw fullstop 0x4E + db 01110000b,01000000b,01000000b,01000000b,00000000b; shw left bracket 0x4F + db 00000000b,00010000b,00010000b,00010000b,01110000b; shw right bracket 0x50 + db 00000000b,00000000b,00000000b,01000000b,00100000b; shw comma 0x51 + db 00000000b,00100000b,01110000b,00100000b,00000000b; shw mid-dot 0x52 + db 11111000b,00001000b,11110000b,00100000b,11000000b; shw wo 0x53 + db 00000000b,11111000b,01010000b,01100000b,01000000b; shw mini a 0x54 + db 00000000b,00010000b,00100000b,11100000b,00100000b; shw mini i 0x55 + db 00000000b,00100000b,11111000b,10001000b,00110000b; shw mini u 0x56 + db 00000000b,00000000b,11111000b,00100000b,11111000b; shw mini e 0x57 + db 00000000b,00010000b,11111000b,00110000b,11010000b; shw mini o 0x58 + db 00000000b,01000000b,11111000b,01010000b,01000000b; shw mini ya 0x59 + db 00000000b,00000000b,11110000b,00010000b,11111000b; shw mini yu 0x5A + db 00000000b,11111000b,00001000b,01111000b,11111000b; shw mini yo 0x5B + db 00000000b,10101000b,10101000b,00010000b,01100000b; shw mini tsu 0x5C + db 00000000b,10000000b,01111000b,00000000b,00000000b; shw prolong 0x5D + db 11111000b,00101000b,00110000b,00100000b,11000000b; shw a 0x5E + db 00001000b,00110000b,11100000b,00100000b,00100000b; shw i 0x5F + db 00100000b,11111000b,10001000b,00010000b,01100000b; shw u 0x60 + db 11111000b,00100000b,00100000b,00100000b,11111000b; shw e 0x61 + db 00010000b,11111000b,00110000b,01010000b,10010000b; shw o 0x62 + db 01000000b,11111000b,01001000b,01001000b,10011000b; shw ka 0x63 + db 00100000b,11111000b,00100000b,11111000b,00100000b; shw ki 0x64 + db 01000000b,01111000b,10001000b,00010000b,01100000b; shw ku 0x65 + db 01000000b,01111000b,10010000b,00010000b,01100000b; shw ke 0x66 ^^ + db 11111000b,00001000b,00001000b,00001000b,11111000b; shw ko 0x67 + db 01010000b,11111000b,01010000b,00010000b,01100000b; shw sa 0x68 + db 01000000b,10101000b,01001000b,00010000b,11100000b; shw shi 0x69 + db 11111000b,00001000b,00010000b,00110000b,11001000b; shw su 0x6A + db 01000000b,11111000b,01010000b,01000000b,00111000b; shw se 0x6B + db 10001000b,01001000b,00001000b,00010000b,01100000b; shw so 0x6C + db 01000000b,01111000b,11001000b,00110000b,01100000b; shw ta 0x6D + db 11111000b,00100000b,11111000b,00100000b,01000000b; shw chi 0x6E + db 10101000b,10101000b,00001000b,00010000b,01100000b; shw tsu 0x6F + db 11111000b,00000000b,11111000b,00100000b,11000000b; shw te 0x70 + db 01000000b,01000000b,01100000b,01010000b,01000000b; shw to 0x71 + db 00100000b,11111000b,00100000b,00100000b,01000000b; shw na 0x72 + db 11110000b,00000000b,00000000b,00000000b,11111000b; shw ni 0x73 + db 11111000b,00001000b,00101000b,00010000b,01101000b; shw nu 0x74 + db 00100000b,11111000b,00001000b,01110000b,10101000b; shw ne 0x75 + db 00001000b,00001000b,00001000b,00010000b,01100000b; shw no 0x76 + db 01010000b,01010000b,01010000b,10001000b,10001000b; shw ha 0x77 + db 10000000b,10011000b,11100000b,10000000b,01111000b; shw hi 0x78 + db 11111000b,00001000b,00001000b,00010000b,01100000b; shw hu 0x79 + db 01000000b,10100000b,10010000b,00001000b,00000000b; shw he 0x7A + db 00100000b,11111000b,01110000b,10101000b,00100000b; shw ho 0x7B + db 11111000b,00001000b,10010000b,01100000b,00100000b; shw ma 0x7C + db 11111000b,00000000b,11111000b,00000000b,11111000b; shw mi 0x7D + db 00100000b,01000000b,01000000b,10010000b,11111000b; shw mu 0x7E + db 00001000b,01001000b,00110000b,00110000b,11001000b; shw me 0x7F + db 11111000b,00100000b,11111000b,00100000b,00111000b; shw mo 0x80 + db 01000000b,11111100b,01001000b,00100000b,00100000b; shw ya 0x81 + db 11110000b,00010000b,00010000b,00010000b,11111000b; shw yu 0x82 + db 11111000b,00001000b,11111000b,00001000b,11111000b; shw yo 0x83 + db 11111000b,00000000b,11111000b,00010000b,01100000b; shw ra 0x84 + db 10001000b,10001000b,10001000b,00010000b,01100000b; shw ri 0x85 + db 01100000b,01100000b,01101000b,01101000b,10110000b; shw ru 0x86 + db 10000000b,10000000b,10001000b,10001000b,11110000b; shw re 0x87 + db 11111000b,10001000b,10001000b,10001000b,11111000b; shw ro 0x88 + db 11111000b,10001000b,00001000b,00010000b,01100000b; shw wa 0x89 + db 10000000b,01001000b,00001000b,00010000b,11100000b; shw n 0x8A + db 10100000b,10100000b,00000000b,00000000b,00000000b; shw voiced 0x8B + db 01000000b,10100000b,01000000b,00000000b,00000000b; shw halfvoiced 0x8C ; 189 .. 220 GUIIconDataClose: @@ -4535,18 +3969,6 @@ GUIIconDataCheckBoxC: db 0 ,215,214,165,212,211,210,202,0 ,0 db 0 ,0 ,202,202,202,202,202,202,0 ,0 -GUIIconDataCheckBoxX: - db 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 - db 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 - db 0 ,165,0 ,0 ,0 ,0 ,0 ,165,0 ,0 - db 0 ,220,165,218,217,216,165,0 ,0 ,0 - db 0 ,219,218,165,216,165,214,202,0 ,0 - db 0 ,218,217,216,165,214,213,202,0 ,0 - db 0 ,217,216,165,214,165,212,202,0 ,0 - db 0 ,216,165,214,213,212,165,202,0 ,0 - db 0 ,165,214,213,212,211,210,165,0 ,0 - db 0 ,0 ,202,202,202,202,202,202,0 ,0 - GUIIconDataUpArrow: db 201,209,209,209,209,209,209,200,0 ,0 db 207,205,205,202,203,205,205,203,0 ,0 diff --git a/zsnes/src/gui/guikeys.inc b/zsnes/src/gui/guikeys.inc index 354b2229..b8a42f70 100644 --- a/zsnes/src/gui/guikeys.inc +++ b/zsnes/src/gui/guikeys.inc @@ -706,21 +706,33 @@ GUIgetcurrentinput: .nokey ret -%macro KeyTabInc 1 ; tab array - cmp dh,9 - jne %%done +%macro KeyTabInc 1-* ; tab arrays + push edx +%rep %0 + xor edx,edx mov eax,[%1] - cmp eax,[%1+4] - je %%back - inc dword[%1] - jmp %%done -%%back - mov dword[%1],1 -%%done + div dword[%1+4] + mov [%1],edx + %rotate 1 + or [%1],eax + cmp eax,1 + je %%exit + %rotate -1 + sub eax,[%1] + adc dword[%1],0 + cmp dword[%1],0 + jne %%exit + %rotate 1 +%endrep +%%exit + pop edx %endmacro GUIInputKeys: + cmp dh,9 + jne .notab KeyTabInc GUIInputTabs +.notab ret GUITCPIPKeys: @@ -838,13 +850,13 @@ GUISpeedKeys: cmp dh,'A' ; Framerate Checkboxes jne .noautofr - mov byte[FPSOn],0 - cmp byte[frameskip],0 + cmp byte[frameskip],0 ; 0 = autoframerate / 1-10 = frameskip 0-9 je .zero mov byte[frameskip],0 jmp .notzero .zero - mov byte[frameskip],2 + mov byte[FPSOn],0 + mov byte[frameskip],1 .notzero .noautofr ret @@ -939,7 +951,15 @@ GUIGUIOptnsKeys: ret GUIVideoKeys: + cmp dh,9 + jne near .notab + cmp byte[NTSCFilter],0 + jne .ntsc KeyTabInc GUIVideoTabs + jmp .notab +.ntsc + KeyTabInc GUIVideoTabs,GUIVntscTab +.notab cmp dh,'a' jb .nocap cmp dh,'z' @@ -1340,8 +1360,12 @@ GUIVideoKeys: .nograyscale .notfilterstab - cmp dword[GUIVideoTabs],3 + cmp dword[GUIVntscTab],1 jne .notntsctab + cmp dh,'B' + jne .noblend + xor byte[NTSCBlend],1 +.noblend .notntsctab ret diff --git a/zsnes/src/gui/guimouse.inc b/zsnes/src/gui/guimouse.inc index aa3afc70..94c27cd4 100644 --- a/zsnes/src/gui/guimouse.inc +++ b/zsnes/src/gui/guimouse.inc @@ -53,12 +53,14 @@ ProcessMouse: call Set_MouseYMax .nohold1 cmp byte[GUIHold],5 ; Sound Slider - je .dohold5 + je .holdslider cmp byte[GUIHold],6 ; Speed Slider - je .dohold5 + je .holdslider cmp byte[GUIHold],2 ; Colour Slider + je .holdslider + cmp byte[GUIHold],7 ; Video Slider jne .nohold2m -.dohold5 +.holdslider mov ecx,[GUIHoldXlimL] ; Sets min/max move range for mouse mov edx,[GUIHoldXlimR] ; once holding slider call Set_MouseXMax @@ -334,7 +336,7 @@ ProcessMouseButtons: xor ebx,ebx mov bl,[GUIwinorder+eax] cmp byte[GUIHold],2 - je .hold2 + je near .hold2 cmp byte[GUIHold],3 je near .hold3 cmp byte[GUIHold],4 @@ -343,6 +345,8 @@ ProcessMouseButtons: je near .hold5 cmp byte[GUIHold],6 je near .hold6 + cmp byte[GUIHold],7 + je near .hold7 cmp byte[GUIHold],1 je near .hold cmp byte[GUIHold],255 @@ -452,6 +456,23 @@ ProcessMouseButtons: .nogreat6 mov byte[lastmouseholded],1 jmp DisplayGUISpeedClick +.hold7 + ; Video Slide Bar Hold + mov eax,[GUIHoldYlim] + mov [GUImouseposy],eax + mov ebx,[GUImouseposx] + mov eax,[GUIHoldXlimL] + cmp ebx,eax + jnl .noless7 + mov [GUImouseposx],eax +.noless7 + mov eax,[GUIHoldXlimR] + cmp ebx,eax + jng .nogreat7 + mov [GUImouseposx],eax +.nogreat7 + mov byte[lastmouseholded],1 + jmp DisplayGUIVideoClick .hold cmp word[GUImouseposy],16 jge .noover @@ -2182,7 +2203,7 @@ DisplayGUIMovieClick: %%noclick %endmacro -%macro GUIPTabClick 4 ; minX, maxX, var, value +%macro GUIPTabClick 3-* ; minX, maxX, value, var, vars to zero cmp eax,%1+1 jl %%noclick cmp eax,%2-1 @@ -2191,7 +2212,14 @@ DisplayGUIMovieClick: jl %%noclick cmp edx,22 jg %%noclick - mov %3,%4 + mov dword[%4],%3 +%if (%0>4) + %rotate 4 +%rep (%0-4) + mov dword[%1],0 + %rotate 1 +%endrep +%endif %%noclick %endmacro @@ -2213,11 +2241,11 @@ DisplayGUIInputClick: ;x,y,x2,y2,currentwin,vpos,#entries,starty,y/entry,cpos,winval,win#,dclicktick# GUIWinControl 5,36,107,34+5*8,GUIBlankVar,GUIcurrentinputviewloc,GUINumValue,35,8,GUIcurrentinputcursloc,4,3,0 - GUIPTabClick 0,21,dword[GUIInputTabs],1 - GUIPTabClick 22,43,dword[GUIInputTabs],2 - GUIPTabClick 44,65,dword[GUIInputTabs],3 - GUIPTabClick 66,87,dword[GUIInputTabs],4 - GUIPTabClick 88,109,dword[GUIInputTabs],5 + GUIPTabClick 0,21,1,GUIInputTabs + GUIPTabClick 22,43,2,GUIInputTabs + GUIPTabClick 44,65,3,GUIInputTabs + GUIPTabClick 66,87,4,GUIInputTabs + GUIPTabClick 88,109,5,GUIInputTabs GUIPHoldbutton 123,34,153,45,14 ; Buttons GUIPHoldbutton 123,50,177,61,40 @@ -2381,7 +2409,6 @@ DisplayGUIOptionClick: %endif ret - DisplayGUIVideoClick2: cmp dword[GUIVideoTabs],1 ; modes jne near .notmodestab2 @@ -2393,11 +2420,11 @@ DisplayGUIVideoClick2: GUIPostWinBoxMove 5,27,115,27+5*8,GUIcurrentvideoviewloc,GUIcurrentvideocursloc,GUINumValue,.scrollup,.scrolldown,DisplayGUIVideoClick.skipscrol,5 .notmodestab2 DisplayGUIVideoClick: - GUIPTabClick 0,39,dword[GUIVideoTabs],1 - GUIPTabClick 40,91,dword[GUIVideoTabs],2 - cmp dword[GUIVideoTabs+4],3 + GUIPTabClick 0,39,1,GUIVideoTabs,GUIVntscTab + GUIPTabClick 40,91,2,GUIVideoTabs,GUIVntscTab + cmp byte[NTSCFilter],1 jne .nontscf - GUIPTabClick 92,125,dword[GUIVideoTabs],3 + GUIPTabClick 92,125,1,GUIVntscTab,GUIVideoTabs .nontscf cmp dword[GUIVideoTabs],1 ; modes @@ -2542,13 +2569,103 @@ DisplayGUIVideoClick: GUIClickCButtonT 115,183,byte[vsyncon],byte[Triplebufen] %endif GUIClickCButton 11,183,byte[GrayscaleMode] -.notfilterstab - - cmp dword[GUIVideoTabs],3 ; NTSC - jne .notntsctab -.notntsctab mov al,[vsyncon] mov [cfgvsync],al +.notfilterstab + + cmp dword[GUIVntscTab],1 ; NTSC + jne near .notntsctab + mov eax,[GUImouseposx] ; update mouse location + sub eax,[GUIwinposx+5*4] + mov edx,[GUImouseposy] + sub edx,[GUIwinposy+5*4] + + GUIClickCButton 5,25,byte[NTSCBlend] ; Checkboxes + + ;Sliders + cmp eax,15 ; X-Range for click-area + jl near .nomovebar + cmp eax,15+100 + jg near .nomovebar + cmp edx,54 ; Y-Range for click-area + jl near .nomovebar + cmp edx,58 + jg .nohuebar + sub eax,15 + mov [NTSCHue],al + mov byte[GUIHold],7 ; Lock mouse to bar when clicked + mov eax,[GUIwinposy+5*4] + add eax,56 + mov [GUIHoldYlim],eax + jmp .nowarpbar +.nohuebar + cmp edx,74 + jl near .nomovebar + cmp edx,78 + jg .nosatbar + sub eax,15 + mov [NTSCSat],al + mov byte[GUIHold],7 + mov eax,[GUIwinposy+5*4] + add eax,76 + mov [GUIHoldYlim],eax + jmp .nowarpbar +.nosatbar + cmp edx,94 + jl near .nomovebar + cmp edx,98 + jg .nocontbar + sub eax,15 + mov [NTSCCont],al + mov byte[GUIHold],7 + mov eax,[GUIwinposy+5*4] + add eax,96 + mov [GUIHoldYlim],eax + jmp .nowarpbar +.nocontbar + cmp edx,114 + jl near .nomovebar + cmp edx,118 + jg .nobrightbar + sub eax,15 + mov [NTSCBright],al + mov byte[GUIHold],7 + mov eax,[GUIwinposy+5*4] + add eax,116 + mov [GUIHoldYlim],eax + jmp .nowarpbar +.nobrightbar + cmp edx,134 + jl .nomovebar + cmp edx,138 + jg .nosharpbar + sub eax,15 + mov [NTSCSharp],al + mov byte[GUIHold],7 + mov eax,[GUIwinposy+5*4] + add eax,136 + mov [GUIHoldYlim],eax + jmp .nowarpbar +.nosharpbar + cmp edx,154 + jl .nomovebar + cmp edx,158 + jg .nomovebar + sub eax,15 + mov [NTSCWarp],al + mov byte[GUIHold],7 + mov eax,[GUIwinposy+5*4] + add eax,156 + mov [GUIHoldYlim],eax +.nowarpbar + mov eax,[GUIwinposx+5*4] + add eax,15 + mov [GUIHoldXlimL],eax + add eax,100 + mov [GUIHoldXlimR],eax +.nomovebar + +.notntsctab xor al,al ret @@ -2944,7 +3061,7 @@ DisplayGUIOptnsClick: cmp eax,25 jl near .nomovebar - cmp eax,25+32*4-1 + cmp eax,25+128 jg near .nomovebar sub eax,25 shr eax,2 @@ -3036,7 +3153,7 @@ DisplayGUIOptnsClick: add eax,25 mov [GUIHoldXlimL],eax mov eax,[GUIwinposx+10*4] - add eax,25+32*4-1 + add eax,25+128 mov [GUIHoldXlimR],eax .nohold ret @@ -3449,8 +3566,6 @@ DrawMouse: cmp bl,220 ja .nomidshad sub bl,189 -; test bl,01h -; jnz .nomidshad shr bl,1 add bl,189 mov [edi+288*7+5],bl @@ -3458,6 +3573,7 @@ DrawMouse: .nomidshad .finishadow + add al,88 mov [edi],al .nodraw inc esi diff --git a/zsnes/src/gui/guiwindp.inc b/zsnes/src/gui/guiwindp.inc index b4150ae3..20e0b873 100644 --- a/zsnes/src/gui/guiwindp.inc +++ b/zsnes/src/gui/guiwindp.inc @@ -281,8 +281,8 @@ GUIStringGreater2: add eax,dword[GUIwinsizex+%1*4] mov ecx,eax mov esi,[GUIwinsizey+%1*4] - mov edx,[GUIWincol] - add edx,1 + mov dl,[GUIWincol] + inc dl .loop3 DrawGUILine dec esi @@ -567,7 +567,7 @@ GUIOuttextwin2 %1,%2-1,%3-1,%4 mov dl,[GUIWincol] DrawGUIWinBox %1,%2,%3-3+2,%4,%3+1,dl mov dl,[GUIWincol] - add dl,1 + inc dl DrawGUIWinBox %1,%2-1,%3,%2,%5,dl mov dl,[GUIWincol] add dl,4 @@ -588,7 +588,7 @@ GUIOuttextwin2 %1,%2-1,%3-1,%4 mov dl,[GUIWincol] DrawGUIWinBox %1,%2,%3-3+2,%4,%3+1,dl mov dl,[GUIWincol] - add dl,1 + inc dl DrawGUIWinBox %1,%2-1,%3,%2,%5,dl mov dl,[GUIWincol] add dl,4 @@ -608,14 +608,38 @@ GUIOuttextwin2 %1,%2-1,%3-1,%4 add esi,[vidbuffer] %endmacro +%macro GUIDrawTArea 1 ; win #id + mov dl,[GUIWincol] + inc dl + mov eax,[GUIwinposx+%1*4] + mov ebx,[GUIwinposy+%1*4] + add ebx,10 + mov ecx,eax + add ecx,[GUIwinsizex+%1*4] + mov esi,12 +%%loop1 + DrawGUILine + dec esi + jnz %%loop1 + add dl,3 + inc eax + DrawGUILine + sub ebx,13 ; set ebx to minY + dec eax ; set eax to minX +%endmacro + %macro DrawTabOn 1 ; %1 = array, ebp = offset, eax = minX, ebx = minY push edi mov esi,%1 mov ecx,8 add ecx,eax +%%skip + cmp byte[esi+ebp],0 + jne %%read1 + inc ebp + jmp %%skip %%read1 - mov dl,[esi+ebp] - cmp dl,0 + cmp byte[esi+ebp],0 je %%ok1 inc esi add ecx,6 @@ -673,23 +697,26 @@ GUIOuttextwin2 %1,%2-1,%3-1,%4 add eax,2 ; restore and set Xoff for next tab %%read2 mov esi,%1 - mov dl,[esi+ebp] - cmp dl,0 + cmp byte[esi+ebp],0 je %%ok2 inc ebp jmp %%read2 %%ok2 - inc ebp ; set pointer to next string pop edi %endmacro %macro DrawTabOff 1 ; %1 = array, ebp = offset, eax = minX, ebx = minY + push edi mov esi,%1 mov ecx,8 add ecx,eax +%%skip + cmp byte[esi+ebp],0 + jne %%read1 + inc ebp + jmp %%skip %%read1 - mov dl,[esi+ebp] - cmp dl,0 + cmp byte[esi+ebp],0 je %%ok1 inc esi add ecx,6 @@ -711,7 +738,6 @@ GUIOuttextwin2 %1,%2-1,%3-1,%4 jnz %%draw1 sub ebx,10 push ebx ; save Yoff for next drawing step - push ebp ; save array offset mov byte[GUItextcolor],202 cmp byte[GUIWincoladd],0 je %%nochange @@ -723,25 +749,18 @@ GUIOuttextwin2 %1,%2-1,%3-1,%4 add edx,6 push edx ; save label Xoff SetVidbufLoc - push edi mov edi,%1 add edi,ebp call GUIOutputStringwin - pop edi pop edx pop ebx - pop ebp - push ebp ; save array offset again add byte[GUItextcolor],15 dec edx dec ebx SetVidbufLoc - push edi mov edi,%1 add edi,ebp call GUIOutputStringwin - pop edi - pop ebp ; restore pointer pop ebx ; restore Yoff for drawing step pop eax inc eax ; restore and set Xoff for drawing step @@ -756,50 +775,71 @@ GUIOuttextwin2 %1,%2-1,%3-1,%4 inc eax %%read2 mov esi,%1 - mov dl,[esi+ebp] - cmp dl,0 + cmp byte[esi+ebp],0 je %%ok2 inc ebp jmp %%read2 %%ok2 - inc ebp ; set pointer to next string + pop edi %endmacro -%macro GUIDrawTab 2 ; window id #, tabs/label array - mov dl,[GUIWincol] - add dl,1 - mov eax,[GUIwinposx+%1*4] - mov ebx,[GUIwinposy+%1*4] - add ebx,10 - mov ecx,eax - add ecx,[GUIwinsizex+%1*4] - mov esi,12 -%%loop1 - DrawGUILine - dec esi - jnz %%loop1 - add dl,3 - inc eax - DrawGUILine - sub ebx,13 ; set ebx to minY - dec eax ; set eax to minX - mov esi,[%2] ; active tab - mov ecx,[%2+4] ; total # +%macro GUIDrawTabs 1 ; tabs/label array + mov ecx,[%1+4] ; total # + cmp ecx,0 + je near %%nodraw + mov esi,[%1] ; active tab mov ebp,8 ; set array offset at top of labels %%loop2 dec esi ; check if tab is the current one push ecx push esi jnz near %%disabled - DrawTabOn %2 ; draws tab, updates eax, ebx & ebp for next tab... - jmp %%done + DrawTabOn %1 ; draws tab, updates eax, ebx & ebp for next tab... + jmp near %%done %%disabled - DrawTabOff %2 ; ... and autosizes the tab for its label + DrawTabOff %1 ; ... and autosizes the tab for its label %%done pop esi pop ecx dec ecx jnz %%loop2 +%%nodraw +%endmacro + +%macro GUIDrawSlider 6 ; win #id, minX, width, Ypos, variable, text + mov eax,[GUIwinposx+%1*4] + mov ebx,[GUIwinposy+%1*4] + add eax,%2 + add ebx,%4 + mov ecx,eax + add ecx,%3 + xor edx,edx + mov dl,215 + sub dl,[GUIWincoladd] + DrawGUILine + inc ecx + inc eax + sub dl,13 + DrawGUILine + xor eax,eax + mov al,[%5] + mov dword[GUITemp],%2-4 + add [GUITemp],eax + GUIDisplayIconWin %1,[GUITemp],%4-4,GUIIconDataSlideBar + mov word[%6],' ' + mov esi,%6+3 + mov al,[%5] + mov bl,10 +%%asciilp ; turns decimal into ascii + dec esi + xor ah,ah + div bl + add ah,48 + mov [esi],ah + cmp al,0 + jne %%asciilp + mov dword[GUITemp],%6 ; Display Value (Green) + GUIDisplayTextG %1,%2+%3+6,%4-1,[GUITemp] %endmacro ; DGUIDisplay @@ -1166,7 +1206,7 @@ SECTION .text mov dl,[GUIWincol] DrawGUIWinBox %1,%2+1,%3,%2+18,%3,dl mov dl,[GUIWincol] - add dl,1 + inc dl DrawGUIWinBox %1,%2,%3+1,%2-1,%3+5,dl mov dl,[GUIWincol] add dl,4 @@ -1274,7 +1314,8 @@ DisplayGUIInput: ; Player Select, Joystick/keyboard Type List, Button Assignm mov eax,[GUIInputTabs] dec al mov [cplayernum],al - GUIDrawTab 3,GUIInputTabs + GUIDrawTArea 3 + GUIDrawTabs GUIInputTabs GUIDisplayTextY 3,6,26,GUIInputTextA xor eax,eax @@ -1632,12 +1673,12 @@ DisplayGUIVideo: GUIDrawWindowBox 5,GUIVideoDisp ; Video Modes List/Options - xor ebx,ebx - mov bl,[NTSCFilter] - add ebx,2 - mov [GUIVideoTabs+4],ebx - - GUIDrawTab 5,GUIVideoTabs + GUIDrawTArea 5 + GUIDrawTabs GUIVideoTabs + cmp byte[NTSCFilter],0 + je near .nontsc + GUIDrawTabs GUIVntscTab +.nontsc cmp dword[GUIVideoTabs],1 jne near .notmodestab @@ -1860,8 +1901,23 @@ DisplayGUIVideo: %endif .notfilterstab - cmp dword[GUIVideoTabs],3 - jne .notntsctab + cmp dword[GUIVntscTab],1 + jne near .notntsctab + GUIDisplayCheckboxu 5,5,25,NTSCBlend,GUIVideoTextG1,0 + + GUIDisplayTextY 5,7,46,GUIVideoTextG2 + GUIDisplayTextY 5,7,66,GUIVideoTextG3 + GUIDisplayTextY 5,7,86,GUIVideoTextG4 + GUIDisplayTextY 5,7,106,GUIVideoTextG5 + GUIDisplayTextY 5,7,126,GUIVideoTextG6 + GUIDisplayTextY 5,7,146,GUIVideoTextG7 + + GUIDrawSlider 5,15,100,56,NTSCHue,GUIVideoTextG + GUIDrawSlider 5,15,100,76,NTSCSat,GUIVideoTextG + GUIDrawSlider 5,15,100,96,NTSCCont,GUIVideoTextG + GUIDrawSlider 5,15,100,116,NTSCBright,GUIVideoTextG + GUIDrawSlider 5,15,100,136,NTSCSharp,GUIVideoTextG + GUIDrawSlider 5,15,100,156,NTSCWarp,GUIVideoTextG .notntsctab ret @@ -1869,6 +1925,7 @@ SECTION .data GUIVideoTabs dd 1,2 db 'MODES',0 db 'FILTERS',0 +GUIVntscTab dd 0,1 db 'NTSC',0 GUIVideoTextB db 'LEGEND:',0 @@ -1904,6 +1961,15 @@ GUIVideoText8 db 'SET',0 ; set button GUIVideoText9 db 'VSYNC',0 ; -c GUIVideoTexte db 'NTSC',0 +GUIVideoTextG db '---%',0 +GUIVideoTextG1 db 'BLEND FRAMES',0 +GUIVideoTextG2 db 'HUE:',0 +GUIVideoTextG3 db 'SATURATION:',0 +GUIVideoTextG4 db 'CONTRAST:',0 +GUIVideoTextG5 db 'BRIGHTNESS:',0 +GUIVideoTextG6 db 'SHARPNESS:',0 +GUIVideoTextG7 db 'HUE WARPING:',0 + SECTION .bss GUIVStA resd 3 GUIcurrentvideoviewloc resd 1 @@ -1961,51 +2027,7 @@ DisplayGUISound: ; Sound Related Options add [GUITemp],eax GUIDisplayTextG 6,23,64,[GUITemp] - mov eax,[GUIwinposx+6*4] ; Volume Level Slider - mov ebx,[GUIwinposy+6*4] - mov ecx,eax - add eax,15 - add ecx,15+100 - add ebx,91 - xor edx,edx - mov dl,215 - sub dl,[GUIWincoladd] - DrawGUILine - inc ecx - inc eax - sub dl,13 - DrawGUILine - xor eax,eax - mov al,[MusicRelVol] - mov dword[GUITemp],11 - add [GUITemp],eax - GUIDisplayIconWin 6,[GUITemp],87,GUIIconDataSlideBar - mov dword[GUISoundTextC1],' ' - mov byte[GUISoundTextC1+3],'%' - mov esi,GUISoundTextC1+2 - xor eax,eax - mov al,[MusicRelVol] - mov ebx,10 - div bl - add ah,48 - mov [esi],ah - cmp al,0 - je .nomore - dec esi - xor ah,ah - div bl - add ah,48 - mov [esi],ah - cmp al,0 - je .nomore - dec esi - xor ah,ah - div bl - add ah,48 - mov [esi],ah -.nomore - mov [GUITemp],esi - GUIDisplayTextG 6,119,89,[GUITemp] + GUIDrawSlider 6,15,100,91,MusicRelVol,GUISoundTextC1 ret SECTION .data @@ -3027,7 +3049,7 @@ GUIGameOptnsTextC7 db 'SAVE SPC',0 GUIGameOptnsTextD1 db 'MISC TOGGLES:',0 GUIGameOptnsTextD1a db 'USE PL12/34',0 -GUIGameOptnsTextD1b db 'CLRSWITCHES',0 +GUIGameOptnsTextD1b db 'PANIC KEY',0 GUIGameOptnsTextD1c db 'DISPLAY FPS',0 GUIGameOptnsTextD1d db 'BATT POWER',0 @@ -3104,19 +3126,19 @@ DisplayGUIOptns: ; GUI Options xor eax,eax mov al,[TRVal2] shl eax,2 - mov dword[GUITemp],22 + mov dword[GUITemp],23 add [GUITemp],eax GUIDisplayIconWin 10,[GUITemp],120,GUIIconDataSlideBar xor eax,eax mov al,[TGVal2] shl eax,2 - mov dword[GUITemp],22 + mov dword[GUITemp],23 add [GUITemp],eax GUIDisplayIconWin 10,[GUITemp],132,GUIIconDataSlideBar xor eax,eax mov al,[TBVal2] shl eax,2 - mov dword[GUITemp],22 + mov dword[GUITemp],23 add [GUITemp],eax GUIDisplayIconWin 10,[GUITemp],144,GUIIconDataSlideBar @@ -3491,7 +3513,7 @@ SECTION .text mov dl,[GUIWincol] DrawGUIWinBox %1,%2,%6,%4,%3,dl ; freezes if you replace %6 with %3-1 mov dl,[GUIWincol] - add dl,1 + inc dl DrawGUIWinBox %1,%2-1,%3,%2,%5,dl mov dl,[GUIWincol] add dl,4 @@ -3507,7 +3529,7 @@ SECTION .text mov dl,[GUIWincol] DrawGUIWinBox %1,%2,%6,%4,%3,dl mov dl,[GUIWincol] - add dl,1 + inc dl DrawGUIWinBox %1,%2-1,%3,%2,%5,dl mov dl,[GUIWincol] add dl,4 @@ -3532,7 +3554,7 @@ SECTION .text mov dl,[GUIWincol] DrawGUIWinBox %1,%2,%6,%4,%3,dl mov dl,[GUIWincol] - add dl,1 + inc dl DrawGUIWinBox %1,%2-1,%3,%2,%5,dl mov dl,[GUIWincol] add dl,4 @@ -4233,8 +4255,8 @@ DisplayGUIAddOns: ;Select Special Controllers mov eax,GUIAddOnEETopBar mov ebx,GUIAddOnsDisp .loopA - mov cl,byte[eax] - mov byte[ebx],cl + mov cl,[eax] + mov [ebx],cl inc eax inc ebx cmp cl,0 @@ -4263,8 +4285,8 @@ DisplayGUIAddOns: ;Select Special Controllers mov eax,GUIAddOnsDispEE mov ebx,GUIAddOnsDisp .loopB - mov cl,byte[eax] - mov byte[ebx],cl + mov cl,[eax] + mov [ebx],cl inc eax inc ebx cmp cl,0 @@ -4273,8 +4295,8 @@ DisplayGUIAddOns: ;Select Special Controllers pop ebx pop eax - GUIDisplayText 17,20,15,GUIAddOnText1 - GUIDisplayText 17,112,15,GUIAddOnText2 + GUIDisplayTextY 17,20,15,GUIAddOnText1 + GUIDisplayTextY 17,112,15,GUIAddOnText2 GUIDisplayButtonHoleTu 17,9,23,byte[device1],0,GUIAddOnText3,0 GUIDisplayButtonHoleTu 17,9,33,byte[device1],1,GUIAddOnText4,0 @@ -4523,14 +4545,13 @@ DisplayGUISave: ;Save & Rewind options/Hotkeys GUIDisplayCheckboxu 20,11,100,PauseRewind,GUISaveTextB7,12 GUIDisplayBBox 20,150,17,165,24,167 ; Rewind States Box - xor ax,ax mov ah,[RewindStates] mov al,48 add ah,48 .asciiloop cmp ah,58 jb .hex2asciidone - add al,1 + inc al sub ah,10 jmp .asciiloop .hex2asciidone @@ -4538,14 +4559,13 @@ DisplayGUISave: ;Save & Rewind options/Hotkeys GUIDisplayTextG 20,154,19,GUISaveTextZ3 GUIDisplayBBox 20,150,29,165,36,167 ; Second/Rewind Box - xor ax,ax mov ah,[RewindFrames] mov al,48 add ah,48 .asciiloop2 cmp ah,58 jb .hex2asciidone2 - add al,1 + inc al sub ah,10 jmp .asciiloop2 .hex2asciidone2 @@ -4649,7 +4669,6 @@ DisplayGUISpeed: ;Speed Options GUIDisplayCheckboxun 21,11,145,frameskip,0,GUISpeedTextC2,0 GUIDisplayBBox 21,96,24,114,31,167 ; FF Ratio Box - xor ax,ax mov ah,[FFRatio] add ah,2 mov al,48 @@ -4657,7 +4676,7 @@ DisplayGUISpeed: ;Speed Options .asciiloop cmp ah,58 jb .hex2asciidone - add al,1 + inc al sub ah,10 jmp .asciiloop .hex2asciidone @@ -4669,7 +4688,6 @@ DisplayGUISpeed: ;Speed Options GUIDisplayTextG 21,101,26,GUISpeedTextZ3 GUIDisplayBBox 21,96,35,114,42,167 ; SD Ratio Box - xor ax,ax mov ah,[SDRatio] add ah,2 mov al,48 @@ -4677,7 +4695,7 @@ DisplayGUISpeed: ;Speed Options .asciiloop2 cmp ah,58 jb .hex2asciidone2 - add al,1 + inc al sub ah,10 jmp .asciiloop2 .hex2asciidone2 @@ -4717,7 +4735,7 @@ DisplayGUISpeed: ;Speed Options xor eax,eax mov al,[EmuSpeed] shl eax,1 - mov dword[GUITemp],12 + mov dword[GUITemp],11 add [GUITemp],eax GUIDisplayIconWin 21,[GUITemp],171,GUIIconDataSlideBar mov dword[GUISpeedTextD1],0 diff --git a/zsnes/src/video/procvid.asm b/zsnes/src/video/procvid.asm index 5ef419a0..01a33f34 100644 --- a/zsnes/src/video/procvid.asm +++ b/zsnes/src/video/procvid.asm @@ -19,6 +19,8 @@ %include "macros.mac" +%include "video/2xsaimmx.inc" +%include "video/copyvid.inc" EXTSYM BGMA,V8Mode,antienab,cacheud,cbitmode,ccud,cfield,cgram,coladdb,coladdg EXTSYM coladdr,curblank,curfps,cvidmode,delay,extlatch,fnamest,En2xSaI @@ -38,14 +40,11 @@ EXTSYM intrlng,mode7hr,newgfx16b,vesa2_clbitng,vesa2_clbitng2,CSStatus EXTSYM CSStatus2,CSStatus3,SpecialLine,Clear2xSaIBuffer,vidbufferofsb,bg1scroly EXTSYM bg1objptr,DecompAPtr,HalfTransB,HalfTransC,cur_zst_size,old_zst_size EXTSYM MovieProcessing,mzt_chdir,UpChdir,MovieFrameStr,GetMovieFrameStr -EXTSYM MovieDisplayFrame -EXTSYM MouseCount,device2 +EXTSYM MovieDisplayFrame,SloMo,MouseCount,device2 %ifndef __MSDOS__ EXTSYM MouseMoveX,MouseMoveY,MouseButtons,MultiMouseProcess,mouse -%endif - -%ifdef __MSDOS__ +%else EXTSYM SB_blank,vsyncon,Triplebufen,granadd %endif @@ -54,7 +53,6 @@ NEWSYM ScreenScale, resb 1 ; If horizontal is scaled or not NEWSYM TempDebugV, resw 1 ; Temporary Debugging variable SECTION .text - %macro MMXStuff 0 %%1 movq mm0,[esi] @@ -67,56 +65,7 @@ SECTION .text jnz %%1 %endmacro -%macro FPUStuff 1 - FILD QWORD[ESI+%1*16] - FILD QWORD[ESI+8+%1*16] - FISTP QWORD[ES:EDI+8+%1*16] - FISTP QWORD[ES:EDI+%1*16] -%endmacro - -%MACRO CopyFPU 0 -%ENDMACRO - -%include "video/2xsaimmx.inc" -%include "video/copyvid.inc" - SECTION .text -NEWSYM FPUZero -%if 0 - -; omg this is lame ;P - mov [.Zero],eax - mov [.Zero+4],eax - mov [.Zero2],eax - mov [.Zero2+4],eax -.TopOfLoop - FILD QWORD[.Zero] - FILD QWORD[.Zero2] - FXCH - FISTP QWORD[EDI] - FISTP QWORD[EDI+8] - ADD EDI,16 - DEC ECX - JNZ .TopOfLoop -%else - fld1 - fsub st0,st0 -.TopOfLoop - fst qword[edi] - fst qword[edi+8] - add edi,16 - dec ecx - jnz .TopOfLoop - fstp st0 -%endif - ret - -%if 0 -SECTION .bss -.Zero resd 2 -.Zero2 resd 2 -SECTION .text -%endif ;******************************************************* ; ShowVideo Processes & displays video @@ -548,118 +497,119 @@ NEWSYM outputhex16 SECTION .data NEWSYM ASCII2Font - db 00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h - db 00h,00h,00h,00h,00h,00h,00h,00h,00h,30h,00h,00h,00h,00h,00h,00h - db 00h,3Eh,33h,31h,3Fh,37h,2Fh,3Dh,3Ah,3Bh,35h,38h,39h,25h,28h,29h - db 01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah,2Eh,40h,2Ah,32h,2Bh,36h - db 3Ch,0Bh,0Ch,0Dh,0Eh,0Fh,10h,11h,12h,13h,14h,15h,16h,17h,18h,19h - db 1Ah,1Bh,1Ch,1Dh,1Eh,1Fh,20h,21h,22h,23h,24h,2Ch,34h,2Dh,42h,26h - db 41h,0Bh,0Ch,0Dh,0Eh,0Fh,10h,11h,12h,13h,14h,15h,16h,17h,18h,19h - db 1Ah,1Bh,1Ch,1Dh,1Eh,1Fh,20h,21h,22h,23h,24h,43h,00h,44h,27h,00h - db 0Dh,1Fh,0Fh,0Bh,0Bh,0Bh,0Bh,0Dh,0Fh,0Fh,0Fh,13h,13h,13h,0Bh,0Bh - db 0Fh,0Bh,0Bh,19h,19h,19h,1Fh,1Fh,23h,19h,1Fh,0Dh,10h,23h,1Ah,10h - db 0Bh,4Eh,4Fh,50h,51h,52h,53h,54h,55h,56h,57h,58h,59h,5Ah,5Bh,5Ch - db 5Dh,5Eh,5Fh,60h,61h,62h,63h,64h,65h,66h,67h,68h,69h,6Ah,6Bh,6Ch - db 6Dh,6Eh,6Fh,70h,71h,72h,73h,74h,75h,76h,77h,78h,79h,7Ah,7Bh,7Ch - db 7Dh,7Eh,7Fh,80h,81h,82h,83h,84h,85h,86h,87h,88h,89h,8Ah,8Bh,8Ch - db 00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h - db 00h,00h,00h,00h,00h,00h,00h,4Dh,4Ch,4Bh,4Ah,45h,46h,47h,48h,49h + db 00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h + db 00h,00h,00h,00h,00h,00h,00h,00h,00h,30h,00h,00h,00h,00h,00h,00h + db 00h,3Eh,33h,31h,3Fh,37h,2Fh,3Dh,3Ah,3Bh,35h,38h,39h,25h,28h,29h + db 01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah,2Eh,40h,2Ah,32h,2Bh,36h + db 3Ch,0Bh,0Ch,0Dh,0Eh,0Fh,10h,11h,12h,13h,14h,15h,16h,17h,18h,19h + db 1Ah,1Bh,1Ch,1Dh,1Eh,1Fh,20h,21h,22h,23h,24h,2Ch,34h,2Dh,42h,26h + db 41h,0Bh,0Ch,0Dh,0Eh,0Fh,10h,11h,12h,13h,14h,15h,16h,17h,18h,19h + db 1Ah,1Bh,1Ch,1Dh,1Eh,1Fh,20h,21h,22h,23h,24h,43h,00h,44h,27h,00h + db 0Dh,1Fh,0Fh,0Bh,0Bh,0Bh,0Bh,0Dh,0Fh,0Fh,0Fh,13h,13h,13h,0Bh,0Bh + db 0Fh,0Bh,0Bh,19h,19h,19h,1Fh,1Fh,23h,19h,1Fh,0Dh,10h,23h,1Ah,10h + db 0Bh,4Eh,4Fh,50h,51h,52h,53h,54h,55h,56h,57h,58h,59h,5Ah,5Bh,5Ch + db 5Dh,5Eh,5Fh,60h,61h,62h,63h,64h,65h,66h,67h,68h,69h,6Ah,6Bh,6Ch + db 6Dh,6Eh,6Fh,70h,71h,72h,73h,74h,75h,76h,77h,78h,79h,7Ah,7Bh,7Ch + db 7Dh,7Eh,7Fh,80h,81h,82h,83h,84h,85h,86h,87h,88h,89h,8Ah,8Bh,8Ch + db 00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h + db 00h,00h,00h,00h,00h,00h,00h,4Dh,4Ch,4Bh,4Ah,45h,46h,47h,48h,49h NEWSYM FontData - db 0,0,0,0,0,0,0,0 - db 01111100b,11000110b,11001110b,11010110b ; 0, 01 +; bitmap 8x8 font ; char, offset for ASCII2Font + db 0,0,0,0,0,0,0,0 ; ' ', 00 + db 01111100b,11000110b,11001110b,11010110b ; 0, 01 db 11100110b,11000110b,01111100b,00000000b - db 00011000b,00111000b,01111000b,00011000b ; 1, 02 + db 00011000b,00111000b,01111000b,00011000b ; 1, 02 db 00011000b,00011000b,01111110b,00000000b - db 01111100b,11000110b,00001100b,00011000b ; 2, 03 + db 01111100b,11000110b,00001100b,00011000b ; 2, 03 db 00110000b,01100110b,11111110b,00000000b - db 01111100b,11000110b,00000110b,00111100b ; 3, 04 + db 01111100b,11000110b,00000110b,00111100b ; 3, 04 db 00000110b,11000110b,01111100b,00000000b - db 00111100b,01101100b,11001100b,11111110b ; 4, 05 + db 00111100b,01101100b,11001100b,11111110b ; 4, 05 db 00001100b,00001100b,00001100b,00000000b - db 11111110b,11000000b,11000000b,11111100b ; 5, 06 + db 11111110b,11000000b,11000000b,11111100b ; 5, 06 db 00000110b,11000110b,01111100b,00000000b - db 00111100b,01100000b,11000000b,11111100b ; 6, 07 + db 00111100b,01100000b,11000000b,11111100b ; 6, 07 db 11000110b,11000110b,01111100b,00000000b - db 11111110b,11000110b,00000110b,00001100b ; 7, 08 + db 11111110b,11000110b,00000110b,00001100b ; 7, 08 db 00011000b,00011000b,00011000b,00000000b - db 01111100b,11000110b,11000110b,01111100b ; 8, 09 + db 01111100b,11000110b,11000110b,01111100b ; 8, 09 db 11000110b,11000110b,01111100b,00000000b - db 01111100b,11000110b,11000110b,01111110b ; 9, 0A + db 01111100b,11000110b,11000110b,01111110b ; 9, 0A db 00000110b,11000110b,01111100b,00000000b - db 00111000b,01101100b,11000110b,11111110b ; A, 0B + db 00111000b,01101100b,11000110b,11111110b ; A, 0B db 11000110b,11000110b,11000110b,00000000b - db 11111100b,11000110b,11000110b,11111100b ; B, 0C + db 11111100b,11000110b,11000110b,11111100b ; B, 0C db 11000110b,11000110b,11111100b,00000000b - db 01111100b,11000110b,11000000b,11000000b ; C, 0D + db 01111100b,11000110b,11000000b,11000000b ; C, 0D db 11000000b,11000110b,01111100b,00000000b - db 11111100b,11000110b,11000110b,11000110b ; D, 0E + db 11111100b,11000110b,11000110b,11000110b ; D, 0E db 11000110b,11000110b,11111100b,00000000b - db 11111110b,11000000b,11000000b,11111000b ; E, 0F + db 11111110b,11000000b,11000000b,11111000b ; E, 0F db 11000000b,11000000b,11111110b,00000000b - db 11111110b,11000000b,11000000b,11111000b ; F, 10 + db 11111110b,11000000b,11000000b,11111000b ; F, 10 db 11000000b,11000000b,11000000b,00000000b - db 01111100b,11000110b,11000000b,11000000b ; G, 11 + db 01111100b,11000110b,11000000b,11000000b ; G, 11 db 11001110b,11000110b,01111100b,00000000b - db 11000110b,11000110b,11000110b,11111110b ; H, 12 + db 11000110b,11000110b,11000110b,11111110b ; H, 12 db 11000110b,11000110b,11000110b,00000000b - db 00111100b,00011000b,00011000b,00011000b ; I, 13 + db 00111100b,00011000b,00011000b,00011000b ; I, 13 db 00011000b,00011000b,00111100b,00000000b - db 00011110b,00001100b,00001100b,00001100b ; J, 14 + db 00011110b,00001100b,00001100b,00001100b ; J, 14 db 00001100b,11001100b,00111100b,00000000b - db 11001100b,11011000b,11110000b,11100000b ; K, 15 + db 11001100b,11011000b,11110000b,11100000b ; K, 15 db 11110000b,11011000b,11001100b,00000000b - db 11000000b,11000000b,11000000b,11000000b ; L, 16 + db 11000000b,11000000b,11000000b,11000000b ; L, 16 db 11000000b,11000000b,11111110b,00000000b - db 11000110b,11101110b,11111110b,11010110b ; M, 17 + db 11000110b,11101110b,11111110b,11010110b ; M, 17 db 11000110b,11000110b,11000110b,00000000b - db 11000110b,11100110b,11110110b,11011110b ; N, 18 + db 11000110b,11100110b,11110110b,11011110b ; N, 18 db 11001110b,11000110b,11000110b,00000000b - db 01111100b,11000110b,11000110b,11000110b ; O, 19 + db 01111100b,11000110b,11000110b,11000110b ; O, 19 db 11000110b,11000110b,01111100b,00000000b - db 11111100b,11000110b,11000110b,11111100b ; P, 1A + db 11111100b,11000110b,11000110b,11111100b ; P, 1A db 11000000b,11000000b,11000000b,00000000b - db 01111100b,11000110b,11000110b,11000110b ; Q, 1B + db 01111100b,11000110b,11000110b,11000110b ; Q, 1B db 11010110b,11001110b,01111110b,00000000b - db 11111100b,11000110b,11000110b,11111100b ; R, 1C + db 11111100b,11000110b,11000110b,11111100b ; R, 1C db 11001100b,11000110b,11000110b,00000000b - db 01111100b,11000110b,11000000b,01111100b ; S, 1D + db 01111100b,11000110b,11000000b,01111100b ; S, 1D db 00000110b,11000110b,01111100b,00000000b - db 01111110b,00011000b,00011000b,00011000b ; T, 1E + db 01111110b,00011000b,00011000b,00011000b ; T, 1E db 00011000b,00011000b,00011000b,00000000b - db 11000110b,11000110b,11000110b,11000110b ; U, 1F + db 11000110b,11000110b,11000110b,11000110b ; U, 1F db 11000110b,11000110b,01111100b,00000000b - db 11000110b,11000110b,11000110b,11000110b ; V, 20 + db 11000110b,11000110b,11000110b,11000110b ; V, 20 db 01101100b,00111000b,00010000b,00000000b - db 11000110b,11000110b,11000110b,11010110b ; W, 21 + db 11000110b,11000110b,11000110b,11010110b ; W, 21 db 11010110b,11111110b,01101100b,00000000b - db 11000110b,01101100b,00111000b,00010000b ; X, 22 + db 11000110b,01101100b,00111000b,00010000b ; X, 22 db 00111000b,01101100b,11000110b,00000000b - db 11001100b,11001100b,01111000b,00110000b ; Y, 23 + db 11001100b,11001100b,01111000b,00110000b ; Y, 23 db 00110000b,00110000b,00110000b,00000000b - db 11111100b,10001100b,00011000b,00110000b ; Z, 24 + db 11111100b,10001100b,00011000b,00110000b ; Z, 24 db 01100000b,11000100b,11111100b,00000000b - db 00000000b,00000000b,00000000b,11111110b ; -, 25 + db 00000000b,00000000b,00000000b,11111110b ; -, 25 db 00000000b,00000000b,00000000b,00000000b - db 00000000b,00000000b,00000000b,00000000b ; _, 26 + db 00000000b,00000000b,00000000b,00000000b ; _, 26 db 00000000b,00000000b,11111110b,00000000b - db 01110000b,11011100b,00000110b,00000000b ; ~, 27 + db 01110000b,11011100b,00000110b,00000000b ; ~, 27 db 00000000b,00000000b,00000000b,00000000b - db 00000000b,00000000b,00000000b,00000000b ; ., 28 + db 00000000b,00000000b,00000000b,00000000b ; ., 28 db 00000000b,00110000b,00110000b,00000000b - db 00000010b,00000100b,00001000b,00010000b ; /, 29 + db 00000010b,00000100b,00001000b,00010000b ; /, 29 db 00100000b,01000000b,10000000b,00000000b - db 00001100b,00011000b,00110000b,01100000b ; <, 2A + db 00001100b,00011000b,00110000b,01100000b ; <, 2A db 00110000b,00011000b,00001100b,00000000b - db 01100000b,00110000b,00011000b,00001100b ; >, 2B + db 01100000b,00110000b,00011000b,00001100b ; >, 2B db 00011000b,00110000b,01100000b,00000000b - db 00111000b,00100000b,00100000b,00100000b ; [, 2C + db 00111000b,00100000b,00100000b,00100000b ; [, 2C db 00100000b,00100000b,00111000b,00000000b - db 00111000b,00001000b,00001000b,00001000b ; ], 2D + db 00111000b,00001000b,00001000b,00001000b ; ], 2D db 00001000b,00001000b,00111000b,00000000b - db 00000000b,00011000b,00011000b,00000000b ; :, 2E + db 00000000b,00011000b,00011000b,00000000b ; :, 2E db 00011000b,00011000b,00000000b,00000000b - db 00011000b,00100100b,00011000b,00111010b ; &, 2F + db 00011000b,00100100b,00011000b,00111010b ; &, 2F db 01000100b,01000110b,00111010b,00000000b ; Arrow, 30 ; #, 31 (, 3A {, 43 @@ -2607,22 +2557,29 @@ SECTION .text ;******************************************************* NEWSYM showfps - mov cl,50 + mov al,60 cmp byte[romispal],0 - jne .nontsc - mov cl,60 -.nontsc + je .ntsc + mov al,50 +.ntsc inc byte[curfps] - cmp byte[nextframe],cl + cmp byte[nextframe],al jb .nofrc - mov al,[curfps] - mov [lastfps],al - mov al,[curfps2] - mov [lastfps2],al + mov cl,[curfps] + mov [lastfps],cl + mov cl,[curfps2] + mov [lastfps2],cl mov byte[curfps],0 mov byte[curfps2],0 - sub byte[nextframe],cl + sub byte[nextframe],al .nofrc + mov cl,[SloMo] + cmp cl,0 + je .noslw + inc cl + div cl +.noslw + mov cl,al cmp byte[cbitmode],1 je near .do16b @@ -2660,73 +2617,50 @@ NEWSYM showfps ret .do16b - mov al,[lastfps] - mov bl,10 - xor ah,ah - div bl - shl al,4 - add ah,al - mov al,ah - mov esi,208*288*2+32*2 - add esi,[vidbuffer] - push ecx - call outputhex16 + mov esi,208*288*2+48*2 + add esi,[vidbuffer] + mov al,[lastfps] + push ecx + xor ecx,ecx +.strloop + xor ah,ah + add al,48 + sub esi,8*2 +.asciiloop16b + cmp al,58 + jb .h2adone16b + inc ah + sub al,10 + jmp .asciiloop16b +.h2adone16b + mov cl,al + mov al,[ASCII2Font+ecx] + call outputchar16b + mov al,ah + or al,al + jnz .strloop - mov esi,208*288*2+48*2 - add esi,[vidbuffer] - mov al,29h - call outputchar16b - pop ecx + mov esi,208*288*2+48*2 + add esi,[vidbuffer] + mov al,41 ; '/' + call outputchar16b + pop ecx - mov al,cl - mov bl,10 - xor ah,ah - div bl - shl al,4 - add ah,al - mov al,ah - mov esi,208*288*2+56*2 - add esi,[vidbuffer] - call outputhex16 - ret - -.ng16b - mov byte[ngfont],1 - - mov al,[lastfps] - mov bl,10 - xor ah,ah - div bl - shl al,4 - add ah,al - mov al,ah - mov esi,208*288+32 - add esi,[vidbuffer] - push ecx - call outputhex - - mov esi,208*288+48 - add esi,[vidbuffer] - mov al,29h - call outputchar - pop ecx - - mov al,cl - mov bl,10 - xor ah,ah - div bl - shl al,4 - add ah,al - mov al,ah - mov esi,208*288+56 - add esi,[vidbuffer] - call outputhex - ret + mov al,cl + mov bl,10 + xor ah,ah + div bl + shl al,4 + add ah,al + mov al,ah + mov esi,208*288*2+56*2 + add esi,[vidbuffer] + call outputhex16 + ret SECTION .bss NEWSYM spcdebugaddr, resd 1 NEWSYM tempoffset, resw 1 - NEWSYM Testval, resd 1 SECTION .text