From 72ac93cfc728eaf1ca93e703ed0fbc81ab34dead Mon Sep 17 00:00:00 2001 From: grinvader <> Date: Thu, 30 Mar 2006 03:03:35 +0000 Subject: [PATCH] NTSC sliders enlarged to negatives, added a couple other things in that tab too, made slider macro more powerful, some cosmetic changes, fixed issue when switching to modes without ntsc filter. And some cleanup too. Don't you think my commit messages are getting quite lengthy lately ? Yea, I thought so too. -_- --- zsnes/src/cfg.psr | 1 + zsnes/src/gui/gui.asm | 8 +- zsnes/src/gui/guikeys.inc | 20 ++- zsnes/src/gui/guimouse.inc | 87 +++++++--- zsnes/src/gui/guiwindp.inc | 326 ++++++++++++++++++------------------- zsnes/src/video/procvidc.c | 22 +-- zsnes/src/win/winlink.cpp | 2 +- 7 files changed, 250 insertions(+), 216 deletions(-) diff --git a/zsnes/src/cfg.psr b/zsnes/src/cfg.psr index d618a593..717ac3a3 100644 --- a/zsnes/src/cfg.psr +++ b/zsnes/src/cfg.psr @@ -361,3 +361,4 @@ NEWSYM NTSCCont, db 0 NEWSYM NTSCBright, db 0 NEWSYM NTSCSharp, db 0 NEWSYM NTSCWarp, db 0 +NEWSYM NTSCRef, db 0 diff --git a/zsnes/src/gui/gui.asm b/zsnes/src/gui/gui.asm index 04a72cac..0db9bbb4 100644 --- a/zsnes/src/gui/gui.asm +++ b/zsnes/src/gui/gui.asm @@ -105,10 +105,10 @@ 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 NTSCBlend,NTSCHue,NTSCSat,NTSCCont,NTSCBright,NTSCSharp,NTSCWarp,NTSCRef EXTSYM LowPassFilterType,MovieStartMethod,MovieDisplayFrame,resetposn EXTSYM SnapPath,SPCPath,BSXPath,SGPath,STPath,GNextPath,FEOEZPath,SJNSPath -EXTSYM MDHPath,SPL4Path,CheatSrcByteSize,prevloadfnamel +EXTSYM MDHPath,SPL4Path,CheatSrcByteSize,prevloadfnamel,NTSCFilterInit EXTSYM prevloadnames,prevloaddnamel,prevlfreeze,FirstTimeData,MMXSupport EXTSYM GUIRAdd,GUIGAdd,GUIBAdd,GUITRAdd,GUITGAdd,GUITBAdd,GUIWRAdd EXTSYM GUIWGAdd,GUIWBAdd,GUIloadfntype,SoundInterpType,PrimaryBuffer @@ -306,9 +306,9 @@ ViewBuffer resb 50*32 SECTION .data ; Window sizes and positions ; LOAD STAT INPT OPT VID SND CHT NET GMKEY GUIOP ABT RSET SRC STCN MOVE CMBO ADDO CHIP PATH SAVE SPED -GUIwinposxo dd 0,6 ,65 ,33 ,42 ,38 ,34 ,6 ,64 ,8 ,8 ,33 ,56 ,64 ,56 ,5 ,3 ,28 ,48 ,6 ,28 ,53 +GUIwinposxo dd 0,6 ,65 ,33 ,42 ,2 ,34 ,6 ,64 ,8 ,8 ,33 ,56 ,64 ,56 ,5 ,3 ,28 ,48 ,6 ,28 ,53 GUIwinposyo dd 0,20 ,70 ,30 ,20 ,20 ,20 ,20 ,30 ,30 ,20 ,20 ,60 ,30 ,65 ,20 ,19 ,60 ,60 ,20 ,30 ,25 -GUIwinsizex dd 0,244 ,126 ,189 ,172 ,180 ,188 ,244 ,8*16,240 ,240 ,190 ,9*16,8*16,9*16,246 ,250 ,200 ,160 ,244 ,200 ,150 +GUIwinsizex dd 0,244 ,126 ,189 ,172 ,250 ,188 ,244 ,8*16,240 ,240 ,190 ,9*16,8*16,9*16,246 ,250 ,200 ,160 ,244 ,200 ,150 GUIwinsizey dd 0,190 ,3*16,166 ,190 ,192 ,188 ,191 ,40 ,170 ,150 ,190 ,42 ,40 ,42 ,190 ,190 ,100 ,100 ,190 ,160 ,180 GUIwinptr db 0 diff --git a/zsnes/src/gui/guikeys.inc b/zsnes/src/gui/guikeys.inc index b172a9b2..5fd0d0f3 100644 --- a/zsnes/src/gui/guikeys.inc +++ b/zsnes/src/gui/guikeys.inc @@ -953,14 +953,18 @@ ret GUIVideoKeys: cmp dh,9 - jne near .notab + jne near .tabdone cmp byte[NTSCFilter],0 - jne .ntsc - KeyTabInc GUIVideoTabs - jmp .notab -.ntsc + je near .nontsc + xor eax,eax + mov al,[cvidmode] + cmp byte[GUINTVID+eax],0 + je .nontsc KeyTabInc GUIVideoTabs,GUIVntscTab -.notab + jmp .tabdone +.nontsc + KeyTabInc GUIVideoTabs +.tabdone cmp dh,'a' jb .nocap cmp dh,'z' @@ -1367,6 +1371,10 @@ GUIVideoKeys: jne .noblend xor byte[NTSCBlend],1 .noblend + cmp dh,'R' + jne .norefresh + xor byte[NTSCRef],1 +.norefresh .notntsctab ret diff --git a/zsnes/src/gui/guimouse.inc b/zsnes/src/gui/guimouse.inc index ce518a1d..1b3c99c7 100644 --- a/zsnes/src/gui/guimouse.inc +++ b/zsnes/src/gui/guimouse.inc @@ -37,6 +37,18 @@ ProcessMouse: je near .noholdnecessary cmp byte[GUIHold],0 jne .noholda + cmp byte[LastHoldEnable],7 ; ntsc sliders + jne .norelease1 + xor edx,edx + mov dl,[ntscWhVar] + mov cl,[ntscCurVar] + cmp cl,[ntscLastVar+edx] + je .norelease1 + pushad + call NTSCFilterInit + popad + mov [ntscLastVar+edx],cl +.norelease1 mov ecx,0 mov edx,255 call Set_MouseXMax @@ -584,7 +596,9 @@ ProcessMouseButtons: je near GUIProcReset cmp byte[GUICBHold],3 je near GUIProcReset - cmp byte[GUICBHold],4 + cmp byte[GUICBHold],4 ; set video mode + je near GUIProcVideo + cmp byte[GUICBHold],37 ; reset ntsc options je near GUIProcVideo cmp byte[GUICBHold],10 je near GUIProcStates @@ -847,6 +861,22 @@ ProcessMouseButtons: ret GUIProcVideo: + cmp byte[GUICBHold],37 + mov byte[GUICBHold],0 + jne .noreset + mov byte[NTSCBlend],0 + mov byte[NTSCRef],0 + mov byte[NTSCHue],0 + mov byte[NTSCSat],0 + mov byte[NTSCCont],0 + mov byte[NTSCBright],0 + mov byte[NTSCSharp],0 + mov byte[NTSCWarp],0 + pushad + call NTSCFilterInit + popad + ret +.noreset %ifdef __MSDOS__ mov al,[GUIcurrentvideocursloc] cmp al,3 @@ -868,7 +898,6 @@ GUIProcVideo: mov byte[newengen],1 mov byte[cfgnewgfx],1 .skipno16b - mov byte[GUICBHold],0 call guiprevideo mov al,[cvidmode] mov [.prevvid],al @@ -2583,18 +2612,23 @@ DisplayGUIVideoClick: sub edx,[GUIwinposy+5*4] GUIClickCButton 5,25,byte[NTSCBlend] ; Checkboxes + GUIClickCButton 135,25,byte[NTSCRef] + + GUIPHoldbutton 5,166,42,177,37 ; button ;Sliders - cmp eax,15 ; X-Range for click-area + cmp eax,8 ; X-Range for click-area jl near .nomovebar - cmp eax,15+100 + cmp eax,8+200 jg near .nomovebar + sub al,108 cmp edx,54 ; Y-Range for click-area jl near .nomovebar cmp edx,58 jg .nohuebar - sub eax,15 mov [NTSCHue],al + mov [ntscCurVar],al + mov byte[ntscWhVar],0 mov byte[GUIHold],7 ; Lock mouse to bar when clicked mov eax,[GUIwinposy+5*4] add eax,56 @@ -2605,8 +2639,9 @@ DisplayGUIVideoClick: jl near .nomovebar cmp edx,78 jg .nosatbar - sub eax,15 mov [NTSCSat],al + mov [ntscCurVar],al + mov byte[ntscWhVar],1 mov byte[GUIHold],7 mov eax,[GUIwinposy+5*4] add eax,76 @@ -2617,8 +2652,9 @@ DisplayGUIVideoClick: jl near .nomovebar cmp edx,98 jg .nocontbar - sub eax,15 mov [NTSCCont],al + mov [ntscCurVar],al + mov byte[ntscWhVar],2 mov byte[GUIHold],7 mov eax,[GUIwinposy+5*4] add eax,96 @@ -2629,8 +2665,9 @@ DisplayGUIVideoClick: jl near .nomovebar cmp edx,118 jg .nobrightbar - sub eax,15 mov [NTSCBright],al + mov [ntscCurVar],al + mov byte[ntscWhVar],3 mov byte[GUIHold],7 mov eax,[GUIwinposy+5*4] add eax,116 @@ -2638,11 +2675,12 @@ DisplayGUIVideoClick: jmp .nowarpbar .nobrightbar cmp edx,134 - jl .nomovebar + jl near .nomovebar cmp edx,138 jg .nosharpbar - sub eax,15 mov [NTSCSharp],al + mov [ntscCurVar],al + mov byte[ntscWhVar],4 mov byte[GUIHold],7 mov eax,[GUIwinposy+5*4] add eax,136 @@ -2653,30 +2691,35 @@ DisplayGUIVideoClick: jl .nomovebar cmp edx,158 jg .nomovebar - sub eax,15 mov [NTSCWarp],al + mov [ntscCurVar],al + mov byte[ntscWhVar],5 mov byte[GUIHold],7 mov eax,[GUIwinposy+5*4] add eax,156 mov [GUIHoldYlim],eax .nowarpbar mov eax,[GUIwinposx+5*4] - add eax,15 + add eax,8 mov [GUIHoldXlimL],eax - add eax,100 + add eax,200 mov [GUIHoldXlimR],eax .nomovebar -.notntsctab -EXTSYM NTSCFilterInit - xor al,al + cmp byte[NTSCRef],0 + je .notntsctab pushad call NTSCFilterInit popad +.notntsctab + xor eax,eax ret SECTION .bss GUINumValue resd 1 GUIBlankVar resd 1 +ntscLastVar resb 6 +ntscCurVar resb 1 +ntscWhVar resb 1 SECTION .text DisplayGUISoundClick: @@ -3066,7 +3109,7 @@ DisplayGUIOptnsClick: cmp eax,25 jl near .nomovebar - cmp eax,25+128 + cmp eax,25+127 jg near .nomovebar sub eax,25 shr eax,2 @@ -3158,7 +3201,7 @@ DisplayGUIOptnsClick: add eax,25 mov [GUIHoldXlimL],eax mov eax,[GUIwinposx+10*4] - add eax,25+128 + add eax,25+127 mov [GUIHoldXlimR],eax .nohold ret @@ -3489,11 +3532,11 @@ DisplayGUISpeedClick: GUIPHoldbutton2 129,13,137,21,13,byte[maxskip],-1,0 ; Speed Slider - cmp eax,15 ; X-Range for click-area + cmp eax,7 ; X-Range for click-area jl near .nomovebar - cmp eax,15+116 + cmp eax,7+116 jg near .nomovebar - sub eax,15 + sub eax,7 shr eax,1 cmp edx,173 ; Y-Range for click-area jl near .nomovebar @@ -3505,7 +3548,7 @@ DisplayGUISpeedClick: add eax,175 mov [GUIHoldYlim],eax mov eax,[GUIwinposx+21*4] - add eax,15 + add eax,7 mov [GUIHoldXlimL],eax add eax,116 mov [GUIHoldXlimR],eax diff --git a/zsnes/src/gui/guiwindp.inc b/zsnes/src/gui/guiwindp.inc index 6335c5cb..ea1052a4 100644 --- a/zsnes/src/gui/guiwindp.inc +++ b/zsnes/src/gui/guiwindp.inc @@ -659,17 +659,17 @@ GUIOuttextwin2 %1,%2-1,%3-1,%4 push ecx ; save X offset for next drawing step dec eax mov ecx,eax - mov esi,12 + mov esi,11 inc dl %%draw2 DrawGUILine dec esi jnz %%draw2 - sub ebx,13 + sub ebx,11 push ebx ; save Y offset for next drawing step mov cl,[GUIWincol] mov [GUItextcolor],cl - add ebx,5 + add ebx,4 push ebx ; save label Yoff mov edx,eax add edx,6 @@ -692,9 +692,19 @@ GUIOuttextwin2 %1,%2-1,%3-1,%4 add edi,ebp call GUIOutputStringwin mov byte[GUItextcolor],217 ; restore normal colour - pop ebx ; restore Yoff for next tab + pop ebx ; restore Yoff for drawing step pop eax - add eax,2 ; restore and set Xoff for next tab + inc eax ; restore and set Xoff for drawing step + mov ecx,eax + mov dl,[GUIWincol] + add dl,3 + mov esi,12 +%%draw3 + DrawGUILine + dec esi + jnz %%draw3 + sub ebx,13 + inc eax %%read2 mov esi,%1 cmp byte[esi+ebp],0 @@ -806,7 +816,7 @@ GUIOuttextwin2 %1,%2-1,%3-1,%4 %%nodraw %endmacro -%macro GUIDrawSlider 6 ; win #id, minX, width, Ypos, variable, text +%macro GUIDrawSlider 8 ; win #id, minX, width, Ypos, var, text, proc1, proc2 mov eax,[GUIwinposx+%1*4] mov ebx,[GUIwinposy+%1*4] add eax,%2 @@ -822,23 +832,12 @@ GUIOuttextwin2 %1,%2-1,%3-1,%4 sub dl,13 DrawGUILine xor eax,eax - mov al,[%5] + %7 %5 ; proc1 == alters var correctly and puts result in al 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) + %8 %5,%6 ; proc2 == alters text correctly and puts pointer in esi + mov [GUITemp],esi ; Display Value (Green) GUIDisplayTextG %1,%2+%3+6,%4-1,[GUITemp] %endmacro @@ -1645,6 +1644,35 @@ GUIOptionTextZ db '-',0 SECTION .text +%macro NTSCslidSet 1 ; slider variable + mov al,[%1] + add al,100 +%endmacro + +%macro NTSCslidText 2 ; slider var, text + mov dword[%2],' ' + mov esi,%2+3 + mov al,[%1] + mov bl,10 + test al,128 + jz %%asciilp + xor al,255 + inc al +%%asciilp ; turns decimal into ascii + xor ah,ah + div bl + add ah,48 + mov [esi],ah + dec esi + cmp al,0 + jne %%asciilp + test byte[%1],128 + jz %%pos + mov byte[esi],'-' +%%pos + mov esi,%2 +%endmacro + DisplayGUIVideo: cmp byte[TripBufAvail],0 ; Check features jne .notexttb @@ -1675,6 +1703,16 @@ DisplayGUIVideo: GUIDrawWindowBox 5,GUIVideoDisp ; Video Modes List/Options + xor eax,eax + mov al,[cvidmode] + cmp byte[GUINTVID+eax],0 + jne .ntsc + mov byte[NTSCFilter],0 + mov dword[GUIVntscTab],0 + cmp byte[GUIVideoTabs],0 + jne .ntsc + mov byte[GUIVideoTabs],1 +.ntsc GUIDrawTArea 5 GUIDrawTabs GUIVideoTabs cmp byte[NTSCFilter],0 @@ -1905,7 +1943,10 @@ DisplayGUIVideo: cmp dword[GUIVntscTab],1 jne near .notntsctab + DrawGUIButton 5,5,166,42,177,GUIVideoTextG8,37,0,0 ; Button + GUIDisplayCheckboxu 5,5,25,NTSCBlend,GUIVideoTextG1,0 + GUIDisplayCheckboxu 5,135,25,NTSCRef,GUIVideoTextG9,0 GUIDisplayTextY 5,7,46,GUIVideoTextG2 GUIDisplayTextY 5,7,66,GUIVideoTextG3 @@ -1914,12 +1955,12 @@ DisplayGUIVideo: 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 + GUIDrawSlider 5,8,200,56,NTSCHue,GUIVideoTextG,NTSCslidSet,NTSCslidText + GUIDrawSlider 5,8,200,76,NTSCSat,GUIVideoTextG,NTSCslidSet,NTSCslidText + GUIDrawSlider 5,8,200,96,NTSCCont,GUIVideoTextG,NTSCslidSet,NTSCslidText + GUIDrawSlider 5,8,200,116,NTSCBright,GUIVideoTextG,NTSCslidSet,NTSCslidText + GUIDrawSlider 5,8,200,136,NTSCSharp,GUIVideoTextG,NTSCslidSet,NTSCslidText + GUIDrawSlider 5,8,200,156,NTSCWarp,GUIVideoTextG,NTSCslidSet,NTSCslidText .notntsctab ret @@ -1963,7 +2004,7 @@ GUIVideoText8 db 'SET',0 ; set button GUIVideoText9 db 'VSYNC',0 ; -c GUIVideoTexte db 'NTSC',0 -GUIVideoTextG db '---%',0 +GUIVideoTextG db '----%',0 GUIVideoTextG1 db 'BLEND FRAMES',0 GUIVideoTextG2 db 'HUE:',0 GUIVideoTextG3 db 'SATURATION:',0 @@ -1971,6 +2012,8 @@ GUIVideoTextG4 db 'CONTRAST:',0 GUIVideoTextG5 db 'BRIGHTNESS:',0 GUIVideoTextG6 db 'SHARPNESS:',0 GUIVideoTextG7 db 'HUE WARPING:',0 +GUIVideoTextG8 db 'RESET',0 +GUIVideoTextG9 db 'REFRESH',0 SECTION .bss GUIVStA resd 3 @@ -1979,6 +2022,26 @@ GUIcurrentvideocursloc resd 1 SECTION .text +%macro VolslidSet 1 ; slider variable + mov al,[%1] +%endmacro + +%macro VolslidText 2 ; slider var, text + mov word[%2],' ' + mov esi,%2+3 + mov al,[%1] + 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 esi,%2 +%endmacro + DisplayGUISound: ; Sound Related Options GUIDrawWindowBox 6,GUISoundDisp @@ -2029,7 +2092,7 @@ DisplayGUISound: ; Sound Related Options add [GUITemp],eax GUIDisplayTextG 6,23,64,[GUITemp] - GUIDrawSlider 6,15,100,91,MusicRelVol,GUISoundTextC1 + GUIDrawSlider 6,15,100,91,MusicRelVol,GUISoundTextC1,VolslidSet,VolslidText ret SECTION .data @@ -3065,13 +3128,35 @@ GUIGameOptnsTextD2e db '- GAMMA',0 SECTION .text +%macro GUICslidSet 1 ; slider var + mov al,[%1] + shl eax,2 + add eax,2 +%endmacro + +%macro GUICslidText 2 ; slider var, text + mov byte[%2],' ' + mov esi,%2+2 + mov al,[%1] + 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 esi,%2 +%endmacro + DisplayGUIOptns: ; GUI Options %ifdef __WIN32__ ; If Windows, extend window down mov dword[GUIwinsizey+10*4],192 %endif GUIDrawWindowBox 10,GUIGUIDisp - push eax ; Setup Colors + ; Setup Colors cmp byte[CurPalSelect],1 je .yespal2b cmp byte[CurPalSelect],2 @@ -3099,50 +3184,10 @@ DisplayGUIOptns: ; GUI Options mov al,[GUIWBAdd] mov [TBVal2],al .nopal1b - pop eax - mov eax,[GUIwinposx+10*4] ; Slider Bars - mov ebx,[GUIwinposy+10*4] - mov ecx,eax - add eax,25 - add ecx,25+32*4 - add ebx,124 - xor edx,edx - mov dl,215 - sub dl,[GUIWincoladd] - DrawGUILine - add ebx,11 - DrawGUILine - add ebx,11 - DrawGUILine - inc ecx - mov ebx,[GUIwinposy+10*4] - inc eax - add ebx,125 - sub dl,13 - DrawGUILine - add ebx,11 - DrawGUILine - add ebx,11 - DrawGUILine - xor eax,eax - mov al,[TRVal2] - shl eax,2 - mov dword[GUITemp],23 - add [GUITemp],eax - GUIDisplayIconWin 10,[GUITemp],120,GUIIconDataSlideBar - xor eax,eax - mov al,[TGVal2] - shl eax,2 - mov dword[GUITemp],23 - add [GUITemp],eax - GUIDisplayIconWin 10,[GUITemp],132,GUIIconDataSlideBar - xor eax,eax - mov al,[TBVal2] - shl eax,2 - mov dword[GUITemp],23 - add [GUITemp],eax - GUIDisplayIconWin 10,[GUITemp],144,GUIIconDataSlideBar + GUIDrawSlider 10,25,127,124,TRVal2,GUIGUIOptnsTextD2,GUICslidSet,GUICslidText + GUIDrawSlider 10,25,127,136,TGVal2,GUIGUIOptnsTextD2,GUICslidSet,GUICslidText + GUIDrawSlider 10,25,127,148,TBVal2,GUIGUIOptnsTextD2,GUICslidSet,GUICslidText GUIDisplayTextY 10,6,16,GUIGUIOptnsTextA GUIDisplayCheckboxu 10,12,23,mousewrap,GUIGUIOptnsTextA1a,0 ; Checkboxes @@ -3183,51 +3228,8 @@ DisplayGUIOptns: ; GUI Options GUIDisplayButtonHole 10,48,108,byte[CurPalSelect],0 ; Radio Buttons GUIDisplayButtonHole 10,88,108,byte[CurPalSelect],1 GUIDisplayButtonHole 10,135,108,byte[CurPalSelect],2 - - mov dword[GUIGUIOptnsTextD2],0 ; Display Values for the 3 bars - mov esi,GUIGUIOptnsTextD2+2 - xor eax,eax - mov al,[TRVal2] - call .processnum - GUIDisplayTextG 10,160,123,[GUITemp] ; R - - mov dword[GUIGUIOptnsTextD2],0 - mov esi,GUIGUIOptnsTextD2+2 - xor eax,eax - mov al,[TGVal2] - call .processnum - GUIDisplayTextG 10,160,135,[GUITemp] ; G - - mov dword[GUIGUIOptnsTextD2],0 - mov esi,GUIGUIOptnsTextD2+2 - xor eax,eax - mov al,[TBVal2] - call .processnum - GUIDisplayTextG 10,160,147,[GUITemp] ; B ret -.processnum - 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 -.nomore - mov [GUITemp],esi - mov byte[GUItextcolor],223 - ret - -;mousewrap 0 ; 0 = mouse boundries, 1 = mouse wrap -;mouseshad 1 ; 0 = no mouse shadow, 1 = mouse shadow -;lastcursres 0 ; 0 = go to load, 1 = go to previous menu, 2 = no menu -;resetposn 1 ; 0 = no window reset, 1 = window reset - SECTION .data GUIGUIOptnsTextA db 'GUI SWITCHES:',0 GUIGUIOptnsTextA1a db 'MOUSE WRAP',0 @@ -3257,7 +3259,7 @@ GUIGUIOptnsTextC2 db 'SAVE MAIN WINDOW POSITION',0 GUIGUIOptnsTextC3 db 'ALLOW MULTIPLE INSTANCES',0 GUIGUIOptnsTextD1 db '@',0 -GUIGUIOptnsTextD2 dd 0 +GUIGUIOptnsTextD2 db ' ',0 SECTION .text @@ -4627,6 +4629,41 @@ GUISaveTextZ3 db ' ',0 SECTION .text +%macro SpdslidSet 1 ; slider var + mov al,[%1] + shl eax,1 +%endmacro + +%macro SpdslidText 2 ; slider var, text + mov dword[%2],0 + mov esi,%2+2 + mov al,[%1] ; currently emuspeed ranges from 0 to 58 + mov bl,10 + cmp al,29 ; this will turn it into '/30' to '30x' + jb %%slowmo + mov byte[esi],'x' ; adds 'x' after the ff value + sub al,28 + jmp %%asciilp +%%slowmo + inc esi + mov byte[%2],1 ; slomo indicator + mov al,30 + sub al,[%1] +%%asciilp ; turns decimal into ascii + dec esi + xor ah,ah + div bl + add ah,48 + mov [esi],ah + cmp al,0 + jne %%asciilp + cmp byte[%2],1 + jne %%done + dec esi + mov byte[esi],'/' ; adds '/' before the slomo value +%%done +%endmacro + DisplayGUISpeed: ;Speed Options GUIDrawWindowBox 21,GUISpeedDisp @@ -4720,62 +4757,7 @@ DisplayGUISpeed: ;Speed Options cmp byte[frameskip],0 jne near .noslider - mov eax,[GUIwinposx+21*4] ;Slider - mov ebx,[GUIwinposy+21*4] - add eax,15 - add ebx,175 - mov ecx,eax - add ecx,116 - xor edx,edx - mov dl,215 - sub dl,[GUIWincoladd] - DrawGUILine - inc ecx - inc eax - sub dl,13 - DrawGUILine - xor eax,eax - mov al,[EmuSpeed] - shl eax,1 - mov dword[GUITemp],11 - add [GUITemp],eax - GUIDisplayIconWin 21,[GUITemp],171,GUIIconDataSlideBar - mov dword[GUISpeedTextD1],0 - mov esi,GUISpeedTextD1+2 - xor eax,eax ; currently emuspeed ranges from 0 to 58 - mov al,[EmuSpeed] ; this will turn it into '/30' to '30x' - cmp al,29 - jb .slowmo - mov byte[esi],'x' ; adds 'x' after the ff value - dec esi - sub al,28 - jmp .asciilp -.slowmo - mov byte[GUISpeedTextD1],1 ; slomo indicator - mov bl,30 - sub bl,al - mov al,bl -.asciilp ; turns decimal into ascii - mov bl,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 -.nomore - cmp byte[GUISpeedTextD1],1 - jne .convdone - dec esi - mov byte[esi],'/' ; adds '/' before the slomo value -.convdone - mov [GUITemp],esi ; Display Value (Green) - GUIDisplayTextG 21,78,163,[GUITemp] - + GUIDrawSlider 21,7,116,175,EmuSpeed,GUISpeedTextD1,SpdslidSet,SpdslidText .noslider cmp byte[frameskip],0 ; Determine if AutoFR is enabled je near .auto diff --git a/zsnes/src/video/procvidc.c b/zsnes/src/video/procvidc.c index 68316fe0..212442e2 100644 --- a/zsnes/src/video/procvidc.c +++ b/zsnes/src/video/procvidc.c @@ -29,7 +29,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #include #include #endif - #include "ntsc.h" extern unsigned int newengen, nggposng[2]; @@ -83,20 +82,21 @@ void Clear2xSaIBuffer() unsigned char ntsc_phase = 0; snes_ntsc_setup_t ntsc_setup; snes_ntsc_t ntsc_snes; -extern unsigned char NTSCBlend,NTSCHue,NTSCSat,NTSCCont,NTSCBright,NTSCSharp,NTSCWarp; +extern unsigned char NTSCBlend; +extern signed char NTSCHue, NTSCSat, NTSCCont, NTSCBright, NTSCSharp, NTSCWarp; // Init NTSC filter command, should be called whenever changes are made in the GUI related to the GUI void NTSCFilterInit() { - // Set GUI options - ntsc_setup.merge_fields = (float) NTSCBlend; - ntsc_setup.hue = (float) NTSCHue / 100; - ntsc_setup.saturation = (float) NTSCSat / 100; - ntsc_setup.contrast = (float) NTSCCont / 100; - ntsc_setup.brightness = (float) NTSCBright / 100; - ntsc_setup.sharpness = (float) NTSCSharp / 100; - ntsc_setup.hue_warping = (float) NTSCWarp / 100; - snes_ntsc_init(&ntsc_snes, &ntsc_setup); + // Set GUI options + ntsc_setup.hue = ((float) NTSCHue) / 100.0; + ntsc_setup.saturation = ((float) NTSCSat) / 100.0; + ntsc_setup.contrast = ((float) NTSCCont) / 100.0; + ntsc_setup.brightness = ((float) NTSCBright) / 100.0; + ntsc_setup.sharpness = ((float) NTSCSharp) / 100.0; + ntsc_setup.hue_warping = ((float) NTSCWarp) / 100.0; + ntsc_setup.merge_fields = (int) NTSCBlend; + snes_ntsc_init(&ntsc_snes, &ntsc_setup); } void NTSCFilterDraw(int SurfaceX, int SurfaceY, int pitch, unsigned char *buffer) diff --git a/zsnes/src/win/winlink.cpp b/zsnes/src/win/winlink.cpp index 1d32eb30..e2446086 100644 --- a/zsnes/src/win/winlink.cpp +++ b/zsnes/src/win/winlink.cpp @@ -1902,7 +1902,7 @@ void initwinvideo(void) case 5: case 6: case 7: - case 8: + case 8: WindowWidth=640; WindowHeight=480; break;