📄 guiwindp.inc
字号:
;Copyright (C) 1997-2007 ZSNES Team ( zsKnight, _Demo_, pagefault, Nach );;http://www.zsnes.com;http://sourceforge.net/projects/zsnes;https://zsnes.bountysource.com;;This program is free software; you can redistribute it and/or;modify it under the terms of the GNU General Public License;version 2 as published by the Free Software Foundation.;;This program is distributed in the hope that it will be useful,;but WITHOUT ANY WARRANTY; without even the implied warranty of;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the;GNU General Public License for more details.;;You should have received a copy of the GNU General Public License;along with this program; if not, write to the Free Software;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.EXTSYM VERSION_STR,placedateSECTION .dataNEWSYM mencoderExists, db 0NEWSYM lameExists, db 0SECTION .text%macro DrawGUILineSc 2 mov dword[GUIcolscaleval],%2 mov edx,%1 push eax push ecx call GUIHLines pop ecx pop eax inc ebx%endmacro%macro DrawGUILine 0 push eax push ecx call GUIHLine pop ecx pop eax inc ebx%endmacro%macro DrawTitleBar 0 mov edx,46+157+6 sub edx,[GUIWincoladd] DrawGUILine mov edx,42+157+4+4 sub edx,[GUIWincoladd] DrawGUILine dec edx DrawGUILine dec edx DrawGUILine dec edx DrawGUILine dec edx DrawGUILine dec edx DrawGUILine dec edx DrawGUILine dec edx DrawGUILine mov edx,38+157+4 sub edx,[GUIWincoladd] DrawGUILine sub ebx,10 mov edx,44+157+4 sub edx,[GUIWincoladd] mov esi,9 push ecx mov ecx,eax%%loop2 DrawGUILine dec esi jnz %%loop2 pop ecx sub ebx,8 mov edx,40+157+4 sub edx,[GUIWincoladd] mov esi,9 push eax mov eax,ecx%%loop3 DrawGUILine dec esi jnz %%loop3 pop eax%endmacro%macro drawshadow2 3 mov edx,[GUIwinposy+%1*4] cmp edx,223 jg near .noshadow cmp edx,0 jge .noshadclip mov edx,0.noshadclip mov ebx,edx add ebx,%3 add ebx,9 cmp ebx,0 jl near .noshadow cmp ebx,223 jng .noshadclip2 mov ebx,223.noshadclip2 sub ebx,edx inc ebx mov edi,edx shl edi,8 mov eax,edx shl eax,5 add edi,eax mov edx,[GUIwinposx+%1*4] mov ecx,edx cmp edx,255 jg .noshadow cmp edx,-3 jnl .noshadclip3 mov edx,-3.noshadclip3 add ecx,%2 cmp ecx,0 jl .noshadow cmp ecx,255 jng .noshadclip4 mov ecx,255.noshadclip4 sub ecx,edx inc ecx add edi,edx add edi,[vidbuffer] add edi,288*3+3+16 call GUIDrawShadow2.noshadow%endmacro%macro GUIDrawWindowBox 2 mov dword[GUIWincoladd],4 mov dword[GUIWincol],148+10 cmp byte[cwindrawn],1 jne .noone mov dword[GUIWincol],148+5.noone cmp byte[cwindrawn],0 jne .nozero mov dword[GUIWincoladd],0 mov dword[GUIWincol],148.nozero drawshadow2 %1,dword[GUIwinsizex+%1*4],dword[GUIwinsizey+%1*4] mov eax,[GUIwinposx+%1*4] mov ebx,[GUIwinposy+%1*4] mov ecx,eax add ecx,dword[GUIwinsizex+%1*4] DrawTitleBar mov esi,[GUIwinsizey+%1*4] dec esi mov edx,[GUIWincol] add edx,2.loop DrawGUILine dec esi jnz .loop mov edx,[GUIWincol] DrawGUILine mov eax,[GUIwinposx+%1*4] mov ebx,[GUIwinposy+%1*4] add ebx,10 mov ecx,eax mov esi,[GUIwinsizey+%1*4] mov edx,[GUIWincol] add edx,3 dec esi.loop2 DrawGUILine dec esi jnz .loop2 mov eax,[GUIwinposx+%1*4] mov ebx,[GUIwinposy+%1*4] add ebx,10 add eax,dword[GUIwinsizex+%1*4] mov ecx,eax mov esi,[GUIwinsizey+%1*4] mov dl,[GUIWincol] inc dl.loop3 DrawGUILine dec esi jnz .loop3 mov ebx,[GUIwinposy+%1*4] add ebx,3 mov edx,[GUIwinposx+%1*4] add edx,3 mov byte[GUItextcolor],184 GUIOuttextwin %2 mov ebx,[GUIwinposy+%1*4] add ebx,2 mov edx,[GUIwinposx+%1*4] add edx,2 mov byte[GUItextcolor],220 cmp byte[GUIWincoladd],0 je .zero2 sub byte[GUItextcolor],6.zero2 GUIOuttextwin %2 mov eax,[GUIwinposx+%1*4] mov ebx,[GUIwinposy+%1*4] add eax,dword[GUIwinsizex+%1*4] sub eax,10 GUIDisplayIcon GUIIconDataClose%endmacro%macro DrawGUIWinBox 6 mov eax,[GUIwinposx+%1*4] mov ebx,[GUIwinposy+%1*4] add eax,%2 add ebx,%3 mov ecx,eax add ecx,%4-%2+1 mov dl,%6 mov esi,%5-%3+1%%loop DrawGUILine dec esi jnz %%loop%endmacro%macro DrawGUIWinBox2 5 mov eax,[GUIwinposx+%1*4] mov ecx,eax add eax,%2 add ecx,%3+1 mov dl,%5 cmp byte[GUIWincoladd],0 je %%zero inc dl%%zero mov esi,%4 add ebx,dword[GUIwinposy+%1*4]%%loop DrawGUILine dec esi jnz %%loop%endmacro%macro DrawGUIWinBox3 6 mov ecx,%4 mov eax,[GUIwinposx+%1*4] mov ebx,[GUIwinposy+%1*4] add ecx,eax add eax,%2 add ebx,%3 inc ecx mov dl,%6 mov esi,%5-%3+1%%loop DrawGUILine dec esi jnz %%loop%endmacro%macro DrawGUIButton 9 mov dl,[GUItextcolor] sub dl,5 cmp byte[GUICBHold],%7 jne %%noa sub dl,13%%noa DrawGUIWinBox %1,%2,%3,%4,%3,dl sub dl,3 cmp byte[GUICBHold],%7 jne %%nob add dl,5%%nob DrawGUIWinBox %1,%2,%3,%2,%5,dl sub dl,3 cmp byte[GUICBHold],%7 jne %%noc add dl,5%%noc DrawGUIWinBox %1,%2+1,%3+1,%4-2,%5-2,dl sub dl,3 cmp byte[GUICBHold],%7 jne %%nod add dl,5%%nod DrawGUIWinBox %1,%4+1,%3+1,%4-2,%5-2,dl sub dl,3 cmp byte[GUICBHold],%7 jne %%noe add dl,5%%noe DrawGUIWinBox %1,%2,%5,%4-1,%5,dl cmp byte[GUICBHold],%7 je near %%no2 sub byte[GUItextcolor],15 GUIOuttextwin2 %1,%2+5+%8,%3+4+%9,%6 add byte[GUItextcolor],15 GUIOuttextwin2 %1,%2+4+%8,%3+3+%9,%6 jmp %%yes%%no2 sub byte[GUItextcolor],18 GUIOuttextwin2 %1,%2+6+%8,%3+5+%9,%6 add byte[GUItextcolor],15 GUIOuttextwin2 %1,%2+5+%8,%3+4+%9,%6 add byte[GUItextcolor],3%%yes%endmacro%macro GUIOuttextwin2load 3 mov eax,[eax] mov [cloadnpos],eax inc dword[cloadnposb] mov byte[GUItextcolor],223 GUIOuttextwin2l %1,%2,%3,[cloadnpos] mov byte[GUItextcolor],221 cmp byte[GUIWincoladd],0 je %%zero mov byte[GUItextcolor],222%%zero GUIOuttextwin2l %1,%2-1,%3-1,[cloadnpos] add dword[cloadnpos],32 dec dword[cloadnleft]%endmacro%macro GUIOuttextwinloadfile 3 test dword[cloadnleft],80000000h jnz near %%skip mov eax,[cloadnposb] cmp eax,[GUIfileentries] jae near %%skip mov eax,[cloadnposb] shl eax,2 add eax,[selected_names] GUIOuttextwin2load %1,%2,%3%%skip%endmacro%macro GUIOuttextwinloaddir 3 test dword[cloadnleft],80000000h jnz near %%skip mov eax,[cloadnposb] cmp eax,[GUIdirentries] jae near %%skip mov eax,[cloadnposb] shl eax,2 add eax,[d_names] add eax,8 GUIOuttextwin2load %1,%2,%3%%skip%endmacro%macro GUIDisplayButtonHoleTu 7 mov dword[GUITemp],GUIIconDataButtonHole cmp %4,%5 jne %%nofill mov dword[GUITemp],GUIIconDataButtonFill%%nofill GUIDisplayIconWin %1,%2,%3,[GUITemp] GUIDisplayTextu %1,%2+15,%3+3,%6,%7%endmacro%macro GUIDisplayButtonHole 5 mov dword[GUITemp],GUIIconDataButtonHole cmp %4,%5 jne %%nofill mov dword[GUITemp],GUIIconDataButtonFill%%nofill GUIDisplayIconWin %1,%2,%3,[GUITemp]%endmacro%macro GUIDisplayText 4 ; Text&Shadow mov byte[GUItextcolor],202 cmp byte[GUIWincoladd],0 je %%text mov byte[GUItextcolor],196%%textGUIOuttextwin2 %1,%2,%3,%4 add byte[GUItextcolor],15GUIOuttextwin2 %1,%2-1,%3-1,%4%endmacro%macro GUIDisplayTextY 4 ; Yellow Text&Shadow mov al,[GUIWincol] mov [GUItextcolor],al GUIOuttextwin2 %1,%2,%3,%4 mov byte[GUItextcolor],163 cmp byte[GUIWincoladd],0 je %%texty mov byte[GUItextcolor],164%%texty GUIOuttextwin2 %1,%2-1,%3-1,%4%endmacro%macro GUIDisplayTextu 5 ; Text&Shadow With Underline mov byte[GUItextcolor],202 cmp byte[GUIWincoladd],0 je %%textu mov byte[GUItextcolor],196%%textuGUIOuttextwin2u %1,%2,%3,%4,%5 add byte[GUItextcolor],15GUIOuttextwin2 %1,%2-1,%3-1,%4%endmacro%macro GUIDisplayTextG 4 ; Green Text&Shadow mov byte[GUItextcolor],223 GUIOuttextwin2 %1,%2,%3,%4 mov byte[GUItextcolor],221 cmp byte[GUIWincoladd],0 je %%zero mov byte[GUItextcolor],222%%zero GUIOuttextwin2 %1,%2-1,%3-1,%4%endmacro%macro GUIDisplayCheckboxP 4 ; Toggled Checkbox (Plain, no text) mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[%4],0 je %%nocheckbox mov dword[GUITemp],GUIIconDataCheckBoxC%%nocheckbox GUIDisplayIconWin %1,%2,%3,[GUITemp]%endmacro%macro GUIDisplayCheckbox 5 ; Toggled Checkbox (Text) mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[%4],0 je %%nocheckbox mov dword[GUITemp],GUIIconDataCheckBoxC%%nocheckbox GUIDisplayIconWin %1,%2,%3,[GUITemp] GUIDisplayText %1,%2+15,%3+5,%5%endmacro%macro GUIDisplayCheckboxTn 6 ; Variable Checkbox (Text) mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[%4],%5 jne %%nocheckbox mov dword[GUITemp],GUIIconDataCheckBoxC%%nocheckbox GUIDisplayIconWin %1,%2,%3,[GUITemp] GUIDisplayText %1,%2+15,%3+5,%6%endmacro%macro GUIDisplayCheckboxu 6 ; Toggled Checkbox (Text Underline) mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[%4],0 je %%nocheckbox mov dword[GUITemp],GUIIconDataCheckBoxC%%nocheckbox GUIDisplayIconWin %1,%2,%3,[GUITemp] GUIDisplayTextu %1,%2+15,%3+5,%5,%6%endmacro%macro GUIDisplayCheckboxun 7 ; Set Var. Checkbox (Text Underline) mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[%4],%5 jne %%nocheckbox mov dword[GUITemp],GUIIconDataCheckBoxC%%nocheckbox GUIDisplayIconWin %1,%2,%3,[GUITemp] GUIDisplayTextu %1,%2+15,%3+5,%6,%7%endmacro%macro GUIDisplayCheckboxPn 5 ; Set Var. Checkbox mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[%4],%5 jne %%nocheckbox mov dword[GUITemp],GUIIconDataCheckBoxC%%nocheckbox GUIDisplayIconWin %1,%2,%3,[GUITemp]%endmacro%macro GUIDisplayBBoxS 6 ; Black Box W/Border mov dword[GUIWincol],148+10 ; Minus right side cmp byte[cwindrawn],1 jne %%noone mov dword[GUIWincol],148+5%%noone cmp byte[cwindrawn],0 jne %%nozero mov dword[GUIWincol],148%%nozero DrawGUIWinBox %1,%2,%3,%4,%5,%6 mov dl,[GUIWincol] DrawGUIWinBox %1,%2,%3-3+2,%4,%3+1,dl mov dl,[GUIWincol] inc dl DrawGUIWinBox %1,%2-1,%3,%2,%5,dl mov dl,[GUIWincol] add dl,4 DrawGUIWinBox %1,%2,%5+1,%4,%5-1,dl%endmacro%macro GUIDisplayBBox 6 ; Black Box W/Border mov dword[GUIWincol],148+10 cmp byte[cwindrawn],1 jne %%noone mov dword[GUIWincol],148+5%%noone cmp byte[cwindrawn],0 jne %%nozero mov dword[GUIWincol],148%%nozero DrawGUIWinBox %1,%2,%3,%4,%5,%6 mov dl,[GUIWincol] DrawGUIWinBox %1,%2,%3-3+2,%4,%3+1,dl mov dl,[GUIWincol] inc dl DrawGUIWinBox %1,%2-1,%3,%2,%5,dl mov dl,[GUIWincol] add dl,4 DrawGUIWinBox %1,%2,%5+1,%4,%5-1,dl mov dl,[GUIWincol] add dl,3 DrawGUIWinBox %1,%4+2,%3,%4-3,%5,dl%endmacro%macro SetVidbufLoc 0 mov esi,ebx mov eax,ebx shl esi,8 shl eax,5 add esi,eax add esi,16 add esi,[vidbuffer]%endmacro%macro GUIDrawTArea 1 ; win #id
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -