⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guimouse.inc

📁 linux下的任天堂模拟器代码。供大家参考。
💻 INC
📖 第 1 页 / 共 5 页
字号:
%endmacro%macro GUIClickCButtonK 4  GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick  xor %3,1  pushad  call %4  popad%%noclick%endmacro%macro GUIClickCButtonB 3  GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick  xor %3,1  pushad  call drawscreenwin  call initwinvideo  call Clear2xSaIBuffer  popad%%noclick%endmacro%macro GUIClickCButtonN 4  GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick%ifdef __WIN32__  cmp %3,1  je %%dontenablek43  mov byte[Keep4_3Ratio],1%%dontenablek43%endif  xor %3,1%ifdef __WIN32__  pushad  call %4  popad%endif%%noclick%endmacro%macro GUIClickCButtonC 3  GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick  xor %3,1  mov dword[GUIccombviewloc],0  mov dword[GUIccombcursloc],0  mov dword[GUIccomblcursloc],0%%noclick%endmacro%macro GUIClickCButtonM 3  GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick  xor %3,1  mov byte[MultiTap],1  cmp byte[pl12s34],1  je %%nomtap  cmp byte[pl3contrl],0  jne %%noclick  cmp byte[pl4contrl],0  jne %%noclick  cmp byte[pl5contrl],0  jne %%noclick%%nomtap  mov byte[MultiTap],0%%noclick%endmacro%macro GUIClickCButtonID 3  GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick  xor %3,1  call SetDevice%%noclick%endmacro%ifdef __MSDOS__%macro GUIClickCButton3 3  GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick  xor %3,1  DOSClearScreenMouse  ret%%noclick%endmacro%macro DOSClearScreenMouse 0  call DOSClearScreen  push eax  push ecx  mov eax,[vidbufferofsb]  mov ecx,288*128%%loop  mov dword[eax],0  add eax,4  dec ecx  jnz %%loop  pop ecx  pop eax  ret%endmacro%endif%macro GUIClickCButton5 4  GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick  cmp %3,%4  jne %%set  xor %3,%4  jmp %%clear%%set  mov %3,%4%%clear  ret%%noclick%endmacro%macro GUIClickCButton6 4  GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick  cmp %3,%4  jne %%set  xor %3,%4  jmp %%clear%%set  mov %3,%4  push eax  push ecx  mov eax,[vidbufferofsb]  mov ecx,288*128%%loop  mov dword[eax],0  add eax,4  dec ecx  jnz %%loop  pop ecx  pop eax%%clear  ret%%noclick%endmacro%macro GUIClickCButtonfr 3  GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick  mov byte[FPSOn],0  cmp %3,0  je %%zero  mov %3,0  jmp %%notzero%%zero  mov %3,1%%notzero%%noclick%endmacro%macro GUIClickCButtonL 2  GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick  xor byte[showallext],1  mov dword[GUIcurrentfilewin],0  call GetLoadData  ret%%noclick%endmacro%macro GUIClickCButtonI 3  GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick  xor %3,1  pushad%ifdef __OPENGL__  cmp byte[cvidmode],5  jl %%skipinit  pushad  call drawscreenwin  call initwinvideo  popad%%skipinit%endif  call Clear2xSaIBuffer  popad%%noclick%endmacro%macro GUIClickCButtonT 4  GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick  xor %3,1  mov %4,0%%noclick%endmacro%macro GUIClickCButton5MMXC 4  GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick  cmp byte[MMXSupport],0  je %%clear  cmp %3,%4  jne %%set  xor %3,%4  jmp %%clear%%set  mov %3,%4%%clear  ret%%noclick%endmacro%macro GUISlidebarPostImpl 13 ; x1,y1,x2,y2,upjump,downjump,holdpos,scsize,view,cur,listsize  cmp dword[%11],0  je near %%nolower  cmp dword[GUIdispmode],1  je near %%slidebar  GUIClickArea %1,%2-7,%3,%2-1,%%noupper  mov byte[%12],%13  mov byte[GUICHold],%7  jmp %5%%noupper  GUIClickArea %1,%4+1,%3,%4+7,{near %%nolower}  mov byte[%12],%13  mov byte[GUICHold],%7+1  jmp %6%%slidebar  GUIClickArea %1,%2,%3,%4,{near %%nolower}  mov byte[%12],%13  ; displacement = (GUIdispmode * pixeldisp. / (listsize-scsize))  mov eax,[%11]  sub eax,%8  mov ebx,edx  sub ebx,[GUIlastypos]  imul ebx  mov ebx,[GUIlastdispval]  or ebx,ebx  jz near %%zerodiv  test ebx,80000000h  jnz near %%zerodiv  idiv ebx  mov ebx,[GUIlastvpos]  add ebx,eax  mov [%9],ebx  mov ebx,[GUIlastcpos]  add ebx,eax  mov [%10],ebx  test dword[%9],8000000h  jz %%noneg  mov dword[%9],0%%noneg  test dword[%10],8000000h  jz %%noneg2  mov dword[%10],0%%noneg2  mov eax,[%11]  dec eax  cmp [%10],eax  jb %%notover  mov [%10],eax%%notover  sub eax,%8-1  cmp [%9],eax  jb %%notover2  mov [%9],eax%%notover2%%zerodiv  ret%%nolower%endmacroSECTION .bssGUIlastdispval resd 1GUIdispmode    resd 1GUIlastypos    resd 1GUIlastcpos    resd 1GUIlastvpos    resd 1SECTION .text%macro GUISlidebarImpl 10 ; x1,y1,x2,y2,GUI?StA,ScrnSize,ViewLoc,CursLoc,Entries,win#  mov dword[GUIdispmode],0  GUIClickArea %1,%2,%3,%4,{near %%nobar}  sub edx,%2  cmp [%5+4],edx  ja near %%above  cmp [%5+8],edx  jb near %%below  add edx,%2  mov [GUIlastypos],edx  mov dword[GUIdispmode],1  mov eax,[GUIwinposy+%10*4]  add eax,%2  mov [GUIHoldYlim],eax  mov eax,[GUIwinposy+%10*4]  add eax,%4  mov [GUIHoldYlimR],eax  mov eax,[GUIwinposx+%10*4]  add eax,%1  mov [GUIHoldXlimL],eax  mov eax,[GUIwinposx+%10*4]  add eax,%3  mov [GUIHoldXlimR],eax  mov eax,[%5]  mov [GUIlastdispval],eax  mov eax,[%8]  mov [GUIlastcpos],eax  mov eax,[%7]  mov [GUIlastvpos],eax  mov byte[GUIHold],3  ret%%above  sub dword[%7],%6  sub dword[%8],%6  test dword[%7],8000000h  jz %%noneg  mov dword[%7],0  mov dword[%8],0%%noneg  ret%%below  add dword[%7],%6  add dword[%8],%6  mov ebx,[%9]  dec ebx  cmp [%8],ebx  jb %%notoverflow  mov [%8],ebx  sub ebx,%6-1  mov [%7],ebx%%notoverflow  mov ebx,[%9]  sub ebx,%6  cmp [%7],ebx  jb %%notoverflow2  mov [%7],ebx%%notoverflow2  ret%%nobar  ; upper arrow  GUIClickArea %1,%2-7,%3,%2-1,%%noupper  mov eax,[GUIwinposy+%10*4]  add eax,%2-7  mov [GUIHoldYlim],eax  mov eax,[GUIwinposy+%10*4]  add eax,%2-1  mov [GUIHoldYlimR],eax  mov eax,[GUIwinposx+%10*4]  add eax,%1  mov [GUIHoldXlimL],eax  mov eax,[GUIwinposx+%10*4]  add eax,%3  mov [GUIHoldXlimR],eax  mov byte[GUIHold],3  ret%%noupper  ; lower arrow  GUIClickArea %1,%4+1,%3,%4+7,%%nolower  mov eax,[GUIwinposy+%10*4]  add eax,%4+1  mov [GUIHoldYlim],eax  mov eax,[GUIwinposy+%10*4]  add eax,%4+7  mov [GUIHoldYlimR],eax  mov eax,[GUIwinposx+%10*4]  add eax,%1  mov [GUIHoldXlimL],eax  mov eax,[GUIwinposx+%10*4]  add eax,%3  mov [GUIHoldXlimR],eax  mov byte[GUIHold],3  ret%%nolower%endmacro%macro GUIPostWinBoxMove 11 ;x1,y1,x2,y2,view,curs,num,.scru,.scrd,jumpto,sizeofscreen  cmp eax,%1  jl near %%noload  cmp eax,%3  jg near %%noload  cmp edx,%2  je near %%scrollup  cmp edx,%4  jne near %%noload  ; Scroll Down  cmp dword[%7],%11  jbe %9  mov ebx,[%5]  add ebx,%11-1  mov [%6],ebx%9  cmp dword[GUIScrolTim1],0  jne near %%donescrol  mov ebx,[%7]  dec ebx  cmp ebx,[%6]  jbe %%donescrolldown  inc dword[%6]  cmp dword[%7],%11  jbe near %%donescrol  inc dword[%5]  mov ebx,[%7]  sub ebx,%11  cmp ebx,[%5]  ja near %%donescrolldown  mov [%5],ebx  jmp %%donescrolldown%%scrollup  mov ebx,[%5]  mov [%6],ebx%8  cmp dword[GUIScrolTim1],0  jne near %%donescrol  cmp dword[%6],0  je %%donescrolldown  dec dword[%6]  cmp dword[%5],0  je %%donescrolldown  dec dword[%5]%%donescrolldown  mov dword[GUIScrolTim1],1  cmp dword[GUIScrolTim2],4  jb %%noscrol1  inc dword[GUIScrolTim1]%%noscrol1  cmp dword[GUIScrolTim2],0  je %%noscrol2  inc dword[GUIScrolTim1]  dec dword[GUIScrolTim2]%%noscrol2%%donescrol  jmp %10%%noload%endmacro%macro GUIPHoldbutton 5  GUIClickArea %1,%2,%3,%4,%%nohold  mov dword[GUIHoldXlimL],%1  mov dword[GUIHoldXlimR],%3  mov dword[GUIHoldYlim],%2  mov dword[GUIHoldYlimR],%4  mov byte[GUICBHold2],%5  mov byte[GUIHold],4%%nohold%endmacro%macro GUIPHoldbutton2 8  GUIClickArea %1,%2,%3,%4,%%nohold  cmp byte[GUIHold],0  jne %%nohold  mov dword[GUIHoldXlimL],%1  mov dword[GUIHoldXlimR],%3  mov dword[GUIHoldYlim],%2  mov dword[GUIHoldYlimR],%4  mov byte[GUICBHold2],%5  mov byte[GUIHold],4  cmp %6,%8  je %%nohold  add %6,%7%%nohold%endmacro%macro GUITextBoxInput 6  GUIClickArea %1,%2,%3,%4,%%noclick  mov dword[GUIEditString],%5  mov dword[GUIEditStringmLen],%6  mov dword[GUIEditStringLTxt],0  mov dword[GUIEditStringcWin],1%%noclick%endmacro%macro GUITextBoxInputB 5  GUIClickArea %1,%2,%3,%4,%%noclick  mov byte[GUINetTextm2],%5%%noclick%endmacro%macro GUITextBoxInputNach 7  GUIClickArea %1,%2,%3,%4,%%noclick  pushad  call %7  popad  mov dword[GUIInputBox],%5  mov dword[GUIInputLimit],%6-1%%noclick%endmacro%macro GUIPButtonHole 4  GUIClickArea %1+1,%2+1,%1+7,%2+7,%%noclick  mov %3,%4%%noclick%endmacro%macro GUIPButtonHole2 6  GUIClickArea %1+1,%2+1,%1+7,%2+7,%%noclick  mov %3,%4  mov %5,%6%%noclick%endmacro%macro GUIPButtonHoleS 4  GUIClickArea %1+1,%2+1,%1+7,%2+7,%%noclick  mov %3,%4%ifdef __MSDOS__  cmp %3,0  je %%noclear  pushad  call DOSClearScreen  cmp byte[cvidmode],2  ;modeQ  je %%refresh  cmp byte[cvidmode],5  jne %%nomodex%%refresh  mov byte[cbitmode],1  call initvideo2  mov byte[cbitmode],0  call GUISetPal%%nomodex  popad%%noclear%endif%%noclick%endmacro%macro GUIPButtonHoleLoad 4  GUIClickArea %1+1,%2+1,%1+7,%2+7,%%noclick  mov %3,%4  pushad  call GetLoadData  popad%%noclick%endmacro%macro GUIWinControl 13 ;x,y,x2,y2,currentwin,vpos,#entries,starty,y/entry,cpos,winval,win#,dclicktick#  GUIClickArea %1,%2,%3,%4,{near %%noload}  cmp dword[%7],0  je near %%noload  mov dword[%5],%11  mov eax,edx  sub eax,%8  xor edx,edx  mov ebx,%9  div ebx  add eax,[%6]  mov ebx,[%7]  dec ebx  cmp eax,ebx  jg %%nomod  mov [%10],eax%%nomod  cmp byte[GUIHold],0  jne %%held  cmp dword[GUIDClickTL],0  je %%noprevhold  cmp byte[GUIDClCWin],%11  jne %%noprevhold  cmp [GUIDClCEntry],eax  jne %%noprevhold  mov dword[GUIDClickTL],0  mov eax,%12  cmp eax,1  jne %%cheat  call GUILoadData  ret%%cheat  call CheatCodeToggle  ret%%noprevhold  mov dword[GUIDClickTL],%13  mov byte[GUIDClCWin],%11  mov [GUIDClCEntry],eax%%held  mov eax,[GUIwinposy+%12*4]  add eax,%2-1  mov [GUIHoldYlim],eax  mov eax,[GUIwinposy+%12*4]  add eax,%4+1  mov [GUIHoldYlimR],eax  mov eax,[GUIwinposx+%12*4]  add eax,%1  mov [GUIHoldXlimL],eax  mov eax,[GUIwinposx+%12*4]  add eax,%3  mov [GUIHoldXlimR],eax  mov byte[GUIHold],3  ret%%noload%endmacro%macro GUIWinControl2 13 ;Key Combination Editor Exclusive  GUIClickArea %1,%2,%3,%4,{near %%noload}  cmp dword[%7],0  je near %%noload  mov dword[GUIccomblcursloc],0FFFFFFFFh  mov dword[%5],%11  mov eax,edx  sub eax,%8  xor edx,edx  mov ebx,%9  div ebx  add eax,[%6]  mov ebx,[%7]  dec ebx  cmp eax,ebx  jg %%nomod  mov [%10],eax%%nomod  cmp byte[GUIHold],0  jne %%held  cmp dword[GUIDClickTL],0  je %%noprevhold  cmp byte[GUIDClCWin],%11  jne %%noprevhold  cmp [GUIDClCEntry],eax  jne %%noprevhold  mov dword[GUIDClickTL],0  mov eax,%12  cmp eax,1  jne %%cheat  call GUILoadData  ret%%cheat

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -