From a437a0ab78314240ff19007ae50149101258e820 Mon Sep 17 00:00:00 2001 From: grinvader <> Date: Tue, 17 May 2005 22:25:52 +0000 Subject: [PATCH] Window position array brought up to date, speed slider behaviour ok. TODO: save EmuSpeed setting in config file and bind it to current code. --- zsnes/src/gui/gui.asm | 30 +++++++++++++++-- zsnes/src/gui/guimouse.inc | 66 +++++++++++++++++++++++++------------- zsnes/src/gui/guiwindp.inc | 43 ++++++++++++------------- 3 files changed, 92 insertions(+), 47 deletions(-) diff --git a/zsnes/src/gui/gui.asm b/zsnes/src/gui/gui.asm index 0dd93201..69d07303 100644 --- a/zsnes/src/gui/gui.asm +++ b/zsnes/src/gui/gui.asm @@ -457,10 +457,34 @@ NEWSYM PrevWinMode, db 0 NEWSYM PrevFSMode, db 0 %endif +; Window position index +; GAME 1 > Load +; 2 > Pick state +; 12 > Reset +; 14 > Save/Open state +; CONFIG 3 > Inputs +; 4 > Options +; 5 > Video +; 6 > Sound +; 17 > Add-ons +; 18 > Chip cfg +; 19 > Paths +; 20 > Saves +; 21 > Speed +; CHEAT 7 > Add/Browse +; 13 > Search +;(NETPLAY 8 > Internet) +; MISC 9 > Misc keys +; 10 > GUI opns +; 11 > About +; 15 > Movie opn +; 16 > Key comb. + +;# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 OldWinPos db 0 -GUIwinposx dd 0,5 ,60 ,30 ,55 ,50 ,65 ,5 ,30 ,20 ,10 ,80 ,65 ,20 ,70 ,50 ,3 ,50 +GUIwinposx dd 0, 5,60,30,55,50,65, 5,30,20,10,80,65,20,70,50, 3,50,50, 5,10,20 GUIwinposxexp times 30 dd 0 -GUIwinposy dd 0,20 ,70 ,30 ,20 ,22 ,36 ,20 ,30 ,20 ,30 ,70 ,60 ,30 ,65 ,50 ,22 ,60 +GUIwinposy dd 0,20,70,30,20,22,36,20,30,20,30,20,60,30,65,50,22,60,20,20,20,20 GUIwinposyexp times 30 dd 0 NEWSYM GUIEffect, db 0 @@ -1172,7 +1196,7 @@ LoadDetermine: mov byte[GUIMiscMenuData+14*2],1 mov byte[GUINetPlayMenuData],2 ; Gray out Netplay options %ifdef __MSDOS__ - mov byte[GUINetPlayMenuData+14],2 + mov byte[GUINetPlayMenuData+14],2 %endif cmp byte[romloadskip],0 je .noromloaded diff --git a/zsnes/src/gui/guimouse.inc b/zsnes/src/gui/guimouse.inc index 5315abb8..1599af3d 100644 --- a/zsnes/src/gui/guimouse.inc +++ b/zsnes/src/gui/guimouse.inc @@ -46,7 +46,7 @@ ProcessMouse: mov edx,223 call Set_MouseYMax .noholda - cmp byte[GUIHold],1 + cmp byte[GUIHold],1 ; GUI Windows jne .nohold1 mov ecx,0 mov edx,255 @@ -69,7 +69,7 @@ ProcessMouse: mov edx,[GUIHoldYlim] call Set_MouseYMax .nohold2m - cmp byte[GUIHold],3 + cmp byte[GUIHold],3 ; Scrollbars jne .nohold3m mov ecx,[GUIHoldXlimL] mov edx,[GUIHoldXlimR] @@ -344,6 +344,8 @@ ProcessMouseButtons: je near .hold4 cmp byte[GUIHold],5 je near .hold5 + cmp byte[GUIHold],6 + je near .hold6 cmp byte[GUIHold],1 je near .hold cmp byte[GUIHold],255 @@ -360,20 +362,20 @@ ProcessMouseButtons: call Set_MousePosition ret .hold2 - ; Slide Bar Hold + ; Colour Slide Bar Hold mov eax,[GUIHoldYlim] mov [GUImouseposy],eax mov ebx,[GUImouseposx] mov eax,[GUIHoldXlimL] cmp ebx,eax - jnl .noless + jnl .noless2 mov [GUImouseposx],eax -.noless +.noless2 mov eax,[GUIHoldXlimR] cmp ebx,eax - jng .nogreat + jng .nogreat2 mov [GUImouseposx],eax -.nogreat +.nogreat2 mov byte[lastmouseholded],1 jmp DisplayGUIOptnsClick .hold3 @@ -406,17 +408,17 @@ ProcessMouseButtons: mov edx,[GUImouseposy] sub edx,[GUIwinposy+ebx*4] cmp eax,[GUIHoldXlimL] - jl near .nobhold + jl near .nobhold4 cmp edx,[GUIHoldYlim] - jl near .nobhold + jl near .nobhold4 cmp eax,[GUIHoldXlimR] - jg near .nobhold + jg near .nobhold4 cmp edx,[GUIHoldYlimR] - jg near .nobhold + jg near .nobhold4 mov al,[GUICBHold2] mov [GUICBHold],al ret -.nobhold +.nobhold4 mov byte[GUICBHold],0 ret .hold5 @@ -426,16 +428,33 @@ ProcessMouseButtons: mov ebx,[GUImouseposx] mov eax,[GUIHoldXlimL] cmp ebx,eax - jnl .nolessa + jnl .noless5 mov [GUImouseposx],eax -.nolessa +.noless5 mov eax,[GUIHoldXlimR] cmp ebx,eax - jng .nogreata + jng .nogreat5 mov [GUImouseposx],eax -.nogreata +.nogreat5 mov byte[lastmouseholded],1 jmp DisplayGUISoundClick +.hold6 + ; Speed Slide Bar Hold + mov eax,[GUIHoldYlim] + mov [GUImouseposy],eax + mov ebx,[GUImouseposx] + mov eax,[GUIHoldXlimL] + cmp ebx,eax + jnl .noless6 + mov [GUImouseposx],eax +.noless6 + mov eax,[GUIHoldXlimR] + cmp ebx,eax + jng .nogreat6 + mov [GUImouseposx],eax +.nogreat6 + mov byte[lastmouseholded],1 + jmp DisplayGUISpeedClick .hold cmp word[GUImouseposy],16 jge .noover @@ -467,7 +486,6 @@ ProcessMouseButtons: mov byte[GUIpclicked],0 mov byte[GUIHold],0 - %ifdef __LINUX__ cmp byte[GUIcwinpress],1 jne .notwinpressa @@ -2313,7 +2331,7 @@ DisplayGUIOptionClick: mov bl,[cvidmode] cmp byte[GUINGVID+ebx],1 jne near .invalidng - GUIClickCButton2 11,30,byte[newengen],byte[cfgnewgfx],1 + GUIClickCButton2 11,30,byte[newengen],byte[cfgnewgfx],1 .invalidng GUIClickCButtonMMX 11,40,byte[MMXSupport] GUIClickCButtonM 11,50,byte[pl12s34] @@ -3227,13 +3245,17 @@ DisplayGUISaveClick: ret DisplayGUISpeedClick: + mov eax,[GUImouseposx] ; this updates the mouse location + sub eax,[GUIwinposx+21*4] ; effectively 'grabbing' the cursor ! + mov edx,[GUImouseposy] + sub edx,[GUIwinposy+21*4] GUIClickCButton 11,125,byte[FastFwdToggle] ; Checkbox - + DGOptnsProcBox 12,58,[KeyFastFrwrd] ; Shortcut Boxes DGOptnsProcBox 12,68,[KeySlowDown] DGOptnsProcBox 12,78,[KeyResetSpeed] - ; Speed Slider + ; Speed Slider cmp eax,15 ; X-Range for click-area jl near .nomovebar cmp eax,15+116 @@ -3244,8 +3266,8 @@ DisplayGUISpeedClick: jl near .nomovebar cmp edx,33 jg near .nomovebar - mov [EmuSpeed],al ; Lock mouse to bar when clicked - mov byte[GUIHold],6 + mov [EmuSpeed],al + mov byte[GUIHold],6 ; Lock mouse to bar when clicked mov eax,[GUIwinposy+21*4] add eax,31 mov [GUIHoldYlim],eax diff --git a/zsnes/src/gui/guiwindp.inc b/zsnes/src/gui/guiwindp.inc index dbe2e721..1104957b 100644 --- a/zsnes/src/gui/guiwindp.inc +++ b/zsnes/src/gui/guiwindp.inc @@ -1445,7 +1445,7 @@ SECTION .text DisplayGUIOption: ; Frame Rate/Auto Frame Rate/Max Frame Skip/New Gfx Engine GUIDrawWindowBox 4,GUIOptionDisp - + mov byte[GUItextcolor],217 ; Shadow cmp byte[GUIWincoladd],0 je .zero @@ -1511,28 +1511,28 @@ DisplayGUIOption: ; Frame Rate/Auto Frame Rate/Max Frame Skip/New Gfx Engi mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckbox GUIDisplayIconWin 4,11,20,[GUITemp] - + mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[newengen],0 je .nocheckbox1 mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckbox1 GUIDisplayIconWin 4,11,30,[GUITemp] - + mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[MMXSupport],1 jne .nocheckbox2 mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckbox2 GUIDisplayIconWin 4,11,40,[GUITemp] - + mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[pl12s34],0 je .nocheckbox3 mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckbox3 GUIDisplayIconWin 4,11,50,[GUITemp] - + %ifdef __MSDOS__ mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[SidewinderFix],0 @@ -1557,14 +1557,14 @@ DisplayGUIOption: ; Frame Rate/Auto Frame Rate/Max Frame Skip/New Gfx Engi mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckbox5 GUIDisplayIconWin 4,11,70,[GUITemp] - + mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[Turbo30hz],0 je .nocheckbox6 mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckbox6 GUIDisplayIconWin 4,11,80,[GUITemp] - + mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[TimerEnable],0 je .nocheckbox7 @@ -1578,35 +1578,35 @@ DisplayGUIOption: ; Frame Rate/Auto Frame Rate/Max Frame Skip/New Gfx Engi mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckbox8 GUIDisplayIconWin 4,11,100,[GUITemp] - + mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[DontSavePath],0 je .nocheckbox9 mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckbox9 GUIDisplayIconWin 4,11,110,[GUITemp] - + mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[SmallMsgText],0 je .nocheckbox10 mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckbox10 GUIDisplayIconWin 4,11,120,[GUITemp] - + mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[AutoPatch],0 je .nocheckbox11 mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckbox11 GUIDisplayIconWin 4,11,130,[GUITemp] - + mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[RomInfo],0 je .nocheckbox12 mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckbox12 GUIDisplayIconWin 4,11,140,[GUITemp] - + %ifdef __WIN32__ mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[DisableScreenSaver],0 @@ -1618,7 +1618,7 @@ DisplayGUIOption: ; Frame Rate/Auto Frame Rate/Max Frame Skip/New Gfx Engi cmp byte[frameskip],0 ; Determine if AutoFR is enabled je near .auto - + DrawGUIWinBox 4,75,12,93,19,167 ; Frameskip (if not AutoFR) mov al,[frameskip] add al,47 @@ -1638,7 +1638,7 @@ DisplayGUIOption: ; Frame Rate/Auto Frame Rate/Max Frame Skip/New Gfx Engi .zero6 DrawGUIButton 4,97,12,105,20,GUIOptionTextY,12,-2,-1 DrawGUIButton 4,108,12,116,20,GUIOptionTextZ,13,-2,-1 - + mov dword[GUIWincol],148+10 ; Draw Borders cmp byte[cwindrawn],1 jne .noone3 @@ -1682,7 +1682,7 @@ DisplayGUIOption: ; Frame Rate/Auto Frame Rate/Max Frame Skip/New Gfx Engi .zero7 DrawGUIButton 4,118,12,126,20,GUIOptionTextY,12,-2,-1 DrawGUIButton 4,129,12,137,20,GUIOptionTextZ,13,-2,-1 - + mov dword[GUIWincol],148+10 ; Draw borders cmp byte[cwindrawn],1 jne .noone2 @@ -4739,7 +4739,7 @@ DisplayGUIMovies: ; Movie Record/Playback options mov al,[GUIWincol] ; Shadow (Yellow) mov byte[GUItextcolor],al GUIOuttextwin2 15,6,162,GUIMovieTextZ - + mov byte[GUItextcolor],163 ; Text (Yellow) cmp byte[GUIWincoladd],0 je .zero5 @@ -5682,7 +5682,7 @@ DisplayGUIChipConfig: mov byte[GUItextcolor],163 ; Yellow Text cmp byte[GUIWincoladd],0 je .zero8 - mov byte[GUItextcolor],164 + mov byte[GUItextcolor],164 .zero8 GUIOuttextwin2 18,9,37,GUIChipTextA .endEE2 @@ -6387,22 +6387,21 @@ DisplayGUISpeed: ;Speed Options DGOptnsBorderBox 21,11,67 DGOptnsBorderBox 21,11,77 - + mov dword[GUITemp],GUIIconDataCheckBoxUC ; Checkbox cmp byte[FastFwdToggle],0 je .nocheckbox mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckbox - GUIDisplayIconWin 21,11,125,[GUITemp] + GUIDisplayIconWin 21,11,125,[GUITemp] mov eax,dword[GUIwinposx+21*4] ;Slider mov ebx,dword[GUIwinposy+21*4] - mov ecx,eax add eax,15 - add ecx,15+116 -; add ebx,91 add ebx,31 + mov ecx,eax + add ecx,116 xor edx,edx mov dl,215 sub dl,[GUIWincoladd]